diff --git a/.hgignore b/.hgignore
index e3ad4fe7b2476111e8f027a4bd07ee5696886be7..403b73df6d28a41d669ab8abd0236a1c3df808d0 100644
--- a/.hgignore
+++ b/.hgignore
@@ -66,3 +66,4 @@ glob:indra/newview/search_history.txt
 glob:indra/newview/filters.xml
 glob:indra/newview/avatar_icons_cache.txt
 glob:indra/newview/avatar_lad.log
+glob:*.diff
diff --git a/.hgtags b/.hgtags
index d9c1bbbb81638a7334c77e3d8f9342a96f305393..2701d2bab020af0cd9bdcc0d803c4fa9b81ff401 100644
--- a/.hgtags
+++ b/.hgtags
@@ -195,3 +195,68 @@ b95ddac176ac944efdc85cbee94ac2e1eab44c79 3.0.3-start
 0496d2f74043cf4e6058e76ac3db03d44cff42ce DRTVWR-84_3.0.3-release
 0496d2f74043cf4e6058e76ac3db03d44cff42ce 3.0.3-release
 92a3aa04775438226399b19deee12ac3b5a62838 3.0.5-start
+c7282e59f374ee904bd793c3c444455e3399b0c5 3.1.0-start
+2657fa785bbfac115852c41bd0adaff74c2ad5da DRTVWR-93_3.1.0-beta1
+2657fa785bbfac115852c41bd0adaff74c2ad5da 3.1.0-beta1
+dbaaef19266478a20654c46395300640163e98e3 DRTVWR-96_3.1.0-beta2
+dbaaef19266478a20654c46395300640163e98e3 3.1.0-beta2
+dbaaef19266478a20654c46395300640163e98e3 DRTVWR-96_3.1.0-beta2
+bc01ee26fd0f1866e266429e85f76340523e91f1 DRTVWR-96_3.1.0-beta2
+dbaaef19266478a20654c46395300640163e98e3 3.1.0-beta2
+bc01ee26fd0f1866e266429e85f76340523e91f1 3.1.0-beta2
+ae2de7b0b33c03dc5bdf3a7bfa54463b512221b2 DRTVWR-92_3.1.0-release
+ae2de7b0b33c03dc5bdf3a7bfa54463b512221b2 3.1.0-release
+a8230590e28e4f30f5105549e0e43211d9d55711 3.2.0-start
+e440cd1dfbd128d7d5467019e497f7f803640ad6 DRTVWR-95_3.2.0-beta1
+e440cd1dfbd128d7d5467019e497f7f803640ad6 3.2.0-beta1
+9bcc2b7176634254e501e3fb4c5b56c1f637852e DRTVWR-97_3.2.0-beta2
+9bcc2b7176634254e501e3fb4c5b56c1f637852e 3.2.0-beta2
+2a13d30ee50ccfed50268238e36bb90d738ccc9e DRTVWR-98_3.2.0-beta3
+2a13d30ee50ccfed50268238e36bb90d738ccc9e 3.2.0-beta3
+3150219d229d628f0c15e58e8a51511cbd97e58d DRTVWR-94_3.2.0-release
+3150219d229d628f0c15e58e8a51511cbd97e58d 3.2.0-release
+c4911ec8cd81e676dfd2af438b3e065407a94a7a 3.2.1-start
+3150219d229d628f0c15e58e8a51511cbd97e58d DRTVWR-94_3.2.0-release
+3150219d229d628f0c15e58e8a51511cbd97e58d 3.2.0-release
+40b46edba007d15d0059c80864b708b99c1da368 3.2.2-start
+3150219d229d628f0c15e58e8a51511cbd97e58d DRTVWR-94_3.2.0-release
+3150219d229d628f0c15e58e8a51511cbd97e58d 3.2.0-release
+9e390d76807fa70d356b8716fb83b8ce42a629ef DRTVWR-100_3.2.1-beta1
+9e390d76807fa70d356b8716fb83b8ce42a629ef 3.2.1-beta1
+523df3e67378541498d516d52af4402176a26bac DRTVWR-102_3.2.2-beta1
+523df3e67378541498d516d52af4402176a26bac 3.2.2-beta1
+80f3e30d8aa4d8f674a48bd742aaa6d8e9eae0b5 3.2.3-start
+a8c7030d6845186fac7c188be4323a0e887b4184 DRTVWR-99_3.2.1-release
+a8c7030d6845186fac7c188be4323a0e887b4184 3.2.1-release
+a9abb9633a266c8d2fe62411cfd1c86d32da72bf DRTVWR-60_2.7.1-release
+fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-60_2.7.1-release
+a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release
+fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.1-release
+3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-start
+a9abb9633a266c8d2fe62411cfd1c86d32da72bf DRTVWR-60_2.7.1-release
+fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-60_2.7.1-release
+a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release
+fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.1-release
+3fe994349fae64fc40874bb59db387131eb35a41 DRTVWR-104_3.2.4-beta1
+3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-beta1
+8a44ff3d2104269ce76145c2772cf1bdff2a2abe 3.2.5-start
+fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-62_2.7.2-release
+fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.2-release
+bd6bcde2584491fd9228f1fa51c4575f4e764e19 DRTVWR-103_3.2.4-release
+bd6bcde2584491fd9228f1fa51c4575f4e764e19 3.2.4-release
+3d2d5d244c6398a4214c666d5dd3965b0918709a DRTVWR-106_3.2.5-beta1
+3d2d5d244c6398a4214c666d5dd3965b0918709a 3.2.5-beta1
+65a2c1c8d855b88edfbea4e16ef2f27e7cff8b1d DRTVWR-107_3.2.5-beta2
+65a2c1c8d855b88edfbea4e16ef2f27e7cff8b1d 3.2.5-beta2
+c6175c955a19e9b9353d242889ec1779b5762522 DRTVWR-105_3.2.5-release
+c6175c955a19e9b9353d242889ec1779b5762522 3.2.5-release
+2174ed1c7129562428a5cfe8651ed77b8d26ae18 3.2.6-start
+286d73ff5c19f6c00e023dc1b60975ed6bbe2872 DRTVWR-109_3.2.6-beta1
+4891c46a56fed7512c783b9cbe7cb7260727bf0c 3.2.7-start
+286d73ff5c19f6c00e023dc1b60975ed6bbe2872 3.2.6-beta1
+c6175c955a19e9b9353d242889ec1779b5762522 DRTVWR-105_3.2.5-release
+c6175c955a19e9b9353d242889ec1779b5762522 3.2.5-release
+3d75c836d178c7c7e788f256afe195f6cab764a2 DRTVWR-111_3.2.7-beta1
+3d75c836d178c7c7e788f256afe195f6cab764a2 3.2.7-beta1
+89980333c99dbaf1787fe20784f1d8849e9b5d4f 3.2.8-start
+37dd400ad721e2a89ee820ffc1e7e433c68f3ca2 3.2.9-start
diff --git a/BuildParams b/BuildParams
old mode 100755
new mode 100644
index 5925cdade98321cd8f54390bf811ba37ced93d28..c0513978537e15ad06ff4576fbdf2d83a9a18647
--- a/BuildParams
+++ b/BuildParams
@@ -43,14 +43,16 @@ snowstorm_viewer-development.login_channel = "Second Life Development"
 snowstorm_viewer-development.build_viewer_update_version_manager = false
 snowstorm_viewer-development.email = viewer-development-builds@lists.secondlife.com
 snowstorm_viewer-development.build_enforce_coding_policy = true
+snowstorm_viewer-development.codeticket_add_context = true
 
 Snowstorm_viewer-project-review.build_debug_release_separately = true
 Snowstorm_viewer-project-review.codeticket_add_context = true
 Snowstorm_viewer-project-review.viewer_channel = "Project Viewer - Snowstorm Team"
 Snowstorm_viewer-project-review.login_channel = "Project Viewer - Snowstorm Team"
+Snowstorm_viewer-project-review.codeticket_add_context = true
 
 # ========================================
-# Viewer Beta
+# Viewer Beta (Owner: Dessie Linden)
 # ========================================
 viewer-beta.viewer_channel = "Second Life Beta Viewer"
 viewer-beta.login_channel = "Second Life Beta Viewer"
@@ -64,7 +66,7 @@ viewer-pre-beta.build_viewer_update_version_manager = true
 
 
 # ========================================
-# Viewer Release
+# Viewer Release (Owner: Dessie Linden)
 # ========================================
 viewer-release.viewer_channel = "Second Life Release"
 viewer-release.login_channel = "Second Life Release"
@@ -75,7 +77,7 @@ viewer-pre-release.viewer_channel = "Second Life Release"
 viewer-pre-release.login_channel = "Second Life Release"
 viewer-pre-release.build_debug_release_separately = true
 viewer-pre-release.build_viewer_update_version_manager = true
-#viewer-pre-release.release-viewer.jira = DRTVWR-46
+#viewer-pre-release.release-viewer.jira = DRTVWR-92
 
 
 # ========================================
@@ -134,14 +136,6 @@ viewer-mesh.login_channel = "Project Viewer - Mesh"
 viewer-mesh.viewer_grid = aditi
 viewer-mesh.email = shining@lists.lindenlab.com
 
-
-# ========================================
-# CG
-# ========================================
-
-cg_viewer-development_lenny.show_changes_since = 4b140ce7839d
-cg_viewer-development_lenny.email = cg@lindenlab.com
-
 # ================
 # oz
 # ================
@@ -149,20 +143,31 @@ cg_viewer-development_lenny.email = cg@lindenlab.com
 oz_viewer-devreview.build_debug_release_separately = true
 oz_viewer-devreview.codeticket_add_context = false
 oz_viewer-devreview.build_enforce_coding_policy = true
+oz_viewer-devreview.email = oz@lindenlab.com
+
+oz_viewer-trial.build_debug_release_separately = true
+oz_viewer-trial.codeticket_add_context = false
+oz_viewer-trial.build_enforce_coding_policy = true
+oz_viewer-trial.email = oz@lindenlab.com
+
+oz_viewer-beta-review.build_debug_release_separately = true
+oz_viewer-beta-review.codeticket_add_context = false
+oz_viewer-beta-review.viewer_channel = "Second Life Beta Viewer"
+oz_viewer-beta-review.login_channel = "Second Life Beta Viewer"
+oz_viewer-beta-review.email = oz@lindenlab.com
 
 oz_project-1.build_debug_release_separately = true
 oz_project-1.codeticket_add_context = false
+oz_project-1.email = oz@lindenlab.com
 oz_project-2.build_debug_release_separately = true
 oz_project-2.codeticket_add_context = false
+oz_project-2.email = oz@lindenlab.com
 oz_project-3.build_debug_release_separately = true
 oz_project-3.codeticket_add_context = false
+oz_project-3.email = oz@lindenlab.com
 oz_project-4.build_debug_release_separately = true
 oz_project-4.codeticket_add_context = false
-
-oz_viewer-beta-review.build_debug_release_separately = true
-oz_viewer-beta-review.codeticket_add_context = false
-oz_viewer-beta-review.viewer_channel = "Second Life Beta Viewer"
-oz_viewer-beta-review.login_channel = "Second Life Beta Viewer"
+oz_project-4.email = oz@lindenlab.com
 
 # =================================================================
 # asset delivery 2010 projects
diff --git a/autobuild.xml b/autobuild.xml
index 347ef419edd01e53e18d6af551e6705c66b7e5c2..80b1a8a70945f611fb7d9b2268377a12de19636f 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -90,9 +90,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>9868bfa0b6954e4884c49c6f30068c80</string>
+              <string>71d4d242c41ec9ac4807989371279708</string>
               <key>url</key>
-              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/apr_suite-1.4.2-darwin-20110217.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-apr/rev/249241/arch/Darwin/installer/apr_suite-1.4.5-darwin-20120209.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
@@ -114,9 +114,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>73785c200a5b4ef74a1230b028bb680d</string>
+              <string>983378883a6eec65665875a3d1ba495f</string>
               <key>url</key>
-              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/apr_suite-1.4.2-windows-20110217.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-apr/rev/249241/arch/CYGWIN/installer/apr_suite-1.4.5-windows-20120209.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
@@ -1206,9 +1206,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>9cd66e879908f047d9af665b92946ecc</string>
+              <string>26aa7c367ffadd573f61a6a96f820f80</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/239803/arch/Darwin/installer/llqtwebkit-4.7.1-darwin-20110830.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/245988/arch/Darwin/installer/llqtwebkit-4.7.1-darwin-20111201.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
@@ -1230,9 +1230,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>ab9393795515cbbe9526bde33b41bf2a</string>
+              <string>270db8568a0c4bab266d98e1a820aec4</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/239670/arch/CYGWIN/installer/llqtwebkit-4.7.1-windows-20110829.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-llqtwebkit/rev/245988/arch/CYGWIN/installer/llqtwebkit-4.7.1-windows-20111201.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
diff --git a/doc/contributions.txt b/doc/contributions.txt
index bcdc5a63d215706d86f8cb88822212ded5377ec4..c5db396c97218b031f459d6ca0345619489c9e0e 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -65,15 +65,12 @@ Aimee Trescothick
 Alejandro Rosenthal
 	VWR-1184
 Aleric Inglewood
-	SNOW-84
+	OPEN-38
 	SNOW-240
-	SNOW-477
 	SNOW-522
 	SNOW-626
-	SNOW-744
 	SNOW-756
 	SNOW-764
-	SNOW-766
 	SNOW-800
 	VWR-10001
 	VWR-10579
@@ -99,8 +96,11 @@ Aleric Inglewood
 	VWR-24366
 	VWR-24519
 	VWR-24520
+	SNOW-84
+	SNOW-477
+	SNOW-744
+	SNOW-766
 	STORM-163
-	STORM-864
 	STORM-955
 	STORM-960
 Ales Beaumont
@@ -159,6 +159,7 @@ Alissa Sabre
 	VWR-12620
 	VWR-12789
 	SNOW-322
+    STORM-1723
 Alliez Mysterio
 Angus Boyd
 	VWR-592
@@ -170,6 +171,8 @@ Ansariel Hiller
 	STORM-1101
 	VWR-25480
 	VWR-26150
+	STORM-1685
+	STORM-1713
 Aralara Rajal
 Ardy Lay
 	STORM-859
@@ -480,7 +483,9 @@ Ima Mechanique
 	OPEN-50
 	OPEN-61
 	OPEN-76
+	STORM-959
 	STORM-1175
+	STORM-1708
 Imnotgoing Sideways
 Inma Rau
 Innula Zenovka
@@ -575,8 +580,38 @@ Jonathan Yap
 	STORM-1567
 	STORM-1572
 	STORM-1574
+	STORM-1579
+	STORM-1638
+	STORM-976
+	STORM-1639
+	STORM-910
+	STORM-1653
+	STORM-1642
+	STORM-591
+	STORM-1105
+	STORM-1679
+	STORM-1222
+	STORM-1659
+	STORM-1674
+	STORM-1685
+	STORM-1721
+	STORM-1727
+	STORM-1725
+	STORM-1719
+	STORM-1712
+	STORM-1728
+	STORM-1736
+	STORM-1734
+	STORM-1731
+	STORM-653
+	STORM-1737
+	STORM-1733
+	STORM-1790
+	STORM-1788
+	STORM-1799
+	STORM-1796
 Kadah Coba
-    STORM-1060
+	STORM-1060
 Jondan Lundquist
 Josef Munster
 Josette Windlow
@@ -622,6 +657,7 @@ Latif Khalifa
 	VWR-5370
 leliel Mirihi
 	STORM-1100
+	STORM-1602
 len Starship
 Lisa Lowe
 	CT-218
@@ -647,6 +683,8 @@ Lilly Zenovka
 Lizzy Macarthur
 Luban Yiyuan
 Luc Starsider
+Luminous Luminos
+	STORM-959
 Lunita Savira
 Maccus McCullough
 maciek marksman
@@ -906,6 +944,7 @@ Robin Cornelius
 	SNOW-599
 	SNOW-747
 	STORM-422
+	STORM-591
 	STORM-960
 	STORM-1019
 	STORM-1095
@@ -1032,6 +1071,9 @@ Synystyr Texan
 Takeda Terrawyng
 TankMaster Finesmith
 	STORM-1100
+	STORM-1602
+	STORM-1258
+    VWR-26622
 Talamasca
 Tali Rosca
 Tayra Dagostino
@@ -1097,6 +1139,9 @@ Tofu Buzzard
 	CTS-411
 	STORM-546
 	VWR-24509
+    STORM-1684
+	SH-2477
+	STORM-1684
 Tony Kembia
 Torben Trautman
 TouchaHoney Perhaps
@@ -1130,6 +1175,7 @@ Vector Hastings
 	VWR-8726
 Veritas Raymaker
 Vex Streeter
+	STORM-1642
 Viaticus Speculaas
 Vick Forcella
 Villain Baroque
@@ -1215,6 +1261,7 @@ Zi Ree
 	VWR-1140
 	VWR-24017
 	VWR-25588
+	STORM-1790
 Zipherius Turas
 	VWR-76
 	VWR-77
diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt
index d1042d6e8693ff4692a105d24885081e6a4a233d..4b1bf49d07313f1656ba48eaf8f2373b5241b022 100644
--- a/indra/CMakeLists.txt
+++ b/indra/CMakeLists.txt
@@ -1,4 +1,3 @@
-
 # -*- cmake -*-
 
 # cmake_minimum_required should appear before any
@@ -70,6 +69,9 @@ if (VIEWER)
   add_subdirectory(${LIBS_OPEN_PREFIX}llxuixml)
   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)
 
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index 0266239454c0f8e7feaf76c1fd85695a79661631..98eeed09b3a7448bbf504dadb27a80bbce469f16 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -46,7 +46,7 @@ if (WINDOWS)
   set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Od /Zi /MDd /MP -D_SCL_SECURE_NO_WARNINGS=1"
       CACHE STRING "C++ compiler debug options" FORCE)
   set(CMAKE_CXX_FLAGS_RELWITHDEBINFO 
-      "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MD /MP /Ob2 -D_SECURE_STL=0"
+      "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /Od /Zi /MD /MP /Ob0 -D_SECURE_STL=0"
       CACHE STRING "C++ compiler release-with-debug options" FORCE)
   set(CMAKE_CXX_FLAGS_RELEASE
       "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /MD /MP /Ob2 -D_SECURE_STL=0 -D_HAS_ITERATOR_DEBUGGING=0"
@@ -62,7 +62,7 @@ if (WINDOWS)
       /D_UNICODE 
       /GS
       /TP
-      /W2
+      /W3
       /c
       /Zc:forScope
       /nologo
diff --git a/indra/cmake/FindGLH.cmake b/indra/cmake/FindGLH.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..3d16adaf03d399784f6bb1478472ead07d9b1dd4
--- /dev/null
+++ b/indra/cmake/FindGLH.cmake
@@ -0,0 +1,30 @@
+# -*- cmake -*-
+
+# - Find GLH
+# Find the Graphic Library Helper includes.
+# This module defines
+#  GLH_INCLUDE_DIR, where to find glh/glh_linear.h.
+#  GLH_FOUND, If false, do not try to use GLH.
+
+find_path(GLH_INCLUDE_DIR glh/glh_linear.h
+    NO_SYSTEM_ENVIRONMENT_PATH
+    )
+
+if (GLH_INCLUDE_DIR)
+  set(GLH_FOUND "YES")
+else (GLH_INCLUDE_DIR)
+  set(GLH_FOUND "NO")
+endif (GLH_INCLUDE_DIR)
+
+if (GLH_FOUND)
+  if (NOT GLH_FIND_QUIETLY)
+    message(STATUS "Found GLH: ${GLH_INCLUDE_DIR}")
+    set(GLH_FIND_QUIETLY TRUE) # Only alert us the first time
+  endif (NOT GLH_FIND_QUIETLY)
+else (GLH_FOUND)
+  if (GLH_FIND_REQUIRED)
+    message(FATAL_ERROR "Could not find GLH")
+  endif (GLH_FIND_REQUIRED)
+endif (GLH_FOUND)
+
+mark_as_advanced(GLH_INCLUDE_DIR)
diff --git a/indra/cmake/GLH.cmake b/indra/cmake/GLH.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..911dbe4017172caf71f7bb7afb92d0b2df59f71c
--- /dev/null
+++ b/indra/cmake/GLH.cmake
@@ -0,0 +1,11 @@
+# -*- cmake -*-
+include(Prebuilt)
+
+set(GLH_FIND_REQUIRED TRUE)
+set(GLH_FIND_QUIETLY TRUE)
+
+if (STANDALONE)
+  include(FindGLH)
+else (STANDALONE)
+  use_prebuilt_binary(glh_linear)
+endif (STANDALONE)
diff --git a/indra/cmake/LLRender.cmake b/indra/cmake/LLRender.cmake
index c47e8878e95e74fbd55c95ffaf7dbf4702c65518..8427928151dfe48cf65c71e769e660e979982c43 100644
--- a/indra/cmake/LLRender.cmake
+++ b/indra/cmake/LLRender.cmake
@@ -1,9 +1,11 @@
 # -*- cmake -*-
 
 include(FreeType)
+include(GLH)
 
 set(LLRENDER_INCLUDE_DIRS
     ${LIBS_OPEN_DIR}/llrender
+    ${GLH_INCLUDE_DIR}
     )
 
 if (SERVER AND LINUX)
diff --git a/indra/cmake/LLSharedLibs.cmake b/indra/cmake/LLSharedLibs.cmake
index e29076c73882ddd43cab6b18845bdc6fbde313e2..14dd67f32fda1e19f4135a50e6e95788345d8e4d 100644
--- a/indra/cmake/LLSharedLibs.cmake
+++ b/indra/cmake/LLSharedLibs.cmake
@@ -38,18 +38,17 @@ endmacro(ll_deploy_sharedlibs_command)
 # ll_stage_sharedlib
 # Performs config and adds a copy command for a sharedlib target.
 macro(ll_stage_sharedlib DSO_TARGET)
-  if(SHARED_LIB_STAGING_DIR)
-    # target gets written to the DLL staging directory.
-    # Also this directory is shared with RunBuildTest.cmake, y'know, for the tests.
-    set_target_properties(${DSO_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${SHARED_LIB_STAGING_DIR})
-    if(NOT WINDOWS)
-      get_target_property(DSO_PATH ${DSO_TARGET} LOCATION)
-      get_filename_component(DSO_FILE ${DSO_PATH} NAME)
-      if(DARWIN)
-        set(SHARED_LIB_STAGING_DIR_CONFIG ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/Resources)
-      else(DARWIN)
-        set(SHARED_LIB_STAGING_DIR_CONFIG ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR})
-      endif(DARWIN)
+  # target gets written to the DLL staging directory.
+  # Also this directory is shared with RunBuildTest.cmake, y'know, for the tests.
+  set_target_properties(${DSO_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${SHARED_LIB_STAGING_DIR})
+  if(NOT WINDOWS)
+    get_target_property(DSO_PATH ${DSO_TARGET} LOCATION)
+    get_filename_component(DSO_FILE ${DSO_PATH} NAME)
+    if(DARWIN)
+      set(SHARED_LIB_STAGING_DIR_CONFIG ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/Resources)
+    else(DARWIN)
+      set(SHARED_LIB_STAGING_DIR_CONFIG ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR})
+    endif(DARWIN)
 
       # *TODO - maybe make this a symbolic link? -brad
       add_custom_command(
@@ -63,7 +62,6 @@ macro(ll_stage_sharedlib DSO_TARGET)
           COMMENT "Copying llcommon to the staging folder."
         )
     endif(NOT WINDOWS)
-  endif(SHARED_LIB_STAGING_DIR)
 
   if (DARWIN)
     set_target_properties(${DSO_TARGET} PROPERTIES
diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake
index 07db6ab257eab7735bbf57896379afd2241ca55b..c5f9e2c57911298aa37a712c91ad04e12ce6e37a 100644
--- a/indra/cmake/Linking.cmake
+++ b/indra/cmake/Linking.cmake
@@ -2,22 +2,19 @@
 
 include(Variables)
 
-
-if (NOT STANDALONE)
-  set(ARCH_PREBUILT_DIRS ${AUTOBUILD_INSTALL_DIR}/lib)
-  set(ARCH_PREBUILT_DIRS_RELEASE ${AUTOBUILD_INSTALL_DIR}/lib/release)
-  set(ARCH_PREBUILT_DIRS_DEBUG ${AUTOBUILD_INSTALL_DIR}/lib/debug)
-  if (WINDOWS)
-    set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs)
-    set(EXE_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs)
-  elseif (LINUX)
-    set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/lib)
-    set(EXE_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/bin)
-  elseif (DARWIN)
-    set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs)
-    set(EXE_STAGING_DIR "${CMAKE_BINARY_DIR}/sharedlibs/\$(CONFIGURATION)")
-  endif (WINDOWS)
-endif (NOT STANDALONE)
+set(ARCH_PREBUILT_DIRS ${AUTOBUILD_INSTALL_DIR}/lib)
+set(ARCH_PREBUILT_DIRS_RELEASE ${AUTOBUILD_INSTALL_DIR}/lib/release)
+set(ARCH_PREBUILT_DIRS_DEBUG ${AUTOBUILD_INSTALL_DIR}/lib/debug)
+if (WINDOWS)
+  set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs)
+  set(EXE_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs)
+elseif (LINUX)
+  set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/lib)
+  set(EXE_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs/bin)
+elseif (DARWIN)
+  set(SHARED_LIB_STAGING_DIR ${CMAKE_BINARY_DIR}/sharedlibs)
+  set(EXE_STAGING_DIR "${CMAKE_BINARY_DIR}/sharedlibs/\$(CONFIGURATION)")
+endif (WINDOWS)
 
 # Autobuild packages must provide 'release' versions of libraries, but may provide versions for
 # specific build types.  AUTOBUILD_LIBS_INSTALL_DIRS lists first the build type directory and then
diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake
index 5982ee9a49833c8eb4db5af3901a110c2273c6e2..2704912eb5f814db350401fcdacead715ce9c4bd 100644
--- a/indra/cmake/OpenSSL.cmake
+++ b/indra/cmake/OpenSSL.cmake
@@ -11,7 +11,7 @@ else (STANDALONE)
   if (WINDOWS)
     set(OPENSSL_LIBRARIES ssleay32 libeay32)
   else (WINDOWS)
-    set(OPENSSL_LIBRARIES ssl)
+    set(OPENSSL_LIBRARIES ssl crypto)
   endif (WINDOWS)
   set(OPENSSL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
 endif (STANDALONE)
diff --git a/indra/integration_tests/llui_libtest/CMakeLists.txt b/indra/integration_tests/llui_libtest/CMakeLists.txt
index df471671545f6320df38f292d42bb9dddff3cff4..1180460f4b8ff2563e1cd580497ecc1efca64302 100644
--- a/indra/integration_tests/llui_libtest/CMakeLists.txt
+++ b/indra/integration_tests/llui_libtest/CMakeLists.txt
@@ -71,6 +71,7 @@ endif (DARWIN)
 # Sort by high-level to low-level
 target_link_libraries(llui_libtest
     llui
+    llinventory
     llmessage
     ${LLRENDER_LIBRARIES}
     ${LLIMAGE_LIBRARIES}
diff --git a/indra/linux_crash_logger/CMakeLists.txt b/indra/linux_crash_logger/CMakeLists.txt
index ab62a0d0af1b7323c395a7b227a0a7c2a6cd02cf..98ebdc748739f0ffcba0265e138a5293d8d08a83 100644
--- a/indra/linux_crash_logger/CMakeLists.txt
+++ b/indra/linux_crash_logger/CMakeLists.txt
@@ -3,6 +3,7 @@
 project(linux_crash_logger)
 
 include(00-Common)
+include(GLH)
 include(LLCommon)
 include(LLCrashLogger)
 include(LLMath)
diff --git a/indra/linux_crash_logger/llcrashloggerlinux.cpp b/indra/linux_crash_logger/llcrashloggerlinux.cpp
index 7316717193bbc1aa2b8f2ffaefdf90cbb01c76c1..62465f9937d486fd780fe4bd5a58738e35b89fcf 100644
--- a/indra/linux_crash_logger/llcrashloggerlinux.cpp
+++ b/indra/linux_crash_logger/llcrashloggerlinux.cpp
@@ -133,6 +133,12 @@ bool LLCrashLoggerLinux::mainLoop()
 	return true;
 }
 
+bool LLCrashLoggerLinux::cleanup()
+{
+	commonCleanup();
+	return true;
+}
+
 void LLCrashLoggerLinux::updateApplication(const std::string& message)
 {
 	LLCrashLogger::updateApplication(message);
diff --git a/indra/linux_crash_logger/llcrashloggerlinux.h b/indra/linux_crash_logger/llcrashloggerlinux.h
index 65d5e4e653b8dc19b14b33a8463f77fd597fdb2b..dae6c46651ba642e401aa09874d4c2d2567eb92f 100644
--- a/indra/linux_crash_logger/llcrashloggerlinux.h
+++ b/indra/linux_crash_logger/llcrashloggerlinux.h
@@ -39,6 +39,7 @@ class LLCrashLoggerLinux : public LLCrashLogger
 	virtual bool mainLoop();
 	virtual void updateApplication(const std::string& = LLStringUtil::null);
 	virtual void gatherPlatformSpecificFiles();
+	virtual bool cleanup();
 };
 
 #endif
diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp
index 5e540ad8c58bd2b2ad4b7614329509aa43270a21..5fa28cb90254935db97094f515481b1a2754d0aa 100644
--- a/indra/llaudio/llaudioengine.cpp
+++ b/indra/llaudio/llaudioengine.cpp
@@ -1264,6 +1264,7 @@ LLAudioSource::LLAudioSource(const LLUUID& id, const LLUUID& owner_id, const F32
 	mSyncSlave(false),
 	mQueueSounds(false),
 	mPlayedOnce(false),
+	mCorrupted(false),
 	mType(type),
 	mChannelp(NULL),
 	mCurrentDatap(NULL),
@@ -1296,16 +1297,25 @@ void LLAudioSource::setChannel(LLAudioChannel *channelp)
 
 void LLAudioSource::update()
 {
+	if(mCorrupted)
+	{
+		return ; //no need to update
+	}
+
 	if (!getCurrentBuffer())
 	{
 		if (getCurrentData())
 		{
 			// Hack - try and load the sound.  Will do this as a callback
 			// on decode later.
-			if (getCurrentData()->load())
+			if (getCurrentData()->load() && getCurrentData()->getBuffer())
 			{
 				play(getCurrentData()->getID());
-			}			
+			}
+			else
+			{
+				mCorrupted = true ;
+			}
 		}
 	}
 }
@@ -1421,6 +1431,11 @@ bool LLAudioSource::play(const LLUUID &audio_uuid)
 
 bool LLAudioSource::isDone() const
 {
+	if(mCorrupted)
+	{
+		return true ;
+	}
+
 	const F32 MAX_AGE = 60.f;
 	const F32 MAX_UNPLAYED_AGE = 15.f;
 	const F32 MAX_MUTED_AGE = 11.f;
@@ -1736,7 +1751,7 @@ LLAudioData::LLAudioData(const LLUUID &uuid) :
 	}
 }
 
-
+//return false when the audio file is corrupted.
 bool LLAudioData::load()
 {
 	// For now, just assume we're going to use one buffer per audiodata.
@@ -1752,7 +1767,7 @@ bool LLAudioData::load()
 	{
 		// No free buffers, abort.
 		llinfos << "Not able to allocate a new audio buffer, aborting." << llendl;
-		return false;
+		return true;
 	}
 
 	std::string uuid_str;
diff --git a/indra/llaudio/llaudioengine.h b/indra/llaudio/llaudioengine.h
index 30d24906357a724b2ab7b292c6fddfb2a54805a5..a47ee7ca7ca692053b86f72dec6efee2cd81fa17 100644
--- a/indra/llaudio/llaudioengine.h
+++ b/indra/llaudio/llaudioengine.h
@@ -334,6 +334,7 @@ class LLAudioSource
 	bool			mSyncSlave;
 	bool			mQueueSounds;
 	bool			mPlayedOnce;
+	bool            mCorrupted;
 	S32             mType;
 	LLVector3d		mPositionGlobal;
 	LLVector3		mVelocity;
diff --git a/indra/llaudio/llaudioengine_fmod.cpp b/indra/llaudio/llaudioengine_fmod.cpp
index 88dfdb9c2449c5e3d2a88c38e731c3d1a0ffc88b..a40de9fa68b21afe656d862642d2b7992a33829f 100644
--- a/indra/llaudio/llaudioengine_fmod.cpp
+++ b/indra/llaudio/llaudioengine_fmod.cpp
@@ -673,7 +673,7 @@ bool LLAudioBufferFMOD::loadWAV(const std::string& filename)
 		return false;
 	}
 
-	if (!LLAPRFile::isExist(filename, LL_APR_RPB))
+	if (!LLAPRFile::isExist(filename, NULL, LL_APR_RPB))
 	{
 		// File not found, abort.
 		return false;
diff --git a/indra/llaudio/llvorbisencode.cpp b/indra/llaudio/llvorbisencode.cpp
index 44eeea0ca4115730f614c873faefaa503c68dc9a..0e0c80a45675b6aad361fb49fd563645cf3409d8 100644
--- a/indra/llaudio/llvorbisencode.cpp
+++ b/indra/llaudio/llvorbisencode.cpp
@@ -82,7 +82,8 @@ S32 check_for_invalid_wav_formats(const std::string& in_fname, std::string& erro
 	error_msg.clear();
 
 	//********************************
-	LLAPRFile infile(in_fname, LL_APR_RB);
+	LLAPRFile infile ;
+    infile.open(in_fname,LL_APR_RB);
 	//********************************
 	if (!infile.getFileHandle())
 	{
@@ -232,7 +233,8 @@ S32 encode_vorbis_file(const std::string& in_fname, const std::string& out_fname
 
 	S32 data_left = 0;
 
-	LLAPRFile infile(in_fname,LL_APR_RB);
+	LLAPRFile infile ;
+	infile.open(in_fname,LL_APR_RB);
 	if (!infile.getFileHandle())
 	{
 		llwarns << "Couldn't open temporary ogg file for writing: " << in_fname
@@ -240,7 +242,8 @@ S32 encode_vorbis_file(const std::string& in_fname, const std::string& out_fname
 		return(LLVORBISENC_SOURCE_OPEN_ERR);
 	}
 
-	LLAPRFile outfile(out_fname, LL_APR_WPB);
+	LLAPRFile outfile ;
+	outfile.open(out_fname,LL_APR_WPB);
 	if (!outfile.getFileHandle())
 	{
 		llwarns << "Couldn't open upload sound file for reading: " << in_fname
diff --git a/indra/llcharacter/llbvhloader.cpp b/indra/llcharacter/llbvhloader.cpp
index c3c7f03247f4b412c9a6f3a8514bb917c2142aeb..f3cf950afae70deffcafc7a07adabcb4878f415e 100644
--- a/indra/llcharacter/llbvhloader.cpp
+++ b/indra/llcharacter/llbvhloader.cpp
@@ -219,7 +219,8 @@ ELoadStatus LLBVHLoader::loadTranslationTable(const char *fileName)
 	//--------------------------------------------------------------------
 	std::string path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,fileName);
 
-	LLAPRFile infile(path, LL_APR_R);
+	LLAPRFile infile ;
+	infile.open(path, LL_APR_R);
 	apr_file_t *fp = infile.getFileHandle();
 	if (!fp)
 		return E_ST_NO_XLT_FILE;
diff --git a/indra/llcharacter/llkeyframemotionparam.cpp b/indra/llcharacter/llkeyframemotionparam.cpp
index c3d5dec875414b3a27e2e91b665db28de8456500..82fe8971f5a4183d6e7c2dfc917d74e9c91ffaf0 100644
--- a/indra/llcharacter/llkeyframemotionparam.cpp
+++ b/indra/llcharacter/llkeyframemotionparam.cpp
@@ -351,7 +351,8 @@ BOOL LLKeyframeMotionParam::loadMotions()
 	// open the file
 	//-------------------------------------------------------------------------
 	S32 fileSize = 0;
-	LLAPRFile infile(path, LL_APR_R, &fileSize);
+	LLAPRFile infile ;
+	infile.open(path, LL_APR_R, NULL, &fileSize);
 	apr_file_t* fp = infile.getFileHandle() ;
 	if (!fp || fileSize == 0)
 	{
diff --git a/indra/llcharacter/llstatemachine.cpp b/indra/llcharacter/llstatemachine.cpp
index dcc4ff5f0e7c2b095984f170b036662cff37a5b8..e0454131a52e393d6c006a5897815336a0fa20df 100644
--- a/indra/llcharacter/llstatemachine.cpp
+++ b/indra/llcharacter/llstatemachine.cpp
@@ -204,7 +204,8 @@ LLFSMState* LLStateDiagram::getState(U32 state_id)
 
 BOOL LLStateDiagram::saveDotFile(const std::string& filename)
 {
-	LLAPRFile outfile(filename, LL_APR_W);
+	LLAPRFile outfile ;
+	outfile.open(filename, LL_APR_W);
 	apr_file_t* dot_file = outfile.getFileHandle() ;
 
 	if (!dot_file)
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index 6f39aba976f653e6c0854c8260b528a41ed7c95d..0a3eaec5c53ad155d59cb68764e35f40b7e6b257 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -31,7 +31,6 @@ set(llcommon_SOURCE_FILES
     llallocator_heap_profile.cpp
     llapp.cpp
     llapr.cpp
-    llaprpool.cpp
     llassettype.cpp
     llavatarname.cpp
     llbase32.cpp
@@ -81,7 +80,6 @@ set(llcommon_SOURCE_FILES
     llrand.cpp
     llrefcount.cpp
     llrun.cpp
-    llscopedvolatileaprpool.h
     llsd.cpp
     llsdserialize.cpp
     llsdserialize_xml.cpp
@@ -124,7 +122,6 @@ set(llcommon_HEADER_FILES
     llavatarname.h
     llapp.h
     llapr.h
-    llaprpool.h
     llassettype.h
     llassoclist.h
     llavatarconstants.h
diff --git a/indra/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp
index a8b7106078fb3fa32d9c839735464481ef890789..ed192a9975125106a8ffafb4d1f72b84d59f0917 100644
--- a/indra/llcommon/llapp.cpp
+++ b/indra/llcommon/llapp.cpp
@@ -137,6 +137,10 @@ void LLApp::commonCtor()
 		mOptions.append(sd);
 	}
 
+	// Make sure we clean up APR when we exit
+	// Don't need to do this if we're cleaning up APR in the destructor
+	//atexit(ll_cleanup_apr);
+
 	// Set the application to this instance.
 	sApplication = this;
 	
diff --git a/indra/llcommon/llapr.cpp b/indra/llcommon/llapr.cpp
index 1e4a51102e782d282e49e63cdd51dc8fab697951..d1c44c94032851a19a4ab42f20006ce04a1eb1f4 100644
--- a/indra/llcommon/llapr.cpp
+++ b/indra/llcommon/llapr.cpp
@@ -29,8 +29,212 @@
 #include "linden_common.h"
 #include "llapr.h"
 #include "apr_dso.h"
-#include "llscopedvolatileaprpool.h"
 
+apr_pool_t *gAPRPoolp = NULL; // Global APR memory pool
+LLVolatileAPRPool *LLAPRFile::sAPRFilePoolp = NULL ; //global volatile APR memory pool.
+apr_thread_mutex_t *gLogMutexp = NULL;
+apr_thread_mutex_t *gCallStacksLogMutexp = NULL;
+
+const S32 FULL_VOLATILE_APR_POOL = 1024 ; //number of references to LLVolatileAPRPool
+
+void ll_init_apr()
+{
+	if (!gAPRPoolp)
+	{
+		// Initialize APR and create the global pool
+		apr_initialize();
+		apr_pool_create(&gAPRPoolp, NULL);
+		
+		// Initialize the logging mutex
+		apr_thread_mutex_create(&gLogMutexp, APR_THREAD_MUTEX_UNNESTED, gAPRPoolp);
+		apr_thread_mutex_create(&gCallStacksLogMutexp, APR_THREAD_MUTEX_UNNESTED, gAPRPoolp);
+	}
+
+	if(!LLAPRFile::sAPRFilePoolp)
+	{
+		LLAPRFile::sAPRFilePoolp = new LLVolatileAPRPool(FALSE) ;
+	}
+}
+
+
+void ll_cleanup_apr()
+{
+	LL_INFOS("APR") << "Cleaning up APR" << LL_ENDL;
+
+	if (gLogMutexp)
+	{
+		// Clean up the logging mutex
+
+		// All other threads NEED to be done before we clean up APR, so this is okay.
+		apr_thread_mutex_destroy(gLogMutexp);
+		gLogMutexp = NULL;
+	}
+	if (gCallStacksLogMutexp)
+	{
+		// Clean up the logging mutex
+
+		// All other threads NEED to be done before we clean up APR, so this is okay.
+		apr_thread_mutex_destroy(gCallStacksLogMutexp);
+		gCallStacksLogMutexp = NULL;
+	}
+	if (gAPRPoolp)
+	{
+		apr_pool_destroy(gAPRPoolp);
+		gAPRPoolp = NULL;
+	}
+	if (LLAPRFile::sAPRFilePoolp)
+	{
+		delete LLAPRFile::sAPRFilePoolp ;
+		LLAPRFile::sAPRFilePoolp = NULL ;
+	}
+	apr_terminate();
+}
+
+//
+//
+//LLAPRPool
+//
+LLAPRPool::LLAPRPool(apr_pool_t *parent, apr_size_t size, BOOL releasePoolFlag) 	
+	: mParent(parent),
+	mReleasePoolFlag(releasePoolFlag),
+	mMaxSize(size),
+	mPool(NULL)
+{	
+	createAPRPool() ;
+}
+
+LLAPRPool::~LLAPRPool() 
+{
+	releaseAPRPool() ;
+}
+
+void LLAPRPool::createAPRPool()
+{
+	if(mPool)
+	{
+		return ;
+	}
+
+	mStatus = apr_pool_create(&mPool, mParent);
+	ll_apr_warn_status(mStatus) ;
+
+	if(mMaxSize > 0) //size is the number of blocks (which is usually 4K), NOT bytes.
+	{
+		apr_allocator_t *allocator = apr_pool_allocator_get(mPool); 
+		if (allocator) 
+		{ 
+			apr_allocator_max_free_set(allocator, mMaxSize) ;
+		}
+	}
+}
+
+void LLAPRPool::releaseAPRPool()
+{
+	if(!mPool)
+	{
+		return ;
+	}
+
+	if(!mParent || mReleasePoolFlag)
+	{
+		apr_pool_destroy(mPool) ;
+		mPool = NULL ;
+	}
+}
+
+//virtual
+apr_pool_t* LLAPRPool::getAPRPool() 
+{	
+	return mPool ; 
+}
+
+LLVolatileAPRPool::LLVolatileAPRPool(BOOL is_local, apr_pool_t *parent, apr_size_t size, BOOL releasePoolFlag) 
+				  : LLAPRPool(parent, size, releasePoolFlag),
+				  mNumActiveRef(0),
+				  mNumTotalRef(0),
+				  mMutexPool(NULL),
+				  mMutexp(NULL)
+{
+	//create mutex
+	if(!is_local) //not a local apr_pool, that is: shared by multiple threads.
+	{
+		apr_pool_create(&mMutexPool, NULL); // Create a pool for mutex
+		apr_thread_mutex_create(&mMutexp, APR_THREAD_MUTEX_UNNESTED, mMutexPool);
+	}
+}
+
+LLVolatileAPRPool::~LLVolatileAPRPool()
+{
+	//delete mutex
+	if(mMutexp)
+	{
+		apr_thread_mutex_destroy(mMutexp);
+		apr_pool_destroy(mMutexPool);
+	}
+}
+
+//
+//define this virtual function to avoid any mistakenly calling LLAPRPool::getAPRPool().
+//
+//virtual 
+apr_pool_t* LLVolatileAPRPool::getAPRPool() 
+{
+	return LLVolatileAPRPool::getVolatileAPRPool() ;
+}
+
+apr_pool_t* LLVolatileAPRPool::getVolatileAPRPool() 
+{	
+	LLScopedLock lock(mMutexp) ;
+
+	mNumTotalRef++ ;
+	mNumActiveRef++ ;
+
+	if(!mPool)
+	{
+		createAPRPool() ;
+	}
+	
+	return mPool ;
+}
+
+void LLVolatileAPRPool::clearVolatileAPRPool() 
+{
+	LLScopedLock lock(mMutexp) ;
+
+	if(mNumActiveRef > 0)
+	{
+		mNumActiveRef--;
+		if(mNumActiveRef < 1)
+		{
+			if(isFull()) 
+			{
+				mNumTotalRef = 0 ;
+
+				//destroy the apr_pool.
+				releaseAPRPool() ;
+			}
+			else 
+			{
+				//This does not actually free the memory, 
+				//it just allows the pool to re-use this memory for the next allocation. 
+				apr_pool_clear(mPool) ;
+			}
+		}
+	}
+	else
+	{
+		llassert_always(mNumActiveRef > 0) ;
+	}
+
+	//paranoia check if the pool is jammed.
+	//will remove the check before going to release.
+	llassert_always(mNumTotalRef < (FULL_VOLATILE_APR_POOL << 2)) ;
+}
+
+BOOL LLVolatileAPRPool::isFull()
+{
+	return mNumTotalRef > FULL_VOLATILE_APR_POOL ;
+}
 //---------------------------------------------------------------------
 //
 // LLScopedLock
@@ -109,17 +313,15 @@ void ll_apr_assert_status(apr_status_t status, apr_dso_handle_t *handle)
 //
 LLAPRFile::LLAPRFile()
 	: mFile(NULL),
-	  mVolatileFilePoolp(NULL),
-	  mRegularFilePoolp(NULL)
+	  mCurrentFilePoolp(NULL)
 {
 }
 
-LLAPRFile::LLAPRFile(std::string const& filename, apr_int32_t flags, S32* sizep, access_t access_type)
+LLAPRFile::LLAPRFile(const std::string& filename, apr_int32_t flags, LLVolatileAPRPool* pool)
 	: mFile(NULL),
-	  mVolatileFilePoolp(NULL),
-	  mRegularFilePoolp(NULL)
+	  mCurrentFilePoolp(NULL)
 {
-	open(filename, flags, access_type, sizep);
+	open(filename, flags, pool);
 }
 
 LLAPRFile::~LLAPRFile()
@@ -136,58 +338,36 @@ apr_status_t LLAPRFile::close()
 		mFile = NULL ;
 	}
 
-	if (mVolatileFilePoolp)
+	if(mCurrentFilePoolp)
 	{
-		mVolatileFilePoolp->clearVolatileAPRPool() ;
-		mVolatileFilePoolp = NULL ;
-	}
-
-	if (mRegularFilePoolp)
-	{
-		delete mRegularFilePoolp;
-		mRegularFilePoolp = NULL;
+		mCurrentFilePoolp->clearVolatileAPRPool() ;
+		mCurrentFilePoolp = NULL ;
 	}
 
 	return ret ;
 }
 
-apr_status_t LLAPRFile::open(std::string const& filename, apr_int32_t flags, access_t access_type, S32* sizep)
+apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, LLVolatileAPRPool* pool, S32* sizep)
 {
-	llassert_always(!mFile);
-	llassert_always(!mVolatileFilePoolp && !mRegularFilePoolp);
+	apr_status_t s ;
 
-	apr_status_t status;
-	{
-		apr_pool_t* apr_file_open_pool;	// The use of apr_pool_t is OK here.
-										// This is a temporary variable for a pool that is passed directly to apr_file_open below.
-		if (access_type == short_lived)
-		{
-			// Use a "volatile" thread-local pool.
-			mVolatileFilePoolp = &LLThreadLocalData::tldata().mVolatileAPRPool;
-			// Access the pool and increment its reference count.
-			// The reference count of LLVolatileAPRPool objects will be decremented
-			// again in LLAPRFile::close by calling mVolatileFilePoolp->clearVolatileAPRPool().
-			apr_file_open_pool = mVolatileFilePoolp->getVolatileAPRPool();
-		}
-		else
-		{
-			mRegularFilePoolp = new LLAPRPool(LLThreadLocalData::tldata().mRootPool);
-			apr_file_open_pool = (*mRegularFilePoolp)();
-		}
-		status = apr_file_open(&mFile, filename.c_str(), flags, APR_OS_DEFAULT, apr_file_open_pool);
-	}
-	if (status != APR_SUCCESS || !mFile)
+	//check if already open some file
+	llassert_always(!mFile) ;
+	llassert_always(!mCurrentFilePoolp) ;
+	
+	apr_pool_t* apr_pool = pool ? pool->getVolatileAPRPool() : NULL ;
+	s = apr_file_open(&mFile, filename.c_str(), flags, APR_OS_DEFAULT, getAPRFilePool(apr_pool));
+
+	if (s != APR_SUCCESS || !mFile)
 	{
 		mFile = NULL ;
-		close() ;
+		
 		if (sizep)
 		{
 			*sizep = 0;
 		}
-		return status;
 	}
-
-	if (sizep)
+	else if (sizep)
 	{
 		S32 file_size = 0;
 		apr_off_t offset = 0;
@@ -201,7 +381,49 @@ apr_status_t LLAPRFile::open(std::string const& filename, apr_int32_t flags, acc
 		*sizep = file_size;
 	}
 
-	return status;
+	if(!mCurrentFilePoolp)
+	{
+		mCurrentFilePoolp = pool ;
+
+		if(!mFile)
+		{
+			close() ;
+		}
+	}
+
+	return s ;
+}
+
+//use gAPRPoolp.
+apr_status_t LLAPRFile::open(const std::string& filename, apr_int32_t flags, BOOL use_global_pool)
+{
+	apr_status_t s;
+
+	//check if already open some file
+	llassert_always(!mFile) ;
+	llassert_always(!mCurrentFilePoolp) ;
+	llassert_always(use_global_pool) ; //be aware of using gAPRPoolp.
+	
+	s = apr_file_open(&mFile, filename.c_str(), flags, APR_OS_DEFAULT, gAPRPoolp);
+	if (s != APR_SUCCESS || !mFile)
+	{
+		mFile = NULL ;
+		close() ;
+		return s;
+	}
+
+	return s;
+}
+
+apr_pool_t* LLAPRFile::getAPRFilePool(apr_pool_t* pool)
+{	
+	if(!pool)
+	{
+		mCurrentFilePoolp = sAPRFilePoolp ;
+		return mCurrentFilePoolp->getVolatileAPRPool() ;
+	}
+
+	return pool ;
 }
 
 // File I/O
@@ -259,6 +481,45 @@ S32 LLAPRFile::seek(apr_seek_where_t where, S32 offset)
 //static components of LLAPRFile
 //
 
+//static
+apr_status_t LLAPRFile::close(apr_file_t* file_handle, LLVolatileAPRPool* pool) 
+{
+	apr_status_t ret = APR_SUCCESS ;
+	if(file_handle)
+	{
+		ret = apr_file_close(file_handle);
+		file_handle = NULL ;
+	}
+
+	if(pool)
+	{
+		pool->clearVolatileAPRPool() ;
+	}
+
+	return ret ;
+}
+
+//static
+apr_file_t* LLAPRFile::open(const std::string& filename, LLVolatileAPRPool* pool, apr_int32_t flags)
+{
+	apr_status_t s;
+	apr_file_t* file_handle ;
+
+	pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+
+	s = apr_file_open(&file_handle, filename.c_str(), flags, APR_OS_DEFAULT, pool->getVolatileAPRPool());
+	if (s != APR_SUCCESS || !file_handle)
+	{
+		ll_apr_warn_status(s);
+		LL_WARNS("APR") << " Attempting to open filename: " << filename << LL_ENDL;
+		file_handle = NULL ;
+		close(file_handle, pool) ;
+		return NULL;
+	}
+
+	return file_handle ;
+}
+
 //static
 S32 LLAPRFile::seek(apr_file_t* file_handle, apr_seek_where_t where, S32 offset)
 {
@@ -292,15 +553,13 @@ S32 LLAPRFile::seek(apr_file_t* file_handle, apr_seek_where_t where, S32 offset)
 }
 
 //static
-S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nbytes)
+S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool)
 {
-	apr_file_t* file_handle;
-	LLScopedVolatileAPRPool pool;
-	apr_status_t s = apr_file_open(&file_handle, filename.c_str(), APR_READ|APR_BINARY, APR_OS_DEFAULT, pool);
-	if (s != APR_SUCCESS || !file_handle)
+	//*****************************************
+	apr_file_t* file_handle = open(filename, pool, APR_READ|APR_BINARY); 
+	//*****************************************	
+	if (!file_handle)
 	{
-		ll_apr_warn_status(s);
-		LL_WARNS("APR") << " while attempting to open file \"" << filename << '"' << LL_ENDL;
 		return 0;
 	}
 
@@ -330,13 +589,14 @@ S32 LLAPRFile::readEx(const std::string& filename, void *buf, S32 offset, S32 nb
 		}
 	}
 	
-	apr_file_close(file_handle);
-
+	//*****************************************
+	close(file_handle, pool) ; 
+	//*****************************************
 	return (S32)bytes_read;
 }
 
 //static
-S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 nbytes)
+S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool)
 {
 	apr_int32_t flags = APR_CREATE|APR_WRITE|APR_BINARY;
 	if (offset < 0)
@@ -345,13 +605,11 @@ S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 n
 		offset = 0;
 	}
 	
-	apr_file_t* file_handle;
-	LLScopedVolatileAPRPool pool;
-	apr_status_t s = apr_file_open(&file_handle, filename.c_str(), flags, APR_OS_DEFAULT, pool);
-	if (s != APR_SUCCESS || !file_handle)
+	//*****************************************
+	apr_file_t* file_handle = open(filename, pool, flags);
+	//*****************************************
+	if (!file_handle)
 	{
-		ll_apr_warn_status(s);
-		LL_WARNS("APR") << " while attempting to open file \"" << filename << '"' << LL_ENDL;
 		return 0;
 	}
 
@@ -381,18 +639,21 @@ S32 LLAPRFile::writeEx(const std::string& filename, void *buf, S32 offset, S32 n
 		}
 	}
 
-	apr_file_close(file_handle);
+	//*****************************************
+	LLAPRFile::close(file_handle, pool);
+	//*****************************************
 
 	return (S32)bytes_written;
 }
 
 //static
-bool LLAPRFile::remove(const std::string& filename)
+bool LLAPRFile::remove(const std::string& filename, LLVolatileAPRPool* pool)
 {
 	apr_status_t s;
 
-	LLScopedVolatileAPRPool pool;
-	s = apr_file_remove(filename.c_str(), pool);
+	pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+	s = apr_file_remove(filename.c_str(), pool->getVolatileAPRPool());
+	pool->clearVolatileAPRPool() ;
 
 	if (s != APR_SUCCESS)
 	{
@@ -404,12 +665,13 @@ bool LLAPRFile::remove(const std::string& filename)
 }
 
 //static
-bool LLAPRFile::rename(const std::string& filename, const std::string& newname)
+bool LLAPRFile::rename(const std::string& filename, const std::string& newname, LLVolatileAPRPool* pool)
 {
 	apr_status_t s;
 
-	LLScopedVolatileAPRPool pool;
-	s = apr_file_rename(filename.c_str(), newname.c_str(), pool);
+	pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+	s = apr_file_rename(filename.c_str(), newname.c_str(), pool->getVolatileAPRPool());
+	pool->clearVolatileAPRPool() ;
 	
 	if (s != APR_SUCCESS)
 	{
@@ -421,44 +683,49 @@ bool LLAPRFile::rename(const std::string& filename, const std::string& newname)
 }
 
 //static
-bool LLAPRFile::isExist(const std::string& filename, apr_int32_t flags)
+bool LLAPRFile::isExist(const std::string& filename, LLVolatileAPRPool* pool, apr_int32_t flags)
 {
-	apr_file_t* file_handle;
+	apr_file_t* apr_file;
 	apr_status_t s;
 
-	LLScopedVolatileAPRPool pool;
-	s = apr_file_open(&file_handle, filename.c_str(), flags, APR_OS_DEFAULT, pool);
+	pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+	s = apr_file_open(&apr_file, filename.c_str(), flags, APR_OS_DEFAULT, pool->getVolatileAPRPool());	
 
-	if (s != APR_SUCCESS || !file_handle)
+	if (s != APR_SUCCESS || !apr_file)
 	{
+		pool->clearVolatileAPRPool() ;
 		return false;
 	}
 	else
 	{
-		apr_file_close(file_handle);
+		apr_file_close(apr_file) ;
+		pool->clearVolatileAPRPool() ;
 		return true;
 	}
 }
 
 //static
-S32 LLAPRFile::size(const std::string& filename)
+S32 LLAPRFile::size(const std::string& filename, LLVolatileAPRPool* pool)
 {
-	apr_file_t* file_handle;
+	apr_file_t* apr_file;
 	apr_finfo_t info;
 	apr_status_t s;
 	
-	LLScopedVolatileAPRPool pool;
-	s = apr_file_open(&file_handle, filename.c_str(), APR_READ, APR_OS_DEFAULT, pool);
+	pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+	s = apr_file_open(&apr_file, filename.c_str(), APR_READ, APR_OS_DEFAULT, pool->getVolatileAPRPool());
 	
-	if (s != APR_SUCCESS || !file_handle)
+	if (s != APR_SUCCESS || !apr_file)
 	{		
+		pool->clearVolatileAPRPool() ;
+		
 		return 0;
 	}
 	else
 	{
-		apr_status_t s = apr_file_info_get(&info, APR_FINFO_SIZE, file_handle);
+		apr_status_t s = apr_file_info_get(&info, APR_FINFO_SIZE, apr_file);		
 
-		apr_file_close(file_handle) ;
+		apr_file_close(apr_file) ;
+		pool->clearVolatileAPRPool() ;
 		
 		if (s == APR_SUCCESS)
 		{
@@ -472,29 +739,31 @@ S32 LLAPRFile::size(const std::string& filename)
 }
 
 //static
-bool LLAPRFile::makeDir(const std::string& dirname)
+bool LLAPRFile::makeDir(const std::string& dirname, LLVolatileAPRPool* pool)
 {
 	apr_status_t s;
 
-	LLScopedVolatileAPRPool pool;
-	s = apr_dir_make(dirname.c_str(), APR_FPROT_OS_DEFAULT, pool);
+	pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+	s = apr_dir_make(dirname.c_str(), APR_FPROT_OS_DEFAULT, pool->getVolatileAPRPool());
+	pool->clearVolatileAPRPool() ;
 		
 	if (s != APR_SUCCESS)
 	{
 		ll_apr_warn_status(s);
-		LL_WARNS("APR") << " while attempting to make directory: " << dirname << LL_ENDL;
+		LL_WARNS("APR") << " Attempting to make directory: " << dirname << LL_ENDL;
 		return false;
 	}
 	return true;
 }
 
 //static
-bool LLAPRFile::removeDir(const std::string& dirname)
+bool LLAPRFile::removeDir(const std::string& dirname, LLVolatileAPRPool* pool)
 {
 	apr_status_t s;
 
-	LLScopedVolatileAPRPool pool;
-	s = apr_file_remove(dirname.c_str(), pool);
+	pool = pool ? pool : LLAPRFile::sAPRFilePoolp ;
+	s = apr_file_remove(dirname.c_str(), pool->getVolatileAPRPool());
+	pool->clearVolatileAPRPool() ;
 	
 	if (s != APR_SUCCESS)
 	{
diff --git a/indra/llcommon/llapr.h b/indra/llcommon/llapr.h
index 3f846f13145034e0d26c33b5f50a09064ddff737..af33ce666f1558193d3d2818cf0c3a5e98d6ee7a 100644
--- a/indra/llcommon/llapr.h
+++ b/indra/llcommon/llapr.h
@@ -50,9 +50,71 @@
 #include "apr_atomic.h"
 #include "llstring.h"
 
+extern LL_COMMON_API apr_thread_mutex_t* gLogMutexp;
+extern apr_thread_mutex_t* gCallStacksLogMutexp;
+
 struct apr_dso_handle_t;
-class LLAPRPool;
-class LLVolatileAPRPool;
+
+/** 
+ * @brief initialize the common apr constructs -- apr itself, the
+ * global pool, and a mutex.
+ */
+void LL_COMMON_API ll_init_apr();
+
+/** 
+ * @brief Cleanup those common apr constructs.
+ */
+void LL_COMMON_API ll_cleanup_apr();
+
+//
+//LL apr_pool
+//manage apr_pool_t, destroy allocated apr_pool in the destruction function.
+//
+class LL_COMMON_API LLAPRPool
+{
+public:
+	LLAPRPool(apr_pool_t *parent = NULL, apr_size_t size = 0, BOOL releasePoolFlag = TRUE) ;
+	virtual ~LLAPRPool() ;
+
+	virtual apr_pool_t* getAPRPool() ;
+	apr_status_t getStatus() {return mStatus ; }
+
+protected:
+	void releaseAPRPool() ;
+	void createAPRPool() ;
+
+protected:
+	apr_pool_t*  mPool ;              //pointing to an apr_pool
+	apr_pool_t*  mParent ;			  //parent pool
+	apr_size_t   mMaxSize ;           //max size of mPool, mPool should return memory to system if allocated memory beyond this limit. However it seems not to work.
+	apr_status_t mStatus ;            //status when creating the pool
+	BOOL         mReleasePoolFlag ;   //if set, mPool is destroyed when LLAPRPool is deleted. default value is true.
+};
+
+//
+//volatile LL apr_pool
+//which clears memory automatically.
+//so it can not hold static data or data after memory is cleared
+//
+class LL_COMMON_API LLVolatileAPRPool : public LLAPRPool
+{
+public:
+	LLVolatileAPRPool(BOOL is_local = TRUE, apr_pool_t *parent = NULL, apr_size_t size = 0, BOOL releasePoolFlag = TRUE);
+	virtual ~LLVolatileAPRPool();
+
+	/*virtual*/ apr_pool_t* getAPRPool() ; //define this virtual function to avoid any mistakenly calling LLAPRPool::getAPRPool().
+	apr_pool_t* getVolatileAPRPool() ;	
+	void        clearVolatileAPRPool() ;
+
+	BOOL        isFull() ;
+	
+private:
+	S32 mNumActiveRef ; //number of active pointers pointing to the apr_pool.
+	S32 mNumTotalRef ;  //number of total pointers pointing to the apr_pool since last creating.  
+
+	apr_thread_mutex_t *mMutexp;
+	apr_pool_t         *mMutexPool;
+} ;
 
 /** 
  * @class LLScopedLock
@@ -143,20 +205,15 @@ class LL_COMMON_API LLAPRFile : boost::noncopyable
 	// make this non copyable since a copy closes the file
 private:
 	apr_file_t* mFile ;
-	LLVolatileAPRPool* mVolatileFilePoolp;	// (Thread local) APR pool currently in use.
-	LLAPRPool* mRegularFilePoolp;		// ...or a regular pool.
+	LLVolatileAPRPool *mCurrentFilePoolp ; //currently in use apr_pool, could be one of them: sAPRFilePoolp, or a temp pool. 
 
 public:
-	enum access_t {
-		long_lived,		// Use a global pool for long-lived file accesses.
-		short_lived		// Use a volatile pool for short-lived file accesses.
-	};
-
 	LLAPRFile() ;
-	LLAPRFile(std::string const& filename, apr_int32_t flags, S32* sizep = NULL, access_t access_type = short_lived);
+	LLAPRFile(const std::string& filename, apr_int32_t flags, LLVolatileAPRPool* pool = NULL);
 	~LLAPRFile() ;
-
-	apr_status_t open(const std::string& filename, apr_int32_t flags, access_t access_type, S32* sizep = NULL);
+	
+	apr_status_t open(const std::string& filename, apr_int32_t flags, LLVolatileAPRPool* pool = NULL, S32* sizep = NULL);
+	apr_status_t open(const std::string& filename, apr_int32_t flags, BOOL use_global_pool); //use gAPRPoolp.
 	apr_status_t close() ;
 
 	// Returns actual offset, -1 if seek fails
@@ -169,24 +226,32 @@ class LL_COMMON_API LLAPRFile : boost::noncopyable
 	
 	apr_file_t* getFileHandle() {return mFile;}	
 
+private:
+	apr_pool_t* getAPRFilePool(apr_pool_t* pool) ;	
+	
 //
 //*******************************************************************************************************************************
 //static components
 //
+public:
+	static LLVolatileAPRPool *sAPRFilePoolp ; //a global apr_pool for APRFile, which is used only when local pool does not exist.
+
 private:
+	static apr_file_t* open(const std::string& filename, LLVolatileAPRPool* pool, apr_int32_t flags);
+	static apr_status_t close(apr_file_t* file, LLVolatileAPRPool* pool) ;
 	static S32 seek(apr_file_t* file, apr_seek_where_t where, S32 offset);
 public:
 	// returns false if failure:
-	static bool remove(const std::string& filename);
-	static bool rename(const std::string& filename, const std::string& newname);
-	static bool isExist(const std::string& filename, apr_int32_t flags = APR_READ);
-	static S32 size(const std::string& filename);
-	static bool makeDir(const std::string& dirname);
-	static bool removeDir(const std::string& dirname);
+	static bool remove(const std::string& filename, LLVolatileAPRPool* pool = NULL);
+	static bool rename(const std::string& filename, const std::string& newname, LLVolatileAPRPool* pool = NULL);
+	static bool isExist(const std::string& filename, LLVolatileAPRPool* pool = NULL, apr_int32_t flags = APR_READ);
+	static S32 size(const std::string& filename, LLVolatileAPRPool* pool = NULL);
+	static bool makeDir(const std::string& dirname, LLVolatileAPRPool* pool = NULL);
+	static bool removeDir(const std::string& dirname, LLVolatileAPRPool* pool = NULL);
 
 	// Returns bytes read/written, 0 if read/write fails:
-	static S32 readEx(const std::string& filename, void *buf, S32 offset, S32 nbytes);	
-	static S32 writeEx(const std::string& filename, void *buf, S32 offset, S32 nbytes); // offset<0 means append
+	static S32 readEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool = NULL);	
+	static S32 writeEx(const std::string& filename, void *buf, S32 offset, S32 nbytes, LLVolatileAPRPool* pool = NULL); // offset<0 means append
 //*******************************************************************************************************************************
 };
 
@@ -202,4 +267,6 @@ bool LL_COMMON_API ll_apr_warn_status(apr_status_t status, apr_dso_handle_t* han
 void LL_COMMON_API ll_apr_assert_status(apr_status_t status);
 void LL_COMMON_API ll_apr_assert_status(apr_status_t status, apr_dso_handle_t* handle);
 
+extern "C" LL_COMMON_API apr_pool_t* gAPRPoolp; // Global APR memory pool
+
 #endif // LL_LLAPR_H
diff --git a/indra/llcommon/llaprpool.cpp b/indra/llcommon/llaprpool.cpp
deleted file mode 100644
index 6f21b61b65e23df52654d4e3dd70a43828c4cc0d..0000000000000000000000000000000000000000
--- a/indra/llcommon/llaprpool.cpp
+++ /dev/null
@@ -1,202 +0,0 @@
-/**
- * @file llaprpool.cpp
- *
- * $LicenseInfo:firstyear=2011&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$
- *
- * CHANGELOG
- *   and additional copyright holders.
- *
- *   04/04/2010
- *   - Initial version, written by Aleric Inglewood @ SL
- *
- *   10/11/2010
- *   - Added APR_HAS_THREADS #if's to allow creation and destruction
- *     of subpools by threads other than the parent pool owner.
- */
-
-#include "linden_common.h"
-
-#include "llerror.h"
-#include "llaprpool.h"
-#include "llthread.h"
-
-// Create a subpool from parent.
-void LLAPRPool::create(LLAPRPool& parent)
-{
-	llassert(!mPool);			// Must be non-initialized.
-	mParent = &parent;
-	if (!mParent)				// Using the default parameter?
-	{
-		// By default use the root pool of the current thread.
-		mParent = &LLThreadLocalData::tldata().mRootPool;
-	}
-	llassert(mParent->mPool);	// Parent must be initialized.
-#if APR_HAS_THREADS
-	// As per the documentation of APR (ie http://apr.apache.org/docs/apr/1.4/apr__pools_8h.html):
-	//
-	// Note that most operations on pools are not thread-safe: a single pool should only be
-	// accessed by a single thread at any given time. The one exception to this rule is creating
-	// a subpool of a given pool: one or more threads can safely create subpools at the same
-	// time that another thread accesses the parent pool.
-	//
-	// In other words, it's safe for any thread to create a (sub)pool, independent of who
-	// owns the parent pool.
-	mOwner = apr_os_thread_current();
-#else
-	mOwner = mParent->mOwner;
-	llassert(apr_os_thread_equal(mOwner, apr_os_thread_current()));
-#endif
-	apr_status_t const apr_pool_create_status = apr_pool_create(&mPool, mParent->mPool);
-	llassert_always(apr_pool_create_status == APR_SUCCESS);
-	llassert(mPool);			// Initialized.
-	apr_pool_cleanup_register(mPool, this, &s_plain_cleanup, &apr_pool_cleanup_null);
-}
-
-// Destroy the (sub)pool, if any.
-void LLAPRPool::destroy(void)
-{
-	// Only do anything if we are not already (being) destroyed.
-	if (mPool)
-	{
-#if !APR_HAS_THREADS
-		// If we are a root pool, then every thread may destruct us: in that case
-		// we have to assume that no other thread will use this pool concurrently,
-		// of course. Otherwise, if we are a subpool, only the thread that owns
-		// the parent may destruct us, since that is the pool that is still alive,
-		// possibly being used by others and being altered here.
-		llassert(!mParent || apr_os_thread_equal(mParent->mOwner, apr_os_thread_current()));
-#endif
-		apr_pool_t* pool = mPool;	// The use of apr_pool_t is OK here.
-									// Temporary store before destroying the pool.
-		mPool = NULL;				// Mark that we are BEING destructed.
-		apr_pool_cleanup_kill(pool, this, &s_plain_cleanup);
-		apr_pool_destroy(pool);
-	}
-}
-
-bool LLAPRPool::parent_is_being_destructed(void)
-{
-	return mParent && (!mParent->mPool || mParent->parent_is_being_destructed());
-}
-
-LLAPRInitialization::LLAPRInitialization(void)
-{
-	static bool apr_initialized = false;
-
-	if (!apr_initialized)
-	{
-		apr_initialize();
-	}
-
-	apr_initialized = true;
-}
-
-bool LLAPRRootPool::sCountInitialized = false;
-apr_uint32_t volatile LLAPRRootPool::sCount;
-
-apr_thread_mutex_t* gLogMutexp;
-apr_thread_mutex_t* gCallStacksLogMutexp;
-
-LLAPRRootPool::LLAPRRootPool(void) : LLAPRInitialization(), LLAPRPool(0)
-{
-	// sCountInitialized don't need locking because when we get here there is still only a single thread.
-	if (!sCountInitialized)
-	{
-		// Initialize the logging mutex
-		apr_thread_mutex_create(&gLogMutexp, APR_THREAD_MUTEX_UNNESTED, mPool);
-		apr_thread_mutex_create(&gCallStacksLogMutexp, APR_THREAD_MUTEX_UNNESTED, mPool);
-
-		apr_status_t status = apr_atomic_init(mPool);
-		llassert_always(status == APR_SUCCESS);
-		apr_atomic_set32(&sCount, 1);	// Set to 1 to account for the global root pool.
-		sCountInitialized = true;
-
-		// Initialize thread-local APR pool support.
-		// Because this recursively calls LLAPRRootPool::LLAPRRootPool(void)
-		// it must be done last, so that sCount is already initialized.
-		LLThreadLocalData::init();
-	}
-	apr_atomic_inc32(&sCount);
-}
-
-LLAPRRootPool::~LLAPRRootPool()
-{
-	if (!apr_atomic_dec32(&sCount))
-	{
-		// The last pool was destructed. Cleanup remainder of APR.
-		LL_INFOS("APR") << "Cleaning up APR" << LL_ENDL;
-
-		if (gLogMutexp)
-		{
-			// Clean up the logging mutex
-
-			// All other threads NEED to be done before we clean up APR, so this is okay.
-			apr_thread_mutex_destroy(gLogMutexp);
-			gLogMutexp = NULL;
-		}
-		if (gCallStacksLogMutexp)
-		{
-			// Clean up the logging mutex
-
-			// All other threads NEED to be done before we clean up APR, so this is okay.
-			apr_thread_mutex_destroy(gCallStacksLogMutexp);
-			gCallStacksLogMutexp = NULL;
-		}
-
-		// Must destroy ALL, and therefore this last LLAPRRootPool, before terminating APR.
-		static_cast<LLAPRRootPool*>(this)->destroy();
-
-		apr_terminate();
-	}
-}
-
-//static
-// Return a global root pool that is independent of LLThreadLocalData.
-// Normally you should NOT use this. Only use for early initialization
-// (before main) and deinitialization (after main).
-LLAPRRootPool& LLAPRRootPool::get(void)
-{
-  static LLAPRRootPool global_APRpool(0);
-  return global_APRpool;
-}
-
-void LLVolatileAPRPool::clearVolatileAPRPool()
-{
-	llassert_always(mNumActiveRef > 0);
-	if (--mNumActiveRef == 0)
-	{
-		if (isOld())
-		{
-			destroy();
-			mNumTotalRef = 0 ;
-		}
-		else
-		{
-			// This does not actually free the memory,
-			// it just allows the pool to re-use this memory for the next allocation.
-			clear();
-		}
-	}
-
-	// Paranoia check if the pool is jammed.
-	llassert(mNumTotalRef < (FULL_VOLATILE_APR_POOL << 2)) ;
-}
diff --git a/indra/llcommon/llaprpool.h b/indra/llcommon/llaprpool.h
deleted file mode 100644
index bf4102c5849e98f1e78095ee22131b8263d5b744..0000000000000000000000000000000000000000
--- a/indra/llcommon/llaprpool.h
+++ /dev/null
@@ -1,256 +0,0 @@
-/**
- * @file llaprpool.h
- * @brief Implementation of LLAPRPool
- *
- * $LicenseInfo:firstyear=2011&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$
- *
- * CHANGELOG
- *   and additional copyright holders.
- *
- *   04/04/2010
- *   - Initial version, written by Aleric Inglewood @ SL
- *
- *   10/11/2010
- *   - Added APR_HAS_THREADS #if's to allow creation and destruction
- *     of subpools by threads other than the parent pool owner.
- *
- *   05/02/2011
- *   - Fixed compilation on windows: Suppress compile warning 4996
- *     and include <winsock2.h> before including <ws2tcpip.h>,
- *     by Merov Linden @ SL.
- */
-
-#ifndef LL_LLAPRPOOL_H
-#define LL_LLAPRPOOL_H
-
-#ifdef LL_WINDOWS
-#pragma warning(push)
-#pragma warning(disable:4996)
-#include <winsock2.h>
-#include <ws2tcpip.h>		// Needed before including apr_portable.h
-#pragma warning(pop)
-#endif
-
-#include "apr_portable.h"
-#include "apr_pools.h"
-#include "llerror.h"
-
-extern void ll_init_apr();
-
-/**
- * @brief A wrapper around the APR memory pool API.
- *
- * Usage of this class should be restricted to passing it to libapr-1 function calls that need it.
- *
- */
-class LL_COMMON_API LLAPRPool
-{
-protected:
-	//! Pointer to the underlaying pool. NULL if not initialized.
-	apr_pool_t* mPool;		// The use of apr_pool_t is OK here.
-							// This is the wrapped pointer that it is all about!
-	//! Pointer to the parent pool, if any. Only valid when mPool is non-zero.
-	LLAPRPool* mParent;
-	//! The thread that owns this memory pool. Only valid when mPool is non-zero.
-	apr_os_thread_t mOwner;
-
-public:
-	/// Construct an uninitialized (destructed) pool.
-	LLAPRPool(void) : mPool(NULL) { }
-
-	/// Construct a subpool from an existing pool.
-	/// This is not a copy-constructor, this class doesn't have one!
-	LLAPRPool(LLAPRPool& parent) : mPool(NULL) { create(parent); }
-
-	/// Destruct the memory pool (free all of its subpools and allocated memory).
-	~LLAPRPool() { destroy(); }
-
-protected:
-	/// Create a pool that is allocated from the Operating System. Only used by LLAPRRootPool.
-	LLAPRPool(int) : mPool(NULL), mParent(NULL), mOwner(apr_os_thread_current())
-	{
-		apr_status_t const apr_pool_create_status = apr_pool_create(&mPool, NULL);
-		llassert_always(apr_pool_create_status == APR_SUCCESS);
-		llassert(mPool);
-		apr_pool_cleanup_register(mPool, this, &s_plain_cleanup, &apr_pool_cleanup_null);
-	}
-
-public:
-	/// Create a subpool from parent. May only be called for an uninitialized/destroyed pool.
-	/// The default parameter causes the root pool of the current thread to be used.
-	void create(LLAPRPool& parent = *static_cast<LLAPRPool*>(NULL));
-
-	/// Destroy the (sub)pool, if any.
-	void destroy(void);
-
-	// Use some safebool idiom (http://www.artima.com/cppsource/safebool.html) rather than operator bool.
-	typedef LLAPRPool* const LLAPRPool::* const bool_type;
-	/// Return true if the pool is initialized.
-	operator bool_type() const { return mPool ? &LLAPRPool::mParent : 0; }
-
-	/// Painful, but we have to either provide access to this, or wrap
-	/// every APR function call that needs an apr pool as argument.
-	/// NEVER destroy a pool that is returned by this function!
-	apr_pool_t* operator()(void) const		// The use of apr_pool_t is OK here.
-	  										// This is the accessor for passing the pool to libapr-1 functions.
-	{
-		llassert(mPool);
-		llassert(apr_os_thread_equal(mOwner, apr_os_thread_current()));
-		return mPool;
-	}
-
-	/// Free all memory without destructing the pool.
-	void clear(void)
-	{
-		llassert(mPool);
-		llassert(apr_os_thread_equal(mOwner, apr_os_thread_current()));
-		apr_pool_clear(mPool);
-	}
-
-// These methods would make this class 'complete' (as wrapper around the libapr
-// pool functions), but we don't use memory pools in the viewer (only when
-// we are forced to pass one to a libapr call), so don't define them in order
-// not to encourage people to use them.
-#if 0
-	void* palloc(size_t size)
-	{
-		llassert(mPool);
-		llassert(apr_os_thread_equal(mOwner, apr_os_thread_current()));
-		return apr_palloc(mPool, size);
-	}
-	void* pcalloc(size_t size)
-	{
-		llassert(mPool);
-		llassert(apr_os_thread_equal(mOwner, apr_os_thread_current()));
-		return apr_pcalloc(mPool, size);
-	}
-#endif
-
-private:
-	bool parent_is_being_destructed(void);
-	static apr_status_t s_plain_cleanup(void* userdata) { return static_cast<LLAPRPool*>(userdata)->plain_cleanup(); }
-
-	apr_status_t plain_cleanup(void)
-	{
-		if (mPool && 						// We are not being destructed,
-			parent_is_being_destructed())	// but our parent is.
-		  // This means the pool is being destructed recursively by libapr
-		  // because one of its parents is being destructed.
-		{
-			mPool = NULL;	// Stop destroy() from destructing the pool again.
-		}
-		return APR_SUCCESS;
-	}
-};
-
-class LLAPRInitialization
-{
-public:
-	LLAPRInitialization(void);
-};
-
-/**
- * @brief Root memory pool (allocates memory from the operating system).
- *
- * This class should only be used by LLThreadLocalData
- * (and LLMutexRootPool when APR_HAS_THREADS isn't defined).
- */
-class LL_COMMON_API LLAPRRootPool : public LLAPRInitialization, public LLAPRPool
-{
-private:
-	/// Construct a root memory pool. Should only be used by LLThreadLocalData and LLMutexRootPool.
-	friend class LLThreadLocalData;
-#if !APR_HAS_THREADS
-	friend class LLMutexRootPool;
-#endif
-	/// Construct a root memory pool.
-	/// Should only be used by LLThreadLocalData.
-	LLAPRRootPool(void);
-	~LLAPRRootPool();
-
-private:
-	// Keep track of how many root pools exist and when the last one is destructed.
-	static bool sCountInitialized;
-	static apr_uint32_t volatile sCount;
-
-public:
-	// Return a global root pool that is independent of LLThreadLocalData.
-	// Normally you should not use this. Only use for early initialization
-	// (before main) and deinitialization (after main).
-	static LLAPRRootPool& get(void);
-
-#if APR_POOL_DEBUG
-	void grab_ownership(void)
-	{
-		// You need a patched libapr to use this.
-		// See http://web.archiveorange.com/archive/v/5XO9y2zoxUOMt6Gmi1OI
-		apr_pool_owner_set(mPool);
-	}
-#endif
-
-private:
-	// Used for constructing the Special Global Root Pool (returned by LLAPRRootPool::get).
-	// It is the same as the default constructor but omits to increment sCount. As a result,
-	// we must be sure that at least one other LLAPRRootPool is created before termination
-	// of the application (which is the case: we create one LLAPRRootPool per thread).
-	LLAPRRootPool(int) : LLAPRInitialization(), LLAPRPool(0) { }
-};
-
-/** Volatile memory pool
- *
- * 'Volatile' APR memory pool which normally only clears memory,
- * and does not destroy the pool (the same pool is reused) for
- * greater efficiency. However, as a safe guard the apr pool
- * is destructed every FULL_VOLATILE_APR_POOL uses to allow
- * the system memory to be allocated more efficiently and not
- * get scattered through RAM.
- */
-class LL_COMMON_API LLVolatileAPRPool : protected LLAPRPool
-{
-public:
-	LLVolatileAPRPool(void) : mNumActiveRef(0), mNumTotalRef(0) { }
-
-	void clearVolatileAPRPool(void);
-
-	bool isOld(void) const { return mNumTotalRef > FULL_VOLATILE_APR_POOL; }
-	bool isUnused() const { return mNumActiveRef == 0; }
-
-private:
-	friend class LLScopedVolatileAPRPool;
-	friend class LLAPRFile;
-	apr_pool_t* getVolatileAPRPool(void)	// The use of apr_pool_t is OK here.
-	{
-		if (!mPool) create();
-		++mNumActiveRef;
-		++mNumTotalRef;
-		return LLAPRPool::operator()();
-	}
-
-private:
-	S32 mNumActiveRef;	// Number of active uses of the pool.
-	S32 mNumTotalRef;	// Number of total uses of the pool since last creation.
-
-	// Maximum number of references to LLVolatileAPRPool until the pool is recreated.
-	static S32 const FULL_VOLATILE_APR_POOL = 1024;
-};
-
-#endif // LL_LLAPRPOOL_H
diff --git a/indra/llcommon/llassettype.cpp b/indra/llcommon/llassettype.cpp
index 145dddd5434c418a2304f10769a049eb8c2f7d96..5e566d6c7cf810e227ee0a1da6e378c4afb2f4a0 100644
--- a/indra/llcommon/llassettype.cpp
+++ b/indra/llcommon/llassettype.cpp
@@ -93,7 +93,8 @@ LLAssetDictionary::LLAssetDictionary()
 
 	addEntry(LLAssetType::AT_LINK, 				new AssetEntry("LINK",				"link",		"sym link",			false,		false,		true));
 	addEntry(LLAssetType::AT_LINK_FOLDER, 		new AssetEntry("FOLDER_LINK",		"link_f", 	"sym folder link",	false,		false,		true));
-	addEntry(LLAssetType::AT_MESH,              new AssetEntry("MESH",              "mesh",     "mesh",             false, false, false));
+	addEntry(LLAssetType::AT_MESH,              new AssetEntry("MESH",              "mesh",     "mesh",             false,      false,      false));
+	addEntry(LLAssetType::AT_WIDGET,            new AssetEntry("WIDGET",            "widget",   "widget",           false,      false,      false));
 	addEntry(LLAssetType::AT_NONE, 				new AssetEntry("NONE",				"-1",		NULL,		  		FALSE,		FALSE,		FALSE));
 
 };
diff --git a/indra/llcommon/llassettype.h b/indra/llcommon/llassettype.h
index 74ccd003244566be98a76ed0e78a309953314a1c..d538accbf7289472d26965147c5879351498194a 100644
--- a/indra/llcommon/llassettype.h
+++ b/indra/llcommon/llassettype.h
@@ -108,9 +108,13 @@ class LL_COMMON_API LLAssetType
 
 		AT_LINK_FOLDER = 25,
 			// Inventory folder link
+		
+		AT_WIDGET = 40,
+			// UI Widget: this is *not* an inventory asset type, only a viewer side asset (e.g. button, other ui items...)
+		
 		AT_MESH = 49,
-		    // Mesh data in our proprietary SLM format
-
+			// Mesh data in our proprietary SLM format
+		
 		AT_COUNT = 50,
 
 			// +*********************************************************+
diff --git a/indra/llcommon/llcommon.cpp b/indra/llcommon/llcommon.cpp
index b8a739485250f74f4f70285bc12a7f779cc0d1df..8be9e4f4de28ef135295efef826e5eb4608e1373 100644
--- a/indra/llcommon/llcommon.cpp
+++ b/indra/llcommon/llcommon.cpp
@@ -30,10 +30,18 @@
 #include "llmemory.h"
 #include "llthread.h"
 
+//static
+BOOL LLCommon::sAprInitialized = FALSE;
+
 //static
 void LLCommon::initClass()
 {
 	LLMemory::initClass();
+	if (!sAprInitialized)
+	{
+		ll_init_apr();
+		sAprInitialized = TRUE;
+	}
 	LLTimer::initClass();
 	LLThreadSafeRefCount::initThreadSafeRefCount();
 // 	LLWorkerThread::initClass();
@@ -47,5 +55,10 @@ void LLCommon::cleanupClass()
 // 	LLWorkerThread::cleanupClass();
 	LLThreadSafeRefCount::cleanupThreadSafeRefCount();
 	LLTimer::cleanupClass();
+	if (sAprInitialized)
+	{
+		ll_cleanup_apr();
+		sAprInitialized = FALSE;
+	}
 	LLMemory::cleanupClass();
 }
diff --git a/indra/llcommon/llcommon.h b/indra/llcommon/llcommon.h
index 171590f3d807ba667457c4533e6c8e6037780f70..ca9cad5d05ed9d8a744cd68a9c59c9d000bc2e6b 100644
--- a/indra/llcommon/llcommon.h
+++ b/indra/llcommon/llcommon.h
@@ -35,6 +35,8 @@ class LL_COMMON_API LLCommon
 public:
 	static void initClass();
 	static void cleanupClass();
+private:
+	static BOOL sAprInitialized;
 };
 
 #endif
diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp
index bda9d7c177467ca8d4e5fd0a9676d0929740c7b6..e4381dbbd64de5372d288cff8114a928b5349747 100644
--- a/indra/llcommon/llerror.cpp
+++ b/indra/llcommon/llerror.cpp
@@ -617,6 +617,12 @@ namespace LLError
 		s.defaultLevel = level;
 	}
 
+	ELevel getDefaultLevel()
+	{
+		Settings& s = Settings::get();
+		return s.defaultLevel;
+	}
+
 	void setFunctionLevel(const std::string& function_name, ELevel level)
 	{
 		Globals& g = Globals::get();
@@ -866,9 +872,6 @@ You get:
 	
 */
 
-extern apr_thread_mutex_t* gLogMutexp;
-extern apr_thread_mutex_t* gCallStacksLogMutexp;
-
 namespace {
 	bool checkLevelMap(const LevelMap& map, const std::string& key,
 						LLError::ELevel& level)
diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h
index 369f2a7a97a7d8e2b976f9d9583a02e072519b43..b3e604f8e83f177c6a2285c524fea201b7e30bbb 100644
--- a/indra/llcommon/llerror.h
+++ b/indra/llcommon/llerror.h
@@ -296,4 +296,5 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG;
 		Such computation is done iff the message will be logged.
 	*/
 
+
 #endif // LL_LLERROR_H
diff --git a/indra/llcommon/llerrorcontrol.h b/indra/llcommon/llerrorcontrol.h
index fb75d45e2c98779b93506e4eb8d01f18e3f948c3..ed9de002f5662418b62346bf321e52f454725b79 100644
--- a/indra/llcommon/llerrorcontrol.h
+++ b/indra/llcommon/llerrorcontrol.h
@@ -75,6 +75,7 @@ namespace LLError
 	
 	LL_COMMON_API void setPrintLocation(bool);
 	LL_COMMON_API void setDefaultLevel(LLError::ELevel);
+	LL_COMMON_API ELevel getDefaultLevel();
 	LL_COMMON_API void setFunctionLevel(const std::string& function_name, LLError::ELevel);
 	LL_COMMON_API void setClassLevel(const std::string& class_name, LLError::ELevel);
 	LL_COMMON_API void setFileLevel(const std::string& file_name, LLError::ELevel);
diff --git a/indra/llcommon/lleventapi.cpp b/indra/llcommon/lleventapi.cpp
index 4270c8b511e6f652d96b4a0928cd7398cbfdded9..ff5459c1eb843c4476979aeeedd420a5080ee7cd 100644
--- a/indra/llcommon/lleventapi.cpp
+++ b/indra/llcommon/lleventapi.cpp
@@ -34,6 +34,7 @@
 // std headers
 // external library headers
 // other Linden headers
+#include "llerror.h"
 
 LLEventAPI::LLEventAPI(const std::string& name, const std::string& desc, const std::string& field):
     lbase(name, field),
@@ -45,3 +46,32 @@ LLEventAPI::LLEventAPI(const std::string& name, const std::string& desc, const s
 LLEventAPI::~LLEventAPI()
 {
 }
+
+LLEventAPI::Response::Response(const LLSD& seed, const LLSD& request, const LLSD::String& replyKey):
+    mResp(seed),
+    mReq(request),
+    mKey(replyKey)
+{}
+
+LLEventAPI::Response::~Response()
+{
+    // When you instantiate a stack Response object, if the original
+    // request requested a reply, send it when we leave this block, no
+    // matter how.
+    sendReply(mResp, mReq, mKey);
+}
+
+void LLEventAPI::Response::warn(const std::string& warning)
+{
+    LL_WARNS("LLEventAPI::Response") << warning << LL_ENDL;
+    mResp["warnings"].append(warning);
+}
+
+void LLEventAPI::Response::error(const std::string& error)
+{
+    // Use LL_WARNS rather than LL_ERROR: we don't want the viewer to shut
+    // down altogether.
+    LL_WARNS("LLEventAPI::Response") << error << LL_ENDL;
+
+    mResp["error"] = error;
+}
diff --git a/indra/llcommon/lleventapi.h b/indra/llcommon/lleventapi.h
index d75d521e8ee9e6cf9950d8b63c5f7a4eecaf02f0..1a37d780b63cc8ec95ec3642776dd2a16b295ec4 100644
--- a/indra/llcommon/lleventapi.h
+++ b/indra/llcommon/lleventapi.h
@@ -76,6 +76,89 @@ class LL_COMMON_API LLEventAPI: public LLDispatchListener,
         LLEventDispatcher::add(name, desc, callable, required);
     }
 
+    /**
+     * Instantiate a Response object in any LLEventAPI subclass method that
+     * wants to guarantee a reply (if requested) will be sent on exit from the
+     * method. The reply will be sent if request.has(@a replyKey), default
+     * "reply". If specified, the value of request[replyKey] is the name of
+     * the LLEventPump on which to send the reply. Conventionally you might
+     * code something like:
+     *
+     * @code
+     * void MyEventAPI::someMethod(const LLSD& request)
+     * {
+     *     // Send a reply event as long as request.has("reply")
+     *     Response response(LLSD(), request);
+     *     // ...
+     *     // will be sent in reply event
+     *     response["somekey"] = some_data;
+     * }
+     * @endcode
+     */
+    class LL_COMMON_API Response
+    {
+    public:
+        /**
+         * Instantiating a Response object in an LLEventAPI subclass method
+         * ensures that, if desired, a reply event will be sent.
+         *
+         * @a seed is the initial reply LLSD that will be further decorated before
+         * being sent as the reply
+         *
+         * @a request is the incoming request LLSD; we particularly care about
+         * [replyKey] and ["reqid"]
+         *
+         * @a replyKey [default "reply"] is the string name of the LLEventPump
+         * on which the caller wants a reply. If <tt>(!
+         * request.has(replyKey))</tt>, no reply will be sent.
+         */
+        Response(const LLSD& seed, const LLSD& request, const LLSD::String& replyKey="reply");
+        ~Response();
+
+        /**
+         * @code
+         * if (some condition)
+         * {
+         *     response.warn("warnings are logged and collected in [\"warnings\"]");
+         * }
+         * @endcode
+         */
+        void warn(const std::string& warning);
+        /**
+         * @code
+         * if (some condition isn't met)
+         * {
+         *     // In a function returning void, you can validly 'return
+         *     // expression' if the expression is itself of type void. But
+         *     // returning is up to you; response.error() has no effect on
+         *     // flow of control.
+         *     return response.error("error message, logged and also sent as [\"error\"]");
+         * }
+         * @endcode
+         */
+        void error(const std::string& error);
+
+        /**
+         * set other keys...
+         *
+         * @code
+         * // set any attributes you want to be sent in the reply
+         * response["info"] = some_value;
+         * // ...
+         * response["ok"] = went_well;
+         * @endcode
+         */
+        LLSD& operator[](const LLSD::String& key) { return mResp[key]; }
+		
+		 /**
+		 * set the response to the given data
+		 */
+		void setResponse(LLSD const & response){ mResp = response; }
+
+        LLSD mResp, mReq;
+        LLSD::String mKey;
+    };
+
 private:
     std::string mDesc;
 };
diff --git a/indra/llcommon/llevents.cpp b/indra/llcommon/llevents.cpp
index ff03506e841a8771913895f0a065934cd5f840ef..db1ea4792b32546971a14e2c0cd30b7eae50802c 100644
--- a/indra/llcommon/llevents.cpp
+++ b/indra/llcommon/llevents.cpp
@@ -591,6 +591,17 @@ void LLReqID::stamp(LLSD& response) const
 
 bool sendReply(const LLSD& reply, const LLSD& request, const std::string& replyKey)
 {
+    // If the original request has no value for replyKey, it's pointless to
+    // construct or send a reply event: on which LLEventPump should we send
+    // it? Allow that to be optional: if the caller wants to require replyKey,
+    // it can so specify when registering the operation method.
+    if (! request.has(replyKey))
+    {
+        return false;
+    }
+
+    // Here the request definitely contains replyKey; reasonable to proceed.
+
     // Copy 'reply' to modify it.
     LLSD newreply(reply);
     // Get the ["reqid"] element from request
diff --git a/indra/llcommon/llfixedbuffer.cpp b/indra/llcommon/llfixedbuffer.cpp
index 4b5cdbe28859dccd6c84d30e90f96133138b5696..d394f179fb52fd674854f724c9fd2721f00ec567 100644
--- a/indra/llcommon/llfixedbuffer.cpp
+++ b/indra/llcommon/llfixedbuffer.cpp
@@ -30,7 +30,8 @@
 
 LLFixedBuffer::LLFixedBuffer(const U32 max_lines)
 	: LLLineBuffer(),
-	  mMaxLines(max_lines)
+	  mMaxLines(max_lines),
+	  mMutex(NULL)
 {
 	mTimer.reset();
 }
diff --git a/indra/llcommon/llinstancetracker.h b/indra/llcommon/llinstancetracker.h
index 5a3990a8df58d8dcf4f40069af59f31cefc80452..34d841a4e01ddc58a383a1618f05185a4dfbdcd4 100644
--- a/indra/llcommon/llinstancetracker.h
+++ b/indra/llcommon/llinstancetracker.h
@@ -193,7 +193,12 @@ class LLInstanceTracker : public LLInstanceTrackerBase
 	}
 
 protected:
-	LLInstanceTracker(KEY key) { add_(key); }
+	LLInstanceTracker(KEY key) 
+	{ 
+		// make sure static data outlives all instances
+		getStatic();
+		add_(key); 
+	}
 	virtual ~LLInstanceTracker() 
 	{ 
 		// it's unsafe to delete instances of this type while all instances are being iterated over.
@@ -281,7 +286,8 @@ class LLInstanceTracker<T, T*> : public LLInstanceTrackerBase
 protected:
 	LLInstanceTracker()
 	{
-		// it's safe but unpredictable to create instances of this type while all instances are being iterated over.  I hate unpredictable.	 This assert will probably be turned on early in the next development cycle.
+		// make sure static data outlives all instances
+		getStatic();
 		getSet_().insert(static_cast<T*>(this));
 	}
 	virtual ~LLInstanceTracker()
diff --git a/indra/llcommon/llmemory.cpp b/indra/llcommon/llmemory.cpp
index 8c02ad82908c17618a6905f94a0c1dfedc6e1f01..3b9758f996a9f07e71b34f3e2f038782dc7d7554 100644
--- a/indra/llcommon/llmemory.cpp
+++ b/indra/llcommon/llmemory.cpp
@@ -159,39 +159,67 @@ void LLMemory::logMemoryInfo(BOOL update)
 	if(update)
 	{
 		updateMemoryInfo() ;
+		LLPrivateMemoryPoolManager::getInstance()->updateStatistics() ;
 	}
 
 	llinfos << "Current allocated physical memory(KB): " << sAllocatedMemInKB << llendl ;
 	llinfos << "Current allocated page size (KB): " << sAllocatedPageSizeInKB << llendl ;
 	llinfos << "Current availabe physical memory(KB): " << sAvailPhysicalMemInKB << llendl ;
 	llinfos << "Current max usable memory(KB): " << sMaxPhysicalMemInKB << llendl ;
+
+	llinfos << "--- private pool information -- " << llendl ;
+	llinfos << "Total reserved (KB): " << LLPrivateMemoryPoolManager::getInstance()->mTotalReservedSize / 1024 << llendl ;
+	llinfos << "Total allocated (KB): " << LLPrivateMemoryPoolManager::getInstance()->mTotalAllocatedSize / 1024 << llendl ;
 }
 
 //return 0: everything is normal;
 //return 1: the memory pool is low, but not in danger;
 //return -1: the memory pool is in danger, is about to crash.
 //static 
-S32 LLMemory::isMemoryPoolLow()
+bool LLMemory::isMemoryPoolLow()
 {
 	static const U32 LOW_MEMEOY_POOL_THRESHOLD_KB = 64 * 1024 ; //64 MB for emergency use
+	const static U32 MAX_SIZE_CHECKED_MEMORY_BLOCK = 64 * 1024 * 1024 ; //64 MB
+	static void* last_reserved_address = NULL ;
 
 	if(!sEnableMemoryFailurePrevention)
 	{
-		return 0 ; //no memory failure prevention.
+		return false ; //no memory failure prevention.
 	}
 
 	if(sAvailPhysicalMemInKB < (LOW_MEMEOY_POOL_THRESHOLD_KB >> 2)) //out of physical memory
 	{
-		return -1 ;
+		return true ;
 	}
 
 	if(sAllocatedPageSizeInKB + (LOW_MEMEOY_POOL_THRESHOLD_KB >> 2) > sMaxHeapSizeInKB) //out of virtual address space.
 	{
-		return -1 ;
+		return true ;
 	}
 
-	return (S32)(sAvailPhysicalMemInKB < LOW_MEMEOY_POOL_THRESHOLD_KB || 
+	bool is_low = (S32)(sAvailPhysicalMemInKB < LOW_MEMEOY_POOL_THRESHOLD_KB || 
 		sAllocatedPageSizeInKB + LOW_MEMEOY_POOL_THRESHOLD_KB > sMaxHeapSizeInKB) ;
+
+	//check the virtual address space fragmentation
+	if(!is_low)
+	{
+		if(!last_reserved_address)
+		{
+			last_reserved_address = LLMemory::tryToAlloc(last_reserved_address, MAX_SIZE_CHECKED_MEMORY_BLOCK) ;
+		}
+		else
+		{
+			last_reserved_address = LLMemory::tryToAlloc(last_reserved_address, MAX_SIZE_CHECKED_MEMORY_BLOCK) ;
+			if(!last_reserved_address) //failed, try once more
+			{
+				last_reserved_address = LLMemory::tryToAlloc(last_reserved_address, MAX_SIZE_CHECKED_MEMORY_BLOCK) ;
+			}
+		}
+
+		is_low = !last_reserved_address ; //allocation failed
+	}
+
+	return is_low ;
 }
 
 //static 
@@ -1289,18 +1317,16 @@ U16 LLPrivateMemoryPool::LLMemoryChunk::getPageLevel(U32 size)
 //--------------------------------------------------------------------
 const U32 CHUNK_SIZE = 4 << 20 ; //4 MB
 const U32 LARGE_CHUNK_SIZE = 4 * CHUNK_SIZE ; //16 MB
-LLPrivateMemoryPool::LLPrivateMemoryPool(S32 type) :
+LLPrivateMemoryPool::LLPrivateMemoryPool(S32 type, U32 max_pool_size) :
 	mMutexp(NULL),	
 	mReservedPoolSize(0),
 	mHashFactor(1),
-	mType(type)
+	mType(type),
+	mMaxPoolSize(max_pool_size)
 {
-	const U32 MAX_POOL_SIZE = 256 * 1024 * 1024 ; //256 MB
-
-	mMaxPoolSize = MAX_POOL_SIZE ;
 	if(type == STATIC_THREADED || type == VOLATILE_THREADED)
 	{
-		mMutexp = new LLMutex ;
+		mMutexp = new LLMutex(NULL) ;
 	}
 
 	for(S32 i = 0 ; i < SUPER_ALLOCATION ; i++)
@@ -1362,16 +1388,31 @@ char* LLPrivateMemoryPool::allocate(U32 size)
 				chunk = chunk->mNext ;
 			}
 		}
-
-		chunk = addChunk(chunk_idx) ;
-		if(chunk)
+		else
 		{
-			p = chunk->allocate(size) ;
+			chunk = addChunk(chunk_idx) ;
+			if(chunk)
+			{
+				p = chunk->allocate(size) ;
+			}
 		}
 	}
 
 	unlock() ;
 
+	if(!p) //to get memory from the private pool failed, try the heap directly
+	{
+		static bool to_log = true ;
+		
+		if(to_log)
+		{
+			llwarns << "The memory pool overflows, now using heap directly!" << llendl ;
+			to_log = false ;
+		}
+
+		return (char*)malloc(size) ;
+	}
+
 	return p ;
 }
 
@@ -1472,7 +1513,7 @@ void  LLPrivateMemoryPool::destroyPool()
 	unlock() ;
 }
 
-void  LLPrivateMemoryPool::checkSize(U32 asked_size)
+bool LLPrivateMemoryPool::checkSize(U32 asked_size)
 {
 	if(mReservedPoolSize + asked_size > mMaxPoolSize)
 	{
@@ -1480,8 +1521,12 @@ void  LLPrivateMemoryPool::checkSize(U32 asked_size)
 		llinfos << "Total reserved size: " << mReservedPoolSize + asked_size << llendl ;
 		llinfos << "Total_allocated Size: " << getTotalAllocatedSize() << llendl ;
 
-		llerrs << "The pool is overflowing..." << llendl ;
+		//llerrs << "The pool is overflowing..." << llendl ;
+
+		return false ;
 	}
+
+	return true ;
 }
 
 LLPrivateMemoryPool::LLMemoryChunk* LLPrivateMemoryPool::addChunk(S32 chunk_index)
@@ -1501,7 +1546,11 @@ LLPrivateMemoryPool::LLMemoryChunk* LLPrivateMemoryPool::addChunk(S32 chunk_inde
 			MAX_SLOT_SIZES[chunk_index], MIN_BLOCK_SIZES[chunk_index], MAX_BLOCK_SIZES[chunk_index]) ;
 	}
 
-	checkSize(preferred_size + overhead) ;
+	if(!checkSize(preferred_size + overhead))
+	{
+		return NULL ;
+	}
+
 	mReservedPoolSize += preferred_size + overhead ;
 
 	char* buffer = (char*)malloc(preferred_size + overhead) ;
@@ -1593,7 +1642,7 @@ LLPrivateMemoryPool::LLMemoryChunk* LLPrivateMemoryPool::findChunk(const char* a
 
 void LLPrivateMemoryPool::addToHashTable(LLMemoryChunk* chunk) 
 {
-	static const U16 HASH_FACTORS[] = {41, 83, 193, 317, 419, 523, 0xFFFF}; 
+	static const U16 HASH_FACTORS[] = {41, 83, 193, 317, 419, 523, 719, 997, 1523, 0xFFFF}; 
 	
 	U16 i ;
 	if(mChunkHashList.empty())
@@ -1773,8 +1822,10 @@ void LLPrivateMemoryPool::LLChunkHashElement::remove(LLPrivateMemoryPool::LLMemo
 //class LLPrivateMemoryPoolManager
 //--------------------------------------------------------------------
 LLPrivateMemoryPoolManager* LLPrivateMemoryPoolManager::sInstance = NULL ;
+BOOL LLPrivateMemoryPoolManager::sPrivatePoolEnabled = FALSE ;
+std::vector<LLPrivateMemoryPool*> LLPrivateMemoryPoolManager::sDanglingPoolList ;
 
-LLPrivateMemoryPoolManager::LLPrivateMemoryPoolManager(BOOL enabled) 
+LLPrivateMemoryPoolManager::LLPrivateMemoryPoolManager(BOOL enabled, U32 max_pool_size) 
 {
 	mPoolList.resize(LLPrivateMemoryPool::MAX_TYPES) ;
 
@@ -1783,7 +1834,10 @@ LLPrivateMemoryPoolManager::LLPrivateMemoryPoolManager(BOOL enabled)
 		mPoolList[i] = NULL ;
 	}
 
-	mPrivatePoolEnabled = enabled ;
+	sPrivatePoolEnabled = enabled ;
+
+	const U32 MAX_POOL_SIZE = 256 * 1024 * 1024 ; //256 MB
+	mMaxPrivatePoolSize = llmax(max_pool_size, MAX_POOL_SIZE) ;
 }
 
 LLPrivateMemoryPoolManager::~LLPrivateMemoryPoolManager() 
@@ -1797,7 +1851,7 @@ LLPrivateMemoryPoolManager::~LLPrivateMemoryPoolManager()
 		S32 k = 0 ;
 		for(mem_allocation_info_t::iterator iter = sMemAllocationTracker.begin() ; iter != sMemAllocationTracker.end() ; ++iter)
 		{
-			llinfos << k++ << ", " << iter->second << llendl ;
+			llinfos << k++ << ", " << (U32)iter->first << " : " << iter->second << llendl ;
 		}
 		sMemAllocationTracker.clear() ;
 	}
@@ -1817,7 +1871,17 @@ LLPrivateMemoryPoolManager::~LLPrivateMemoryPoolManager()
 	{
 		if(mPoolList[i])
 		{
-			delete mPoolList[i] ;
+			if(mPoolList[i]->isEmpty())
+			{
+				delete mPoolList[i] ;
+			}
+			else
+			{
+				//can not delete this pool because it has alloacted memory to be freed.
+				//move it to the dangling list.
+				sDanglingPoolList.push_back(mPoolList[i]) ;				
+			}
+
 			mPoolList[i] = NULL ;
 		}
 	}
@@ -1826,11 +1890,11 @@ LLPrivateMemoryPoolManager::~LLPrivateMemoryPoolManager()
 }
 
 //static 
-void LLPrivateMemoryPoolManager::initClass(BOOL enabled) 
+void LLPrivateMemoryPoolManager::initClass(BOOL enabled, U32 max_pool_size) 
 {
 	llassert_always(!sInstance) ;
 
-	sInstance = new LLPrivateMemoryPoolManager(enabled) ;
+	sInstance = new LLPrivateMemoryPoolManager(enabled, max_pool_size) ;
 }
 
 //static 
@@ -1855,14 +1919,14 @@ void LLPrivateMemoryPoolManager::destroyClass()
 
 LLPrivateMemoryPool* LLPrivateMemoryPoolManager::newPool(S32 type) 
 {
-	if(!mPrivatePoolEnabled)
+	if(!sPrivatePoolEnabled)
 	{
 		return NULL ;
 	}
 
 	if(!mPoolList[type])
 	{
-		mPoolList[type] = new LLPrivateMemoryPool(type) ;
+		mPoolList[type] = new LLPrivateMemoryPool(type, mMaxPrivatePoolSize) ;
 	}
 
 	return mPoolList[type] ;
@@ -1953,7 +2017,38 @@ void  LLPrivateMemoryPoolManager::freeMem(LLPrivateMemoryPool* poolp, void* addr
 	}
 	else
 	{
-		free(addr) ;
+		if(!sPrivatePoolEnabled)
+		{
+			free(addr) ; //private pool is disabled.
+		}
+		else if(!sInstance) //the private memory manager is destroyed, try the dangling list
+		{
+			for(S32 i = 0 ; i < sDanglingPoolList.size(); i++)
+			{
+				if(sDanglingPoolList[i]->findChunk((char*)addr))
+				{
+					sDanglingPoolList[i]->freeMem(addr) ;
+					if(sDanglingPoolList[i]->isEmpty())
+					{
+						delete sDanglingPoolList[i] ;
+						
+						if(i < sDanglingPoolList.size() - 1)
+						{
+							sDanglingPoolList[i] = sDanglingPoolList[sDanglingPoolList.size() - 1] ;
+						}
+						sDanglingPoolList.pop_back() ;
+					}
+
+					addr = NULL ;
+					break ;
+				}
+			}		
+			llassert_always(!addr) ; //addr should be release before hitting here!
+		}
+		else
+		{
+			llerrs << "private pool is used before initialized.!" << llendl ;
+		}
 	}	
 }
 
diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h
index db753f0d8ba19c239decb6024f983f60d491b6d5..bbbdaa6497fc951d41cb3b2596f0258d5ad8a9df 100644
--- a/indra/llcommon/llmemory.h
+++ b/indra/llcommon/llmemory.h
@@ -122,7 +122,7 @@ class LL_COMMON_API LLMemory
 	static void initMaxHeapSizeGB(F32 max_heap_size_gb, BOOL prevent_heap_failure);
 	static void updateMemoryInfo() ;
 	static void logMemoryInfo(BOOL update = FALSE);
-	static S32  isMemoryPoolLow();
+	static bool isMemoryPoolLow();
 
 	static U32 getAvailableMemKB() ;
 	static U32 getMaxMemKB() ;
@@ -303,7 +303,7 @@ class LL_COMMON_API LLPrivateMemoryPool
 	} ;
 
 private:
-	LLPrivateMemoryPool(S32 type) ;
+	LLPrivateMemoryPool(S32 type, U32 max_pool_size) ;
 	~LLPrivateMemoryPool() ;
 
 	char *allocate(U32 size) ;
@@ -320,7 +320,7 @@ class LL_COMMON_API LLPrivateMemoryPool
 	void unlock() ;	
 	S32 getChunkIndex(U32 size) ;
 	LLMemoryChunk*  addChunk(S32 chunk_index) ;
-	void checkSize(U32 asked_size) ;
+	bool checkSize(U32 asked_size) ;
 	void removeChunk(LLMemoryChunk* chunk) ;
 	U16  findHashKey(const char* addr);
 	void addToHashTable(LLMemoryChunk* chunk) ;
@@ -383,22 +383,24 @@ class LL_COMMON_API LLPrivateMemoryPool
 class LL_COMMON_API LLPrivateMemoryPoolManager
 {
 private:
-	LLPrivateMemoryPoolManager(BOOL enabled) ;
+	LLPrivateMemoryPoolManager(BOOL enabled, U32 max_pool_size) ;
 	~LLPrivateMemoryPoolManager() ;
 
 public:	
 	static LLPrivateMemoryPoolManager* getInstance() ;
-	static void initClass(BOOL enabled) ;
+	static void initClass(BOOL enabled, U32 pool_size) ;
 	static void destroyClass() ;
 
 	LLPrivateMemoryPool* newPool(S32 type) ;
 	void deletePool(LLPrivateMemoryPool* pool) ;
 
-private:
-	static LLPrivateMemoryPoolManager* sInstance ;
-	std::vector<LLPrivateMemoryPool*> mPoolList ;
-	BOOL mPrivatePoolEnabled;
+private:	
+	std::vector<LLPrivateMemoryPool*> mPoolList ;	
+	U32  mMaxPrivatePoolSize;
 
+	static LLPrivateMemoryPoolManager* sInstance ;
+	static BOOL sPrivatePoolEnabled;
+	static std::vector<LLPrivateMemoryPool*> sDanglingPoolList ;
 public:
 	//debug and statistics info.
 	void updateStatistics() ;
diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h
index 17a428753851a7d23a71de9496d018879321419d..31d5f3d2c7e8c06fe01009c58b788c95eb98e667 100644
--- a/indra/llcommon/llpreprocessor.h
+++ b/indra/llcommon/llpreprocessor.h
@@ -151,6 +151,7 @@
 
 #pragma warning (disable : 4251) // member needs to have dll-interface to be used by clients of class
 #pragma warning (disable : 4275) // non dll-interface class used as base for dll-interface class
+#pragma warning (disable : 4018) // '<' : signed/unsigned mismatch	
 #endif	//	LL_MSVC
 
 #if LL_WINDOWS
diff --git a/indra/llcommon/llqueuedthread.cpp b/indra/llcommon/llqueuedthread.cpp
index efd9c4b68f89dab72037cbec4d72d0524c511ec6..1738c16dea4be7ef1ac72c80a0f4a01e9b3fdf48 100644
--- a/indra/llcommon/llqueuedthread.cpp
+++ b/indra/llcommon/llqueuedthread.cpp
@@ -32,7 +32,7 @@
 //============================================================================
 
 // MAIN THREAD
-LLQueuedThread::LLQueuedThread(const std::string& name, bool threaded) :
+LLQueuedThread::LLQueuedThread(const std::string& name, bool threaded, bool should_pause) :
 	LLThread(name),
 	mThreaded(threaded),
 	mIdleThread(TRUE),
@@ -41,6 +41,11 @@ LLQueuedThread::LLQueuedThread(const std::string& name, bool threaded) :
 {
 	if (mThreaded)
 	{
+		if(should_pause)
+		{
+			pause() ; //call this before start the thread.
+		}
+
 		start();
 	}
 }
@@ -104,7 +109,7 @@ void LLQueuedThread::shutdown()
 
 // MAIN THREAD
 // virtual
-S32 LLQueuedThread::update(U32 max_time_ms)
+S32 LLQueuedThread::update(F32 max_time_ms)
 {
 	if (!mStarted)
 	{
@@ -117,7 +122,7 @@ S32 LLQueuedThread::update(U32 max_time_ms)
 	return updateQueue(max_time_ms);
 }
 
-S32 LLQueuedThread::updateQueue(U32 max_time_ms)
+S32 LLQueuedThread::updateQueue(F32 max_time_ms)
 {
 	F64 max_time = (F64)max_time_ms * .001;
 	LLTimer timer;
diff --git a/indra/llcommon/llqueuedthread.h b/indra/llcommon/llqueuedthread.h
index a53b22f6fc2889622682d9cb446a3a5eabff7d89..d3704b0fe22ad4e43d509e99901ebb6b215951aa 100644
--- a/indra/llcommon/llqueuedthread.h
+++ b/indra/llcommon/llqueuedthread.h
@@ -149,7 +149,7 @@ class LL_COMMON_API LLQueuedThread : public LLThread
 	static handle_t nullHandle() { return handle_t(0); }
 	
 public:
-	LLQueuedThread(const std::string& name, bool threaded = true);
+	LLQueuedThread(const std::string& name, bool threaded = true, bool should_pause = false);
 	virtual ~LLQueuedThread();	
 	virtual void shutdown();
 	
@@ -173,8 +173,8 @@ class LL_COMMON_API LLQueuedThread : public LLThread
 public:
 	bool waitForResult(handle_t handle, bool auto_complete = true);
 
-	virtual S32 update(U32 max_time_ms);
-	S32 updateQueue(U32 max_time_ms);
+	virtual S32 update(F32 max_time_ms);
+	S32 updateQueue(F32 max_time_ms);
 	
 	void waitOnPending();
 	void printQueueStats();
diff --git a/indra/llcommon/llscopedvolatileaprpool.h b/indra/llcommon/llscopedvolatileaprpool.h
deleted file mode 100644
index dbaf4edcad96d1591b2ca3cd8eee13bb360a9628..0000000000000000000000000000000000000000
--- a/indra/llcommon/llscopedvolatileaprpool.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @file llscopedvolatileaprpool.h
- * @brief Implementation of LLScopedVolatileAPRPool
- *
- * $LicenseInfo:firstyear=2010&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$
- */
-
-#ifndef LL_LLSCOPEDVOLATILEAPRPOOL_H
-#define LL_LLSCOPEDVOLATILEAPRPOOL_H
-
-#include "llthread.h"
-
-/** Scoped volatile memory pool.
- *
- * As the LLVolatileAPRPool should never keep allocations very
- * long, its most common use is for allocations with a lifetime
- * equal to it's scope.
- *
- * This is a convenience class that makes just a little easier to type.
- */
-class LL_COMMON_API LLScopedVolatileAPRPool
-{
-private:
-	LLVolatileAPRPool& mPool;
-	apr_pool_t* mScopedAPRpool;		// The use of apr_pool_t is OK here.
-public:
-	LLScopedVolatileAPRPool() : mPool(LLThreadLocalData::tldata().mVolatileAPRPool), mScopedAPRpool(mPool.getVolatileAPRPool()) { }
-	~LLScopedVolatileAPRPool() { mPool.clearVolatileAPRPool(); }
-	//! @attention Only use this to pass the underlaying pointer to a libapr-1 function that requires it.
-	operator apr_pool_t*() const { return mScopedAPRpool; }		// The use of apr_pool_t is OK here.
-};
-
-#endif
diff --git a/indra/llcommon/llsd.cpp b/indra/llcommon/llsd.cpp
index 6ca073744511c0052ed43be9993a215017376936..e295e3c621d7788fc6ac1475fe57965e7da463a9 100644
--- a/indra/llcommon/llsd.cpp
+++ b/indra/llcommon/llsd.cpp
@@ -24,6 +24,9 @@
  * $/LicenseInfo$
  */
 
+// Must turn on conditional declarations in header file so definitions end up
+// with proper linkage.
+#define LLSD_DEBUG_INFO
 #include "linden_common.h"
 #include "llsd.h"
 
@@ -31,6 +34,7 @@
 #include "../llmath/llmath.h"
 #include "llformat.h"
 #include "llsdserialize.h"
+#include "stringize.h"
 
 #ifndef LL_RELEASE_FOR_DOWNLOAD
 #define NAME_UNNAMED_NAMESPACE
@@ -50,6 +54,18 @@ namespace
 using namespace LLSDUnnamedNamespace;
 #endif
 
+namespace llsd
+{
+
+// statics
+S32	sLLSDAllocationCount = 0;
+S32 sLLSDNetObjects = 0;
+
+} // namespace llsd
+
+#define	ALLOC_LLSD_OBJECT			{ llsd::sLLSDNetObjects++;	llsd::sLLSDAllocationCount++;	}
+#define	FREE_LLSD_OBJECT			{ llsd::sLLSDNetObjects--;									}
+
 class LLSD::Impl
 	/**< This class is the abstract base class of the implementation of LLSD
 		 It provides the reference counting implementation, and the default
@@ -58,13 +74,10 @@ class LLSD::Impl
 		
 	*/
 {
-private:
-	U32 mUseCount;
-	
 protected:
 	Impl();
 
-	enum StaticAllocationMarker { STATIC };
+	enum StaticAllocationMarker { STATIC_USAGE_COUNT = 0xFFFFFFFF };
 	Impl(StaticAllocationMarker);
 		///< This constructor is used for static objects and causes the
 		//   suppresses adjusting the debugging counters when they are
@@ -72,8 +85,10 @@ class LLSD::Impl
 		
 	virtual ~Impl();
 	
-	bool shared() const							{ return mUseCount > 1; }
+	bool shared() const							{ return (mUseCount > 1) && (mUseCount != STATIC_USAGE_COUNT); }
 	
+	U32 mUseCount;
+
 public:
 	static void reset(Impl*& var, Impl* impl);
 		///< safely set var to refer to the new impl (possibly shared)
@@ -128,6 +143,18 @@ class LLSD::Impl
 	virtual LLSD::array_const_iterator beginArray() const { return endArray(); }
 	virtual LLSD::array_const_iterator endArray() const { static const std::vector<LLSD> empty; return empty.end(); }
 
+	virtual void dumpStats() const;
+	virtual void calcStats(S32 type_counts[], S32 share_counts[]) const;
+	// Container subclasses contain LLSD objects, rather than directly
+	// containing Impl objects. This helper forwards through LLSD.
+	void calcStats(const LLSD& llsd, S32 type_counts[], S32 share_counts[]) const
+	{
+		safe(llsd.impl).calcStats(type_counts, share_counts);
+	}
+
+	static const Impl& getImpl(const LLSD& llsd)	{ return safe(llsd.impl); }
+	static Impl& getImpl(LLSD& llsd)				{ return safe(llsd.impl); }
+
 	static const LLSD& undef();
 	
 	static U32 sAllocationCount;
@@ -360,6 +387,9 @@ namespace
 		LLSD::map_iterator endMap() { return mData.end(); }
 		virtual LLSD::map_const_iterator beginMap() const { return mData.begin(); }
 		virtual LLSD::map_const_iterator endMap() const { return mData.end(); }
+
+		virtual void dumpStats() const;
+		virtual void calcStats(S32 type_counts[], S32 share_counts[]) const;
 	};
 	
 	ImplMap& ImplMap::makeMap(LLSD::Impl*& var)
@@ -414,6 +444,34 @@ namespace
 		return i->second;
 	}
 
+	void ImplMap::dumpStats() const
+	{
+		std::cout << "Map size: " << mData.size() << std::endl;
+
+		std::cout << "LLSD Net Objects: " << llsd::sLLSDNetObjects << std::endl;
+		std::cout << "LLSD allocations: " << llsd::sLLSDAllocationCount << std::endl;
+
+		std::cout << "LLSD::Impl Net Objects: " << sOutstandingCount << std::endl;
+		std::cout << "LLSD::Impl allocations: " << sAllocationCount << std::endl;
+
+		Impl::dumpStats();
+	}
+
+	void ImplMap::calcStats(S32 type_counts[], S32 share_counts[]) const
+	{
+		LLSD::map_const_iterator iter = beginMap();
+		while (iter != endMap())
+		{
+			//std::cout << "  " << (*iter).first << ": " << (*iter).second << std::endl;
+			Impl::calcStats((*iter).second, type_counts, share_counts);
+			iter++;
+		}
+
+		// Add in the values for this map
+		Impl::calcStats(type_counts, share_counts);
+	}
+
+
 	class ImplArray : public LLSD::Impl
 	{
 	private:
@@ -449,6 +507,8 @@ namespace
 		LLSD::array_iterator endArray() { return mData.end(); }
 		virtual LLSD::array_const_iterator beginArray() const { return mData.begin(); }
 		virtual LLSD::array_const_iterator endArray() const { return mData.end(); }
+
+		virtual void calcStats(S32 type_counts[], S32 share_counts[]) const;
 	};
 
 	ImplArray& ImplArray::makeArray(Impl*& var)
@@ -490,12 +550,13 @@ namespace
 	
 	void ImplArray::insert(LLSD::Integer i, const LLSD& v)
 	{
-		if (i < 0) {
+		if (i < 0) 
+		{
 			return;
 		}
 		DataVector::size_type index = i;
 		
-		if (index >= mData.size())
+		if (index >= mData.size())	// tbd - sanity check limit for index ?
 		{
 			mData.resize(index + 1);
 		}
@@ -543,6 +604,19 @@ namespace
 		
 		return mData[index];
 	}
+
+	void ImplArray::calcStats(S32 type_counts[], S32 share_counts[]) const
+	{
+		LLSD::array_const_iterator iter = beginArray();
+		while (iter != endArray())
+		{	// Add values for all items held in the array
+			Impl::calcStats((*iter), type_counts, share_counts);
+			iter++;
+		}
+
+		// Add in the values for this array
+		Impl::calcStats(type_counts, share_counts);
+	}
 }
 
 LLSD::Impl::Impl()
@@ -564,8 +638,11 @@ LLSD::Impl::~Impl()
 
 void LLSD::Impl::reset(Impl*& var, Impl* impl)
 {
-	if (impl) ++impl->mUseCount;
-	if (var  &&  --var->mUseCount == 0)
+	if (impl && impl->mUseCount != STATIC_USAGE_COUNT) 
+	{
+		++impl->mUseCount;
+	}
+	if (var  &&  var->mUseCount != STATIC_USAGE_COUNT && --var->mUseCount == 0)
 	{
 		delete var;
 	}
@@ -574,13 +651,13 @@ void LLSD::Impl::reset(Impl*& var, Impl* impl)
 
 LLSD::Impl& LLSD::Impl::safe(Impl* impl)
 {
-	static Impl theUndefined(STATIC);
+	static Impl theUndefined(STATIC_USAGE_COUNT);
 	return impl ? *impl : theUndefined;
 }
 
 const LLSD::Impl& LLSD::Impl::safe(const Impl* impl)
 {
-	static Impl theUndefined(STATIC);
+	static Impl theUndefined(STATIC_USAGE_COUNT);
 	return impl ? *impl : theUndefined;
 }
 
@@ -656,6 +733,43 @@ const LLSD& LLSD::Impl::undef()
 	return immutableUndefined;
 }
 
+void LLSD::Impl::dumpStats() const
+{
+	S32 type_counts[LLSD::TypeLLSDNumTypes + 1];
+	memset(&type_counts, 0, sizeof(type_counts));
+
+	S32 share_counts[LLSD::TypeLLSDNumTypes + 1];
+	memset(&share_counts, 0, sizeof(share_counts));
+
+	// Add info from all the values this object has
+	calcStats(type_counts, share_counts);
+
+	S32 type_index = LLSD::TypeLLSDTypeBegin;
+	while (type_index != LLSD::TypeLLSDTypeEnd)
+	{
+		std::cout << LLSD::typeString((LLSD::Type)type_index) << " type "
+			<< type_counts[type_index] << " objects, "
+			<< share_counts[type_index] << " shared"
+			<< std::endl;
+		type_index++;
+	}
+}
+
+
+void LLSD::Impl::calcStats(S32 type_counts[], S32 share_counts[]) const
+{
+	S32 tp = S32(type());
+	if (0 <= tp && tp < LLSD::TypeLLSDNumTypes)
+	{
+		type_counts[tp]++;	
+		if (shared())
+		{
+			share_counts[tp]++;
+		}
+	}
+}
+
+
 U32 LLSD::Impl::sAllocationCount = 0;
 U32 LLSD::Impl::sOutstandingCount = 0;
 
@@ -681,10 +795,10 @@ namespace
 }
 
 
-LLSD::LLSD()							: impl(0)	{ }
-LLSD::~LLSD()							{ Impl::reset(impl, 0); }
+LLSD::LLSD() : impl(0)					{ ALLOC_LLSD_OBJECT; }
+LLSD::~LLSD()							{ FREE_LLSD_OBJECT; Impl::reset(impl, 0); }
 
-LLSD::LLSD(const LLSD& other)			: impl(0) { assign(other); }
+LLSD::LLSD(const LLSD& other) : impl(0) { ALLOC_LLSD_OBJECT;  assign(other); }
 void LLSD::assign(const LLSD& other)	{ Impl::assign(impl, other.impl); }
 
 
@@ -692,18 +806,18 @@ void LLSD::clear()						{ Impl::assignUndefined(impl); }
 
 LLSD::Type LLSD::type() const			{ return safe(impl).type(); }
 
-// Scaler Constructors
-LLSD::LLSD(Boolean v)					: impl(0) { assign(v); }
-LLSD::LLSD(Integer v)					: impl(0) { assign(v); }
-LLSD::LLSD(Real v)						: impl(0) { assign(v); }
-LLSD::LLSD(const UUID& v)				: impl(0) { assign(v); }
-LLSD::LLSD(const String& v)				: impl(0) { assign(v); }
-LLSD::LLSD(const Date& v)				: impl(0) { assign(v); }
-LLSD::LLSD(const URI& v)				: impl(0) { assign(v); }
-LLSD::LLSD(const Binary& v)				: impl(0) { assign(v); }
+// Scalar Constructors
+LLSD::LLSD(Boolean v) : impl(0)			{ ALLOC_LLSD_OBJECT;	assign(v); }
+LLSD::LLSD(Integer v) : impl(0)			{ ALLOC_LLSD_OBJECT;	assign(v); }
+LLSD::LLSD(Real v) : impl(0)			{ ALLOC_LLSD_OBJECT;	assign(v); }
+LLSD::LLSD(const UUID& v) : impl(0)		{ ALLOC_LLSD_OBJECT;	assign(v); }
+LLSD::LLSD(const String& v) : impl(0)	{ ALLOC_LLSD_OBJECT;	assign(v); }
+LLSD::LLSD(const Date& v) : impl(0)		{ ALLOC_LLSD_OBJECT;	assign(v); }
+LLSD::LLSD(const URI& v) : impl(0)		{ ALLOC_LLSD_OBJECT;	assign(v); }
+LLSD::LLSD(const Binary& v) : impl(0)	{ ALLOC_LLSD_OBJECT;	assign(v); }
 
 // Convenience Constructors
-LLSD::LLSD(F32 v)						: impl(0) { assign((Real)v); }
+LLSD::LLSD(F32 v) : impl(0)				{ ALLOC_LLSD_OBJECT;	assign((Real)v); }
 
 // Scalar Assignment
 void LLSD::assign(Boolean v)			{ safe(impl).assign(impl, v); }
@@ -726,7 +840,7 @@ LLSD::URI		LLSD::asURI() const		{ return safe(impl).asURI(); }
 LLSD::Binary	LLSD::asBinary() const	{ return safe(impl).asBinary(); }
 
 // const char * helpers
-LLSD::LLSD(const char* v)				: impl(0) { assign(v); }
+LLSD::LLSD(const char* v) : impl(0)		{ ALLOC_LLSD_OBJECT;	assign(v); }
 void LLSD::assign(const char* v)
 {
 	if(v) assign(std::string(v));
@@ -784,9 +898,6 @@ LLSD&		LLSD::operator[](Integer i)
 const LLSD& LLSD::operator[](Integer i) const
 										{ return safe(impl).ref(i); }
 
-U32 LLSD::allocationCount()				{ return Impl::sAllocationCount; }
-U32 LLSD::outstandingCount()			{ return Impl::sOutstandingCount; }
-
 static const char *llsd_dump(const LLSD &llsd, bool useXMLFormat)
 {
 	// sStorage is used to hold the string representation of the llsd last
@@ -801,15 +912,9 @@ static const char *llsd_dump(const LLSD &llsd, bool useXMLFormat)
 	{
 		std::ostringstream out;
 		if (useXMLFormat)
-		{
-			LLSDXMLStreamer xml_streamer(llsd);
-			out << xml_streamer;
-		}
+			out << LLSDXMLStreamer(llsd);
 		else
-		{
-			LLSDNotationStreamer notation_streamer(llsd);
-			out << notation_streamer;
-		}
+			out << LLSDNotationStreamer(llsd);
 		out_string = out.str();
 	}
 	int len = out_string.length();
@@ -840,3 +945,38 @@ LLSD::array_iterator		LLSD::beginArray()		{ return makeArray(impl).beginArray();
 LLSD::array_iterator		LLSD::endArray()		{ return makeArray(impl).endArray(); }
 LLSD::array_const_iterator	LLSD::beginArray() const{ return safe(impl).beginArray(); }
 LLSD::array_const_iterator	LLSD::endArray() const	{ return safe(impl).endArray(); }
+
+namespace llsd
+{
+
+U32 allocationCount()								{ return LLSD::Impl::sAllocationCount; }
+U32 outstandingCount()								{ return LLSD::Impl::sOutstandingCount; }
+
+// Diagnostic dump of contents in an LLSD object
+void dumpStats(const LLSD& llsd)					{ LLSD::Impl::getImpl(llsd).dumpStats(); }
+
+} // namespace llsd
+
+// static
+std::string		LLSD::typeString(Type type)
+{
+	static const char * sTypeNameArray[] = {
+		"Undefined",
+		"Boolean",
+		"Integer",
+		"Real",
+		"String",
+		"UUID",
+		"Date",
+		"URI",
+		"Binary",
+		"Map",
+		"Array"
+	};
+
+	if (0 <= type && type < LL_ARRAY_SIZE(sTypeNameArray))
+	{
+		return sTypeNameArray[type];
+	}
+	return STRINGIZE("** invalid type value " << type);
+}
diff --git a/indra/llcommon/llsd.h b/indra/llcommon/llsd.h
index 90d0f978730d61f165f2e3d429f972e71211a7b4..5eb69059ac6e5f41e4f76504f6d081419652766f 100644
--- a/indra/llcommon/llsd.h
+++ b/indra/llcommon/llsd.h
@@ -40,10 +40,10 @@
 /**
 	LLSD provides a flexible data system similar to the data facilities of
 	dynamic languages like Perl and Python.  It is created to support exchange
-	of structured data between loosly coupled systems.  (Here, "loosly coupled"
+	of structured data between loosely coupled systems.  (Here, "loosely coupled"
 	means not compiled together into the same module.)
 	
-	Data in such exchanges must be highly tollerant of changes on either side
+	Data in such exchanges must be highly tolerant of changes on either side
 	such as:
 			- recompilation
 			- implementation in a different langauge
@@ -51,19 +51,19 @@
 			- execution of older versions (with fewer parameters)
 
 	To this aim, the C++ API of LLSD strives to be very easy to use, and to
-	default to "the right thing" whereever possible.  It is extremely tollerant
+	default to "the right thing" wherever possible.  It is extremely tolerant
 	of errors and unexpected situations.
 	
-	The fundimental class is LLSD.  LLSD is a value holding object.  It holds
+	The fundamental class is LLSD.  LLSD is a value holding object.  It holds
 	one value that is either undefined, one of the scalar types, or a map or an
 	array.  LLSD objects have value semantics (copying them copies the value,
-	though it can be considered efficient, due to shareing.), and mutable.
+	though it can be considered efficient, due to sharing), and mutable.
 
 	Undefined is the singular value given to LLSD objects that are not
 	initialized with any data.  It is also used as the return value for
-	operations that return an LLSD,
+	operations that return an LLSD.
 	
-	The sclar data types are:
+	The scalar data types are:
 		- Boolean	- true or false
 		- Integer	- a 32 bit signed integer
 		- Real		- a 64 IEEE 754 floating point value
@@ -80,9 +80,73 @@
 	
 	An array is a sequence of zero or more LLSD values.
 	
+	Thread Safety
+
+	In general, these LLSD classes offer *less* safety than STL container
+	classes.  Implementations prior to this one were unsafe even when
+	completely unrelated LLSD trees were in two threads due to reference
+	sharing of special 'undefined' values that participated in the reference
+	counting mechanism.
+
+	The dereference-before-refcount and aggressive tree sharing also make
+	it impractical to share an LLSD across threads.  A strategy of passing
+	ownership or a copy to another thread is still difficult due to a lack
+	of a cloning interface but it can be done with some care.
+
+	One way of transferring ownership is as follows:
+
+		void method(const LLSD input) {
+		...
+		LLSD * xfer_tree = new LLSD();
+		{
+			// Top-level values
+			(* xfer_tree)['label'] = "Some text";
+			(* xfer_tree)['mode'] = APP_MODE_CONSTANT;
+
+			// There will be a second-level
+			LLSD subtree(LLSD::emptyMap());
+			(* xfer_tree)['subtree'] = subtree;
+
+			// Do *not* copy from LLSD objects via LLSD
+			// intermediaries.  Only use plain-old-data
+			// types as intermediaries to prevent reference
+			// sharing.
+			subtree['value1'] = input['value1'].asInteger();
+			subtree['value2'] = input['value2'].asString();
+
+			// Close scope and drop 'subtree's reference.
+			// Only xfer_tree has a reference to the second
+			// level data.
+		}
+		...
+		// Transfer the LLSD pointer to another thread.  Ownership
+		// transfers, this thread no longer has a reference to any
+		// part of the xfer_tree and there's nothing to free or
+		// release here.  Receiving thread does need to delete the
+		// pointer when it is done with the LLSD.  Transfer
+		// mechanism must perform correct data ordering operations
+		// as dictated by architecture.
+		other_thread.sendMessageAndPointer("Take This", xfer_tree);
+		xfer_tree = NULL;
+
+
+	Avoid this pattern which provides half of a race condition:
+	
+		void method(const LLSD input) {
+		...
+		LLSD xfer_tree(LLSD::emptyMap());
+		xfer_tree['label'] = "Some text";
+		xfer_tree['mode'] = APP_MODE_CONSTANT;
+		...
+		other_thread.sendMessageAndPointer("Take This", xfer_tree);
+
+	
 	@nosubgrouping
 */
 
+// Normally undefined, used for diagnostics
+//#define LLSD_DEBUG_INFO	1
+
 class LL_COMMON_API LLSD
 {
 public:
@@ -202,7 +266,7 @@ class LL_COMMON_API LLSD
 	//@}
 	
 	/** @name Character Pointer Helpers
-		These are helper routines to make working with char* the same as easy as
+		These are helper routines to make working with char* as easy as
 		working with strings.
 	 */
 	//@{
@@ -266,7 +330,7 @@ class LL_COMMON_API LLSD
 	/** @name Type Testing */
 	//@{
 		enum Type {
-			TypeUndefined,
+			TypeUndefined = 0,
 			TypeBoolean,
 			TypeInteger,
 			TypeReal,
@@ -276,7 +340,10 @@ class LL_COMMON_API LLSD
 			TypeURI,
 			TypeBinary,
 			TypeMap,
-			TypeArray
+			TypeArray,
+			TypeLLSDTypeEnd,
+			TypeLLSDTypeBegin = TypeUndefined,
+			TypeLLSDNumTypes = (TypeLLSDTypeEnd - TypeLLSDTypeBegin)
 		};
 		
 		Type type() const;
@@ -302,7 +369,7 @@ class LL_COMMON_API LLSD
 		If you get a linker error about these being missing, you have made
 		mistake in your code.  DO NOT IMPLEMENT THESE FUNCTIONS as a fix.
 		
-		All of thse problems stem from trying to support char* in LLSD or in
+		All of these problems stem from trying to support char* in LLSD or in
 		std::string.  There are too many automatic casts that will lead to
 		using an arbitrary pointer or scalar type to std::string.
 	 */
@@ -311,7 +378,7 @@ class LL_COMMON_API LLSD
 		void assign(const void*);		///< assign from arbitrary pointers
 		LLSD& operator=(const void*);	///< assign from arbitrary pointers
 		
-		bool has(Integer) const;		///< has only works for Maps
+		bool has(Integer) const;		///< has() only works for Maps
 	//@}
 	
 	/** @name Implementation */
@@ -320,13 +387,7 @@ class LL_COMMON_API LLSD
 		class Impl;
 private:
 		Impl* impl;
-	//@}
-	
-	/** @name Unit Testing Interface */
-	//@{
-public:
-		static U32 allocationCount();	///< how many Impls have been made
-		static U32 outstandingCount();	///< how many Impls are still alive
+		friend class LLSD::Impl;
 	//@}
 
 private:
@@ -338,6 +399,10 @@ class LL_COMMON_API LLSD
 		/// Returns Notation version of llsd -- only to be called from debugger
 		static const char *dump(const LLSD &llsd);
 	//@}
+
+public:
+
+	static std::string		typeString(Type type);		// Return human-readable type as a string
 };
 
 struct llsd_select_bool : public std::unary_function<LLSD, LLSD::Boolean>
@@ -385,9 +450,32 @@ struct llsd_select_string : public std::unary_function<LLSD, LLSD::String>
 
 LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLSD& llsd);
 
+namespace llsd
+{
+
+#ifdef LLSD_DEBUG_INFO
+/** @name Unit Testing Interface */
+//@{
+	LL_COMMON_API void dumpStats(const LLSD&);	///< Output information on object and usage
+
+	/// @warn THE FOLLOWING COUNTS WILL NOT BE ACCURATE IN A MULTI-THREADED
+	/// ENVIRONMENT.
+	///
+	/// These counts track LLSD::Impl (hidden) objects.
+	LL_COMMON_API U32 allocationCount();	///< how many Impls have been made
+	LL_COMMON_API U32 outstandingCount();	///< how many Impls are still alive
+
+	/// These counts track LLSD (public) objects.
+	LL_COMMON_API extern S32 sLLSDAllocationCount;	///< Number of LLSD objects ever created
+	LL_COMMON_API extern S32 sLLSDNetObjects;		///< Number of LLSD objects that exist
+#endif
+//@}
+
+} // namespace llsd
+
 /** QUESTIONS & TO DOS
-	- Would Binary be more convenient as usigned char* buffer semantics?
-	- Should Binary be convertable to/from String, and if so how?
+	- Would Binary be more convenient as unsigned char* buffer semantics?
+	- Should Binary be convertible to/from String, and if so how?
 		- as UTF8 encoded strings (making not like UUID<->String)
 		- as Base64 or Base96 encoded (making like UUID<->String)
 	- Conversions to std::string and LLUUID do not result in easy assignment
diff --git a/indra/llcommon/llsdserialize_xml.cpp b/indra/llcommon/llsdserialize_xml.cpp
index bf216d41bf152c523959e64335e8b4319aef23db..be9db539068a20fadf519c98fb447def08369553 100644
--- a/indra/llcommon/llsdserialize_xml.cpp
+++ b/indra/llcommon/llsdserialize_xml.cpp
@@ -354,7 +354,6 @@ static unsigned get_till_eol(std::istream& input, char *buf, unsigned bufsize)
 	return count;
 }
 
-LLFastTimer::DeclareTimer FTM_SD_PARSE_READ_STREAM("LLSD Read Stream");
 S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data)
 {
 	XML_Status status;
@@ -374,7 +373,7 @@ S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data)
 		{
 			break;
 		}
-		{ LLFastTimer _(FTM_SD_PARSE_READ_STREAM);
+		{
 		
 			count = get_till_eol(input, (char *)buffer, BUFFER_SIZE);
 			if (!count)
diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index d781687175eb4476b1997361fa925497e92a5b38..6073bcd0a6cc8713b0d2bdbe6be3635c1be57b6c 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -608,6 +608,7 @@ LLCPUInfo::LLCPUInfo()
 		out << " (" << mCPUMHz << " MHz)";
 	}
 	mCPUString = out.str();
+	LLStringUtil::trim(mCPUString);
 }
 
 bool LLCPUInfo::hasAltivec() const
@@ -1363,11 +1364,21 @@ BOOL gzip_file(const std::string& srcfile, const std::string& dstfile)
 	src = LLFile::fopen(srcfile, "rb");		/* Flawfinder: ignore */
 	if (! src) goto err;
 
-	do
+	while ((bytes = (S32)fread(buffer, sizeof(U8), COMPRESS_BUFFER_SIZE, src)) > 0)
 	{
-		bytes = (S32)fread(buffer, sizeof(U8), COMPRESS_BUFFER_SIZE,src);
-		gzwrite(dst, buffer, bytes);
-	} while(feof(src) == 0);
+		if (gzwrite(dst, buffer, bytes) <= 0)
+		{
+			llwarns << "gzwrite failed: " << gzerror(dst, NULL) << llendl;
+			goto err;
+		}
+	}
+
+	if (ferror(src))
+	{
+		llwarns << "Error reading " << srcfile << llendl;
+		goto err;
+	}
+
 	gzclose(dst);
 	dst = NULL;
 #if LL_WINDOWS
diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp
index bdde1b5c48fdb4ed345029920c80a5834b71dd50..a6ad6b125c1ad14cd1a9370f0713ed2159be655c 100644
--- a/indra/llcommon/llthread.cpp
+++ b/indra/llcommon/llthread.cpp
@@ -36,12 +36,6 @@
 #include <sched.h>
 #endif
 
-#if !LL_DARWIN
-U32 ll_thread_local local_thread_ID = 0;
-#endif 
-
-U32 LLThread::sIDIter = 0;
-
 //----------------------------------------------------------------------------
 // Usage:
 // void run_func(LLThread* thread)
@@ -62,6 +56,12 @@ U32 LLThread::sIDIter = 0;
 // 
 //----------------------------------------------------------------------------
 
+#if !LL_DARWIN
+U32 ll_thread_local sThreadID = 0;
+#endif 
+
+U32 LLThread::sIDIter = 0;
+
 LL_COMMON_API void assert_main_thread()
 {
 	static U32 s_thread_id = LLThread::currentID();
@@ -79,12 +79,9 @@ void *APR_THREAD_FUNC LLThread::staticRun(apr_thread_t *apr_threadp, void *datap
 	LLThread *threadp = (LLThread *)datap;
 
 #if !LL_DARWIN
-	local_thread_ID = threadp->mID;
+	sThreadID = threadp->mID;
 #endif
 
-	// Create a thread local data.
-	LLThreadLocalData::create(threadp);
-
 	// Run the user supplied function
 	threadp->run();
 
@@ -97,22 +94,40 @@ void *APR_THREAD_FUNC LLThread::staticRun(apr_thread_t *apr_threadp, void *datap
 }
 
 
-LLThread::LLThread(std::string const& name) :
-	mPaused(false),
+LLThread::LLThread(const std::string& name, apr_pool_t *poolp) :
+	mPaused(FALSE),
 	mName(name),
 	mAPRThreadp(NULL),
-	mStatus(STOPPED),
-	mThreadLocalData(NULL)
+	mStatus(STOPPED)
 {
-	mID = ++sIDIter; //flaw: assume this is called only in the main thread!
+	mID = ++sIDIter;
 
-	mRunCondition = new LLCondition;
+	// Thread creation probably CAN be paranoid about APR being initialized, if necessary
+	if (poolp)
+	{
+		mIsLocalPool = FALSE;
+		mAPRPoolp = poolp;
+	}
+	else
+	{
+		mIsLocalPool = TRUE;
+		apr_pool_create(&mAPRPoolp, NULL); // Create a subpool for this thread
+	}
+	mRunCondition = new LLCondition(mAPRPoolp);
+
+	mLocalAPRFilePoolp = NULL ;
 }
 
 
 LLThread::~LLThread()
 {
 	shutdown();
+
+	if(mLocalAPRFilePoolp)
+	{
+		delete mLocalAPRFilePoolp ;
+		mLocalAPRFilePoolp = NULL ;
+	}
 }
 
 void LLThread::shutdown()
@@ -149,7 +164,7 @@ void LLThread::shutdown()
 		if (!isStopped())
 		{
 			// This thread just wouldn't stop, even though we gave it time
-			//llwarns << "LLThread::shutdown() exiting thread before clean exit!" << llendl;
+			//llwarns << "LLThread::~LLThread() exiting thread before clean exit!" << llendl;
 			// Put a stake in its heart.
 			apr_thread_exit(mAPRThreadp, -1);
 			return;
@@ -159,8 +174,15 @@ void LLThread::shutdown()
 
 	delete mRunCondition;
 	mRunCondition = 0;
+	
+	if (mIsLocalPool && mAPRPoolp)
+	{
+		apr_pool_destroy(mAPRPoolp);
+		mAPRPoolp = 0;
+	}
 }
 
+
 void LLThread::start()
 {
 	llassert(isStopped());
@@ -169,7 +191,7 @@ void LLThread::start()
 	mStatus = RUNNING;
 
 	apr_status_t status =
-		apr_thread_create(&mAPRThreadp, NULL, staticRun, (void *)this, tldata().mRootPool());
+		apr_thread_create(&mAPRThreadp, NULL, staticRun, (void *)this, mAPRPoolp);
 	
 	if(status == APR_SUCCESS)
 	{	
@@ -194,7 +216,7 @@ void LLThread::pause()
 	if (!mPaused)
 	{
 		// this will cause the thread to stop execution as soon as checkPause() is called
-		mPaused = true;		// Does not need to be atomic since this is only set/unset from the main thread
+		mPaused = 1;		// Does not need to be atomic since this is only set/unset from the main thread
 	}	
 }
 
@@ -202,7 +224,7 @@ void LLThread::unpause()
 {
 	if (mPaused)
 	{
-		mPaused = false;
+		mPaused = 0;
 	}
 
 	wake(); // wake up the thread if necessary
@@ -279,76 +301,121 @@ void LLThread::wakeLocked()
 	}
 }
 
-#ifdef SHOW_ASSERT
-// This allows the use of llassert(is_main_thread()) to assure the current thread is the main thread.
-static apr_os_thread_t main_thread_id;
-LL_COMMON_API bool is_main_thread(void) { return apr_os_thread_equal(main_thread_id, apr_os_thread_current()); }
-#endif
+//============================================================================
 
-// The thread private handle to access the LLThreadLocalData instance.
-apr_threadkey_t* LLThreadLocalData::sThreadLocalDataKey;
+LLMutex::LLMutex(apr_pool_t *poolp) :
+	mAPRMutexp(NULL), mCount(0), mLockingThread(NO_THREAD)
+{
+	//if (poolp)
+	//{
+	//	mIsLocalPool = FALSE;
+	//	mAPRPoolp = poolp;
+	//}
+	//else
+	{
+		mIsLocalPool = TRUE;
+		apr_pool_create(&mAPRPoolp, NULL); // Create a subpool for this thread
+	}
+	apr_thread_mutex_create(&mAPRMutexp, APR_THREAD_MUTEX_UNNESTED, mAPRPoolp);
+}
 
-//static
-void LLThreadLocalData::init(void)
+
+LLMutex::~LLMutex()
 {
-	// Only do this once.
-	if (sThreadLocalDataKey)
+#if MUTEX_DEBUG
+	//bad assertion, the subclass LLSignal might be "locked", and that's OK
+	//llassert_always(!isLocked()); // better not be locked!
+#endif
+	apr_thread_mutex_destroy(mAPRMutexp);
+	mAPRMutexp = NULL;
+	if (mIsLocalPool)
 	{
-		return;
+		apr_pool_destroy(mAPRPoolp);
 	}
+}
 
-	apr_status_t status = apr_threadkey_private_create(&sThreadLocalDataKey, &LLThreadLocalData::destroy, LLAPRRootPool::get()());
-	ll_apr_assert_status(status);   // Or out of memory, or system-imposed limit on the
-									// total number of keys per process {PTHREAD_KEYS_MAX}
-									// has been exceeded.
 
-	// Create the thread-local data for the main thread (this function is called by the main thread).
-	LLThreadLocalData::create(NULL);
+void LLMutex::lock()
+{
+	if(isSelfLocked())
+	{ //redundant lock
+		mCount++;
+		return;
+	}
+	
+	apr_thread_mutex_lock(mAPRMutexp);
+	
+#if MUTEX_DEBUG
+	// Have to have the lock before we can access the debug info
+	U32 id = LLThread::currentID();
+	if (mIsLocked[id] != FALSE)
+		llerrs << "Already locked in Thread: " << id << llendl;
+	mIsLocked[id] = TRUE;
+#endif
 
-#ifdef SHOW_ASSERT
-	// This function is called by the main thread.
-	main_thread_id = apr_os_thread_current();
+#if LL_DARWIN
+	mLockingThread = LLThread::currentID();
+#else
+	mLockingThread = sThreadID;
 #endif
 }
 
-// This is called once for every thread when the thread is destructed.
-//static
-void LLThreadLocalData::destroy(void* thread_local_data)
+void LLMutex::unlock()
 {
-	delete static_cast<LLThreadLocalData*>(thread_local_data);
+	if (mCount > 0)
+	{ //not the root unlock
+		mCount--;
+		return;
+	}
+	
+#if MUTEX_DEBUG
+	// Access the debug info while we have the lock
+	U32 id = LLThread::currentID();
+	if (mIsLocked[id] != TRUE)
+		llerrs << "Not locked in Thread: " << id << llendl;	
+	mIsLocked[id] = FALSE;
+#endif
+
+	mLockingThread = NO_THREAD;
+	apr_thread_mutex_unlock(mAPRMutexp);
 }
 
-//static
-void LLThreadLocalData::create(LLThread* threadp)
+bool LLMutex::isLocked()
 {
-	LLThreadLocalData* new_tld = new LLThreadLocalData;
-	if (threadp)
+	apr_status_t status = apr_thread_mutex_trylock(mAPRMutexp);
+	if (APR_STATUS_IS_EBUSY(status))
 	{
-		threadp->mThreadLocalData = new_tld;
+		return true;
+	}
+	else
+	{
+		apr_thread_mutex_unlock(mAPRMutexp);
+		return false;
 	}
-	apr_status_t status = apr_threadkey_private_set(new_tld, sThreadLocalDataKey);
-	llassert_always(status == APR_SUCCESS);
 }
 
-//static
-LLThreadLocalData& LLThreadLocalData::tldata(void)
+bool LLMutex::isSelfLocked()
 {
-	if (!sThreadLocalDataKey)
-	{
-		LLThreadLocalData::init();
-	}
+#if LL_DARWIN
+	return mLockingThread == LLThread::currentID();
+#else
+	return mLockingThread == sThreadID;
+#endif
+}
 
-	void* data;
-	apr_status_t status = apr_threadkey_private_get(&data, sThreadLocalDataKey);
-	llassert_always(status == APR_SUCCESS);
-	return *static_cast<LLThreadLocalData*>(data);
+U32 LLMutex::lockingThread() const
+{
+	return mLockingThread;
 }
 
 //============================================================================
 
-LLCondition::LLCondition(LLAPRPool& parent) : LLMutex(parent)
+LLCondition::LLCondition(apr_pool_t *poolp) :
+	LLMutex(poolp)
 {
-	apr_thread_cond_create(&mAPRCondp, mPool());
+	// base class (LLMutex) has already ensured that mAPRPoolp is set up.
+
+	apr_thread_cond_create(&mAPRCondp, mAPRPoolp);
 }
 
 
@@ -361,6 +428,15 @@ LLCondition::~LLCondition()
 
 void LLCondition::wait()
 {
+	if (!isLocked())
+	{ //mAPRMutexp MUST be locked before calling apr_thread_cond_wait
+		apr_thread_mutex_lock(mAPRMutexp);
+#if MUTEX_DEBUG
+		// avoid asserts on destruction in non-release builds
+		U32 id = LLThread::currentID();
+		mIsLocked[id] = TRUE;
+#endif
+	}
 	apr_thread_cond_wait(mAPRCondp, mAPRMutexp);
 }
 
@@ -375,44 +451,6 @@ void LLCondition::broadcast()
 }
 
 //============================================================================
-LLMutexBase::LLMutexBase() :
-	mLockingThread(NO_THREAD),
-	mCount(0)
-{
-}
-
-void LLMutexBase::lock() 
-{ 
-#if LL_DARWIN
-	if (mLockingThread == LLThread::currentID())
-#else
-	if (mLockingThread == local_thread_ID)
-#endif
-	{ //redundant lock
-		mCount++;
-		return;
-	}
-
-	apr_thread_mutex_lock(mAPRMutexp); 
-
-#if LL_DARWIN
-	mLockingThread = LLThread::currentID();
-#else
-	mLockingThread = local_thread_ID;
-#endif
-}
-
-void LLMutexBase::unlock() 
-{ 
-	if (mCount > 0)
-	{ //not the root unlock
-		mCount--;
-		return;
-	}
-	mLockingThread = NO_THREAD;
-
-	apr_thread_mutex_unlock(mAPRMutexp); 
-}
 
 //----------------------------------------------------------------------------
 
@@ -424,7 +462,7 @@ void LLThreadSafeRefCount::initThreadSafeRefCount()
 {
 	if (!sMutex)
 	{
-		sMutex = new LLMutex;
+		sMutex = new LLMutex(0);
 	}
 }
 
diff --git a/indra/llcommon/llthread.h b/indra/llcommon/llthread.h
index b631b96252f0b6a1dea8db677c67a753f4c5ceed..b52e70ab2ebcb637ac5fed388ba3b9ef285abb0e 100644
--- a/indra/llcommon/llthread.h
+++ b/indra/llcommon/llthread.h
@@ -29,13 +29,7 @@
 
 #include "llapp.h"
 #include "llapr.h"
-#include "llmemory.h"
 #include "apr_thread_cond.h"
-#include "llaprpool.h"
-
-#ifdef SHOW_ASSERT
-extern LL_COMMON_API bool is_main_thread(void);
-#endif
 
 class LLThread;
 class LLMutex;
@@ -47,22 +41,6 @@ class LLCondition;
 #define ll_thread_local __thread
 #endif
 
-class LL_COMMON_API LLThreadLocalData
-{
-private:
-	static apr_threadkey_t* sThreadLocalDataKey;
-
-public:
-	// Thread-local memory pools.
-	LLAPRRootPool mRootPool;
-	LLVolatileAPRPool mVolatileAPRPool;
-
-	static void init(void);
-	static void destroy(void* thread_local_data);
-	static void create(LLThread* pthread);
-	static LLThreadLocalData& tldata(void);
-};
-
 class LL_COMMON_API LLThread
 {
 private:
@@ -76,7 +54,7 @@ class LL_COMMON_API LLThread
 		QUITTING= 2 	// Someone wants this thread to quit
 	} EThreadStatus;
 
-	LLThread(std::string const& name);
+	LLThread(const std::string& name, apr_pool_t *poolp = NULL);
 	virtual ~LLThread(); // Warning!  You almost NEVER want to destroy a thread unless it's in the STOPPED state.
 	virtual void shutdown(); // stops the thread
 	
@@ -91,7 +69,7 @@ class LL_COMMON_API LLThread
 	// Called from MAIN THREAD.
 	void pause();
 	void unpause();
-	bool isPaused() { return isStopped() || mPaused; }
+	bool isPaused() { return isStopped() || mPaused == TRUE; }
 	
 	// Cause the thread to wake up and check its condition
 	void wake();
@@ -105,11 +83,13 @@ class LL_COMMON_API LLThread
 	// this kicks off the apr thread
 	void start(void);
 
-	// Return thread-local data for the current thread.
-	static LLThreadLocalData& tldata(void) { return LLThreadLocalData::tldata(); }
+	apr_pool_t *getAPRPool() { return mAPRPoolp; }
+	LLVolatileAPRPool* getLocalAPRFilePool() { return mLocalAPRFilePoolp ; }
+
+	U32 getID() const { return mID; }
 
 private:
-	bool				mPaused;
+	BOOL				mPaused;
 	
 	// static function passed to APR thread creation routine
 	static void *APR_THREAD_FUNC staticRun(apr_thread_t *apr_threadp, void *datap);
@@ -119,11 +99,15 @@ class LL_COMMON_API LLThread
 	LLCondition*		mRunCondition;
 
 	apr_thread_t		*mAPRThreadp;
+	apr_pool_t			*mAPRPoolp;
+	BOOL				mIsLocalPool;
 	EThreadStatus		mStatus;
 	U32					mID;
-	
-	friend void LLThreadLocalData::create(LLThread* threadp);
-	LLThreadLocalData*	mThreadLocalData;
+
+	//a local apr_pool for APRFile operations in this thread. If it exists, LLAPRFile::sAPRFilePoolp should not be used.
+	//Note: this pool is used by APRFile ONLY, do NOT use it for any other purposes.
+	//      otherwise it will cause severe memory leaking!!! --bao
+	LLVolatileAPRPool  *mLocalAPRFilePoolp ; 
 
 	void setQuitting();
 	
@@ -153,15 +137,7 @@ class LL_COMMON_API LLThread
 
 #define MUTEX_DEBUG (LL_DEBUG || LL_RELEASE_WITH_DEBUG_INFO)
 
-#ifdef MUTEX_DEBUG
-// We really shouldn't be using recursive locks. Make sure of that in debug mode.
-#define MUTEX_FLAG APR_THREAD_MUTEX_UNNESTED
-#else
-// Use the fastest platform-optimal lock behavior (can be recursive or non-recursive).
-#define MUTEX_FLAG APR_THREAD_MUTEX_DEFAULT
-#endif
-
-class LL_COMMON_API LLMutexBase
+class LL_COMMON_API LLMutex
 {
 public:
 	typedef enum
@@ -169,74 +145,33 @@ class LL_COMMON_API LLMutexBase
 		NO_THREAD = 0xFFFFFFFF
 	} e_locking_thread;
 
-	LLMutexBase() ;
-
-	void lock() ;
-	void unlock() ;
-	// Returns true if lock was obtained successfully.
-	bool trylock() { return !APR_STATUS_IS_EBUSY(apr_thread_mutex_trylock(mAPRMutexp)); }
-
-	// non-blocking, but does do a lock/unlock so not free
-	bool isLocked() { bool is_not_locked = trylock(); if (is_not_locked) unlock(); return !is_not_locked; }
-
+	LLMutex(apr_pool_t *apr_poolp); // NULL pool constructs a new pool for the mutex
+	virtual ~LLMutex();
+	
+	void lock();		// blocks
+	void unlock();
+	bool isLocked(); 	// non-blocking, but does do a lock/unlock so not free
+	bool isSelfLocked(); //return true if locked in a same thread
+	U32 lockingThread() const; //get ID of locking thread
+	
 protected:
-	// mAPRMutexp is initialized and uninitialized in the derived class.
-	apr_thread_mutex_t* mAPRMutexp;
+	apr_thread_mutex_t *mAPRMutexp;
 	mutable U32			mCount;
 	mutable U32			mLockingThread;
-};
-
-class LL_COMMON_API LLMutex : public LLMutexBase
-{
-public:
-	LLMutex(LLAPRPool& parent = LLThread::tldata().mRootPool) : mPool(parent)
-	{
-		apr_thread_mutex_create(&mAPRMutexp, MUTEX_FLAG, mPool());
-	}
-	~LLMutex()
-	{
-		//this assertion erroneously triggers whenever an LLCondition is destroyed
-		//llassert(!isLocked()); // better not be locked!
-		apr_thread_mutex_destroy(mAPRMutexp);
-		mAPRMutexp = NULL;
-	}
-
-protected:
-	LLAPRPool mPool;
-};
-
-#if APR_HAS_THREADS
-// No need to use a root pool in this case.
-typedef LLMutex LLMutexRootPool;
-#else // APR_HAS_THREADS
-class LL_COMMON_API LLMutexRootPool : public LLMutexBase
-{
-public:
-	LLMutexRootPool(void)
-	{
-		apr_thread_mutex_create(&mAPRMutexp, MUTEX_FLAG, mRootPool());
-	}
-	~LLMutexRootPool()
-	{
-#if APR_POOL_DEBUG
-		// It is allowed to destruct root pools from a different thread.
-		mRootPool.grab_ownership();
+	
+	apr_pool_t			*mAPRPoolp;
+	BOOL				mIsLocalPool;
+	
+#if MUTEX_DEBUG
+	std::map<U32, BOOL> mIsLocked;
 #endif
-		llassert(!isLocked());
-		apr_thread_mutex_destroy(mAPRMutexp);
-		mAPRMutexp = NULL;
-	}
-
-protected:
-	LLAPRRootPool mRootPool;
 };
-#endif // APR_HAS_THREADS
 
 // Actually a condition/mutex pair (since each condition needs to be associated with a mutex).
 class LL_COMMON_API LLCondition : public LLMutex
 {
 public:
-	LLCondition(LLAPRPool& parent = LLThread::tldata().mRootPool);
+	LLCondition(apr_pool_t *apr_poolp); // Defaults to global pool, could use the thread pool as well.
 	~LLCondition();
 	
 	void wait();		// blocks
@@ -247,20 +182,23 @@ class LL_COMMON_API LLCondition : public LLMutex
 	apr_thread_cond_t *mAPRCondp;
 };
 
-class LL_COMMON_API LLMutexLock
+class LLMutexLock
 {
 public:
-	LLMutexLock(LLMutexBase* mutex)
+	LLMutexLock(LLMutex* mutex)
 	{
 		mMutex = mutex;
-		mMutex->lock();
+		
+		if(mMutex)
+			mMutex->lock();
 	}
 	~LLMutexLock()
 	{
-		mMutex->unlock();
+		if(mMutex)
+			mMutex->unlock();
 	}
 private:
-	LLMutexBase* mMutex;
+	LLMutex* mMutex;
 };
 
 //============================================================================
diff --git a/indra/llcommon/llthreadsafequeue.cpp b/indra/llcommon/llthreadsafequeue.cpp
index 05d24944f3e3ae4223eb35ca998fb284c5614967..8a73e632a9ada2249b4353f88828d5d66fcfe00d 100644
--- a/indra/llcommon/llthreadsafequeue.cpp
+++ b/indra/llcommon/llthreadsafequeue.cpp
@@ -34,11 +34,19 @@
 //-----------------------------------------------------------------------------
 
 
-LLThreadSafeQueueImplementation::LLThreadSafeQueueImplementation(unsigned int capacity):
+LLThreadSafeQueueImplementation::LLThreadSafeQueueImplementation(apr_pool_t * pool, unsigned int capacity):
+	mOwnsPool(pool == 0),
+	mPool(pool),
 	mQueue(0)
 {
-	mPool.create();
-	apr_status_t status = apr_queue_create(&mQueue, capacity, mPool());
+	if(mOwnsPool) {
+		apr_status_t status = apr_pool_create(&mPool, 0);
+		if(status != APR_SUCCESS) throw LLThreadSafeQueueError("failed to allocate pool");
+	} else {
+		; // No op.
+	}
+	
+	apr_status_t status = apr_queue_create(&mQueue, capacity, mPool);
 	if(status != APR_SUCCESS) throw LLThreadSafeQueueError("failed to allocate queue");
 }
 
@@ -51,6 +59,7 @@ LLThreadSafeQueueImplementation::~LLThreadSafeQueueImplementation()
 			" elements;" << "memory will be leaked" << LL_ENDL;
 		apr_queue_term(mQueue);
 	}
+	if(mOwnsPool && (mPool != 0)) apr_pool_destroy(mPool);
 }
 
 
diff --git a/indra/llcommon/llthreadsafequeue.h b/indra/llcommon/llthreadsafequeue.h
index 43d0b396f2494059192e0ae61533f64a69ae4b17..58cac38769cd2d3801fc9f01b1d1cc2a010ae0c6 100644
--- a/indra/llcommon/llthreadsafequeue.h
+++ b/indra/llcommon/llthreadsafequeue.h
@@ -30,9 +30,9 @@
 
 #include <string>
 #include <stdexcept>
-#include "llaprpool.h"
 
 
+struct apr_pool_t; // From apr_pools.h
 class LLThreadSafeQueueImplementation; // See below.
 
 
@@ -75,7 +75,7 @@ struct apr_queue_t; // From apr_queue.h
 class LL_COMMON_API LLThreadSafeQueueImplementation
 {
 public:
-	LLThreadSafeQueueImplementation(unsigned int capacity);
+	LLThreadSafeQueueImplementation(apr_pool_t * pool, unsigned int capacity);
 	~LLThreadSafeQueueImplementation();
 	void pushFront(void * element);
 	bool tryPushFront(void * element);
@@ -84,7 +84,8 @@ class LL_COMMON_API LLThreadSafeQueueImplementation
 	size_t size();
 	
 private:
-	LLAPRPool mPool;			// The pool used for mQueue.
+	bool mOwnsPool;
+	apr_pool_t * mPool;
 	apr_queue_t * mQueue;
 };
 
@@ -98,8 +99,9 @@ class LLThreadSafeQueue
 public:
 	typedef ElementT value_type;
 	
-	// Constructor.
-	LLThreadSafeQueue(unsigned int capacity = 1024);
+	// If the pool is set to NULL one will be allocated and managed by this
+	// queue.
+	LLThreadSafeQueue(apr_pool_t * pool = 0, unsigned int capacity = 1024);
 	
 	// Add an element to the front of queue (will block if the queue has
 	// reached capacity).
@@ -137,8 +139,8 @@ class LLThreadSafeQueue
 
 
 template<typename ElementT>
-LLThreadSafeQueue<ElementT>::LLThreadSafeQueue(unsigned int capacity) :
-	mImplementation(capacity)
+LLThreadSafeQueue<ElementT>::LLThreadSafeQueue(apr_pool_t * pool, unsigned int capacity):
+	mImplementation(pool, capacity)
 {
 	; // No op.
 }
diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index a4b2e06908dd01bd326e88a3e2edc78be84ad41a..a869c74189b24eb4a368d9277c7bbd5014a1d5c9 100644
--- a/indra/llcommon/llversionviewer.h
+++ b/indra/llcommon/llversionviewer.h
@@ -28,8 +28,8 @@
 #define LL_LLVERSIONVIEWER_H
 
 const S32 LL_VERSION_MAJOR = 3;
-const S32 LL_VERSION_MINOR = 0;
-const S32 LL_VERSION_PATCH = 6;
+const S32 LL_VERSION_MINOR = 3;
+const S32 LL_VERSION_PATCH = 0;
 const S32 LL_VERSION_BUILD = 0;
 
 const char * const LL_CHANNEL = "Second Life Developer";
diff --git a/indra/llcommon/llworkerthread.cpp b/indra/llcommon/llworkerthread.cpp
index 6b308bb9179eeff39de601357c054ebcc51c0771..3d05a30ac2240b2d0b91f01156d7312675faa2a7 100644
--- a/indra/llcommon/llworkerthread.cpp
+++ b/indra/llcommon/llworkerthread.cpp
@@ -34,10 +34,15 @@
 //============================================================================
 // Run on MAIN thread
 
-LLWorkerThread::LLWorkerThread(const std::string& name, bool threaded) :
-	LLQueuedThread(name, threaded)
+LLWorkerThread::LLWorkerThread(const std::string& name, bool threaded, bool should_pause) :
+	LLQueuedThread(name, threaded, should_pause)
 {
-	mDeleteMutex = new LLMutex;
+	mDeleteMutex = new LLMutex(NULL);
+
+	if(!mLocalAPRFilePoolp)
+	{
+		mLocalAPRFilePoolp = new LLVolatileAPRPool() ;
+	}
 }
 
 LLWorkerThread::~LLWorkerThread()
@@ -76,7 +81,7 @@ void LLWorkerThread::clearDeleteList()
 }
 
 // virtual
-S32 LLWorkerThread::update(U32 max_time_ms)
+S32 LLWorkerThread::update(F32 max_time_ms)
 {
 	S32 res = LLQueuedThread::update(max_time_ms);
 	// Delete scheduled workers
@@ -199,6 +204,7 @@ LLWorkerClass::LLWorkerClass(LLWorkerThread* workerthread, const std::string& na
 	  mWorkerClassName(name),
 	  mRequestHandle(LLWorkerThread::nullHandle()),
 	  mRequestPriority(LLWorkerThread::PRIORITY_NORMAL),
+	  mMutex(NULL),
 	  mWorkFlags(0)
 {
 	if (!mWorkerThread)
diff --git a/indra/llcommon/llworkerthread.h b/indra/llcommon/llworkerthread.h
index bef5ef53fe4fd4f97753429e09bd4c5fd1ba8708..be46394d6eff2ad9ffd3ae99669afe2f388cd745 100644
--- a/indra/llcommon/llworkerthread.h
+++ b/indra/llcommon/llworkerthread.h
@@ -83,10 +83,10 @@ class LL_COMMON_API LLWorkerThread : public LLQueuedThread
 	LLMutex* mDeleteMutex;
 	
 public:
-	LLWorkerThread(const std::string& name, bool threaded = true);
+	LLWorkerThread(const std::string& name, bool threaded = true, bool should_pause = false);
 	~LLWorkerThread();
 
-	/*virtual*/ S32 update(U32 max_time_ms);
+	/*virtual*/ S32 update(F32 max_time_ms);
 	
 	handle_t addWorkRequest(LLWorkerClass* workerclass, S32 param, U32 priority = PRIORITY_NORMAL);
 	
@@ -94,6 +94,7 @@ class LL_COMMON_API LLWorkerThread : public LLQueuedThread
 
 private:
 	void deleteWorker(LLWorkerClass* workerclass); // schedule for deletion
+	
 };
 
 //============================================================================
@@ -193,7 +194,7 @@ class LL_COMMON_API LLWorkerClass
 	U32 mRequestPriority; // last priority set
 
 private:
-	LLMutexRootPool mMutex;		// Use LLMutexRootPool since this object is created and destructed by multiple threads.
+	LLMutex mMutex;
 	LLAtomicU32 mWorkFlags;
 };
 
diff --git a/indra/llcommon/stdenums.h b/indra/llcommon/stdenums.h
index 556eff8370cae1196e9b116ff652b8a7c53a6c04..40b3364b36078961f92d9742e36765028ae284c9 100644
--- a/indra/llcommon/stdenums.h
+++ b/indra/llcommon/stdenums.h
@@ -49,8 +49,9 @@ enum EDragAndDropType
 	DAD_ANIMATION		= 12,
 	DAD_GESTURE			= 13,
 	DAD_LINK			= 14,
-	DAD_MESH           		= 15,
-	DAD_COUNT			= 16,   // number of types in this enum
+	DAD_MESH            = 15,
+	DAD_WIDGET          = 16,
+	DAD_COUNT           = 17,   // number of types in this enum
 };
 
 // Reasons for drags to be denied.
diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp
index 514ef6011f82363b6f264eded30a6b8719c1ec80..3461aa3e6ccdc4b18dcc8a8a37d8b12f003a15a3 100644
--- a/indra/llcrashlogger/llcrashlogger.cpp
+++ b/indra/llcrashlogger/llcrashlogger.cpp
@@ -42,6 +42,7 @@
 #include "llpumpio.h"
 #include "llhttpclient.h"
 #include "llsdserialize.h"
+#include "llproxy.h"
 
 LLPumpIO* gServicePump;
 BOOL gBreak = false;
@@ -414,7 +415,8 @@ bool LLCrashLogger::init()
 		return false;
 	}
 
-	gServicePump = new LLPumpIO;
+	gServicePump = new LLPumpIO(gAPRPoolp);
+	gServicePump->prime(gAPRPoolp);
 	LLHTTPClient::setPump(*gServicePump);
 
 	//If we've opened the crash logger, assume we can delete the marker file if it exists
@@ -427,3 +429,9 @@ bool LLCrashLogger::init()
 	
 	return true;
 }
+
+// For cleanup code common to all platforms.
+void LLCrashLogger::commonCleanup()
+{
+	LLProxy::cleanupClass();
+}
diff --git a/indra/llcrashlogger/llcrashlogger.h b/indra/llcrashlogger/llcrashlogger.h
index 5d0cb5931ce2875f40a5b790e7a17392b525b4e9..1510d7e0b3d33ea4d0acc4e012c496a824da1ac8 100644
--- a/indra/llcrashlogger/llcrashlogger.h
+++ b/indra/llcrashlogger/llcrashlogger.h
@@ -48,7 +48,8 @@ class LLCrashLogger : public LLApp
 	virtual void updateApplication(const std::string& message = LLStringUtil::null);
 	virtual bool init();
 	virtual bool mainLoop() = 0;
-	virtual bool cleanup() { return true; }
+	virtual bool cleanup() = 0;
+	void commonCleanup();
 	void setUserText(const std::string& text) { mCrashInfo["UserNotes"] = text; }
 	S32 getCrashBehavior() { return mCrashBehavior; }
 	bool runCrashLogPost(std::string host, LLSD data, std::string msg, int retries, int timeout);
diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp
index 23adbf68c88ea913fce5fb859343e9d730dfa5fe..56e01ac851e7a067bf740f3bb0a29440e003691a 100644
--- a/indra/llimage/llimage.cpp
+++ b/indra/llimage/llimage.cpp
@@ -53,7 +53,7 @@ LLPrivateMemoryPool* LLImageBase::sPrivatePoolp = NULL ;
 //static
 void LLImage::initClass()
 {
-	sMutex = new LLMutex;
+	sMutex = new LLMutex(NULL);
 
 	LLImageBase::createPrivatePool() ;
 }
@@ -195,7 +195,7 @@ U8* LLImageBase::allocateData(S32 size)
 		mData = (U8*)ALLOCATE_MEM(sPrivatePoolp, size);
 		if (!mData)
 		{
-			llwarns << "allocate image data: " << size << llendl;
+			llwarns << "Failed to allocate image data size [" << size << "]" << llendl;
 			size = 0 ;
 			mWidth = mHeight = 0 ;
 			mBadBufferAllocation = true ;
@@ -1566,7 +1566,8 @@ BOOL LLImageFormatted::load(const std::string &filename)
 	resetLastError();
 
 	S32 file_size = 0;
-	LLAPRFile infile(filename, LL_APR_RB, &file_size);
+	LLAPRFile infile ;
+	infile.open(filename, LL_APR_RB, NULL, &file_size);
 	apr_file_t* apr_file = infile.getFileHandle();
 	if (!apr_file)
 	{
@@ -1601,7 +1602,8 @@ BOOL LLImageFormatted::save(const std::string &filename)
 {
 	resetLastError();
 
-	LLAPRFile outfile(filename, LL_APR_WB);
+	LLAPRFile outfile ;
+	outfile.open(filename, LL_APR_WB);
 	if (!outfile.getFileHandle())
 	{
 		setLastError("Unable to open file for writing", filename);
diff --git a/indra/llimage/llimagedimensionsinfo.cpp b/indra/llimage/llimagedimensionsinfo.cpp
index 926c74914520986403b59ed476f021466c28baec..c6bfa50b403a3babfb42c30096e8a3f188456632 100644
--- a/indra/llimage/llimagedimensionsinfo.cpp
+++ b/indra/llimage/llimagedimensionsinfo.cpp
@@ -40,7 +40,7 @@ bool LLImageDimensionsInfo::load(const std::string& src_filename,U32 codec)
 	mSrcFilename = src_filename;
 
 	S32 file_size = 0;
-	apr_status_t s = mInfile.open(src_filename, LL_APR_RB, LLAPRFile::long_lived, &file_size);
+	apr_status_t s = mInfile.open(src_filename, LL_APR_RB, NULL, &file_size);
 
 	if (s != APR_SUCCESS)
 	{
diff --git a/indra/llimage/llimagedxt.cpp b/indra/llimage/llimagedxt.cpp
index 2867f5e6f0aa7c5807396c655f6e0ff781695aec..34c6793522134f60caa18705d9007c6f1d6b23b6 100644
--- a/indra/llimage/llimagedxt.cpp
+++ b/indra/llimage/llimagedxt.cpp
@@ -26,6 +26,7 @@
 #include "linden_common.h"
 
 #include "llimagedxt.h"
+#include "llmemory.h"
 
 //static
 void LLImageDXT::checkMinWidthHeight(EFileFormat format, S32& width, S32& height)
diff --git a/indra/llimage/llimagej2c.cpp b/indra/llimage/llimagej2c.cpp
index 8c5dc63e9ddac751de93c0f2aebd6b199a8013ae..cc8cb66d7390802f2e41297367ab90b0886f5f70 100644
--- a/indra/llimage/llimagej2c.cpp
+++ b/indra/llimage/llimagej2c.cpp
@@ -29,6 +29,7 @@
 #include "llmemtype.h"
 #include "lltimer.h"
 #include "llmath.h"
+#include "llmemory.h"
 
 typedef LLImageJ2CImpl* (*CreateLLImageJ2CFunction)();
 typedef void (*DestroyLLImageJ2CFunction)(LLImageJ2CImpl*);
@@ -370,7 +371,8 @@ BOOL LLImageJ2C::loadAndValidate(const std::string &filename)
 	resetLastError();
 
 	S32 file_size = 0;
-	LLAPRFile infile(filename, LL_APR_RB, &file_size);
+	LLAPRFile infile ;
+	infile.open(filename, LL_APR_RB, NULL, &file_size);
 	apr_file_t* apr_file = infile.getFileHandle() ;
 	if (!apr_file)
 	{
diff --git a/indra/llimage/llimageworker.cpp b/indra/llimage/llimageworker.cpp
index 2c6d6f31eadd2e0ed425a0c9c1a53c5941b8e823..ad2eb0f69c56e1f9968940707f2b11567765d10f 100644
--- a/indra/llimage/llimageworker.cpp
+++ b/indra/llimage/llimageworker.cpp
@@ -35,18 +35,20 @@
 LLImageDecodeThread::LLImageDecodeThread(bool threaded)
 	: LLQueuedThread("imagedecode", threaded)
 {
+	mCreationMutex = new LLMutex(getAPRPool());
 }
 
 //virtual 
 LLImageDecodeThread::~LLImageDecodeThread()
 {
+	delete mCreationMutex ;
 }
 
 // MAIN THREAD
 // virtual
-S32 LLImageDecodeThread::update(U32 max_time_ms)
+S32 LLImageDecodeThread::update(F32 max_time_ms)
 {
-	LLMutexLock lock(&mCreationMutex);
+	LLMutexLock lock(mCreationMutex);
 	for (creation_list_t::iterator iter = mCreationList.begin();
 		 iter != mCreationList.end(); ++iter)
 	{
@@ -69,7 +71,7 @@ S32 LLImageDecodeThread::update(U32 max_time_ms)
 LLImageDecodeThread::handle_t LLImageDecodeThread::decodeImage(LLImageFormatted* image, 
 	U32 priority, S32 discard, BOOL needs_aux, Responder* responder)
 {
-	LLMutexLock lock(&mCreationMutex);
+	LLMutexLock lock(mCreationMutex);
 	handle_t handle = generateHandle();
 	mCreationList.push_back(creation_info(handle, image, priority, discard, needs_aux, responder));
 	return handle;
@@ -79,7 +81,7 @@ LLImageDecodeThread::handle_t LLImageDecodeThread::decodeImage(LLImageFormatted*
 // Returns the size of the mutex guarded list as an indication of sanity
 S32 LLImageDecodeThread::tut_size()
 {
-	LLMutexLock lock(&mCreationMutex);
+	LLMutexLock lock(mCreationMutex);
 	S32 res = mCreationList.size();
 	return res;
 }
diff --git a/indra/llimage/llimageworker.h b/indra/llimage/llimageworker.h
index 6a24b7522ab29d026959ba559379a67c3c948f4c..1bfb0ddfd3f28ca36ff3dd1b760a61dd7cff32fa 100644
--- a/indra/llimage/llimageworker.h
+++ b/indra/llimage/llimageworker.h
@@ -78,7 +78,7 @@ class LLImageDecodeThread : public LLQueuedThread
 	handle_t decodeImage(LLImageFormatted* image,
 						 U32 priority, S32 discard, BOOL needs_aux,
 						 Responder* responder);
-	S32 update(U32 max_time_ms);
+	S32 update(F32 max_time_ms);
 
 	// Used by unit tests to check the consistency of the thread instance
 	S32 tut_size();
@@ -98,7 +98,7 @@ class LLImageDecodeThread : public LLQueuedThread
 	};
 	typedef std::list<creation_info> creation_list_t;
 	creation_list_t mCreationList;
-	LLMutex mCreationMutex;
+	LLMutex* mCreationMutex;
 };
 
 #endif
diff --git a/indra/llinventory/lleconomy.cpp b/indra/llinventory/lleconomy.cpp
index c6eaa6d3e14b606728b142a7008fde154a4cc98f..d643ea6ed9077f118d9ced6a43bf0c441f91c021 100644
--- a/indra/llinventory/lleconomy.cpp
+++ b/indra/llinventory/lleconomy.cpp
@@ -48,6 +48,31 @@ LLGlobalEconomy::LLGlobalEconomy()
 LLGlobalEconomy::~LLGlobalEconomy()
 { }
 
+void LLGlobalEconomy::addObserver(LLEconomyObserver* observer)
+{
+	mObservers.push_back(observer);
+}
+
+void LLGlobalEconomy::removeObserver(LLEconomyObserver* observer)
+{
+	std::list<LLEconomyObserver*>::iterator it =
+		std::find(mObservers.begin(), mObservers.end(), observer);
+	if (it != mObservers.end())
+	{
+		mObservers.erase(it);
+	}
+}
+
+void LLGlobalEconomy::notifyObservers()
+{
+	for (std::list<LLEconomyObserver*>::iterator it = mObservers.begin();
+		it != mObservers.end();
+		++it)
+	{
+		(*it)->onEconomyDataChange();
+	}
+}
+
 // static
 void LLGlobalEconomy::processEconomyData(LLMessageSystem *msg, LLGlobalEconomy* econ_data)
 {
@@ -88,6 +113,8 @@ void LLGlobalEconomy::processEconomyData(LLMessageSystem *msg, LLGlobalEconomy*
 	econ_data->setTeleportPriceExponent(f);
 	msg->getS32Fast(_PREHASH_Info, _PREHASH_PriceGroupCreate, i);
 	econ_data->setPriceGroupCreate(i);
+
+	econ_data->notifyObservers();
 }
 
 S32	LLGlobalEconomy::calculateTeleportCost(F32 distance) const
diff --git a/indra/llinventory/lleconomy.h b/indra/llinventory/lleconomy.h
index cc6643f955e468c18c3db456c6c7c18d949cf343..eb2ecf71ba41b70aaa905cbe7e99138688dbf869 100644
--- a/indra/llinventory/lleconomy.h
+++ b/indra/llinventory/lleconomy.h
@@ -31,6 +31,16 @@
 class LLMessageSystem;
 class LLVector3;
 
+/**
+ * Register an observer to be notified of economy data updates coming from server.
+ */
+class LLEconomyObserver
+{
+public:
+	virtual ~LLEconomyObserver() {}
+	virtual void onEconomyDataChange() = 0;
+};
+
 class LLGlobalEconomy
 {
 public:
@@ -46,6 +56,10 @@ class LLGlobalEconomy
 
 	virtual void print();
 
+	void	addObserver(LLEconomyObserver* observer);
+	void	removeObserver(LLEconomyObserver* observer);
+	void	notifyObservers();
+
 	static void processEconomyData(LLMessageSystem *msg, LLGlobalEconomy* econ_data);
 
 	S32		calculateTeleportCost(F32 distance) const;
@@ -89,6 +103,8 @@ class LLGlobalEconomy
 	S32		mTeleportMinPrice;
 	F32		mTeleportPriceExponent;
 	S32     mPriceGroupCreate;
+
+	std::list<LLEconomyObserver*> mObservers;
 };
 
 
diff --git a/indra/llinventory/llinventorytype.cpp b/indra/llinventory/llinventorytype.cpp
index d2bba216483796d5533f294d77e71feac32b0495..8282d79b673736ffab072ba47aaae3bf92d4a256 100644
--- a/indra/llinventory/llinventorytype.cpp
+++ b/indra/llinventory/llinventorytype.cpp
@@ -84,6 +84,7 @@ LLInventoryDictionary::LLInventoryDictionary()
 	addEntry(LLInventoryType::IT_ANIMATION,           new InventoryEntry("animation", "animation",     1, LLAssetType::AT_ANIMATION));  
 	addEntry(LLInventoryType::IT_GESTURE,             new InventoryEntry("gesture",   "gesture",       1, LLAssetType::AT_GESTURE)); 
 	addEntry(LLInventoryType::IT_MESH,                new InventoryEntry("mesh",      "mesh",          1, LLAssetType::AT_MESH));
+	addEntry(LLInventoryType::IT_WIDGET,              new InventoryEntry("widget",    "widget",        1, LLAssetType::AT_WIDGET));
 }
 
 
@@ -134,7 +135,7 @@ DEFAULT_ASSET_FOR_INV_TYPE[LLAssetType::AT_COUNT] =
 	LLInventoryType::IT_NONE,			// 37	AT_NONE
 	LLInventoryType::IT_NONE,			// 38	AT_NONE
 	LLInventoryType::IT_NONE,			// 39	AT_NONE
-	LLInventoryType::IT_NONE,			// 40	AT_NONE
+	LLInventoryType::IT_WIDGET,			// 40	AT_WIDGET
 	LLInventoryType::IT_NONE,			// 41	AT_NONE
 	LLInventoryType::IT_NONE,			// 42	AT_NONE
 	LLInventoryType::IT_NONE,			// 43	AT_NONE
@@ -143,7 +144,7 @@ DEFAULT_ASSET_FOR_INV_TYPE[LLAssetType::AT_COUNT] =
 	LLInventoryType::IT_NONE,			// 46	AT_NONE
 	LLInventoryType::IT_NONE,			// 47	AT_NONE
 	LLInventoryType::IT_NONE,			// 48	AT_NONE
-	LLInventoryType::IT_MESH            // 49	AT_MESH
+	LLInventoryType::IT_MESH,			// 49	AT_MESH
 };
 
 // static
diff --git a/indra/llinventory/llinventorytype.h b/indra/llinventory/llinventorytype.h
index 1a24e351adc6e5c7c00abc5b89307f4cf418bf0c..4d1e0db04016126a4fc70df3b1f738bf78031c4e 100644
--- a/indra/llinventory/llinventorytype.h
+++ b/indra/llinventory/llinventorytype.h
@@ -62,7 +62,8 @@ class LLInventoryType
 		IT_ANIMATION = 19,
 		IT_GESTURE = 20,
 		IT_MESH = 22,
-		IT_COUNT = 23,
+		IT_WIDGET = 23,
+		IT_COUNT = 24,
 
 		IT_NONE = -1
 	};
diff --git a/indra/llmath/CMakeLists.txt b/indra/llmath/CMakeLists.txt
index cd100cdf9fd38a0147ddb33a91da54de57f9bf28..b5e59c1ca350285bf9394089c41a2767820c0d8c 100644
--- a/indra/llmath/CMakeLists.txt
+++ b/indra/llmath/CMakeLists.txt
@@ -75,10 +75,6 @@ set(llmath_HEADER_FILES
     llvector4a.h
     llvector4a.inl
     llvector4logical.h
-    llv4math.h
-    llv4matrix3.h
-    llv4matrix4.h
-    llv4vector3.h
     llvolume.h
     llvolumemgr.h
     llvolumeoctree.h
diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h
index e5ca47da698efca948d96cc28998790c0b6e9185..1b11e83b4af369cd4119d19e81d79f486f90014d 100644
--- a/indra/llmath/lloctree.h
+++ b/indra/llmath/lloctree.h
@@ -80,8 +80,8 @@ class LLOctreeNode : public LLTreeNode<T>
 	typedef LLOctreeTraveler<T>									oct_traveler;
 	typedef LLTreeTraveler<T>									tree_traveler;
 	typedef typename std::set<LLPointer<T> >					element_list;
-	typedef typename std::set<LLPointer<T> >::iterator			element_iter;
-	typedef typename std::set<LLPointer<T> >::const_iterator	const_element_iter;
+	typedef typename element_list::iterator						element_iter;
+	typedef typename element_list::const_iterator	const_element_iter;
 	typedef typename std::vector<LLTreeListener<T>*>::iterator	tree_listener_iter;
 	typedef typename std::vector<LLOctreeNode<T>* >				child_list;
 	typedef LLTreeNode<T>		BaseType;
@@ -114,6 +114,8 @@ class LLOctreeNode : public LLTreeNode<T>
 			mOctant = ((oct_node*) mParent)->getOctant(mCenter);
 		}
 
+		mElementCount = 0;
+
 		clearChildren();
 	}
 
@@ -219,11 +221,11 @@ class LLOctreeNode : public LLTreeNode<T>
 	void accept(oct_traveler* visitor)				{ visitor->visit(this); }
 	virtual bool isLeaf() const						{ return mChild.empty(); }
 	
-	U32 getElementCount() const						{ return mData.size(); }
+	U32 getElementCount() const						{ return mElementCount; }
 	element_list& getData()							{ return mData; }
 	const element_list& getData() const				{ return mData; }
 	
-	U32 getChildCount()	const						{ return mChild.size(); }
+	U32 getChildCount()	const						{ return mChildCount; }
 	oct_node* getChild(U32 index)					{ return mChild[index]; }
 	const oct_node* getChild(U32 index) const		{ return mChild[index]; }
 	child_list& getChildren()						{ return mChild; }
@@ -300,17 +302,13 @@ class LLOctreeNode : public LLTreeNode<T>
 			if ((getElementCount() < gOctreeMaxCapacity && contains(data->getBinRadius()) ||
 				(data->getBinRadius() > getSize()[0] &&	parent && parent->getElementCount() >= gOctreeMaxCapacity))) 
 			{ //it belongs here
-#if LL_OCTREE_PARANOIA_CHECK
 				//if this is a redundant insertion, error out (should never happen)
-				if (mData.find(data) != mData.end())
-				{
-					llwarns << "Redundant octree insertion detected. " << data << llendl;
-					return false;
-				}
-#endif
+				llassert(mData.find(data) == mData.end());
 
 				mData.insert(data);
 				BaseType::insert(data);
+
+				mElementCount = mData.size();
 				return true;
 			}
 			else
@@ -346,6 +344,8 @@ class LLOctreeNode : public LLTreeNode<T>
 				{
 					mData.insert(data);
 					BaseType::insert(data);
+
+					mElementCount = mData.size();
 					return true;
 				}
 
@@ -399,6 +399,7 @@ class LLOctreeNode : public LLTreeNode<T>
 		if (mData.find(data) != mData.end())
 		{	//we have data
 			mData.erase(data);
+			mElementCount = mData.size();
 			notifyRemoval(data);
 			checkAlive();
 			return true;
@@ -436,6 +437,7 @@ class LLOctreeNode : public LLTreeNode<T>
         if (mData.find(data) != mData.end())
 		{
 			mData.erase(data);
+			mElementCount = mData.size();
 			notifyRemoval(data);
 			llwarns << "FOUND!" << llendl;
 			checkAlive();
@@ -452,7 +454,7 @@ class LLOctreeNode : public LLTreeNode<T>
 	void clearChildren()
 	{
 		mChild.clear();
-
+		mChildCount = 0;
 		U32* foo = (U32*) mChildMap;
 		foo[0] = foo[1] = 0xFFFFFFFF;
 	}
@@ -512,9 +514,10 @@ class LLOctreeNode : public LLTreeNode<T>
 		}
 #endif
 
-		mChildMap[child->getOctant()] = (U8) mChild.size();
+		mChildMap[child->getOctant()] = mChildCount;
 
 		mChild.push_back(child);
+		++mChildCount;
 		child->setParent(this);
 
 		if (!silent)
@@ -534,21 +537,20 @@ class LLOctreeNode : public LLTreeNode<T>
 			oct_listener* listener = getOctListener(i);
 			listener->handleChildRemoval(this, getChild(index));
 		}
-
 		
-
 		if (destroy)
 		{
 			mChild[index]->destroy();
 			delete mChild[index];
 		}
 		mChild.erase(mChild.begin() + index);
+		--mChildCount;
 
 		//rebuild child map
 		U32* foo = (U32*) mChildMap;
 		foo[0] = foo[1] = 0xFFFFFFFF;
 
-		for (U32 i = 0; i < mChild.size(); ++i)
+		for (U32 i = 0; i < mChildCount; ++i)
 		{
 			mChildMap[mChild[i]->getOctant()] = i;
 		}
@@ -601,8 +603,10 @@ class LLOctreeNode : public LLTreeNode<T>
 
 	child_list mChild;
 	U8 mChildMap[8];
+	U32 mChildCount;
 
 	element_list mData;
+	U32 mElementCount;
 		
 }; 
 
@@ -681,7 +685,7 @@ class LLOctreeRoot : public LLOctreeNode<T>
 
 		if (lt != 0x7)
 		{
-			OCT_ERRS << "!!! ELEMENT EXCEEDS RANGE OF SPATIAL PARTITION !!!" << llendl;
+			//OCT_ERRS << "!!! ELEMENT EXCEEDS RANGE OF SPATIAL PARTITION !!!" << llendl;
 			return false;
 		}
 
diff --git a/indra/llmath/llv4math.h b/indra/llmath/llv4math.h
deleted file mode 100644
index 5f403ba52667505f4e1f05a4671549040b1728c7..0000000000000000000000000000000000000000
--- a/indra/llmath/llv4math.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/** 
- * @file llv4math.h
- * @brief LLV4* class header file - vector processor enabled math
- *
- * $LicenseInfo:firstyear=2007&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_LLV4MATH_H
-#define	LL_LLV4MATH_H
-
-// *NOTE: We do not support SSE acceleration on Windows builds.
-// Our minimum specification for the viewer includes 1 GHz Athlon processors,
-// which covers the Athlon Thunderbird series that does not support SSE.
-//
-// Our header files include statements like this
-//   const F32 HAVOK_TIMESTEP = 1.f / 45.f;
-// This creates "globals" that are included in each .obj file.  If a single
-// .cpp file has SSE code generation turned on (eg, llviewerjointmesh_sse.cpp)
-// these globals will be initialized using SSE instructions.  This causes SL
-// to crash before main() on processors without SSE.  Untangling all these 
-// headers/variables is too much work for the small performance gains of 
-// vectorization.
-//
-// Therefore we only support vectorization on builds where the everything is 
-// built with SSE or Altivec.  See https://jira.secondlife.com/browse/VWR-1610
-// and https://jira.lindenlab.com/browse/SL-47720 for details.
-//
-// Sorry the code is such a mess. JC
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-// LLV4MATH - GNUC
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-#if LL_GNUC && __GNUC__ >= 4 && __SSE__
-
-#define			LL_VECTORIZE					1
-
-#if LL_DARWIN
-
-#include <Accelerate/Accelerate.h>
-#include <xmmintrin.h>
-typedef vFloat	V4F32;
-
-#else
-
-#include <xmmintrin.h>
-typedef float	V4F32							__attribute__((vector_size(16)));
-
-#endif
-
-#endif
-#if LL_GNUC
-
-#define			LL_LLV4MATH_ALIGN_PREFIX
-#define			LL_LLV4MATH_ALIGN_POSTFIX		__attribute__((aligned(16)))
-
-#endif
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-// LLV4MATH - MSVC
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-// Only vectorize if the entire Windows build uses SSE.
-// _M_IX86_FP is set when SSE code generation is turned on, and I have
-// confirmed this in VS2003, VS2003 SP1, and VS2005. JC
-#if LL_MSVC && _M_IX86_FP
-
-#define			LL_VECTORIZE					1
-
-#include <xmmintrin.h>
-
-typedef __m128	V4F32;
-
-#endif
-#if LL_MSVC
-
-#define			LL_LLV4MATH_ALIGN_PREFIX		__declspec(align(16))
-#define			LL_LLV4MATH_ALIGN_POSTFIX
-
-#endif
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-// LLV4MATH - default - no vectorization
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-#if !LL_VECTORIZE
-
-#define			LL_VECTORIZE					0
-
-struct			V4F32							{ F32 __pad__[4]; };
-
-inline F32 llv4lerp(F32 a, F32 b, F32 w)		{ return ( b - a ) * w + a; }
-
-#endif
-
-#ifndef			LL_LLV4MATH_ALIGN_PREFIX
-#	define			LL_LLV4MATH_ALIGN_PREFIX
-#endif
-#ifndef			LL_LLV4MATH_ALIGN_POSTFIX
-#	define			LL_LLV4MATH_ALIGN_POSTFIX
-#endif
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-// LLV4MATH
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-
-#define			LLV4_NUM_AXIS					4
-
-class LLV4Vector3;
-class LLV4Matrix3;
-class LLV4Matrix4;
-
-#endif
diff --git a/indra/llmath/llv4matrix3.h b/indra/llmath/llv4matrix3.h
deleted file mode 100644
index 270f5d7dae41b8541aa9607dcea61d3fd8b0d12c..0000000000000000000000000000000000000000
--- a/indra/llmath/llv4matrix3.h
+++ /dev/null
@@ -1,220 +0,0 @@
-/** 
- * @file llviewerjointmesh.cpp
- * @brief LLV4* class header file - vector processor enabled math
- *
- * $LicenseInfo:firstyear=2007&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_LLV4MATRIX3_H
-#define LL_LLV4MATRIX3_H
-
-#include "llv4math.h"
-#include "llv4vector3.h"
-#include "m3math.h"			// for operator LLMatrix3()
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-// LLV4Matrix3
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-LL_LLV4MATH_ALIGN_PREFIX
-
-class LLV4Matrix3
-{
-public:
-	union {
-		F32		mMatrix[LLV4_NUM_AXIS][LLV4_NUM_AXIS];
-		V4F32	mV[LLV4_NUM_AXIS];
-	};
-
-	void				lerp(const LLV4Matrix3 &a, const LLV4Matrix3 &b, const F32 &w);
-	void				multiply(const LLVector3 &a, LLVector3& out) const;
-	void				multiply(const LLVector4 &a, LLV4Vector3& out) const;
-	void				multiply(const LLVector3 &a, LLV4Vector3& out) const;
-
-	const LLV4Matrix3&	transpose();
-	const LLV4Matrix3&	operator=(const LLMatrix3& a);
-
-	operator			LLMatrix3()	const { return (reinterpret_cast<const LLMatrix4*>(const_cast<const F32*>(&mMatrix[0][0])))->getMat3(); }
-
-	friend LLVector3	operator*(const LLVector3& a, const LLV4Matrix3& b);
-}
-
-LL_LLV4MATH_ALIGN_POSTFIX;
-
-
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-// LLV4Matrix3 - SSE
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-#if LL_VECTORIZE
-
-inline void LLV4Matrix3::lerp(const LLV4Matrix3 &a, const LLV4Matrix3 &b, const F32 &w)
-{
-	__m128 vw = _mm_set1_ps(w);
-	mV[VX] = _mm_add_ps(_mm_mul_ps(_mm_sub_ps(b.mV[VX], a.mV[VX]), vw), a.mV[VX]); // ( b - a ) * w + a
-	mV[VY] = _mm_add_ps(_mm_mul_ps(_mm_sub_ps(b.mV[VY], a.mV[VY]), vw), a.mV[VY]);
-	mV[VZ] = _mm_add_ps(_mm_mul_ps(_mm_sub_ps(b.mV[VZ], a.mV[VZ]), vw), a.mV[VZ]);
-}
-
-inline void LLV4Matrix3::multiply(const LLVector3 &a, LLVector3& o) const
-{
-	LLV4Vector3 j;
-	j.v = 				 	_mm_mul_ps(_mm_set1_ps(a.mV[VX]), mV[VX]); // ( ax * vx ) + ...
-	j.v = _mm_add_ps(j.v  , _mm_mul_ps(_mm_set1_ps(a.mV[VY]), mV[VY]));
-	j.v = _mm_add_ps(j.v  , _mm_mul_ps(_mm_set1_ps(a.mV[VZ]), mV[VZ]));
-	o.setVec(j.mV);
-}
-
-inline void LLV4Matrix3::multiply(const LLVector4 &a, LLV4Vector3& o) const
-{
-	o.v =					_mm_mul_ps(_mm_set1_ps(a.mV[VX]), mV[VX]); // ( ax * vx ) + ...
-	o.v = _mm_add_ps(o.v  , _mm_mul_ps(_mm_set1_ps(a.mV[VY]), mV[VY]));
-	o.v = _mm_add_ps(o.v  , _mm_mul_ps(_mm_set1_ps(a.mV[VZ]), mV[VZ]));
-}
-
-inline void LLV4Matrix3::multiply(const LLVector3 &a, LLV4Vector3& o) const
-{
-	o.v =					_mm_mul_ps(_mm_set1_ps(a.mV[VX]), mV[VX]); // ( ax * vx ) + ...
-	o.v = _mm_add_ps(o.v  , _mm_mul_ps(_mm_set1_ps(a.mV[VY]), mV[VY]));
-	o.v = _mm_add_ps(o.v  , _mm_mul_ps(_mm_set1_ps(a.mV[VZ]), mV[VZ]));
-}
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-// LLV4Matrix3
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-#else
-
-inline void LLV4Matrix3::lerp(const LLV4Matrix3 &a, const LLV4Matrix3 &b, const F32 &w)
-{
-	mMatrix[VX][VX] = llv4lerp(a.mMatrix[VX][VX], b.mMatrix[VX][VX], w);
-	mMatrix[VX][VY] = llv4lerp(a.mMatrix[VX][VY], b.mMatrix[VX][VY], w);
-	mMatrix[VX][VZ] = llv4lerp(a.mMatrix[VX][VZ], b.mMatrix[VX][VZ], w);
-
-	mMatrix[VY][VX] = llv4lerp(a.mMatrix[VY][VX], b.mMatrix[VY][VX], w);
-	mMatrix[VY][VY] = llv4lerp(a.mMatrix[VY][VY], b.mMatrix[VY][VY], w);
-	mMatrix[VY][VZ] = llv4lerp(a.mMatrix[VY][VZ], b.mMatrix[VY][VZ], w);
-
-	mMatrix[VZ][VX] = llv4lerp(a.mMatrix[VZ][VX], b.mMatrix[VZ][VX], w);
-	mMatrix[VZ][VY] = llv4lerp(a.mMatrix[VZ][VY], b.mMatrix[VZ][VY], w);
-	mMatrix[VZ][VZ] = llv4lerp(a.mMatrix[VZ][VZ], b.mMatrix[VZ][VZ], w);
-}
-
-inline void LLV4Matrix3::multiply(const LLVector3 &a, LLVector3& o) const
-{
-	o.setVec(		a.mV[VX] * mMatrix[VX][VX] + 
-					a.mV[VY] * mMatrix[VY][VX] + 
-					a.mV[VZ] * mMatrix[VZ][VX],
-					 
-					a.mV[VX] * mMatrix[VX][VY] + 
-					a.mV[VY] * mMatrix[VY][VY] + 
-					a.mV[VZ] * mMatrix[VZ][VY],
-					 
-					a.mV[VX] * mMatrix[VX][VZ] + 
-					a.mV[VY] * mMatrix[VY][VZ] + 
-					a.mV[VZ] * mMatrix[VZ][VZ]);
-}
-
-inline void LLV4Matrix3::multiply(const LLVector4 &a, LLV4Vector3& o) const
-{
-	o.setVec(		a.mV[VX] * mMatrix[VX][VX] + 
-					a.mV[VY] * mMatrix[VY][VX] + 
-					a.mV[VZ] * mMatrix[VZ][VX],
-					 
-					a.mV[VX] * mMatrix[VX][VY] + 
-					a.mV[VY] * mMatrix[VY][VY] + 
-					a.mV[VZ] * mMatrix[VZ][VY],
-					 
-					a.mV[VX] * mMatrix[VX][VZ] + 
-					a.mV[VY] * mMatrix[VY][VZ] + 
-					a.mV[VZ] * mMatrix[VZ][VZ]);
-}
-
-inline void LLV4Matrix3::multiply(const LLVector3 &a, LLV4Vector3& o) const
-{
-	o.setVec(		a.mV[VX] * mMatrix[VX][VX] + 
-					a.mV[VY] * mMatrix[VY][VX] + 
-					a.mV[VZ] * mMatrix[VZ][VX],
-					 
-					a.mV[VX] * mMatrix[VX][VY] + 
-					a.mV[VY] * mMatrix[VY][VY] + 
-					a.mV[VZ] * mMatrix[VZ][VY],
-					 
-					a.mV[VX] * mMatrix[VX][VZ] + 
-					a.mV[VY] * mMatrix[VY][VZ] + 
-					a.mV[VZ] * mMatrix[VZ][VZ]);
-}
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-// LLV4Matrix3
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-#endif
-
-inline const LLV4Matrix3&	LLV4Matrix3::transpose()
-{
-#if LL_VECTORIZE && defined(_MM_TRANSPOSE4_PS)
-	_MM_TRANSPOSE4_PS(mV[VX], mV[VY], mV[VZ], mV[VW]);
-	return *this;
-#else
-	F32 temp;
-	temp = mMatrix[VX][VY]; mMatrix[VX][VY] = mMatrix[VY][VX]; mMatrix[VY][VX] = temp;
-	temp = mMatrix[VX][VZ]; mMatrix[VX][VZ] = mMatrix[VZ][VX]; mMatrix[VZ][VX] = temp;
-	temp = mMatrix[VY][VZ]; mMatrix[VY][VZ] = mMatrix[VZ][VY]; mMatrix[VZ][VY] = temp;
-#endif
-	return *this;
-}
-
-inline const LLV4Matrix3& LLV4Matrix3::operator=(const LLMatrix3& a)
-{
-	memcpy(mMatrix[VX], a.mMatrix[VX], sizeof(F32) * 3 );
-	memcpy(mMatrix[VY], a.mMatrix[VY], sizeof(F32) * 3 );
-	memcpy(mMatrix[VZ], a.mMatrix[VZ], sizeof(F32) * 3 );
-	return *this;
-}
-
-inline LLVector3 operator*(const LLVector3& a, const LLV4Matrix3& b)
-{
-	return LLVector3(
-				a.mV[VX] * b.mMatrix[VX][VX] + 
-				a.mV[VY] * b.mMatrix[VY][VX] + 
-				a.mV[VZ] * b.mMatrix[VZ][VX],
-	
-				a.mV[VX] * b.mMatrix[VX][VY] + 
-				a.mV[VY] * b.mMatrix[VY][VY] + 
-				a.mV[VZ] * b.mMatrix[VZ][VY],
-	
-				a.mV[VX] * b.mMatrix[VX][VZ] + 
-				a.mV[VY] * b.mMatrix[VY][VZ] + 
-				a.mV[VZ] * b.mMatrix[VZ][VZ] );
-}
-
-#endif
diff --git a/indra/llmath/llv4matrix4.h b/indra/llmath/llv4matrix4.h
deleted file mode 100644
index 2eb49d9294e382d3ece6082dc3caa8990f5e96d1..0000000000000000000000000000000000000000
--- a/indra/llmath/llv4matrix4.h
+++ /dev/null
@@ -1,249 +0,0 @@
-/** 
- * @file llviewerjointmesh.cpp
- * @brief LLV4* class header file - vector processor enabled math
- *
- * $LicenseInfo:firstyear=2007&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_LLV4MATRIX4_H
-#define LL_LLV4MATRIX4_H
-
-#include "llv4math.h"
-#include "llv4matrix3.h"	// just for operator LLV4Matrix3()
-#include "llv4vector3.h"
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-// LLV4Matrix4
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-LL_LLV4MATH_ALIGN_PREFIX
-
-class LLV4Matrix4
-{
-public:
-	union {
-		F32		mMatrix[LLV4_NUM_AXIS][LLV4_NUM_AXIS];
-		V4F32	mV[LLV4_NUM_AXIS];
-	};
-
-	void				lerp(const LLV4Matrix4 &a, const LLV4Matrix4 &b, const F32 &w);
-	void				multiply(const LLVector3 &a, LLVector3& o) const;
-	void				multiply(const LLVector3 &a, LLV4Vector3& o) const;
-
-	const LLV4Matrix4&	transpose();
-	const LLV4Matrix4&  translate(const LLVector3 &vec);
-	const LLV4Matrix4&  translate(const LLV4Vector3 &vec);
-	const LLV4Matrix4&	operator=(const LLMatrix4& a);
-
-	operator			LLMatrix4()	const { return *(reinterpret_cast<const LLMatrix4*>(const_cast<const F32*>(&mMatrix[0][0]))); }
-	operator			LLV4Matrix3()	const { return *(reinterpret_cast<const LLV4Matrix3*>(const_cast<const F32*>(&mMatrix[0][0]))); }
-	
-	friend LLVector3	operator*(const LLVector3 &a, const LLV4Matrix4 &b);
-}
-
-LL_LLV4MATH_ALIGN_POSTFIX;
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-// LLV4Matrix4 - SSE
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-#if LL_VECTORIZE
-
-inline void LLV4Matrix4::lerp(const LLV4Matrix4 &a, const LLV4Matrix4 &b, const F32 &w)
-{
-	__m128 vw = _mm_set1_ps(w);
-	mV[VX] = _mm_add_ps(_mm_mul_ps(_mm_sub_ps(b.mV[VX], a.mV[VX]), vw), a.mV[VX]); // ( b - a ) * w + a
-	mV[VY] = _mm_add_ps(_mm_mul_ps(_mm_sub_ps(b.mV[VY], a.mV[VY]), vw), a.mV[VY]);
-	mV[VZ] = _mm_add_ps(_mm_mul_ps(_mm_sub_ps(b.mV[VZ], a.mV[VZ]), vw), a.mV[VZ]);
-	mV[VW] = _mm_add_ps(_mm_mul_ps(_mm_sub_ps(b.mV[VW], a.mV[VW]), vw), a.mV[VW]);
-}
-
-inline void LLV4Matrix4::multiply(const LLVector3 &a, LLVector3& o) const
-{
-	LLV4Vector3 j;
-	j.v = _mm_add_ps(mV[VW], _mm_mul_ps(_mm_set1_ps(a.mV[VX]), mV[VX])); // ( ax * vx ) + vw
-	j.v = _mm_add_ps(j.v   , _mm_mul_ps(_mm_set1_ps(a.mV[VY]), mV[VY]));
-	j.v = _mm_add_ps(j.v   , _mm_mul_ps(_mm_set1_ps(a.mV[VZ]), mV[VZ]));
-	o.setVec(j.mV);
-}
-
-inline void LLV4Matrix4::multiply(const LLVector3 &a, LLV4Vector3& o) const
-{
-	o.v = _mm_add_ps(mV[VW], _mm_mul_ps(_mm_set1_ps(a.mV[VX]), mV[VX])); // ( ax * vx ) + vw
-	o.v = _mm_add_ps(o.v   , _mm_mul_ps(_mm_set1_ps(a.mV[VY]), mV[VY]));
-	o.v = _mm_add_ps(o.v   , _mm_mul_ps(_mm_set1_ps(a.mV[VZ]), mV[VZ]));
-}
-
-inline const LLV4Matrix4& LLV4Matrix4::translate(const LLV4Vector3 &vec)
-{
-	mV[VW] = _mm_add_ps(mV[VW], vec.v);
-	return (*this);
-}
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-// LLV4Matrix4
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-#else
-
-inline void LLV4Matrix4::lerp(const LLV4Matrix4 &a, const LLV4Matrix4 &b, const F32 &w)
-{
-	mMatrix[VX][VX] = llv4lerp(a.mMatrix[VX][VX], b.mMatrix[VX][VX], w);
-	mMatrix[VX][VY] = llv4lerp(a.mMatrix[VX][VY], b.mMatrix[VX][VY], w);
-	mMatrix[VX][VZ] = llv4lerp(a.mMatrix[VX][VZ], b.mMatrix[VX][VZ], w);
-
-	mMatrix[VY][VX] = llv4lerp(a.mMatrix[VY][VX], b.mMatrix[VY][VX], w);
-	mMatrix[VY][VY] = llv4lerp(a.mMatrix[VY][VY], b.mMatrix[VY][VY], w);
-	mMatrix[VY][VZ] = llv4lerp(a.mMatrix[VY][VZ], b.mMatrix[VY][VZ], w);
-
-	mMatrix[VZ][VX] = llv4lerp(a.mMatrix[VZ][VX], b.mMatrix[VZ][VX], w);
-	mMatrix[VZ][VY] = llv4lerp(a.mMatrix[VZ][VY], b.mMatrix[VZ][VY], w);
-	mMatrix[VZ][VZ] = llv4lerp(a.mMatrix[VZ][VZ], b.mMatrix[VZ][VZ], w);
-
-	mMatrix[VW][VX] = llv4lerp(a.mMatrix[VW][VX], b.mMatrix[VW][VX], w);
-	mMatrix[VW][VY] = llv4lerp(a.mMatrix[VW][VY], b.mMatrix[VW][VY], w);
-	mMatrix[VW][VZ] = llv4lerp(a.mMatrix[VW][VZ], b.mMatrix[VW][VZ], w);
-}
-
-inline void LLV4Matrix4::multiply(const LLVector3 &a, LLVector3& o) const
-{
-	o.setVec(		a.mV[VX] * mMatrix[VX][VX] + 
-					a.mV[VY] * mMatrix[VY][VX] + 
-					a.mV[VZ] * mMatrix[VZ][VX] +
-					mMatrix[VW][VX],
-					 
-					a.mV[VX] * mMatrix[VX][VY] + 
-					a.mV[VY] * mMatrix[VY][VY] + 
-					a.mV[VZ] * mMatrix[VZ][VY] +
-					mMatrix[VW][VY],
-					 
-					a.mV[VX] * mMatrix[VX][VZ] + 
-					a.mV[VY] * mMatrix[VY][VZ] + 
-					a.mV[VZ] * mMatrix[VZ][VZ] +
-					mMatrix[VW][VZ]);
-}
-
-inline void LLV4Matrix4::multiply(const LLVector3 &a, LLV4Vector3& o) const
-{
-	o.setVec(		a.mV[VX] * mMatrix[VX][VX] + 
-					a.mV[VY] * mMatrix[VY][VX] + 
-					a.mV[VZ] * mMatrix[VZ][VX] +
-					mMatrix[VW][VX],
-					 
-					a.mV[VX] * mMatrix[VX][VY] + 
-					a.mV[VY] * mMatrix[VY][VY] + 
-					a.mV[VZ] * mMatrix[VZ][VY] +
-					mMatrix[VW][VY],
-					 
-					a.mV[VX] * mMatrix[VX][VZ] + 
-					a.mV[VY] * mMatrix[VY][VZ] + 
-					a.mV[VZ] * mMatrix[VZ][VZ] +
-					mMatrix[VW][VZ]);
-}
-
-inline const LLV4Matrix4& LLV4Matrix4::translate(const LLV4Vector3 &vec)
-{
-	mMatrix[3][0] += vec.mV[0];
-	mMatrix[3][1] += vec.mV[1];
-	mMatrix[3][2] += vec.mV[2];
-	return (*this);
-}
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-// LLV4Matrix4
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-#endif
-
-inline const LLV4Matrix4& LLV4Matrix4::operator=(const LLMatrix4& a)
-{
-	memcpy(mMatrix, a.mMatrix, sizeof(F32) * 16 );
-	return *this;
-}
-
-inline const LLV4Matrix4& LLV4Matrix4::transpose()
-{
-#if LL_VECTORIZE && defined(_MM_TRANSPOSE4_PS)
-	_MM_TRANSPOSE4_PS(mV[VX], mV[VY], mV[VZ], mV[VW]);
-#else
-	LLV4Matrix4 mat;
-	mat.mMatrix[0][0] = mMatrix[0][0];
-	mat.mMatrix[1][0] = mMatrix[0][1];
-	mat.mMatrix[2][0] = mMatrix[0][2];
-	mat.mMatrix[3][0] = mMatrix[0][3];
-
-	mat.mMatrix[0][1] = mMatrix[1][0];
-	mat.mMatrix[1][1] = mMatrix[1][1];
-	mat.mMatrix[2][1] = mMatrix[1][2];
-	mat.mMatrix[3][1] = mMatrix[1][3];
-
-	mat.mMatrix[0][2] = mMatrix[2][0];
-	mat.mMatrix[1][2] = mMatrix[2][1];
-	mat.mMatrix[2][2] = mMatrix[2][2];
-	mat.mMatrix[3][2] = mMatrix[2][3];
-
-	mat.mMatrix[0][3] = mMatrix[3][0];
-	mat.mMatrix[1][3] = mMatrix[3][1];
-	mat.mMatrix[2][3] = mMatrix[3][2];
-	mat.mMatrix[3][3] = mMatrix[3][3];
-
-	*this = mat;
-#endif
-	return *this;
-}
-
-inline const LLV4Matrix4& LLV4Matrix4::translate(const LLVector3 &vec)
-{
-	mMatrix[3][0] += vec.mV[0];
-	mMatrix[3][1] += vec.mV[1];
-	mMatrix[3][2] += vec.mV[2];
-	return (*this);
-}
-
-inline LLVector3 operator*(const LLVector3 &a, const LLV4Matrix4 &b)
-{
-	return LLVector3(a.mV[VX] * b.mMatrix[VX][VX] + 
-					 a.mV[VY] * b.mMatrix[VY][VX] + 
-					 a.mV[VZ] * b.mMatrix[VZ][VX] +
-					 b.mMatrix[VW][VX],
-					 
-					 a.mV[VX] * b.mMatrix[VX][VY] + 
-					 a.mV[VY] * b.mMatrix[VY][VY] + 
-					 a.mV[VZ] * b.mMatrix[VZ][VY] +
-					 b.mMatrix[VW][VY],
-					 
-					 a.mV[VX] * b.mMatrix[VX][VZ] + 
-					 a.mV[VY] * b.mMatrix[VY][VZ] + 
-					 a.mV[VZ] * b.mMatrix[VZ][VZ] +
-					 b.mMatrix[VW][VZ]);
-}
-
-
-#endif
diff --git a/indra/llmath/llv4vector3.h b/indra/llmath/llv4vector3.h
deleted file mode 100644
index a340d53f5ae621169d8a41ef3d566a75c6304c92..0000000000000000000000000000000000000000
--- a/indra/llmath/llv4vector3.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/** 
- * @file llviewerjointmesh.cpp
- * @brief LLV4* class header file - vector processor enabled math
- *
- * $LicenseInfo:firstyear=2007&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_LLV4VECTOR3_H
-#define LL_LLV4VECTOR3_H
-
-#include "llv4math.h"
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-// LLV4Vector3
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-LL_LLV4MATH_ALIGN_PREFIX
-
-class LLV4Vector3
-{
-public:
-	union {
-		F32		mV[LLV4_NUM_AXIS];
-		V4F32	v;
-	};
-
-	enum {
-		ALIGNMENT = 16
-		};
-
-	void				setVec(F32 x, F32 y, F32 z);
-	void				setVec(F32 a);
-}
-
-LL_LLV4MATH_ALIGN_POSTFIX;
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-// LLV4Vector3
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-
-inline void	LLV4Vector3::setVec(F32 x, F32 y, F32 z)
-{
-	mV[VX] = x;
-	mV[VY] = y;
-	mV[VZ] = z;
-}
-
-inline void	LLV4Vector3::setVec(F32 a)
-{
-#if LL_VECTORIZE
-	v = _mm_set1_ps(a);
-#else
-	setVec(a, a, a);
-#endif
-}
-
-#endif
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 1a95f9cd4631e7aa2860459bfb157c8b4fe14768..761fc171c466784d1cb5561d97a2e2814e46af3d 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -2078,6 +2078,7 @@ LLVolume::LLVolume(const LLVolumeParams &params, const F32 detail, const BOOL ge
 	mFaceMask = 0x0;
 	mDetail = detail;
 	mSculptLevel = -2;
+	mSurfaceArea = 1.f; //only calculated for sculpts, defaults to 1 for all other prims
 	mIsMeshAssetLoaded = FALSE;
 	mLODScaleBias.setVec(1,1,1);
 	mHullPoints = NULL;
@@ -3144,6 +3145,8 @@ void LLVolume::sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components,
 		{
 			F32 area = sculptGetSurfaceArea();
 
+			mSurfaceArea = area;
+
 			const F32 SCULPT_MAX_AREA = 384.f;
 
 			if (area < SCULPT_MIN_AREA || area > SCULPT_MAX_AREA)
@@ -4305,15 +4308,25 @@ S32 LLVolume::getNumTriangleIndices() const
 }
 
 
-S32 LLVolume::getNumTriangles() const
+S32 LLVolume::getNumTriangles(S32* vcount) const
 {
 	U32 triangle_count = 0;
+	U32 vertex_count = 0;
 
 	for (S32 i = 0; i < getNumVolumeFaces(); ++i)
 	{
-		triangle_count += getVolumeFace(i).mNumIndices/3;
+		const LLVolumeFace& face = getVolumeFace(i);
+		triangle_count += face.mNumIndices/3;
+
+		vertex_count += face.mNumVertices;
 	}
 
+
+	if (vcount)
+	{
+		*vcount = vertex_count;
+	}
+	
 	return triangle_count;
 }
 
@@ -4607,18 +4620,83 @@ S32 LLVolume::lineSegmentIntersect(const LLVector4a& start, const LLVector4a& en
 				genBinormals(i);
 			}
 
-			if (!face.mOctree)
-			{
-				face.createOctree();
-			}
-			
-			//LLVector4a* p = (LLVector4a*) face.mPositions;
+			if (isUnique())
+			{ //don't bother with an octree for flexi volumes
+				U32 tri_count = face.mNumIndices/3;
+
+				for (U32 j = 0; j < tri_count; ++j)
+				{
+					U16 idx0 = face.mIndices[j*3+0];
+					U16 idx1 = face.mIndices[j*3+1];
+					U16 idx2 = face.mIndices[j*3+2];
+
+					const LLVector4a& v0 = face.mPositions[idx0];
+					const LLVector4a& v1 = face.mPositions[idx1];
+					const LLVector4a& v2 = face.mPositions[idx2];
+				
+					F32 a,b,t;
 
-			LLOctreeTriangleRayIntersect intersect(start, dir, &face, &closest_t, intersection, tex_coord, normal, bi_normal);
-			intersect.traverse(face.mOctree);
-			if (intersect.mHitFace)
+					if (LLTriangleRayIntersect(v0, v1, v2,
+							start, dir, a, b, t))
+					{
+						if ((t >= 0.f) &&      // if hit is after start
+							(t <= 1.f) &&      // and before end
+							(t < closest_t))   // and this hit is closer
+						{
+							closest_t = t;
+							hit_face = i;
+
+							if (intersection != NULL)
+							{
+								LLVector4a intersect = dir;
+								intersect.mul(closest_t);
+								intersect.add(start);
+								intersection->set(intersect.getF32ptr());
+							}
+
+
+							if (tex_coord != NULL)
+							{
+								LLVector2* tc = (LLVector2*) face.mTexCoords;
+								*tex_coord = ((1.f - a - b)  * tc[idx0] +
+									a              * tc[idx1] +
+									b              * tc[idx2]);
+
+							}
+
+							if (normal!= NULL)
+							{
+								LLVector4* norm = (LLVector4*) face.mNormals;
+
+								*normal		= ((1.f - a - b)  * LLVector3(norm[idx0]) + 
+									a              * LLVector3(norm[idx1]) +
+									b              * LLVector3(norm[idx2]));
+							}
+
+							if (bi_normal != NULL)
+							{
+								LLVector4* binormal = (LLVector4*) face.mBinormals;
+								*bi_normal = ((1.f - a - b)  * LLVector3(binormal[idx0]) + 
+										a              * LLVector3(binormal[idx1]) +
+										b              * LLVector3(binormal[idx2]));
+							}
+						}
+					}
+				}
+			}
+			else
 			{
-				hit_face = i;
+				if (!face.mOctree)
+				{
+					face.createOctree();
+				}
+			
+				LLOctreeTriangleRayIntersect intersect(start, dir, &face, &closest_t, intersection, tex_coord, normal, bi_normal);
+				intersect.traverse(face.mOctree);
+				if (intersect.mHitFace)
+				{
+					hit_face = i;
+				}
 			}
 		}		
 	}
diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h
index f0e59a3c005d5ecf7f2d004beadd0f35051bfd88..76cf9de613e3fc3d6c98d82d819436506c4659ce 100644
--- a/indra/llmath/llvolume.h
+++ b/indra/llmath/llvolume.h
@@ -963,6 +963,7 @@ class LLVolume : public LLRefCount
 	S32	getNumFaces() const;
 	S32 getNumVolumeFaces() const							{ return mVolumeFaces.size(); }
 	F32 getDetail() const									{ return mDetail; }
+	F32 getSurfaceArea() const								{ return mSurfaceArea; }
 	const LLVolumeParams& getParams() const					{ return mParams; }
 	LLVolumeParams getCopyOfParams() const					{ return mParams; }
 	const LLProfile& getProfile() const						{ return *mProfilep; }
@@ -990,7 +991,7 @@ class LLVolume : public LLRefCount
 	S32 getNumTriangleIndices() const;
 	static void getLoDTriangleCounts(const LLVolumeParams& params, S32* counts);
 
-	S32 getNumTriangles() const;
+	S32 getNumTriangles(S32* vcount = NULL) const;
 
 	void generateSilhouetteVertices(std::vector<LLVector3> &vertices, 
 									std::vector<LLVector3> &normals, 
@@ -1065,6 +1066,7 @@ class LLVolume : public LLRefCount
 	BOOL mUnique;
 	F32 mDetail;
 	S32 mSculptLevel;
+	F32 mSurfaceArea; //unscaled surface area
 	BOOL mIsMeshAssetLoaded;
 	
 	LLVolumeParams mParams;
diff --git a/indra/llmath/llvolumemgr.cpp b/indra/llmath/llvolumemgr.cpp
index 42180197feb14e04ea0a4aeb2376518eeaf4feb0..c60b75008837f770c63c324e57f917f5f6e97153 100644
--- a/indra/llmath/llvolumemgr.cpp
+++ b/indra/llmath/llvolumemgr.cpp
@@ -49,7 +49,7 @@ LLVolumeMgr::LLVolumeMgr()
 {
 	// the LLMutex magic interferes with easy unit testing,
 	// so you now must manually call useMutex() to use it
-	//mDataMutex = new LLMutex;
+	//mDataMutex = new LLMutex(gAPRPoolp);
 }
 
 LLVolumeMgr::~LLVolumeMgr()
@@ -216,7 +216,7 @@ void LLVolumeMgr::useMutex()
 { 
 	if (!mDataMutex)
 	{
-		mDataMutex = new LLMutex;
+		mDataMutex = new LLMutex(gAPRPoolp);
 	}
 }
 
diff --git a/indra/llmessage/llares.cpp b/indra/llmessage/llares.cpp
index fab9858b697f76e49847afa58ec1cb43ab902b46..5a67035ed15fff56a9d42742c26c74dee8b36f4f 100644
--- a/indra/llmessage/llares.cpp
+++ b/indra/llmessage/llares.cpp
@@ -28,7 +28,6 @@
 
 #include "linden_common.h"
 #include "llares.h"
-#include "llscopedvolatileaprpool.h"
 
 #include <ares_dns.h>
 #include <ares_version.h>
@@ -465,6 +464,11 @@ void LLAres::search(const std::string &query, LLResType type,
 
 bool LLAres::process(U64 timeout)
 {
+	if (!gAPRPoolp)
+	{
+		ll_init_apr();
+	}
+
 	ares_socket_t socks[ARES_GETSOCK_MAXNUM];
 	apr_pollfd_t aprFds[ARES_GETSOCK_MAXNUM];
 	apr_int32_t nsds = 0;	
@@ -478,7 +482,10 @@ bool LLAres::process(U64 timeout)
 		return nsds > 0;
 	}
 
-	LLScopedVolatileAPRPool scoped_pool;
+	apr_status_t status;
+	LLAPRPool pool;
+	status = pool.getStatus() ;
+	ll_apr_assert_status(status);
 
 	for (int i = 0; i < ARES_GETSOCK_MAXNUM; i++)
 	{
@@ -495,7 +502,7 @@ bool LLAres::process(U64 timeout)
 
 		apr_socket_t *aprSock = NULL;
 
-		apr_status_t status = apr_os_sock_put(&aprSock, (apr_os_sock_t *) &socks[i], scoped_pool);
+		status = apr_os_sock_put(&aprSock, (apr_os_sock_t *) &socks[i], pool.getAPRPool());
 		if (status != APR_SUCCESS)
 		{
 			ll_apr_warn_status(status);
@@ -504,7 +511,7 @@ bool LLAres::process(U64 timeout)
 
 		aprFds[nactive].desc.s = aprSock;
 		aprFds[nactive].desc_type = APR_POLL_SOCKET;
-		aprFds[nactive].p = scoped_pool;
+		aprFds[nactive].p = pool.getAPRPool();
 		aprFds[nactive].rtnevents = 0;
 		aprFds[nactive].client_data = &socks[i];
 
@@ -513,7 +520,7 @@ bool LLAres::process(U64 timeout)
 
 	if (nactive > 0)
 	{
-		apr_status_t status = apr_poll(aprFds, nactive, &nsds, timeout);
+		status = apr_poll(aprFds, nactive, &nsds, timeout);
 
 		if (status != APR_SUCCESS && status != APR_TIMEUP)
 		{
diff --git a/indra/llmessage/llassetstorage.cpp b/indra/llmessage/llassetstorage.cpp
index 31cdb1219bd3d1235c915c5e0c5dcafc784f6d92..9b86daebe5d93441a6541c8f47be17bd3356518f 100644
--- a/indra/llmessage/llassetstorage.cpp
+++ b/indra/llmessage/llassetstorage.cpp
@@ -149,8 +149,8 @@ void LLAssetInfo::setFromNameValue( const LLNameValue& nv )
 	setName( buf );
 	buf.assign( str, pos2, std::string::npos );
 	setDescription( buf );
-	llinfos << "uuid: " << mUuid << llendl;
-	llinfos << "creator: " << mCreatorID << llendl;
+	LL_DEBUGS("AssetStorage") << "uuid: " << mUuid << llendl;
+	LL_DEBUGS("AssetStorage") << "creator: " << mCreatorID << llendl;
 }
 
 ///----------------------------------------------------------------------------
@@ -434,9 +434,9 @@ bool LLAssetStorage::findInStaticVFSAndInvokeCallback(const LLUUID& uuid, LLAsse
 // IW - uuid is passed by value to avoid side effects, please don't re-add &    
 void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LLGetAssetCallback callback, void *user_data, BOOL is_priority)
 {
-	lldebugs << "LLAssetStorage::getAssetData() - " << uuid << "," << LLAssetType::lookup(type) << llendl;
+	LL_DEBUGS("AssetStorage") << "LLAssetStorage::getAssetData() - " << uuid << "," << LLAssetType::lookup(type) << llendl;
 
-	llinfos << "ASSET_TRACE requesting " << uuid << " type " << LLAssetType::lookup(type) << llendl;
+	LL_DEBUGS("AssetStorage") << "ASSET_TRACE requesting " << uuid << " type " << LLAssetType::lookup(type) << llendl;
 
 	if (user_data)
 	{
@@ -446,7 +446,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LL
 
 	if (mShutDown)
 	{
-		llinfos << "ASSET_TRACE cancelled " << uuid << " type " << LLAssetType::lookup(type) << " shutting down" << llendl;
+		LL_DEBUGS("AssetStorage") << "ASSET_TRACE cancelled " << uuid << " type " << LLAssetType::lookup(type) << " shutting down" << llendl;
 
 		if (callback)
 		{
@@ -468,7 +468,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LL
 	// Try static VFS first.
 	if (findInStaticVFSAndInvokeCallback(uuid,type,callback,user_data))
 	{
-		llinfos << "ASSET_TRACE asset " << uuid << " found in static VFS" << llendl;
+		LL_DEBUGS("AssetStorage") << "ASSET_TRACE asset " << uuid << " found in static VFS" << llendl;
 		return;
 	}
 
@@ -486,7 +486,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LL
 			callback(mVFS, uuid, type, user_data, LL_ERR_NOERR, LL_EXSTAT_VFS_CACHED);
 		}
 
-		llinfos << "ASSET_TRACE asset " << uuid << " found in VFS" << llendl;
+		LL_DEBUGS("AssetStorage") << "ASSET_TRACE asset " << uuid << " found in VFS" << llendl;
 	}
 	else
 	{
@@ -520,7 +520,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, LL
 		}
 		if (duplicate)
 		{
-			llinfos << "Adding additional non-duplicate request for asset " << uuid 
+			LL_DEBUGS("AssetStorage") << "Adding additional non-duplicate request for asset " << uuid 
 					<< "." << LLAssetType::lookup(type) << llendl;
 		}
 		
@@ -584,9 +584,9 @@ void LLAssetStorage::downloadCompleteCallback(
 	LLAssetType::EType file_type,
 	void* user_data, LLExtStat ext_status)
 {
-	llinfos << "ASSET_TRACE asset " << file_id << " downloadCompleteCallback" << llendl;
+	LL_DEBUGS("AssetStorage") << "ASSET_TRACE asset " << file_id << " downloadCompleteCallback" << llendl;
 
-	lldebugs << "LLAssetStorage::downloadCompleteCallback() for " << file_id
+	LL_DEBUGS("AssetStorage") << "LLAssetStorage::downloadCompleteCallback() for " << file_id
 		 << "," << LLAssetType::lookup(file_type) << llendl;
 	LLAssetRequest* req = (LLAssetRequest*)user_data;
 	if(!req)
@@ -731,7 +731,7 @@ void LLAssetStorage::getEstateAsset(const LLHost &object_sim, const LLUUID &agen
 			tpvf.setAsset(asset_id, atype);
 			tpvf.setCallback(downloadEstateAssetCompleteCallback, req);
 
-			llinfos << "Starting transfer for " << asset_id << llendl;
+			LL_DEBUGS("AssetStorage") << "Starting transfer for " << asset_id << llendl;
 			LLTransferTargetChannel *ttcp = gTransferManager.getTargetChannel(source_host, LLTCT_ASSET);
 			ttcp->requestTransfer(spe, tpvf, 100.f + (is_priority ? 1.f : 0.f));
 		}
@@ -871,7 +871,7 @@ void LLAssetStorage::getInvItemAsset(const LLHost &object_sim, const LLUUID &age
 			tpvf.setAsset(asset_id, atype);
 			tpvf.setCallback(downloadInvItemCompleteCallback, req);
 
-			llinfos << "Starting transfer for inventory asset "
+			LL_DEBUGS("AssetStorage") << "Starting transfer for inventory asset "
 				<< item_id << " owned by " << owner_id << "," << task_id
 				<< llendl;
 			LLTransferTargetChannel *ttcp = gTransferManager.getTargetChannel(source_host, LLTCT_ASSET);
@@ -1211,7 +1211,7 @@ bool LLAssetStorage::deletePendingRequest(LLAssetStorage::ERequestType rt,
 	request_list_t* requests = getRequestList(rt);
 	if (deletePendingRequestImpl(requests, asset_type, asset_id))
 	{
-		llinfos << "Asset " << getRequestName(rt) << " request for "
+		LL_DEBUGS("AssetStorage") << "Asset " << getRequestName(rt) << " request for "
 				<< asset_id << "." << LLAssetType::lookup(asset_type)
 				<< " removed from pending queue." << llendl;
 		return true;
@@ -1307,7 +1307,7 @@ void LLAssetStorage::getAssetData(const LLUUID uuid, LLAssetType::EType type, vo
 			user_data == ((LLLegacyAssetRequest *)tmp->mUserData)->mUserData)
 		{
 			// this is a duplicate from the same subsystem - throw it away
-			llinfos << "Discarding duplicate request for UUID " << uuid << llendl;
+			LL_DEBUGS("AssetStorage") << "Discarding duplicate request for UUID " << uuid << llendl;
 			return;
 		}
 	}
@@ -1490,7 +1490,7 @@ void LLAssetStorage::reportMetric( const LLUUID& asset_id, const LLAssetType::ET
 {
 	if( !metric_recipient )
 	{
-		llinfos << "Couldn't store LLAssetStoreage::reportMetric - no metrics_recipient" << llendl;
+		LL_DEBUGS("AssetStorage") << "Couldn't store LLAssetStoreage::reportMetric - no metrics_recipient" << llendl;
 		return;
 	}
 
diff --git a/indra/llmessage/llbuffer.cpp b/indra/llmessage/llbuffer.cpp
index 0316797f00c10737c817efb6d06d2f91c35b5d05..250cace6e96825881a16fe34b94efafc5bb689e8 100644
--- a/indra/llmessage/llbuffer.cpp
+++ b/indra/llmessage/llbuffer.cpp
@@ -32,6 +32,9 @@
 #include "llmath.h"
 #include "llmemtype.h"
 #include "llstl.h"
+#include "llthread.h"
+
+#define ASSERT_LLBUFFERARRAY_MUTEX_LOCKED llassert(!mMutexp || mMutexp->isSelfLocked());
 
 /** 
  * LLSegment
@@ -224,7 +227,8 @@ void LLHeapBuffer::allocate(S32 size)
  * LLBufferArray
  */
 LLBufferArray::LLBufferArray() :
-	mNextBaseChannel(0)
+	mNextBaseChannel(0),
+	mMutexp(NULL)
 {
 	LLMemType m1(LLMemType::MTYPE_IO_BUFFER);
 }
@@ -233,6 +237,8 @@ LLBufferArray::~LLBufferArray()
 {
 	LLMemType m1(LLMemType::MTYPE_IO_BUFFER);
 	std::for_each(mBuffers.begin(), mBuffers.end(), DeletePointer());
+
+	delete mMutexp;
 }
 
 // static
@@ -243,14 +249,57 @@ LLChannelDescriptors LLBufferArray::makeChannelConsumer(
 	return rv;
 }
 
+void LLBufferArray::lock()
+{
+	if(mMutexp)
+	{
+		mMutexp->lock() ;
+	}
+}
+
+void LLBufferArray::unlock()
+{
+	if(mMutexp)
+	{
+		mMutexp->unlock() ;
+	}
+}
+
+LLMutex* LLBufferArray::getMutex()
+{
+	return mMutexp ;
+}
+
+void LLBufferArray::setThreaded(bool threaded)
+{
+	if(threaded)
+	{
+		if(!mMutexp)
+		{
+			mMutexp = new LLMutex(NULL);
+		}
+	}
+	else
+	{
+		if(mMutexp)
+		{
+			delete mMutexp ;
+			mMutexp = NULL ;
+		}
+	}
+}
+
 LLChannelDescriptors LLBufferArray::nextChannel()
 {
 	LLChannelDescriptors rv(mNextBaseChannel++);
 	return rv;
 }
 
+//mMutexp should be locked before calling this.
 S32 LLBufferArray::capacity() const
 {
+	ASSERT_LLBUFFERARRAY_MUTEX_LOCKED
+
 	S32 total = 0;
 	const_buffer_iterator_t iter = mBuffers.begin();
 	const_buffer_iterator_t end = mBuffers.end();
@@ -263,6 +312,8 @@ S32 LLBufferArray::capacity() const
 
 bool LLBufferArray::append(S32 channel, const U8* src, S32 len)
 {
+	LLMutexLock lock(mMutexp) ;
+
 	LLMemType m1(LLMemType::MTYPE_IO_BUFFER);
 	std::vector<LLSegment> segments;
 	if(copyIntoBuffers(channel, src, len, segments))
@@ -273,8 +324,11 @@ bool LLBufferArray::append(S32 channel, const U8* src, S32 len)
 	return false;
 }
 
+//mMutexp should be locked before calling this.
 bool LLBufferArray::prepend(S32 channel, const U8* src, S32 len)
 {
+	ASSERT_LLBUFFERARRAY_MUTEX_LOCKED
+
 	LLMemType m1(LLMemType::MTYPE_IO_BUFFER);
 	std::vector<LLSegment> segments;
 	if(copyIntoBuffers(channel, src, len, segments))
@@ -293,6 +347,8 @@ bool LLBufferArray::insertAfter(
 {
 	LLMemType m1(LLMemType::MTYPE_IO_BUFFER);
 	std::vector<LLSegment> segments;
+
+	LLMutexLock lock(mMutexp) ;
 	if(mSegments.end() != segment)
 	{
 		++segment;
@@ -305,8 +361,11 @@ bool LLBufferArray::insertAfter(
 	return false;
 }
 
+//mMutexp should be locked before calling this.
 LLBufferArray::segment_iterator_t LLBufferArray::splitAfter(U8* address)
 {
+	ASSERT_LLBUFFERARRAY_MUTEX_LOCKED
+
 	LLMemType m1(LLMemType::MTYPE_IO_BUFFER);
 	segment_iterator_t end = mSegments.end();
 	segment_iterator_t it = getSegment(address);
@@ -335,20 +394,26 @@ LLBufferArray::segment_iterator_t LLBufferArray::splitAfter(U8* address)
 	return rv;
 }
 							   
+//mMutexp should be locked before calling this.
 LLBufferArray::segment_iterator_t LLBufferArray::beginSegment()
 {
+	ASSERT_LLBUFFERARRAY_MUTEX_LOCKED
 	return mSegments.begin();
 }
 
+//mMutexp should be locked before calling this.
 LLBufferArray::segment_iterator_t LLBufferArray::endSegment()
 {
+	ASSERT_LLBUFFERARRAY_MUTEX_LOCKED
 	return mSegments.end();
 }
 
+//mMutexp should be locked before calling this.
 LLBufferArray::segment_iterator_t LLBufferArray::constructSegmentAfter(
 	U8* address,
 	LLSegment& segment)
 {
+	ASSERT_LLBUFFERARRAY_MUTEX_LOCKED
 	LLMemType m1(LLMemType::MTYPE_IO_BUFFER);
 	segment_iterator_t rv = mSegments.begin();
 	segment_iterator_t end = mSegments.end();
@@ -395,8 +460,10 @@ LLBufferArray::segment_iterator_t LLBufferArray::constructSegmentAfter(
 	return rv;
 }
 
+//mMutexp should be locked before calling this.
 LLBufferArray::segment_iterator_t LLBufferArray::getSegment(U8* address)
 {
+	ASSERT_LLBUFFERARRAY_MUTEX_LOCKED
 	segment_iterator_t end = mSegments.end();
 	if(!address)
 	{
@@ -414,9 +481,11 @@ LLBufferArray::segment_iterator_t LLBufferArray::getSegment(U8* address)
 	return end;
 }
 
+//mMutexp should be locked before calling this.
 LLBufferArray::const_segment_iterator_t LLBufferArray::getSegment(
 	U8* address) const
 {
+	ASSERT_LLBUFFERARRAY_MUTEX_LOCKED
 	const_segment_iterator_t end = mSegments.end();
 	if(!address)
 	{
@@ -466,6 +535,8 @@ S32 LLBufferArray::countAfter(S32 channel, U8* start) const
 	S32 count = 0;
 	S32 offset = 0;
 	const_segment_iterator_t it;
+
+	LLMutexLock lock(mMutexp) ;
 	const_segment_iterator_t end = mSegments.end();
 	if(start)
 	{
@@ -517,6 +588,8 @@ U8* LLBufferArray::readAfter(
 	len = 0;
 	S32 bytes_to_copy = 0;
 	const_segment_iterator_t it;
+
+	LLMutexLock lock(mMutexp) ;
 	const_segment_iterator_t end = mSegments.end();
 	if(start)
 	{
@@ -568,6 +641,7 @@ U8* LLBufferArray::seek(
 	U8* start,
 	S32 delta) const
 {
+	ASSERT_LLBUFFERARRAY_MUTEX_LOCKED
 	LLMemType m1(LLMemType::MTYPE_IO_BUFFER);
 	const_segment_iterator_t it;
 	const_segment_iterator_t end = mSegments.end();
@@ -709,9 +783,14 @@ U8* LLBufferArray::seek(
 	return rv;
 }
 
+//test use only
 bool LLBufferArray::takeContents(LLBufferArray& source)
 {
 	LLMemType m1(LLMemType::MTYPE_IO_BUFFER);
+
+	LLMutexLock lock(mMutexp);
+	source.lock();
+
 	std::copy(
 		source.mBuffers.begin(),
 		source.mBuffers.end(),
@@ -723,13 +802,17 @@ bool LLBufferArray::takeContents(LLBufferArray& source)
 		std::back_insert_iterator<segment_list_t>(mSegments));
 	source.mSegments.clear();
 	source.mNextBaseChannel = 0;
+	source.unlock();
+
 	return true;
 }
 
+//mMutexp should be locked before calling this.
 LLBufferArray::segment_iterator_t LLBufferArray::makeSegment(
 	S32 channel,
 	S32 len)
 {
+	ASSERT_LLBUFFERARRAY_MUTEX_LOCKED
 	LLMemType m1(LLMemType::MTYPE_IO_BUFFER);
 	// start at the end of the buffers, because it is the most likely
 	// to have free space.
@@ -765,8 +848,10 @@ LLBufferArray::segment_iterator_t LLBufferArray::makeSegment(
 	return send;
 }
 
+//mMutexp should be locked before calling this.
 bool LLBufferArray::eraseSegment(const segment_iterator_t& erase_iter)
 {
+	ASSERT_LLBUFFERARRAY_MUTEX_LOCKED
 	LLMemType m1(LLMemType::MTYPE_IO_BUFFER);
 
 	// Find out which buffer contains the segment, and if it is found,
@@ -792,13 +877,14 @@ bool LLBufferArray::eraseSegment(const segment_iterator_t& erase_iter)
 	return rv;
 }
 
-
+//mMutexp should be locked before calling this.
 bool LLBufferArray::copyIntoBuffers(
 	S32 channel,
 	const U8* src,
 	S32 len,
 	std::vector<LLSegment>& segments)
 {
+	ASSERT_LLBUFFERARRAY_MUTEX_LOCKED
 	LLMemType m1(LLMemType::MTYPE_IO_BUFFER);
 	if(!src || !len) return false;
 	S32 copied = 0;
diff --git a/indra/llmessage/llbuffer.h b/indra/llmessage/llbuffer.h
index 1c42b6fbc65c3a3b6bd4aadb232f2fd0ea09a756..ccdb9fa7ee9e04c6cae6e1c4579993cae8eb72d8 100644
--- a/indra/llmessage/llbuffer.h
+++ b/indra/llmessage/llbuffer.h
@@ -39,6 +39,7 @@
 #include <list>
 #include <vector>
 
+class LLMutex;
 /** 
  * @class LLChannelDescriptors
  * @brief A way simple interface to accesss channels inside a buffer
@@ -564,6 +565,29 @@ class LLBufferArray
 	 * @return Returns true on success.
 	 */
 	bool eraseSegment(const segment_iterator_t& iter);
+
+	/**
+	* @brief Lock the mutex if it exists
+	* This method locks mMutexp to make accessing LLBufferArray thread-safe
+	*/
+	void lock();
+
+	/**
+	* @brief Unlock the mutex if it exists
+	*/
+	void unlock();
+
+	/**
+	* @brief Return mMutexp
+	*/
+	LLMutex* getMutex();
+
+	/**
+	* @brief Set LLBufferArray to be shared across threads or not
+	* This method is to create mMutexp if is threaded.
+	* @param threaded Indicates this LLBufferArray instance is shared across threads if true.
+	*/
+	void setThreaded(bool threaded);
 	//@}
 
 protected:
@@ -595,6 +619,7 @@ class LLBufferArray
 	S32 mNextBaseChannel;
 	buffer_list_t mBuffers;
 	segment_list_t mSegments;
+	LLMutex* mMutexp;
 };
 
 #endif // LL_LLBUFFER_H
diff --git a/indra/llmessage/llbufferstream.cpp b/indra/llmessage/llbufferstream.cpp
index 6257983c436ed51167b9f5121178f421a1308f57..8d8ad05ad5c61d483626d2c88f67e3d1bc968f88 100644
--- a/indra/llmessage/llbufferstream.cpp
+++ b/indra/llmessage/llbufferstream.cpp
@@ -31,6 +31,7 @@
 
 #include "llbuffer.h"
 #include "llmemtype.h"
+#include "llthread.h"
 
 static const S32 DEFAULT_OUTPUT_SEGMENT_SIZE = 1024 * 4;
 
@@ -62,6 +63,7 @@ int LLBufferStreamBuf::underflow()
 		return EOF;
 	}
 
+	LLMutexLock lock(mBuffer->getMutex());
 	LLBufferArray::segment_iterator_t iter;
 	LLBufferArray::segment_iterator_t end = mBuffer->endSegment();
 	U8* last_pos = (U8*)gptr();
@@ -149,6 +151,7 @@ int LLBufferStreamBuf::overflow(int c)
 	// since we got here, we have a buffer, and we have a character to
 	// put on it.
 	LLBufferArray::segment_iterator_t it;
+	LLMutexLock lock(mBuffer->getMutex());
 	it = mBuffer->makeSegment(mChannels.out(), DEFAULT_OUTPUT_SEGMENT_SIZE);
 	if(it != mBuffer->endSegment())
 	{
@@ -210,6 +213,7 @@ int LLBufferStreamBuf::sync()
 
 	// *NOTE: I bet we could just --address if address is not NULL.
 	// Need to think about that.
+	LLMutexLock lock(mBuffer->getMutex());
 	address = mBuffer->seek(mChannels.out(), address, -1);
 	if(address)
 	{
@@ -273,6 +277,8 @@ streampos LLBufferStreamBuf::seekoff(
 			// NULL is fine
 			break;
 		}
+
+		LLMutexLock lock(mBuffer->getMutex());
 		address = mBuffer->seek(mChannels.in(), base_addr, off);
 		if(address)
 		{
@@ -304,6 +310,8 @@ streampos LLBufferStreamBuf::seekoff(
 			// NULL is fine
 			break;
 		}
+
+		LLMutexLock lock(mBuffer->getMutex());
 		address = mBuffer->seek(mChannels.out(), base_addr, off);
 		if(address)
 		{
diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp
index 6d9213f51b7f53c17b9f18e9b1783ce7ce306a4f..3bcaffc27586ed162a3fdd33582cc3bd64d6bdcb 100644
--- a/indra/llmessage/llcurl.cpp
+++ b/indra/llmessage/llcurl.cpp
@@ -72,10 +72,9 @@
 
 static const U32 EASY_HANDLE_POOL_SIZE		= 5;
 static const S32 MULTI_PERFORM_CALL_REPEAT	= 5;
-static const S32 CURL_REQUEST_TIMEOUT = 30; // seconds
+static const S32 CURL_REQUEST_TIMEOUT = 30; // seconds per operation
 static const S32 MAX_ACTIVE_REQUEST_COUNT = 100;
 
-static 
 // DEBUG //
 S32 gCurlEasyCount = 0;
 S32 gCurlMultiCount = 0;
@@ -86,9 +85,12 @@ S32 gCurlMultiCount = 0;
 std::vector<LLMutex*> LLCurl::sSSLMutex;
 std::string LLCurl::sCAPath;
 std::string LLCurl::sCAFile;
-
-bool LLCurl::sMultiThreaded = false;
-static U32 sMainThreadID = 0;
+LLCurlThread* LLCurl::sCurlThread = NULL ;
+LLMutex* LLCurl::sHandleMutexp = NULL ;
+S32      LLCurl::sTotalHandles = 0 ;
+bool     LLCurl::sNotQuitting = true;
+F32      LLCurl::sCurlRequestTimeOut = 120.f; //seonds
+S32      LLCurl::sMaxHandles = 256; //max number of handles, (multi handles and easy handles combined).
 
 void check_curl_code(CURLcode code)
 {
@@ -221,17 +223,20 @@ namespace boost
 
 std::set<CURL*> LLCurl::Easy::sFreeHandles;
 std::set<CURL*> LLCurl::Easy::sActiveHandles;
-LLMutex* LLCurl::Easy::sHandleMutex = NULL;
-LLMutex* LLCurl::Easy::sMultiMutex = NULL;
+LLMutex* LLCurl::Easy::sHandleMutexp = NULL ;
 
 //static
 CURL* LLCurl::Easy::allocEasyHandle()
 {
+	llassert(LLCurl::getCurlThread()) ;
+
 	CURL* ret = NULL;
-	LLMutexLock lock(sHandleMutex);
+
+	LLMutexLock lock(sHandleMutexp) ;
+
 	if (sFreeHandles.empty())
 	{
-		ret = curl_easy_init();
+		ret = LLCurl::newEasyHandle();
 	}
 	else
 	{
@@ -251,17 +256,27 @@ CURL* LLCurl::Easy::allocEasyHandle()
 //static
 void LLCurl::Easy::releaseEasyHandle(CURL* handle)
 {
+	static const S32 MAX_NUM_FREE_HANDLES = 32 ;
+
 	if (!handle)
 	{
-		llerrs << "handle cannot be NULL!" << llendl;
+		return ; //handle allocation failed.
+		//llerrs << "handle cannot be NULL!" << llendl;
 	}
 
-	LLMutexLock lock(sHandleMutex);
-	
+	LLMutexLock lock(sHandleMutexp) ;
 	if (sActiveHandles.find(handle) != sActiveHandles.end())
 	{
 		sActiveHandles.erase(handle);
-		sFreeHandles.insert(handle);
+
+		if(sFreeHandles.size() < MAX_NUM_FREE_HANDLES)
+		{
+			sFreeHandles.insert(handle);
+		}
+		else
+		{
+			LLCurl::deleteEasyHandle(handle) ;
+		}
 	}
 	else
 	{
@@ -304,6 +319,14 @@ LLCurl::Easy::~Easy()
 	--gCurlEasyCount;
 	curl_slist_free_all(mHeaders);
 	for_each(mStrings.begin(), mStrings.end(), DeletePointerArray());
+
+	if (mResponder && LLCurl::sNotQuitting) //aborted
+	{	
+		std::string reason("Request timeout, aborted.") ;
+		mResponder->completedRaw(408, //HTTP_REQUEST_TIME_OUT, timeout, abort
+			reason, mChannels, mOutput);		
+	}
+	mResponder = NULL;
 }
 
 void LLCurl::Easy::resetState()
@@ -476,6 +499,7 @@ void LLCurl::Easy::prepRequest(const std::string& url,
 	LLProxy::getInstance()->applyProxySettings(this);
 
 	mOutput.reset(new LLBufferArray);
+	mOutput->setThreaded(true);
 	setopt(CURLOPT_WRITEFUNCTION, (void*)&curlWriteCallback);
 	setopt(CURLOPT_WRITEDATA, (void*)this);
 
@@ -519,48 +543,56 @@ void LLCurl::Easy::prepRequest(const std::string& url,
 }
 
 ////////////////////////////////////////////////////////////////////////////
-
-LLCurl::Multi::Multi()
-	: LLThread("Curl Multi"),
-	  mQueued(0),
+LLCurl::Multi::Multi(F32 idle_time_out)
+	: mQueued(0),
 	  mErrorCount(0),
-	  mPerformState(PERFORM_STATE_READY)
+	  mState(STATE_READY),
+	  mDead(FALSE),
+	  mMutexp(NULL),
+	  mDeletionMutexp(NULL),
+	  mEasyMutexp(NULL)
 {
-	mQuitting = false;
-
-	mThreaded = LLCurl::sMultiThreaded && LLThread::currentID() == sMainThreadID;
-	if (mThreaded)
-	{
-		mSignal = new LLCondition();
-	}
-	else
-	{
-		mSignal = NULL;
-	}
-
-	mCurlMultiHandle = curl_multi_init();
+	mCurlMultiHandle = LLCurl::newMultiHandle();
 	if (!mCurlMultiHandle)
 	{
 		llwarns << "curl_multi_init() returned NULL! Easy handles: " << gCurlEasyCount << " Multi handles: " << gCurlMultiCount << llendl;
-		mCurlMultiHandle = curl_multi_init();
+		mCurlMultiHandle = LLCurl::newMultiHandle();
 	}
 	
-	llassert_always(mCurlMultiHandle);
-	++gCurlMultiCount;
+	//llassert_always(mCurlMultiHandle);	
+	
+	if(mCurlMultiHandle)
+	{
+		if(LLCurl::getCurlThread()->getThreaded())
+		{
+			mMutexp = new LLMutex(NULL) ;
+			mDeletionMutexp = new LLMutex(NULL) ;
+			mEasyMutexp = new LLMutex(NULL) ;
+		}
+		LLCurl::getCurlThread()->addMulti(this) ;
+
+		mIdleTimeOut = idle_time_out ;
+		if(mIdleTimeOut < LLCurl::sCurlRequestTimeOut)
+		{
+			mIdleTimeOut = LLCurl::sCurlRequestTimeOut ;
+		}
+
+		++gCurlMultiCount;
+	}
 }
 
 LLCurl::Multi::~Multi()
 {
-	llassert(isStopped());
+	cleanup() ;	
+}
 
-	if (LLCurl::sMultiThreaded)
+void LLCurl::Multi::cleanup()
+{
+	if(!mCurlMultiHandle)
 	{
-		LLCurl::Easy::sMultiMutex->lock();
+		return ; //nothing to clean.
 	}
 
-	delete mSignal;
-	mSignal = NULL;
-
 	// Clean up active
 	for(easy_active_list_t::iterator iter = mEasyActiveList.begin();
 		iter != mEasyActiveList.end(); ++iter)
@@ -576,76 +608,157 @@ LLCurl::Multi::~Multi()
 	for_each(mEasyFreeList.begin(), mEasyFreeList.end(), DeletePointer());	
 	mEasyFreeList.clear();
 
-	check_curl_multi_code(curl_multi_cleanup(mCurlMultiHandle));
+	check_curl_multi_code(LLCurl::deleteMultiHandle(mCurlMultiHandle));
+	mCurlMultiHandle = NULL ;
+
+	delete mMutexp ;
+	mMutexp = NULL ;
+	delete mDeletionMutexp ;
+	mDeletionMutexp = NULL ;
+	delete mEasyMutexp ;
+	mEasyMutexp = NULL ;
+	
+	mQueued = 0 ;
+	mState = STATE_COMPLETED;
+	
 	--gCurlMultiCount;
 
-	if (LLCurl::sMultiThreaded)
+	return ;
+}
+
+void LLCurl::Multi::lock()
+{
+	if(mMutexp)
 	{
-		LLCurl::Easy::sMultiMutex->unlock();
+		mMutexp->lock() ;
 	}
 }
 
-CURLMsg* LLCurl::Multi::info_read(S32* msgs_in_queue)
+void LLCurl::Multi::unlock()
 {
-	CURLMsg* curlmsg = curl_multi_info_read(mCurlMultiHandle, msgs_in_queue);
-	return curlmsg;
+	if(mMutexp)
+	{
+		mMutexp->unlock() ;
+	}
+}
+
+void LLCurl::Multi::markDead()
+{
+	LLMutexLock lock(mDeletionMutexp) ;
+	
+	mDead = TRUE ;
+	LLCurl::getCurlThread()->setPriority(mHandle, LLQueuedThread::PRIORITY_URGENT) ; 
 }
 
-void LLCurl::Multi::perform()
+void LLCurl::Multi::setState(LLCurl::Multi::ePerformState state)
 {
-	if (mThreaded)
+	lock() ;
+	mState = state ;
+	unlock() ;
+
+	if(mState == STATE_READY)
 	{
-		if (mPerformState == PERFORM_STATE_READY)
-		{
-			mSignal->signal();
-		}
+		LLCurl::getCurlThread()->setPriority(mHandle, LLQueuedThread::PRIORITY_NORMAL) ;
+	}	
+}
+
+LLCurl::Multi::ePerformState LLCurl::Multi::getState()
+{
+	return mState;
+}
+	
+bool LLCurl::Multi::isCompleted() 
+{
+	return STATE_COMPLETED == getState() ;
+}
+
+bool LLCurl::Multi::waitToComplete()
+{
+	if(!isValid())
+	{
+		return true ;
 	}
-	else
+
+	if(!mMutexp) //not threaded
+	{
+		doPerform() ;
+		return true ;
+	}
+
+	bool completed = (STATE_COMPLETED == mState) ;
+	if(!completed)
 	{
-		doPerform();
+		LLCurl::getCurlThread()->setPriority(mHandle, LLQueuedThread::PRIORITY_HIGH) ;
 	}
+	
+	return completed;
 }
 
-void LLCurl::Multi::run()
+CURLMsg* LLCurl::Multi::info_read(S32* msgs_in_queue)
 {
-	llassert(mThreaded);
+	LLMutexLock lock(mMutexp) ;
 
-	while (!mQuitting)
-	{
-		mSignal->wait();
-		mPerformState = PERFORM_STATE_PERFORMING;
-		if (!mQuitting)
-		{
-			LLMutexLock lock(LLCurl::Easy::sMultiMutex);
-			doPerform();
-		}
-	}
+	CURLMsg* curlmsg = curl_multi_info_read(mCurlMultiHandle, msgs_in_queue);
+	return curlmsg;
 }
 
-void LLCurl::Multi::doPerform()
+//return true if dead
+bool LLCurl::Multi::doPerform()
 {
-	S32 q = 0;
-	for (S32 call_count = 0;
-			call_count < MULTI_PERFORM_CALL_REPEAT;
-			call_count += 1)
+	LLMutexLock lock(mDeletionMutexp) ;
+	
+	bool dead = mDead ;
+
+	if(mDead)
 	{
-		CURLMcode code = curl_multi_perform(mCurlMultiHandle, &q);
-		if (CURLM_CALL_MULTI_PERFORM != code || q == 0)
+		setState(STATE_COMPLETED);
+		mQueued = 0 ;
+	}
+	else if(getState() != STATE_COMPLETED)
+	{		
+		setState(STATE_PERFORMING);
+
+		S32 q = 0;
+		for (S32 call_count = 0;
+				call_count < MULTI_PERFORM_CALL_REPEAT;
+				call_count++)
 		{
-			check_curl_multi_code(code);
-			break;
+			LLMutexLock lock(mMutexp) ;
+
+			//WARNING: curl_multi_perform will block for many hundreds of milliseconds
+			// NEVER call this from the main thread, and NEVER allow the main thread to 
+			// wait on a mutex held by this thread while curl_multi_perform is executing
+			CURLMcode code = curl_multi_perform(mCurlMultiHandle, &q);
+			if (CURLM_CALL_MULTI_PERFORM != code || q == 0)
+			{
+				check_curl_multi_code(code);
+			
+				break;
+			}
 		}
-	
+
+		mQueued = q;	
+		setState(STATE_COMPLETED) ;		
+		mIdleTimer.reset() ;
+	}
+	else if(mIdleTimer.getElapsedTimeF32() > mIdleTimeOut) //idle for too long, remove it.
+	{
+		dead = true ;
 	}
-	mQueued = q;
-	mPerformState = PERFORM_STATE_COMPLETED;
+
+	return dead ;
 }
 
 S32 LLCurl::Multi::process()
 {
-	perform();
+	if(!isValid())
+	{
+		return 0 ;
+	}
+
+	waitToComplete() ;
 
-	if (mPerformState != PERFORM_STATE_COMPLETED)
+	if (getState() != STATE_COMPLETED)
 	{
 		return 0;
 	}
@@ -660,10 +773,19 @@ S32 LLCurl::Multi::process()
 		if (msg->msg == CURLMSG_DONE)
 		{
 			U32 response = 0;
-			easy_active_map_t::iterator iter = mEasyActiveMap.find(msg->easy_handle);
-			if (iter != mEasyActiveMap.end())
+			Easy* easy = NULL ;
+
+			{
+				LLMutexLock lock(mEasyMutexp) ;
+				easy_active_map_t::iterator iter = mEasyActiveMap.find(msg->easy_handle);
+				if (iter != mEasyActiveMap.end())
+				{
+					easy = iter->second;
+				}
+			}
+
+			if(easy)
 			{
-				Easy* easy = iter->second;
 				response = easy->report(msg->data.result);
 				removeEasy(easy);
 			}
@@ -681,25 +803,28 @@ S32 LLCurl::Multi::process()
 		}
 	}
 
-	mPerformState = PERFORM_STATE_READY;
+	setState(STATE_READY);
+
 	return processed;
 }
 
 LLCurl::Easy* LLCurl::Multi::allocEasy()
 {
-	Easy* easy = 0;
+	Easy* easy = 0;	
 
 	if (mEasyFreeList.empty())
-	{
+	{		
 		easy = Easy::getEasy();
 	}
 	else
 	{
+		LLMutexLock lock(mEasyMutexp) ;
 		easy = *(mEasyFreeList.begin());
 		mEasyFreeList.erase(easy);
 	}
 	if (easy)
 	{
+		LLMutexLock lock(mEasyMutexp) ;
 		mEasyActiveList.insert(easy);
 		mEasyActiveMap[easy->getCurlHandle()] = easy;
 	}
@@ -708,6 +833,7 @@ LLCurl::Easy* LLCurl::Multi::allocEasy()
 
 bool LLCurl::Multi::addEasy(Easy* easy)
 {
+	LLMutexLock lock(mMutexp) ;
 	CURLMcode mcode = curl_multi_add_handle(mCurlMultiHandle, easy->getCurlHandle());
 	check_curl_multi_code(mcode);
 	//if (mcode != CURLM_OK)
@@ -720,25 +846,156 @@ bool LLCurl::Multi::addEasy(Easy* easy)
 
 void LLCurl::Multi::easyFree(Easy* easy)
 {
+	if(mEasyMutexp)
+	{
+		mEasyMutexp->lock() ;
+	}
+
 	mEasyActiveList.erase(easy);
 	mEasyActiveMap.erase(easy->getCurlHandle());
+
 	if (mEasyFreeList.size() < EASY_HANDLE_POOL_SIZE)
-	{
-		easy->resetState();
+	{		
 		mEasyFreeList.insert(easy);
+		
+		if(mEasyMutexp)
+		{
+			mEasyMutexp->unlock() ;
+		}
+
+		easy->resetState();
 	}
 	else
 	{
+		if(mEasyMutexp)
+		{
+			mEasyMutexp->unlock() ;
+		}
 		delete easy;
 	}
 }
 
 void LLCurl::Multi::removeEasy(Easy* easy)
 {
-	check_curl_multi_code(curl_multi_remove_handle(mCurlMultiHandle, easy->getCurlHandle()));
+	{
+		LLMutexLock lock(mMutexp) ;
+		check_curl_multi_code(curl_multi_remove_handle(mCurlMultiHandle, easy->getCurlHandle()));
+	}
 	easyFree(easy);
 }
 
+//------------------------------------------------------------
+//LLCurlThread
+LLCurlThread::CurlRequest::CurlRequest(handle_t handle, LLCurl::Multi* multi, LLCurlThread* curl_thread) :
+	LLQueuedThread::QueuedRequest(handle, LLQueuedThread::PRIORITY_NORMAL, FLAG_AUTO_COMPLETE),
+	mMulti(multi),
+	mCurlThread(curl_thread)
+{	
+}
+
+LLCurlThread::CurlRequest::~CurlRequest()
+{	
+	if(mMulti)
+	{
+		mCurlThread->deleteMulti(mMulti) ;
+		mMulti = NULL ;
+	}
+}
+
+bool LLCurlThread::CurlRequest::processRequest()
+{
+	bool completed = true ;
+	if(mMulti)
+	{
+		completed = mCurlThread->doMultiPerform(mMulti) ;
+
+		if(!completed)
+		{
+			setPriority(LLQueuedThread::PRIORITY_LOW) ;
+		}
+	}
+
+	return completed ;
+}
+
+void LLCurlThread::CurlRequest::finishRequest(bool completed)
+{
+	if(mMulti->isDead())
+	{
+		mCurlThread->deleteMulti(mMulti) ;
+	}
+	else
+	{
+		mCurlThread->cleanupMulti(mMulti) ; //being idle too long, remove the request.
+	}
+
+	mMulti = NULL ;
+}
+	
+LLCurlThread::LLCurlThread(bool threaded) :
+	LLQueuedThread("curlthread", threaded)
+{
+}
+	
+//virtual 
+LLCurlThread::~LLCurlThread() 
+{
+}
+
+S32 LLCurlThread::update(F32 max_time_ms)
+{	
+	return LLQueuedThread::update(max_time_ms);
+}
+
+void LLCurlThread::addMulti(LLCurl::Multi* multi)
+{
+	multi->mHandle = generateHandle() ;
+
+	CurlRequest* req = new CurlRequest(multi->mHandle, multi, this) ;
+
+	if (!addRequest(req))
+	{
+		llwarns << "curl request added when the thread is quitted" << llendl;
+	}
+}
+	
+void LLCurlThread::killMulti(LLCurl::Multi* multi)
+{
+	if(!multi)
+	{
+		return ;
+	}
+
+	if(multi->isValid())
+	{
+		multi->markDead() ;
+	}
+	else
+	{
+		deleteMulti(multi) ;
+	}
+}
+
+//private
+bool LLCurlThread::doMultiPerform(LLCurl::Multi* multi) 
+{
+	return multi->doPerform() ;
+}
+
+//private
+void LLCurlThread::deleteMulti(LLCurl::Multi* multi) 
+{
+	delete multi ;
+}
+
+//private
+void LLCurlThread::cleanupMulti(LLCurl::Multi* multi) 
+{
+	multi->cleanup() ;
+}
+
+//------------------------------------------------------------
+
 //static
 std::string LLCurl::strerror(CURLcode errorcode)
 {
@@ -753,39 +1010,30 @@ LLCurlRequest::LLCurlRequest() :
 	mActiveMulti(NULL),
 	mActiveRequestCount(0)
 {
-	mThreadID = LLThread::currentID();
 	mProcessing = FALSE;
 }
 
 LLCurlRequest::~LLCurlRequest()
 {
-	llassert_always(mThreadID == LLThread::currentID());
-
 	//stop all Multi handle background threads
 	for (curlmulti_set_t::iterator iter = mMultiSet.begin(); iter != mMultiSet.end(); ++iter)
 	{
-		LLCurl::Multi* multi = *iter;
-		multi->mQuitting = true;
-		if (multi->mThreaded)
-		{
-			while (!multi->isStopped())
-			{
-				multi->mSignal->signal();
-				apr_sleep(1000);
-			}
-		}
+		LLCurl::getCurlThread()->killMulti(*iter) ;
 	}
-	for_each(mMultiSet.begin(), mMultiSet.end(), DeletePointer());
+	mMultiSet.clear() ;
 }
 
 void LLCurlRequest::addMulti()
 {
-	llassert_always(mThreadID == LLThread::currentID());
 	LLCurl::Multi* multi = new LLCurl::Multi();
-	if (multi->mThreaded)
+	if(!multi->isValid())
 	{
-		multi->start();
+		LLCurl::getCurlThread()->killMulti(multi) ;
+		mActiveMulti = NULL ;
+		mActiveRequestCount = 0 ;
+		return;
 	}
+
 	mMultiSet.insert(multi);
 	mActiveMulti = multi;
 	mActiveRequestCount = 0;
@@ -799,7 +1047,12 @@ LLCurl::Easy* LLCurlRequest::allocEasy()
 	{
 		addMulti();
 	}
-	llassert_always(mActiveMulti);
+	if(!mActiveMulti)
+	{
+		return NULL ;
+	}
+
+	//llassert_always(mActiveMulti);
 	++mActiveRequestCount;
 	LLCurl::Easy* easy = mActiveMulti->allocEasy();
 	return easy;
@@ -901,7 +1154,6 @@ bool LLCurlRequest::post(const std::string& url,
 // Note: call once per frame
 S32 LLCurlRequest::process()
 {
-	llassert_always(mThreadID == LLThread::currentID());
 	S32 res = 0;
 
 	mProcessing = TRUE;
@@ -910,22 +1162,25 @@ S32 LLCurlRequest::process()
 	{
 		curlmulti_set_t::iterator curiter = iter++;
 		LLCurl::Multi* multi = *curiter;
+
+		if(!multi->isValid())
+		{
+			if(multi == mActiveMulti)
+			{				
+				mActiveMulti = NULL ;
+				mActiveRequestCount = 0 ;
+			}
+			mMultiSet.erase(curiter) ;
+			LLCurl::getCurlThread()->killMulti(multi) ;
+			continue ;
+		}
+
 		S32 tres = multi->process();
 		res += tres;
 		if (multi != mActiveMulti && tres == 0 && multi->mQueued == 0)
 		{
 			mMultiSet.erase(curiter);
-			multi->mQuitting = true;
-			if (multi->mThreaded)
-			{
-				while (!multi->isStopped())
-				{
-					multi->mSignal->signal();
-					apr_sleep(1000);
-				}
-			}
-
-			delete multi;
+			LLCurl::getCurlThread()->killMulti(multi);
 		}
 	}
 	mProcessing = FALSE;
@@ -934,15 +1189,27 @@ S32 LLCurlRequest::process()
 
 S32 LLCurlRequest::getQueued()
 {
-	llassert_always(mThreadID == LLThread::currentID());
 	S32 queued = 0;
 	for (curlmulti_set_t::iterator iter = mMultiSet.begin();
 		 iter != mMultiSet.end(); )
 	{
 		curlmulti_set_t::iterator curiter = iter++;
 		LLCurl::Multi* multi = *curiter;
+		
+		if(!multi->isValid())
+		{
+			if(multi == mActiveMulti)
+			{				
+				mActiveMulti = NULL ;
+				mActiveRequestCount = 0 ;
+			}
+			LLCurl::getCurlThread()->killMulti(multi);
+			mMultiSet.erase(curiter) ;
+			continue ;
+		}
+
 		queued += multi->mQueued;
-		if (multi->mPerformState != LLCurl::Multi::PERFORM_STATE_READY)
+		if (multi->getState() != LLCurl::Multi::STATE_READY)
 		{
 			++queued;
 		}
@@ -959,37 +1226,34 @@ LLCurlEasyRequest::LLCurlEasyRequest()
 	  mResultReturned(false)
 {
 	mMulti = new LLCurl::Multi();
-	if (mMulti->mThreaded)
+	
+	if(mMulti->isValid())
 	{
-		mMulti->start();
+		mEasy = mMulti->allocEasy();
+		if (mEasy)
+		{
+			mEasy->setErrorBuffer();
+			mEasy->setCA();
+			// Set proxy settings if configured to do so.
+			LLProxy::getInstance()->applyProxySettings(mEasy);
+		}
 	}
-	mEasy = mMulti->allocEasy();
-	if (mEasy)
+	else
 	{
-		mEasy->setErrorBuffer();
-		mEasy->setCA();
-		// Set proxy settings if configured to do so.
-		LLProxy::getInstance()->applyProxySettings(mEasy);
+		LLCurl::getCurlThread()->killMulti(mMulti) ;
+		mEasy = NULL ;
+		mMulti = NULL ;
 	}
 }
 
 LLCurlEasyRequest::~LLCurlEasyRequest()
 {
-	mMulti->mQuitting = true;
-	if (mMulti->mThreaded)
-	{
-		while (!mMulti->isStopped())
-		{
-			mMulti->mSignal->signal();
-			apr_sleep(1000);
-		}
-	}
-	delete mMulti;
+	LLCurl::getCurlThread()->killMulti(mMulti) ;
 }
 	
 void LLCurlEasyRequest::setopt(CURLoption option, S32 value)
 {
-	if (mEasy)
+	if (isValid() && mEasy)
 	{
 		mEasy->setopt(option, value);
 	}
@@ -997,7 +1261,7 @@ void LLCurlEasyRequest::setopt(CURLoption option, S32 value)
 
 void LLCurlEasyRequest::setoptString(CURLoption option, const std::string& value)
 {
-	if (mEasy)
+	if (isValid() && mEasy)
 	{
 		mEasy->setoptString(option, value);
 	}
@@ -1005,7 +1269,7 @@ void LLCurlEasyRequest::setoptString(CURLoption option, const std::string& value
 
 void LLCurlEasyRequest::setPost(char* postdata, S32 size)
 {
-	if (mEasy)
+	if (isValid() && mEasy)
 	{
 		mEasy->setopt(CURLOPT_POST, 1);
 		mEasy->setopt(CURLOPT_POSTFIELDS, postdata);
@@ -1015,7 +1279,7 @@ void LLCurlEasyRequest::setPost(char* postdata, S32 size)
 
 void LLCurlEasyRequest::setHeaderCallback(curl_header_callback callback, void* userdata)
 {
-	if (mEasy)
+	if (isValid() && mEasy)
 	{
 		mEasy->setopt(CURLOPT_HEADERFUNCTION, (void*)callback);
 		mEasy->setopt(CURLOPT_HEADERDATA, userdata); // aka CURLOPT_WRITEHEADER
@@ -1024,7 +1288,7 @@ void LLCurlEasyRequest::setHeaderCallback(curl_header_callback callback, void* u
 
 void LLCurlEasyRequest::setWriteCallback(curl_write_callback callback, void* userdata)
 {
-	if (mEasy)
+	if (isValid() && mEasy)
 	{
 		mEasy->setopt(CURLOPT_WRITEFUNCTION, (void*)callback);
 		mEasy->setopt(CURLOPT_WRITEDATA, userdata);
@@ -1033,7 +1297,7 @@ void LLCurlEasyRequest::setWriteCallback(curl_write_callback callback, void* use
 
 void LLCurlEasyRequest::setReadCallback(curl_read_callback callback, void* userdata)
 {
-	if (mEasy)
+	if (isValid() && mEasy)
 	{
 		mEasy->setopt(CURLOPT_READFUNCTION, (void*)callback);
 		mEasy->setopt(CURLOPT_READDATA, userdata);
@@ -1042,7 +1306,7 @@ void LLCurlEasyRequest::setReadCallback(curl_read_callback callback, void* userd
 
 void LLCurlEasyRequest::setSSLCtxCallback(curl_ssl_ctx_callback callback, void* userdata)
 {
-	if (mEasy)
+	if (isValid() && mEasy)
 	{
 		mEasy->setopt(CURLOPT_SSL_CTX_FUNCTION, (void*)callback);
 		mEasy->setopt(CURLOPT_SSL_CTX_DATA, userdata);
@@ -1051,7 +1315,7 @@ void LLCurlEasyRequest::setSSLCtxCallback(curl_ssl_ctx_callback callback, void*
 
 void LLCurlEasyRequest::slist_append(const char* str)
 {
-	if (mEasy)
+	if (isValid() && mEasy)
 	{
 		mEasy->slist_append(str);
 	}
@@ -1062,7 +1326,7 @@ void LLCurlEasyRequest::sendRequest(const std::string& url)
 	llassert_always(!mRequestSent);
 	mRequestSent = true;
 	lldebugs << url << llendl;
-	if (mEasy)
+	if (isValid() && mEasy)
 	{
 		mEasy->setHeaders();
 		mEasy->setoptString(CURLOPT_URL, url);
@@ -1074,25 +1338,24 @@ void LLCurlEasyRequest::requestComplete()
 {
 	llassert_always(mRequestSent);
 	mRequestSent = false;
-	if (mEasy)
+	if (isValid() && mEasy)
 	{
 		mMulti->removeEasy(mEasy);
 	}
 }
 
-void LLCurlEasyRequest::perform()
-{
-	mMulti->perform();
-}
-
 // Usage: Call getRestult until it returns false (no more messages)
 bool LLCurlEasyRequest::getResult(CURLcode* result, LLCurl::TransferInfo* info)
 {
-	if (mMulti->mPerformState != LLCurl::Multi::PERFORM_STATE_COMPLETED)
+	if(!isValid())
+	{
+		return false ;
+	}
+	if (!mMulti->isCompleted())
 	{ //we're busy, try again later
 		return false;
 	}
-	mMulti->mPerformState = LLCurl::Multi::PERFORM_STATE_READY;
+	mMulti->setState(LLCurl::Multi::STATE_READY) ;
 
 	if (!mEasy)
 	{
@@ -1152,7 +1415,7 @@ CURLMsg* LLCurlEasyRequest::info_read(S32* q, LLCurl::TransferInfo* info)
 
 std::string LLCurlEasyRequest::getErrorString()
 {
-	return mEasy ? std::string(mEasy->getErrorBuffer()) : std::string();
+	return isValid() &&  mEasy ? std::string(mEasy->getErrorBuffer()) : std::string();
 }
 
 ////////////////////////////////////////////////////////////////////////////
@@ -1178,10 +1441,11 @@ unsigned long LLCurl::ssl_thread_id(void)
 }
 #endif
 
-void LLCurl::initClass(bool multi_threaded)
+void LLCurl::initClass(F32 curl_reuest_timeout, S32 max_number_handles, bool multi_threaded)
 {
-	sMainThreadID = LLThread::currentID();
-	sMultiThreaded = multi_threaded;
+	sCurlRequestTimeOut = curl_reuest_timeout ; //seconds
+	sMaxHandles = max_number_handles ; //max number of handles, (multi handles and easy handles combined).
+
 	// Do not change this "unless you are familiar with and mean to control 
 	// internal operations of libcurl"
 	// - http://curl.haxx.se/libcurl/c/curl_global_init.html
@@ -1189,43 +1453,127 @@ void LLCurl::initClass(bool multi_threaded)
 
 	check_curl_code(code);
 	
-	Easy::sHandleMutex = new LLMutex();
-	Easy::sMultiMutex = new LLMutex();
-
 #if SAFE_SSL
 	S32 mutex_count = CRYPTO_num_locks();
 	for (S32 i=0; i<mutex_count; i++)
 	{
-		sSSLMutex.push_back(new LLMutex);
+		sSSLMutex.push_back(new LLMutex(NULL));
 	}
 	CRYPTO_set_id_callback(&LLCurl::ssl_thread_id);
 	CRYPTO_set_locking_callback(&LLCurl::ssl_locking_callback);
 #endif
+
+	sCurlThread = new LLCurlThread(multi_threaded) ;
+	if(multi_threaded)
+	{
+		sHandleMutexp = new LLMutex(NULL) ;
+		Easy::sHandleMutexp = new LLMutex(NULL) ;
+	}
 }
 
 void LLCurl::cleanupClass()
 {
+	sNotQuitting = false; //set quitting
+
+	//shut down curl thread
+	while(1)
+	{
+		if(!sCurlThread->update(1)) //finish all tasks
+		{
+			break ;
+		}
+	}
+	sCurlThread->shutdown() ;
+	delete sCurlThread ;
+	sCurlThread = NULL ;
+
 #if SAFE_SSL
 	CRYPTO_set_locking_callback(NULL);
 	for_each(sSSLMutex.begin(), sSSLMutex.end(), DeletePointer());
 #endif
 
-	delete Easy::sHandleMutex;
-	Easy::sHandleMutex = NULL;
-	delete Easy::sMultiMutex;
-	Easy::sMultiMutex = NULL;
-
 	for (std::set<CURL*>::iterator iter = Easy::sFreeHandles.begin(); iter != Easy::sFreeHandles.end(); ++iter)
 	{
 		CURL* curl = *iter;
-		curl_easy_cleanup(curl);
+		LLCurl::deleteEasyHandle(curl);
 	}
 
 	Easy::sFreeHandles.clear();
 
+	delete Easy::sHandleMutexp ;
+	Easy::sHandleMutexp = NULL ;
+
+	delete sHandleMutexp ;
+	sHandleMutexp = NULL ;
+
 	llassert(Easy::sActiveHandles.empty());
 }
 
+//static 
+CURLM* LLCurl::newMultiHandle()
+{
+	LLMutexLock lock(sHandleMutexp) ;
+
+	if(sTotalHandles + 1 > sMaxHandles)
+	{
+		llwarns << "no more handles available." << llendl ;
+		return NULL ; //failed
+	}
+	sTotalHandles++;
+
+	CURLM* ret = curl_multi_init() ;
+	if(!ret)
+	{
+		llwarns << "curl_multi_init failed." << llendl ;
+	}
+
+	return ret ;
+}
+
+//static 
+CURLMcode  LLCurl::deleteMultiHandle(CURLM* handle)
+{
+	if(handle)
+	{
+		LLMutexLock lock(sHandleMutexp) ;		
+		sTotalHandles-- ;
+		return curl_multi_cleanup(handle) ;
+	}
+	return CURLM_OK ;
+}
+
+//static 
+CURL*  LLCurl::newEasyHandle()
+{
+	LLMutexLock lock(sHandleMutexp) ;
+
+	if(sTotalHandles + 1 > sMaxHandles)
+	{
+		llwarns << "no more handles available." << llendl ;
+		return NULL ; //failed
+	}
+	sTotalHandles++;
+
+	CURL* ret = curl_easy_init() ;
+	if(!ret)
+	{
+		llwarns << "curl_easy_init failed." << llendl ;
+	}
+
+	return ret ;
+}
+
+//static 
+void  LLCurl::deleteEasyHandle(CURL* handle)
+{
+	if(handle)
+	{
+		LLMutexLock lock(sHandleMutexp) ;
+		curl_easy_cleanup(handle) ;
+		sTotalHandles-- ;
+	}
+}
+
 const unsigned int LLCurl::MAX_REDIRECTS = 5;
 
 // Provide access to LLCurl free functions outside of llcurl.cpp without polluting the global namespace.
diff --git a/indra/llmessage/llcurl.h b/indra/llmessage/llcurl.h
old mode 100755
new mode 100644
index 87de202717ca5c03e75b53fcd350f8ecd68485f4..fd664c0fa196d3083f1072a389415d511bf71a6e
--- a/indra/llmessage/llcurl.h
+++ b/indra/llmessage/llcurl.h
@@ -42,8 +42,11 @@
 #include "lliopipe.h"
 #include "llsd.h"
 #include "llthread.h"
+#include "llqueuedthread.h"
+#include "llframetimer.h"
 
 class LLMutex;
+class LLCurlThread;
 
 // For whatever reason, this is not typedef'd in curl.h
 typedef size_t (*curl_header_callback)(void *ptr, size_t size, size_t nmemb, void *stream);
@@ -56,8 +59,6 @@ class LLCurl
 	class Easy;
 	class Multi;
 
-	static bool sMultiThreaded;
-
 	struct TransferInfo
 	{
 		TransferInfo() : mSizeDownload(0.0), mTotalTime(0.0), mSpeedDownload(0.0) {}
@@ -162,7 +163,7 @@ class LLCurl
 	/**
 	 * @ brief Initialize LLCurl class
 	 */
-	static void initClass(bool multi_threaded = false);
+	static void initClass(F32 curl_reuest_timeout = 120.f, S32 max_number_handles = 256, bool multi_threaded = false);
 
 	/**
 	 * @ brief Cleanup LLCurl class
@@ -181,10 +182,25 @@ class LLCurl
 	static void ssl_locking_callback(int mode, int type, const char *file, int line);
 	static unsigned long ssl_thread_id(void);
 
+	static LLCurlThread* getCurlThread() { return sCurlThread ;}
+
+	static CURLM* newMultiHandle() ;
+	static CURLMcode deleteMultiHandle(CURLM* handle) ;
+	static CURL*  newEasyHandle() ;
+	static void   deleteEasyHandle(CURL* handle) ;
+
 private:
 	static std::string sCAPath;
 	static std::string sCAFile;
 	static const unsigned int MAX_REDIRECTS;
+	static LLCurlThread* sCurlThread;
+
+	static LLMutex* sHandleMutexp ;
+	static S32      sTotalHandles ;
+	static S32      sMaxHandles;
+public:
+	static bool     sNotQuitting;
+	static F32      sCurlRequestTimeOut;	
 };
 
 class LLCurl::Easy
@@ -216,7 +232,7 @@ class LLCurl::Easy
 	U32 report(CURLcode);
 	void getTransferInfo(LLCurl::TransferInfo* info);
 
-	void prepRequest(const std::string& url, const std::vector<std::string>& headers, ResponderPtr, S32 time_out = 0, bool post = false);
+	void prepRequest(const std::string& url, const std::vector<std::string>& headers, LLCurl::ResponderPtr, S32 time_out = 0, bool post = false);
 
 	const char* getErrorBuffer();
 
@@ -247,64 +263,120 @@ class LLCurl::Easy
 	// Note: char*'s not strings since we pass pointers to curl
 	std::vector<char*>	mStrings;
 
-	ResponderPtr		mResponder;
+	LLCurl::ResponderPtr		mResponder;
 
 	static std::set<CURL*> sFreeHandles;
 	static std::set<CURL*> sActiveHandles;
-	static LLMutex* sHandleMutex;
-	static LLMutex* sMultiMutex;
+	static LLMutex*        sHandleMutexp ;
 };
 
-class LLCurl::Multi : public LLThread
+class LLCurl::Multi
 {
 	LOG_CLASS(Multi);
+
+	friend class LLCurlThread ;
+
+private:
+	~Multi();
+
+	void markDead() ;
+	bool doPerform();
+
 public:
 
 	typedef enum
 	{
-		PERFORM_STATE_READY=0,
-		PERFORM_STATE_PERFORMING=1,
-		PERFORM_STATE_COMPLETED=2
+		STATE_READY=0,
+		STATE_PERFORMING=1,
+		STATE_COMPLETED=2
 	} ePerformState;
 
-	Multi();
-	~Multi();
+	Multi(F32 idle_time_out = 0.f);	
 
-	Easy* allocEasy();
-	bool addEasy(Easy* easy);
+	LLCurl::Easy* allocEasy();
+	bool addEasy(LLCurl::Easy* easy);	
+	void removeEasy(LLCurl::Easy* easy);
 	
-	void removeEasy(Easy* easy);
+	void lock() ;
+	void unlock() ;
 
-	S32 process();
-	void perform();
-	void doPerform();
+	void setState(ePerformState state) ;
+	ePerformState getState() ;
 	
-	virtual void run();
+	bool isCompleted() ;
+	bool isValid() {return mCurlMultiHandle != NULL ;}
+	bool isDead() {return mDead;}
+
+	bool waitToComplete() ;
 
+	S32 process();
+	
 	CURLMsg* info_read(S32* msgs_in_queue);
 
 	S32 mQueued;
 	S32 mErrorCount;
 	
-	S32 mPerformState;
-
-	LLCondition* mSignal;
-	bool mQuitting;
-	bool mThreaded;
-
 private:
-	void easyFree(Easy*);
+	void easyFree(LLCurl::Easy*);
+	void cleanup() ;
 	
 	CURLM* mCurlMultiHandle;
 
-	typedef std::set<Easy*> easy_active_list_t;
+	typedef std::set<LLCurl::Easy*> easy_active_list_t;
 	easy_active_list_t mEasyActiveList;
-	typedef std::map<CURL*, Easy*> easy_active_map_t;
+	typedef std::map<CURL*, LLCurl::Easy*> easy_active_map_t;
 	easy_active_map_t mEasyActiveMap;
-	typedef std::set<Easy*> easy_free_list_t;
+	typedef std::set<LLCurl::Easy*> easy_free_list_t;
 	easy_free_list_t mEasyFreeList;
+
+	LLQueuedThread::handle_t mHandle ;
+	ePerformState mState;
+
+	BOOL mDead ;
+	LLMutex* mMutexp ;
+	LLMutex* mDeletionMutexp ;
+	LLMutex* mEasyMutexp ;
+	LLFrameTimer mIdleTimer ;
+	F32 mIdleTimeOut;
 };
 
+class LLCurlThread : public LLQueuedThread
+{
+public:
+
+	class CurlRequest : public LLQueuedThread::QueuedRequest
+	{
+	protected:
+		virtual ~CurlRequest(); // use deleteRequest()
+		
+	public:
+		CurlRequest(handle_t handle, LLCurl::Multi* multi, LLCurlThread* curl_thread);
+
+		/*virtual*/ bool processRequest();
+		/*virtual*/ void finishRequest(bool completed);
+
+	private:
+		// input
+		LLCurl::Multi* mMulti;
+		LLCurlThread*  mCurlThread;
+	};
+	friend class CurlRequest;
+
+public:
+	LLCurlThread(bool threaded = true) ;
+	virtual ~LLCurlThread() ;
+
+	S32 update(F32 max_time_ms);
+
+	void addMulti(LLCurl::Multi* multi) ;
+	void killMulti(LLCurl::Multi* multi) ;
+
+private:
+	bool doMultiPerform(LLCurl::Multi* multi) ;
+	void deleteMulti(LLCurl::Multi* multi) ;
+	void cleanupMulti(LLCurl::Multi* multi) ;
+} ;
+
 namespace boost
 {
 	void intrusive_ptr_add_ref(LLCurl::Responder* p);
@@ -339,7 +411,6 @@ class LLCurlRequest
 	LLCurl::Multi* mActiveMulti;
 	S32 mActiveRequestCount;
 	BOOL mProcessing;
-	U32 mThreadID; // debug
 };
 
 class LLCurlEasyRequest
@@ -357,9 +428,11 @@ class LLCurlEasyRequest
 	void slist_append(const char* str);
 	void sendRequest(const std::string& url);
 	void requestComplete();
-	void perform();
 	bool getResult(CURLcode* result, LLCurl::TransferInfo* info = NULL);
 	std::string getErrorString();
+	bool isCompleted() {return mMulti->isCompleted() ;}
+	bool wait() { return mMulti->waitToComplete(); }
+	bool isValid() {return mMulti && mMulti->isValid(); }
 
 	LLCurl::Easy* getEasy() const { return mEasy; }
 
diff --git a/indra/llmessage/llhttpassetstorage.cpp b/indra/llmessage/llhttpassetstorage.cpp
index 2bca517e97ac9d4870703a8a2ec9772882f64eae..612d765969efb92fa21695cac11faadc3e28bde3 100644
--- a/indra/llmessage/llhttpassetstorage.cpp
+++ b/indra/llmessage/llhttpassetstorage.cpp
@@ -232,7 +232,8 @@ LLSD LLHTTPAssetRequest::getFullDetails() const
 void LLHTTPAssetRequest::setupCurlHandle()
 {
 	// *NOTE: Similar code exists in mapserver/llcurlutil.cpp  JC
-	mCurlHandle = curl_easy_init();
+	mCurlHandle = LLCurl::newEasyHandle();
+	llassert_always(mCurlHandle != NULL) ;
 
 	// Apply proxy settings if configured to do so
 	LLProxy::getInstance()->applyProxySettings(mCurlHandle);
@@ -278,7 +279,7 @@ void LLHTTPAssetRequest::setupCurlHandle()
 
 void LLHTTPAssetRequest::cleanupCurlHandle()
 {
-	curl_easy_cleanup(mCurlHandle);
+	LLCurl::deleteEasyHandle(mCurlHandle);
 	if (mAssetStoragep)
 	{
 		// Terminating a request.  Thus upload or download is no longer pending.
@@ -429,12 +430,13 @@ void LLHTTPAssetStorage::_init(const std::string& web_host, const std::string& l
 
 	// curl_global_init moved to LLCurl::initClass()
 	
-	mCurlMultiHandle = curl_multi_init();
+	mCurlMultiHandle = LLCurl::newMultiHandle() ;
+	llassert_always(mCurlMultiHandle != NULL) ;
 }
 
 LLHTTPAssetStorage::~LLHTTPAssetStorage()
 {
-	curl_multi_cleanup(mCurlMultiHandle);
+	LLCurl::deleteMultiHandle(mCurlMultiHandle);
 	mCurlMultiHandle = NULL;
 	
 	// curl_global_cleanup moved to LLCurl::initClass()
diff --git a/indra/llmessage/llhttpclient.cpp b/indra/llmessage/llhttpclient.cpp
index dd4e3a63007d56753fc8dd7b52df8a902a84951d..231cb7ca8f61f67883ea5b406fcf690424f74738 100644
--- a/indra/llmessage/llhttpclient.cpp
+++ b/indra/llmessage/llhttpclient.cpp
@@ -228,6 +228,12 @@ static void request(
 	LLPumpIO::chain_t chain;
 
 	LLURLRequest* req = new LLURLRequest(method, url);
+	if(!req->isValid())//failed
+	{
+		delete req ;
+		return ;
+	}
+
 	req->setSSLVerifyCallback(LLHTTPClient::getCertVerifyCallback(), (void *)req);
 
 	
@@ -423,7 +429,9 @@ static LLSD blocking_request(
 {
 	lldebugs << "blockingRequest of " << url << llendl;
 	char curl_error_buffer[CURL_ERROR_SIZE] = "\0";
-	CURL* curlp = curl_easy_init();
+	CURL* curlp = LLCurl::newEasyHandle();
+	llassert_always(curlp != NULL) ;
+
 	LLHTTPBuffer http_buffer;
 	std::string body_str;
 	
@@ -517,7 +525,7 @@ static LLSD blocking_request(
 	}
 
 	// * Cleanup
-	curl_easy_cleanup(curlp);
+	LLCurl::deleteEasyHandle(curlp);
 	return response;
 }
 
diff --git a/indra/llmessage/lliohttpserver.cpp b/indra/llmessage/lliohttpserver.cpp
index 920a57ab55420a40bf6509460232aa0e687d0591..987f386aa38545959ad082c84990ad00291a5501 100644
--- a/indra/llmessage/lliohttpserver.cpp
+++ b/indra/llmessage/lliohttpserver.cpp
@@ -818,6 +818,8 @@ LLIOPipe::EStatus LLHTTPResponder::process_impl(
 
   			// Copy everything after mLast read to the out.
 			LLBufferArray::segment_iterator_t seg_iter;
+
+			buffer->lock();
 			seg_iter = buffer->splitAfter(mLastRead);
 			if(seg_iter != buffer->endSegment())
 			{
@@ -838,7 +840,7 @@ LLIOPipe::EStatus LLHTTPResponder::process_impl(
 				}
 #endif
 			}
-
+			buffer->unlock();
 			//
 			// *FIX: get rid of extra bytes off the end
 			//
@@ -963,9 +965,13 @@ class LLHTTPResponseFactory : public LLChainIOFactory
 
 
 // static
-LLHTTPNode& LLIOHTTPServer::create(LLPumpIO& pump, U16 port)
+LLHTTPNode& LLIOHTTPServer::create(
+	apr_pool_t* pool, LLPumpIO& pump, U16 port)
 {
-	LLSocket::ptr_t socket = LLSocket::create(LLSocket::STREAM_TCP, port);
+	LLSocket::ptr_t socket = LLSocket::create(
+        pool,
+        LLSocket::STREAM_TCP,
+        port);
     if(!socket)
     {
         llerrs << "Unable to initialize socket" << llendl;
@@ -974,7 +980,7 @@ LLHTTPNode& LLIOHTTPServer::create(LLPumpIO& pump, U16 port)
     LLHTTPResponseFactory* factory = new LLHTTPResponseFactory;
 	boost::shared_ptr<LLChainIOFactory> factory_ptr(factory);
 
-    LLIOServerSocket* server = new LLIOServerSocket(socket, factory_ptr);
+    LLIOServerSocket* server = new LLIOServerSocket(pool, socket, factory_ptr);
 
 	LLPumpIO::chain_t chain;
     chain.push_back(LLIOPipe::ptr_t(server));
diff --git a/indra/llmessage/lliohttpserver.h b/indra/llmessage/lliohttpserver.h
index 2294e4b8ae2c07eadaf66f6b0827de938d4f0ed2..5c1b0531ff2693de45fd6b15147523e27f7e725f 100644
--- a/indra/llmessage/lliohttpserver.h
+++ b/indra/llmessage/lliohttpserver.h
@@ -50,7 +50,7 @@ class LLIOHTTPServer
 public:
 	typedef void (*timing_callback_t)(const char* hashed_name, F32 time, void* data);
 
-	static LLHTTPNode& create(LLPumpIO& pump, U16 port);
+	static LLHTTPNode& create(apr_pool_t* pool, LLPumpIO& pump, U16 port);
 	/**< Creates an HTTP wire server on the pump for the given TCP port.
 	 *
 	 *   Returns the root node of the new server.  Add LLHTTPNode instances
diff --git a/indra/llmessage/lliopipe.cpp b/indra/llmessage/lliopipe.cpp
index 6e4eec74a65a1579dcca38b836084b71eb2ba822..8f827f7a30756d61329902a7cc496e673b00aef3 100644
--- a/indra/llmessage/lliopipe.cpp
+++ b/indra/llmessage/lliopipe.cpp
@@ -75,6 +75,12 @@ LLIOPipe::~LLIOPipe()
 	//lldebugs << "destroying LLIOPipe" << llendl;
 }
 
+//virtual 
+bool LLIOPipe::isValid() 
+{
+	return true ;
+}
+
 // static
 std::string LLIOPipe::lookupStatusString(EStatus status)
 {
diff --git a/indra/llmessage/lliopipe.h b/indra/llmessage/lliopipe.h
index 8e656b6da1c49331e5476497b4d745cfbc62ada1..cbd17b5a3d9ba02be6430d051eecaaba6f8f571d 100644
--- a/indra/llmessage/lliopipe.h
+++ b/indra/llmessage/lliopipe.h
@@ -231,6 +231,8 @@ class LLIOPipe
 	 */
 	virtual ~LLIOPipe();
 
+	virtual bool isValid() ;
+
 protected:
 	/**
 	 * @brief Base Constructor.
diff --git a/indra/llmessage/lliosocket.cpp b/indra/llmessage/lliosocket.cpp
index a885ba8ee15ce7a4b69e7c5325875c57e8258d0f..d5b4d4582107700ee7ab7cbe67933f47d35b30cf 100644
--- a/indra/llmessage/lliosocket.cpp
+++ b/indra/llmessage/lliosocket.cpp
@@ -35,7 +35,6 @@
 #include "llhost.h"
 #include "llmemtype.h"
 #include "llpumpio.h"
-#include "llthread.h"
 
 //
 // constants
@@ -99,31 +98,51 @@ void ll_debug_socket(const char* msg, apr_socket_t* apr_sock)
 ///
 
 // static
-LLSocket::ptr_t LLSocket::create(EType type, U16 port)
+LLSocket::ptr_t LLSocket::create(apr_pool_t* pool, EType type, U16 port)
 {
 	LLMemType m1(LLMemType::MTYPE_IO_TCP);
+	LLSocket::ptr_t rv;
+	apr_socket_t* socket = NULL;
+	apr_pool_t* new_pool = NULL;
 	apr_status_t status = APR_EGENERAL;
-	LLSocket::ptr_t rv(new LLSocket);
+
+	// create a pool for the socket
+	status = apr_pool_create(&new_pool, pool);
+	if(ll_apr_warn_status(status))
+	{
+		if(new_pool) apr_pool_destroy(new_pool);
+		return rv;
+	}
 
 	if(STREAM_TCP == type)
 	{
-		status = apr_socket_create(&rv->mSocket, APR_INET, SOCK_STREAM, APR_PROTO_TCP, rv->mPool());
+		status = apr_socket_create(
+			&socket,
+			APR_INET,
+			SOCK_STREAM,
+			APR_PROTO_TCP,
+			new_pool);
 	}
 	else if(DATAGRAM_UDP == type)
 	{
-		status = apr_socket_create(&rv->mSocket, APR_INET, SOCK_DGRAM, APR_PROTO_UDP, rv->mPool());
+		status = apr_socket_create(
+			&socket,
+			APR_INET,
+			SOCK_DGRAM,
+			APR_PROTO_UDP,
+			new_pool);
 	}
 	else
 	{
-		rv.reset();
+		if(new_pool) apr_pool_destroy(new_pool);
 		return rv;
 	}
 	if(ll_apr_warn_status(status))
 	{
-		rv->mSocket = NULL;
-		rv.reset();
+		if(new_pool) apr_pool_destroy(new_pool);
 		return rv;
 	}
+	rv = ptr_t(new LLSocket(socket, new_pool));
 	if(port > 0)
 	{
 		apr_sockaddr_t* sa = NULL;
@@ -133,7 +152,7 @@ LLSocket::ptr_t LLSocket::create(EType type, U16 port)
 			APR_UNSPEC,
 			port,
 			0,
-			rv->mPool());
+			new_pool);
 		if(ll_apr_warn_status(status))
 		{
 			rv.reset();
@@ -141,8 +160,8 @@ LLSocket::ptr_t LLSocket::create(EType type, U16 port)
 		}
 		// This allows us to reuse the address on quick down/up. This
 		// is unlikely to create problems.
-		ll_apr_warn_status(apr_socket_opt_set(rv->mSocket, APR_SO_REUSEADDR, 1));
-		status = apr_socket_bind(rv->mSocket, sa);
+		ll_apr_warn_status(apr_socket_opt_set(socket, APR_SO_REUSEADDR, 1));
+		status = apr_socket_bind(socket, sa);
 		if(ll_apr_warn_status(status))
 		{
 			rv.reset();
@@ -156,7 +175,7 @@ LLSocket::ptr_t LLSocket::create(EType type, U16 port)
 			// to keep a queue of incoming connections for ACCEPT.
 			lldebugs << "Setting listen state for socket." << llendl;
 			status = apr_socket_listen(
-				rv->mSocket,
+				socket,
 				LL_DEFAULT_LISTEN_BACKLOG);
 			if(ll_apr_warn_status(status))
 			{
@@ -177,28 +196,21 @@ LLSocket::ptr_t LLSocket::create(EType type, U16 port)
 }
 
 // static
-LLSocket::ptr_t LLSocket::create(apr_status_t& status, LLSocket::ptr_t& listen_socket)
+LLSocket::ptr_t LLSocket::create(apr_socket_t* socket, apr_pool_t* pool)
 {
 	LLMemType m1(LLMemType::MTYPE_IO_TCP);
-	if (!listen_socket->getSocket())
+	LLSocket::ptr_t rv;
+	if(!socket)
 	{
-		status = APR_ENOSOCKET;
-		return LLSocket::ptr_t();
-	}
-	LLSocket::ptr_t rv(new LLSocket);
-	lldebugs << "accepting socket" << llendl;
-	status = apr_socket_accept(&rv->mSocket, listen_socket->getSocket(), rv->mPool());
-	if (status != APR_SUCCESS)
-	{
-		rv->mSocket = NULL;
-		rv.reset();
 		return rv;
 	}
+	rv = ptr_t(new LLSocket(socket, pool));
 	rv->mPort = PORT_EPHEMERAL;
 	rv->setNonBlocking();
 	return rv;
 }
 
+
 bool LLSocket::blockingConnect(const LLHost& host)
 {
 	if(!mSocket) return false;
@@ -211,7 +223,7 @@ bool LLSocket::blockingConnect(const LLHost& host)
 		APR_UNSPEC,
 		host.getPort(),
 		0,
-		mPool())))
+		mPool)))
 	{
 		return false;
 	}
@@ -222,11 +234,13 @@ bool LLSocket::blockingConnect(const LLHost& host)
 	return true;
 }
 
-LLSocket::LLSocket() :
-	mSocket(NULL),
-	mPool(LLThread::tldata().mRootPool),
+LLSocket::LLSocket(apr_socket_t* socket, apr_pool_t* pool) :
+	mSocket(socket),
+	mPool(pool),
 	mPort(PORT_INVALID)
 {
+	ll_debug_socket("Constructing wholely formed socket", mSocket);
+	LLMemType m1(LLMemType::MTYPE_IO_TCP);
 }
 
 LLSocket::~LLSocket()
@@ -239,6 +253,10 @@ LLSocket::~LLSocket()
 		apr_socket_close(mSocket);
 		mSocket = NULL;
 	}
+	if(mPool)
+	{
+		apr_pool_destroy(mPool);
+	}
 }
 
 // See http://dev.ariel-networks.com/apr/apr-tutorial/html/apr-tutorial-13.html#ss13.4
@@ -427,6 +445,7 @@ LLIOPipe::EStatus LLIOSocketWriter::process_impl(
 	// efficient - not only because writev() is better, but also
 	// because we won't have to do as much work to find the start
 	// address.
+	buffer->lock();
 	LLBufferArray::segment_iterator_t it;
 	LLBufferArray::segment_iterator_t end = buffer->endSegment();
 	LLSegment segment;
@@ -506,6 +525,8 @@ LLIOPipe::EStatus LLIOSocketWriter::process_impl(
 		}
 
 	}
+	buffer->unlock();
+
 	PUMP_DEBUG;
 	if(done && eos)
 	{
@@ -520,8 +541,10 @@ LLIOPipe::EStatus LLIOSocketWriter::process_impl(
 ///
 
 LLIOServerSocket::LLIOServerSocket(
+	apr_pool_t* pool,
 	LLIOServerSocket::socket_t listener,
 	factory_t factory) :
+	mPool(pool),
 	mListenSocket(listener),
 	mReactor(factory),
 	mInitialized(false),
@@ -583,15 +606,21 @@ LLIOPipe::EStatus LLIOServerSocket::process_impl(
 	lldebugs << "accepting socket" << llendl;
 
 	PUMP_DEBUG;
-	apr_status_t status;
-	LLSocket::ptr_t llsocket(LLSocket::create(status, mListenSocket));
+	apr_pool_t* new_pool = NULL;
+	apr_status_t status = apr_pool_create(&new_pool, mPool);
+	apr_socket_t* socket = NULL;
+	status = apr_socket_accept(
+		&socket,
+		mListenSocket->getSocket(),
+		new_pool);
+	LLSocket::ptr_t llsocket(LLSocket::create(socket, new_pool));
 	//EStatus rv = STATUS_ERROR;
-	if(llsocket && status == APR_SUCCESS)
+	if(llsocket)
 	{
 		PUMP_DEBUG;
 
 		apr_sockaddr_t* remote_addr;
-		apr_socket_addr_get(&remote_addr, APR_REMOTE, llsocket->getSocket());
+		apr_socket_addr_get(&remote_addr, APR_REMOTE, socket);
 		
 		char* remote_host_string;
 		apr_sockaddr_ip_get(&remote_host_string, remote_addr);
@@ -606,6 +635,7 @@ LLIOPipe::EStatus LLIOServerSocket::process_impl(
 		{
 			chain.push_back(LLIOPipe::ptr_t(new LLIOSocketWriter(llsocket)));
 			pump->addChain(chain, mResponseTimeout);
+			status = STATUS_OK;
 		}
 		else
 		{
@@ -614,8 +644,7 @@ LLIOPipe::EStatus LLIOServerSocket::process_impl(
 	}
 	else
 	{
-		char buf[256];
-		llwarns << "Unable to accept linden socket: " << apr_strerror(status, buf, sizeof(buf)) << llendl;
+		llwarns << "Unable to create linden socket." << llendl;
 	}
 
 	PUMP_DEBUG;
@@ -628,10 +657,11 @@ LLIOPipe::EStatus LLIOServerSocket::process_impl(
 #if 0
 LLIODataSocket::LLIODataSocket(
 	U16 suggested_port,
-	U16 start_discovery_port) :
+	U16 start_discovery_port,
+	apr_pool_t* pool) : 
 	mSocket(NULL)
 {
-	if(PORT_INVALID == suggested_port) return;
+	if(!pool || (PORT_INVALID == suggested_port)) return;
 	if(ll_apr_warn_status(apr_socket_create(&mSocket, APR_INET, SOCK_DGRAM, APR_PROTO_UDP, pool))) return;
 	apr_sockaddr_t* sa = NULL;
 	if(ll_apr_warn_status(apr_sockaddr_info_get(&sa, APR_ANYADDR, APR_UNSPEC, suggested_port, 0, pool))) return;
diff --git a/indra/llmessage/lliosocket.h b/indra/llmessage/lliosocket.h
index f0a6f256573afb557122a25ab6a219fd401e2588..be0f7dfcc655e1e47ac2ccdf8f967037ac4458a8 100644
--- a/indra/llmessage/lliosocket.h
+++ b/indra/llmessage/lliosocket.h
@@ -38,6 +38,7 @@
  */
 
 #include "lliopipe.h"
+#include "apr_pools.h"
 #include "apr_network_io.h"
 #include "llchainio.h"
 
@@ -87,22 +88,34 @@ class LLSocket
 	 * socket. If you intend the socket to be known to external
 	 * clients without prior port notification, do not use
 	 * PORT_EPHEMERAL.
+	 * @param pool The apr pool to use. A child pool will be created
+	 * and associated with the socket.
 	 * @param type The type of socket to create
 	 * @param port The port for the socket
 	 * @return A valid socket shared pointer if the call worked.
 	 */
 	static ptr_t create(
+		apr_pool_t* pool,
 		EType type,
 		U16 port = PORT_EPHEMERAL);
 
 	/** 
-	 * @brief Create a LLSocket by accepting a connection from a listen socket.
+	 * @brief Create a LLSocket when you already have an apr socket.
 	 *
-	 * @param status Output. Status of the accept if a valid listen socket was passed.
-	 * @param listen_socket The listen socket to use.
+	 * This method assumes an ephemeral port. This is typically used
+	 * by calls which spawn a socket such as a call to
+	 * <code>accept()</code> as in the server socket. This call should
+	 * not fail if you have a valid apr socket.
+	 * Because of the nature of how accept() works, you are expected
+	 * to create a new pool for the socket, use that pool for the
+	 * accept, and pass it in here where it will be bound with the
+	 * socket and destroyed at the same time.
+	 * @param socket The apr socket to use 
+	 * @param pool The pool used to create the socket. *NOTE: The pool
+	 * passed in will be DESTROYED.
 	 * @return A valid socket shared pointer if the call worked.
 	 */
-	static ptr_t create(apr_status_t& status, ptr_t& listen_socket);
+	static ptr_t create(apr_socket_t* socket, apr_pool_t* pool);
 
 	/** 
 	 * @brief Perform a blocking connect to a host. Do not use in production.
@@ -132,12 +145,6 @@ class LLSocket
 	 */
 	apr_socket_t* getSocket() const { return mSocket; }
 
-	/** 
-	 * @brief Protected constructor since should only make sockets
-	 * with one of the two <code>create()</code> calls.
-	 */
-	LLSocket(void);
-
 	/** 
 	 * @brief Set default socket options, with SO_NONBLOCK = 0 and a timeout in us.
 	 * @param timeout Number of microseconds to wait on this socket. Any
@@ -167,8 +174,8 @@ class LLSocket
 	// The apr socket.
 	apr_socket_t* mSocket;
 
-	// Our memory pool.
-	LLAPRPool mPool;
+	// our memory pool
+	apr_pool_t* mPool;
 
 	// The port if we know it.
 	U16 mPort;
@@ -293,7 +300,7 @@ class LLIOServerSocket : public LLIOPipe
 public:
 	typedef LLSocket::ptr_t socket_t;
 	typedef boost::shared_ptr<LLChainIOFactory> factory_t;
-	LLIOServerSocket(socket_t listener, factory_t reactor);
+	LLIOServerSocket(apr_pool_t* pool, socket_t listener, factory_t reactor);
 	virtual ~LLIOServerSocket();
 
 	/** 
@@ -325,6 +332,7 @@ class LLIOServerSocket : public LLIOPipe
 	//@}
 
 protected:
+	apr_pool_t* mPool;
 	socket_t mListenSocket;
 	factory_t mReactor;
 	bool mInitialized;
@@ -358,7 +366,8 @@ class LLIODataSocket : public LLIOSocket
 	 */
 	LLIODataSocket(
 		U16 suggested_port,
-		U16 start_discovery_port);
+		U16 start_discovery_port,
+		apr_pool_t* pool);
 	virtual ~LLIODataSocket();
 
 protected:
diff --git a/indra/llmessage/llmail.cpp b/indra/llmessage/llmail.cpp
index 8a898ab1b0b41c301952ac7d493479e600eb098b..08b31e9c7a29b45cdc61fde26fd5a79a25fba74d 100644
--- a/indra/llmessage/llmail.cpp
+++ b/indra/llmessage/llmail.cpp
@@ -50,7 +50,6 @@
 #include "llstring.h"
 #include "lluuid.h"
 #include "net.h"
-#include "llaprpool.h"
 
 //
 // constants
@@ -58,7 +57,7 @@
 const size_t LL_MAX_KNOWN_GOOD_MAIL_SIZE = 4096;
 
 static bool gMailEnabled = true;
-static LLAPRPool gMailPool;
+static apr_pool_t* gMailPool;
 static apr_sockaddr_t* gSockAddr;
 static apr_socket_t* gMailSocket;
 
@@ -83,7 +82,7 @@ bool connect_smtp()
 		gSockAddr->sa.sin.sin_family,
 		SOCK_STREAM,
 		APR_PROTO_TCP,
-		gMailPool());
+		gMailPool);
 	if(ll_apr_warn_status(status)) return false;
 	status = apr_socket_connect(gMailSocket, gSockAddr);
 	if(ll_apr_warn_status(status))
@@ -140,19 +139,19 @@ BOOL LLMail::send(
 }
 
 // static
-void LLMail::init(const std::string& hostname)
+void LLMail::init(const std::string& hostname, apr_pool_t* pool)
 {
 	gMailSocket = NULL;
-	if (hostname.empty())
+	if(hostname.empty() || !pool)
 	{
+		gMailPool = NULL;
 		gSockAddr = NULL;
-		gMailPool.destroy();
 	}
 	else
 	{
-		gMailPool.create();
+		gMailPool = pool;
 
-		// Collect all the information into a sockaddr structure. the
+		// collect all the information into a socaddr sturcture. the
 		// documentation is a bit unclear, but I either have to
 		// specify APR_UNSPEC or not specify any flags. I am not sure
 		// which option is better.
@@ -162,7 +161,7 @@ void LLMail::init(const std::string& hostname)
 			APR_UNSPEC,
 			25,
 			APR_IPV4_ADDR_OK,
-			gMailPool());
+			gMailPool);
 		ll_apr_warn_status(status);
 	}
 }
diff --git a/indra/llmessage/llmail.h b/indra/llmessage/llmail.h
index 0a5c532088334812a37dfe0db3ae6a096bc33090..37917143639aae2b224d7543a234f6545e58ae6f 100644
--- a/indra/llmessage/llmail.h
+++ b/indra/llmessage/llmail.h
@@ -27,13 +27,15 @@
 #ifndef LL_LLMAIL_H
 #define LL_LLMAIL_H
 
+typedef struct apr_pool_t apr_pool_t;
+
 #include "llsd.h"
 
 class LLMail
 {
 public:
 	// if hostname is NULL, then the host is resolved as 'mail'
-	static void init(const std::string& hostname);
+	static void init(const std::string& hostname, apr_pool_t* pool);
 
 	// Allow all email transmission to be disabled/enabled.
 	static void enable(bool mail_enabled);
diff --git a/indra/llmessage/llproxy.cpp b/indra/llmessage/llproxy.cpp
index 4a7d326c0e6eae90dfe6e7cb3b6fe0358c075f20..9988fcd9c0f6abac1d2776c04a3db8721a6b21ce 100644
--- a/indra/llmessage/llproxy.cpp
+++ b/indra/llmessage/llproxy.cpp
@@ -49,7 +49,7 @@ static void tcp_close_channel(LLSocket::ptr_t* handle_ptr); // Close an open TCP
 
 LLProxy::LLProxy():
 		mHTTPProxyEnabled(false),
-		mProxyMutex(),
+		mProxyMutex(NULL),
 		mUDPProxy(),
 		mTCPProxy(),
 		mHTTPProxy(),
@@ -524,7 +524,7 @@ static apr_status_t tcp_blocking_handshake(LLSocket::ptr_t handle, char * dataou
  */
 static LLSocket::ptr_t tcp_open_channel(LLHost host)
 {
-	LLSocket::ptr_t socket = LLSocket::create(LLSocket::STREAM_TCP);
+	LLSocket::ptr_t socket = LLSocket::create(NULL, LLSocket::STREAM_TCP);
 	bool connected = socket->blockingConnect(host);
 	if (!connected)
 	{
diff --git a/indra/llmessage/llpumpio.cpp b/indra/llmessage/llpumpio.cpp
index 89cfd66e1b25d931db2aa237bc4e58b2c0b46880..f3ef4f26844f394c6964e02a3f3228d36f78c47c 100644
--- a/indra/llmessage/llpumpio.cpp
+++ b/indra/llmessage/llpumpio.cpp
@@ -37,7 +37,6 @@
 #include "llmemtype.h"
 #include "llstl.h"
 #include "llstat.h"
-#include "llthread.h"
 
 // These should not be enabled in production, but they can be
 // intensely useful during development for finding certain kinds of
@@ -163,12 +162,14 @@ struct ll_delete_apr_pollset_fd_client_data
 /**
  * LLPumpIO
  */
-LLPumpIO::LLPumpIO(void) :
+LLPumpIO::LLPumpIO(apr_pool_t* pool) :
 	mState(LLPumpIO::NORMAL),
 	mRebuildPollset(false),
 	mPollset(NULL),
 	mPollsetClientID(0),
 	mNextLock(0),
+	mPool(NULL),
+	mCurrentPool(NULL),
 	mCurrentPoolReallocCount(0),
 	mChainsMutex(NULL),
 	mCallbackMutex(NULL),
@@ -177,27 +178,24 @@ LLPumpIO::LLPumpIO(void) :
 	mCurrentChain = mRunningChains.end();
 
 	LLMemType m1(LLMemType::MTYPE_IO_PUMP);
-	initialize();
+	initialize(pool);
 }
 
 LLPumpIO::~LLPumpIO()
 {
 	LLMemType m1(LLMemType::MTYPE_IO_PUMP);
-#if LL_THREADS_APR
-	if (mChainsMutex) apr_thread_mutex_destroy(mChainsMutex);
-	if (mCallbackMutex) apr_thread_mutex_destroy(mCallbackMutex);
-#endif
-	mChainsMutex = NULL;
-	mCallbackMutex = NULL;
-	if(mPollset)
-	{
-//		lldebugs << "cleaning up pollset" << llendl;
-		apr_pollset_destroy(mPollset);
-		mPollset = NULL;
-	}
+	cleanup();
+}
+
+bool LLPumpIO::prime(apr_pool_t* pool)
+{
+	LLMemType m1(LLMemType::MTYPE_IO_PUMP);
+	cleanup();
+	initialize(pool);
+	return ((pool == NULL) ? false : true);
 }
 
-bool LLPumpIO::addChain(const chain_t& chain, F32 timeout)
+bool LLPumpIO::addChain(const chain_t& chain, F32 timeout, bool has_curl_request)
 {
 	LLMemType m1(LLMemType::MTYPE_IO_PUMP);
 	if(chain.empty()) return false;
@@ -206,8 +204,10 @@ bool LLPumpIO::addChain(const chain_t& chain, F32 timeout)
 	LLScopedLock lock(mChainsMutex);
 #endif
 	LLChainInfo info;
+	info.mHasCurlRequest = has_curl_request;
 	info.setTimeoutSeconds(timeout);
 	info.mData = LLIOPipe::buffer_ptr_t(new LLBufferArray);
+	info.mData->setThreaded(has_curl_request);
 	LLLinkInfo link;
 #if LL_DEBUG_PIPE_TYPE_IN_PUMP
 	lldebugs << "LLPumpIO::addChain() " << chain[0] << " '"
@@ -354,7 +354,8 @@ bool LLPumpIO::setConditional(LLIOPipe* pipe, const apr_pollfd_t* poll)
 	{
 		// each fd needs a pool to work with, so if one was
 		// not specified, use this pool.
-		value.second.p = (*mCurrentChain).mDescriptorsPool->operator()();
+		// *FIX: Should it always be this pool?
+		value.second.p = mPool;
 	}
 	value.second.client_data = new S32(++mPollsetClientID);
 	(*mCurrentChain).mDescriptors.push_back(value);
@@ -441,6 +442,15 @@ void LLPumpIO::pump()
 
 static LLFastTimer::DeclareTimer FTM_PUMP_IO("Pump IO");
 
+LLPumpIO::current_chain_t LLPumpIO::removeRunningChain(LLPumpIO::current_chain_t& run_chain) 
+{
+	std::for_each(
+				(*run_chain).mDescriptors.begin(),
+				(*run_chain).mDescriptors.end(),
+				ll_delete_apr_pollset_fd_client_data());
+	return mRunningChains.erase(run_chain);
+}
+
 //timeout is in microseconds
 void LLPumpIO::pump(const S32& poll_timeout)
 {
@@ -586,10 +596,16 @@ void LLPumpIO::pump(const S32& poll_timeout)
 //						<< (*run_chain).mChainLinks[0].mPipe
 //						<< " because we reached the end." << llendl;
 #endif
-				run_chain = mRunningChains.erase(run_chain);
+				run_chain = removeRunningChain(run_chain);
 				continue;
 			}
 		}
+		else if(isChainExpired(*run_chain))
+		{
+			run_chain = removeRunningChain(run_chain);
+			continue;
+		}
+
 		PUMP_DEBUG;
 		if((*run_chain).mLock)
 		{
@@ -697,11 +713,7 @@ void LLPumpIO::pump(const S32& poll_timeout)
 			PUMP_DEBUG;
 			// This chain is done. Clean up any allocated memory and
 			// erase the chain info.
-			std::for_each(
-				(*run_chain).mDescriptors.begin(),
-				(*run_chain).mDescriptors.end(),
-				ll_delete_apr_pollset_fd_client_data());
-			run_chain = mRunningChains.erase(run_chain);
+			run_chain = removeRunningChain(run_chain);
 
 			// *NOTE: may not always need to rebuild the pollset.
 			mRebuildPollset = true;
@@ -826,15 +838,39 @@ void LLPumpIO::control(LLPumpIO::EControl op)
 	}
 }
 
-void LLPumpIO::initialize(void)
+void LLPumpIO::initialize(apr_pool_t* pool)
 {
 	LLMemType m1(LLMemType::MTYPE_IO_PUMP);
-	mPool.create();
+	if(!pool) return;
 #if LL_THREADS_APR
 	// SJB: Windows defaults to NESTED and OSX defaults to UNNESTED, so use UNNESTED explicitly.
-	apr_thread_mutex_create(&mChainsMutex, APR_THREAD_MUTEX_UNNESTED, mPool());
-	apr_thread_mutex_create(&mCallbackMutex, APR_THREAD_MUTEX_UNNESTED, mPool());
+	apr_thread_mutex_create(&mChainsMutex, APR_THREAD_MUTEX_UNNESTED, pool);
+	apr_thread_mutex_create(&mCallbackMutex, APR_THREAD_MUTEX_UNNESTED, pool);
 #endif
+	mPool = pool;
+}
+
+void LLPumpIO::cleanup()
+{
+	LLMemType m1(LLMemType::MTYPE_IO_PUMP);
+#if LL_THREADS_APR
+	if(mChainsMutex) apr_thread_mutex_destroy(mChainsMutex);
+	if(mCallbackMutex) apr_thread_mutex_destroy(mCallbackMutex);
+#endif
+	mChainsMutex = NULL;
+	mCallbackMutex = NULL;
+	if(mPollset)
+	{
+//		lldebugs << "cleaning up pollset" << llendl;
+		apr_pollset_destroy(mPollset);
+		mPollset = NULL;
+	}
+	if(mCurrentPool)
+	{
+		apr_pool_destroy(mCurrentPool);
+		mCurrentPool = NULL;
+	}
+	mPool = NULL;
 }
 
 void LLPumpIO::rebuildPollset()
@@ -862,19 +898,21 @@ void LLPumpIO::rebuildPollset()
 		if(mCurrentPool
 		   && (0 == (++mCurrentPoolReallocCount % POLLSET_POOL_RECYCLE_COUNT)))
 		{
-			mCurrentPool.destroy();
+			apr_pool_destroy(mCurrentPool);
+			mCurrentPool = NULL;
 			mCurrentPoolReallocCount = 0;
 		}
 		if(!mCurrentPool)
 		{
-			mCurrentPool.create(mPool);
+			apr_status_t status = apr_pool_create(&mCurrentPool, mPool);
+			(void)ll_apr_warn_status(status);
 		}
 
 		// add all of the file descriptors
 		run_it = mRunningChains.begin();
 		LLChainInfo::conditionals_t::iterator fd_it;
 		LLChainInfo::conditionals_t::iterator fd_end;
-		apr_pollset_create(&mPollset, size, mCurrentPool(), 0);
+		apr_pollset_create(&mPollset, size, mCurrentPool, 0);
 		for(; run_it != run_end; ++run_it)
 		{
 			fd_it = (*run_it).mDescriptors.begin();
@@ -1070,6 +1108,24 @@ void LLPumpIO::processChain(LLChainInfo& chain)
 	PUMP_DEBUG;
 }
 
+bool LLPumpIO::isChainExpired(LLChainInfo& chain)
+{
+	if(!chain.mHasCurlRequest)
+	{
+		return false ;
+	}
+
+	for(links_t::iterator iter = chain.mChainLinks.begin(); iter != chain.mChainLinks.end(); ++iter)
+	{
+		if(!(*iter).mPipe->isValid())
+		{
+			return true ;
+		}
+	}
+
+	return false ;
+}
+
 bool LLPumpIO::handleChainError(
 	LLChainInfo& chain,
 	LLIOPipe::EStatus error)
@@ -1111,6 +1167,9 @@ bool LLPumpIO::handleChainError(
 #endif
 			keep_going = false;
 			break;
+		case LLIOPipe::STATUS_EXPIRED:
+			keep_going = false;
+			break ;
 		default:
 			if(LLIOPipe::isSuccess(error))
 			{
@@ -1133,7 +1192,7 @@ LLPumpIO::LLChainInfo::LLChainInfo() :
 	mInit(false),
 	mLock(0),
 	mEOS(false),
-	mDescriptorsPool(new LLAPRPool(LLThread::tldata().mRootPool))
+	mHasCurlRequest(false)
 {
 	LLMemType m1(LLMemType::MTYPE_IO_PUMP);
 	mTimer.setTimerExpirySec(DEFAULT_CHAIN_EXPIRY_SECS);
diff --git a/indra/llmessage/llpumpio.h b/indra/llmessage/llpumpio.h
index 75c35ae7ab95291ed4e6a28abd10aeb70490fd36..d2c5d3757136e57caaba21b02a01d812090c3e0f 100644
--- a/indra/llmessage/llpumpio.h
+++ b/indra/llmessage/llpumpio.h
@@ -30,12 +30,11 @@
 #define LL_LLPUMPIO_H
 
 #include <set>
-#include <boost/shared_ptr.hpp>
 #if LL_LINUX  // needed for PATH_MAX in APR.
 #include <sys/param.h>
 #endif
 
-#include "llaprpool.h"
+#include "apr_pools.h"
 #include "llbuffer.h"
 #include "llframetimer.h"
 #include "lliopipe.h"
@@ -59,8 +58,9 @@ extern const F32 NEVER_CHAIN_EXPIRY_SECS;
  * <code>pump()</code> on a thread used for IO and call
  * <code>respond()</code> on a thread that is expected to do higher
  * level processing. You can call almost any other method from any
- * thread - see notes for each method for details.
- *
+ * thread - see notes for each method for details. In order for the
+ * threading abstraction to work, you need to call <code>prime()</code>
+ * with a valid apr pool.
  * A pump instance manages much of the state for the pipe, including
  * the list of pipes in the chain, the channel for each element in the
  * chain, the buffer, and if any pipe has marked the stream or process
@@ -79,13 +79,24 @@ class LLPumpIO
 	/**
 	 * @brief Constructor.
 	 */
-	LLPumpIO(void);
+	LLPumpIO(apr_pool_t* pool);
 
 	/**
 	 * @brief Destructor.
 	 */
 	~LLPumpIO();
 
+	/**
+	 * @brief Prepare this pump for usage.
+	 *
+	 * If you fail to call this method prior to use, the pump will
+	 * try to work, but will not come with any thread locking
+	 * mechanisms.
+	 * @param pool The apr pool to use.
+	 * @return Returns true if the pump is primed.
+	 */
+	bool prime(apr_pool_t* pool);
+
 	/**
 	 * @brief Typedef for having a chain of pipes.
 	 */
@@ -100,9 +111,10 @@ class LLPumpIO
 	 * @param chain The pipes for the chain
 	 * @param timeout The number of seconds in the future to
 	 * expire. Pass in 0.0f to never expire.
+	 * @param has_curl_request The chain contains LLURLRequest if true.
 	 * @return Returns true if anything was added to the pump.
 	 */
-	bool addChain(const chain_t& chain, F32 timeout);
+	bool addChain(const chain_t& chain, F32 timeout, bool has_curl_request = false);
 	
 	/** 
 	 * @brief Struct to associate a pipe with it's buffer io indexes.
@@ -345,19 +357,19 @@ class LLPumpIO
 
 		// basic member data
 		bool mInit;
+		bool mEOS;
+		bool mHasCurlRequest;
 		S32 mLock;
 		LLFrameTimer mTimer;
 		links_t::iterator mHead;
 		links_t mChainLinks;
-		LLIOPipe::buffer_ptr_t mData;
-		bool mEOS;
+		LLIOPipe::buffer_ptr_t mData;		
 		LLSD mContext;
 
 		// tracking inside the pump
 		typedef std::pair<LLIOPipe::ptr_t, apr_pollfd_t> pipe_conditional_t;
 		typedef std::vector<pipe_conditional_t> conditionals_t;
 		conditionals_t mDescriptors;
-		boost::shared_ptr<LLAPRPool> mDescriptorsPool;
 	};
 
 	// All the running chains & info
@@ -376,9 +388,9 @@ class LLPumpIO
 	callbacks_t mPendingCallbacks;
 	callbacks_t mCallbacks;
 
-	// Memory pool for pollsets & mutexes.
-	LLAPRPool mPool;
-	LLAPRPool mCurrentPool;
+	// memory allocator for pollsets & mutexes.
+	apr_pool_t* mPool;
+	apr_pool_t* mCurrentPool;
 	S32 mCurrentPoolReallocCount;
 
 #if LL_THREADS_APR
@@ -390,8 +402,9 @@ class LLPumpIO
 #endif
 
 protected:
-	void initialize();
-
+	void initialize(apr_pool_t* pool);
+	void cleanup();
+	current_chain_t removeRunningChain(current_chain_t& chain) ;
 	/** 
 	 * @brief Given the internal state of the chains, rebuild the pollset
 	 * @see setConditional()
@@ -418,6 +431,9 @@ class LLPumpIO
 	 */
 	bool handleChainError(LLChainInfo& chain, LLIOPipe::EStatus error);
 
+	//if the chain is expired, remove it
+	bool isChainExpired(LLChainInfo& chain) ;
+
 public:
 	/** 
 	 * @brief Return number of running chains.
diff --git a/indra/llmessage/llsdmessagereader.cpp b/indra/llmessage/llsdmessagereader.cpp
index 304a692cdfeaea700fe2a9cbf855c3c31ca1d2d8..3d8ca2ad9f19c3a58a7271598c32f8612ad8419a 100644
--- a/indra/llmessage/llsdmessagereader.cpp
+++ b/indra/llmessage/llsdmessagereader.cpp
@@ -291,9 +291,10 @@ S32 getElementSize(const LLSD& llsd)
 	case LLSD::TypeMap:
 	case LLSD::TypeArray:
 	case LLSD::TypeUndefined:
+	default:                        // TypeLLSDTypeEnd, TypeLLSDNumTypes, etc.
 		return 0;
 	}
-	return 0;
+	//return 0;
 }
 
 //virtual 
diff --git a/indra/llmessage/llsdrpcclient.h b/indra/llmessage/llsdrpcclient.h
index 9fb49a5c3301f7af16731147c18826699104bd0c..0cecf4f68891cde2273abb9ddb5d22f440182cfe 100644
--- a/indra/llmessage/llsdrpcclient.h
+++ b/indra/llmessage/llsdrpcclient.h
@@ -240,9 +240,16 @@ class LLSDRPCClientFactory : public LLChainIOFactory
 	virtual bool build(LLPumpIO::chain_t& chain, LLSD context) const
 	{
 		lldebugs << "LLSDRPCClientFactory::build" << llendl;
-		LLIOPipe::ptr_t service(new Client);
-		chain.push_back(service);
 		LLURLRequest* http(new LLURLRequest(LLURLRequest::HTTP_POST));
+		if(!http->isValid())
+		{
+			llwarns << "Creating LLURLRequest failed." << llendl ;
+			delete http;
+			return false;
+		}
+
+		LLIOPipe::ptr_t service(new Client);
+		chain.push_back(service);		
 		LLIOPipe::ptr_t http_pipe(http);
 		http->addHeader("Content-Type: text/llsd");
 		if(mURL.empty())
@@ -283,9 +290,16 @@ class LLXMLSDRPCClientFactory : public LLChainIOFactory
 	virtual bool build(LLPumpIO::chain_t& chain, LLSD context) const
 	{
 		lldebugs << "LLXMLSDRPCClientFactory::build" << llendl;
-		LLIOPipe::ptr_t service(new Client);
-		chain.push_back(service);
+
 		LLURLRequest* http(new LLURLRequest(LLURLRequest::HTTP_POST));
+		if(!http->isValid())
+		{
+			llwarns << "Creating LLURLRequest failed." << llendl ;
+			delete http;
+			return false ;
+		}
+		LLIOPipe::ptr_t service(new Client);
+		chain.push_back(service);		
 		LLIOPipe::ptr_t http_pipe(http);
 		http->addHeader("Content-Type: text/xml");
 		if(mURL.empty())
diff --git a/indra/llmessage/llurlrequest.cpp b/indra/llmessage/llurlrequest.cpp
index 91a5a8ce2cf6d8a0e813fcf208ca5cf99c9e65b4..a16f5c7bf0ea27a314d959c4e3b75d02636e592f 100644
--- a/indra/llmessage/llurlrequest.cpp
+++ b/indra/llmessage/llurlrequest.cpp
@@ -41,7 +41,6 @@
 #include "llstring.h"
 #include "apr_env.h"
 #include "llapr.h"
-#include "llscopedvolatileaprpool.h"
 static const U32 HTTP_STATUS_PIPE_ERROR = 499;
 
 /**
@@ -65,7 +64,7 @@ class LLURLRequestDetail
 	~LLURLRequestDetail();
 	std::string mURL;
 	LLCurlEasyRequest* mCurlRequest;
-	LLBufferArray* mResponseBuffer;
+	LLIOPipe::buffer_ptr_t mResponseBuffer;
 	LLChannelDescriptors mChannels;
 	U8* mLastRead;
 	U32 mBodyLimit;
@@ -76,7 +75,6 @@ class LLURLRequestDetail
 
 LLURLRequestDetail::LLURLRequestDetail() :
 	mCurlRequest(NULL),
-	mResponseBuffer(NULL),
 	mLastRead(NULL),
 	mBodyLimit(0),
 	mByteAccumulator(0),
@@ -85,13 +83,18 @@ LLURLRequestDetail::LLURLRequestDetail() :
 {
 	LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST);
 	mCurlRequest = new LLCurlEasyRequest();
+	
+	if(!mCurlRequest->isValid()) //failed.
+	{
+		delete mCurlRequest ;
+		mCurlRequest = NULL ;
+	}
 }
 
 LLURLRequestDetail::~LLURLRequestDetail()
 {
 	LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST);
 	delete mCurlRequest;
-	mResponseBuffer = NULL;
 	mLastRead = NULL;
 }
 
@@ -171,6 +174,7 @@ LLURLRequest::~LLURLRequest()
 {
 	LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST);
 	delete mDetail;
+	mDetail = NULL ;
 }
 
 void LLURLRequest::setURL(const std::string& url)
@@ -212,31 +216,27 @@ void LLURLRequest::setCallback(LLURLRequestComplete* callback)
 // is called with use_proxy = FALSE
 void LLURLRequest::useProxy(bool use_proxy)
 {
-    static std::string env_proxy;
+    static char *env_proxy;
 
-    if (use_proxy && env_proxy.empty())
+    if (use_proxy && (env_proxy == NULL))
     {
-		char* env_proxy_str;
-        LLScopedVolatileAPRPool scoped_pool;
-        apr_status_t status = apr_env_get(&env_proxy_str, "ALL_PROXY", scoped_pool);
+        apr_status_t status;
+        LLAPRPool pool;
+		status = apr_env_get(&env_proxy, "ALL_PROXY", pool.getAPRPool());
         if (status != APR_SUCCESS)
         {
-			status = apr_env_get(&env_proxy_str, "http_proxy", scoped_pool);
+			status = apr_env_get(&env_proxy, "http_proxy", pool.getAPRPool());
         }
         if (status != APR_SUCCESS)
         {
-            use_proxy = false;
+           use_proxy = FALSE;
         }
-		else
-		{
-			// env_proxy_str is stored in the scoped_pool, so we have to make a copy.
-			env_proxy = env_proxy_str;
-		}
     }
 
-    LL_DEBUGS("Proxy") << "use_proxy = " << (use_proxy?'Y':'N') << ", env_proxy = " << (!env_proxy.empty() ? env_proxy : "(null)") << LL_ENDL;
 
-    if (use_proxy && !env_proxy.empty())
+    lldebugs << "use_proxy = " << (use_proxy?'Y':'N') << ", env_proxy = " << (env_proxy ? env_proxy : "(null)") << llendl;
+
+    if (env_proxy && use_proxy)
     {
 		mDetail->mCurlRequest->setoptString(CURLOPT_PROXY, env_proxy);
     }
@@ -256,12 +256,24 @@ void LLURLRequest::allowCookies()
 	mDetail->mCurlRequest->setoptString(CURLOPT_COOKIEFILE, "");
 }
 
+//virtual 
+bool LLURLRequest::isValid() 
+{
+	return mDetail->mCurlRequest && mDetail->mCurlRequest->isValid(); 
+}
+
 // virtual
 LLIOPipe::EStatus LLURLRequest::handleError(
 	LLIOPipe::EStatus status,
 	LLPumpIO* pump)
 {
 	LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST);
+	
+	if(!isValid())
+	{
+		return STATUS_EXPIRED ;
+	}
+
 	if(mCompletionCallback && pump)
 	{
 		LLURLRequestComplete* complete = NULL;
@@ -330,7 +342,7 @@ LLIOPipe::EStatus LLURLRequest::process_impl(
 
 		// *FIX: bit of a hack, but it should work. The configure and
 		// callback method expect this information to be ready.
-		mDetail->mResponseBuffer = buffer.get();
+		mDetail->mResponseBuffer = buffer;
 		mDetail->mChannels = channels;
 		if(!configure())
 		{
@@ -349,7 +361,10 @@ LLIOPipe::EStatus LLURLRequest::process_impl(
 		static LLFastTimer::DeclareTimer FTM_URL_PERFORM("Perform");
 		{
 			LLFastTimer t(FTM_URL_PERFORM);
-			mDetail->mCurlRequest->perform();
+			if(!mDetail->mCurlRequest->wait())
+			{
+				return status ;
+			}
 		}
 
 		while(1)
@@ -444,6 +459,12 @@ void LLURLRequest::initialize()
 	LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST);
 	mState = STATE_INITIALIZED;
 	mDetail = new LLURLRequestDetail;
+
+	if(!isValid())
+	{
+		return ;
+	}
+
 	mDetail->mCurlRequest->setopt(CURLOPT_NOSIGNAL, 1);
 	mDetail->mCurlRequest->setWriteCallback(&downCallback, (void*)this);
 	mDetail->mCurlRequest->setReadCallback(&upCallback, (void*)this);
diff --git a/indra/llmessage/llurlrequest.h b/indra/llmessage/llurlrequest.h
index ec5c2c1941493aa38331063e37a5bf4f0cdc9496..44d358d906f44485af8a193cdc2b092e305c429e 100644
--- a/indra/llmessage/llurlrequest.h
+++ b/indra/llmessage/llurlrequest.h
@@ -188,6 +188,8 @@ class LLURLRequest : public LLIOPipe
 	 */
 	void allowCookies();
 
+	/*virtual*/ bool isValid() ;
+
 public:
 	/** 
 	 * @brief Give this pipe a chance to handle a generated error
diff --git a/indra/llmessage/message.cpp b/indra/llmessage/message.cpp
index 7d21e35f96a386c65bd5efed4b6e3436df580b1b..d0b0e178b83625400f790737d0f45eb1d5aba00a 100644
--- a/indra/llmessage/message.cpp
+++ b/indra/llmessage/message.cpp
@@ -97,10 +97,8 @@ std::string get_shared_secret();
 class LLMessagePollInfo
 {
 public:
-	LLMessagePollInfo(void) : mPool(LLThread::tldata().mRootPool) { }
 	apr_socket_t *mAPRSocketp;
 	apr_pollfd_t mPollFD;
-	LLAPRPool mPool;
 };
 
 namespace
@@ -289,13 +287,20 @@ LLMessageSystem::LLMessageSystem(const std::string& filename, U32 port,
 	}
 //	LL_DEBUGS("Messaging") <<  << "*** port: " << mPort << llendl;
 
-	mPollInfop = new LLMessagePollInfo;
-
+	//
+	// Create the data structure that we can poll on
+	//
+	if (!gAPRPoolp)
+	{
+		LL_ERRS("Messaging") << "No APR pool before message system initialization!" << llendl;
+		ll_init_apr();
+	}
 	apr_socket_t *aprSocketp = NULL;
-	apr_os_sock_put(&aprSocketp, (apr_os_sock_t*)&mSocket, mPollInfop->mPool());
+	apr_os_sock_put(&aprSocketp, (apr_os_sock_t*)&mSocket, gAPRPoolp);
 
+	mPollInfop = new LLMessagePollInfo;
 	mPollInfop->mAPRSocketp = aprSocketp;
-	mPollInfop->mPollFD.p = mPollInfop->mPool();
+	mPollInfop->mPollFD.p = gAPRPoolp;
 	mPollInfop->mPollFD.desc_type = APR_POLL_SOCKET;
 	mPollInfop->mPollFD.reqevents = APR_POLLIN;
 	mPollInfop->mPollFD.rtnevents = 0;
diff --git a/indra/llmessage/tests/networkio.h b/indra/llmessage/tests/networkio.h
index 23e1c791f470db900d2ea13fd5687edc3dfa8bd7..2aff90ca1ef8657f0c56cced2cc9a33c02f98041 100644
--- a/indra/llmessage/tests/networkio.h
+++ b/indra/llmessage/tests/networkio.h
@@ -30,6 +30,7 @@
 #define LL_NETWORKIO_H
 
 #include "llmemory.h"               // LLSingleton
+#include "llapr.h"
 #include "llares.h"
 #include "llpumpio.h"
 #include "llhttpclient.h"
@@ -47,8 +48,14 @@ class NetworkIO: public LLSingleton<NetworkIO>
         mServicePump(NULL),
         mDone(false)
     {
+        ll_init_apr();
+        if (! gAPRPoolp)
+        {
+            throw std::runtime_error("Can't initialize APR");
+        }
+
         // Create IO Pump to use for HTTP Requests.
-        mServicePump = new LLPumpIO;
+        mServicePump = new LLPumpIO(gAPRPoolp);
         LLHTTPClient::setPump(*mServicePump);
         if (ll_init_ares() == NULL || !gAres->isInitialized())
         {
diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp
index c53857fceef2c28b01df11ad1d93661991bd2fb2..dbd96673a1df759dbae95916b6d0f3138ba8ad3d 100644
--- a/indra/llplugin/llpluginclassmedia.cpp
+++ b/indra/llplugin/llpluginclassmedia.cpp
@@ -1239,6 +1239,14 @@ void LLPluginClassMedia::focus(bool focused)
 	sendMessage(message);
 }
 
+void LLPluginClassMedia::set_page_zoom_factor( double factor )
+{
+	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "set_page_zoom_factor");
+
+	message.setValueReal("factor", factor);
+	sendMessage(message);
+}
+
 void LLPluginClassMedia::clear_cache()
 {
 	LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "clear_cache");
diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h
index 1f548f8cc02e6657716f3e15fd404b23abe2fdfe..5fe8254331a3fdb143a8d3e26e88a623aaf217af 100644
--- a/indra/llplugin/llpluginclassmedia.h
+++ b/indra/llplugin/llpluginclassmedia.h
@@ -41,7 +41,7 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner
 	LOG_CLASS(LLPluginClassMedia);
 public:
 	LLPluginClassMedia(LLPluginClassMediaOwner *owner);
-	~LLPluginClassMedia();
+	virtual ~LLPluginClassMedia();
 
 	// local initialization, called by the media manager when creating a source
 	bool init(const std::string &launcher_filename, 
@@ -202,6 +202,7 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner
 	bool pluginSupportsMediaBrowser(void);
 	
 	void focus(bool focused);
+	void set_page_zoom_factor( double factor );
 	void clear_cache();
 	void clear_cookies();
 	void set_cookies(const std::string &cookies);
@@ -269,7 +270,7 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner
 	std::string	getHoverText() const { return mHoverText; };
 	std::string	getHoverLink() const { return mHoverLink; };
 	
-	std::string getMediaName() const { return mMediaName; };
+	const std::string& getMediaName() const { return mMediaName; };
 	std::string getMediaDescription() const { return mMediaDescription; };
 
 	// Crash the plugin.  If you use this outside of a testbed, you will be punished.
diff --git a/indra/llplugin/llplugininstance.cpp b/indra/llplugin/llplugininstance.cpp
index e8efb233ffbe44daa25751c87d4fd8b4b1cdbfdf..7cde82a20e6d58aedafe33fe776a165fc8129b97 100644
--- a/indra/llplugin/llplugininstance.cpp
+++ b/indra/llplugin/llplugininstance.cpp
@@ -29,7 +29,8 @@
 #include "linden_common.h"
 
 #include "llplugininstance.h"
-#include "llthread.h"			// Needed for LLThread::tldata().mRootPool
+
+#include "llapr.h"
 
 #if LL_WINDOWS
 #include "direct.h"	// needed for _chdir()
@@ -51,7 +52,6 @@ const char *LLPluginInstance::PLUGIN_INIT_FUNCTION_NAME = "LLPluginInitEntryPoin
  * @param[in] owner Plugin instance. TODO:DOC is this a good description of what "owner" is?
  */
 LLPluginInstance::LLPluginInstance(LLPluginInstanceMessageListener *owner) :
-	mDSOHandlePool(LLThread::tldata().mRootPool),
 	mDSOHandle(NULL),
 	mPluginUserData(NULL),
 	mPluginSendMessageFunction(NULL)
@@ -97,7 +97,7 @@ int LLPluginInstance::load(const std::string& plugin_dir, std::string &plugin_fi
 
 	int result = apr_dso_load(&mDSOHandle,
 					  plugin_file.c_str(),
-					  mDSOHandlePool());
+					  gAPRPoolp);
 	if(result != APR_SUCCESS)
 	{
 		char buf[1024];
diff --git a/indra/llplugin/llplugininstance.h b/indra/llplugin/llplugininstance.h
index ee28f68e8369f87463d34a9ecfa83d0f744f8b97..e6926c3e3779157e38f8f2ac457621db8fc1a30f 100644
--- a/indra/llplugin/llplugininstance.h
+++ b/indra/llplugin/llplugininstance.h
@@ -30,7 +30,6 @@
 
 #include "llstring.h"
 #include "llapr.h"
-#include "llaprpool.h"
 
 #include "apr_dso.h"
 
@@ -40,7 +39,7 @@
 class LLPluginInstanceMessageListener
 {
 public:
-	~LLPluginInstanceMessageListener();
+	virtual ~LLPluginInstanceMessageListener();
    /** Plugin receives message from plugin loader shell. */
 	virtual void receivePluginMessage(const std::string &message) = 0;
 };
@@ -89,7 +88,6 @@ class LLPluginInstance
 	static void staticReceiveMessage(const char *message_string, void **user_data);
 	void receiveMessage(const char *message_string);
 
-	LLAPRPool mDSOHandlePool;
 	apr_dso_handle_t *mDSOHandle;
 	
 	void *mPluginUserData;
diff --git a/indra/llplugin/llpluginmessagepipe.cpp b/indra/llplugin/llpluginmessagepipe.cpp
index dd47300b9c676706a43d71d6317d4366929a3ee5..091e93ea4be474abbb8e0962f41754bc7f1f94c8 100644
--- a/indra/llplugin/llpluginmessagepipe.cpp
+++ b/indra/llplugin/llpluginmessagepipe.cpp
@@ -92,10 +92,12 @@ void LLPluginMessagePipeOwner::killMessagePipe(void)
 }
 
 LLPluginMessagePipe::LLPluginMessagePipe(LLPluginMessagePipeOwner *owner, LLSocket::ptr_t socket):
+	mInputMutex(gAPRPoolp),
+	mOutputMutex(gAPRPoolp),
+	mOutputStartIndex(0),
 	mOwner(owner),
 	mSocket(socket)
 {
-	
 	mOwner->setMessagePipe(this);
 }
 
@@ -111,6 +113,14 @@ bool LLPluginMessagePipe::addMessage(const std::string &message)
 {
 	// queue the message for later output
 	LLMutexLock lock(&mOutputMutex);
+
+	// If we're starting to use up too much memory, clear
+	if (mOutputStartIndex > 1024 * 1024)
+	{
+		mOutput = mOutput.substr(mOutputStartIndex);
+		mOutputStartIndex = 0;
+	}
+		
 	mOutput += message;
 	mOutput += MESSAGE_DELIMITER;	// message separator
 	
@@ -163,35 +173,44 @@ bool LLPluginMessagePipe::pumpOutput()
 	if(mSocket)
 	{
 		apr_status_t status;
-		apr_size_t size;
+		apr_size_t in_size, out_size;
 		
 		LLMutexLock lock(&mOutputMutex);
-		if(!mOutput.empty())
+
+		const char * output_data = &(mOutput.data()[mOutputStartIndex]);
+		if(*output_data != '\0')
 		{
 			// write any outgoing messages
-			size = (apr_size_t)mOutput.size();
+			in_size = (apr_size_t) (mOutput.size() - mOutputStartIndex);
+			out_size = in_size;
 			
 			setSocketTimeout(0);
 			
 //			LL_INFOS("Plugin") << "before apr_socket_send, size = " << size << LL_ENDL;
 
-			status = apr_socket_send(
-					mSocket->getSocket(),
-					(const char*)mOutput.data(),
-					&size);
+			status = apr_socket_send(mSocket->getSocket(),
+									 output_data,
+									 &out_size);
 
 //			LL_INFOS("Plugin") << "after apr_socket_send, size = " << size << LL_ENDL;
 			
-			if(status == APR_SUCCESS)
+			if((status == APR_SUCCESS) || APR_STATUS_IS_EAGAIN(status))
 			{
-				// success
-				mOutput = mOutput.substr(size);
-			}
-			else if(APR_STATUS_IS_EAGAIN(status))
-			{
-				// Socket buffer is full... 
-				// remove the written part from the buffer and try again later.
-				mOutput = mOutput.substr(size);
+				// Success or Socket buffer is full... 
+				
+				// If we've pumped the entire string, clear it
+				if (out_size == in_size)
+				{
+					mOutputStartIndex = 0;
+					mOutput.clear();
+				}
+				else
+				{
+					llassert(in_size > out_size);
+					
+					// Remove the written part from the buffer and try again later.
+					mOutputStartIndex += out_size;
+				}
 			}
 			else if(APR_STATUS_IS_EOF(status))
 			{
diff --git a/indra/llplugin/llpluginmessagepipe.h b/indra/llplugin/llpluginmessagepipe.h
index beb942c0fe0f218aba4191ebfea392ded64eb678..c3498beac04849e37c7ebabd43c9192df1d5ea9f 100644
--- a/indra/llplugin/llpluginmessagepipe.h
+++ b/indra/llplugin/llpluginmessagepipe.h
@@ -40,7 +40,7 @@ class LLPluginMessagePipeOwner
 	LOG_CLASS(LLPluginMessagePipeOwner);
 public:
 	LLPluginMessagePipeOwner();
-	~LLPluginMessagePipeOwner();
+	virtual ~LLPluginMessagePipeOwner();
 
 	// called with incoming messages
 	virtual void receiveMessageRaw(const std::string &message) = 0;
@@ -86,6 +86,7 @@ class LLPluginMessagePipe
 	std::string mInput;
 	LLMutex mOutputMutex;
 	std::string mOutput;
+	std::string::size_type mOutputStartIndex;
 
 	LLPluginMessagePipeOwner *mOwner;
 	LLSocket::ptr_t mSocket;
diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp
index fd63fdde81629c0c51670ce67af25e67180b5237..f8a282184ed6d99a5d3144071fbd1f0a7b7ccec9 100644
--- a/indra/llplugin/llpluginprocesschild.cpp
+++ b/indra/llplugin/llpluginprocesschild.cpp
@@ -40,7 +40,7 @@ LLPluginProcessChild::LLPluginProcessChild()
 {
 	mState = STATE_UNINITIALIZED;
 	mInstance = NULL;
-	mSocket = LLSocket::create(LLSocket::STREAM_TCP);
+	mSocket = LLSocket::create(gAPRPoolp, LLSocket::STREAM_TCP);
 	mSleepTime = PLUGIN_IDLE_SECONDS;	// default: send idle messages at 100Hz
 	mCPUElapsed = 0.0f;
 	mBlockingRequest = false;
diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp
index 7aec72731eef0bf55379f4a7783c0f7ec9d8182d..110fac0f2388abe4a39bb009cd660fe899e89e52 100644
--- a/indra/llplugin/llpluginprocessparent.cpp
+++ b/indra/llplugin/llpluginprocessparent.cpp
@@ -33,7 +33,6 @@
 #include "llpluginmessageclasses.h"
 
 #include "llapr.h"
-#include "llscopedvolatileaprpool.h"
 
 //virtual 
 LLPluginProcessParentOwner::~LLPluginProcessParentOwner()
@@ -43,7 +42,6 @@ LLPluginProcessParentOwner::~LLPluginProcessParentOwner()
 
 bool LLPluginProcessParent::sUseReadThread = false;
 apr_pollset_t *LLPluginProcessParent::sPollSet = NULL;
-LLAPRPool LLPluginProcessParent::sPollSetPool;
 bool LLPluginProcessParent::sPollsetNeedsRebuild = false;
 LLMutex *LLPluginProcessParent::sInstancesMutex;
 std::list<LLPluginProcessParent*> LLPluginProcessParent::sInstances;
@@ -54,7 +52,7 @@ class LLPluginProcessParentPollThread: public LLThread
 {
 public:
 	LLPluginProcessParentPollThread() :
-		LLThread("LLPluginProcessParentPollThread")
+		LLThread("LLPluginProcessParentPollThread", gAPRPoolp)
 	{
 	}
 protected:
@@ -79,11 +77,12 @@ class LLPluginProcessParentPollThread: public LLThread
 
 };
 
-LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner* owner)
+LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner *owner):
+	mIncomingQueueMutex(gAPRPoolp)
 {
 	if(!sInstancesMutex)
 	{
-		sInstancesMutex = new LLMutex;
+		sInstancesMutex = new LLMutex(gAPRPoolp);
 	}
 	
 	mOwner = owner;
@@ -96,7 +95,6 @@ LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner* owner)
 	mBlocked = false;
 	mPolledInput = false;
 	mPollFD.client_data = NULL;
-	mPollFDPool.create();
 
 	mPluginLaunchTimeout = 60.0f;
 	mPluginLockupTimeout = 15.0f;
@@ -173,28 +171,44 @@ void LLPluginProcessParent::init(const std::string &launcher_filename, const std
 bool LLPluginProcessParent::accept()
 {
 	bool result = false;
+	
 	apr_status_t status = APR_EGENERAL;
+	apr_socket_t *new_socket = NULL;
+	
+	status = apr_socket_accept(
+		&new_socket,
+		mListenSocket->getSocket(),
+		gAPRPoolp);
 
-	mSocket = LLSocket::create(status, mListenSocket);
 	
 	if(status == APR_SUCCESS)
 	{
 //		llinfos << "SUCCESS" << llendl;
 		// Success.  Create a message pipe on the new socket
+
+		// we MUST create a new pool for the LLSocket, since it will take ownership of it and delete it in its destructor!
+		apr_pool_t* new_pool = NULL;
+		status = apr_pool_create(&new_pool, gAPRPoolp);
+
+		mSocket = LLSocket::create(new_socket, new_pool);
 		new LLPluginMessagePipe(this, mSocket);
 
 		result = true;
 	}
+	else if(APR_STATUS_IS_EAGAIN(status))
+	{
+//		llinfos << "EAGAIN" << llendl;
+
+		// No incoming connections.  This is not an error.
+		status = APR_SUCCESS;
+	}
 	else
 	{
-		mSocket.reset();
-		// EAGAIN means "No incoming connections". This is not an error.
-		if (!APR_STATUS_IS_EAGAIN(status))
-		{
-			// Some other error.
-			ll_apr_warn_status(status);
-			errorState();
-		}
+//		llinfos << "Error:" << llendl;
+		ll_apr_warn_status(status);
+		
+		// Some other error.
+		errorState();
 	}
 	
 	return result;	
@@ -260,10 +274,10 @@ void LLPluginProcessParent::idle(void)
 
 			case STATE_INITIALIZED:
 			{
+	
 				apr_status_t status = APR_SUCCESS;
-				LLScopedVolatileAPRPool addr_pool;
 				apr_sockaddr_t* addr = NULL;
-				mListenSocket = LLSocket::create(LLSocket::STREAM_TCP);
+				mListenSocket = LLSocket::create(gAPRPoolp, LLSocket::STREAM_TCP);
 				mBoundPort = 0;
 				
 				// This code is based on parts of LLSocket::create() in lliosocket.cpp.
@@ -274,7 +288,7 @@ void LLPluginProcessParent::idle(void)
 					APR_INET,
 					0,	// port 0 = ephemeral ("find me a port")
 					0,
-					addr_pool);
+					gAPRPoolp);
 					
 				if(ll_apr_warn_status(status))
 				{
@@ -587,7 +601,7 @@ void LLPluginProcessParent::setMessagePipe(LLPluginMessagePipe *message_pipe)
 	if(message_pipe != NULL)
 	{
 		// Set up the apr_pollfd_t
-		mPollFD.p = mPollFDPool();
+		mPollFD.p = gAPRPoolp;
 		mPollFD.desc_type = APR_POLL_SOCKET;
 		mPollFD.reqevents = APR_POLLIN|APR_POLLERR|APR_POLLHUP;
 		mPollFD.rtnevents = 0;
@@ -634,7 +648,6 @@ void LLPluginProcessParent::updatePollset()
 		// delete the existing pollset.
 		apr_pollset_destroy(sPollSet);
 		sPollSet = NULL;
-		sPollSetPool.destroy();
 	}
 	
 	std::list<LLPluginProcessParent*>::iterator iter;
@@ -657,14 +670,12 @@ void LLPluginProcessParent::updatePollset()
 		{
 #ifdef APR_POLLSET_NOCOPY
 			// The pollset doesn't exist yet.  Create it now.
-			sPollSetPool.create();
-			apr_status_t status = apr_pollset_create(&sPollSet, count, sPollSetPool(), APR_POLLSET_NOCOPY);
+			apr_status_t status = apr_pollset_create(&sPollSet, count, gAPRPoolp, APR_POLLSET_NOCOPY);
 			if(status != APR_SUCCESS)
 			{
 #endif // APR_POLLSET_NOCOPY
 				LL_WARNS("PluginPoll") << "Couldn't create pollset.  Falling back to non-pollset mode." << LL_ENDL;
 				sPollSet = NULL;
-				sPollSetPool.destroy();
 #ifdef APR_POLLSET_NOCOPY
 			}
 			else
diff --git a/indra/llplugin/llpluginprocessparent.h b/indra/llplugin/llpluginprocessparent.h
index 74b7e9f50cd1b5ec2a365851dc60b89074e35bcd..c66723f1753c7a7046e21b57a3a8c2789f7ccaa1 100644
--- a/indra/llplugin/llpluginprocessparent.h
+++ b/indra/llplugin/llpluginprocessparent.h
@@ -41,7 +41,7 @@
 class LLPluginProcessParentOwner
 {
 public:
-	~LLPluginProcessParentOwner();
+	virtual ~LLPluginProcessParentOwner();
 	virtual void receivePluginMessage(const LLPluginMessage &message) = 0;
 	virtual bool receivePluginMessageEarly(const LLPluginMessage &message) {return false;};
 	// This will only be called when the plugin has died unexpectedly 
@@ -178,9 +178,7 @@ class LLPluginProcessParent : public LLPluginMessagePipeOwner
 
 	static bool sUseReadThread;
 	apr_pollfd_t mPollFD;
-	LLAPRPool mPollFDPool;
 	static apr_pollset_t *sPollSet;
-	static LLAPRPool sPollSetPool;
 	static bool sPollsetNeedsRebuild;
 	static LLMutex *sInstancesMutex;
 	static std::list<LLPluginProcessParent*> sInstances;
diff --git a/indra/llplugin/llpluginsharedmemory.cpp b/indra/llplugin/llpluginsharedmemory.cpp
index e2ff645a9c5ae7ddb88ad6683a5d85f9544b93bc..63ff5085c6e1705f180d0c361a45bf305a1fe196 100644
--- a/indra/llplugin/llpluginsharedmemory.cpp
+++ b/indra/llplugin/llpluginsharedmemory.cpp
@@ -187,8 +187,7 @@ bool LLPluginSharedMemory::create(size_t size)
 	mName += createName();
 	mSize = size;
 	
-	mPool.create();
-	apr_status_t status = apr_shm_create( &(mImpl->mAprSharedMemory), mSize, mName.c_str(), mPool());
+	apr_status_t status = apr_shm_create( &(mImpl->mAprSharedMemory), mSize, mName.c_str(), gAPRPoolp );
 	
 	if(ll_apr_warn_status(status))
 	{
@@ -211,7 +210,7 @@ bool LLPluginSharedMemory::destroy(void)
 		}
 		mImpl->mAprSharedMemory = NULL;
 	}
-	mPool.destroy();
+	
 	return true;
 }
 
@@ -220,8 +219,7 @@ bool LLPluginSharedMemory::attach(const std::string &name, size_t size)
 	mName = name;
 	mSize = size;
 	
-	mPool.create();
-	apr_status_t status = apr_shm_attach( &(mImpl->mAprSharedMemory), mName.c_str(), mPool() );
+	apr_status_t status = apr_shm_attach( &(mImpl->mAprSharedMemory), mName.c_str(), gAPRPoolp );
 	
 	if(ll_apr_warn_status(status))
 	{
@@ -243,7 +241,6 @@ bool LLPluginSharedMemory::detach(void)
 		}
 		mImpl->mAprSharedMemory = NULL;
 	}
-	mPool.destroy();
 	
 	return true;
 }
diff --git a/indra/llplugin/llpluginsharedmemory.h b/indra/llplugin/llpluginsharedmemory.h
index 84b7a58c328c27f90e99186e1c71420607bb70d8..c6cd49cabb7e119b0f9c326cc3ea358ed9f408d7 100644
--- a/indra/llplugin/llpluginsharedmemory.h
+++ b/indra/llplugin/llpluginsharedmemory.h
@@ -28,8 +28,6 @@
 #ifndef LL_LLPLUGINSHAREDMEMORY_H
 #define LL_LLPLUGINSHAREDMEMORY_H
 
-#include "llaprpool.h"
-
 class LLPluginSharedMemoryPlatformImpl;
 
 /**
@@ -110,7 +108,6 @@ class LLPluginSharedMemory
 	bool close(void);
 	bool unlink(void);
 	
-	LLAPRPool mPool;
 	std::string mName;
 	size_t mSize;
 	void *mMappedAddress;
diff --git a/indra/llplugin/slplugin/slplugin.cpp b/indra/llplugin/slplugin/slplugin.cpp
index ff86e4e1351ce10f1d2de229f43f2e391edbe6a0..516a58db8836115afd18cf276a95c0b30e445b5c 100644
--- a/indra/llplugin/slplugin/slplugin.cpp
+++ b/indra/llplugin/slplugin/slplugin.cpp
@@ -176,6 +176,8 @@ int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdL
 int main(int argc, char **argv)
 #endif
 {
+	ll_init_apr();
+
 	// Set up llerror logging
 	{
 		LLError::initForApplication(".");
@@ -391,6 +393,8 @@ int main(int argc, char **argv)
 
 	delete plugin;
 
+	ll_cleanup_apr();
+
 	return 0;
 }
 
diff --git a/indra/llprimitive/llmaterialtable.cpp b/indra/llprimitive/llmaterialtable.cpp
index 99f32e4109b0afecb5ed47c4b3f0f26f5271b5c2..b4539ebee9f8d909094013d7032813ca5c37b7a8 100644
--- a/indra/llprimitive/llmaterialtable.cpp
+++ b/indra/llprimitive/llmaterialtable.cpp
@@ -538,7 +538,7 @@ std::string LLMaterialTable::getName(U8 mcode)
 		}
 	}
 
-	return NULL;
+	return std::string();
 }
 
 
diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp
index 6e4bb7ec97322b8fe2b818cc85c9bad4c73aaa5a..cb32a510b80b62585cd3cb1863b83e178a4270e8 100644
--- a/indra/llprimitive/llmodel.cpp
+++ b/indra/llprimitive/llmodel.cpp
@@ -31,11 +31,18 @@
 #include "llconvexdecomposition.h"
 #include "llsdserialize.h"
 #include "llvector4a.h"
-
+#if LL_MSVC
+#pragma warning (disable : 4263)
+#pragma warning (disable : 4264)
+#endif
 #include "dae.h"
 #include "dae/daeErrorHandler.h"
 #include "dom/domConstants.h"
 #include "dom/domMesh.h"
+#if LL_MSVC
+#pragma warning (default : 4263)
+#pragma warning (default : 4264)
+#endif
 
 #ifdef LL_STANDALONE
 # include <zlib.h>
diff --git a/indra/llprimitive/lltextureanim.cpp b/indra/llprimitive/lltextureanim.cpp
index 398af4e6e8ae717b19a2711ef9640515e9eeb331..185a3f69c02584c8f3c59c5dd14c25097ffb7f9c 100644
--- a/indra/llprimitive/lltextureanim.cpp
+++ b/indra/llprimitive/lltextureanim.cpp
@@ -168,8 +168,8 @@ void LLTextureAnim::unpackTAMessage(LLDataPacker &dp)
 
 	mMode = data[0];
 	mFace = data[1];
-	mSizeX = llmax((U8)1, data[2]);
-	mSizeY = llmax((U8)1, data[3]);
+	mSizeX = data[2];
+	mSizeY = data[3];
 	htonmemcpy(&mStart, data + 4, MVT_F32, sizeof(F32));
 	htonmemcpy(&mLength, data + 8, MVT_F32, sizeof(F32));
 	htonmemcpy(&mRate, data + 12, MVT_F32, sizeof(F32));
diff --git a/indra/llprimitive/llvolumexml.cpp b/indra/llprimitive/llvolumexml.cpp
index f4f9d4d713fbd313c41a7bd4fea86a28b0974e66..bf2297a0299075c7fe6bd09dab4c3c4af5b0e255 100644
--- a/indra/llprimitive/llvolumexml.cpp
+++ b/indra/llprimitive/llvolumexml.cpp
@@ -34,9 +34,9 @@
 
 //============================================================================
 
-LLXMLNode *LLVolumeXml::exportProfileParams(const LLProfileParams* params)
+LLPointer<LLXMLNode> LLVolumeXml::exportProfileParams(const LLProfileParams* params)
 {
-	LLXMLNode *ret = new LLXMLNode("profile", FALSE);
+	LLPointer<LLXMLNode> ret = new LLXMLNode("profile", FALSE);
 
 	ret->createChild("curve_type", TRUE)->setByteValue(1, &params->getCurveType());
 	ret->createChild("interval", FALSE)->setFloatValue(2, &params->getBegin());
@@ -46,9 +46,9 @@ LLXMLNode *LLVolumeXml::exportProfileParams(const LLProfileParams* params)
 }
 
 
-LLXMLNode *LLVolumeXml::exportPathParams(const LLPathParams* params)
+LLPointer<LLXMLNode> LLVolumeXml::exportPathParams(const LLPathParams* params)
 {
-	LLXMLNode *ret = new LLXMLNode("path", FALSE); 
+	LLPointer<LLXMLNode> ret = new LLXMLNode("path", FALSE); 
 	ret->createChild("curve_type", TRUE)->setByteValue(1, &params->getCurveType());
 	ret->createChild("interval", FALSE)->setFloatValue(2, &params->getBegin());
 	ret->createChild("scale", FALSE)->setFloatValue(2, params->getScale().mV);
@@ -63,12 +63,15 @@ LLXMLNode *LLVolumeXml::exportPathParams(const LLPathParams* params)
 }
 
 
-LLXMLNode *LLVolumeXml::exportVolumeParams(const LLVolumeParams* params)
+LLPointer<LLXMLNode> LLVolumeXml::exportVolumeParams(const LLVolumeParams* params)
 {
-	LLXMLNode *ret = new LLXMLNode("shape", FALSE);
+	LLPointer<LLXMLNode> ret = new LLXMLNode("shape", FALSE);
 	
-	exportPathParams(&params->getPathParams())->setParent(ret);
-	exportProfileParams(&params->getProfileParams())->setParent(ret);
+	LLPointer<LLXMLNode> node ;
+	node = exportPathParams(&params->getPathParams()) ;
+	node->setParent(ret);
+	node = exportProfileParams(&params->getProfileParams()) ;
+	node->setParent(ret);
 
 	return ret;
 }
diff --git a/indra/llprimitive/llvolumexml.h b/indra/llprimitive/llvolumexml.h
index 5e79205d9a6fd886089efc2f85cc308cf3d75466..9d4d989475da6fa48c034f7b178bc3266d7383d4 100644
--- a/indra/llprimitive/llvolumexml.h
+++ b/indra/llprimitive/llvolumexml.h
@@ -34,11 +34,11 @@
 class LLVolumeXml
 {
 public:
-	static LLXMLNode* exportProfileParams(const LLProfileParams* params);
+	static LLPointer<LLXMLNode> exportProfileParams(const LLProfileParams* params);
 
-	static LLXMLNode* exportPathParams(const LLPathParams* params);
+	static LLPointer<LLXMLNode> exportPathParams(const LLPathParams* params);
 
-	static LLXMLNode* exportVolumeParams(const LLVolumeParams* params);
+	static LLPointer<LLXMLNode> exportVolumeParams(const LLVolumeParams* params);
 };
 
 #endif // LL_LLVOLUMEXML_H
diff --git a/indra/llrender/llcubemap.cpp b/indra/llrender/llcubemap.cpp
index 1b10354c22919e597b2ee67d0660cf579d6c30fb..45a3b18179a8aff6b2646aaf02e5aea96bf05add 100644
--- a/indra/llrender/llcubemap.cpp
+++ b/indra/llrender/llcubemap.cpp
@@ -36,6 +36,7 @@
 #include "m4math.h"
 
 #include "llrender.h"
+#include "llglslshader.h"
 
 #include "llglheaders.h"
 
@@ -195,7 +196,7 @@ void LLCubeMap::enableTexture(S32 stage)
 void LLCubeMap::enableTextureCoords(S32 stage)
 {
 	mTextureCoordStage = stage;
-	if (gGLManager.mHasCubeMap && stage >= 0 && LLCubeMap::sUseCubeMaps)
+	if (!LLGLSLShader::sNoFixedFunction && gGLManager.mHasCubeMap && stage >= 0 && LLCubeMap::sUseCubeMaps)
 	{
 		if (stage > 0)
 		{
@@ -237,7 +238,7 @@ void LLCubeMap::disableTexture(void)
 
 void LLCubeMap::disableTextureCoords(void)
 {
-	if (gGLManager.mHasCubeMap && mTextureCoordStage >= 0 && LLCubeMap::sUseCubeMaps)
+	if (!LLGLSLShader::sNoFixedFunction && gGLManager.mHasCubeMap && mTextureCoordStage >= 0 && LLCubeMap::sUseCubeMaps)
 	{
 		if (mTextureCoordStage > 0)
 		{
@@ -264,19 +265,19 @@ void LLCubeMap::setMatrix(S32 stage)
 		gGL.getTexUnit(stage)->activate();
 	}
 
-	LLVector3 x(LLVector3d(gGLModelView+0));
-	LLVector3 y(LLVector3d(gGLModelView+4));
-	LLVector3 z(LLVector3d(gGLModelView+8));
+	LLVector3 x(gGLModelView+0);
+	LLVector3 y(gGLModelView+4);
+	LLVector3 z(gGLModelView+8);
 
 	LLMatrix3 mat3;
 	mat3.setRows(x,y,z);
 	LLMatrix4 trans(mat3);
 	trans.transpose();
 
-	glMatrixMode(GL_TEXTURE);
-	glPushMatrix();
-	glLoadMatrixf((F32 *)trans.mMatrix);
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.pushMatrix();
+	gGL.loadMatrix((F32 *)trans.mMatrix);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	
 	/*if (stage > 0)
 	{
@@ -292,9 +293,9 @@ void LLCubeMap::restoreMatrix()
 	{
 		gGL.getTexUnit(mMatrixStage)->activate();
 	}
-	glMatrixMode(GL_TEXTURE);
-	glPopMatrix();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.popMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	
 	/*if (mMatrixStage > 0)
 	{
diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp
index 91c8a37022aadbe6a8c06e5b10ae41b8bcde3b8d..66d4ad2d87dc57013039f769abd67a4cf1bbafeb 100644
--- a/indra/llrender/llfontfreetype.cpp
+++ b/indra/llrender/llfontfreetype.cpp
@@ -55,7 +55,10 @@ FT_Library gFTLibrary = NULL;
 //static
 void LLFontManager::initClass()
 {
-	gFontManagerp = new LLFontManager;
+	if (!gFontManagerp) 
+	{
+		gFontManagerp = new LLFontManager;
+	}
 }
 
 //static
@@ -136,7 +139,7 @@ BOOL LLFontFreetype::loadFace(const std::string& filename, F32 point_size, F32 v
 		FT_Done_Face(mFTFace);
 		mFTFace = NULL;
 	}
-
+	
 	int error;
 
 	error = FT_New_Face( gFTLibrary,
diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp
index 607473d4166292f2bf55a452120eab430eb90dd0..82e8227ffe593060ae06b86fbca4dd783ac28863 100644
--- a/indra/llrender/llfontgl.cpp
+++ b/indra/llrender/llfontgl.cpp
@@ -304,6 +304,18 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
 		S32 next_bitmap_num = fgi->mBitmapNum;
 		if (next_bitmap_num != bitmap_num)
 		{
+			// Actually draw the queued glyphs before switching their texture;
+			// otherwise the queued glyphs will be taken from wrong textures.
+			if (glyph_count > 0)
+			{
+				gGL.begin(LLRender::QUADS);
+				{
+					gGL.vertexBatchPreTransformed(vertices, uvs, colors, glyph_count * 4);
+				}
+				gGL.end();
+				glyph_count = 0;
+			}
+
 			bitmap_num = next_bitmap_num;
 			LLImageGL *font_image = font_bitmap_cache->getImageGL(bitmap_num);
 			gGL.getTexUnit(0)->bind(font_image);
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 4e3cfb9c8aa5aba028caaaf8baa6f63549024e43..946e602fee66c51a0b1aa5d036357e2edc890af7 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -67,6 +67,36 @@ static const std::string HEADLESS_VERSION_STRING("1.0");
 
 std::ofstream gFailLog;
 
+#if GL_ARB_debug_output
+
+#ifndef APIENTRY
+#define APIENTRY
+#endif
+
+void APIENTRY gl_debug_callback(GLenum source,
+                                GLenum type,
+                                GLuint id,
+                                GLenum severity,
+                                GLsizei length,
+                                const GLchar* message,
+                                GLvoid* userParam)
+{
+	if (severity == GL_DEBUG_SEVERITY_HIGH_ARB)
+	{
+		llwarns << "----- GL ERROR --------" << llendl;
+	}
+	else
+	{
+		llwarns << "----- GL WARNING -------" << llendl;
+	}
+	llwarns << "Type: " << std::hex << type << llendl;
+	llwarns << "ID: " << std::hex << id << llendl;
+	llwarns << "Severity: " << std::hex << severity << llendl;
+	llwarns << "Message: " << message << llendl;
+	llwarns << "-----------------------" << llendl;
+}
+#endif
+
 void ll_init_fail_log(std::string filename)
 {
 	gFailLog.open(filename.c_str());
@@ -110,6 +140,11 @@ std::list<LLGLUpdate*> LLGLUpdate::sGLQ;
 
 #if (LL_WINDOWS || LL_LINUX || LL_SOLARIS)  && !LL_MESA_HEADLESS
 // ATI prototypes
+
+#if LL_WINDOWS
+PFNGLGETSTRINGIPROC glGetStringi = NULL;
+#endif
+
 // vertex blending prototypes
 PFNGLWEIGHTPOINTERARBPROC			glWeightPointerARB = NULL;
 PFNGLVERTEXBLENDARBPROC				glVertexBlendARB = NULL;
@@ -128,6 +163,12 @@ PFNGLUNMAPBUFFERARBPROC				glUnmapBufferARB = NULL;
 PFNGLGETBUFFERPARAMETERIVARBPROC	glGetBufferParameterivARB = NULL;
 PFNGLGETBUFFERPOINTERVARBPROC		glGetBufferPointervARB = NULL;
 
+//GL_ARB_vertex_array_object
+PFNGLBINDVERTEXARRAYPROC glBindVertexArray = NULL;
+PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays = NULL;
+PFNGLGENVERTEXARRAYSPROC glGenVertexArrays = NULL;
+PFNGLISVERTEXARRAYPROC glIsVertexArray = NULL;
+
 // GL_ARB_map_buffer_range
 PFNGLMAPBUFFERRANGEPROC			glMapBufferRange = NULL;
 PFNGLFLUSHMAPPEDBUFFERRANGEPROC	glFlushMappedBufferRange = NULL;
@@ -197,10 +238,16 @@ PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample = NULL;
 PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer = NULL;
 
 //GL_ARB_texture_multisample
-PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample;
-PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample;
-PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv;
-PFNGLSAMPLEMASKIPROC glSampleMaski;
+PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample = NULL;
+PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample = NULL;
+PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv = NULL;
+PFNGLSAMPLEMASKIPROC glSampleMaski = NULL;
+
+//GL_ARB_debug_output
+PFNGLDEBUGMESSAGECONTROLARBPROC glDebugMessageControlARB = NULL;
+PFNGLDEBUGMESSAGEINSERTARBPROC glDebugMessageInsertARB = NULL;
+PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARB = NULL;
+PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB = NULL;
 
 // GL_EXT_blend_func_separate
 PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT = NULL;
@@ -249,6 +296,10 @@ PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB = NULL;
 PFNGLGETUNIFORMIVARBPROC glGetUniformivARB = NULL;
 PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB = NULL;
 
+#if LL_WINDOWS
+PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB = NULL;
+#endif
+
 // vertex shader prototypes
 #if LL_LINUX || LL_SOLARIS
 PFNGLVERTEXATTRIB1DARBPROC glVertexAttrib1dARB = NULL;
@@ -349,6 +400,7 @@ LLGLManager::LLGLManager() :
 	mHasBlendFuncSeparate(FALSE),
 	mHasSync(FALSE),
 	mHasVertexBufferObject(FALSE),
+	mHasVertexArrayObject(FALSE),
 	mHasMapBufferRange(FALSE),
 	mHasFlushBufferRange(FALSE),
 	mHasPBuffer(FALSE),
@@ -370,6 +422,7 @@ LLGLManager::LLGLManager() :
 	mHasAnisotropic(FALSE),
 	mHasARBEnvCombine(FALSE),
 	mHasCubeMap(FALSE),
+	mHasDebugOutput(FALSE),
 
 	mIsATI(FALSE),
 	mIsNVIDIA(FALSE),
@@ -409,6 +462,15 @@ void LLGLManager::initWGL()
 		LL_WARNS("RenderInit") << "No ARB pixel format extensions" << LL_ENDL;
 	}
 
+	if (ExtensionExists("WGL_ARB_create_context",gGLHExts.mSysExts))
+	{
+		GLH_EXT_NAME(wglCreateContextAttribsARB) = (PFNWGLCREATECONTEXTATTRIBSARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglCreateContextAttribsARB");
+	}
+	else
+	{
+		LL_WARNS("RenderInit") << "No ARB create context extensions" << LL_ENDL;
+	}
+	
 	if (ExtensionExists("WGL_EXT_swap_control", gGLHExts.mSysExts))
 	{
         GLH_EXT_NAME(wglSwapIntervalEXT) = (PFNWGLSWAPINTERVALEXTPROC)GLH_EXT_GET_PROC_ADDRESS("wglSwapIntervalEXT");
@@ -438,13 +500,45 @@ bool LLGLManager::initGL()
 		LL_ERRS("RenderInit") << "Calling init on LLGLManager after already initialized!" << LL_ENDL;
 	}
 
-	GLint alpha_bits;
-	glGetIntegerv( GL_ALPHA_BITS, &alpha_bits );
-	if( 8 != alpha_bits )
+	stop_glerror();
+
+#if LL_WINDOWS
+	if (!glGetStringi)
 	{
-		LL_WARNS("RenderInit") << "Frame buffer has less than 8 bits of alpha.  Avatar texture compositing will fail." << LL_ENDL;
+		glGetStringi = (PFNGLGETSTRINGIPROC) GLH_EXT_GET_PROC_ADDRESS("glGetStringi");
 	}
 
+	//reload extensions string (may have changed after using wglCreateContextAttrib)
+	if (glGetStringi)
+	{
+		std::stringstream str;
+
+		GLint count = 0;
+		glGetIntegerv(GL_NUM_EXTENSIONS, &count);
+		for (GLint i = 0; i < count; ++i)
+		{
+			std::string ext((const char*) glGetStringi(GL_EXTENSIONS, i));
+			str << ext << " ";
+			LL_DEBUGS("GLExtensions") << ext << llendl;
+		}
+		
+		{
+			PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB = 0;
+			wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC)wglGetProcAddress("wglGetExtensionsStringARB");
+			if(wglGetExtensionsStringARB)
+			{
+				str << (const char*) wglGetExtensionsStringARB(wglGetCurrentDC());
+			}
+		}
+
+		free(gGLHExts.mSysExts);
+		std::string extensions = str.str();
+		gGLHExts.mSysExts = strdup(extensions.c_str());
+	}
+#endif
+	
+	stop_glerror();
+
 	// Extract video card strings and convert to upper case to
 	// work around driver-to-driver variation in capitalization.
 	mGLVendor = std::string((const char *)glGetString(GL_VENDOR));
@@ -459,7 +553,7 @@ bool LLGLManager::initGL()
 		&mDriverVersionVendorString );
 
 	mGLVersion = mDriverVersionMajor + mDriverVersionMinor * .1f;
-	
+
 	// Trailing space necessary to keep "nVidia Corpor_ati_on" cards
 	// from being recognized as ATI.
 	if (mGLVendor.substr(0,4) == "ATI ")
@@ -531,8 +625,12 @@ bool LLGLManager::initGL()
 		mGLVendorShort = "MISC";
 	}
 	
+	stop_glerror();
 	// This is called here because it depends on the setting of mIsGF2or4MX, and sets up mHasMultitexture.
 	initExtensions();
+	stop_glerror();
+
+	S32 old_vram = mVRAM;
 
 	if (mHasATIMemInfo)
 	{ //ask the gl how much vram is free at startup and attempt to use no more than half of that
@@ -548,7 +646,27 @@ bool LLGLManager::initGL()
 		mVRAM = dedicated_memory/1024;
 	}
 
-	if (mHasMultitexture)
+	if (mVRAM < 256)
+	{ //something likely went wrong using the above extensions, fall back to old method
+		mVRAM = old_vram;
+	}
+
+	stop_glerror();
+
+	stop_glerror();
+
+	if (mHasFragmentShader)
+	{
+		GLint num_tex_image_units;
+		glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS_ARB, &num_tex_image_units);
+		mNumTextureImageUnits = llmin(num_tex_image_units, 32);
+	}
+
+	if (LLRender::sGLCoreProfile)
+	{
+		mNumTextureUnits = llmin(mNumTextureImageUnits, MAX_GL_TEXTURE_UNITS);
+	}
+	else if (mHasMultitexture)
 	{
 		GLint num_tex_units;		
 		glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &num_tex_units);
@@ -567,12 +685,7 @@ bool LLGLManager::initGL()
 		return false;
 	}
 	
-	if (mHasFragmentShader)
-	{
-		GLint num_tex_image_units;
-		glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS_ARB, &num_tex_image_units);
-		mNumTextureImageUnits = llmin(num_tex_image_units, 32);
-	}
+	stop_glerror();
 
 	if (mHasTextureMultisample)
 	{
@@ -582,6 +695,21 @@ bool LLGLManager::initGL()
 		glGetIntegerv(GL_MAX_SAMPLE_MASK_WORDS, &mMaxSampleMaskWords);
 	}
 
+	stop_glerror();
+
+#if LL_WINDOWS
+	if (mHasDebugOutput && gDebugGL)
+	{ //setup debug output callback
+		//glDebugMessageControlARB(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_LOW_ARB, 0, NULL, GL_TRUE);
+		glDebugMessageCallbackARB((GLDEBUGPROCARB) gl_debug_callback, NULL);
+		glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB);
+	}
+#endif
+
+	stop_glerror();
+
+	//HACK always disable texture multisample, use FXAA instead
+	mHasTextureMultisample = FALSE;
 #if LL_WINDOWS
 	if (mIsATI)
 	{ //using multisample textures on ATI results in black screen for some reason
@@ -593,10 +721,17 @@ bool LLGLManager::initGL()
 	{
 		glGetIntegerv(GL_MAX_SAMPLES, &mMaxSamples);
 	}
+
+	stop_glerror();
 	
 	setToDebugGPU();
 
+	stop_glerror();
+
 	initGLStates();
+
+	stop_glerror();
+
 	return true;
 }
 
@@ -700,14 +835,6 @@ std::string LLGLManager::getRawGLString()
 	return gl_string;
 }
 
-U32 LLGLManager::getNumFBOFSAASamples(U32 samples)
-{
-	samples = llmin(samples, (U32) mMaxColorTextureSamples);
-	samples = llmin(samples, (U32) mMaxDepthTextureSamples);
-	samples = llmin(samples, (U32) 4);
-	return samples;
-}
-
 void LLGLManager::shutdownGL()
 {
 	if (mInited)
@@ -774,7 +901,7 @@ void LLGLManager::initExtensions()
 	mHasVertexShader = FALSE;
 	mHasFragmentShader = FALSE;
 	mHasTextureRectangle = FALSE;
-#else // LL_MESA_HEADLESS
+#else // LL_MESA_HEADLESS //important, gGLHExts.mSysExts is uninitialized until after glh_init_extensions is called
 	mHasMultitexture = glh_init_extensions("GL_ARB_multitexture");
 	mHasATIMemInfo = ExtensionExists("GL_ATI_meminfo", gGLHExts.mSysExts);
 	mHasNVXMemInfo = ExtensionExists("GL_NVX_gpu_memory_info", gGLHExts.mSysExts);
@@ -788,6 +915,7 @@ void LLGLManager::initExtensions()
 	mHasOcclusionQuery = ExtensionExists("GL_ARB_occlusion_query", gGLHExts.mSysExts);
 	mHasOcclusionQuery2 = ExtensionExists("GL_ARB_occlusion_query2", gGLHExts.mSysExts);
 	mHasVertexBufferObject = ExtensionExists("GL_ARB_vertex_buffer_object", gGLHExts.mSysExts);
+	mHasVertexArrayObject = ExtensionExists("GL_ARB_vertex_array_object", gGLHExts.mSysExts);
 	mHasSync = ExtensionExists("GL_ARB_sync", gGLHExts.mSysExts);
 	mHasMapBufferRange = ExtensionExists("GL_ARB_map_buffer_range", gGLHExts.mSysExts);
 	mHasFlushBufferRange = ExtensionExists("GL_APPLE_flush_buffer_range", gGLHExts.mSysExts);
@@ -806,13 +934,14 @@ void LLGLManager::initExtensions()
 	mHasBlendFuncSeparate = ExtensionExists("GL_EXT_blend_func_separate", gGLHExts.mSysExts);
 	mHasTextureRectangle = ExtensionExists("GL_ARB_texture_rectangle", gGLHExts.mSysExts);
 	mHasTextureMultisample = ExtensionExists("GL_ARB_texture_multisample", gGLHExts.mSysExts);
+	mHasDebugOutput = ExtensionExists("GL_ARB_debug_output", gGLHExts.mSysExts);
 #if !LL_DARWIN
 	mHasPointParameters = !mIsATI && ExtensionExists("GL_ARB_point_parameters", gGLHExts.mSysExts);
 #endif
-	mHasShaderObjects = ExtensionExists("GL_ARB_shader_objects", gGLHExts.mSysExts) && ExtensionExists("GL_ARB_shading_language_100", gGLHExts.mSysExts);
+	mHasShaderObjects = ExtensionExists("GL_ARB_shader_objects", gGLHExts.mSysExts) && (LLRender::sGLCoreProfile || ExtensionExists("GL_ARB_shading_language_100", gGLHExts.mSysExts));
 	mHasVertexShader = ExtensionExists("GL_ARB_vertex_program", gGLHExts.mSysExts) && ExtensionExists("GL_ARB_vertex_shader", gGLHExts.mSysExts)
-						&& ExtensionExists("GL_ARB_shading_language_100", gGLHExts.mSysExts);
-	mHasFragmentShader = ExtensionExists("GL_ARB_fragment_shader", gGLHExts.mSysExts) && ExtensionExists("GL_ARB_shading_language_100", gGLHExts.mSysExts);
+		&& (LLRender::sGLCoreProfile || ExtensionExists("GL_ARB_shading_language_100", gGLHExts.mSysExts));
+	mHasFragmentShader = ExtensionExists("GL_ARB_fragment_shader", gGLHExts.mSysExts) && (LLRender::sGLCoreProfile || ExtensionExists("GL_ARB_shading_language_100", gGLHExts.mSysExts));
 #endif
 
 #if LL_LINUX || LL_SOLARIS
@@ -985,6 +1114,13 @@ void LLGLManager::initExtensions()
 			mHasVertexBufferObject = FALSE;
 		}
 	}
+	if (mHasVertexArrayObject)
+	{
+		glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC) GLH_EXT_GET_PROC_ADDRESS("glBindVertexArray");
+		glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteVertexArrays");
+		glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC) GLH_EXT_GET_PROC_ADDRESS("glGenVertexArrays");
+		glIsVertexArray = (PFNGLISVERTEXARRAYPROC) GLH_EXT_GET_PROC_ADDRESS("glIsVertexArray");
+	}
 	if (mHasSync)
 	{
 		glFenceSync = (PFNGLFENCESYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glFenceSync");
@@ -1039,6 +1175,13 @@ void LLGLManager::initExtensions()
 		glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC) GLH_EXT_GET_PROC_ADDRESS("glGetMultisamplefv");
 		glSampleMaski = (PFNGLSAMPLEMASKIPROC) GLH_EXT_GET_PROC_ADDRESS("glSampleMaski");
 	}	
+	if (mHasDebugOutput)
+	{
+		glDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDebugMessageControlARB");
+		glDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDebugMessageInsertARB");
+		glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC) GLH_EXT_GET_PROC_ADDRESS("glDebugMessageCallbackARB");
+		glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC) GLH_EXT_GET_PROC_ADDRESS("glGetDebugMessageLogARB");
+	}
 #if (!LL_LINUX && !LL_SOLARIS) || LL_LINUX_NV_GL_HEADERS
 	// This is expected to be a static symbol on Linux GL implementations, except if we use the nvidia headers - bah
 	glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)GLH_EXT_GET_PROC_ADDRESS("glDrawRangeElements");
@@ -1193,7 +1336,7 @@ void rotate_quat(LLQuaternion& rotation)
 {
 	F32 angle_radians, x, y, z;
 	rotation.getAngleAxis(&angle_radians, &x, &y, &z);
-	glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
+	gGL.rotatef(angle_radians * RAD_TO_DEG, x, y, z);
 }
 
 void flush_glerror()
@@ -1230,10 +1373,6 @@ void log_glerror()
 
 void do_assert_glerror()
 {
-	if (LL_UNLIKELY(!gGLManager.mInited))
-	{
-		LL_ERRS("RenderInit") << "GL not initialized" << LL_ENDL;
-	}
 	//  Create or update texture to be used with this data 
 	GLenum error;
 	error = glGetError();
@@ -1326,11 +1465,6 @@ void LLGLState::initClass()
 	//make sure multisample defaults to disabled
 	sStateMap[GL_MULTISAMPLE_ARB] = GL_FALSE;
 	glDisable(GL_MULTISAMPLE_ARB);
-
-	sStateMap[GL_MULTISAMPLE_ARB] = GL_FALSE;
-	glDisable(GL_MULTISAMPLE_ARB);
-
-	glEnableClientState(GL_VERTEX_ARRAY);
 }
 
 //static
@@ -1604,7 +1738,7 @@ void LLGLState::checkTextureChannels(const std::string& msg)
 
 void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask)
 {
-	if (!gDebugGL)
+	if (!gDebugGL || LLGLSLShader::sNoFixedFunction)
 	{
 		return;
 	}
@@ -1625,7 +1759,7 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask)
 		error = TRUE;
 	}
 
-	glGetIntegerv(GL_ACTIVE_TEXTURE_ARB, &active_texture);
+	/*glGetIntegerv(GL_ACTIVE_TEXTURE_ARB, &active_texture);
 	if (active_texture != GL_TEXTURE0_ARB)
 	{
 		llwarns << "Active texture corrupted: " << active_texture << llendl;
@@ -1634,7 +1768,7 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask)
 			gFailLog << "Active texture corrupted: " << active_texture << std::endl;
 		}
 		error = TRUE;
-	}
+	}*/
 
 	static const char* label[] =
 	{
@@ -1661,7 +1795,7 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask)
 	};
 
 
-	for (S32 j = 0; j < 4; j++)
+	for (S32 j = 1; j < 4; j++)
 	{
 		if (glIsEnabled(value[j]))
 		{
@@ -1783,17 +1917,26 @@ LLGLState::LLGLState(LLGLenum state, S32 enabled) :
 	mState(state), mWasEnabled(FALSE), mIsEnabled(FALSE)
 {
 	if (LLGLSLShader::sNoFixedFunction)
-	{ //always disable state that's deprecated post GL 3.0
+	{ //always ignore state that's deprecated post GL 3.0
 		switch (state)
 		{
 			case GL_ALPHA_TEST:
-				enabled = 0;
+			case GL_NORMALIZE:
+			case GL_TEXTURE_GEN_R:
+			case GL_TEXTURE_GEN_S:
+			case GL_TEXTURE_GEN_T:
+			case GL_TEXTURE_GEN_Q:
+			case GL_LIGHTING:
+			case GL_COLOR_MATERIAL:
+			case GL_FOG:
+			case GL_LINE_STIPPLE:
+				mState = 0;
 				break;
 		}
 	}
 
 	stop_glerror();
-	if (state)
+	if (mState)
 	{
 		mWasEnabled = sStateMap[state];
 		llassert(mWasEnabled == glIsEnabled(state));
@@ -1875,79 +2018,6 @@ void LLGLManager::initGLStates()
 
 ////////////////////////////////////////////////////////////////////////////////
 
-void enable_vertex_weighting(const S32 index)
-{
-#if GL_ARB_vertex_program
-	if (index > 0) glEnableVertexAttribArrayARB(index);	// vertex weights
-#endif
-}
-
-void disable_vertex_weighting(const S32 index)
-{
-#if GL_ARB_vertex_program
-	if (index > 0) glDisableVertexAttribArrayARB(index);	// vertex weights
-#endif
-}
-
-void enable_binormals(const S32 index)
-{
-#if GL_ARB_vertex_program
-	if (index > 0)
-	{
-		glEnableVertexAttribArrayARB(index);	// binormals
-	}
-#endif
-}
-
-void disable_binormals(const S32 index)
-{
-#if GL_ARB_vertex_program
-	if (index > 0)
-	{
-		glDisableVertexAttribArrayARB(index);	// binormals
-	}
-#endif
-}
-
-
-void enable_cloth_weights(const S32 index)
-{
-#if GL_ARB_vertex_program
-	if (index > 0)	glEnableVertexAttribArrayARB(index);
-#endif
-}
-
-void disable_cloth_weights(const S32 index)
-{
-#if GL_ARB_vertex_program
-	if (index > 0) glDisableVertexAttribArrayARB(index);
-#endif
-}
-
-void set_vertex_weights(const S32 index, const U32 stride, const F32 *weights)
-{
-#if GL_ARB_vertex_program
-	if (index > 0) glVertexAttribPointerARB(index, 1, GL_FLOAT, FALSE, stride, weights);
-	stop_glerror();
-#endif
-}
-
-void set_vertex_clothing_weights(const S32 index, const U32 stride, const LLVector4 *weights)
-{
-#if GL_ARB_vertex_program
-	if (index > 0) glVertexAttribPointerARB(index, 4, GL_FLOAT, TRUE, stride, weights);
-	stop_glerror();
-#endif
-}
-
-void set_binormals(const S32 index, const U32 stride,const LLVector3 *binormals)
-{
-#if GL_ARB_vertex_program
-	if (index > 0) glVertexAttribPointerARB(index, 3, GL_FLOAT, FALSE, stride, binormals);
-	stop_glerror();
-#endif
-}
-
 void parse_gl_version( S32* major, S32* minor, S32* release, std::string* vendor_specific )
 {
 	// GL_VERSION returns a null-terminated string with the format: 
@@ -2060,20 +2130,20 @@ void LLGLUserClipPlane::setPlane(F32 a, F32 b, F32 c, F32 d)
     glh::matrix4f suffix;
     suffix.set_row(2, cplane);
     glh::matrix4f newP = suffix * P;
-    glMatrixMode(GL_PROJECTION);
-	glPushMatrix();
-    glLoadMatrixf(newP.m);
+    gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.pushMatrix();
+    gGL.loadMatrix(newP.m);
 	gGLObliqueProjectionInverse = LLMatrix4(newP.inverse().transpose().m);
-    glMatrixMode(GL_MODELVIEW);
+    gGL.matrixMode(LLRender::MM_MODELVIEW);
 }
 
 LLGLUserClipPlane::~LLGLUserClipPlane()
 {
 	if (mApply)
 	{
-		glMatrixMode(GL_PROJECTION);
-		glPopMatrix();
-		glMatrixMode(GL_MODELVIEW);
+		gGL.matrixMode(LLRender::MM_PROJECTION);
+		gGL.popMatrix();
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 	}
 }
 
@@ -2263,16 +2333,16 @@ LLGLSquashToFarClip::LLGLSquashToFarClip(glh::matrix4f P, U32 layer)
 		P.element(2, i) = P.element(3, i) * depth;
 	}
 
-	glMatrixMode(GL_PROJECTION);
-	glPushMatrix();
-	glLoadMatrixf(P.m);
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.pushMatrix();
+	gGL.loadMatrix(P.m);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 }
 
 LLGLSquashToFarClip::~LLGLSquashToFarClip()
 {
-	glMatrixMode(GL_PROJECTION);
-	glPopMatrix();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.popMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 }
 
diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h
index d736133f3ffc14ba21ec732be273c5338bcf0e76..6a147b8e19ae4c878aab3b395cbd3e3cdba15d68 100644
--- a/indra/llrender/llgl.h
+++ b/indra/llrender/llgl.h
@@ -88,6 +88,7 @@ class LLGLManager
 		
 	// ARB Extensions
 	BOOL mHasVertexBufferObject;
+	BOOL mHasVertexArrayObject;
 	BOOL mHasSync;
 	BOOL mHasMapBufferRange;
 	BOOL mHasFlushBufferRange;
@@ -112,6 +113,7 @@ class LLGLManager
 	BOOL mHasAnisotropic;
 	BOOL mHasARBEnvCombine;
 	BOOL mHasCubeMap;
+	BOOL mHasDebugOutput;
 
 	// Vendor-specific extensions
 	BOOL mIsATI;
@@ -148,7 +150,6 @@ class LLGLManager
 	void printGLInfoString();
 	void getGLInfo(LLSD& info);
 
-	U32 getNumFBOFSAASamples(U32 desired_samples = 32);
 	// In ALL CAPS
 	std::string mGLVendor;
 	std::string mGLVendorShort;
@@ -252,7 +253,7 @@ class LLGLState
 	static void dumpStates();
 	static void checkStates(const std::string& msg = "");
 	static void checkTextureChannels(const std::string& msg = "");
-	static void checkClientArrays(const std::string& msg = "", U32 data_mask = 0x0001);
+	static void checkClientArrays(const std::string& msg = "", U32 data_mask = 0);
 	
 protected:
 	static boost::unordered_map<LLGLenum, LLGLboolean> sStateMap;
@@ -419,15 +420,7 @@ extern LLMatrix4 gGLObliqueProjectionInverse;
 #include "llglstates.h"
 
 void init_glstates();
-void enable_vertex_weighting(const S32 index);
-void disable_vertex_weighting(const S32 index);
-void enable_binormals(const S32 index);
-void disable_binormals(const S32 index);
-void enable_cloth_weights(const S32 index);
-void disable_cloth_weights(const S32 index);
-void set_vertex_weights(const S32 index, const U32 stride, const F32 *weights);
-void set_vertex_clothing_weights(const S32 index, const U32 stride, const LLVector4 *weights);
-void set_binormals(const S32 index, const U32 stride, const LLVector3 *binormals);
+
 void parse_gl_version( S32* major, S32* minor, S32* release, std::string* vendor_specific );
 
 extern BOOL gClothRipple;
diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h
index 851a75629e184e60767390c843360156d7d8515a..10aad202e17f1357afe2a0137699722e6cf94f50 100644
--- a/indra/llrender/llglheaders.h
+++ b/indra/llrender/llglheaders.h
@@ -68,6 +68,12 @@ extern PFNGLUNMAPBUFFERARBPROC		glUnmapBufferARB;
 extern PFNGLGETBUFFERPARAMETERIVARBPROC	glGetBufferParameterivARB;
 extern PFNGLGETBUFFERPOINTERVARBPROC	glGetBufferPointervARB;
 
+// GL_ARB_vertex_array_object
+extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
+extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
+extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
+extern PFNGLISVERTEXARRAYPROC glIsVertexArray;
+
 // GL_ARB_sync
 extern PFNGLFENCESYNCPROC				glFenceSync;
 extern PFNGLISSYNCPROC					glIsSync;
@@ -310,6 +316,12 @@ extern PFNGLCLIENTACTIVETEXTUREARBPROC	glClientActiveTextureARB;
 extern PFNGLDRAWRANGEELEMENTSPROC 	glDrawRangeElements;
 #endif // LL_LINUX_NV_GL_HEADERS
 
+// GL_ARB_vertex_array_object
+extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
+extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
+extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
+extern PFNGLISVERTEXARRAYPROC glIsVertexArray;
+
 // GL_ARB_vertex_buffer_object
 extern PFNGLBINDBUFFERARBPROC		glBindBufferARB;
 extern PFNGLDELETEBUFFERSARBPROC	glDeleteBuffersARB;
@@ -531,6 +543,9 @@ extern PFNGLSAMPLEMASKIPROC glSampleMaski;
 #include "GL/glext.h"
 #include "GL/glh_extensions.h"
 
+// WGL_ARB_create_context
+extern PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB;
+extern PFNGLGETSTRINGIPROC glGetStringi;
 
 // GL_ARB_vertex_buffer_object
 extern PFNGLBINDBUFFERARBPROC		glBindBufferARB;
@@ -545,6 +560,12 @@ extern PFNGLUNMAPBUFFERARBPROC		glUnmapBufferARB;
 extern PFNGLGETBUFFERPARAMETERIVARBPROC	glGetBufferParameterivARB;
 extern PFNGLGETBUFFERPOINTERVARBPROC	glGetBufferPointervARB;
 
+// GL_ARB_vertex_array_object
+extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
+extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
+extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
+extern PFNGLISVERTEXARRAYPROC glIsVertexArray;
+
 // GL_ARB_sync
 extern PFNGLFENCESYNCPROC				glFenceSync;
 extern PFNGLISSYNCPROC					glIsSync;
@@ -735,6 +756,12 @@ extern PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample;
 extern PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv;
 extern PFNGLSAMPLEMASKIPROC glSampleMaski;
 
+//GL_ARB_debug_output
+extern PFNGLDEBUGMESSAGECONTROLARBPROC glDebugMessageControlARB;
+extern PFNGLDEBUGMESSAGEINSERTARBPROC glDebugMessageInsertARB;
+extern PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARB;
+extern PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB;
+
 #elif LL_DARWIN
 //----------------------------------------------------------------------------
 // LL_DARWIN
@@ -899,6 +926,31 @@ extern void glGetBufferPointervARB (GLenum, GLenum, GLvoid* *);
 #endif /* GL_GLEXT_FUNCTION_POINTERS */
 #endif
 
+#ifndef GL_ARB_texture_rg
+#define GL_RG                             0x8227
+#define GL_RG_INTEGER                     0x8228
+#define GL_R8                             0x8229
+#define GL_R16                            0x822A
+#define GL_RG8                            0x822B
+#define GL_RG16                           0x822C
+#define GL_R16F                           0x822D
+#define GL_R32F                           0x822E
+#define GL_RG16F                          0x822F
+#define GL_RG32F                          0x8230
+#define GL_R8I                            0x8231
+#define GL_R8UI                           0x8232
+#define GL_R16I                           0x8233
+#define GL_R16UI                          0x8234
+#define GL_R32I                           0x8235
+#define GL_R32UI                          0x8236
+#define GL_RG8I                           0x8237
+#define GL_RG8UI                          0x8238
+#define GL_RG16I                          0x8239
+#define GL_RG16UI                         0x823A
+#define GL_RG32I                          0x823B
+#define GL_RG32UI                         0x823C
+#endif
+
 // May be needed for DARWIN...
 // #ifndef GL_ARB_compressed_tex_image
 // #define GL_ARB_compressed_tex_image 1
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index f51d83abe486442aa2b17e067993b4913e08d525..6b2852670a42c56c4bfae5eaf2c84229c2082191 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -31,6 +31,7 @@
 #include "llshadermgr.h"
 #include "llfile.h"
 #include "llrender.h"
+#include "llvertexbuffer.h"
 
 #if LL_DARWIN
 #include "OpenGL/OpenGL.h"
@@ -50,6 +51,7 @@ using std::string;
 
 GLhandleARB LLGLSLShader::sCurBoundShader = 0;
 LLGLSLShader* LLGLSLShader::sCurBoundShaderPtr = NULL;
+S32 LLGLSLShader::sIndexedTextureChannels = 0;
 bool LLGLSLShader::sNoFixedFunction = false;
 
 //UI shader -- declared here so llui_libtest will link properly
@@ -64,7 +66,7 @@ BOOL shouldChange(const LLVector4& v1, const LLVector4& v2)
 LLShaderFeatures::LLShaderFeatures()
 : calculatesLighting(false), isShiny(false), isFullbright(false), hasWaterFog(false),
 hasTransport(false), hasSkinning(false), hasObjectSkinning(false), hasAtmospherics(false), isSpecular(false),
-hasGamma(false), hasLighting(false), calculatesAtmospherics(false), mIndexedTextureChannels(0), disableTextureIndex(false),
+hasGamma(false), hasLighting(false), isAlphaLighting(false), calculatesAtmospherics(false), mIndexedTextureChannels(0), disableTextureIndex(false),
 hasAlphaMask(false)
 {
 }
@@ -75,6 +77,7 @@ hasAlphaMask(false)
 LLGLSLShader::LLGLSLShader()
 	: mProgramObject(0), mActiveTextureChannels(0), mShaderLevel(0), mShaderGroup(SG_DEFAULT), mUniformsDirty(FALSE)
 {
+
 }
 
 void LLGLSLShader::unload()
@@ -110,17 +113,19 @@ void LLGLSLShader::unload()
 BOOL LLGLSLShader::createShader(vector<string> * attributes,
 								vector<string> * uniforms)
 {
+	//reloading, reset matrix hash values
+	for (U32 i = 0; i < LLRender::NUM_MATRIX_MODES; ++i)
+	{
+		mMatHash[i] = 0xFFFFFFFF;
+	}
+	mLightHash = 0xFFFFFFFF;
+
 	llassert_always(!mShaderFiles.empty());
 	BOOL success = TRUE;
 
 	// Create program
 	mProgramObject = glCreateProgramObjectARB();
 	
-	if (gGLManager.mGLVersion < 3.1f)
-	{ //force indexed texture channels to 1 if GL version is old (performance improvement for drivers with poor branching shader model support)
-		mFeatures.mIndexedTextureChannels = llmin(mFeatures.mIndexedTextureChannels, 1);
-	}
-
 	//compile new source
 	vector< pair<string,GLenum> >::iterator fileIter = mShaderFiles.begin();
 	for ( ; fileIter != mShaderFiles.end(); fileIter++ )
@@ -235,6 +240,13 @@ void LLGLSLShader::attachObjects(GLhandleARB* objects, S32 count)
 
 BOOL LLGLSLShader::mapAttributes(const vector<string> * attributes)
 {
+	//before linking, make sure reserved attributes always have consistent locations
+	for (U32 i = 0; i < LLShaderMgr::instance()->mReservedAttribs.size(); i++)
+	{
+		const char* name = LLShaderMgr::instance()->mReservedAttribs[i].c_str();
+		glBindAttribLocationARB(mProgramObject, i, (const GLcharARB *) name);
+	}
+	
 	//link the program
 	BOOL res = link();
 
@@ -308,7 +320,7 @@ void LLGLSLShader::mapUniform(GLint index, const vector<string> * uniforms)
 		for (S32 i = 0; i < (S32) LLShaderMgr::instance()->mReservedUniforms.size(); i++)
 		{
 			if ( (mUniform[i] == -1)
-				&& (LLShaderMgr::instance()->mReservedUniforms[i].compare(0, length, name, LLShaderMgr::instance()->mReservedUniforms[i].length()) == 0))
+				&& (LLShaderMgr::instance()->mReservedUniforms[i] == name))
 			{
 				//found it
 				mUniform[i] = location;
@@ -322,7 +334,7 @@ void LLGLSLShader::mapUniform(GLint index, const vector<string> * uniforms)
 			for (U32 i = 0; i < uniforms->size(); i++)
 			{
 				if ( (mUniform[i+LLShaderMgr::instance()->mReservedUniforms.size()] == -1)
-					&& ((*uniforms)[i].compare(0, length, name, (*uniforms)[i].length()) == 0))
+					&& ((*uniforms)[i] == name))
 				{
 					//found it
 					mUniform[i+LLShaderMgr::instance()->mReservedUniforms.size()] = location;
@@ -386,6 +398,7 @@ void LLGLSLShader::bind()
 	gGL.flush();
 	if (gGLManager.mHasShaderObjects)
 	{
+		LLVertexBuffer::unbind();
 		glUseProgramObjectARB(mProgramObject);
 		sCurBoundShader = mProgramObject;
 		sCurBoundShaderPtr = this;
@@ -411,6 +424,7 @@ void LLGLSLShader::unbind()
 				stop_glerror();
 			}
 		}
+		LLVertexBuffer::unbind();
 		glUseProgramObjectARB(0);
 		sCurBoundShader = 0;
 		sCurBoundShaderPtr = NULL;
@@ -420,9 +434,13 @@ void LLGLSLShader::unbind()
 
 void LLGLSLShader::bindNoShader(void)
 {
-	glUseProgramObjectARB(0);
-	sCurBoundShader = 0;
-	sCurBoundShaderPtr = NULL;
+	LLVertexBuffer::unbind();
+	if (gGLManager.mHasShaderObjects)
+	{
+		glUseProgramObjectARB(0);
+		sCurBoundShader = 0;
+		sCurBoundShaderPtr = NULL;
+	}
 }
 
 S32 LLGLSLShader::enableTexture(S32 uniform, LLTexUnit::eTextureType mode)
@@ -768,13 +786,17 @@ GLint LLGLSLShader::getUniformLocation(const string& uniform)
 		}
 	}
 
-	/*if (gDebugGL)
+	return ret;
+}
+
+GLint LLGLSLShader::getUniformLocation(U32 index)
+{
+	GLint ret = -1;
+	if (mProgramObject > 0)
 	{
-		if (ret == -1 && ret != glGetUniformLocationARB(mProgramObject, uniform.c_str()))
-		{
-			llerrs << "Uniform map invalid." << llendl;
-		}
-	}*/
+		llassert(index < mUniform.size());
+		return mUniform[index];
+	}
 
 	return ret;
 }
@@ -930,7 +952,9 @@ void LLGLSLShader::uniform4fv(const string& uniform, U32 count, const GLfloat* v
 		std::map<GLint, LLVector4>::iterator iter = mValue.find(location);
 		if (iter == mValue.end() || shouldChange(iter->second,vec) || count != 1)
 		{
+			stop_glerror();
 			glUniform4fvARB(location, count, v);
+			stop_glerror();
 			mValue[location] = vec;
 		}
 	}
@@ -985,8 +1009,8 @@ void LLGLSLShader::vertexAttrib4fv(U32 index, GLfloat* v)
 	}
 }
 
-void LLGLSLShader::setAlphaRange(F32 minimum, F32 maximum)
+void LLGLSLShader::setMinimumAlpha(F32 minimum)
 {
-	uniform1f("minimum_alpha", minimum);
-	uniform1f("maximum_alpha", maximum);
+	gGL.flush();
+	uniform1f(LLShaderMgr::MINIMUM_ALPHA, minimum);
 }
diff --git a/indra/llrender/llglslshader.h b/indra/llrender/llglslshader.h
index 558ea66b50f7bd10d6c74377914e893ec62412b2..00b4b0dbd4097c07e56ffab9ec014ad7dae000fb 100644
--- a/indra/llrender/llglslshader.h
+++ b/indra/llrender/llglslshader.h
@@ -36,6 +36,7 @@ class LLShaderFeatures
 	bool calculatesLighting;
 	bool calculatesAtmospherics;
 	bool hasLighting; // implies no transport (it's possible to have neither though)
+	bool isAlphaLighting; // indicates lighting shaders need not be linked in (lighting performed directly in alpha shader to match deferred lighting functions)
 	bool isShiny;
 	bool isFullbright; // implies no lighting
 	bool isSpecular;
@@ -69,7 +70,7 @@ class LLGLSLShader
 
 	static GLhandleARB sCurBoundShader;
 	static LLGLSLShader* sCurBoundShaderPtr;
-
+	static S32 sIndexedTextureChannels;
 	static bool sNoFixedFunction;
 
 	void unload();
@@ -108,16 +109,17 @@ class LLGLSLShader
 	void uniformMatrix3fv(const std::string& uniform, U32 count, GLboolean transpose, const GLfloat *v);
 	void uniformMatrix4fv(const std::string& uniform, U32 count, GLboolean transpose, const GLfloat *v);
 
-	void setAlphaRange(F32 minimum, F32 maximum);
+	void setMinimumAlpha(F32 minimum);
 
 	void vertexAttrib4f(U32 index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
 	void vertexAttrib4fv(U32 index, GLfloat* v);
 	
 	GLint getUniformLocation(const std::string& uniform);
+	GLint getUniformLocation(U32 index);
+
 	GLint getAttribLocation(U32 attrib);
 	GLint mapUniformTextureChannel(GLint location, GLenum type);
 	
-
 	//enable/disable texture channel for specified uniform
 	//if given texture uniform is active in the shader, 
 	//the corresponding channel will be active upon return
@@ -132,6 +134,9 @@ class LLGLSLShader
 	// Unbinds any previously bound shader by explicitly binding no shader.
 	static void bindNoShader(void);
 
+	U32 mMatHash[LLRender::NUM_MATRIX_MODES];
+	U32 mLightHash;
+
 	GLhandleARB mProgramObject;
 	std::vector<GLint> mAttribute; //lookup table of attribute enum to attribute channel
 	std::vector<GLint> mUniform;   //lookup table of uniform enum to uniform location
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 7188b0fa440666cd39e62e0b0c58ae74d8d4ca4d..78591ddd3849facc642adb7b31b61eca3d9f350d 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -36,7 +36,9 @@
 
 #include "llmath.h"
 #include "llgl.h"
+#include "llglslshader.h"
 #include "llrender.h"
+
 //----------------------------------------------------------------------------
 const F32 MIN_TEXTURE_LIFETIME = 10.f;
 
@@ -725,7 +727,10 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
 		{
 			if (mAutoGenMips)
 			{
-				glTexParameteri(LLTexUnit::getInternalType(mBindTarget), GL_GENERATE_MIPMAP_SGIS, TRUE);
+				if (!gGLManager.mHasFramebufferObject)
+				{
+					glTexParameteri(LLTexUnit::getInternalType(mBindTarget), GL_GENERATE_MIPMAP_SGIS, TRUE);
+				}
 				stop_glerror();
 				{
 // 					LLFastTimer t2(FTM_TEMP4);
@@ -754,6 +759,11 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
 						stop_glerror();
 					}
 				}
+
+				if (gGLManager.mHasFramebufferObject)
+				{
+					glGenerateMipmap(LLTexUnit::getInternalType(mBindTarget));
+				}
 			}
 			else
 			{
@@ -875,6 +885,9 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
 
 BOOL LLImageGL::preAddToAtlas(S32 discard_level, const LLImageRaw* raw_image)
 {
+	//not compatible with core GL profile
+	llassert(!LLRender::sGLCoreProfile);
+
 	if (gGLManager.mIsDisabled)
 	{
 		llwarns << "Trying to create a texture while GL is disabled!" << llendl;
@@ -901,29 +914,29 @@ BOOL LLImageGL::preAddToAtlas(S32 discard_level, const LLImageRaw* raw_image)
 	{
 		switch (mComponents)
 		{
-		  case 1:
+			case 1:
 			// Use luminance alpha (for fonts)
 			mFormatInternal = GL_LUMINANCE8;
 			mFormatPrimary = GL_LUMINANCE;
 			mFormatType = GL_UNSIGNED_BYTE;
 			break;
-		  case 2:
+			case 2:
 			// Use luminance alpha (for fonts)
 			mFormatInternal = GL_LUMINANCE8_ALPHA8;
 			mFormatPrimary = GL_LUMINANCE_ALPHA;
 			mFormatType = GL_UNSIGNED_BYTE;
 			break;
-		  case 3:
+			case 3:
 			mFormatInternal = GL_RGB8;
 			mFormatPrimary = GL_RGB;
 			mFormatType = GL_UNSIGNED_BYTE;
 			break;
-		  case 4:
+			case 4:
 			mFormatInternal = GL_RGBA8;
 			mFormatPrimary = GL_RGBA;
 			mFormatType = GL_UNSIGNED_BYTE;
 			break;
-		  default:
+			default:
 			llerrs << "Bad number of components for texture: " << (U32)getComponents() << llendl;
 		}
 	}
@@ -1099,8 +1112,75 @@ void LLImageGL::deleteTextures(S32 numTextures, U32 *textures, bool immediate)
 // static
 void LLImageGL::setManualImage(U32 target, S32 miplevel, S32 intformat, S32 width, S32 height, U32 pixformat, U32 pixtype, const void *pixels)
 {
-	glTexImage2D(target, miplevel, intformat, width, height, 0, pixformat, pixtype, pixels);
+	bool use_scratch = false;
+	U32* scratch = NULL;
+	if (LLRender::sGLCoreProfile)
+	{
+		if (pixformat == GL_ALPHA && pixtype == GL_UNSIGNED_BYTE) 
+		{ //GL_ALPHA is deprecated, convert to RGBA
+			use_scratch = true;
+			scratch = new U32[width*height];
+
+			U32 pixel_count = (U32) (width*height);
+			for (U32 i = 0; i < pixel_count; i++)
+			{
+				U8* pix = (U8*) &scratch[i];
+				pix[0] = pix[1] = pix[2] = 0;
+				pix[3] = ((U8*) pixels)[i];
+			}				
+			
+			pixformat = GL_RGBA;
+			intformat = GL_RGBA8;
+		}
+
+		if (pixformat == GL_LUMINANCE_ALPHA && pixtype == GL_UNSIGNED_BYTE) 
+		{ //GL_LUMINANCE_ALPHA is deprecated, convert to RGBA
+			use_scratch = true;
+			scratch = new U32[width*height];
+
+			U32 pixel_count = (U32) (width*height);
+			for (U32 i = 0; i < pixel_count; i++)
+			{
+				U8 lum = ((U8*) pixels)[i*2+0];
+				U8 alpha = ((U8*) pixels)[i*2+1];
+
+				U8* pix = (U8*) &scratch[i];
+				pix[0] = pix[1] = pix[2] = lum;
+				pix[3] = alpha;
+			}				
+			
+			pixformat = GL_RGBA;
+			intformat = GL_RGBA8;
+		}
+
+		if (pixformat == GL_LUMINANCE && pixtype == GL_UNSIGNED_BYTE) 
+		{ //GL_LUMINANCE_ALPHA is deprecated, convert to RGB
+			use_scratch = true;
+			scratch = new U32[width*height];
+
+			U32 pixel_count = (U32) (width*height);
+			for (U32 i = 0; i < pixel_count; i++)
+			{
+				U8 lum = ((U8*) pixels)[i];
+				
+				U8* pix = (U8*) &scratch[i];
+				pix[0] = pix[1] = pix[2] = lum;
+				pix[3] = 255;
+			}				
+			
+			pixformat = GL_RGBA;
+			intformat = GL_RGB8;
+		}
+	}
+
 	stop_glerror();
+	glTexImage2D(target, miplevel, intformat, width, height, 0, pixformat, pixtype, use_scratch ? scratch : pixels);
+	stop_glerror();
+
+	if (use_scratch)
+	{
+		delete [] scratch;
+	}
 }
 
 //create an empty GL texture: just create a texture name
@@ -1167,29 +1247,29 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S
 	{
 		switch (mComponents)
 		{
-		  case 1:
+			case 1:
 			// Use luminance alpha (for fonts)
 			mFormatInternal = GL_LUMINANCE8;
 			mFormatPrimary = GL_LUMINANCE;
 			mFormatType = GL_UNSIGNED_BYTE;
 			break;
-		  case 2:
+			case 2:
 			// Use luminance alpha (for fonts)
 			mFormatInternal = GL_LUMINANCE8_ALPHA8;
 			mFormatPrimary = GL_LUMINANCE_ALPHA;
 			mFormatType = GL_UNSIGNED_BYTE;
 			break;
-		  case 3:
+			case 3:
 			mFormatInternal = GL_RGB8;
 			mFormatPrimary = GL_RGB;
 			mFormatType = GL_UNSIGNED_BYTE;
 			break;
-		  case 4:
+			case 4:
 			mFormatInternal = GL_RGBA8;
 			mFormatPrimary = GL_RGBA;
 			mFormatType = GL_UNSIGNED_BYTE;
 			break;
-		  default:
+			default:
 			llerrs << "Bad number of components for texture: " << (U32)getComponents() << llendl;
 		}
 
@@ -1212,6 +1292,7 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S
 BOOL LLImageGL::createGLTexture(S32 discard_level, const U8* data_in, BOOL data_hasmips, S32 usename)
 {
 	llassert(data_in);
+	stop_glerror();
 
 	if (discard_level < 0)
 	{
@@ -1240,8 +1321,11 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const U8* data_in, BOOL data_
 		stop_glerror();
 		{
 			llverify(gGL.getTexUnit(0)->bind(this));
+			stop_glerror();
 			glTexParameteri(LLTexUnit::getInternalType(mBindTarget), GL_TEXTURE_BASE_LEVEL, 0);
+			stop_glerror();
 			glTexParameteri(LLTexUnit::getInternalType(mBindTarget), GL_TEXTURE_MAX_LEVEL,  mMaxDiscardLevel-discard_level);
+			stop_glerror();
 		}
 	}
 	if (!mTexName)
@@ -1754,7 +1838,7 @@ void LLImageGL::analyzeAlpha(const void* data_in, U32 w, U32 h)
 	// this to be an intentional effect and don't treat as a mask.
 
 	U32 midrangetotal = 0;
-	for (U32 i = 4; i < 11; i++)
+	for (U32 i = 2; i < 13; i++)
 	{
 		midrangetotal += sample[i];
 	}
@@ -1769,7 +1853,7 @@ void LLImageGL::analyzeAlpha(const void* data_in, U32 w, U32 h)
 		upperhalftotal += sample[i];
 	}
 
-	if (midrangetotal > length/16 || // lots of midrange, or
+	if (midrangetotal > length/48 || // lots of midrange, or
 	    (lowerhalftotal == length && alphatotal != 0) || // all close to transparent but not all totally transparent, or
 	    (upperhalftotal == length && alphatotal != 255*length)) // all close to opaque but not all totally opaque
 	{
diff --git a/indra/llrender/llpostprocess.cpp b/indra/llrender/llpostprocess.cpp
index d76b2d90048a67b55e4feb03909c40e1bb7de6d2..c0045c80447bd22dd940d9ae39a149c558f8261e 100644
--- a/indra/llrender/llpostprocess.cpp
+++ b/indra/llrender/llpostprocess.cpp
@@ -466,21 +466,21 @@ void LLPostProcess::drawOrthoQuad(unsigned int width, unsigned int height, QuadT
 
 void LLPostProcess::viewOrthogonal(unsigned int width, unsigned int height)
 {
-	glMatrixMode(GL_PROJECTION);
-	glPushMatrix();
-	glLoadIdentity();
-	glOrtho( 0.f, (GLdouble) width , (GLdouble) height , 0.f, -1.f, 1.f );
-	glMatrixMode(GL_MODELVIEW);
-	glPushMatrix();
-	glLoadIdentity();
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.pushMatrix();
+	gGL.loadIdentity();
+	gGL.ortho( 0.f, (GLdouble) width , (GLdouble) height , 0.f, -1.f, 1.f );
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.pushMatrix();
+	gGL.loadIdentity();
 }
 
 void LLPostProcess::viewPerspective(void)
 {
-	glMatrixMode( GL_PROJECTION );
-	glPopMatrix();
-	glMatrixMode( GL_MODELVIEW );
-	glPopMatrix();
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.popMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.popMatrix();
 }
 
 void LLPostProcess::changeOrthogonal(unsigned int width, unsigned int height)
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index edcc47aa1471ab65ddd90506c0c562e3c2c0d1c2..b0ddacbb05c8dd872ffbfde26501f61639dc0f45 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -1,4 +1,4 @@
-/** 
+ /** 
  * @file llrender.cpp
  * @brief LLRender implementation
  *
@@ -34,19 +34,21 @@
 #include "llimagegl.h"
 #include "llrendertarget.h"
 #include "lltexture.h"
+#include "llshadermgr.h"
 
 LLRender gGL;
 
 // Handy copies of last good GL matrices
-F64	gGLModelView[16];
-F64	gGLLastModelView[16];
-F64 gGLLastProjection[16];
-F64 gGLProjection[16];
+F32	gGLModelView[16];
+F32	gGLLastModelView[16];
+F32 gGLLastProjection[16];
+F32 gGLProjection[16];
 S32	gGLViewport[4];
 
 U32 LLRender::sUICalls = 0;
 U32 LLRender::sUIVerts = 0;
 U32 LLTexUnit::sWhiteTexture = 0;
+bool LLRender::sGLCoreProfile = false;
 
 static const U32 LL_NUM_TEXTURE_LAYERS = 32; 
 static const U32 LL_NUM_LIGHT_UNITS = 8;
@@ -178,10 +180,13 @@ void LLTexUnit::enable(eTextureType type)
 
 	if ( (mCurrTexType != type || gGL.mDirty) && (type != TT_NONE) )
 	{
+		stop_glerror();
 		activate();
+		stop_glerror();
 		if (mCurrTexType != TT_NONE && !gGL.mDirty)
 		{
 			disable(); // Force a disable of a previous texture type if it's enabled.
+			stop_glerror();
 		}
 		mCurrTexType = type;
 
@@ -190,7 +195,9 @@ void LLTexUnit::enable(eTextureType type)
 			type != LLTexUnit::TT_MULTISAMPLE_TEXTURE &&
 			mIndex < gGLManager.mNumTextureUnits)
 		{
+			stop_glerror();
 			glEnable(sGLTextureType[type]);
+			stop_glerror();
 		}
 	}
 }
@@ -286,26 +293,35 @@ bool LLTexUnit::bind(LLImageGL* texture, bool for_rendering, bool forceBind)
 		{
 			return bind(LLImageGL::sDefaultGLTexture) ;
 		}
+		stop_glerror();
 		return false ;
 	}
 
 	if ((mCurrTexture != texture->getTexName()) || forceBind)
 	{
 		gGL.flush();
+		stop_glerror();
 		activate();
+		stop_glerror();
 		enable(texture->getTarget());
+		stop_glerror();
 		mCurrTexture = texture->getTexName();
 		glBindTexture(sGLTextureType[texture->getTarget()], mCurrTexture);
+		stop_glerror();
 		texture->updateBindStats(texture->mTextureMemory);		
 		mHasMipMaps = texture->mHasMipMaps;
 		if (texture->mTexOptionsDirty)
 		{
+			stop_glerror();
 			texture->mTexOptionsDirty = false;
 			setTextureAddressMode(texture->mAddressMode);
 			setTextureFilteringOption(texture->mFilterOption);
+			stop_glerror();
 		}
 	}
 
+	stop_glerror();
+
 	return true;
 }
 
@@ -814,14 +830,16 @@ LLLightState::LLLightState(S32 index)
 	mAmbient.set(0,0,0,1);
 	mPosition.set(0,0,1,0);
 	mSpotDirection.set(0,0,-1);
-
 }
 
 void LLLightState::enable()
 {
 	if (!mEnabled)
 	{
-		glEnable(GL_LIGHT0+mIndex);
+		if (!LLGLSLShader::sNoFixedFunction)
+		{
+			glEnable(GL_LIGHT0+mIndex);
+		}
 		mEnabled = true;
 	}
 }
@@ -830,7 +848,10 @@ void LLLightState::disable()
 {
 	if (mEnabled)
 	{
-		glDisable(GL_LIGHT0+mIndex);
+		if (!LLGLSLShader::sNoFixedFunction)
+		{
+			glDisable(GL_LIGHT0+mIndex);
+		}
 		mEnabled = false;
 	}
 }
@@ -839,8 +860,12 @@ void LLLightState::setDiffuse(const LLColor4& diffuse)
 {
 	if (mDiffuse != diffuse)
 	{
+		++gGL.mLightHash;
 		mDiffuse = diffuse;
-		glLightfv(GL_LIGHT0+mIndex, GL_DIFFUSE, mDiffuse.mV);
+		if (!LLGLSLShader::sNoFixedFunction)
+		{
+			glLightfv(GL_LIGHT0+mIndex, GL_DIFFUSE, mDiffuse.mV);
+		}
 	}
 }
 
@@ -848,8 +873,12 @@ void LLLightState::setAmbient(const LLColor4& ambient)
 {
 	if (mAmbient != ambient)
 	{
+		++gGL.mLightHash;
 		mAmbient = ambient;
-		glLightfv(GL_LIGHT0+mIndex, GL_AMBIENT, mAmbient.mV);
+		if (!LLGLSLShader::sNoFixedFunction)
+		{
+			glLightfv(GL_LIGHT0+mIndex, GL_AMBIENT, mAmbient.mV);
+		}
 	}
 }
 
@@ -857,16 +886,34 @@ void LLLightState::setSpecular(const LLColor4& specular)
 {
 	if (mSpecular != specular)
 	{
+		++gGL.mLightHash;
 		mSpecular = specular;
-		glLightfv(GL_LIGHT0+mIndex, GL_SPECULAR, mSpecular.mV);
+		if (!LLGLSLShader::sNoFixedFunction)
+		{
+			glLightfv(GL_LIGHT0+mIndex, GL_SPECULAR, mSpecular.mV);
+		}
 	}
 }
 
 void LLLightState::setPosition(const LLVector4& position)
 {
 	//always set position because modelview matrix may have changed
+	++gGL.mLightHash;
 	mPosition = position;
-	glLightfv(GL_LIGHT0+mIndex, GL_POSITION, mPosition.mV);
+	if (!LLGLSLShader::sNoFixedFunction)
+	{
+		glLightfv(GL_LIGHT0+mIndex, GL_POSITION, mPosition.mV);
+	}
+	else
+	{ //transform position by current modelview matrix
+		glh::vec4f pos(position.mV);
+
+		const glh::matrix4f& mat = gGL.getModelviewMatrix();
+		mat.mult_matrix_vec(pos);
+
+		mPosition.set(pos.v);
+	}
+
 }
 
 void LLLightState::setConstantAttenuation(const F32& atten)
@@ -874,7 +921,11 @@ void LLLightState::setConstantAttenuation(const F32& atten)
 	if (mConstantAtten != atten)
 	{
 		mConstantAtten = atten;
-		glLightf(GL_LIGHT0+mIndex, GL_CONSTANT_ATTENUATION, atten);
+		++gGL.mLightHash;
+		if (!LLGLSLShader::sNoFixedFunction)
+		{
+			glLightf(GL_LIGHT0+mIndex, GL_CONSTANT_ATTENUATION, atten);
+		}
 	}
 }
 
@@ -882,8 +933,12 @@ void LLLightState::setLinearAttenuation(const F32& atten)
 {
 	if (mLinearAtten != atten)
 	{
+		++gGL.mLightHash;
 		mLinearAtten = atten;
-		glLightf(GL_LIGHT0+mIndex, GL_LINEAR_ATTENUATION, atten);
+		if (!LLGLSLShader::sNoFixedFunction)
+		{
+			glLightf(GL_LIGHT0+mIndex, GL_LINEAR_ATTENUATION, atten);
+		}
 	}
 }
 
@@ -891,8 +946,12 @@ void LLLightState::setQuadraticAttenuation(const F32& atten)
 {
 	if (mQuadraticAtten != atten)
 	{
+		++gGL.mLightHash;
 		mQuadraticAtten = atten;
-		glLightf(GL_LIGHT0+mIndex, GL_QUADRATIC_ATTENUATION, atten);
+		if (!LLGLSLShader::sNoFixedFunction)
+		{
+			glLightf(GL_LIGHT0+mIndex, GL_QUADRATIC_ATTENUATION, atten);
+		}
 	}
 }
 
@@ -900,8 +959,12 @@ void LLLightState::setSpotExponent(const F32& exponent)
 {
 	if (mSpotExponent != exponent)
 	{
+		++gGL.mLightHash;
 		mSpotExponent = exponent;
-		glLightf(GL_LIGHT0+mIndex, GL_SPOT_EXPONENT, exponent);
+		if (!LLGLSLShader::sNoFixedFunction)
+		{
+			glLightf(GL_LIGHT0+mIndex, GL_SPOT_EXPONENT, exponent);
+		}
 	}
 }
 
@@ -909,21 +972,39 @@ void LLLightState::setSpotCutoff(const F32& cutoff)
 {
 	if (mSpotCutoff != cutoff)
 	{
+		++gGL.mLightHash;
 		mSpotCutoff = cutoff;
-		glLightf(GL_LIGHT0+mIndex, GL_SPOT_CUTOFF, cutoff);
+		if (!LLGLSLShader::sNoFixedFunction)
+		{
+			glLightf(GL_LIGHT0+mIndex, GL_SPOT_CUTOFF, cutoff);
+		}
 	}
 }
 
 void LLLightState::setSpotDirection(const LLVector3& direction)
 {
 	//always set direction because modelview matrix may have changed
+	++gGL.mLightHash;
 	mSpotDirection = direction;
-	glLightfv(GL_LIGHT0+mIndex, GL_SPOT_DIRECTION, direction.mV);
+	if (!LLGLSLShader::sNoFixedFunction)
+	{
+		glLightfv(GL_LIGHT0+mIndex, GL_SPOT_DIRECTION, direction.mV);
+	}
+	else
+	{ //transform direction by current modelview matrix
+		glh::vec3f dir(direction.mV);
+
+		const glh::matrix4f& mat = gGL.getModelviewMatrix();
+		mat.mult_matrix_dir(dir);
+
+		mSpotDirection.set(dir.v);
+	}
 }
 
 LLRender::LLRender()
   : mDirty(false),
     mCount(0),
+	mQuadCycle(0),
     mMode(LLRender::TRIANGLES),
     mCurrTextureUnitIndex(0),
     mMaxAnisotropy(0.f) 
@@ -951,6 +1032,17 @@ LLRender::LLRender()
 	mCurrBlendAlphaSFactor = BF_UNDEF;
 	mCurrBlendColorDFactor = BF_UNDEF;
 	mCurrBlendAlphaDFactor = BF_UNDEF;
+
+	mMatrixMode = LLRender::MM_MODELVIEW;
+	
+	for (U32 i = 0; i < NUM_MATRIX_MODES; ++i)
+	{
+		mMatIdx[i] = 0;
+		mMatHash[i] = 0;
+		mCurMatHash[i] = 0xFFFFFFFF;
+	}
+
+	mLightHash = 0;
 }
 
 LLRender::~LLRender()
@@ -961,12 +1053,13 @@ LLRender::~LLRender()
 void LLRender::init()
 {
 	llassert_always(mBuffer.isNull()) ;
-
+	stop_glerror();
 	mBuffer = new LLVertexBuffer(immediate_mask, 0);
 	mBuffer->allocateBuffer(4096, 0, TRUE);
 	mBuffer->getVertexStrider(mVerticesp);
 	mBuffer->getTexCoord0Strider(mTexcoordsp);
 	mBuffer->getColorStrider(mColorsp);
+	stop_glerror();
 }
 
 void LLRender::shutdown()
@@ -1007,28 +1100,355 @@ void LLRender::refreshState(void)
 	mDirty = false;
 }
 
+void LLRender::syncLightState()
+{
+	LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+
+	if (!shader)
+	{
+		return;
+	}
+
+	if (shader->mLightHash != mLightHash)
+	{
+		shader->mLightHash = mLightHash;
+
+		LLVector4 position[8];
+		LLVector3 direction[8];
+		LLVector3 attenuation[8];
+		LLVector3 diffuse[8];
+
+		for (U32 i = 0; i < 8; i++)
+		{
+			LLLightState* light = mLightState[i];
+
+			position[i] = light->mPosition;
+			direction[i] = light->mSpotDirection;
+			attenuation[i].set(light->mLinearAtten, light->mQuadraticAtten, light->mSpecular.mV[3]);
+			diffuse[i].set(light->mDiffuse.mV);
+		}
+
+		shader->uniform4fv(LLShaderMgr::LIGHT_POSITION, 8, position[0].mV);
+		shader->uniform3fv(LLShaderMgr::LIGHT_DIRECTION, 8, direction[0].mV);
+		shader->uniform3fv(LLShaderMgr::LIGHT_ATTENUATION, 8, attenuation[0].mV);
+		shader->uniform3fv(LLShaderMgr::LIGHT_DIFFUSE, 8, diffuse[0].mV);
+		shader->uniform4fv(LLShaderMgr::LIGHT_AMBIENT, 1, mAmbientLightColor.mV);
+		//HACK -- duplicate sunlight color for compatibility with drivers that can't deal with multiple shader objects referencing the same uniform
+		shader->uniform4fv(LLShaderMgr::SUNLIGHT_COLOR, 1, diffuse[0].mV);
+	}
+}
+
+void LLRender::syncMatrices()
+{
+	stop_glerror();
+
+	U32 name[] = 
+	{
+		LLShaderMgr::MODELVIEW_MATRIX,
+		LLShaderMgr::PROJECTION_MATRIX,
+		LLShaderMgr::TEXTURE_MATRIX0,
+		LLShaderMgr::TEXTURE_MATRIX1,
+		LLShaderMgr::TEXTURE_MATRIX2,
+		LLShaderMgr::TEXTURE_MATRIX3,
+	};
+
+	LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+
+	static glh::matrix4f cached_mvp;
+	static U32 cached_mvp_mdv_hash = 0xFFFFFFFF;
+	static U32 cached_mvp_proj_hash = 0xFFFFFFFF;
+	
+	static glh::matrix4f cached_normal;
+	static U32 cached_normal_hash = 0xFFFFFFFF;
+
+	if (shader)
+	{
+		llassert(shader);
+
+		bool mvp_done = false;
+
+		U32 i = MM_MODELVIEW;
+		if (mMatHash[i] != shader->mMatHash[i])
+		{ //update modelview, normal, and MVP
+			glh::matrix4f& mat = mMatrix[i][mMatIdx[i]];
+
+			shader->uniformMatrix4fv(name[i], 1, GL_FALSE, mat.m);
+			shader->mMatHash[i] = mMatHash[i];
+
+			//update normal matrix
+			S32 loc = shader->getUniformLocation(LLShaderMgr::NORMAL_MATRIX);
+			if (loc > -1)
+			{
+				if (cached_normal_hash != mMatHash[i])
+				{
+					cached_normal = mat.inverse().transpose();
+					cached_normal_hash = mMatHash[i];
+				}
+
+				glh::matrix4f& norm = cached_normal;
+
+				F32 norm_mat[] = 
+				{
+					norm.m[0], norm.m[1], norm.m[2],
+					norm.m[4], norm.m[5], norm.m[6],
+					norm.m[8], norm.m[9], norm.m[10] 
+				};
+
+				shader->uniformMatrix3fv(LLShaderMgr::NORMAL_MATRIX, 1, GL_FALSE, norm_mat);
+			}
+
+			//update MVP matrix
+			mvp_done = true;
+			loc = shader->getUniformLocation(LLShaderMgr::MODELVIEW_PROJECTION_MATRIX);
+			if (loc > -1)
+			{
+				U32 proj = MM_PROJECTION;
+
+				if (cached_mvp_mdv_hash != mMatHash[i] || cached_mvp_proj_hash != mMatHash[MM_PROJECTION])
+				{
+					cached_mvp = mat;
+					cached_mvp.mult_left(mMatrix[proj][mMatIdx[proj]]);
+					cached_mvp_mdv_hash = mMatHash[i];
+					cached_mvp_proj_hash = mMatHash[MM_PROJECTION];
+				}
+
+				shader->uniformMatrix4fv(LLShaderMgr::MODELVIEW_PROJECTION_MATRIX, 1, GL_FALSE, cached_mvp.m);
+			}
+		}
+
+
+		i = MM_PROJECTION;
+		if (mMatHash[i] != shader->mMatHash[i])
+		{ //update projection matrix, normal, and MVP
+			glh::matrix4f& mat = mMatrix[i][mMatIdx[i]];
+
+			shader->uniformMatrix4fv(name[i], 1, GL_FALSE, mat.m);
+			shader->mMatHash[i] = mMatHash[i];
+
+			if (!mvp_done)
+			{
+				//update MVP matrix
+				S32 loc = shader->getUniformLocation(LLShaderMgr::MODELVIEW_PROJECTION_MATRIX);
+				if (loc > -1)
+				{
+					if (cached_mvp_mdv_hash != mMatHash[i] || cached_mvp_proj_hash != mMatHash[MM_PROJECTION])
+					{
+						U32 mdv = MM_MODELVIEW;
+						cached_mvp = mat;
+						cached_mvp.mult_right(mMatrix[mdv][mMatIdx[mdv]]);
+						cached_mvp_mdv_hash = mMatHash[MM_MODELVIEW];
+						cached_mvp_proj_hash = mMatHash[MM_PROJECTION];
+					}
+									
+					shader->uniformMatrix4fv(LLShaderMgr::MODELVIEW_PROJECTION_MATRIX, 1, GL_FALSE, cached_mvp.m);
+				}
+			}
+		}
+
+		for (i = MM_TEXTURE0; i < NUM_MATRIX_MODES; ++i)
+		{
+			if (mMatHash[i] != shader->mMatHash[i])
+			{
+				shader->uniformMatrix4fv(name[i], 1, GL_FALSE, mMatrix[i][mMatIdx[i]].m);
+				shader->mMatHash[i] = mMatHash[i];
+			}
+		}
+
+
+		if (shader->mFeatures.hasLighting || shader->mFeatures.calculatesLighting)
+		{ //also sync light state
+			syncLightState();
+		}
+	}
+	else if (!LLGLSLShader::sNoFixedFunction)
+	{
+		GLenum mode[] = 
+		{
+			GL_MODELVIEW,
+			GL_PROJECTION,
+			GL_TEXTURE,
+			GL_TEXTURE,
+			GL_TEXTURE,
+			GL_TEXTURE,
+		};
+
+		for (U32 i = 0; i < 2; ++i)
+		{
+			if (mMatHash[i] != mCurMatHash[i])
+			{
+				glMatrixMode(mode[i]);
+				glLoadMatrixf(mMatrix[i][mMatIdx[i]].m);
+				mCurMatHash[i] = mMatHash[i];
+			}
+		}
+
+		for (U32 i = 2; i < NUM_MATRIX_MODES; ++i)
+		{
+			if (mMatHash[i] != mCurMatHash[i])
+			{
+				gGL.getTexUnit(i-2)->activate();
+				glMatrixMode(mode[i]);
+				glLoadMatrixf(mMatrix[i][mMatIdx[i]].m);
+				mCurMatHash[i] = mMatHash[i];
+			}
+		}
+	}
+
+	stop_glerror();
+}
+
 void LLRender::translatef(const GLfloat& x, const GLfloat& y, const GLfloat& z)
 {
 	flush();
-	glTranslatef(x,y,z);
+
+	{
+		glh::matrix4f trans_mat(1,0,0,x,
+								0,1,0,y,
+								0,0,1,z,
+								0,0,0,1);
+	
+		mMatrix[mMatrixMode][mMatIdx[mMatrixMode]].mult_right(trans_mat);
+		mMatHash[mMatrixMode]++;
+	}
 }
 
 void LLRender::scalef(const GLfloat& x, const GLfloat& y, const GLfloat& z)
 {
 	flush();
-	glScalef(x,y,z);
+	
+	{
+		glh::matrix4f scale_mat(x,0,0,0,
+								0,y,0,0,
+								0,0,z,0,
+								0,0,0,1);
+	
+		mMatrix[mMatrixMode][mMatIdx[mMatrixMode]].mult_right(scale_mat);
+		mMatHash[mMatrixMode]++;
+	}
+}
+
+void LLRender::ortho(F32 left, F32 right, F32 bottom, F32 top, F32 zNear, F32 zFar)
+{
+	flush();
+
+	{
+
+		glh::matrix4f ortho_mat(2.f/(right-left),0,0,	-(right+left)/(right-left),
+								0,2.f/(top-bottom),0,	-(top+bottom)/(top-bottom),
+								0,0,-2.f/(zFar-zNear),	-(zFar+zNear)/(zFar-zNear),
+								0,0,0,1);
+	
+		mMatrix[mMatrixMode][mMatIdx[mMatrixMode]].mult_right(ortho_mat);
+		mMatHash[mMatrixMode]++;
+	}
+}
+
+void LLRender::rotatef(const GLfloat& a, const GLfloat& x, const GLfloat& y, const GLfloat& z)
+{
+	flush();
+
+	{
+		F32 r = a * DEG_TO_RAD;
+
+		F32 c = cosf(r);
+		F32 s = sinf(r);
+
+		F32 ic = 1.f-c;
+
+		glh::matrix4f rot_mat(x*x*ic+c,		x*y*ic-z*s,		x*z*ic+y*s,		0,
+							  x*y*ic+z*s,	y*y*ic+c,		y*z*ic-x*s,		0,
+							  x*z*ic-y*s,	y*z*ic+x*s,		z*z*ic+c,		0,
+							  0,0,0,1);
+	
+		mMatrix[mMatrixMode][mMatIdx[mMatrixMode]].mult_right(rot_mat);
+		mMatHash[mMatrixMode]++;
+	}
 }
 
 void LLRender::pushMatrix()
 {
 	flush();
-	glPushMatrix();
+	
+	{
+		if (mMatIdx[mMatrixMode] < LL_MATRIX_STACK_DEPTH-1)
+		{
+			mMatrix[mMatrixMode][mMatIdx[mMatrixMode]+1] = mMatrix[mMatrixMode][mMatIdx[mMatrixMode]];
+			++mMatIdx[mMatrixMode];
+		}
+		else
+		{
+			llwarns << "Matrix stack overflow." << llendl;
+		}
+	}
 }
 
 void LLRender::popMatrix()
 {
 	flush();
-	glPopMatrix();
+	{
+		if (mMatIdx[mMatrixMode] > 0)
+		{
+			--mMatIdx[mMatrixMode];
+			mMatHash[mMatrixMode]++;
+		}
+		else
+		{
+			llwarns << "Matrix stack underflow." << llendl;
+		}
+	}
+}
+
+void LLRender::loadMatrix(const GLfloat* m)
+{
+	flush();
+	{
+		mMatrix[mMatrixMode][mMatIdx[mMatrixMode]].set_value((GLfloat*) m);
+		mMatHash[mMatrixMode]++;
+	}
+}
+
+void LLRender::multMatrix(const GLfloat* m)
+{
+	flush();
+	{
+		glh::matrix4f mat((GLfloat*) m);
+	
+		mMatrix[mMatrixMode][mMatIdx[mMatrixMode]].mult_right(mat);
+		mMatHash[mMatrixMode]++;
+	}
+}
+
+void LLRender::matrixMode(U32 mode)
+{
+	if (mode == MM_TEXTURE)
+	{
+		mode = MM_TEXTURE0 + gGL.getCurrentTexUnitIndex();
+	}
+
+	llassert(mode < NUM_MATRIX_MODES);
+	mMatrixMode = mode;
+}
+
+void LLRender::loadIdentity()
+{
+	flush();
+
+	{
+		llassert_always(mMatrixMode < NUM_MATRIX_MODES) ;
+
+		mMatrix[mMatrixMode][mMatIdx[mMatrixMode]].make_identity();
+		mMatHash[mMatrixMode]++;
+	}
+}
+
+const glh::matrix4f& LLRender::getModelviewMatrix()
+{
+	return mMatrix[MM_MODELVIEW][mMatIdx[MM_MODELVIEW]];
+}
+
+const glh::matrix4f& LLRender::getProjectionMatrix()
+{
+	return mMatrix[MM_PROJECTION][mMatIdx[MM_PROJECTION]];
 }
 
 void LLRender::translateUI(F32 x, F32 y, F32 z)
@@ -1284,6 +1704,19 @@ LLLightState* LLRender::getLight(U32 index)
 	return NULL;
 }
 
+void LLRender::setAmbientLightColor(const LLColor4& color)
+{
+	if (color != mAmbientLightColor)
+	{
+		++mLightHash;
+		mAmbientLightColor = color;
+		if (!LLGLSLShader::sNoFixedFunction)
+		{
+			glLightModelfv(GL_LIGHT_MODEL_AMBIENT, color.mV);
+		}
+	}
+}
+
 bool LLRender::verifyTexUnitActive(U32 unitToVerify)
 {
 	if (mCurrTextureUnitIndex == unitToVerify)
@@ -1309,6 +1742,11 @@ void LLRender::begin(const GLuint& mode)
 {
 	if (mode != mMode)
 	{
+		if (mode == LLRender::QUADS)
+		{
+			mQuadCycle = 1;
+		}
+
 		if (mMode == LLRender::QUADS ||
 			mMode == LLRender::LINES ||
 			mMode == LLRender::TRIANGLES ||
@@ -1396,7 +1834,7 @@ void LLRender::flush()
 		
 		if (gDebugGL)
 		{
-			if (mMode == LLRender::QUADS)
+			if (mMode == LLRender::QUADS && !sGLCoreProfile)
 			{
 				if (mCount%4 != 0)
 				{
@@ -1421,12 +1859,34 @@ void LLRender::flush()
 			}
 		}
 
+		//store mCount in a local variable to avoid re-entrance (drawArrays may call flush)
+		U32 count = mCount;
+		mCount = 0;
+
+		if (mBuffer->useVBOs() && !mBuffer->isLocked())
+		{ //hack to only flush the part of the buffer that was updated (relies on stream draw using buffersubdata)
+			mBuffer->getVertexStrider(mVerticesp, 0, count);
+			mBuffer->getTexCoord0Strider(mTexcoordsp, 0, count);
+			mBuffer->getColorStrider(mColorsp, 0, count);
+		}
+		
+		mBuffer->flush();
 		mBuffer->setBuffer(immediate_mask);
-		mBuffer->drawArrays(mMode, 0, mCount);
+
+		if (mMode == LLRender::QUADS && sGLCoreProfile)
+		{
+			mBuffer->drawArrays(LLRender::TRIANGLES, 0, count);
+			mQuadCycle = 1;
+		}
+		else
+		{
+			mBuffer->drawArrays(mMode, 0, count);
+		}
+		
+		mVerticesp[0] = mVerticesp[count];
+		mTexcoordsp[0] = mTexcoordsp[count];
+		mColorsp[0] = mColorsp[count];
 		
-		mVerticesp[0] = mVerticesp[mCount];
-		mTexcoordsp[0] = mTexcoordsp[mCount];
-		mColorsp[0] = mColorsp[mCount];
 		mCount = 0;
 	}
 }
@@ -1434,6 +1894,17 @@ void LLRender::flush()
 void LLRender::vertex3f(const GLfloat& x, const GLfloat& y, const GLfloat& z)
 { 
 	//the range of mVerticesp, mColorsp and mTexcoordsp is [0, 4095]
+	if (mCount > 2048)
+	{ //break when buffer gets reasonably full to keep GL command buffers happy and avoid overflow below
+		switch (mMode)
+		{
+			case LLRender::POINTS: flush(); break;
+			case LLRender::TRIANGLES: if (mCount%3==0) flush(); break;
+			case LLRender::QUADS: if(mCount%4 == 0) flush(); break; 
+			case LLRender::LINES: if (mCount%2 == 0) flush(); break;
+		}
+	}
+			
 	if (mCount > 4094)
 	{
 	//	llwarns << "GL immediate mode overflow.  Some geometry not drawn." << llendl;
@@ -1450,10 +1921,29 @@ void LLRender::vertex3f(const GLfloat& x, const GLfloat& y, const GLfloat& z)
 		mVerticesp[mCount] = vert;
 	}
 
+	if (mMode == LLRender::QUADS && LLRender::sGLCoreProfile)
+	{
+		mQuadCycle++;
+		if (mQuadCycle == 4)
+		{ //copy two vertices so fourth quad element will add a triangle
+			mQuadCycle = 0;
+	
+			mCount++;
+			mVerticesp[mCount] = mVerticesp[mCount-3];
+			mColorsp[mCount] = mColorsp[mCount-3];
+			mTexcoordsp[mCount] = mTexcoordsp[mCount-3];
+
+			mCount++;
+			mVerticesp[mCount] = mVerticesp[mCount-2];
+			mColorsp[mCount] = mColorsp[mCount-2];
+			mTexcoordsp[mCount] = mTexcoordsp[mCount-2];
+		}
+	}
+
 	mCount++;
 	mVerticesp[mCount] = mVerticesp[mCount-1];
 	mColorsp[mCount] = mColorsp[mCount-1];
-	mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+	mTexcoordsp[mCount] = mTexcoordsp[mCount-1];	
 }
 
 void LLRender::vertexBatchPreTransformed(LLVector3* verts, S32 vert_count)
@@ -1464,13 +1954,50 @@ void LLRender::vertexBatchPreTransformed(LLVector3* verts, S32 vert_count)
 		return;
 	}
 
-	for (S32 i = 0; i < vert_count; i++)
+	if (sGLCoreProfile && mMode == LLRender::QUADS)
+	{ //quads are deprecated, convert to triangle list
+		S32 i = 0;
+		
+		while (i < vert_count)
+		{
+			//read first three
+			mVerticesp[mCount++] = verts[i++];
+			mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+			mColorsp[mCount] = mColorsp[mCount-1];
+
+			mVerticesp[mCount++] = verts[i++];
+			mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+			mColorsp[mCount] = mColorsp[mCount-1];
+
+			mVerticesp[mCount++] = verts[i++];
+			mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+			mColorsp[mCount] = mColorsp[mCount-1];
+
+			//copy two
+			mVerticesp[mCount++] = verts[i-3];
+			mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+			mColorsp[mCount] = mColorsp[mCount-1];
+
+			mVerticesp[mCount++] = verts[i-1];
+			mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+			mColorsp[mCount] = mColorsp[mCount-1];
+			
+			//copy last one
+			mVerticesp[mCount++] = verts[i++];
+			mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+			mColorsp[mCount] = mColorsp[mCount-1];
+		}
+	}
+	else
 	{
-		mVerticesp[mCount] = verts[i];
+		for (S32 i = 0; i < vert_count; i++)
+		{
+			mVerticesp[mCount] = verts[i];
 
-		mCount++;
-		mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
-		mColorsp[mCount] = mColorsp[mCount-1];
+			mCount++;
+			mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+			mColorsp[mCount] = mColorsp[mCount-1];
+		}
 	}
 
 	mVerticesp[mCount] = mVerticesp[mCount-1];
@@ -1484,13 +2011,50 @@ void LLRender::vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, S32 v
 		return;
 	}
 
-	for (S32 i = 0; i < vert_count; i++)
+	if (sGLCoreProfile && mMode == LLRender::QUADS)
+	{ //quads are deprecated, convert to triangle list
+		S32 i = 0;
+
+		while (i < vert_count)
+		{
+			//read first three
+			mVerticesp[mCount] = verts[i];
+			mTexcoordsp[mCount++] = uvs[i++];
+			mColorsp[mCount] = mColorsp[mCount-1];
+
+			mVerticesp[mCount] = verts[i];
+			mTexcoordsp[mCount++] = uvs[i++];
+			mColorsp[mCount] = mColorsp[mCount-1];
+
+			mVerticesp[mCount] = verts[i];
+			mTexcoordsp[mCount++] = uvs[i++];
+			mColorsp[mCount] = mColorsp[mCount-1];
+
+			//copy last two
+			mVerticesp[mCount] = verts[i-3];
+			mTexcoordsp[mCount++] = uvs[i-3];
+			mColorsp[mCount] = mColorsp[mCount-1];
+
+			mVerticesp[mCount] = verts[i-1];
+			mTexcoordsp[mCount++] = uvs[i-1];
+			mColorsp[mCount] = mColorsp[mCount-1];
+
+			//copy last one
+			mVerticesp[mCount] = verts[i];
+			mTexcoordsp[mCount++] = uvs[i++];
+			mColorsp[mCount] = mColorsp[mCount-1];
+		}
+	}
+	else
 	{
-		mVerticesp[mCount] = verts[i];
-		mTexcoordsp[mCount] = uvs[i];
+		for (S32 i = 0; i < vert_count; i++)
+		{
+			mVerticesp[mCount] = verts[i];
+			mTexcoordsp[mCount] = uvs[i];
 
-		mCount++;
-		mColorsp[mCount] = mColorsp[mCount-1];
+			mCount++;
+			mColorsp[mCount] = mColorsp[mCount-1];
+		}
 	}
 
 	mVerticesp[mCount] = mVerticesp[mCount-1];
@@ -1505,13 +2069,51 @@ void LLRender::vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, LLCol
 		return;
 	}
 
-	for (S32 i = 0; i < vert_count; i++)
+	
+	if (sGLCoreProfile && mMode == LLRender::QUADS)
+	{ //quads are deprecated, convert to triangle list
+		S32 i = 0;
+
+		while (i < vert_count)
+		{
+			//read first three
+			mVerticesp[mCount] = verts[i];
+			mTexcoordsp[mCount] = uvs[i];
+			mColorsp[mCount++] = colors[i++];
+
+			mVerticesp[mCount] = verts[i];
+			mTexcoordsp[mCount] = uvs[i];
+			mColorsp[mCount++] = colors[i++];
+
+			mVerticesp[mCount] = verts[i];
+			mTexcoordsp[mCount] = uvs[i];
+			mColorsp[mCount++] = colors[i++];
+
+			//copy last two
+			mVerticesp[mCount] = verts[i-3];
+			mTexcoordsp[mCount] = uvs[i-3];
+			mColorsp[mCount++] = colors[i-3];
+
+			mVerticesp[mCount] = verts[i-1];
+			mTexcoordsp[mCount] = uvs[i-1];
+			mColorsp[mCount++] = colors[i-1];
+
+			//copy last one
+			mVerticesp[mCount] = verts[i];
+			mTexcoordsp[mCount] = uvs[i];
+			mColorsp[mCount++] = colors[i++];
+		}
+	}
+	else
 	{
-		mVerticesp[mCount] = verts[i];
-		mTexcoordsp[mCount] = uvs[i];
-		mColorsp[mCount] = colors[i];
+		for (S32 i = 0; i < vert_count; i++)
+		{
+			mVerticesp[mCount] = verts[i];
+			mTexcoordsp[mCount] = uvs[i];
+			mColorsp[mCount] = colors[i];
 
-		mCount++;
+			mCount++;
+		}
 	}
 
 	mVerticesp[mCount] = mVerticesp[mCount-1];
@@ -1586,6 +2188,81 @@ void LLRender::color3fv(const GLfloat* c)
 	color4f(c[0],c[1],c[2],1);
 }
 
+void LLRender::diffuseColor3f(F32 r, F32 g, F32 b)
+{
+	LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+	llassert(!LLGLSLShader::sNoFixedFunction || shader != NULL);
+
+	if (shader)
+	{
+		shader->uniform4f(LLShaderMgr::DIFFUSE_COLOR, r,g,b,1.f);
+	}
+	else
+	{
+		glColor3f(r,g,b);
+	}
+}
+
+void LLRender::diffuseColor3fv(const F32* c)
+{
+	LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+	llassert(!LLGLSLShader::sNoFixedFunction || shader != NULL);
+
+	if (shader)
+	{
+		shader->uniform4f(LLShaderMgr::DIFFUSE_COLOR, c[0], c[1], c[2], 1.f);
+	}
+	else
+	{
+		glColor3fv(c);
+	}
+}
+
+void LLRender::diffuseColor4f(F32 r, F32 g, F32 b, F32 a)
+{
+	LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+	llassert(!LLGLSLShader::sNoFixedFunction || shader != NULL);
+
+	if (shader)
+	{
+		shader->uniform4f(LLShaderMgr::DIFFUSE_COLOR, r,g,b,a);
+	}
+	else
+	{
+		glColor4f(r,g,b,a);
+	}
+}
+
+void LLRender::diffuseColor4fv(const F32* c)
+{
+	LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+	llassert(!LLGLSLShader::sNoFixedFunction || shader != NULL);
+
+	if (shader)
+	{
+		shader->uniform4fv(LLShaderMgr::DIFFUSE_COLOR, 1, c);
+	}
+	else
+	{
+		glColor4fv(c);
+	}
+}
+
+void LLRender::diffuseColor4ubv(const U8* c)
+{
+	LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+	llassert(!LLGLSLShader::sNoFixedFunction || shader != NULL);
+
+	if (shader)
+	{
+		shader->uniform4f(LLShaderMgr::DIFFUSE_COLOR, c[0]/255.f, c[1]/255.f, c[2]/255.f, c[3]/255.f);
+	}
+	else
+	{
+		glColor4ubv(c);
+	}
+}
+
 void LLRender::debugTexUnits(void)
 {
 	LL_INFOS("TextureUnit") << "Active TexUnit: " << mCurrTextureUnitIndex << LL_ENDL;
diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h
index 8f7ee30d87e53f704387e232be8dd9ca731a556d..fa5f7f311df89eff6dedd88ffb801f7f6f9c5474 100644
--- a/indra/llrender/llrender.h
+++ b/indra/llrender/llrender.h
@@ -41,6 +41,8 @@
 #include "llstrider.h"
 #include "llpointer.h"
 #include "llglheaders.h"
+#include "llmatrix4a.h"
+#include "glh/glh_linear.h"
 
 class LLVertexBuffer;
 class LLCubeMap;
@@ -48,6 +50,8 @@ class LLImageGL;
 class LLRenderTarget;
 class LLTexture ;
 
+#define LL_MATRIX_STACK_DEPTH 32
+
 class LLTexUnit
 {
 	friend class LLRender;
@@ -235,6 +239,8 @@ class LLLightState
 	void setSpotDirection(const LLVector3& direction);
 
 protected:
+	friend class LLRender;
+
 	S32 mIndex;
 	bool mEnabled;
 	LLColor4 mDiffuse;
@@ -308,6 +314,18 @@ class LLRender
 		BF_UNDEF
 	} eBlendFactor;
 
+	typedef enum
+	{
+		MM_MODELVIEW = 0,
+		MM_PROJECTION,
+		MM_TEXTURE0,
+		MM_TEXTURE1,
+		MM_TEXTURE2,
+		MM_TEXTURE3,
+		NUM_MATRIX_MODES,
+		MM_TEXTURE
+	} eMatrixMode;
+
 	LLRender();
 	~LLRender();
 	void init() ;
@@ -319,8 +337,21 @@ class LLRender
 
 	void translatef(const GLfloat& x, const GLfloat& y, const GLfloat& z);
 	void scalef(const GLfloat& x, const GLfloat& y, const GLfloat& z);
+	void rotatef(const GLfloat& a, const GLfloat& x, const GLfloat& y, const GLfloat& z);
+	void ortho(F32 left, F32 right, F32 bottom, F32 top, F32 zNear, F32 zFar);
+
 	void pushMatrix();
 	void popMatrix();
+	void loadMatrix(const GLfloat* m);
+	void loadIdentity();
+	void multMatrix(const GLfloat* m);
+	void matrixMode(U32 mode);	
+
+	const glh::matrix4f& getModelviewMatrix();
+	const glh::matrix4f& getProjectionMatrix();
+
+	void syncMatrices();
+	void syncLightState();
 
 	void translateUI(F32 x, F32 y, F32 z);
 	void scaleUI(F32 x, F32 y, F32 z);
@@ -351,6 +382,12 @@ class LLRender
 	void color3fv(const GLfloat* c);
 	void color4ubv(const GLubyte* c);
 
+	void diffuseColor3f(F32 r, F32 g, F32 b);
+	void diffuseColor3fv(const F32* c);
+	void diffuseColor4f(F32 r, F32 g, F32 b, F32 a);
+	void diffuseColor4fv(const F32* c);
+	void diffuseColor4ubv(const U8* c);
+
 	void vertexBatchPreTransformed(LLVector3* verts, S32 vert_count);
 	void vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, S32 vert_count);
 	void vertexBatchPreTransformed(LLVector3* verts, LLVector2* uvs, LLColor4U*, S32 vert_count);
@@ -368,7 +405,8 @@ class LLRender
 		       eBlendFactor alpha_sfactor, eBlendFactor alpha_dfactor);
 
 	LLLightState* getLight(U32 index);
-
+	void setAmbientLightColor(const LLColor4& color);
+	
 	LLTexUnit* getTexUnit(U32 index);
 
 	U32	getCurrentTexUnitIndex(void) const { return mCurrTextureUnitIndex; }
@@ -389,9 +427,21 @@ class LLRender
 public:
 	static U32 sUICalls;
 	static U32 sUIVerts;
+	static bool sGLCoreProfile;
 	
 private:
-	bool				mDirty;
+	friend class LLLightState;
+
+	U32 mMatrixMode;
+	U32 mMatIdx[NUM_MATRIX_MODES];
+	U32 mMatHash[NUM_MATRIX_MODES];
+	glh::matrix4f mMatrix[NUM_MATRIX_MODES][LL_MATRIX_STACK_DEPTH];
+	U32 mCurMatHash[NUM_MATRIX_MODES];
+	U32 mLightHash;
+	LLColor4 mAmbientLightColor;
+	
+	bool			mDirty;
+	U32				mQuadCycle;
 	U32				mCount;
 	U32				mMode;
 	U32				mCurrTextureUnitIndex;
@@ -419,10 +469,10 @@ class LLRender
 
 };
 
-extern F64 gGLModelView[16];
-extern F64 gGLLastModelView[16];
-extern F64 gGLLastProjection[16];
-extern F64 gGLProjection[16];
+extern F32 gGLModelView[16];
+extern F32 gGLLastModelView[16];
+extern F32 gGLLastProjection[16];
+extern F32 gGLProjection[16];
 extern S32 gGLViewport[4];
 
 extern LLRender gGL;
diff --git a/indra/llrender/llrendersphere.cpp b/indra/llrender/llrendersphere.cpp
index a5cd70445f64efb597f0d1f18da11e24a20588ce..26bfe036e88037c8576930c9e93989f0bada344b 100644
--- a/indra/llrender/llrendersphere.cpp
+++ b/indra/llrender/llrendersphere.cpp
@@ -35,106 +35,12 @@
 
 #include "llglheaders.h"
 
-GLUquadricObj *gQuadObj2 = NULL;
 LLRenderSphere gSphere;
 
-void drawSolidSphere(GLdouble radius, GLint slices, GLint stacks);
-
-void drawSolidSphere(GLdouble radius, GLint slices, GLint stacks)
-{
-	if (!gQuadObj2)
-	{
-		gQuadObj2 = gluNewQuadric();
-		if (!gQuadObj2)
-		{
-			llwarns << "drawSolidSphere couldn't allocate quadric" << llendl;
-			return;
-		}
-	}
-
-	gluQuadricDrawStyle(gQuadObj2, GLU_FILL);
-	gluQuadricNormals(gQuadObj2, GLU_SMOOTH);
-	// If we ever changed/used the texture or orientation state
-	// of quadObj, we'd need to change it to the defaults here
-	// with gluQuadricTexture and/or gluQuadricOrientation.
-	gluQuadricTexture(gQuadObj2, GL_TRUE);
-	gluSphere(gQuadObj2, radius, slices, stacks);
-}
-
-
-// A couple thoughts on sphere drawing:
-// 1) You need more slices than stacks, but little less than 2:1
-// 2) At low LOD, setting stacks to an odd number avoids a "band" around the equator, making things look smoother
-void LLRenderSphere::prerender()
-{
-	//  Create a series of display lists for different LODs
-	mDList[0] = glGenLists(1);
-	glNewList(mDList[0], GL_COMPILE);
-	drawSolidSphere(1.0, 30, 20);
-	glEndList();
-
-	mDList[1] = glGenLists(1);
-	glNewList(mDList[1], GL_COMPILE);
-	drawSolidSphere(1.0, 20, 15);
-	glEndList();
-
-	mDList[2] = glGenLists(1);
-	glNewList(mDList[2], GL_COMPILE);
-	drawSolidSphere(1.0, 12, 8);
-	glEndList();
-
-	mDList[3] = glGenLists(1);
-	glNewList(mDList[3], GL_COMPILE);
-	drawSolidSphere(1.0, 8, 5);
-	glEndList();
-}
-
-void LLRenderSphere::cleanupGL()
-{
-	for (S32 detail = 0; detail < 4; detail++)
-	{
-		glDeleteLists(mDList[detail], 1);
-		mDList[detail] = 0;
-	}
-	
-	if (gQuadObj2)
-	{
-		gluDeleteQuadric(gQuadObj2);
-		gQuadObj2 = NULL;
-	}
-}
-
-// Constants here are empirically derived from my eyeballs, JNC
-//
-// The toughest adjustment is the cutoff for the lowest LOD
-// Maybe we should have more LODs at the low end?
-void LLRenderSphere::render(F32 pixel_area)
-{
-	S32 level_of_detail;
-
-	if (pixel_area > 10000.f)
-	{
-		level_of_detail = 0;
-	}
-	else if (pixel_area > 800.f)
-	{
-		level_of_detail = 1;
-	}
-	else if (pixel_area > 100.f)
-	{
-		level_of_detail = 2;
-	}
-	else
-	{
-		level_of_detail = 3;
-	}
-	glCallList(mDList[level_of_detail]);
-}
-
-
 void LLRenderSphere::render()
 {
-	glCallList(mDList[0]);
+	renderGGL();
+	gGL.flush();
 }
 
 inline LLVector3 polar_to_cart(F32 latitude, F32 longitude)
diff --git a/indra/llrender/llrendersphere.h b/indra/llrender/llrendersphere.h
index 96a6bec80c7f708aaea5343f99d57865f8e3998f..f8e9e86e7f7b58bbbd6b6deda191ed8188623eb3 100644
--- a/indra/llrender/llrendersphere.h
+++ b/indra/llrender/llrendersphere.h
@@ -40,11 +40,6 @@ void lat2xyz(LLVector3 * result, F32 lat, F32 lon);			// utility routine
 class LLRenderSphere  
 {
 public:
-	LLGLuint	mDList[5];
-
-	void prerender();
-	void cleanupGL();
-	void render(F32 pixel_area);		// of a box of size 1.0 at that position
 	void render();						// render at highest LOD
 	void renderGGL();                   // render using LLRender
 
diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp
index 8c0d3592df9fde28330dbc706d6a70bdf5d5595a..ef2a7395dad3d1d9545176485133180ed0bfd544 100644
--- a/indra/llrender/llrendertarget.cpp
+++ b/indra/llrender/llrendertarget.cpp
@@ -31,8 +31,7 @@
 #include "llgl.h"
 
 LLRenderTarget* LLRenderTarget::sBoundTarget = NULL;
-
-
+U32 LLRenderTarget::sBytesAllocated = 0;
 
 void check_framebuffer_status()
 {
@@ -62,8 +61,7 @@ LLRenderTarget::LLRenderTarget() :
 	mStencil(0),
 	mUseDepth(false),
 	mRenderDepth(false),
-	mUsage(LLTexUnit::TT_TEXTURE),
-	mSamples(0)
+	mUsage(LLTexUnit::TT_TEXTURE)
 {
 }
 
@@ -84,20 +82,6 @@ bool LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, boo
 	mStencil = stencil;
 	mUsage = usage;
 	mUseDepth = depth;
-	mSamples = samples;
-
-	mSamples = gGLManager.getNumFBOFSAASamples(mSamples);
-	
-	if (mSamples > 1 && gGLManager.mHasTextureMultisample)
-	{
-		mUsage = LLTexUnit::TT_MULTISAMPLE_TEXTURE;
-		//no support for multisampled stencil targets yet
-		mStencil = false;
-	}
-	else
-	{
-		mSamples = 0;
-	}
 
 	if ((sUseFBO || use_fbo) && gGLManager.mHasFramebufferObject)
 	{
@@ -157,21 +141,6 @@ bool LLRenderTarget::addColorAttachment(U32 color_fmt)
 	stop_glerror();
 
 
-#ifdef GL_ARB_texture_multisample
-	if (mSamples > 1)
-	{
-		clear_glerror();
-		glTexImage2DMultisample(LLTexUnit::getInternalType(mUsage), mSamples, color_fmt, mResX, mResY, GL_TRUE);
-		if (glGetError() != GL_NO_ERROR)
-		{
-			llwarns << "Could not allocate multisample color buffer for render target." << llendl;
-			return false;
-		}
-	}
-	else
-#else
-	llassert_always(mSamples <= 1);
-#endif
 	{
 		clear_glerror();
 		LLImageGL::setManualImage(LLTexUnit::getInternalType(mUsage), 0, color_fmt, mResX, mResY, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
@@ -182,32 +151,32 @@ bool LLRenderTarget::addColorAttachment(U32 color_fmt)
 		}
 	}
 	
+	sBytesAllocated += mResX*mResY*4;
+
 	stop_glerror();
 
-	if (mSamples == 0)
-	{ 
-		if (offset == 0)
-		{ //use bilinear filtering on single texture render targets that aren't multisampled
-			gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
-			stop_glerror();
-		}
-		else
-		{ //don't filter data attachments
-			gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
-			stop_glerror();
-		}
+	
+	if (offset == 0)
+	{ //use bilinear filtering on single texture render targets that aren't multisampled
+		gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
+		stop_glerror();
+	}
+	else
+	{ //don't filter data attachments
+		gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
+		stop_glerror();
+	}
 
-		if (mUsage != LLTexUnit::TT_RECT_TEXTURE)
-		{
-			gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_MIRROR);
-			stop_glerror();
-		}
-		else
-		{
-			// ATI doesn't support mirrored repeat for rectangular textures.
-			gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
-			stop_glerror();
-		}
+	if (mUsage != LLTexUnit::TT_RECT_TEXTURE)
+	{
+		gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_MIRROR);
+		stop_glerror();
+	}
+	else
+	{
+		// ATI doesn't support mirrored repeat for rectangular textures.
+		gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
+		stop_glerror();
 	}
 		
 	if (mFBO)
@@ -250,26 +219,16 @@ bool LLRenderTarget::allocateDepth()
 	{
 		LLImageGL::generateTextures(1, &mDepth);
 		gGL.getTexUnit(0)->bindManual(mUsage, mDepth);
-		if (mSamples == 0)
-		{
-			U32 internal_type = LLTexUnit::getInternalType(mUsage);
-			gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
-			stop_glerror();
-			clear_glerror();
-			LLImageGL::setManualImage(internal_type, 0, GL_DEPTH_COMPONENT32, mResX, mResY, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);
-		}
-#ifdef GL_ARB_texture_multisample
-		else
-		{
-			stop_glerror();
-			clear_glerror();
-			glTexImage2DMultisample(LLTexUnit::getInternalType(mUsage), mSamples, GL_DEPTH_COMPONENT32, mResX, mResY, GL_TRUE);
-		}
-#else
-		llassert_always(mSamples <= 1);
-#endif
+		
+		U32 internal_type = LLTexUnit::getInternalType(mUsage);
+		stop_glerror();
+		clear_glerror();
+		LLImageGL::setManualImage(internal_type, 0, GL_DEPTH_COMPONENT24, mResX, mResY, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);
+		gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
 	}
 
+	sBytesAllocated += mResX*mResY*4;
+
 	if (glGetError() != GL_NO_ERROR)
 	{
 		llwarns << "Unable to allocate depth buffer for render target." << llendl;
@@ -339,14 +298,16 @@ void LLRenderTarget::release()
 			stop_glerror();
 		}
 		mDepth = 0;
+
+		sBytesAllocated -= mResX*mResY*4;
 	}
 	else if (mUseDepth && mFBO)
 	{ //detach shared depth buffer
 		glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
 		if (mStencil)
 		{ //attached as a renderbuffer
-			glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0);
 			glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, 0);
+			glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 0);
 			mStencil = false;
 		}
 		else
@@ -364,6 +325,7 @@ void LLRenderTarget::release()
 
 	if (mTex.size() > 0)
 	{
+		sBytesAllocated -= mResX*mResY*4*mTex.size();
 		LLImageGL::deleteTextures(mTex.size(), &mTex[0], true);
 		mTex.clear();
 	}
@@ -495,7 +457,8 @@ void LLRenderTarget::copyContents(LLRenderTarget& source, S32 srcX0, S32 srcY0,
 	gGL.flush();
 	if (!source.mFBO || !mFBO)
 	{
-		llerrs << "Cannot copy framebuffer contents for non FBO render targets." << llendl;
+		llwarns << "Cannot copy framebuffer contents for non FBO render targets." << llendl;
+		return;
 	}
 
 	
diff --git a/indra/llrender/llrendertarget.h b/indra/llrender/llrendertarget.h
index dea1de12d80953a2f519e337a62b4805bb1fc068..2735ab21c560d2c676f8c2ce1bb28d46f859a40f 100644
--- a/indra/llrender/llrendertarget.h
+++ b/indra/llrender/llrendertarget.h
@@ -64,6 +64,7 @@ class LLRenderTarget
 public:
 	//whether or not to use FBO implementation
 	static bool sUseFBO; 
+	static U32 sBytesAllocated;
 
 	LLRenderTarget();
 	~LLRenderTarget();
@@ -147,7 +148,6 @@ class LLRenderTarget
 	bool mUseDepth;
 	bool mRenderDepth;
 	LLTexUnit::eTextureType mUsage;
-	U32 mSamples;
 	
 	static LLRenderTarget* sBoundTarget;
 };
diff --git a/indra/llrender/llshadermgr.cpp b/indra/llrender/llshadermgr.cpp
index 986c1f2774dde1f23c6416cad1313d11157e6de7..1a03aeebb7d218fe8f90ec213a3faa0bdcb0089b 100644
--- a/indra/llrender/llshadermgr.cpp
+++ b/indra/llrender/llshadermgr.cpp
@@ -81,7 +81,14 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
 	// NOTE order of shader object attaching is VERY IMPORTANT!!!
 	if (features->calculatesAtmospherics)
 	{
-		if (!shader->attachObject("windlight/atmosphericsVarsV.glsl"))
+		if (features->hasWaterFog)
+		{
+			if (!shader->attachObject("windlight/atmosphericsVarsWaterV.glsl"))
+			{
+				return FALSE;
+			}
+		}
+		else if (!shader->attachObject("windlight/atmosphericsVarsV.glsl"))
 		{
 			return FALSE;
 		}
@@ -100,10 +107,13 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
 			{
 				return FALSE;
 			}
-			
-			if (!shader->attachObject("lighting/sumLightsSpecularV.glsl"))
+		
+			if (!features->isAlphaLighting)
 			{
-				return FALSE;
+				if (!shader->attachObject("lighting/sumLightsSpecularV.glsl"))
+				{
+					return FALSE;
+				}
 			}
 			
 			if (!shader->attachObject("lighting/lightSpecularV.glsl"))
@@ -118,9 +128,12 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
 				return FALSE;
 			}
 			
-			if (!shader->attachObject("lighting/sumLightsV.glsl"))
+			if (!features->isAlphaLighting)
 			{
-				return FALSE;
+				if (!shader->attachObject("lighting/sumLightsV.glsl"))
+				{
+					return FALSE;
+				}
 			}
 			
 			if (!shader->attachObject("lighting/lightV.glsl"))
@@ -161,7 +174,14 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
 
 	if(features->calculatesAtmospherics)
 	{
-		if (!shader->attachObject("windlight/atmosphericsVarsF.glsl"))
+		if (features->hasWaterFog)
+		{
+			if (!shader->attachObject("windlight/atmosphericsVarsWaterF.glsl"))
+			{
+				return FALSE;
+			}
+		}
+		else if (!shader->attachObject("windlight/atmosphericsVarsF.glsl"))
 		{
 			return FALSE;
 		}
@@ -241,7 +261,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
 						return FALSE;
 					}
 				}
-				shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+				shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
 			}
 		}
 		
@@ -280,9 +300,9 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
 						return FALSE;
 					}
 				}
-				shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+				shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
 			}
-		}		
+		}
 	}
 	
 	// NOTE order of shader object attaching is VERY IMPORTANT!!!
@@ -304,7 +324,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
 				{
 					return FALSE;
 				}
-				shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+				shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
 			}
 		}
 		else if (features->hasWaterFog)
@@ -336,7 +356,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
 				{
 					return FALSE;
 				}
-				shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+				shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
 			}
 		}
 		
@@ -355,7 +375,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
 				{
 					return FALSE;
 				}
-				shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+				shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
 			}
 		}
 		
@@ -395,7 +415,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
 						return FALSE;
 					}
 				}
-				shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+				shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
 			}
 		}
 	}
@@ -419,7 +439,7 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
 				{
 					return FALSE;
 				}
-				shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+				shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
 			}
 		}
 		
@@ -438,10 +458,26 @@ BOOL LLShaderMgr::attachShaderFeatures(LLGLSLShader * shader)
 				{
 					return FALSE;
 				}
-				shader->mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits-1;
+				shader->mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
 			}
 		}
 	}
+
+	if (features->mIndexedTextureChannels <= 1)
+	{
+		if (!shader->attachObject("objects/nonindexedTextureV.glsl"))
+		{
+			return FALSE;
+		}
+	}
+	else
+	{
+		if (!shader->attachObject("objects/indexedTextureV.glsl"))
+		{
+			return FALSE;
+		}
+	}
+
 	return TRUE;
 }
 
@@ -477,7 +513,7 @@ void LLShaderMgr::dumpObjectLog(GLhandleARB ret, BOOL warns)
 		}
 		else
 		{
-			LL_DEBUGS("ShaderLoading") << log << LL_ENDL;
+			LL_INFOS("ShaderLoading") << log << LL_ENDL;
 		}
 	}
  }
@@ -531,23 +567,64 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 	}
 
 	//we can't have any lines longer than 1024 characters 
-	//or any shaders longer than 1024 lines... deal - DaveP
+	//or any shaders longer than 4096 lines... deal - DaveP
 	GLcharARB buff[1024];
-	GLcharARB* text[1024];
+	GLcharARB* text[4096];
 	GLuint count = 0;
 
-	if (gGLManager.mGLVersion < 2.1f)
+	F32 version = gGLManager.mGLVersion;
+
+//hack to never use GLSL > 1.20 on OSX
+#if LL_DARWIN
+	version = llmin(version, 2.9f);
+#endif
+
+	if (version < 2.1f)
 	{
 		text[count++] = strdup("#version 110\n");
+		text[count++] = strdup("#define ATTRIBUTE attribute\n");
+		text[count++] = strdup("#define VARYING varying\n");
 	}
-	else if (gGLManager.mGLVersion < 3.f)
+	else if (version < 3.3f)
 	{
 		//set version to 1.20
 		text[count++] = strdup("#version 120\n");
+		text[count++] = strdup("#define FXAA_GLSL_120 1\n");
+		text[count++] = strdup("#define FXAA_FAST_PIXEL_OFFSET 0\n");
+		text[count++] = strdup("#define ATTRIBUTE attribute\n");
+		text[count++] = strdup("#define VARYING varying\n");
 	}
 	else
-	{  //set version to 1.30
-		text[count++] = strdup("#version 130\n");
+	{  
+		if (version < 4.f)
+		{
+			//set version to 1.30
+			text[count++] = strdup("#version 130\n");
+		}
+		else
+		{ //set version to 400
+			text[count++] = strdup("#version 400\n");
+		}
+
+		text[count++] = strdup("#define DEFINE_GL_FRAGCOLOR 1\n");
+		text[count++] = strdup("#define FXAA_GLSL_130 1\n");
+
+		text[count++] = strdup("#define ATTRIBUTE in\n");
+
+		if (type == GL_VERTEX_SHADER_ARB)
+		{ //"varying" state is "out" in a vertex program, "in" in a fragment program 
+			// ("varying" is deprecated after version 1.20)
+			text[count++] = strdup("#define VARYING out\n");
+		}
+		else
+		{
+			text[count++] = strdup("#define VARYING in\n");
+		}
+
+		//backwards compatibility with legacy texture lookup syntax
+		text[count++] = strdup("#define textureCube texture\n");
+		text[count++] = strdup("#define texture2DLod textureLod\n");
+		text[count++] = strdup("#define	shadow2D(a,b) vec2(texture(a,b))\n");
 	}
 
 	//copy preprocessor definitions into buffer
@@ -571,7 +648,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 		.
 		uniform sampler2D texN;
 		
-		varying float vary_texture_index;
+		VARYING float vary_texture_index;
 
 		vec4 diffuseLookup(vec2 texcoord)
 		{
@@ -597,7 +674,11 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 			text[count++] = strdup(decl.c_str());
 		}
 
-		text[count++] = strdup("varying float vary_texture_index;\n");
+		if (texture_index_channels > 1)
+		{
+			text[count++] = strdup("VARYING float vary_texture_index;\n");
+		}
+
 		text[count++] = strdup("vec4 diffuseLookup(vec2 texcoord)\n");
 		text[count++] = strdup("{\n");
 		
@@ -620,7 +701,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 			}
 
 			text[count++] = strdup("\t}\n");
-			text[count++] = strdup("\treturn vec4(0,0,0,0);\n");
+			text[count++] = strdup("\treturn vec4(1,0,1,1);\n");
 			text[count++] = strdup("}\n");
 		}
 		else
@@ -643,13 +724,13 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 				text[count++] = strdup(if_str.c_str());
 			}
 
-			text[count++] = strdup("\treturn vec4(0,0,0,0);\n");
+			text[count++] = strdup("\treturn vec4(1,0,1,1);\n");
 			text[count++] = strdup("}\n");
 		}			
 	}
 
 	//copy file into memory
-	while( fgets((char *)buff, 1024, file) != NULL && count < LL_ARRAY_SIZE(buff) ) 
+	while( fgets((char *)buff, 1024, file) != NULL && count < LL_ARRAY_SIZE(text) ) 
 	{
 		text[count++] = (GLcharARB *)strdup((char *)buff); 
 	}
@@ -704,14 +785,24 @@ GLhandleARB LLShaderMgr::loadShaderFile(const std::string& filename, S32 & shade
 				LL_WARNS("ShaderLoading") << "GLSL Compilation Error: (" << error << ") in " << filename << LL_ENDL;
 				dumpObjectLog(ret);
 
+#if LL_WINDOWS
 				std::stringstream ostr;
 				//dump shader source for debugging
 				for (GLuint i = 0; i < count; i++)
 				{
 					ostr << i << ": " << text[i];
+
+					if (i % 128 == 0)
+					{ //dump every 128 lines
+
+						LL_WARNS("ShaderLoading") << "\n" << ostr.str() << llendl;
+						ostr = std::stringstream();
+					}
+
 				}
 
 				LL_WARNS("ShaderLoading") << "\n" << ostr.str() << llendl;
+#endif // LL_WINDOWS
 
 				ret = 0;
 			}
@@ -760,28 +851,42 @@ BOOL LLShaderMgr::linkProgramObject(GLhandleARB obj, BOOL suppress_errors)
 		LL_WARNS("ShaderLoading") << "GLSL Linker Error:" << LL_ENDL;
 	}
 
-// NOTE: Removing LL_DARWIN block as it doesn't seem to actually give the correct answer, 
-// but want it for reference once I move it.
-#if 0
-	// Force an evaluation of the gl state so the driver can tell if the shader will run in hardware or software
-	// per Apple's suggestion   
-	glBegin(gGL.mMode);
-	glEnd();
+#if LL_DARWIN
 
-	// Query whether the shader can or cannot run in hardware
-	// http://developer.apple.com/qa/qa2007/qa1502.html
-	long vertexGPUProcessing;
-	CGLContextObj ctx = CGLGetCurrentContext();
-	CGLGetParameter (ctx, kCGLCPGPUVertexProcessing, &vertexGPUProcessing);	
-	long fragmentGPUProcessing;
-	CGLGetParameter (ctx, kCGLCPGPUFragmentProcessing, &fragmentGPUProcessing);
-	if (!fragmentGPUProcessing || !vertexGPUProcessing)
+	// For some reason this absolutely kills the frame rate when VBO's are enabled
+	if (0)
 	{
-		LL_WARNS("ShaderLoading") << "GLSL Linker: Running in Software:" << LL_ENDL;
-		success = GL_FALSE;
-		suppress_errors = FALSE;		
+		// Force an evaluation of the gl state so the driver can tell if the shader will run in hardware or software
+		// per Apple's suggestion
+		LLGLSLShader::sNoFixedFunction = false;
+		
+		glUseProgramObjectARB(obj);
+
+		gGL.begin(LLRender::TRIANGLES);
+		gGL.vertex3f(0.0f, 0.0f, 0.0f);
+		gGL.vertex3f(0.0f, 0.0f, 0.0f);
+		gGL.vertex3f(0.0f, 0.0f, 0.0f);
+		gGL.end();
+		gGL.flush();
+		
+		glUseProgramObjectARB(0);
+		
+		LLGLSLShader::sNoFixedFunction = true;
+
+		// Query whether the shader can or cannot run in hardware
+		// http://developer.apple.com/qa/qa2007/qa1502.html
+		GLint vertexGPUProcessing, fragmentGPUProcessing;
+		CGLContextObj ctx = CGLGetCurrentContext();
+		CGLGetParameter(ctx, kCGLCPGPUVertexProcessing, &vertexGPUProcessing);	
+		CGLGetParameter(ctx, kCGLCPGPUFragmentProcessing, &fragmentGPUProcessing);
+		if (!fragmentGPUProcessing || !vertexGPUProcessing)
+		{
+			LL_WARNS("ShaderLoading") << "GLSL Linker: Running in Software:" << LL_ENDL;
+			success = GL_FALSE;
+			suppress_errors = FALSE;		
+		}
 	}
-	
+
 #else
 	std::string log = get_object_log(obj);
 	LLStringUtil::toLower(log);
@@ -819,3 +924,181 @@ BOOL LLShaderMgr::validateProgramObject(GLhandleARB obj)
 	return success;
 }
 
+//virtual
+void LLShaderMgr::initAttribsAndUniforms()
+{
+	//MUST match order of enum in LLVertexBuffer.h
+	mReservedAttribs.push_back("position");
+	mReservedAttribs.push_back("normal");
+	mReservedAttribs.push_back("texcoord0");
+	mReservedAttribs.push_back("texcoord1");
+	mReservedAttribs.push_back("texcoord2");
+	mReservedAttribs.push_back("texcoord3");
+	mReservedAttribs.push_back("diffuse_color");
+	mReservedAttribs.push_back("emissive");
+	mReservedAttribs.push_back("binormal");
+	mReservedAttribs.push_back("weight");
+	mReservedAttribs.push_back("weight4");
+	mReservedAttribs.push_back("clothing");
+	mReservedAttribs.push_back("texture_index");
+	
+	//matrix state
+	mReservedUniforms.push_back("modelview_matrix");
+	mReservedUniforms.push_back("projection_matrix");
+	mReservedUniforms.push_back("inv_proj");
+	mReservedUniforms.push_back("modelview_projection_matrix");
+	mReservedUniforms.push_back("normal_matrix");
+	mReservedUniforms.push_back("texture_matrix0");
+	mReservedUniforms.push_back("texture_matrix1");
+	mReservedUniforms.push_back("texture_matrix2");
+	mReservedUniforms.push_back("texture_matrix3");
+	llassert(mReservedUniforms.size() == LLShaderMgr::TEXTURE_MATRIX3+1);
+
+	mReservedUniforms.push_back("viewport");
+
+	mReservedUniforms.push_back("light_position");
+	mReservedUniforms.push_back("light_direction");
+	mReservedUniforms.push_back("light_attenuation");
+	mReservedUniforms.push_back("light_diffuse");
+	mReservedUniforms.push_back("light_ambient");
+	mReservedUniforms.push_back("light_count");
+	mReservedUniforms.push_back("light");
+	mReservedUniforms.push_back("light_col");
+	mReservedUniforms.push_back("far_z");
+
+	llassert(mReservedUniforms.size() == LLShaderMgr::MULTI_LIGHT_FAR_Z+1);
+
+
+	mReservedUniforms.push_back("proj_mat");
+	mReservedUniforms.push_back("proj_near");
+	mReservedUniforms.push_back("proj_p");
+	mReservedUniforms.push_back("proj_n");
+	mReservedUniforms.push_back("proj_origin");
+	mReservedUniforms.push_back("proj_range");
+	mReservedUniforms.push_back("proj_ambiance");
+	mReservedUniforms.push_back("proj_shadow_idx");
+	mReservedUniforms.push_back("shadow_fade");
+	mReservedUniforms.push_back("proj_focus");
+	mReservedUniforms.push_back("proj_lod");
+	mReservedUniforms.push_back("proj_ambient_lod");
+
+	llassert(mReservedUniforms.size() == LLShaderMgr::PROJECTOR_AMBIENT_LOD+1);
+
+	mReservedUniforms.push_back("color");
+		
+	mReservedUniforms.push_back("diffuseMap");
+	mReservedUniforms.push_back("specularMap");
+	mReservedUniforms.push_back("bumpMap");
+	mReservedUniforms.push_back("environmentMap");
+	mReservedUniforms.push_back("cloude_noise_texture");
+	mReservedUniforms.push_back("fullbright");
+	mReservedUniforms.push_back("lightnorm");
+	mReservedUniforms.push_back("sunlight_color_copy");
+	mReservedUniforms.push_back("ambient");
+	mReservedUniforms.push_back("blue_horizon");
+	mReservedUniforms.push_back("blue_density");
+	mReservedUniforms.push_back("haze_horizon");
+	mReservedUniforms.push_back("haze_density");
+	mReservedUniforms.push_back("cloud_shadow");
+	mReservedUniforms.push_back("density_multiplier");
+	mReservedUniforms.push_back("distance_multiplier");
+	mReservedUniforms.push_back("max_y");
+	mReservedUniforms.push_back("glow");
+	mReservedUniforms.push_back("cloud_color");
+	mReservedUniforms.push_back("cloud_pos_density1");
+	mReservedUniforms.push_back("cloud_pos_density2");
+	mReservedUniforms.push_back("cloud_scale");
+	mReservedUniforms.push_back("gamma");
+	mReservedUniforms.push_back("scene_light_strength");
+
+	llassert(mReservedUniforms.size() == LLShaderMgr::SCENE_LIGHT_STRENGTH+1);
+
+	mReservedUniforms.push_back("center");
+	mReservedUniforms.push_back("size");
+	mReservedUniforms.push_back("falloff");
+
+
+	mReservedUniforms.push_back("minLuminance");
+	mReservedUniforms.push_back("maxExtractAlpha");
+	mReservedUniforms.push_back("lumWeights");
+	mReservedUniforms.push_back("warmthWeights");
+	mReservedUniforms.push_back("warmthAmount");
+	mReservedUniforms.push_back("glowStrength");
+	mReservedUniforms.push_back("glowDelta");
+
+	llassert(mReservedUniforms.size() == LLShaderMgr::GLOW_DELTA+1);
+
+
+	mReservedUniforms.push_back("minimum_alpha");
+
+	mReservedUniforms.push_back("shadow_matrix");
+	mReservedUniforms.push_back("env_mat");
+	mReservedUniforms.push_back("shadow_clip");
+	mReservedUniforms.push_back("sun_wash");
+	mReservedUniforms.push_back("shadow_noise");
+	mReservedUniforms.push_back("blur_size");
+	mReservedUniforms.push_back("ssao_radius");
+	mReservedUniforms.push_back("ssao_max_radius");
+	mReservedUniforms.push_back("ssao_factor");
+	mReservedUniforms.push_back("ssao_factor_inv");
+	mReservedUniforms.push_back("ssao_effect_mat");
+	mReservedUniforms.push_back("screen_res");
+	mReservedUniforms.push_back("near_clip");
+	mReservedUniforms.push_back("shadow_offset");
+	mReservedUniforms.push_back("shadow_bias");
+	mReservedUniforms.push_back("spot_shadow_bias");
+	mReservedUniforms.push_back("spot_shadow_offset");
+	mReservedUniforms.push_back("sun_dir");
+	mReservedUniforms.push_back("shadow_res");
+	mReservedUniforms.push_back("proj_shadow_res");
+	mReservedUniforms.push_back("depth_cutoff");
+	mReservedUniforms.push_back("norm_cutoff");
+	
+	llassert(mReservedUniforms.size() == LLShaderMgr::DEFERRED_NORM_CUTOFF+1);
+
+	mReservedUniforms.push_back("tc_scale");
+	mReservedUniforms.push_back("rcp_screen_res");
+	mReservedUniforms.push_back("rcp_frame_opt");
+	mReservedUniforms.push_back("rcp_frame_opt2");
+	
+	mReservedUniforms.push_back("focal_distance");
+	mReservedUniforms.push_back("blur_constant");
+	mReservedUniforms.push_back("tan_pixel_angle");
+	mReservedUniforms.push_back("magnification");
+	mReservedUniforms.push_back("max_cof");
+	mReservedUniforms.push_back("res_scale");
+
+	mReservedUniforms.push_back("depthMap");
+	mReservedUniforms.push_back("shadowMap0");
+	mReservedUniforms.push_back("shadowMap1");
+	mReservedUniforms.push_back("shadowMap2");
+	mReservedUniforms.push_back("shadowMap3");
+	mReservedUniforms.push_back("shadowMap4");
+	mReservedUniforms.push_back("shadowMap5");
+
+	llassert(mReservedUniforms.size() == LLShaderMgr::DEFERRED_SHADOW5+1);
+
+	mReservedUniforms.push_back("normalMap");
+	mReservedUniforms.push_back("positionMap");
+	mReservedUniforms.push_back("diffuseRect");
+	mReservedUniforms.push_back("specularRect");
+	mReservedUniforms.push_back("noiseMap");
+	mReservedUniforms.push_back("lightFunc");
+	mReservedUniforms.push_back("lightMap");
+	mReservedUniforms.push_back("bloomMap");
+	mReservedUniforms.push_back("projectionMap");
+
+	llassert(mReservedUniforms.size() == END_RESERVED_UNIFORMS);
+
+	std::set<std::string> dupe_check;
+
+	for (U32 i = 0; i < mReservedUniforms.size(); ++i)
+	{
+		if (dupe_check.find(mReservedUniforms[i]) != dupe_check.end())
+		{
+			llerrs << "Duplicate reserved uniform name found: " << mReservedUniforms[i] << llendl;
+		}
+		dupe_check.insert(mReservedUniforms[i]);
+	}
+}
+
diff --git a/indra/llrender/llshadermgr.h b/indra/llrender/llshadermgr.h
index 2f3010381127f281d78f3bdf5c2739865a9ba65c..950e6c9c2f0e6e87b56025f0e1855087762c25e9 100644
--- a/indra/llrender/llshadermgr.h
+++ b/indra/llrender/llshadermgr.h
@@ -36,9 +36,137 @@ class LLShaderMgr
 	LLShaderMgr();
 	virtual ~LLShaderMgr();
 
+	typedef enum
+	{
+		MODELVIEW_MATRIX = 0,
+		PROJECTION_MATRIX,
+		INVERSE_PROJECTION_MATRIX,
+		MODELVIEW_PROJECTION_MATRIX,
+		NORMAL_MATRIX,
+		TEXTURE_MATRIX0,
+		TEXTURE_MATRIX1,
+		TEXTURE_MATRIX2,
+		TEXTURE_MATRIX3,
+		VIEWPORT,
+		LIGHT_POSITION,
+		LIGHT_DIRECTION,
+		LIGHT_ATTENUATION,
+		LIGHT_DIFFUSE,
+		LIGHT_AMBIENT,
+		MULTI_LIGHT_COUNT,
+		MULTI_LIGHT,
+		MULTI_LIGHT_COL,
+		MULTI_LIGHT_FAR_Z,
+		PROJECTOR_MATRIX,
+		PROJECTOR_NEAR,
+		PROJECTOR_P,
+		PROJECTOR_N,
+		PROJECTOR_ORIGIN,
+		PROJECTOR_RANGE,
+		PROJECTOR_AMBIANCE,
+		PROJECTOR_SHADOW_INDEX,
+		PROJECTOR_SHADOW_FADE,
+		PROJECTOR_FOCUS,
+		PROJECTOR_LOD,
+		PROJECTOR_AMBIENT_LOD,
+		DIFFUSE_COLOR,
+		DIFFUSE_MAP,
+		SPECULAR_MAP,
+		BUMP_MAP,
+		ENVIRONMENT_MAP,
+		CLOUD_NOISE_MAP,
+		FULLBRIGHT,
+		LIGHTNORM,
+		SUNLIGHT_COLOR,
+		AMBIENT,
+		BLUE_HORIZON,
+		BLUE_DENSITY,
+		HAZE_HORIZON,
+		HAZE_DENSITY,
+		CLOUD_SHADOW,
+		DENSITY_MULTIPLIER,
+		DISTANCE_MULTIPLIER,
+		MAX_Y,
+		GLOW,
+		CLOUD_COLOR,
+		CLOUD_POS_DENSITY1,
+		CLOUD_POS_DENSITY2,
+		CLOUD_SCALE,
+		GAMMA,
+		SCENE_LIGHT_STRENGTH,
+		LIGHT_CENTER,
+		LIGHT_SIZE,
+		LIGHT_FALLOFF,
+
+		GLOW_MIN_LUMINANCE,
+		GLOW_MAX_EXTRACT_ALPHA,
+		GLOW_LUM_WEIGHTS,
+		GLOW_WARMTH_WEIGHTS,
+		GLOW_WARMTH_AMOUNT,
+		GLOW_STRENGTH,
+		GLOW_DELTA,
+
+		MINIMUM_ALPHA,
+
+		DEFERRED_SHADOW_MATRIX,
+		DEFERRED_ENV_MAT,
+		DEFERRED_SHADOW_CLIP,
+		DEFERRED_SUN_WASH,
+		DEFERRED_SHADOW_NOISE,
+		DEFERRED_BLUR_SIZE,
+		DEFERRED_SSAO_RADIUS,
+		DEFERRED_SSAO_MAX_RADIUS,
+		DEFERRED_SSAO_FACTOR,
+		DEFERRED_SSAO_FACTOR_INV,
+		DEFERRED_SSAO_EFFECT_MAT,
+		DEFERRED_SCREEN_RES,
+		DEFERRED_NEAR_CLIP,
+		DEFERRED_SHADOW_OFFSET,
+		DEFERRED_SHADOW_BIAS,
+		DEFERRED_SPOT_SHADOW_BIAS,
+		DEFERRED_SPOT_SHADOW_OFFSET,
+		DEFERRED_SUN_DIR,
+		DEFERRED_SHADOW_RES,
+		DEFERRED_PROJ_SHADOW_RES,
+		DEFERRED_DEPTH_CUTOFF,
+		DEFERRED_NORM_CUTOFF,
+
+		FXAA_TC_SCALE,
+		FXAA_RCP_SCREEN_RES,
+		FXAA_RCP_FRAME_OPT,
+		FXAA_RCP_FRAME_OPT2,
+
+		DOF_FOCAL_DISTANCE,
+		DOF_BLUR_CONSTANT,
+		DOF_TAN_PIXEL_ANGLE,
+		DOF_MAGNIFICATION,
+		DOF_MAX_COF,
+		DOF_RES_SCALE,
+
+		DEFERRED_DEPTH,
+		DEFERRED_SHADOW0,
+		DEFERRED_SHADOW1,
+		DEFERRED_SHADOW2,
+		DEFERRED_SHADOW3,
+		DEFERRED_SHADOW4,
+		DEFERRED_SHADOW5,
+		DEFERRED_NORMAL,
+		DEFERRED_POSITION,
+		DEFERRED_DIFFUSE,
+		DEFERRED_SPECULAR,
+		DEFERRED_NOISE,
+		DEFERRED_LIGHTFUNC,
+		DEFERRED_LIGHT,
+		DEFERRED_BLOOM,
+		DEFERRED_PROJECTION,
+		END_RESERVED_UNIFORMS
+	} eGLSLReservedUniforms;
+
 	// singleton pattern implementation
 	static LLShaderMgr * instance();
 
+	virtual void initAttribsAndUniforms(void);
+
 	BOOL attachShaderFeatures(LLGLSLShader * shader);
 	void dumpObjectLog(GLhandleARB ret, BOOL warns = TRUE);
 	BOOL	linkProgramObject(GLhandleARB obj, BOOL suppress_errors = FALSE);
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 8fd11937801b8eba7f68933bd5692a82e19ef3cf..eb302392bb1c4135f8d0c8d664310c648f1e3267 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -34,9 +34,21 @@
 #include "llmemtype.h"
 #include "llrender.h"
 #include "llvector4a.h"
+#include "llshadermgr.h"
 #include "llglslshader.h"
 #include "llmemory.h"
 
+//Next Highest Power Of Two
+//helper function, returns first number > v that is a power of 2, or v if v is already a power of 2
+U32 nhpo2(U32 v)
+{
+	U32 r = 1;
+	while (r < v) {
+		r *= 2;
+	}
+	return r;
+}
+
 
 //============================================================================
 
@@ -45,6 +57,7 @@ LLVBOPool LLVertexBuffer::sStreamVBOPool;
 LLVBOPool LLVertexBuffer::sDynamicVBOPool;
 LLVBOPool LLVertexBuffer::sStreamIBOPool;
 LLVBOPool LLVertexBuffer::sDynamicIBOPool;
+U32 LLVBOPool::sBytesPooled = 0;
 
 LLPrivateMemoryPool* LLVertexBuffer::sPrivatePoolp = NULL ;
 U32 LLVertexBuffer::sBindCount = 0;
@@ -55,6 +68,7 @@ S32 LLVertexBuffer::sMappedCount = 0;
 BOOL LLVertexBuffer::sDisableVBOMapping = FALSE ;
 BOOL LLVertexBuffer::sEnableVBOs = TRUE;
 U32 LLVertexBuffer::sGLRenderBuffer = 0;
+U32 LLVertexBuffer::sGLRenderArray = 0;
 U32 LLVertexBuffer::sGLRenderIndices = 0;
 U32 LLVertexBuffer::sLastMask = 0;
 BOOL LLVertexBuffer::sVBOActive = FALSE;
@@ -62,11 +76,8 @@ BOOL LLVertexBuffer::sIBOActive = FALSE;
 U32 LLVertexBuffer::sAllocatedBytes = 0;
 BOOL LLVertexBuffer::sMapped = FALSE;
 BOOL LLVertexBuffer::sUseStreamDraw = TRUE;
+BOOL LLVertexBuffer::sUseVAO = FALSE;
 BOOL LLVertexBuffer::sPreferStreamDraw = FALSE;
-S32	LLVertexBuffer::sWeight4Loc = -1;
-
-std::vector<U32> LLVertexBuffer::sDeleteList;
-
 
 const U32 FENCE_WAIT_TIME_NANOSECONDS = 10000;  //1 ms
 
@@ -84,7 +95,7 @@ class LLGLSyncFence : public LLGLFence
 #endif
 	}
 
-	~LLGLSyncFence()
+	virtual ~LLGLSyncFence()
 	{
 #ifdef GL_ARB_sync
 		if (mSync)
@@ -122,6 +133,121 @@ class LLGLSyncFence : public LLGLFence
 
 };
 
+
+//which power of 2 is i?
+//assumes i is a power of 2 > 0
+U32 wpo2(U32 i)
+{
+	llassert(i > 0);
+	llassert(nhpo2(i) == i);
+
+	U32 r = 0;
+
+	while (i >>= 1) ++r;
+
+	return r;
+}
+
+volatile U8* LLVBOPool::allocate(U32& name, U32 size)
+{
+	llassert(nhpo2(size) == size);
+
+	U32 i = wpo2(size);
+
+	if (mFreeList.size() <= i)
+	{
+		mFreeList.resize(i+1);
+	}
+
+	volatile U8* ret = NULL;
+
+	if (mFreeList[i].empty())
+	{
+		//make a new buffer
+		glGenBuffersARB(1, &name);
+		glBindBufferARB(mType, name);
+		LLVertexBuffer::sAllocatedBytes += size;
+
+		if (LLVertexBuffer::sDisableVBOMapping || mUsage != GL_DYNAMIC_DRAW_ARB)
+		{
+			glBufferDataARB(mType, size, 0, mUsage);
+			ret = (U8*) ll_aligned_malloc_16(size);
+		}
+		else
+		{ //always use a true hint of static draw when allocating non-client-backed buffers
+			glBufferDataARB(mType, size, 0, GL_STATIC_DRAW_ARB);
+		}
+
+		glBindBufferARB(mType, 0);
+	}
+	else
+	{
+		name = mFreeList[i].front().mGLName;
+		ret = mFreeList[i].front().mClientData;
+
+		sBytesPooled -= size;
+
+		mFreeList[i].pop_front();
+	}
+
+	return ret;
+}
+
+void LLVBOPool::release(U32 name, volatile U8* buffer, U32 size)
+{
+	llassert(nhpo2(size) == size);
+
+	U32 i = wpo2(size);
+
+	llassert(mFreeList.size() > i);
+
+	Record rec;
+	rec.mGLName = name;
+	rec.mClientData = buffer;
+
+	sBytesPooled += size;
+	
+	if (!LLVertexBuffer::sDisableVBOMapping && mUsage == GL_DYNAMIC_DRAW_ARB)
+	{
+		glDeleteBuffersARB(1, &rec.mGLName);
+	}
+	else
+	{
+		mFreeList[i].push_back(rec);
+	}
+}
+
+void LLVBOPool::cleanup()
+{
+	U32 size = 1;
+
+	for (U32 i = 0; i < mFreeList.size(); ++i)
+	{
+		record_list_t& l = mFreeList[i];
+
+		while (!l.empty())
+		{
+			Record& r = l.front();
+
+			glDeleteBuffersARB(1, &r.mGLName);
+
+			if (r.mClientData)
+			{
+				ll_aligned_free_16((void*) r.mClientData);
+			}
+
+			l.pop_front();
+
+			LLVertexBuffer::sAllocatedBytes -= size;
+			sBytesPooled -= size;
+		}
+
+		size *= 2;
+	}
+}
+
+
+//NOTE: each component must be AT LEAST 4 bytes in size to avoid a performance penalty on AMD hardware
 S32 LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_MAX] =
 {
 	sizeof(LLVector4), // TYPE_VERTEX,
@@ -131,10 +257,12 @@ S32 LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_MAX] =
 	sizeof(LLVector2), // TYPE_TEXCOORD2,
 	sizeof(LLVector2), // TYPE_TEXCOORD3,
 	sizeof(LLColor4U), // TYPE_COLOR,
+	sizeof(LLColor4U), // TYPE_EMISSIVE, only alpha is used currently
 	sizeof(LLVector4), // TYPE_BINORMAL,
 	sizeof(F32),	   // TYPE_WEIGHT,
 	sizeof(LLVector4), // TYPE_WEIGHT4,
 	sizeof(LLVector4), // TYPE_CLOTHWEIGHT,
+	sizeof(LLVector4), // TYPE_TEXTURE_INDEX (actually exists as position.w), no extra data, but stride is 16 bytes
 };
 
 U32 LLVertexBuffer::sGLMode[LLRender::NUM_MODES] = 
@@ -149,146 +277,147 @@ U32 LLVertexBuffer::sGLMode[LLRender::NUM_MODES] =
 	GL_LINE_LOOP,
 };
 
+
 //static
 void LLVertexBuffer::setupClientArrays(U32 data_mask)
 {
-	/*if (LLGLImmediate::sStarted)
-	{
-		llerrs << "Cannot use LLGLImmediate and LLVertexBuffer simultaneously!" << llendl;
-	}*/
-
 	if (sLastMask != data_mask)
 	{
-		U32 mask[] =
+		BOOL error = FALSE;
+
+		if (LLGLSLShader::sNoFixedFunction)
 		{
-			MAP_VERTEX,
-			MAP_NORMAL,
-			MAP_TEXCOORD0,
-			MAP_COLOR,
-		};
-		
-		GLenum array[] =
+			for (U32 i = 0; i < TYPE_MAX; ++i)
+			{
+				S32 loc = i;
+										
+				U32 mask = 1 << i;
+
+				if (sLastMask & (1 << i))
+				{ //was enabled
+					if (!(data_mask & mask))
+					{ //needs to be disabled
+						glDisableVertexAttribArrayARB(loc);
+					}
+				}
+				else 
+				{	//was disabled
+					if (data_mask & mask)
+					{ //needs to be enabled
+						glEnableVertexAttribArrayARB(loc);
+					}
+				}
+			}
+		}
+		else
 		{
-			GL_VERTEX_ARRAY,
-			GL_NORMAL_ARRAY,
-			GL_TEXTURE_COORD_ARRAY,
-			GL_COLOR_ARRAY,
-		};
 
-		BOOL error = FALSE;
-		for (U32 i = 0; i < 4; ++i)
-		{
-			if (sLastMask & mask[i])
-			{ //was enabled
-				if (!(data_mask & mask[i]) && i > 0)
-				{ //needs to be disabled
-					glDisableClientState(array[i]);
+			GLenum array[] =
+			{
+				GL_VERTEX_ARRAY,
+				GL_NORMAL_ARRAY,
+				GL_TEXTURE_COORD_ARRAY,
+				GL_COLOR_ARRAY,
+			};
+
+			GLenum mask[] = 
+			{
+				MAP_VERTEX,
+				MAP_NORMAL,
+				MAP_TEXCOORD0,
+				MAP_COLOR
+			};
+
+
+
+			for (U32 i = 0; i < 4; ++i)
+			{
+				if (sLastMask & mask[i])
+				{ //was enabled
+					if (!(data_mask & mask[i]))
+					{ //needs to be disabled
+						glDisableClientState(array[i]);
+					}
+					else if (gDebugGL)
+					{ //needs to be enabled, make sure it was (DEBUG)
+						if (!glIsEnabled(array[i]))
+						{
+							if (gDebugSession)
+							{
+								error = TRUE;
+								gFailLog << "Bad client state! " << array[i] << " disabled." << std::endl;
+							}
+							else
+							{
+								llerrs << "Bad client state! " << array[i] << " disabled." << llendl;
+							}
+						}
+					}
 				}
-				else if (gDebugGL)
-				{ //needs to be enabled, make sure it was (DEBUG TEMPORARY)
-					if (i > 0 && !glIsEnabled(array[i]))
-					{
+				else 
+				{	//was disabled
+					if (data_mask & mask[i])
+					{ //needs to be enabled
+						glEnableClientState(array[i]);
+					}
+					else if (gDebugGL && glIsEnabled(array[i]))
+					{ //needs to be disabled, make sure it was (DEBUG TEMPORARY)
 						if (gDebugSession)
 						{
 							error = TRUE;
-							gFailLog << "Bad client state! " << array[i] << " disabled." << std::endl;
+							gFailLog << "Bad client state! " << array[i] << " enabled." << std::endl;
 						}
 						else
 						{
-							llerrs << "Bad client state! " << array[i] << " disabled." << llendl;
+							llerrs << "Bad client state! " << array[i] << " enabled." << llendl;
 						}
 					}
 				}
 			}
-			else 
-			{	//was disabled
-				if (data_mask & mask[i] && i > 0)
-				{ //needs to be enabled
-					glEnableClientState(array[i]);
-				}
-				else if (gDebugGL && i > 0 && glIsEnabled(array[i]))
-				{ //needs to be disabled, make sure it was (DEBUG TEMPORARY)
-					if (gDebugSession)
-					{
-						error = TRUE;
-						gFailLog << "Bad client state! " << array[i] << " enabled." << std::endl;
-					}
-					else
-					{
-						llerrs << "Bad client state! " << array[i] << " enabled." << llendl;
+		
+			U32 map_tc[] = 
+			{
+				MAP_TEXCOORD1,
+				MAP_TEXCOORD2,
+				MAP_TEXCOORD3
+			};
+
+			for (U32 i = 0; i < 3; i++)
+			{
+				if (sLastMask & map_tc[i])
+				{
+					if (!(data_mask & map_tc[i]))
+					{ //disable
+						glClientActiveTextureARB(GL_TEXTURE1_ARB+i);
+						glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+						glClientActiveTextureARB(GL_TEXTURE0_ARB);
 					}
 				}
+				else if (data_mask & map_tc[i])
+				{
+					glClientActiveTextureARB(GL_TEXTURE1_ARB+i);
+					glEnableClientState(GL_TEXTURE_COORD_ARRAY);
+					glClientActiveTextureARB(GL_TEXTURE0_ARB);
+				}
 			}
-		}
-
-		if (error)
-		{
-			ll_fail("LLVertexBuffer::setupClientArrays failed");
-		}
 
-		U32 map_tc[] = 
-		{
-			MAP_TEXCOORD1,
-			MAP_TEXCOORD2,
-			MAP_TEXCOORD3
-		};
-
-		for (U32 i = 0; i < 3; i++)
-		{
-			if (sLastMask & map_tc[i])
+			if (sLastMask & MAP_BINORMAL)
 			{
-				if (!(data_mask & map_tc[i]))
+				if (!(data_mask & MAP_BINORMAL))
 				{
-					glClientActiveTextureARB(GL_TEXTURE1_ARB+i);
+					glClientActiveTextureARB(GL_TEXTURE2_ARB);
 					glDisableClientState(GL_TEXTURE_COORD_ARRAY);
 					glClientActiveTextureARB(GL_TEXTURE0_ARB);
 				}
 			}
-			else if (data_mask & map_tc[i])
-			{
-				glClientActiveTextureARB(GL_TEXTURE1_ARB+i);
-				glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-				glClientActiveTextureARB(GL_TEXTURE0_ARB);
-			}
-		}
-
-		if (sLastMask & MAP_BINORMAL)
-		{
-			if (!(data_mask & MAP_BINORMAL))
+			else if (data_mask & MAP_BINORMAL)
 			{
 				glClientActiveTextureARB(GL_TEXTURE2_ARB);
-				glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+				glEnableClientState(GL_TEXTURE_COORD_ARRAY);
 				glClientActiveTextureARB(GL_TEXTURE0_ARB);
 			}
 		}
-		else if (data_mask & MAP_BINORMAL)
-		{
-			glClientActiveTextureARB(GL_TEXTURE2_ARB);
-			glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-			glClientActiveTextureARB(GL_TEXTURE0_ARB);
-		}
-	
-		if (sLastMask & MAP_WEIGHT4)
-		{
-			if (sWeight4Loc < 0)
-			{
-				llerrs << "Weighting disabled but vertex buffer still bound!" << llendl;
-			}
-
-			if (!(data_mask & MAP_WEIGHT4))
-			{ //disable 4-component skin weight			
-				glDisableVertexAttribArrayARB(sWeight4Loc);
-			}
-		}
-		else if (data_mask & MAP_WEIGHT4)
-		{
-			if (sWeight4Loc >= 0)
-			{ //enable 4-component skin weight
-				glEnableVertexAttribArrayARB(sWeight4Loc);
-			}
-		}
 				
-
 		sLastMask = data_mask;
 	}
 }
@@ -296,6 +425,9 @@ void LLVertexBuffer::setupClientArrays(U32 data_mask)
 //static
 void LLVertexBuffer::drawArrays(U32 mode, const std::vector<LLVector3>& pos, const std::vector<LLVector3>& norm)
 {
+	llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShaderPtr != NULL);
+	gGL.syncMatrices();
+
 	U32 count = pos.size();
 	llassert_always(norm.size() >= pos.size());
 	llassert_always(count > 0) ;
@@ -304,24 +436,79 @@ void LLVertexBuffer::drawArrays(U32 mode, const std::vector<LLVector3>& pos, con
 	
 	setupClientArrays(MAP_VERTEX | MAP_NORMAL);
 
-	glVertexPointer(3, GL_FLOAT, 0, pos[0].mV);
-	glNormalPointer(GL_FLOAT, 0, norm[0].mV);
+	LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+
+	if (shader)
+	{
+		S32 loc = LLVertexBuffer::TYPE_VERTEX;
+		if (loc > -1)
+		{
+			glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, 0, pos[0].mV);
+		}
+		loc = LLVertexBuffer::TYPE_NORMAL;
+		if (loc > -1)
+		{
+			glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, 0, norm[0].mV);
+		}
+	}
+	else
+	{
+		glVertexPointer(3, GL_FLOAT, 0, pos[0].mV);
+		glNormalPointer(GL_FLOAT, 0, norm[0].mV);
+	}
 
 	glDrawArrays(sGLMode[mode], 0, count);
 }
 
+//static
+void LLVertexBuffer::drawElements(U32 mode, const LLVector4a* pos, const LLVector2* tc, S32 num_indices, const U16* indicesp)
+{
+	llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShaderPtr != NULL);
+
+	gGL.syncMatrices();
+
+	U32 mask = LLVertexBuffer::MAP_VERTEX;
+	if (tc)
+	{
+		mask = mask | LLVertexBuffer::MAP_TEXCOORD0;
+	}
+
+	unbind();
+	
+	setupClientArrays(mask);
+
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		S32 loc = LLVertexBuffer::TYPE_VERTEX;
+		glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, 16, pos);
+
+		if (tc)
+		{
+			loc = LLVertexBuffer::TYPE_TEXCOORD0;
+			glVertexAttribPointerARB(loc, 2, GL_FLOAT, GL_FALSE, 0, tc);
+		}
+	}
+	else
+	{
+		glTexCoordPointer(2, GL_FLOAT, 0, tc);
+		glVertexPointer(3, GL_FLOAT, 16, pos);
+	}
+
+	glDrawElements(sGLMode[mode], num_indices, GL_UNSIGNED_SHORT, indicesp);
+}
+
 void LLVertexBuffer::validateRange(U32 start, U32 end, U32 count, U32 indices_offset) const
 {
-	if (start >= (U32) mRequestedNumVerts ||
-	    end >= (U32) mRequestedNumVerts)
+	if (start >= (U32) mNumVerts ||
+	    end >= (U32) mNumVerts)
 	{
-		llerrs << "Bad vertex buffer draw range: [" << start << ", " << end << "] vs " << mRequestedNumVerts << llendl;
+		llerrs << "Bad vertex buffer draw range: [" << start << ", " << end << "] vs " << mNumVerts << llendl;
 	}
 
-	llassert(mRequestedNumIndices >= 0);
+	llassert(mNumIndices >= 0);
 
-	if (indices_offset >= (U32) mRequestedNumIndices ||
-	    indices_offset + count > (U32) mRequestedNumIndices)
+	if (indices_offset >= (U32) mNumIndices ||
+	    indices_offset + count > (U32) mNumIndices)
 	{
 		llerrs << "Bad index buffer draw range: [" << indices_offset << ", " << indices_offset+count << "]" << llendl;
 	}
@@ -336,23 +523,66 @@ void LLVertexBuffer::validateRange(U32 start, U32 end, U32 count, U32 indices_of
 				llerrs << "Index out of range: " << idx[i] << " not in [" << start << ", " << end << "]" << llendl;
 			}
 		}
+
+		LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+
+		if (shader && shader->mFeatures.mIndexedTextureChannels > 1)
+		{
+			LLStrider<LLVector4a> v;
+			//hack to get non-const reference
+			LLVertexBuffer* vb = (LLVertexBuffer*) this;
+			vb->getVertexStrider(v);
+
+			for (U32 i = start; i < end; i++)
+			{
+				S32 idx = (S32) (v[i][3]+0.25f);
+				if (idx < 0 || idx >= shader->mFeatures.mIndexedTextureChannels)
+				{
+					llerrs << "Bad texture index found in vertex data stream." << llendl;
+				}
+			}
+		}
 	}
 }
 
 void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indices_offset) const
 {
 	validateRange(start, end, count, indices_offset);
+	mMappable = FALSE;
+	gGL.syncMatrices();
 
-	llassert(mRequestedNumVerts >= 0);
+	llassert(mNumVerts >= 0);
+	llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShaderPtr != NULL);
 
-	if (mGLIndices != sGLRenderIndices)
+	if (mGLArray)
+	{
+		if (mGLArray != sGLRenderArray)
+		{
+			llerrs << "Wrong vertex array bound." << llendl;
+		}
+	}
+	else
 	{
-		llerrs << "Wrong index buffer bound." << llendl;
+		if (mGLIndices != sGLRenderIndices)
+		{
+			llerrs << "Wrong index buffer bound." << llendl;
+		}
+
+		if (mGLBuffer != sGLRenderBuffer)
+		{
+			llerrs << "Wrong vertex buffer bound." << llendl;
+		}
 	}
 
-	if (mGLBuffer != sGLRenderBuffer)
+	if (gDebugGL && !mGLArray && useVBOs())
 	{
-		llerrs << "Wrong vertex buffer bound." << llendl;
+		GLint elem = 0;
+		glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &elem);
+
+		if (elem != mGLIndices)
+		{
+			llerrs << "Wrong index buffer bound!" << llendl;
+		}
 	}
 
 	if (mode >= LLRender::NUM_MODES)
@@ -372,21 +602,35 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi
 
 void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const
 {
-	llassert(mRequestedNumIndices >= 0);
-	if (indices_offset >= (U32) mRequestedNumIndices ||
-	    indices_offset + count > (U32) mRequestedNumIndices)
+	llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShaderPtr != NULL);
+	mMappable = FALSE;
+	gGL.syncMatrices();
+
+	llassert(mNumIndices >= 0);
+	if (indices_offset >= (U32) mNumIndices ||
+	    indices_offset + count > (U32) mNumIndices)
 	{
 		llerrs << "Bad index buffer draw range: [" << indices_offset << ", " << indices_offset+count << "]" << llendl;
 	}
 
-	if (mGLIndices != sGLRenderIndices)
+	if (mGLArray)
 	{
-		llerrs << "Wrong index buffer bound." << llendl;
+		if (mGLArray != sGLRenderArray)
+		{
+			llerrs << "Wrong vertex array bound." << llendl;
+		}
 	}
-
-	if (mGLBuffer != sGLRenderBuffer)
+	else
 	{
-		llerrs << "Wrong vertex buffer bound." << llendl;
+		if (mGLIndices != sGLRenderIndices)
+		{
+			llerrs << "Wrong index buffer bound." << llendl;
+		}
+
+		if (mGLBuffer != sGLRenderBuffer)
+		{
+			llerrs << "Wrong vertex buffer bound." << llendl;
+		}
 	}
 
 	if (mode >= LLRender::NUM_MODES)
@@ -404,16 +648,30 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const
 
 void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const
 {
-	llassert(mRequestedNumVerts >= 0);
-	if (first >= (U32) mRequestedNumVerts ||
-	    first + count > (U32) mRequestedNumVerts)
+	llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShaderPtr != NULL);
+	mMappable = FALSE;
+	gGL.syncMatrices();
+	
+	llassert(mNumVerts >= 0);
+	if (first >= (U32) mNumVerts ||
+	    first + count > (U32) mNumVerts)
 	{
 		llerrs << "Bad vertex buffer draw range: [" << first << ", " << first+count << "]" << llendl;
 	}
 
-	if (mGLBuffer != sGLRenderBuffer || useVBOs() != sVBOActive)
+	if (mGLArray)
+	{
+		if (mGLArray != sGLRenderArray)
+		{
+			llerrs << "Wrong vertex array bound." << llendl;
+		}
+	}
+	else
 	{
-		llerrs << "Wrong vertex buffer bound." << llendl;
+		if (mGLBuffer != sGLRenderBuffer || useVBOs() != sVBOActive)
+		{
+			llerrs << "Wrong vertex buffer bound." << llendl;
+		}
 	}
 
 	if (mode >= LLRender::NUM_MODES)
@@ -432,28 +690,37 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const
 void LLVertexBuffer::initClass(bool use_vbo, bool no_vbo_mapping)
 {
 	sEnableVBOs = use_vbo && gGLManager.mHasVertexBufferObject ;
-	if(sEnableVBOs)
-	{
-		//llassert_always(glBindBufferARB) ; //double check the extention for VBO is loaded.
-
-		llinfos << "VBO is enabled." << llendl ;
-	}
-	else
-	{
-		llinfos << "VBO is disabled." << llendl ;
-	}
-
 	sDisableVBOMapping = sEnableVBOs && no_vbo_mapping ;
 
 	if(!sPrivatePoolp)
-	{
+	{ 
 		sPrivatePoolp = LLPrivateMemoryPoolManager::getInstance()->newPool(LLPrivateMemoryPool::STATIC) ;
 	}
+
+	sStreamVBOPool.mType = GL_ARRAY_BUFFER_ARB;
+	sStreamVBOPool.mUsage= GL_STREAM_DRAW_ARB;
+	sStreamIBOPool.mType = GL_ELEMENT_ARRAY_BUFFER_ARB;
+	sStreamIBOPool.mUsage= GL_STREAM_DRAW_ARB;
+
+	sDynamicVBOPool.mType = GL_ARRAY_BUFFER_ARB;
+	sDynamicVBOPool.mUsage= GL_DYNAMIC_DRAW_ARB;
+	sDynamicIBOPool.mType = GL_ELEMENT_ARRAY_BUFFER_ARB;
+	sDynamicIBOPool.mUsage= GL_DYNAMIC_DRAW_ARB;
 }
 
 //static 
 void LLVertexBuffer::unbind()
 {
+	if (sGLRenderArray)
+	{
+#if GL_ARB_vertex_array_object
+		glBindVertexArray(0);
+#endif
+		sGLRenderArray = 0;
+		sGLRenderIndices = 0;
+		sIBOActive = FALSE;
+	}
+
 	if (sVBOActive)
 	{
 		glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
@@ -476,7 +743,11 @@ void LLVertexBuffer::cleanupClass()
 {
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_CLEANUP_CLASS);
 	unbind();
-	clientCopy(); // deletes GL buffers
+	
+	sStreamIBOPool.cleanup();
+	sDynamicIBOPool.cleanup();
+	sStreamVBOPool.cleanup();
+	sDynamicVBOPool.cleanup();
 
 	if(sPrivatePoolp)
 	{
@@ -485,15 +756,6 @@ void LLVertexBuffer::cleanupClass()
 	}
 }
 
-void LLVertexBuffer::clientCopy(F64 max_time)
-{
-	if (!sDeleteList.empty())
-	{
-		glDeleteBuffersARB(sDeleteList.size(), (GLuint*) &(sDeleteList[0]));
-		sDeleteList.clear();
-	}
-}
-
 //----------------------------------------------------------------------------
 
 LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :
@@ -501,20 +763,16 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :
 
 	mNumVerts(0),
 	mNumIndices(0),
-	mRequestedNumVerts(-1),
-	mRequestedNumIndices(-1),
 	mUsage(usage),
 	mGLBuffer(0),
+	mGLArray(0),
 	mGLIndices(0), 
 	mMappedData(NULL),
 	mMappedIndexData(NULL), 
 	mVertexLocked(FALSE),
 	mIndexLocked(FALSE),
 	mFinal(FALSE),
-	mFilthy(FALSE),
 	mEmpty(TRUE),
-	mResized(FALSE),
-	mDynamicSize(FALSE),
 	mFence(NULL)
 {
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_CONSTRUCTOR);
@@ -534,6 +792,33 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :
 		mUsage = GL_STREAM_DRAW_ARB;
 	}
 
+	if (mUsage == 0 && LLRender::sGLCoreProfile)
+	{ //MUST use VBOs for all rendering
+		mUsage = GL_STREAM_DRAW_ARB;
+	}
+
+	if (mUsage && mUsage != GL_STREAM_DRAW_ARB)
+	{ //only stream_draw and dynamic_draw are supported when using VBOs, dynamic draw is the default
+		if (sDisableVBOMapping)
+		{ //always use stream draw if VBO mapping is disabled
+			mUsage = GL_STREAM_DRAW_ARB;
+		}
+		else
+		{
+			mUsage = GL_DYNAMIC_DRAW_ARB;
+		}
+	}
+	
+
+	if (mUsage == GL_DYNAMIC_DRAW_ARB && !sDisableVBOMapping)
+	{
+		mMappable = TRUE;
+	}
+	else
+	{
+		mMappable = FALSE;
+	}
+
 	//zero out offsets
 	for (U32 i = 0; i < TYPE_MAX; i++)
 	{
@@ -542,6 +827,7 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :
 
 	mTypeMask = typemask;
 	mSize = 0;
+	mIndicesSize = 0;
 	mAlignedOffset = 0;
 	mAlignedIndexOffset = 0;
 
@@ -552,12 +838,12 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) :
 S32 LLVertexBuffer::calcOffsets(const U32& typemask, S32* offsets, S32 num_vertices)
 {
 	S32 offset = 0;
-	for (S32 i=0; i<TYPE_MAX; i++)
+	for (S32 i=0; i<TYPE_TEXTURE_INDEX; i++)
 	{
 		U32 mask = 1<<i;
 		if (typemask & mask)
 		{
-			if (offsets)
+			if (offsets && LLVertexBuffer::sTypeSize[i])
 			{
 				offsets[i] = offset;
 				offset += LLVertexBuffer::sTypeSize[i]*num_vertices;
@@ -566,6 +852,8 @@ S32 LLVertexBuffer::calcOffsets(const U32& typemask, S32* offsets, S32 num_verti
 		}
 	}
 
+	offsets[TYPE_TEXTURE_INDEX] = offsets[TYPE_VERTEX] + 12;
+	
 	return offset+16;
 }
 
@@ -573,7 +861,7 @@ S32 LLVertexBuffer::calcOffsets(const U32& typemask, S32* offsets, S32 num_verti
 S32 LLVertexBuffer::calcVertexSize(const U32& typemask)
 {
 	S32 size = 0;
-	for (S32 i = 0; i < TYPE_MAX; i++)
+	for (S32 i = 0; i < TYPE_TEXTURE_INDEX; i++)
 	{
 		U32 mask = 1<<i;
 		if (typemask & mask)
@@ -597,6 +885,14 @@ LLVertexBuffer::~LLVertexBuffer()
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_DESTRUCTOR);
 	destroyGLBuffer();
 	destroyGLIndices();
+
+	if (mGLArray)
+	{
+#if GL_ARB_vertex_array_object
+		glDeleteVertexArrays(1, &mGLArray);
+#endif
+	}
+
 	sCount--;
 
 	if (mFence)
@@ -635,39 +931,35 @@ void LLVertexBuffer::waitFence() const
 
 //----------------------------------------------------------------------------
 
-void LLVertexBuffer::genBuffer()
+void LLVertexBuffer::genBuffer(U32 size)
 {
+	mSize = nhpo2(size);
+
 	if (mUsage == GL_STREAM_DRAW_ARB)
 	{
-		mGLBuffer = sStreamVBOPool.allocate();
-	}
-	else if (mUsage == GL_DYNAMIC_DRAW_ARB)
-	{
-		mGLBuffer = sDynamicVBOPool.allocate();
+		mMappedData = sStreamVBOPool.allocate(mGLBuffer, mSize);
 	}
 	else
 	{
-		BOOST_STATIC_ASSERT(sizeof(mGLBuffer) == sizeof(GLuint));
-		glGenBuffersARB(1, (GLuint*)&mGLBuffer);
+		mMappedData = sDynamicVBOPool.allocate(mGLBuffer, mSize);
 	}
+	
 	sGLCount++;
 }
 
-void LLVertexBuffer::genIndices()
+void LLVertexBuffer::genIndices(U32 size)
 {
+	mIndicesSize = nhpo2(size);
+
 	if (mUsage == GL_STREAM_DRAW_ARB)
 	{
-		mGLIndices = sStreamIBOPool.allocate();
-	}
-	else if (mUsage == GL_DYNAMIC_DRAW_ARB)
-	{
-		mGLIndices = sDynamicIBOPool.allocate();
+		mMappedIndexData = sStreamIBOPool.allocate(mGLIndices, mIndicesSize);
 	}
 	else
 	{
-		BOOST_STATIC_ASSERT(sizeof(mGLBuffer) == sizeof(GLuint));
-		glGenBuffersARB(1, (GLuint*)&mGLIndices);
+		mMappedIndexData = sDynamicIBOPool.allocate(mGLIndices, mIndicesSize);
 	}
+	
 	sGLCount++;
 }
 
@@ -675,16 +967,16 @@ void LLVertexBuffer::releaseBuffer()
 {
 	if (mUsage == GL_STREAM_DRAW_ARB)
 	{
-		sStreamVBOPool.release(mGLBuffer);
-	}
-	else if (mUsage == GL_DYNAMIC_DRAW_ARB)
-	{
-		sDynamicVBOPool.release(mGLBuffer);
+		sStreamVBOPool.release(mGLBuffer, mMappedData, mSize);
 	}
 	else
 	{
-		sDeleteList.push_back(mGLBuffer);
+		sDynamicVBOPool.release(mGLBuffer, mMappedData, mSize);
 	}
+	
+	mGLBuffer = 0;
+	mMappedData = NULL;
+
 	sGLCount--;
 }
 
@@ -692,24 +984,23 @@ void LLVertexBuffer::releaseIndices()
 {
 	if (mUsage == GL_STREAM_DRAW_ARB)
 	{
-		sStreamIBOPool.release(mGLIndices);
-	}
-	else if (mUsage == GL_DYNAMIC_DRAW_ARB)
-	{
-		sDynamicIBOPool.release(mGLIndices);
+		sStreamIBOPool.release(mGLIndices, mMappedIndexData, mIndicesSize);
 	}
 	else
 	{
-		sDeleteList.push_back(mGLIndices);
+		sDynamicIBOPool.release(mGLIndices, mMappedIndexData, mIndicesSize);
 	}
+
+	mGLIndices = 0;
+	mMappedIndexData = NULL;
+	
 	sGLCount--;
 }
 
-void LLVertexBuffer::createGLBuffer()
+void LLVertexBuffer::createGLBuffer(U32 size)
 {
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_CREATE_VERTICES);
 	
-	U32 size = getSize();
 	if (mGLBuffer)
 	{
 		destroyGLBuffer();
@@ -724,23 +1015,21 @@ void LLVertexBuffer::createGLBuffer()
 
 	if (useVBOs())
 	{
-		mMappedData = NULL;
-		genBuffer();
-		mResized = TRUE;
+		genBuffer(size);
 	}
 	else
 	{
 		static int gl_buffer_idx = 0;
 		mGLBuffer = ++gl_buffer_idx;
 		mMappedData = (U8*)ALLOCATE_MEM(sPrivatePoolp, size);
+		mSize = size;
 	}
 }
 
-void LLVertexBuffer::createGLIndices()
+void LLVertexBuffer::createGLIndices(U32 size)
 {
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_CREATE_INDICES);
-	U32 size = getIndicesSize();
-
+	
 	if (mGLIndices)
 	{
 		destroyGLIndices();
@@ -760,15 +1049,14 @@ void LLVertexBuffer::createGLIndices()
 	{
 		//pad by another 16 bytes for VBO pointer adjustment
 		size += 16;
-		mMappedIndexData = NULL;
-		genIndices();
-		mResized = TRUE;
+		genIndices(size);
 	}
 	else
 	{
 		mMappedIndexData = (U8*)ALLOCATE_MEM(sPrivatePoolp, size);
 		static int gl_buffer_idx = 0;
 		mGLIndices = ++gl_buffer_idx;
+		mIndicesSize = size;
 	}
 }
 
@@ -779,22 +1067,14 @@ void LLVertexBuffer::destroyGLBuffer()
 	{
 		if (useVBOs())
 		{
-			freeClientBuffer() ;
-
-			if (mMappedData || mMappedIndexData)
-			{
-				llerrs << "Vertex buffer destroyed while mapped!" << llendl;
-			}
 			releaseBuffer();
 		}
 		else
 		{
-			FREE_MEM(sPrivatePoolp, mMappedData) ;
+			FREE_MEM(sPrivatePoolp, (void*) mMappedData) ;
 			mMappedData = NULL;
 			mEmpty = TRUE;
 		}
-
-		sAllocatedBytes -= getSize();
 	}
 	
 	mGLBuffer = 0;
@@ -808,22 +1088,14 @@ void LLVertexBuffer::destroyGLIndices()
 	{
 		if (useVBOs())
 		{
-			freeClientBuffer() ;
-
-			if (mMappedData || mMappedIndexData)
-			{
-				llerrs << "Vertex buffer destroyed while mapped." << llendl;
-			}
 			releaseIndices();
 		}
 		else
 		{
-			FREE_MEM(sPrivatePoolp, mMappedIndexData) ;
+			FREE_MEM(sPrivatePoolp, (void*) mMappedIndexData) ;
 			mMappedIndexData = NULL;
 			mEmpty = TRUE;
 		}
-
-		sAllocatedBytes -= getIndicesSize();
 	}
 
 	mGLIndices = 0;
@@ -842,23 +1114,14 @@ void LLVertexBuffer::updateNumVerts(S32 nverts)
 		nverts = 65535;
 	}
 
-	mRequestedNumVerts = nverts;
+	U32 needed_size = calcOffsets(mTypeMask, mOffsets, nverts);
 
-	if (!mDynamicSize)
+	if (needed_size > mSize || needed_size <= mSize/2)
 	{
-		mNumVerts = nverts;
+		createGLBuffer(needed_size);
 	}
-	else if (mUsage == GL_STATIC_DRAW_ARB ||
-		nverts > mNumVerts ||
-		nverts < mNumVerts/2)
-	{
-		if (mUsage != GL_STATIC_DRAW_ARB && nverts + nverts/4 <= 65535)
-		{
-			nverts += nverts/4;
-		}
-		mNumVerts = nverts;
-	}
-	mSize = calcOffsets(mTypeMask, mOffsets, mNumVerts);
+
+	mNumVerts = nverts;
 }
 
 void LLVertexBuffer::updateNumIndices(S32 nindices)
@@ -867,28 +1130,22 @@ void LLVertexBuffer::updateNumIndices(S32 nindices)
 
 	llassert(nindices >= 0);
 
-	mRequestedNumIndices = nindices;
-	if (!mDynamicSize)
+	U32 needed_size = sizeof(U16) * nindices;
+
+	if (needed_size > mIndicesSize || needed_size <= mIndicesSize/2)
 	{
-		mNumIndices = nindices;
+		createGLIndices(needed_size);
 	}
-	else if (mUsage == GL_STATIC_DRAW_ARB ||
-		nindices > mNumIndices ||
-		nindices < mNumIndices/2)
-	{
-		if (mUsage != GL_STATIC_DRAW_ARB)
-		{
-			nindices += nindices/4;
-		}
 
-		mNumIndices = nindices;
-	}
+	mNumIndices = nindices;
 }
 
 void LLVertexBuffer::allocateBuffer(S32 nverts, S32 nindices, bool create)
 {
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_ALLOCATE_BUFFER);
-		
+	
+	stop_glerror();
+
 	if (nverts < 0 || nindices < 0 ||
 		nverts > 65536)
 	{
@@ -898,96 +1155,127 @@ void LLVertexBuffer::allocateBuffer(S32 nverts, S32 nindices, bool create)
 	updateNumVerts(nverts);
 	updateNumIndices(nindices);
 	
-	if (mMappedData)
-	{
-		llerrs << "LLVertexBuffer::allocateBuffer() called redundantly." << llendl;
-	}
 	if (create && (nverts || nindices))
 	{
-		createGLBuffer();
-		createGLIndices();
+		//actually allocate space for the vertex buffer if using VBO mapping
+		flush();
+
+		if (gGLManager.mHasVertexArrayObject && useVBOs() && (LLRender::sGLCoreProfile || sUseVAO))
+		{
+#if GL_ARB_vertex_array_object
+			glGenVertexArrays(1, &mGLArray);
+#endif
+			setupVertexArray();
+		}
 	}
-	
-	sAllocatedBytes += getSize() + getIndicesSize();
 }
 
-void LLVertexBuffer::resizeBuffer(S32 newnverts, S32 newnindices)
-{
-	llassert(newnverts >= 0);
-	llassert(newnindices >= 0);
+static LLFastTimer::DeclareTimer FTM_SETUP_VERTEX_ARRAY("Setup VAO");
 
-	mRequestedNumVerts = newnverts;
-	mRequestedNumIndices = newnindices;
-
-	LLMemType mt2(LLMemType::MTYPE_VERTEX_RESIZE_BUFFER);
-	mDynamicSize = TRUE;
-	if (mUsage == GL_STATIC_DRAW_ARB)
-	{ //always delete/allocate static buffers on resize
-		destroyGLBuffer();
-		destroyGLIndices();
-		allocateBuffer(newnverts, newnindices, TRUE);
-		mFinal = FALSE;
-	}
-	else if (newnverts > mNumVerts || newnindices > mNumIndices ||
-			 newnverts < mNumVerts/2 || newnindices < mNumIndices/2)
+void LLVertexBuffer::setupVertexArray()
+{
+	if (!mGLArray)
 	{
-		sAllocatedBytes -= getSize() + getIndicesSize();
-		
-		updateNumVerts(newnverts);		
-		updateNumIndices(newnindices);
-		
-		S32 newsize = getSize();
-		S32 new_index_size = getIndicesSize();
-
-		sAllocatedBytes += newsize + new_index_size;
+		return;
+	}
 
-		if (newsize)
-		{
-			if (!mGLBuffer)
-			{ //no buffer exists, create a new one
-				createGLBuffer();
-			}
-			else
-			{
-				if (!useVBOs())
-				{
-					FREE_MEM(sPrivatePoolp, mMappedData);
-					mMappedData = (U8*)ALLOCATE_MEM(sPrivatePoolp, newsize);
-				}
-				mResized = TRUE;
-			}
-		}
-		else if (mGLBuffer)
-		{
-			destroyGLBuffer();
-		}
-		
-		if (new_index_size)
+	LLFastTimer t(FTM_SETUP_VERTEX_ARRAY);
+#if GL_ARB_vertex_array_object
+	glBindVertexArray(mGLArray);
+#endif
+	sGLRenderArray = mGLArray;
+
+	U32 attrib_size[] = 
+	{
+		3, //TYPE_VERTEX,
+		3, //TYPE_NORMAL,
+		2, //TYPE_TEXCOORD0,
+		2, //TYPE_TEXCOORD1,
+		2, //TYPE_TEXCOORD2,
+		2, //TYPE_TEXCOORD3,
+		4, //TYPE_COLOR,
+		4, //TYPE_EMISSIVE,
+		3, //TYPE_BINORMAL,
+		1, //TYPE_WEIGHT,
+		4, //TYPE_WEIGHT4,
+		4, //TYPE_CLOTHWEIGHT,
+		1, //TYPE_TEXTURE_INDEX
+	};
+
+	U32 attrib_type[] =
+	{
+		GL_FLOAT, //TYPE_VERTEX,
+		GL_FLOAT, //TYPE_NORMAL,
+		GL_FLOAT, //TYPE_TEXCOORD0,
+		GL_FLOAT, //TYPE_TEXCOORD1,
+		GL_FLOAT, //TYPE_TEXCOORD2,
+		GL_FLOAT, //TYPE_TEXCOORD3,
+		GL_UNSIGNED_BYTE, //TYPE_COLOR,
+		GL_UNSIGNED_BYTE, //TYPE_EMISSIVE,
+		GL_FLOAT,   //TYPE_BINORMAL,
+		GL_FLOAT, //TYPE_WEIGHT,
+		GL_FLOAT, //TYPE_WEIGHT4,
+		GL_FLOAT, //TYPE_CLOTHWEIGHT,
+		GL_FLOAT, //TYPE_TEXTURE_INDEX
+	};
+
+	U32 attrib_normalized[] =
+	{
+		GL_FALSE, //TYPE_VERTEX,
+		GL_FALSE, //TYPE_NORMAL,
+		GL_FALSE, //TYPE_TEXCOORD0,
+		GL_FALSE, //TYPE_TEXCOORD1,
+		GL_FALSE, //TYPE_TEXCOORD2,
+		GL_FALSE, //TYPE_TEXCOORD3,
+		GL_TRUE, //TYPE_COLOR,
+		GL_TRUE, //TYPE_EMISSIVE,
+		GL_FALSE,   //TYPE_BINORMAL,
+		GL_FALSE, //TYPE_WEIGHT,
+		GL_FALSE, //TYPE_WEIGHT4,
+		GL_FALSE, //TYPE_CLOTHWEIGHT,
+		GL_FALSE, //TYPE_TEXTURE_INDEX
+	};
+
+	bindGLBuffer(true);
+	bindGLIndices(true);
+
+	for (U32 i = 0; i < TYPE_MAX; ++i)
+	{
+		if (mTypeMask & (1 << i))
 		{
-			if (!mGLIndices)
-			{
-				createGLIndices();
-			}
-			else
-			{
-				if (!useVBOs())
-				{
-					FREE_MEM(sPrivatePoolp, mMappedIndexData) ;
-					mMappedIndexData = (U8*)ALLOCATE_MEM(sPrivatePoolp, new_index_size);
-				}
-				mResized = TRUE;
-			}
+			glEnableVertexAttribArrayARB(i);
+			glVertexAttribPointerARB(i, attrib_size[i], attrib_type[i], attrib_normalized[i], sTypeSize[i], (void*) mOffsets[i]); 
 		}
-		else if (mGLIndices)
+		else
 		{
-			destroyGLIndices();
+			glDisableVertexAttribArrayARB(i);
 		}
 	}
 
-	if (mResized && useVBOs())
+	//draw a dummy triangle to set index array pointer
+	//glDrawElements(GL_TRIANGLES, 0, GL_UNSIGNED_SHORT, NULL);
+
+	unbind();
+}
+
+void LLVertexBuffer::resizeBuffer(S32 newnverts, S32 newnindices)
+{
+	llassert(newnverts >= 0);
+	llassert(newnindices >= 0);
+
+	LLMemType mt2(LLMemType::MTYPE_VERTEX_RESIZE_BUFFER);
+	
+	updateNumVerts(newnverts);		
+	updateNumIndices(newnindices);
+	
+	if (useVBOs())
 	{
-		freeClientBuffer() ;
-		setBuffer(0);
+		flush();
+
+		if (mGLArray)
+		{ //if size changed, offsets changed
+			setupVertexArray();
+		}
 	}
 }
 
@@ -1004,32 +1292,6 @@ BOOL LLVertexBuffer::useVBOs() const
 }
 
 //----------------------------------------------------------------------------
-void LLVertexBuffer::freeClientBuffer()
-{
-	if(useVBOs() && sDisableVBOMapping && (mMappedData || mMappedIndexData))
-	{
-		FREE_MEM(sPrivatePoolp, mMappedData) ;
-		FREE_MEM(sPrivatePoolp, mMappedIndexData) ;
-		mMappedData = NULL ;
-		mMappedIndexData = NULL ;
-	}
-}
-
-void LLVertexBuffer::allocateClientVertexBuffer()
-{
-	if(!mMappedData)
-	{
-		mMappedData = (U8*)ALLOCATE_MEM(sPrivatePoolp, getSize());
-	}
-}
-
-void LLVertexBuffer::allocateClientIndexBuffer()
-{
-	if(!mMappedIndexData)
-	{
-		mMappedIndexData = (U8*)ALLOCATE_MEM(sPrivatePoolp, getIndicesSize());		
-	}
-}
 
 bool expand_region(LLVertexBuffer::MappedRegion& region, S32 index, S32 count)
 {
@@ -1049,9 +1311,13 @@ bool expand_region(LLVertexBuffer::MappedRegion& region, S32 index, S32 count)
 	return true;
 }
 
+static LLFastTimer::DeclareTimer FTM_VBO_MAP_BUFFER_RANGE("VBO Map Range");
+static LLFastTimer::DeclareTimer FTM_VBO_MAP_BUFFER("VBO Map");
+
 // Map for data access
-U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_range)
+volatile U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_range)
 {
+	bindGLBuffer(true);
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_MAP_BUFFER);
 	if (mFinal)
 	{
@@ -1064,7 +1330,7 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran
 		
 	if (useVBOs())
 	{
-		if (sDisableVBOMapping || gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange)
+		if (!mMappable || gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange)
 		{
 			if (count == -1)
 			{
@@ -1089,7 +1355,7 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran
 			if (!mapped)
 			{
 				//not already mapped, map new region
-				MappedRegion region(type, !sDisableVBOMapping && map_range ? -1 : index, count);
+				MappedRegion region(type, mMappable && map_range ? -1 : index, count);
 				mMappedVertexRegions.push_back(region);
 			}
 		}
@@ -1102,25 +1368,24 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran
 		if (!mVertexLocked)
 		{
 			LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_VERTICES);
-			setBuffer(0, type);
 			mVertexLocked = TRUE;
 			sMappedCount++;
 			stop_glerror();	
 
-			if(sDisableVBOMapping)
+			if(!mMappable)
 			{
 				map_range = false;
-				allocateClientVertexBuffer() ;
 			}
 			else
 			{
-				U8* src = NULL;
+				volatile U8* src = NULL;
 				waitFence();
 				if (gGLManager.mHasMapBufferRange)
 				{
 					if (map_range)
 					{
 #ifdef GL_ARB_map_buffer_range
+						LLFastTimer t(FTM_VBO_MAP_BUFFER_RANGE);
 						S32 offset = mOffsets[type] + sTypeSize[type]*index;
 						S32 length = (sTypeSize[type]*count+0xF) & ~0xF;
 						src = (U8*) glMapBufferRange(GL_ARRAY_BUFFER_ARB, offset, length, 
@@ -1132,6 +1397,19 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran
 					else
 					{
 #ifdef GL_ARB_map_buffer_range
+
+						if (gDebugGL)
+						{
+							GLint size = 0;
+							glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &size);
+
+							if (size < mSize)
+							{
+								llerrs << "Invalid buffer size." << llendl;
+							}
+						}
+
+						LLFastTimer t(FTM_VBO_MAP_BUFFER);
 						src = (U8*) glMapBufferRange(GL_ARRAY_BUFFER_ARB, 0, mSize, 
 							GL_MAP_WRITE_BIT | 
 							GL_MAP_FLUSH_EXPLICIT_BIT);
@@ -1159,7 +1437,7 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran
 
 				llassert(src != NULL);
 
-				mMappedData = LL_NEXT_ALIGNED_ADDRESS<U8>(src);
+				mMappedData = LL_NEXT_ALIGNED_ADDRESS<volatile U8>(src);
 				mAlignedOffset = mMappedData - src;
 			
 				stop_glerror();
@@ -1172,7 +1450,7 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran
 			//check the availability of memory
 			LLMemory::logMemoryInfo(TRUE) ; 
 			
-				if(!sDisableVBOMapping)
+				if(mMappable)
 				{			
 					//--------------------
 					//print out more debug info before crash
@@ -1204,7 +1482,7 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran
 		map_range = false;
 	}
 	
-	if (map_range && gGLManager.mHasMapBufferRange && !sDisableVBOMapping)
+	if (map_range && gGLManager.mHasMapBufferRange && mMappable)
 	{
 		return mMappedData;
 	}
@@ -1214,9 +1492,14 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran
 	}
 }
 
-U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
+
+static LLFastTimer::DeclareTimer FTM_VBO_MAP_INDEX_RANGE("IBO Map Range");
+static LLFastTimer::DeclareTimer FTM_VBO_MAP_INDEX("IBO Map");
+
+volatile U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
 {
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_MAP_BUFFER);
+	bindGLIndices(true);
 	if (mFinal)
 	{
 		llerrs << "LLVertexBuffer::mapIndexBuffer() called on a finalized buffer." << llendl;
@@ -1228,7 +1511,7 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
 
 	if (useVBOs())
 	{
-		if (sDisableVBOMapping || gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange)
+		if (!mMappable || gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange)
 		{
 			if (count == -1)
 			{
@@ -1250,7 +1533,7 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
 			if (!mapped)
 			{
 				//not already mapped, map new region
-				MappedRegion region(TYPE_INDEX, !sDisableVBOMapping && map_range ? -1 : index, count);
+				MappedRegion region(TYPE_INDEX, mMappable && map_range ? -1 : index, count);
 				mMappedIndexRegions.push_back(region);
 			}
 		}
@@ -1264,25 +1547,35 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
 		{
 			LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_INDICES);
 
-			setBuffer(0, TYPE_INDEX);
 			mIndexLocked = TRUE;
 			sMappedCount++;
 			stop_glerror();	
 
-			if(sDisableVBOMapping)
+			if (gDebugGL && useVBOs())
+			{
+				GLint elem = 0;
+				glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &elem);
+
+				if (elem != mGLIndices)
+				{
+					llerrs << "Wrong index buffer bound!" << llendl;
+				}
+			}
+
+			if(!mMappable)
 			{
 				map_range = false;
-				allocateClientIndexBuffer() ;
 			}
 			else
 			{
-				U8* src = NULL;
+				volatile U8* src = NULL;
 				waitFence();
 				if (gGLManager.mHasMapBufferRange)
 				{
 					if (map_range)
 					{
 #ifdef GL_ARB_map_buffer_range
+						LLFastTimer t(FTM_VBO_MAP_INDEX_RANGE);
 						S32 offset = sizeof(U16)*index;
 						S32 length = sizeof(U16)*count;
 						src = (U8*) glMapBufferRange(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length, 
@@ -1294,6 +1587,7 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
 					else
 					{
 #ifdef GL_ARB_map_buffer_range
+						LLFastTimer t(FTM_VBO_MAP_INDEX);
 						src = (U8*) glMapBufferRange(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, sizeof(U16)*mNumIndices, 
 							GL_MAP_WRITE_BIT | 
 							GL_MAP_FLUSH_EXPLICIT_BIT);
@@ -1315,6 +1609,7 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
 				}
 				else
 				{
+					LLFastTimer t(FTM_VBO_MAP_INDEX);
 					map_range = false;
 					src = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
 				}
@@ -1333,7 +1628,7 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
 			log_glerror();
 			LLMemory::logMemoryInfo(TRUE) ;
 
-			if(!sDisableVBOMapping)
+			if(mMappable)
 			{
 				GLint buff;
 				glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff);
@@ -1355,7 +1650,7 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
 		map_range = false;
 	}
 
-	if (map_range && gGLManager.mHasMapBufferRange && !sDisableVBOMapping)
+	if (map_range && gGLManager.mHasMapBufferRange && mMappable)
 	{
 		return mMappedIndexData;
 	}
@@ -1365,21 +1660,30 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range)
 	}
 }
 
-void LLVertexBuffer::unmapBuffer(S32 type)
+static LLFastTimer::DeclareTimer FTM_VBO_UNMAP("VBO Unmap");
+static LLFastTimer::DeclareTimer FTM_VBO_FLUSH_RANGE("Flush VBO Range");
+
+
+static LLFastTimer::DeclareTimer FTM_IBO_UNMAP("IBO Unmap");
+static LLFastTimer::DeclareTimer FTM_IBO_FLUSH_RANGE("Flush IBO Range");
+
+void LLVertexBuffer::unmapBuffer()
 {
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_UNMAP_BUFFER);
-	if (!useVBOs() || type == -2)
+	if (!useVBOs())
 	{
 		return ; //nothing to unmap
 	}
 
 	bool updated_all = false ;
 
-	if (mMappedData && mVertexLocked && type != TYPE_INDEX)
+	if (mMappedData && mVertexLocked)
 	{
-		updated_all = (mIndexLocked && type < 0) ; //both vertex and index buffers done updating
+		LLFastTimer t(FTM_VBO_UNMAP);
+		bindGLBuffer(true);
+		updated_all = mIndexLocked; //both vertex and index buffers done updating
 
-		if(sDisableVBOMapping)
+		if(!mMappable)
 		{
 			if (!mMappedVertexRegions.empty())
 			{
@@ -1389,7 +1693,7 @@ void LLVertexBuffer::unmapBuffer(S32 type)
 					const MappedRegion& region = mMappedVertexRegions[i];
 					S32 offset = region.mIndex >= 0 ? mOffsets[region.mType]+sTypeSize[region.mType]*region.mIndex : 0;
 					S32 length = sTypeSize[region.mType]*region.mCount;
-					glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, offset, length, mMappedData+offset);
+					glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, offset, length, (U8*) mMappedData+offset);
 					stop_glerror();
 				}
 
@@ -1398,7 +1702,7 @@ void LLVertexBuffer::unmapBuffer(S32 type)
 			else
 			{
 				stop_glerror();
-				glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, getSize(), mMappedData);
+				glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, getSize(), (U8*) mMappedData);
 				stop_glerror();
 			}
 		}
@@ -1416,6 +1720,7 @@ void LLVertexBuffer::unmapBuffer(S32 type)
 						S32 length = sTypeSize[region.mType]*region.mCount;
 						if (gGLManager.mHasMapBufferRange)
 						{
+							LLFastTimer t(FTM_VBO_FLUSH_RANGE);
 #ifdef GL_ARB_map_buffer_range
 							glFlushMappedBufferRange(GL_ARRAY_BUFFER_ARB, offset, length);
 #endif
@@ -1441,9 +1746,11 @@ void LLVertexBuffer::unmapBuffer(S32 type)
 		sMappedCount--;
 	}
 	
-	if (mMappedIndexData && mIndexLocked && (type < 0 || type == TYPE_INDEX))
+	if (mMappedIndexData && mIndexLocked)
 	{
-		if(sDisableVBOMapping)
+		LLFastTimer t(FTM_IBO_UNMAP);
+		bindGLIndices();
+		if(!mMappable)
 		{
 			if (!mMappedIndexRegions.empty())
 			{
@@ -1452,7 +1759,7 @@ void LLVertexBuffer::unmapBuffer(S32 type)
 					const MappedRegion& region = mMappedIndexRegions[i];
 					S32 offset = region.mIndex >= 0 ? sizeof(U16)*region.mIndex : 0;
 					S32 length = sizeof(U16)*region.mCount;
-					glBufferSubDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length, mMappedIndexData+offset);
+					glBufferSubDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length, (U8*) mMappedIndexData+offset);
 					stop_glerror();
 				}
 
@@ -1461,7 +1768,7 @@ void LLVertexBuffer::unmapBuffer(S32 type)
 			else
 			{
 				stop_glerror();
-				glBufferSubDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, getIndicesSize(), mMappedIndexData);
+				glBufferSubDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, getIndicesSize(), (U8*) mMappedIndexData);
 				stop_glerror();
 			}
 		}
@@ -1478,6 +1785,7 @@ void LLVertexBuffer::unmapBuffer(S32 type)
 						S32 length = sizeof(U16)*region.mCount;
 						if (gGLManager.mHasMapBufferRange)
 						{
+							LLFastTimer t(FTM_IBO_FLUSH_RANGE);
 #ifdef GL_ARB_map_buffer_range
 							glFlushMappedBufferRange(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length);
 #endif
@@ -1507,21 +1815,7 @@ void LLVertexBuffer::unmapBuffer(S32 type)
 
 	if(updated_all)
 	{
-		if(mUsage == GL_STATIC_DRAW_ARB)
-		{
-			//static draw buffers can only be mapped a single time
-			//throw out client data (we won't be using it again)
-			mEmpty = TRUE;
-			mFinal = TRUE;
-			if(sDisableVBOMapping)
-			{
-				freeClientBuffer() ;
-			}
-		}
-		else
-		{
-			mEmpty = FALSE;
-		}
+		mEmpty = FALSE;
 	}
 }
 
@@ -1536,7 +1830,7 @@ template <class T,S32 type> struct VertexBufferStrider
 	{
 		if (type == LLVertexBuffer::TYPE_INDEX)
 		{
-			U8* ptr = vbo.mapIndexBuffer(index, count, map_range);
+			volatile U8* ptr = vbo.mapIndexBuffer(index, count, map_range);
 
 			if (ptr == NULL)
 			{
@@ -1552,7 +1846,7 @@ template <class T,S32 type> struct VertexBufferStrider
 		{
 			S32 stride = LLVertexBuffer::sTypeSize[type];
 
-			U8* ptr = vbo.mapVertexBuffer(type, index, count, map_range);
+			volatile U8* ptr = vbo.mapVertexBuffer(type, index, count, map_range);
 
 			if (ptr == NULL)
 			{
@@ -1576,6 +1870,10 @@ bool LLVertexBuffer::getVertexStrider(LLStrider<LLVector3>& strider, S32 index,
 {
 	return VertexBufferStrider<LLVector3,TYPE_VERTEX>::get(*this, strider, index, count, map_range);
 }
+bool LLVertexBuffer::getVertexStrider(LLStrider<LLVector4a>& strider, S32 index, S32 count, bool map_range)
+{
+	return VertexBufferStrider<LLVector4a,TYPE_VERTEX>::get(*this, strider, index, count, map_range);
+}
 bool LLVertexBuffer::getIndexStrider(LLStrider<U16>& strider, S32 index, S32 count, bool map_range)
 {
 	return VertexBufferStrider<U16,TYPE_INDEX>::get(*this, strider, index, count, map_range);
@@ -1601,6 +1899,10 @@ bool LLVertexBuffer::getColorStrider(LLStrider<LLColor4U>& strider, S32 index, S
 {
 	return VertexBufferStrider<LLColor4U,TYPE_COLOR>::get(*this, strider, index, count, map_range);
 }
+bool LLVertexBuffer::getEmissiveStrider(LLStrider<LLColor4U>& strider, S32 index, S32 count, bool map_range)
+{
+	return VertexBufferStrider<LLColor4U,TYPE_EMISSIVE>::get(*this, strider, index, count, map_range);
+}
 bool LLVertexBuffer::getWeightStrider(LLStrider<F32>& strider, S32 index, S32 count, bool map_range)
 {
 	return VertexBufferStrider<F32,TYPE_WEIGHT>::get(*this, strider, index, count, map_range);
@@ -1618,43 +1920,151 @@ bool LLVertexBuffer::getClothWeightStrider(LLStrider<LLVector4>& strider, S32 in
 
 //----------------------------------------------------------------------------
 
+static LLFastTimer::DeclareTimer FTM_BIND_GL_ARRAY("Bind Array");
+bool LLVertexBuffer::bindGLArray()
+{
+	if (mGLArray && sGLRenderArray != mGLArray)
+	{
+		{
+			LLFastTimer t(FTM_BIND_GL_ARRAY);
+#if GL_ARB_vertex_array_object
+			glBindVertexArray(mGLArray);
+#endif
+			sGLRenderArray = mGLArray;
+		}
+
+		//really shouldn't be necessary, but some drivers don't properly restore the
+		//state of GL_ELEMENT_ARRAY_BUFFER_BINDING
+		bindGLIndices();
+		
+		return true;
+	}
+		
+	return false;
+}
+
+static LLFastTimer::DeclareTimer FTM_BIND_GL_BUFFER("Bind Buffer");
+
+bool LLVertexBuffer::bindGLBuffer(bool force_bind)
+{
+	bindGLArray();
+
+	bool ret = false;
+
+	if (useVBOs() && (force_bind || (mGLBuffer && (mGLBuffer != sGLRenderBuffer || !sVBOActive))))
+	{
+		LLFastTimer t(FTM_BIND_GL_BUFFER);
+		/*if (sMapped)
+		{
+			llerrs << "VBO bound while another VBO mapped!" << llendl;
+		}*/
+		glBindBufferARB(GL_ARRAY_BUFFER_ARB, mGLBuffer);
+		sGLRenderBuffer = mGLBuffer;
+		sBindCount++;
+		sVBOActive = TRUE;
+
+		if (mGLArray)
+		{
+			llassert(sGLRenderArray == mGLArray);
+			//mCachedRenderBuffer = mGLBuffer;
+		}
+
+		ret = true;
+	}
+
+	return ret;
+}
+
+static LLFastTimer::DeclareTimer FTM_BIND_GL_INDICES("Bind Indices");
+
+bool LLVertexBuffer::bindGLIndices(bool force_bind)
+{
+	bindGLArray();
+
+	bool ret = false;
+	if (useVBOs() && (force_bind || (mGLIndices && (mGLIndices != sGLRenderIndices || !sIBOActive))))
+	{
+		LLFastTimer t(FTM_BIND_GL_INDICES);
+		/*if (sMapped)
+		{
+			llerrs << "VBO bound while another VBO mapped!" << llendl;
+		}*/
+		glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, mGLIndices);
+		sGLRenderIndices = mGLIndices;
+		stop_glerror();
+		sBindCount++;
+		sIBOActive = TRUE;
+		ret = true;
+	}
+
+	return ret;
+}
+
+void LLVertexBuffer::flush()
+{
+	if (useVBOs())
+	{
+		unmapBuffer();
+	}
+}
+
 // Set for rendering
-void LLVertexBuffer::setBuffer(U32 data_mask, S32 type)
+void LLVertexBuffer::setBuffer(U32 data_mask)
 {
+	flush();
+
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_SET_BUFFER);
 	//set up pointers if the data mask is different ...
 	BOOL setup = (sLastMask != data_mask);
 
+	if (gDebugGL && data_mask != 0)
+	{ //make sure data requirements are fulfilled
+		LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+		if (shader)
+		{
+			U32 required_mask = 0;
+			for (U32 i = 0; i < LLVertexBuffer::TYPE_TEXTURE_INDEX; ++i)
+			{
+				if (shader->getAttribLocation(i) > -1)
+				{
+					U32 required = 1 << i;
+					if ((data_mask & required) == 0)
+					{
+						llwarns << "Missing attribute: " << LLShaderMgr::instance()->mReservedAttribs[i] << llendl;
+					}
+
+					required_mask |= required;
+				}
+			}
+
+			if ((data_mask & required_mask) != required_mask)
+			{
+				llerrs << "Shader consumption mismatches data provision." << llendl;
+			}
+		}
+	}
+
 	if (useVBOs())
 	{
-		if (mGLBuffer && (mGLBuffer != sGLRenderBuffer || !sVBOActive))
+		if (mGLArray)
 		{
-			/*if (sMapped)
-			{
-				llerrs << "VBO bound while another VBO mapped!" << llendl;
-			}*/
-			stop_glerror();
-			glBindBufferARB(GL_ARRAY_BUFFER_ARB, mGLBuffer);
-			stop_glerror();
-			sBindCount++;
-			sVBOActive = TRUE;
-			setup = TRUE; // ... or the bound buffer changed
+			bindGLArray();
+			setup = FALSE; //do NOT perform pointer setup if using VAO
 		}
-		if (mGLIndices && (mGLIndices != sGLRenderIndices || !sIBOActive))
+		else
 		{
-			/*if (sMapped)
+			if (bindGLBuffer())
 			{
-				llerrs << "VBO bound while another VBO mapped!" << llendl;
-			}*/
-			stop_glerror();
-			glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, mGLIndices);
-			stop_glerror();
-			sBindCount++;
-			sIBOActive = TRUE;
+				setup = TRUE;
+			}
+			if (bindGLIndices())
+			{
+				setup = TRUE;
+			}
 		}
-		
+
 		BOOL error = FALSE;
-		if (gDebugGL)
+		if (gDebugGL && !mGLArray)
 		{
 			GLint buff;
 			glGetIntegerv(GL_ARRAY_BUFFER_BINDING_ARB, &buff);
@@ -1689,81 +2099,20 @@ void LLVertexBuffer::setBuffer(U32 data_mask, S32 type)
 			}
 		}
 
-		if (mResized)
+		
+	}
+	else
+	{	
+		if (sGLRenderArray)
 		{
-			if (gDebugGL)
-			{
-				GLint buff;
-				glGetIntegerv(GL_ARRAY_BUFFER_BINDING_ARB, &buff);
-				if ((GLuint)buff != mGLBuffer)
-				{
-					if (gDebugSession)
-					{
-						error = TRUE;
-						gFailLog << "Invalid GL vertex buffer bound: " << std::endl;
-					}
-					else
-					{
-						llerrs << "Invalid GL vertex buffer bound: " << buff << llendl;
-					}
-				}
-
-				if (mGLIndices != 0)
-				{
-					glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff);
-					if ((GLuint)buff != mGLIndices)
-					{
-						if (gDebugSession)
-						{
-							error = TRUE;
-							gFailLog << "Invalid GL index buffer bound: "<< std::endl;
-						}
-						else
-						{
-							llerrs << "Invalid GL index buffer bound: " << buff << llendl;
-						}
-					}
-				}
-			}
-
-			if (mGLBuffer)
-			{
-				stop_glerror();
-				glBufferDataARB(GL_ARRAY_BUFFER_ARB, getSize(), NULL, mUsage);
-				stop_glerror();
-			}
-			if (mGLIndices)
-			{
-				stop_glerror();
-				glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, getIndicesSize(), NULL, mUsage);
-				stop_glerror();
-			}
-
-			mEmpty = TRUE;
-			mResized = FALSE;
-
-			if (data_mask != 0)
-			{
-				if (gDebugSession)
-				{
-					error = TRUE;
-					gFailLog << "Buffer set for rendering before being filled after resize." << std::endl;
-				}
-				else
-				{
-					llerrs << "Buffer set for rendering before being filled after resize." << llendl;
-				}
-			}
+#if GL_ARB_vertex_array_object
+			glBindVertexArray(0);
+#endif
+			sGLRenderArray = 0;
+			sGLRenderIndices = 0;
+			sIBOActive = FALSE;
 		}
 
-		if (error)
-		{
-			ll_fail("LLVertexBuffer::mapBuffer failed");
-		}
-		unmapBuffer(type);
-	}
-	else
-	{		
 		if (mGLBuffer)
 		{
 			if (sVBOActive)
@@ -1775,30 +2124,30 @@ void LLVertexBuffer::setBuffer(U32 data_mask, S32 type)
 			}
 			if (sGLRenderBuffer != mGLBuffer)
 			{
+				sGLRenderBuffer = mGLBuffer;
 				setup = TRUE; // ... or a client memory pointer changed
 			}
 		}
-		if (mGLIndices && sIBOActive)
+		if (mGLIndices)
 		{
-			/*if (sMapped)
+			if (sIBOActive)
 			{
-				llerrs << "VBO unbound while potentially mapped!" << llendl;
-			}*/
-			glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
-			sBindCount++;
-			sIBOActive = FALSE;
+				glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
+				sBindCount++;
+				sIBOActive = FALSE;
+			}
+			
+			sGLRenderIndices = mGLIndices;
 		}
 	}
 
-	setupClientArrays(data_mask);
-	
-	if (mGLIndices)
+	if (!mGLArray)
 	{
-		sGLRenderIndices = mGLIndices;
+		setupClientArrays(data_mask);
 	}
+			
 	if (mGLBuffer)
 	{
-		sGLRenderBuffer = mGLBuffer;
 		if (data_mask && setup)
 		{
 			setupVertexBuffer(data_mask); // subclass specific setup (virtual function)
@@ -1808,80 +2157,150 @@ void LLVertexBuffer::setBuffer(U32 data_mask, S32 type)
 }
 
 // virtual (default)
-void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
+void LLVertexBuffer::setupVertexBuffer(U32 data_mask)
 {
 	LLMemType mt2(LLMemType::MTYPE_VERTEX_SETUP_VERTEX_BUFFER);
 	stop_glerror();
-	U8* base = useVBOs() ? (U8*) mAlignedOffset : mMappedData;
+	volatile U8* base = useVBOs() ? (U8*) mAlignedOffset : mMappedData;
 
-	if ((data_mask & mTypeMask) != data_mask)
+	/*if ((data_mask & mTypeMask) != data_mask)
 	{
 		llerrs << "LLVertexBuffer::setupVertexBuffer missing required components for supplied data mask." << llendl;
-	}
-
-	if (data_mask & MAP_NORMAL)
-	{
-		glNormalPointer(GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_NORMAL], (void*)(base + mOffsets[TYPE_NORMAL]));
-	}
-	if (data_mask & MAP_TEXCOORD3)
-	{
-		glClientActiveTextureARB(GL_TEXTURE3_ARB);
-		glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], (void*)(base + mOffsets[TYPE_TEXCOORD3]));
-		glClientActiveTextureARB(GL_TEXTURE0_ARB);
-	}
-	if (data_mask & MAP_TEXCOORD2)
-	{
-		glClientActiveTextureARB(GL_TEXTURE2_ARB);
-		glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], (void*)(base + mOffsets[TYPE_TEXCOORD2]));
-		glClientActiveTextureARB(GL_TEXTURE0_ARB);
-	}
-	if (data_mask & MAP_TEXCOORD1)
-	{
-		glClientActiveTextureARB(GL_TEXTURE1_ARB);
-		glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], (void*)(base + mOffsets[TYPE_TEXCOORD1]));
-		glClientActiveTextureARB(GL_TEXTURE0_ARB);
-	}
-	if (data_mask & MAP_BINORMAL)
-	{
-		glClientActiveTextureARB(GL_TEXTURE2_ARB);
-		glTexCoordPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_BINORMAL], (void*)(base + mOffsets[TYPE_BINORMAL]));
-		glClientActiveTextureARB(GL_TEXTURE0_ARB);
-	}
-	if (data_mask & MAP_TEXCOORD0)
-	{
-		glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], (void*)(base + mOffsets[TYPE_TEXCOORD0]));
-	}
-	if (data_mask & MAP_COLOR)
-	{
-		glColorPointer(4, GL_UNSIGNED_BYTE, LLVertexBuffer::sTypeSize[TYPE_COLOR], (void*)(base + mOffsets[TYPE_COLOR]));
-	}
-	
-	if (data_mask & MAP_WEIGHT)
-	{
-		glVertexAttribPointerARB(1, 1, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT], (void*)(base + mOffsets[TYPE_WEIGHT]));
-	}
-
-	if (data_mask & MAP_WEIGHT4 && sWeight4Loc != -1)
-	{
-		glVertexAttribPointerARB(sWeight4Loc, 4, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT4], (void*)(base+mOffsets[TYPE_WEIGHT4]));
-	}
+	}*/
 
-	if (data_mask & MAP_CLOTHWEIGHT)
-	{
-		glVertexAttribPointerARB(4, 4, GL_FLOAT, TRUE,  LLVertexBuffer::sTypeSize[TYPE_CLOTHWEIGHT], (void*)(base + mOffsets[TYPE_CLOTHWEIGHT]));
-	}
-	if (data_mask & MAP_VERTEX)
+	if (LLGLSLShader::sNoFixedFunction)
 	{
+		if (data_mask & MAP_NORMAL)
+		{
+			S32 loc = TYPE_NORMAL;
+			void* ptr = (void*)(base + mOffsets[TYPE_NORMAL]);
+			glVertexAttribPointerARB(loc, 3, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_NORMAL], ptr);
+		}
+		if (data_mask & MAP_TEXCOORD3)
+		{
+			S32 loc = TYPE_TEXCOORD3;
+			void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD3]);
+			glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], ptr);
+		}
+		if (data_mask & MAP_TEXCOORD2)
+		{
+			S32 loc = TYPE_TEXCOORD2;
+			void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD2]);
+			glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], ptr);
+		}
+		if (data_mask & MAP_TEXCOORD1)
+		{
+			S32 loc = TYPE_TEXCOORD1;
+			void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD1]);
+			glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], ptr);
+		}
+		if (data_mask & MAP_BINORMAL)
+		{
+			S32 loc = TYPE_BINORMAL;
+			void* ptr = (void*)(base + mOffsets[TYPE_BINORMAL]);
+			glVertexAttribPointerARB(loc, 3,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_BINORMAL], ptr);
+		}
+		if (data_mask & MAP_TEXCOORD0)
+		{
+			S32 loc = TYPE_TEXCOORD0;
+			void* ptr = (void*)(base + mOffsets[TYPE_TEXCOORD0]);
+			glVertexAttribPointerARB(loc,2,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], ptr);
+		}
+		if (data_mask & MAP_COLOR)
+		{
+			S32 loc = TYPE_COLOR;
+			void* ptr = (void*)(base + mOffsets[TYPE_COLOR]);
+			glVertexAttribPointerARB(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_COLOR], ptr);
+		}
+		if (data_mask & MAP_EMISSIVE)
+		{
+			S32 loc = TYPE_EMISSIVE;
+			void* ptr = (void*)(base + mOffsets[TYPE_EMISSIVE]);
+			glVertexAttribPointerARB(loc, 4, GL_UNSIGNED_BYTE, GL_TRUE, LLVertexBuffer::sTypeSize[TYPE_EMISSIVE], ptr);
+		}
+		if (data_mask & MAP_WEIGHT)
+		{
+			S32 loc = TYPE_WEIGHT;
+			void* ptr = (void*)(base + mOffsets[TYPE_WEIGHT]);
+			glVertexAttribPointerARB(loc, 1, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT], ptr);
+		}
+		if (data_mask & MAP_WEIGHT4)
+		{
+			S32 loc = TYPE_WEIGHT4;
+			void* ptr = (void*)(base+mOffsets[TYPE_WEIGHT4]);
+			glVertexAttribPointerARB(loc, 4, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT4], ptr);
+		}
+		if (data_mask & MAP_CLOTHWEIGHT)
+		{
+			S32 loc = TYPE_CLOTHWEIGHT;
+			void* ptr = (void*)(base + mOffsets[TYPE_CLOTHWEIGHT]);
+			glVertexAttribPointerARB(loc, 4, GL_FLOAT, TRUE,  LLVertexBuffer::sTypeSize[TYPE_CLOTHWEIGHT], ptr);
+		}
 		if (data_mask & MAP_TEXTURE_INDEX)
 		{
-			glVertexPointer(4,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
+			S32 loc = TYPE_TEXTURE_INDEX;
+			void *ptr = (void*) (base + mOffsets[TYPE_VERTEX] + 12);
+			glVertexAttribPointerARB(loc, 1, GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_VERTEX], ptr);
 		}
-		else
+		if (data_mask & MAP_VERTEX)
 		{
-			glVertexPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
+			S32 loc = TYPE_VERTEX;
+			void* ptr = (void*)(base + mOffsets[TYPE_VERTEX]);
+			glVertexAttribPointerARB(loc, 3,GL_FLOAT, GL_FALSE, LLVertexBuffer::sTypeSize[TYPE_VERTEX], ptr);
+		}	
+	}	
+	else
+	{
+		if (data_mask & MAP_NORMAL)
+		{
+			glNormalPointer(GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_NORMAL], (void*)(base + mOffsets[TYPE_NORMAL]));
+		}
+		if (data_mask & MAP_TEXCOORD3)
+		{
+			glClientActiveTextureARB(GL_TEXTURE3_ARB);
+			glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD3], (void*)(base + mOffsets[TYPE_TEXCOORD3]));
+			glClientActiveTextureARB(GL_TEXTURE0_ARB);
+		}
+		if (data_mask & MAP_TEXCOORD2)
+		{
+			glClientActiveTextureARB(GL_TEXTURE2_ARB);
+			glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD2], (void*)(base + mOffsets[TYPE_TEXCOORD2]));
+			glClientActiveTextureARB(GL_TEXTURE0_ARB);
+		}
+		if (data_mask & MAP_TEXCOORD1)
+		{
+			glClientActiveTextureARB(GL_TEXTURE1_ARB);
+			glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD1], (void*)(base + mOffsets[TYPE_TEXCOORD1]));
+			glClientActiveTextureARB(GL_TEXTURE0_ARB);
+		}
+		if (data_mask & MAP_BINORMAL)
+		{
+			glClientActiveTextureARB(GL_TEXTURE2_ARB);
+			glTexCoordPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_BINORMAL], (void*)(base + mOffsets[TYPE_BINORMAL]));
+			glClientActiveTextureARB(GL_TEXTURE0_ARB);
 		}
+		if (data_mask & MAP_TEXCOORD0)
+		{
+			glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_TEXCOORD0], (void*)(base + mOffsets[TYPE_TEXCOORD0]));
+		}
+		if (data_mask & MAP_COLOR)
+		{
+			glColorPointer(4, GL_UNSIGNED_BYTE, LLVertexBuffer::sTypeSize[TYPE_COLOR], (void*)(base + mOffsets[TYPE_COLOR]));
+		}
+		if (data_mask & MAP_VERTEX)
+		{
+			glVertexPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
+		}	
 	}
 
 	llglassertok();
 }
 
+LLVertexBuffer::MappedRegion::MappedRegion(S32 type, S32 index, S32 count)
+: mType(type), mIndex(index), mCount(count)
+{ 
+	llassert(mType == LLVertexBuffer::TYPE_INDEX || 
+			mType < LLVertexBuffer::TYPE_TEXTURE_INDEX);
+}	
+
+
diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h
index 578cec38859c6d88d4eda6964fad47efa7cf9f0e..e1cbfd3b619f602cc5a1bed793ebd46119d12ff9 100644
--- a/indra/llrender/llvertexbuffer.h
+++ b/indra/llrender/llvertexbuffer.h
@@ -38,6 +38,8 @@
 #include <vector>
 #include <list>
 
+#define LL_MAX_VERTEX_ATTRIB_LOCATION 64
+
 //============================================================================
 // NOTES
 // Threading:
@@ -49,25 +51,32 @@
 
 //============================================================================
 // gl name pools for dynamic and streaming buffers
-
-class LLVBOPool : public LLGLNamePool
+class LLVBOPool
 {
-protected:
-	virtual GLuint allocateName()
-	{
-		GLuint name;
-		stop_glerror();
-		glGenBuffersARB(1, &name);
-		stop_glerror();
-		return name;
-	}
+public:
+	static U32 sBytesPooled;
+
+	U32 mUsage;
+	U32 mType;
 
-	virtual void releaseName(GLuint name)
+	//size MUST be a power of 2
+	volatile U8* allocate(U32& name, U32 size);
+	
+	//size MUST be the size provided to allocate that returned the given name
+	void release(U32 name, volatile U8* buffer, U32 size);
+	
+	//destroy all records in mFreeList
+	void cleanup();
+
+	class Record
 	{
-		stop_glerror();
-		glDeleteBuffersARB(1, &name);
-		stop_glerror();
-	}
+	public:
+		U32 mGLName;
+		volatile U8* mClientData;
+	};
+
+	typedef std::list<Record> record_list_t;
+	std::vector<record_list_t> mFreeList;
 };
 
 class LLGLFence
@@ -90,9 +99,7 @@ class LLVertexBuffer : public LLRefCount
 		S32 mIndex;
 		S32 mCount;
 		
-		MappedRegion(S32 type, S32 index, S32 count)
-			: mType(type), mIndex(index), mCount(count)
-		{ }	
+		MappedRegion(S32 type, S32 index, S32 count);
 	};
 
 	LLVertexBuffer(const LLVertexBuffer& rhs)
@@ -111,18 +118,17 @@ class LLVertexBuffer : public LLRefCount
 	static LLVBOPool sStreamIBOPool;
 	static LLVBOPool sDynamicIBOPool;
 
-	static S32	sWeight4Loc;
-
 	static BOOL	sUseStreamDraw;
+	static BOOL sUseVAO;
 	static BOOL	sPreferStreamDraw;
 
 	static void initClass(bool use_vbo, bool no_vbo_mapping);
 	static void cleanupClass();
 	static void setupClientArrays(U32 data_mask);
 	static void drawArrays(U32 mode, const std::vector<LLVector3>& pos, const std::vector<LLVector3>& norm);
+	static void drawElements(U32 mode, const LLVector4a* pos, const LLVector2* tc, S32 num_indices, const U16* indicesp);
 
- 	static void clientCopy(F64 max_time = 0.005); //copy data from client to GL
-	static void unbind(); //unbind any bound vertex buffer
+ 	static void unbind(); //unbind any bound vertex buffer
 
 	//get the size of a vertex with the given typemask
 	static S32 calcVertexSize(const U32& typemask);
@@ -133,24 +139,29 @@ class LLVertexBuffer : public LLRefCount
 	static S32 calcOffsets(const U32& typemask, S32* offsets, S32 num_vertices);		
 
 	
+	//WARNING -- when updating these enums you MUST 
+	// 1 - update LLVertexBuffer::sTypeSize
+	// 2 - add a strider accessor
+	// 3 - modify LLVertexBuffer::setupVertexBuffer
+	// 4 - modify LLVertexBuffer::setupClientArray
+	// 5 - modify LLViewerShaderMgr::mReservedAttribs
+	// 6 - update LLVertexBuffer::setupVertexArray
 	enum {
-		TYPE_VERTEX,
+		TYPE_VERTEX = 0,
 		TYPE_NORMAL,
 		TYPE_TEXCOORD0,
 		TYPE_TEXCOORD1,
 		TYPE_TEXCOORD2,
 		TYPE_TEXCOORD3,
 		TYPE_COLOR,
-		// These use VertexAttribPointer and should possibly be made generic
+		TYPE_EMISSIVE,
 		TYPE_BINORMAL,
 		TYPE_WEIGHT,
 		TYPE_WEIGHT4,
 		TYPE_CLOTHWEIGHT,
-		TYPE_MAX,
-		TYPE_INDEX,
-		
-		//no actual additional data, but indicates position.w is texture index
 		TYPE_TEXTURE_INDEX,
+		TYPE_MAX,
+		TYPE_INDEX,		
 	};
 	enum {
 		MAP_VERTEX = (1<<TYPE_VERTEX),
@@ -160,6 +171,7 @@ class LLVertexBuffer : public LLRefCount
 		MAP_TEXCOORD2 = (1<<TYPE_TEXCOORD2),
 		MAP_TEXCOORD3 = (1<<TYPE_TEXCOORD3),
 		MAP_COLOR = (1<<TYPE_COLOR),
+		MAP_EMISSIVE = (1<<TYPE_EMISSIVE),
 		// These use VertexAttribPointer and should possibly be made generic
 		MAP_BINORMAL = (1<<TYPE_BINORMAL),
 		MAP_WEIGHT = (1<<TYPE_WEIGHT),
@@ -173,33 +185,35 @@ class LLVertexBuffer : public LLRefCount
 
 	virtual ~LLVertexBuffer(); // use unref()
 
-	virtual void setupVertexBuffer(U32 data_mask) const; // pure virtual, called from mapBuffer()
+	virtual void setupVertexBuffer(U32 data_mask); // pure virtual, called from mapBuffer()
+	void setupVertexArray();
 	
-	void	genBuffer();
-	void	genIndices();
+	void	genBuffer(U32 size);
+	void	genIndices(U32 size);
+	bool	bindGLBuffer(bool force_bind = false);
+	bool	bindGLIndices(bool force_bind = false);
+	bool	bindGLArray();
 	void	releaseBuffer();
 	void	releaseIndices();
-	void	createGLBuffer();
-	void	createGLIndices();
+	void	createGLBuffer(U32 size);
+	void	createGLIndices(U32 size);
 	void 	destroyGLBuffer();
 	void 	destroyGLIndices();
 	void	updateNumVerts(S32 nverts);
 	void	updateNumIndices(S32 nindices); 
 	virtual BOOL	useVBOs() const;
-	void	unmapBuffer(S32 type);
-	void freeClientBuffer() ;
-	void allocateClientVertexBuffer() ;
-	void allocateClientIndexBuffer() ;
-
+	void	unmapBuffer();
+		
 public:
 	LLVertexBuffer(U32 typemask, S32 usage);
 	
 	// map for data access
-	U8*		mapVertexBuffer(S32 type, S32 index, S32 count, bool map_range);
-	U8*		mapIndexBuffer(S32 index, S32 count, bool map_range);
+	volatile U8*		mapVertexBuffer(S32 type, S32 index, S32 count, bool map_range);
+	volatile U8*		mapIndexBuffer(S32 index, S32 count, bool map_range);
 
 	// set for rendering
-	virtual void	setBuffer(U32 data_mask, S32 type = -1); 	// calls  setupVertexBuffer() if data_mask is not 0
+	virtual void	setBuffer(U32 data_mask); 	// calls  setupVertexBuffer() if data_mask is not 0
+	void flush(); //flush pending data to GL memory
 	// allocate buffer
 	void	allocateBuffer(S32 nverts, S32 nindices, bool create);
 	virtual void resizeBuffer(S32 newnverts, S32 newnindices);
@@ -212,33 +226,35 @@ class LLVertexBuffer : public LLRefCount
 	//   setVertsNorms(verts, norms);
 	//   vb->unmapBuffer();
 	bool getVertexStrider(LLStrider<LLVector3>& strider, S32 index=0, S32 count = -1, bool map_range = false);
+	bool getVertexStrider(LLStrider<LLVector4a>& strider, S32 index=0, S32 count = -1, bool map_range = false);
 	bool getIndexStrider(LLStrider<U16>& strider, S32 index=0, S32 count = -1, bool map_range = false);
 	bool getTexCoord0Strider(LLStrider<LLVector2>& strider, S32 index=0, S32 count = -1, bool map_range = false);
 	bool getTexCoord1Strider(LLStrider<LLVector2>& strider, S32 index=0, S32 count = -1, bool map_range = false);
 	bool getNormalStrider(LLStrider<LLVector3>& strider, S32 index=0, S32 count = -1, bool map_range = false);
 	bool getBinormalStrider(LLStrider<LLVector3>& strider, S32 index=0, S32 count = -1, bool map_range = false);
 	bool getColorStrider(LLStrider<LLColor4U>& strider, S32 index=0, S32 count = -1, bool map_range = false);
+	bool getEmissiveStrider(LLStrider<LLColor4U>& strider, S32 index=0, S32 count = -1, bool map_range = false);
 	bool getWeightStrider(LLStrider<F32>& strider, S32 index=0, S32 count = -1, bool map_range = false);
 	bool getWeight4Strider(LLStrider<LLVector4>& strider, S32 index=0, S32 count = -1, bool map_range = false);
 	bool getClothWeightStrider(LLStrider<LLVector4>& strider, S32 index=0, S32 count = -1, bool map_range = false);
 	
+
 	BOOL isEmpty() const					{ return mEmpty; }
 	BOOL isLocked() const					{ return mVertexLocked || mIndexLocked; }
 	S32 getNumVerts() const					{ return mNumVerts; }
 	S32 getNumIndices() const				{ return mNumIndices; }
-	S32 getRequestedVerts() const			{ return mRequestedNumVerts; }
-	S32 getRequestedIndices() const			{ return mRequestedNumIndices; }
-
-	U8* getIndicesPointer() const			{ return useVBOs() ? (U8*) mAlignedIndexOffset : mMappedIndexData; }
-	U8* getVerticesPointer() const			{ return useVBOs() ? (U8*) mAlignedOffset : mMappedData; }
+	
+	volatile U8* getIndicesPointer() const			{ return useVBOs() ? (U8*) mAlignedIndexOffset : mMappedIndexData; }
+	volatile U8* getVerticesPointer() const			{ return useVBOs() ? (U8*) mAlignedOffset : mMappedData; }
 	U32 getTypeMask() const					{ return mTypeMask; }
 	bool hasDataType(S32 type) const		{ return ((1 << type) & getTypeMask()); }
 	S32 getSize() const;
-	S32 getIndicesSize() const				{ return mNumIndices * sizeof(U16); }
-	U8* getMappedData() const				{ return mMappedData; }
-	U8* getMappedIndices() const			{ return mMappedIndexData; }
+	S32 getIndicesSize() const				{ return mIndicesSize; }
+	volatile U8* getMappedData() const				{ return mMappedData; }
+	volatile U8* getMappedIndices() const			{ return mMappedIndexData; }
 	S32 getOffset(S32 type) const			{ return mOffsets[type]; }
 	S32 getUsage() const					{ return mUsage; }
+	BOOL isWriteable() const				{ return (mMappable || mUsage == GL_STREAM_DRAW_ARB) ? TRUE : FALSE; }
 
 	void draw(U32 mode, U32 count, U32 indices_offset) const;
 	void drawArrays(U32 mode, U32 offset, U32 count) const;
@@ -252,25 +268,24 @@ class LLVertexBuffer : public LLRefCount
 protected:	
 	S32		mNumVerts;		// Number of vertices allocated
 	S32		mNumIndices;	// Number of indices allocated
-	S32		mRequestedNumVerts;  // Number of vertices requested
-	S32		mRequestedNumIndices;  // Number of indices requested
-
+	
 	ptrdiff_t mAlignedOffset;
 	ptrdiff_t mAlignedIndexOffset;
 	S32		mSize;
+	S32		mIndicesSize;
 	U32		mTypeMask;
 	S32		mUsage;			// GL usage
 	U32		mGLBuffer;		// GL VBO handle
 	U32		mGLIndices;		// GL IBO handle
-	U8*		mMappedData;	// pointer to currently mapped data (NULL if unmapped)
-	U8*		mMappedIndexData;	// pointer to currently mapped indices (NULL if unmapped)
+	U32		mGLArray;		// GL VAO handle
+	
+	volatile U8* mMappedData;	// pointer to currently mapped data (NULL if unmapped)
+	volatile U8* mMappedIndexData;	// pointer to currently mapped indices (NULL if unmapped)
 	BOOL	mVertexLocked;			// if TRUE, vertex buffer is being or has been written to in client memory
 	BOOL	mIndexLocked;			// if TRUE, index buffer is being or has been written to in client memory
 	BOOL	mFinal;			// if TRUE, buffer can not be mapped again
-	BOOL	mFilthy;		// if TRUE, entire buffer must be copied (used to prevent redundant dirty flags)
 	BOOL	mEmpty;			// if TRUE, client buffer is empty (or NULL). Old values have been discarded.	
-	BOOL	mResized;		// if TRUE, client buffer has been resized and GL buffer has not
-	BOOL	mDynamicSize;	// if TRUE, buffer has been resized at least once (and should be padded)
+	mutable BOOL	mMappable;     // if TRUE, use memory mapping to upload data (otherwise doublebuffer and use glBufferSubData)
 	S32		mOffsets[TYPE_MAX];
 
 	std::vector<MappedRegion> mMappedVertexRegions;
@@ -290,7 +305,6 @@ class LLVertexBuffer : public LLRefCount
 	static S32 sGLCount;
 	static S32 sMappedCount;
 	static BOOL sMapped;
-	static std::vector<U32> sDeleteList;
 	typedef std::list<LLVertexBuffer*> buffer_list_t;
 		
 	static BOOL sDisableVBOMapping; //disable glMapBufferARB
@@ -298,6 +312,7 @@ class LLVertexBuffer : public LLRefCount
 	static S32 sTypeSize[TYPE_MAX];
 	static U32 sGLMode[LLRender::NUM_MODES];
 	static U32 sGLRenderBuffer;
+	static U32 sGLRenderArray;
 	static U32 sGLRenderIndices;
 	static BOOL sVBOActive;
 	static BOOL sIBOActive;
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index b3b2f4ae56410eb1ae3ef4233ea0f71db23b99f4..772f173f1748e9edabc3281e2ed6b43feb0803d0 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -5,6 +5,7 @@ project(llui)
 include(00-Common)
 include(LLCommon)
 include(LLImage)
+include(LLInventory)
 include(LLMath)
 include(LLMessage)
 include(LLRender)
@@ -16,6 +17,7 @@ include(LLXUIXML)
 include_directories(
     ${LLCOMMON_INCLUDE_DIRS}
     ${LLIMAGE_INCLUDE_DIRS}
+    ${LLINVENTORY_INCLUDE_DIRS}
     ${LLMATH_INCLUDE_DIRS}
     ${LLMESSAGE_INCLUDE_DIRS}
     ${LLRENDER_INCLUDE_DIRS}
@@ -35,6 +37,7 @@ set(llui_SOURCE_FILES
     llcheckboxctrl.cpp
     llclipboard.cpp
     llcombobox.cpp
+    llcommandmanager.cpp
     llconsole.cpp
     llcontainerview.cpp
     llctrlselectioninterface.cpp
@@ -99,6 +102,7 @@ set(llui_SOURCE_FILES
     lltimectrl.cpp
     lltransutil.cpp
     lltoggleablemenu.cpp
+    lltoolbar.cpp
     lltooltip.cpp
     llui.cpp
     lluicolortable.cpp
@@ -112,6 +116,7 @@ set(llui_SOURCE_FILES
     llurlmatch.cpp
     llurlregistry.cpp
     llviewborder.cpp
+    llviewinject.cpp
     llviewmodel.cpp
     llview.cpp
     llviewquery.cpp
@@ -131,6 +136,7 @@ set(llui_HEADER_FILES
     llcheckboxctrl.h
     llclipboard.h
     llcombobox.h
+    llcommandmanager.h
     llconsole.h
     llcontainerview.h
     llctrlselectioninterface.h
@@ -200,6 +206,7 @@ set(llui_HEADER_FILES
     lltextvalidate.h
     lltimectrl.h
     lltoggleablemenu.h
+    lltoolbar.h
     lltooltip.h
     lltransutil.h
     lluicolortable.h
@@ -216,6 +223,7 @@ set(llui_HEADER_FILES
     llurlmatch.h
     llurlregistry.h
     llviewborder.h
+    llviewinject.h
     llviewmodel.h
     llview.h
     llviewquery.h
@@ -245,6 +253,7 @@ target_link_libraries(llui
     ${LLRENDER_LIBRARIES}
     ${LLWINDOW_LIBRARIES}
     ${LLIMAGE_LIBRARIES}
+    ${LLINVENTORY_LIBRARIES}
     ${LLVFS_LIBRARIES}    # ugh, just for LLDir
     ${LLXUIXML_LIBRARIES}
     ${LLXML_LIBRARIES}
diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp
index 4b0b7c561da6858175798772dfcc4257c9ffce0f..7a5f9f9fd6c924686d7ef14e8331f42058ff9e3a 100644
--- a/indra/llui/llaccordionctrltab.cpp
+++ b/indra/llui/llaccordionctrltab.cpp
@@ -973,7 +973,7 @@ void LLAccordionCtrlTab::drawChild(const LLRect& root_rect,LLView* child)
 		
 		if ( root_rect.overlaps(screen_rect)  && LLUI::sDirtyRect.overlaps(screen_rect))
 		{
-			glMatrixMode(GL_MODELVIEW);
+			gGL.matrixMode(LLRender::MM_MODELVIEW);
 			LLUI::pushMatrix();
 			{
 				LLUI::translate((F32)child->getRect().mLeft, (F32)child->getRect().mBottom, 0.f);
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp
index 2459429f6e52f28f6c259841fd208f22a7881f01..f0d92d597a7fd987d0ff8ba327ababfc4f79a8b7 100644
--- a/indra/llui/llbutton.cpp
+++ b/indra/llui/llbutton.cpp
@@ -83,10 +83,11 @@ LLButton::Params::Params()
 	label_color_selected("label_color_selected"),	// requires is_toggle true
 	label_color_disabled("label_color_disabled"),
 	label_color_disabled_selected("label_color_disabled_selected"),
-	highlight_color("highlight_color"),
 	image_color("image_color"),
 	image_color_disabled("image_color_disabled"),
-	image_overlay_color("image_overlay_color", LLColor4::white),
+	image_overlay_color("image_overlay_color", LLColor4::white % 0.75f),
+	image_overlay_disabled_color("image_overlay_disabled_color", LLColor4::white % 0.3f),
+	image_overlay_selected_color("image_overlay_selected_color", LLColor4::white),
 	flash_color("flash_color"),
 	pad_right("pad_right", LLUI::sSettingGroups["config"]->getS32("ButtonHPad")),
 	pad_left("pad_left", LLUI::sSettingGroups["config"]->getS32("ButtonHPad")),
@@ -99,10 +100,13 @@ LLButton::Params::Params()
 	scale_image("scale_image", true),
 	hover_glow_amount("hover_glow_amount"),
 	commit_on_return("commit_on_return", true),
+	display_pressed_state("display_pressed_state", true),
 	use_draw_context_alpha("use_draw_context_alpha", true),
 	badge("badge"),
 	handle_right_mouse("handle_right_mouse"),
-	held_down_delay("held_down_delay")
+	held_down_delay("held_down_delay"),
+	button_flash_count("button_flash_count"),
+	button_flash_rate("button_flash_rate")
 {
 	addSynonym(is_toggle, "toggle");
 	changeDefault(initial_value, LLSD(false));
@@ -111,7 +115,7 @@ LLButton::Params::Params()
 
 LLButton::LLButton(const LLButton::Params& p)
 :	LLUICtrl(p),
-	LLBadgeOwner(LLView::getHandle()),
+	LLBadgeOwner(getHandle()),
 	mMouseDownFrame(0),
 	mMouseHeldDownCount(0),
 	mBorderEnabled( FALSE ),
@@ -136,12 +140,13 @@ LLButton::LLButton(const LLButton::Params& p)
 	mSelectedLabelColor(p.label_color_selected()),
 	mDisabledLabelColor(p.label_color_disabled()),
 	mDisabledSelectedLabelColor(p.label_color_disabled_selected()),
-	mHighlightColor(p.highlight_color()),
 	mImageColor(p.image_color()),
 	mFlashBgColor(p.flash_color()),
 	mDisabledImageColor(p.image_color_disabled()),
 	mImageOverlay(p.image_overlay()),
 	mImageOverlayColor(p.image_overlay_color()),
+	mImageOverlayDisabledColor(p.image_overlay_disabled_color()),
+	mImageOverlaySelectedColor(p.image_overlay_selected_color()),
 	mImageOverlayAlignment(LLFontGL::hAlignFromName(p.image_overlay_alignment)),
 	mImageOverlayTopPad(p.image_top_pad),
 	mImageOverlayBottomPad(p.image_bottom_pad),
@@ -159,12 +164,15 @@ LLButton::LLButton(const LLButton::Params& p)
 	mCommitOnReturn(p.commit_on_return),
 	mFadeWhenDisabled(FALSE),
 	mForcePressedState(false),
+	mDisplayPressedState(p.display_pressed_state),
 	mLastDrawCharsCount(0),
 	mMouseDownSignal(NULL),
 	mMouseUpSignal(NULL),
 	mHeldDownSignal(NULL),
 	mUseDrawContextAlpha(p.use_draw_context_alpha),
-	mHandleRightMouse(p.handle_right_mouse)
+	mHandleRightMouse(p.handle_right_mouse),
+	mButtonFlashCount(p.button_flash_count),
+	mButtonFlashRate(p.button_flash_rate)
 {
 	static LLUICachedControl<S32> llbutton_orig_h_pad ("UIButtonOrigHPad", 0);
 	static Params default_params(LLUICtrlFactory::getDefaultParams<LLButton>());
@@ -292,6 +300,24 @@ void LLButton::onCommit()
 	LLUICtrl::onCommit();
 }
 
+boost::signals2::connection LLButton::setClickedCallback(const CommitCallbackParam& cb)
+{
+	return setClickedCallback(initCommitCallback(cb));
+}
+boost::signals2::connection LLButton::setMouseDownCallback(const CommitCallbackParam& cb)
+{
+	return setMouseDownCallback(initCommitCallback(cb));
+}
+boost::signals2::connection LLButton::setMouseUpCallback(const CommitCallbackParam& cb)
+{
+	return setMouseUpCallback(initCommitCallback(cb));
+}
+boost::signals2::connection LLButton::setHeldDownCallback(const CommitCallbackParam& cb)
+{
+	return setHeldDownCallback(initCommitCallback(cb));
+}
+
+
 boost::signals2::connection LLButton::setClickedCallback( const commit_signal_t::slot_type& cb )
 {
 	if (!mCommitSignal) mCommitSignal = new commit_signal_t();
@@ -314,7 +340,7 @@ boost::signals2::connection LLButton::setHeldDownCallback( const commit_signal_t
 }
 
 
-// *TODO: Deprecate (for backwards compatability only)
+// *TODO: Deprecate (for backwards compatibility only)
 boost::signals2::connection LLButton::setClickedCallback( button_callback_t cb, void* data )
 {
 	return setClickedCallback(boost::bind(cb, data));
@@ -511,15 +537,6 @@ BOOL	LLButton::handleRightMouseUp(S32 x, S32 y, MASK mask)
 	return TRUE;
 }
 
-
-void LLButton::onMouseEnter(S32 x, S32 y, MASK mask)
-{
-	LLUICtrl::onMouseEnter(x, y, mask);
-
-	if (isInEnabledChain())
-		mNeedsHighlight = TRUE;
-}
-
 void LLButton::onMouseLeave(S32 x, S32 y, MASK mask)
 {
 	LLUICtrl::onMouseLeave(x, y, mask);
@@ -534,6 +551,10 @@ void LLButton::setHighlight(bool b)
 
 BOOL LLButton::handleHover(S32 x, S32 y, MASK mask)
 {
+	if (isInEnabledChain() 
+		&& (!gFocusMgr.getMouseCapture() || gFocusMgr.getMouseCapture() == this))
+		mNeedsHighlight = TRUE;
+
 	if (!childrenHandleHover(x, y, mask))
 	{
 		if (mMouseDownTimer.getStarted())
@@ -554,21 +575,37 @@ BOOL LLButton::handleHover(S32 x, S32 y, MASK mask)
 	return TRUE;
 }
 
+void LLButton::getOverlayImageSize(S32& overlay_width, S32& overlay_height)
+{
+	overlay_width = mImageOverlay->getWidth();
+	overlay_height = mImageOverlay->getHeight();
+
+	F32 scale_factor = llmin((F32)getRect().getWidth() / (F32)overlay_width, (F32)getRect().getHeight() / (F32)overlay_height, 1.f);
+	overlay_width = llround((F32)overlay_width * scale_factor);
+	overlay_height = llround((F32)overlay_height * scale_factor);
+}
+
 
 // virtual
 void LLButton::draw()
 {
+	static LLCachedControl<bool> sEnableButtonFlashing(*LLUI::sSettingGroups["config"], "EnableButtonFlashing", true);
 	F32 alpha = mUseDrawContextAlpha ? getDrawContext().mAlpha : getCurrentTransparency();
 	bool flash = FALSE;
-	static LLUICachedControl<F32> button_flash_rate("ButtonFlashRate", 0);
-	static LLUICachedControl<S32> button_flash_count("ButtonFlashCount", 0);
 
-	if( mFlashing )
+	if( mFlashing)
 	{
-		F32 elapsed = mFlashingTimer.getElapsedTimeF32();
-		S32 flash_count = S32(elapsed * button_flash_rate * 2.f);
-		// flash on or off?
-		flash = (flash_count % 2 == 0) || flash_count > S32((F32)button_flash_count * 2.f);
+		if ( sEnableButtonFlashing)
+		{
+			F32 elapsed = mFlashingTimer.getElapsedTimeF32();
+			S32 flash_count = S32(elapsed * mButtonFlashRate * 2.f);
+			// flash on or off?
+			flash = (flash_count % 2 == 0) || flash_count > S32((F32)mButtonFlashCount * 2.f);
+		}
+		else
+		{ // otherwise just highlight button in flash color
+			flash = true;
+		}
 	}
 
 	bool pressed_by_keyboard = FALSE;
@@ -597,7 +634,7 @@ void LLButton::draw()
 	LLColor4 glow_color = LLColor4::white;
 	LLRender::eBlendType glow_type = LLRender::BT_ADD_WITH_ALPHA;
 	LLUIImage* imagep = NULL;
-	if (pressed)
+	if (pressed && mDisplayPressedState)
 	{
 		imagep = selected ? mImagePressedSelected : mImagePressed;
 	}
@@ -707,16 +744,7 @@ void LLButton::draw()
 	}
 
 	// Unselected label assignments
-	LLWString label;
-
-	if( getToggleState() )
-	{
-		label = mSelectedLabel;
-	}
-	else
-	{
-		label = mUnselectedLabel;
-	}
+	LLWString label = getCurrentLabel();
 
 	// overlay with keyboard focus border
 	if (hasFocus())
@@ -781,18 +809,16 @@ void LLButton::draw()
 	if (mImageOverlay.notNull())
 	{
 		// get max width and height (discard level 0)
-		S32 overlay_width = mImageOverlay->getWidth();
-		S32 overlay_height = mImageOverlay->getHeight();
+		S32 overlay_width;
+		S32 overlay_height;
 
-		F32 scale_factor = llmin((F32)getRect().getWidth() / (F32)overlay_width, (F32)getRect().getHeight() / (F32)overlay_height, 1.f);
-		overlay_width = llround((F32)overlay_width * scale_factor);
-		overlay_height = llround((F32)overlay_height * scale_factor);
+		getOverlayImageSize(overlay_width, overlay_height);
 
 		S32 center_x = getLocalRect().getCenterX();
 		S32 center_y = getLocalRect().getCenterY();
 
 		//FUGLY HACK FOR "DEPRESSED" BUTTONS
-		if (pressed)
+		if (pressed && mDisplayPressedState)
 		{
 			center_y--;
 			center_x++;
@@ -803,7 +829,11 @@ void LLButton::draw()
 		LLColor4 overlay_color = mImageOverlayColor.get();
 		if (!enabled)
 		{
-			overlay_color.mV[VALPHA] = 0.5f;
+			overlay_color = mImageOverlayDisabledColor.get();
+		}
+		else if (getToggleState())
+		{
+			overlay_color = mImageOverlaySelectedColor.get();
 		}
 		overlay_color.mV[VALPHA] *= alpha;
 
@@ -811,6 +841,7 @@ void LLButton::draw()
 		{
 		case LLFontGL::LEFT:
 			text_left += overlay_width + mImgOverlayLabelSpace;
+			text_width -= overlay_width + mImgOverlayLabelSpace;
 			mImageOverlay->draw(
 				mLeftHPad,
 				center_y - (overlay_height / 2), 
@@ -828,6 +859,7 @@ void LLButton::draw()
 			break;
 		case LLFontGL::RIGHT:
 			text_right -= overlay_width + mImgOverlayLabelSpace;
+			text_width -= overlay_width + mImgOverlayLabelSpace;
 			mImageOverlay->draw(
 				getRect().getWidth() - mRightHPad - overlay_width,
 				center_y - (overlay_height / 2), 
@@ -863,7 +895,7 @@ void LLButton::draw()
 
 		S32 y_offset = 2 + (getRect().getHeight() - 20)/2;
 	
-		if (pressed)
+		if (pressed && mDisplayPressedState)
 		{
 			y_offset--;
 			x++;
@@ -919,7 +951,7 @@ void LLButton::setToggleState(BOOL b)
 
 void LLButton::setFlashing( BOOL b )	
 { 
-	if (b != mFlashing)
+	if ((bool)b != mFlashing)
 	{
 		mFlashing = b; 
 		mFlashingTimer.reset();
@@ -959,6 +991,23 @@ void LLButton::setLabelSelected( const LLStringExplicit& label )
 	mSelectedLabel = label;
 }
 
+bool LLButton::labelIsTruncated() const
+{
+	return getCurrentLabel().getString().size() > mLastDrawCharsCount;
+}
+
+const LLUIString& LLButton::getCurrentLabel() const
+{
+	if( getToggleState() )
+	{
+		return mSelectedLabel;
+	}
+	else
+	{
+		return mUnselectedLabel;
+	}
+}
+
 void LLButton::setImageUnselected(LLPointer<LLUIImage> image)
 {
 	mImageUnselected = image;
@@ -970,16 +1019,7 @@ void LLButton::setImageUnselected(LLPointer<LLUIImage> image)
 
 void LLButton::autoResize()
 {
-	LLUIString label;
-	if(getToggleState())
-	{
-		label = mSelectedLabel;
-	}
-	else
-	{
-		label = mUnselectedLabel;
-	}
-	resize(label);
+	resize(getCurrentLabel());
 }
 
 void LLButton::resize(LLUIString label)
@@ -989,11 +1029,32 @@ void LLButton::resize(LLUIString label)
 	// get current btn length 
 	S32 btn_width =getRect().getWidth();
     // check if it need resize 
-	if (mAutoResize == TRUE)
+	if (mAutoResize)
 	{ 
-		if (btn_width - (mRightHPad + mLeftHPad) < label_width)
+		S32 min_width = label_width + mLeftHPad + mRightHPad;
+		if (mImageOverlay)
 		{
-			setRect(LLRect( getRect().mLeft, getRect().mTop, getRect().mLeft + label_width + mLeftHPad + mRightHPad , getRect().mBottom));
+			S32 overlay_width = mImageOverlay->getWidth();
+			F32 scale_factor = (getRect().getHeight() - (mImageOverlayBottomPad + mImageOverlayTopPad)) / (F32)mImageOverlay->getHeight();
+			overlay_width = llround((F32)overlay_width * scale_factor);
+
+			switch(mImageOverlayAlignment)
+			{
+			case LLFontGL::LEFT:
+			case LLFontGL::RIGHT:
+				min_width += overlay_width + mImgOverlayLabelSpace;
+				break;
+			case LLFontGL::HCENTER:
+				min_width = llmax(min_width, overlay_width + mLeftHPad + mRightHPad);
+				break;
+			default:
+				// draw nothing
+				break;
+			}
+		}
+		if (btn_width < min_width)
+		{
+			reshape(min_width, getRect().getHeight());
 		}
 	} 
 }
@@ -1140,7 +1201,7 @@ void LLButton::setFloaterToggle(LLUICtrl* ctrl, const LLSD& sdname)
 	// Set the button control value (toggle state) to the floater visibility control (Sets the value as well)
 	button->setControlVariable(LLFloater::getControlGroup()->getControl(vis_control_name));
 	// Set the clicked callback to toggle the floater
-	button->setClickedCallback(boost::bind(&LLFloaterReg::toggleFloaterInstance, sdname));
+	button->setClickedCallback(boost::bind(&LLFloaterReg::toggleInstance, sdname, LLSD()));
 }
 
 // static
@@ -1181,7 +1242,6 @@ void LLButton::resetMouseDownTimer()
 	mMouseDownTimer.reset();
 }
 
-
 BOOL LLButton::handleDoubleClick(S32 x, S32 y, MASK mask)
 {
 	// just treat a double click as a second click
diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h
index 59689160060716520320afa126f7f9b9606323d1..deaa0823c610a16be0fa85f770e31bbc59529dee 100644
--- a/indra/llui/llbutton.h
+++ b/indra/llui/llbutton.h
@@ -91,10 +91,11 @@ class LLButton
 								label_color_selected,
 								label_color_disabled,
 								label_color_disabled_selected,
-								highlight_color,
 								image_color,
 								image_color_disabled,
 								image_overlay_color,
+								image_overlay_selected_color,
+								image_overlay_disabled_color,
 								flash_color;
 
 		// layout
@@ -120,7 +121,8 @@ class LLButton
 		// misc
 		Optional<bool>			is_toggle,
 								scale_image,
-								commit_on_return;
+								commit_on_return,
+								display_pressed_state;
 		
 		Optional<F32>				hover_glow_amount;
 		Optional<TimeIntervalParam>	held_down_delay;
@@ -131,6 +133,9 @@ class LLButton
 
 		Optional<bool>				handle_right_mouse;
 
+		Optional<S32>				button_flash_count;
+		Optional<F32>				button_flash_rate;
+
 		Params();
 	};
 	
@@ -157,7 +162,6 @@ class LLButton
 	virtual void	draw();
 	/*virtual*/ BOOL postBuild();
 
-	virtual void	onMouseEnter(S32 x, S32 y, MASK mask);
 	virtual void	onMouseLeave(S32 x, S32 y, MASK mask);
 	virtual void	onMouseCaptureLost();
 
@@ -168,6 +172,11 @@ class LLButton
 	void			setUseEllipses( BOOL use_ellipses )					{ mUseEllipses = use_ellipses; }
 
 
+	boost::signals2::connection setClickedCallback(const CommitCallbackParam& cb);
+	boost::signals2::connection setMouseDownCallback(const CommitCallbackParam& cb);
+	boost::signals2::connection setMouseUpCallback(const CommitCallbackParam& cb);
+	boost::signals2::connection setHeldDownCallback(const CommitCallbackParam& cb);
+
 	boost::signals2::connection setClickedCallback( const commit_signal_t::slot_type& cb ); // mouse down and up within button
 	boost::signals2::connection setMouseDownCallback( const commit_signal_t::slot_type& cb );
 	boost::signals2::connection setMouseUpCallback( const commit_signal_t::slot_type& cb ); // mouse up, EVEN IF NOT IN BUTTON
@@ -235,6 +244,8 @@ class LLButton
 
 
 	S32				getLastDrawCharsCount() const { return mLastDrawCharsCount; }
+	bool			labelIsTruncated() const;
+	const LLUIString&	getCurrentLabel() const;
 
 	void			setScaleImage(BOOL scale)			{ mScaleImage = scale; }
 	BOOL			getScaleImage() const				{ return mScaleImage; }
@@ -270,14 +281,16 @@ class LLButton
 protected:
 	LLPointer<LLUIImage> getImageUnselected() const	{ return mImageUnselected; }
 	LLPointer<LLUIImage> getImageSelected() const	{ return mImageSelected; }
+	void getOverlayImageSize(S32& overlay_width, S32& overlay_height);
 
 	LLFrameTimer	mMouseDownTimer;
+	bool			mNeedsHighlight;
+	S32				mButtonFlashCount;
+	F32				mButtonFlashRate;
 
-private:
 	void			drawBorder(LLUIImage* imagep, const LLColor4& color, S32 size);
 	void			resetMouseDownTimer();
 
-private:
 	commit_signal_t* 			mMouseDownSignal;
 	commit_signal_t* 			mMouseUpSignal;
 	commit_signal_t* 			mHeldDownSignal;
@@ -293,6 +306,8 @@ class LLButton
 	LLPointer<LLUIImage>		mImageOverlay;
 	LLFontGL::HAlign			mImageOverlayAlignment;
 	LLUIColor					mImageOverlayColor;
+	LLUIColor					mImageOverlaySelectedColor;
+	LLUIColor					mImageOverlayDisabledColor;
 
 	LLPointer<LLUIImage>		mImageUnselected;
 	LLUIString					mUnselectedLabel;
@@ -321,21 +336,19 @@ class LLButton
 	   flash icon name is set in attributes(by default it isn't). First way is used otherwise. */
 	LLPointer<LLUIImage>		mImageFlash;
 
-	LLUIColor					mHighlightColor;
 	LLUIColor					mFlashBgColor;
 
 	LLUIColor					mImageColor;
 	LLUIColor					mDisabledImageColor;
 
-	BOOL						mIsToggle;
-	BOOL						mScaleImage;
-
-	BOOL						mDropShadowedText;
-	BOOL						mAutoResize;
-	BOOL						mUseEllipses;
-	BOOL						mBorderEnabled;
+	bool						mIsToggle;
+	bool						mScaleImage;
 
-	BOOL						mFlashing;
+	bool						mDropShadowedText;
+	bool						mAutoResize;
+	bool						mUseEllipses;
+	bool						mBorderEnabled;
+	bool						mFlashing;
 
 	LLFontGL::HAlign			mHAlign;
 	S32							mLeftHPad;
@@ -355,10 +368,10 @@ class LLButton
 	F32							mHoverGlowStrength;
 	F32							mCurGlowStrength;
 
-	BOOL						mNeedsHighlight;
-	BOOL						mCommitOnReturn;
-	BOOL						mFadeWhenDisabled;
+	bool						mCommitOnReturn;
+	bool						mFadeWhenDisabled;
 	bool						mForcePressedState;
+	bool						mDisplayPressedState;
 
 	LLFrameTimer				mFlashingTimer;
 
diff --git a/indra/llui/llclipboard.cpp b/indra/llui/llclipboard.cpp
index 984c4ec5fb759df4d028514b02dc548260f4b446..6910b962a1932ce09c9e31bc5f120a3e460ece1b 100644
--- a/indra/llui/llclipboard.cpp
+++ b/indra/llui/llclipboard.cpp
@@ -40,6 +40,7 @@ LLClipboard gClipboard;
 
 LLClipboard::LLClipboard()
 {
+	mSourceItem = NULL;
 }
 
 
@@ -134,3 +135,8 @@ BOOL LLClipboard::canPastePrimaryString() const
 {
 	return LLView::getWindow()->isPrimaryTextAvailable();
 }
+
+void LLClipboard::setSourceObject(const LLUUID& source_id, LLAssetType::EType type) 
+{
+	mSourceItem = new LLInventoryObject (source_id, LLUUID::null, type, "");
+}
diff --git a/indra/llui/llclipboard.h b/indra/llui/llclipboard.h
index 24cb46c3f49476b6061ed4e14a6da2856fd9c5b1..9371b9428447ae2c8deb3ba3238d726dca41a7cb 100644
--- a/indra/llui/llclipboard.h
+++ b/indra/llui/llclipboard.h
@@ -30,6 +30,8 @@
 
 #include "llstring.h"
 #include "lluuid.h"
+#include "stdenums.h"
+#include "llinventory.h"
 
 
 class LLClipboard
@@ -52,9 +54,14 @@ class LLClipboard
 	BOOL		canPastePrimaryString() const;
 	const LLWString&	getPastePrimaryWString(LLUUID* source_id = NULL);	
 
+	// Support clipboard for object known only by their uuid and asset type
+	void		  setSourceObject(const LLUUID& source_id, LLAssetType::EType type);
+	const LLInventoryObject* getSourceObject() { return mSourceItem; }
+	
 private:
-	LLUUID		mSourceID;
+	LLUUID      mSourceID;
 	LLWString	mString;
+	LLInventoryObject* mSourceItem;
 };
 
 
diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..0e2f3f1961b784ebea0d731ceedca6403453c8ac
--- /dev/null
+++ b/indra/llui/llcommandmanager.cpp
@@ -0,0 +1,172 @@
+/** 
+ * @file llcommandmanager.cpp
+ * @brief LLCommandManager class
+ *
+ * $LicenseInfo:firstyear=2001&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$
+ */
+
+// A control that displays the name of the chosen item, which when
+// clicked shows a scrolling box of options.
+
+#include "linden_common.h"
+
+#include "llcommandmanager.h"
+#include "lldir.h"
+#include "llerror.h"
+#include "llxuiparser.h"
+
+#include <boost/foreach.hpp>
+
+
+//
+// LLCommandId class
+//
+
+const LLCommandId LLCommandId::null = LLCommandId("null command");
+
+//
+// LLCommand class
+//
+
+LLCommand::Params::Params()
+	: available_in_toybox("available_in_toybox", false)
+	, icon("icon")
+	, label_ref("label_ref")
+	, name("name")
+	, tooltip_ref("tooltip_ref")
+	, execute_function("execute_function")
+	, execute_parameters("execute_parameters")
+	, execute_stop_function("execute_stop_function")
+	, execute_stop_parameters("execute_stop_parameters")
+	, is_enabled_function("is_enabled_function")
+	, is_enabled_parameters("is_enabled_parameters")
+	, is_running_function("is_running_function")
+	, is_running_parameters("is_running_parameters")
+	, is_starting_function("is_starting_function")
+	, is_starting_parameters("is_starting_parameters")
+{
+}
+
+LLCommand::LLCommand(const LLCommand::Params& p)
+	: mIdentifier(p.name)
+	, mAvailableInToybox(p.available_in_toybox)
+	, mIcon(p.icon)
+	, mLabelRef(p.label_ref)
+	, mName(p.name)
+	, mTooltipRef(p.tooltip_ref)
+	, mExecuteFunction(p.execute_function)
+	, mExecuteParameters(p.execute_parameters)
+	, mExecuteStopFunction(p.execute_stop_function)
+	, mExecuteStopParameters(p.execute_stop_parameters)
+	, mIsEnabledFunction(p.is_enabled_function)
+	, mIsEnabledParameters(p.is_enabled_parameters)
+	, mIsRunningFunction(p.is_running_function)
+	, mIsRunningParameters(p.is_running_parameters)
+	, mIsStartingFunction(p.is_starting_function)
+	, mIsStartingParameters(p.is_starting_parameters)
+{
+}
+
+
+//
+// LLCommandManager class
+//
+
+LLCommandManager::LLCommandManager()
+{
+}
+
+LLCommandManager::~LLCommandManager()
+{
+	for (CommandVector::iterator cmdIt = mCommands.begin(); cmdIt != mCommands.end(); ++cmdIt)
+	{
+		LLCommand * command = *cmdIt;
+
+		delete command;
+	}
+}
+
+U32 LLCommandManager::commandCount() const
+{
+	return mCommands.size();
+}
+
+LLCommand * LLCommandManager::getCommand(U32 commandIndex)
+{
+	return mCommands[commandIndex];
+}
+
+LLCommand * LLCommandManager::getCommand(const LLCommandId& commandId)
+{
+	LLCommand * command_match = NULL;
+
+	CommandIndexMap::const_iterator found = mCommandIndices.find(commandId.uuid());
+	
+	if (found != mCommandIndices.end())
+	{
+		command_match = mCommands[found->second];
+	}
+
+	return command_match;
+}
+
+void LLCommandManager::addCommand(LLCommand * command)
+{
+	LLCommandId command_id = command->id();
+	mCommandIndices[command_id.uuid()] = mCommands.size();
+	mCommands.push_back(command);
+
+	lldebugs << "Successfully added command: " << command->name() << llendl;
+}
+
+//static
+bool LLCommandManager::load()
+{
+	LLCommandManager& mgr = LLCommandManager::instance();
+
+	std::string commands_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "commands.xml");
+
+	LLCommandManager::Params commandsParams;
+
+	LLSimpleXUIParser parser;
+	
+	if (!parser.readXUI(commands_file, commandsParams))
+	{
+		llerrs << "Unable to load xml file: " << commands_file << llendl;
+		return false;
+	}
+
+	if (!commandsParams.validateBlock())
+	{
+		llerrs << "Invalid commands file: " << commands_file << llendl;
+		return false;
+	}
+
+	BOOST_FOREACH(LLCommand::Params& commandParams, commandsParams.commands)
+	{
+		LLCommand * command = new LLCommand(commandParams);
+
+		mgr.addCommand(command);
+	}
+
+	return true;
+}
diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h
new file mode 100644
index 0000000000000000000000000000000000000000..a7276a48aa5cb146e72d70020c57ccb2662b477f
--- /dev/null
+++ b/indra/llui/llcommandmanager.h
@@ -0,0 +1,202 @@
+/** 
+ * @file llcommandmanager.h
+ * @brief LLCommandManager class to hold commands
+ *
+ * $LicenseInfo:firstyear=2001&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$
+ */
+
+#ifndef LL_LLCOMMANDMANAGER_H
+#define LL_LLCOMMANDMANAGER_H
+
+#include "llinitparam.h"
+#include "llsingleton.h"
+
+
+class LLCommand;
+class LLCommandManager;
+
+
+class LLCommandId
+{
+public:
+	friend class LLCommand;
+	friend class LLCommandManager;
+
+	struct Params : public LLInitParam::Block<Params>
+	{
+		Mandatory<std::string> name;
+
+		Params()
+		:	name("name")
+		{}
+	};
+
+	LLCommandId(const std::string& name)
+	{
+		mUUID = LLUUID::generateNewID(name);
+	}
+
+	LLCommandId(const Params& p)
+	{
+		mUUID = LLUUID::generateNewID(p.name);
+	}
+
+	LLCommandId(const LLUUID& uuid)
+	:	mUUID(uuid)
+	{}
+	
+	const LLUUID& uuid() const { return mUUID; }
+
+	bool operator!=(const LLCommandId& command) const
+	{
+		return (mUUID != command.mUUID);
+	}
+
+	bool operator==(const LLCommandId& command) const
+	{
+		return (mUUID == command.mUUID);
+	}
+
+	static const LLCommandId null;
+
+private:
+	LLUUID		mUUID;
+};
+
+typedef std::list<LLCommandId> command_id_list_t;
+
+
+class LLCommand
+{
+public:
+	struct Params : public LLInitParam::Block<Params>
+	{
+		Mandatory<bool>			available_in_toybox;
+		Mandatory<std::string>	icon;
+		Mandatory<std::string>	label_ref;
+		Mandatory<std::string>	name;
+		Mandatory<std::string>	tooltip_ref;
+
+		Mandatory<std::string>	execute_function;
+		Optional<LLSD>			execute_parameters;
+
+		Optional<std::string>	execute_stop_function;
+		Optional<LLSD>			execute_stop_parameters;
+		
+		Optional<std::string>	is_enabled_function;
+		Optional<LLSD>			is_enabled_parameters;
+
+		Optional<std::string>	is_running_function;
+		Optional<LLSD>			is_running_parameters;
+
+		Optional<std::string>	is_starting_function;
+		Optional<LLSD>			is_starting_parameters;
+
+		Params();
+	};
+
+	LLCommand(const LLCommand::Params& p);
+
+	const bool availableInToybox() const { return mAvailableInToybox; }
+	const std::string& icon() const { return mIcon; }
+	const LLCommandId& id() const { return mIdentifier; }
+	const std::string& labelRef() const { return mLabelRef; }
+	const std::string& name() const { return mName; }
+	const std::string& tooltipRef() const { return mTooltipRef; }
+
+	const std::string& executeFunctionName() const { return mExecuteFunction; }
+	const LLSD& executeParameters() const { return mExecuteParameters; }
+
+	const std::string& executeStopFunctionName() const { return mExecuteStopFunction; }
+	const LLSD& executeStopParameters() const { return mExecuteStopParameters; }
+	
+	const std::string& isEnabledFunctionName() const { return mIsEnabledFunction; }
+	const LLSD& isEnabledParameters() const { return mIsEnabledParameters; }
+
+	const std::string& isRunningFunctionName() const { return mIsRunningFunction; }
+	const LLSD& isRunningParameters() const { return mIsRunningParameters; }
+
+	const std::string& isStartingFunctionName() const { return mIsStartingFunction; }
+	const LLSD& isStartingParameters() const { return mIsStartingParameters; }
+
+private:
+	LLCommandId mIdentifier;
+
+	bool        mAvailableInToybox;
+	std::string mIcon;
+	std::string mLabelRef;
+	std::string mName;
+	std::string mTooltipRef;
+
+	std::string mExecuteFunction;
+	LLSD        mExecuteParameters;
+
+	std::string mExecuteStopFunction;
+	LLSD        mExecuteStopParameters;
+	
+	std::string mIsEnabledFunction;
+	LLSD        mIsEnabledParameters;
+
+	std::string mIsRunningFunction;
+	LLSD        mIsRunningParameters;
+
+	std::string mIsStartingFunction;
+	LLSD        mIsStartingParameters;
+};
+
+
+class LLCommandManager
+:	public LLSingleton<LLCommandManager>
+{
+public:
+	struct Params : public LLInitParam::Block<Params>
+	{
+		Multiple< LLCommand::Params, AtLeast<1> > commands;
+
+		Params()
+			:	commands("command")
+		{
+		}
+	};
+
+	LLCommandManager();
+	~LLCommandManager();
+
+	U32 commandCount() const;
+	LLCommand * getCommand(U32 commandIndex);
+	LLCommand * getCommand(const LLCommandId& commandId);
+
+	static bool load();
+
+protected:
+	void addCommand(LLCommand * command);
+
+private:
+	typedef std::map<LLUUID, U32>		CommandIndexMap;
+	typedef std::vector<LLCommand *>	CommandVector;
+	
+	CommandVector	mCommands;
+	CommandIndexMap	mCommandIndices;
+};
+
+
+#endif // LL_LLCOMMANDMANAGER_H
diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp
index ca2dc644a488e70e005caf5239c1e7d05d669a31..3396213f1c20b58d5bcc324a31e2da9d1f40e57a 100644
--- a/indra/llui/lldockablefloater.cpp
+++ b/indra/llui/lldockablefloater.cpp
@@ -82,7 +82,7 @@ BOOL LLDockableFloater::postBuild()
 		mForceDocking = true;
 	}
 
-	mDockTongue = LLUI::getUIImage("windows/Flyout_Pointer.png");
+	mDockTongue = LLUI::getUIImage("Flyout_Pointer");
 	LLFloater::setDocked(true);
 	return LLView::postBuild();
 }
@@ -162,10 +162,15 @@ void LLDockableFloater::setVisible(BOOL visible)
 
 void LLDockableFloater::setMinimized(BOOL minimize)
 {
-	if(minimize)
+	if(minimize && isDocked())
 	{
+		// minimizing a docked floater just hides it
 		setVisible(FALSE);
 	}
+	else
+	{
+		LLFloater::setMinimized(minimize);
+	}
 }
 
 LLView * LLDockableFloater::getDockWidget()
@@ -234,8 +239,21 @@ void LLDockableFloater::setDockControl(LLDockControl* dockControl)
 	setDocked(isDocked());
 }
 
-const LLUIImagePtr& LLDockableFloater::getDockTongue()
+const LLUIImagePtr& LLDockableFloater::getDockTongue(LLDockControl::DocAt dock_side)
 {
+	switch(dock_side)
+	{
+	case LLDockControl::LEFT:
+		mDockTongue = LLUI::getUIImage("Flyout_Left");
+		break;
+	case LLDockControl::RIGHT:
+		mDockTongue = LLUI::getUIImage("Flyout_Right");
+		break;
+	default:
+		mDockTongue = LLUI::getUIImage("Flyout_Pointer");
+		break;
+	}
+
 	return mDockTongue;
 }
 
diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h
index 8deb6c1159fa111ec0698b97c274b5cb6bf1aa9a..89c9852f4af3349fe8e3f4bd53ea889205954c15 100644
--- a/indra/llui/lldockablefloater.h
+++ b/indra/llui/lldockablefloater.h
@@ -113,6 +113,8 @@ class LLDockableFloater : public LLFloater
 
 	bool getUniqueDocking() { return mUniqueDocking;	}
 	bool getUseTongue() { return mUseTongue; }
+
+	void setUseTongue(bool use_tongue) { mUseTongue = use_tongue;}
 private:
 	/**
 	 * Provides unique of dockable floater.
@@ -122,7 +124,7 @@ class LLDockableFloater : public LLFloater
 
 protected:
 	void setDockControl(LLDockControl* dockControl);
-	const LLUIImagePtr& getDockTongue();
+	const LLUIImagePtr& getDockTongue(LLDockControl::DocAt dock_side = LLDockControl::TOP);
 
 	// Checks if docking should be forced.
 	// It may be useful e.g. if floater created in mouselook mode (see EXT-5609)
diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp
index b1c27126d9b6d09410b7b4c3e160e31475c08a98..af39e41fa6bd4898e652accdd2a409b48cd7970a 100644
--- a/indra/llui/lldockcontrol.cpp
+++ b/indra/llui/lldockcontrol.cpp
@@ -92,19 +92,24 @@ void LLDockControl::setDock(LLView* dockWidget)
 
 void LLDockControl::getAllowedRect(LLRect& rect)
 {
-	rect = mDockableFloater->getRootView()->getRect();
+	rect = mDockableFloater->getRootView()->getChild<LLView>("non_toolbar_panel")->getRect();
 }
 
 void LLDockControl::repositionDockable()
 {
+	if (!mDockWidget) return;
 	LLRect dockRect = mDockWidget->calcScreenRect();
 	LLRect rootRect;
+	LLRect floater_rect = mDockableFloater->calcScreenRect();
 	mGetAllowedRectCallback(rootRect);
 
-	// recalculate dockable position if dock position changed, dock visibility changed,
-	// root view rect changed or recalculation is forced
-	if (mPrevDockRect != dockRect  || mDockWidgetVisible != isDockVisible()
-			|| mRootRect != rootRect || mRecalculateDocablePosition)
+	// recalculate dockable position if:
+	if (mPrevDockRect != dockRect					//dock position   changed
+		|| mDockWidgetVisible != isDockVisible()	//dock visibility changed
+		|| mRootRect != rootRect					//root view rect  changed
+		|| mFloaterRect != floater_rect				//floater rect    changed
+		|| mRecalculateDockablePosition				//recalculation is forced
+	)
 	{
 		// undock dockable and off() if dock not visible
 		if (!isDockVisible())
@@ -135,7 +140,8 @@ void LLDockControl::repositionDockable()
 
 		mPrevDockRect = dockRect;
 		mRootRect = rootRect;
-		mRecalculateDocablePosition = false;
+		mFloaterRect = floater_rect;
+		mRecalculateDockablePosition = false;
 		mDockWidgetVisible = isDockVisible();
 	}
 }
@@ -160,7 +166,7 @@ bool LLDockControl::isDockVisible()
 			case TOP:
 			{
 				// check is dock inside parent rect
-				// assume that parent for all dockable flaoters
+				// assume that parent for all dockable floaters
 				// is the root view
 				LLRect dockParentRect =
 						mDockWidget->getRootView()->calcScreenRect();
@@ -202,21 +208,33 @@ void LLDockControl::moveDockable()
 	switch (mDockAt)
 	{
 	case LEFT:
-		x = dockRect.mLeft;
-		y = dockRect.mTop + mDockTongue->getHeight() + dockableRect.getHeight();
-		// check is dockable inside root view rect
-		if (x < rootRect.mLeft)
+
+		x = dockRect.mLeft - dockableRect.getWidth();
+		y = dockRect.getCenterY() + dockableRect.getHeight() / 2;
+		
+		if (use_tongue)
 		{
-			x = rootRect.mLeft;
+			x -= mDockTongue->getWidth();
 		}
-		if (x + dockableRect.getWidth() > rootRect.mRight)
+
+		mDockTongueX = dockableRect.mRight;
+		mDockTongueY = dockableRect.getCenterY() - mDockTongue->getHeight() / 2;
+		
+		break;
+
+	case RIGHT:
+
+		x = dockRect.mRight;
+		y = dockRect.getCenterY() + dockableRect.getHeight() / 2;
+
+		if (use_tongue)
 		{
-			x = rootRect.mRight - dockableRect.getWidth();
+			x += mDockTongue->getWidth();
 		}
-		
-		mDockTongueX = x + dockableRect.getWidth()/2 - mDockTongue->getWidth() / 2;
-		
-		mDockTongueY = dockRect.mTop;
+
+		mDockTongueX = dockRect.mRight;
+		mDockTongueY = dockableRect.getCenterY() - mDockTongue->getHeight() / 2;
+
 		break;
 
 	case TOP:
@@ -314,13 +332,12 @@ void LLDockControl::moveDockable()
 		dockableRect.setLeftTopAndSize(x, y, dockableRect.getWidth(),
 				dockableRect.getHeight());
 	}
+
 	LLRect localDocableParentRect;
-	mDockableFloater->getParent()->screenRectToLocal(dockableRect,
-			&localDocableParentRect);
-	mDockableFloater->setRect(localDocableParentRect);
 
-	mDockableFloater->screenPointToLocal(mDockTongueX, mDockTongueY,
-			&mDockTongueX, &mDockTongueY);
+	mDockableFloater->getParent()->screenRectToLocal(dockableRect, &localDocableParentRect);
+	mDockableFloater->setRect(localDocableParentRect);
+	mDockableFloater->screenPointToLocal(mDockTongueX, mDockTongueY, &mDockTongueX, &mDockTongueY);
 
 }
 
@@ -329,7 +346,7 @@ void LLDockControl::on()
 	 if (isDockVisible())
 	{
 		mEnabled = true;
-		mRecalculateDocablePosition = true;
+		mRecalculateDockablePosition = true;
 	}
 }
 
@@ -340,7 +357,7 @@ void LLDockControl::off()
 
 void LLDockControl::forceRecalculatePosition()
 {
-	mRecalculateDocablePosition = true;
+	mRecalculateDockablePosition = true;
 }
 
 void LLDockControl::drawToungue()
diff --git a/indra/llui/lldockcontrol.h b/indra/llui/lldockcontrol.h
index 2e7359245f35f7ed5d20dae6dac4d7db4fbcdc6d..c9602011f654d3c5a92fb8ead6ad71bb5695fe5a 100644
--- a/indra/llui/lldockcontrol.h
+++ b/indra/llui/lldockcontrol.h
@@ -43,6 +43,7 @@ class LLDockControl
 	{
 		TOP,
 		LEFT,
+		RIGHT,
 		BOTTOM
 	};
 
@@ -79,12 +80,13 @@ class LLDockControl
 private:
 	get_allowed_rect_callback_t mGetAllowedRectCallback;
 	bool mEnabled;
-	bool mRecalculateDocablePosition;
+	bool mRecalculateDockablePosition;
 	bool mDockWidgetVisible;
 	DocAt mDockAt;
 	LLView* mDockWidget;
 	LLRect mPrevDockRect;
 	LLRect mRootRect;
+	LLRect mFloaterRect;
 	LLFloater* mDockableFloater;
 	LLUIImagePtr mDockTongue;
 	S32 mDockTongueX;
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index bc494e97f555d0be2f68221cbbb62925d495191f..33548151fd88401012497a3802c505d745ecaf6c 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -58,10 +58,23 @@
 #include "llhelp.h"
 #include "llmultifloater.h"
 #include "llsdutil.h"
+#include <boost/foreach.hpp>
+
 
 // use this to control "jumping" behavior when Ctrl-Tabbing
 const S32 TABBED_FLOATER_OFFSET = 0;
 
+namespace LLInitParam
+{
+	void TypeValues<LLFloaterEnums::EOpenPositioning>::declareValues()
+	{
+		declare("none",       LLFloaterEnums::OPEN_POSITIONING_NONE);
+		declare("cascading",  LLFloaterEnums::OPEN_POSITIONING_CASCADING);
+		declare("centered",   LLFloaterEnums::OPEN_POSITIONING_CENTERED);
+		declare("specified",  LLFloaterEnums::OPEN_POSITIONING_SPECIFIED);
+	}
+}
+
 std::string	LLFloater::sButtonNames[BUTTON_COUNT] = 
 {
 	"llfloater_close_btn",		//BUTTON_CLOSE
@@ -100,7 +113,6 @@ LLFloater::click_callback LLFloater::sButtonCallbacks[BUTTON_COUNT] =
 
 LLMultiFloater* LLFloater::sHostp = NULL;
 BOOL			LLFloater::sQuitting = FALSE; // Flag to prevent storing visibility controls while quitting
-LLFloater::handle_map_t	LLFloater::sFloaterMap;
 
 LLFloaterView* gFloaterView = NULL;
 
@@ -154,7 +166,7 @@ LLFloater::Params::Params()
 :	title("title"),
 	short_title("short_title"),
 	single_instance("single_instance", false),
-	auto_tile("auto_tile", false),
+	reuse_instance("reuse_instance", false),
 	can_resize("can_resize", false),
 	can_minimize("can_minimize", true),
 	can_close("can_close", true),
@@ -164,7 +176,10 @@ LLFloater::Params::Params()
 	save_rect("save_rect", false),
 	save_visibility("save_visibility", false),
 	can_dock("can_dock", false),
-	open_centered("open_centered", false),
+	show_title("show_title", true),
+	open_positioning("open_positioning", LLFloaterEnums::OPEN_POSITIONING_NONE),
+	specified_left("specified_left"),
+	specified_bottom("specified_bottom"),
 	header_height("header_height", 0),
 	legacy_header_height("legacy_header_height", 0),
 	close_image("close_image"),
@@ -180,7 +195,8 @@ LLFloater::Params::Params()
 	dock_pressed_image("dock_pressed_image"),
 	help_pressed_image("help_pressed_image"),
 	open_callback("open_callback"),
-	close_callback("close_callback")
+	close_callback("close_callback"),
+	follows("follows")
 {
 	changeDefault(visible, false);
 }
@@ -226,13 +242,16 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p)
 	mTitle(p.title),
 	mShortTitle(p.short_title),
 	mSingleInstance(p.single_instance),
+	mReuseInstance(p.reuse_instance.isProvided() ? p.reuse_instance : p.single_instance), // reuse single-instance floaters by default
 	mKey(key),
-	mAutoTile(p.auto_tile),
 	mCanTearOff(p.can_tear_off),
 	mCanMinimize(p.can_minimize),
 	mCanClose(p.can_close),
 	mDragOnLeft(p.can_drag_on_left),
 	mResizable(p.can_resize),
+	mOpenPositioning(p.open_positioning),
+	mSpecifiedLeft(p.specified_left),
+	mSpecifiedBottom(p.specified_bottom),
 	mMinWidth(p.min_width),
 	mMinHeight(p.min_height),
 	mHeaderHeight(p.header_height),
@@ -251,7 +270,6 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p)
 	mMinimizeSignal(NULL)
 //	mNotificationContext(NULL)
 {
-	mHandle.bind(this);
 //	mNotificationContext = new LLFloaterNotificationContext(getHandle());
 
 	// Clicks stop here.
@@ -306,9 +324,6 @@ void LLFloater::initFloater(const Params& p)
 	// Floaters are created in the invisible state	
 	setVisible(FALSE);
 
-	// add self to handle->floater map
-	sFloaterMap[mHandle] = this;
-
 	if (!getParent())
 	{
 		gFloaterView->addChild(this);
@@ -459,15 +474,24 @@ void LLFloater::layoutResizeCtrls()
 	mResizeHandle[3]->setRect(rect);
 }
 
-void LLFloater::enableResizeCtrls(bool enable)
+void LLFloater::enableResizeCtrls(bool enable, bool width, bool height)
 {
+	mResizeBar[LLResizeBar::LEFT]->setVisible(enable && width);
+	mResizeBar[LLResizeBar::LEFT]->setEnabled(enable && width);
+
+	mResizeBar[LLResizeBar::TOP]->setVisible(enable && height);
+	mResizeBar[LLResizeBar::TOP]->setEnabled(enable && height);
+	
+	mResizeBar[LLResizeBar::RIGHT]->setVisible(enable && width);
+	mResizeBar[LLResizeBar::RIGHT]->setEnabled(enable && width);
+	
+	mResizeBar[LLResizeBar::BOTTOM]->setVisible(enable && height);
+	mResizeBar[LLResizeBar::BOTTOM]->setEnabled(enable && height);
+
 	for (S32 i = 0; i < 4; ++i)
 	{
-		mResizeBar[i]->setVisible(enable);
-		mResizeBar[i]->setEnabled(enable);
-
-		mResizeHandle[i]->setVisible(enable);
-		mResizeHandle[i]->setEnabled(enable);
+		mResizeHandle[i]->setVisible(enable && width && height);
+		mResizeHandle[i]->setEnabled(enable && width && height);
 	}
 }
 
@@ -506,8 +530,6 @@ LLFloater::~LLFloater()
 	// correct, non-minimized positions.
 	setMinimized( FALSE );
 
-	sFloaterMap.erase(mHandle);
-
 	delete mDragHandle;
 	for (S32 i = 0; i < 4; i++) 
 	{
@@ -515,7 +537,6 @@ LLFloater::~LLFloater()
 		delete mResizeHandle[i];
 	}
 
-	storeRectControl();
 	setVisible(false); // We're not visible if we're destroyed
 	storeVisibilityControl();
 	storeDockStateControl();
@@ -660,6 +681,12 @@ void LLFloater::openFloater(const LLSD& key)
 	}
 	else
 	{
+		LLFloater* floater_to_stack = LLFloaterReg::getLastFloaterInGroup(mInstanceName);
+		if (!floater_to_stack)
+		{
+			floater_to_stack = LLFloaterReg::getLastFloaterCascading();
+		}
+		applyControlsAndPosition(floater_to_stack);
 		setMinimized(FALSE);
 		setVisibleAndFrontmost(mAutoFocus);
 	}
@@ -752,12 +779,19 @@ void LLFloater::closeFloater(bool app_quitting)
 			else
 			{
 				setVisible(FALSE);
+				if (!mReuseInstance)
+				{
+					destroy();
+				}
 			}
 		}
 		else
 		{
 			setVisible(FALSE); // hide before destroying (so handleVisibilityChange() gets called)
-			destroy();
+			if (!mReuseInstance)
+			{
+				destroy();
+			}
 		}
 	}
 }
@@ -822,43 +856,108 @@ LLMultiFloater* LLFloater::getHost()
 	return (LLMultiFloater*)mHostHandle.get(); 
 }
 
-void    LLFloater::applySavedVariables()
+void LLFloater::applyControlsAndPosition(LLFloater* other)
 {
-	applyRectControl();
-	applyDockState();
+	if (!applyDockState())
+	{
+		if (!applyRectControl())
+		{
+			applyPositioning(other);
+		}
+	}
 }
 
-void LLFloater::applyRectControl()
+bool LLFloater::applyRectControl()
 {
-	// first, center on screen if requested	
-	if (mOpenCentered)
+	bool saved_rect = false;
+
+	LLFloater* last_in_group = LLFloaterReg::getLastFloaterInGroup(mInstanceName);
+	if (last_in_group && last_in_group != this)
 	{
-		center();
+		// other floaters in our group, position ourselves relative to them and don't save the rect
+		mRectControl.clear();
+		mOpenPositioning = LLFloaterEnums::OPEN_POSITIONING_CASCADE_GROUP;
 	}
-
-	// override center if we have saved rect control
-	if (mRectControl.size() > 1)
+	else if (mRectControl.size() > 1)
 	{
+		// If we have a saved rect, use it
 		const LLRect& rect = getControlGroup()->getRect(mRectControl);
-		if (rect.getWidth() > 0 && rect.getHeight() > 0)
+		saved_rect = rect.notEmpty();
+		if (saved_rect)
 		{
-			translate( rect.mLeft - getRect().mLeft, rect.mBottom - getRect().mBottom);
+			setOrigin(rect.mLeft, rect.mBottom);
+
 			if (mResizable)
 			{
 				reshape(llmax(mMinWidth, rect.getWidth()), llmax(mMinHeight, rect.getHeight()));
 			}
 		}
 	}
+
+	return saved_rect;
 }
 
-void LLFloater::applyDockState()
+bool LLFloater::applyDockState()
 {
+	bool docked = false;
+
 	if (mDocStateControl.size() > 1)
 	{
-		bool dockState = getControlGroup()->getBOOL(mDocStateControl);
-		setDocked(dockState);
+		docked = getControlGroup()->getBOOL(mDocStateControl);
+		setDocked(docked);
 	}
 
+	return docked;
+}
+
+void LLFloater::applyPositioning(LLFloater* other)
+{
+	// Otherwise position according to the positioning code
+	switch (mOpenPositioning)
+	{
+	case LLFloaterEnums::OPEN_POSITIONING_CENTERED:
+		center();
+		break;
+
+	case LLFloaterEnums::OPEN_POSITIONING_SPECIFIED:
+		{
+			// Translate relative to snap rect
+			setOrigin(mSpecifiedLeft, mSpecifiedBottom);
+			const LLRect& snap_rect = gFloaterView->getSnapRect();
+			translate(snap_rect.mLeft, snap_rect.mBottom);
+			translateIntoRect(snap_rect, FALSE);
+		}
+		break;
+
+	case LLFloaterEnums::OPEN_POSITIONING_CASCADE_GROUP:
+	case LLFloaterEnums::OPEN_POSITIONING_CASCADING:
+		if (other != NULL && other != this)
+		{
+			stackWith(*other);
+		}
+		else
+		{
+			static const U32 CASCADING_FLOATER_HOFFSET = 0;
+			static const U32 CASCADING_FLOATER_VOFFSET = 0;
+			
+			const LLRect& snap_rect = gFloaterView->getSnapRect();
+
+			const S32 horizontal_offset = CASCADING_FLOATER_HOFFSET;
+			const S32 vertical_offset = snap_rect.getHeight() - CASCADING_FLOATER_VOFFSET;
+
+			S32 rect_height = getRect().getHeight();
+			setOrigin(horizontal_offset, vertical_offset - rect_height);
+
+			translate(snap_rect.mLeft, snap_rect.mBottom);
+			translateIntoRect(snap_rect, FALSE);
+		}
+		break;
+
+	case LLFloaterEnums::OPEN_POSITIONING_NONE:
+	default:
+		// Do nothing
+		break;
+	}
 }
 
 void LLFloater::applyTitle()
@@ -935,7 +1034,9 @@ BOOL LLFloater::canSnapTo(const LLView* other_view)
 	if (other_view != getParent())
 	{
 		const LLFloater* other_floaterp = dynamic_cast<const LLFloater*>(other_view);		
-		if (other_floaterp && other_floaterp->getSnapTarget() == getHandle() && mDependents.find(other_floaterp->getHandle()) != mDependents.end())
+		if (other_floaterp 
+			&& other_floaterp->getSnapTarget() == getHandle() 
+			&& mDependents.find(other_floaterp->getHandle()) != mDependents.end())
 		{
 			// this is a dependent that is already snapped to us, so don't snap back to it
 			return FALSE;
@@ -967,9 +1068,10 @@ void LLFloater::handleReshape(const LLRect& new_rect, bool by_user)
 	const LLRect old_rect = getRect();
 	LLView::handleReshape(new_rect, by_user);
 
-	if (by_user)
+	if (by_user && !isMinimized())
 	{
 		storeRectControl();
+		mOpenPositioning = LLFloaterEnums::OPEN_POSITIONING_NONE;
 	}
 
 	// if not minimized, adjust all snapped dependents to new shape
@@ -1029,7 +1131,7 @@ void LLFloater::setMinimized(BOOL minimize)
 
 	if (minimize == mMinimized) return;
 
-	if(mMinimizeSignal)
+	if (mMinimizeSignal)
 	{
 		(*mMinimizeSignal)(this, LLSD(minimize));
 	}
@@ -1061,10 +1163,6 @@ void LLFloater::setMinimized(BOOL minimize)
 			mButtonsEnabled[BUTTON_RESTORE] = TRUE;
 		}
 
-		if (mDragHandle)
-		{
-			mDragHandle->setVisible(TRUE);
-		}
 		setBorderVisible(TRUE);
 
 		for(handle_set_iter_t dependent_it = mDependents.begin();
@@ -1215,19 +1313,9 @@ void LLFloater::setIsChrome(BOOL is_chrome)
 		mButtons[BUTTON_CLOSE]->setToolTip(LLStringExplicit(getButtonTooltip(Params(), BUTTON_CLOSE, is_chrome)));
 	}
 	
-	// no titles displayed on "chrome" floaters
-	if (mDragHandle)
-		mDragHandle->setTitleVisible(!is_chrome);
-	
 	LLPanel::setIsChrome(is_chrome);
 }
 
-void LLFloater::setTitleVisible(bool visible)
-{
-	if (mDragHandle)
-		mDragHandle->setTitleVisible(visible);
-}
-
 // Change the draw style to account for the foreground state.
 void LLFloater::setForeground(BOOL front)
 {
@@ -1315,7 +1403,10 @@ void LLFloater::moveResizeHandlesToFront()
 
 BOOL LLFloater::isFrontmost()
 {
-	return gFloaterView && gFloaterView->getFrontmost() == this && getVisible();
+	LLFloaterView* floater_view = getParentByType<LLFloaterView>();
+	return getVisible()
+			&& (floater_view 
+				&& floater_view->getFrontmost() == this);
 }
 
 void LLFloater::addDependentFloater(LLFloater* floaterp, BOOL reposition)
@@ -1388,6 +1479,7 @@ BOOL LLFloater::handleMouseDown(S32 x, S32 y, MASK mask)
 		if(offerClickToButton(x, y, mask, BUTTON_CLOSE)) return TRUE;
 		if(offerClickToButton(x, y, mask, BUTTON_RESTORE)) return TRUE;
 		if(offerClickToButton(x, y, mask, BUTTON_TEAR_OFF)) return TRUE;
+		if(offerClickToButton(x, y, mask, BUTTON_DOCK)) return TRUE;
 
 		// Otherwise pass to drag handle for movement
 		return mDragHandle->handleMouseDown(x, y, mask);
@@ -1493,6 +1585,13 @@ void LLFloater::setDocked(bool docked, bool pop_on_undock)
 	{
 		mDocked = docked;
 		mButtonsEnabled[BUTTON_DOCK] = !mDocked;
+
+		if (mDocked)
+		{
+			setMinimized(FALSE);
+			mOpenPositioning = LLFloaterEnums::OPEN_POSITIONING_NONE;
+		}
+
 		updateTitleButtons();
 
 		storeDockStateControl();
@@ -1576,18 +1675,17 @@ void LLFloater::onClickHelp( LLFloater* self )
 LLFloater* LLFloater::getClosableFloaterFromFocus()
 {
 	LLFloater* focused_floater = NULL;
-
-	handle_map_iter_t iter;
-	for(iter = sFloaterMap.begin(); iter != sFloaterMap.end(); ++iter)
+	LLInstanceTracker<LLFloater>::instance_iter it = beginInstances();
+	LLInstanceTracker<LLFloater>::instance_iter end_it = endInstances();
+	for (; it != end_it; ++it)
 	{
-		focused_floater = iter->second;
-		if (focused_floater->hasFocus())
+		if (it->hasFocus())
 		{
 			break;
 		}
 	}
 
-	if (iter == sFloaterMap.end())
+	if (it == endInstances())
 	{
 		// nothing found, return
 		return NULL;
@@ -1731,7 +1829,7 @@ void LLFloater::draw()
 		{
 			drawChild(mButtons[i]);
 		}
-		drawChild(mDragHandle);
+		drawChild(mDragHandle, 0, 0, TRUE);
 	}
 	else
 	{
@@ -1848,6 +1946,12 @@ void LLFloater::setCanDrag(BOOL can_drag)
 	}
 }
 
+bool LLFloater::getCanDrag()
+{
+	return mDragHandle->getEnabled();
+}
+
+
 void LLFloater::updateTitleButtons()
 {
 	static LLUICachedControl<S32> floater_close_box_size ("UIFloaterCloseBoxSize", 0);
@@ -2062,8 +2166,15 @@ LLFloaterView::LLFloaterView (const Params& p)
 // By default, adjust vertical.
 void LLFloaterView::reshape(S32 width, S32 height, BOOL called_from_parent)
 {
-	S32 old_width = getRect().getWidth();
-	S32 old_height = getRect().getHeight();
+	S32 old_right = mLastSnapRect.mRight;
+	S32 old_top = mLastSnapRect.mTop;
+
+	LLView::reshape(width, height, called_from_parent);
+
+	S32 new_right = getSnapRect().mRight;
+	S32 new_top = getSnapRect().mTop;
+
+	mLastSnapRect = getSnapRect();
 
 	for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it)
 	{
@@ -2071,66 +2182,48 @@ void LLFloaterView::reshape(S32 width, S32 height, BOOL called_from_parent)
 		LLFloater* floaterp = (LLFloater*)viewp;
 		if (floaterp->isDependent())
 		{
-			// dependents use same follow flags as their "dependee"
+			// dependents are moved with their "dependee"
 			continue;
 		}
 
-		// Make if follow the edge it is closest to
-		U32 follow_flags = 0x0;
-
-		if (floaterp->isMinimized())
-		{
-			follow_flags |= (FOLLOWS_LEFT | FOLLOWS_TOP);
-		}
-		else
+		if (!floaterp->isMinimized())
 		{
 			LLRect r = floaterp->getRect();
 
 			// Compute absolute distance from each edge of screen
 			S32 left_offset = llabs(r.mLeft - 0);
-			S32 right_offset = llabs(old_width - r.mRight);
+			S32 right_offset = llabs(old_right - r.mRight);
 
-			S32 top_offset = llabs(old_height - r.mTop);
+			S32 top_offset = llabs(old_top - r.mTop);
 			S32 bottom_offset = llabs(r.mBottom - 0);
 
+			S32 translate_x = 0;
+			S32 translate_y = 0;
 
-			if (left_offset < right_offset)
-			{
-				follow_flags |= FOLLOWS_LEFT;
-			}
-			else
+			if (left_offset > right_offset)
 			{
-				follow_flags |= FOLLOWS_RIGHT;
+				translate_x = new_right - old_right;
 			}
 
-			// "No vertical adjustment" usually means that the bottom of the view
-			// has been pushed up or down.  Hence we want the floaters to follow
-			// the top.
 			if (top_offset < bottom_offset)
 			{
-				follow_flags |= FOLLOWS_TOP;
+				translate_y = new_top - old_top;
 			}
-			else
+
+			// don't reposition immovable floaters
+			if (floaterp->getCanDrag())
 			{
-				follow_flags |= FOLLOWS_BOTTOM;
+				floaterp->translate(translate_x, translate_y);
 			}
-		}
-
-		floaterp->setFollows(follow_flags);
-
-		//RN: all dependent floaters copy follow behavior of "parent"
-		for(LLFloater::handle_set_iter_t dependent_it = floaterp->mDependents.begin();
-			dependent_it != floaterp->mDependents.end(); ++dependent_it)
-		{
-			LLFloater* dependent_floaterp = dependent_it->get();
-			if (dependent_floaterp)
+			BOOST_FOREACH(LLHandle<LLFloater> dependent_floater, floaterp->mDependents)
 			{
-				dependent_floaterp->setFollows(follow_flags);
+				if (dependent_floater.get())
+				{
+					dependent_floater.get()->translate(translate_x, translate_y);
+				}
 			}
 		}
 	}
-
-	LLView::reshape(width, height, called_from_parent);
 }
 
 
@@ -2451,6 +2544,52 @@ void LLFloaterView::closeAllChildren(bool app_quitting)
 	}
 }
 
+void LLFloaterView::hiddenFloaterClosed(LLFloater* floater)
+{
+	for (hidden_floaters_t::iterator it = mHiddenFloaters.begin(), end_it = mHiddenFloaters.end();
+		it != end_it;
+		++it)
+	{
+		if (it->first.get() == floater)
+		{
+			it->second.disconnect();
+			mHiddenFloaters.erase(it);
+			break;
+		}
+	}
+}
+
+void LLFloaterView::hideAllFloaters()
+{
+	child_list_t child_list = *(getChildList());
+
+	for (child_list_iter_t it = child_list.begin(); it != child_list.end(); ++it)
+	{
+		LLFloater* floaterp = dynamic_cast<LLFloater*>(*it);
+		if (floaterp && floaterp->getVisible())
+		{
+			floaterp->setVisible(false);
+			boost::signals2::connection connection = floaterp->mCloseSignal.connect(boost::bind(&LLFloaterView::hiddenFloaterClosed, this, floaterp));
+			mHiddenFloaters.push_back(std::make_pair(floaterp->getHandle(), connection));
+		}
+	}
+}
+
+void LLFloaterView::showHiddenFloaters()
+{
+	for (hidden_floaters_t::iterator it = mHiddenFloaters.begin(), end_it = mHiddenFloaters.end();
+		it != end_it;
+		++it)
+	{
+		LLFloater* floaterp = it->first.get();
+		if (floaterp)
+		{
+			floaterp->setVisible(true);
+		}
+		it->second.disconnect();
+	}
+	mHiddenFloaters.clear();
+}
 
 BOOL LLFloaterView::allChildrenClosed()
 {
@@ -2484,6 +2623,12 @@ void LLFloaterView::shiftFloaters(S32 x_offset, S32 y_offset)
 
 void LLFloaterView::refresh()
 {
+	LLRect snap_rect = getSnapRect();
+	if (snap_rect != mLastSnapRect)
+	{
+		reshape(getRect().getWidth(), getRect().getHeight(), TRUE);
+	}
+
 	// Constrain children to be entirely on the screen
 	for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it)
 	{
@@ -2549,7 +2694,7 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out
 	}
 
 	// move window fully onscreen
-	if (floater->translateIntoRect( getLocalRect(), allow_partial_outside ))
+	if (floater->translateIntoRect( getSnapRect(), allow_partial_outside ))
 	{
 		floater->clearSnapTarget();
 	}
@@ -2775,7 +2920,6 @@ void LLFloater::setInstanceName(const std::string& name)
 		{
 			mDocStateControl = LLFloaterReg::declareDockStateControl(ctrl_name);
 		}
-
 	}
 }
 
@@ -2822,6 +2966,9 @@ void LLFloater::initFromParams(const LLFloater::Params& p)
 	 // control_name, tab_stop, focus_lost_callback, initial_value, rect, enabled, visible
 	LLPanel::initFromParams(p);
 
+	// override any follows flags
+	setFollows(FOLLOWS_NONE);
+
 	mTitle = p.title;
 	mShortTitle = p.short_title;
 	applyTitle();
@@ -2837,8 +2984,11 @@ void LLFloater::initFromParams(const LLFloater::Params& p)
 	mHeaderHeight = p.header_height;
 	mLegacyHeaderHeight = p.legacy_header_height;
 	mSingleInstance = p.single_instance;
-	mAutoTile = p.auto_tile;
-	mOpenCentered = p.open_centered;
+	mReuseInstance = p.reuse_instance.isProvided() ? p.reuse_instance : p.single_instance;
+
+	mOpenPositioning = p.open_positioning;
+	mSpecifiedLeft = p.specified_left;
+	mSpecifiedBottom = p.specified_bottom;
 
 	if (p.save_rect && mRectControl.empty())
 	{
@@ -2848,7 +2998,6 @@ void LLFloater::initFromParams(const LLFloater::Params& p)
 	{
 		mVisibilityControl = "t"; // flag to build mVisibilityControl name once mInstanceName is set
 	}
-
 	if(p.save_dock_state)
 	{
 		mDocStateControl = "t"; // flag to build mDocStateControl name once mInstanceName is set
@@ -2857,13 +3006,18 @@ void LLFloater::initFromParams(const LLFloater::Params& p)
 	// open callback 
 	if (p.open_callback.isProvided())
 	{
-		mOpenSignal.connect(initCommitCallback(p.open_callback));
+		setOpenCallback(initCommitCallback(p.open_callback));
 	}
 	// close callback 
 	if (p.close_callback.isProvided())
 	{
 		setCloseCallback(initCommitCallback(p.close_callback));
 	}
+
+	if (mDragHandle)
+	{
+		mDragHandle->setTitleVisible(p.show_title);
+	}
 }
 
 boost::signals2::connection LLFloater::setMinimizeCallback( const commit_signal_t::slot_type& cb ) 
@@ -2872,6 +3026,11 @@ boost::signals2::connection LLFloater::setMinimizeCallback( const commit_signal_
 	return mMinimizeSignal->connect(cb); 
 }
 
+boost::signals2::connection LLFloater::setOpenCallback( const commit_signal_t::slot_type& cb )
+{
+	return mOpenSignal.connect(cb);
+}
+
 boost::signals2::connection LLFloater::setCloseCallback( const commit_signal_t::slot_type& cb )
 {
 	return mCloseSignal.connect(cb);
@@ -2916,7 +3075,9 @@ bool LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, const std::str
 			return FALSE;
 		}
 
-		parser.readXUI(referenced_xml, params, LLUICtrlFactory::getInstance()->getCurFileName());
+		Params referenced_params;
+		parser.readXUI(referenced_xml, referenced_params, LLUICtrlFactory::getInstance()->getCurFileName());
+		params.fillFrom(referenced_params);
 
 		// add children using dimensions from referenced xml for consistent layout
 		setShape(params.rect);
@@ -3105,7 +3266,6 @@ void LLFloater::stackWith(LLFloater& other)
 
 	next_rect.setLeftTopAndSize(next_rect.mLeft, next_rect.mTop, getRect().getWidth(), getRect().getHeight());
 	
-	mRectControl.clear(); // don't save rect of stacked floaters
 	setShape(next_rect);
 }
 
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 58c2d342530c817b8829f1aa72c3f19b3f174420..59b35d206f265024dd0e85e0e4802d0cb45f6331 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -35,6 +35,7 @@
 #include "lluuid.h"
 //#include "llnotificationsutil.h"
 #include <set>
+#include <boost/signals2.hpp>
 
 class LLDragHandle;
 class LLResizeHandle;
@@ -59,11 +60,35 @@ const BOOL CLOSE_NO = FALSE;
 const BOOL ADJUST_VERTICAL_YES = TRUE;
 const BOOL ADJUST_VERTICAL_NO = FALSE;
 
-class LLFloater : public LLPanel
+namespace LLFloaterEnums
 {
-friend class LLFloaterView;
-friend class LLFloaterReg;
-friend class LLMultiFloater;
+	enum EOpenPositioning
+	{
+		OPEN_POSITIONING_NONE,
+		OPEN_POSITIONING_CASCADING,
+		OPEN_POSITIONING_CASCADE_GROUP,
+		OPEN_POSITIONING_CENTERED,
+		OPEN_POSITIONING_SPECIFIED,
+		OPEN_POSITIONING_COUNT
+	};
+}
+
+namespace LLInitParam
+{
+	template<>
+	struct TypeValues<LLFloaterEnums::EOpenPositioning> : public TypeValuesHelper<LLFloaterEnums::EOpenPositioning>
+	{
+		static void declareValues();
+	};
+}
+
+
+class LLFloater : public LLPanel, public LLInstanceTracker<LLFloater>
+{
+	friend class LLFloaterView;
+	friend class LLFloaterReg;
+	friend class LLMultiFloater;
+
 public:
 	struct KeyCompare
 	{
@@ -95,7 +120,7 @@ friend class LLMultiFloater;
 								short_title;
 		
 		Optional<bool>			single_instance,
-								auto_tile,
+								reuse_instance,
 								can_resize,
 								can_minimize,
 								can_close,
@@ -105,7 +130,13 @@ friend class LLMultiFloater;
 								save_visibility,
 								save_dock_state,
 								can_dock,
-								open_centered;
+								show_title;
+		
+		Optional<LLFloaterEnums::EOpenPositioning>	open_positioning;
+		Optional<S32>								specified_left;
+		Optional<S32>								specified_bottom;
+
+		
 		Optional<S32>			header_height,
 								legacy_header_height; // HACK see initFromXML()
 
@@ -125,6 +156,8 @@ friend class LLMultiFloater;
 		
 		Optional<CommitCallbackParam> open_callback,
 									  close_callback;
+
+		Ignored					follows;
 		
 		Params();
 	};
@@ -144,6 +177,7 @@ friend class LLMultiFloater;
 	bool buildFromFile(const std::string &filename, LLXMLNodePtr output_node = NULL);
 
 	boost::signals2::connection setMinimizeCallback( const commit_signal_t::slot_type& cb );
+	boost::signals2::connection setOpenCallback( const commit_signal_t::slot_type& cb );
 	boost::signals2::connection setCloseCallback( const commit_signal_t::slot_type& cb );
 
 	void initFromParams(const LLFloater::Params& p);
@@ -179,7 +213,6 @@ friend class LLMultiFloater;
 	std::string		getTitle() const;
 	void			setShortTitle( const std::string& short_title );
 	std::string		getShortTitle() const;
-	void			setTitleVisible(bool visible);
 	virtual void	setMinimized(BOOL b);
 	void			moveResizeHandlesToFront();
 	void			addDependentFloater(LLFloater* dependent, BOOL reposition = TRUE);
@@ -203,6 +236,7 @@ friend class LLMultiFloater;
 	void			setCanTearOff(BOOL can_tear_off);
 	virtual void	setCanResize(BOOL can_resize);
 	void			setCanDrag(BOOL can_drag);
+	bool			getCanDrag();
 	void			setHost(LLMultiFloater* host);
 	BOOL			isResizable() const				{ return mResizable; }
 	void			setResizeLimits( S32 min_width, S32 min_height );
@@ -251,7 +285,7 @@ friend class LLMultiFloater;
 	void			clearSnapTarget() { mSnappedTo.markDead(); }
 	LLHandle<LLFloater>	getSnapTarget() const { return mSnappedTo; }
 
-	LLHandle<LLFloater> getHandle() const { return mHandle; }
+	LLHandle<LLFloater> getHandle() const { return getDerivedHandle<LLFloater>(); }
 	const LLSD& 	getKey() { return mKey; }
 	virtual bool	matchesKey(const LLSD& key) { return mSingleInstance || KeyCompare::equate(key, mKey); }
 	
@@ -265,8 +299,6 @@ friend class LLMultiFloater;
 
 	virtual void    setTornOff(bool torn_off) { mTornOff = torn_off; }
 
-	void			stackWith(LLFloater& other);
-
 	// Return a closeable floater, if any, given the current focus.
 	static LLFloater* getClosableFloaterFromFocus(); 
 
@@ -290,11 +322,17 @@ friend class LLMultiFloater;
 
 	void			updateTransparency(ETypeTransparency transparency_type);
 		
+	void			enableResizeCtrls(bool enable, bool width = true, bool height = true);
+
+	bool			isPositioning(LLFloaterEnums::EOpenPositioning p) const { return (p == mOpenPositioning); }
 protected:
-	virtual void    applySavedVariables();
+	void			applyControlsAndPosition(LLFloater* other);
 
-	void			applyRectControl();
-	void			applyDockState();
+	void			stackWith(LLFloater& other);
+
+	virtual bool	applyRectControl();
+	bool			applyDockState();
+	void			applyPositioning(LLFloater* other);
 	void			storeRectControl();
 	void			storeVisibilityControl();
 	void			storeDockStateControl();
@@ -339,7 +377,6 @@ friend class LLMultiFloater;
 	BOOL			offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButton index);
 	void			addResizeCtrls();
 	void			layoutResizeCtrls();
-	void			enableResizeCtrls(bool enable);
 	void 			addDragHandle();
 	void			layoutDragHandle();		// repair layout
 
@@ -376,15 +413,18 @@ friend class LLMultiFloater;
 	LLUIString		mShortTitle;
 	
 	BOOL			mSingleInstance;	// TRUE if there is only ever one instance of the floater
+	bool			mReuseInstance;		// true if we want to hide the floater when we close it instead of destroying it
 	std::string		mInstanceName;		// Store the instance name so we can remove ourselves from the list
-	BOOL			mAutoTile;			// TRUE if placement of new instances tiles
 	
 	BOOL			mCanTearOff;
 	BOOL			mCanMinimize;
 	BOOL			mCanClose;
 	BOOL			mDragOnLeft;
 	BOOL			mResizable;
-	bool			mOpenCentered;
+
+	LLFloaterEnums::EOpenPositioning	mOpenPositioning;
+	S32									mSpecifiedLeft;
+	S32									mSpecifiedBottom;
 	
 	S32				mMinWidth;
 	S32				mMinHeight;
@@ -423,18 +463,9 @@ friend class LLMultiFloater;
 	typedef void(*click_callback)(LLFloater*);
 	static click_callback sButtonCallbacks[BUTTON_COUNT];
 
-	typedef std::map<LLHandle<LLFloater>, LLFloater*> handle_map_t;
-	typedef std::map<LLHandle<LLFloater>, LLFloater*>::iterator handle_map_iter_t;
-	static handle_map_t	sFloaterMap;
-
-	std::vector<LLHandle<LLView> > mMinimizedHiddenChildren;
-
 	BOOL			mHasBeenDraggedWhileMinimized;
 	S32				mPreviousMinimizedBottom;
 	S32				mPreviousMinimizedLeft;
-
-//	LLFloaterNotificationContext* mNotificationContext;
-	LLRootHandle<LLFloater>		mHandle;	
 };
 
 
@@ -482,6 +513,10 @@ class LLFloaterView : public LLUICtrl
 	BOOL			allChildrenClosed();
 	void			shiftFloaters(S32 x_offset, S32 y_offset);
 
+	void			hideAllFloaters();
+	void			showHiddenFloaters();
+
+
 	LLFloater* getFrontmost() const;
 	LLFloater* getBackmost() const;
 	LLFloater* getParentFloater(LLView* viewp) const;
@@ -496,11 +531,16 @@ class LLFloaterView : public LLUICtrl
 	void setFloaterSnapView(LLHandle<LLView> snap_view) {mSnapView = snap_view; }
 
 private:
+	void hiddenFloaterClosed(LLFloater* floater);
+
+	LLRect				mLastSnapRect;
 	LLHandle<LLView>	mSnapView;
 	BOOL			mFocusCycleMode;
 	S32				mSnapOffsetBottom;
 	S32				mSnapOffsetRight;
 	S32				mMinimizePositionVOffset;
+	typedef std::vector<std::pair<LLHandle<LLFloater>, boost::signals2::connection> > hidden_floaters_t;
+	hidden_floaters_t mHiddenFloaters;
 };
 
 //
diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp
index fc7dcfcc4e3d64791d8f27a1161c667a9bccdfa3..e144b68f5ebb00ae3df2316233d359ff0092f8f9 100644
--- a/indra/llui/llfloaterreg.cpp
+++ b/indra/llui/llfloaterreg.cpp
@@ -59,19 +59,57 @@ void LLFloaterReg::add(const std::string& name, const std::string& filename, con
 //static
 LLFloater* LLFloaterReg::getLastFloaterInGroup(const std::string& name)
 {
-	LLRect rect;
 	const std::string& groupname = sGroupMap[name];
 	if (!groupname.empty())
 	{
 		instance_list_t& list = sInstanceMap[groupname];
 		if (!list.empty())
 		{
-			return list.back();
+			for (instance_list_t::reverse_iterator iter = list.rbegin(); iter != list.rend(); ++iter)
+			{
+				LLFloater* inst = *iter;
+
+				if (inst->getVisible() && !inst->isMinimized())
+				{
+					return inst;
+				}
+			}
 		}
 	}
 	return NULL;
 }
 
+LLFloater* LLFloaterReg::getLastFloaterCascading()
+{
+	LLRect candidate_rect;
+	candidate_rect.mTop = 100000;
+	LLFloater* candidate_floater = NULL;
+
+	std::map<std::string,std::string>::const_iterator it = sGroupMap.begin(), it_end = sGroupMap.end();
+	for( ; it != it_end; ++it)
+	{
+		const std::string& group_name = it->second;
+
+		instance_list_t& instances = sInstanceMap[group_name];
+
+		for (instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); ++iter)
+		{
+			LLFloater* inst = *iter;
+
+			if (inst->getVisible() && inst->isPositioning(LLFloaterEnums::OPEN_POSITIONING_CASCADING))
+			{
+				if (candidate_rect.mTop > inst->getRect().mTop)
+				{
+					candidate_floater = inst;
+					candidate_rect = inst->getRect();
+				}
+			}
+		}
+	}
+
+	return candidate_floater;
+}
+
 //static
 LLFloater* LLFloaterReg::findInstance(const std::string& name, const LLSD& key)
 {
@@ -107,37 +145,33 @@ LLFloater* LLFloaterReg::getInstance(const std::string& name, const LLSD& key)
 			if (!groupname.empty())
 			{
 				instance_list_t& list = sInstanceMap[groupname];
-				int index = list.size();
 
 				res = build_func(key);
-				
+				if (!res)
+				{
+					llwarns << "Failed to build floater type: '" << name << "'." << llendl;
+					return NULL;
+				}
 				bool success = res->buildFromFile(xui_file, NULL);
 				if (!success)
 				{
 					llwarns << "Failed to build floater type: '" << name << "'." << llendl;
 					return NULL;
 				}
-					
+
 				// Note: key should eventually be a non optional LLFloater arg; for now, set mKey to be safe
 				if (res->mKey.isUndefined()) 
 				{
-						res->mKey = key;
+					res->mKey = key;
 				}
 				res->setInstanceName(name);
-				res->applySavedVariables(); // Can't apply rect and dock state until setting instance name
-				if (res->mAutoTile && !res->getHost() && index > 0)
-				{
-					LLFloater* last_floater = getLastFloaterInGroup(groupname);
-					if (last_floater)
-					{
-						res->stackWith(*last_floater);
-						gFloaterView->adjustToFitScreen(res, true);
-					}
-				}
-				else
-				{
-					gFloaterView->adjustToFitScreen(res, false);
-				}
+
+				LLFloater *last_floater = (list.empty() ? NULL : list.back());
+
+				res->applyControlsAndPosition(last_floater);
+
+				gFloaterView->adjustToFitScreen(res, false);
+
 				list.push_back(res);
 			}
 		}
@@ -403,70 +437,71 @@ void LLFloaterReg::registerControlVariables()
 	}
 }
 
-// Callbacks
-
-// static
-// Call once (i.e use for init callbacks)
-void LLFloaterReg::initUICtrlToFloaterVisibilityControl(LLUICtrl* ctrl, const LLSD& sdname)
+//static
+void LLFloaterReg::toggleInstanceOrBringToFront(const LLSD& sdname, const LLSD& key)
 {
-	// Get the visibility control name for the floater
-	std::string vis_control_name = LLFloaterReg::declareVisibilityControl(sdname.asString());
-	// Set the control value to the floater visibility control (Sets the value as well)
-	ctrl->setControlVariable(LLFloater::getControlGroup()->getControl(vis_control_name));
-}
+	//
+	// Floaters controlled by the toolbar behave a bit differently from others.
+	// Namely they have 3-4 states as defined in the design wiki page here:
+	//   https://wiki.lindenlab.com/wiki/FUI_Button_states
+	//
+	// The basic idea is this:
+	// * If the target floater is minimized, this button press will un-minimize it.
+	// * Else if the target floater is closed open it.
+	// * Else if the target floater does not have focus, give it focus.
+	//       * Also, if it is not on top, bring it forward when focus is given.
+	// * Else the target floater is open, close it.
+	// 
 
-// callback args may use "floatername.key" format
-static void parse_name_key(std::string& name, LLSD& key)
-{
-	std::string instname = name;
-	std::size_t dotpos = instname.find(".");
-	if (dotpos != std::string::npos)
+	std::string name = sdname.asString();
+	LLFloater* instance = getInstance(name, key); 
+
+	if (!instance)
+	{
+		lldebugs << "Unable to get instance of floater '" << name << "'" << llendl;
+	}
+	else if (instance->isMinimized())
+	{
+		instance->setMinimized(FALSE);
+		instance->setVisibleAndFrontmost();
+	}
+	else if (!instance->isShown())
+	{
+		instance->openFloater(key);
+		instance->setVisibleAndFrontmost();
+	}
+	else if (!instance->isFrontmost())
+	{
+		instance->setVisibleAndFrontmost();
+	}
+	else
 	{
-		name = instname.substr(0, dotpos);
-		key = LLSD(instname.substr(dotpos+1, std::string::npos));
+		instance->closeFloater();
 	}
 }
 
-//static
-void LLFloaterReg::showFloaterInstance(const LLSD& sdname)
-{
-	LLSD key;
-	std::string name = sdname.asString();
-	parse_name_key(name, key);
-	showInstance(name, key, TRUE);
-}
-//static
-void LLFloaterReg::hideFloaterInstance(const LLSD& sdname)
-{
-	LLSD key;
-	std::string name = sdname.asString();
-	parse_name_key(name, key);
-	hideInstance(name, key);
-}
-//static
-void LLFloaterReg::toggleFloaterInstance(const LLSD& sdname)
+// static
+U32 LLFloaterReg::getVisibleFloaterInstanceCount()
 {
-	LLSD key;
-	std::string name = sdname.asString();
-	parse_name_key(name, key);
-	toggleInstance(name, key);
-}
+	U32 count = 0;
 
-//static
-bool LLFloaterReg::floaterInstanceVisible(const LLSD& sdname)
-{
-	LLSD key;
-	std::string name = sdname.asString();
-	parse_name_key(name, key);
-	return instanceVisible(name, key);
-}
+	std::map<std::string,std::string>::const_iterator it = sGroupMap.begin(), it_end = sGroupMap.end();
+	for( ; it != it_end; ++it)
+	{
+		const std::string& group_name = it->second;
 
-//static
-bool LLFloaterReg::floaterInstanceMinimized(const LLSD& sdname)
-{
-	LLSD key;
-	std::string name = sdname.asString();
-	parse_name_key(name, key);
-	LLFloater* instance = findInstance(name, key); 
-	return LLFloater::isShown(instance);
+		instance_list_t& instances = sInstanceMap[group_name];
+
+		for (instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); ++iter)
+		{
+			LLFloater* inst = *iter;
+
+			if (inst->getVisible() && !inst->isMinimized())
+			{
+				count++;
+			}
+		}
+	}
+
+	return count;
 }
diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h
index a2027a77a00e7c4e6a24c7466243175a778400d9..534cf8b40ab882a85629aa155af26b1b2031672b 100644
--- a/indra/llui/llfloaterreg.h
+++ b/indra/llui/llfloaterreg.h
@@ -87,6 +87,7 @@ class LLFloaterReg
 
 	// Helpers
 	static LLFloater* getLastFloaterInGroup(const std::string& name);
+	static LLFloater* getLastFloaterCascading();
 	
 	// Find / get (create) / remove / destroy
 	static LLFloater* findInstance(const std::string& name, const LLSD& key = LLSD());
@@ -123,12 +124,7 @@ class LLFloaterReg
 	static void registerControlVariables();
 
 	// Callback wrappers
-	static void initUICtrlToFloaterVisibilityControl(LLUICtrl* ctrl, const LLSD& sdname);
-	static void showFloaterInstance(const LLSD& sdname);
-	static void hideFloaterInstance(const LLSD& sdname);
-	static void toggleFloaterInstance(const LLSD& sdname);
-	static bool floaterInstanceVisible(const LLSD& sdname);
-	static bool floaterInstanceMinimized(const LLSD& sdname);
+	static void toggleInstanceOrBringToFront(const LLSD& sdname, const LLSD& key = LLSD());
 	
 	// Typed find / get / show
 	template <class T>
@@ -151,6 +147,7 @@ class LLFloaterReg
 
 	static void blockShowFloaters(bool value) { sBlockShowFloaters = value;}
 	
+	static U32 getVisibleFloaterInstanceCount();
 };
 
 #endif
diff --git a/indra/llui/llhandle.h b/indra/llui/llhandle.h
index 8c000eee48cc6fe4f682cd33e88dd09e52da94f5..37c657dd9229b38ace1e1e1bc6f12273afce4de4 100644
--- a/indra/llui/llhandle.h
+++ b/indra/llui/llhandle.h
@@ -28,17 +28,18 @@
 #define LLHANDLE_H
 
 #include "llpointer.h"
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/utility/enable_if.hpp>
 
-template <typename T>
 class LLTombStone : public LLRefCount
 {
 public:
-	LLTombStone(T* target = NULL) : mTarget(target) {}
+	LLTombStone(void* target = NULL) : mTarget(target) {}
 
-	void setTarget(T* target) { mTarget = target; }
-	T* getTarget() const { return mTarget; }
+	void setTarget(void* target) { mTarget = target; }
+	void* getTarget() const { return mTarget; }
 private:
-	T* mTarget;
+	mutable void* mTarget;
 };
 
 //	LLHandles are used to refer to objects whose lifetime you do not control or influence.  
@@ -53,13 +54,15 @@ class LLTombStone : public LLRefCount
 template <typename T>
 class LLHandle
 {
+	template <typename U> friend class LLHandle;
+	template <typename U> friend class LLHandleProvider;
 public:
 	LLHandle() : mTombStone(getDefaultTombStone()) {}
-	const LLHandle<T>& operator =(const LLHandle<T>& other)  
-	{ 
-		mTombStone = other.mTombStone;
-		return *this; 
-	}
+
+	template<typename U>
+	LLHandle(const LLHandle<U>& other, typename boost::enable_if< typename boost::is_convertible<U*, T*> >::type* dummy = 0)
+	: mTombStone(other.mTombStone)
+	{}
 
 	bool isDead() const 
 	{ 
@@ -73,7 +76,7 @@ class LLHandle
 
 	T* get() const
 	{
-		return mTombStone->getTarget();
+		return reinterpret_cast<T*>(mTombStone->getTarget());
 	}
 
 	friend bool operator== (const LLHandle<T>& lhs, const LLHandle<T>& rhs)
@@ -94,12 +97,13 @@ class LLHandle
 	}
 
 protected:
-	LLPointer<LLTombStone<T> > mTombStone;
+	LLPointer<LLTombStone> mTombStone;
 
 private:
-	static LLPointer<LLTombStone<T> >& getDefaultTombStone()
+	typedef T* pointer_t;
+	static LLPointer<LLTombStone>& getDefaultTombStone()
 	{
-		static LLPointer<LLTombStone<T> > sDefaultTombStone = new LLTombStone<T>;
+		static LLPointer<LLTombStone> sDefaultTombStone = new LLTombStone;
 		return sDefaultTombStone;
 	}
 };
@@ -108,23 +112,26 @@ template <typename T>
 class LLRootHandle : public LLHandle<T>
 {
 public:
+	typedef LLRootHandle<T> self_t;
+	typedef LLHandle<T> base_t;
+
 	LLRootHandle(T* object) { bind(object); }
 	LLRootHandle() {};
 	~LLRootHandle() { unbind(); }
 
-	// this is redundant, since a LLRootHandle *is* an LLHandle
-	LLHandle<T> getHandle() { return LLHandle<T>(*this); }
+	// this is redundant, since an LLRootHandle *is* an LLHandle
+	//LLHandle<T> getHandle() { return LLHandle<T>(*this); }
 
 	void bind(T* object) 
 	{ 
 		// unbind existing tombstone
 		if (LLHandle<T>::mTombStone.notNull())
 		{
-			if (LLHandle<T>::mTombStone->getTarget() == object) return;
+			if (LLHandle<T>::mTombStone->getTarget() == (void*)object) return;
 			LLHandle<T>::mTombStone->setTarget(NULL);
 		}
 		// tombstone reference counted, so no paired delete
-		LLHandle<T>::mTombStone = new LLTombStone<T>(object);
+		LLHandle<T>::mTombStone = new LLTombStone((void*)object);
 	}
 
 	void unbind() 
@@ -142,6 +149,15 @@ class LLRootHandle : public LLHandle<T>
 template <typename T>
 class LLHandleProvider
 {
+public:
+	LLHandle<T> getHandle() const
+	{ 
+		// perform lazy binding to avoid small tombstone allocations for handle
+		// providers whose handles are never referenced
+		mHandle.bind(static_cast<T*>(const_cast<LLHandleProvider<T>* >(this))); 
+		return mHandle; 
+	}
+
 protected:
 	typedef LLHandle<T> handle_type_t;
 	LLHandleProvider() 
@@ -149,16 +165,17 @@ class LLHandleProvider
 		// provided here to enforce T deriving from LLHandleProvider<T>
 	} 
 
-	LLHandle<T> getHandle() 
-	{ 
-		// perform lazy binding to avoid small tombstone allocations for handle
-		// providers whose handles are never referenced
-		mHandle.bind(static_cast<T*>(this)); 
-		return mHandle; 
+	template <typename U>
+	LLHandle<U> getDerivedHandle(typename boost::enable_if< typename boost::is_convertible<U*, T*> >::type* dummy = 0) const
+	{
+		LLHandle<U> downcast_handle;
+		downcast_handle.mTombStone = getHandle().mTombStone;
+		return downcast_handle;
 	}
 
+
 private:
-	LLRootHandle<T> mHandle;
+	mutable LLRootHandle<T> mHandle;
 };
 
 #endif
diff --git a/indra/llui/llhelp.h b/indra/llui/llhelp.h
index 83317bd03c85876fda0af7efc71a2b76d5cd2b4e..1726347a78372b1012c9767ca525b312fdd4fe6d 100644
--- a/indra/llui/llhelp.h
+++ b/indra/llui/llhelp.h
@@ -32,6 +32,7 @@ class LLHelp
 {
  public:
 	virtual void showTopic(const std::string &topic) = 0;
+	virtual std::string getURL(const std::string &topic) = 0;
 	// return default (fallback) topic name suitable for showTopic()
 	virtual std::string defaultTopic() = 0;
 	// return topic to use before the user logs in
diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp
index ceec9c7eb117db89dca53f84b8e3bd4422a49a8c..c1cd04186bda56afc329e0a255bc46269f56408f 100644
--- a/indra/llui/llkeywords.cpp
+++ b/indra/llui/llkeywords.cpp
@@ -57,6 +57,22 @@ LLKeywords::LLKeywords() : mLoaded(FALSE)
 {
 }
 
+inline BOOL LLKeywordToken::isTail(const llwchar* s) const
+{
+	BOOL res = TRUE;
+	const llwchar* t = mDelimiter.c_str();
+	S32 len = mDelimiter.size();
+	for (S32 i=0; i<len; i++)
+	{
+		if (s[i] != t[i])
+		{
+			res = FALSE;
+			break;
+		}
+	}
+	return res;
+}
+
 LLKeywords::~LLKeywords()
 {
 	std::for_each(mWordTokenMap.begin(), mWordTokenMap.end(), DeletePairedPointer());
@@ -106,6 +122,7 @@ BOOL LLKeywords::loadFromFile( const std::string& filename )
 	std::string SOL_LINE("[line ");
 	std::string SOL_ONE_SIDED_DELIMITER("[one_sided_delimiter ");
 	std::string SOL_TWO_SIDED_DELIMITER("[two_sided_delimiter ");
+	std::string SOL_DOUBLE_QUOTATION_MARKS("[double_quotation_marks ");
 
 	LLColor3 cur_color( 1, 0, 0 );
 	LLKeywordToken::TOKEN_TYPE cur_type = LLKeywordToken::WORD;
@@ -137,6 +154,12 @@ BOOL LLKeywords::loadFromFile( const std::string& filename )
 			cur_type = LLKeywordToken::TWO_SIDED_DELIMITER;
 			continue;
 		}
+		else if( line.find(SOL_DOUBLE_QUOTATION_MARKS) == 0 )
+		{
+			cur_color = readColor( line.substr(SOL_DOUBLE_QUOTATION_MARKS.size()) );
+			cur_type = LLKeywordToken::DOUBLE_QUOTATION_MARKS;
+			continue;
+		}
 		else if( line.find(SOL_ONE_SIDED_DELIMITER) == 0 )	
 		{
 			cur_color = readColor( line.substr(SOL_ONE_SIDED_DELIMITER.size()) );
@@ -154,10 +177,26 @@ BOOL LLKeywords::loadFromFile( const std::string& filename )
 
 		if( !token_buffer.empty() && token_word_iter != word_tokens.end() )
 		{
-			// first word is keyword
+			// first word is the keyword or a left delimiter
 			std::string keyword = (*token_word_iter);
 			LLStringUtil::trim(keyword);
 
+			// second word may be a right delimiter
+			std::string delimiter;
+			if (cur_type == LLKeywordToken::TWO_SIDED_DELIMITER)
+			{
+				while (delimiter.length() == 0 && ++token_word_iter != word_tokens.end())
+				{
+					delimiter = *token_word_iter;
+					LLStringUtil::trim(delimiter);
+				}
+			}
+			else if (cur_type == LLKeywordToken::DOUBLE_QUOTATION_MARKS)
+			{
+				// Closing delimiter is identical to the opening one.
+				delimiter = keyword;
+			}
+
 			// following words are tooltip
 			std::string tool_tip;
 			while (++token_word_iter != word_tokens.end())
@@ -170,11 +209,11 @@ BOOL LLKeywords::loadFromFile( const std::string& filename )
 			{
 				// Replace : with \n for multi-line tool tips.
 				LLStringUtil::replaceChar( tool_tip, ':', '\n' );
-				addToken(cur_type, keyword, cur_color, tool_tip );
+				addToken(cur_type, keyword, cur_color, tool_tip, delimiter );
 			}
 			else
 			{
-				addToken(cur_type, keyword, cur_color, LLStringUtil::null );
+				addToken(cur_type, keyword, cur_color, LLStringUtil::null, delimiter );
 			}
 		}
 	}
@@ -189,23 +228,26 @@ BOOL LLKeywords::loadFromFile( const std::string& filename )
 void LLKeywords::addToken(LLKeywordToken::TOKEN_TYPE type,
 						  const std::string& key_in,
 						  const LLColor3& color,
-						  const std::string& tool_tip_in )
+						  const std::string& tool_tip_in,
+						  const std::string& delimiter_in)
 {
 	LLWString key = utf8str_to_wstring(key_in);
 	LLWString tool_tip = utf8str_to_wstring(tool_tip_in);
+	LLWString delimiter = utf8str_to_wstring(delimiter_in);
 	switch(type)
 	{
 	case LLKeywordToken::WORD:
-		mWordTokenMap[key] = new LLKeywordToken(type, color, key, tool_tip);
+		mWordTokenMap[key] = new LLKeywordToken(type, color, key, tool_tip, LLWStringUtil::null);
 		break;
 
 	case LLKeywordToken::LINE:
-		mLineTokenList.push_front(new LLKeywordToken(type, color, key, tool_tip));
+		mLineTokenList.push_front(new LLKeywordToken(type, color, key, tool_tip, LLWStringUtil::null));
 		break;
 
 	case LLKeywordToken::TWO_SIDED_DELIMITER:
+	case LLKeywordToken::DOUBLE_QUOTATION_MARKS:
 	case LLKeywordToken::ONE_SIDED_DELIMITER:
-		mDelimiterTokenList.push_front(new LLKeywordToken(type, color, key, tool_tip));
+		mDelimiterTokenList.push_front(new LLKeywordToken(type, color, key, tool_tip, delimiter));
 		break;
 
 	default:
@@ -357,7 +399,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 			}
 
 			// cur is now at the first non-whitespace character of a new line	
-		
+
 			// Line start tokens
 			{
 				BOOL line_done = FALSE;
@@ -418,14 +460,15 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 					S32 seg_end = 0;
 
 					seg_start = cur - base;
-					cur += cur_delimiter->getLength();
+					cur += cur_delimiter->getLengthHead();
 					
-					if( cur_delimiter->getType() == LLKeywordToken::TWO_SIDED_DELIMITER )
+					LLKeywordToken::TOKEN_TYPE type = cur_delimiter->getType();
+					if( type == LLKeywordToken::TWO_SIDED_DELIMITER || type == LLKeywordToken::DOUBLE_QUOTATION_MARKS )
 					{
-						while( *cur && !cur_delimiter->isHead(cur))
+						while( *cur && !cur_delimiter->isTail(cur))
 						{
 							// Check for an escape sequence.
-							if (*cur == '\\')
+							if (type == LLKeywordToken::DOUBLE_QUOTATION_MARKS && *cur == '\\')
 							{
 								// Count the number of backslashes.
 								S32 num_backslashes = 0;
@@ -435,10 +478,10 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 									between_delimiters++;
 									cur++;
 								}
-								// Is the next character the end delimiter?
-								if (cur_delimiter->isHead(cur))
+								// If the next character is the end delimiter?
+								if (cur_delimiter->isTail(cur))
 								{
-									// Is there was an odd number of backslashes, then this delimiter
+									// If there was an odd number of backslashes, then this delimiter
 									// does not end the sequence.
 									if (num_backslashes % 2 == 1)
 									{
@@ -461,13 +504,13 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 
 						if( *cur )
 						{
-							cur += cur_delimiter->getLength();
-							seg_end = seg_start + between_delimiters + 2 * cur_delimiter->getLength();
+							cur += cur_delimiter->getLengthHead();
+							seg_end = seg_start + between_delimiters + cur_delimiter->getLengthHead() + cur_delimiter->getLengthTail();
 						}
 						else
 						{
 							// eof
-							seg_end = seg_start + between_delimiters + cur_delimiter->getLength();
+							seg_end = seg_start + between_delimiters + cur_delimiter->getLengthHead();
 						}
 					}
 					else
@@ -479,7 +522,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW
 							between_delimiters++;
 							cur++;
 						}
-						seg_end = seg_start + between_delimiters + cur_delimiter->getLength();
+						seg_end = seg_start + between_delimiters + cur_delimiter->getLengthHead();
 					}
 
 					insertSegments(wtext, *seg_list,cur_delimiter, text_len, seg_start, seg_end, defaultColor, editor);
diff --git a/indra/llui/llkeywords.h b/indra/llui/llkeywords.h
index f6d75b7e755f3b7e74d8c7bbda6e0013186124c1..ac3401539394c3fc8ff553ee6711833be8ef6601 100644
--- a/indra/llui/llkeywords.h
+++ b/indra/llui/llkeywords.h
@@ -41,23 +41,44 @@ typedef LLPointer<LLTextSegment> LLTextSegmentPtr;
 class LLKeywordToken
 {
 public:
-	enum TOKEN_TYPE { WORD, LINE, TWO_SIDED_DELIMITER, ONE_SIDED_DELIMITER };
+	/** 
+	 * @brief Types of tokens/delimters being parsed.
+	 *
+	 * @desc Tokens/delimiters that need to be identified/highlighted. All are terminated if an EOF is encountered.
+	 * - WORD are keywords in the normal sense, i.e. constants, events, etc.
+	 * - LINE are for entire lines (currently only flow control labels use this).
+	 * - ONE_SIDED_DELIMITER are for open-ended delimiters which are terminated by EOL.
+	 * - TWO_SIDED_DELIMITER are for delimiters that end with a different delimiter than they open with.
+	 * - DOUBLE_QUOTATION_MARKS are for delimiting areas using the same delimiter to open and close.
+	 */
+	enum TOKEN_TYPE
+	{
+		WORD,
+		LINE,
+		TWO_SIDED_DELIMITER,
+		ONE_SIDED_DELIMITER,
+		DOUBLE_QUOTATION_MARKS
+	};
 
-	LLKeywordToken( TOKEN_TYPE type, const LLColor3& color, const LLWString& token, const LLWString& tool_tip ) 
+	LLKeywordToken( TOKEN_TYPE type, const LLColor3& color, const LLWString& token, const LLWString& tool_tip, const LLWString& delimiter  ) 
 		:
 		mType( type ),
 		mToken( token ),
 		mColor( color ),
-		mToolTip( tool_tip )
+		mToolTip( tool_tip ),
+		mDelimiter( delimiter )		// right delimiter
 	{
 	}
 
-	S32					getLength() const		{ return mToken.size(); }
+	S32					getLengthHead() const	{ return mToken.size(); }
+	S32					getLengthTail() const	{ return mDelimiter.size(); }
 	BOOL				isHead(const llwchar* s) const;
+	BOOL				isTail(const llwchar* s) const;
 	const LLWString&	getToken() const		{ return mToken; }
 	const LLColor3&		getColor() const		{ return mColor; }
 	TOKEN_TYPE			getType()  const		{ return mType; }
 	const LLWString&	getToolTip() const		{ return mToolTip; }
+	const LLWString&	getDelimiter() const	{ return mDelimiter; }
 
 #ifdef _DEBUG
 	void		dump();
@@ -68,6 +89,7 @@ class LLKeywordToken
 	LLWString	mToken;
 	LLColor3	mColor;
 	LLWString	mToolTip;
+	LLWString	mDelimiter;
 };
 
 class LLKeywords
@@ -85,7 +107,8 @@ class LLKeywords
 	void addToken(LLKeywordToken::TOKEN_TYPE type,
 					const std::string& key,
 					const LLColor3& color,
-					const std::string& tool_tip = LLStringUtil::null);
+					const std::string& tool_tip = LLStringUtil::null,
+					const std::string& delimiter = LLStringUtil::null);
 	
 	// This class is here as a performance optimization.
 	// The word token map used to be defined as std::map<LLWString, LLKeywordToken*>.
diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp
index a250404292aab6b9e91cf67893fdf54a43da2bf9..2f1c2a47c98742999095d98c3e8b931efa0fd10c 100644
--- a/indra/llui/lllayoutstack.cpp
+++ b/indra/llui/lllayoutstack.cpp
@@ -34,6 +34,10 @@
 #include "llpanel.h"
 #include "llresizebar.h"
 #include "llcriticaldamp.h"
+#include "boost/foreach.hpp"
+
+static const F32 MIN_FRACTIONAL_SIZE = 0.0001f;
+static const F32 MAX_FRACTIONAL_SIZE = 1.f;
 
 static LLDefaultChildRegistry::Register<LLLayoutStack> register_layout_stack("layout_stack");
 static LLLayoutStack::LayoutStackRegistry::Register<LLLayoutPanel> register_layout_panel("layout_panel");
@@ -47,26 +51,31 @@ void LLLayoutStack::OrientationNames::declareValues()
 //
 // LLLayoutPanel
 //
+LLLayoutPanel::Params::Params()	
+:	expanded_min_dim("expanded_min_dim", 0),
+	min_dim("min_dim", -1),
+	user_resize("user_resize", false),
+	auto_resize("auto_resize", true)
+{
+	addSynonym(min_dim, "min_width");
+	addSynonym(min_dim, "min_height");
+}
+
 LLLayoutPanel::LLLayoutPanel(const Params& p)	
 :	LLPanel(p),
-	mExpandedMinDimSpecified(false),
-	mExpandedMinDim(p.min_dim),
+	mExpandedMinDim(p.expanded_min_dim.isProvided() ? p.expanded_min_dim : p.min_dim),
  	mMinDim(p.min_dim), 
- 	mMaxDim(p.max_dim), 
  	mAutoResize(p.auto_resize),
  	mUserResize(p.user_resize),
 	mCollapsed(FALSE),
 	mCollapseAmt(0.f),
 	mVisibleAmt(1.f), // default to fully visible
-	mResizeBar(NULL) 
+	mResizeBar(NULL),
+	mFractionalSize(MIN_FRACTIONAL_SIZE),
+	mTargetDim(0),
+	mIgnoreReshape(false),
+	mOrientation(LLLayoutStack::HORIZONTAL)
 {
-	// Set the expanded min dim if it is provided, otherwise it gets the p.min_dim value
-	if (p.expanded_min_dim.isProvided())
-	{
-		mExpandedMinDimSpecified = true;
-		mExpandedMinDim = p.expanded_min_dim();
-	}
-	
 	// panels initialized as hidden should not start out partially visible
 	if (!getVisible())
 	{
@@ -88,20 +97,83 @@ LLLayoutPanel::~LLLayoutPanel()
 	mResizeBar = NULL;
 }
 
-F32 LLLayoutPanel::getCollapseFactor(LLLayoutStack::ELayoutOrientation orientation)
+F32 LLLayoutPanel::getAutoResizeFactor() const
+{
+	return mVisibleAmt * (1.f - mCollapseAmt);
+}
+ 
+F32 LLLayoutPanel::getVisibleAmount() const
+{
+	return mVisibleAmt;
+}
+
+S32 LLLayoutPanel::getLayoutDim() const
+{
+	return llround((F32)((mOrientation == LLLayoutStack::HORIZONTAL)
+					? getRect().getWidth()
+					: getRect().getHeight()));
+}
+ 
+S32 LLLayoutPanel::getVisibleDim() const
 {
-	if (orientation == LLLayoutStack::HORIZONTAL)
+	F32 min_dim = getRelevantMinDim();
+	return llround(mVisibleAmt
+					* (min_dim
+						+ (((F32)mTargetDim - min_dim) * (1.f - mCollapseAmt))));
+}
+ 
+void LLLayoutPanel::setOrientation( LLLayoutStack::ELayoutOrientation orientation )
+{
+	mOrientation = orientation;
+	S32 layout_dim = llround((F32)((mOrientation == LLLayoutStack::HORIZONTAL)
+		? getRect().getWidth()
+		: getRect().getHeight()));
+
+	mTargetDim = llmax(layout_dim, getMinDim());
+}
+ 
+void LLLayoutPanel::setVisible( BOOL visible )
+{
+	if (visible != getVisible())
 	{
-		F32 collapse_amt = 
-			clamp_rescale(mCollapseAmt, 0.f, 1.f, 1.f, (F32)getRelevantMinDim() / (F32)llmax(1, getRect().getWidth()));
-		return mVisibleAmt * collapse_amt;
+		LLLayoutStack* stackp = dynamic_cast<LLLayoutStack*>(getParent());
+		if (stackp)
+		{
+			stackp->mNeedsLayout = true;
+		}
 	}
-	else
+	LLPanel::setVisible(visible);
+}
+
+void LLLayoutPanel::reshape( S32 width, S32 height, BOOL called_from_parent /*= TRUE*/ )
+{
+	if (width == getRect().getWidth() && height == getRect().getHeight()) return;
+
+	if (!mIgnoreReshape && mAutoResize == false)
+	{
+		mTargetDim = (mOrientation == LLLayoutStack::HORIZONTAL) ? width : height;
+		LLLayoutStack* stackp = dynamic_cast<LLLayoutStack*>(getParent());
+		if (stackp)
+		{
+			stackp->mNeedsLayout = true;
+		}
+	}
+	LLPanel::reshape(width, height, called_from_parent);
+}
+
+void LLLayoutPanel::handleReshape(const LLRect& new_rect, bool by_user)
+{
+	LLLayoutStack* stackp = dynamic_cast<LLLayoutStack*>(getParent());
+	if (stackp)
 	{
-		F32 collapse_amt = 
-			clamp_rescale(mCollapseAmt, 0.f, 1.f, 1.f, llmin(1.f, (F32)getRelevantMinDim() / (F32)llmax(1, getRect().getHeight())));
-		return mVisibleAmt * collapse_amt;
+		stackp->mNeedsLayout = true;
+		if (by_user)
+		{
+			// tell layout stack to account for new shape
+			stackp->updatePanelRect(this, new_rect);
+		}
 	}
+	LLPanel::handleReshape(new_rect, by_user);
 }
 
 //
@@ -114,20 +186,21 @@ LLLayoutStack::Params::Params()
 	clip("clip", true),
 	open_time_constant("open_time_constant", 0.02f),
 	close_time_constant("close_time_constant", 0.03f),
+	resize_bar_overlap("resize_bar_overlap", 1),
 	border_size("border_size", LLCachedControl<S32>(*LLUI::sSettingGroups["config"], "UIResizeBarHeight", 0))
 {}
 
 LLLayoutStack::LLLayoutStack(const LLLayoutStack::Params& p) 
 :	LLView(p),
-	mMinWidth(0),
-	mMinHeight(0),
 	mPanelSpacing(p.border_size),
 	mOrientation(p.orientation),
 	mAnimate(p.animate),
 	mAnimatedThisFrame(false),
+	mNeedsLayout(true),
 	mClip(p.clip),
 	mOpenTimeConstant(p.open_time_constant),
-	mCloseTimeConstant(p.close_time_constant)
+	mCloseTimeConstant(p.close_time_constant),
+	mResizeBarOverlap(p.resize_bar_overlap)
 {}
 
 LLLayoutStack::~LLLayoutStack()
@@ -141,26 +214,26 @@ void LLLayoutStack::draw()
 {
 	updateLayout();
 
-	e_panel_list_t::iterator panel_it;
-	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
+	// always clip to stack itself
+	LLLocalClipRect clip(getLocalRect());
+	BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)
 	{
 		// clip to layout rectangle, not bounding rectangle
-		LLRect clip_rect = (*panel_it)->getRect();
+		LLRect clip_rect = panelp->getRect();
 		// scale clipping rectangle by visible amount
 		if (mOrientation == HORIZONTAL)
 		{
-			clip_rect.mRight = clip_rect.mLeft + llround((F32)clip_rect.getWidth() * (*panel_it)->getCollapseFactor(mOrientation));
+			clip_rect.mRight = clip_rect.mLeft + panelp->getVisibleDim();
 		}
 		else
 		{
-			clip_rect.mBottom = clip_rect.mTop - llround((F32)clip_rect.getHeight() * (*panel_it)->getCollapseFactor(mOrientation));
+			clip_rect.mBottom = clip_rect.mTop - panelp->getVisibleDim();
 		}
 
-		LLPanel* panelp = (*panel_it);
-
-		LLLocalClipRect clip(clip_rect, mClip);
-		// only force drawing invisible children if visible amount is non-zero
-		drawChild(panelp, 0, 0, !clip_rect.isEmpty());
+		{LLLocalClipRect clip(clip_rect, mClip);
+			// only force drawing invisible children if visible amount is non-zero
+			drawChild(panelp, 0, 0, !clip_rect.isEmpty());
+		}
 	}
 	mAnimatedThisFrame = false;
 }
@@ -173,12 +246,10 @@ void LLLayoutStack::removeChild(LLView* view)
 	{
 		mPanels.erase(std::find(mPanels.begin(), mPanels.end(), embedded_panelp));
 		delete embedded_panelp;
+		updateFractionalSizes();
+		mNeedsLayout = true;
 	}
 
-	// need to update resizebars
-
-	calcMinExtents();
-
 	LLView::removeChild(view);
 }
 
@@ -193,50 +264,15 @@ bool LLLayoutStack::addChild(LLView* child, S32 tab_group)
 	LLLayoutPanel* panelp = dynamic_cast<LLLayoutPanel*>(child);
 	if (panelp)
 	{
+		panelp->setOrientation(mOrientation);
 		mPanels.push_back(panelp);
+		createResizeBar(panelp);
+		mNeedsLayout = true;
 	}
-	return LLView::addChild(child, tab_group);
-}
-
-
-S32 LLLayoutStack::getDefaultHeight(S32 cur_height)
-{
-	// if we are spanning our children (crude upward propagation of size)
-	// then don't enforce our size on our children
-	if (mOrientation == HORIZONTAL)
-	{
-		cur_height = llmax(mMinHeight, getRect().getHeight());
-	}
-
-	return cur_height;
-}
-
-S32 LLLayoutStack::getDefaultWidth(S32 cur_width)
-{
-	// if we are spanning our children (crude upward propagation of size)
-	// then don't enforce our size on our children
-	if (mOrientation == VERTICAL)
-	{
-		cur_width = llmax(mMinWidth, getRect().getWidth());
-	}
-
-	return cur_width;
-}
-
-void LLLayoutStack::movePanel(LLPanel* panel_to_move, LLPanel* target_panel, bool move_to_front)
-{
-	LLLayoutPanel* embedded_panel_to_move = findEmbeddedPanel(panel_to_move);
-	LLLayoutPanel* embedded_target_panel = move_to_front ? *mPanels.begin() : findEmbeddedPanel(target_panel);
+	BOOL result = LLView::addChild(child, tab_group);
 
-	if (!embedded_panel_to_move || !embedded_target_panel || embedded_panel_to_move == embedded_target_panel)
-	{
-		llwarns << "One of the panels was not found in stack or NULL was passed instead of valid panel" << llendl;
-		return;
-	}
-	e_panel_list_t::iterator it = std::find(mPanels.begin(), mPanels.end(), embedded_panel_to_move);
-	mPanels.erase(it);
-	it = move_to_front ? mPanels.begin() : std::find(mPanels.begin(), mPanels.end(), embedded_target_panel);
-	mPanels.insert(it, embedded_panel_to_move);
+	updateFractionalSizes();
+	return result;
 }
 
 void LLLayoutStack::addPanel(LLLayoutPanel* panel, EAnimate animate)
@@ -251,82 +287,274 @@ void LLLayoutStack::addPanel(LLLayoutPanel* panel, EAnimate animate)
 	}
 }
 
-void LLLayoutStack::removePanel(LLPanel* panel)
-{
-	removeChild(panel);
-}
-
 void LLLayoutStack::collapsePanel(LLPanel* panel, BOOL collapsed)
 {
 	LLLayoutPanel* panel_container = findEmbeddedPanel(panel);
 	if (!panel_container) return;
 
 	panel_container->mCollapsed = collapsed;
+	mNeedsLayout = true;
 }
 
-void LLLayoutStack::updatePanelAutoResize(const std::string& panel_name, BOOL auto_resize)
-{
-	LLLayoutPanel* panel = findEmbeddedPanelByName(panel_name);
+static LLFastTimer::DeclareTimer FTM_UPDATE_LAYOUT("Update LayoutStacks");
+
+void LLLayoutStack::updateLayout()
+{	
+	LLFastTimer ft(FTM_UPDATE_LAYOUT);
+
+	if (!mNeedsLayout) return;
 
-	if (panel)
+	bool animation_in_progress = animatePanels();
+	F32 total_visible_fraction = 0.f;
+	F32 total_open_fraction = 0.f;
+	S32 space_to_distribute = (mOrientation == HORIZONTAL)
+							? getRect().getWidth()
+							: getRect().getHeight();
+
+	// first, assign minimum dimensions
+	LLLayoutPanel* panelp = NULL;
+	BOOST_FOREACH(panelp, mPanels)
 	{
-		panel->mAutoResize = auto_resize;
+		if (panelp->mAutoResize)
+		{
+			panelp->mTargetDim = panelp->getRelevantMinDim();
+			if (!panelp->mCollapsed && panelp->getVisible())
+			{
+				total_open_fraction += panelp->mFractionalSize;
+			}
+		}
+		space_to_distribute -= panelp->getVisibleDim() + llround((F32)mPanelSpacing * panelp->getVisibleAmount());
+		total_visible_fraction += panelp->mFractionalSize;
 	}
-}
 
-void LLLayoutStack::setPanelUserResize(const std::string& panel_name, BOOL user_resize)
+	llassert(total_visible_fraction < 1.01f);
+
+	// don't need spacing after last panel
+	space_to_distribute += panelp ? llround((F32)mPanelSpacing * panelp->getVisibleAmount()) : 0;
+
+	F32 fraction_distributed = 0.f;
+	if (space_to_distribute > 0 && total_visible_fraction > 0.f)
+	{	// give space proportionally to visible auto resize panels
+		BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)
+		{
+			if (panelp->mAutoResize)
+			{
+				F32 fraction_to_distribute = (panelp->mFractionalSize * panelp->getAutoResizeFactor()) / (total_visible_fraction);
+				S32 delta = llround((F32)space_to_distribute * fraction_to_distribute);
+				fraction_distributed += fraction_to_distribute;
+				panelp->mTargetDim += delta;
+			}
+		}
+	}
+
+	if (fraction_distributed < total_visible_fraction)
+	{	// distribute any left over pixels to non-collapsed, visible panels
+		F32 fraction_left = total_visible_fraction - fraction_distributed;
+		S32 space_left = llround((F32)space_to_distribute * (fraction_left / total_visible_fraction));
+
+		BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)
+		{
+			if (panelp->mAutoResize 
+				&& !panelp->mCollapsed 
+				&& panelp->getVisible())
+			{
+				S32 space_for_panel = llmax(0, llround((F32)space_left * (panelp->mFractionalSize / total_open_fraction)));
+				panelp->mTargetDim += space_for_panel;
+				space_left -= space_for_panel;
+				total_open_fraction -= panelp->mFractionalSize;
+			}
+		}
+	}
+
+	F32 cur_pos = (mOrientation == HORIZONTAL) ? 0.f : (F32)getRect().getHeight();
+
+	BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)
+	{
+		F32 panel_dim = llmax(panelp->getExpandedMinDim(), panelp->mTargetDim);
+		F32 panel_visible_dim = panelp->getVisibleDim();
+
+		LLRect panel_rect;
+		if (mOrientation == HORIZONTAL)
+		{
+			panel_rect.setLeftTopAndSize(llround(cur_pos),
+										getRect().getHeight(),
+										llround(panel_dim),
+										getRect().getHeight());
+		}
+		else
+		{
+			panel_rect.setLeftTopAndSize(0,
+										llround(cur_pos),
+										getRect().getWidth(),
+										llround(panel_dim));
+		}
+		panelp->setIgnoreReshape(true);
+		panelp->setShape(panel_rect);
+		panelp->setIgnoreReshape(false);
+
+		LLRect resize_bar_rect(panel_rect);
+
+		F32 panel_spacing = (F32)mPanelSpacing * panelp->getVisibleAmount();
+		if (mOrientation == HORIZONTAL)
+		{
+			resize_bar_rect.mLeft = panel_rect.mRight - mResizeBarOverlap;
+			resize_bar_rect.mRight = panel_rect.mRight + (S32)(llround(panel_spacing)) + mResizeBarOverlap;
+
+			cur_pos += panel_visible_dim + panel_spacing;
+		}
+		else //VERTICAL
+		{
+			resize_bar_rect.mTop = panel_rect.mBottom + mResizeBarOverlap;
+			resize_bar_rect.mBottom = panel_rect.mBottom - (S32)(llround(panel_spacing)) - mResizeBarOverlap;
+
+			cur_pos -= panel_visible_dim + panel_spacing;
+		}
+		panelp->mResizeBar->setShape(resize_bar_rect);
+	}
+
+	updateResizeBarLimits();
+
+	// clear animation flag at end, since panel resizes will set it
+	// and leave it set if there is any animation in progress
+	mNeedsLayout = animation_in_progress;
+} // end LLLayoutStack::updateLayout
+
+LLLayoutPanel* LLLayoutStack::findEmbeddedPanel(LLPanel* panelp) const
 {
-	LLLayoutPanel* panel = findEmbeddedPanelByName(panel_name);
+	if (!panelp) return NULL;
 
-	if (panel)
+	e_panel_list_t::const_iterator panel_it;
+	BOOST_FOREACH(LLLayoutPanel* p, mPanels)
 	{
-		panel->mUserResize = user_resize;
+		if (p == panelp)
+		{
+			return p;
+		}
 	}
+	return NULL;
 }
 
-bool LLLayoutStack::getPanelMinSize(const std::string& panel_name, S32* min_dimp)
+LLLayoutPanel* LLLayoutStack::findEmbeddedPanelByName(const std::string& name) const
 {
-	LLLayoutPanel* panel = findEmbeddedPanelByName(panel_name);
+	LLLayoutPanel* result = NULL;
 
-	if (panel && min_dimp)
+	BOOST_FOREACH(LLLayoutPanel* p, mPanels)
 	{
-		*min_dimp = panel->getRelevantMinDim();
+		if (p->getName() == name)
+		{
+			result = p;
+			break;
+		}
 	}
 
-	return NULL != panel;
+	return result;
 }
 
-bool LLLayoutStack::getPanelMaxSize(const std::string& panel_name, S32* max_dimp)
+void LLLayoutStack::createResizeBar(LLLayoutPanel* panelp)
 {
-	LLLayoutPanel* panel = findEmbeddedPanelByName(panel_name);
+	BOOST_FOREACH(LLLayoutPanel* lp, mPanels)
+	{
+		if (lp->mResizeBar == NULL)
+		{
+			LLResizeBar::Side side = (mOrientation == HORIZONTAL) ? LLResizeBar::RIGHT : LLResizeBar::BOTTOM;
+			LLRect resize_bar_rect = getRect();
 
-	if (panel)
+			LLResizeBar::Params resize_params;
+			resize_params.name("resize");
+			resize_params.resizing_view(lp);
+			resize_params.min_size(lp->getRelevantMinDim());
+			resize_params.side(side);
+			resize_params.snapping_enabled(false);
+			LLResizeBar* resize_bar = LLUICtrlFactory::create<LLResizeBar>(resize_params);
+			lp->mResizeBar = resize_bar;
+			LLView::addChild(resize_bar, 0);
+		}
+	}
+	// bring all resize bars to the front so that they are clickable even over the panels
+	// with a bit of overlap
+	for (e_panel_list_t::iterator panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
 	{
-		if (max_dimp) *max_dimp = panel->mMaxDim;
+		LLResizeBar* resize_barp = (*panel_it)->mResizeBar;
+		sendChildToFront(resize_barp);
 	}
+}
 
-	return NULL != panel;
+// update layout stack animations, etc. once per frame
+// NOTE: we use this to size world view based on animating UI, *before* we draw the UI
+// we might still need to call updateLayout during UI draw phase, in case UI elements
+// are resizing themselves dynamically
+//static 
+void LLLayoutStack::updateClass()
+{
+	for (instance_iter it = beginInstances(); it != endInstances(); ++it)
+	{
+		it->updateLayout();
+	}
 }
 
-static LLFastTimer::DeclareTimer FTM_UPDATE_LAYOUT("Update LayoutStacks");
-void LLLayoutStack::updateLayout(BOOL force_resize)
+void LLLayoutStack::updateFractionalSizes()
 {
-	LLFastTimer ft(FTM_UPDATE_LAYOUT);
-	static LLUICachedControl<S32> resize_bar_overlap ("UIResizeBarOverlap", 0);
-	calcMinExtents();
-	createResizeBars();
+	F32 total_resizable_dim = 0;
+	S32 num_auto_resize_panels = 0;
 
-	// calculate current extents
-	S32 total_width = 0;
-	S32 total_height = 0;
+	BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)
+	{
+		if (panelp->mAutoResize)
+		{
+			total_resizable_dim += llmax(0, panelp->getLayoutDim() - panelp->getRelevantMinDim());
+			num_auto_resize_panels++;
+		}
+	}
 
-	e_panel_list_t::iterator panel_it;
-	for (panel_it = mPanels.begin(); panel_it != mPanels.end();	++panel_it)
+	F32 total_fractional_size = 0.f;
+	
+	BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)
 	{
-		LLLayoutPanel* panelp = (*panel_it);
-		if (panelp->getVisible()) 
+		if (panelp->mAutoResize)
 		{
-			if (mAnimate)
+			F32 panel_resizable_dim = llmax(MIN_FRACTIONAL_SIZE, (F32)(panelp->getLayoutDim() - panelp->getRelevantMinDim()));
+			panelp->mFractionalSize = panel_resizable_dim > 0.f 
+										? llclamp(panel_resizable_dim / total_resizable_dim, MIN_FRACTIONAL_SIZE, MAX_FRACTIONAL_SIZE)
+										: MIN_FRACTIONAL_SIZE;
+			total_fractional_size += panelp->mFractionalSize;
+			llassert(!llisnan(panelp->mFractionalSize));
+		}
+	}
+
+	if (total_fractional_size == 0.f)
+	{ // equal distribution
+		BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)
+		{
+			if (panelp->mAutoResize)
+			{
+				panelp->mFractionalSize = MAX_FRACTIONAL_SIZE / (F32)num_auto_resize_panels;
+			}
+		}
+	}
+	else
+	{ // renormalize
+		BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)
+		{
+			if (panelp->mAutoResize)
+			{
+				panelp->mFractionalSize /= total_fractional_size;
+			}
+		}
+	}
+}
+
+bool LLLayoutStack::animatePanels()
+{
+	bool animation_in_progress = false;
+	
+	//
+	// animate visibility
+	//
+	BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)
+	{
+		if (panelp->getVisible())
+		{
+			if (mAnimate && panelp->mVisibleAmt < 1.f)
 			{
 				if (!mAnimatedThisFrame)
 				{
@@ -336,15 +564,21 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
 						panelp->mVisibleAmt = 1.f;
 					}
 				}
+				
+				animation_in_progress = true;
 			}
 			else
 			{
-				panelp->mVisibleAmt = 1.f;
+				if (panelp->mVisibleAmt != 1.f)
+				{
+					panelp->mVisibleAmt = 1.f;
+					animation_in_progress = true;
+				}
 			}
 		}
 		else // not visible
 		{
-			if (mAnimate)
+			if (mAnimate && panelp->mVisibleAmt > 0.f)
 			{
 				if (!mAnimatedThisFrame)
 				{
@@ -354,365 +588,213 @@ void LLLayoutStack::updateLayout(BOOL force_resize)
 						panelp->mVisibleAmt = 0.f;
 					}
 				}
+
+				animation_in_progress = true;
 			}
 			else
 			{
-				panelp->mVisibleAmt = 0.f;
+				if (panelp->mVisibleAmt != 0.f)
+				{
+					panelp->mVisibleAmt = 0.f;
+					animation_in_progress = true;
+				}
 			}
 		}
 
-		if (panelp->mCollapsed)
-		{
-			panelp->mCollapseAmt = lerp(panelp->mCollapseAmt, 1.f, LLCriticalDamp::getInterpolant(mCloseTimeConstant));
-		}
-		else
-		{
-			panelp->mCollapseAmt = lerp(panelp->mCollapseAmt, 0.f, LLCriticalDamp::getInterpolant(mCloseTimeConstant));
-		}
-
-		if (mOrientation == HORIZONTAL)
-		{
-			// enforce minimize size constraint by default
-			if (panelp->getRect().getWidth() < panelp->getRelevantMinDim())
-			{
-				panelp->reshape(panelp->getRelevantMinDim(), panelp->getRect().getHeight());
-			}
-        	total_width += llround(panelp->getRect().getWidth() * panelp->getCollapseFactor(mOrientation));
-        	// want n-1 panel gaps for n panels
-			if (panel_it != mPanels.begin())
-			{
-				total_width += mPanelSpacing;
-			}
-		}
-		else //VERTICAL
+		F32 collapse_state = panelp->mCollapsed ? 1.f : 0.f;
+		if (panelp->mCollapseAmt != collapse_state)
 		{
-			// enforce minimize size constraint by default
-			if (panelp->getRect().getHeight() < panelp->getRelevantMinDim())
+			if (!mAnimatedThisFrame)
 			{
-				panelp->reshape(panelp->getRect().getWidth(), panelp->getRelevantMinDim());
+				panelp->mCollapseAmt = lerp(panelp->mCollapseAmt, collapse_state, LLCriticalDamp::getInterpolant(mCloseTimeConstant));
 			}
-			total_height += llround(panelp->getRect().getHeight() * panelp->getCollapseFactor(mOrientation));
-			if (panel_it != mPanels.begin())
+			animation_in_progress = true;
+			
+			if (llabs(panelp->mCollapseAmt - collapse_state) < 0.001f)
 			{
-				total_height += mPanelSpacing;
+				panelp->mCollapseAmt = collapse_state;
 			}
 		}
 	}
 
-	S32 num_resizable_panels = 0;
-	S32 shrink_headroom_available = 0;
-	S32 shrink_headroom_total = 0;
-	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
+	mAnimatedThisFrame = true;
+
+	return animation_in_progress;
+}
+
+void LLLayoutStack::updatePanelRect( LLLayoutPanel* resized_panel, const LLRect& new_rect )
+{
+	S32 new_dim = (mOrientation == HORIZONTAL)
+					? new_rect.getWidth()
+					: new_rect.getHeight();
+	S32 delta_dim = new_dim - resized_panel->getVisibleDim();
+	if (delta_dim == 0) return;
+
+	F32 total_visible_fraction = 0.f;
+	F32 delta_auto_resize_headroom = 0.f;
+	F32 total_auto_resize_headroom = 0.f;
+
+	LLLayoutPanel* other_resize_panel = NULL;
+	LLLayoutPanel* following_panel = NULL;
+
+	BOOST_REVERSE_FOREACH(LLLayoutPanel* panelp, mPanels)
 	{
-		// panels that are not fully visible do not count towards shrink headroom
-		if ((*panel_it)->getCollapseFactor(mOrientation) < 1.f) 
+		if (panelp->mAutoResize)
 		{
-			continue;
+			total_auto_resize_headroom += (F32)(panelp->mTargetDim - panelp->getRelevantMinDim());
+			total_visible_fraction += panelp->mFractionalSize * panelp->getAutoResizeFactor();
 		}
 
-		S32 relevant_dimension = (mOrientation == HORIZONTAL) ? (*panel_it)->getRect().getWidth() : (*panel_it)->getRect().getHeight();
-		S32 relevant_min = (*panel_it)->getRelevantMinDim();
-		
-		// if currently resizing a panel or the panel is flagged as not automatically resizing
-		// only track total available headroom, but don't use it for automatic resize logic
-		if ((*panel_it)->mResizeBar->hasMouseCapture() 
-			|| (!(*panel_it)->mAutoResize 
-				&& !force_resize))
+		if (panelp == resized_panel)
 		{
-			shrink_headroom_total += relevant_dimension - relevant_min;
+			other_resize_panel = following_panel;
 		}
-		else
+
+		if (panelp->getVisible() && !panelp->mCollapsed)
 		{
-			num_resizable_panels++;
-			
-			shrink_headroom_available += relevant_dimension - relevant_min;
-			shrink_headroom_total += relevant_dimension - relevant_min;
+			following_panel = panelp;
 		}
 	}
 
-	// calculate how many pixels need to be distributed among layout panels
-	// positive means panels need to grow, negative means shrink
-	S32 pixels_to_distribute;
-	if (mOrientation == HORIZONTAL)
+	if (resized_panel->mAutoResize == FALSE)
 	{
-		pixels_to_distribute = getRect().getWidth() - total_width;
+		delta_auto_resize_headroom += -delta_dim;
 	}
-	else //VERTICAL
+	if (other_resize_panel && other_resize_panel->mAutoResize == FALSE)
 	{
-		pixels_to_distribute = getRect().getHeight() - total_height;
+		delta_auto_resize_headroom += delta_dim;
 	}
 
-	// now we distribute the pixels...
-	S32 cur_x = 0;
-	S32 cur_y = getRect().getHeight();
+	F32 fraction_given_up = 0.f;
+	F32 fraction_remaining = 1.f;
+	F32 updated_auto_resize_headroom = total_auto_resize_headroom + delta_auto_resize_headroom;
 
-	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
+	enum
 	{
-		LLLayoutPanel* panelp = (*panel_it);
+		BEFORE_RESIZED_PANEL,
+		RESIZED_PANEL,
+		NEXT_PANEL,
+		AFTER_RESIZED_PANEL
+	} which_panel = BEFORE_RESIZED_PANEL;
 
-		S32 cur_width = panelp->getRect().getWidth();
-		S32 cur_height = panelp->getRect().getHeight();
-		S32 new_width = cur_width;
-		S32 new_height = cur_height;
-		S32 relevant_min = panelp->getRelevantMinDim();
+	BOOST_FOREACH(LLLayoutPanel* panelp, mPanels)
+	{
+		if (!panelp->getVisible() || panelp->mCollapsed) continue;
 
-		if (mOrientation == HORIZONTAL)
-		{
-			new_width = llmax(relevant_min, new_width);
-		}
-		else
+		if (panelp == resized_panel)
 		{
-			new_height = llmax(relevant_min, new_height);
+			which_panel = RESIZED_PANEL;
 		}
-		S32 delta_size = 0;
 
-		// if panel can automatically resize (not animating, and resize flag set)...
-		if (panelp->getCollapseFactor(mOrientation) == 1.f 
-			&& (force_resize || panelp->mAutoResize) 
-			&& !panelp->mResizeBar->hasMouseCapture()) 
+		switch(which_panel)
 		{
-			if (mOrientation == HORIZONTAL)
-			{
-				// if we're shrinking
-				if (pixels_to_distribute < 0)
-				{
-					// shrink proportionally to amount over minimum
-					// so we can do this in one pass
-					delta_size = (shrink_headroom_available > 0) ? llround((F32)pixels_to_distribute * ((F32)(cur_width - relevant_min) / (F32)shrink_headroom_available)) : 0;
-					shrink_headroom_available -= (cur_width - relevant_min);
-				}
-				else
-				{
-					// grow all elements equally
-					delta_size = llround((F32)pixels_to_distribute / (F32)num_resizable_panels);
-					num_resizable_panels--;
-				}
-				pixels_to_distribute -= delta_size;
-				new_width = llmax(relevant_min, cur_width + delta_size);
+		case BEFORE_RESIZED_PANEL:
+			if (panelp->mAutoResize)
+			{	// freeze current size as fraction of overall auto_resize space
+				F32 fractional_adjustment_factor = total_auto_resize_headroom / updated_auto_resize_headroom;
+				F32 new_fractional_size = llclamp(panelp->mFractionalSize * fractional_adjustment_factor,
+													MIN_FRACTIONAL_SIZE,
+													MAX_FRACTIONAL_SIZE);
+				F32 fraction_delta = (new_fractional_size - panelp->mFractionalSize);
+				fraction_given_up -= fraction_delta;
+				fraction_remaining -= panelp->mFractionalSize;
+				panelp->mFractionalSize += fraction_delta;
+				llassert(!llisnan(panelp->mFractionalSize));
 			}
 			else
 			{
-				new_width = getDefaultWidth(new_width);
+				// leave non auto-resize panels alone
 			}
-
-			if (mOrientation == VERTICAL)
+			break;
+		case RESIZED_PANEL:
+			if (panelp->mAutoResize)
+			{	// freeze new size as fraction
+				F32 new_fractional_size = (updated_auto_resize_headroom == 0.f)
+					? MAX_FRACTIONAL_SIZE
+					: llclamp((F32)(new_dim - panelp->getRelevantMinDim()) / updated_auto_resize_headroom, MIN_FRACTIONAL_SIZE, MAX_FRACTIONAL_SIZE);
+				fraction_given_up -= new_fractional_size - panelp->mFractionalSize;
+				fraction_remaining -= panelp->mFractionalSize;
+				panelp->mFractionalSize = new_fractional_size;
+				llassert(!llisnan(panelp->mFractionalSize));
+			}
+			else
+			{	// freeze new size as original size
+				panelp->mTargetDim = new_dim;
+				fraction_remaining -= fraction_given_up;
+			}
+			which_panel = NEXT_PANEL;
+			break;
+		case NEXT_PANEL:
+			if (panelp->mAutoResize)
 			{
-				if (pixels_to_distribute < 0)
+				fraction_remaining -= panelp->mFractionalSize;
+				if (fraction_given_up != 0.f)
 				{
-					// shrink proportionally to amount over minimum
-					// so we can do this in one pass
-					delta_size = (shrink_headroom_available > 0) ? llround((F32)pixels_to_distribute * ((F32)(cur_height - relevant_min) / (F32)shrink_headroom_available)) : 0;
-					shrink_headroom_available -= (cur_height - relevant_min);
+					panelp->mFractionalSize = llclamp(panelp->mFractionalSize + fraction_given_up, MIN_FRACTIONAL_SIZE, MAX_FRACTIONAL_SIZE);
+					fraction_given_up = 0.f;
 				}
 				else
 				{
-					delta_size = llround((F32)pixels_to_distribute / (F32)num_resizable_panels);
-					num_resizable_panels--;
+					F32 new_fractional_size = llclamp((F32)(panelp->mTargetDim - panelp->getRelevantMinDim() + delta_auto_resize_headroom) 
+														/ updated_auto_resize_headroom,
+													MIN_FRACTIONAL_SIZE,
+													MAX_FRACTIONAL_SIZE);
+					fraction_given_up -= new_fractional_size - panelp->mFractionalSize;
+					panelp->mFractionalSize = new_fractional_size;
 				}
-				pixels_to_distribute -= delta_size;
-				new_height = llmax(relevant_min, cur_height + delta_size);
 			}
 			else
 			{
-				new_height = getDefaultHeight(new_height);
-			}
-		}
-		else
-		{
-			if (mOrientation == HORIZONTAL)
-			{
-				new_height = getDefaultHeight(new_height);
+				panelp->mTargetDim -= delta_dim;
 			}
-			else // VERTICAL
+			which_panel = AFTER_RESIZED_PANEL;
+			break;
+		case AFTER_RESIZED_PANEL:
+			if (panelp->mAutoResize)
 			{
-				new_width = getDefaultWidth(new_width);
+				panelp->mFractionalSize = llclamp(panelp->mFractionalSize + (panelp->mFractionalSize / fraction_remaining) * fraction_given_up,
+												MIN_FRACTIONAL_SIZE,
+												MAX_FRACTIONAL_SIZE);
 			}
-		}
-
-		// adjust running headroom count based on new sizes
-		shrink_headroom_total += delta_size;
-
-		LLRect panel_rect;
-		panel_rect.setLeftTopAndSize(cur_x, cur_y, new_width, new_height);
-		panelp->setShape(panel_rect);
-
-		LLRect resize_bar_rect = panel_rect;
-		if (mOrientation == HORIZONTAL)
-		{
-			resize_bar_rect.mLeft = panel_rect.mRight - resize_bar_overlap;
-			resize_bar_rect.mRight = panel_rect.mRight + mPanelSpacing + resize_bar_overlap;
-		}
-		else
-		{
-			resize_bar_rect.mTop = panel_rect.mBottom + resize_bar_overlap;
-			resize_bar_rect.mBottom = panel_rect.mBottom - mPanelSpacing - resize_bar_overlap;
-		}
-		(*panel_it)->mResizeBar->setRect(resize_bar_rect);
-
-		if (mOrientation == HORIZONTAL)
-		{
-			cur_x += llround(new_width * (*panel_it)->getCollapseFactor(mOrientation)) + mPanelSpacing;
-		}
-		else //VERTICAL
-		{
-			cur_y -= llround(new_height * (*panel_it)->getCollapseFactor(mOrientation)) + mPanelSpacing;
-		}
-	}
-
-	// update resize bars with new limits
-	LLLayoutPanel* last_resizeable_panel = NULL;
-	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
-	{
-		LLLayoutPanel* panelp = (*panel_it);
-		S32 relevant_min = panelp->getRelevantMinDim();
-
-		if (mOrientation == HORIZONTAL)
-		{
-			(*panel_it)->mResizeBar->setResizeLimits(
-				relevant_min, 
-				relevant_min + shrink_headroom_total);
-		}
-		else //VERTICAL
-		{
-			(*panel_it)->mResizeBar->setResizeLimits(
-				relevant_min, 
-				relevant_min + shrink_headroom_total);
-		}
-
-		// toggle resize bars based on panel visibility, resizability, etc
-		BOOL resize_bar_enabled = panelp->getVisible() && (*panel_it)->mUserResize;
-		(*panel_it)->mResizeBar->setVisible(resize_bar_enabled);
-
-		if ((*panel_it)->mUserResize || (*panel_it)->mAutoResize)
-		{
-			last_resizeable_panel = (*panel_it);
-		}
-	}
-
-	// hide last resize bar as there is nothing past it
-	// resize bars need to be in between two resizable panels
-	if (last_resizeable_panel)
-	{
-		last_resizeable_panel->mResizeBar->setVisible(FALSE);
-	}
-
-	// not enough room to fit existing contents
-	if (force_resize == FALSE
-		// layout did not complete by reaching target position
-		&& ((mOrientation == VERTICAL && cur_y != -mPanelSpacing)
-			|| (mOrientation == HORIZONTAL && cur_x != getRect().getWidth() + mPanelSpacing)))
-	{
-		// do another layout pass with all stacked elements contributing
-		// even those that don't usually resize
-		llassert_always(force_resize == FALSE);
-		updateLayout(TRUE);
-	}
-
-	 mAnimatedThisFrame = true;
-} // end LLLayoutStack::updateLayout
-
-
-LLLayoutPanel* LLLayoutStack::findEmbeddedPanel(LLPanel* panelp) const
-{
-	if (!panelp) return NULL;
-
-	e_panel_list_t::const_iterator panel_it;
-	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
-	{
-		if ((*panel_it) == panelp)
-		{
-			return *panel_it;
+		default:
+			break;
 		}
 	}
-	return NULL;
 }
 
-LLLayoutPanel* LLLayoutStack::findEmbeddedPanelByName(const std::string& name) const
+void LLLayoutStack::reshape(S32 width, S32 height, BOOL called_from_parent)
 {
-	LLLayoutPanel* result = NULL;
-
-	for (e_panel_list_t::const_iterator panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
-	{
-		LLLayoutPanel* p = *panel_it;
-
-		if (p->getName() == name)
-		{
-			result = p;
-			break;
-		}
-	}
-
-	return result;
+	mNeedsLayout = true;
+	LLView::reshape(width, height, called_from_parent);
 }
 
-// Compute sum of min_width or min_height of children
-void LLLayoutStack::calcMinExtents()
+void LLLayoutStack::updateResizeBarLimits()
 {
-	mMinWidth = 0;
-	mMinHeight = 0;
-
-	e_panel_list_t::iterator panel_it;
-	for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
+	LLLayoutPanel* previous_visible_panelp = NULL;
+	BOOST_REVERSE_FOREACH(LLLayoutPanel* visible_panelp, mPanels)
 	{
-		if (mOrientation == HORIZONTAL)
+		if (!visible_panelp->getVisible() || visible_panelp->mCollapsed)
 		{
-            mMinWidth += (*panel_it)->getRelevantMinDim();
-			if (panel_it != mPanels.begin())
-			{
-				mMinWidth += mPanelSpacing;
-			}
+			visible_panelp->mResizeBar->setVisible(FALSE);
+			continue;
 		}
-		else //VERTICAL
+
+		// toggle resize bars based on panel visibility, resizability, etc
+		if (previous_visible_panelp
+			&& (visible_panelp->mUserResize || previous_visible_panelp->mUserResize)				// one of the pair is user resizable
+			&& (visible_panelp->mAutoResize || visible_panelp->mUserResize)							// current panel is resizable
+			&& (previous_visible_panelp->mAutoResize || previous_visible_panelp->mUserResize))		// previous panel is resizable
 		{
-			mMinHeight += (*panel_it)->getRelevantMinDim();
-			if (panel_it != mPanels.begin())
-			{
-				mMinHeight += mPanelSpacing;
-			}
+			visible_panelp->mResizeBar->setVisible(TRUE);
+			S32 previous_panel_headroom = previous_visible_panelp->getVisibleDim() - previous_visible_panelp->getRelevantMinDim();
+			visible_panelp->mResizeBar->setResizeLimits(visible_panelp->getRelevantMinDim(), 
+														visible_panelp->getVisibleDim() + previous_panel_headroom);
 		}
-	}
-}
-
-void LLLayoutStack::createResizeBars()
-{
-	for (e_panel_list_t::iterator panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
-	{
-		LLLayoutPanel* lp = (*panel_it);
-		if (lp->mResizeBar == NULL)
+		else
 		{
-			LLResizeBar::Side side = (mOrientation == HORIZONTAL) ? LLResizeBar::RIGHT : LLResizeBar::BOTTOM;
-			LLRect resize_bar_rect = getRect();
-
-			LLResizeBar::Params resize_params;
-			resize_params.name("resize");
-			resize_params.resizing_view(lp);
-			resize_params.min_size(lp->getRelevantMinDim());
-			resize_params.side(side);
-			resize_params.snapping_enabled(false);
-			LLResizeBar* resize_bar = LLUICtrlFactory::create<LLResizeBar>(resize_params);
-			lp->mResizeBar = resize_bar;
-			LLView::addChild(resize_bar, 0);
-
-			// bring all resize bars to the front so that they are clickable even over the panels
-			// with a bit of overlap
-			for (e_panel_list_t::iterator panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it)
-			{
-				LLResizeBar* resize_barp = (*panel_it)->mResizeBar;
-				sendChildToFront(resize_barp);
-			}
+			visible_panelp->mResizeBar->setVisible(FALSE);
 		}
-	}
-}
 
-// update layout stack animations, etc. once per frame
-// NOTE: we use this to size world view based on animating UI, *before* we draw the UI
-// we might still need to call updateLayout during UI draw phase, in case UI elements
-// are resizing themselves dynamically
-//static 
-void LLLayoutStack::updateClass()
-{
-	for (instance_iter it = beginInstances(); it != endInstances(); ++it)
-	{
-		it->updateLayout();
+		previous_visible_panelp = visible_panelp;
 	}
 }
diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h
index d8ef0aeaca39c274a5c7ff7e8dc9b2fd12405a52..efe93f6def1ff65ec7d5f26928afc5c002fc3dc9 100644
--- a/indra/llui/lllayoutstack.h
+++ b/indra/llui/lllayoutstack.h
@@ -5,7 +5,7 @@
  *
  * $LicenseInfo:firstyear=2001&license=viewerlgpl$
  * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
+ * Copyright (C) 2010, Linden Reshasearch, Inc.
  * 
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -60,6 +60,7 @@ class LLLayoutStack : public LLView, public LLInstanceTracker<LLLayoutStack>
 								clip;
 		Optional<F32>			open_time_constant,
 								close_time_constant;
+		Optional<S32>			resize_bar_overlap;
 
 		Params();
 	};
@@ -72,12 +73,11 @@ class LLLayoutStack : public LLView, public LLInstanceTracker<LLLayoutStack>
 	/*virtual*/ void removeChild(LLView*);
 	/*virtual*/ BOOL postBuild();
 	/*virtual*/ bool addChild(LLView* child, S32 tab_group = 0);
+	/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
+
 
 	static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node = NULL);
 
-	S32 getMinWidth() const { return mMinWidth; }
-	S32 getMinHeight() const { return mMinHeight; }
-	
 	typedef enum e_animate
 	{
 		NO_ANIMATE,
@@ -85,49 +85,24 @@ class LLLayoutStack : public LLView, public LLInstanceTracker<LLLayoutStack>
 	} EAnimate;
 
 	void addPanel(LLLayoutPanel* panel, EAnimate animate = NO_ANIMATE);
-	void removePanel(LLPanel* panel);
 	void collapsePanel(LLPanel* panel, BOOL collapsed = TRUE);
 	S32 getNumPanels() { return mPanels.size(); }
-	/**
-	 * Moves panel_to_move before target_panel inside layout stack (both panels should already be there).
-	 * If move_to_front is true target_panel is ignored and panel_to_move is moved to the beginning of mPanels
-	 */
-	void movePanel(LLPanel* panel_to_move, LLPanel* target_panel, bool move_to_front = false);
-
-	void updatePanelAutoResize(const std::string& panel_name, BOOL auto_resize);
-	void setPanelUserResize(const std::string& panel_name, BOOL user_resize);
-	
-	/**
-	 * Gets minimal dimension along layout_stack axis of the specified by name panel.
-	 *
-	 * @returns true if specified by panel_name internal panel exists, false otherwise.
-	 */
-	bool getPanelMinSize(const std::string& panel_name, S32* min_dimp);
-
-	/**
-	 * Gets maximal dimension along layout_stack axis of the specified by name panel.
-	 *
-	 * @returns true if specified by panel_name internal panel exists, false otherwise.
-	 */
-	bool getPanelMaxSize(const std::string& panel_name, S32* max_dim);
-	
-	void updateLayout(BOOL force_resize = FALSE);
-	
+
+	void updateLayout();
+
 	S32 getPanelSpacing() const { return mPanelSpacing; }
-	BOOL getAnimate () const { return mAnimate; }
-	void setAnimate (BOOL animate) { mAnimate = animate; }
 	
 	static void updateClass();
 
 protected:
 	LLLayoutStack(const Params&);
 	friend class LLUICtrlFactory;
+	friend class LLLayoutPanel;
 
 private:
-	void createResizeBars();
-	void calcMinExtents();
-	S32 getDefaultHeight(S32 cur_height);
-	S32 getDefaultWidth(S32 cur_width);
+	void updateResizeBarLimits();
+	bool animatePanels();
+	void createResizeBar(LLLayoutPanel* panel);
 
 	const ELayoutOrientation mOrientation;
 
@@ -136,17 +111,19 @@ class LLLayoutStack : public LLView, public LLInstanceTracker<LLLayoutStack>
 
 	LLLayoutPanel* findEmbeddedPanel(LLPanel* panelp) const;
 	LLLayoutPanel* findEmbeddedPanelByName(const std::string& name) const;
+	void updateFractionalSizes();
+	void updatePanelRect( LLLayoutPanel* param1, const LLRect& new_rect );
 
-	S32 mMinWidth;  // calculated by calcMinExtents
-	S32 mMinHeight;  // calculated by calcMinExtents
 	S32 mPanelSpacing;
 
 	// true if we already applied animation this frame
 	bool mAnimatedThisFrame;
 	bool mAnimate;
 	bool mClip;
-	F32 mOpenTimeConstant;
-	F32 mCloseTimeConstant;
+	F32  mOpenTimeConstant;
+	F32  mCloseTimeConstant;
+	bool mNeedsLayout;
+	S32  mResizeBarOverlap;
 }; // end class LLLayoutStack
 
 
@@ -158,37 +135,30 @@ friend class LLUICtrlFactory;
 	struct Params : public LLInitParam::Block<Params, LLPanel::Params>
 	{
 		Optional<S32>			expanded_min_dim,
-								min_dim,
-								max_dim;
+								min_dim;
 		Optional<bool>			user_resize,
 								auto_resize;
 
-		Params()
-		:	expanded_min_dim("expanded_min_dim", 0),
-			min_dim("min_dim", 0),
-			max_dim("max_dim", 0),
-			user_resize("user_resize", true),
-			auto_resize("auto_resize", true)
-		{
-			addSynonym(min_dim, "min_width");
-			addSynonym(min_dim, "min_height");
-			addSynonym(max_dim, "max_width");
-			addSynonym(max_dim, "max_height");
-		}
+		Params();
 	};
 
 	~LLLayoutPanel();
 
 	void initFromParams(const Params& p);
 
-	S32 getMinDim() const { return mMinDim; }
-	void setMinDim(S32 value) { mMinDim = value; if (!mExpandedMinDimSpecified) mExpandedMinDim = value; }
+	void handleReshape(const LLRect& new_rect, bool by_user);
+
+	void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
+	
 
-	S32 getMaxDim() const { return mMaxDim; }
-	void setMaxDim(S32 value) { mMaxDim = value; }
+	void setVisible(BOOL visible);
 
-	S32 getExpandedMinDim() const { return mExpandedMinDim; }
-	void setExpandedMinDim(S32 value) { mExpandedMinDim = value; mExpandedMinDimSpecified = true; }
+	S32 getLayoutDim() const;
+	S32 getMinDim() const { return (mMinDim >= 0 || mAutoResize) ? llmax(0, mMinDim) : getLayoutDim(); }
+	void setMinDim(S32 value) { mMinDim = value; }
+
+	S32 getExpandedMinDim() const { return mExpandedMinDim >= 0 ? mExpandedMinDim : mMinDim; }
+	void setExpandedMinDim(S32 value) { mExpandedMinDim = value; }
 	
 	S32 getRelevantMinDim() const
 	{
@@ -196,28 +166,37 @@ friend class LLUICtrlFactory;
 		
 		if (!mCollapsed)
 		{
-			min_dim = mExpandedMinDim;
+			min_dim = getExpandedMinDim();
 		}
 		
 		return min_dim;
 	}
 
+	F32 getAutoResizeFactor() const;
+	F32 getVisibleAmount() const;
+	S32 getVisibleDim() const;
+
+	void setOrientation(LLLayoutStack::ELayoutOrientation orientation);
+	void storeOriginalDim();
+
+	void setIgnoreReshape(bool ignore) { mIgnoreReshape = ignore; }
+
 protected:
 	LLLayoutPanel(const Params& p);
 	
-	F32 getCollapseFactor(LLLayoutStack::ELayoutOrientation orientation);
-
-	bool mExpandedMinDimSpecified;
-	S32 mExpandedMinDim;
-	
-	S32 mMinDim;
-	S32 mMaxDim;
-	BOOL mAutoResize;
-	BOOL mUserResize;
-	BOOL mCollapsed;
+	const bool	mAutoResize;
+	const bool	mUserResize;
+
+	S32		mExpandedMinDim;
+	S32		mMinDim;
+	bool	mCollapsed;
+	F32		mVisibleAmt;
+	F32		mCollapseAmt;
+	F32		mFractionalSize;
+	S32		mTargetDim;
+	bool	mIgnoreReshape;
+	LLLayoutStack::ELayoutOrientation mOrientation;
 	class LLResizeBar* mResizeBar;
-	F32 mVisibleAmt;
-	F32 mCollapseAmt;
 };
 
 
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index ebdd47ae80508a493897f471091e0fc07f7f76ce..06dfc90d83ba51ca21dba130e00683383727dc87 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -198,6 +198,7 @@ LLLineEditor::~LLLineEditor()
 
 void LLLineEditor::onFocusReceived()
 {
+	gEditMenuHandler = this;
 	LLUICtrl::onFocusReceived();
 	updateAllowingLanguageInput();
 }
diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h
index 583bde360a3181d15d9a1813a119b1841c7b5d5e..2518dbe3c73cea0ff101500a39627265cc47b7f5 100644
--- a/indra/llui/lllineeditor.h
+++ b/indra/llui/lllineeditor.h
@@ -60,7 +60,7 @@ class LLLineEditor
 
 	typedef boost::function<void (LLLineEditor* caller)> keystroke_callback_t;
 	
-	struct MaxLength : public LLInitParam::Choice<MaxLength>
+	struct MaxLength : public LLInitParam::ChoiceBlock<MaxLength>
 	{
 		Alternative<S32> bytes, chars;
 		
diff --git a/indra/llui/llloadingindicator.cpp b/indra/llui/llloadingindicator.cpp
index c4eec1835cdce8178eea2c1acd5d8121be1f92ea..6ac38f5ad40ab0634a8241be158e5b1bf3e0cc7e 100644
--- a/indra/llui/llloadingindicator.cpp
+++ b/indra/llui/llloadingindicator.cpp
@@ -34,6 +34,7 @@
 // Project includes
 #include "lluictrlfactory.h"
 #include "lluiimage.h"
+#include "boost/foreach.hpp"
 
 // registered in llui.cpp to avoid being left out by MS linker
 //static LLDefaultChildRegistry::Register<LLLoadingIndicator> r("loading_indicator");
@@ -51,11 +52,9 @@ LLLoadingIndicator::LLLoadingIndicator(const Params& p)
 
 void LLLoadingIndicator::initFromParams(const Params& p)
 {
-	for (LLInitParam::ParamIterator<LLUIImage*>::const_iterator it = p.images().image.begin(), end_it = p.images().image.end();
-		it != end_it;
-		++it)
+	BOOST_FOREACH(LLUIImage* image, p.images.image)
 	{
-		mImages.push_back(it->getValue());
+		mImages.push_back(image);
 	}
 
 	// Start timer for switching images.
diff --git a/indra/llui/llloadingindicator.h b/indra/llui/llloadingindicator.h
index 7c444788483bd898c6d4a0d7eb6c0cecd8d37b4f..c1f979c1113f6bb9916c905f178f9e55b09be187 100644
--- a/indra/llui/llloadingindicator.h
+++ b/indra/llui/llloadingindicator.h
@@ -51,7 +51,7 @@ class LLLoadingIndicator
 	LOG_CLASS(LLLoadingIndicator);
 public:
 
-	struct Images : public LLInitParam::Block<Images>
+	struct Images : public LLInitParam::BatchBlock<Images>
 	{
 		Multiple<LLUIImage*>	image;
 
@@ -63,7 +63,7 @@ class LLLoadingIndicator
 	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
 	{
 		Optional<F32>			images_per_sec;
-		Batch<Images>			images;
+		Optional<Images>		images;
 
 		Params()
 		:	images_per_sec("images_per_sec", 1.0f),
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index 6cac841cdeacb3fceb58351b210fa7d2b2840e41..95ecbb1c9479cb9a885ce9c10c448ace5e29e9ab 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -947,9 +947,14 @@ LLMenuItemBranchGL::LLMenuItemBranchGL(const LLMenuItemBranchGL::Params& p)
 
 LLMenuItemBranchGL::~LLMenuItemBranchGL()
 {
-	LLView::deleteViewByHandle(mBranchHandle);
+	if (mBranchHandle.get())
+	{
+		mBranchHandle.get()->die();
+	}
 }
 
+
+
 // virtual
 LLView* LLMenuItemBranchGL::getChildView(const std::string& name, BOOL recurse) const
 {
@@ -1686,7 +1691,8 @@ LLMenuGL::LLMenuGL(const LLMenuGL::Params& p)
 	mSpilloverMenu(NULL),
 	mJumpKey(p.jump_key),
 	mCreateJumpKeys(p.create_jump_keys),
-	mNeedsArrange(FALSE), 
+	mNeedsArrange(FALSE),
+	mResetScrollPositionOnShow(true),
 	mShortcutPad(p.shortcut_pad)
 {
 	typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
@@ -1731,7 +1737,7 @@ void LLMenuGL::setCanTearOff(BOOL tear_off)
 	{
 		LLMenuItemTearOffGL::Params p;
 		mTearOffItem = LLUICtrlFactory::create<LLMenuItemTearOffGL>(p);
-		addChildInBack(mTearOffItem);
+		addChild(mTearOffItem);
 	}
 	else if (!tear_off && mTearOffItem != NULL)
 	{
@@ -3043,7 +3049,7 @@ void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y)
 	S32 mouse_x, mouse_y;
 
 	// Resetting scrolling position
-	if (menu->isScrollable())
+	if (menu->isScrollable() && menu->isScrollPositionOnShowReset())
 	{
 		menu->mFirstVisibleItem = NULL;
 	}
diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h
index 77db588390fe7fb4c869e03653e6c5ed5ef1881e..36f3ba34b9b5e45c3271563e0efc7224acbb86fe 100644
--- a/indra/llui/llmenugl.h
+++ b/indra/llui/llmenugl.h
@@ -516,6 +516,9 @@ class LLMenuGL
 
 	static class LLMenuHolderGL* sMenuContainer;
 	
+	void resetScrollPositionOnShow(bool reset_scroll_pos) { mResetScrollPositionOnShow = reset_scroll_pos; }
+	bool isScrollPositionOnShowReset() { return mResetScrollPositionOnShow; }
+
 protected:
 	void createSpilloverBranch();
 	void cleanupSpilloverBranch();
@@ -565,6 +568,7 @@ class LLMenuGL
 	KEY				mJumpKey;
 	BOOL			mCreateJumpKeys;
 	S32				mShortcutPad;
+	bool			mResetScrollPositionOnShow;
 }; // end class LLMenuGL
 
 
@@ -677,7 +681,7 @@ class LLContextMenu
 
 			BOOL	appendContextSubMenu(LLContextMenu *menu);
 
-			LLHandle<LLContextMenu> getHandle() { mHandle.bind(this); return mHandle; }
+			LLHandle<LLContextMenu> getHandle() { return getDerivedHandle<LLContextMenu>(); }
 
 protected:
 	BOOL						mHoveredAnyItem;
diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp
index ffe5908a9d7ed490ad1fbe3b7b2b95347d72e156..d232e27ef230afe3deaa0757f9149f6a4cb181fe 100644
--- a/indra/llui/llnotifications.cpp
+++ b/indra/llui/llnotifications.cpp
@@ -46,6 +46,7 @@
 
 #include <algorithm>
 #include <boost/regex.hpp>
+#include <boost/foreach.hpp>
 
 
 const std::string NOTIFICATION_PERSIST_VERSION = "0.93";
@@ -416,23 +417,17 @@ LLNotificationTemplate::LLNotificationTemplate(const LLNotificationTemplate::Par
 		mSoundEffect = LLUUID(LLUI::sSettingGroups["config"]->getString(p.sound));
 	}
 
-	for(LLInitParam::ParamIterator<LLNotificationTemplate::UniquenessContext>::const_iterator it = p.unique.contexts.begin(),
-			end_it = p.unique.contexts.end();
-		it != end_it;
-		++it)
+	BOOST_FOREACH(const LLNotificationTemplate::UniquenessContext& context, p.unique.contexts)
 	{
-		mUniqueContext.push_back(it->value);
+		mUniqueContext.push_back(context.value);
 	}
 	
 	lldebugs << "notification \"" << mName << "\": tag count is " << p.tags.size() << llendl;
 	
-	for(LLInitParam::ParamIterator<LLNotificationTemplate::Tag>::const_iterator it = p.tags.begin(),
-			end_it = p.tags.end();
-		it != end_it;
-		++it)
+	BOOST_FOREACH(const LLNotificationTemplate::Tag& tag, p.tags)
 	{
-		lldebugs << "    tag \"" << std::string(it->value) << "\"" << llendl;
-		mTags.push_back(it->value);
+		lldebugs << "    tag \"" << std::string(tag.value) << "\"" << llendl;
+		mTags.push_back(tag.value);
 	}
 
 	mForm = LLNotificationFormPtr(new LLNotificationForm(p.name, p.form_ref.form));
@@ -1397,14 +1392,12 @@ void replaceFormText(LLNotificationForm::Params& form, const std::string& patter
 	{
 		form.ignore.text = replace;
 	}
-	for (LLInitParam::ParamIterator<LLNotificationForm::FormElement>::iterator it = form.form_elements.elements.begin(),
-			end_it = form.form_elements.elements.end();
-		it != end_it;
-		++it)
+
+	BOOST_FOREACH(LLNotificationForm::FormElement& element, form.form_elements.elements)
 	{
-		if (it->button.isChosen() && it->button.text() == pattern)
+		if (element.button.isChosen() && element.button.text() == pattern)
 		{
-			it->button.text = replace;
+			element.button.text = replace;
 		}
 	}
 }
@@ -1453,48 +1446,42 @@ bool LLNotifications::loadTemplates()
 
 	mTemplates.clear();
 
-	for(LLInitParam::ParamIterator<LLNotificationTemplate::GlobalString>::const_iterator it = params.strings.begin(), end_it = params.strings.end();
-		it != end_it;
-		++it)
+	BOOST_FOREACH(LLNotificationTemplate::GlobalString& string, params.strings)
 	{
-		mGlobalStrings[it->name] = it->value;
+		mGlobalStrings[string.name] = string.value;
 	}
 
 	std::map<std::string, LLNotificationForm::Params> form_templates;
 
-	for(LLInitParam::ParamIterator<LLNotificationTemplate::Template>::const_iterator it = params.templates.begin(), end_it = params.templates.end();
-		it != end_it;
-		++it)
+	BOOST_FOREACH(LLNotificationTemplate::Template& notification_template, params.templates)
 	{
-		form_templates[it->name] = it->form;
+		form_templates[notification_template.name] = notification_template.form;
 	}
 
-	for(LLInitParam::ParamIterator<LLNotificationTemplate::Params>::iterator it = params.notifications.begin(), end_it = params.notifications.end();
-		it != end_it;
-		++it)
+	BOOST_FOREACH(LLNotificationTemplate::Params& notification, params.notifications)
 	{
-		if (it->form_ref.form_template.isChosen())
+		if (notification.form_ref.form_template.isChosen())
 		{
 			// replace form contents from template
-			it->form_ref.form = form_templates[it->form_ref.form_template.name];
-			if(it->form_ref.form_template.yes_text.isProvided())
+			notification.form_ref.form = form_templates[notification.form_ref.form_template.name];
+			if(notification.form_ref.form_template.yes_text.isProvided())
 			{
-				replaceFormText(it->form_ref.form, "$yestext", it->form_ref.form_template.yes_text);
+				replaceFormText(notification.form_ref.form, "$yestext", notification.form_ref.form_template.yes_text);
 			}
-			if(it->form_ref.form_template.no_text.isProvided())
+			if(notification.form_ref.form_template.no_text.isProvided())
 			{
-				replaceFormText(it->form_ref.form, "$notext", it->form_ref.form_template.no_text);
+				replaceFormText(notification.form_ref.form, "$notext", notification.form_ref.form_template.no_text);
 			}
-			if(it->form_ref.form_template.cancel_text.isProvided())
+			if(notification.form_ref.form_template.cancel_text.isProvided())
 			{
-				replaceFormText(it->form_ref.form, "$canceltext", it->form_ref.form_template.cancel_text);
+				replaceFormText(notification.form_ref.form, "$canceltext", notification.form_ref.form_template.cancel_text);
 			}
-			if(it->form_ref.form_template.ignore_text.isProvided())
+			if(notification.form_ref.form_template.ignore_text.isProvided())
 			{
-				replaceFormText(it->form_ref.form, "$ignoretext", it->form_ref.form_template.ignore_text);
+				replaceFormText(notification.form_ref.form, "$ignoretext", notification.form_ref.form_template.ignore_text);
 			}
 		}
-		mTemplates[it->name] = LLNotificationTemplatePtr(new LLNotificationTemplate(*it));
+		mTemplates[notification.name] = LLNotificationTemplatePtr(new LLNotificationTemplate(notification));
 	}
 
 	return true;
@@ -1517,12 +1504,9 @@ bool LLNotifications::loadVisibilityRules()
 
 	mVisibilityRules.clear();
 
-	for(LLInitParam::ParamIterator<LLNotificationVisibilityRule::Rule>::iterator it = params.rules.begin(), 
-			end_it = params.rules.end();
-		it != end_it;
-		++it)
+	BOOST_FOREACH(LLNotificationVisibilityRule::Rule& rule, params.rules)
 	{
-		mVisibilityRules.push_back(LLNotificationVisibilityRulePtr(new LLNotificationVisibilityRule(*it)));
+		mVisibilityRules.push_back(LLNotificationVisibilityRulePtr(new LLNotificationVisibilityRule(rule)));
 	}
 
 	return true;
@@ -1640,7 +1624,7 @@ LLNotificationPtr LLNotifications::find(LLUUID uuid)
 	LLNotificationSet::iterator it=mItems.find(target);
 	if (it == mItems.end())
 	{
-		llwarns << "Tried to dereference uuid '" << uuid << "' as a notification key but didn't find it." << llendl;
+		LL_DEBUGS("Notifications") << "Tried to dereference uuid '" << uuid << "' as a notification key but didn't find it." << llendl;
 		return LLNotificationPtr((LLNotification*)NULL);
 	}
 	else
diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h
index 0c4d4fc897ab187fe36b944cdad4b9fdcff2d12f..462d69be2e1b3bea6eb5339d0eca4d6371682e56 100644
--- a/indra/llui/llnotifications.h
+++ b/indra/llui/llnotifications.h
@@ -201,7 +201,7 @@ class LLNotificationForm
 		FormInput();
 	};
 
-	struct FormElement : public LLInitParam::Choice<FormElement>
+	struct FormElement : public LLInitParam::ChoiceBlock<FormElement>
 	{
 		Alternative<FormButton> button;
 		Alternative<FormInput>	input;
@@ -312,7 +312,7 @@ friend class LLNotifications;
 		Optional<LLNotificationContext*>		context;
 		Optional<void*>							responder;
 
-		struct Functor : public LLInitParam::Choice<Functor>
+		struct Functor : public LLInitParam::ChoiceBlock<Functor>
 		{
 			Alternative<std::string>										name;
 			Alternative<LLNotificationFunctorRegistry::ResponseFunctor>	function;
diff --git a/indra/llui/llnotificationtemplate.h b/indra/llui/llnotificationtemplate.h
index eff572b553f0c5413d3ee6f5c846de13f92c6a5e..fb50c9c1233b8de79e8d3e27c62b94dce617a35a 100644
--- a/indra/llui/llnotificationtemplate.h
+++ b/indra/llui/llnotificationtemplate.h
@@ -88,10 +88,10 @@ struct LLNotificationTemplate
 	{
 	private:
 		// this idiom allows 
-		// <notification unique="true">
+		// <notification> <unique/> </notification>
 		// as well as
 		// <notification> <unique> <context></context> </unique>...
-		Optional<bool>			dummy_val;
+		Optional<LLInitParam::Flag>	dummy_val;
 	public:
 		Multiple<UniquenessContext>	contexts;
 
@@ -147,7 +147,7 @@ struct LLNotificationTemplate
 		{}
 	};
 
-	struct FormRef : public LLInitParam::Choice<FormRef>
+	struct FormRef : public LLInitParam::ChoiceBlock<FormRef>
 	{
 		Alternative<LLNotificationForm::Params>		form;
 		Alternative<TemplateRef>					form_template;
diff --git a/indra/llui/llnotificationvisibilityrule.h b/indra/llui/llnotificationvisibilityrule.h
index 78bdec2a8f3ac80591a8acbb540164c2942a9e51..78788a275c7b00150b0e7623da0ed95a0a02550f 100644
--- a/indra/llui/llnotificationvisibilityrule.h
+++ b/indra/llui/llnotificationvisibilityrule.h
@@ -59,7 +59,7 @@ struct LLNotificationVisibilityRule
 		{}
 	};
 
-	struct Rule : public LLInitParam::Choice<Rule>
+	struct Rule : public LLInitParam::ChoiceBlock<Rule>
 	{
 		Alternative<Filter>		show;
 		Alternative<Filter>		hide;
diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp
index a45b617c2ecb8f5d2af50c13c203c653b391fdaa..00318cec6b0b3043863eae2754ad9565b0ae1c38 100644
--- a/indra/llui/llpanel.cpp
+++ b/indra/llui/llpanel.cpp
@@ -122,8 +122,6 @@ LLPanel::LLPanel(const LLPanel::Params& p)
 	{
 		addBorder(p.border);
 	}
-	
-	mPanelHandle.bind(this);
 }
 
 LLPanel::~LLPanel()
diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h
index 790025cb2dcd8397e4b9e72f5632208aa2dcd6cc..f62020102022ce71c9e729012bfa1180be8a0f2c 100644
--- a/indra/llui/llpanel.h
+++ b/indra/llui/llpanel.h
@@ -96,9 +96,6 @@ class LLPanel : public LLUICtrl, public LLBadgeHolder
 		Params();
 	};
 
-	// valid children for LLPanel are stored in this registry
-	typedef LLDefaultChildRegistry child_registry_t;
-
 protected:
 	friend class LLUICtrlFactory;
 	// RN: for some reason you can't just use LLUICtrlFactory::getDefaultParams as a default argument in VC8
@@ -138,6 +135,8 @@ class LLPanel : public LLUICtrl, public LLBadgeHolder
 	const LLColor4&	getBackgroundColor() const { return mBgOpaqueColor; }
 	void			setTransparentColor(const LLColor4& color) { mBgAlphaColor = color; }
 	const LLColor4& getTransparentColor() const { return mBgAlphaColor; }
+	void			setBackgroundImage(LLUIImage* image) { mBgOpaqueImage = image; }
+	void			setTransparentImage(LLUIImage* image) { mBgAlphaImage = image; }
 	LLPointer<LLUIImage> getBackgroundImage() const { return mBgOpaqueImage; }
 	LLPointer<LLUIImage> getTransparentImage() const { return mBgAlphaImage; }
 	LLColor4		getBackgroundImageOverlay() { return mBgOpaqueImageOverlay; }
@@ -156,7 +155,7 @@ class LLPanel : public LLUICtrl, public LLBadgeHolder
 	
 	void			setCtrlsEnabled(BOOL b);
 
-	LLHandle<LLPanel>	getHandle() const { return mPanelHandle; }
+	LLHandle<LLPanel>	getHandle() const { return getDerivedHandle<LLPanel>(); }
 
 	const LLCallbackMap::map_t& getFactoryMap() const { return mFactoryMap; }
 	
@@ -281,7 +280,6 @@ class LLPanel : public LLUICtrl, public LLBadgeHolder
 	LLViewBorder*	mBorder;
 	LLButton*		mDefaultBtn;
 	LLUIString		mLabel;
-	LLRootHandle<LLPanel> mPanelHandle;
 
 	typedef std::map<std::string, std::string> ui_string_map_t;
 	ui_string_map_t	mUIStrings;
diff --git a/indra/llui/llresizebar.cpp b/indra/llui/llresizebar.cpp
index 02f60c76fafb36a17c869aabd6eac2684fef606f..87aeb4d7a74b6755b58263c84ccaff2ac92b05d7 100644
--- a/indra/llui/llresizebar.cpp
+++ b/indra/llui/llresizebar.cpp
@@ -79,6 +79,8 @@ LLResizeBar::LLResizeBar(const LLResizeBar::Params& p)
 
 BOOL LLResizeBar::handleMouseDown(S32 x, S32 y, MASK mask)
 {
+	if (!canResize()) return FALSE;
+
 	// Route future Mouse messages here preemptively.  (Release on mouse up.)
 	// No handler needed for focus lost since this clas has no state that depends on it.
 	gFocusMgr.setMouseCapture( this );
@@ -243,7 +245,7 @@ BOOL LLResizeBar::handleHover(S32 x, S32 y, MASK mask)
 		handled = TRUE;
 	}
 
-	if( handled )
+	if( handled && canResize() )
 	{
 		switch( mSide )
 		{
diff --git a/indra/llui/llresizebar.h b/indra/llui/llresizebar.h
index 0725fbd846ac64313b304636b46f31ba296862a0..6daf191918558f1076a3dea4fb43ef23094db756 100644
--- a/indra/llui/llresizebar.h
+++ b/indra/llui/llresizebar.h
@@ -70,6 +70,7 @@ class LLResizeBar : public LLView
 	void			setResizeLimits( S32 min_size, S32 max_size ) { mMinSize = min_size; mMaxSize = max_size; }
 	void			setEnableSnapping(BOOL enable) { mSnappingEnabled = enable; }
 	void			setAllowDoubleClickSnapping(BOOL allow) { mAllowDoubleClickSnapping = allow; }
+	bool			canResize() { return getEnabled() && mMaxSize > mMinSize; }
 
 private:
 	S32				mDragLastScreenX;
diff --git a/indra/llui/llresizehandle.h b/indra/llui/llresizehandle.h
index 531eb1db618b477b4bc197ab8f0f4318ad68401e..7541b9e6c06ac534de59deb50555111596bde1cf 100644
--- a/indra/llui/llresizehandle.h
+++ b/indra/llui/llresizehandle.h
@@ -55,7 +55,7 @@ class LLResizeHandle : public LLView
 	virtual BOOL	handleMouseUp(S32 x, S32 y, MASK mask);
 
 	void			setResizeLimits( S32 min_width, S32 min_height ) { mMinWidth = min_width; mMinHeight = min_height; }
-
+	
 private:
 	BOOL			pointInHandle( S32 x, S32 y );
 
diff --git a/indra/llui/llscrollcontainer.cpp b/indra/llui/llscrollcontainer.cpp
index b44b4c36b676d06dafaee90c648eb2edeb1f25df..ad4cc20d9a5c2cf2327c19b1b6560a711000b2e3 100644
--- a/indra/llui/llscrollcontainer.cpp
+++ b/indra/llui/llscrollcontainer.cpp
@@ -223,6 +223,15 @@ BOOL LLScrollContainer::handleKeyHere(KEY key, MASK mask)
 	return FALSE;
 }
 
+BOOL LLScrollContainer::handleUnicodeCharHere(llwchar uni_char)
+{
+	if (mScrolledView && mScrolledView->handleUnicodeCharHere(uni_char))
+	{
+		return TRUE;
+	}
+	return FALSE;
+}
+
 BOOL LLScrollContainer::handleScrollWheel( S32 x, S32 y, S32 clicks )
 {
 	// Give event to my child views - they may have scroll bars
@@ -415,63 +424,66 @@ void LLScrollContainer::draw()
 		focusFirstItem();
 	}
 
-	// Draw background
-	if( mIsOpaque )
+	if (getRect().isValid()) 
 	{
-		F32 alpha = getCurrentTransparency();
+		// Draw background
+		if( mIsOpaque )
+		{
+			F32 alpha = getCurrentTransparency();
 
-		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-		gl_rect_2d(mInnerRect, mBackgroundColor.get() % alpha);
-	}
+			gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+			gl_rect_2d(mInnerRect, mBackgroundColor.get() % alpha);
+		}
 	
-	// Draw mScrolledViews and update scroll bars.
-	// get a scissor region ready, and draw the scrolling view. The
-	// scissor region ensures that we don't draw outside of the bounds
-	// of the rectangle.
-	if( mScrolledView )
-	{
-		updateScroll();
-
-		// Draw the scrolled area.
+		// Draw mScrolledViews and update scroll bars.
+		// get a scissor region ready, and draw the scrolling view. The
+		// scissor region ensures that we don't draw outside of the bounds
+		// of the rectangle.
+		if( mScrolledView )
 		{
-			S32 visible_width = 0;
-			S32 visible_height = 0;
-			BOOL show_v_scrollbar = FALSE;
-			BOOL show_h_scrollbar = FALSE;
-			calcVisibleSize( &visible_width, &visible_height, &show_h_scrollbar, &show_v_scrollbar );
-
-			LLLocalClipRect clip(LLRect(mInnerRect.mLeft, 
-					mInnerRect.mBottom + (show_h_scrollbar ? scrollbar_size : 0) + visible_height,
-					mInnerRect.mRight - (show_v_scrollbar ? scrollbar_size: 0),
-					mInnerRect.mBottom + (show_h_scrollbar ? scrollbar_size : 0)
-					));
-			drawChild(mScrolledView);
-		}
-	}
-
-	// Highlight border if a child of this container has keyboard focus
-	if( mBorder->getVisible() )
-	{
-		mBorder->setKeyboardFocusHighlight( gFocusMgr.childHasKeyboardFocus(this) );
-	}
+			updateScroll();
 
-	// Draw all children except mScrolledView
-	// Note: scrollbars have been adjusted by above drawing code
-	for (child_list_const_reverse_iter_t child_iter = getChildList()->rbegin();
-		 child_iter != getChildList()->rend(); ++child_iter)
-	{
-		LLView *viewp = *child_iter;
-		if( sDebugRects )
-		{
-			sDepth++;
+			// Draw the scrolled area.
+			{
+				S32 visible_width = 0;
+				S32 visible_height = 0;
+				BOOL show_v_scrollbar = FALSE;
+				BOOL show_h_scrollbar = FALSE;
+				calcVisibleSize( &visible_width, &visible_height, &show_h_scrollbar, &show_v_scrollbar );
+
+				LLLocalClipRect clip(LLRect(mInnerRect.mLeft, 
+						mInnerRect.mBottom + (show_h_scrollbar ? scrollbar_size : 0) + visible_height,
+						mInnerRect.mRight - (show_v_scrollbar ? scrollbar_size: 0),
+						mInnerRect.mBottom + (show_h_scrollbar ? scrollbar_size : 0)
+						));
+				drawChild(mScrolledView);
+			}
 		}
-		if( (viewp != mScrolledView) && viewp->getVisible() )
+
+		// Highlight border if a child of this container has keyboard focus
+		if( mBorder->getVisible() )
 		{
-			drawChild(viewp);
+			mBorder->setKeyboardFocusHighlight( gFocusMgr.childHasKeyboardFocus(this) );
 		}
-		if( sDebugRects )
+
+		// Draw all children except mScrolledView
+		// Note: scrollbars have been adjusted by above drawing code
+		for (child_list_const_reverse_iter_t child_iter = getChildList()->rbegin();
+			 child_iter != getChildList()->rend(); ++child_iter)
 		{
-			sDepth--;
+			LLView *viewp = *child_iter;
+			if( sDebugRects )
+			{
+				sDepth++;
+			}
+			if( (viewp != mScrolledView) && viewp->getVisible() )
+			{
+				drawChild(viewp);
+			}
+			if( sDebugRects )
+			{
+				sDepth--;
+			}
 		}
 	}
 } // end draw
diff --git a/indra/llui/llscrollcontainer.h b/indra/llui/llscrollcontainer.h
index 46a71a7e30afef66a79d9df23e971276ece84f97..3aa79cc255b47d5bd4d7c158fca21f92fe6d1d65 100644
--- a/indra/llui/llscrollcontainer.h
+++ b/indra/llui/llscrollcontainer.h
@@ -103,6 +103,7 @@ class LLScrollContainer : public LLUICtrl
 	// LLView functionality
 	virtual void	reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
 	virtual BOOL	handleKeyHere(KEY key, MASK mask);
+	virtual BOOL	handleUnicodeCharHere(llwchar uni_char);
 	virtual BOOL	handleScrollWheel( S32 x, S32 y, S32 clicks );
 	virtual BOOL	handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 								   EDragAndDropType cargo_type,
diff --git a/indra/llui/llscrolllistcolumn.h b/indra/llui/llscrolllistcolumn.h
index 12baea8e0c4c7fc9d5787507fd87931023a10dea..b4d4a6d05e7b8168702dfc96356d01669816ebbb 100644
--- a/indra/llui/llscrolllistcolumn.h
+++ b/indra/llui/llscrolllistcolumn.h
@@ -95,7 +95,7 @@ class LLScrollListColumn
 		Optional<ESortDirection, SortNames>	sort_direction;
 		Optional<bool>						sort_ascending;
 
-		struct Width : public LLInitParam::Choice<Width>
+		struct Width : public LLInitParam::ChoiceBlock<Width>
 		{
 			Alternative<bool>	dynamic_width;
 			Alternative<S32>		pixel_width;
@@ -112,7 +112,7 @@ class LLScrollListColumn
 		Optional<Width>						width;
 
 		// either an image or label is used in column header
-		struct Header : public LLInitParam::Choice<Header>
+		struct Header : public LLInitParam::ChoiceBlock<Header>
 		{
 			Alternative<std::string>			label;
 			Alternative<LLUIImage*>			image;
diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp
index 622f3e215c923f62d6deea4e7e2f19cbb4333c92..466fac33ea3c3f1e876717e28630c4d3a35825f3 100644
--- a/indra/llui/llscrolllistctrl.cpp
+++ b/indra/llui/llscrolllistctrl.cpp
@@ -175,6 +175,7 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p)
 	mBorder(NULL),
 	mSortCallback(NULL),
 	mPopupMenu(NULL),
+	mCommentTextView(NULL),
 	mNumDynamicWidthColumns(0),
 	mTotalStaticColumnWidth(0),
 	mTotalColumnPadding(0),
@@ -476,7 +477,12 @@ void LLScrollListCtrl::updateLayout()
 		getRect().getWidth() - 2 * mBorderThickness,
 		getRect().getHeight() - (2 * mBorderThickness ) - heading_size );
 
-	getChildView("comment_text")->setShape(mItemListRect);
+	if (mCommentTextView == NULL)
+	{
+		mCommentTextView = getChildView("comment_text");
+	}
+
+	mCommentTextView->setShape(mItemListRect);
 
 	// how many lines of content in a single "page"
 	S32 page_lines =  getLinesPerPage();
diff --git a/indra/llui/llscrolllistctrl.h b/indra/llui/llscrolllistctrl.h
index 09ab89960da1814d99d5ae91da24b8f873a08fa0..ae8aea92457bb98fb8c531b3bf911f9937a2bab5 100644
--- a/indra/llui/llscrolllistctrl.h
+++ b/indra/llui/llscrolllistctrl.h
@@ -480,6 +480,8 @@ class LLScrollListCtrl : public LLUICtrl, public LLEditMenuHandler,
 	S32				mHighlightedItem;
 	class LLViewBorder*	mBorder;
 	LLContextMenu	*mPopupMenu;
+	
+	LLView			*mCommentTextView;
 
 	LLWString		mSearchString;
 	LLFrameTimer	mSearchTimer;
diff --git a/indra/llui/llsdparam.cpp b/indra/llui/llsdparam.cpp
index 04919e69916046457a4a68cc1ee2233a2f12ff83..0e29873bb01403bacc492661f48a7c1d88bf91fd 100644
--- a/indra/llui/llsdparam.cpp
+++ b/indra/llui/llsdparam.cpp
@@ -34,6 +34,9 @@
 static 	LLInitParam::Parser::parser_read_func_map_t sReadFuncs;
 static 	LLInitParam::Parser::parser_write_func_map_t sWriteFuncs;
 static 	LLInitParam::Parser::parser_inspect_func_map_t sInspectFuncs;
+static const LLSD NO_VALUE_MARKER;
+
+LLFastTimer::DeclareTimer FTM_SD_PARAM_ADAPTOR("LLSD to LLInitParam conversion");
 
 //
 // LLParamSDParser
@@ -45,7 +48,7 @@ LLParamSDParser::LLParamSDParser()
 
 	if (sReadFuncs.empty())
 	{
-		registerParserFuncs<LLInitParam::NoParamValue>(readNoValue, &LLParamSDParser::writeNoValue);
+		registerParserFuncs<LLInitParam::Flag>(readFlag, &LLParamSDParser::writeFlag);
 		registerParserFuncs<S32>(readS32, &LLParamSDParser::writeTypedValue<S32>);
 		registerParserFuncs<U32>(readU32, &LLParamSDParser::writeU32Param);
 		registerParserFuncs<F32>(readF32, &LLParamSDParser::writeTypedValue<F32>);
@@ -60,29 +63,34 @@ LLParamSDParser::LLParamSDParser()
 }
 
 // special case handling of U32 due to ambiguous LLSD::assign overload
-bool LLParamSDParser::writeU32Param(LLParamSDParser::parser_t& parser, const void* val_ptr, const parser_t::name_stack_t& name_stack)
+bool LLParamSDParser::writeU32Param(LLParamSDParser::parser_t& parser, const void* val_ptr, parser_t::name_stack_t& name_stack)
 {
 	LLParamSDParser& sdparser = static_cast<LLParamSDParser&>(parser);
 	if (!sdparser.mWriteRootSD) return false;
 	
-	LLSD* sd_to_write = sdparser.getSDWriteNode(name_stack);
-	if (!sd_to_write) return false;
+	parser_t::name_stack_range_t range(name_stack.begin(), name_stack.end());
+	LLSD& sd_to_write = LLParamSDParserUtilities::getSDWriteNode(*sdparser.mWriteRootSD, range);
+	sd_to_write.assign((S32)*((const U32*)val_ptr));
 
-	sd_to_write->assign((S32)*((const U32*)val_ptr));
 	return true;
 }
 
-bool LLParamSDParser::writeNoValue(LLParamSDParser::parser_t& parser, const void* val_ptr, const parser_t::name_stack_t& name_stack)
+bool LLParamSDParser::writeFlag(LLParamSDParser::parser_t& parser, const void* val_ptr, parser_t::name_stack_t& name_stack)
 {
 	LLParamSDParser& sdparser = static_cast<LLParamSDParser&>(parser);
 	if (!sdparser.mWriteRootSD) return false;
 
-	LLSD* sd_to_write = sdparser.getSDWriteNode(name_stack);
-	if (!sd_to_write) return false;
+	parser_t::name_stack_range_t range(name_stack.begin(), name_stack.end());
+	LLParamSDParserUtilities::getSDWriteNode(*sdparser.mWriteRootSD, range);
 
 	return true;
 }
 
+void LLParamSDParser::submit(LLInitParam::BaseBlock& block, const LLSD& sd, LLInitParam::Parser::name_stack_t& name_stack)
+{
+	mCurReadSD = &sd;
+	block.submitValue(name_stack, *this);
+}
 
 void LLParamSDParser::readSD(const LLSD& sd, LLInitParam::BaseBlock& block, bool silent)
 {
@@ -90,51 +98,17 @@ void LLParamSDParser::readSD(const LLSD& sd, LLInitParam::BaseBlock& block, bool
 	mNameStack.clear();
 	setParseSilently(silent);
 
-	readSDValues(sd, block);
+	LLParamSDParserUtilities::readSDValues(boost::bind(&LLParamSDParser::submit, this, boost::ref(block), _1, _2), sd, mNameStack);
+	//readSDValues(sd, block);
 }
 
 void LLParamSDParser::writeSD(LLSD& sd, const LLInitParam::BaseBlock& block)
 {
 	mNameStack.clear();
 	mWriteRootSD = &sd;
-	block.serializeBlock(*this);
-}
-
-const LLSD NO_VALUE_MARKER;
 
-void LLParamSDParser::readSDValues(const LLSD& sd, LLInitParam::BaseBlock& block)
-{
-	if (sd.isMap())
-	{
-		for (LLSD::map_const_iterator it = sd.beginMap();
-			it != sd.endMap();
-			++it)
-		{
-			mNameStack.push_back(make_pair(it->first, newParseGeneration()));
-			readSDValues(it->second, block);
-			mNameStack.pop_back();
-		}
-	}
-	else if (sd.isArray())
-	{
-		for (LLSD::array_const_iterator it = sd.beginArray();
-			it != sd.endArray();
-			++it)
-		{
-			mNameStack.back().second = newParseGeneration();
-			readSDValues(*it, block);
-		}
-	}
-	else if (sd.isUndefined())
-	{
-		mCurReadSD = &NO_VALUE_MARKER;
-		block.submitValue(mNameStack, *this);
-	}
-	else
-	{
-		mCurReadSD = &sd;
-		block.submitValue(mNameStack, *this);
-	}
+	name_stack_t name_stack;
+	block.serializeBlock(*this, name_stack);
 }
 
 /*virtual*/ std::string LLParamSDParser::getCurrentElementName()
@@ -150,83 +124,8 @@ void LLParamSDParser::readSDValues(const LLSD& sd, LLInitParam::BaseBlock& block
 	return full_name;
 }
 
-LLSD* LLParamSDParser::getSDWriteNode(const parser_t::name_stack_t& name_stack)
-{
-	//TODO: implement nested LLSD writing
-	LLSD* sd_to_write = mWriteRootSD;
-	bool new_traversal = false;
-	for (name_stack_t::const_iterator it = name_stack.begin(), prev_it = mNameStack.begin();
-		it != name_stack.end();
-		++it)
-	{
-		bool new_array_entry = false;
-		if (prev_it == mNameStack.end())
-		{
-			new_traversal = true;
-		}
-		else
-		{
-			if (!new_traversal						// have not diverged yet from previous trace
-				&& prev_it->first == it->first		// names match
-				&& prev_it->second != it->second)	// versions differ
-			{
-				// name stacks match, but version numbers differ in last place.
-				// create a different entry at this point using an LLSD array
-				new_array_entry = true;
-			}
-			if (prev_it->first != it->first			// names differ
-				|| prev_it->second != it->second)	// versions differ
-			{
-				// at this point we have diverged from our last trace
-				// so any elements referenced here are new
-				new_traversal = true;
-			}
-		}
-
-		LLSD* child_sd = it->first.empty() ? sd_to_write : &(*sd_to_write)[it->first];
 
-		if (child_sd->isArray())
-		{
-			if (new_traversal)
-			{
-				// write to new element at end
-				sd_to_write = &(*child_sd)[child_sd->size()];
-			}
-			else
-			{
-				// write to last of existing elements, or first element if empty
-				sd_to_write = &(*child_sd)[llmax(0, child_sd->size() - 1)];
-			}
-		}
-		else
-		{
-			if (new_array_entry && !child_sd->isArray())
-			{
-				// copy child contents into first element of an array
-				LLSD new_array = LLSD::emptyArray();
-				new_array.append(*child_sd);
-				// assign array to slot that previously held the single value
-				*child_sd = new_array;
-				// return next element in that array
-				sd_to_write = &((*child_sd)[1]);
-			}
-			else
-			{
-				sd_to_write = child_sd;
-			}
-		}
-		if (prev_it != mNameStack.end())
-		{
-			++prev_it;
-		}
-	}
-	mNameStack = name_stack;
-	
-	//llinfos << ll_pretty_print_sd(*mWriteRootSD) << llendl;
-	return sd_to_write;
-}
-
-bool LLParamSDParser::readNoValue(Parser& parser, void* val_ptr)
+bool LLParamSDParser::readFlag(Parser& parser, void* val_ptr)
 {
 	LLParamSDParser& self = static_cast<LLParamSDParser&>(parser);
 	return self.mCurReadSD == &NO_VALUE_MARKER;
@@ -312,3 +211,132 @@ bool LLParamSDParser::readSD(Parser& parser, void* val_ptr)
 	*((LLSD*)val_ptr) = *self.mCurReadSD;
     return true;
 }
+
+// static
+LLSD& LLParamSDParserUtilities::getSDWriteNode(LLSD& input, LLInitParam::Parser::name_stack_range_t& name_stack_range)
+{
+	LLSD* sd_to_write = &input;
+	
+	for (LLInitParam::Parser::name_stack_t::iterator it = name_stack_range.first;
+		it != name_stack_range.second;
+		++it)
+	{
+		bool new_traversal = it->second;
+
+		LLSD* child_sd = it->first.empty() ? sd_to_write : &(*sd_to_write)[it->first];
+
+		if (child_sd->isArray())
+		{
+			if (new_traversal)
+			{
+				// write to new element at end
+				sd_to_write = &(*child_sd)[child_sd->size()];
+			}
+			else
+			{
+				// write to last of existing elements, or first element if empty
+				sd_to_write = &(*child_sd)[llmax(0, child_sd->size() - 1)];
+			}
+		}
+		else
+		{
+			if (new_traversal 
+				&& child_sd->isDefined() 
+				&& !child_sd->isArray())
+			{
+				// copy child contents into first element of an array
+				LLSD new_array = LLSD::emptyArray();
+				new_array.append(*child_sd);
+				// assign array to slot that previously held the single value
+				*child_sd = new_array;
+				// return next element in that array
+				sd_to_write = &((*child_sd)[1]);
+			}
+			else
+			{
+				sd_to_write = child_sd;
+			}
+		}
+		it->second = false;
+	}
+	
+	return *sd_to_write;
+}
+
+//static
+void LLParamSDParserUtilities::readSDValues(read_sd_cb_t cb, const LLSD& sd, LLInitParam::Parser::name_stack_t& stack)
+{
+	if (sd.isMap())
+	{
+		for (LLSD::map_const_iterator it = sd.beginMap();
+			it != sd.endMap();
+			++it)
+		{
+			stack.push_back(make_pair(it->first, true));
+			readSDValues(cb, it->second, stack);
+			stack.pop_back();
+		}
+	}
+	else if (sd.isArray())
+	{
+		for (LLSD::array_const_iterator it = sd.beginArray();
+			it != sd.endArray();
+			++it)
+		{
+			stack.back().second = true;
+			readSDValues(cb, *it, stack);
+		}
+	}
+	else if (sd.isUndefined())
+	{
+		if (!cb.empty())
+		{
+			cb(NO_VALUE_MARKER, stack);
+		}
+	}
+	else
+	{
+		if (!cb.empty())
+		{
+			cb(sd, stack);
+		}
+	}
+}
+
+//static
+void LLParamSDParserUtilities::readSDValues(read_sd_cb_t cb, const LLSD& sd)
+{
+	LLInitParam::Parser::name_stack_t stack = LLInitParam::Parser::name_stack_t();
+	readSDValues(cb, sd, stack);
+}
+namespace LLInitParam
+{
+	// LLSD specialization
+	// block param interface
+	bool ParamValue<LLSD, TypeValues<LLSD>, false>::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, bool new_name)
+	{
+		LLSD& sd = LLParamSDParserUtilities::getSDWriteNode(mValue, name_stack);
+
+		LLSD::String string;
+
+		if (p.readValue<LLSD::String>(string))
+		{
+			sd = string;
+			return true;
+		}
+		return false;
+	}
+
+	//static
+	void ParamValue<LLSD, TypeValues<LLSD>, false>::serializeElement(Parser& p, const LLSD& sd, Parser::name_stack_t& name_stack)
+	{
+		p.writeValue<LLSD::String>(sd.asString(), name_stack);
+	}
+
+	void ParamValue<LLSD, TypeValues<LLSD>, false>::serializeBlock(Parser& p, Parser::name_stack_t& name_stack, const BaseBlock* diff_block) const
+	{
+		// read from LLSD value and serialize out to parser (which could be LLSD, XUI, etc)
+		Parser::name_stack_t stack;
+		LLParamSDParserUtilities::readSDValues(boost::bind(&serializeElement, boost::ref(p), _1, _2), mValue, stack);
+	}
+}
diff --git a/indra/llui/llsdparam.h b/indra/llui/llsdparam.h
index f776c781b33c642b59537d07adcd6a02fd5076f8..3dfc6d020ee33ada34bf74a17145ef8f85533786 100644
--- a/indra/llui/llsdparam.h
+++ b/indra/llui/llsdparam.h
@@ -29,6 +29,16 @@
 #define LL_LLSDPARAM_H
 
 #include "llinitparam.h"
+#include "boost/function.hpp"
+
+struct LLParamSDParserUtilities
+{
+	static LLSD& getSDWriteNode(LLSD& input, LLInitParam::Parser::name_stack_range_t& name_stack_range);
+
+	typedef boost::function<void (const LLSD&, LLInitParam::Parser::name_stack_t&)> read_sd_cb_t;
+	static void readSDValues(read_sd_cb_t cb, const LLSD& sd, LLInitParam::Parser::name_stack_t& stack);
+	static void readSDValues(read_sd_cb_t cb, const LLSD& sd);
+};
 
 class LLParamSDParser 
 :	public LLInitParam::Parser
@@ -45,27 +55,25 @@ typedef LLInitParam::Parser parser_t;
 	/*virtual*/ std::string getCurrentElementName();
 
 private:
-	void readSDValues(const LLSD& sd, LLInitParam::BaseBlock& block);
+	void submit(LLInitParam::BaseBlock& block, const LLSD& sd, LLInitParam::Parser::name_stack_t& name_stack);
 
 	template<typename T>
-	static bool writeTypedValue(Parser& parser, const void* val_ptr, const parser_t::name_stack_t& name_stack)
+	static bool writeTypedValue(Parser& parser, const void* val_ptr, parser_t::name_stack_t& name_stack)
 	{
 		LLParamSDParser& sdparser = static_cast<LLParamSDParser&>(parser);
 		if (!sdparser.mWriteRootSD) return false;
 		
-		LLSD* sd_to_write = sdparser.getSDWriteNode(name_stack);
-		if (!sd_to_write) return false;
+		LLInitParam::Parser::name_stack_range_t range(name_stack.begin(), name_stack.end());
+		LLSD& sd_to_write = LLParamSDParserUtilities::getSDWriteNode(*sdparser.mWriteRootSD, range);
 
-		sd_to_write->assign(*((const T*)val_ptr));
+		sd_to_write.assign(*((const T*)val_ptr));
 		return true;
 	}
 
-	LLSD* getSDWriteNode(const parser_t::name_stack_t& name_stack);
+	static bool writeU32Param(Parser& parser, const void* value_ptr, parser_t::name_stack_t& name_stack);
+	static bool writeFlag(Parser& parser, const void* value_ptr, parser_t::name_stack_t& name_stack);
 
-	static bool writeU32Param(Parser& parser, const void* value_ptr, const parser_t::name_stack_t& name_stack);
-	static bool writeNoValue(Parser& parser, const void* value_ptr, const parser_t::name_stack_t& name_stack);
-
-	static bool readNoValue(Parser& parser, void* val_ptr);
+	static bool readFlag(Parser& parser, void* val_ptr);
 	static bool readS32(Parser& parser, void* val_ptr);
 	static bool readU32(Parser& parser, void* val_ptr);
 	static bool readF32(Parser& parser, void* val_ptr);
@@ -83,31 +91,36 @@ typedef LLInitParam::Parser parser_t;
 	LLSD*					mCurWriteSD;
 };
 
+
+extern LLFastTimer::DeclareTimer FTM_SD_PARAM_ADAPTOR;
 template<typename T>
 class LLSDParamAdapter : public T
+{
+public:
+	LLSDParamAdapter() {}
+	LLSDParamAdapter(const LLSD& sd)
 	{
-	public:
-		LLSDParamAdapter() {}
-		LLSDParamAdapter(const LLSD& sd)
-		{
-			LLParamSDParser parser;
-			parser.readSD(sd, *this);
-		}
-
-		operator LLSD() const
-		{
-			LLParamSDParser parser;
-			LLSD sd;
-			parser.writeSD(sd, *this);
-			return sd;
-		}
+		LLFastTimer _(FTM_SD_PARAM_ADAPTOR);
+		LLParamSDParser parser;
+		// don't spam for implicit parsing of LLSD, as we want to allow arbitrary freeform data and ignore most of it
+		bool parse_silently = true;
+		parser.readSD(sd, *this, parse_silently);
+	}
+
+	operator LLSD() const
+	{
+		LLParamSDParser parser;
+		LLSD sd;
+		parser.writeSD(sd, *this);
+		return sd;
+	}
 		
-		LLSDParamAdapter(const T& val)
-		: T(val)
-		{
-			T::operator=(val);
-		}
-	};
+	LLSDParamAdapter(const T& val)
+	: T(val)
+	{
+		T::operator=(val);
+	}
+};
 
 #endif // LL_LLSDPARAM_H
 
diff --git a/indra/llui/llspinctrl.h b/indra/llui/llspinctrl.h
index d197084e38fac9c3c572a012d8577daf6e64e333..87814f838e8d2c47a814b0036dd1fb23520a988e 100644
--- a/indra/llui/llspinctrl.h
+++ b/indra/llui/llspinctrl.h
@@ -96,6 +96,9 @@ class LLSpinCtrl
 
 	void			onUpBtn(const LLSD& data);
 	void			onDownBtn(const LLSD& data);
+	
+	const LLColor4&	getEnabledTextColor() const	{ return mTextEnabledColor.get(); }
+	const LLColor4&	getDisabledTextColor() const { return mTextDisabledColor.get(); }
 
 private:
 	void			updateLabelColor();
diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index 9c6a76822c2e12e1379e3b0bd54acdbafd888798..5fc2cc350dc7b347bda5a7325c76182e40f86d68 100644
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -98,24 +98,25 @@ class LLCustomButtonIconCtrl : public LLButton
 {
 public:
 	struct Params
-	: public LLInitParam::Block<Params, LLButton::Params>
+	:	public LLInitParam::Block<Params, LLButton::Params>
 	{
 		// LEFT, RIGHT, TOP, BOTTOM paddings of LLIconCtrl in this class has same value
 		Optional<S32>					icon_ctrl_pad;
 
-		Params():
-		icon_ctrl_pad("icon_ctrl_pad", 1)
+		Params()
+		:	icon_ctrl_pad("icon_ctrl_pad", 1)
 		{}
 	};
 
 protected:
 	friend class LLUICtrlFactory;
-	LLCustomButtonIconCtrl(const Params& p):
-		LLButton(p),
+
+	LLCustomButtonIconCtrl(const Params& p)
+	:	LLButton(p),
 		mIcon(NULL),
 		mIconAlignment(LLFontGL::HCENTER),
 		mIconCtrlPad(p.icon_ctrl_pad)
-		{}
+	{}
 
 public:
 
@@ -214,6 +215,7 @@ LLTabContainer::Params::Params()
 	middle_tab("middle_tab"),
 	last_tab("last_tab"),
 	use_custom_icon_ctrl("use_custom_icon_ctrl", false),
+	open_tabs_on_drag_and_drop("open_tabs_on_drag_and_drop", false),
 	tab_icon_ctrl_pad("tab_icon_ctrl_pad", 0),
 	use_ellipses("use_ellipses"),
 	font_halign("halign")
@@ -250,6 +252,7 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)
 	mMiddleTabParams(p.middle_tab),
 	mLastTabParams(p.last_tab),
 	mCustomIconCtrlUsed(p.use_custom_icon_ctrl),
+	mOpenTabsOnDragAndDrop(p.open_tabs_on_drag_and_drop),
 	mTabIconCtrlPad(p.tab_icon_ctrl_pad),
 	mUseTabEllipses(p.use_ellipses)
 {
@@ -548,23 +551,23 @@ BOOL LLTabContainer::handleMouseDown( S32 x, S32 y, MASK mask )
 	}
 
 	S32 tab_count = getTabCount();
-	if (tab_count > 0)
+	if (tab_count > 0 && !getTabsHidden())
 	{
 		LLTabTuple* firsttuple = getTab(0);
 		LLRect tab_rect;
 		if (mIsVertical)
 		{
 			tab_rect = LLRect(firsttuple->mButton->getRect().mLeft,
-							  has_scroll_arrows ? mPrevArrowBtn->getRect().mBottom - tabcntrv_pad : mPrevArrowBtn->getRect().mTop,
-							  firsttuple->mButton->getRect().mRight,
-							  has_scroll_arrows ? mNextArrowBtn->getRect().mTop + tabcntrv_pad : mNextArrowBtn->getRect().mBottom );
+								has_scroll_arrows ? mPrevArrowBtn->getRect().mBottom - tabcntrv_pad : mPrevArrowBtn->getRect().mTop,
+								firsttuple->mButton->getRect().mRight,
+								has_scroll_arrows ? mNextArrowBtn->getRect().mTop + tabcntrv_pad : mNextArrowBtn->getRect().mBottom );
 		}
 		else
 		{
 			tab_rect = LLRect(has_scroll_arrows ? mPrevArrowBtn->getRect().mRight : mJumpPrevArrowBtn->getRect().mLeft,
-							  firsttuple->mButton->getRect().mTop,
-							  has_scroll_arrows ? mNextArrowBtn->getRect().mLeft : mJumpNextArrowBtn->getRect().mRight,
-							  firsttuple->mButton->getRect().mBottom );
+								firsttuple->mButton->getRect().mTop,
+								has_scroll_arrows ? mNextArrowBtn->getRect().mLeft : mJumpNextArrowBtn->getRect().mRight,
+								firsttuple->mButton->getRect().mBottom );
 		}
 		if( tab_rect.pointInRect( x, y ) )
 		{
@@ -681,7 +684,7 @@ BOOL LLTabContainer::handleToolTip( S32 x, S32 y, MASK mask)
 {
 	static LLUICachedControl<S32> tabcntrv_pad ("UITabCntrvPad", 0);
 	BOOL handled = LLPanel::handleToolTip( x, y, mask);
-	if (!handled && getTabCount() > 0) 
+	if (!handled && getTabCount() > 0 && !getTabsHidden()) 
 	{
 		LLTabTuple* firsttuple = getTab(0);
 
@@ -812,48 +815,62 @@ BOOL LLTabContainer::handleDragAndDrop(S32 x, S32 y, MASK mask,	BOOL drop,	EDrag
 {
 	BOOL has_scroll_arrows = (getMaxScrollPos() > 0);
 
-	if( mDragAndDropDelayTimer.getStarted() && mDragAndDropDelayTimer.getElapsedTimeF32() > SCROLL_DELAY_TIME )
+	if(mOpenTabsOnDragAndDrop && !getTabsHidden())
 	{
-		if (has_scroll_arrows)
+		// In that case, we'll open the hovered tab while dragging and dropping items.
+		// This allows for drilling through tabs.
+		if (mDragAndDropDelayTimer.getStarted())
 		{
-			if (mJumpPrevArrowBtn && mJumpPrevArrowBtn->getRect().pointInRect(x, y))
-			{
-				S32	local_x	= x	- mJumpPrevArrowBtn->getRect().mLeft;
-				S32	local_y	= y	- mJumpPrevArrowBtn->getRect().mBottom;
-				mJumpPrevArrowBtn->handleHover(local_x,	local_y, mask);
-			}
-			if (mJumpNextArrowBtn && mJumpNextArrowBtn->getRect().pointInRect(x, y))
-			{
-				S32	local_x	= x	- mJumpNextArrowBtn->getRect().mLeft;
-				S32	local_y	= y	- mJumpNextArrowBtn->getRect().mBottom;
-				mJumpNextArrowBtn->handleHover(local_x,	local_y, mask);
-			}
-			if (mPrevArrowBtn->getRect().pointInRect(x,	y))
-			{
-				S32	local_x	= x	- mPrevArrowBtn->getRect().mLeft;
-				S32	local_y	= y	- mPrevArrowBtn->getRect().mBottom;
-				mPrevArrowBtn->handleHover(local_x,	local_y, mask);
-			}
-			else if	(mNextArrowBtn->getRect().pointInRect(x, y))
+			if (mDragAndDropDelayTimer.getElapsedTimeF32() > SCROLL_DELAY_TIME)
 			{
-				S32	local_x	= x	- mNextArrowBtn->getRect().mLeft;
-				S32	local_y	= y	- mNextArrowBtn->getRect().mBottom;
-				mNextArrowBtn->handleHover(local_x, local_y, mask);
-			}
-		}
+				if (has_scroll_arrows)
+				{
+					if (mJumpPrevArrowBtn && mJumpPrevArrowBtn->getRect().pointInRect(x, y))
+					{
+						S32	local_x	= x	- mJumpPrevArrowBtn->getRect().mLeft;
+						S32	local_y	= y	- mJumpPrevArrowBtn->getRect().mBottom;
+						mJumpPrevArrowBtn->handleHover(local_x,	local_y, mask);
+					}
+					if (mJumpNextArrowBtn && mJumpNextArrowBtn->getRect().pointInRect(x, y))
+					{
+						S32	local_x	= x	- mJumpNextArrowBtn->getRect().mLeft;
+						S32	local_y	= y	- mJumpNextArrowBtn->getRect().mBottom;
+						mJumpNextArrowBtn->handleHover(local_x,	local_y, mask);
+					}
+					if (mPrevArrowBtn->getRect().pointInRect(x,	y))
+					{
+						S32	local_x	= x	- mPrevArrowBtn->getRect().mLeft;
+						S32	local_y	= y	- mPrevArrowBtn->getRect().mBottom;
+						mPrevArrowBtn->handleHover(local_x,	local_y, mask);
+					}
+					else if	(mNextArrowBtn->getRect().pointInRect(x, y))
+					{
+						S32	local_x	= x	- mNextArrowBtn->getRect().mLeft;
+						S32	local_y	= y	- mNextArrowBtn->getRect().mBottom;
+						mNextArrowBtn->handleHover(local_x, local_y, mask);
+					}
+				}
 
-		for(tuple_list_t::iterator iter	= mTabList.begin();	iter !=	 mTabList.end(); ++iter)
-		{
-			LLTabTuple*	tuple =	*iter;
-			tuple->mButton->setVisible(	TRUE );
-			S32	local_x	= x	- tuple->mButton->getRect().mLeft;
-			S32	local_y	= y	- tuple->mButton->getRect().mBottom;
-			if (tuple->mButton->pointInView(local_x, local_y) &&  tuple->mButton->getEnabled() && !tuple->mTabPanel->getVisible())
-			{
-				tuple->mButton->onCommit();
+				for(tuple_list_t::iterator iter	= mTabList.begin();	iter !=	 mTabList.end(); ++iter)
+				{
+					LLTabTuple*	tuple =	*iter;
+					tuple->mButton->setVisible(	TRUE );
+					S32	local_x	= x	- tuple->mButton->getRect().mLeft;
+					S32	local_y	= y	- tuple->mButton->getRect().mBottom;
+					if (tuple->mButton->pointInView(local_x, local_y) &&  tuple->mButton->getEnabled() && !tuple->mTabPanel->getVisible())
+					{
+						tuple->mButton->onCommit();
+					}
+				}
+				// Stop the timer whether successful or not. Don't let it run forever.
 				mDragAndDropDelayTimer.stop();
 			}
 		}
+		else 
+		{
+			// Start a timer so we don't open tabs as soon as we hover on them
+			mDragAndDropDelayTimer.start();
+		}
 	}
 
 	return LLView::handleDragAndDrop(x,	y, mask, drop, type, cargo_data,  accept, tooltip);
@@ -1023,85 +1040,50 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
 	}
 	else
 	{
+		LLButton::Params& p = (mCustomIconCtrlUsed ? custom_btn_params : normal_btn_params);
+		
+		p.rect(btn_rect);
+		p.font(mFont);
+		p.font_halign = mFontHalign;
+		p.label(trimmed_label);
+		p.click_callback.function(boost::bind(&LLTabContainer::onTabBtn, this, _2, child));
+		if (indent)
+		{
+			p.pad_left(indent);
+		}
+		p.pad_bottom( mLabelPadBottom );
+		p.scale_image(true);
+		p.tab_stop(false);
+		p.label_shadow(false);
+		p.follows.flags = FOLLOWS_LEFT;
+		
 		if (mIsVertical)
 		{
-			LLButton::Params& p = (mCustomIconCtrlUsed)?
-					custom_btn_params:normal_btn_params;
-
 			p.name(std::string("vert tab button"));
-			p.rect(btn_rect);
-			p.follows.flags(FOLLOWS_TOP | FOLLOWS_LEFT);
-			p.click_callback.function(boost::bind(&LLTabContainer::onTabBtn, this, _2, child));
-			p.font(mFont);
-			p.label(trimmed_label);
 			p.image_unselected(mMiddleTabParams.tab_left_image_unselected);
 			p.image_selected(mMiddleTabParams.tab_left_image_selected);
-			p.scale_image(true);
-			p.font_halign = mFontHalign;
-			p.pad_bottom( mLabelPadBottom );
-			p.tab_stop(false);
-			p.label_shadow(false);
-			if (indent)
-			{
-				p.pad_left(indent);
-			}
-			
-			
-			if(mCustomIconCtrlUsed)
-			{
-				btn = LLUICtrlFactory::create<LLCustomButtonIconCtrl>(custom_btn_params);
-				
-			}
-			else
-			{
-				btn = LLUICtrlFactory::create<LLButton>(p);
-			}
+			p.follows.flags = p.follows.flags() | FOLLOWS_TOP;
 		}
 		else
 		{
-			LLButton::Params& p = (mCustomIconCtrlUsed)?
-					custom_btn_params:normal_btn_params;
 			p.name(std::string(child->getName()) + " tab");
-			p.rect(btn_rect);
-			p.click_callback.function(boost::bind(&LLTabContainer::onTabBtn, this, _2, child));
-			p.font(mFont);
-			p.label(trimmed_label);
 			p.visible(false);
-			p.scale_image(true);
 			p.image_unselected(tab_img);
 			p.image_selected(tab_selected_img);
-			p.tab_stop(false);
-			p.label_shadow(false);
+			p.follows.flags = p.follows.flags() | (getTabPosition() == TOP ? FOLLOWS_TOP : FOLLOWS_BOTTOM);
 			// Try to squeeze in a bit more text
 			p.pad_left( mLabelPadLeft );
 			p.pad_right(2);
-			p.pad_bottom( mLabelPadBottom );
-			p.font_halign = mFontHalign;
-			p.follows.flags = FOLLOWS_LEFT;
-			p.follows.flags = FOLLOWS_LEFT;
-	
-			if (indent)
-			{
-				p.pad_left(indent);
-			}
-
-			if( getTabPosition() == TOP )
-			{
-				p.follows.flags = p.follows.flags() | FOLLOWS_TOP;
-			}
-			else
-			{
-				p.follows.flags = p.follows.flags() | FOLLOWS_BOTTOM;
-			}
-
-			if(mCustomIconCtrlUsed)
-			{
-				btn = LLUICtrlFactory::create<LLCustomButtonIconCtrl>(custom_btn_params);
-			}
-			else
-			{
-				btn = LLUICtrlFactory::create<LLButton>(p);
-			}
+		}
+		
+		// *TODO : It seems wrong not to use p in both cases considering the way p is initialized
+		if (mCustomIconCtrlUsed)
+		{
+			btn = LLUICtrlFactory::create<LLCustomButtonIconCtrl>(custom_btn_params);
+		}
+		else
+		{
+			btn = LLUICtrlFactory::create<LLButton>(p);
 		}
 	}
 	
@@ -1278,6 +1260,10 @@ void LLTabContainer::enableTabButton(S32 which, BOOL enable)
 	{
 		mTabList[which]->mButton->setEnabled(enable);
 	}
+	// Stop the DaD timer as it might run forever
+	// enableTabButton() is typically called on refresh and draw when anything changed
+	// in the tab container so it's a good time to reset that.
+	mDragAndDropDelayTimer.stop();
 }
 
 void LLTabContainer::deleteAllTabs()
diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h
index eaa2fd54e06d7eabb8e62126d453255d25a8792b..cebace2ceba344847fb59859adfe0e69761d20d4 100644
--- a/indra/llui/lltabcontainer.h
+++ b/indra/llui/lltabcontainer.h
@@ -104,6 +104,11 @@ class LLTabContainer : public LLPanel
 		 */
 		Optional<bool>						use_custom_icon_ctrl;
 
+		/**
+		 * Open tabs on hover in drag and drop situations
+		 */
+		Optional<bool>						open_tabs_on_drag_and_drop;
+		
 		/**
 		 *  Paddings for LLIconCtrl in case of LLCustomButtonIconCtrl usage(use_custom_icon_ctrl = true)
 		 */
@@ -300,6 +305,7 @@ class LLTabContainer : public LLPanel
 	TabParams						mLastTabParams;
 
 	bool							mCustomIconCtrlUsed;
+	bool							mOpenTabsOnDragAndDrop;
 	S32								mTabIconCtrlPad;
 	bool							mUseTabEllipses;
 };
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 919364be632a6dce3b38ae2f7885770366fe97e5..0040be45c711cde660eb72359177e87e4571ac56 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -598,7 +598,7 @@ S32 LLTextBase::insertStringNoUndo(S32 pos, const LLWString &wstr, LLTextBase::s
 
 	pos = getEditableIndex(pos, true);
 
-	segment_set_t::iterator seg_iter = getSegIterContaining(pos);
+	segment_set_t::iterator seg_iter = getEditableSegIterContaining(pos);
 
 	LLTextSegmentPtr default_segment;
 
@@ -1510,8 +1510,48 @@ void LLTextBase::getSegmentAndOffset( S32 startpos, segment_set_t::iterator* seg
 	}
 }
 
+LLTextBase::segment_set_t::iterator LLTextBase::getEditableSegIterContaining(S32 index)
+{
+	segment_set_t::iterator it = getSegIterContaining(index);
+	segment_set_t::iterator orig_it = it;
+
+	if (it == mSegments.end()) return it;
+
+	if (!(*it)->canEdit() 
+		&& index == (*it)->getStart() 
+		&& it != mSegments.begin())
+	{
+		it--;
+		if ((*it)->canEdit())
+		{
+			return it;
+		}
+	}
+	return orig_it;
+}
+
+LLTextBase::segment_set_t::const_iterator LLTextBase::getEditableSegIterContaining(S32 index) const
+{
+	segment_set_t::const_iterator it = getSegIterContaining(index);
+	segment_set_t::const_iterator orig_it = it;
+	if (it == mSegments.end()) return it;
+
+	if (!(*it)->canEdit() 
+		&& index == (*it)->getStart() 
+		&& it != mSegments.begin())
+	{
+		it--;
+		if ((*it)->canEdit())
+		{
+			return it;
+		}
+	}
+	return orig_it;
+}
+
 LLTextBase::segment_set_t::iterator LLTextBase::getSegIterContaining(S32 index)
 {
+
 	static LLPointer<LLIndexSegment> index_segment = new LLIndexSegment();
 
 	if (index > getLength()) { return mSegments.end(); }
@@ -2518,7 +2558,11 @@ BOOL LLTextSegment::handleDoubleClick(S32 x, S32 y, MASK mask) { return FALSE; }
 BOOL LLTextSegment::handleHover(S32 x, S32 y, MASK mask) { return FALSE; }
 BOOL LLTextSegment::handleScrollWheel(S32 x, S32 y, S32 clicks) { return FALSE; }
 BOOL LLTextSegment::handleToolTip(S32 x, S32 y, MASK mask) { return FALSE; }
-std::string	LLTextSegment::getName() const { return ""; }
+const std::string&	LLTextSegment::getName() const 
+{
+	static std::string empty_string("");
+	return empty_string; 
+}
 void LLTextSegment::onMouseCaptureLost() {}
 void LLTextSegment::screenPointToLocal(S32 screen_x, S32 screen_y, S32* local_x, S32* local_y) const {}
 void LLTextSegment::localPointToScreen(S32 local_x, S32 local_y, S32* screen_x, S32* screen_y) const {}
diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h
index 7d545a1ba61970dd4a0e2ad0746a556119b75a33..0549141b72a20531d5b10af3601bbf36eeb52bf9 100644
--- a/indra/llui/lltextbase.h
+++ b/indra/llui/lltextbase.h
@@ -84,7 +84,7 @@ class LLTextSegment : public LLRefCount, public LLMouseHandler
 	/*virtual*/ BOOL			handleHover(S32 x, S32 y, MASK mask);
 	/*virtual*/ BOOL			handleScrollWheel(S32 x, S32 y, S32 clicks);
 	/*virtual*/ BOOL			handleToolTip(S32 x, S32 y, MASK mask);
-	/*virtual*/ std::string		getName() const;
+	/*virtual*/ const std::string&	getName() const;
 	/*virtual*/ void			onMouseCaptureLost();
 	/*virtual*/ void			screenPointToLocal(S32 screen_x, S32 screen_y, S32* local_x, S32* local_y) const;
 	/*virtual*/ void			localPointToScreen(S32 local_x, S32 local_y, S32* screen_x, S32* screen_y) const;
@@ -237,7 +237,7 @@ class LLTextBase
 	friend class LLNormalTextSegment;
 	friend class LLUICtrlFactory;
 
-	struct LineSpacingParams : public LLInitParam::Choice<LineSpacingParams>
+	struct LineSpacingParams : public LLInitParam::ChoiceBlock<LineSpacingParams>
 	{
 		Alternative<F32>	multiple;
 		Alternative<S32>	pixels;
@@ -461,6 +461,8 @@ class LLTextBase
 	void                			getSegmentAndOffset( S32 startpos, segment_set_t::const_iterator* seg_iter, S32* offsetp ) const;
 	void                			getSegmentAndOffset( S32 startpos, segment_set_t::iterator* seg_iter, S32* offsetp );
 	LLTextSegmentPtr    			getSegmentAtLocalPos( S32 x, S32 y, bool hit_past_end_of_line = true);
+	segment_set_t::iterator			getEditableSegIterContaining(S32 index);
+	segment_set_t::const_iterator	getEditableSegIterContaining(S32 index) const;
 	segment_set_t::iterator			getSegIterContaining(S32 index);
 	segment_set_t::const_iterator	getSegIterContaining(S32 index) const;
 	void                			clearSegments();
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index 9bd445988d559ad6d3ebfccc00833860c00ebdbf..3a23ce1cacad667d63fce353adf560e4392e3d53 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -2250,6 +2250,22 @@ void LLTextEditor::insertText(const std::string &new_text)
 	setEnabled( enabled );
 }
 
+void LLTextEditor::insertText(LLWString &new_text)
+{
+	BOOL enabled = getEnabled();
+	setEnabled( TRUE );
+
+	// Delete any selected characters (the insertion replaces them)
+	if( hasSelection() )
+	{
+		deleteSelection(TRUE);
+	}
+
+	setCursorPos(mCursorPos + insert( mCursorPos, new_text, FALSE, LLTextSegmentPtr() ));
+
+	setEnabled( enabled );
+}
+
 void LLTextEditor::appendWidget(const LLInlineViewSegment::Params& params, const std::string& text, bool allow_undo)
 {
 	// Save old state
@@ -2838,3 +2854,13 @@ void LLTextEditor::clear()
 	getViewModel()->setDisplay(LLWStringUtil::null);
 	clearSegments();
 }
+
+bool LLTextEditor::canLoadOrSaveToFile()
+{
+	return !mReadOnly;
+}
+
+S32 LLTextEditor::spacesPerTab()
+{
+	return SPACES_PER_TAB;
+}
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index 9e4b95003b7f45aeb1c32094a32332f83b40b8ba..40821ae9fbc58f994a81f58e03ca1522bcc5b46a 100644
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -92,6 +92,8 @@ class LLTextEditor :
 
 	void	setParseHighlights(BOOL parsing) {mParseHighlights=parsing;}
 
+	static S32		spacesPerTab();
+
 	// mousehandler overrides
 	virtual BOOL	handleMouseDown(S32 x, S32 y, MASK mask);
 	virtual BOOL	handleMouseUp(S32 x, S32 y, MASK mask);
@@ -140,6 +142,8 @@ class LLTextEditor :
 	virtual void	selectAll();
 	virtual BOOL	canSelectAll()	const;
 
+	virtual bool	canLoadOrSaveToFile();
+
 	void			selectNext(const std::string& search_text_in, BOOL case_insensitive, BOOL wrap = TRUE);
 	BOOL			replaceText(const std::string& search_text, const std::string& replace_text, BOOL case_insensitive, BOOL wrap = TRUE);
 	void			replaceTextAll(const std::string& search_text, const std::string& replace_text, BOOL case_insensitive);
@@ -158,6 +162,7 @@ class LLTextEditor :
 
 	// inserts text at cursor
 	void			insertText(const std::string &text);
+	void			insertText(LLWString &text);
 
 	void			appendWidget(const LLInlineViewSegment::Params& params, const std::string& text, bool allow_undo);
 	// Non-undoable
diff --git a/indra/llui/lltextparser.cpp b/indra/llui/lltextparser.cpp
index a4fe4f6ca8b4d8b246c2aa30b330a2266384da46..8a85f99e0cf87d05f881ee48ffe6f68595e80486 100644
--- a/indra/llui/lltextparser.cpp
+++ b/indra/llui/lltextparser.cpp
@@ -46,8 +46,6 @@ LLTextParser::LLTextParser()
 {}
 
 
-// Moved triggerAlerts() to llfloaterchat.cpp to break llui/llaudio library dependency.
-
 S32 LLTextParser::findPattern(const std::string &text, LLSD highlight)
 {
 	if (!highlight.has("pattern")) return -1;
diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..9b31a6449df3bc082f83de8abecd22f692b12071
--- /dev/null
+++ b/indra/llui/lltoolbar.cpp
@@ -0,0 +1,1230 @@
+/** 
+ * @file lltoolbar.cpp
+ * @author Richard Nelson
+ * @brief User customizable toolbar class
+ *
+ * $LicenseInfo:firstyear=2011&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 <boost/foreach.hpp>
+#include "lltoolbar.h"
+
+#include "llcommandmanager.h"
+#include "llmenugl.h"
+#include "lltrans.h"
+#include "llinventory.h"
+#include "lliconctrl.h"
+
+// uncomment this and remove the one in llui.cpp when there is an external reference to this translation unit
+// thanks, MSVC!
+//static LLDefaultChildRegistry::Register<LLToolBar> r1("toolbar");
+
+namespace LLToolBarEnums
+{
+	LLLayoutStack::ELayoutOrientation getOrientation(SideType sideType)
+	{
+		LLLayoutStack::ELayoutOrientation orientation = LLLayoutStack::HORIZONTAL;
+
+		if ((sideType == SIDE_LEFT) || (sideType == SIDE_RIGHT))
+		{
+			orientation = LLLayoutStack::VERTICAL;
+		}
+
+		return orientation;
+	}
+}
+
+using namespace LLToolBarEnums;
+
+
+namespace LLInitParam
+{
+	void TypeValues<ButtonType>::declareValues()
+	{
+		declare("icons_with_text",	BTNTYPE_ICONS_WITH_TEXT);
+		declare("icons_only",		BTNTYPE_ICONS_ONLY);
+	}
+
+	void TypeValues<SideType>::declareValues()
+	{
+		declare("bottom",	SIDE_BOTTOM);
+		declare("left",		SIDE_LEFT);
+		declare("right",	SIDE_RIGHT);
+		declare("top",		SIDE_TOP);
+	}
+}
+
+LLToolBar::Params::Params()
+:	button_display_mode("button_display_mode"),
+	commands("command"),
+	side("side", SIDE_TOP),
+	button_icon("button_icon"),
+	button_icon_and_text("button_icon_and_text"),
+	read_only("read_only", false),
+	wrap("wrap", true),
+	pad_left("pad_left"),
+	pad_top("pad_top"),
+	pad_right("pad_right"),
+	pad_bottom("pad_bottom"),
+	pad_between("pad_between"),
+	min_girth("min_girth"),
+	button_panel("button_panel")
+{}
+
+LLToolBar::LLToolBar(const LLToolBar::Params& p)
+:	LLUICtrl(p),
+	mReadOnly(p.read_only),
+	mButtonType(p.button_display_mode),
+	mSideType(p.side),
+	mWrap(p.wrap),
+	mNeedsLayout(false),
+	mModified(false),
+	mButtonPanel(NULL),
+	mCenteringStack(NULL),
+	mPadLeft(p.pad_left),
+	mPadRight(p.pad_right),
+	mPadTop(p.pad_top),
+	mPadBottom(p.pad_bottom),
+	mPadBetween(p.pad_between),
+	mMinGirth(p.min_girth),
+	mPopupMenuHandle(),
+	mRightMouseTargetButton(NULL),
+	mStartDragItemCallback(NULL),
+	mHandleDragItemCallback(NULL),
+	mHandleDropCallback(NULL),
+	mButtonAddSignal(NULL),
+	mButtonEnterSignal(NULL),
+	mButtonLeaveSignal(NULL),
+	mButtonRemoveSignal(NULL),
+	mDragAndDropTarget(false)
+{
+	mButtonParams[LLToolBarEnums::BTNTYPE_ICONS_WITH_TEXT] = p.button_icon_and_text;
+	mButtonParams[LLToolBarEnums::BTNTYPE_ICONS_ONLY] = p.button_icon;
+}
+
+LLToolBar::~LLToolBar()
+{
+	delete mPopupMenuHandle.get();
+	delete mButtonAddSignal;
+	delete mButtonEnterSignal;
+	delete mButtonLeaveSignal;
+	delete mButtonRemoveSignal;
+}
+
+void LLToolBar::createContextMenu()
+{
+	if (!mPopupMenuHandle.get())
+	{
+		// Setup bindings specific to this instance for the context menu options
+
+		LLUICtrl::CommitCallbackRegistry::ScopedRegistrar commit_reg;
+		commit_reg.add("Toolbars.EnableSetting", boost::bind(&LLToolBar::onSettingEnable, this, _2));
+		commit_reg.add("Toolbars.RemoveSelectedCommand", boost::bind(&LLToolBar::onRemoveSelectedCommand, this));
+
+		LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_reg;
+		enable_reg.add("Toolbars.CheckSetting", boost::bind(&LLToolBar::isSettingChecked, this, _2));
+
+		// Create the context menu
+		LLContextMenu* menu = LLUICtrlFactory::instance().createFromFile<LLContextMenu>("menu_toolbars.xml", LLMenuGL::sMenuContainer, LLMenuHolderGL::child_registry_t::instance());
+
+		if (menu)
+		{
+			menu->setBackgroundColor(LLUIColorTable::instance().getColor("MenuPopupBgColor"));
+			mPopupMenuHandle = menu->getHandle();
+			mRemoveButtonHandle = menu->getChild<LLView>("Remove button")->getHandle();
+		}
+		else
+		{
+			llwarns << "Unable to load toolbars context menu." << llendl;
+		}
+	}
+	
+	if (mRemoveButtonHandle.get())
+	{
+		// Disable/Enable the "Remove button" menu item depending on whether or not a button was clicked
+		mRemoveButtonHandle.get()->setEnabled(mRightMouseTargetButton != NULL);
+	}
+}
+
+void LLToolBar::initFromParams(const LLToolBar::Params& p)
+{
+	// Initialize the base object
+	LLUICtrl::initFromParams(p);
+	
+	LLLayoutStack::ELayoutOrientation orientation = getOrientation(p.side);
+
+	LLLayoutStack::Params centering_stack_p;
+	centering_stack_p.name = "centering_stack";
+	centering_stack_p.rect = getLocalRect();
+	centering_stack_p.follows.flags = FOLLOWS_ALL;
+	centering_stack_p.orientation = orientation;
+	centering_stack_p.mouse_opaque = false;
+
+	mCenteringStack = LLUICtrlFactory::create<LLLayoutStack>(centering_stack_p);
+	addChild(mCenteringStack);
+	
+	LLLayoutPanel::Params border_panel_p;
+	border_panel_p.name = "border_panel";
+	border_panel_p.rect = getLocalRect();
+	border_panel_p.auto_resize = true;
+	border_panel_p.user_resize = false;
+	border_panel_p.mouse_opaque = false;
+	
+	mCenteringStack->addChild(LLUICtrlFactory::create<LLLayoutPanel>(border_panel_p));
+
+	LLLayoutPanel::Params center_panel_p;
+	center_panel_p.name = "center_panel";
+	center_panel_p.rect = getLocalRect();
+	center_panel_p.auto_resize = false;
+	center_panel_p.user_resize = false;
+	center_panel_p.mouse_opaque = false;
+	LLLayoutPanel* center_panel = LLUICtrlFactory::create<LLLayoutPanel>(center_panel_p);
+	mCenteringStack->addChild(center_panel);
+
+	LLPanel::Params button_panel_p(p.button_panel);
+	button_panel_p.rect = center_panel->getLocalRect();
+		button_panel_p.follows.flags = FOLLOWS_BOTTOM|FOLLOWS_LEFT;
+	mButtonPanel = LLUICtrlFactory::create<LLPanel>(button_panel_p);
+	center_panel->addChild(mButtonPanel);
+	
+	mCenteringStack->addChild(LLUICtrlFactory::create<LLLayoutPanel>(border_panel_p));
+
+	BOOST_FOREACH(LLCommandId id, p.commands)
+	{
+		addCommand(id);
+	}
+
+	mNeedsLayout = true;
+}
+
+bool LLToolBar::addCommand(const LLCommandId& commandId, int rank)
+{
+	LLCommand * command = LLCommandManager::instance().getCommand(commandId);
+	if (!command) return false;
+	
+	// Create the button and do the things that don't need ordering
+	LLToolBarButton* button = createButton(commandId);
+	mButtonPanel->addChild(button);
+	mButtonMap.insert(std::make_pair(commandId.uuid(), button));
+
+	// Insert the command and button in the right place in their respective lists
+	if ((rank >= mButtonCommands.size()) || (rank == RANK_NONE))
+	{
+		// In that case, back load
+		mButtonCommands.push_back(command->id());
+		mButtons.push_back(button);
+	}
+	else 
+	{
+		// Insert in place: iterate to the right spot...
+		std::list<LLToolBarButton*>::iterator it_button = mButtons.begin();
+		command_id_list_t::iterator it_command = mButtonCommands.begin();
+		while (rank > 0)
+		{
+			++it_button;
+			++it_command;
+			rank--;
+		}
+		// ...then insert
+		mButtonCommands.insert(it_command, command->id());
+		mButtons.insert(it_button,button);
+	}
+
+	mNeedsLayout = true;
+
+	updateLayoutAsNeeded();
+
+
+	if (mButtonAddSignal)
+	{
+		(*mButtonAddSignal)(button);
+	}
+
+	return true;
+}
+
+// Remove a command from the list
+// Returns the rank of the command in the original list so that doing addCommand(id,rank) right after
+// a removeCommand(id) would leave the list unchanged.
+// Returns RANK_NONE if the command is not found in the list
+int LLToolBar::removeCommand(const LLCommandId& commandId)
+{
+	if (!hasCommand(commandId)) return RANK_NONE;
+	
+	// First erase the map record
+	command_id_map::iterator it = mButtonMap.find(commandId.uuid());
+	mButtonMap.erase(it);
+	
+	// Now iterate on the commands and buttons to identify the relevant records
+	int rank = 0;
+	std::list<LLToolBarButton*>::iterator it_button = mButtons.begin();
+	command_id_list_t::iterator it_command = mButtonCommands.begin();
+	while (*it_command != commandId)
+	{
+		++it_button;
+		++it_command;
+		++rank;
+	}
+	
+	if (mButtonRemoveSignal)
+	{
+		(*mButtonRemoveSignal)(*it_button);
+	}
+	
+	// Delete the button and erase the command and button records
+	delete (*it_button);
+	mButtonCommands.erase(it_command);
+	mButtons.erase(it_button);
+
+	mNeedsLayout = true;
+	
+	return rank;
+}
+
+void LLToolBar::clearCommandsList()
+{
+	// Clears the commands list
+	mButtonCommands.clear();
+	// This will clear the buttons
+	createButtons();
+}
+
+bool LLToolBar::hasCommand(const LLCommandId& commandId) const
+{
+	if (commandId != LLCommandId::null)
+	{
+		command_id_map::const_iterator it = mButtonMap.find(commandId.uuid());
+		return (it != mButtonMap.end());
+	}
+
+	return false;
+}
+
+bool LLToolBar::enableCommand(const LLCommandId& commandId, bool enabled)
+{
+	LLButton * command_button = NULL;
+	
+	if (commandId != LLCommandId::null)
+	{
+		command_id_map::iterator it = mButtonMap.find(commandId.uuid());
+		if (it != mButtonMap.end())
+		{
+			command_button = it->second;
+			command_button->setEnabled(enabled);
+		}
+	}
+
+	return (command_button != NULL);
+}
+
+bool LLToolBar::stopCommandInProgress(const LLCommandId& commandId)
+{
+	//
+	// Note from Leslie:
+	//
+	// This implementation was largely put in place to handle EXP-1348 which is related to
+	// dragging and dropping the "speak" button.  The "speak" button can be in one of two
+	// modes, i.e., either a toggle action or a push-to-talk action.  Because of this it
+	// responds to mouse down and mouse up in different ways, based on which behavior the
+	// button is currently set to obey.  This was the simplest way of getting the button
+	// to turn off the microphone for both behaviors without risking duplicate state.
+	//
+
+	LLToolBarButton * command_button = NULL;
+
+	if (commandId != LLCommandId::null)
+	{
+		LLCommand* command = LLCommandManager::instance().getCommand(commandId);
+		llassert(command);
+
+		// If this command has an explicit function for execution stop
+		if (command->executeStopFunctionName().length() > 0)
+		{
+			command_id_map::iterator it = mButtonMap.find(commandId.uuid());
+			if (it != mButtonMap.end())
+			{
+				command_button = it->second;
+				llassert(command_button->mIsRunningSignal);
+
+				// Check to see if it is running
+				if ((*command_button->mIsRunningSignal)(command_button, command->isRunningParameters()))
+				{
+					// Trigger an additional button commit, which calls mouse down, mouse up and commit
+					command_button->onCommit();
+				}
+			}
+		}
+	}
+
+	return (command_button != NULL);
+}
+
+bool LLToolBar::flashCommand(const LLCommandId& commandId, bool flash)
+{
+	LLButton * command_button = NULL;
+
+	if (commandId != LLCommandId::null)
+	{
+		command_id_map::iterator it = mButtonMap.find(commandId.uuid());
+		if (it != mButtonMap.end())
+		{
+			command_button = it->second;
+			command_button->setFlashing(flash ? TRUE : FALSE);
+		}
+	}
+
+	return (command_button != NULL);
+}
+
+BOOL LLToolBar::handleRightMouseDown(S32 x, S32 y, MASK mask)
+{
+	LLRect button_panel_rect;
+	mButtonPanel->localRectToOtherView(mButtonPanel->getLocalRect(), &button_panel_rect, this);
+	BOOL handle_it_here = !mReadOnly && button_panel_rect.pointInRect(x, y);
+
+	if (handle_it_here)
+	{
+		// Determine which button the mouse was over during the click in case the context menu action
+		// is intended to affect the button.
+		mRightMouseTargetButton = NULL;
+		BOOST_FOREACH(LLToolBarButton* button, mButtons)
+		{
+			LLRect button_rect;
+			button->localRectToOtherView(button->getLocalRect(), &button_rect, this);
+
+			if (button_rect.pointInRect(x, y))
+			{
+				mRightMouseTargetButton = button;
+				break;
+			}
+		}
+
+		createContextMenu();
+
+		LLContextMenu * menu = (LLContextMenu *) mPopupMenuHandle.get();
+
+		if (menu)
+		{
+			menu->show(x, y);
+
+			LLMenuGL::showPopup(this, menu, x, y);
+		}
+	}
+
+	return handle_it_here;
+}
+
+BOOL LLToolBar::isSettingChecked(const LLSD& userdata)
+{
+	BOOL retval = FALSE;
+
+	const std::string setting_name = userdata.asString();
+
+	if (setting_name == "icons_with_text")
+	{
+		retval = (mButtonType == BTNTYPE_ICONS_WITH_TEXT);
+	}
+	else if (setting_name == "icons_only")
+	{
+		retval = (mButtonType == BTNTYPE_ICONS_ONLY);
+	}
+
+	return retval;
+}
+
+void LLToolBar::onSettingEnable(const LLSD& userdata)
+{
+	llassert(!mReadOnly);
+
+	const std::string setting_name = userdata.asString();
+
+	if (setting_name == "icons_with_text")
+	{
+		setButtonType(BTNTYPE_ICONS_WITH_TEXT);
+	}
+	else if (setting_name == "icons_only")
+	{
+		setButtonType(BTNTYPE_ICONS_ONLY);
+	}
+}
+
+void LLToolBar::onRemoveSelectedCommand()
+{
+	llassert(!mReadOnly);
+
+	if (mRightMouseTargetButton)
+	{
+		removeCommand(mRightMouseTargetButton->getCommandId());
+
+		mRightMouseTargetButton = NULL;
+	}
+}
+
+void LLToolBar::setButtonType(LLToolBarEnums::ButtonType button_type)
+{
+	bool regenerate_buttons = (mButtonType != button_type);
+	
+	mButtonType = button_type;
+
+	if (regenerate_buttons)
+	{
+		createButtons();
+	}
+}
+
+void LLToolBar::resizeButtonsInRow(std::vector<LLToolBarButton*>& buttons_in_row, S32 max_row_girth)
+{
+	// make buttons in current row all same girth
+	BOOST_FOREACH(LLToolBarButton* button, buttons_in_row)
+	{
+		if (getOrientation(mSideType) == LLLayoutStack::HORIZONTAL)
+		{
+			button->reshape(button->mWidthRange.clamp(button->getRect().getWidth()), max_row_girth);
+		}
+		else // VERTICAL
+		{
+			button->reshape(max_row_girth, button->getRect().getHeight());
+		}
+	}
+}
+
+// Returns the position of the coordinates as a rank in the button list. 
+// The rank is the position a tool dropped in (x,y) would assume in the button list.
+// The returned value is between 0 and mButtons.size(), 0 being the first element to the left
+// (or top) and mButtons.size() the last one to the right (or bottom).
+// Various drag data are stored in the toolbar object though are not exposed outside (and shouldn't).
+int LLToolBar::getRankFromPosition(S32 x, S32 y)
+{
+	if (mButtons.empty())
+	{
+		return RANK_NONE;
+	}
+	
+	int rank = 0;
+
+	// Convert the toolbar coord into button panel coords
+	LLLayoutStack::ELayoutOrientation orientation = getOrientation(mSideType);
+	S32 button_panel_x = 0;
+	S32 button_panel_y = 0;
+	localPointToOtherView(x, y, &button_panel_x, &button_panel_y, mButtonPanel);
+	S32 dx = x - button_panel_x;
+	S32 dy = y - button_panel_y;
+	
+	// Simply compare the passed coord with the buttons outbound box + padding
+	std::list<LLToolBarButton*>::iterator it_button = mButtons.begin();
+	std::list<LLToolBarButton*>::iterator end_button = mButtons.end();
+	LLRect button_rect;
+	while (it_button != end_button)
+	{
+		button_rect = (*it_button)->getRect();
+		S32 point_x = button_rect.mRight + mPadRight;
+		S32 point_y = button_rect.mBottom - mPadBottom;
+
+		if ((button_panel_x < point_x) && (button_panel_y > point_y))
+		{
+			break;
+		}
+		rank++;
+		++it_button;
+	}
+	
+	// Update the passed coordinates to the hit button relevant corner 
+	// (different depending on toolbar orientation)
+	if (rank < mButtons.size())
+	{
+		if (orientation == LLLayoutStack::HORIZONTAL)
+		{
+			// Horizontal
+			S32 mid_point = (button_rect.mRight + button_rect.mLeft) / 2;
+			if (button_panel_x < mid_point)
+			{
+				mDragx = button_rect.mLeft - mPadLeft;
+				mDragy = button_rect.mTop + mPadTop;
+			}
+			else
+			{
+				rank++;
+				mDragx = button_rect.mRight + mPadRight - 1;
+				mDragy = button_rect.mTop + mPadTop;
+			}
+		}
+		else
+		{
+			// Vertical
+			S32 mid_point = (button_rect.mTop + button_rect.mBottom) / 2;
+			if (button_panel_y > mid_point)
+			{
+				mDragx = button_rect.mLeft - mPadLeft;
+				mDragy = button_rect.mTop + mPadTop;
+			}
+			else
+			{
+				rank++;
+				mDragx = button_rect.mLeft - mPadLeft;
+				mDragy = button_rect.mBottom - mPadBottom + 1;
+			}
+		}
+	}
+	else
+	{
+		// We hit passed the end of the list so put the insertion point at the end
+		if (orientation == LLLayoutStack::HORIZONTAL)
+		{
+			mDragx = button_rect.mRight + mPadRight;
+			mDragy = button_rect.mTop + mPadTop;
+		}
+		else
+		{
+			mDragx = button_rect.mLeft - mPadLeft;
+			mDragy = button_rect.mBottom - mPadBottom;
+		}
+	}
+
+	// Update the "girth" of the caret, i.e. the width or height (depending of orientation)
+	if (orientation == LLLayoutStack::HORIZONTAL)
+	{
+		mDragGirth = button_rect.getHeight() + mPadBottom + mPadTop;
+	}
+	else
+	{
+		mDragGirth = button_rect.getWidth() + mPadLeft + mPadRight;
+	}
+
+	// The delta account for the coord model change (i.e. convert back to toolbar coord)
+	mDragx += dx;
+	mDragy += dy;
+	
+	return rank;
+}
+
+int LLToolBar::getRankFromPosition(const LLCommandId& id)
+{
+	if (!hasCommand(id))
+	{
+		return RANK_NONE;
+	}
+	int rank = 0;
+	std::list<LLToolBarButton*>::iterator it_button = mButtons.begin();
+	std::list<LLToolBarButton*>::iterator end_button = mButtons.end();
+	while (it_button != end_button)
+	{
+		if ((*it_button)->mId == id)
+		{
+			break;
+		}
+		rank++;
+		++it_button;
+	}
+	return rank;
+}
+
+void LLToolBar::updateLayoutAsNeeded()
+{
+	if (!mNeedsLayout) return;
+
+	LLLayoutStack::ELayoutOrientation orientation = getOrientation(mSideType);
+	
+	// our terminology for orientation-agnostic layout is such that
+	// length refers to a distance in the direction we stack the buttons 
+	// and girth refers to a distance in the direction buttons wrap
+	S32 max_row_girth = 0;
+	S32 max_row_length = 0;
+
+	S32 max_length;
+	S32 max_total_girth;
+	S32 cur_start;
+	S32 cur_row ;
+	S32 row_pad_start;
+	S32 row_pad_end;
+	S32 girth_pad_end;
+	S32 row_running_length;
+
+	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;
+		girth_pad_end = mPadBottom;
+	}
+	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;
+		girth_pad_end = mPadRight;
+	}
+	
+	row_running_length = row_pad_start;
+	cur_start = row_pad_start;
+
+
+	LLRect panel_rect = mButtonPanel->getLocalRect();
+
+	std::vector<LLToolBarButton*> buttons_in_row;
+
+	BOOST_FOREACH(LLToolBarButton* button, mButtons)
+	{
+		button->reshape(button->mWidthRange.getMin(), button->mDesiredHeight);
+		button->autoResize();
+
+		S32 button_clamped_width = button->mWidthRange.clamp(button->getRect().getWidth());
+		S32 button_length = (orientation == LLLayoutStack::HORIZONTAL)
+							? button_clamped_width
+							: button->getRect().getHeight();
+		S32 button_girth = (orientation == LLLayoutStack::HORIZONTAL)
+							? button->getRect().getHeight()
+							: button_clamped_width;
+		
+		// wrap if needed
+		if (mWrap
+			&& row_running_length + button_length > max_length	// out of room...
+			&& cur_start != row_pad_start)						// ...and not first button in row
+		{
+			if (orientation == LLLayoutStack::VERTICAL)
+			{	// row girth (width in this case) is clamped to allowable button widths
+				max_row_girth = button->mWidthRange.clamp(max_row_girth);
+			}
+
+			// make buttons in current row all same girth
+			resizeButtonsInRow(buttons_in_row, max_row_girth);
+			buttons_in_row.clear();
+
+			max_row_length = llmax(max_row_length, row_running_length);
+			row_running_length = row_pad_start;
+			cur_start = row_pad_start;
+			cur_row += max_row_girth + mPadBetween;
+			max_row_girth = 0;
+		}
+
+		LLRect button_rect;
+		if (orientation == LLLayoutStack::HORIZONTAL)
+		{
+			button_rect.setLeftTopAndSize(cur_start, panel_rect.mTop - cur_row, button_clamped_width, button->getRect().getHeight());
+		}
+		else // VERTICAL
+		{
+			button_rect.setLeftTopAndSize(cur_row, panel_rect.mTop - cur_start, button_clamped_width, button->getRect().getHeight());
+		}
+		button->setShape(button_rect);
+		
+		buttons_in_row.push_back(button);
+
+		row_running_length += button_length + mPadBetween;
+		cur_start = row_running_length;
+		max_row_girth = llmax(button_girth, max_row_girth);
+	}
+
+	// final resizing in "girth" direction
+	S32 total_girth =	cur_row				// current row position...
+						+ max_row_girth		// ...incremented by size of final row...
+						+ girth_pad_end;	// ...plus padding reserved on end
+	total_girth = llmax(total_girth,mMinGirth);
+	
+	max_row_length = llmax(max_row_length, row_running_length - mPadBetween + row_pad_end);
+
+	resizeButtonsInRow(buttons_in_row, max_row_girth);
+
+	// grow and optionally shift toolbar to accommodate buttons
+	if (orientation == LLLayoutStack::HORIZONTAL)
+	{
+		if (mSideType == SIDE_TOP)
+		{ // shift down to maintain top edge
+			translate(0, getRect().getHeight() - total_girth);
+		}
+
+		reshape(getRect().getWidth(), total_girth);
+		mButtonPanel->reshape(max_row_length, total_girth);
+	}
+	else // VERTICAL
+	{
+		if (mSideType == SIDE_RIGHT)
+		{ // shift left to maintain right edge
+			translate(getRect().getWidth() - total_girth, 0);
+		}
+		
+		reshape(total_girth, getRect().getHeight());
+		mButtonPanel->reshape(total_girth, max_row_length);
+	}
+
+	// make parent fit button panel
+	mButtonPanel->getParent()->setShape(mButtonPanel->getLocalRect());
+
+	// re-center toolbar buttons
+	mCenteringStack->updateLayout();
+
+	if (!mButtons.empty())
+	{
+		mButtonPanel->setVisible(TRUE);
+		mButtonPanel->setMouseOpaque(TRUE);
+	}
+
+	// don't clear flag until after we've resized ourselves, to avoid laying out every frame
+	mNeedsLayout = false;
+}
+
+
+void LLToolBar::draw()
+{
+	if (mButtons.empty())
+	{
+		mButtonPanel->setVisible(FALSE);
+		mButtonPanel->setMouseOpaque(FALSE);
+	}
+	else
+	{
+		mButtonPanel->setVisible(TRUE);
+		mButtonPanel->setMouseOpaque(TRUE);
+	}
+
+	// Update enable/disable state and highlight state for editable toolbars
+	if (!mReadOnly)
+	{
+		for (toolbar_button_list::iterator btn_it = mButtons.begin(); btn_it != mButtons.end(); ++btn_it)
+		{
+			LLToolBarButton* btn = *btn_it;
+			LLCommand* command = LLCommandManager::instance().getCommand(btn->mId);
+
+			if (command && btn->mIsEnabledSignal)
+			{
+				const bool button_command_enabled = (*btn->mIsEnabledSignal)(btn, command->isEnabledParameters());
+				btn->setEnabled(button_command_enabled);
+			}
+
+			if (command && btn->mIsRunningSignal)
+			{
+				const bool button_command_running = (*btn->mIsRunningSignal)(btn, command->isRunningParameters());
+				btn->setToggleState(button_command_running);
+			}
+		}
+	}
+
+	updateLayoutAsNeeded();
+	// rect may have shifted during layout
+	LLUI::popMatrix();
+	LLUI::pushMatrix();
+	LLUI::translate((F32)getRect().mLeft, (F32)getRect().mBottom, 0.f);
+
+	// Position the caret 
+	LLIconCtrl* caret = getChild<LLIconCtrl>("caret");
+	caret->setVisible(FALSE);
+	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,
+								  mDragy,
+								  mDragx+caret_rect.getWidth()/2+1,
+								  mDragy-mDragGirth));
+		}
+		else
+		{
+			caret->setRect(LLRect(mDragx,
+								  mDragy+caret_rect.getHeight()/2,
+								  mDragx+mDragGirth,
+								  mDragy-caret_rect.getHeight()/2));
+		}
+		caret->setVisible(TRUE);
+	}
+		
+	LLUICtrl::draw();
+	caret->setVisible(FALSE);
+	mDragAndDropTarget = false;
+}
+
+void LLToolBar::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+	LLUICtrl::reshape(width, height, called_from_parent);
+	mNeedsLayout = true;
+}
+
+void LLToolBar::createButtons()
+{
+	BOOST_FOREACH(LLToolBarButton* button, mButtons)
+	{
+		if (mButtonRemoveSignal)
+		{
+			(*mButtonRemoveSignal)(button);
+		}
+		
+		delete button;
+	}
+	mButtons.clear();
+	mButtonMap.clear();
+	mRightMouseTargetButton = NULL;
+	
+	BOOST_FOREACH(LLCommandId& command_id, mButtonCommands)
+	{
+		LLToolBarButton* button = createButton(command_id);
+		mButtons.push_back(button);
+		mButtonPanel->addChild(button);
+		mButtonMap.insert(std::make_pair(command_id.uuid(), button));
+		
+		if (mButtonAddSignal)
+		{
+			(*mButtonAddSignal)(button);
+		}
+	}
+	mNeedsLayout = true;
+}
+
+void LLToolBarButton::callIfEnabled(LLUICtrl::commit_callback_t commit, LLUICtrl* ctrl, const LLSD& param )
+{
+	LLCommand* command = LLCommandManager::instance().getCommand(mId);
+
+	if (!mIsEnabledSignal || (*mIsEnabledSignal)(this, command->isEnabledParameters()))
+	{
+		commit(ctrl, param);
+	}
+}
+
+LLToolBarButton* LLToolBar::createButton(const LLCommandId& id)
+{
+	LLCommand* commandp = LLCommandManager::instance().getCommand(id);
+	if (!commandp) return NULL;
+
+	LLToolBarButton::Params button_p;
+	button_p.name = commandp->name();
+	button_p.label = LLTrans::getString(commandp->labelRef());
+	button_p.tool_tip = LLTrans::getString(commandp->tooltipRef());
+	button_p.image_overlay = LLUI::getUIImage(commandp->icon());
+	button_p.overwriteFrom(mButtonParams[mButtonType]);
+	LLToolBarButton* button = LLUICtrlFactory::create<LLToolBarButton>(button_p);
+
+	if (!mReadOnly)
+	{
+		enable_callback_t isEnabledCB;
+
+		const std::string& isEnabledFunction = commandp->isEnabledFunctionName();
+		if (isEnabledFunction.length() > 0)
+		{
+			LLUICtrl::EnableCallbackParam isEnabledParam;
+			isEnabledParam.function_name = isEnabledFunction;
+			isEnabledParam.parameter = commandp->isEnabledParameters();
+			isEnabledCB = initEnableCallback(isEnabledParam);
+
+			if (NULL == button->mIsEnabledSignal)
+			{
+				button->mIsEnabledSignal = new enable_signal_t();
+			}
+
+			button->mIsEnabledSignal->connect(isEnabledCB);
+		}
+
+		LLUICtrl::CommitCallbackParam executeParam;
+		executeParam.function_name = commandp->executeFunctionName();
+		executeParam.parameter = commandp->executeParameters();
+
+		// If we have a "stop" function then we map the command to mouse down / mouse up otherwise commit
+		const std::string& executeStopFunction = commandp->executeStopFunctionName();
+		if (executeStopFunction.length() > 0)
+		{
+			LLUICtrl::CommitCallbackParam executeStopParam;
+			executeStopParam.function_name = executeStopFunction;
+			executeStopParam.parameter = commandp->executeStopParameters();
+			LLUICtrl::commit_callback_t execute_func = initCommitCallback(executeParam);
+			LLUICtrl::commit_callback_t stop_func = initCommitCallback(executeStopParam);
+			
+			button->setMouseDownCallback(boost::bind(&LLToolBarButton::callIfEnabled, button, execute_func, _1, _2));
+			button->setMouseUpCallback(boost::bind(&LLToolBarButton::callIfEnabled, button, stop_func, _1, _2));
+		}
+		else
+		{
+			button->setCommitCallback(executeParam);
+		}
+
+		// Set up "is running" query callback
+		const std::string& isRunningFunction = commandp->isRunningFunctionName();
+		if (isRunningFunction.length() > 0)
+		{
+			LLUICtrl::EnableCallbackParam isRunningParam;
+			isRunningParam.function_name = isRunningFunction;
+			isRunningParam.parameter = commandp->isRunningParameters();
+			enable_signal_t::slot_type isRunningCB = initEnableCallback(isRunningParam);
+
+			if (NULL == button->mIsRunningSignal)
+			{
+				button->mIsRunningSignal = new enable_signal_t();
+			}
+
+			button->mIsRunningSignal->connect(isRunningCB);
+		}
+	}
+
+	// Drag and drop behavior must work also if provided in the Toybox and, potentially, any read-only toolbar
+	button->setStartDragCallback(mStartDragItemCallback);
+	button->setHandleDragCallback(mHandleDragItemCallback);
+
+	button->setCommandId(id);
+
+	return button;
+}
+
+boost::signals2::connection connectSignal(LLToolBar::button_signal_t*& signal, const LLToolBar::button_signal_t::slot_type& cb)
+{
+	if (!signal)
+	{
+		signal = new LLToolBar::button_signal_t();
+	}
+
+	return signal->connect(cb);
+}
+
+boost::signals2::connection LLToolBar::setButtonAddCallback(const button_signal_t::slot_type& cb)
+{
+	return connectSignal(mButtonAddSignal, cb);
+}
+
+boost::signals2::connection LLToolBar::setButtonEnterCallback(const button_signal_t::slot_type& cb)
+{
+	return connectSignal(mButtonEnterSignal, cb);
+}
+
+boost::signals2::connection LLToolBar::setButtonLeaveCallback(const button_signal_t::slot_type& cb)
+{
+	return connectSignal(mButtonLeaveSignal, cb);
+}
+
+boost::signals2::connection LLToolBar::setButtonRemoveCallback(const button_signal_t::slot_type& cb)
+{
+	return connectSignal(mButtonRemoveSignal, cb);
+}
+
+BOOL LLToolBar::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+										EDragAndDropType cargo_type,
+										void* cargo_data,
+										EAcceptance* accept,
+										std::string& tooltip_msg)
+{
+	// If we have a drop callback, that means that we can handle the drop
+	BOOL handled = (mHandleDropCallback ? TRUE : FALSE);
+	
+	// if drop is set, it's time to call the callback to get the operation done
+	if (handled && drop)
+	{
+		handled = mHandleDropCallback(cargo_data, x, y ,this);
+	}
+	
+	// We accept only single tool drop on toolbars
+	*accept = (handled ? ACCEPT_YES_SINGLE : ACCEPT_NO);
+	
+	// We'll use that flag to change the visual aspect of the toolbar target on draw()
+	mDragAndDropTarget = false;
+	
+	// Convert drag position into insert position and rank 
+	if (!isReadOnly() && handled && !drop)
+	{
+		LLInventoryItem* inv_item = (LLInventoryItem*)cargo_data;
+		LLAssetType::EType type = inv_item->getType();
+		if (type == LLAssetType::AT_WIDGET)
+		{
+			LLCommandId dragged_command(inv_item->getUUID());
+			int orig_rank = getRankFromPosition(dragged_command);
+			mDragRank = getRankFromPosition(x, y);
+			// Don't DaD if we're dragging a command on itself
+			mDragAndDropTarget = ((orig_rank != RANK_NONE) && ((mDragRank == orig_rank) || ((mDragRank-1) == orig_rank)) ? false : true);
+			//llinfos << "Merov debug : DaD, rank = " << mDragRank << ", dragged uui = " << inv_item->getUUID() << llendl; 
+			/* Do the following if you want to animate the button itself
+			LLCommandId dragged_command(inv_item->getUUID());
+			removeCommand(dragged_command);
+			addCommand(dragged_command,rank);
+			*/
+		}
+		else
+		{
+			handled = FALSE;
+		}
+	}
+	
+	return handled;
+}
+
+LLToolBarButton::LLToolBarButton(const Params& p) 
+:	LLButton(p),
+	mMouseDownX(0),
+	mMouseDownY(0),
+	mWidthRange(p.button_width),
+	mDesiredHeight(p.desired_height),
+	mId(""),
+	mIsEnabledSignal(NULL),
+	mIsRunningSignal(NULL),
+	mIsStartingSignal(NULL),
+	mIsDragged(false),
+	mStartDragItemCallback(NULL),
+	mHandleDragItemCallback(NULL),
+	mOriginalImageSelected(p.image_selected),
+	mOriginalImageUnselected(p.image_unselected),
+	mOriginalImagePressed(p.image_pressed),
+	mOriginalImagePressedSelected(p.image_pressed_selected),
+	mOriginalLabelColor(p.label_color),
+	mOriginalLabelColorSelected(p.label_color_selected),
+	mOriginalImageOverlayColor(p.image_overlay_color),
+	mOriginalImageOverlaySelectedColor(p.image_overlay_selected_color)
+{
+}
+
+LLToolBarButton::~LLToolBarButton()
+{
+	delete mIsEnabledSignal;
+	delete mIsRunningSignal;
+	delete mIsStartingSignal;
+}
+
+BOOL LLToolBarButton::handleMouseDown(S32 x, S32 y, MASK mask)
+{
+	mMouseDownX = x;
+	mMouseDownY = y;
+	return LLButton::handleMouseDown(x, y, mask);
+}
+
+BOOL LLToolBarButton::handleHover(S32 x, S32 y, MASK mask)
+{
+	BOOL handled = FALSE;
+		
+	S32 mouse_distance_squared = (x - mMouseDownX) * (x - mMouseDownX) + (y - mMouseDownY) * (y - mMouseDownY);
+	S32 drag_threshold = LLUI::sSettingGroups["config"]->getS32("DragAndDropDistanceThreshold");
+	if (mouse_distance_squared > drag_threshold * drag_threshold
+		&& hasMouseCapture() && 
+		mStartDragItemCallback && mHandleDragItemCallback)
+	{
+		if (!mIsDragged)
+		{
+			mStartDragItemCallback(x, y, this);
+			mIsDragged = true;
+			handled = TRUE;
+		}
+		else 
+		{
+			handled = mHandleDragItemCallback(x, y, mId.uuid(), LLAssetType::AT_WIDGET);
+		}
+	}
+	else
+	{
+		handled = LLButton::handleHover(x, y, mask);
+	}
+
+	return handled;
+}
+
+void LLToolBarButton::onMouseEnter(S32 x, S32 y, MASK mask)
+{
+	LLUICtrl::onMouseEnter(x, y, mask);
+
+	// Always highlight toolbar buttons, even if they are disabled
+	if (!gFocusMgr.getMouseCapture() || gFocusMgr.getMouseCapture() == this)
+	{
+		mNeedsHighlight = TRUE;
+	}
+
+	LLToolBar* parent_toolbar = getParentByType<LLToolBar>();
+	if (parent_toolbar && parent_toolbar->mButtonEnterSignal)
+	{
+		(*(parent_toolbar->mButtonEnterSignal))(this);
+	}
+}
+
+void LLToolBarButton::onMouseLeave(S32 x, S32 y, MASK mask)
+{
+	LLButton::onMouseLeave(x, y, mask);
+	
+	LLToolBar* parent_toolbar = getParentByType<LLToolBar>();
+	if (parent_toolbar && parent_toolbar->mButtonLeaveSignal)
+	{
+		(*(parent_toolbar->mButtonLeaveSignal))(this);
+	}	
+}
+
+void LLToolBarButton::onMouseCaptureLost()
+{
+	mIsDragged = false;
+}
+
+void LLToolBarButton::onCommit()
+{
+	LLCommand* command = LLCommandManager::instance().getCommand(mId);
+
+	if (!mIsEnabledSignal || (*mIsEnabledSignal)(this, command->isEnabledParameters()))
+	{
+		LLButton::onCommit();
+	}
+}
+
+void LLToolBarButton::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+	LLButton::reshape(mWidthRange.clamp(width), height, called_from_parent);
+}
+
+void LLToolBarButton::setEnabled(BOOL enabled)
+{
+	if (enabled)
+	{
+		mImageSelected = mOriginalImageSelected;
+		mImageUnselected = mOriginalImageUnselected;
+		mImagePressed = mOriginalImagePressed;
+		mImagePressedSelected = mOriginalImagePressedSelected;
+		mUnselectedLabelColor = mOriginalLabelColor;
+		mSelectedLabelColor = mOriginalLabelColorSelected;
+		mImageOverlayColor = mOriginalImageOverlayColor;
+		mImageOverlaySelectedColor = mOriginalImageOverlaySelectedColor;
+	}
+	else
+	{
+		mImageSelected = mImageDisabledSelected;
+		mImageUnselected = mImageDisabled;
+		mImagePressed = mImageDisabled;
+		mImagePressedSelected = mImageDisabledSelected;
+		mUnselectedLabelColor = mDisabledLabelColor;
+		mSelectedLabelColor = mDisabledSelectedLabelColor;
+		mImageOverlayColor = mImageOverlayDisabledColor;
+		mImageOverlaySelectedColor = mImageOverlayDisabledColor;
+	}
+}
+
+const std::string LLToolBarButton::getToolTip() const	
+{ 
+	std::string tooltip;
+
+	if (labelIsTruncated() || getCurrentLabel().empty())
+	{
+		tooltip = LLTrans::getString(LLCommandManager::instance().getCommand(mId)->labelRef()) + " -- " + LLView::getToolTip();
+	}
+	else
+	{
+		tooltip = LLView::getToolTip();
+	}
+
+	LLToolBar* parent_toolbar = getParentByType<LLToolBar>();
+	if (parent_toolbar && parent_toolbar->mButtonTooltipSuffix.length() > 0)
+	{
+		tooltip = tooltip + "\n(" + parent_toolbar->mButtonTooltipSuffix + ")";
+	}
+
+	return tooltip;
+}
+
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
new file mode 100644
index 0000000000000000000000000000000000000000..a50c60282c453b2283cd42511583a4bacabfbfdb
--- /dev/null
+++ b/indra/llui/lltoolbar.h
@@ -0,0 +1,290 @@
+/** 
+ * @file lltoolbar.h
+ * @author Richard Nelson
+ * @brief User customizable toolbar class
+ *
+ * $LicenseInfo:firstyear=2011&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$
+ */
+
+#ifndef LL_LLTOOLBAR_H
+#define LL_LLTOOLBAR_H
+
+#include "llbutton.h"
+#include "llcommandmanager.h"
+#include "lllayoutstack.h"
+#include "lluictrl.h"
+#include "llcommandmanager.h"
+#include "llassettype.h"
+
+class LLToolBar;
+class LLToolBarButton;
+
+typedef boost::function<void (S32 x, S32 y, LLToolBarButton* button)> tool_startdrag_callback_t;
+typedef boost::function<BOOL (S32 x, S32 y, const LLUUID& uuid, LLAssetType::EType type)> tool_handledrag_callback_t;
+typedef boost::function<BOOL (void* data, S32 x, S32 y, LLToolBar* toolbar)> tool_handledrop_callback_t;
+
+class LLToolBarButton : public LLButton
+{
+	friend class LLToolBar;
+public:
+	struct Params : public LLInitParam::Block<Params, LLButton::Params>
+	{
+		Optional<LLUI::RangeS32::Params>	button_width;
+		Optional<S32>						desired_height;
+
+		Params()
+		:	button_width("button_width"),
+			desired_height("desired_height", 20)
+		{}
+
+	};
+
+	LLToolBarButton(const Params& p);
+	~LLToolBarButton();
+
+	BOOL handleMouseDown(S32 x, S32 y, MASK mask);
+	BOOL handleHover(S32 x, S32 y, MASK mask);
+
+	void reshape(S32 width, S32 height, BOOL called_from_parent = true);
+	void setEnabled(BOOL enabled);
+	void setCommandId(const LLCommandId& id) { mId = id; }
+	LLCommandId getCommandId() { return mId; }
+
+	void setStartDragCallback(tool_startdrag_callback_t cb)   { mStartDragItemCallback  = cb; }
+	void setHandleDragCallback(tool_handledrag_callback_t cb) { mHandleDragItemCallback = cb; }
+
+	void onMouseEnter(S32 x, S32 y, MASK mask);
+	void onMouseLeave(S32 x, S32 y, MASK mask);
+	void onMouseCaptureLost();
+
+	void onCommit();
+
+	virtual const std::string getToolTip() const;		
+
+private:
+	void callIfEnabled(LLUICtrl::commit_callback_t commit, LLUICtrl* ctrl, const LLSD& param );
+
+	LLCommandId		mId;
+	S32				mMouseDownX;
+	S32				mMouseDownY;
+	LLUI::RangeS32	mWidthRange;
+	S32				mDesiredHeight;
+	bool							mIsDragged;
+	tool_startdrag_callback_t		mStartDragItemCallback;
+	tool_handledrag_callback_t		mHandleDragItemCallback;
+
+	enable_signal_t*	mIsEnabledSignal;
+	enable_signal_t*	mIsRunningSignal;
+	enable_signal_t*	mIsStartingSignal;
+	LLPointer<LLUIImage>	mOriginalImageSelected,
+							mOriginalImageUnselected,
+							mOriginalImagePressed,
+							mOriginalImagePressedSelected;
+	LLUIColor				mOriginalLabelColor,
+							mOriginalLabelColorSelected,
+							mOriginalImageOverlayColor,
+							mOriginalImageOverlaySelectedColor;
+};
+
+
+namespace LLToolBarEnums
+{
+	enum ButtonType
+	{
+		BTNTYPE_ICONS_WITH_TEXT = 0,
+		BTNTYPE_ICONS_ONLY,
+
+		BTNTYPE_COUNT
+	};
+
+	enum SideType
+	{
+		SIDE_BOTTOM,
+		SIDE_LEFT,
+		SIDE_RIGHT,
+		SIDE_TOP,
+	};
+
+	LLLayoutStack::ELayoutOrientation getOrientation(SideType sideType);
+}
+
+// NOTE: This needs to occur before Param block declaration for proper compilation.
+namespace LLInitParam
+{
+	template<>
+	struct TypeValues<LLToolBarEnums::ButtonType> : public TypeValuesHelper<LLToolBarEnums::ButtonType>
+	{
+		static void declareValues();
+	};
+
+	template<>
+	struct TypeValues<LLToolBarEnums::SideType> : public TypeValuesHelper<LLToolBarEnums::SideType>
+	{
+		static void declareValues();
+	};
+}
+
+
+class LLToolBar
+:	public LLUICtrl
+{
+	friend class LLToolBarButton;
+public:
+	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
+	{
+		Mandatory<LLToolBarEnums::ButtonType>	button_display_mode;
+		Mandatory<LLToolBarEnums::SideType>		side;
+
+		Optional<LLToolBarButton::Params>		button_icon,
+												button_icon_and_text;
+
+		Optional<bool>							read_only,
+												wrap;
+
+		Optional<S32>							pad_left,
+												pad_top,
+												pad_right,
+												pad_bottom,
+												pad_between,
+												min_girth;
+
+		// default command set
+		Multiple<LLCommandId::Params>			commands;
+
+		Optional<LLPanel::Params>				button_panel;
+
+		Params();
+	};
+
+	// virtuals
+	void draw();
+	void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
+	BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
+	virtual BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+								   EDragAndDropType cargo_type,
+								   void* cargo_data,
+								   EAcceptance* accept,
+								   std::string& tooltip_msg);
+	
+	static const int RANK_NONE = -1;
+	bool addCommand(const LLCommandId& commandId, int rank = RANK_NONE);
+	int  removeCommand(const LLCommandId& commandId);		// Returns the rank the removed command was at, RANK_NONE if not found
+	bool hasCommand(const LLCommandId& commandId) const;	// is this command bound to a button in this toolbar
+	bool enableCommand(const LLCommandId& commandId, bool enabled);	// enable/disable button bound to the specified command, if it exists in this toolbar
+	bool stopCommandInProgress(const LLCommandId& commandId);	// stop command if it is currently active
+	bool flashCommand(const LLCommandId& commandId, bool flash); // flash button associated with given command, if in this toolbar
+
+	void setStartDragCallback(tool_startdrag_callback_t cb)   { mStartDragItemCallback  = cb; } // connects drag and drop behavior to external logic
+	void setHandleDragCallback(tool_handledrag_callback_t cb) { mHandleDragItemCallback = cb; }
+	void setHandleDropCallback(tool_handledrop_callback_t cb) { mHandleDropCallback     = cb; }
+	bool isReadOnly() const { return mReadOnly; }
+
+	LLToolBarButton* createButton(const LLCommandId& id);
+
+	typedef boost::signals2::signal<void (LLView* button)> button_signal_t;
+	boost::signals2::connection setButtonAddCallback(const button_signal_t::slot_type& cb);
+	boost::signals2::connection setButtonEnterCallback(const button_signal_t::slot_type& cb);
+	boost::signals2::connection setButtonLeaveCallback(const button_signal_t::slot_type& cb);
+	boost::signals2::connection setButtonRemoveCallback(const button_signal_t::slot_type& cb);
+
+	// append the specified string to end of tooltip
+	void setTooltipButtonSuffix(const std::string& suffix) { mButtonTooltipSuffix = suffix; } 
+
+	LLToolBarEnums::SideType getSideType() const { return mSideType; }
+	bool hasButtons() const { return !mButtons.empty(); }
+	bool isModified() const { return mModified; }
+
+	int  getRankFromPosition(S32 x, S32 y);	
+	int  getRankFromPosition(const LLCommandId& id);	
+
+	// Methods used in loading and saving toolbar settings
+	void setButtonType(LLToolBarEnums::ButtonType button_type);
+	LLToolBarEnums::ButtonType getButtonType() { return mButtonType; }
+	command_id_list_t& getCommandsList() { return mButtonCommands; }
+	void clearCommandsList();
+
+private:
+	friend class LLUICtrlFactory;
+	LLToolBar(const Params&);
+	~LLToolBar();
+
+	void initFromParams(const Params&);
+	void createContextMenu();
+	void updateLayoutAsNeeded();
+	void createButtons();
+	void resizeButtonsInRow(std::vector<LLToolBarButton*>& buttons_in_row, S32 max_row_girth);
+	BOOL isSettingChecked(const LLSD& userdata);
+	void onSettingEnable(const LLSD& userdata);
+	void onRemoveSelectedCommand();
+
+private:
+	// static layout state
+	const bool						mReadOnly;
+	const LLToolBarEnums::SideType	mSideType;
+	const bool						mWrap;
+	const S32						mPadLeft,
+									mPadRight,
+									mPadTop,
+									mPadBottom,
+									mPadBetween,
+									mMinGirth;
+
+	// drag and drop state
+	tool_startdrag_callback_t		mStartDragItemCallback;
+	tool_handledrag_callback_t		mHandleDragItemCallback;
+	tool_handledrop_callback_t		mHandleDropCallback;
+	bool							mDragAndDropTarget;
+	int								mDragRank;
+	S32								mDragx,
+									mDragy,
+									mDragGirth;
+
+	typedef std::list<LLToolBarButton*> toolbar_button_list;
+	typedef std::map<LLUUID, LLToolBarButton*> command_id_map;
+	toolbar_button_list				mButtons;
+	command_id_list_t				mButtonCommands;
+	command_id_map					mButtonMap;
+
+	LLToolBarEnums::ButtonType		mButtonType;
+	LLToolBarButton::Params			mButtonParams[LLToolBarEnums::BTNTYPE_COUNT];
+
+	// related widgets
+	LLLayoutStack*					mCenteringStack;
+	LLPanel*						mButtonPanel;
+	LLHandle<class LLContextMenu>	mPopupMenuHandle;
+	LLHandle<class LLView>			mRemoveButtonHandle;
+
+	LLToolBarButton*				mRightMouseTargetButton;
+
+	bool							mNeedsLayout;
+	bool							mModified;
+
+	button_signal_t*				mButtonAddSignal;
+	button_signal_t*				mButtonEnterSignal;
+	button_signal_t*				mButtonLeaveSignal;
+	button_signal_t*				mButtonRemoveSignal;
+
+	std::string						mButtonTooltipSuffix;
+};
+
+
+#endif  // LL_LLTOOLBAR_H
diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp
index bc6461a0c21a25df950036225f9acb34b8981e37..23cdd9ad9a4817e17384bcd20fe094b1b58df30c 100644
--- a/indra/llui/lltooltip.cpp
+++ b/indra/llui/lltooltip.cpp
@@ -200,7 +200,7 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p)
 		icon_params.image_selected(imagep);
 
 		icon_params.scale_image(true);
-		icon_params.flash_color(icon_params.highlight_color());
+		icon_params.flash_color.control = "ButtonUnselectedFgColor";
 		mInfoButton  = LLUICtrlFactory::create<LLButton>(icon_params);
 		if (p.click_callback.isProvided())
 		{
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 58ba9e05f509e085a6f3a517a6a43644565d77d2..6b74c5a6be0f09d7a0b827a71a1b7000937c2d6d 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -41,6 +41,7 @@
 #include "llgl.h"
 
 // Project includes
+#include "llcommandmanager.h"
 #include "llcontrol.h"
 #include "llui.h"
 #include "lluicolortable.h"
@@ -57,6 +58,7 @@
 #include "llfiltereditor.h"
 #include "llflyoutbutton.h"
 #include "llsearcheditor.h"
+#include "lltoolbar.h"
 
 // for XUIParse
 #include "llquaternion.h"
@@ -87,13 +89,14 @@ std::list<std::string> gUntranslated;
 /*static*/ LLUI::remove_popup_t	LLUI::sRemovePopupFunc;
 /*static*/ LLUI::clear_popups_t	LLUI::sClearPopupsFunc;
 
-// register filtereditor here
+// register filter editor here
 static LLDefaultChildRegistry::Register<LLFilterEditor> register_filter_editor("filter_editor");
 static LLDefaultChildRegistry::Register<LLFlyoutButton> register_flyout_button("flyout_button");
 static LLDefaultChildRegistry::Register<LLSearchEditor> register_search_editor("search_editor");
 
 // register other widgets which otherwise may not be linked in
 static LLDefaultChildRegistry::Register<LLLoadingIndicator> register_loading_indicator("loading_indicator");
+static LLDefaultChildRegistry::Register<LLToolBar> register_toolbar("toolbar");
 
 //
 // Functions
@@ -103,7 +106,7 @@ void make_ui_sound(const char* namep)
 	std::string name = ll_safe_string(namep);
 	if (!LLUI::sSettingGroups["config"]->controlExists(name))
 	{
-		llwarns << "tried to make ui sound for unknown sound name: " << name << llendl;	
+		llwarns << "tried to make UI sound for unknown sound name: " << name << llendl;	
 	}
 	else
 	{
@@ -114,12 +117,12 @@ void make_ui_sound(const char* namep)
 			{
 				if (LLUI::sSettingGroups["config"]->getBOOL("UISndDebugSpamToggle"))
 				{
-					llinfos << "ui sound name: " << name << " triggered but silent (null uuid)" << llendl;	
+					llinfos << "UI sound name: " << name << " triggered but silent (null uuid)" << llendl;	
 				}				
 			}
 			else
 			{
-				llwarns << "ui sound named: " << name << " does not translate to a valid uuid" << llendl;	
+				llwarns << "UI sound named: " << name << " does not translate to a valid uuid" << llendl;	
 			}
 
 		}
@@ -127,7 +130,7 @@ void make_ui_sound(const char* namep)
 		{
 			if (LLUI::sSettingGroups["config"]->getBOOL("UISndDebugSpamToggle"))
 			{
-				llinfos << "ui sound name: " << name << llendl;	
+				llinfos << "UI sound name: " << name << llendl;	
 			}
 			LLUI::sAudioCallback(uuid);
 		}
@@ -150,11 +153,11 @@ void gl_state_for_2d(S32 width, S32 height)
 	F32 window_width = (F32) width;//gViewerWindow->getWindowWidth();
 	F32 window_height = (F32) height;//gViewerWindow->getWindowHeight();
 
-	glMatrixMode(GL_PROJECTION);
-	glLoadIdentity();
-	glOrtho(0.0f, llmax(window_width, 1.f), 0.0f, llmax(window_height,1.f), -1.0f, 1.0f);
-	glMatrixMode(GL_MODELVIEW);
-	glLoadIdentity();
+	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();
 }
 
@@ -471,7 +474,7 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex
 		return;
 	}
 
-	// add in offset of current image to current ui translation
+	// 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);
 
@@ -534,7 +537,7 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex
 		}
 	}
 
-	gGL.getTexUnit(0)->bind(image);
+	gGL.getTexUnit(0)->bind(image, true);
 
 	gGL.color4fv(color.mV);
 	
@@ -732,7 +735,7 @@ void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degre
 	LLGLSUIDefault gls_ui;
 
 
-	gGL.getTexUnit(0)->bind(image);
+	gGL.getTexUnit(0)->bind(image, true);
 
 	gGL.color4fv(color.mV);
 
@@ -785,7 +788,7 @@ void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degre
 
 		LLMatrix3 quat(0.f, 0.f, degrees*DEG_TO_RAD);
 		
-		gGL.getTexUnit(0)->bind(image);
+		gGL.getTexUnit(0)->bind(image, true);
 
 		gGL.color4fv(color.mV);
 		
@@ -952,10 +955,12 @@ void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor
 		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);
@@ -992,10 +997,18 @@ void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha)
 	// ...gray squares
 	gGL.color4f( .7f, .7f, .7f, alpha );
 	gGL.flush();
-	glPolygonStipple( checkerboard );
 
-	LLGLEnable polygon_stipple(GL_POLYGON_STIPPLE);
-	gl_rect_2d(rect);
+	if (!LLGLSLShader::sNoFixedFunction)
+	{ //polygon stipple is deprecated
+		glPolygonStipple( checkerboard );
+
+		LLGLEnable polygon_stipple(GL_POLYGON_STIPPLE);
+		gl_rect_2d(rect);
+	}
+	else
+	{
+		gl_rect_2d(rect);
+	}
 	gGL.flush();
 }
 
@@ -1613,16 +1626,16 @@ void LLUI::initClass(const settings_map_t& settings,
 
 	LLUICtrl::CommitCallbackRegistry::Registrar& reg = LLUICtrl::CommitCallbackRegistry::defaultRegistrar();
 
-	// Callbacks for associating controls with floater visibilty:
-	reg.add("Floater.Toggle", boost::bind(&LLFloaterReg::toggleFloaterInstance, _2));
-	reg.add("Floater.Show", boost::bind(&LLFloaterReg::showFloaterInstance, _2));
-	reg.add("Floater.Hide", boost::bind(&LLFloaterReg::hideFloaterInstance, _2));
-	reg.add("Floater.InitToVisibilityControl", boost::bind(&LLFloaterReg::initUICtrlToFloaterVisibilityControl, _1, _2));
+	// Callbacks for associating controls with floater visibility:
+	reg.add("Floater.Toggle", boost::bind(&LLFloaterReg::toggleInstance, _2, LLSD()));
+	reg.add("Floater.ToggleOrBringToFront", boost::bind(&LLFloaterReg::toggleInstanceOrBringToFront, _2, LLSD()));
+	reg.add("Floater.Show", boost::bind(&LLFloaterReg::showInstance, _2, LLSD(), FALSE));
+	reg.add("Floater.Hide", boost::bind(&LLFloaterReg::hideInstance, _2, LLSD()));
 	
 	// Button initialization callback for toggle buttons
 	reg.add("Button.SetFloaterToggle", boost::bind(&LLButton::setFloaterToggle, _1, _2));
 	
-	// Button initialization callback for toggle buttons on dockale floaters
+	// Button initialization callback for toggle buttons on dockable floaters
 	reg.add("Button.SetDockableFloaterToggle", boost::bind(&LLButton::setDockableFloaterToggle, _1, _2));
 
 	// Display the help topic for the current context
@@ -1631,8 +1644,12 @@ void LLUI::initClass(const settings_map_t& settings,
 	// Currently unused, but kept for reference:
 	reg.add("Button.ToggleFloater", boost::bind(&LLButton::toggleFloaterAndSetToggleState, _1, _2));
 	
-	// Used by menus along with Floater.Toggle to display visibility as a checkmark
-	LLUICtrl::EnableCallbackRegistry::defaultRegistrar().add("Floater.Visible", boost::bind(&LLFloaterReg::floaterInstanceVisible, _2));
+	// Used by menus along with Floater.Toggle to display visibility as a check-mark
+	LLUICtrl::EnableCallbackRegistry::defaultRegistrar().add("Floater.Visible", boost::bind(&LLFloaterReg::instanceVisible, _2, LLSD()));
+	LLUICtrl::EnableCallbackRegistry::defaultRegistrar().add("Floater.IsOpen", boost::bind(&LLFloaterReg::instanceVisible, _2, LLSD()));
+
+	// Parse the master list of commands
+	LLCommandManager::load();
 }
 
 void LLUI::cleanupClass()
@@ -1816,9 +1833,12 @@ void LLUI::setupPaths()
 	LLXMLNodePtr root;
 	BOOL success  = LLXMLNode::parseFile(filename, root, NULL);
 	Paths paths;
-	LLXUIParser parser;
-	parser.readXUI(root, paths, filename);
 
+	if(success)
+	{
+		LLXUIParser parser;
+		parser.readXUI(root, paths, filename);
+	}
 	sXUIPaths.clear();
 	
 	if (success && paths.validateBlock())
@@ -2026,12 +2046,12 @@ void LLUI::positionViewNearMouse(LLView* view, S32 spawn_x, S32 spawn_y)
 								CURSOR_HEIGHT + MOUSE_CURSOR_PADDING * 2);
 
 	S32 local_x, local_y;
-	// convert screen coordinates to tooltipview-local coordinates
+	// convert screen coordinates to tooltip view-local coordinates
 	parent->screenPointToLocal(spawn_x, spawn_y, &local_x, &local_y);
 
 	// Start at spawn position (using left/top)
 	view->setOrigin( local_x, local_y - view->getRect().getHeight());
-	// Make sure we're onscreen and not overlapping the mouse
+	// Make sure we're on-screen and not overlapping the mouse
 	view->translateIntoRectWithExclusion( virtual_window_rect, mouse_rect, FALSE );
 }
 
@@ -2100,7 +2120,7 @@ namespace LLInitParam
 
 	void ParamValue<LLUIColor, TypeValues<LLUIColor> >::updateValueFromBlock()
 	{
-		if (control.isProvided())
+		if (control.isProvided() && !control().empty())
 		{
 			updateValue(LLUIColorTable::instance().getColor(control));
 		}
@@ -2257,9 +2277,11 @@ namespace LLInitParam
 		// in this case, that is left+width and bottom+height
 		LLRect& value = getValue();
 
+		right.set(value.mRight, false);
 		left.set(value.mLeft, make_block_authoritative);
 		width.set(value.getWidth(), make_block_authoritative);
 
+		top.set(value.mTop, false);
 		bottom.set(value.mBottom, make_block_authoritative);
 		height.set(value.getHeight(), make_block_authoritative);
 	}
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 7801a01acebbc0a1d998e2939f701093a61e9145..28e84fa44410e55174ea478d1600f1786cc631c3 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -41,6 +41,7 @@
 #include <boost/signals2.hpp>
 #include "lllazyvalue.h"
 #include "llframetimer.h"
+#include <limits>
 
 // LLUIFactory
 #include "llsd.h"
@@ -147,6 +148,122 @@ class LLUI
 {
 	LOG_CLASS(LLUI);
 public:
+	//
+	// Classes
+	//
+
+	struct RangeS32 
+	{
+		struct Params : public LLInitParam::Block<Params>
+		{
+			Optional<S32>	minimum,
+							maximum;
+
+			Params()
+			:	minimum("min", 0),
+				maximum("max", S32_MAX)
+			{}
+		};
+
+		// correct for inverted params
+		RangeS32(const Params& p = Params())
+		:	mMin(p.minimum),
+			mMax(p.maximum)
+		{
+			sanitizeRange();
+		}
+
+		RangeS32(S32 minimum, S32 maximum)
+		:	mMin(minimum),
+			mMax(maximum)
+		{
+			sanitizeRange();
+		}
+
+		S32 clamp(S32 input)
+		{
+			if (input < mMin) return mMin;
+			if (input > mMax) return mMax;
+			return input;
+		}
+
+		void setRange(S32 minimum, S32 maximum)
+		{
+			mMin = minimum;
+			mMax = maximum;
+			sanitizeRange();
+		}
+
+		S32 getMin() { return mMin; }
+		S32 getMax() { return mMax; }
+
+		bool operator==(const RangeS32& other) const
+		{
+			return mMin == other.mMin 
+				&& mMax == other.mMax;
+		}
+	private:
+		void sanitizeRange()
+		{
+			if (mMin > mMax)
+			{
+				llwarns << "Bad interval range (" << mMin << ", " << mMax << ")" << llendl;
+				// since max is usually the most dangerous one to ignore (buffer overflow, etc), prefer it
+				// in the case of a malformed range
+				mMin = mMax;
+			}
+		}
+
+
+		S32	mMin,
+			mMax;
+	};
+
+	struct ClampedS32 : public RangeS32
+	{
+		struct Params : public LLInitParam::Block<Params, RangeS32::Params>
+		{
+			Mandatory<S32> value;
+
+			Params()
+			:	value("", 0)
+			{
+				addSynonym(value, "value");
+			}
+		};
+
+		ClampedS32(const Params& p)
+		:	RangeS32(p)
+		{}
+
+		ClampedS32(const RangeS32& range)
+		:	RangeS32(range)
+		{
+			// set value here, after range has been sanitized
+			mValue = clamp(0);
+		}
+
+		ClampedS32(S32 value, const RangeS32& range = RangeS32())
+		:	RangeS32(range)
+		{
+			mValue = clamp(value);
+		}
+
+		S32 get()
+		{
+			return mValue;
+		}
+
+		void set(S32 value)
+		{
+			mValue = clamp(value);
+		}
+
+
+	private:
+		S32 mValue;
+	};
+
 	//
 	// Methods
 	//
@@ -365,7 +482,7 @@ template <typename T> LLRegisterWith<LLInitClassList> LLInitClass<T>::sRegister(
 template <typename T> LLRegisterWith<LLDestroyClassList> LLDestroyClass<T>::sRegister(&T::destroyClass);
 
 // useful parameter blocks
-struct TimeIntervalParam : public LLInitParam::Choice<TimeIntervalParam>
+struct TimeIntervalParam : public LLInitParam::ChoiceBlock<TimeIntervalParam>
 {
 	Alternative<F32>		seconds;
 	Alternative<S32>		frames;
diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h
index 76518789ec0b7d9437dfcea0c527d6a58fe2f0db..6a7a681d57a005775764cda908c343023439ea82 100644
--- a/indra/llui/lluicolortable.h
+++ b/indra/llui/lluicolortable.h
@@ -44,7 +44,7 @@ LOG_CLASS(LLUIColorTable);
 	typedef std::map<std::string, LLUIColor>  string_color_map_t;
 
 public:
-	struct ColorParams : LLInitParam::Choice<ColorParams>
+	struct ColorParams : LLInitParam::ChoiceBlock<ColorParams>
 	{
 		Alternative<LLColor4>    value;
 		Alternative<std::string> reference;
diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp
index d58df5801bec40247347736bd5e2cf9bb793dad4..b9c843e931c4aa657eec7a3f3bed2d127870b230 100644
--- a/indra/llui/lluictrl.cpp
+++ b/indra/llui/lluictrl.cpp
@@ -118,7 +118,6 @@ LLUICtrl::LLUICtrl(const LLUICtrl::Params& p, const LLViewModelPtr& viewmodel)
 	mDoubleClickSignal(NULL),
 	mTransparencyType(TT_DEFAULT)
 {
-	mUICtrlHandle.bind(this);
 }
 
 void LLUICtrl::initFromParams(const Params& p)
@@ -460,7 +459,7 @@ void LLUICtrl::setControlVariable(LLControlVariable* control)
 	if (control)
 	{
 		mControlVariable = control;
-		mControlConnection = mControlVariable->getSignal()->connect(boost::bind(&controlListener, _2, getUICtrlHandle(), std::string("value")));
+		mControlConnection = mControlVariable->getSignal()->connect(boost::bind(&controlListener, _2, getHandle(), std::string("value")));
 		setValue(mControlVariable->getValue());
 	}
 }
@@ -491,7 +490,7 @@ void LLUICtrl::setEnabledControlVariable(LLControlVariable* control)
 	if (control)
 	{
 		mEnabledControlVariable = control;
-		mEnabledControlConnection = mEnabledControlVariable->getSignal()->connect(boost::bind(&controlListener, _2, getUICtrlHandle(), std::string("enabled")));
+		mEnabledControlConnection = mEnabledControlVariable->getSignal()->connect(boost::bind(&controlListener, _2, getHandle(), std::string("enabled")));
 		setEnabled(mEnabledControlVariable->getValue().asBoolean());
 	}
 }
@@ -506,7 +505,7 @@ void LLUICtrl::setDisabledControlVariable(LLControlVariable* control)
 	if (control)
 	{
 		mDisabledControlVariable = control;
-		mDisabledControlConnection = mDisabledControlVariable->getSignal()->connect(boost::bind(&controlListener, _2, getUICtrlHandle(), std::string("disabled")));
+		mDisabledControlConnection = mDisabledControlVariable->getSignal()->connect(boost::bind(&controlListener, _2, getHandle(), std::string("disabled")));
 		setEnabled(!(mDisabledControlVariable->getValue().asBoolean()));
 	}
 }
@@ -521,7 +520,7 @@ void LLUICtrl::setMakeVisibleControlVariable(LLControlVariable* control)
 	if (control)
 	{
 		mMakeVisibleControlVariable = control;
-		mMakeVisibleControlConnection = mMakeVisibleControlVariable->getSignal()->connect(boost::bind(&controlListener, _2, getUICtrlHandle(), std::string("visible")));
+		mMakeVisibleControlConnection = mMakeVisibleControlVariable->getSignal()->connect(boost::bind(&controlListener, _2, getHandle(), std::string("visible")));
 		setVisible(mMakeVisibleControlVariable->getValue().asBoolean());
 	}
 }
@@ -536,7 +535,7 @@ void LLUICtrl::setMakeInvisibleControlVariable(LLControlVariable* control)
 	if (control)
 	{
 		mMakeInvisibleControlVariable = control;
-		mMakeInvisibleControlConnection = mMakeInvisibleControlVariable->getSignal()->connect(boost::bind(&controlListener, _2, getUICtrlHandle(), std::string("invisible")));
+		mMakeInvisibleControlConnection = mMakeInvisibleControlVariable->getSignal()->connect(boost::bind(&controlListener, _2, getHandle(), std::string("invisible")));
 		setVisible(!(mMakeInvisibleControlVariable->getValue().asBoolean()));
 	}
 }
@@ -992,6 +991,16 @@ void LLUICtrl::setTransparencyType(ETypeTransparency type)
 	mTransparencyType = type;
 }
 
+boost::signals2::connection LLUICtrl::setCommitCallback(const CommitCallbackParam& cb)
+{
+	return setCommitCallback(initCommitCallback(cb));
+}
+
+boost::signals2::connection LLUICtrl::setValidateCallback(const EnableCallbackParam& cb)
+{
+	return setValidateCallback(initEnableCallback(cb));
+}
+
 boost::signals2::connection LLUICtrl::setCommitCallback( const commit_signal_t::slot_type& cb ) 
 { 
 	if (!mCommitSignal) mCommitSignal = new commit_signal_t();
@@ -1045,3 +1054,9 @@ boost::signals2::connection LLUICtrl::setDoubleClickCallback( const mouse_signal
 	if (!mDoubleClickSignal) mDoubleClickSignal = new mouse_signal_t();
 	return mDoubleClickSignal->connect(cb); 
 }
+
+void LLUICtrl::addInfo(LLSD & info)
+{
+	LLView::addInfo(info);
+	info["value"] = getValue();
+}
diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h
index 09bed9b958e896c9a7bfba6bd7111bbc087f2aee..fb2196bb1640a164a23b390a27c9927a3d7f7e61 100644
--- a/indra/llui/lluictrl.h
+++ b/indra/llui/lluictrl.h
@@ -76,14 +76,14 @@ class LLUICtrl
 		Optional<enable_callback_t> function;
 	};
 		
-	struct EnableControls : public LLInitParam::Choice<EnableControls>
+	struct EnableControls : public LLInitParam::ChoiceBlock<EnableControls>
 	{
 		Alternative<std::string> enabled;
 		Alternative<std::string> disabled;
 		
 		EnableControls();
 	};	
-	struct ControlVisibility : public LLInitParam::Choice<ControlVisibility>
+	struct ControlVisibility : public LLInitParam::ChoiceBlock<ControlVisibility>
 	{
 		Alternative<std::string> visible;
 		Alternative<std::string> invisible;
@@ -223,7 +223,7 @@ class LLUICtrl
 	BOOL	focusLastItem(BOOL prefer_text_fields = FALSE);
 
 	// Non Virtuals
-	LLHandle<LLUICtrl> getUICtrlHandle() const { return mUICtrlHandle; }
+	LLHandle<LLUICtrl> getHandle() const { return getDerivedHandle<LLUICtrl>(); }
 	BOOL			getIsChrome() const;
 	
 	void			setTabStop( BOOL b );
@@ -235,6 +235,9 @@ class LLUICtrl
 	// topic then put in help_topic_out
 	bool                    findHelpTopic(std::string& help_topic_out);
 
+	boost::signals2::connection setCommitCallback(const CommitCallbackParam& cb);
+	boost::signals2::connection setValidateCallback(const EnableCallbackParam& cb);
+
 	boost::signals2::connection setCommitCallback( const commit_signal_t::slot_type& cb );
 	boost::signals2::connection setValidateCallback( const enable_signal_t::slot_type& cb );
 
@@ -301,14 +304,15 @@ class LLUICtrl
 
 	static F32 sActiveControlTransparency;
 	static F32 sInactiveControlTransparency;
-
+	
+	virtual void addInfo(LLSD & info);
+	
 private:
 
 	BOOL			mIsChrome;
 	BOOL			mRequestsFront;
 	BOOL			mTabStop;
 	BOOL			mTentative;
-	LLRootHandle<LLUICtrl> mUICtrlHandle;
 
 	ETypeTransparency mTransparencyType;
 
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index f0ba7fc7d7e4ab5bb7b6d0ad3598609d482dadc4..d612ad5005d19afebbbdbbc15d92e008396e92ad 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -172,7 +172,7 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory>
 	static T* createFromFile(const std::string &filename, LLView *parent, const widget_registry_t& registry, LLXMLNodePtr output_node = NULL)
 	{
 		T* widget = NULL;
-
+		
 		std::string skinned_filename = findSkinnedFilename(filename);
 		instance().pushFileName(filename);
 		{
@@ -201,10 +201,10 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory>
 				// not of right type, so delete it
 				if (!widget) 
 				{
+					llwarns << "Widget in " << filename << " was of type " << typeid(view).name() << " instead of expected type " << typeid(T).name() << llendl;
 					delete view;
 					view = NULL;
 				}
-			
 			}
 		}
 fail:
diff --git a/indra/llui/llurlaction.cpp b/indra/llui/llurlaction.cpp
index 42b779bd28316abbccc2dd58b82940533ccadf81..fd9b3d9a6d33f6d26b89f7482dcf1b09841cf3d6 100644
--- a/indra/llui/llurlaction.cpp
+++ b/indra/llui/llurlaction.cpp
@@ -33,28 +33,28 @@
 #include "llurlregistry.h"
 
 // global state for the callback functions
-void (*LLUrlAction::sOpenURLCallback) (const std::string& url) = NULL;
-void (*LLUrlAction::sOpenURLInternalCallback) (const std::string& url) = NULL;
-void (*LLUrlAction::sOpenURLExternalCallback) (const std::string& url) = NULL;
-bool (*LLUrlAction::sExecuteSLURLCallback) (const std::string& url) = NULL;
+LLUrlAction::url_callback_t 		LLUrlAction::sOpenURLCallback;
+LLUrlAction::url_callback_t 		LLUrlAction::sOpenURLInternalCallback;
+LLUrlAction::url_callback_t 		LLUrlAction::sOpenURLExternalCallback;
+LLUrlAction::execute_url_callback_t LLUrlAction::sExecuteSLURLCallback;
 
 
-void LLUrlAction::setOpenURLCallback(void (*cb) (const std::string& url))
+void LLUrlAction::setOpenURLCallback(url_callback_t cb)
 {
 	sOpenURLCallback = cb;
 }
 
-void LLUrlAction::setOpenURLInternalCallback(void (*cb) (const std::string& url))
+void LLUrlAction::setOpenURLInternalCallback(url_callback_t cb)
 {
 	sOpenURLInternalCallback = cb;
 }
 
-void LLUrlAction::setOpenURLExternalCallback(void (*cb) (const std::string& url))
+void LLUrlAction::setOpenURLExternalCallback(url_callback_t cb)
 {
 	sOpenURLExternalCallback = cb;
 }
 
-void LLUrlAction::setExecuteSLURLCallback(bool (*cb) (const std::string& url))
+void LLUrlAction::setExecuteSLURLCallback(execute_url_callback_t cb)
 {
 	sExecuteSLURLCallback = cb;
 }
@@ -63,7 +63,7 @@ void LLUrlAction::openURL(std::string url)
 {
 	if (sOpenURLCallback)
 	{
-		(*sOpenURLCallback)(url);
+		sOpenURLCallback(url);
 	}
 }
 
@@ -71,7 +71,7 @@ void LLUrlAction::openURLInternal(std::string url)
 {
 	if (sOpenURLInternalCallback)
 	{
-		(*sOpenURLInternalCallback)(url);
+		sOpenURLInternalCallback(url);
 	}
 }
 
@@ -79,7 +79,7 @@ void LLUrlAction::openURLExternal(std::string url)
 {
 	if (sOpenURLExternalCallback)
 	{
-		(*sOpenURLExternalCallback)(url);
+		sOpenURLExternalCallback(url);
 	}
 }
 
@@ -87,18 +87,18 @@ void LLUrlAction::executeSLURL(std::string url)
 {
 	if (sExecuteSLURLCallback)
 	{
-		(*sExecuteSLURLCallback)(url);
+		sExecuteSLURLCallback(url);
 	}
 }
 
 void LLUrlAction::clickAction(std::string url)
 {
 	// Try to handle as SLURL first, then http Url
-	if ( (sExecuteSLURLCallback) && !(*sExecuteSLURLCallback)(url) )
+	if ( (sExecuteSLURLCallback) && !sExecuteSLURLCallback(url) )
 	{
 		if (sOpenURLCallback)
 		{
-			(*sOpenURLCallback)(url);
+			sOpenURLCallback(url);
 		}
 	}
 }
diff --git a/indra/llui/llurlaction.h b/indra/llui/llurlaction.h
index 0132dbaaf0358f6f86bcebca8ba9ce788e76f5fd..c34960b82622345aeccc014335f9a01dd5df204a 100644
--- a/indra/llui/llurlaction.h
+++ b/indra/llui/llurlaction.h
@@ -29,6 +29,7 @@
 #define LL_LLURLACTION_H
 
 #include <string>
+#include <boost/function.hpp>
 
 ///
 /// The LLUrlAction class provides a number of static functions that
@@ -77,17 +78,21 @@ class LLUrlAction
 	static void showProfile(std::string url);
 
 	/// specify the callbacks to enable this class's functionality
-	static void	setOpenURLCallback(void (*cb) (const std::string& url));
-	static void	setOpenURLInternalCallback(void (*cb) (const std::string& url));
-	static void	setOpenURLExternalCallback(void (*cb) (const std::string& url));
-	static void	setExecuteSLURLCallback(bool (*cb) (const std::string& url));
+	typedef boost::function<void (const std::string&)> url_callback_t;
+	typedef boost::function<bool(const std::string& url)> execute_url_callback_t;
+
+	static void	setOpenURLCallback(url_callback_t cb);
+	static void	setOpenURLInternalCallback(url_callback_t cb);
+	static void	setOpenURLExternalCallback(url_callback_t cb);
+	static void	setExecuteSLURLCallback(execute_url_callback_t cb);
 
 private:
 	// callbacks for operations we can perform on Urls
-	static void (*sOpenURLCallback) (const std::string& url);
-	static void (*sOpenURLInternalCallback) (const std::string& url);
-	static void (*sOpenURLExternalCallback) (const std::string& url);
-	static bool (*sExecuteSLURLCallback) (const std::string& url);
+	static url_callback_t sOpenURLCallback;
+	static url_callback_t sOpenURLInternalCallback;
+	static url_callback_t sOpenURLExternalCallback;
+
+	static execute_url_callback_t sExecuteSLURLCallback;
 };
 
 #endif
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index 60452b9ae4d578817759761bdde98f7313c6a2de..e1ee0a5b14f07ccb19f84f4802f5704579dda8b6 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -31,7 +31,10 @@
 #include "llview.h"
 
 #include <cassert>
+#include <sstream>
 #include <boost/tokenizer.hpp>
+#include <boost/foreach.hpp>
+#include <boost/bind.hpp>
 
 #include "llrender.h"
 #include "llevent.h"
@@ -44,6 +47,7 @@
 #include "v3color.h"
 #include "lluictrlfactory.h"
 #include "lltooltip.h"
+#include "llsdutil.h"
 
 // for ui edit hack
 #include "llbutton.h"
@@ -66,6 +70,8 @@ S32		LLView::sLastLeftXML = S32_MIN;
 S32		LLView::sLastBottomXML = S32_MIN;
 std::vector<LLViewDrawContext*> LLViewDrawContext::sDrawContextStack;
 
+LLView::DrilldownFunc LLView::sDrilldown =
+	boost::bind(&LLView::pointInView, _1, _2, _3, HIT_TEST_USE_BOUNDING_RECT);
 
 //#if LL_DEBUG
 BOOL LLView::sIsDrawing = FALSE;
@@ -115,6 +121,7 @@ LLView::Params::Params()
 
 LLView::LLView(const LLView::Params& p)
 :	mVisible(p.visible),
+	mInDraw(false),
 	mName(p.name),
 	mParentView(NULL),
 	mReshapeFlags(FOLLOWS_NONE),
@@ -219,9 +226,11 @@ BOOL LLView::getUseBoundingRect() const
 }
 
 // virtual
-std::string LLView::getName() const
+const std::string& LLView::getName() const
 {
-	return mName.empty() ? std::string("(no name)") : mName;
+	static std::string no_name("(no name)");
+
+	return mName.empty() ? no_name : mName;
 }
 
 void LLView::sendChildToFront(LLView* child)
@@ -325,6 +334,8 @@ void LLView::removeChild(LLView* child)
 	//llassert_always(sDepth == 0); // Avoid re-ordering while drawing; it can cause subtle iterator bugs
 	if (child->mParentView == this) 
 	{
+		// if we are removing an item we are currently iterating over, that would be bad
+		llassert(child->mInDraw == false);
 		mChildList.remove( child );
 		child->mParentView = NULL;
 		if (child->isCtrl())
@@ -346,13 +357,11 @@ void LLView::removeChild(LLView* child)
 LLView::ctrl_list_t LLView::getCtrlList() const
 {
 	ctrl_list_t controls;
-	for(child_list_const_iter_t iter = mChildList.begin();
-		iter != mChildList.end();
-		iter++)
+	BOOST_FOREACH(LLView* viewp, mChildList)
 	{
-		if((*iter)->isCtrl())
+		if(viewp->isCtrl())
 		{
-			controls.push_back(static_cast<LLUICtrl*>(*iter));
+			controls.push_back(static_cast<LLUICtrl*>(viewp));
 		}
 	}
 	return controls;
@@ -428,6 +437,36 @@ BOOL LLView::isInEnabledChain() const
 	return enabled;
 }
 
+static void buildPathname(std::ostream& out, const LLView* view)
+{
+	if (! (view && view->getParent()))
+	{
+		return; // Don't include root in the path.
+	}
+
+	buildPathname(out, view->getParent());
+
+	// Build pathname into ostream on the way back from recursion.
+	out << '/' << view->getName();
+}
+
+std::string LLView::getPathname() const
+{
+	std::ostringstream out;
+	buildPathname(out, this);
+	return out.str();
+}
+
+//static
+std::string LLView::getPathname(const LLView* view)
+{
+    if (! view)
+    {
+        return "NULL";
+    }
+    return view->getPathname();
+}
+
 // virtual
 BOOL LLView::canFocusChildren() const
 {
@@ -574,9 +613,8 @@ void LLView::deleteAllChildren()
 
 void LLView::setAllChildrenEnabled(BOOL b)
 {
-	for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
+	BOOST_FOREACH(LLView* viewp, mChildList)
 	{
-		LLView* viewp = *child_it;
 		viewp->setEnabled(b);
 	}
 }
@@ -602,9 +640,8 @@ void LLView::setVisible(BOOL visible)
 // virtual
 void LLView::handleVisibilityChange ( BOOL new_visibility )
 {
-	for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
+	BOOST_FOREACH(LLView* viewp, mChildList)
 	{
-		LLView* viewp = *child_it;
 		// only views that are themselves visible will have their overall visibility affected by their ancestors
 		if (viewp->getVisible())
 		{
@@ -646,56 +683,178 @@ void LLView::onMouseLeave(S32 x, S32 y, MASK mask)
 	//llinfos << "Mouse left " << getName() << llendl;
 }
 
+bool LLView::visibleAndContains(S32 local_x, S32 local_y)
+{
+	return sDrilldown(this, local_x, local_y)
+		&& getVisible();
+}
+
+bool LLView::visibleEnabledAndContains(S32 local_x, S32 local_y)
+{
+	return visibleAndContains(local_x, local_y)
+		&& getEnabled();
+}
+
+void LLView::logMouseEvent()
+{
+	if (sDebugMouseHandling)
+	{
+		sMouseHandlerMessage = std::string("/") + mName + sMouseHandlerMessage;
+	}
+}
+
+template <typename METHOD, typename CHARTYPE>
+LLView* LLView::childrenHandleCharEvent(const std::string& desc, const METHOD& method,
+										CHARTYPE c, MASK mask)
+{
+	if ( getVisible() && getEnabled() )
+	{
+		BOOST_FOREACH(LLView* viewp, mChildList)
+		{
+			if ((viewp->*method)(c, mask, TRUE))
+			{
+				if (LLView::sDebugKeys)
+				{
+					llinfos << desc << " handled by " << viewp->getName() << llendl;
+				}
+				return viewp;
+			}
+		}
+	}
+    return NULL;
+}
+
+// XDATA might be MASK, or S32 clicks
+template <typename METHOD, typename XDATA>
+LLView* LLView::childrenHandleMouseEvent(const METHOD& method, S32 x, S32 y, XDATA extra, bool allow_mouse_block)
+{
+	BOOST_FOREACH(LLView* viewp, mChildList)
+	{
+		S32 local_x = x - viewp->getRect().mLeft;
+		S32 local_y = y - viewp->getRect().mBottom;
+
+		if (!viewp->visibleEnabledAndContains(local_x, local_y))
+		{
+			continue;
+		}
+
+		if ((viewp->*method)( local_x, local_y, extra )
+			|| (allow_mouse_block && viewp->blockMouseEvent( local_x, local_y )))
+		{
+			viewp->logMouseEvent();
+			return viewp;
+		}
+	}
+	return NULL;
+}
 
 LLView* LLView::childrenHandleToolTip(S32 x, S32 y, MASK mask)
 {
-	LLView* handled_view = NULL;
-	for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
+	BOOST_FOREACH(LLView* viewp, mChildList)
 	{
-		LLView* viewp = *child_it;
 		S32 local_x = x - viewp->getRect().mLeft;
 		S32 local_y = y - viewp->getRect().mBottom;
-		if(!viewp->pointInView(local_x, local_y) 
-			|| !viewp->getVisible())
+		// Differs from childrenHandleMouseEvent() in that we want to offer
+		// tooltips even for disabled widgets.
+		if(!viewp->visibleAndContains(local_x, local_y))
 		{
 			continue;
 		}
 
-		if (viewp->handleToolTip(local_x, local_y, mask) )
+		if (viewp->handleToolTip(local_x, local_y, mask) 
+			|| viewp->blockMouseEvent(local_x, local_y))
 		{
-			if (sDebugMouseHandling)
-			{
-				sMouseHandlerMessage = std::string("/") + viewp->mName + sMouseHandlerMessage;
-			}
+			viewp->logMouseEvent();
+			return viewp;
+		}
+	}
+	return NULL;
+}
 
-			handled_view = viewp;
-			break;
+LLView* LLView::childrenHandleDragAndDrop(S32 x, S32 y, MASK mask,
+									   BOOL drop,
+									   EDragAndDropType cargo_type,
+									   void* cargo_data,
+									   EAcceptance* accept,
+									   std::string& tooltip_msg)
+{
+	// default to not accepting drag and drop, will be overridden by handler
+	*accept = ACCEPT_NO;
+
+	BOOST_FOREACH(LLView* viewp, mChildList)
+	{
+		S32 local_x = x - viewp->getRect().mLeft;
+		S32 local_y = y - viewp->getRect().mBottom;
+		if( !viewp->visibleEnabledAndContains(local_x, local_y))
+		{
+			continue;
 		}
 
-		if (viewp->blockMouseEvent(local_x, local_y))
+		// Differs from childrenHandleMouseEvent() simply in that this virtual
+		// method call diverges pretty radically from the usual (x, y, int).
+		if (viewp->handleDragAndDrop(local_x, local_y, mask, drop,
+									 cargo_type,
+									 cargo_data,
+									 accept,
+									 tooltip_msg)
+			|| viewp->blockMouseEvent(local_x, local_y))
 		{
-			handled_view = viewp;
-			break;
+			return viewp;
 		}
 	}
-	return handled_view;
+	return NULL;
 }
 
+LLView* LLView::childrenHandleHover(S32 x, S32 y, MASK mask)
+{
+	BOOST_FOREACH(LLView* viewp, mChildList)
+	{
+		S32 local_x = x - viewp->getRect().mLeft;
+		S32 local_y = y - viewp->getRect().mBottom;
+		if(!viewp->visibleEnabledAndContains(local_x, local_y))
+		{
+			continue;
+		}
+
+		// This call differentiates this method from childrenHandleMouseEvent().
+		LLUI::sWindow->setCursor(viewp->getHoverCursor());
 
-LLView*	LLView::childFromPoint(S32 x, S32 y)
+		if (viewp->handleHover(local_x, local_y, mask)
+			|| viewp->blockMouseEvent(local_x, local_y))
+		{
+			viewp->logMouseEvent();
+			return viewp;
+		}
+	}
+	return NULL;
+}
+
+LLView*	LLView::childFromPoint(S32 x, S32 y, bool recur)
 {
-	if (!getVisible()  )
+	if (!getVisible())
 		return false;
-	for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
+
+	BOOST_FOREACH(LLView* viewp, mChildList)
 	{
-		LLView* viewp = *child_it;
 		S32 local_x = x - viewp->getRect().mLeft;
 		S32 local_y = y - viewp->getRect().mBottom;
-		if (!viewp->pointInView(local_x, local_y) 
-			|| !viewp->getVisible() )
+		if (!viewp->visibleAndContains(local_x, local_y))
 		{
 			continue;
 		}
+		// Here we've found the first (frontmost) visible child at this level
+		// containing the specified point. Is the caller asking us to drill
+		// down and return the innermost leaf child at this point, or just the
+		// top-level child?
+		if (recur)
+		{
+			LLView* leaf(viewp->childFromPoint(local_x, local_y, recur));
+			// Maybe viewp is already a leaf LLView, or maybe it has children
+			// but this particular (x, y) point falls between them. If the
+			// recursive call returns non-NULL, great, use that; else just use
+			// viewp.
+			return leaf? leaf : viewp;
+		}
 		return viewp;
 
 	}
@@ -708,15 +867,16 @@ BOOL LLView::handleToolTip(S32 x, S32 y, MASK mask)
 
 	// parents provide tooltips first, which are optionally
 	// overridden by children, in case child is mouse_opaque
-	if (!mToolTipMsg.empty())
+	std::string tooltip = getToolTip();
+	if (!tooltip.empty())
 	{
 		// allow "scrubbing" over ui by showing next tooltip immediately
 		// if previous one was still visible
 		F32 timeout = LLToolTipMgr::instance().toolTipVisible() 
-			? 0.f
+			? LLUI::sSettingGroups["config"]->getF32( "ToolTipFastDelay" )
 			: LLUI::sSettingGroups["config"]->getF32( "ToolTipDelay" );
 		LLToolTipMgr::instance().show(LLToolTip::Params()
-			.message(mToolTipMsg)
+			.message(tooltip)
 			.sticky_rect(calcScreenRect())
 			.delay_time(timeout));
 
@@ -815,45 +975,6 @@ BOOL LLView::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 	return childrenHandleDragAndDrop( x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg) != NULL;
 }
 
-LLView* LLView::childrenHandleDragAndDrop(S32 x, S32 y, MASK mask,
-									   BOOL drop,
-									   EDragAndDropType cargo_type,
-									   void* cargo_data,
-									   EAcceptance* accept,
-									   std::string& tooltip_msg)
-{
-	LLView* handled_view = NULL;
-	for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
-	{
-		LLView* viewp = *child_it;
-		S32 local_x = x - viewp->getRect().mLeft;
-		S32 local_y = y - viewp->getRect().mBottom;
-		if( !viewp->pointInView(local_x, local_y) ||
-			!viewp->getVisible() ||
-			!viewp->getEnabled())
-		{
-			continue;
-		}
-		if (viewp->handleDragAndDrop(local_x, local_y, mask, drop,
-									 cargo_type,
-									 cargo_data,
-									 accept,
-									 tooltip_msg))
-		{
-			handled_view = viewp;
-			break;
-		}
-
-		if (viewp->blockMouseEvent(x, y))
-		{
-			*accept = ACCEPT_NO;
-			handled_view = viewp;
-			break;
-		}
-	}
-	return handled_view;
-}
-
 void LLView::onMouseCaptureLost()
 {
 }
@@ -903,391 +1024,57 @@ BOOL LLView::handleMiddleMouseUp(S32 x, S32 y, MASK mask)
 	return childrenHandleMiddleMouseUp( x, y, mask ) != NULL;
 }
 
-
 LLView* LLView::childrenHandleScrollWheel(S32 x, S32 y, S32 clicks)
 {
-	LLView* handled_view = NULL;
-	if (getVisible() && getEnabled() )
-	{
-		for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
-		{
-			LLView* viewp = *child_it;
-			S32 local_x = x - viewp->getRect().mLeft;
-			S32 local_y = y - viewp->getRect().mBottom;
-			if (!viewp->pointInView(local_x, local_y) 
-				|| !viewp->getVisible()
-				|| !viewp->getEnabled())
-			{
-				continue;
-			}
-
-			if (viewp->handleScrollWheel( local_x, local_y, clicks ))
-			{
-				if (sDebugMouseHandling)
-				{
-					sMouseHandlerMessage = std::string("/") + viewp->mName + sMouseHandlerMessage;
-				}
-
-				handled_view = viewp;
-				break;
-			}
-		}
-	}
-	return handled_view;
-}
-
-LLView* LLView::childrenHandleHover(S32 x, S32 y, MASK mask)
-{
-	LLView* handled_view = NULL;
-	if (getVisible() && getEnabled() )
-	{
-		for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
-		{
-			LLView* viewp = *child_it;
-			S32 local_x = x - viewp->getRect().mLeft;
-			S32 local_y = y - viewp->getRect().mBottom;
-			if(!viewp->pointInView(local_x, local_y) 
-				|| !viewp->getVisible() 
-				|| !viewp->getEnabled())
-			{
-				continue;
-			}
-
-			if (viewp->handleHover(local_x, local_y, mask) )
-			{
-				if (sDebugMouseHandling)
-				{
-					sMouseHandlerMessage = std::string("/") + viewp->mName + sMouseHandlerMessage;
-				}
-
-				handled_view = viewp;
-				break;
-			}
-
-			if (viewp->blockMouseEvent(local_x, local_y))
-			{
-				LLUI::sWindow->setCursor(viewp->getHoverCursor());
-
-				handled_view = viewp;
-				break;
-			}
-		}
-	}
-	return handled_view;
+	return childrenHandleMouseEvent(&LLView::handleScrollWheel, x, y, clicks, false);
 }
 
 // Called during downward traversal
 LLView* LLView::childrenHandleKey(KEY key, MASK mask)
 {
-	LLView* handled_view = NULL;
-
-	if ( getVisible() && getEnabled() )
-	{
-		for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
-		{
-			LLView* viewp = *child_it;
-			if (viewp->handleKey(key, mask, TRUE))
-			{
-				if (LLView::sDebugKeys)
-				{
-					llinfos << "Key handled by " << viewp->getName() << llendl;
-				}
-				handled_view = viewp;
-				break;
-			}
-		}
-	}
-
-	return handled_view;
+	return childrenHandleCharEvent("Key", &LLView::handleKey, key, mask);
 }
 
 // Called during downward traversal
 LLView* LLView::childrenHandleUnicodeChar(llwchar uni_char)
 {
-	LLView* handled_view = NULL;
-
-	if ( getVisible() && getEnabled() )
-	{
-		for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
-		{
-			LLView* viewp = *child_it;
-			if (viewp->handleUnicodeChar(uni_char, TRUE))
-			{
-				if (LLView::sDebugKeys)
-				{
-					llinfos << "Unicode character handled by " << viewp->getName() << llendl;
-				}
-				handled_view = viewp;
-				break;
-			}
-		}
-	}
-
-	return handled_view;
+	return childrenHandleCharEvent("Unicode character", &LLView::handleUnicodeCharWithDummyMask,
+								   uni_char, MASK_NONE);
 }
 
 LLView* LLView::childrenHandleMouseDown(S32 x, S32 y, MASK mask)
 {
-	LLView* handled_view = NULL;
-
-	for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
-	{
-		LLView* viewp = *child_it;
-		S32 local_x = x - viewp->getRect().mLeft;
-		S32 local_y = y - viewp->getRect().mBottom;
-
-		if (!viewp->pointInView(local_x, local_y) 
-			|| !viewp->getVisible() 
-			|| !viewp->getEnabled())
-		{
-			continue;
-		}
-
-		if(viewp->handleMouseDown( local_x, local_y, mask ))
-		{
-			if (sDebugMouseHandling)
-			{
-				sMouseHandlerMessage = std::string("/") + viewp->mName + sMouseHandlerMessage;
-			}
-			handled_view = viewp;
-			break;
-		}
-
-		if(viewp->blockMouseEvent(local_x, local_y))
-		{
-			handled_view = viewp;
-			break;
-		}
-	}
-	return handled_view;
+	return childrenHandleMouseEvent(&LLView::handleMouseDown, x, y, mask);
 }
 
 LLView* LLView::childrenHandleRightMouseDown(S32 x, S32 y, MASK mask)
 {
-	LLView* handled_view = NULL;
-
-	if (getVisible() && getEnabled() )
-	{
-		for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
-		{
-			LLView* viewp = *child_it;
-			S32 local_x = x - viewp->getRect().mLeft;
-			S32 local_y = y - viewp->getRect().mBottom;
-
-			if (!viewp->pointInView(local_x, local_y)
-				|| !viewp->getVisible() 
-				|| !viewp->getEnabled())
-			{
-				continue;
-			}
-
-			if (viewp->handleRightMouseDown( local_x, local_y, mask ))
-			{
-				if (sDebugMouseHandling)
-				{
-					sMouseHandlerMessage = std::string("/") + viewp->mName + sMouseHandlerMessage;
-				}
-
-				handled_view = viewp;
-				break;
-			}
-
-			if (viewp->blockMouseEvent(local_x, local_y))
-			{
-				handled_view = viewp;
-				break;
-			}
-		}
-	}
-	return handled_view;
+	return childrenHandleMouseEvent(&LLView::handleRightMouseDown, x, y, mask);
 }
 
 LLView* LLView::childrenHandleMiddleMouseDown(S32 x, S32 y, MASK mask)
 {
-	LLView* handled_view = NULL;
-
-	if (getVisible() && getEnabled() )
-	{
-		for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
-		{
-			LLView* viewp = *child_it;
-			S32 local_x = x - viewp->getRect().mLeft;
-			S32 local_y = y - viewp->getRect().mBottom;
-			if (!viewp->pointInView(local_x, local_y)
-				|| !viewp->getVisible() 
-				|| !viewp->getEnabled())
-			{
-				continue;
-			}
-
-			if(viewp->handleMiddleMouseDown( local_x, local_y, mask ))
-			{
-				if (sDebugMouseHandling)
-				{
-					sMouseHandlerMessage = std::string("/") + viewp->mName + sMouseHandlerMessage;
-				}
-				handled_view = viewp;
-				break;
-			}
-
-			if (viewp->blockMouseEvent(local_x, local_y))
-			{
-				handled_view = viewp;
-				break;
-			}
-		}
-	}
-	return handled_view;
+	return childrenHandleMouseEvent(&LLView::handleMiddleMouseDown, x, y, mask);
 }
 
 LLView* LLView::childrenHandleDoubleClick(S32 x, S32 y, MASK mask)
 {
-	LLView* handled_view = NULL;
-
-	if (getVisible() && getEnabled() )
-	{
-		for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
-		{
-			LLView* viewp = *child_it;
-			S32 local_x = x - viewp->getRect().mLeft;
-			S32 local_y = y - viewp->getRect().mBottom;
-
-			if (!viewp->pointInView(local_x, local_y) 
-				|| !viewp->getVisible() 
-				|| !viewp->getEnabled())
-			{
-				continue;
-			}
-
-			if (viewp->handleDoubleClick( local_x, local_y, mask ))
-			{
-				if (sDebugMouseHandling)
-				{
-					sMouseHandlerMessage = std::string("/") + viewp->mName + sMouseHandlerMessage;
-				}
-				handled_view = viewp;
-				break;
-			}
-
-			if (viewp->blockMouseEvent(local_x, local_y))
-			{
-				handled_view = viewp;
-				break;
-			}
-		}
-	}
-	return handled_view;
+	return childrenHandleMouseEvent(&LLView::handleDoubleClick, x, y, mask);
 }
 
 LLView* LLView::childrenHandleMouseUp(S32 x, S32 y, MASK mask)
 {
-	LLView* handled_view = NULL;
-	if( getVisible() && getEnabled() )
-	{
-		for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
-		{
-			LLView* viewp = *child_it;
-			S32 local_x = x - viewp->getRect().mLeft;
-			S32 local_y = y - viewp->getRect().mBottom;
-			if (!viewp->pointInView(local_x, local_y)
-				|| !viewp->getVisible()
-				|| !viewp->getEnabled())
-			{
-				continue;
-			}
-			
-			if (viewp->handleMouseUp( local_x, local_y, mask ))
-			{
-				if (sDebugMouseHandling)
-				{
-					sMouseHandlerMessage = std::string("/") + viewp->mName + sMouseHandlerMessage;
-				}
-				handled_view = viewp;
-				break;
-			}
-
-			if (viewp->blockMouseEvent(local_x, local_y))
-			{
-				handled_view = viewp;
-				break;
-			}
-		}
-	}
-	return handled_view;
+	return childrenHandleMouseEvent(&LLView::handleMouseUp, x, y, mask);
 }
 
 LLView* LLView::childrenHandleRightMouseUp(S32 x, S32 y, MASK mask)
 {
-	LLView* handled_view = NULL;
-	if( getVisible() && getEnabled() )
-	{
-		for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
-		{
-			LLView* viewp = *child_it;
-			S32 local_x = x - viewp->getRect().mLeft;
-			S32 local_y = y - viewp->getRect().mBottom;
-			if (!viewp->pointInView(local_x, local_y) 
-				|| !viewp->getVisible() 
-				|| !viewp->getEnabled() )
-			{
-				continue;
-			}
-
-			if(viewp->handleRightMouseUp( local_x, local_y, mask ))
-			{
-				if (sDebugMouseHandling)
-				{
-					sMouseHandlerMessage = std::string("/") + viewp->mName + sMouseHandlerMessage;
-				}
-				handled_view = viewp;
-				break;
-			}
-
-			if(viewp->blockMouseEvent(local_x, local_y))
-			{
-				handled_view = viewp;
-				break;
-			}
-		}
-	}
-	return handled_view;
+	return childrenHandleMouseEvent(&LLView::handleRightMouseUp, x, y, mask);
 }
 
 LLView* LLView::childrenHandleMiddleMouseUp(S32 x, S32 y, MASK mask)
 {
-	LLView* handled_view = NULL;
-	if( getVisible() && getEnabled() )
-	{
-		for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
-		{
-			LLView* viewp = *child_it;
-			S32 local_x = x - viewp->getRect().mLeft;
-			S32 local_y = y - viewp->getRect().mBottom;
-			if (!viewp->pointInView(local_x, local_y) 
-				|| !viewp->getVisible() 
-				|| !viewp->getEnabled())
-			{
-				continue;
-			}
-				
-			if(viewp->handleMiddleMouseUp( local_x, local_y, mask ))
-			{
-				if (sDebugMouseHandling)
-				{
-					sMouseHandlerMessage = std::string("/") + viewp->mName + sMouseHandlerMessage;
-				}
-				handled_view = viewp;
-				break;
-			}
-
-			if (viewp->blockMouseEvent(local_x, local_y))
-			{
-				handled_view = viewp;
-				break;
-			}
-		}
-	}
-	return handled_view;
+	return childrenHandleMouseEvent(&LLView::handleMiddleMouseUp, x, y, mask);
 }
 
 void LLView::draw()
@@ -1306,6 +1093,11 @@ void LLView::drawChildren()
 		{
 			child_list_reverse_iter_t child = child_iter++;
 			LLView *viewp = *child;
+			
+			if (viewp == NULL)
+			{
+				continue;
+			}
 
 			if (viewp->getVisible() && viewp->getRect().isValid())
 			{
@@ -1315,7 +1107,10 @@ void LLView::drawChildren()
 					LLUI::pushMatrix();
 					{
 						LLUI::translate((F32)viewp->getRect().mLeft, (F32)viewp->getRect().mBottom, 0.f);
+						// flag the fact we are in draw here, in case overridden draw() method attempts to remove this widget
+						viewp->mInDraw = true;
 						viewp->draw();
+						viewp->mInDraw = false;
 
 						if (sDebugRects)
 						{
@@ -1433,7 +1228,7 @@ void LLView::drawChild(LLView* childp, S32 x_offset, S32 y_offset, BOOL force_dr
 		if ((childp->getVisible() && childp->getRect().isValid()) 
 			|| force_draw)
 		{
-			glMatrixMode(GL_MODELVIEW);
+			gGL.matrixMode(LLRender::MM_MODELVIEW);
 			LLUI::pushMatrix();
 			{
 				LLUI::translate((F32)childp->getRect().mLeft + x_offset, (F32)childp->getRect().mBottom + y_offset, 0.f);
@@ -1460,9 +1255,8 @@ void LLView::reshape(S32 width, S32 height, BOOL called_from_parent)
 		mRect.mTop = getRect().mBottom + height;
 
 		// move child views according to reshape flags
-		for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
+		BOOST_FOREACH(LLView* viewp, mChildList)
 		{
-			LLView* viewp = *child_it;
 			LLRect child_rect( viewp->mRect );
 
 			if (viewp->followsRight() && viewp->followsLeft())
@@ -1525,10 +1319,8 @@ LLRect LLView::calcBoundingRect()
 {
 	LLRect local_bounding_rect = LLRect::null;
 
-	child_list_const_iter_t child_it;
-	for ( child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
+	BOOST_FOREACH(LLView* childp, mChildList)
 	{
-		LLView* childp = *child_it;
 		// ignore invisible and "top" children when calculating bounding rect
 		// such as combobox popups
 		if (!childp->getVisible() || childp == gFocusMgr.getTopCtrl()) 
@@ -1693,11 +1485,9 @@ LLView* LLView::findChildView(const std::string& name, BOOL recurse) const
 	//richard: should we allow empty names?
 	//if(name.empty())
 	//	return NULL;
-	child_list_const_iter_t child_it;
 	// Look for direct children *first*
-	for ( child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
+	BOOST_FOREACH(LLView* childp, mChildList)
 	{
-		LLView* childp = *child_it;
 		llassert(childp);
 		if (childp->getName() == name)
 		{
@@ -1707,9 +1497,8 @@ LLView* LLView::findChildView(const std::string& name, BOOL recurse) const
 	if (recurse)
 	{
 		// Look inside each child as well.
-		for ( child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
+		BOOST_FOREACH(LLView* childp, mChildList)
 		{
-			LLView* childp = *child_it;
 			llassert(childp);
 			LLView* viewp = childp->findChildView(name, recurse);
 			if ( viewp )
@@ -1826,13 +1615,6 @@ LLView* LLView::findNextSibling(LLView* child)
 	return (next_it != mChildList.end()) ? *next_it : NULL;
 }
 
-void LLView::deleteViewByHandle(LLHandle<LLView> handle)
-{
-	LLView* viewp = handle.get();
-
-	delete viewp;
-}
-
 
 LLCoordGL getNeededTranslation(const LLRect& input, const LLRect& constraint, BOOL allow_partial_outside)
 {
@@ -2850,9 +2632,9 @@ S32	LLView::notifyParent(const LLSD& info)
 bool	LLView::notifyChildren(const LLSD& info)
 {
 	bool ret = false;
-	for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)
+	BOOST_FOREACH(LLView* childp, mChildList)
 	{
-		ret |= (*child_it)->notifyChildren(info);
+		ret = ret || childp->notifyChildren(info);
 	}
 	return ret;
 }
@@ -2872,3 +2654,24 @@ const LLViewDrawContext& LLViewDrawContext::getCurrentContext()
 		
 	return *sDrawContextStack.back();
 }
+
+LLSD LLView::getInfo(void)
+{
+	LLSD info;
+	addInfo(info);
+	return info;
+}
+
+void LLView::addInfo(LLSD & info)
+{
+	info["path"] = getPathname();
+	info["class"] = typeid(*this).name();
+	info["visible"] = getVisible();
+	info["visible_chain"] = isInVisibleChain();
+	info["enabled"] = getEnabled();
+	info["enabled_chain"] = isInEnabledChain();
+	info["available"] = isAvailable();
+	LLRect rect(calcScreenRect());
+	info["rect"] = LLSDMap("left", rect.mLeft)("top", rect.mTop)
+				("right", rect.mRight)("bottom", rect.mBottom);
+}
diff --git a/indra/llui/llview.h b/indra/llui/llview.h
index 594a5eec6be9b8927f45b76d66c9730ad326dae7..f1fac5f69ce90483d03744e413ecc06cff25fa4f 100644
--- a/indra/llui/llview.h
+++ b/indra/llui/llview.h
@@ -50,6 +50,8 @@
 #include "llfocusmgr.h"
 
 #include <list>
+#include <boost/function.hpp>
+#include <boost/noncopyable.hpp>
 
 class LLSD;
 
@@ -95,13 +97,14 @@ class LLViewDrawContext
 	static std::vector<LLViewDrawContext*> sDrawContextStack;
 };
 
-class LLViewWidgetRegistry : public LLChildRegistry<LLViewWidgetRegistry>
-{};
-
-class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElement
+class LLView 
+:	public LLMouseHandler,			// handles mouse events
+	public LLFocusableElement,		// handles keyboard events
+	public LLMortician,				// lazy deletion
+	public LLHandleProvider<LLView>	// passes out weak references to self
 {
 public:
-	struct Follows : public LLInitParam::Choice<Follows>
+	struct Follows : public LLInitParam::ChoiceBlock<Follows>
 	{
 		Alternative<std::string>	string;
 		Alternative<U32>			flags;
@@ -150,7 +153,8 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem
 		Params();
 	};
 
-	typedef LLViewWidgetRegistry child_registry_t;
+	// most widgets are valid children of LLView
+	typedef LLDefaultChildRegistry child_registry_t;
 
 	void initFromParams(const LLView::Params&);
 
@@ -240,7 +244,7 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem
 
 	ECursorType	getHoverCursor() { return mHoverCursor; }
 
-	const std::string& getToolTip() const			{ return mToolTipMsg.getString(); }
+	virtual const std::string getToolTip() const			{ return mToolTipMsg.getString(); }
 
 	void		sendChildToFront(LLView* child);
 	void		sendChildToBack(LLView* child);
@@ -306,8 +310,6 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem
 	void			popVisible()				{ setVisible(mLastVisible); }
 	BOOL			getLastVisible()	const	{ return mLastVisible; }
 
-	LLHandle<LLView>	getHandle()				{ mHandle.bind(this); return mHandle; }
-
 	U32			getFollows() const				{ return mReshapeFlags; }
 	BOOL		followsLeft() const				{ return mReshapeFlags & FOLLOWS_LEFT; }
 	BOOL		followsRight() const			{ return mReshapeFlags & FOLLOWS_RIGHT; }
@@ -431,18 +433,21 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem
 	/*virtual*/ BOOL	handleRightMouseUp(S32 x, S32 y, MASK mask);	
 	/*virtual*/ BOOL	handleToolTip(S32 x, S32 y, MASK mask);
 
-	/*virtual*/ std::string	getName() const;
+	/*virtual*/ const std::string& getName() const;
 	/*virtual*/ void	onMouseCaptureLost();
 	/*virtual*/ BOOL	hasMouseCapture();
 	/*virtual*/ void	screenPointToLocal(S32 screen_x, S32 screen_y, S32* local_x, S32* local_y) const;
 	/*virtual*/ void	localPointToScreen(S32 local_x, S32 local_y, S32* screen_x, S32* screen_y) const;
 
-	virtual		LLView*	childFromPoint(S32 x, S32 y);
+	virtual		LLView*	childFromPoint(S32 x, S32 y, bool recur=false);
 
 	// view-specific handlers 
 	virtual void	onMouseEnter(S32 x, S32 y, MASK mask);
 	virtual void	onMouseLeave(S32 x, S32 y, MASK mask);
 
+	std::string getPathname() const;
+	// static method handles NULL pointer too
+	static std::string getPathname(const LLView*);
 
 	template <class T> T* findChild(const std::string& name, BOOL recurse = TRUE) const
 	{
@@ -467,6 +472,20 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem
 		return dynamic_cast<T*>(widgetp);
 	}
 
+	template <class T> T* getParentByType() const
+	{
+		LLView* parent = getParent();
+		while(parent)
+		{
+			if (dynamic_cast<T*>(parent))
+			{
+				return static_cast<T*>(parent);
+			}
+			parent = parent->getParent();
+		}
+		return NULL;
+	}
+
 	//////////////////////////////////////////////
 	// statics
 	//////////////////////////////////////////////
@@ -482,7 +501,6 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem
 	// return query for iterating over focus roots in tab order
 	static const LLCtrlQuery & getFocusRootsQuery();
 
-	static void deleteViewByHandle(LLHandle<LLView> handle);
 	static LLWindow*	getWindow(void) { return LLUI::sWindow; }
 
 	// Set up params after XML load before calling new(),
@@ -511,11 +529,17 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem
 	virtual S32	notify(const LLSD& info) { return 0;};
 
 	static const LLViewDrawContext& getDrawContext();
+	
+	// Returns useful information about this ui widget.
+	LLSD getInfo(void);
 
 protected:
 	void			drawDebugRect();
 	void			drawChild(LLView* childp, S32 x_offset = 0, S32 y_offset = 0, BOOL force_draw = FALSE);
 	void			drawChildren();
+	bool			visibleAndContains(S32 local_x, S32 local_Y);
+	bool			visibleEnabledAndContains(S32 local_x, S32 local_y);
+	void			logMouseEvent();
 
 	LLView*	childrenHandleKey(KEY key, MASK mask);
 	LLView* childrenHandleUnicodeChar(llwchar uni_char);
@@ -538,9 +562,24 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem
 	LLView* childrenHandleToolTip(S32 x, S32 y, MASK mask);
 
 	ECursorType mHoverCursor;
-	
+
+	virtual void addInfo(LLSD & info);
 private:
 
+	template <typename METHOD, typename XDATA>
+	LLView* childrenHandleMouseEvent(const METHOD& method, S32 x, S32 y, XDATA extra, bool allow_mouse_block = true);
+
+	template <typename METHOD, typename CHARTYPE>
+	LLView* childrenHandleCharEvent(const std::string& desc, const METHOD& method,
+									CHARTYPE c, MASK mask);
+
+	// adapter to blur distinction between handleKey() and handleUnicodeChar()
+	// for childrenHandleCharEvent()
+	BOOL	handleUnicodeCharWithDummyMask(llwchar uni_char, MASK /* dummy */, BOOL from_parent)
+	{
+		return handleUnicodeChar(uni_char, from_parent);
+	}
+
 	LLView*		mParentView;
 	child_list_t mChildList;
 
@@ -569,11 +608,12 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem
 	BOOL		mIsFocusRoot;
 	BOOL		mUseBoundingRect; // hit test against bounding rectangle that includes all child elements
 
-	LLRootHandle<LLView> mHandle;
 	BOOL		mLastVisible;
 
 	S32			mNextInsertionOrdinal;
 
+	bool		mInDraw;
+
 	static LLWindow* sWindow;	// All root views must know about their window.
 
 	typedef std::map<std::string, LLView*> default_widget_map_t;
@@ -582,7 +622,35 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem
 
 	LLView& getDefaultWidgetContainer() const;
 
+	// This allows special mouse-event targeting logic for testing.
+	typedef boost::function<bool(const LLView*, S32 x, S32 y)> DrilldownFunc;
+	static DrilldownFunc sDrilldown;
+
 public:
+	// This is the only public accessor to alter sDrilldown. This is not
+	// an accident. The intended usage pattern is like:
+	// {
+	//     LLView::TemporaryDrilldownFunc scoped_func(myfunctor);
+	//     // ... test with myfunctor ...
+	// } // exiting block restores original LLView::sDrilldown
+	class TemporaryDrilldownFunc: public boost::noncopyable
+	{
+	public:
+		TemporaryDrilldownFunc(const DrilldownFunc& func):
+			mOldDrilldown(sDrilldown)
+		{
+			sDrilldown = func;
+		}
+
+		~TemporaryDrilldownFunc()
+		{
+			sDrilldown = mOldDrilldown;
+		}
+
+	private:
+		DrilldownFunc mOldDrilldown;
+	};
+
 	// Depth in view hierarchy during rendering
 	static S32	sDepth;
 
diff --git a/indra/llui/llviewinject.cpp b/indra/llui/llviewinject.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..46c5839f8ee659062c45a716d08162990287d407
--- /dev/null
+++ b/indra/llui/llviewinject.cpp
@@ -0,0 +1,49 @@
+/**
+ * @file   llviewinject.cpp
+ * @author Nat Goodspeed
+ * @date   2011-08-16
+ * @brief  Implementation for llviewinject.
+ * 
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Copyright (c) 2011, Linden Research, Inc.
+ * $/LicenseInfo$
+ */
+
+// Precompiled header
+#include "linden_common.h"
+// associated header
+#include "llviewinject.h"
+// STL headers
+// std headers
+// external library headers
+// other Linden headers
+
+llview::TargetEvent::TargetEvent(LLView* view)
+{
+    // Walk up the view tree from target LLView to the root (NULL). If
+    // passed NULL, iterate 0 times.
+    for (; view; view = view->getParent())
+    {
+        // At each level, operator() is going to ask: for a particular parent
+        // LLView*, which of its children should I select? So for this view's
+        // parent, select this view.
+        mChildMap[view->getParent()] = view;
+    }
+}
+
+bool llview::TargetEvent::operator()(const LLView* view, S32 /*x*/, S32 /*y*/) const
+{
+    // We are being called to decide whether to direct an incoming mouse event
+    // to this child view. (Normal LLView processing is to check whether the
+    // incoming (x, y) is within the view.) Look up the parent to decide
+    // whether, for that parent, this is the previously-selected child.
+    ChildMap::const_iterator found(mChildMap.find(view->getParent()));
+    // If we're looking at a child whose parent isn't even in the map, never
+    // mind.
+    if (found == mChildMap.end())
+    {
+        return false;
+    }
+    // So, is this the predestined child for this parent?
+    return (view == found->second);
+}
diff --git a/indra/llui/llviewinject.h b/indra/llui/llviewinject.h
new file mode 100644
index 0000000000000000000000000000000000000000..0de3d155c41ba819b491ac4d93e1ed894e587c04
--- /dev/null
+++ b/indra/llui/llviewinject.h
@@ -0,0 +1,56 @@
+/**
+ * @file   llviewinject.h
+ * @author Nat Goodspeed
+ * @date   2011-08-16
+ * @brief  Supplemental LLView functionality used for simulating UI events.
+ * 
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Copyright (c) 2011, Linden Research, Inc.
+ * $/LicenseInfo$
+ */
+
+#if ! defined(LL_LLVIEWINJECT_H)
+#define LL_LLVIEWINJECT_H
+
+#include "llview.h"
+#include <map>
+
+namespace llview
+{
+
+    /**
+     * TargetEvent is a callable with state, specifically intended for use as
+     * an LLView::TemporaryDrilldownFunc. Instantiate it with the desired
+     * target LLView*; pass it to a TemporaryDrilldownFunc instance;
+     * TargetEvent::operator() will then attempt to direct subsequent mouse
+     * events to the desired target LLView*. (This is an "attempt" because
+     * LLView will still balk unless the target LLView and every parent are
+     * visible and enabled.)
+     */
+    class TargetEvent
+    {
+    public:
+        /**
+         * Construct TargetEvent with the desired target LLView*. (See
+         * LLUI::resolvePath() to obtain an LLView* given a string pathname.)
+         * This sets up for operator().
+         */
+        TargetEvent(LLView* view);
+
+        /**
+         * This signature must match LLView::DrilldownFunc. When you install
+         * this TargetEvent instance using LLView::TemporaryDrilldownFunc,
+         * LLView will call this method to decide whether to propagate an
+         * incoming mouse event to the passed child LLView*.
+         */
+        bool operator()(const LLView*, S32 x, S32 y) const;
+
+    private:
+        // For a given parent LLView, identify which child to select.
+        typedef std::map<LLView*, LLView*> ChildMap;
+        ChildMap mChildMap;
+    };
+
+} // llview namespace
+
+#endif /* ! defined(LL_LLVIEWINJECT_H) */
diff --git a/indra/llui/llwindowshade.cpp b/indra/llui/llwindowshade.cpp
index cf76202215526725897aefd2b2ac86eb98e34286..f5c463c96148dce6f08bb89464e502eac337d361 100644
--- a/indra/llui/llwindowshade.cpp
+++ b/indra/llui/llwindowshade.cpp
@@ -37,10 +37,13 @@
 const S32 MIN_NOTIFICATION_AREA_HEIGHT = 30;
 const S32 MAX_NOTIFICATION_AREA_HEIGHT = 100;
 
+static LLDefaultChildRegistry::Register<LLWindowShade> r("window_shade");
+
 LLWindowShade::Params::Params()
 :	bg_image("bg_image"),
 	modal("modal", false),
 	text_color("text_color"),
+	shade_color("shade_color"),
 	can_close("can_close", true)
 {
 	changeDefault(mouse_opaque, false);
@@ -48,7 +51,6 @@ LLWindowShade::Params::Params()
 
 LLWindowShade::LLWindowShade(const LLWindowShade::Params& params)
 :	LLUICtrl(params),
-	mNotification(params.notification),
 	mModal(params.modal),
 	mFormHeight(0),
 	mTextColor(params.text_color)
@@ -72,7 +74,7 @@ void LLWindowShade::initFromParams(const LLWindowShade::Params& params)
 	addChild(stackp);
 
 	LLLayoutPanel::Params panel_p;
-	panel_p.rect = LLRect(0, 30, 800, 0);
+	panel_p.rect = LLRect(0, MIN_NOTIFICATION_AREA_HEIGHT, 800, 0);
 	panel_p.name = "notification_area";
 	panel_p.visible = false;
 	panel_p.user_resize = false;
@@ -89,7 +91,7 @@ void LLWindowShade::initFromParams(const LLWindowShade::Params& params)
 	panel_p.name = "background_area";
 	panel_p.mouse_opaque = false;
 	panel_p.background_visible = false;
-	panel_p.bg_alpha_color = LLColor4(0.f, 0.f, 0.f, 0.2f);
+	panel_p.bg_alpha_color = params.shade_color;
 	LLLayoutPanel* dummy_panel = LLUICtrlFactory::create<LLLayoutPanel>(panel_p);
 	stackp->addChild(dummy_panel);
 
@@ -107,11 +109,11 @@ void LLWindowShade::initFromParams(const LLWindowShade::Params& params)
 
 	LLIconCtrl::Params icon_p;
 	icon_p.name = "notification_icon";
-	icon_p.rect = LLRect(5, 23, 21, 8);
+	icon_p.rect = LLRect(5, 25, 21, 10);
 	panel->addChild(LLUICtrlFactory::create<LLIconCtrl>(icon_p));
 
 	LLTextBox::Params text_p;
-	text_p.rect = LLRect(31, 20, panel->getRect().getWidth() - 5, 0);
+	text_p.rect = LLRect(31, 23, panel->getRect().getWidth() - 5, 3);
 	text_p.follows.flags = FOLLOWS_ALL;
 	text_p.text_color = mTextColor;
 	text_p.font = LLFontGL::getFontSansSerifSmall();
@@ -125,41 +127,132 @@ void LLWindowShade::initFromParams(const LLWindowShade::Params& params)
 	panel_p.auto_resize = false;
 	panel_p.user_resize = false;
 	panel_p.name="form_elements";
-	panel_p.rect = LLRect(0, 30, 130, 0);
+	panel_p.rect = LLRect(0, MIN_NOTIFICATION_AREA_HEIGHT, 130, 0);
 	LLLayoutPanel* form_elements_panel = LLUICtrlFactory::create<LLLayoutPanel>(panel_p);
 	stackp->addChild(form_elements_panel);
 
-	if (params.can_close)
+	panel_p = LLUICtrlFactory::getDefaultParams<LLLayoutPanel>();
+	panel_p.auto_resize = false;
+	panel_p.user_resize = false;
+	panel_p.rect = LLRect(0, MIN_NOTIFICATION_AREA_HEIGHT, 25, 0);
+	panel_p.name = "close_panel";
+	LLLayoutPanel* close_panel = LLUICtrlFactory::create<LLLayoutPanel>(panel_p);
+	stackp->addChild(close_panel);
+
+	LLButton::Params button_p;
+	button_p.name = "close_notification";
+	button_p.rect = LLRect(5, 23, 21, 7);
+	button_p.image_color.control="DkGray_66";
+	button_p.image_unselected.name="Icon_Close_Foreground";
+	button_p.image_selected.name="Icon_Close_Press";
+	button_p.click_callback.function = boost::bind(&LLWindowShade::onCloseNotification, this);
+
+	close_panel->addChild(LLUICtrlFactory::create<LLButton>(button_p));
+	
+	close_panel->setVisible(params.can_close);
+}
+
+void LLWindowShade::draw()
+{
+	LLRect message_rect = getChild<LLTextBox>("notification_text")->getTextBoundingRect();
+
+	LLLayoutPanel* notification_area = getChild<LLLayoutPanel>("notification_area");
+
+	notification_area->reshape(notification_area->getRect().getWidth(), 
+		llclamp(message_rect.getHeight() + 15, 
+				llmax(mFormHeight, MIN_NOTIFICATION_AREA_HEIGHT),
+				MAX_NOTIFICATION_AREA_HEIGHT));
+
+	LLUICtrl::draw();
+
+	while(!mNotifications.empty() && !mNotifications.back()->isActive())
+	{
+		mNotifications.pop_back();
+		// go ahead and hide 
+		hide();
+	}
+
+	if (mNotifications.empty())
+	{
+		hide();
+	}
+	else if (notification_area->getVisibleAmount() < 0.01f)
+	{
+		displayLatestNotification();
+	}
+
+	if (!notification_area->getVisible() && (notification_area->getVisibleAmount() < 0.001f))
 	{
-		panel_p = LLUICtrlFactory::getDefaultParams<LLLayoutPanel>();
-		panel_p.auto_resize = false;
-		panel_p.user_resize = false;
-		panel_p.rect = LLRect(0, 30, 25, 0);
-		LLLayoutPanel* close_panel = LLUICtrlFactory::create<LLLayoutPanel>(panel_p);
-		stackp->addChild(close_panel);
-
-		LLButton::Params button_p;
-		button_p.name = "close_notification";
-		button_p.rect = LLRect(5, 23, 21, 7);
-		button_p.image_color.control="DkGray_66";
-		button_p.image_unselected.name="Icon_Close_Foreground";
-		button_p.image_selected.name="Icon_Close_Press";
-		button_p.click_callback.function = boost::bind(&LLWindowShade::onCloseNotification, this);
-
-		close_panel->addChild(LLUICtrlFactory::create<LLButton>(button_p));
+		getChildRef<LLLayoutPanel>("background_area").setBackgroundVisible(false);
+		setMouseOpaque(false);
 	}
+}
+
+void LLWindowShade::hide()
+{
+	getChildRef<LLLayoutPanel>("notification_area").setVisible(false);
+}
+
+void LLWindowShade::onCloseNotification()
+{
+	if (!mNotifications.empty())
+		LLNotifications::instance().cancel(mNotifications.back());
+}
+
+void LLWindowShade::onClickIgnore(LLUICtrl* ctrl)
+{
+	LLNotificationPtr notify = getCurrentNotification();
+	if (!notify) return;
+
+	bool check = ctrl->getValue().asBoolean();
+	if (notify->getForm()->getIgnoreType() == LLNotificationForm::IGNORE_SHOW_AGAIN)
+	{
+		// question was "show again" so invert value to get "ignore"
+		check = !check;
+	}
+	notify->setIgnored(check);
+}
+
+void LLWindowShade::onClickNotificationButton(const std::string& name)
+{
+	LLNotificationPtr notify = getCurrentNotification();
+	if (!notify) return;
 
-	LLSD payload = mNotification->getPayload();
+	mNotificationResponse[name] = true;
+
+	notify->respond(mNotificationResponse);
+}
 
-	LLNotificationFormPtr formp = mNotification->getForm();
+void LLWindowShade::onEnterNotificationText(LLUICtrl* ctrl, const std::string& name)
+{
+	mNotificationResponse[name] = ctrl->getValue().asString();
+}
+
+void LLWindowShade::show(LLNotificationPtr notification)
+{
+	mNotifications.push_back(notification);
+
+	displayLatestNotification();
+}
+
+void LLWindowShade::displayLatestNotification()
+{
+	if (mNotifications.empty()) return;
+
+	LLNotificationPtr notification = mNotifications.back();
+
+	LLSD payload = notification->getPayload();
+
+	LLNotificationFormPtr formp = notification->getForm();
 	LLLayoutPanel& notification_area = getChildRef<LLLayoutPanel>("notification_area");
-	notification_area.getChild<LLUICtrl>("notification_icon")->setValue(mNotification->getIcon());
-	notification_area.getChild<LLUICtrl>("notification_text")->setValue(mNotification->getMessage());
-	notification_area.getChild<LLUICtrl>("notification_text")->setToolTip(mNotification->getMessage());
+	notification_area.getChild<LLUICtrl>("notification_icon")->setValue(notification->getIcon());
+	notification_area.getChild<LLUICtrl>("notification_text")->setValue(notification->getMessage());
+	notification_area.getChild<LLUICtrl>("notification_text")->setToolTip(notification->getMessage());
 
 	LLNotificationForm::EIgnoreType ignore_type = formp->getIgnoreType(); 
 	LLLayoutPanel& form_elements = notification_area.getChildRef<LLLayoutPanel>("form_elements");
 	form_elements.deleteAllChildren();
+	form_elements.reshape(form_elements.getRect().getWidth(), MIN_NOTIFICATION_AREA_HEIGHT);
 
 	const S32 FORM_PADDING_HORIZONTAL = 10;
 	const S32 FORM_PADDING_VERTICAL = 3;
@@ -229,7 +322,7 @@ void LLWindowShade::initFromParams(const LLWindowShade::Params& params)
 			label_p.v_pad = 5;
 			LLTextBox* textbox = LLUICtrlFactory::create<LLTextBox>(label_p);
 			textbox->reshapeToFitText();
-			textbox->reshape(textbox->getRect().getWidth(), form_elements.getRect().getHeight() - 2 * FORM_PADDING_VERTICAL); 
+			textbox->reshape(textbox->getRect().getWidth(), MIN_NOTIFICATION_AREA_HEIGHT - 2 * FORM_PADDING_VERTICAL); 
 			form_elements.addChild(textbox);
 			cur_x = textbox->getRect().mRight + FORM_PADDING_HORIZONTAL;
 
@@ -249,7 +342,7 @@ void LLWindowShade::initFromParams(const LLWindowShade::Params& params)
 		}
 	}
 
-	mFormHeight = form_elements.getRect().getHeight() - (cur_y - FORM_PADDING_VERTICAL) + WIDGET_HEIGHT;
+	mFormHeight = form_elements.getRect().getHeight() - (cur_y - WIDGET_HEIGHT - FORM_PADDING_VERTICAL);
 	form_elements.reshape(form_width, mFormHeight);
 	form_elements.setMinDim(form_width);
 
@@ -261,68 +354,39 @@ void LLWindowShade::initFromParams(const LLWindowShade::Params& params)
 	{
 		(*it)->translate(0, delta_y);
 	}
-}
 
-void LLWindowShade::show()
-{
 	getChildRef<LLLayoutPanel>("notification_area").setVisible(true);
 	getChildRef<LLLayoutPanel>("background_area").setBackgroundVisible(mModal);
 
 	setMouseOpaque(mModal);
 }
 
-void LLWindowShade::draw()
+void LLWindowShade::setBackgroundImage(LLUIImage* image)
 {
-	LLRect message_rect = getChild<LLTextBox>("notification_text")->getTextBoundingRect();
-
-	LLLayoutPanel* notification_area = getChild<LLLayoutPanel>("notification_area");
-
-	notification_area->reshape(notification_area->getRect().getWidth(), 
-		llclamp(message_rect.getHeight() + 10, 
-				llmin(mFormHeight, MAX_NOTIFICATION_AREA_HEIGHT),
-				MAX_NOTIFICATION_AREA_HEIGHT));
-
-	LLUICtrl::draw();
-	if (mNotification && !mNotification->isActive())
-	{
-		hide();
-	}
+	getChild<LLLayoutPanel>("notification_area")->setTransparentImage(image);
 }
 
-void LLWindowShade::hide()
+void LLWindowShade::setTextColor(LLColor4 color)
 {
-	getChildRef<LLLayoutPanel>("notification_area").setVisible(false);
-	getChildRef<LLLayoutPanel>("background_area").setBackgroundVisible(false);
-
-	setMouseOpaque(false);
+	getChild<LLTextBox>("notification_text")->setColor(color);
 }
 
-void LLWindowShade::onCloseNotification()
+bool LLWindowShade::isShown() const
 {
-	LLNotifications::instance().cancel(mNotification);
+	return getChildRef<LLLayoutPanel>("notification_area").getVisible();
 }
 
-void LLWindowShade::onClickIgnore(LLUICtrl* ctrl)
+void LLWindowShade::setCanClose(bool can_close)
 {
-	bool check = ctrl->getValue().asBoolean();
-	if (mNotification && mNotification->getForm()->getIgnoreType() == LLNotificationForm::IGNORE_SHOW_AGAIN)
-	{
-		// question was "show again" so invert value to get "ignore"
-		check = !check;
-	}
-	mNotification->setIgnored(check);
+	getChildView("close_panel")->setVisible(can_close);
 }
 
-void LLWindowShade::onClickNotificationButton(const std::string& name)
+LLNotificationPtr LLWindowShade::getCurrentNotification()
 {
-	if (!mNotification) return;
-
-	mNotificationResponse[name] = true;
-
-	mNotification->respond(mNotificationResponse);
+	if (mNotifications.empty())
+	{
+		return LLNotificationPtr();
+	}
+	return mNotifications.back();
 }
 
-void LLWindowShade::onEnterNotificationText(LLUICtrl* ctrl, const std::string& name)
-{
-	mNotificationResponse[name] = ctrl->getValue().asString();
-}
diff --git a/indra/llui/llwindowshade.h b/indra/llui/llwindowshade.h
index 09ffc2cd54ba26fe487480c8244d726fd0ff0974..6d753d1161047ae5f3784e6e8eddf19641326447 100644
--- a/indra/llui/llwindowshade.h
+++ b/indra/llui/llwindowshade.h
@@ -36,20 +36,28 @@ class LLWindowShade : public LLUICtrl
 public:
 	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
 	{
-		Mandatory<LLNotificationPtr>	notification;
 		Optional<LLUIImage*>			bg_image;
-		Optional<LLUIColor>				text_color;
+		Optional<LLUIColor>				text_color,
+										shade_color;
 		Optional<bool>					modal,
 										can_close;
 
 		Params();
 	};
 
-	void show();
+	void show(LLNotificationPtr);
 	/*virtual*/ void draw();
 	void hide();
+	
+	bool isShown() const;
+
+	void setBackgroundImage(LLUIImage* image);
+	void setTextColor(LLColor4 color);
+	void setCanClose(bool can_close);
 
 private:
+	void displayLatestNotification();
+	LLNotificationPtr getCurrentNotification();
 	friend class LLUICtrlFactory;
 
 	LLWindowShade(const Params& p);
@@ -60,7 +68,7 @@ class LLWindowShade : public LLUICtrl
 	void onEnterNotificationText(LLUICtrl* ctrl, const std::string& name);
 	void onClickIgnore(LLUICtrl* ctrl);
 
-	LLNotificationPtr	mNotification;
+	std::vector<LLNotificationPtr>	mNotifications;
 	LLSD				mNotificationResponse;
 	bool				mModal;
 	S32					mFormHeight;
diff --git a/indra/llui/tests/llurlentry_stub.cpp b/indra/llui/tests/llurlentry_stub.cpp
index d522123260152e37e903795d64dd7b9244db5e34..c75df868918d1f67350fdd0d5c5ac711be0a0709 100644
--- a/indra/llui/tests/llurlentry_stub.cpp
+++ b/indra/llui/tests/llurlentry_stub.cpp
@@ -105,8 +105,6 @@ LLStyle::Params::Params()
 
 namespace LLInitParam
 {
-	BaseBlock::BaseBlock() {}
-	BaseBlock::~BaseBlock() {}
 	Param::Param(BaseBlock* enclosing_block)
 	:	mIsProvided(false)
 	{
@@ -114,7 +112,6 @@ namespace LLInitParam
 		const U8* block_addr = reinterpret_cast<const U8*>(enclosing_block);
 		mEnclosingBlockOffset = (U16)(my_addr - block_addr);
 	}
-	void BaseBlock::paramChanged(const Param& last_param, bool user_provided) {}
 
 	void BaseBlock::addParam(BlockDescriptor& block_data, const ParamDescriptorPtr in_param, const char* char_name){}
 	void BaseBlock::addSynonym(Param& param, const std::string& synonym) {}
@@ -124,8 +121,8 @@ namespace LLInitParam
 	{
 		descriptor.mCurrentBlockPtr = this;
 	}
-	bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, S32 generation){ return true; }
-	void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t name_stack, const LLInitParam::BaseBlock* diff_block) const {}
+	bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, bool new_name){ return true; }
+	void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t& name_stack, const LLInitParam::BaseBlock* diff_block) const {}
 	bool BaseBlock::inspectBlock(Parser& parser, Parser::name_stack_t name_stack, S32 min_value, S32 max_value) const { return true; }
 	bool BaseBlock::mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) { return true; }
 	bool BaseBlock::validateBlock(bool emit_errors) const { return true; }
diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp
index 2f814f4200cad8bcc9b5a53b017656579a77668f..c1fb050206aadf943a43cedcc7b5f9c46a7b6985 100644
--- a/indra/llui/tests/llurlentry_test.cpp
+++ b/indra/llui/tests/llurlentry_test.cpp
@@ -72,7 +72,6 @@ S32 LLUIImage::getHeight() const
 
 namespace LLInitParam
 {
-	S32 Parser::sNextParseGeneration = 0;
 	BlockDescriptor::BlockDescriptor() {}
 	ParamDescriptor::ParamDescriptor(param_handle_t p, 
 						merge_func_t merge_func, 
diff --git a/indra/llui/tests/llurlmatch_test.cpp b/indra/llui/tests/llurlmatch_test.cpp
index fb6a2eabf10e5b11f13d0900226adfc23894ed0a..7183413463fabf21b587d1fc2446a0b7de6dbd61 100644
--- a/indra/llui/tests/llurlmatch_test.cpp
+++ b/indra/llui/tests/llurlmatch_test.cpp
@@ -63,11 +63,6 @@ S32 LLUIImage::getHeight() const
 
 namespace LLInitParam
 {
-	BaseBlock::BaseBlock() {}
-	BaseBlock::~BaseBlock() {}
-
-	S32 Parser::sNextParseGeneration = 0;
-
 	BlockDescriptor::BlockDescriptor() {}
 	ParamDescriptor::ParamDescriptor(param_handle_t p, 
 						merge_func_t merge_func, 
@@ -79,8 +74,6 @@ namespace LLInitParam
 						S32 max_count){}
 	ParamDescriptor::~ParamDescriptor() {}
 
-	void BaseBlock::paramChanged(const Param& last_param, bool user_provided) {}
-
 	void BaseBlock::addParam(BlockDescriptor& block_data, const ParamDescriptorPtr in_param, const char* char_name){}
 	param_handle_t BaseBlock::getHandleFromParam(const Param* param) const {return 0;}
 	void BaseBlock::addSynonym(Param& param, const std::string& synonym) {}
@@ -98,8 +91,8 @@ namespace LLInitParam
 		mEnclosingBlockOffset = 0x7FFFffff & ((U32)(my_addr - block_addr));
 	}
 
-	bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, S32 generation){ return true; }
-	void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t name_stack, const LLInitParam::BaseBlock* diff_block) const {}
+	bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, bool new_name){ return true; }
+	void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t& name_stack, const LLInitParam::BaseBlock* diff_block) const {}
 	bool BaseBlock::inspectBlock(Parser& parser, Parser::name_stack_t name_stack, S32 min_count, S32 max_count) const { return true; }
 	bool BaseBlock::mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) { return true; }
 	bool BaseBlock::validateBlock(bool emit_errors) const { return true; }
diff --git a/indra/llvfs/lllfsthread.cpp b/indra/llvfs/lllfsthread.cpp
index bf49b9668e6cfd212ddefbf4b7d05f5d299d597a..3d3ed9f6d4d32f34999a3b36bc659b19461e6a8b 100644
--- a/indra/llvfs/lllfsthread.cpp
+++ b/indra/llvfs/lllfsthread.cpp
@@ -67,6 +67,10 @@ LLLFSThread::LLLFSThread(bool threaded) :
 	LLQueuedThread("LFS", threaded),
 	mPriorityCounter(PRIORITY_LOWBITS)
 {
+	if(!mLocalAPRFilePoolp)
+	{
+		mLocalAPRFilePoolp = new LLVolatileAPRPool() ;
+	}
 }
 
 LLLFSThread::~LLLFSThread()
@@ -178,7 +182,8 @@ bool LLLFSThread::Request::processRequest()
 	if (mOperation ==  FILE_READ)
 	{
 		llassert(mOffset >= 0);
-		LLAPRFile infile(mFileName, LL_APR_RB);
+		LLAPRFile infile ; // auto-closes
+		infile.open(mFileName, LL_APR_RB, mThread->getLocalAPRFilePool());
 		if (!infile.getFileHandle())
 		{
 			llwarns << "LLLFS: Unable to read file: " << mFileName << llendl;
@@ -200,7 +205,8 @@ bool LLLFSThread::Request::processRequest()
 		apr_int32_t flags = APR_CREATE|APR_WRITE|APR_BINARY;
 		if (mOffset < 0)
 			flags |= APR_APPEND;
-		LLAPRFile outfile(mFileName, flags);
+		LLAPRFile outfile ; // auto-closes
+		outfile.open(mFileName, flags, mThread->getLocalAPRFilePool());
 		if (!outfile.getFileHandle())
 		{
 			llwarns << "LLLFS: Unable to write file: " << mFileName << llendl;
diff --git a/indra/llvfs/llvfs.cpp b/indra/llvfs/llvfs.cpp
index ade19f8103e06d4be7399b57d1a82e402bdb21ce..82c926620a07960695337df7148752bdb9aa5f0a 100644
--- a/indra/llvfs/llvfs.cpp
+++ b/indra/llvfs/llvfs.cpp
@@ -234,7 +234,7 @@ LLVFS::LLVFS(const std::string& index_filename, const std::string& data_filename
 	mDataFP(NULL),
 	mIndexFP(NULL)
 {
-	mDataMutex = new LLMutex;
+	mDataMutex = new LLMutex(0);
 
 	S32 i;
 	for (i = 0; i < VFSLOCK_COUNT; i++)
@@ -2098,7 +2098,8 @@ void LLVFS::dumpFiles()
 			std::string filename = id.asString() + extension;
 			llinfos << " Writing " << filename << llendl;
 			
-			LLAPRFile outfile(filename, LL_APR_WB);
+			LLAPRFile outfile;
+			outfile.open(filename, LL_APR_WB);
 			outfile.write(&buffer[0], size);
 			outfile.close();
 
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index 3d89867bc1d626dce8a183047a687b295e7cbd07..341bddfffdb81bc83a134ea3d7323a47feb7e6c3 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -38,7 +38,6 @@ set(llwindow_SOURCE_FILES
     llkeyboardheadless.cpp
     llwindowheadless.cpp
     llwindowcallbacks.cpp
-    llwindowlistener.cpp
     )
 
 set(llwindow_HEADER_FILES
@@ -48,7 +47,6 @@ set(llwindow_HEADER_FILES
     llkeyboardheadless.h
     llwindowheadless.h
     llwindowcallbacks.h
-    llwindowlistener.h
     )
 
 set(viewer_SOURCE_FILES
diff --git a/indra/llwindow/llmousehandler.h b/indra/llwindow/llmousehandler.h
index bbbc3d4406b9ac4bb849db4f4e7656dcaef9c38b..d825a3424c0bb2524b718ad87a75fa3fc2bccf16 100644
--- a/indra/llwindow/llmousehandler.h
+++ b/indra/llwindow/llmousehandler.h
@@ -65,7 +65,7 @@ class LLMouseHandler
 	virtual BOOL	handleHover(S32 x, S32 y, MASK mask) = 0;
 	virtual BOOL	handleScrollWheel(S32 x, S32 y, S32 clicks) = 0;
 	virtual BOOL	handleToolTip(S32 x, S32 y, MASK mask) = 0;
-	virtual std::string getName() const = 0;
+	virtual const std::string& getName() const = 0;
 
 	virtual void	onMouseCaptureLost() = 0;
 
diff --git a/indra/llwindow/llwindow.cpp b/indra/llwindow/llwindow.cpp
index 71a5df910dabf4e1f7c2b5db32d23741f5f5e78b..2e9e31bfea1cdddd7f7d1de26bce96f888ff52ac 100644
--- a/indra/llwindow/llwindow.cpp
+++ b/indra/llwindow/llwindow.cpp
@@ -41,8 +41,6 @@
 #include "llkeyboard.h"
 #include "linked_lists.h"
 #include "llwindowcallbacks.h"
-#include "llwindowlistener.h"
-#include <boost/lambda/core.hpp>
 
 
 //
@@ -110,25 +108,21 @@ LLWindow::LLWindow(LLWindowCallbacks* callbacks, BOOL fullscreen, U32 flags)
 	  mSupportedResolutions(NULL),
 	  mNumSupportedResolutions(0),
 	  mCurrentCursor(UI_CURSOR_ARROW),
+	  mNextCursor(UI_CURSOR_ARROW),
 	  mCursorHidden(FALSE),
 	  mBusyCount(0),
 	  mIsMouseClipping(FALSE),
+	  mMinWindowWidth(0),
+	  mMinWindowHeight(0),
 	  mSwapMethod(SWAP_METHOD_UNDEFINED),
 	  mHideCursorPermanent(FALSE),
 	  mFlags(flags),
 	  mHighSurrogate(0)
 {
-	// gKeyboard is still NULL, so it doesn't do LLWindowListener any good to
-	// pass its value right now. Instead, pass it a nullary function that
-	// will, when we later need it, return the value of gKeyboard.
-	// boost::lambda::var() constructs such a functor on the fly.
-	mListener = new LLWindowListener(callbacks, boost::lambda::var(gKeyboard));
 }
 
 LLWindow::~LLWindow()
 {
-	delete mListener;
-	mListener = NULL;
 }
 
 //virtual
@@ -188,6 +182,36 @@ void *LLWindow::getMediaWindow()
 	return getPlatformWindow();
 }
 
+BOOL LLWindow::setSize(LLCoordScreen size)
+{
+	if (!getMaximized())
+	{
+		size.mX = llmax(size.mX, mMinWindowWidth);
+		size.mY = llmax(size.mY, mMinWindowHeight);
+	}
+	return setSizeImpl(size);
+}
+
+
+// virtual
+void LLWindow::setMinSize(U32 min_width, U32 min_height, bool enforce_immediately)
+{
+	mMinWindowWidth = min_width;
+	mMinWindowHeight = min_height;
+
+	if (enforce_immediately)
+	{
+		LLCoordScreen cur_size;
+		if (!getMaximized() && getSize(&cur_size))
+		{
+			if (cur_size.mX < mMinWindowWidth || cur_size.mY < mMinWindowHeight)
+			{
+				setSizeImpl(LLCoordScreen(llmin(cur_size.mX, mMinWindowWidth), llmin(cur_size.mY, mMinWindowHeight)));
+			}
+		}
+	}
+}
+
 //virtual
 void LLWindow::processMiscNativeEvents()
 {
diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h
index 6bdc01ae88fcd0fa45af3fd804635b7965c54527..cab2d0a8fb74cf0205712f15b433531d6afe94e7 100644
--- a/indra/llwindow/llwindow.h
+++ b/indra/llwindow/llwindow.h
@@ -36,7 +36,6 @@
 class LLSplashScreen;
 class LLPreeditor;
 class LLWindowCallbacks;
-class LLWindowListener;
 
 // Refer to llwindow_test in test/common/llwindow for usage example
 
@@ -73,7 +72,8 @@ class LLWindow
 	virtual BOOL getSize(LLCoordScreen *size) = 0;
 	virtual BOOL getSize(LLCoordWindow *size) = 0;
 	virtual BOOL setPosition(LLCoordScreen position) = 0;
-	virtual BOOL setSize(LLCoordScreen size) = 0;
+	BOOL setSize(LLCoordScreen size);
+	virtual void setMinSize(U32 min_width, U32 min_height, bool enforce_immediately = true);
 	virtual BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp = NULL) = 0;
 	virtual BOOL setCursorPosition(LLCoordWindow position) = 0;
 	virtual BOOL getCursorPosition(LLCoordWindow *position) = 0;
@@ -92,8 +92,9 @@ class LLWindow
 	virtual S32 getBusyCount() const;
 
 	// Sets cursor, may set to arrow+hourglass
-	virtual void setCursor(ECursorType cursor) = 0;
+	virtual void setCursor(ECursorType cursor) { mNextCursor = cursor; };
 	virtual ECursorType getCursor() const;
+	virtual void updateCursor() = 0;
 
 	virtual void captureMouse() = 0;
 	virtual void releaseMouse() = 0;
@@ -170,6 +171,8 @@ class LLWindow
 	// Defaults to true
 	virtual BOOL canDelete();
 
+	virtual BOOL setSizeImpl(LLCoordScreen size) = 0;
+
 protected:
 	LLWindowCallbacks*	mCallbacks;
 
@@ -182,6 +185,7 @@ class LLWindow
 	LLWindowResolution* mSupportedResolutions;
 	S32			mNumSupportedResolutions;
 	ECursorType	mCurrentCursor;
+	ECursorType	mNextCursor;
 	BOOL		mCursorHidden;
 	S32			mBusyCount;	// how deep is the "cursor busy" stack?
 	BOOL		mIsMouseClipping;  // Is this window currently clipping the mouse
@@ -189,7 +193,8 @@ class LLWindow
 	BOOL		mHideCursorPermanent;
 	U32			mFlags;
 	U16			mHighSurrogate;
-	LLWindowListener* mListener;
+	S32			mMinWindowWidth;
+	S32			mMinWindowHeight;
 
  	// Handle a UTF-16 encoding unit received from keyboard.
  	// Converting the series of UTF-16 encoding units to UTF-32 data,
diff --git a/indra/llwindow/llwindowheadless.h b/indra/llwindow/llwindowheadless.h
index ac53e6a86ee833f70383393dd56ab065f7fdc441..d4a778cb85bddf569f34e98025f53b57e5fdedcb 100644
--- a/indra/llwindow/llwindowheadless.h
+++ b/indra/llwindow/llwindowheadless.h
@@ -46,7 +46,7 @@ class LLWindowHeadless : public LLWindow
 	/*virtual*/ BOOL getSize(LLCoordScreen *size) {return FALSE;};
 	/*virtual*/ BOOL getSize(LLCoordWindow *size) {return FALSE;};
 	/*virtual*/ BOOL setPosition(LLCoordScreen position) {return FALSE;};
-	/*virtual*/ BOOL setSize(LLCoordScreen size) {return FALSE;};
+	/*virtual*/ BOOL setSizeImpl(LLCoordScreen 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;};
@@ -55,7 +55,7 @@ class LLWindowHeadless : public LLWindow
 	/*virtual*/ void showCursorFromMouseMove() {};
 	/*virtual*/ void hideCursorUntilMouseMove() {};
 	/*virtual*/ BOOL isCursorHidden() {return FALSE;};
-	/*virtual*/ void setCursor(ECursorType cursor) {};
+	/*virtual*/ void updateCursor() {};
 	//virtual ECursorType getCursor() { return mCurrentCursor; };
 	/*virtual*/ void captureMouse() {};
 	/*virtual*/ void releaseMouse() {};
diff --git a/indra/llwindow/llwindowlistener.cpp b/indra/llwindow/llwindowlistener.cpp
deleted file mode 100644
index 91b99d83c6a2ebaa0191a0f4973be8c1705d1b18..0000000000000000000000000000000000000000
--- a/indra/llwindow/llwindowlistener.cpp
+++ /dev/null
@@ -1,307 +0,0 @@
-/** 
- * @file llwindowlistener.cpp
- * @brief EventAPI interface for injecting input into LLWindow
- *
- * $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"
-
-#include "llwindowlistener.h"
-
-#include "llcoord.h"
-#include "llkeyboard.h"
-#include "llwindowcallbacks.h"
-#include <map>
-
-LLWindowListener::LLWindowListener(LLWindowCallbacks *window, const KeyboardGetter& kbgetter)
-	: LLEventAPI("LLWindow", "Inject input events into the LLWindow instance"),
-	  mWindow(window),
-	  mKbGetter(kbgetter)
-{
-	std::string keySomething =
-		"Given [\"keysym\"], [\"keycode\"] or [\"char\"], inject the specified ";
-	std::string keyExplain =
-		"(integer keycode values, or keysym \"XXXX\" from any KEY_XXXX, in\n"
-		"http://hg.secondlife.com/viewer-development/src/tip/indra/llcommon/indra_constants.h )";
-	std::string mask =
-		"Specify optional [\"mask\"] as an array containing any of \"CONTROL\", \"ALT\",\n"
-		"\"SHIFT\" or \"MAC_CONTROL\"; the corresponding modifier bits will be combined\n"
-		"to form the mask used with the event.";
-
-	std::string mouseSomething =
-		"Given [\"button\"], [\"x\"] and [\"y\"], inject the given mouse ";
-	std::string mouseExplain =
-		"(button values \"LEFT\", \"MIDDLE\", \"RIGHT\")";
-
-	add("keyDown",
-		keySomething + "keypress event.\n" + keyExplain + '\n' + mask,
-		&LLWindowListener::keyDown);
-	add("keyUp",
-		keySomething + "key release event.\n" + keyExplain + '\n' + mask,
-		&LLWindowListener::keyUp);
-	add("mouseDown",
-		mouseSomething + "click event.\n" + mouseExplain + '\n' + mask,
-		&LLWindowListener::mouseDown);
-	add("mouseUp",
-		mouseSomething + "release event.\n" + mouseExplain + '\n' + mask,
-		&LLWindowListener::mouseUp);
-	add("mouseMove",
-		std::string("Given [\"x\"] and [\"y\"], inject the given mouse movement event.\n") +
-		mask,
-		&LLWindowListener::mouseMove);
-	add("mouseScroll",
-		"Given an integer number of [\"clicks\"], inject the given mouse scroll event.\n"
-		"(positive clicks moves downward through typical content)",
-		&LLWindowListener::mouseScroll);
-}
-
-template <typename MAPPED>
-class StringLookup
-{
-private:
-	std::string mDesc;
-	typedef std::map<std::string, MAPPED> Map;
-	Map mMap;
-
-public:
-	StringLookup(const std::string& desc): mDesc(desc) {}
-
-	MAPPED lookup(const typename Map::key_type& key) const
-	{
-		typename Map::const_iterator found = mMap.find(key);
-		if (found == mMap.end())
-		{
-			LL_WARNS("LLWindowListener") << "Unknown " << mDesc << " '" << key << "'" << LL_ENDL;
-			return MAPPED();
-		}
-		return found->second;
-	}
-
-protected:
-	void add(const typename Map::key_type& key, const typename Map::mapped_type& value)
-	{
-		mMap.insert(typename Map::value_type(key, value));
-	}
-};
-
-// for WhichKeysym. KeyProxy is like the typedef KEY, except that KeyProxy()
-// (default-constructed) is guaranteed to have the value KEY_NONE.
-class KeyProxy
-{
-public:
-	KeyProxy(KEY k): mKey(k) {}
-	KeyProxy(): mKey(KEY_NONE) {}
-	operator KEY() const { return mKey; }
-
-private:
-	KEY mKey;
-};
-
-struct WhichKeysym: public StringLookup<KeyProxy>
-{
-	WhichKeysym(): StringLookup<KeyProxy>("keysym")
-	{
-		add("RETURN",		KEY_RETURN);
-		add("LEFT",			KEY_LEFT);
-		add("RIGHT",		KEY_RIGHT);
-		add("UP",			KEY_UP);
-		add("DOWN",			KEY_DOWN);
-		add("ESCAPE",		KEY_ESCAPE);
-		add("BACKSPACE",	KEY_BACKSPACE);
-		add("DELETE",		KEY_DELETE);
-		add("SHIFT",		KEY_SHIFT);
-		add("CONTROL",		KEY_CONTROL);
-		add("ALT",			KEY_ALT);
-		add("HOME",			KEY_HOME);
-		add("END",			KEY_END);
-		add("PAGE_UP",		KEY_PAGE_UP);
-		add("PAGE_DOWN",	KEY_PAGE_DOWN);
-		add("HYPHEN",		KEY_HYPHEN);
-		add("EQUALS",		KEY_EQUALS);
-		add("INSERT",		KEY_INSERT);
-		add("CAPSLOCK",		KEY_CAPSLOCK);
-		add("TAB",			KEY_TAB);
-		add("ADD",			KEY_ADD);
-		add("SUBTRACT",		KEY_SUBTRACT);
-		add("MULTIPLY",		KEY_MULTIPLY);
-		add("DIVIDE",		KEY_DIVIDE);
-		add("F1",			KEY_F1);
-		add("F2",			KEY_F2);
-		add("F3",			KEY_F3);
-		add("F4",			KEY_F4);
-		add("F5",			KEY_F5);
-		add("F6",			KEY_F6);
-		add("F7",			KEY_F7);
-		add("F8",			KEY_F8);
-		add("F9",			KEY_F9);
-		add("F10",			KEY_F10);
-		add("F11",			KEY_F11);
-		add("F12",			KEY_F12);
-
-		add("PAD_UP",		KEY_PAD_UP);
-		add("PAD_DOWN",		KEY_PAD_DOWN);
-		add("PAD_LEFT",		KEY_PAD_LEFT);
-		add("PAD_RIGHT",	KEY_PAD_RIGHT);
-		add("PAD_HOME",		KEY_PAD_HOME);
-		add("PAD_END",		KEY_PAD_END);
-		add("PAD_PGUP",		KEY_PAD_PGUP);
-		add("PAD_PGDN",		KEY_PAD_PGDN);
-		add("PAD_CENTER",	KEY_PAD_CENTER); // the 5 in the middle
-		add("PAD_INS",		KEY_PAD_INS);
-		add("PAD_DEL",		KEY_PAD_DEL);
-		add("PAD_RETURN",	KEY_PAD_RETURN);
-		add("PAD_ADD",		KEY_PAD_ADD); // not used
-		add("PAD_SUBTRACT", KEY_PAD_SUBTRACT); // not used
-		add("PAD_MULTIPLY", KEY_PAD_MULTIPLY); // not used
-		add("PAD_DIVIDE",	KEY_PAD_DIVIDE); // not used
-
-		add("BUTTON0",		KEY_BUTTON0);
-		add("BUTTON1",		KEY_BUTTON1);
-		add("BUTTON2",		KEY_BUTTON2);
-		add("BUTTON3",		KEY_BUTTON3);
-		add("BUTTON4",		KEY_BUTTON4);
-		add("BUTTON5",		KEY_BUTTON5);
-		add("BUTTON6",		KEY_BUTTON6);
-		add("BUTTON7",		KEY_BUTTON7);
-		add("BUTTON8",		KEY_BUTTON8);
-		add("BUTTON9",		KEY_BUTTON9);
-		add("BUTTON10",		KEY_BUTTON10);
-		add("BUTTON11",		KEY_BUTTON11);
-		add("BUTTON12",		KEY_BUTTON12);
-		add("BUTTON13",		KEY_BUTTON13);
-		add("BUTTON14",		KEY_BUTTON14);
-		add("BUTTON15",		KEY_BUTTON15);
-	}
-};
-static WhichKeysym keysyms;
-
-struct WhichMask: public StringLookup<MASK>
-{
-	WhichMask(): StringLookup<MASK>("shift mask")
-	{
-		add("NONE",			MASK_NONE);
-		add("CONTROL",		MASK_CONTROL); // Mapped to cmd on Macs
-		add("ALT",			MASK_ALT);
-		add("SHIFT",		MASK_SHIFT);
-		add("MAC_CONTROL",	MASK_MAC_CONTROL); // Un-mapped Ctrl key on Macs, not used on Windows
-	}
-};
-static WhichMask masks;
-
-static MASK getMask(const LLSD& event)
-{
-	MASK mask(MASK_NONE);
-	LLSD masknames(event["mask"]);
-	for (LLSD::array_const_iterator ai(masknames.beginArray()), aend(masknames.endArray());
-		 ai != aend; ++ai)
-	{
-		mask |= masks.lookup(*ai);
-	}
-	return mask;
-}
-
-static KEY getKEY(const LLSD& event)
-{
-    if (event.has("keysym"))
-	{
-		return keysyms.lookup(event["keysym"]);
-	}
-	else if (event.has("keycode"))
-	{
-		return KEY(event["keycode"].asInteger());
-	}
-	else
-	{
-		return KEY(event["char"].asString()[0]);
-	}
-}
-
-void LLWindowListener::keyDown(LLSD const & evt)
-{
-	mKbGetter()->handleTranslatedKeyDown(getKEY(evt), getMask(evt));
-}
-
-void LLWindowListener::keyUp(LLSD const & evt)
-{
-	mKbGetter()->handleTranslatedKeyUp(getKEY(evt), getMask(evt));
-}
-
-// for WhichButton
-typedef BOOL (LLWindowCallbacks::*MouseFunc)(LLWindow *, LLCoordGL, MASK);
-struct Actions
-{
-	Actions(const MouseFunc& d, const MouseFunc& u): down(d), up(u), valid(true) {}
-	Actions(): valid(false) {}
-	MouseFunc down, up;
-	bool valid;
-};
-
-struct WhichButton: public StringLookup<Actions>
-{
-	WhichButton(): StringLookup<Actions>("mouse button")
-	{
-		add("LEFT",		Actions(&LLWindowCallbacks::handleMouseDown,
-								&LLWindowCallbacks::handleMouseUp));
-		add("RIGHT",	Actions(&LLWindowCallbacks::handleRightMouseDown,
-								&LLWindowCallbacks::handleRightMouseUp));
-		add("MIDDLE",	Actions(&LLWindowCallbacks::handleMiddleMouseDown,
-								&LLWindowCallbacks::handleMiddleMouseUp));
-	}
-};
-static WhichButton buttons;
-
-static LLCoordGL getPos(const LLSD& event)
-{
-	return LLCoordGL(event["x"].asInteger(), event["y"].asInteger());
-}
-
-void LLWindowListener::mouseDown(LLSD const & evt)
-{
-	Actions actions(buttons.lookup(evt["button"]));
-	if (actions.valid)
-	{
-		(mWindow->*(actions.down))(NULL, getPos(evt), getMask(evt));
-	}
-}
-
-void LLWindowListener::mouseUp(LLSD const & evt)
-{
-	Actions actions(buttons.lookup(evt["button"]));
-	if (actions.valid)
-	{
-		(mWindow->*(actions.up))(NULL, getPos(evt), getMask(evt));
-	}
-}
-
-void LLWindowListener::mouseMove(LLSD const & evt)
-{
-	mWindow->handleMouseMove(NULL, getPos(evt), getMask(evt));
-}
-
-void LLWindowListener::mouseScroll(LLSD const & evt)
-{
-	S32 clicks = evt["clicks"].asInteger();
-
-	mWindow->handleScrollWheel(NULL, clicks);
-}
-
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index 4dd11541b98de87a8107963877e36a93692790d1..c952f8bbcf504cf0172d66dbb20513abd4642144 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -1,25 +1,25 @@
-/** 
+/**
  * @file llwindowmacosx.cpp
  * @brief Platform-dependent implementation of llwindow
  *
  * $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$
  */
@@ -220,10 +220,10 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
 	// Route them to a dummy callback structure until the end of constructor.
 	LLWindowCallbacks null_callbacks;
 	mCallbacks = &null_callbacks;
-	
+
 	// Voodoo for calling cocoa from carbon (see llwindowmacosx-objc.mm).
 	setupCocoa();
-	
+
 	// Initialize the keyboard
 	gKeyboard = new LLKeyboardMacOSX();
 	gKeyboard->setCallbacks(callbacks);
@@ -254,10 +254,10 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
 	mRawKeyEvent = NULL;
 	mFSAASamples = fsaa_samples;
 	mForceRebuild = FALSE;
-	
+
 	// For reasons that aren't clear to me, LLTimers seem to be created in the "started" state.
 	// Since the started state of this one is used to track whether the NMRec has been installed, it wants to start out in the "stopped" state.
-	mBounceTimer.stop();	
+	mBounceTimer.stop();
 
 	// Get the original aspect ratio of the main device.
 	mOriginalAspectRatio = (double)CGDisplayPixelsWide(mDisplay) / (double)CGDisplayPixelsHigh(mDisplay);
@@ -270,7 +270,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
 	mMoveEventCampartorUPP = NewEventComparatorUPP(staticMoveEventComparator);
 	mGlobalHandlerRef = NULL;
 	mWindowHandlerRef = NULL;
-	
+
 	mDragOverrideCursor = -1;
 
 	// We're not clipping yet
@@ -445,7 +445,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
 			mFullscreenBits    = -1;
 			mFullscreenRefresh = -1;
 
-			std::string error= llformat("Unable to run fullscreen at %d x %d.\nRunning in window.", width, height);	
+			std::string error= llformat("Unable to run fullscreen at %d x %d.\nRunning in window.", width, height);
 			OSMessageBox(error, "Error", OSMB_OK);
 		}
 	}
@@ -477,7 +477,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
 			kFirstWindowOfClass,
 			true,
 			(long)this);
-		
+
 		if (!mWindow)
 		{
 			setupFailure("Window creation error", "Error", OSMB_OK);
@@ -493,7 +493,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
 		InstallStandardEventHandler(GetWindowEventTarget(mWindow));
 		InstallWindowEventHandler(mWindow, mEventHandlerUPP, GetEventTypeCount (WindowHandlerEventList), WindowHandlerEventList, (void*)this, &mWindowHandlerRef); // add event handler
 #if LL_OS_DRAGDROP_ENABLED
-		InstallTrackingHandler( dragTrackingHandler, mWindow, (void*)this );		
+		InstallTrackingHandler( dragTrackingHandler, mWindow, (void*)this );
 		InstallReceiveHandler( dragReceiveHandler, mWindow, (void*)this );
 #endif // LL_OS_DRAGDROP_ENABLED
 	}
@@ -790,7 +790,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
 		LL_DEBUGS("GLinit") << "Keeping vertical sync" << LL_ENDL;
 		frames_per_swap = 1;
 	}
-	aglSetInteger(mContext, AGL_SWAP_INTERVAL, &frames_per_swap);  
+	aglSetInteger(mContext, AGL_SWAP_INTERVAL, &frames_per_swap);
 
 	//enable multi-threaded OpenGL
 	if (sUseMultGL)
@@ -803,7 +803,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
 		if (cgl_err != kCGLNoError )
 		{
 			LL_DEBUGS("GLInit") << "Multi-threaded OpenGL not available." << LL_ENDL;
-		}    
+		}
 		else
 		{
 			LL_DEBUGS("GLInit") << "Multi-threaded OpenGL enabled." << LL_ENDL;
@@ -1109,7 +1109,7 @@ BOOL LLWindowMacOSX::maximize()
 	{
 		ZoomWindow(mWindow, inContent, true);
 	}
-	
+
 	return mMaximized;
 }
 
@@ -1164,6 +1164,8 @@ void LLWindowMacOSX::gatherInput()
 
 		}
 	}
+	
+	updateCursor();
 }
 
 BOOL LLWindowMacOSX::getPosition(LLCoordScreen *position)
@@ -1254,7 +1256,7 @@ BOOL LLWindowMacOSX::setPosition(const LLCoordScreen position)
 	return TRUE;
 }
 
-BOOL LLWindowMacOSX::setSize(const LLCoordScreen size)
+BOOL LLWindowMacOSX::setSizeImpl(const LLCoordScreen size)
 {
 	if(mWindow)
 	{
@@ -1266,7 +1268,6 @@ BOOL LLWindowMacOSX::setSize(const LLCoordScreen size)
 
 void LLWindowMacOSX::swapBuffers()
 {
-	glFinish();
 	aglSwapBuffers(mContext);
 }
 
@@ -1433,7 +1434,7 @@ static void fixOrigin(void)
 	GrafPtr port;
 	Rect portrect;
 
-	::GetPort(&port);	
+	::GetPort(&port);
 	::GetPortBounds(port, &portrect);
 	if((portrect.left != 0) || (portrect.top != 0))
 	{
@@ -1447,17 +1448,17 @@ BOOL LLWindowMacOSX::getCursorPosition(LLCoordWindow *position)
 	Point cursor_point;
 	LLCoordScreen screen_pos;
 	GrafPtr save;
-	
+
 	if(mWindow == NULL)
 		return FALSE;
-		
+
 	::GetPort(&save);
 	::SetPort(GetWindowPort(mWindow));
 	fixOrigin();
 
 	// gets the mouse location in local coordinates
 	::GetMouse(&cursor_point);
-	
+
 //	lldebugs << "getCursorPosition(): cursor is at " << cursor_point.h << ", " << cursor_point.v << "  port origin: " << portrect.left << ", " << portrect.top << llendl;
 
 	::SetPort(save);
@@ -1522,7 +1523,7 @@ F32 LLWindowMacOSX::getNativeAspectRatio()
 	{
 		// The constructor for this class grabs the aspect ratio of the monitor before doing any resolution
 		// switching, and stashes it in mOriginalAspectRatio.  Here, we just return it.
-	
+
 		if (mOverrideAspectRatio > 0.f)
 		{
 			return mOverrideAspectRatio;
@@ -1997,7 +1998,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 					if (mPreeditor
 						&& (result = GetEventParameter(event, kEventParamTextInputSendFixLen,
 										typeLongInteger, &param_type, sizeof(fix_len), NULL, &fix_len)) == noErr
-						&& typeLongInteger == param_type 
+						&& typeLongInteger == param_type
 						&& (result = GetEventParameter(event, kEventParamTextInputSendText,
 										typeUnicodeText, &param_type, 0, &text_len, NULL)) == noErr
 						&& typeUnicodeText == param_type)
@@ -2017,7 +2018,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 							mPreeditor->markAsPreedit(location, length);
 						}
 						mPreeditor->resetPreedit();
-						
+
 						// Receive the text from input method.
 						U16 *const text = new U16[text_len / sizeof(U16)];
 						GetEventParameter(event, kEventParamTextInputSendText, typeUnicodeText, NULL, text_len, NULL, text);
@@ -2056,11 +2057,11 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 							GetEventParameter(event, kEventParamTextInputSendHiliteRng, typeTextRangeArray,
 									NULL, text_range_array_size, NULL, text_range_array);
 
-							// WARNING: We assume ranges are in ascending order, 
+							// WARNING: We assume ranges are in ascending order,
 							// although the condition is undocumented.  It seems
 							// OK to assume this.  I also assumed
 							// the ranges are contiguous in previous versions, but I
-							// have heard a rumore that older versions os ATOK may 
+							// have heard a rumore that older versions os ATOK may
 							// return ranges with some _gap_.  I don't know whether
 							// it is true, but I'm preparing my code for the case.
 
@@ -2124,7 +2125,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 					}
 				}
 				break;
-				
+
 			case kEventTextInputUnicodeForKeyEvent:
 				{
 					UInt32 modifiers = 0;
@@ -2133,7 +2134,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 					// First, process the raw event.
 					{
 						EventRef rawEvent = NULL;
-						
+
 						// Get the original event and extract the modifier keys, so we can ignore command-key events.
 						if (GetEventParameter(event, kEventParamTextInputSendKeyboardEvent, typeEventRef, NULL, sizeof(rawEvent), NULL, &rawEvent) == noErr)
 						{
@@ -2142,7 +2143,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 
 							// and call this function recursively to handle the raw key event.
 							eventHandler (myHandler, rawEvent);
-							
+
 							// save the raw event until we're done processing the unicode input as well.
 							mRawKeyEvent = rawEvent;
 						}
@@ -2173,7 +2174,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 						else
 						{
 							MASK mask = LLWindowMacOSX::modifiersToMask(modifiers);
-							
+
 							llassert( actualType == typeUnicodeText );
 
 							// The result is a UTF16 buffer.  Pass the characters in turn to handleUnicodeChar.
@@ -2199,7 +2200,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 					result = err;
 				}
 				break;
-				
+
 			case kEventTextInputOffsetToPos:
 				{
 					EventParamType param_type;
@@ -2212,7 +2213,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 						S32 preedit, preedit_length;
 						mPreeditor->getPreeditRange(&preedit, &preedit_length);
 						const LLWString & text = mPreeditor->getPreeditString();
-						 
+
 						LLCoordGL caret_coord;
 						LLRect preedit_bounds;
 						if (0 <= offset
@@ -2226,10 +2227,10 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 							qd_point.h = caret_base_coord_screen.mX;
 							qd_point.v = caret_base_coord_screen.mY;
 							SetEventParameter(event, kEventParamTextInputReplyPoint, typeQDPoint, sizeof(qd_point), &qd_point);
-							
+
 							short line_height = (short) preedit_bounds.getHeight();
 							SetEventParameter(event, kEventParamTextInputReplyLineHeight, typeShortInteger, sizeof(line_height), &line_height);
-							
+
 							result = noErr;
 						}
 						else
@@ -2282,7 +2283,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 			case kEventRawKeyRepeat:
 				if (gDebugWindowProc)
 				{
-					printf("key down, key code = 0x%08x, char code = 0x%02x (%c), modifiers = 0x%08x\n", 
+					printf("key down, key code = 0x%08x, char code = 0x%02x (%c), modifiers = 0x%08x\n",
 							(unsigned int)keyCode, charCode, (char)charCode, (unsigned int)modifiers);
 					fflush(stdout);
 				}
@@ -2293,7 +2294,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 			case kEventRawKeyUp:
 				if (gDebugWindowProc)
 				{
-					printf("key up,   key code = 0x%08x, char code = 0x%02x (%c), modifiers = 0x%08x\n", 
+					printf("key up,   key code = 0x%08x, char code = 0x%02x (%c), modifiers = 0x%08x\n",
 							(unsigned int)keyCode, charCode, (char)charCode, (unsigned int)modifiers);
 					fflush(stdout);
 				}
@@ -2351,7 +2352,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 				}
 
 				// When the state of the 'Fn' key (the one that changes some of the mappings on a powerbook/macbook keyboard
-				// to an embedded keypad) changes, it may subsequently cause a key up event to be lost, which may lead to 
+				// to an embedded keypad) changes, it may subsequently cause a key up event to be lost, which may lead to
 				// a movement key getting "stuck" down.  This is bad.
 				// This is an OS bug -- even the GetKeys() API doesn't tell you the key has been released.
 				// This workaround causes all held-down keys to be reset whenever the state of the Fn key changes.  This isn't
@@ -2361,14 +2362,14 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 					if (gDebugWindowProc) printf("Fn key state change event\n");
 					gKeyboard->resetKeys();
 				}
-				
+
 				if (gDebugWindowProc) fflush(stdout);
 
 				mLastModifiers = modifiers;
 				result = eventNotHandledErr;
 				break;
 			}
-			
+
 			mRawKeyEvent = NULL;
 		}
 		break;
@@ -2463,7 +2464,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 					case kEventMouseButtonSecondary:
 						mCallbacks->handleRightMouseDown(this, outCoords, mask);
 						break;
-					
+
 					case kEventMouseButtonTertiary:
 						mCallbacks->handleMiddleMouseDown(this, outCoords, mask);
 						break;
@@ -2525,7 +2526,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 
 	case kEventClassWindow:
 		switch(evtKind)
-		{		
+		{
 		case kEventWindowActivated:
 			if (mTSMDocument)
 			{
@@ -2540,20 +2541,20 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 			}
 			mCallbacks->handleFocusLost(this);
 			break;
-			
+
 		case kEventWindowBoundsChanging:
 			{
 				// This is where we would constrain move/resize to a particular screen
 
-				const S32 MIN_WIDTH  = 320;
-				const S32 MIN_HEIGHT = 240;
-				
+				const S32 MIN_WIDTH  = mMinWindowWidth;
+				const S32 MIN_HEIGHT = mMinWindowHeight;
+
 				Rect currentBounds;
 				Rect previousBounds;
 
 				GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &currentBounds);
 				GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &previousBounds);
-				
+
 				// Put an offset into window un-maximize operation since the kEventWindowGetIdealSize
 				// event only allows the specification of size and not position.
 				if (mMaximized)
@@ -2561,7 +2562,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 					short leftOffset = mPreviousWindowRect.left - currentBounds.left;
 					currentBounds.left += leftOffset;
 					currentBounds.right += leftOffset;
-					
+
 					short topOffset = mPreviousWindowRect.top - currentBounds.top;
 					currentBounds.top += topOffset;
 					currentBounds.bottom += topOffset;
@@ -2581,7 +2582,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 				{
 					currentBounds.bottom = currentBounds.top + MIN_HEIGHT;
 				}
-				
+
 				SetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, sizeof(Rect), &currentBounds);
 				result = noErr;
 			}
@@ -2592,38 +2593,38 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 				// Get new window bounds
 				Rect newBounds;
 				GetEventParameter(event, kEventParamCurrentBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &newBounds);
-				
+
 				// Get previous window bounds
 				Rect oldBounds;
 				GetEventParameter(event, kEventParamPreviousBounds, typeQDRectangle, NULL, sizeof(Rect), NULL, &oldBounds);
-				
+
 				// Determine if the new size is larger than the old
 				bool newBoundsLarger = ((newBounds.right - newBounds.left) >= (oldBounds.right - oldBounds.left));
 				newBoundsLarger &= ((newBounds.bottom - newBounds.top) >= (oldBounds.bottom - oldBounds.top));
-				
+
 				// Check to see if this is a zoom event (+ button on window pane)
 				unsigned int eventParams;
 				GetEventParameter(event, kEventParamAttributes, typeUInt32, NULL, sizeof(int), NULL, &eventParams);
 				bool isZoomEvent = ((eventParams & kWindowBoundsChangeZoom) != 0);
-				
+
 				// Maximized flag is if zoom event and increasing window size
 				mMaximized = (isZoomEvent && newBoundsLarger);
-				
+
 				aglUpdateContext(mContext);
-				
+
 				mCallbacks->handleResize(this, newBounds.right - newBounds.left, newBounds.bottom - newBounds.top);
 			}
 			break;
-			
+
 		case kEventWindowGetIdealSize:
 			// Only recommend a new ideal size when un-maximizing
 			if (mMaximized == TRUE)
 			{
 				Point nonMaximizedSize;
-				
+
 				nonMaximizedSize.v = mPreviousWindowRect.bottom - mPreviousWindowRect.top;
 				nonMaximizedSize.h = mPreviousWindowRect.right - mPreviousWindowRect.left;
-				
+
 				SetEventParameter(event, kEventParamDimensions, typeQDPoint, sizeof(Point), &nonMaximizedSize);
 				result = noErr;
 			}
@@ -2678,7 +2679,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 		if (mPreeditor)
 		{
 			switch(evtKind)
-			{		
+			{
 
 			case kEventTSMDocumentAccessGetLength:
 				{
@@ -2697,14 +2698,14 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 				{
 					// Return the selected range, excluding preedit.
 					// In our preeditor, preedit and selection are exclusive, so,
-					// when it has a preedit, there is no selection and the 
+					// when it has a preedit, there is no selection and the
 					// insertion point is on the preedit that corrupses into the
 					// beginning of the preedit when the preedit was removed.
 
 					S32 preedit, preedit_length;
 					mPreeditor->getPreeditRange(&preedit, &preedit_length);
 					const LLWString & text = mPreeditor->getPreeditString();
-					
+
 					CFRange range;
 					if (preedit_length)
 					{
@@ -2768,7 +2769,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e
 						memcpy(target_pointer, text_utf16.c_str() + range.location, range.length * sizeof(UniChar));
 
 						// Note that result has already been set above.
-					}					
+					}
 				}
 				break;
 
@@ -2815,14 +2816,14 @@ const char* cursorIDToName(int id)
 		case UI_CURSOR_TOOLPLAY:		return "UI_CURSOR_TOOLPLAY";
 		case UI_CURSOR_TOOLPAUSE:		return "UI_CURSOR_TOOLPAUSE";
 		case UI_CURSOR_TOOLMEDIAOPEN:	return "UI_CURSOR_TOOLMEDIAOPEN";
-		case UI_CURSOR_PIPETTE:			return "UI_CURSOR_PIPETTE";		
+		case UI_CURSOR_PIPETTE:			return "UI_CURSOR_PIPETTE";
 		case UI_CURSOR_TOOLSIT:			return "UI_CURSOR_TOOLSIT";
 		case UI_CURSOR_TOOLBUY:			return "UI_CURSOR_TOOLBUY";
 		case UI_CURSOR_TOOLOPEN:		return "UI_CURSOR_TOOLOPEN";
 	}
 
 	llerrs << "cursorIDToName: unknown cursor id" << id << llendl;
-	
+
 	return "UI_CURSOR_ARROW";
 }
 
@@ -2838,42 +2839,42 @@ static void initPixmapCursor(int cursorid, int hotspotX, int hotspotY)
 	fullpath += gDirUtilp->getDirDelimiter();
 	fullpath += cursorIDToName(cursorid);
 	fullpath += ".tif";
-	
+
 	gCursors[cursorid] = createImageCursor(fullpath.c_str(), hotspotX, hotspotY);
 }
 
-void LLWindowMacOSX::setCursor(ECursorType cursor)
+void LLWindowMacOSX::updateCursor()
 {
 	OSStatus result = noErr;
 
-	if (mDragOverrideCursor != -1) 
+	if (mDragOverrideCursor != -1)
 	{
 		// A drag is in progress...remember the requested cursor and we'll
 		// restore it when it is done
-		mCurrentCursor = cursor;
+		mCurrentCursor = mNextCursor;
 		return;
 	}
 		
-	if (cursor == UI_CURSOR_ARROW
+	if (mNextCursor == UI_CURSOR_ARROW
 		&& mBusyCount > 0)
 	{
-		cursor = UI_CURSOR_WORKING;
+		mNextCursor = UI_CURSOR_WORKING;
 	}
 	
-	if(mCurrentCursor == cursor)
+	if(mCurrentCursor == mNextCursor)
 		return;
 
 	// RN: replace multi-drag cursors with single versions
-	if (cursor == UI_CURSOR_ARROWDRAGMULTI)
+	if (mNextCursor == UI_CURSOR_ARROWDRAGMULTI)
 	{
-		cursor = UI_CURSOR_ARROWDRAG;
+		mNextCursor = UI_CURSOR_ARROWDRAG;
 	}
-	else if (cursor == UI_CURSOR_ARROWCOPYMULTI)
+	else if (mNextCursor == UI_CURSOR_ARROWCOPYMULTI)
 	{
-		cursor = UI_CURSOR_ARROWCOPY;
+		mNextCursor = UI_CURSOR_ARROWCOPY;
 	}
 
-	switch(cursor)
+	switch(mNextCursor)
 	{
 	default:
 	case UI_CURSOR_ARROW:
@@ -2924,7 +2925,7 @@ void LLWindowMacOSX::setCursor(ECursorType cursor)
 	case UI_CURSOR_TOOLSIT:
 	case UI_CURSOR_TOOLBUY:
 	case UI_CURSOR_TOOLOPEN:
-		result = setImageCursor(gCursors[cursor]);
+		result = setImageCursor(gCursors[mNextCursor]);
 		break;
 
 	}
@@ -2934,7 +2935,7 @@ void LLWindowMacOSX::setCursor(ECursorType cursor)
 		InitCursor();
 	}
 
-	mCurrentCursor = cursor;
+	mCurrentCursor = mNextCursor;
 }
 
 ECursorType LLWindowMacOSX::getCursor() const
@@ -3269,14 +3270,14 @@ void LLWindowMacOSX::spawnWebBrowser(const std::string& escaped_url, bool async)
 LLSD LLWindowMacOSX::getNativeKeyData()
 {
 	LLSD result = LLSD::emptyMap();
-	
+
 	if(mRawKeyEvent)
 	{
 		char char_code = 0;
 		UInt32 key_code = 0;
 		UInt32 modifiers = 0;
 		UInt32 keyboard_type = 0;
-		
+
 		GetEventParameter (mRawKeyEvent, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(char), NULL, &char_code);
 		GetEventParameter (mRawKeyEvent, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &key_code);
 		GetEventParameter (mRawKeyEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers);
@@ -3286,7 +3287,7 @@ LLSD LLWindowMacOSX::getNativeKeyData()
 		result["key_code"] = (S32)key_code;
 		result["modifiers"] = (S32)modifiers;
 		result["keyboard_type"] = (S32)keyboard_type;
-		
+
 #if 0
 		// This causes trouble for control characters -- apparently character codes less than 32 (escape, control-A, etc)
 		// cause llsd serialization to create XML that the llsd deserializer won't parse!
@@ -3295,7 +3296,7 @@ LLSD LLWindowMacOSX::getNativeKeyData()
 		EventParamType actualType = typeUTF8Text;
 		UInt32 actualSize = 0;
 		char *buffer = NULL;
-		
+
 		err = GetEventParameter (mRawKeyEvent, kEventParamKeyUnicodes, typeUTF8Text, &actualType, 0, &actualSize, NULL);
 		if(err == noErr)
 		{
@@ -3308,7 +3309,7 @@ LLSD LLWindowMacOSX::getNativeKeyData()
 			}
 			delete[] buffer;
 		}
-		
+
 		result["unicode"] = unicode;
 #endif
 
@@ -3316,7 +3317,7 @@ LLSD LLWindowMacOSX::getNativeKeyData()
 
 
 	lldebugs << "native key data is: " << result << llendl;
-	
+
 	return result;
 }
 
@@ -3363,17 +3364,17 @@ void *LLWindowMacOSX::getPlatformWindow()
 
 void *LLWindowMacOSX::getMediaWindow()
 {
-	/* 
-		Mozilla needs to be initialized with a WindowRef to function properly.  
+	/*
+		Mozilla needs to be initialized with a WindowRef to function properly.
 		(There's no good reason for this, since it shouldn't be interacting with our window in any way, but that's another issue.)
-		If we're in windowed mode, we _could_ hand it our actual window pointer, but a subsequent switch to fullscreen will destroy that window, 
+		If we're in windowed mode, we _could_ hand it our actual window pointer, but a subsequent switch to fullscreen will destroy that window,
 		which trips up Mozilla.
 		Instead of using our actual window, we create an invisible window which will persist for the lifetime of the application and pass that to Mozilla.
 		This satisfies its deep-seated need to latch onto a WindowRef and solves the issue with switching between fullscreen and windowed modes.
 
 		Note that we will never destroy this window (by design!), but since only one will ever be created per run of the application, that's okay.
 	*/
-	
+
 	if(sMediaWindow == NULL)
 	{
 		Rect window_rect = {100, 100, 200, 200};
@@ -3382,13 +3383,13 @@ void *LLWindowMacOSX::getMediaWindow()
 			NULL,
 			&window_rect,
 			(ConstStr255Param) "\p",
-			false,				// Create the window invisible.  
+			false,				// Create the window invisible.
 			zoomDocProc,		// Window with a grow box and a zoom box
 			kLastWindowOfClass,		// create it behind other windows
 			false,					// no close box
 			0);
 	}
-	
+
 	return (void*)sMediaWindow;
 }
 
@@ -3438,7 +3439,7 @@ void LLWindowMacOSX::allowLanguageTextInput(LLPreeditor *preeditor, BOOL b)
 	}
 
 	UseInputWindow(mTSMDocument, !b);
-	
+
 	// Take care of old and new preeditors.
 	if (preeditor != mPreeditor || !b)
 	{
@@ -3457,7 +3458,7 @@ void LLWindowMacOSX::allowLanguageTextInput(LLPreeditor *preeditor, BOOL b)
 		return;
 	}
 	mLanguageTextInputAllowed = b;
-	
+
 	if (b)
 	{
 		if (mTSMScriptCode != smRoman)
@@ -3506,7 +3507,7 @@ MASK LLWindowMacOSX::modifiersToMask(SInt16 modifiers)
 	if(modifiers & (cmdKey | controlKey)) { mask |= MASK_CONTROL; }
 	if(modifiers & optionKey) { mask |= MASK_ALT; }
 	return mask;
-}	
+}
 
 #if LL_OS_DRAGDROP_ENABLED
 
@@ -3517,53 +3518,53 @@ OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef
 	LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon;
 
 	lldebugs << "drag tracking handler, message = " << message << llendl;
-	
+
 	switch(message)
 	{
 		case kDragTrackingInWindow:
 			result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_TRACK);
 		break;
-		
+
 		case kDragTrackingEnterHandler:
 			result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_START_TRACKING);
 		break;
-		
+
 		case kDragTrackingLeaveHandler:
 			result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_STOP_TRACKING);
 		break;
-		
+
 		default:
 		break;
 	}
-	
+
 	return result;
 }
 
-OSErr LLWindowMacOSX::dragReceiveHandler(WindowRef theWindow, void * handlerRefCon,	
+OSErr LLWindowMacOSX::dragReceiveHandler(WindowRef theWindow, void * handlerRefCon,
 										 DragRef drag)
-{	
+{
 	LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon;
 	return self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_DROPPED);
 
 }
 
 OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDropAction action)
-{	
+{
 	OSErr result = dragNotAcceptedErr;	// overall function result
 	OSErr err = noErr;	// for local error handling
-	
+
 	// Get the mouse position and modifiers of this drag.
 	SInt16 modifiers, mouseDownModifiers, mouseUpModifiers;
 	::GetDragModifiers(drag, &modifiers, &mouseDownModifiers, &mouseUpModifiers);
 	MASK mask = LLWindowMacOSX::modifiersToMask(modifiers);
-	
+
 	Point mouse_point;
 	// This will return the mouse point in global screen coords
 	::GetDragMouse(drag, &mouse_point, NULL);
 	LLCoordScreen screen_coords(mouse_point.h, mouse_point.v);
 	LLCoordGL gl_pos;
 	convertCoords(screen_coords, &gl_pos);
-	
+
 	// Look at the pasteboard and try to extract an URL from it
 	PasteboardRef   pasteboard;
 	if(GetDragPasteboard(drag, &pasteboard) == noErr)
@@ -3571,22 +3572,22 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop
 		ItemCount num_items = 0;
 		// Treat an error here as an item count of 0
 		(void)PasteboardGetItemCount(pasteboard, &num_items);
-		
+
 		// Only deal with single-item drags.
 		if(num_items == 1)
 		{
 			PasteboardItemID item_id = NULL;
 			CFArrayRef flavors = NULL;
 			CFDataRef data = NULL;
-			
+
 			err = PasteboardGetItemIdentifier(pasteboard, 1, &item_id); // Yes, this really is 1-based.
-			
+
 			// Try to extract an URL from the pasteboard
 			if(err == noErr)
 			{
 				err = PasteboardCopyItemFlavors( pasteboard, item_id, &flavors);
 			}
-			
+
 			if(err == noErr)
 			{
 				if(CFArrayContainsValue(flavors, CFRangeMake(0, CFArrayGetCount(flavors)), kUTTypeURL))
@@ -3599,9 +3600,9 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop
 					// This is a string that might be an URL.
 					err = PasteboardCopyItemFlavorData(pasteboard, item_id, kUTTypeUTF8PlainText, &data);
 				}
-				
+
 			}
-			
+
 			if(flavors != NULL)
 			{
 				CFRelease(flavors);
@@ -3612,12 +3613,12 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop
 				std::string url;
 				url.assign((char*)CFDataGetBytePtr(data), CFDataGetLength(data));
 				CFRelease(data);
-				
+
 				if(!url.empty())
 				{
-					LLWindowCallbacks::DragNDropResult res = 
+					LLWindowCallbacks::DragNDropResult res =
 						mCallbacks->handleDragNDrop(this, gl_pos, mask, action, url);
-					
+
 					switch (res) {
 						case LLWindowCallbacks::DND_NONE:		// No drop allowed
 							if (action == LLWindowCallbacks::DNDA_TRACK)
@@ -3652,7 +3653,7 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop
 						// Restore the cursor
 						ECursorType temp_cursor = mCurrentCursor;
 						// get around the "setting the same cursor" code in setCursor()
-						mCurrentCursor = UI_CURSOR_COUNT; 
+						mCurrentCursor = UI_CURSOR_COUNT;
  						setCursor(temp_cursor);
 					}
 					else {
@@ -3664,7 +3665,7 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop
 			}
 		}
 	}
-	
+
 	return result;
 }
 
diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h
index 6c9e075a219b0d92adafdb9cb60f78d542106f32..073f294b543722340288fa6b0793e80464ce8ad2 100644
--- a/indra/llwindow/llwindowmacosx.h
+++ b/indra/llwindow/llwindowmacosx.h
@@ -58,7 +58,7 @@ class LLWindowMacOSX : public LLWindow
 	/*virtual*/ BOOL getSize(LLCoordScreen *size);
 	/*virtual*/ BOOL getSize(LLCoordWindow *size);
 	/*virtual*/ BOOL setPosition(LLCoordScreen position);
-	/*virtual*/ BOOL setSize(LLCoordScreen size);
+	/*virtual*/ BOOL setSizeImpl(LLCoordScreen size);
 	/*virtual*/ BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp = NULL);
 	/*virtual*/ BOOL setCursorPosition(LLCoordWindow position);
 	/*virtual*/ BOOL getCursorPosition(LLCoordWindow *position);
@@ -67,7 +67,7 @@ class LLWindowMacOSX : public LLWindow
 	/*virtual*/ void showCursorFromMouseMove();
 	/*virtual*/ void hideCursorUntilMouseMove();
 	/*virtual*/ BOOL isCursorHidden();
-	/*virtual*/ void setCursor(ECursorType cursor);
+	/*virtual*/ void updateCursor();
 	/*virtual*/ ECursorType getCursor() const;
 	/*virtual*/ void captureMouse();
 	/*virtual*/ void releaseMouse();
diff --git a/indra/llwindow/llwindowmesaheadless.h b/indra/llwindow/llwindowmesaheadless.h
index fd4bd635e2eb6170710b23a2a1b08d4c4b9d2b7d..8f70aee4f61c9c031d85a5b5dcf7cf8fcd1e102b 100644
--- a/indra/llwindow/llwindowmesaheadless.h
+++ b/indra/llwindow/llwindowmesaheadless.h
@@ -50,7 +50,7 @@ class LLWindowMesaHeadless : public LLWindow
 	/*virtual*/ BOOL getSize(LLCoordScreen *size) {return FALSE;};
 	/*virtual*/ BOOL getSize(LLCoordWindow *size) {return FALSE;};
 	/*virtual*/ BOOL setPosition(LLCoordScreen position) {return FALSE;};
-	/*virtual*/ BOOL setSize(LLCoordScreen size) {return FALSE;};
+	/*virtual*/ BOOL setSizeImpl(LLCoordScreen 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;};
@@ -59,7 +59,7 @@ class LLWindowMesaHeadless : public LLWindow
 	/*virtual*/ void showCursorFromMouseMove() {};
 	/*virtual*/ void hideCursorUntilMouseMove() {};
 	/*virtual*/ BOOL isCursorHidden() {return FALSE;};
-	/*virtual*/ void setCursor(ECursorType cursor) {};
+	/*virtual*/ void updateCursor() {};
 	//virtual ECursorType getCursor() { return mCurrentCursor; };
 	/*virtual*/ void captureMouse() {};
 	/*virtual*/ void releaseMouse() {};
diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index e41aa9820f8af37a14268901ed4409357baa8041..5f5baceef838cfeb1f7525edc562523f4333542e 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -963,7 +963,7 @@ BOOL LLWindowSDL::setPosition(const LLCoordScreen position)
 	return TRUE;
 }
 
-BOOL LLWindowSDL::setSize(const LLCoordScreen size)
+BOOL LLWindowSDL::setSizeImpl(const LLCoordScreen size)
 {
 	if(mWindow)
 	{
@@ -985,7 +985,6 @@ void LLWindowSDL::swapBuffers()
 {
 	if (mWindow)
 	{	
-		glFinish();
 		SDL_GL_SwapBuffers();
 	}
 }
@@ -1034,6 +1033,25 @@ void LLWindowSDL::setMouseClipping( BOOL b )
     //SDL_WM_GrabInput(b ? SDL_GRAB_ON : SDL_GRAB_OFF);
 }
 
+// virtual
+void LLWindowSDL::setMinSize(U32 min_width, U32 min_height, bool enforce_immediately)
+{
+	LLWindow::setMinSize(min_width, min_height, enforce_immediately);
+
+#if LL_X11
+	// Set the minimum size limits for X11 window
+	// so the window manager doesn't allow resizing below those limits.
+	XSizeHints* hints = XAllocSizeHints();
+	hints->flags |= PMinSize;
+	hints->min_width = mMinWindowWidth;
+	hints->min_height = mMinWindowHeight;
+
+	XSetWMNormalHints(mSDL_Display, mSDL_XWindowID, hints);
+
+	XFree(hints);
+#endif
+}
+
 BOOL LLWindowSDL::setCursorPosition(const LLCoordWindow position)
 {
 	BOOL result = TRUE;
@@ -1843,11 +1861,15 @@ void LLWindowSDL::gatherInput()
                 break;
 
             case SDL_VIDEORESIZE:  // *FIX: handle this?
+            {
 		llinfos << "Handling a resize event: " << event.resize.w <<
 			"x" << event.resize.h << llendl;
 
+		S32 width = llmax(event.resize.w, (S32)mMinWindowWidth);
+		S32 height = llmax(event.resize.h, (S32)mMinWindowHeight);
+
 		// *FIX: I'm not sure this is necessary!
-		mWindow = SDL_SetVideoMode(event.resize.w, event.resize.h, 32, mSDLFlags);
+		mWindow = SDL_SetVideoMode(width, height, 32, mSDLFlags);
 		if (!mWindow)
 		{
 			// *FIX: More informative dialog?
@@ -1860,10 +1882,10 @@ void LLWindowSDL::gatherInput()
     			}
                 break;
 		}
-		
-		mCallbacks->handleResize(this, event.resize.w, event.resize.h );
-                break;
 
+		mCallbacks->handleResize(this, width, height);
+                break;
+            }
             case SDL_ACTIVEEVENT:
                 if (event.active.state & SDL_APPINPUTFOCUS)
                 {
@@ -1914,6 +1936,8 @@ void LLWindowSDL::gatherInput()
 		break;
         }
     }
+	
+	updateCursor();
 
 #if LL_X11
     // This is a good time to stop flashing the icon if our mFlashTimer has
@@ -2000,7 +2024,7 @@ static SDL_Cursor *makeSDLCursorFromBMP(const char *filename, int hotx, int hoty
 	return sdlcursor;
 }
 
-void LLWindowSDL::setCursor(ECursorType cursor)
+void LLWindowSDL::updateCursor()
 {
 	if (ATIbug) {
 		// cursor-updating is very flaky when this bug is
@@ -2008,11 +2032,11 @@ void LLWindowSDL::setCursor(ECursorType cursor)
 		return;
 	}
 
-	if (mCurrentCursor != cursor)
+	if (mCurrentCursor != mNextCursor)
 	{
-		if (cursor < UI_CURSOR_COUNT)
+		if (mNextCursor < UI_CURSOR_COUNT)
 		{
-			SDL_Cursor *sdlcursor = mSDLCursors[cursor];
+			SDL_Cursor *sdlcursor = mSDLCursors[mNextCursor];
 			// Try to default to the arrow for any cursors that
 			// did not load correctly.
 			if (!sdlcursor && mSDLCursors[UI_CURSOR_ARROW])
@@ -2020,9 +2044,9 @@ void LLWindowSDL::setCursor(ECursorType cursor)
 			if (sdlcursor)
 				SDL_SetCursor(sdlcursor);
 		} else {
-			llwarns << "Tried to set invalid cursor number " << cursor << llendl;
+			llwarns << "Tried to set invalid cursor number " << mNextCursor << llendl;
 		}
-		mCurrentCursor = cursor;
+		mCurrentCursor = mNextCursor;
 	}
 }
 
diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h
index fa544b16cef171ff8b6097c5db880a6a6ff9da6c..59719e404625d1c80e465f04641ec85d0bacda67 100644
--- a/indra/llwindow/llwindowsdl.h
+++ b/indra/llwindow/llwindowsdl.h
@@ -63,7 +63,7 @@ class LLWindowSDL : public LLWindow
 	/*virtual*/ BOOL getSize(LLCoordScreen *size);
 	/*virtual*/ BOOL getSize(LLCoordWindow *size);
 	/*virtual*/ BOOL setPosition(LLCoordScreen position);
-	/*virtual*/ BOOL setSize(LLCoordScreen size);
+	/*virtual*/ BOOL setSizeImpl(LLCoordScreen size);
 	/*virtual*/ BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp = NULL);
 	/*virtual*/ BOOL setCursorPosition(LLCoordWindow position);
 	/*virtual*/ BOOL getCursorPosition(LLCoordWindow *position);
@@ -72,10 +72,11 @@ class LLWindowSDL : public LLWindow
 	/*virtual*/ void showCursorFromMouseMove();
 	/*virtual*/ void hideCursorUntilMouseMove();
 	/*virtual*/ BOOL isCursorHidden();
-	/*virtual*/ void setCursor(ECursorType cursor);
+	/*virtual*/ void updateCursor();
 	/*virtual*/ void captureMouse();
 	/*virtual*/ void releaseMouse();
 	/*virtual*/ void setMouseClipping( BOOL b );
+	/*virtual*/	void setMinSize(U32 min_width, U32 min_height, bool enforce_immediately = true);
 
 	/*virtual*/ BOOL isClipboardTextAvailable();
 	/*virtual*/ BOOL pasteTextFromClipboard(LLWString &dst);
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 121c7880df8dd98d49910ffc608ef62ab85125f8..228fbefd194f0a21554e8d54e4c02919e2910861 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -41,6 +41,7 @@
 #include "llgl.h"
 #include "llstring.h"
 #include "lldir.h"
+#include "llglslshader.h"
 
 // System includes
 #include <commdlg.h>
@@ -861,7 +862,7 @@ BOOL LLWindowWin32::setPosition(const LLCoordScreen position)
 	return TRUE;
 }
 
-BOOL LLWindowWin32::setSize(const LLCoordScreen size)
+BOOL LLWindowWin32::setSizeImpl(const LLCoordScreen size)
 {
 	LLCoordScreen position;
 
@@ -1031,6 +1032,8 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
 		mhInstance,
 		NULL);
 
+	LL_INFOS("Window") << "window is created." << llendl ;
+
 	//-----------------------------------------------------------------------
 	// Create GL drawing context
 	//-----------------------------------------------------------------------
@@ -1080,6 +1083,37 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
 		return FALSE;
 	}
 
+	// (EXP-1765) dump pixel data to see if there is a pattern that leads to unreproducible crash
+	LL_INFOS("Window") << "--- begin pixel format dump ---" << llendl ;
+	LL_INFOS("Window") << "pixel_format is " << pixel_format << llendl ;
+	LL_INFOS("Window") << "pfd.nSize:            " << pfd.nSize << llendl ;
+	LL_INFOS("Window") << "pfd.nVersion:         " << pfd.nVersion << llendl ;
+	LL_INFOS("Window") << "pfd.dwFlags:          0x" << std::hex << pfd.dwFlags << std::dec << llendl ;
+	LL_INFOS("Window") << "pfd.iPixelType:       " << (int)pfd.iPixelType << llendl ;
+	LL_INFOS("Window") << "pfd.cColorBits:       " << (int)pfd.cColorBits << llendl ;
+	LL_INFOS("Window") << "pfd.cRedBits:         " << (int)pfd.cRedBits << llendl ;
+	LL_INFOS("Window") << "pfd.cRedShift:        " << (int)pfd.cRedShift << llendl ;
+	LL_INFOS("Window") << "pfd.cGreenBits:       " << (int)pfd.cGreenBits << llendl ;
+	LL_INFOS("Window") << "pfd.cGreenShift:      " << (int)pfd.cGreenShift << llendl ;
+	LL_INFOS("Window") << "pfd.cBlueBits:        " << (int)pfd.cBlueBits << llendl ;
+	LL_INFOS("Window") << "pfd.cBlueShift:       " << (int)pfd.cBlueShift << llendl ;
+	LL_INFOS("Window") << "pfd.cAlphaBits:       " << (int)pfd.cAlphaBits << llendl ;
+	LL_INFOS("Window") << "pfd.cAlphaShift:      " << (int)pfd.cAlphaShift << llendl ;
+	LL_INFOS("Window") << "pfd.cAccumBits:       " << (int)pfd.cAccumBits << llendl ;
+	LL_INFOS("Window") << "pfd.cAccumRedBits:    " << (int)pfd.cAccumRedBits << llendl ;
+	LL_INFOS("Window") << "pfd.cAccumGreenBits:  " << (int)pfd.cAccumGreenBits << llendl ;
+	LL_INFOS("Window") << "pfd.cAccumBlueBits:   " << (int)pfd.cAccumBlueBits << llendl ;
+	LL_INFOS("Window") << "pfd.cAccumAlphaBits:  " << (int)pfd.cAccumAlphaBits << llendl ;
+	LL_INFOS("Window") << "pfd.cDepthBits:       " << (int)pfd.cDepthBits << llendl ;
+	LL_INFOS("Window") << "pfd.cStencilBits:     " << (int)pfd.cStencilBits << llendl ;
+	LL_INFOS("Window") << "pfd.cAuxBuffers:      " << (int)pfd.cAuxBuffers << llendl ;
+	LL_INFOS("Window") << "pfd.iLayerType:       " << (int)pfd.iLayerType << llendl ;
+	LL_INFOS("Window") << "pfd.bReserved:        " << (int)pfd.bReserved << llendl ;
+	LL_INFOS("Window") << "pfd.dwLayerMask:      " << pfd.dwLayerMask << llendl ;
+	LL_INFOS("Window") << "pfd.dwVisibleMask:    " << pfd.dwVisibleMask << llendl ;
+	LL_INFOS("Window") << "pfd.dwDamageMask:     " << pfd.dwDamageMask << llendl ;
+	LL_INFOS("Window") << "--- end pixel format dump ---" << llendl ;
+
 	if (pfd.cColorBits < 32)
 	{
 		close();
@@ -1120,8 +1154,10 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
 		return FALSE;
 	}
 
-	gGLManager.initWGL();
+	LL_INFOS("Window") << "Drawing context is created." << llendl ;
 
+	gGLManager.initWGL();
+	
 	if (wglChoosePixelFormatARB)
 	{
 		// OK, at this point, use the ARB wglChoosePixelFormatsARB function to see if we
@@ -1256,7 +1292,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
 			LL_INFOS("Window") << "Choosing pixel formats: " << num_formats << " pixel formats returned" << LL_ENDL;
 		}
 
-		
+		LL_INFOS("Window") << "pixel formats done." << llendl ;
 
 		S32 swap_method = 0;
 		S32 cur_format = num_formats-1;
@@ -1306,6 +1342,8 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
 			mhInstance,
 			NULL);
 
+		LL_INFOS("Window") << "recreate window done." << llendl ;
+
 		if (!(mhDC = GetDC(mWindowHandle)))
 		{
 			close();
@@ -1378,7 +1416,53 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
 		return FALSE;
 	}
 
-	if (!(mhRC = wglCreateContext(mhDC)))
+	mhRC = 0;
+	if (wglCreateContextAttribsARB)
+	{ //attempt to create a specific versioned context
+		S32 attribs[] = 
+		{ //start at 4.2
+			WGL_CONTEXT_MAJOR_VERSION_ARB, 4,
+			WGL_CONTEXT_MINOR_VERSION_ARB, 2,
+			WGL_CONTEXT_PROFILE_MASK_ARB,  LLRender::sGLCoreProfile ? WGL_CONTEXT_CORE_PROFILE_BIT_ARB : WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB,
+			WGL_CONTEXT_FLAGS_ARB, gDebugGL ? WGL_CONTEXT_DEBUG_BIT_ARB : 0,
+			0
+		};
+
+		bool done = false;
+		while (!done)
+		{
+			mhRC = wglCreateContextAttribsARB(mhDC, mhRC, attribs);
+
+			if (!mhRC)
+			{
+				if (attribs[3] > 0)
+				{ //decrement minor version
+					attribs[3]--;
+				}
+				else if (attribs[1] > 3)
+				{ //decrement major version and start minor version over at 3
+					attribs[1]--;
+					attribs[3] = 3;
+				}
+				else
+				{ //we reached 3.0 and still failed, bail out
+					done = true;
+				}
+			}
+			else
+			{
+				llinfos << "Created OpenGL " << llformat("%d.%d", attribs[1], attribs[3]) << " context." << llendl;
+				done = true;
+
+				if (LLRender::sGLCoreProfile)
+				{
+					LLGLSLShader::sNoFixedFunction = true;
+				}
+			}
+		}
+	}
+
+	if (!mhRC && !(mhRC = wglCreateContext(mhDC)))
 	{
 		close();
 		OSMessageBox(mCallbacks->translateString("MBGLContextErr"), mCallbacks->translateString("MBError"), OSMB_OK);
@@ -1398,7 +1482,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
 		OSMessageBox(mCallbacks->translateString("MBVideoDrvErr"), mCallbacks->translateString("MBError"), OSMB_OK);
 		return FALSE;
 	}
-
+	
 	// Disable vertical sync for swap
 	if (disable_vsync && wglSwapIntervalEXT)
 	{
@@ -1614,18 +1698,18 @@ void LLWindowWin32::initCursors()
 
 
 
-void LLWindowWin32::setCursor(ECursorType cursor)
+void LLWindowWin32::updateCursor()
 {
-	if (cursor == UI_CURSOR_ARROW
+	if (mNextCursor == UI_CURSOR_ARROW
 		&& mBusyCount > 0)
 	{
-		cursor = UI_CURSOR_WORKING;
+		mNextCursor = UI_CURSOR_WORKING;
 	}
 
-	if( mCurrentCursor != cursor )
+	if( mCurrentCursor != mNextCursor )
 	{
-		mCurrentCursor = cursor;
-		SetCursor( mCursor[cursor] );
+		mCurrentCursor = mNextCursor;
+		SetCursor( mCursor[mNextCursor] );
 	}
 }
 
@@ -1663,7 +1747,7 @@ void LLWindowWin32::gatherInput()
 
 	LLMemType m1(LLMemType::MTYPE_GATHER_INPUT);
 
-	while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) && msg_count < MAX_MESSAGE_PER_UPDATE)
+	while ((msg_count < MAX_MESSAGE_PER_UPDATE) && PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
 	{
 		mCallbacks->handlePingWatchdog(this, "Main:TranslateGatherInput");
 		TranslateMessage(&msg);
@@ -1707,6 +1791,8 @@ void LLWindowWin32::gatherInput()
 
 	mInputProcessingPaused = FALSE;
 
+	updateCursor();
+
 	// clear this once we've processed all mouse messages that might have occurred after
 	// we slammed the mouse position
 	mMousePositionModified = FALSE;
@@ -2354,6 +2440,14 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
 				return 0;
 			}
 
+		case WM_GETMINMAXINFO:
+			{
+				LPMINMAXINFO min_max = (LPMINMAXINFO)l_param;
+				min_max->ptMinTrackSize.x = window_imp->mMinWindowWidth;
+				min_max->ptMinTrackSize.y = window_imp->mMinWindowHeight;
+				return 0;
+			}
+
 		case WM_SIZE:
 			{
 				window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_SIZE");
@@ -2896,7 +2990,6 @@ BOOL LLWindowWin32::resetDisplayResolution()
 
 void LLWindowWin32::swapBuffers()
 {
-	glFinish();
 	SwapBuffers(mhDC);
 }
 
diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h
index 387e4cbdb65a8767ecf8ddf220b4438669ff6111..b3602be8b7bad98b920b32c645a23ec345fad3aa 100644
--- a/indra/llwindow/llwindowwin32.h
+++ b/indra/llwindow/llwindowwin32.h
@@ -57,7 +57,7 @@ class LLWindowWin32 : public LLWindow
 	/*virtual*/ BOOL getSize(LLCoordScreen *size);
 	/*virtual*/ BOOL getSize(LLCoordWindow *size);
 	/*virtual*/ BOOL setPosition(LLCoordScreen position);
-	/*virtual*/ BOOL setSize(LLCoordScreen size);
+	/*virtual*/ BOOL setSizeImpl(LLCoordScreen size);
 	/*virtual*/ BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp = NULL);
 	/*virtual*/ BOOL setCursorPosition(LLCoordWindow position);
 	/*virtual*/ BOOL getCursorPosition(LLCoordWindow *position);
@@ -66,7 +66,7 @@ class LLWindowWin32 : public LLWindow
 	/*virtual*/ void showCursorFromMouseMove();
 	/*virtual*/ void hideCursorUntilMouseMove();
 	/*virtual*/ BOOL isCursorHidden();
-	/*virtual*/ void setCursor(ECursorType cursor);
+	/*virtual*/ void updateCursor();
 	/*virtual*/ ECursorType getCursor() const;
 	/*virtual*/ void captureMouse();
 	/*virtual*/ void releaseMouse();
diff --git a/indra/llxml/llcontrol.h b/indra/llxml/llcontrol.h
index 050d4b729f5a4aa3b3a3755e2181efbd9e8ee8d3..bf38a8b062dbcddacdf34e3faa751abe0ecf3960 100644
--- a/indra/llxml/llcontrol.h
+++ b/indra/llxml/llcontrol.h
@@ -185,9 +185,10 @@ class LLControlGroup : public LLInstanceTracker<LLControlGroup, std::string>
 	ctrl_name_table_t mNameTable;
 	std::string mTypeString[TYPE_COUNT];
 
+public:
 	eControlType typeStringToEnum(const std::string& typestr);
 	std::string typeEnumToString(eControlType typeenum);	
-public:
+
 	LLControlGroup(const std::string& name);
 	~LLControlGroup();
 	void cleanup();
diff --git a/indra/llxml/llxmlnode.cpp b/indra/llxml/llxmlnode.cpp
index 9f1e249ddda37f0f9a6d40d53f3d4857061951d3..2b4a0fc2a1eab6431fd10e936fb327b9ec2d8285 100644
--- a/indra/llxml/llxmlnode.cpp
+++ b/indra/llxml/llxmlnode.cpp
@@ -693,7 +693,7 @@ bool LLXMLNode::parseFile(const std::string& filename, LLXMLNodePtr& node, LLXML
 	LLFILE* fp = LLFile::fopen(filename, "rb");		/* Flawfinder: ignore */
 	if (fp == NULL)
 	{
-		node = new LLXMLNode();
+		node = NULL ;
 		return false;
 	}
 	fseek(fp, 0, SEEK_END);
@@ -746,7 +746,7 @@ bool LLXMLNode::parseBuffer(
 	{
 		llwarns << "Parse failure - wrong number of top-level nodes xml."
 				<< llendl;
-		node = new LLXMLNode();
+		node = NULL ;
 		return false;
 	}
 
@@ -805,7 +805,7 @@ bool LLXMLNode::parseStream(
 	{
 		llwarns << "Parse failure - wrong number of top-level nodes xml."
 				<< llendl;
-		node = new LLXMLNode();
+		node = NULL;
 		return false;
 	}
 
@@ -1206,7 +1206,7 @@ bool LLXMLNode::getChild(const LLStringTableEntry* name, LLXMLNodePtr& node, BOO
 	{
 		return mDefault->getChild(name, node, FALSE);
 	}
-	node = new LLXMLNode();
+	node = NULL;
 	return false;
 }
 
@@ -1277,7 +1277,7 @@ bool LLXMLNode::getAttribute(const LLStringTableEntry* name, LLXMLNodePtr& node,
 	{
 		return mDefault->getAttribute(name, node, FALSE);
 	}
-	node = new LLXMLNode();
+	
 	return false;
 }
 
diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp
index c024fd405e7c947dd5d9de13d66b226b84eafeb4..db72aa19b98ce2127e7892ff9cf1c12e12a8cb7b 100644
--- a/indra/llxuixml/llinitparam.cpp
+++ b/indra/llxuixml/llinitparam.cpp
@@ -40,7 +40,7 @@ namespace LLInitParam
 	{
 		const U8* my_addr = reinterpret_cast<const U8*>(this);
 		const U8* block_addr = reinterpret_cast<const U8*>(enclosing_block);
-		mEnclosingBlockOffset = 0x7FFFffff & ((U32)(my_addr - block_addr));
+		mEnclosingBlockOffset = 0x7FFFffff & (U32)(my_addr - block_addr);
 	}
 
 	//
@@ -62,7 +62,6 @@ namespace LLInitParam
 		mInspectFunc(inspect_func),
 		mMinCount(min_count),
 		mMaxCount(max_count),
-		mGeneration(0),
 		mUserData(NULL)
 	{}
 
@@ -75,7 +74,6 @@ namespace LLInitParam
 		mInspectFunc(NULL),
 		mMinCount(0),
 		mMaxCount(0),
-		mGeneration(0),
 		mUserData(NULL)
 	{}
 
@@ -87,8 +85,6 @@ namespace LLInitParam
 	//
 	// Parser
 	//
-	S32 Parser::sNextParseGeneration = 0;
-
 	Parser::~Parser()
 	{}
 
@@ -122,16 +118,6 @@ namespace LLInitParam
 		mCurrentBlockPtr(NULL)
 	{}
 
-	//
-	// BaseBlock
-	//
-	BaseBlock::BaseBlock()
-	:	mChangeVersion(0)
-	{}
-
-	BaseBlock::~BaseBlock()
-	{}
-
 	// called by each derived class in least to most derived order
 	void BaseBlock::init(BlockDescriptor& descriptor, BlockDescriptor& base_descriptor, size_t block_size)
 	{
@@ -162,9 +148,9 @@ namespace LLInitParam
 		return (param_address - baseblock_address);
 	}
 
-	bool BaseBlock::submitValue(const Parser::name_stack_t& name_stack, Parser& p, bool silent)
+	bool BaseBlock::submitValue(Parser::name_stack_t& name_stack, Parser& p, bool silent)
 	{
-		if (!deserializeBlock(p, std::make_pair(name_stack.begin(), name_stack.end()), -1))
+		if (!deserializeBlock(p, std::make_pair(name_stack.begin(), name_stack.end()), true))
 		{
 			if (!silent)
 			{
@@ -194,7 +180,7 @@ namespace LLInitParam
 		return true;
 	}
 
-	void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t name_stack, const LLInitParam::BaseBlock* diff_block) const
+	void BaseBlock::serializeBlock(Parser& parser, Parser::name_stack_t& name_stack, const LLInitParam::BaseBlock* diff_block) const
 	{
 		// named param is one like LLView::Params::follows
 		// unnamed param is like LLView::Params::rect - implicit
@@ -213,8 +199,7 @@ namespace LLInitParam
 				// each param descriptor remembers its serial number
 				// so we can inspect the same param under different names
 				// and see that it has the same number
-				(*it)->mGeneration = parser.newParseGeneration();
-				name_stack.push_back(std::make_pair("", (*it)->mGeneration));
+				name_stack.push_back(std::make_pair("", true));
 				serialize_func(*param, parser, name_stack, diff_param);
 				name_stack.pop_back();
 			}
@@ -250,12 +235,7 @@ namespace LLInitParam
 					continue;
 				}
 
-				if (!duplicate)
-				{
-					it->second->mGeneration = parser.newParseGeneration();
-				}
-
-				name_stack.push_back(std::make_pair(it->first, it->second->mGeneration));
+				name_stack.push_back(std::make_pair(it->first, !duplicate));
 				const Param* diff_param = diff_block ? diff_block->getParamFromHandle(param_handle) : NULL;
 				serialize_func(*param, parser, name_stack, diff_param);
 				name_stack.pop_back();
@@ -278,8 +258,7 @@ namespace LLInitParam
 			ParamDescriptor::inspect_func_t inspect_func = (*it)->mInspectFunc;
 			if (inspect_func)
 			{
-				(*it)->mGeneration = parser.newParseGeneration();
-				name_stack.push_back(std::make_pair("", (*it)->mGeneration));
+				name_stack.push_back(std::make_pair("", true));
 				inspect_func(*param, parser, name_stack, (*it)->mMinCount, (*it)->mMaxCount);
 				name_stack.pop_back();
 			}
@@ -307,11 +286,7 @@ namespace LLInitParam
 					}
 				}
 
-				if (!duplicate)
-				{
-					it->second->mGeneration = parser.newParseGeneration();
-				}
-				name_stack.push_back(std::make_pair(it->first, it->second->mGeneration));
+				name_stack.push_back(std::make_pair(it->first, !duplicate));
 				inspect_func(*param, parser, name_stack, it->second->mMinCount, it->second->mMaxCount);
 				name_stack.pop_back();
 			}
@@ -320,16 +295,18 @@ namespace LLInitParam
 		return true;
 	}
 
-	bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, S32 parent_generation)
+	bool BaseBlock::deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack_range, bool ignored)
 	{
 		BlockDescriptor& block_data = mostDerivedBlockDescriptor();
-		bool names_left = name_stack.first != name_stack.second;
+		bool names_left = name_stack_range.first != name_stack_range.second;
 
-		S32 parse_generation = name_stack.first == name_stack.second ? -1 : name_stack.first->second;
+		bool new_name = names_left
+						? name_stack_range.first->second
+						: true;
 
 		if (names_left)
 		{
-			const std::string& top_name = name_stack.first->first;
+			const std::string& top_name = name_stack_range.first->first;
 
 			ParamDescriptor::deserialize_func_t deserialize_func = NULL;
 			Param* paramp = NULL;
@@ -341,9 +318,18 @@ namespace LLInitParam
 				paramp = getParamFromHandle(found_it->second->mParamHandle);
 				deserialize_func = found_it->second->mDeserializeFunc;
 					
-				Parser::name_stack_range_t new_name_stack(name_stack.first, name_stack.second);
+				Parser::name_stack_range_t new_name_stack(name_stack_range.first, name_stack_range.second);
 				++new_name_stack.first;
-				return deserialize_func(*paramp, p, new_name_stack, parse_generation);
+				if (deserialize_func(*paramp, p, new_name_stack, new_name))
+				{
+					// value is no longer new, we know about it now
+					name_stack_range.first->second = false;
+					return true;
+				}
+				else
+				{
+					return false;
+				}
 			}
 		}
 
@@ -355,7 +341,7 @@ namespace LLInitParam
 			Param* paramp = getParamFromHandle((*it)->mParamHandle);
 			ParamDescriptor::deserialize_func_t deserialize_func = (*it)->mDeserializeFunc;
 
-			if (deserialize_func && deserialize_func(*paramp, p, name_stack, parse_generation))
+			if (deserialize_func && deserialize_func(*paramp, p, name_stack_range, new_name))
 			{
 				return true;
 			}
@@ -365,7 +351,7 @@ namespace LLInitParam
 		// verify by calling readValue with NoParamValue type, an inherently unparseable type
 		if (!names_left)
 		{
-			NoParamValue no_value;
+			Flag no_value;
 			return p.readValue(no_value);
 		}
 
@@ -431,14 +417,6 @@ namespace LLInitParam
 		}
 	}
 
-	void BaseBlock::paramChanged(const Param& changed_param, bool user_provided)
-	{ 
-		if (user_provided)
-		{
-			mChangeVersion++;
-		}
-	}
-
 	const std::string& BaseBlock::getParamName(const BlockDescriptor& block_data, const Param* paramp) const
 	{
 		param_handle_t handle = getHandleFromParam(paramp);
@@ -482,6 +460,7 @@ namespace LLInitParam
 			if (merge_func)
 			{
 				Param* paramp = getParamFromHandle((*it)->mParamHandle);
+				llassert(paramp->mEnclosingBlockOffset == (*it)->mParamHandle);
 				some_param_changed |= merge_func(*paramp, *other_paramp, overwrite);
 			}
 		}
diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h
index 9d0fe781ce6ebb5f4a5f38edc866d0ef22d089cc..ab209577609b8efb728efd8c8cb7f2df5d0ba592 100644
--- a/indra/llxuixml/llinitparam.h
+++ b/indra/llxuixml/llinitparam.h
@@ -38,6 +38,9 @@
 
 namespace LLInitParam
 {
+	// used to indicate no matching value to a given name when parsing
+	struct Flag{};
+
 	template<typename T> const T& defaultValue() { static T value; return value; }
 
 	template <typename T, bool IS_BOOST_FUNCTION = boost::is_convertible<T, boost::function_base>::value >
@@ -48,7 +51,7 @@ namespace LLInitParam
 			return a == b;
 		}
     };
-    
+
 	// boost function types are not comparable
 	template<typename T>
 	struct ParamCompare<T, true>
@@ -65,6 +68,13 @@ namespace LLInitParam
 		static bool equals(const LLSD &a, const LLSD &b) { return false; }
 	};
 
+	template<>
+	struct ParamCompare<Flag, false>
+	{
+		static bool equals(const Flag& a, const Flag& b) { return false; }
+	};
+
+
 	// helper functions and classes
 	typedef ptrdiff_t param_handle_t;
 
@@ -73,11 +83,15 @@ namespace LLInitParam
 	template <typename T>
 	class TypeValues
 	{
+	private:
+		struct Inaccessable{};
 	public:
 		typedef std::map<std::string, T> value_name_map_t;
+		typedef Inaccessable name_t;
 
 		void setValueName(const std::string& key) {}
 		std::string getValueName() const { return ""; }
+		std::string calcValueName(const T& value) const { return ""; }
 		void clearValueName() const {}
 
 		static bool getValueFromName(const std::string& name, T& value)
@@ -103,6 +117,7 @@ namespace LLInitParam
 	{
 	public:
 		typedef typename std::map<std::string, T> value_name_map_t;
+		typedef std::string name_t;
 
 		//TODO: cache key by index to save on param block size
 		void setValueName(const std::string& value_name) 
@@ -115,6 +130,22 @@ namespace LLInitParam
 			return mValueName; 
 		}
 
+		std::string calcValueName(const T& value) const
+		{
+			value_name_map_t* map = getValueNames();
+			for (typename value_name_map_t::iterator it = map->begin(), end_it = map->end();
+				it != end_it;
+				++it)
+			{
+				if (ParamCompare<T>::equals(it->second, value))
+				{
+					return it->first;
+				}
+			}
+
+			return "";
+		}
+
 		void clearValueName() const
 		{
 			mValueName.clear();
@@ -188,13 +219,13 @@ namespace LLInitParam
 			}
 		};
 
-		typedef std::vector<std::pair<std::string, S32> >								name_stack_t;
-		typedef std::pair<name_stack_t::const_iterator, name_stack_t::const_iterator>	name_stack_range_t;
-		typedef std::vector<std::string>												possible_values_t;
+		typedef std::vector<std::pair<std::string, bool> >					name_stack_t;
+		typedef std::pair<name_stack_t::iterator, name_stack_t::iterator>	name_stack_range_t;
+		typedef std::vector<std::string>									possible_values_t;
 
 		typedef bool (*parser_read_func_t)(Parser& parser, void* output);
-		typedef bool (*parser_write_func_t)(Parser& parser, const void*, const name_stack_t&);
-		typedef boost::function<void (const name_stack_t&, S32, S32, const possible_values_t*)>	parser_inspect_func_t;
+		typedef bool (*parser_write_func_t)(Parser& parser, const void*, name_stack_t&);
+		typedef boost::function<void (name_stack_t&, S32, S32, const possible_values_t*)>	parser_inspect_func_t;
 
 		typedef std::map<const std::type_info*, parser_read_func_t, CompareTypeID>		parser_read_func_map_t;
 		typedef std::map<const std::type_info*, parser_write_func_t, CompareTypeID>		parser_write_func_map_t;
@@ -202,7 +233,6 @@ namespace LLInitParam
 
 		Parser(parser_read_func_map_t& read_map, parser_write_func_map_t& write_map, parser_inspect_func_map_t& inspect_map)
 		:	mParseSilently(false),
-			mParseGeneration(sNextParseGeneration),
 			mParserReadFuncs(&read_map),
 			mParserWriteFuncs(&write_map),
 			mParserInspectFuncs(&inspect_map)
@@ -219,7 +249,7 @@ namespace LLInitParam
 		    return false;
 	    }
 
-		template <typename T> bool writeValue(const T& param, const name_stack_t& name_stack)
+		template <typename T> bool writeValue(const T& param, name_stack_t& name_stack)
 		{
 		    parser_write_func_map_t::iterator found_it = mParserWriteFuncs->find(&typeid(T));
 		    if (found_it != mParserWriteFuncs->end())
@@ -230,7 +260,7 @@ namespace LLInitParam
 		}
 
 		// dispatch inspection to registered inspection functions, for each parameter in a param block
-		template <typename T> bool inspectValue(const name_stack_t& name_stack, S32 min_count, S32 max_count, const possible_values_t* possible_values)
+		template <typename T> bool inspectValue(name_stack_t& name_stack, S32 min_count, S32 max_count, const possible_values_t* possible_values)
 		{
 		    parser_inspect_func_map_t::iterator found_it = mParserInspectFuncs->find(&typeid(T));
 		    if (found_it != mParserInspectFuncs->end())
@@ -246,10 +276,6 @@ namespace LLInitParam
 		virtual void parserError(const std::string& message);
 		void setParseSilently(bool silent) { mParseSilently = silent; }
 
-		S32 getParseGeneration() { return mParseGeneration; }
-		S32 newParseGeneration() { return mParseGeneration = ++sNextParseGeneration; }
-
-
 	protected:
 		template <typename T>
 		void registerParserFuncs(parser_read_func_t read_func, parser_write_func_t write_func = NULL)
@@ -270,44 +296,9 @@ namespace LLInitParam
 		parser_read_func_map_t*		mParserReadFuncs;
 		parser_write_func_map_t*	mParserWriteFuncs;
 		parser_inspect_func_map_t*	mParserInspectFuncs;
-		S32	mParseGeneration;
-
-		static S32					sNextParseGeneration;
 	};
 
-	// used to indicate no matching value to a given name when parsing
-	struct NoParamValue{};
-
-	class BaseBlock;
-
-	class Param
-	{
-	public:
-		// public to allow choice blocks to clear provided flag on stale choices
-		void setProvided(bool is_provided) { mIsProvided = is_provided; }
-
-	protected:
-		bool anyProvided() const { return mIsProvided; }
-
-		Param(class BaseBlock* enclosing_block);
-
-		// store pointer to enclosing block as offset to reduce space and allow for quick copying
-		class BaseBlock& enclosingBlock() const
-		{ 
-			const U8* my_addr = reinterpret_cast<const U8*>(this);
-			// get address of enclosing BLOCK class using stored offset to enclosing BaseBlock class
-			return *const_cast<class BaseBlock*>
-				(reinterpret_cast<const class BaseBlock*>
-					(my_addr - (ptrdiff_t)(S32)mEnclosingBlockOffset));
-		}
-
-	private:
-		friend class BaseBlock;
-
-		U32		mEnclosingBlockOffset:31;
-		U32		mIsProvided:1;
-
-	};
+	class Param;
 
 	// various callbacks and constraints associated with an individual param
 	struct ParamDescriptor
@@ -318,7 +309,7 @@ namespace LLInitParam
 		};
 
 		typedef bool(*merge_func_t)(Param&, const Param&, bool);
-		typedef bool(*deserialize_func_t)(Param&, Parser&, const Parser::name_stack_range_t&, S32);
+		typedef bool(*deserialize_func_t)(Param&, Parser&, const Parser::name_stack_range_t&, bool);
 		typedef void(*serialize_func_t)(const Param&, Parser&, Parser::name_stack_t&, const Param* diff_param);
 		typedef void(*inspect_func_t)(const Param&, Parser&, Parser::name_stack_t&, S32 min_count, S32 max_count);
 		typedef bool(*validation_func_t)(const Param*);
@@ -343,7 +334,6 @@ namespace LLInitParam
 		validation_func_t	mValidationFunc;
 		S32					mMinCount;
 		S32					mMaxCount;
-		S32					mGeneration;
 		S32					mNumRefs;
 		UserData*			mUserData;
 	};
@@ -367,56 +357,133 @@ namespace LLInitParam
 
 		typedef boost::unordered_map<const std::string, ParamDescriptorPtr>						param_map_t; 
 		typedef std::vector<ParamDescriptorPtr>													param_list_t; 
-		typedef std::list<ParamDescriptorPtr>														all_params_list_t;
+		typedef std::list<ParamDescriptorPtr>													all_params_list_t;
 		typedef std::vector<std::pair<param_handle_t, ParamDescriptor::validation_func_t> >		param_validation_list_t;
 
 		param_map_t						mNamedParams;			// parameters with associated names
 		param_list_t					mUnnamedParams;			// parameters with_out_ associated names
 		param_validation_list_t			mValidationList;		// parameters that must be validated
 		all_params_list_t				mAllParams;				// all parameters, owns descriptors
-
-		size_t					mMaxParamOffset;
-
-		EInitializationState	mInitializationState;	// whether or not static block data has been initialized
-		class BaseBlock*		mCurrentBlockPtr;		// pointer to block currently being constructed
+		size_t							mMaxParamOffset;
+		EInitializationState			mInitializationState;	// whether or not static block data has been initialized
+		class BaseBlock*				mCurrentBlockPtr;		// pointer to block currently being constructed
 	};
 
 	class BaseBlock
 	{
 	public:
+		//TODO: implement in terms of owned_ptr
+		template<typename T>
+		class Lazy
+		{
+		public:
+			Lazy()
+				: mPtr(NULL)
+			{}
+
+			~Lazy()
+			{
+				delete mPtr;
+			}
+
+			Lazy(const Lazy& other)
+			{
+				if (other.mPtr)
+				{
+					mPtr = new T(*other.mPtr);
+				}
+				else
+				{
+					mPtr = NULL;
+				}
+			}
+
+			Lazy<T>& operator = (const Lazy<T>& other)
+			{
+				if (other.mPtr)
+				{
+					mPtr = new T(*other.mPtr);
+				}
+				else
+				{
+					mPtr = NULL;
+				}
+				return *this;
+			}
+
+			bool empty() const
+			{
+				return mPtr == NULL;
+			}
+
+			void set(const T& other)
+			{
+				delete mPtr;
+				mPtr = new T(other);
+			}
+
+			const T& get() const
+			{
+				return ensureInstance();
+			}
+
+			T& get()
+			{
+				return ensureInstance();
+			}
+
+		private:
+			// lazily allocate an instance of T
+			T* ensureInstance() const
+			{
+				if (mPtr == NULL)
+				{
+					mPtr = new T();
+				}
+				return mPtr;
+			}
+
+		private:
+			// if you get a compilation error with this, that means you are using a forward declared struct for T
+			// unfortunately, the type traits we rely on don't work with forward declared typed
+			//static const int dummy = sizeof(T);
+
+			mutable T* mPtr;
+		};
+
 		// "Multiple" constraint types, put here in root class to avoid ambiguity during use
 		struct AnyAmount
 		{
-			static U32 minCount() { return 0; }
-			static U32 maxCount() { return U32_MAX; }
+			enum { minCount = 0 };
+			enum { maxCount = U32_MAX };
 		};
 
 		template<U32 MIN_AMOUNT>
 		struct AtLeast
 		{
-			static U32 minCount() { return MIN_AMOUNT; }
-			static U32 maxCount() { return U32_MAX; }
+			enum { minCount = MIN_AMOUNT };
+			enum { maxCount = U32_MAX };
 		};
 
 		template<U32 MAX_AMOUNT>
 		struct AtMost
 		{
-			static U32 minCount() { return 0; }
-			static U32 maxCount() { return MAX_AMOUNT; }
+			enum { minCount = 0 };
+			enum { maxCount = MAX_AMOUNT };
 		};
 
 		template<U32 MIN_AMOUNT, U32 MAX_AMOUNT>
 		struct Between
 		{
-			static U32 minCount() { return MIN_AMOUNT; }
-			static U32 maxCount() { return MAX_AMOUNT; }
+			enum { minCount = MIN_AMOUNT };
+			enum { maxCount = MAX_AMOUNT };
 		};
 
 		template<U32 EXACT_COUNT>
 		struct Exactly
 		{
-			static U32 minCount() { return EXACT_COUNT; }
-			static U32 maxCount() { return EXACT_COUNT; }
+			enum { minCount = EXACT_COUNT };
+			enum { maxCount = EXACT_COUNT };
 		};
 
 		// this typedef identifies derived classes as being blocks
@@ -424,9 +491,8 @@ namespace LLInitParam
 		LOG_CLASS(BaseBlock);
 		friend class Param;
 
-		BaseBlock();
-		virtual ~BaseBlock();
-		bool submitValue(const Parser::name_stack_t& name_stack, Parser& p, bool silent=false);
+		virtual ~BaseBlock() {}
+		bool submitValue(Parser::name_stack_t& name_stack, Parser& p, bool silent=false);
 
 		param_handle_t getHandleFromParam(const Param* param) const;
 		bool validateBlock(bool emit_errors = true) const;
@@ -448,12 +514,10 @@ namespace LLInitParam
 		void addSynonym(Param& param, const std::string& synonym);
 
 		// Blocks can override this to do custom tracking of changes
-		virtual void paramChanged(const Param& changed_param, bool user_provided);
-
-		S32 getLastChangeVersion() const { return mChangeVersion; }
+		virtual void paramChanged(const Param& changed_param, bool user_provided) {}
 
-		bool deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack, S32 generation);
-		void serializeBlock(Parser& p, Parser::name_stack_t name_stack = Parser::name_stack_t(), const BaseBlock* diff_block = NULL) const;
+		bool deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack_range, bool new_name);
+		void serializeBlock(Parser& p, Parser::name_stack_t& name_stack, const BaseBlock* diff_block = NULL) const;
 		bool inspectBlock(Parser& p, Parser::name_stack_t name_stack = Parser::name_stack_t(), S32 min_count = 0, S32 max_count = S32_MAX) const;
 
 		virtual const BlockDescriptor& mostDerivedBlockDescriptor() const { return selfBlockDescriptor(); }
@@ -479,16 +543,13 @@ namespace LLInitParam
 		void init(BlockDescriptor& descriptor, BlockDescriptor& base_descriptor, size_t block_size);
 
 
-		bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
+		bool mergeBlockParam(bool source_provided, bool dst_provided, BlockDescriptor& block_data, const BaseBlock& source, bool overwrite)
 		{
-			return mergeBlock(block_data, other, overwrite);
+			return mergeBlock(block_data, source, overwrite);
 		}
 		// take all provided params from other and apply to self
 		bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite);
 
-		// can be updated in getters
-		mutable S32				mChangeVersion;
-
 		static BlockDescriptor& selfBlockDescriptor()
 		{
 			static BlockDescriptor sBlockDescriptor;
@@ -499,18 +560,73 @@ namespace LLInitParam
 		const std::string& getParamName(const BlockDescriptor& block_data, const Param* paramp) const;
 	};
 
+	template<typename T>
+	struct ParamCompare<BaseBlock::Lazy<T>, false >
+	{
+		static bool equals(const BaseBlock::Lazy<T>& a, const BaseBlock::Lazy<T>& b) { return !a.empty() || !b.empty(); }
+	};
+
+	class Param
+	{
+	public:
+		void setProvided(bool is_provided = true)
+		{
+			mIsProvided = is_provided;
+			enclosingBlock().paramChanged(*this, is_provided);
+		}
+
+		Param& operator =(const Param& other)
+		{
+			mIsProvided = other.mIsProvided;
+			// don't change mEnclosingblockoffset
+			return *this;
+		}
+	protected:
+
+		bool anyProvided() const { return mIsProvided; }
+
+		Param(BaseBlock* enclosing_block);
+
+		// store pointer to enclosing block as offset to reduce space and allow for quick copying
+		BaseBlock& enclosingBlock() const
+		{ 
+			const U8* my_addr = reinterpret_cast<const U8*>(this);
+			// get address of enclosing BLOCK class using stored offset to enclosing BaseBlock class
+			return *const_cast<BaseBlock*>
+				(reinterpret_cast<const BaseBlock*>
+					(my_addr - (ptrdiff_t)(S32)mEnclosingBlockOffset));
+		}
+
+	private:
+		friend class BaseBlock;
+
+		U32		mEnclosingBlockOffset:31;
+		U32		mIsProvided:1;
+
+	};
+
 	// these templates allow us to distinguish between template parameters
 	// that derive from BaseBlock and those that don't
 	template<typename T, typename Void = void>
 	struct IsBlock
 	{
 		static const bool value = false;
+		struct EmptyBase {};
+		typedef EmptyBase base_class_t;
 	};
 
 	template<typename T>
 	struct IsBlock<T, typename T::baseblock_base_class_t>
 	{
 		static const bool value = true;
+		typedef BaseBlock base_class_t;
+	};
+
+	template<typename T>
+	struct IsBlock<BaseBlock::Lazy<T>, typename T::baseblock_base_class_t >
+	{
+		static const bool value = true;
+		typedef BaseBlock base_class_t;
 	};
 
 	template<typename T, typename NAME_VALUE_LOOKUP, bool VALUE_IS_BLOCK = IsBlock<T>::value>
@@ -518,9 +634,11 @@ namespace LLInitParam
 	{
 	public:
 		typedef const T&							value_assignment_t;
+		typedef T									value_t;
+		typedef ParamValue<T, NAME_VALUE_LOOKUP, VALUE_IS_BLOCK>	self_t;
 
 		ParamValue(): mValue() {}
-		ParamValue(const T& other) : mValue(other) {}
+		ParamValue(value_assignment_t other) : mValue(other) {}
 
 		void setValue(value_assignment_t val)
 		{
@@ -537,7 +655,32 @@ namespace LLInitParam
 			return mValue;
 		}
 
-	private:
+		operator value_assignment_t() const
+		{
+			return mValue;
+		}
+
+		value_assignment_t operator()() const
+		{
+			return mValue;
+		}
+
+		void operator ()(const typename NAME_VALUE_LOOKUP::name_t& name)
+		{
+			*this = name;
+		}
+
+		self_t& operator =(const typename NAME_VALUE_LOOKUP::name_t& name)
+		{
+			if (NAME_VALUE_LOOKUP::getValueFromName(name, mValue))
+			{
+				setValueName(name);
+			}
+
+			return *this;
+		}
+
+	protected:
 		T mValue;
 	};
 
@@ -548,25 +691,18 @@ namespace LLInitParam
 	{
 	public:
 		typedef const T&							value_assignment_t;
-
-		S32 			mKeyVersion;
-		mutable S32 	mValidatedVersion;
-		mutable bool 	mValidated; // lazy validation flag
+		typedef T									value_t;
+		typedef ParamValue<T, NAME_VALUE_LOOKUP, true>	self_t;
 
 		ParamValue() 
 		:	T(),
-			mKeyVersion(0),
-			mValidatedVersion(-1),
 			mValidated(false)
 		{}
 
-		ParamValue(const T& other)
+		ParamValue(value_assignment_t other)
 		:	T(other),
-			mKeyVersion(0),
-			mValidatedVersion(-1),
 			mValidated(false)
-		{
-		}
+		{}
 
 		void setValue(value_assignment_t val)
 		{
@@ -582,8 +718,85 @@ namespace LLInitParam
 		{
 			return *this;
 		}
+
+		operator value_assignment_t() const
+		{
+			return *this;
+		}
+		
+		value_assignment_t operator()() const
+		{
+			return *this;
+		}
+
+		void operator ()(const typename NAME_VALUE_LOOKUP::name_t& name)
+		{
+			*this = name;
+		}
+
+		self_t& operator =(const typename NAME_VALUE_LOOKUP::name_t& name)
+		{
+			if (NAME_VALUE_LOOKUP::getValueFromName(name, *this))
+			{
+				setValueName(name);
+			}
+
+			return *this;
+		}
+
+	protected:
+		mutable bool 	mValidated; // lazy validation flag
+	};
+
+	template<typename NAME_VALUE_LOOKUP>
+	class ParamValue<std::string, NAME_VALUE_LOOKUP, false>
+	: public NAME_VALUE_LOOKUP
+	{
+	public:
+		typedef const std::string&	value_assignment_t;
+		typedef std::string			value_t;
+		typedef ParamValue<std::string, NAME_VALUE_LOOKUP, false>	self_t;
+
+		ParamValue(): mValue() {}
+		ParamValue(value_assignment_t other) : mValue(other) {}
+
+		void setValue(value_assignment_t val)
+		{
+			if (NAME_VALUE_LOOKUP::getValueFromName(val, mValue))
+			{
+				NAME_VALUE_LOOKUP::setValueName(val);
+			}
+			else
+			{
+				mValue = val;
+			}
+		}
+
+		value_assignment_t getValue() const
+		{
+			return mValue;
+		}
+
+		std::string& getValue()
+		{
+			return mValue;
+		}
+
+		operator value_assignment_t() const
+		{
+			return mValue;
+		}
+
+		value_assignment_t operator()() const
+		{
+			return mValue;
+		}
+
+	protected:
+		std::string mValue;
 	};
 
+
 	template<typename T, typename NAME_VALUE_LOOKUP = TypeValues<T> >
 	struct ParamIterator
 	{
@@ -602,10 +815,12 @@ namespace LLInitParam
 		public ParamValue<T, NAME_VALUE_LOOKUP>
 	{
 	public:
-		typedef const T&																	value_assignment_t;
 		typedef	TypedParam<T, NAME_VALUE_LOOKUP, HAS_MULTIPLE_VALUES, VALUE_IS_BLOCK>		self_t;
-		typedef NAME_VALUE_LOOKUP															name_value_lookup_t;
 		typedef ParamValue<T, NAME_VALUE_LOOKUP>											param_value_t;
+		typedef typename param_value_t::value_assignment_t				value_assignment_t;
+		typedef NAME_VALUE_LOOKUP															name_value_lookup_t;
+
+		using param_value_t::operator();
 
 		TypedParam(BlockDescriptor& block_descriptor, const char* name, value_assignment_t value, ParamDescriptor::validation_func_t validate_func, S32 min_count, S32 max_count) 
 		:	Param(block_descriptor.mCurrentBlockPtr)
@@ -628,17 +843,16 @@ namespace LLInitParam
 
 		bool isProvided() const { return Param::anyProvided(); }
 
-		static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation) 
+		static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack_range, bool new_name)
 		{ 
 			self_t& typed_param = static_cast<self_t&>(param);
 			// no further names in stack, attempt to parse value now
-			if (name_stack.first == name_stack.second)
+			if (name_stack_range.first == name_stack_range.second)
 			{
 				if (parser.readValue(typed_param.getValue()))
 				{
 					typed_param.clearValueName();
-					typed_param.setProvided(true);
-					typed_param.enclosingBlock().paramChanged(param, true);
+					typed_param.setProvided();
 					return true;
 				}
 				
@@ -653,8 +867,7 @@ namespace LLInitParam
 						if (name_value_lookup_t::getValueFromName(name, typed_param.getValue()))
 						{
 							typed_param.setValueName(name);
-							typed_param.setProvided(true);
-							typed_param.enclosingBlock().paramChanged(param, true);
+							typed_param.setProvided();
 							return true;
 						}
 
@@ -671,7 +884,7 @@ namespace LLInitParam
 
 			if (!name_stack.empty())
 			{
-				name_stack.back().second = parser.newParseGeneration();
+				name_stack.back().second = true;
 			}
 
 			std::string key = typed_param.getValueName();
@@ -682,10 +895,7 @@ namespace LLInitParam
 			{
 				if (!diff_param || !ParamCompare<std::string>::equals(static_cast<const self_t*>(diff_param)->getValueName(), key))
 				{
-					if (!parser.writeValue(key, name_stack))
-					{
-						return;
-					}
+					parser.writeValue(key, name_stack);
 				}
 			}
 			// then try to serialize value directly
@@ -693,7 +903,11 @@ namespace LLInitParam
 			{
 				if (!parser.writeValue(typed_param.getValue(), name_stack)) 
 				{
-					return;
+					std::string calculated_key = typed_param.calcValueName(typed_param.getValue());
+					if (!diff_param || !ParamCompare<std::string>::equals(static_cast<const self_t*>(diff_param)->getValueName(), calculated_key))
+					{
+						parser.writeValue(calculated_key, name_stack);
+					}
 				}
 			}
 		}
@@ -711,19 +925,25 @@ namespace LLInitParam
 
 		void set(value_assignment_t val, bool flag_as_provided = true)
 		{
-			setValue(val);
 			param_value_t::clearValueName();
+			setValue(val);
 			setProvided(flag_as_provided);
-			Param::enclosingBlock().paramChanged(*this, flag_as_provided);
 		}
 
-		// implicit conversion
-		operator value_assignment_t() const { return param_value_t::getValue(); } 
-		// explicit conversion
-		value_assignment_t operator()() const { return param_value_t::getValue(); } 
+		self_t& operator =(const typename NAME_VALUE_LOOKUP::name_t& name)
+		{
+			return static_cast<self_t&>(param_value_t::operator =(name));
+		}
 
 	protected:
 
+		self_t& operator =(const self_t& other)
+		{
+			param_value_t::operator =(other);
+			Param::operator =(other);
+			return *this;
+		}
+
 		static bool mergeWith(Param& dst, const Param& src, bool overwrite)
 		{
 			const self_t& src_typed_param = static_cast<const self_t&>(src);
@@ -746,12 +966,12 @@ namespace LLInitParam
 		public ParamValue<T, NAME_VALUE_LOOKUP>
 	{
 	public:
-		typedef const T											value_const_t;
-		typedef T												value_t;
-		typedef value_const_t&									value_assignment_t;
+		typedef ParamValue<T, NAME_VALUE_LOOKUP>				param_value_t;
+		typedef typename param_value_t::value_assignment_t		value_assignment_t;
 		typedef TypedParam<T, NAME_VALUE_LOOKUP, false, true>	self_t;
 		typedef NAME_VALUE_LOOKUP								name_value_lookup_t;
-		typedef ParamValue<T, NAME_VALUE_LOOKUP>				param_value_t;
+
+		using param_value_t::operator();
 
 		TypedParam(BlockDescriptor& block_descriptor, const char* name, value_assignment_t value, ParamDescriptor::validation_func_t validate_func, S32 min_count, S32 max_count)
 		:	Param(block_descriptor.mCurrentBlockPtr),
@@ -771,15 +991,14 @@ namespace LLInitParam
 			}
 		}
 
-		static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation) 
+		static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack_range, bool new_name)
 		{ 
 			self_t& typed_param = static_cast<self_t&>(param);
 			// attempt to parse block...
-			if(typed_param.deserializeBlock(parser, name_stack, generation))
+			if(typed_param.deserializeBlock(parser, name_stack_range, new_name))
 			{
 				typed_param.clearValueName();
-				typed_param.enclosingBlock().paramChanged(param, true);
-				typed_param.setProvided(true);
+				typed_param.setProvided();
 				return true;
 			}
 
@@ -792,10 +1011,8 @@ namespace LLInitParam
 					// try to parse a per type named value
 					if (name_value_lookup_t::getValueFromName(name, typed_param.getValue()))
 					{
-						typed_param.enclosingBlock().paramChanged(param, true);
 						typed_param.setValueName(name);
-						typed_param.setProvided(true);
-						typed_param.mKeyVersion = typed_param.getLastChangeVersion();
+						typed_param.setProvided();
 						return true;
 					}
 
@@ -811,11 +1028,11 @@ namespace LLInitParam
 
 			if (!name_stack.empty())
 			{
-				name_stack.back().second = parser.newParseGeneration();
+				name_stack.back().second = true;
 			}
 
 			std::string key = typed_param.getValueName();
-			if (!key.empty() && typed_param.mKeyVersion == typed_param.getLastChangeVersion())
+			if (!key.empty())
 			{
 				if (!parser.writeValue(key, name_stack))
 				{
@@ -840,11 +1057,10 @@ namespace LLInitParam
 		bool isProvided() const 
 		{ 
 			// only validate block when it hasn't already passed validation with current data
-			if (Param::anyProvided() && param_value_t::mValidatedVersion < param_value_t::getLastChangeVersion())
+			if (Param::anyProvided() && !param_value_t::mValidated)
 			{
 				// a sub-block is "provided" when it has been filled in enough to be valid
 				param_value_t::mValidated = param_value_t::validateBlock(false);
-				param_value_t::mValidatedVersion = param_value_t::getLastChangeVersion();
 			}
 			return Param::anyProvided() && param_value_t::mValidated;
 		}
@@ -854,33 +1070,44 @@ namespace LLInitParam
 		{
 			setValue(val);
 			param_value_t::clearValueName();
-			// force revalidation of block by clearing known provided version
+			// force revalidation of block
 			// next call to isProvided() will update provision status based on validity
-			param_value_t::mValidatedVersion = -1;
+			param_value_t::mValidated = false;
 			setProvided(flag_as_provided);
-			Param::enclosingBlock().paramChanged(*this, flag_as_provided);
+		}
+
+		self_t& operator =(const typename NAME_VALUE_LOOKUP::name_t& name)
+		{
+			return static_cast<self_t&>(param_value_t::operator =(name));
 		}
 
 		// propagate changed status up to enclosing block
 		/*virtual*/ void paramChanged(const Param& changed_param, bool user_provided)
 		{ 
 			param_value_t::paramChanged(changed_param, user_provided);
-			Param::enclosingBlock().paramChanged(*this, user_provided);
 			if (user_provided)
 			{
 				// a child param has been explicitly changed
 				// so *some* aspect of this block is now provided
-				setProvided(true);
+				param_value_t::mValidated = false;
+				setProvided();
+				param_value_t::clearValueName();
+			}
+			else
+			{
+				Param::enclosingBlock().paramChanged(*this, user_provided);
 			}
 		}
 
-		// implicit conversion
-		operator value_assignment_t() const { return param_value_t::getValue(); } 
-		// explicit conversion
-		value_assignment_t operator()() const { return param_value_t::getValue(); } 
-
 	protected:
 
+		self_t& operator =(const self_t& other)
+		{
+			param_value_t::operator =(other);
+			Param::operator =(other);
+			return *this;
+		}
+
 		static bool mergeWith(Param& dst, const Param& src, bool overwrite)
 		{
 			const self_t& src_typed_param = static_cast<const self_t&>(src);
@@ -888,12 +1115,10 @@ namespace LLInitParam
 
 			if (src_typed_param.anyProvided())
 			{
-				bool param_provided = src_typed_param.isProvided() && (overwrite || !dst_typed_param.isProvided());
-				if (dst_typed_param.mergeBlockParam(param_provided, param_value_t::selfBlockDescriptor(), src_typed_param, overwrite))
+				if (dst_typed_param.mergeBlockParam(src_typed_param.isProvided(), dst_typed_param.isProvided(), param_value_t::selfBlockDescriptor(), src_typed_param, overwrite))
 				{
 					dst_typed_param.clearValueName();
 					dst_typed_param.setProvided(true);
-					dst_typed_param.enclosingBlock().paramChanged(dst_typed_param, true);
 					return true;
 				}
 			}
@@ -908,11 +1133,11 @@ namespace LLInitParam
 	{
 	public:
 		typedef TypedParam<VALUE_TYPE, NAME_VALUE_LOOKUP, true, false>		self_t;
-		typedef ParamValue<VALUE_TYPE, NAME_VALUE_LOOKUP>			param_value_t;
+		typedef ParamValue<VALUE_TYPE, NAME_VALUE_LOOKUP>					param_value_t;
 		typedef typename std::vector<param_value_t>							container_t;
 		typedef const container_t&											value_assignment_t;
 
-		typedef VALUE_TYPE													value_t;
+		typedef typename param_value_t::value_t								value_t;
 		typedef NAME_VALUE_LOOKUP											name_value_lookup_t;
 		
 		TypedParam(BlockDescriptor& block_descriptor, const char* name, value_assignment_t value, ParamDescriptor::validation_func_t validate_func, S32 min_count, S32 max_count) 
@@ -936,12 +1161,12 @@ namespace LLInitParam
 
 		bool isProvided() const { return Param::anyProvided(); }
 
-		static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation) 
+		static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack_range, bool new_name)
 		{ 
 			self_t& typed_param = static_cast<self_t&>(param);
 			value_t value;
 			// no further names in stack, attempt to parse value now
-			if (name_stack.first == name_stack.second)
+			if (name_stack_range.first == name_stack_range.second)
 			{
 				// attempt to read value directly
 				if (parser.readValue(value))
@@ -958,7 +1183,7 @@ namespace LLInitParam
 					if (parser.readValue(name))
 					{
 						// try to parse a per type named value
-						if (name_value_lookup_t::getValueFromName(name, typed_param.mValues))
+						if (name_value_lookup_t::getValueFromName(name, value))
 						{
 							typed_param.add(value);
 							typed_param.mValues.back().setValueName(name);
@@ -980,15 +1205,20 @@ namespace LLInitParam
 				it != end_it;
 				++it)
 			{
-				std::string key = it->getValue();
-				name_stack.back().second = parser.newParseGeneration();
+				std::string key = it->getValueName();
+				name_stack.back().second = true;
 
 				if(key.empty())
 				// not parsed via name values, write out value directly
 				{
-					if (!parser.writeValue(*it, name_stack))
+					bool value_written = parser.writeValue(*it, name_stack);
+					if (!value_written)
 					{
-						break;
+						std::string calculated_key = it->calcValueName(it->getValue());
+						if (!parser.writeValue(calculated_key, name_stack))
+						{
+							break;
+						}
 					}
 				}
 				else 
@@ -1014,26 +1244,39 @@ namespace LLInitParam
 		{
 			mValues = val;
 			setProvided(flag_as_provided);
-			Param::enclosingBlock().paramChanged(*this, flag_as_provided);
 		}
 
-		value_t& add()
+		param_value_t& add()
 		{
 			mValues.push_back(param_value_t(value_t()));
-			setProvided(true);
-			Param::enclosingBlock().paramChanged(*this, true);
+			Param::setProvided();
 			return mValues.back();
 		}
 
 		void add(const value_t& item)
 		{
-			mValues.push_back(param_value_t(item));
-			setProvided(true);
-			Param::enclosingBlock().paramChanged(*this, true);
+			param_value_t param_value;
+			param_value.setValue(item);
+			mValues.push_back(param_value);
+			setProvided();
+		}
+
+		void add(const typename name_value_lookup_t::name_t& name)
+		{
+			value_t value;
+
+			// try to parse a per type named value
+			if (name_value_lookup_t::getValueFromName(name, value))
+			{
+				add(value);
+				mValues.back().setValueName(name);
+			}
 		}
 
 		// implicit conversion
 		operator value_assignment_t() const { return mValues; } 
+		// explicit conversion		
+		value_assignment_t operator()() const { return mValues; }
 
 		typedef typename container_t::iterator iterator;
 		typedef typename container_t::const_iterator const_iterator;
@@ -1068,8 +1311,7 @@ namespace LLInitParam
 
 			if (src_typed_param.begin() != src_typed_param.end())
 			{
-				dst_typed_param.setProvided(true);
-				dst_typed_param.enclosingBlock().paramChanged(dst_typed_param, true);
+				dst_typed_param.setProvided();
 			}
 			return true;
 		}
@@ -1087,12 +1329,11 @@ namespace LLInitParam
 		typedef ParamValue<VALUE_TYPE, NAME_VALUE_LOOKUP>				param_value_t;
 		typedef typename std::vector<param_value_t>						container_t;
 		typedef const container_t&										value_assignment_t;
-		typedef VALUE_TYPE												value_t;
+		typedef typename param_value_t::value_t							value_t;
 		typedef NAME_VALUE_LOOKUP										name_value_lookup_t;
 
 		TypedParam(BlockDescriptor& block_descriptor, const char* name, value_assignment_t value, ParamDescriptor::validation_func_t validate_func, S32 min_count, S32 max_count) 
-		:	Param(block_descriptor.mCurrentBlockPtr),
-			mLastParseGeneration(0)
+		:	Param(block_descriptor.mCurrentBlockPtr)
 		{
 			std::copy(value.begin(), value.end(), back_inserter(mValues));
 
@@ -1112,13 +1353,12 @@ namespace LLInitParam
 
 		bool isProvided() const { return Param::anyProvided(); }
 
-		static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation) 
+		static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack_range, bool new_name) 
 		{ 
 			self_t& typed_param = static_cast<self_t&>(param);
 			bool new_value = false;
 
-			if (generation != typed_param.mLastParseGeneration 
-				|| typed_param.mValues.empty())
+			if (new_name || typed_param.mValues.empty())
 			{
 				new_value = true;
 				typed_param.mValues.push_back(value_t());
@@ -1127,14 +1367,9 @@ namespace LLInitParam
 			param_value_t& value = typed_param.mValues.back();
 
 			// attempt to parse block...
-			if(value.deserializeBlock(parser, name_stack, generation))
+			if(value.deserializeBlock(parser, name_stack_range, new_name))
 			{
-				if (new_value)
-				{	// successfully parsed new value, let's keep it
-					typed_param.mLastParseGeneration = generation;
-				}
-				typed_param.enclosingBlock().paramChanged(param, true);
-				typed_param.setProvided(true);
+				typed_param.setProvided();
 				return true;
 			}
 			else if(name_value_lookup_t::valueNamesExist())
@@ -1146,15 +1381,8 @@ namespace LLInitParam
 					// try to parse a per type named value
 					if (name_value_lookup_t::getValueFromName(name, value.getValue()))
 					{
-						if (new_value)
-						{	// successfully parsed new value, let's keep it
-							typed_param.mLastParseGeneration = generation;
-						}
-
 						typed_param.mValues.back().setValueName(name);
-						typed_param.mValues.back().mKeyVersion = value.getLastChangeVersion();
-						typed_param.enclosingBlock().paramChanged(param, true);
-						typed_param.setProvided(true);
+						typed_param.setProvided();
 						return true;
 					}
 
@@ -1178,10 +1406,10 @@ namespace LLInitParam
 				it != end_it;
 				++it)
 			{
-				name_stack.back().second = parser.newParseGeneration();
+				name_stack.back().second = true;
 
 				std::string key = it->getValueName();
-				if (!key.empty() && it->mKeyVersion == it->getLastChangeVersion())
+				if (!key.empty())
 				{
 					parser.writeValue(key, name_stack);
 				}
@@ -1204,26 +1432,37 @@ namespace LLInitParam
 		{
 			mValues = val;
 			setProvided(flag_as_provided);
-			Param::enclosingBlock().paramChanged(*this, flag_as_provided);
 		}
 
-		value_t& add()
+		param_value_t& add()
 		{
 			mValues.push_back(value_t());
-			setProvided(true);
-			Param::enclosingBlock().paramChanged(*this, true);
+			setProvided();
 			return mValues.back();
 		}
 
 		void add(const value_t& item)
 		{
 			mValues.push_back(item);
-			setProvided(true);
-			Param::enclosingBlock().paramChanged(*this, true);
+			setProvided();
+		}
+
+		void add(const typename name_value_lookup_t::name_t& name)
+		{
+			value_t value;
+
+			// try to parse a per type named value
+			if (name_value_lookup_t::getValueFromName(name, value))
+			{
+				add(value);
+				mValues.back().setValueName(name);
+			}
 		}
 
 		// implicit conversion
 		operator value_assignment_t() const { return mValues; } 
+		// explicit conversion
+		value_assignment_t operator()() const { return mValues; }
 
 		typedef typename container_t::iterator iterator;
 		typedef typename container_t::const_iterator const_iterator;
@@ -1266,43 +1505,43 @@ namespace LLInitParam
 
 			if (src_typed_param.begin() != src_typed_param.end())
 			{
-				dst_typed_param.setProvided(true);
-				dst_typed_param.enclosingBlock().paramChanged(dst_typed_param, true);
+				dst_typed_param.setProvided();
 			}
 
 			return true;
 		}
 
 		container_t			mValues;
-
-		S32			mLastParseGeneration;
 	};
 
-	template <typename DERIVED_BLOCK>
-	class Choice : public BaseBlock
+	template <typename DERIVED_BLOCK, typename BASE_BLOCK = BaseBlock>
+	class ChoiceBlock : public BASE_BLOCK
 	{
-		typedef Choice<DERIVED_BLOCK>	self_t;
-		typedef Choice<DERIVED_BLOCK>	enclosing_block_t;
+		typedef ChoiceBlock<DERIVED_BLOCK, BASE_BLOCK>	self_t;
+		typedef ChoiceBlock<DERIVED_BLOCK, BASE_BLOCK>	enclosing_block_t;
+		typedef BASE_BLOCK								base_block_t;
 		
 		LOG_CLASS(self_t);
 	public:
 		// take all provided params from other and apply to self
 		bool overwriteFrom(const self_t& other)
 		{
-			return mergeBlock(selfBlockDescriptor(), other, true);
+			return static_cast<DERIVED_BLOCK*>(this)->mergeBlock(selfBlockDescriptor(), other, true);
 		}
 
 		// take all provided params that are not already provided, and apply to self
 		bool fillFrom(const self_t& other)
 		{
-			return mergeBlock(selfBlockDescriptor(), other, false);
+			return static_cast<DERIVED_BLOCK*>(this)->mergeBlock(selfBlockDescriptor(), other, false);
 		}
 
-		bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const self_t& other, bool overwrite)
+		bool mergeBlockParam(bool source_provided, bool dest_provided, BlockDescriptor& block_data, const self_t& source, bool overwrite)
 		{
-			if (param_provided)
+			bool source_override = source_provided && (overwrite || !dest_provided);
+
+			if (source_override || source.mCurChoice == mCurChoice)
 			{
-				return mergeBlock(block_data, other, overwrite);
+				return mergeBlock(block_data, source, overwrite);
 			}
 			return false;
 		}
@@ -1311,35 +1550,35 @@ namespace LLInitParam
 		bool mergeBlock(BlockDescriptor& block_data, const self_t& other, bool overwrite)
 		{
 			mCurChoice = other.mCurChoice;
-			return BaseBlock::mergeBlock(selfBlockDescriptor(), other, overwrite);
+			return base_block_t::mergeBlock(selfBlockDescriptor(), other, overwrite);
 		}
 
 		// clear out old choice when param has changed
 		/*virtual*/ void paramChanged(const Param& changed_param, bool user_provided)
 		{ 
-			param_handle_t changed_param_handle = BaseBlock::getHandleFromParam(&changed_param);
+			param_handle_t changed_param_handle = base_block_t::getHandleFromParam(&changed_param);
 			// if we have a new choice...
 			if (changed_param_handle != mCurChoice)
 			{
 				// clear provided flag on previous choice
-				Param* previous_choice = BaseBlock::getParamFromHandle(mCurChoice);
+				Param* previous_choice = base_block_t::getParamFromHandle(mCurChoice);
 				if (previous_choice) 
 				{
 					previous_choice->setProvided(false);
 				}
 				mCurChoice = changed_param_handle;
 			}
-			BaseBlock::paramChanged(changed_param, user_provided);
+			base_block_t::paramChanged(changed_param, user_provided);
 		}
 
 		virtual const BlockDescriptor& mostDerivedBlockDescriptor() const { return selfBlockDescriptor(); }
 		virtual BlockDescriptor& mostDerivedBlockDescriptor() { return selfBlockDescriptor(); }
 
 	protected:
-		Choice()
+		ChoiceBlock()
 		:	mCurChoice(0)
 		{
-			BaseBlock::init(selfBlockDescriptor(), BaseBlock::selfBlockDescriptor(), sizeof(DERIVED_BLOCK));
+			BaseBlock::init(selfBlockDescriptor(), base_block_t::selfBlockDescriptor(), sizeof(DERIVED_BLOCK));
 		}
 
 		// Alternatives are mutually exclusive wrt other Alternatives in the same block.  
@@ -1349,13 +1588,15 @@ namespace LLInitParam
 		class Alternative : public TypedParam<T, NAME_VALUE_LOOKUP, false>
 		{
 		public:
-			friend class Choice<DERIVED_BLOCK>;
+			friend class ChoiceBlock<DERIVED_BLOCK>;
 
 			typedef Alternative<T, NAME_VALUE_LOOKUP>									self_t;
 			typedef TypedParam<T, NAME_VALUE_LOOKUP, false, IsBlock<ParamValue<T, NAME_VALUE_LOOKUP> >::value>		super_t;
 			typedef typename super_t::value_assignment_t								value_assignment_t;
 
-			explicit Alternative(const char* name, value_assignment_t val = defaultValue<T>())
+			using super_t::operator =;
+
+			explicit Alternative(const char* name = "", value_assignment_t val = defaultValue<T>())
 			:	super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, val, NULL, 0, 1),
 				mOriginalValue(val)
 			{
@@ -1370,10 +1611,19 @@ namespace LLInitParam
 				}
 			}
 
-			Alternative& operator=(value_assignment_t val)
+			void choose()
+			{
+				static_cast<enclosing_block_t&>(Param::enclosingBlock()).paramChanged(*this, true);
+			}
+
+			void chooseAs(value_assignment_t val)
+			{
+				super_t::set(val);
+			}
+
+			void operator =(value_assignment_t val)
 			{
 				super_t::set(val);
-				return *this;
 			}
 
 			void operator()(typename super_t::value_assignment_t val) 
@@ -1382,12 +1632,8 @@ namespace LLInitParam
 			}
 
 			operator value_assignment_t() const 
-			{ 
-				if (static_cast<enclosing_block_t&>(Param::enclosingBlock()).getCurrentChoice() == this)
-				{
-					return super_t::getValue(); 
-				}
-				return mOriginalValue;
+			{
+				return (*this)();
 			} 
 
 			value_assignment_t operator()() const 
@@ -1420,7 +1666,7 @@ namespace LLInitParam
 
 		const Param* getCurrentChoice() const
 		{
-			return BaseBlock::getParamFromHandle(mCurChoice);
+			return base_block_t::getParamFromHandle(mCurChoice);
 		}
 	};
 
@@ -1466,13 +1712,16 @@ namespace LLInitParam
 			typedef TypedParam<T, NAME_VALUE_LOOKUP, false, IsBlock<ParamValue<T, NAME_VALUE_LOOKUP> >::value>		super_t;
 			typedef typename super_t::value_assignment_t								value_assignment_t;
 
+			using super_t::operator();
+			using super_t::operator =;
+			
 			explicit Optional(const char* name = "", value_assignment_t val = defaultValue<T>())
 			:	super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, val, NULL, 0, 1)
 			{
 				//#pragma message("Parsing LLInitParam::Block::Optional")
 			}
 
-			Optional& operator=(value_assignment_t val)
+			Optional& operator =(value_assignment_t val)
 			{
 				set(val);
 				return *this;
@@ -1483,7 +1732,6 @@ namespace LLInitParam
 				super_t::set(val);
 				return static_cast<DERIVED_BLOCK&>(Param::enclosingBlock());
 			}
-			using super_t::operator();
 		};
 
 		template <typename T, typename NAME_VALUE_LOOKUP = TypeValues<T> >
@@ -1494,12 +1742,15 @@ namespace LLInitParam
 			typedef Mandatory<T, NAME_VALUE_LOOKUP>										self_t;
 			typedef typename super_t::value_assignment_t								value_assignment_t;
 
+			using super_t::operator();
+			using super_t::operator =;
+
 			// mandatory parameters require a name to be parseable
 			explicit Mandatory(const char* name = "", value_assignment_t val = defaultValue<T>())
 			:	super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, val, &validate, 1, 1)
 			{}
 
-			Mandatory& operator=(value_assignment_t val)
+			Mandatory& operator =(value_assignment_t val)
 			{
 				set(val);
 				return *this;
@@ -1510,7 +1761,6 @@ namespace LLInitParam
 				super_t::set(val);
 				return static_cast<DERIVED_BLOCK&>(Param::enclosingBlock());
 			}
-			using super_t::operator();
 
 			static bool validate(const Param* p)
 			{
@@ -1532,10 +1782,10 @@ namespace LLInitParam
 			typedef typename super_t::const_iterator								const_iterator;
 
 			explicit Multiple(const char* name = "")
-			:	super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, container_t(), &validate, RANGE::minCount(), RANGE::maxCount())
+			:	super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, container_t(), &validate, RANGE::minCount, RANGE::maxCount)
 			{}
 
-			Multiple& operator=(value_assignment_t val)
+			Multiple& operator =(value_assignment_t val)
 			{
 				set(val);
 				return *this;
@@ -1550,98 +1800,8 @@ namespace LLInitParam
 			static bool validate(const Param* paramp) 
 			{
 				U32 num_valid = ((super_t*)paramp)->numValidElements();
-				return RANGE::minCount() <= num_valid && num_valid <= RANGE::maxCount();
-			}
-		};
-
-		template <typename T, typename RANGE = BaseBlock::AnyAmount, typename NAME_VALUE_LOOKUP = TypeValues<T> >
-		class Batch : private TypedParam<T, NAME_VALUE_LOOKUP, false>
-		{
-		public:
-			typedef ParamValue<T, NAME_VALUE_LOOKUP>										param_value_t;
-			typedef TypedParam<T, NAME_VALUE_LOOKUP, false, IsBlock<param_value_t>::value>	super_t;
-			typedef Batch<T, RANGE, NAME_VALUE_LOOKUP>										self_t;
-			typedef typename super_t::value_assignment_t									value_assignment_t;
-			typedef typename super_t::value_t												value_t;
-
-			struct BatchDefaultValue : public ParamDescriptor::UserData
-			{
-				BatchDefaultValue(const T& value)
-				:	mValue(value)
-				{}
-
-				T mValue;
-			};
-
-			explicit Batch(const char* name, value_assignment_t val)
-			:	super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, val, NULL, 0, 1),
-				mLastParseGeneration(-1)
-			{
-				BlockDescriptor& block_descriptor = DERIVED_BLOCK::selfBlockDescriptor();
-				if (LL_UNLIKELY(block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING))
-				{
-					ParamDescriptorPtr param_descriptorp = block_descriptor.mCurrentBlockPtr->findParamDescriptor(*this);
-
-					if (param_descriptorp)
-					{
-						param_descriptorp->mDeserializeFunc = &deserializeParam;
-						param_descriptorp->mUserData = new BatchDefaultValue(new param_value_t(val));
-					}
-				}
-			}
-
-			explicit Batch(const char* name = "")
-			:	super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, defaultValue<T>(), NULL, 0, 1),
-				mLastParseGeneration(-1)
-			{
-				BlockDescriptor& block_descriptor = DERIVED_BLOCK::selfBlockDescriptor();
-				if (LL_UNLIKELY(block_descriptor.mInitializationState == BlockDescriptor::INITIALIZING))
-				{
-					ParamDescriptorPtr param_descriptorp = block_descriptor.mCurrentBlockPtr->findParamDescriptor(*this);
-
-					if (param_descriptorp)
-					{
-						param_descriptorp->mDeserializeFunc = &deserializeParam;
-					}
-				}
-			}
-
-			Batch& operator=(value_assignment_t val)
-			{
-				set(val);
-				return *this;
+				return RANGE::minCount <= num_valid && num_valid <= RANGE::maxCount;
 			}
-
-			DERIVED_BLOCK& operator()(value_assignment_t val)
-			{
-				super_t::set(val);
-				return static_cast<DERIVED_BLOCK&>(Param::enclosingBlock());
-			}
-
-			using super_t::operator();
-
-		private:
-			static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation) 
-			{
-				self_t& typed_param = static_cast<self_t&>(param);
-
-				if (generation != typed_param.mLastParseGeneration)
-				{
-					ParamDescriptorPtr descriptor = typed_param.enclosingBlock().findParamDescriptor(param);
-					if (descriptor && static_cast<BatchDefaultValue*>(descriptor->mUserData))
-					{
-						static_cast<param_value_t&>(typed_param) = (static_cast<BatchDefaultValue*>(descriptor->mUserData))->mValue;
-					}
-					else
-					{
-						static_cast<param_value_t&>(typed_param) = param_value_t(value_t());
-					}
-					typed_param.mLastParseGeneration = generation;
-				}
-				return super_t::deserializeParam(param, parser, name_stack, generation);
-			}
-
-			S32 mLastParseGeneration;
 		};
 
 		class Deprecated : public Param
@@ -1665,9 +1825,9 @@ namespace LLInitParam
 				}
 			}
 			
-			static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation)
+			static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack_range, bool new_name)
 			{
-				if (name_stack.first == name_stack.second)
+				if (name_stack_range.first == name_stack_range.second)
 				{
 					//std::string message = llformat("Deprecated value %s ignored", getName().c_str());
 					//parser.parserWarning(message);
@@ -1678,6 +1838,7 @@ namespace LLInitParam
 			}
 		};
 
+		// different semantics for documentation purposes, but functionally identical
 		typedef Deprecated Ignored;
 
 	protected:
@@ -1699,6 +1860,220 @@ namespace LLInitParam
 
 	};
 	
+	template <typename DERIVED_BLOCK, typename BASE_BLOCK = BaseBlock>
+	class BatchBlock
+	:	public Block<DERIVED_BLOCK, BASE_BLOCK>
+	{
+	public:
+		typedef BatchBlock<DERIVED_BLOCK, BASE_BLOCK> self_t;
+		typedef Block<DERIVED_BLOCK, BASE_BLOCK> super_t;
+
+		BatchBlock()
+		{}
+
+		bool deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack_range, bool new_name)
+		{
+			if (new_name)
+			{
+				// reset block
+				*static_cast<DERIVED_BLOCK*>(this) = defaultBatchValue();
+			}
+			return super_t::deserializeBlock(p, name_stack_range, new_name);
+		}
+
+		bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
+		{
+			if (overwrite)
+			{
+				*static_cast<DERIVED_BLOCK*>(this) = defaultBatchValue();
+				// merge individual parameters into destination
+				return super_t::mergeBlock(super_t::selfBlockDescriptor(), other, overwrite);
+			}
+			return false;
+		}
+	protected:
+		static const DERIVED_BLOCK& defaultBatchValue()
+		{
+			static DERIVED_BLOCK default_value;
+			return default_value;
+		}
+	};
+
+	// FIXME: this specialization is not currently used, as it only matches against the BatchBlock base class
+	// and not the derived class with the actual params
+	template<typename DERIVED_BLOCK,
+			typename BASE_BLOCK,
+			typename NAME_VALUE_LOOKUP>
+	class ParamValue <BatchBlock<DERIVED_BLOCK, BASE_BLOCK>,
+					NAME_VALUE_LOOKUP,
+					true>
+	:	public NAME_VALUE_LOOKUP,
+		protected BatchBlock<DERIVED_BLOCK, BASE_BLOCK>
+	{
+	public:
+		typedef BatchBlock<DERIVED_BLOCK, BASE_BLOCK> block_t;
+		typedef const BatchBlock<DERIVED_BLOCK, BASE_BLOCK>&	value_assignment_t;
+		typedef block_t value_t;
+
+		ParamValue()
+		:	block_t(),
+			mValidated(false)
+		{}
+
+		ParamValue(value_assignment_t other)
+		:	block_t(other),
+			mValidated(false)
+		{
+		}
+
+		void setValue(value_assignment_t val)
+		{
+			*this = val;
+		}
+
+		value_assignment_t getValue() const
+		{
+			return *this;
+		}
+
+		BatchBlock<DERIVED_BLOCK, BASE_BLOCK>& getValue()
+		{
+			return *this;
+		}
+
+		operator value_assignment_t() const
+		{
+			return *this;
+		}
+
+		value_assignment_t operator()() const
+		{
+			return *this;
+		}
+
+	protected:
+		mutable bool 	mValidated; // lazy validation flag
+	};
+
+	template<typename T, bool IS_BLOCK>
+	class ParamValue <BaseBlock::Lazy<T>,
+					TypeValues<T>,
+					IS_BLOCK>
+	:	public IsBlock<T>::base_class_t
+	{
+	public:
+		typedef ParamValue <BaseBlock::Lazy<T>, TypeValues<T>, false> self_t;
+		typedef const T& value_assignment_t;
+		typedef T value_t;
+	
+		ParamValue()
+		:	mValue(),
+			mValidated(false)
+		{}
+
+		ParamValue(value_assignment_t other)
+		:	mValue(other),
+			mValidated(false)
+		{}
+
+		void setValue(value_assignment_t val)
+		{
+			mValue.set(val);
+		}
+
+		value_assignment_t getValue() const
+		{
+			return mValue.get();
+		}
+
+		T& getValue()
+		{
+			return mValue.get();
+		}
+
+		operator value_assignment_t() const
+		{
+			return mValue.get();
+		}
+
+		value_assignment_t operator()() const
+		{
+			return mValue.get();
+		}
+
+		bool deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack_range, bool new_name)
+		{
+			return mValue.get().deserializeBlock(p, name_stack_range, new_name);
+		}
+
+		void serializeBlock(Parser& p, Parser::name_stack_t& name_stack, const BaseBlock* diff_block = NULL) const
+		{
+			if (mValue.empty()) return;
+			
+			mValue.get().serializeBlock(p, name_stack, diff_block);
+		}
+
+		bool inspectBlock(Parser& p, Parser::name_stack_t name_stack = Parser::name_stack_t(), S32 min_count = 0, S32 max_count = S32_MAX) const
+		{
+			if (mValue.empty()) return false;
+
+			return mValue.get().inspectBlock(p, name_stack, min_count, max_count);
+		}
+
+	protected:
+		mutable bool 	mValidated; // lazy validation flag
+
+	private:
+		BaseBlock::Lazy<T>	mValue;
+	};
+
+	template <>
+	class ParamValue <LLSD,
+					TypeValues<LLSD>,
+					false>
+	:	public TypeValues<LLSD>,
+		public BaseBlock
+	{
+	public:
+		typedef ParamValue<LLSD, TypeValues<LLSD>, false> self_t;
+		typedef const LLSD&	value_assignment_t;
+
+		ParamValue()
+		:	mValidated(false)
+		{}
+
+		ParamValue(value_assignment_t other)
+		:	mValue(other),
+			mValidated(false)
+		{}
+
+		void setValue(value_assignment_t val) { mValue = val; }
+
+		value_assignment_t getValue() const { return mValue; }
+		LLSD& getValue() { return mValue; }
+
+		operator value_assignment_t() const { return mValue; }
+		value_assignment_t operator()() const { return mValue; }
+		
+
+		// block param interface
+		bool deserializeBlock(Parser& p, Parser::name_stack_range_t name_stack_range, bool new_name);
+		void serializeBlock(Parser& p, Parser::name_stack_t& name_stack, const BaseBlock* diff_block = NULL) const;
+		bool inspectBlock(Parser& p, Parser::name_stack_t name_stack = Parser::name_stack_t(), S32 min_count = 0, S32 max_count = S32_MAX) const
+		{
+			//TODO: implement LLSD params as schema type Any
+			return true;
+		}
+
+	protected:
+		mutable bool 	mValidated; // lazy validation flag
+
+	private:
+		static void serializeElement(Parser& p, const LLSD& sd, Parser::name_stack_t& name_stack);
+
+		LLSD mValue;
+	};
+
 	template<typename T>
 	class CustomParamValue
 	:	public Block<ParamValue<T, TypeValues<T> > >,
@@ -1714,22 +2089,22 @@ namespace LLInitParam
 
 		typedef ParamValue<T, TypeValues<T> >	derived_t;
 		typedef CustomParamValue<T>				self_t;
-		typedef Block<derived_t>		block_t;
+		typedef Block<derived_t>				block_t;
 		typedef const T&						value_assignment_t;
+		typedef T								value_t;
+
 
 		CustomParamValue(const T& value = T())
 		:	mValue(value),
 			mValueAge(VALUE_AUTHORITATIVE),
-			mKeyVersion(0),
-			mValidatedVersion(-1),
 			mValidated(false)
 		{}
 
-		bool deserializeBlock(Parser& parser, Parser::name_stack_range_t name_stack, S32 generation)
+		bool deserializeBlock(Parser& parser, Parser::name_stack_range_t name_stack_range, bool new_name)
 		{
 			derived_t& typed_param = static_cast<derived_t&>(*this);
 			// try to parse direct value T
-			if (name_stack.first == name_stack.second)
+			if (name_stack_range.first == name_stack_range.second)
 			{
 				if(parser.readValue(typed_param.mValue))
 				{
@@ -1743,10 +2118,10 @@ namespace LLInitParam
 			}
 
 			// fall back on parsing block components for T
-			return typed_param.BaseBlock::deserializeBlock(parser, name_stack, generation);
+			return typed_param.BaseBlock::deserializeBlock(parser, name_stack_range, new_name);
 		}
 
-		void serializeBlock(Parser& parser, Parser::name_stack_t name_stack = Parser::name_stack_t(), const BaseBlock* diff_block = NULL) const
+		void serializeBlock(Parser& parser, Parser::name_stack_t& name_stack, const BaseBlock* diff_block = NULL) const
 		{
 			const derived_t& typed_param = static_cast<const derived_t&>(*this);
 			const derived_t* diff_param = static_cast<const derived_t*>(diff_block);
@@ -1864,7 +2239,15 @@ namespace LLInitParam
 			return mValue;
 		}
 
-		S32 				mKeyVersion;
+		operator value_assignment_t() const
+		{
+			return getValue();
+		}
+
+		value_assignment_t operator()() const
+		{
+			return getValue();
+		}
 
 	protected:
 
@@ -1874,33 +2257,31 @@ namespace LLInitParam
 			mValue = value;
 		}
 
-		bool mergeBlockParam(bool param_provided, BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
+		bool mergeBlockParam(bool source_provided, bool dst_provided, BlockDescriptor& block_data, const BaseBlock& source, bool overwrite)
 		{
-			if (param_provided)
-			{
-				return mergeBlock(block_data, other, overwrite);
-			}
-			return false;
-		}
+			bool source_override = source_provided && (overwrite || !dst_provided);
 
-		bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite)
-		{
-			const derived_t& src_typed_param = static_cast<const derived_t&>(other);
+			const derived_t& src_typed_param = static_cast<const derived_t&>(source);
 
-			if (src_typed_param.mValueAge == VALUE_AUTHORITATIVE)
+			if (source_override && src_typed_param.mValueAge == VALUE_AUTHORITATIVE)
 			{
 				// copy value over
 				setValue(src_typed_param.getValue());
 				return true;
 			}
-			else
+			// merge individual parameters into destination
+			if (mValueAge == VALUE_AUTHORITATIVE)
 			{
-				// merge individual parameters into destination
-				return block_t::mergeBlock(block_t::selfBlockDescriptor(), src_typed_param, overwrite);
+				static_cast<derived_t*>(this)->updateBlockFromValue(dst_provided);
 			}
+			return mergeBlock(block_data, source, overwrite);
+		}
+
+		bool mergeBlock(BlockDescriptor& block_data, const BaseBlock& source, bool overwrite)
+		{
+			return block_t::mergeBlock(block_data, source, overwrite);
 		}
 
-		mutable S32			mValidatedVersion;
 		mutable bool 		mValidated; // lazy validation flag
 
 	private:
diff --git a/indra/llxuixml/llxuiparser.cpp b/indra/llxuixml/llxuiparser.cpp
index 72a7bb7af50a1a11dd3e6c4a08b88a0e5d1eca8c..afc76024d1e0ef0f8688b8de638cbe52c29843e2 100644
--- a/indra/llxuixml/llxuiparser.cpp
+++ b/indra/llxuixml/llxuiparser.cpp
@@ -51,6 +51,270 @@ static 	LLInitParam::Parser::parser_read_func_map_t sXSDReadFuncs;
 static 	LLInitParam::Parser::parser_write_func_map_t sXSDWriteFuncs;
 static 	LLInitParam::Parser::parser_inspect_func_map_t sXSDInspectFuncs;
 
+static 	LLInitParam::Parser::parser_read_func_map_t sSimpleXUIReadFuncs;
+static 	LLInitParam::Parser::parser_write_func_map_t sSimpleXUIWriteFuncs;
+static 	LLInitParam::Parser::parser_inspect_func_map_t sSimpleXUIInspectFuncs;
+
+const char* NO_VALUE_MARKER = "no_value";
+
+const S32 LINE_NUMBER_HERE = 0;
+
+struct MaxOccursValues : public LLInitParam::TypeValuesHelper<U32, MaxOccursValues>
+{
+	static void declareValues()
+	{
+		declare("unbounded", U32_MAX);
+	}
+};
+
+struct Occurs : public LLInitParam::Block<Occurs>
+{
+	Optional<U32>					minOccurs;
+	Optional<U32, MaxOccursValues>	maxOccurs;
+
+	Occurs()
+	:	minOccurs("minOccurs", 0),
+		maxOccurs("maxOccurs", U32_MAX)
+
+	{}
+};
+
+
+typedef enum
+{
+	USE_REQUIRED,
+	USE_OPTIONAL
+} EUse;
+
+namespace LLInitParam
+{
+	template<>
+	struct TypeValues<EUse> : public TypeValuesHelper<EUse>
+	{
+		static void declareValues()
+		{
+			declare("required", USE_REQUIRED);
+			declare("optional", USE_OPTIONAL);
+		}
+	};
+}
+
+struct Element;
+struct Group;
+struct Choice;
+struct Sequence;
+struct Any;
+
+struct Attribute : public LLInitParam::Block<Attribute>
+{
+	Mandatory<std::string>	name;
+	Mandatory<std::string>	type;
+	Mandatory<EUse>			use;
+	
+	Attribute()
+	:	name("name"),
+		type("type"),
+		use("use")
+	{}
+};
+
+struct Any : public LLInitParam::Block<Any, Occurs>
+{
+	Optional<std::string> _namespace;
+
+	Any()
+	:	_namespace("namespace")
+	{}
+};
+
+struct All : public LLInitParam::Block<All, Occurs>
+{
+	Multiple< Lazy<Element> > elements;
+
+	All()
+	:	elements("element")
+	{
+		maxOccurs = 1;
+	}
+};
+
+struct Choice : public LLInitParam::ChoiceBlock<Choice, Occurs>
+{
+	Alternative< Lazy<Element> >	element;
+	Alternative< Lazy<Group> >		group;
+	Alternative< Lazy<Choice> >		choice;
+	Alternative< Lazy<Sequence> >	sequence;
+	Alternative< Lazy<Any> >		any;
+
+	Choice()
+	:	element("element"),
+		group("group"),
+		choice("choice"),
+		sequence("sequence"),
+		any("any")
+	{}
+
+};
+
+struct Sequence : public LLInitParam::ChoiceBlock<Sequence, Occurs>
+{
+	Alternative< Lazy<Element> >	element;
+	Alternative< Lazy<Group> >		group;
+	Alternative< Lazy<Choice> >		choice;
+	Alternative< Lazy<Sequence> >	sequence;
+	Alternative< Lazy<Any> >		any;
+};
+
+struct GroupContents : public LLInitParam::ChoiceBlock<GroupContents, Occurs>
+{
+	Alternative<All>		all;
+	Alternative<Choice>		choice;
+	Alternative<Sequence>	sequence;
+
+	GroupContents()
+	:	all("all"),
+		choice("choice"),
+		sequence("sequence")
+	{}
+};
+
+struct Group : public LLInitParam::Block<Group, GroupContents>
+{
+	Optional<std::string>	name,
+							ref;
+
+	Group()
+	:	name("name"),
+		ref("ref")
+	{}
+};
+
+struct Restriction : public LLInitParam::Block<Restriction>
+{
+};
+
+struct Extension : public LLInitParam::Block<Extension>
+{
+};
+
+struct SimpleContent : public LLInitParam::ChoiceBlock<SimpleContent>
+{
+	Alternative<Restriction> restriction;
+	Alternative<Extension> extension;
+
+	SimpleContent()
+	:	restriction("restriction"),
+		extension("extension")
+	{}
+};
+
+struct SimpleType : public LLInitParam::Block<SimpleType>
+{
+	// TODO
+};
+
+struct ComplexContent : public LLInitParam::Block<ComplexContent, SimpleContent>
+{
+	Optional<bool> mixed;
+
+	ComplexContent()
+	:	mixed("mixed", true)
+	{}
+};
+
+struct ComplexTypeContents : public LLInitParam::ChoiceBlock<ComplexTypeContents>
+{
+	Alternative<SimpleContent>	simple_content;
+	Alternative<ComplexContent> complex_content;
+	Alternative<Group>			group;
+	Alternative<All>			all;
+	Alternative<Choice>			choice;
+	Alternative<Sequence>		sequence;
+
+	ComplexTypeContents()
+	:	simple_content("simpleContent"),
+		complex_content("complexContent"),
+		group("group"),
+		all("all"),
+		choice("choice"),
+		sequence("sequence")
+	{}
+};
+
+struct ComplexType : public LLInitParam::Block<ComplexType, ComplexTypeContents>
+{
+	Optional<std::string>			name;
+	Optional<bool>					mixed;
+
+	Multiple<Attribute>				attribute;
+	Multiple< Lazy<Element> >			elements;
+
+	ComplexType()
+	:	name("name"),
+		attribute("xs:attribute"),
+		elements("xs:element"),
+		mixed("mixed")
+	{
+	}
+};
+
+struct ElementContents : public LLInitParam::ChoiceBlock<ElementContents, Occurs>
+{
+	Alternative<SimpleType>		simpleType;
+	Alternative<ComplexType>	complexType;
+
+	ElementContents()
+	:	simpleType("simpleType"),
+		complexType("complexType")
+	{}
+};
+
+struct Element : public LLInitParam::Block<Element, ElementContents>
+{
+	Optional<std::string>	name,
+							ref,
+							type;
+
+	Element()
+	:	name("xs:name"),
+		ref("xs:ref"),
+		type("xs:type")
+	{}
+};
+
+struct Schema : public LLInitParam::Block<Schema>
+{
+private:
+	Mandatory<std::string>	targetNamespace,
+							xmlns,
+							xs;
+
+public:
+	Optional<std::string>	attributeFormDefault,
+							elementFormDefault;
+
+	Mandatory<Element>		root_element;
+	
+	void setNameSpace(const std::string& ns) {targetNamespace = ns; xmlns = ns;}
+
+	Schema(const std::string& ns = LLStringUtil::null)
+	:	attributeFormDefault("attributeFormDefault"),
+		elementFormDefault("elementFormDefault"),
+		xs("xmlns:xs"),
+		targetNamespace("targetNamespace"),
+		xmlns("xmlns"),
+		root_element("xs:element")
+	{
+		attributeFormDefault = "unqualified";
+		elementFormDefault = "qualified";
+		xs = "http://www.w3.org/2001/XMLSchema";
+		if (!ns.empty())
+		{
+			setNameSpace(ns);
+		};
+	}
+
+};
 
 //
 // LLXSDWriter
@@ -76,22 +340,30 @@ LLXSDWriter::LLXSDWriter()
 
 void LLXSDWriter::writeXSD(const std::string& type_name, LLXMLNodePtr node, const LLInitParam::BaseBlock& block, const std::string& xml_namespace)
 {
+	Schema schema(xml_namespace);
+
+	schema.root_element.name = type_name;
+	Choice& choice = schema.root_element.complexType.choice;
+
+	choice.minOccurs = 0;
+	choice.maxOccurs = "unbounded";
+
 	mSchemaNode = node;
-	node->setName("xs:schema");
-	node->createChild("attributeFormDefault", true)->setStringValue("unqualified");
-	node->createChild("elementFormDefault", true)->setStringValue("qualified");
-	node->createChild("targetNamespace", true)->setStringValue(xml_namespace);
-	node->createChild("xmlns:xs", true)->setStringValue("http://www.w3.org/2001/XMLSchema");
-	node->createChild("xmlns", true)->setStringValue(xml_namespace);
-
-	node = node->createChild("xs:complexType", false);
-	node->createChild("name", true)->setStringValue(type_name);
-	node->createChild("mixed", true)->setStringValue("true");
-
-	mAttributeNode = node;
-	mElementNode = node->createChild("xs:choice", false);
-	mElementNode->createChild("minOccurs", true)->setStringValue("0");
-	mElementNode->createChild("maxOccurs", true)->setStringValue("unbounded");
+	//node->setName("xs:schema");
+	//node->createChild("attributeFormDefault", true)->setStringValue("unqualified");
+	//node->createChild("elementFormDefault", true)->setStringValue("qualified");
+	//node->createChild("targetNamespace", true)->setStringValue(xml_namespace);
+	//node->createChild("xmlns:xs", true)->setStringValue("http://www.w3.org/2001/XMLSchema");
+	//node->createChild("xmlns", true)->setStringValue(xml_namespace);
+
+	//node = node->createChild("xs:complexType", false);
+	//node->createChild("name", true)->setStringValue(type_name);
+	//node->createChild("mixed", true)->setStringValue("true");
+
+	//mAttributeNode = node;
+	//mElementNode = node->createChild("xs:choice", false);
+	//mElementNode->createChild("minOccurs", true)->setStringValue("0");
+	//mElementNode->createChild("maxOccurs", true)->setStringValue("unbounded");
 	block.inspectBlock(*this);
 
 	// duplicate element choices
@@ -383,12 +655,11 @@ static 	LLInitParam::Parser::parser_inspect_func_map_t sXUIInspectFuncs;
 //
 LLXUIParser::LLXUIParser()
 :	Parser(sXUIReadFuncs, sXUIWriteFuncs, sXUIInspectFuncs),
-	mLastWriteGeneration(-1),
 	mCurReadDepth(0)
 {
 	if (sXUIReadFuncs.empty())
 	{
-		registerParserFuncs<LLInitParam::NoParamValue>(readNoValue, writeNoValue);
+		registerParserFuncs<LLInitParam::Flag>(readFlag, writeFlag);
 		registerParserFuncs<bool>(readBoolValue, writeBoolValue);
 		registerParserFuncs<std::string>(readStringValue, writeStringValue);
 		registerParserFuncs<U8>(readU8Value, writeU8Value);
@@ -440,12 +711,11 @@ bool LLXUIParser::readXUIImpl(LLXMLNodePtr nodep, LLInitParam::BaseBlock& block)
 		&& nodep->mAttributes.empty() 
 		&& nodep->getSanitizedValue().empty())
 	{
-		// empty node, just parse as NoValue
+		// empty node, just parse as flag
 		mCurReadNode = DUMMY_NODE;
 		return block.submitValue(mNameStack, *this, silent);
 	}
 
-
 	// submit attributes for current node
 	values_parsed |= readAttributes(nodep, block);
 
@@ -454,7 +724,7 @@ bool LLXUIParser::readXUIImpl(LLXMLNodePtr nodep, LLInitParam::BaseBlock& block)
 	if (!text_contents.empty())
 	{
 		mCurReadNode = nodep;
-		mNameStack.push_back(std::make_pair(std::string("value"), newParseGeneration()));
+		mNameStack.push_back(std::make_pair(std::string("value"), true));
 		// child nodes are not necessarily valid parameters (could be a child widget)
 		// so don't complain once we've recursed
 		if (!block.submitValue(mNameStack, *this, true))
@@ -489,7 +759,7 @@ bool LLXUIParser::readXUIImpl(LLXMLNodePtr nodep, LLInitParam::BaseBlock& block)
 		// since there is no widget named "rect"
 		if (child_name.find(".") == std::string::npos) 
 		{
-			mNameStack.push_back(std::make_pair(child_name, newParseGeneration()));
+			mNameStack.push_back(std::make_pair(child_name, true));
 			num_tokens_pushed++;
 		}
 		else
@@ -525,7 +795,7 @@ bool LLXUIParser::readXUIImpl(LLXMLNodePtr nodep, LLInitParam::BaseBlock& block)
 			// copy remaining tokens on to our running token list
 			for(tokenizer::iterator token_to_push = name_token_it; token_to_push != name_tokens.end(); ++token_to_push)
 			{
-				mNameStack.push_back(std::make_pair(*token_to_push, newParseGeneration()));
+				mNameStack.push_back(std::make_pair(*token_to_push, true));
 				num_tokens_pushed++;
 			}
 		}
@@ -575,7 +845,7 @@ bool LLXUIParser::readAttributes(LLXMLNodePtr nodep, LLInitParam::BaseBlock& blo
 		// copy remaining tokens on to our running token list
 		for(tokenizer::iterator token_to_push = name_tokens.begin(); token_to_push != name_tokens.end(); ++token_to_push)
 		{
-			mNameStack.push_back(std::make_pair(*token_to_push, newParseGeneration()));
+			mNameStack.push_back(std::make_pair(*token_to_push, true));
 			num_tokens_pushed++;
 		}
 
@@ -594,48 +864,40 @@ bool LLXUIParser::readAttributes(LLXMLNodePtr nodep, LLInitParam::BaseBlock& blo
 void LLXUIParser::writeXUI(LLXMLNodePtr node, const LLInitParam::BaseBlock &block, const LLInitParam::BaseBlock* diff_block)
 {
 	mWriteRootNode = node;
-	block.serializeBlock(*this, Parser::name_stack_t(), diff_block);
+	name_stack_t name_stack = Parser::name_stack_t();
+	block.serializeBlock(*this, name_stack, diff_block);
 	mOutNodes.clear();
 }
 
 // go from a stack of names to a specific XML node
-LLXMLNodePtr LLXUIParser::getNode(const name_stack_t& stack)
+LLXMLNodePtr LLXUIParser::getNode(name_stack_t& stack)
 {
-	name_stack_t name_stack;
-	for (name_stack_t::const_iterator it = stack.begin();
-		it != stack.end();
-		++it)
-	{
-		if (!it->first.empty())
-		{
-			name_stack.push_back(*it);
-		}
-	}
-
 	LLXMLNodePtr out_node = mWriteRootNode;
 
-	name_stack_t::const_iterator next_it = name_stack.begin();
-	for (name_stack_t::const_iterator it = name_stack.begin();
-		it != name_stack.end();
+	name_stack_t::iterator next_it = stack.begin();
+	for (name_stack_t::iterator it = stack.begin();
+		it != stack.end();
 		it = next_it)
 	{
 		++next_it;
 		if (it->first.empty())
 		{
+			it->second = false;
 			continue;
 		}
 
-		out_nodes_t::iterator found_it = mOutNodes.lower_bound(it->second);
+		out_nodes_t::iterator found_it = mOutNodes.find(it->first);
 
 		// node with this name not yet written
-		if (found_it == mOutNodes.end() || mOutNodes.key_comp()(found_it->first, it->second))
+		if (found_it == mOutNodes.end() || it->second)
 		{
 			// make an attribute if we are the last element on the name stack
-			bool is_attribute = next_it == name_stack.end();
+			bool is_attribute = next_it == stack.end();
 			LLXMLNodePtr new_node = new LLXMLNode(it->first.c_str(), is_attribute);
 			out_node->addChild(new_node);
-			mOutNodes.insert(found_it, std::make_pair(it->second, new_node));
+			mOutNodes[it->first] = new_node;
 			out_node = new_node;
+			it->second = false;
 		}
 		else
 		{
@@ -646,13 +908,13 @@ LLXMLNodePtr LLXUIParser::getNode(const name_stack_t& stack)
 	return (out_node == mWriteRootNode ? LLXMLNodePtr(NULL) : out_node);
 }
 
-bool LLXUIParser::readNoValue(Parser& parser, void* val_ptr)
+bool LLXUIParser::readFlag(Parser& parser, void* val_ptr)
 {
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
 	return self.mCurReadNode == DUMMY_NODE;
 }
 
-bool LLXUIParser::writeNoValue(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeFlag(Parser& parser, const void* val_ptr, name_stack_t& stack)
 {
 	// just create node
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
@@ -669,7 +931,7 @@ bool LLXUIParser::readBoolValue(Parser& parser, void* val_ptr)
 	return success;
 }
 
-bool LLXUIParser::writeBoolValue(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeBoolValue(Parser& parser, const void* val_ptr, name_stack_t& stack)
 {
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
 	LLXMLNodePtr node = self.getNode(stack);
@@ -688,7 +950,7 @@ bool LLXUIParser::readStringValue(Parser& parser, void* val_ptr)
 	return true;
 }
 
-bool LLXUIParser::writeStringValue(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeStringValue(Parser& parser, const void* val_ptr, name_stack_t& stack)
 {
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
 	LLXMLNodePtr node = self.getNode(stack);
@@ -726,7 +988,7 @@ bool LLXUIParser::readU8Value(Parser& parser, void* val_ptr)
 	return self.mCurReadNode->getByteValue(1, (U8*)val_ptr);
 }
 
-bool LLXUIParser::writeU8Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeU8Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
 {
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
 	LLXMLNodePtr node = self.getNode(stack);
@@ -750,7 +1012,7 @@ bool LLXUIParser::readS8Value(Parser& parser, void* val_ptr)
 	return false;
 }
 
-bool LLXUIParser::writeS8Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeS8Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
 {
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
 	LLXMLNodePtr node = self.getNode(stack);
@@ -774,7 +1036,7 @@ bool LLXUIParser::readU16Value(Parser& parser, void* val_ptr)
 	return false;
 }
 
-bool LLXUIParser::writeU16Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeU16Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
 {
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
 	LLXMLNodePtr node = self.getNode(stack);
@@ -798,7 +1060,7 @@ bool LLXUIParser::readS16Value(Parser& parser, void* val_ptr)
 	return false;
 }
 
-bool LLXUIParser::writeS16Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeS16Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
 {
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
 	LLXMLNodePtr node = self.getNode(stack);
@@ -816,7 +1078,7 @@ bool LLXUIParser::readU32Value(Parser& parser, void* val_ptr)
 	return self.mCurReadNode->getUnsignedValue(1, (U32*)val_ptr);
 }
 
-bool LLXUIParser::writeU32Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeU32Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
 {
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
 	LLXMLNodePtr node = self.getNode(stack);
@@ -834,7 +1096,7 @@ bool LLXUIParser::readS32Value(Parser& parser, void* val_ptr)
 	return self.mCurReadNode->getIntValue(1, (S32*)val_ptr);
 }
 
-bool LLXUIParser::writeS32Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeS32Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
 {
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
 	LLXMLNodePtr node = self.getNode(stack);
@@ -852,7 +1114,7 @@ bool LLXUIParser::readF32Value(Parser& parser, void* val_ptr)
 	return self.mCurReadNode->getFloatValue(1, (F32*)val_ptr);
 }
 
-bool LLXUIParser::writeF32Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeF32Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
 {
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
 	LLXMLNodePtr node = self.getNode(stack);
@@ -870,7 +1132,7 @@ bool LLXUIParser::readF64Value(Parser& parser, void* val_ptr)
 	return self.mCurReadNode->getDoubleValue(1, (F64*)val_ptr);
 }
 
-bool LLXUIParser::writeF64Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeF64Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
 {
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
 	LLXMLNodePtr node = self.getNode(stack);
@@ -894,7 +1156,7 @@ bool LLXUIParser::readColor4Value(Parser& parser, void* val_ptr)
 	return false;
 }
 
-bool LLXUIParser::writeColor4Value(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeColor4Value(Parser& parser, const void* val_ptr, name_stack_t& stack)
 {
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
 	LLXMLNodePtr node = self.getNode(stack);
@@ -921,7 +1183,7 @@ bool LLXUIParser::readUIColorValue(Parser& parser, void* val_ptr)
 	return false;
 }
 
-bool LLXUIParser::writeUIColorValue(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeUIColorValue(Parser& parser, const void* val_ptr, name_stack_t& stack)
 {
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
 	LLXMLNodePtr node = self.getNode(stack);
@@ -950,7 +1212,7 @@ bool LLXUIParser::readUUIDValue(Parser& parser, void* val_ptr)
 	return false;
 }
 
-bool LLXUIParser::writeUUIDValue(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeUUIDValue(Parser& parser, const void* val_ptr, name_stack_t& stack)
 {
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
 	LLXMLNodePtr node = self.getNode(stack);
@@ -969,7 +1231,7 @@ bool LLXUIParser::readSDValue(Parser& parser, void* val_ptr)
 	return true;
 }
 
-bool LLXUIParser::writeSDValue(Parser& parser, const void* val_ptr, const name_stack_t& stack)
+bool LLXUIParser::writeSDValue(Parser& parser, const void* val_ptr, name_stack_t& stack)
 {
 	LLXUIParser& self = static_cast<LLXUIParser&>(parser);
 
@@ -1070,21 +1332,14 @@ struct ScopedFile
 
 	LLFILE* mFile;
 };
-static 	LLInitParam::Parser::parser_read_func_map_t sSimpleXUIReadFuncs;
-static 	LLInitParam::Parser::parser_write_func_map_t sSimpleXUIWriteFuncs;
-static 	LLInitParam::Parser::parser_inspect_func_map_t sSimpleXUIInspectFuncs;
-
-const char* NO_VALUE_MARKER = "no_value";
-
 LLSimpleXUIParser::LLSimpleXUIParser(LLSimpleXUIParser::element_start_callback_t element_cb)
 :	Parser(sSimpleXUIReadFuncs, sSimpleXUIWriteFuncs, sSimpleXUIInspectFuncs),
-	mLastWriteGeneration(-1),
 	mCurReadDepth(0),
 	mElementCB(element_cb)
 {
 	if (sSimpleXUIReadFuncs.empty())
 	{
-		registerParserFuncs<LLInitParam::NoParamValue>(readNoValue);
+		registerParserFuncs<LLInitParam::Flag>(readFlag);
 		registerParserFuncs<bool>(readBoolValue);
 		registerParserFuncs<std::string>(readStringValue);
 		registerParserFuncs<U8>(readU8Value);
@@ -1126,6 +1381,7 @@ bool LLSimpleXUIParser::readXUI(const std::string& filename, LLInitParam::BaseBl
 	if( !file.isOpen() )
 	{
 		LL_WARNS("ReadXUI") << "Unable to open file " << filename << LL_ENDL;
+		XML_ParserFree( mParser );
 		return false;
 	}
 
@@ -1181,6 +1437,11 @@ void LLSimpleXUIParser::characterDataHandler(void *userData, const char *s, int
 	self->characterData(s, len);
 }
 
+void LLSimpleXUIParser::characterData(const char *s, int len)
+{
+	mTextContents += std::string(s, len);
+}
+
 void LLSimpleXUIParser::startElement(const char *name, const char **atts)
 {
 	processText();
@@ -1209,7 +1470,7 @@ void LLSimpleXUIParser::startElement(const char *name, const char **atts)
 	{	// compound attribute
 		if (child_name.find(".") == std::string::npos) 
 		{
-			mNameStack.push_back(std::make_pair(child_name, newParseGeneration()));
+			mNameStack.push_back(std::make_pair(child_name, true));
 			num_tokens_pushed++;
 			mScope.push_back(child_name);
 		}
@@ -1236,7 +1497,7 @@ void LLSimpleXUIParser::startElement(const char *name, const char **atts)
 			// copy remaining tokens on to our running token list
 			for(tokenizer::iterator token_to_push = name_token_it; token_to_push != name_tokens.end(); ++token_to_push)
 			{
-				mNameStack.push_back(std::make_pair(*token_to_push, newParseGeneration()));
+				mNameStack.push_back(std::make_pair(*token_to_push, true));
 				num_tokens_pushed++;
 			}
 			mScope.push_back(mNameStack.back().first);
@@ -1253,6 +1514,37 @@ void LLSimpleXUIParser::startElement(const char *name, const char **atts)
 
 }
 
+void LLSimpleXUIParser::endElement(const char *name)
+{
+	bool has_text = processText();
+
+	// no text, attributes, or children
+	if (!has_text && mEmptyLeafNode.back())
+	{
+		// submit this as a valueless name (even though there might be text contents we haven't seen yet)
+		mCurAttributeValueBegin = NO_VALUE_MARKER;
+		mOutputStack.back().first->submitValue(mNameStack, *this, mParseSilently);
+	}
+
+	if (--mOutputStack.back().second == 0)
+	{
+		if (mOutputStack.empty())
+		{
+			LL_ERRS("ReadXUI") << "Parameter block output stack popped while empty." << LL_ENDL;
+		}
+		mOutputStack.pop_back();
+	}
+
+	S32 num_tokens_to_pop = mTokenSizeStack.back();
+	mTokenSizeStack.pop_back();
+	while(num_tokens_to_pop-- > 0)
+	{
+		mNameStack.pop_back();
+	}
+	mScope.pop_back();
+	mEmptyLeafNode.pop_back();
+}
+
 bool LLSimpleXUIParser::readAttributes(const char **atts)
 {
 	typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
@@ -1269,7 +1561,7 @@ bool LLSimpleXUIParser::readAttributes(const char **atts)
 		// copy remaining tokens on to our running token list
 		for(tokenizer::iterator token_to_push = name_tokens.begin(); token_to_push != name_tokens.end(); ++token_to_push)
 		{
-			mNameStack.push_back(std::make_pair(*token_to_push, newParseGeneration()));
+			mNameStack.push_back(std::make_pair(*token_to_push, true));
 			num_tokens_pushed++;
 		}
 
@@ -1291,7 +1583,7 @@ bool LLSimpleXUIParser::processText()
 		LLStringUtil::trim(mTextContents);
 		if (!mTextContents.empty())
 		{
-			mNameStack.push_back(std::make_pair(std::string("value"), newParseGeneration()));
+			mNameStack.push_back(std::make_pair(std::string("value"), true));
 			mCurAttributeValueBegin = mTextContents.c_str();
 			mOutputStack.back().first->submitValue(mNameStack, *this, mParseSilently);
 			mNameStack.pop_back();
@@ -1302,43 +1594,6 @@ bool LLSimpleXUIParser::processText()
 	return false;
 }
 
-void LLSimpleXUIParser::endElement(const char *name)
-{
-	bool has_text = processText();
-
-	// no text, attributes, or children
-	if (!has_text && mEmptyLeafNode.back())
-	{
-		// submit this as a valueless name (even though there might be text contents we haven't seen yet)
-		mCurAttributeValueBegin = NO_VALUE_MARKER;
-		mOutputStack.back().first->submitValue(mNameStack, *this, mParseSilently);
-	}
-
-	if (--mOutputStack.back().second == 0)
-	{
-		if (mOutputStack.empty())
-		{
-			LL_ERRS("ReadXUI") << "Parameter block output stack popped while empty." << LL_ENDL;
-		}
-		mOutputStack.pop_back();
-	}
-
-	S32 num_tokens_to_pop = mTokenSizeStack.back();
-	mTokenSizeStack.pop_back();
-	while(num_tokens_to_pop-- > 0)
-	{
-		mNameStack.pop_back();
-	}
-	mScope.pop_back();
-	mEmptyLeafNode.pop_back();
-}
-
-void LLSimpleXUIParser::characterData(const char *s, int len)
-{
-	mTextContents += std::string(s, len);
-}
-
-
 /*virtual*/ std::string LLSimpleXUIParser::getCurrentElementName()
 {
 	std::string full_name;
@@ -1352,8 +1607,6 @@ void LLSimpleXUIParser::characterData(const char *s, int len)
 	return full_name;
 }
 
-const S32 LINE_NUMBER_HERE = 0;
-
 void LLSimpleXUIParser::parserWarning(const std::string& message)
 {
 #ifdef LL_WINDOWS
@@ -1377,7 +1630,7 @@ void LLSimpleXUIParser::parserError(const std::string& message)
 #endif
 }
 
-bool LLSimpleXUIParser::readNoValue(Parser& parser, void* val_ptr)
+bool LLSimpleXUIParser::readFlag(Parser& parser, void* val_ptr)
 {
 	LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser);
 	return self.mCurAttributeValueBegin == NO_VALUE_MARKER;
diff --git a/indra/llxuixml/llxuiparser.h b/indra/llxuixml/llxuiparser.h
index 0c38c4da936b2feb28e4e58172f4db6c2c0f6b34..d7cd25696723dd11a104c4435dd9067a5d84bbab 100644
--- a/indra/llxuixml/llxuiparser.h
+++ b/indra/llxuixml/llxuiparser.h
@@ -116,7 +116,7 @@ LOG_CLASS(LLXUIParser);
 	bool readAttributes(LLXMLNodePtr nodep, LLInitParam::BaseBlock& block);
 
 	//reader helper functions
-	static bool readNoValue(Parser& parser, void* val_ptr);
+	static bool readFlag(Parser& parser, void* val_ptr);
 	static bool readBoolValue(Parser& parser, void* val_ptr);
 	static bool readStringValue(Parser& parser, void* val_ptr);
 	static bool readU8Value(Parser& parser, void* val_ptr);
@@ -133,23 +133,23 @@ LOG_CLASS(LLXUIParser);
 	static bool readSDValue(Parser& parser, void* val_ptr);
 
 	//writer helper functions
-	static bool writeNoValue(Parser& parser, const void* val_ptr, const name_stack_t&);
-	static bool writeBoolValue(Parser& parser, const void* val_ptr, const name_stack_t&);
-	static bool writeStringValue(Parser& parser, const void* val_ptr, const name_stack_t&);
-	static bool writeU8Value(Parser& parser, const void* val_ptr, const name_stack_t&);
-	static bool writeS8Value(Parser& parser, const void* val_ptr, const name_stack_t&);
-	static bool writeU16Value(Parser& parser, const void* val_ptr, const name_stack_t&);
-	static bool writeS16Value(Parser& parser, const void* val_ptr, const name_stack_t&);
-	static bool writeU32Value(Parser& parser, const void* val_ptr, const name_stack_t&);
-	static bool writeS32Value(Parser& parser, const void* val_ptr, const name_stack_t&);
-	static bool writeF32Value(Parser& parser, const void* val_ptr, const name_stack_t&);
-	static bool writeF64Value(Parser& parser, const void* val_ptr, const name_stack_t&);
-	static bool writeColor4Value(Parser& parser, const void* val_ptr, const name_stack_t&);
-	static bool writeUIColorValue(Parser& parser, const void* val_ptr, const name_stack_t&);
-	static bool writeUUIDValue(Parser& parser, const void* val_ptr, const name_stack_t&);
-	static bool writeSDValue(Parser& parser, const void* val_ptr, const name_stack_t&);
-
-	LLXMLNodePtr getNode(const name_stack_t& stack);
+	static bool writeFlag(Parser& parser, const void* val_ptr, name_stack_t&);
+	static bool writeBoolValue(Parser& parser, const void* val_ptr, name_stack_t&);
+	static bool writeStringValue(Parser& parser, const void* val_ptr, name_stack_t&);
+	static bool writeU8Value(Parser& parser, const void* val_ptr, name_stack_t&);
+	static bool writeS8Value(Parser& parser, const void* val_ptr, name_stack_t&);
+	static bool writeU16Value(Parser& parser, const void* val_ptr, name_stack_t&);
+	static bool writeS16Value(Parser& parser, const void* val_ptr, name_stack_t&);
+	static bool writeU32Value(Parser& parser, const void* val_ptr, name_stack_t&);
+	static bool writeS32Value(Parser& parser, const void* val_ptr, name_stack_t&);
+	static bool writeF32Value(Parser& parser, const void* val_ptr, name_stack_t&);
+	static bool writeF64Value(Parser& parser, const void* val_ptr, name_stack_t&);
+	static bool writeColor4Value(Parser& parser, const void* val_ptr, name_stack_t&);
+	static bool writeUIColorValue(Parser& parser, const void* val_ptr, name_stack_t&);
+	static bool writeUUIDValue(Parser& parser, const void* val_ptr, name_stack_t&);
+	static bool writeSDValue(Parser& parser, const void* val_ptr, name_stack_t&);
+
+	LLXMLNodePtr getNode(name_stack_t& stack);
 
 private:
 	Parser::name_stack_t			mNameStack;
@@ -157,9 +157,8 @@ LOG_CLASS(LLXUIParser);
 	// Root of the widget XML sub-tree, for example, "line_editor"
 	LLXMLNodePtr					mWriteRootNode;
 	
-	typedef std::map<S32, LLXMLNodePtr>	out_nodes_t;
+	typedef std::map<std::string, LLXMLNodePtr>	out_nodes_t;
 	out_nodes_t						mOutNodes;
-	S32								mLastWriteGeneration;
 	LLXMLNodePtr					mLastWrittenChild;
 	S32								mCurReadDepth;
 	std::string						mCurFileName;
@@ -197,7 +196,7 @@ LOG_CLASS(LLSimpleXUIParser);
 
 private:
 	//reader helper functions
-	static bool readNoValue(Parser&, void* val_ptr);
+	static bool readFlag(Parser&, void* val_ptr);
 	static bool readBoolValue(Parser&, void* val_ptr);
 	static bool readStringValue(Parser&, void* val_ptr);
 	static bool readU8Value(Parser&, void* val_ptr);
@@ -226,7 +225,6 @@ LOG_CLASS(LLSimpleXUIParser);
 
 	Parser::name_stack_t			mNameStack;
 	struct XML_ParserStruct*		mParser;
-	S32								mLastWriteGeneration;
 	LLXMLNodePtr					mLastWrittenChild;
 	S32								mCurReadDepth;
 	std::string						mCurFileName;
diff --git a/indra/mac_crash_logger/llcrashloggermac.cpp b/indra/mac_crash_logger/llcrashloggermac.cpp
index b555e92b96e563f42e167d1c3585aca610418338..8f1c1a2dd0fba32c849252a9cac5e4491fad7688 100644
--- a/indra/mac_crash_logger/llcrashloggermac.cpp
+++ b/indra/mac_crash_logger/llcrashloggermac.cpp
@@ -249,5 +249,6 @@ void LLCrashLoggerMac::updateApplication(const std::string& message)
 
 bool LLCrashLoggerMac::cleanup()
 {
+	commonCleanup();
 	return true;
 }
diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamer.h b/indra/media_plugins/gstreamer010/llmediaimplgstreamer.h
index 77d6d196633efd775f2279c2a03ccc12d8a2333c..6bc272c009aa5e6c87721c6057c2eae9bc917253 100644
--- a/indra/media_plugins/gstreamer010/llmediaimplgstreamer.h
+++ b/indra/media_plugins/gstreamer010/llmediaimplgstreamer.h
@@ -37,6 +37,7 @@ extern "C" {
 #include <stdio.h>
 #include <gst/gst.h>
 
+#include "apr_pools.h"
 #include "apr_dso.h"
 }
 
diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp
index 93a10424dde4d521b48aeee049de9bc342c78290..2e4baaa9eb23744e7b185f873565ac36abb5be09 100644
--- a/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp
+++ b/indra/media_plugins/gstreamer010/llmediaimplgstreamer_syms.cpp
@@ -28,18 +28,16 @@
 
 #if LL_GSTREAMER010_ENABLED
 
-#include "linden_common.h"
-
 #include <string>
 
 extern "C" {
 #include <gst/gst.h>
 
+#include "apr_pools.h"
 #include "apr_dso.h"
 }
 
 #include "llmediaimplgstreamertriviallogging.h"
-#include "llaprpool.h"
 
 #define LL_GST_SYM(REQ, GSTSYM, RTN, ...) RTN (*ll##GSTSYM)(__VA_ARGS__) = NULL
 #include "llmediaimplgstreamer_syms_raw.inc"
@@ -58,7 +56,7 @@ void ll_gst_debug_register_funcptr(GstDebugFuncPtr func, gchar* ptrname)
 }
 
 static bool sSymsGrabbed = false;
-static LLAPRPool sSymGSTDSOMemoryPool;
+static apr_pool_t *sSymGSTDSOMemoryPool = NULL;
 static apr_dso_handle_t *sSymGSTDSOHandleG = NULL;
 static apr_dso_handle_t *sSymGSTDSOHandleV = NULL;
 
@@ -80,11 +78,11 @@ bool grab_gst_syms(std::string gst_dso_name,
 #define LL_GST_SYM(REQ, GSTSYM, RTN, ...) do{rv = apr_dso_sym((apr_dso_handle_sym_t*)&ll##GSTSYM, sSymGSTDSOHandle, #GSTSYM); if (rv != APR_SUCCESS) {INFOMSG("Failed to grab symbol: %s", #GSTSYM); if (REQ) sym_error = true;} else DEBUGMSG("grabbed symbol: %s from %p", #GSTSYM, (void*)ll##GSTSYM);}while(0)
 
 	//attempt to load the shared libraries
-	sSymGSTDSOMemoryPool.create();
+	apr_pool_create(&sSymGSTDSOMemoryPool, NULL);
   
 	if ( APR_SUCCESS == (rv = apr_dso_load(&sSymGSTDSOHandle,
 					       gst_dso_name.c_str(),
-					       sSymGSTDSOMemoryPool()) ))
+					       sSymGSTDSOMemoryPool) ))
 	{
 		INFOMSG("Found DSO: %s", gst_dso_name.c_str());
 #include "llmediaimplgstreamer_syms_raw.inc"
@@ -98,7 +96,7 @@ bool grab_gst_syms(std::string gst_dso_name,
 		if ( APR_SUCCESS ==
 		     (rv = apr_dso_load(&sSymGSTDSOHandle,
 					gst_dso_name_vid.c_str(),
-					sSymGSTDSOMemoryPool()) ))
+					sSymGSTDSOMemoryPool) ))
 		{
 			INFOMSG("Found DSO: %s", gst_dso_name_vid.c_str());
 #include "llmediaimplgstreamer_syms_rawv.inc"
@@ -152,7 +150,8 @@ void ungrab_gst_syms()
 	
 	if ( sSymGSTDSOMemoryPool )
 	{
-		sSymGSTDSOMemoryPool.destroy();
+		apr_pool_destroy(sSymGSTDSOMemoryPool);
+		sSymGSTDSOMemoryPool = NULL;
 	}
 	
 	// NULL-out all of the symbols we'd grabbed
diff --git a/indra/media_plugins/webkit/linux_volume_catcher.cpp b/indra/media_plugins/webkit/linux_volume_catcher.cpp
index 94dfd80700306ff32170cee44dff5b031c25879f..91be3a89e9a6e58cee506e4312cc250647440351 100644
--- a/indra/media_plugins/webkit/linux_volume_catcher.cpp
+++ b/indra/media_plugins/webkit/linux_volume_catcher.cpp
@@ -65,7 +65,7 @@ extern "C" {
 #undef LL_PA_SYM
 
 static bool sSymsGrabbed = false;
-static LLAPRPool sSymPADSOMemoryPool;
+static apr_pool_t *sSymPADSOMemoryPool = NULL;
 static apr_dso_handle_t *sSymPADSOHandleG = NULL;
 
 bool grab_pa_syms(std::string pulse_dso_name)
@@ -84,11 +84,11 @@ bool grab_pa_syms(std::string pulse_dso_name)
 #define LL_PA_SYM(REQUIRED, PASYM, RTN, ...) do{rv = apr_dso_sym((apr_dso_handle_sym_t*)&ll##PASYM, sSymPADSOHandle, #PASYM); if (rv != APR_SUCCESS) {INFOMSG("Failed to grab symbol: %s", #PASYM); if (REQUIRED) sym_error = true;} else DEBUGMSG("grabbed symbol: %s from %p", #PASYM, (void*)ll##PASYM);}while(0)
 
 	//attempt to load the shared library
-	sSymPADSOMemoryPool.create();
+	apr_pool_create(&sSymPADSOMemoryPool, NULL);
   
 	if ( APR_SUCCESS == (rv = apr_dso_load(&sSymPADSOHandle,
 					       pulse_dso_name.c_str(),
-					       sSymPADSOMemoryPool()) ))
+					       sSymPADSOMemoryPool) ))
 	{
 		INFOMSG("Found DSO: %s", pulse_dso_name.c_str());
 
@@ -130,8 +130,12 @@ void ungrab_pa_syms()
 		apr_dso_unload(sSymPADSOHandleG);
 		sSymPADSOHandleG = NULL;
 	}
-
-	sSymPADSOMemoryPool.destroy();
+	
+	if ( sSymPADSOMemoryPool )
+	{
+		apr_pool_destroy(sSymPADSOMemoryPool);
+		sSymPADSOMemoryPool = NULL;
+	}
 	
 	// NULL-out all of the symbols we'd grabbed
 #define LL_PA_SYM(REQUIRED, PASYM, RTN, ...) do{ll##PASYM = NULL;}while(0)
diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp
index 0f74772e428acaed85ad9eca6f8401264f7636d5..47f8dcd545926233cc0238315cfe4d4dc2966bf9 100644
--- a/indra/media_plugins/webkit/media_plugin_webkit.cpp
+++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp
@@ -25,12 +25,11 @@
  * $/LicenseInfo$
  * @endcond
  */
-
 #include "llqtwebkit.h"
-
 #include "linden_common.h"
 #include "indra_constants.h" // for indra keyboard codes
 
+#include "lltimer.h"
 #include "llgl.h"
 
 #include "llplugininstance.h"
@@ -117,15 +116,19 @@ class MediaPluginWebKit :
 	F32 mBackgroundG;
 	F32 mBackgroundB;
 	std::string mTarget;
-	
+	LLTimer mElapsedTime;
+		
 	VolumeCatcher mVolumeCatcher;
 
 	void postDebugMessage( const std::string& msg )
 	{
 		if ( mEnableMediaPluginDebugging )
 		{
+			std::stringstream str;
+			str << "@Media Msg> " << "[" << (double)mElapsedTime.getElapsedTimeF32()  << "] -- " << msg;
+
 			LLPluginMessage debug_message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "debug_message");
-			debug_message.setValue("message_text", "Media> " + msg);
+			debug_message.setValue("message_text", str.str());
 			debug_message.setValue("message_level", "info");
 			sendMessage(debug_message);
 		}
@@ -323,7 +326,11 @@ class MediaPluginWebKit :
 		LLQtWebKit::getInstance()->enablePlugins( mPluginsEnabled );
 
 		// turn on/off Javascript based on what host app tells us
+#if LLQTWEBKIT_API_VERSION >= 11
+		LLQtWebKit::getInstance()->enableJavaScript( mJavascriptEnabled );
+#else
 		LLQtWebKit::getInstance()->enableJavascript( mJavascriptEnabled );
+#endif
 
 		std::stringstream str;
 		str << "Cookies enabled = " << mCookiesEnabled << ", plugins enabled = " << mPluginsEnabled << ", Javascript enabled = " << mJavascriptEnabled;
@@ -346,7 +353,7 @@ class MediaPluginWebKit :
 		// append details to agent string
 		LLQtWebKit::getInstance()->setBrowserAgentId( mUserAgent );
 		postDebugMessage( "Updating user agent with " + mUserAgent );
-		
+
 #if !LL_QTWEBKIT_USES_PIXMAPS
 		// don't flip bitmap
 		LLQtWebKit::getInstance()->flipWindow( mBrowserWindowId, true );
@@ -374,7 +381,17 @@ class MediaPluginWebKit :
 		url << "%22%3E%3C/body%3E%3C/html%3E";
 		
 		//lldebugs << "data url is: " << url.str() << llendl;
-					
+
+		// always display loading overlay now
+#if LLQTWEBKIT_API_VERSION >= 16
+		LLQtWebKit::getInstance()->enableLoadingOverlay(mBrowserWindowId, true);
+#else
+		llwarns << "Ignoring enableLoadingOverlay() call (llqtwebkit version is too old)." << llendl;
+#endif
+		str.clear();
+		str << "Loading overlay enabled = " << mEnableMediaPluginDebugging << " for mBrowserWindowId = " << mBrowserWindowId;
+		postDebugMessage( str.str() );
+
 		LLQtWebKit::getInstance()->navigateTo( mBrowserWindowId, url.str() );
 //		LLQtWebKit::getInstance()->navigateTo( mBrowserWindowId, "about:blank" );
 
@@ -583,6 +600,10 @@ class MediaPluginWebKit :
 		// These could be passed through as well, but aren't really needed.
 //		message.setValue("uri", event.getEventUri());
 //		message.setValueBoolean("dead", (event.getIntValue() != 0))
+
+		// debug spam
+		postDebugMessage( "Sending cookie_set message from plugin: " + event.getStringValue() );
+
 		sendMessage(message);
 	}
 
@@ -863,6 +884,8 @@ MediaPluginWebKit::MediaPluginWebKit(LLPluginInstance::sendMessageFunction host_
 	mPluginsEnabled = true;		// default to on
 	mEnableMediaPluginDebugging = false;
 	mUserAgent = "LLPluginMedia Web Browser";
+
+	mElapsedTime.reset();
 }
 
 MediaPluginWebKit::~MediaPluginWebKit()
@@ -1210,7 +1233,6 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
 			{
 				mEnableMediaPluginDebugging = message_in.getValueBoolean( "enable" );
 			}
-
 			else
 			if(message_name == "js_enable_object")
 			{
@@ -1298,6 +1320,15 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
 					mFirstFocus = false;
 				}
 			}
+			else if(message_name == "set_page_zoom_factor")
+			{
+#if LLQTWEBKIT_API_VERSION >= 15
+				F32 factor = message_in.getValueReal("factor");
+				LLQtWebKit::getInstance()->setPageZoomFactor(factor);
+#else
+				llwarns << "Ignoring setPageZoomFactor message (llqtwebkit version is too old)." << llendl;
+#endif
+			}
 			else if(message_name == "clear_cache")
 			{
 				LLQtWebKit::getInstance()->clearCache();
@@ -1324,6 +1355,9 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
 			else if(message_name == "set_cookies")
 			{
 				LLQtWebKit::getInstance()->setCookies(message_in.getValue("cookies"));
+
+				// debug spam
+				postDebugMessage( "Plugin setting cookie: " + message_in.getValue("cookies") );
 			}
 			else if(message_name == "proxy_setup")
 			{
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index fe80a47ca459c3b33f14fe635e824b3b0ca5b013..f85b943c70d4db08b59eea83bcd05d7ed4ae1604 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -102,7 +102,6 @@ set(viewer_SOURCE_FILES
     llavatarlist.cpp
     llavatarlistitem.cpp
     llavatarpropertiesprocessor.cpp
-    llbottomtray.cpp
     llbox.cpp
     llbreadcrumbview.cpp
     llbrowsernotification.cpp
@@ -118,6 +117,7 @@ set(viewer_SOURCE_FILES
     llchatitemscontainerctrl.cpp
     llchatmsgbox.cpp
     llchiclet.cpp
+    llchicletbar.cpp
     llclassifiedinfo.cpp
     llclassifiedstatsresponder.cpp
     llcofwearables.cpp
@@ -168,6 +168,7 @@ set(viewer_SOURCE_FILES
     llfloaterabout.cpp
     llfloateranimpreview.cpp
     llfloaterauction.cpp
+    llfloateravatar.cpp
     llfloateravatarpicker.cpp
     llfloateravatartextures.cpp
     llfloaterbeacons.cpp
@@ -182,6 +183,7 @@ set(viewer_SOURCE_FILES
     llfloatercamera.cpp
     llfloatercolorpicker.cpp
     llfloaterdeleteenvpreset.cpp
+    llfloaterdestinations.cpp
     llfloaterdisplayname.cpp
     llfloatereditdaycycle.cpp
     llfloatereditsky.cpp
@@ -205,7 +207,6 @@ set(viewer_SOURCE_FILES
     llfloaterland.cpp
     llfloaterlandholdings.cpp
     llfloatermap.cpp
-    llfloatermediabrowser.cpp
     llfloatermediasettings.cpp
     llfloatermemleak.cpp
     llfloatermodelpreview.cpp
@@ -215,9 +216,9 @@ set(viewer_SOURCE_FILES
     llfloaternotificationsconsole.cpp
     llfloaterobjectweights.cpp
     llfloateropenobject.cpp
+    llfloateroutbox.cpp
     llfloaterpay.cpp
     llfloaterperms.cpp
-    llfloaterpostcard.cpp
     llfloaterpostprocess.cpp
     llfloaterpreference.cpp
     llfloaterproperties.cpp
@@ -229,7 +230,7 @@ set(viewer_SOURCE_FILES
     llfloatersearch.cpp
     llfloatersellland.cpp
     llfloatersettingsdebug.cpp
-    llfloatersidetraytab.cpp
+    llfloatersidepanelcontainer.cpp
     llfloatersnapshot.cpp
     llfloatersounddevices.cpp
     llfloatertelehub.cpp
@@ -238,10 +239,13 @@ set(viewer_SOURCE_FILES
     llfloatertools.cpp
     llfloatertopobjects.cpp
     llfloatertos.cpp
+    llfloatertoybox.cpp
+    llfloatertranslationsettings.cpp
     llfloateruipreview.cpp
     llfloaterurlentry.cpp
     llfloatervoiceeffect.cpp
     llfloaterwebcontent.cpp
+    llfloaterwebprofile.cpp
     llfloaterwhitelistentry.cpp
     llfloaterwindowsize.cpp
     llfloaterworldmap.cpp
@@ -311,10 +315,11 @@ set(viewer_SOURCE_FILES
     llmaniprotate.cpp
     llmanipscale.cpp
     llmaniptranslate.cpp
+    llmarketplacefunctions.cpp
+    llmarketplacenotifications.cpp
     llmediactrl.cpp
     llmediadataclient.cpp
     llmemoryview.cpp
-    llmenucommands.cpp
     llmeshrepository.cpp
     llmimetypes.cpp
     llmorphview.cpp
@@ -368,7 +373,6 @@ set(viewer_SOURCE_FILES
     llpanelmaininventory.cpp
     llpanelmarketplaceinbox.cpp
     llpanelmarketplaceinboxinventory.cpp
-    llpanelmarketplaceoutbox.cpp
     llpanelmarketplaceoutboxinventory.cpp
     llpanelmediasettingsgeneral.cpp
     llpanelmediasettingspermissions.cpp
@@ -391,7 +395,12 @@ set(viewer_SOURCE_FILES
     llpanelplacestab.cpp
     llpanelprimmediacontrols.cpp
     llpanelprofile.cpp
-    llpanelprofileview.cpp
+    llpanelsnapshot.cpp
+    llpanelsnapshotinventory.cpp
+    llpanelsnapshotlocal.cpp
+    llpanelsnapshotoptions.cpp
+    llpanelsnapshotpostcard.cpp
+    llpanelsnapshotprofile.cpp
     llpanelteleporthistory.cpp
     llpaneltiptoast.cpp
     llpanelvoiceeffect.cpp
@@ -410,6 +419,7 @@ set(viewer_SOURCE_FILES
     llpopupview.cpp
     llpolymesh.cpp
     llpolymorph.cpp
+    llpostcard.cpp
     llpreview.cpp
     llpreviewanim.cpp
     llpreviewgesture.cpp
@@ -441,13 +451,10 @@ set(viewer_SOURCE_FILES
     llsidepanelinventorysubpanel.cpp
     llsidepaneliteminfo.cpp
     llsidepaneltaskinfo.cpp
-    llsidetray.cpp
-    llsidetraylistener.cpp
     llsidetraypanelcontainer.cpp
     llsky.cpp
     llslurl.cpp
     llspatialpartition.cpp
-    llspeakbutton.cpp
     llspeakers.cpp
     llspeakingindicatormanager.cpp
     llsplitbutton.cpp
@@ -483,6 +490,7 @@ set(viewer_SOURCE_FILES
     lltoastpanel.cpp
     lltoastscripttextbox.cpp
     lltool.cpp
+    lltoolbarview.cpp
     lltoolbrush.cpp
     lltoolcomp.cpp
     lltooldraganddrop.cpp
@@ -538,9 +546,6 @@ set(viewer_SOURCE_FILES
     llviewerjoint.cpp
     llviewerjointattachment.cpp
     llviewerjointmesh.cpp
-    llviewerjointmesh_sse.cpp
-    llviewerjointmesh_sse2.cpp
-    llviewerjointmesh_vec.cpp
     llviewerjoystick.cpp
     llviewerkeyboard.cpp
     llviewerlayer.cpp
@@ -588,7 +593,6 @@ set(viewer_SOURCE_FILES
     llvopartgroup.cpp
     llvosky.cpp
     llvosurfacepatch.cpp
-    llvotextbubble.cpp
     llvotree.cpp
     llvovolume.cpp
     llvowater.cpp
@@ -601,8 +605,10 @@ set(viewer_SOURCE_FILES
     llwearablelist.cpp
     llwearabletype.cpp
     llweb.cpp
+    llwebprofile.cpp
     llwebsharing.cpp
     llwind.cpp
+    llwindowlistener.cpp
     llwlanimator.cpp
     llwldaycycle.cpp
     llwlhandlers.cpp
@@ -622,20 +628,6 @@ set(viewer_SOURCE_FILES
 set(VIEWER_BINARY_NAME "secondlife-bin" CACHE STRING
     "The name of the viewer executable to create.")
 
-if (LINUX)
-  # We can't set these flags for Darwin, because they get passed to
-  # the PPC compiler.  Ugh.
-
-  set_source_files_properties(
-      llviewerjointmesh_sse.cpp
-      PROPERTIES COMPILE_FLAGS "-msse -mfpmath=sse"
-      )
-  set_source_files_properties(
-      llviewerjointmesh_sse2.cpp
-      PROPERTIES COMPILE_FLAGS "-msse2 -mfpmath=sse"
-      )
-endif (LINUX)
-
 set(viewer_HEADER_FILES
     CMakeLists.txt
     ViewerInstall.cmake
@@ -666,7 +658,6 @@ set(viewer_HEADER_FILES
     llavatarlist.h
     llavatarlistitem.h
     llavatarpropertiesprocessor.h
-    llbottomtray.h
     llbox.h
     llbreadcrumbview.h
     llbuycurrencyhtml.h
@@ -682,6 +673,7 @@ set(viewer_HEADER_FILES
     llchatitemscontainerctrl.h
     llchatmsgbox.h
     llchiclet.h
+    llchicletbar.h
     llclassifiedinfo.h
     llclassifiedstatsresponder.h
     llcofwearables.h
@@ -732,6 +724,7 @@ set(viewer_HEADER_FILES
     llfloaterabout.h
     llfloateranimpreview.h
     llfloaterauction.h
+    llfloateravatar.h
     llfloateravatarpicker.h
     llfloateravatartextures.h
     llfloaterbeacons.h
@@ -746,6 +739,7 @@ set(viewer_HEADER_FILES
     llfloatercamera.h
     llfloatercolorpicker.h
     llfloaterdeleteenvpreset.h
+    llfloaterdestinations.h
     llfloaterdisplayname.h
     llfloatereditdaycycle.h
     llfloatereditsky.h
@@ -769,7 +763,6 @@ set(viewer_HEADER_FILES
     llfloaterland.h
     llfloaterlandholdings.h
     llfloatermap.h
-    llfloatermediabrowser.h
     llfloatermediasettings.h
     llfloatermemleak.h
     llfloatermodelpreview.h
@@ -779,9 +772,9 @@ set(viewer_HEADER_FILES
     llfloaternotificationsconsole.h
     llfloaterobjectweights.h
     llfloateropenobject.h
+    llfloateroutbox.h
     llfloaterpay.h
     llfloaterperms.h
-    llfloaterpostcard.h
     llfloaterpostprocess.h
     llfloaterpreference.h
     llfloaterproperties.h
@@ -793,7 +786,7 @@ set(viewer_HEADER_FILES
     llfloatersearch.h
     llfloatersellland.h
     llfloatersettingsdebug.h
-    llfloatersidetraytab.h
+    llfloatersidepanelcontainer.h
     llfloatersnapshot.h
     llfloatersounddevices.h
     llfloatertelehub.h
@@ -802,10 +795,13 @@ set(viewer_HEADER_FILES
     llfloatertools.h
     llfloatertopobjects.h
     llfloatertos.h
+    llfloatertoybox.h
+    llfloatertranslationsettings.h
     llfloateruipreview.h
     llfloaterurlentry.h
     llfloatervoiceeffect.h
     llfloaterwebcontent.h
+    llfloaterwebprofile.h
     llfloaterwhitelistentry.h
     llfloaterwindowsize.h
     llfloaterworldmap.h
@@ -875,10 +871,11 @@ set(viewer_HEADER_FILES
     llmaniprotate.h
     llmanipscale.h
     llmaniptranslate.h
+    llmarketplacefunctions.h
+    llmarketplacenotifications.h
     llmediactrl.h
     llmediadataclient.h
     llmemoryview.h
-    llmenucommands.h
     llmeshrepository.h
     llmimetypes.h
     llmorphview.h
@@ -926,7 +923,6 @@ set(viewer_HEADER_FILES
     llpanelmaininventory.h
     llpanelmarketplaceinbox.h
     llpanelmarketplaceinboxinventory.h
-    llpanelmarketplaceoutbox.h
     llpanelmarketplaceoutboxinventory.h
     llpanelmediasettingsgeneral.h
     llpanelmediasettingspermissions.h
@@ -949,7 +945,7 @@ set(viewer_HEADER_FILES
     llpanelplacestab.h
     llpanelprimmediacontrols.h
     llpanelprofile.h
-    llpanelprofileview.h
+    llpanelsnapshot.h
     llpanelteleporthistory.h
     llpaneltiptoast.h
     llpanelvoicedevicesettings.h
@@ -968,6 +964,7 @@ set(viewer_HEADER_FILES
     llpolymesh.h
     llpolymorph.h
     llpopupview.h
+    llpostcard.h
     llpreview.h
     llpreviewanim.h
     llpreviewgesture.h
@@ -1000,13 +997,10 @@ set(viewer_HEADER_FILES
     llsidepanelinventorysubpanel.h
     llsidepaneliteminfo.h
     llsidepaneltaskinfo.h
-    llsidetray.h
-    llsidetraylistener.h
     llsidetraypanelcontainer.h
     llsky.h
     llslurl.h
     llspatialpartition.h
-    llspeakbutton.h
     llspeakers.h
     llspeakingindicatormanager.h
     llsplitbutton.h
@@ -1043,6 +1037,7 @@ set(viewer_HEADER_FILES
     lltoastpanel.h
     lltoastscripttextbox.h
     lltool.h
+    lltoolbarview.h
     lltoolbrush.h
     lltoolcomp.h
     lltooldraganddrop.h
@@ -1145,7 +1140,6 @@ set(viewer_HEADER_FILES
     llvopartgroup.h
     llvosky.h
     llvosurfacepatch.h
-    llvotextbubble.h
     llvotree.h
     llvotreenew.h
     llvovolume.h
@@ -1159,8 +1153,10 @@ set(viewer_HEADER_FILES
     llwearablelist.h
     llwearabletype.h
     llweb.h
+    llwebprofile.h
     llwebsharing.h
     llwind.h
+    llwindowlistener.h
     llwlanimator.h
     llwldaycycle.h
     llwlhandlers.h
@@ -1383,11 +1379,6 @@ endif (WINDOWS)
 set(viewer_XUI_FILES
     skins/default/colors.xml
     skins/default/textures/textures.xml
-    skins/minimal/colors.xml
-    skins/minimal/textures/textures.xml
-
-
-
     )
 file(GLOB DEFAULT_XUI_FILE_GLOB_LIST
      ${CMAKE_CURRENT_SOURCE_DIR}/skins/*/xui/en/*.xml)
@@ -1414,6 +1405,7 @@ list(APPEND viewer_SOURCE_FILES ${viewer_XUI_FILES})
 set(viewer_APPSETTINGS_FILES
     app_settings/anim.ini
     app_settings/cmd_line.xml
+    app_settings/commands.xml
     app_settings/grass.xml
     app_settings/high_graphics.xml
     app_settings/ignorable_dialogs.xml
@@ -1426,8 +1418,8 @@ set(viewer_APPSETTINGS_FILES
     app_settings/settings_crash_behavior.xml
     app_settings/settings_files.xml
     app_settings/settings_per_account.xml
-    app_settings/settings_minimal.xml
     app_settings/std_bump.ini
+    app_settings/toolbars.xml
     app_settings/trees.xml
     app_settings/ultra_graphics.xml
     app_settings/viewerart.xml
@@ -1987,12 +1979,19 @@ if (LL_TESTS)
     llmediadataclient.cpp
     lllogininstance.cpp
     llremoteparcelrequest.cpp
+    lltranslate.cpp
     llviewerhelputil.cpp
     llversioninfo.cpp
     llworldmap.cpp
     llworldmipmap.cpp
   )
 
+  set_source_files_properties(
+    lltranslate.cpp
+    PROPERTIES
+    LL_TEST_ADDITIONAL_LIBRARIES "${JSONCPP_LIBRARIES}"
+  )
+
   ##################################################
   # DISABLING PRECOMPILED HEADERS USAGE FOR TESTS
   ##################################################
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1d1d39c786b10171291631b631504b0c3f6bed37
--- /dev/null
+++ b/indra/newview/app_settings/commands.xml
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<commands>
+  <command name="aboutland"
+           available_in_toybox="true"
+           icon="Command_AboutLand_Icon"
+           label_ref="Command_AboutLand_Label"
+           tooltip_ref="Command_AboutLand_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="about_land"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="about_land"
+           />
+  <command name="appearance"  
+           available_in_toybox="true"
+           icon="Command_Appearance_Icon"
+           label_ref="Command_Appearance_Label"
+           tooltip_ref="Command_Appearance_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="appearance"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="appearance"
+           />
+  <command name="avatar"
+           available_in_toybox="true"
+           icon="Command_Avatar_Icon"
+           label_ref="Command_Avatar_Label"
+           tooltip_ref="Command_Avatar_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="avatar"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="avatar"
+           />
+  <command name="build"
+           available_in_toybox="true"
+           icon="Command_Build_Icon"
+           label_ref="Command_Build_Label"
+           tooltip_ref="Command_Build_Tooltip"
+           execute_function="Build.Toggle"
+           execute_parameters="build"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="build"
+           />
+  <command name="chat"
+           available_in_toybox="true"
+           icon="Command_Chat_Icon"
+           label_ref="Command_Chat_Label"
+           tooltip_ref="Command_Chat_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="chat_bar"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="chat_bar"
+           />
+  <command name="compass"
+           available_in_toybox="false"
+           icon="Command_Compass_Icon"
+           label_ref="Command_Compass_Label"
+           tooltip_ref="Command_Compass_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="compass"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="compass"
+           />
+  <command name="destinations"
+           available_in_toybox="true"
+           icon="Command_Destinations_Icon"
+           label_ref="Command_Destinations_Label"
+           tooltip_ref="Command_Destinations_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="destinations"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="destinations"
+           />
+  <command name="gestures"
+           available_in_toybox="true"
+           icon="Command_Gestures_Icon"
+           label_ref="Command_Gestures_Label"
+           tooltip_ref="Command_Gestures_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="gestures"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="gestures"
+           />
+  <command name="howto"
+           available_in_toybox="true"
+           icon="Command_HowTo_Icon"
+           label_ref="Command_HowTo_Label"
+           tooltip_ref="Command_HowTo_Tooltip"
+           execute_function="Help.ToggleHowTo"
+           is_running_function="Help.HowToVisible"
+           />
+  <command name="inventory"
+           available_in_toybox="true"
+           icon="Command_Inventory_Icon"
+           label_ref="Command_Inventory_Label"
+           tooltip_ref="Command_Inventory_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="inventory"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="inventory"
+           />
+  <command name="map"
+           available_in_toybox="true"
+           icon="Command_Map_Icon"
+           label_ref="Command_Map_Label"
+           tooltip_ref="Command_Map_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="world_map"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="world_map"
+           />
+  <command name="marketplace"
+           available_in_toybox="false"
+           icon="Command_Marketplace_Icon"
+           label_ref="Command_Marketplace_Label"
+           tooltip_ref="Command_Marketplace_Tooltip"
+           execute_function="Avatar.OpenMarketplace"
+           />
+  <command name="minimap"
+           available_in_toybox="true"
+           icon="Command_MiniMap_Icon"
+           label_ref="Command_MiniMap_Label"
+           tooltip_ref="Command_MiniMap_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="mini_map"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="mini_map"
+           />
+  <command name="move"
+           available_in_toybox="true"
+           icon="Command_Move_Icon"
+           label_ref="Command_Move_Label"
+           tooltip_ref="Command_Move_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="moveview"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="moveview"
+           />
+  <command name="outbox"
+           available_in_toybox="false"
+           icon="Command_Outbox_Icon"
+           label_ref="Command_Outbox_Label"
+           tooltip_ref="Command_Outbox_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="outbox"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="outbox"
+           />
+  <command name="people"
+           available_in_toybox="true"
+           icon="Command_People_Icon"
+           label_ref="Command_People_Label"
+           tooltip_ref="Command_People_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="people"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="people"
+           />
+  <command name="picks"
+           available_in_toybox="true"
+           icon="Command_Picks_Icon"
+           label_ref="Command_Picks_Label"
+           tooltip_ref="Command_Picks_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="picks"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="picks"
+           />
+  <command name="places"
+           available_in_toybox="true"
+           icon="Command_Places_Icon"
+           label_ref="Command_Places_Label"
+           tooltip_ref="Command_Places_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="places"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="places"
+           />
+  <command name="preferences"
+           available_in_toybox="true"
+           icon="Command_Preferences_Icon"
+           label_ref="Command_Preferences_Label"
+           tooltip_ref="Command_Preferences_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="preferences"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="preferences"
+           />
+  <command name="profile"
+           available_in_toybox="true"
+           icon="Command_Profile_Icon"
+           label_ref="Command_Profile_Label"
+           tooltip_ref="Command_Profile_Tooltip"
+           execute_function="Avatar.ToggleMyProfile"
+           is_running_function="Avatar.IsMyProfileOpen"
+           />
+  <command name="search"
+           available_in_toybox="true"
+           icon="Command_Search_Icon"
+           label_ref="Command_Search_Label"
+           tooltip_ref="Command_Search_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="search"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="search"
+           />
+  <command name="snapshot"
+           available_in_toybox="true"
+           icon="Command_Snapshot_Icon"
+           label_ref="Command_Snapshot_Label"
+           tooltip_ref="Command_Snapshot_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="snapshot"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="snapshot"
+           />
+  <command name="speak"
+           available_in_toybox="true"
+           icon="Command_Speak_Icon"
+           label_ref="Command_Speak_Label"
+           tooltip_ref="Command_Speak_Tooltip"
+           execute_function="Agent.PressMicrophone"
+           execute_parameters="speak"
+           execute_stop_function="Agent.ReleaseMicrophone"
+           execute_stop_parameters="speak"
+           is_enabled_function="Agent.IsActionAllowed"
+           is_enabled_parameters="speak"
+           is_running_function="Agent.IsMicrophoneOn"
+           is_running_parameters="speak"
+           />
+  <command name="view"
+           available_in_toybox="true"
+           icon="Command_View_Icon"
+           label_ref="Command_View_Label"
+           tooltip_ref="Command_View_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="camera"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="camera"
+           />
+  <command name="voice"
+           available_in_toybox="true"
+           icon="Command_Voice_Icon"
+           label_ref="Command_Voice_Label"
+           tooltip_ref="Command_Voice_Tooltip"
+           execute_function="Floater.ToggleOrBringToFront"
+           execute_parameters="voice_controls"
+           is_running_function="Floater.IsOpen"
+           is_running_parameters="voice_controls"
+           />
+</commands>
diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini
index 9fa4046fdf1e55fcd1d38724408bf913fd62a062..82b43432eb32bcbbc2374e093af4d08e6158b90d 100644
--- a/indra/newview/app_settings/keywords.ini
+++ b/indra/newview/app_settings/keywords.ini
@@ -10,7 +10,7 @@ state 			Keyword to indicate state block or state transition
 integer			Integer type
 float			Floating-point type
 string			String type
-key				Key type.  Use NULL_KEY to test for empty keys.
+key				Key type.  Use NULL_KEY to test for empty keys
 vector			Vector type of 3 floats.  Used to represent 3D motion, Euler angles, and color.:Access components by .x, .y. or .z
 rotation		Rotation type of 4 floats.  Used to represent rotation.:Access components by .x, .y., .z, or .w
 list			List of various data types
@@ -28,7 +28,7 @@ collision_end	collision_end(integer num_detected):Triggered when task stops coll
 land_collision_start	land_collision_start(vector pos):Triggered when task starts colliding with land
 land_collision			land_collision(vector pos):Triggered when task is colliding with land
 land_collision_end		land_collision_end(vector pos):Triggered when task stops colliding with land
-timer			timer():Result of the llSetTimerEvent library function call.
+timer			timer():Result of the llSetTimerEvent library function call
 listen			listen(integer channel, string name, key id, string message):Result of the llListen library function call
 sensor			sensor(integer num_detected):Result of the llSensor library function call
 no_sensor		no_sensor():Result of the llSensor library function call
@@ -44,8 +44,8 @@ attach			attach(key id):Triggered when task attaches or detaches from agent
 dataserver      dataserver(key queryid, string data):Triggered when task receives asynchronous data
 moving_start	moving_start():Triggered when task begins moving
 moving_end		moving_end():Triggered when task stops moving
-on_rez			on_rez(integer start_param):Triggered when task is rezed in from inventory or another task
-object_rez		object_rez(key id):Triggered when task rezes in another task
+on_rez			on_rez(integer start_param):Triggered when task is rezzed in from inventory or another task
+object_rez		object_rez(key id):Triggered when task rezzes in another task
 link_message	link_message(integer sender_num, integer num, string str, key id):Triggered when task receives a link message via LLMessageLinked library function call
 changed			changed( integer change ):Triggered various event change the task:(test change with CHANGED_INVENTORY, CHANGED_COLOR, CHANGED_SHAPE, CHANGED_SCALE, CHANGED_TEXTURE, CHANGED_LINK, CHANGED_ALLOWED_DROP, CHANGED_OWNER, CHANGED_REGION, CHANGED_TELEPORT, CHANGED_REGION_START, CHANGED_MEDIA)
 remote_data     remote_data(integer event_type, key channel, key message_id, string sender,integer idata, string sdata):Triggered by various XML-RPC calls (event_type will be one of REMOTE_DATA_CHANNEL, REMOTE_DATA_REQUEST, REMOTE_DATA_REPLY)
@@ -151,15 +151,15 @@ PSYS_SRC_PATTERN_ANGLE
 PSYS_SRC_PATTERN_ANGLE_CONE
 PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
 
-OBJECT_UNKNOWN_DETAIL	Returned by llGetObjectDetails when passed an invalid object parameter type.
-OBJECT_NAME				Used with llGetObjectDetails to get an object's name.
-OBJECT_DESC				Used with llGetObjectDetails to get an object's description.
-OBJECT_POS				Used with llGetObjectDetails to get an object's position.
-OBJECT_ROT				Used with llGetObjectDetails to get an object's rotation.
-OBJECT_VELOCITY			Used with llGetObjectDetails to get an object's velocity.
-OBJECT_OWNER			Used with llGetObjectDetails to get an object's owner's key.  Will be NULL_KEY if group owned.
-OBJECT_GROUP			Used with llGetObjectDetails to get an object's group's key.
-OBJECT_CREATOR			Used with llGetObjectDetails to get an object's creator's key.
+OBJECT_UNKNOWN_DETAIL	Returned by llGetObjectDetails when passed an invalid object parameter type
+OBJECT_NAME				Used with llGetObjectDetails to get an object's name
+OBJECT_DESC				Used with llGetObjectDetails to get an object's description
+OBJECT_POS				Used with llGetObjectDetails to get an object's position
+OBJECT_ROT				Used with llGetObjectDetails to get an object's rotation
+OBJECT_VELOCITY			Used with llGetObjectDetails to get an object's velocity
+OBJECT_OWNER			Used with llGetObjectDetails to get an object's owner's key.  Will be NULL_KEY if group owned
+OBJECT_GROUP			Used with llGetObjectDetails to get an object's group's key
+OBJECT_CREATOR			Used with llGetObjectDetails to get an object's creator's key
 
 # some vehicle params
 VEHICLE_TYPE_NONE
@@ -198,7 +198,7 @@ VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY	A slider between 0 (bouncy) and 1 (critic
 VEHICLE_VERTICAL_ATTRACTION_TIMESCALE	The exponential timescale for the vehicle to align its z-axis to the world z-axis (vertical)
 
 VEHICLE_BANKING_EFFICIENCY	A slider between -1 (leans out of turns), 0 (no banking), and +1 (leans into turns)
-VEHICLE_BANKING_MIX			A slider betwen 0 (static banking) and 1 (dynamic banking)
+VEHICLE_BANKING_MIX			A slider between 0 (static banking) and 1 (dynamic banking)
 VEHICLE_BANKING_TIMESCALE	The exponential timescale for the banking behavior to take full effect
 
 VEHICLE_FLAG_NO_DEFLECTION_UP	Prevents linear deflection along world-z axis
@@ -208,9 +208,9 @@ VEHICLE_FLAG_HOVER_TERRAIN_ONLY	Hover only pays attention to terrain height
 VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT Hover only pays attention to global height
 VEHICLE_FLAG_HOVER_UP_ONLY 		Hover only pushes up
 VEHICLE_FLAG_LIMIT_MOTOR_UP		Prevents ground vehicles from motoring into the sky
-VEHICLE_FLAG_MOUSELOOK_STEER	Makes vehicle try to turn toward mouselook direction.
-VEHICLE_FLAG_MOUSELOOK_BANK		Makes vehicle try to turn toward mouselook direction assuming banking is enabled.
-VEHICLE_FLAG_CAMERA_DECOUPLED 	Causes the camera look-at axis to NOT move when the vehicle rotates.
+VEHICLE_FLAG_MOUSELOOK_STEER	Makes vehicle try to turn toward mouselook direction
+VEHICLE_FLAG_MOUSELOOK_BANK		Makes vehicle try to turn toward mouselook direction assuming banking is enabled
+VEHICLE_FLAG_CAMERA_DECOUPLED 	Causes the camera look-at axis to NOT move when the vehicle rotates
 
 CAMERA_PITCH				(-45 to 80) (Adjusts the angular amount that the camera aims straight ahead vs. straight down, maintaining the same distance. Analogous to 'incidence'.")
 CAMERA_FOCUS_OFFSET			(-10 to 10) A vector that adjusts the position of the camera focus position relative to the subject
@@ -238,7 +238,7 @@ INVENTORY_BODYPART	Passed to task inventory library functions to reference body
 INVENTORY_ANIMATION	Passed to task inventory library functions to reference animations
 INVENTORY_GESTURE	Passed to task inventory library functions to reference gestures
 INVENTORY_ALL		Passed to task inventory library functions to reference all inventory items
-INVENTORY_NONE		Returned by llGetInventoryType when no item is found.
+INVENTORY_NONE		Returned by llGetInventoryType when no item is found
 
 ATTACH_CHEST		Passed to llAttachToAvatar to attach task to chest
 ATTACH_HEAD			Passed to llAttachToAvatar to attach task to head
@@ -256,7 +256,7 @@ ATTACH_LEAR			Passed to llAttachToAvatar to attach task to left ear
 ATTACH_REAR			Passed to llAttachToAvatar to attach task to right ear
 ATTACH_LEYE			Passed to llAttachToAvatar to attach task to left eye
 ATTACH_REYE			Passed to llAttachToAvatar to attach task to right eye
-ATTACH_NOSE			Passed to llAttachToAvatar to attach task to noce
+ATTACH_NOSE			Passed to llAttachToAvatar to attach task to nose
 ATTACH_RUARM		Passed to llAttachToAvatar to attach task to right upper arm
 ATTACH_RLARM		Passed to llAttachToAvatar to attach task to right lower arm
 ATTACH_LUARM		Passed to llAttachToAvatar to attach task to left upper arm
@@ -296,7 +296,7 @@ PAYMENT_INFO_USED	Used with llRequestAgentData to tell if Agent is of "Payment I
 ANIM_ON				Enable texture animation
 LOOP				Loop when animating textures
 REVERSE				Animate in the reverse direction
-PING_PONG			Animate forward, then reverse.
+PING_PONG			Animate forward, then reverse
 SMOOTH				Textures slides, instead of stepping
 ROTATE				Rotates the texture, instead of using frames
 SCALE				Scales the texture, instead of using frames
@@ -343,7 +343,7 @@ PRIM_FLEXIBLE		Followed by TRUE or FALSE, integer softness, float gravity, float
 PRIM_POINT_LIGHT	Followed by TRUE or FALSE, vector color, float intensity, float radius, float falloff
 PRIM_TEMP_ON_REZ	Sets temporay on rez to TRUE or FALSE
 PRIM_PHANTOM		Sets phantom to TRUE or FALSE
-PRIM_CAST_SHADOWS	DEPRECATED. Takes 1 parameter, an integer, but has no effect when set and always returns 0 if used in llGetPrimitiveParams.
+PRIM_CAST_SHADOWS	DEPRECATED. Takes 1 parameter, an integer, but has no effect when set and always returns 0 if used in llGetPrimitiveParams
 PRIM_POSITION		Sets primitive position to a vector position
 PRIM_SIZE			Sets primitive size to a vector size
 PRIM_ROTATION		Sets primitive rotation
@@ -363,10 +363,10 @@ PRIM_TYPE_TUBE		Followed by integer hole shape, vector cut, float hollow, vector
 PRIM_TYPE_RING		Followed by integer hole shape, vector cut, float hollow, vector twist,:vector hole size, vector top shear, vector advanced cut, vector taper,:float revolutions, float radius offset, and float skew
 PRIM_TYPE_SCULPT	Followed by a key/string texture uuid, and one of PRIM_SCULPT_TYPE_SPHERE, PRIM_SCULPT_TYPE_TORUS, PRIM_SCULPT_TYPE_PLANE, or PRIM_SCULPT_TYPE_CYLINDER
 
-PRIM_HOLE_DEFAULT	Sets hole type to match the prim type.
-PRIM_HOLE_SQUARE	Sets hole type to square.
-PRIM_HOLE_CIRCLE	Sets hole type to circle.
-PRIM_HOLE_TRIANGLE	Sets hole type to triangle.
+PRIM_HOLE_DEFAULT	Sets hole type to match the prim type
+PRIM_HOLE_SQUARE	Sets hole type to square
+PRIM_HOLE_CIRCLE	Sets hole type to circle
+PRIM_HOLE_TRIANGLE	Sets hole type to triangle
 
 PRIM_MATERIAL_STONE		Sets material to stone
 PRIM_MATERIAL_METAL		Sets material to metal
@@ -436,7 +436,7 @@ PARCEL_MEDIA_COMMAND_TIME Set media stream to specific time
 PARCEL_MEDIA_COMMAND_SIZE Get or set the parcel's media pixel resolution
 PARCEL_MEDIA_COMMAND_AGENT Allows media stream commands to apply to only one agent
 PARCEL_MEDIA_COMMAND_UNLOAD Unloads the media stream
-PARCEL_MEDIA_COMMAND_AUTO_ALIGN Auto aligns the media stream to the texture size.  May cause a performance hit and loss of some visual quality.
+PARCEL_MEDIA_COMMAND_AUTO_ALIGN Auto aligns the media stream to the texture size.  May cause a performance hit and loss of some visual quality
 
 PAY_HIDE			Used with llSetPayPrice to hide a button
 PAY_DEFAULT			Used with llSetPayPrice to use the default price for a button
@@ -481,7 +481,7 @@ REGION_FLAG_RESTRICT_PUSHOBJECT		Used with llGetRegionFlags to find if a region
 
 HTTP_METHOD                         Used with llHTTPRequest to specify the method, such as "GET" or "POST"
 HTTP_MIMETYPE                       Used with llHTTPRequest to specify the MIME type, defaults to "text/plain"
-HTTP_BODY_MAXLENGTH                 Used with llHTTPRequest to specify the maxium reponse body to return
+HTTP_BODY_MAXLENGTH                 Used with llHTTPRequest to specify the maximum response body to return
 HTTP_VERIFY_CERT                    Used with llHTTPRequest to specify SSL certificate verification
 HTTP_BODY_TRUNCATED                 Used with http_response to indicate truncation point in bytes
 
@@ -492,17 +492,17 @@ PARCEL_COUNT_OTHER		Used with llGetParcelPrimCount to get the number of prims on
 PARCEL_COUNT_SELECTED	Used with llGetParcelPrimCount to get the number of prims on the parcel currently selected or sat upon
 PARCEL_COUNT_TEMP		Used with llGetParcelPrimCount to get the number of prims on the parcel that are temp on rez
 
-PARCEL_DETAILS_NAME		Used with llGetParcelDetails to get the parcel name.
-PARCEL_DETAILS_DESC		Used with llGetParcelDetails to get the parcel description.
-PARCEL_DETAILS_OWNER	Used with llGetParcelDetails to get the parcel owner id.
-PARCEL_DETAILS_GROUP	Used with llGetParcelDetails to get the parcel group id.
-PARCEL_DETAILS_AREA		Used with llGetParcelDetails to get the parcel area in square meters.
-PARCEL_DETAILS_ID		Used with llGetParcelDetails to get the parcel id.
-PARCEL_DETAILS_SEE_AVATARS	Used with llGetParcelDetails to get the avatars visibility setting.
+PARCEL_DETAILS_NAME		Used with llGetParcelDetails to get the parcel name
+PARCEL_DETAILS_DESC		Used with llGetParcelDetails to get the parcel description
+PARCEL_DETAILS_OWNER	Used with llGetParcelDetails to get the parcel owner id
+PARCEL_DETAILS_GROUP	Used with llGetParcelDetails to get the parcel group id
+PARCEL_DETAILS_AREA		Used with llGetParcelDetails to get the parcel area in square meters
+PARCEL_DETAILS_ID		Used with llGetParcelDetails to get the parcel id
+PARCEL_DETAILS_SEE_AVATARS	Used with llGetParcelDetails to get the avatars visibility setting
 
-STRING_TRIM_HEAD		Used with llStringTrim to trim leading spaces from a string.
-STRING_TRIM_TAIL		Used with llStringTrim to trim trailing spaces from a string.
-STRING_TRIM				Used with llStringTrim to trim both leading and trailing spaces from a string.
+STRING_TRIM_HEAD		Used with llStringTrim to trim leading spaces from a string
+STRING_TRIM_TAIL		Used with llStringTrim to trim trailing spaces from a string
+STRING_TRIM				Used with llStringTrim to trim both leading and trailing spaces from a string
 
 CLICK_ACTION_NONE       Used with llSetClickAction to disable the click action
 CLICK_ACTION_TOUCH      Used with llSetClickAction to set touch as the default action when object is clicked
@@ -514,9 +514,9 @@ CLICK_ACTION_PLAY       Used with llSetClickAction to set play as the default ac
 CLICK_ACTION_OPEN_MEDIA Used with llSetClickAction to set open-media as the default action when object is clicked
 CLICK_ACTION_ZOOM       Used with llSetClickAction to set zoom in as the default action when object is clicked
 
-TOUCH_INVALID_TEXCOORD  Value returned by llDetectedTouchUV() and llDetectedTouchST() when the touch position is not valid.
-TOUCH_INVALID_VECTOR    Value returned by llDetectedTouchPos(), llDetectedTouchNormal(), and llDetectedTouchBinormal() when the touch position is not valid.
-TOUCH_INVALID_FACE      Value returned by llDetectedTouchFace() when the touch position is not valid.
+TOUCH_INVALID_TEXCOORD  Value returned by llDetectedTouchUV() and llDetectedTouchST() when the touch position is not valid
+TOUCH_INVALID_VECTOR    Value returned by llDetectedTouchPos(), llDetectedTouchNormal(), and llDetectedTouchBinormal() when the touch position is not valid
+TOUCH_INVALID_FACE      Value returned by llDetectedTouchFace() when the touch position is not valid
 
 PRIM_MEDIA_ALT_IMAGE_ENABLE            Used with ll{Get,Set}PrimMediaParams to enable the default alt image for media 
 PRIM_MEDIA_CONTROLS                    Used with ll{Get,Set}PrimMediaParams to determine the controls shown for media
@@ -603,9 +603,11 @@ return				Leave current function or event handler
 # Comment
 [one_sided_delimiter .8, .3, .15]
 //					Comment:Non-functional commentary or disabled code
+[two_sided_delimiter .8, .3, .15]
+/* */				Comment:Non-functional commentary or disabled code
 
 # String literals
-[two_sided_delimiter 0, .2, 0]
+[double_quotation_marks 0, .2, 0]
 "					String literal
 
-#functions are supplied by the program now.
+#functions are supplied by the program now
diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml
index ae72dee9002f13939ae85e7e919eb40a7749c614..a76eb3cd372d9dcf1875b042b0200ff0bae9b7db 100644
--- a/indra/newview/app_settings/logcontrol.xml
+++ b/indra/newview/app_settings/logcontrol.xml
@@ -43,7 +43,7 @@
 					<key>tags</key>
 						<array>
 							<!-- sample entry for debugging a specific item	-->
-<!--						<string>Voice</string>							-->
+<!--						<string>Voice</string>		-->
 						</array>
 				</map>
 			</array>
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
old mode 100755
new mode 100644
index 1b539fe0dbb86d1e587236f730a0690f67ab3fad..0e26013152c2fd6194ada44207836c708dd6b080
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -619,7 +619,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string></string>
+      <string>http://lecs-viewer-web-components.s3.amazonaws.com/v3.0/[GRID_LOWERCASE]/avatars.html</string>
     </map>
     <key>AvatarBakedTextureUploadTimeout</key>
     <map>
@@ -1150,27 +1150,16 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
-    <key>ButtonFlashCount</key>
+    <key>EnableButtonFlashing</key>
     <map>
       <key>Comment</key>
-      <string>Number of flashes after which flashing buttons stay lit up</string>
+      <string>Allow UI to flash buttons to get your attention</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
-      <string>S32</string>
+      <string>Boolean</string>
       <key>Value</key>
-      <integer>8</integer>
-    </map>
-    <key>ButtonFlashRate</key>
-    <map>
-      <key>Comment</key>
-      <string>Frequency at which buttons flash (hz)</string>
-      <key>Persist</key>
       <integer>1</integer>
-      <key>Type</key>
-      <string>F32</string>
-      <key>Value</key>
-      <real>1.25</real>
     </map>
     <key>ButtonHPad</key>
     <map>
@@ -1414,6 +1403,18 @@
     <real>0.5</real>
   </map>
 
+  <key>CameraMaxCoF</key>
+  <map>
+    <key>Comment</key>
+    <string>Maximum camera circle of confusion for DoF effect</string>
+    <key>Persist</key>
+    <integer>1</integer>
+    <key>Type</key>
+    <string>F32</string>
+    <key>Value</key>
+    <real>10.0</real>
+  </map>
+
   <key>CameraFNumber</key>
   <map>
     <key>Comment</key>
@@ -1572,17 +1573,6 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
-    <key>ChatVisible</key>
-    <map>
-      <key>Comment</key>
-      <string>Chat bar is visible</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
     <key>ChatWindow</key>
     <map>
       <key>Comment</key>
@@ -1627,17 +1617,6 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
-    <key>CloseSnapshotOnKeep</key>
-    <map>
-      <key>Comment</key>
-      <string>Close snapshot window after saving snapshot</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
     <key>CmdLineDisableVoice</key>
     <map>
       <key>Comment</key>
@@ -1849,6 +1828,28 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+  <key>CurlMaximumNumberOfHandles</key>
+  <map>
+    <key>Comment</key>
+    <string>Maximum number of handles curl can use (requires restart)</string>
+    <key>Persist</key>
+    <integer>1</integer>
+    <key>Type</key>
+    <string>S32</string>
+    <key>Value</key>
+    <integer>256</integer>
+  </map>
+  <key>CurlRequestTimeOut</key>
+  <map>
+    <key>Comment</key>
+    <string>Max idle time of a curl request before killed (requires restart)</string>
+    <key>Persist</key>
+    <integer>1</integer>
+    <key>Type</key>
+    <string>F32</string>
+    <key>Value</key>
+    <real>120.0</real>
+  </map>
   <key>CurlUseMultipleThreads</key>
   <map>
     <key>Comment</key>
@@ -1926,6 +1927,17 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+    <key>DebugHideEmptySystemFolders</key>
+    <map>
+      <key>Comment</key>
+      <string>Hide empty system folders when on</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+    </map>
     <key>DebugInventoryFilters</key>
     <map>
       <key>Comment</key>
@@ -2728,7 +2740,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string></string>
+      <string>http://lecs-viewer-web-components.s3.amazonaws.com/v3.0/[GRID_LOWERCASE]/guide.html</string>
     </map>
   <key>DisableCameraConstraints</key>
     <map>
@@ -3148,17 +3160,6 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
-    <key>EnableRippleWater</key>
-    <map>
-      <key>Comment</key>
-      <string>Whether to use ripple water shader or not</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
     <key>EnableTextureAtlas</key>
     <map>
       <key>Comment</key>
@@ -3179,7 +3180,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>1</integer>
+      <integer>0</integer>
     </map>
     <key>EnableVoiceChat</key>
     <map>
@@ -4039,6 +4040,17 @@
       <key>Value</key>
       <string>http://viewer-help.secondlife.com/[LANGUAGE]/[CHANNEL]/[VERSION]/[TOPIC][DEBUG_MODE]</string>
     </map>
+    <key>HowToHelpURL</key>
+    <map>
+      <key>Comment</key>
+      <string>URL for How To help content</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>String</string>
+      <key>Value</key>
+      <string>http://lecs-viewer-web-components.s3.amazonaws.com/v3.0/[GRID_LOWERCASE]/howto/index.html</string>
+    </map>    
     <key>HomeSidePanelURL</key>
     <map>
       <key>Comment</key>
@@ -4281,16 +4293,49 @@
 		<key>Value</key>
 		<integer>0</integer>
 	</map>
-    <key>InventoryMarketplaceUserStatus</key>
+	<key>InventoryOutboxLogging</key>
+	<map>
+		<key>Comment</key>
+		<string>Enable debug output associated with the Merchant Outbox.</string>
+		<key>Persist</key>
+		<integer>1</integer>
+		<key>Type</key>
+		<string>Boolean</string>
+		<key>Value</key>
+		<integer>0</integer>
+	</map>
+    <key>InventoryOutboxMaxFolderCount</key>
     <map>
       <key>Comment</key>
-      <string>Marketplace user status.</string>
+      <string>Maximum number of subfolders allowed in a listing in the merchant outbox.</string>
       <key>Persist</key>
-      <integer>1</integer>
+      <integer>0</integer>
       <key>Type</key>
-      <string>String</string>
+      <string>U32</string>
       <key>Value</key>
-      <string />
+      <integer>21</integer>
+    </map>
+    <key>InventoryOutboxMaxFolderDepth</key>
+    <map>
+      <key>Comment</key>
+      <string>Maximum number of nested levels of subfolders allowed in a listing in the merchant outbox.</string>
+      <key>Persist</key>
+      <integer>0</integer>
+      <key>Type</key>
+      <string>U32</string>
+      <key>Value</key>
+      <integer>4</integer>
+    </map>
+    <key>InventoryOutboxMaxItemCount</key>
+    <map>
+      <key>Comment</key>
+      <string>Maximum number of items allowed in a listing in the merchant outbox.</string>
+      <key>Persist</key>
+      <integer>0</integer>
+      <key>Type</key>
+      <string>U32</string>
+      <key>Value</key>
+      <integer>200</integer>
     </map>
     <key>InventorySortOrder</key>
     <map>
@@ -4589,21 +4634,21 @@
         <key>Value</key>
             <integer>1</integer>
         </map>
-    <key>LastGPUClass</key>
+    <key>LastGPUString</key>
     <map>
       <key>Comment</key>
-      <string>[DO NOT MODIFY] previous GPU class for tracking hardware changes</string>
+      <string>[DO NOT MODIFY] previous GPU id string for tracking hardware changes</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
-      <string>S32</string>
+      <string>String</string>
       <key>Value</key>
-      <integer>-1</integer>
+      <string></string>
     </map>
     <key>LastFeatureVersion</key>
     <map>
       <key>Comment</key>
-      <string>[DO NOT MODIFY] Version number for tracking hardware changes</string>
+      <string>[DO NOT MODIFY] Feature Table Version number for tracking rendering system changes</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -4667,6 +4712,17 @@
       <string>0.0.0</string>
     </map>
   
+    <key>LastSnapshotToProfileHeight</key>
+    <map>
+      <key>Comment</key>
+      <string>The height of the last profile snapshot, in px</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>S32</string>
+      <key>Value</key>
+      <integer>768</integer>
+    </map>
     <key>LastSnapshotToEmailHeight</key>
     <map>
       <key>Comment</key>
@@ -4678,6 +4734,17 @@
       <key>Value</key>
       <integer>768</integer>
     </map>
+    <key>LastSnapshotToProfileWidth</key>
+    <map>
+      <key>Comment</key>
+      <string>The width of the last profile snapshot, in px</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>S32</string>
+      <key>Value</key>
+      <integer>1024</integer>
+    </map>
     <key>LastSnapshotToEmailWidth</key>
     <map>
       <key>Comment</key>
@@ -4733,17 +4800,6 @@
       <key>Value</key>
       <integer>512</integer>
     </map>
-    <key>LastSnapshotType</key>
-    <map>
-      <key>Comment</key>
-      <string>Select this as next type of snapshot to take (0 = postcard, 1 = texture, 2 = local image)</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>S32</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
     <key>LeftClickShowMenu</key>
     <map>
       <key>Comment</key>
@@ -5094,7 +5150,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/</string>
+      <string>https://marketplace.secondlife.com/</string>
     </map>
     <key>MarketplaceURL_objectFemale</key>
     <map>
@@ -5105,7 +5161,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/attachments</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/attachments</string>
     </map>
     <key>MarketplaceURL_objectMale</key>
     <map>
@@ -5116,7 +5172,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/attachments</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/attachments</string>
     </map>
     <key>MarketplaceURL_clothingFemale</key>
     <map>
@@ -5127,7 +5183,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/clothing_female_avatar</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/clothing_female_avatar</string>
     </map>
     <key>MarketplaceURL_clothingMale</key>
     <map>
@@ -5138,7 +5194,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/clothing_male_avatar</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/clothing_male_avatar</string>
     </map>
     <key>MarketplaceURL_bodypartFemale</key>
     <map>
@@ -5149,7 +5205,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com</string>
+      <string>https://marketplace.secondlife.com/</string>
     </map>
     <key>MarketplaceURL_bodypartMale</key>
     <map>
@@ -5160,7 +5216,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/</string>
+      <string>https://marketplace.secondlife.com/</string>
     </map>
     <key>MarketplaceURL_glovesMale</key>
     <map>
@@ -5171,7 +5227,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/gloves_both_women_and_men</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/gloves_both_women_and_men</string>
     </map>
     <key>MarketplaceURL_glovesFemale</key>
     <map>
@@ -5182,7 +5238,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/gloves_both_women_and_men</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/gloves_both_women_and_men</string>
     </map>
     <key>MarketplaceURL_jacketFemale</key>
     <map>
@@ -5193,7 +5249,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/jacket_womens</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/jacket_womens</string>
     </map>
     <key>MarketplaceURL_jacketMale</key>
     <map>
@@ -5204,7 +5260,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/jacket_mens</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/jacket_mens</string>
     </map>
     <key>MarketplaceURL_shirtFemale</key>
     <map>
@@ -5215,7 +5271,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/shirt_womens</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/shirt_womens</string>
     </map>
     <key>MarketplaceURL_shirtMale</key>
     <map>
@@ -5226,7 +5282,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/shirt_mens</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/shirt_mens</string>
     </map>
     <key>MarketplaceURL_undershirtFemale</key>
     <map>
@@ -5237,7 +5293,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/undershirt_womens</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/undershirt_womens</string>
     </map>
     <key>MarketplaceURL_undershirtMale</key>
     <map>
@@ -5248,7 +5304,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/undershirt_mens</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/undershirt_mens</string>
     </map>
     <key>MarketplaceURL_skirtFemale</key>
     <map>
@@ -5259,7 +5315,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/skirts_women</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/skirts_women</string>
     </map>
     <key>MarketplaceURL_skirtMale</key>
     <map>
@@ -5270,7 +5326,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/skirts_women</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/skirts_women</string>
     </map>
     <key>MarketplaceURL_pantsFemale</key>
     <map>
@@ -5281,7 +5337,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/pants_women</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/pants_women</string>
     </map>
     <key>MarketplaceURL_pantsMale</key>
     <map>
@@ -5292,7 +5348,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/pants_men</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/pants_men</string>
     </map>
     <key>MarketplaceURL_underpantsFemale</key>
     <map>
@@ -5303,7 +5359,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/underwear_women</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/underwear_women</string>
     </map>
     <key>MarketplaceURL_underpantsMale</key>
     <map>
@@ -5314,7 +5370,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/underwear_men</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/underwear_men</string>
     </map>
     <key>MarketplaceURL_shoesFemale</key>
     <map>
@@ -5325,7 +5381,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/shoes_women</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/shoes_women</string>
     </map>
     <key>MarketplaceURL_shoesMale</key>
     <map>
@@ -5336,7 +5392,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/shoes_men</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/shoes_men</string>
     </map>
     <key>MarketplaceURL_socksFemale</key>
     <map>
@@ -5347,7 +5403,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/socks_women</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/socks_women</string>
     </map>
     <key>MarketplaceURL_socksMale</key>
     <map>
@@ -5358,7 +5414,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/socks_women</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/socks_women</string>
     </map>
     <key>MarketplaceURL_tattooMale</key>
     <map>
@@ -5369,7 +5425,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/tattoo_both_women_and_men</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/tattoo_both_women_and_men</string>
     </map>
     <key>MarketplaceURL_tattooFemale</key>
     <map>
@@ -5380,7 +5436,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/tattoo_both_women_and_men</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/tattoo_both_women_and_men</string>
     </map>
     <key>MarketplaceURL_hairFemale</key>
     <map>
@@ -5391,7 +5447,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/womens_hair</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/womens_hair</string>
     </map>
     <key>MarketplaceURL_hairMale</key>
     <map>
@@ -5402,7 +5458,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/mens_hair</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/mens_hair</string>
     </map>
     <key>MarketplaceURL_eyesFemale</key>
     <map>
@@ -5413,7 +5469,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/womens_eyes</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/womens_eyes</string>
     </map>
     <key>MarketplaceURL_eyesMale</key>
     <map>
@@ -5424,7 +5480,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/mens_eyes</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/mens_eyes</string>
     </map>
     <key>MarketplaceURL_shapeFemale</key>
     <map>
@@ -5435,7 +5491,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/womens_shape</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/womens_shape</string>
     </map>
     <key>MarketplaceURL_shapeMale</key>
     <map>
@@ -5446,7 +5502,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/mens_shape</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/mens_shape</string>
     </map>
     <key>MarketplaceURL_skinFemale</key>
     <map>
@@ -5457,7 +5513,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/womens_skin</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/womens_skin</string>
     </map>
     <key>MarketplaceURL_skinMale</key>
     <map>
@@ -5468,7 +5524,7 @@
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
-      <string>http://marketplace.secondlife.com/trampoline/viewer21/mens_skin</string>
+      <string>https://marketplace.secondlife.com/trampoline/viewer21/mens_skin</string>
     </map>
     <key>MaxDragDistance</key>
     <map>
@@ -5655,7 +5711,18 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>0</integer>
+      <integer>1</integer>
+    </map>
+    <key>MemoryPrivatePoolSize</key>
+    <map>
+      <key>Comment</key>
+      <string>Size of the private memory pool in MB (min. value is 256)</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>U32</string>
+      <key>Value</key>
+      <integer>512</integer>
     </map>
     <key>MemProfiling</key>
     <map>
@@ -7498,7 +7565,7 @@
       <key>Value</key>
       <integer>-1</integer>
     </map>
-  <key>RenderAvatarLODFactor</key>
+    <key>RenderAvatarLODFactor</key>
     <map>
       <key>Comment</key>
       <string>Controls level of detail of avatars (multiplier for current screen area when calculated level of detail)</string>
@@ -7796,7 +7863,7 @@
     <key>Type</key>
     <string>U32</string>
     <key>Value</key>
-    <integer>6</integer>
+    <integer>16</integer>
   </map>
     <key>RenderDebugTextureBind</key>
     <map>
@@ -7857,361 +7924,217 @@
     <integer>0</integer>
   </map>
 
-  <key>RenderAnimateTrees</key>
+  <key>RenderMinimumLODTriangleCount</key>
   <map>
     <key>Comment</key>
-    <string>Use GL matrix ops to animate tree branches.</string>
+    <string>Triangle count threshold at which automatic LOD generation stops</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
-    <string>Boolean</string>
+    <string>U32</string>
     <key>Value</key>
-    <integer>0</integer>
+    <real>16</real>
   </map>
 
-  <key>RenderGIRange</key>
+  <key>RenderEdgeDepthCutoff</key>
   <map>
     <key>Comment</key>
-    <string>Distance to cut off GI effect.</string>
+    <string>Cutoff for depth difference that amounts to an edge.</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>96</real>
+    <real>0.01</real>
   </map>
-
-  <key>RenderGILuminance</key>
+  <key>RenderEdgeNormCutoff</key>
   <map>
     <key>Comment</key>
-    <string>Luminance factor of global illumination contribution.</string>
+    <string>Cutoff for normal difference that amounts to an edge.</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>0.075</real>
+    <real>0.25</real>
   </map>
-  
-  <key>RenderGIBrightness</key>
+
+  <key>RenderDeferredAlphaSoften</key>
   <map>
     <key>Comment</key>
-    <string>Brightness factor of global illumination contribution.</string>
+    <string>Scalar for softening alpha surfaces (for soft particles).</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>0.3</real>
+    <real>0.75</real>
   </map>
-
-  <key>RenderGINoise</key>
+  <key>RenderDeferredNoise</key>
   <map>
     <key>Comment</key>
-    <string>Noise of position sampling for GI photon mapping.</string>
+    <string>Noise scalar to hide banding in deferred render.</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>0.7</real>
+    <real>4</real>
   </map>
-
-  <key>RenderGIAttenuation</key>
+  <key>RenderDeferredSpotShadowBias</key>
   <map>
     <key>Comment</key>
-    <string>Distance attenuation factor for indirect lighting.</string>
+    <string>Bias value for spot shadows (prevent shadow acne).</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>0.1</real>
+    <real>-64.0</real>
   </map>
-
-  <key>RenderGIBlurBrightness</key>
+  <key>RenderDeferredSpotShadowOffset</key>
   <map>
     <key>Comment</key>
-    <string>Brightness factor of global illumination blur effect.</string>
+    <string>Offset value for spot shadows (prevent shadow acne).</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>1.025</real>
+    <real>0.8</real>
   </map>
 
-  <key>RenderGIBlurEdgeWeight</key>
+  <key>RenderShadowBias</key>
   <map>
     <key>Comment</key>
-    <string>Edge weight for GI soften filter (sharpness).</string>
+    <string>Bias value for shadows (prevent shadow acne).</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>0.8</real>
+    <real>-0.008</real>
   </map>
-
-  <key>RenderGIBlurIncrement</key>
+  <key>RenderShadowOffset</key>
   <map>
     <key>Comment</key>
-    <string>Increment of scale for each pass of global illumination blur effect.</string>
+    <string>Offset value for shadows (prevent shadow acne).</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>0.8</real>
+    <real>0.01</real>
   </map>
-
-  <key>RenderLuminanceScale</key>
+  <key>RenderShadowBiasError</key>
   <map>
     <key>Comment</key>
-    <string>Luminance value scalar for darkening effect.</string>
+    <string>Error scale for shadow bias (based on altitude).</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>1.0</real>
+    <real>0</real>
   </map>
-
-  <key>RenderSunLuminanceScale</key>
+  <key>RenderShadowOffsetError</key>
   <map>
     <key>Comment</key>
-    <string>Sun Luminance value scalar for darkening effect.</string>
+    <string>Error scale for shadow offset (based on altitude).</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>1.0</real>
+    <real>0</real>
   </map>
 
-  <key>RenderSunLuminanceOffset</key>
+  <key>RenderDepthOfField</key>
   <map>
     <key>Comment</key>
-    <string>Sun Luminance value offset for darkening effect.</string>
+    <string>Whether to use depth of field effect when lighting and shadows are enabled</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
-    <string>F32</string>
+    <string>Boolean</string>
     <key>Value</key>
-    <real>0</real>
+    <integer>0</integer>
   </map>
 
-  <key>RenderLuminanceDetail</key>
+  <key>CameraDoFResScale</key>
   <map>
     <key>Comment</key>
-    <string>Mipmap level to use for luminance</string>
+    <string>Amount to scale down depth of field resolution.  Valid range is 0.25 (quarter res) to 1.0 (full res)</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>16.0</real>
-   </map>
+    <real>0.7</real>
+  </map>
 
-  <key>RenderMinimumLODTriangleCount</key>
+  <key>RenderSpotLightsInNondeferred</key>
   <map>
     <key>Comment</key>
-    <string>Triangle count threshold at which automatic LOD generation stops</string>
+    <string>Whether to support projectors as spotlights when Lighting and Shadows is disabled</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
-    <string>U32</string>
+    <string>Boolean</string>
     <key>Value</key>
-    <real>16</real>
+    <integer>0</integer>
   </map>
 
-  <key>RenderEdgeDepthCutoff</key>
+  <key>RenderSpotShadowBias</key>
   <map>
     <key>Comment</key>
-    <string>Cutoff for depth difference that amounts to an edge.</string>
+    <string>Bias value for shadows (prevent shadow acne).</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>0.01</real>
+    <real>-0.001</real>
   </map>
-  <key>RenderEdgeNormCutoff</key>
+  <key>RenderSpotShadowOffset</key>
   <map>
     <key>Comment</key>
-    <string>Cutoff for normal difference that amounts to an edge.</string>
+    <string>Offset value for shadows (prevent shadow acne).</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>0.25</real>
+    <real>0.04</real>
   </map>
 
-  <key>RenderDeferredAlphaSoften</key>
+  <key>RenderShadowResolutionScale</key>
   <map>
     <key>Comment</key>
-    <string>Scalar for softening alpha surfaces (for soft particles).</string>
+    <string>Scale of shadow map resolution vs. screen resolution</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>0.75</real>
+    <real>1.0</real>
   </map>
-  <key>RenderDeferredNoise</key>
+
+  <key>RenderDeferredTreeShadowBias</key>
   <map>
     <key>Comment</key>
-    <string>Noise scalar to hide banding in deferred render.</string>
+    <string>Bias value for tree shadows (prevent shadow acne).</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>F32</string>
     <key>Value</key>
-    <real>4</real>
+    <real>1.0</real>
   </map>
-  <key>RenderDeferredSpotShadowBias</key>
+  <key>RenderDeferredTreeShadowOffset</key>
   <map>
     <key>Comment</key>
-    <string>Bias value for spot shadows (prevent shadow acne).</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>F32</string>
-    <key>Value</key>
-    <real>-64.0</real>
-  </map>
-  <key>RenderDeferredSpotShadowOffset</key>
-  <map>
-    <key>Comment</key>
-    <string>Offset value for spot shadows (prevent shadow acne).</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>F32</string>
-    <key>Value</key>
-    <real>0.8</real>
-  </map>
-
-  <key>RenderShadowBias</key>
-  <map>
-    <key>Comment</key>
-    <string>Bias value for shadows (prevent shadow acne).</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>F32</string>
-    <key>Value</key>
-    <real>-0.008</real>
-  </map>
-  <key>RenderShadowOffset</key>
-  <map>
-    <key>Comment</key>
-    <string>Offset value for shadows (prevent shadow acne).</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>F32</string>
-    <key>Value</key>
-    <real>0.01</real>
-  </map>
-  <key>RenderShadowBiasError</key>
-  <map>
-    <key>Comment</key>
-    <string>Error scale for shadow bias (based on altitude).</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>F32</string>
-    <key>Value</key>
-    <real>0</real>
-  </map>
-  <key>RenderShadowOffsetError</key>
-  <map>
-    <key>Comment</key>
-    <string>Error scale for shadow offset (based on altitude).</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>F32</string>
-    <key>Value</key>
-    <real>0</real>
-  </map>
-
-  <key>RenderDepthOfField</key>
-  <map>
-    <key>Comment</key>
-    <string>Whether to use depth of field effect when lighting and shadows are enabled</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>Boolean</string>
-    <key>Value</key>
-    <integer>0</integer>
-  </map>
-  
-  <key>RenderSpotLightsInNondeferred</key>
-  <map>
-    <key>Comment</key>
-    <string>Whether to support projectors as spotlights when Lighting and Shadows is disabled</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>Boolean</string>
-    <key>Value</key>
-    <integer>0</integer>
-  </map>
-
-  <key>RenderSpotShadowBias</key>
-  <map>
-    <key>Comment</key>
-    <string>Bias value for shadows (prevent shadow acne).</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>F32</string>
-    <key>Value</key>
-    <real>-0.001</real>
-  </map>
-  <key>RenderSpotShadowOffset</key>
-  <map>
-    <key>Comment</key>
-    <string>Offset value for shadows (prevent shadow acne).</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>F32</string>
-    <key>Value</key>
-    <real>0.04</real>
-  </map>
-
-  <key>RenderShadowResolutionScale</key>
-  <map>
-    <key>Comment</key>
-    <string>Scale of shadow map resolution vs. screen resolution</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>F32</string>
-    <key>Value</key>
-    <real>1.0</real>
-  </map>
-
-  <key>RenderDeferredTreeShadowBias</key>
-  <map>
-    <key>Comment</key>
-    <string>Bias value for tree shadows (prevent shadow acne).</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>F32</string>
-    <key>Value</key>
-    <real>1.0</real>
-  </map>
-  <key>RenderDeferredTreeShadowOffset</key>
-  <map>
-    <key>Comment</key>
-    <string>Offset value for tree shadows (prevent shadow acne).</string>
+    <string>Offset value for tree shadows (prevent shadow acne).</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
@@ -8333,18 +8256,6 @@
     <integer>0</integer>
   </map>
 
-  <key>RenderDeferredGI</key>
-  <map>
-    <key>Comment</key>
-    <string>Enable GI in deferred renderer.</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>Boolean</string>
-    <key>Value</key>
-    <integer>0</integer>
-  </map>
-
   <key>RenderDeferredSun</key>
   <map>
     <key>Comment</key>
@@ -8488,92 +8399,6 @@
     <real>0</real>
   </map>
 
-  <key>RenderGIAmbiance</key>
-  <map>
-    <key>Comment</key>
-    <string>Ambiance factor of global illumination contribution.</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>F32</string>
-    <key>Value</key>
-    <real>0.5</real>
-  </map>
-
-  <key>RenderGIMinRenderSize</key>
-  <map>
-    <key>Comment</key>
-    <string>Minimum size of objects to put into GI source map.</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>F32</string>
-    <key>Value</key>
-    <real>0.5</real>
-  </map>
-
-  <key>RenderGIBlurColorCurve</key>
-  <map>
-    <key>Comment</key>
-    <string>Color curve for GI softening kernel</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>Vector3</string>
-    <key>Value</key>
-    <array>
-      <real>1.0</real>
-      <real>0.6</real>
-      <real>0.02</real>
-    </array>
-  </map>
-
-  <key>RenderGIBlurPasses</key>
-  <map>
-    <key>Comment</key>
-    <string>Scale of GI softening kernel.</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>U32</string>
-    <key>Value</key>
-    <real>4</real>
-  </map>
-
-  <key>RenderGIBlurSize</key>
-  <map>
-    <key>Comment</key>
-    <string>Scale of GI softening kernel.</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>F32</string>
-    <key>Value</key>
-    <real>4.0</real>
-  </map>
-  <key>RenderGIBlurSamples</key>
-  <map>
-    <key>Comment</key>
-    <string>Number of samples to take for each pass of GI blur (value range 1-16).  Actual number of samples is value * 2 - 1.</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>U32</string>
-    <key>Value</key>
-    <real>16</real>
-  </map>
-  <key>RenderGIBlurDistFactor</key>
-  <map>
-    <key>Comment</key>
-    <string>Distance scaler for GI blur.</string>
-    <key>Persist</key>
-    <integer>1</integer>
-    <key>Type</key>
-    <string>F32</string>
-    <key>Value</key>
-    <real>0.0</real>
-  </map>
-
   <key>RenderDynamicLOD</key>
     <map>
       <key>Comment</key>
@@ -8616,7 +8441,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>0</integer>
+      <integer>1</integer>
     </map>
     <key>RenderAutoMaskAlphaDeferred</key>
     <map>
@@ -8673,6 +8498,17 @@
       <key>Value</key>
       <real>1.0</real>
     </map>
+    <key>RenderGLCoreProfile</key>
+    <map>
+      <key>Comment</key>
+      <string>Don't use a compatibility profile OpenGL context.  Requires restart.  Basic shaders MUST be enabled.</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>RenderGlow</key>
     <map>
       <key>Comment</key>
@@ -9243,6 +9079,28 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+  <key>RenderAutoMuteByteLimit</key>
+  <map>
+    <key>Comment</key>
+    <string>Maximum bytes of attachments before an avatar is automatically visually muted (0 for no limit).</string>
+    <key>Persist</key>
+    <integer>1</integer>
+    <key>Type</key>
+    <string>U32</string>
+    <key>Value</key>
+    <integer>0</integer>
+  </map>
+  <key>RenderAutoMuteSurfaceAreaLimit</key>
+  <map>
+    <key>Comment</key>
+    <string>Maximum surface area of attachments before an avatar is automatically visually muted (0 for no limit).</string>
+    <key>Persist</key>
+    <integer>1</integer>
+    <key>Type</key>
+    <string>F32</string>
+    <key>Value</key>
+    <integer>0</integer>
+  </map>
     <key>RenderUseShaderLOD</key>
     <map>
       <key>Comment</key>
@@ -9276,6 +9134,17 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
+    <key>RenderUseVAO</key>
+    <map>
+      <key>Comment</key>
+      <string>Use GL Vertex Array Objects</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>RenderVBOMappingDisable</key>
     <map>
       <key>Comment</key>
@@ -9285,7 +9154,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>0</integer>
+      <integer>1</integer>
     </map>
   <key>RenderUseStreamVBO</key>
   <map>
@@ -9720,7 +9589,7 @@
     <key>ShowBuildButton</key>
     <map>
       <key>Comment</key>
-      <string>Shows/Hides Build button in the bottom tray.</string>
+      <string>Shows/hides build button in the bottom tray.</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -9731,7 +9600,7 @@
     <key>ShowCameraButton</key>
     <map>
       <key>Comment</key>
-      <string>Show/Hide View button in the bottom tray.</string>
+      <string>Show/hide view button in the bottom tray.</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -9819,7 +9688,7 @@
     <key>ShowGestureButton</key>
     <map>
       <key>Comment</key>
-      <string>Shows/Hides Gesture button in the bottom tray.</string>
+      <string>Shows/hides gesture button in the bottom tray.</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -9852,7 +9721,7 @@
     <key>ShowMiniMapButton</key>
     <map>
       <key>Comment</key>
-      <string>Shows/Hides Mini-Map button in the bottom tray.</string>
+      <string>Shows/hides mini-map button in the bottom tray.</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -9863,7 +9732,7 @@
     <key>ShowMoveButton</key>
     <map>
       <key>Comment</key>
-      <string>Shows/Hides Move button in the bottom tray.</string>
+      <string>Shows/hides move button in the bottom tray.</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -9896,7 +9765,7 @@
     <key>ShowSearchButton</key>
     <map>
       <key>Comment</key>
-      <string>Shows/Hides Search button in the bottom tray.</string>
+      <string>Shows/hides search button in the bottom tray.</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -9907,7 +9776,7 @@
     <key>ShowSnapshotButton</key>
     <map>
       <key>Comment</key>
-      <string>Shows/Hides Snapshot button button in the bottom tray.</string>
+      <string>Shows/hides snapshot button button in the bottom tray.</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -9929,7 +9798,7 @@
     <key>ShowNavbarFavoritesPanel</key>    
     <map>
       <key>Comment</key>
-      <string>Show/Hide Navigation Bar Favorites Panel</string>
+      <string>Show/hide navigation bar favorites panel</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -9940,7 +9809,7 @@
     <key>ShowNavbarNavigationPanel</key>        
     <map>
       <key>Comment</key>
-      <string>Show/Hide Navigation Bar Navigation Panel</string>
+      <string>Show/hide navigation bar navigation panel</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -9951,7 +9820,7 @@
     <key>ShowWorldMapButton</key>
     <map>
       <key>Comment</key>
-      <string>Shows/Hides Map button in the bottom tray.</string>
+      <string>Shows/hides map button in the bottom tray.</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -9962,18 +9831,7 @@
     <key>ShowMiniLocationPanel</key>
     <map>
       <key>Comment</key>
-      <string>Show/Hide Mini-Location Panel</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>SidebarCameraMovement</key>
-    <map>
-      <key>Comment</key>
-      <string>Reflects world rect changing while changing sidebar visibility.</string>
+      <string>Show/hide mini-location panel</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -10597,28 +10455,6 @@
       <key>Value</key>
       <integer>0</integer>
     </map>  
-    <key>SnapshotLocalLastResolution</key>
-    <map>
-      <key>Comment</key>
-      <string>Take next local snapshot at this resolution</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>S32</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>SnapshotPostcardLastResolution</key>
-    <map>
-      <key>Comment</key>
-      <string>Take next postcard snapshot at this resolution</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>S32</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
     <key>SnapshotQuality</key>
     <map>
       <key>Comment</key>
@@ -10652,17 +10488,6 @@
       <key>Value</key>
       <string>http://photos.apps.staging.avatarsunited.com/viewer_config</string>
     </map>
-    <key>SnapshotTextureLastResolution</key>
-    <map>
-      <key>Comment</key>
-      <string>Take next texture snapshot at this resolution</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>S32</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
     <key>SpeedTest</key>
     <map>
       <key>Comment</key>
@@ -10916,7 +10741,17 @@
       <key>Value</key>
       <real>0.699999988079</real>
     </map>
-    <key>ToolTipFadeTime</key>
+     <key>ToolTipFastDelay</key>
+    <map>
+      <key>Comment</key>
+      <string>Seconds before displaying tooltip when mouse stops over UI element (when a tooltip is already visible)</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>F32</string>
+      <key>Value</key>
+      <real>0.1</real>
+    </map>   <key>ToolTipFadeTime</key>
     <map>
       <key>Comment</key>
       <string>Seconds over which tooltip fades away</string>
@@ -11004,6 +10839,39 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>TranslationService</key>
+    <map>
+      <key>Comment</key>
+      <string>Translation API to use. (google|bing)</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>String</string>
+      <key>Value</key>
+      <string>bing</string>
+    </map>
+    <key>GoogleTranslateAPIKey</key>
+    <map>
+      <key>Comment</key>
+      <string>Google Translate API key</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>String</string>
+      <key>Value</key>
+      <string></string>
+    </map>
+    <key>BingTranslateAPIKey</key>
+    <map>
+      <key>Comment</key>
+      <string>Bing AppID to use with the Microsoft Translator API</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>String</string>
+      <key>Value</key>
+      <string></string>
+    </map>
     <key>TutorialURL</key>
     <map>
       <key>Comment</key>
@@ -11554,17 +11422,6 @@
       <key>Value</key>
       <real>3</real>
     </map>
-    <key>UIResizeBarOverlap</key>
-    <map>
-      <key>Comment</key>
-      <string>Size of UI resize bar overlap</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>S32</string>
-      <key>Value</key>
-      <real>1</real>
-    </map>
     <key>UIScaleFactor</key>
     <map>
       <key>Comment</key>
@@ -12234,7 +12091,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>1</integer>
+      <boolean>1</boolean>
     </map>
     <key>UseFreezeFrame</key>
     <map>
@@ -12378,50 +12235,6 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
-    <key>VectorizeEnable</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable general vector operations and data alignment.</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>VectorizePerfTest</key>
-    <map>
-      <key>Comment</key>
-      <string>Test SSE/vectorization performance and choose fastest version.</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
-    <key>VectorizeProcessor</key>
-    <map>
-      <key>Comment</key>
-      <string>0=Compiler Default, 1=SSE, 2=SSE2, autodetected</string>
-      <key>Persist</key>
-      <integer>0</integer>
-      <key>Type</key>
-      <string>U32</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>VectorizeSkin</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable vector operations for avatar skinning.</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
     <key>VelocityInterpolate</key>
     <map>
       <key>Comment</key>
@@ -12873,10 +12686,10 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
-    <key>WindowFullScreen</key>
+    <key>FullScreen</key>
     <map>
       <key>Comment</key>
-      <string>SL viewer window full screen</string>
+      <string>run a fullscreen session</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -12884,6 +12697,17 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>MinWindowHeight</key>
+    <map>
+      <key>Comment</key>
+      <string>SL viewer minimum window height in pixels</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>U32</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>WindowHeight</key>
     <map>
       <key>Comment</key>
@@ -12891,7 +12715,7 @@
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
-      <string>S32</string>
+      <string>U32</string>
       <key>Value</key>
       <integer>738</integer>
     </map>
@@ -12906,6 +12730,17 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
+    <key>MinWindowWidth</key>
+    <map>
+      <key>Comment</key>
+      <string>SL viewer minimum window width in pixels</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>U32</string>
+      <key>Value</key>
+      <integer>0</integer>
+    </map>
     <key>WindowWidth</key>
     <map>
       <key>Comment</key>
@@ -12913,7 +12748,7 @@
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
-      <string>S32</string>
+      <string>U32</string>
       <key>Value</key>
       <integer>1024</integer>
     </map>
@@ -13340,7 +13175,7 @@
       <key>Comment</key>
       <string>Settings that are a applied per session (not saved).</string>
       <key>Persist</key>
-      <integer>1</integer>
+      <integer>0</integer>
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
@@ -13351,7 +13186,7 @@
       <key>Comment</key>
       <string>User settings that are a applied per session (not saved).</string>
       <key>Persist</key>
-      <integer>1</integer>
+      <integer>0</integer>
       <key>Type</key>
       <string>String</string>
       <key>Value</key>
@@ -13564,7 +13399,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>0</integer>
+      <integer>1</integer>
     </map>
     <key>ShowOfferedInventory</key>
     <map>
@@ -13588,17 +13423,6 @@
       <key>Value</key>
       <string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/404.html</string>
     </map>
-    <key>DestinationsAndAvatarsVisibility</key>
-    <map>
-      <key>Comment</key>
-      <string>Whether destination panel or avatar picker are open (0=destination guide, 1=avatar picker, default=nothing)</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>S32</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
     <key>OpenIMOnVoice</key>
     <map>
       <key>Comment</key>
@@ -13621,10 +13445,10 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
-     <key>WebProfileRect</key>
+     <key>WebProfileFloaterRect</key>
     <map>
       <key>Comment</key>
-      <string>Web profile dimensions</string>
+      <string>Web profile floater dimensions</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
@@ -13632,8 +13456,8 @@
       <key>Value</key>
       <array>
         <integer>0</integer>
-        <integer>650</integer>
-        <integer>490</integer>
+        <integer>680</integer>
+        <integer>485</integer>
         <integer>0</integer>
         </array>
         </map>
diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml
index 29e52ab054ae5c2e427e55064799c1a3bb8223b1..01a70f267132f34bfe0cae54c55a46627b5efb44 100644
--- a/indra/newview/app_settings/settings_minimal.xml
+++ b/indra/newview/app_settings/settings_minimal.xml
@@ -1,474 +1 @@
-<llsd>
-  <map>
-    <key>ChannelBottomPanelMargin</key>
-        <map>
-        <key>Comment</key>
-            <string>Space from a lower toast to the Bottom Tray</string>
-        <key>Type</key>
-            <string>S32</string>
-        <key>Value</key>
-            <integer>2</integer>
-        </map>
-    <key>ClickActionBuyEnabled</key>
-        <map>
-        <key>Comment</key>
-            <string>Enable click to buy actions in tool pie menu</string>
-        <key>Type</key>
-            <string>Boolean</string>
-        <key>Value</key>
-            <integer>0</integer>
-        </map>
-    <key>ClickActionPayEnabled</key>
-        <map>
-        <key>Comment</key>
-            <string>Enable click to pay actions in tool pie menu</string>
-        <key>Type</key>
-            <string>Boolean</string>
-        <key>Value</key>
-            <integer>0</integer>
-        </map>
-    <key>EnableGrab</key>
-        <map>
-        <key>Comment</key>
-            <string>Use Ctrl+mouse to grab and manipulate objects</string>
-        <key>Type</key>
-            <string>Boolean</string>
-        <key>Value</key>
-            <integer>0</integer>
-        </map>
-    <key>EnableMouselook</key>
-        <map>
-        <key>Comment</key>
-            <string>Allow first person perspective and mouse control of camera</string>
-        <key>Type</key>
-            <string>Boolean</string>
-        <key>Value</key>
-            <integer>0</integer>
-        </map>
-    <key>HelpURLFormat</key>
-        <map>
-        <key>Comment</key>
-            <string>URL pattern for help page; arguments will be encoded; see llviewerhelp.cpp:buildHelpURL for arguments</string>
-        <key>Type</key>
-            <string>String</string>
-        <key>Value</key>
-            <string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/howto/index.html?topic=[TOPIC]</string>
-        </map>
-    <key>PreferredMaturity</key>
-        <map>
-        <key>Comment</key>
-            <string>Setting for the user&apos;s preferred maturity level (consts in indra_constants.h)</string>
-        <key>Type</key>
-            <string>U32</string>
-        <key>Value</key>
-            <integer>21</integer>
-        </map>
-    <key>RenderTrackerBeacon</key>
-        <map>
-        <key>Comment</key>
-            <string>Display tracking arrow and beacon to target avatar, teleport destination</string>
-        <key>Type</key>
-            <string>Boolean</string>
-        <key>Value</key>
-            <integer>0</integer>
-        </map>
-    <key>ShowScriptErrors</key>
-        <map>
-        <key>Comment</key>
-            <string>Show script errors</string>
-        <key>Type</key>
-            <string>Boolean</string>
-        <key>Value</key>
-            <integer>0</integer>
-        </map>
-    <key>ShowScriptErrorsLocation</key>
-        <map>
-        <key>Comment</key>
-            <string>Show script error in chat or window</string>
-        <key>Type</key>
-            <string>S32</string>
-        <key>Value</key>
-            <integer>0</integer>
-        </map>
-    <key>SkinCurrent</key>
-        <map>
-        <key>Comment</key>
-            <string>The currently selected skin.</string>
-        <key>Type</key>
-            <string>String</string>
-        <key>Value</key>
-            <string>minimal</string>
-        </map>
-    <key>UseExternalBrowser</key>
-        <map>
-        <key>Comment</key>
-            <string>Use default browser when opening web pages instead of in-world browser.</string>
-        <key>Type</key>
-            <string>Boolean</string>
-        <key>Value</key>
-            <integer>0</integer>
-        </map>
-    <key>VoiceCallsRejectGroup</key>
-        <map>
-        <key>Comment</key>
-            <string>Silently reject all incoming group voice calls.</string>
-        <key>Type</key>
-            <string>Boolean</string>
-        <key>Value</key>
-            <integer>1</integer>
-        </map>
-    <key>VoiceDisableMic</key>
-        <map>
-        <key>Comment</key>
-            <string>Completely disable the ability to open the mic.</string>
-        <key>Type</key>
-            <string>Boolean</string>
-        <key>Value</key>
-            <integer>0</integer>
-        </map>
-      <key>ScriptsCanShowUI</key>
-      <map>
-        <key>Comment</key>
-        <string>Allow LSL calls (such as LLMapDestination) to spawn viewer UI</string>
-        <key>Persist</key>
-        <integer>1</integer>
-        <key>Type</key>
-        <string>Boolean</string>
-        <key>Value</key>
-        <integer>0</integer>
-      </map>
-      <key>ChatFontSize</key>
-      <map>
-        <key>Comment</key>
-        <string>Size of chat text in chat console (0 = small, 1 = big, 2 = extra large)</string>
-        <key>Persist</key>
-        <integer>1</integer>
-        <key>Type</key>
-        <string>S32</string>
-        <key>Value</key>
-        <integer>1</integer>
-      </map>
-      <key>AvatarPickerHintTimeout</key>
-      <map>
-        <key>Comment</key>
-        <string>Number of seconds to wait before telling resident about avatar picker.</string>
-        <key>Persist</key>
-        <integer>1</integer>
-        <key>Type</key>
-        <string>F32</string>
-        <key>Value</key>
-        <real>0.0</real>
-      </map>
-    <key>RenderShowGroupTitleAll</key>
-    <map>
-      <key>Comment</key>
-      <string>Show group titles in name labels</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>OpenSidePanelsInFloaters</key>
-    <map>
-      <key>Comment</key>
-      <string>If true, will always open side panel contents in a floater.</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
-    <key>AvatarInspectorTooltipDelay</key>
-    <map>
-      <key>Comment</key>
-      <string>Seconds before displaying avatar inspector tooltip</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>F32</string>
-      <key>Value</key>
-      <real>0.1</real>
-    </map>
-    <key>AFKTimeout</key>
-    <map>
-      <key>Comment</key>
-      <string>
-        Time before automatically setting AFK (away from keyboard) mode (seconds, 0=never).
-        Valid values are: 0, 120, 300, 600, 1800
-      </string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>S32</string>
-      <key>Value</key>
-      <real>0</real>
-    </map>
-    <key>SLURLTeleportDirectly</key>
-    <map>
-      <key>Comment</key>
-      <string>Clicking on a slurl will teleport you directly instead of opening places panel</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
-    <key>EnableClassifieds</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable creation of new classified ads</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>EnableGroupInfo</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable viewing and editing of group info.</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>EnablePlaceProfile</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable viewing of place profile from web link</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>EnablePicks</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable editing of picks</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>EnableWorldMap</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable opening world map from web link</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>EnableAvatarPay</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable paying other avatars from web link</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>EnableVoiceCall</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable voice calls from web link</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
-    <key>EnableAvatarShare</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable sharing from web link</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>EnableInventory</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable opening inventory from web link</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>EnableSearch</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable opening search from web link</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>EnableAppearance</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable opening appearance from web link</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>DoubleClickShowWorldMap</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable double-click to show world map from mini map</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>EnableGroupChatPopups</key>
-    <map>
-      <key>Comment</key>
-      <string>Enable Incoming Group Chat Popups</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>SearchFromAddressBar</key>
-    <map>
-      <key>Comment</key>
-      <string>Can enter search queries into navigation address bar</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>DestinationGuideURL</key>
-    <map>
-      <key>Comment</key>
-      <string>Destination guide contents</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>String</string>
-      <key>Value</key>
-      <string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/guide.html</string>
-    </map>
-    <key>AvatarPickerURL</key>
-    <map>
-      <key>Comment</key>
-      <string>Avatar picker contents</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>String</string>
-      <key>Value</key>
-      <string>http://common-flash-secondlife-com.s3.amazonaws.com/viewer/v2.6/agni/avatars.html</string>
-    </map>
-    <key>LogInventoryDecline</key>
-    <map>
-      <key>Comment</key>
-      <string>Log in system chat whenever an inventory offer is declined</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>UseHTTPInventory</key>
-    <map>
-      <key>Comment</key>
-      <string>Allow use of http inventory transfers instead of UDP</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>ClickToWalk</key>
-    <map>
-      <key>Comment</key>
-      <string>Click in world to walk to location</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
-    <key>ShowOfferedInventory</key>
-    <map>
-      <key>Comment</key>
-      <string>Show inventory window with last inventory offer selected when receiving inventory from other users.</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>OpenIMOnVoice</key>
-    <map>
-      <key>Comment</key>
-      <string>Open the corresponding IM window when connecting to a voice call.</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
-    <key>AllowBottomTrayButtonReordering</key>
-    <map>
-      <key>Comment</key>
-      <string>Allow user to move and hide bottom tray buttons</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>0</integer>
-    </map>
-    <key>ShowHelpOnFirstLogin</key>
-    <map>
-      <key>Comment</key>
-      <string>Show Help Floater on first login</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
-    </map>
-</llsd>
+<llsd/>
\ No newline at end of file
diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml
index d8295ddb876a3d60eb6771f16f4a70fa1da17e29..8cdd8ed838084dce4e1ff7a53f6fe2fa945d5d3b 100644
--- a/indra/newview/app_settings/settings_per_account.xml
+++ b/indra/newview/app_settings/settings_per_account.xml
@@ -33,6 +33,17 @@
         <key>Value</key>
             <string />
         </map>
+    <key>DisplayDestinationsOnInitialRun</key>
+        <map>
+        <key>Comment</key>
+          <string>Display the destinations guide when a user first launches Second Life.</string>
+        <key>Persist</key>
+          <integer>1</integer>
+        <key>Type</key>
+          <string>Boolean</string>
+        <key>Value</key>
+          <integer>1</integer>
+        </map>
     <key>LastInventoryInboxActivity</key>
         <map>
         <key>Comment</key>
diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
index c72da8d75824c92d59dfa0594e4ff9f90e6f1401..bc63d07d726ccda9dee47a148166cd0592cea4be 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/avatarSkinV.glsl
@@ -24,8 +24,7 @@
  */
  
 
-
-attribute vec4 weight;  //1
+ATTRIBUTE vec4 weight;
 
 uniform vec4 matrixPalette[45];
 
diff --git a/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl b/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl
index c2fe60ddaf8daf8d7200fe369a830c41ea7cec7a..19203ab6707879df20d56cdc4c3e678d9e2b2e09 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/avatarV.glsl
@@ -22,8 +22,17 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+uniform vec4 color;
 
 vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
 mat4 getSkinnedTransform();
@@ -31,32 +40,30 @@ void calcAtmospherics(vec3 inPositionEye);
 
 void main()
 {
-	gl_TexCoord[0] = gl_MultiTexCoord0;
+	vary_texcoord0 = texcoord0;
 				
 	vec4 pos;
 	vec3 norm;
 	
+	vec4 pos_in = vec4(position.xyz, 1.0);
+
 	mat4 trans = getSkinnedTransform();
-	pos.x = dot(trans[0], gl_Vertex);
-	pos.y = dot(trans[1], gl_Vertex);
-	pos.z = dot(trans[2], gl_Vertex);
+	pos.x = dot(trans[0], pos_in);
+	pos.y = dot(trans[1], pos_in);
+	pos.z = dot(trans[2], pos_in);
 	pos.w = 1.0;
 	
-	norm.x = dot(trans[0].xyz, gl_Normal);
-	norm.y = dot(trans[1].xyz, gl_Normal);
-	norm.z = dot(trans[2].xyz, gl_Normal);
+	norm.x = dot(trans[0].xyz, normal);
+	norm.y = dot(trans[1].xyz, normal);
+	norm.z = dot(trans[2].xyz, normal);
 	norm = normalize(norm);
 		
-	gl_Position = gl_ProjectionMatrix * pos;
-	
-	//gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+	gl_Position = projection_matrix * pos;
 	
-	gl_FogFragCoord = length(pos.xyz);
-
 	calcAtmospherics(pos.xyz);
 
-	vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0,0,0,0));
-	gl_FrontColor = color; 
+	vec4 col = calcLighting(pos.xyz, norm, color, vec4(0,0,0,0));
+	vertex_color = col; 
 
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl b/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl
index 1a0866be0a8c8292cbcd1ed16ef2b22caae068e7..82db15c3aeb0e6116a2c7d2a13c73ac6e429854c 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/eyeballV.glsl
@@ -22,8 +22,19 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol);
 void calcAtmospherics(vec3 inPositionEye);
@@ -31,17 +42,18 @@ void calcAtmospherics(vec3 inPositionEye);
 void main()
 {
 	//transform vertex
-	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	vec3 pos = (modelview_matrix * vec4(position.xyz, 1.0)).xyz;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+	
 	
-	vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
-	vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+	vec3 norm = normalize(normal_matrix * normal);
 		
 	calcAtmospherics(pos.xyz);
 
 	vec4 specular = vec4(1.0);
-	vec4 color = calcLightingSpecular(pos, norm, gl_Color, specular, vec4(0.0));	
-	gl_FrontColor = color;
+	vec4 color = calcLightingSpecular(pos, norm, diffuse_color, specular, vec4(0.0));	
+	vertex_color = color;
 
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
index 09688b2be2260f948654f25c067c519a3dc1df78..43ed41a2050c11affab3e55a044787fa7be14bf3 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/objectSkinV.glsl
@@ -24,7 +24,7 @@
 
 
 
-attribute vec4 object_weight;  
+ATTRIBUTE vec4 weight4;  
 
 uniform mat4 matrixPalette[32];
 
@@ -32,8 +32,8 @@ mat4 getObjectSkinnedTransform()
 {
 	int i; 
 	
-	vec4 w = fract(object_weight);
-	vec4 index = floor(object_weight);
+	vec4 w = fract(weight4);
+	vec4 index = floor(weight4);
 	
 	float scale = 1.0/(w.x+w.y+w.z+w.w);
 	w *= scale;
diff --git a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl
index 374808c091121226134a1b57585437cf1e6c5a49..3e4d438ed374533d289820cf49be76e7fba43fd4 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarF.glsl
@@ -22,12 +22,17 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 uniform sampler2D diffuseMap;
 
 void main() 
 {
-	gl_FragColor = vec4(gl_Color.rgb, texture2D(diffuseMap, gl_TexCoord[0].xy).a);
+	gl_FragColor = vec4(vertex_color.rgb, texture2D(diffuseMap, vary_texcoord0.xy).a);
 }
diff --git a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl
index e25d84a594c2b9bae5eb32fd3285588f4dc182b2..78b5328c9a3a16a839375ab3caa9765a1b0fd7cf 100644
--- a/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl
+++ b/indra/newview/app_settings/shaders/class1/avatar/pickAvatarV.glsl
@@ -22,22 +22,29 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 mat4 getSkinnedTransform();
 
 void main()
 {
 	vec4 pos;
-		
+	vec4 pos_in = vec4(position, 1.0);
 	mat4 trans = getSkinnedTransform();
-	pos.x = dot(trans[0], gl_Vertex);
-	pos.y = dot(trans[1], gl_Vertex);
-	pos.z = dot(trans[2], gl_Vertex);
+	pos.x = dot(trans[0], pos_in);
+	pos.y = dot(trans[1], pos_in);
+	pos.z = dot(trans[2], pos_in);
 	pos.w = 1.0;
 			
-	gl_FrontColor = gl_Color;
-	gl_TexCoord[0] = gl_MultiTexCoord0;
-	gl_Position = gl_ProjectionMatrix * pos;
+	vertex_color = diffuse_color;
+	vary_texcoord0 = texcoord0;
+	gl_Position = projection_matrix * pos;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
index 19de0c0b39f3048fb14552e1cd3894011c8a7369..c012efa0563f618fdab8e3377eca728151b7a94d 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaF.glsl
@@ -23,10 +23,12 @@
  * $/LicenseInfo$
  */
  
-
-
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2DRect depthMap;
 
 vec4 diffuseLookup(vec2 texcoord);
@@ -38,26 +40,16 @@ uniform vec2 screen_res;
 vec3 atmosLighting(vec3 light);
 vec3 scaleSoftClip(vec3 light);
 
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_position;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
 
-uniform mat4 inv_proj;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
-vec4 getPosition(vec2 pos_screen)
-{
-	float depth = texture2DRect(depthMap, pos_screen.xy).a;
-	vec2 sc = pos_screen.xy*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
+uniform mat4 inv_proj;
 
 void main() 
 {
@@ -66,9 +58,9 @@ void main()
 	
 	vec4 pos = vec4(vary_position, 1.0);
 	
-	vec4 diff= diffuseLookup(gl_TexCoord[0].xy);
+	vec4 diff= diffuseLookup(vary_texcoord0.xy);
 
-	vec4 col = vec4(vary_ambient + vary_directional.rgb, gl_Color.a);
+	vec4 col = vec4(vary_ambient + vary_directional.rgb, vertex_color.a);
 	vec4 color = diff * col;
 	
 	color.rgb = atmosLighting(color.rgb);
@@ -78,8 +70,5 @@ void main()
 	color.rgb += diff.rgb * vary_pointlight_col.rgb;
 
 	gl_FragColor = color;
-	//gl_FragColor = vec4(1,0,1,1);
-	//gl_FragColor = vec4(1,0,1,1)*shadow;
-	
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl
index d4f56896cfa6f75bca10c07d91d626cd6092cfee..86418277775dbdc3486a9308747feeac2ca13896 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedF.glsl
@@ -23,10 +23,12 @@
  * $/LicenseInfo$
  */
  
-
-
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2DRect depthMap;
 uniform sampler2D diffuseMap;
 
@@ -38,11 +40,13 @@ uniform vec2 screen_res;
 vec3 atmosLighting(vec3 light);
 vec3 scaleSoftClip(vec3 light);
 
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_position;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
+VARYING vec2 vary_texcoord0;
+VARYING vec4 vertex_color;
 
 uniform mat4 inv_proj;
 
@@ -66,9 +70,9 @@ void main()
 	
 	vec4 pos = vec4(vary_position, 1.0);
 	
-	vec4 diff= texture2D(diffuseMap,gl_TexCoord[0].xy);
+	vec4 diff= texture2D(diffuseMap,vary_texcoord0.xy);
 
-	vec4 col = vec4(vary_ambient + vary_directional.rgb, gl_Color.a);
+	vec4 col = vec4(vary_ambient + vary_directional.rgb, vertex_color.a);
 	vec4 color = diff * col;
 	
 	color.rgb = atmosLighting(color.rgb);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..c13ea702dba52be01c00a73481f3925b8fc11de5
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaNonIndexedNoColorF.glsl
@@ -0,0 +1,84 @@
+/** 
+ * @file alphaNonIndexedNoColorF.glsl
+ *
+ * $LicenseInfo:firstyear=2005&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2005, 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$
+ */
+ 
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2DRect depthMap;
+uniform sampler2D diffuseMap;
+
+uniform mat4 shadow_matrix[6];
+uniform vec4 shadow_clip;
+uniform vec2 screen_res;
+
+vec3 atmosLighting(vec3 light);
+vec3 scaleSoftClip(vec3 light);
+
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
+VARYING vec2 vary_texcoord0;
+
+uniform mat4 inv_proj;
+
+vec4 getPosition(vec2 pos_screen)
+{
+	float depth = texture2DRect(depthMap, pos_screen.xy).a;
+	vec2 sc = pos_screen.xy*2.0;
+	sc /= screen_res;
+	sc -= vec2(1.0,1.0);
+	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
+	vec4 pos = inv_proj * ndc;
+	pos /= pos.w;
+	pos.w = 1.0;
+	return pos;
+}
+
+void main() 
+{
+	vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5;
+	frag *= screen_res;
+	
+	vec4 pos = vec4(vary_position, 1.0);
+	
+	vec4 diff= texture2D(diffuseMap,vary_texcoord0.xy);
+
+	vec4 col = vec4(vary_ambient + vary_directional.rgb, 1.0);
+	vec4 color = diff * col;
+	
+	color.rgb = atmosLighting(color.rgb);
+
+	color.rgb = scaleSoftClip(color.rgb);
+
+	color.rgb += diff.rgb * vary_pointlight_col.rgb;
+
+	gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl
index d57b8f8525e9c15b28e549d168caf21dcc6d59cb..40b0cf47ac5a3b40901c6bdde1efd0910ddeab35 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaSkinnedV.glsl
@@ -21,10 +21,15 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 projection_matrix;
+uniform mat4 modelview_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
 
-vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
 mat4 getObjectSkinnedTransform();
 void calcAtmospherics(vec3 inPositionEye);
 
@@ -32,35 +37,41 @@ float calcDirectionalLight(vec3 n, vec3 l);
 
 vec3 atmosAmbient(vec3 light);
 vec3 atmosAffectDirectionalLight(float lightIntensity);
-vec3 scaleDownLight(vec3 light);
-vec3 scaleUpLight(vec3 light);
 
-varying vec3 vary_position;
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_normal;
-varying vec3 vary_fragcoord;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_position;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_normal;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_pointlight_col;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 
 uniform float near_clip;
 
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8]; 
+uniform vec3 light_diffuse[8];
+
 float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
 {
 	//get light vector
 	vec3 lv = lp.xyz-v;
 	
 	//get distance
-	float d = length(lv);
+	float d = dot(lv,lv);
 	
 	float da = 0.0;
 
 	if (d > 0.0 && la > 0.0 && fa > 0.0)
 	{
 		//normalize light vector
-		lv *= 1.0/d;
+		lv = normalize(lv);
 	
 		//distance attenuation
-		float dist2 = d*d/(la*la);
+		float dist2 = d/la;
 		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
 
 		// spotlight coefficient.
@@ -68,7 +79,7 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 		da *= spot*spot; // GL_SPOT_EXPONENT=2
 
 		//angular attenuation
-		da *= calcDirectionalLight(n, lv);
+		da *= max(dot(n, lv), 0.0);		
 	}
 
 	return da;	
@@ -76,20 +87,20 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 
 void main()
 {
-	gl_TexCoord[0] = gl_MultiTexCoord0;
+	vary_texcoord0 = texcoord0;
 				
 	vec4 pos;
 	vec3 norm;
 	
 	mat4 trans = getObjectSkinnedTransform();
-	trans = gl_ModelViewMatrix * trans;
+	trans = modelview_matrix * trans;
 	
-	pos = trans * gl_Vertex;
+	pos = trans * vec4(position.xyz, 1.0);
 	
-	norm = gl_Vertex.xyz + gl_Normal.xyz;
+	norm = position.xyz + normal.xyz;
 	norm = normalize(( trans*vec4(norm, 1.0) ).xyz-pos.xyz);
 	
-	vec4 frag_pos = gl_ProjectionMatrix * pos;
+	vec4 frag_pos = projection_matrix * pos;
 	gl_Position = frag_pos;
 	
 	vary_position = pos.xyz;
@@ -97,31 +108,31 @@ void main()
 	
 	calcAtmospherics(pos.xyz);
 
-	vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+	vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a);
 
 	// Collect normal lights
-	col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].specular.a);
-	col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation ,gl_LightSource[3].specular.a);
-	col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation, gl_LightSource[4].specular.a);
-	col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].quadraticAttenuation, gl_LightSource[5].specular.a);
-	col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation, gl_LightSource[6].specular.a);
-	col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation, gl_LightSource[7].specular.a);
-	
-	vary_pointlight_col = col.rgb*gl_Color.rgb;
+	col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].y, light_attenuation[2].z);
+	col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].y, light_attenuation[3].z);
+	col.rgb += light_diffuse[4].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[4], light_direction[4], light_attenuation[4].x, light_attenuation[4].y, light_attenuation[4].z);
+	col.rgb += light_diffuse[5].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[5], light_direction[5], light_attenuation[5].x, light_attenuation[5].y, light_attenuation[5].z);
+	col.rgb += light_diffuse[6].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[6], light_direction[6], light_attenuation[6].x, light_attenuation[6].y, light_attenuation[6].z);
+	col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].y, light_attenuation[7].z);
+
+	vary_pointlight_col = col.rgb*diffuse_color.rgb;
 
 	col.rgb = vec3(0,0,0);
 
 	// Add windlight lights
 	col.rgb = atmosAmbient(vec3(0.));
 	
-	vary_ambient = col.rgb*gl_Color.rgb;
-	vary_directional = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a)));
+	vary_ambient = col.rgb*diffuse_color.rgb;
+	vary_directional = diffuse_color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, light_position[0].xyz), (1.0-diffuse_color.a)*(1.0-diffuse_color.a)));
 	
-	col.rgb = min(col.rgb*gl_Color.rgb, 1.0);
+	col.rgb = min(col.rgb*diffuse_color.rgb, 1.0);
 	
-	gl_FrontColor = col;
+	vertex_color = col;
 
-	gl_FogFragCoord = pos.z;
+	
 	
 	vary_fragcoord.xyz = frag_pos.xyz + vec3(0,0,near_clip);
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
index f6a280462e133464eec35bd1d1e63ac7e3858478..8c96d5534241ee6fb06ffceffed6b5279a34cae4 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/alphaV.glsl
@@ -23,7 +23,16 @@
  * $/LicenseInfo$
  */
 
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
 
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
 
 vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
 void calcAtmospherics(vec3 inPositionEye);
@@ -35,35 +44,43 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
 vec3 scaleDownLight(vec3 light);
 vec3 scaleUpLight(vec3 light);
 
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_position;
-varying vec3 vary_light;
-varying vec3 vary_pointlight_col;
-varying float vary_texture_index;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_light;
+VARYING vec3 vary_pointlight_col;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 
 uniform float near_clip;
 uniform float shadow_offset;
 uniform float shadow_bias;
 
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8]; 
+uniform vec3 light_diffuse[8];
+
 float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
 {
 	//get light vector
 	vec3 lv = lp.xyz-v;
 	
 	//get distance
-	float d = length(lv);
+	float d = dot(lv,lv);
 	
 	float da = 0.0;
 
 	if (d > 0.0 && la > 0.0 && fa > 0.0)
 	{
 		//normalize light vector
-		lv *= 1.0/d;
+		lv = normalize(lv);
 	
 		//distance attenuation
-		float dist2 = d*d/(la*la);
+		float dist2 = d/la;
 		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
 
 		// spotlight coefficient.
@@ -71,7 +88,7 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 		da *= spot*spot; // GL_SPOT_EXPONENT=2
 
 		//angular attenuation
-		da *= calcDirectionalLight(n, lv);
+		da *= max(dot(n, lv), 0.0);		
 	}
 
 	return da;	
@@ -80,50 +97,49 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 void main()
 {
 	//transform vertex
-	vec4 vert = vec4(gl_Vertex.xyz, 1.0);
-	vary_texture_index = gl_Vertex.w;
-	gl_Position = gl_ModelViewProjectionMatrix * vert; 
+	vec4 vert = vec4(position.xyz, 1.0);
+	passTextureIndex();
+	vec4 pos = (modelview_matrix * vert);
+	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
 	
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
 	
-	vec4 pos = (gl_ModelViewMatrix * vert);
-	vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+	vec3 norm = normalize(normal_matrix * normal);
 	
-	float dp_directional_light = max(0.0, dot(norm, gl_LightSource[0].position.xyz));
-	vary_position = pos.xyz + gl_LightSource[0].position.xyz * (1.0-dp_directional_light)*shadow_offset;
+	float dp_directional_light = max(0.0, dot(norm, light_position[0].xyz));
+	vary_position = pos.xyz + light_position[0].xyz * (1.0-dp_directional_light)*shadow_offset;
 		
 	calcAtmospherics(pos.xyz);
 
-	//vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
-	vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+	//vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
+	vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a);
 
 	// Collect normal lights
-	col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].specular.a);
-	col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation ,gl_LightSource[3].specular.a);
-	col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation, gl_LightSource[4].specular.a);
-	col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].quadraticAttenuation, gl_LightSource[5].specular.a);
-	col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation, gl_LightSource[6].specular.a);
-	col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation, gl_LightSource[7].specular.a);
+	col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].y, light_attenuation[2].z);
+	col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].y, light_attenuation[3].z);
+	col.rgb += light_diffuse[4].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[4], light_direction[4], light_attenuation[4].x, light_attenuation[4].y, light_attenuation[4].z);
+	col.rgb += light_diffuse[5].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[5], light_direction[5], light_attenuation[5].x, light_attenuation[5].y, light_attenuation[5].z);
+	col.rgb += light_diffuse[6].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[6], light_direction[6], light_attenuation[6].x, light_attenuation[6].y, light_attenuation[6].z);
+	col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].y, light_attenuation[7].z);
 	
-	vary_pointlight_col = col.rgb*gl_Color.rgb;
-
+	vary_pointlight_col = col.rgb*diffuse_color.rgb;
 	col.rgb = vec3(0,0,0);
 
 	// Add windlight lights
 	col.rgb = atmosAmbient(vec3(0.));
 	
-	vary_light = gl_LightSource[0].position.xyz;
+	vary_light = light_position[0].xyz;
 	
-	vary_ambient = col.rgb*gl_Color.rgb;
-	vary_directional.rgb = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a)));
+	vary_ambient = col.rgb*diffuse_color.rgb;
+	vary_directional.rgb = diffuse_color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, light_position[0].xyz), (1.0-diffuse_color.a)*(1.0-diffuse_color.a)));
 	
-	col.rgb = col.rgb*gl_Color.rgb;
+	col.rgb = col.rgb*diffuse_color.rgb;
 	
-	gl_FrontColor = col;
+	vertex_color = col;
 
-	gl_FogFragCoord = pos.z;
 	
-	pos = gl_ModelViewProjectionMatrix * vert;
+	
+	pos = modelview_projection_matrix * vert;
 	vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
 	
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl
index 0c930848e58e09f3ad8074acdad57caa489f589e..402f681631061aad16d10457d7d1316bd19d6cce 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowF.glsl
@@ -22,14 +22,18 @@
  * $/LicenseInfo$
  */
 
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
 uniform sampler2D diffuseMap;
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 void main() 
 {
-	//gl_FragColor = vec4(1,1,1,gl_Color.a * texture2D(diffuseMap, gl_TexCoord[0].xy).a);
+	//gl_FragColor = vec4(1,1,1,vertex_color.a * texture2D(diffuseMap, vary_texcoord0.xy).a);
 	gl_FragColor = vec4(1,1,1,1);
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl
index bf4e79d815e3106d98d89b5385b35dfdcbfbc5f7..ded6cced27f63b39585f3631fd5e7ea581a513ff 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/attachmentShadowV.glsl
@@ -22,23 +22,29 @@
  * $/LicenseInfo$
  */
 
+uniform mat4 projection_matrix;
+uniform mat4 modelview_matrix;
+uniform mat4 texture_matrix0;
 
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
 
 mat4 getObjectSkinnedTransform();
 
 void main()
 {
 	//transform vertex
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-	
 	mat4 mat = getObjectSkinnedTransform();
 	
-	mat = gl_ModelViewMatrix * mat;
-	vec3 pos = (mat*gl_Vertex).xyz;
+	mat = modelview_matrix * mat;
+	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
 	
-	gl_FrontColor = gl_Color;
+	vertex_color = diffuse_color;
 	
-	vec4 p = gl_ProjectionMatrix * vec4(pos, 1.0);
+	vec4 p = projection_matrix * vec4(pos, 1.0);
 	p.z = max(p.z, -p.w+0.01);
 	gl_Position = p;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl
index f70ea4da526afecaf1172b3b7f7975da6536ad10..c0edddc40a56bd4185932a70101b48a3f3b174b7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarAlphaV.glsl
@@ -22,8 +22,12 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
 
 vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
 mat4 getSkinnedTransform();
@@ -37,31 +41,41 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
 vec3 scaleDownLight(vec3 light);
 vec3 scaleUpLight(vec3 light);
 
-varying vec3 vary_position;
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_position;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_pointlight_col;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 
 uniform float near_clip;
 
+uniform vec4 color;
+
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8]; 
+uniform vec3 light_diffuse[8];
+
 float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
 {
 	//get light vector
 	vec3 lv = lp.xyz-v;
 	
 	//get distance
-	float d = length(lv);
+	float d = dot(lv,lv);
 	
 	float da = 0.0;
 
 	if (d > 0.0 && la > 0.0 && fa > 0.0)
 	{
 		//normalize light vector
-		lv *= 1.0/d;
+		lv = normalize(lv);
 	
 		//distance attenuation
-		float dist2 = d*d/(la*la);
+		float dist2 = d/la;
 		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
 
 		// spotlight coefficient.
@@ -69,7 +83,7 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 		da *= spot*spot; // GL_SPOT_EXPONENT=2
 
 		//angular attenuation
-		da *= calcDirectionalLight(n, lv);
+		da *= max(dot(n, lv), 0.0);		
 	}
 
 	return da;	
@@ -77,56 +91,55 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 
 void main()
 {
-	gl_TexCoord[0] = gl_MultiTexCoord0;
+	vary_texcoord0 = texcoord0;
 				
 	vec4 pos;
 	vec3 norm;
 	
 	mat4 trans = getSkinnedTransform();
-	pos.x = dot(trans[0], gl_Vertex);
-	pos.y = dot(trans[1], gl_Vertex);
-	pos.z = dot(trans[2], gl_Vertex);
+	vec4 pos_in = vec4(position.xyz, 1.0);
+	pos.x = dot(trans[0], pos_in);
+	pos.y = dot(trans[1], pos_in);
+	pos.z = dot(trans[2], pos_in);
 	pos.w = 1.0;
 	
-	norm.x = dot(trans[0].xyz, gl_Normal);
-	norm.y = dot(trans[1].xyz, gl_Normal);
-	norm.z = dot(trans[2].xyz, gl_Normal);
+	norm.x = dot(trans[0].xyz, normal);
+	norm.y = dot(trans[1].xyz, normal);
+	norm.z = dot(trans[2].xyz, normal);
 	norm = normalize(norm);
 		
-	vec4 frag_pos = gl_ProjectionMatrix * pos;
+	vec4 frag_pos = projection_matrix * pos;
 	gl_Position = frag_pos;
 	
 	vary_position = pos.xyz;
 	
 	calcAtmospherics(pos.xyz);
 
-	//vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
-
-	vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+	vec4 col = vec4(0.0, 0.0, 0.0, 1.0);
 
 	// Collect normal lights
-	col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].specular.a);
-	col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation ,gl_LightSource[3].specular.a);
-	col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation, gl_LightSource[4].specular.a);
-	col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].quadraticAttenuation, gl_LightSource[5].specular.a);
-	col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation, gl_LightSource[6].specular.a);
-	col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation, gl_LightSource[7].specular.a);
+	col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].y, light_attenuation[2].z);
+	col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].y, light_attenuation[3].z);
+	col.rgb += light_diffuse[4].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[4], light_direction[4], light_attenuation[4].x, light_attenuation[4].y, light_attenuation[4].z);
+	col.rgb += light_diffuse[5].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[5], light_direction[5], light_attenuation[5].x, light_attenuation[5].y, light_attenuation[5].z);
+	col.rgb += light_diffuse[6].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[6], light_direction[6], light_attenuation[6].x, light_attenuation[6].y, light_attenuation[6].z);
+	col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].y, light_attenuation[7].z);
 	
-	vary_pointlight_col = col.rgb*gl_Color.rgb;
+	vary_pointlight_col = col.rgb*color.rgb;
 
 	col.rgb = vec3(0,0,0);
 
 	// Add windlight lights
 	col.rgb = atmosAmbient(vec3(0.));
 	
-	vary_ambient = col.rgb*gl_Color.rgb;
-	vary_directional = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a)));
+	vary_ambient = col.rgb*color.rgb;
+	vary_directional = color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, light_position[0].xyz), 0.0));
 	
-	col.rgb = min(col.rgb*gl_Color.rgb, 1.0);
+	col.rgb = col.rgb * color.rgb;
 	
-	gl_FrontColor = col;
+	vertex_color = col;
 
-	gl_FogFragCoord = pos.z;
+	
 	
 	vary_fragcoord.xyz = frag_pos.xyz + vec3(0,0,near_clip);
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl
index d0f33979325dfdb8ff268b620c1c3cdef117fb7d..01ffb862f70e9aed4a1a342fee2ec1706264214a 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarEyesV.glsl
@@ -22,18 +22,27 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
 
-varying vec3 vary_normal;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec3 vary_normal;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 void main()
 {
 	//transform vertex
-	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; 
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0); 
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
 	
-	vary_normal = normalize(gl_NormalMatrix * gl_Normal);
+	vary_normal = normalize(normal_matrix * normal);
 
-	gl_FrontColor = gl_Color;
+	vertex_color = diffuse_color;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl
index 3f30402583d9cd23c4854e63f6dcd8af4951cdcc..9a3b2e3e8a52e0735761aa037f8ade84d5cc3b4f 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarF.glsl
@@ -22,16 +22,19 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
 
 uniform sampler2D diffuseMap;
 
-varying vec3 vary_normal;
+VARYING vec3 vary_normal;
+VARYING vec2 vary_texcoord0;
 
 void main() 
 {
-	vec4 diff = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy);
+	vec4 diff = texture2D(diffuseMap, vary_texcoord0.xy);
 	
 	if (diff.a < 0.2)
 	{
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl
index c9a349f0263b041a17f021b21d5e56df75366c9b..558a88009aada4d4bf2b7c2ae9807275ecede98c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowF.glsl
@@ -23,15 +23,16 @@
  * $/LicenseInfo$
  */
  
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
 uniform sampler2D diffuseMap;
 
-varying vec4 post_pos;
+VARYING vec4 post_pos;
 
 void main() 
 {
-	//gl_FragColor = vec4(1,1,1,gl_Color.a * texture2D(diffuseMap, gl_TexCoord[0].xy).a);
 	gl_FragColor = vec4(1,1,1,1);
 
 	gl_FragDepth = max(post_pos.z/post_pos.w*0.5+0.5, 0.0);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl
index 3d2ad397dfb86fc2ff465a9753aad9aeed0842d2..23feb09d7233b8dea4a042712593574f06ff5b2e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarShadowV.glsl
@@ -23,38 +23,37 @@
  * $/LicenseInfo$
  */
  
-
+uniform mat4 projection_matrix;
 
 mat4 getSkinnedTransform();
 
-attribute vec4 weight;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
 
-varying vec4 post_pos;
+VARYING vec4 post_pos;
 
 void main()
 {
-	gl_TexCoord[0] = gl_MultiTexCoord0;
-				
 	vec4 pos;
 	vec3 norm;
 	
+	vec4 pos_in = vec4(position.xyz, 1.0);
 	mat4 trans = getSkinnedTransform();
-	pos.x = dot(trans[0], gl_Vertex);
-	pos.y = dot(trans[1], gl_Vertex);
-	pos.z = dot(trans[2], gl_Vertex);
+	pos.x = dot(trans[0], pos_in);
+	pos.y = dot(trans[1], pos_in);
+	pos.z = dot(trans[2], pos_in);
 	pos.w = 1.0;
 	
-	norm.x = dot(trans[0].xyz, gl_Normal);
-	norm.y = dot(trans[1].xyz, gl_Normal);
-	norm.z = dot(trans[2].xyz, gl_Normal);
+	norm.x = dot(trans[0].xyz, normal);
+	norm.y = dot(trans[1].xyz, normal);
+	norm.z = dot(trans[2].xyz, normal);
 	norm = normalize(norm);
 	
-	pos = gl_ProjectionMatrix * pos;
+	pos = projection_matrix * pos;
 	post_pos = pos;
 
 	gl_Position = vec4(pos.x, pos.y, pos.w*0.5, pos.w);
-	
-	gl_FrontColor = gl_Color;
 }
 
 
diff --git a/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl b/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl
index 37fcef81f3f9de0418ae7ecc7f773f95d2ac5601..1bd8fee7c974949ee9e43f1f520ec441c7cc6644 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/avatarV.glsl
@@ -23,38 +23,41 @@
  * $/LicenseInfo$
  */
  
+uniform mat4 projection_matrix;
 
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
 
 mat4 getSkinnedTransform();
 
-attribute vec4 weight;
+ATTRIBUTE vec4 weight;
 
-varying vec3 vary_normal;
+VARYING vec3 vary_normal;
+VARYING vec2 vary_texcoord0;
 
 void main()
 {
-	gl_TexCoord[0] = gl_MultiTexCoord0;
+	vary_texcoord0 = texcoord0;
 				
 	vec4 pos;
 	vec3 norm;
 	
+	vec4 pos_in = vec4(position.xyz, 1.0);
 	mat4 trans = getSkinnedTransform();
-	pos.x = dot(trans[0], gl_Vertex);
-	pos.y = dot(trans[1], gl_Vertex);
-	pos.z = dot(trans[2], gl_Vertex);
+	pos.x = dot(trans[0], pos_in);
+	pos.y = dot(trans[1], pos_in);
+	pos.z = dot(trans[2], pos_in);
 	pos.w = 1.0;
 	
-	norm.x = dot(trans[0].xyz, gl_Normal);
-	norm.y = dot(trans[1].xyz, gl_Normal);
-	norm.z = dot(trans[2].xyz, gl_Normal);
+	norm.x = dot(trans[0].xyz, normal);
+	norm.y = dot(trans[1].xyz, normal);
+	norm.z = dot(trans[2].xyz, normal);
 	norm = normalize(norm);
 	
 	vary_normal = norm;
 	
-	gl_Position = gl_ProjectionMatrix * pos;
-	//gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;	
-	
-	gl_FrontColor = gl_Color;
+	gl_Position = projection_matrix * pos;
 }
 
 
diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
index 3609cc054b9980b596d2dfcfb297998e9bbeca4c..60d4dae99f03f32815eed67401f53ccf73cb26fc 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightF.glsl
@@ -22,11 +22,13 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
-
 
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2DRect depthMap;
 uniform sampler2DRect normalMap;
 uniform sampler2DRect lightMap;
@@ -37,11 +39,16 @@ uniform vec2 delta;
 uniform vec3 kern[4];
 uniform float kern_scale;
 
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
 
 uniform mat4 inv_proj;
 uniform vec2 screen_res;
 
+vec3 getKern(int i)
+{
+	return kern[i];
+}
+
 vec4 getPosition(vec2 pos_screen)
 {
 	float depth = texture2DRect(depthMap, pos_screen.xy).r;
@@ -66,35 +73,38 @@ void main()
 	vec2 dlt = kern_scale * delta / (1.0+norm.xy*norm.xy);
 	dlt /= max(-pos.z*dist_factor, 1.0);
 	
-	vec2 defined_weight = kern[0].xy; // special case the first (centre) sample's weight in the blur; we have to sample it anyway so we get it for 'free'
+	vec2 defined_weight = getKern(0).xy; // special case the first (centre) sample's weight in the blur; we have to sample it anyway so we get it for 'free'
 	vec4 col = defined_weight.xyxx * ccol;
 
 	// relax tolerance according to distance to avoid speckling artifacts, as angles and distances are a lot more abrupt within a small screen area at larger distances
 	float pointplanedist_tolerance_pow2 = pos.z*pos.z*0.00005;
 
 	// perturb sampling origin slightly in screen-space to hide edge-ghosting artifacts where smoothing radius is quite large
-	tc += ( (mod(tc.x+tc.y,2) - 0.5) * kern[1].z * dlt * 0.5 );
+	float tc_mod = 0.5*(tc.x + tc.y); // mod(tc.x+tc.y,2)
+	tc_mod -= floor(tc_mod);
+	tc_mod *= 2.0;
+	tc += ( (tc_mod - 0.5) * getKern(1).z * dlt * 0.5 );
 
 	for (int i = 1; i < 4; i++)
 	{
-		vec2 samptc = tc + kern[i].z*dlt;
+		vec2 samptc = tc + getKern(i).z*dlt;
 	        vec3 samppos = getPosition(samptc).xyz; 
 		float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane
 		if (d*d <= pointplanedist_tolerance_pow2)
 		{
-			col += texture2DRect(lightMap, samptc)*kern[i].xyxx;
-			defined_weight += kern[i].xy;
+			col += texture2DRect(lightMap, samptc)*getKern(i).xyxx;
+			defined_weight += getKern(i).xy;
 		}
 	}
 	for (int i = 1; i < 4; i++)
 	{
-		vec2 samptc = tc - kern[i].z*dlt;
+		vec2 samptc = tc - getKern(i).z*dlt;
 	        vec3 samppos = getPosition(samptc).xyz; 
 		float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane
 		if (d*d <= pointplanedist_tolerance_pow2)
 		{
-			col += texture2DRect(lightMap, samptc)*kern[i].xyxx;
-			defined_weight += kern[i].xy;
+			col += texture2DRect(lightMap, samptc)*getKern(i).xyxx;
+			defined_weight += getKern(i).xy;
 		}
 	}
 
diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl
deleted file mode 100644
index c858eb7a3a8e3fe2424e34f03dc208617fd09ace..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/blurLightMSF.glsl
+++ /dev/null
@@ -1,131 +0,0 @@
-/** 
- * @file blurLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2DRect lightMap;
-
-uniform float dist_factor;
-uniform float blur_size;
-uniform vec2 delta;
-uniform vec3 kern[4];
-uniform float kern_scale;
-
-varying vec2 vary_fragcoord;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-vec3 texture2DMS3(sampler2DMS tex, ivec2 tc)
-{
-	vec3 ret = vec3(0,0,0);
-	for (int i = 0; i < samples; i++)
-	{
-		ret += texelFetch(tex, tc, i).rgb;
-	}
-
-	return ret/samples;
-}
-
-float texture2DMS1(sampler2DMS tex, ivec2 tc)
-{
-	float ret = 0;
-	for (int i = 0; i < samples; i++)
-	{
-		ret += texelFetch(tex, tc, i).r;
-	}
-
-	return ret/samples;
-}
-
-vec4 getPosition(ivec2 pos_screen)
-{
-	float depth = texture2DMS1(depthMap, pos_screen.xy);
-	vec2 sc = pos_screen.xy*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-void main() 
-{
-    vec2 tc = vary_fragcoord.xy;
-	ivec2 itc = ivec2(tc);
-
-	vec3 norm = texture2DMS3(normalMap, itc).xyz;
-	norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-	vec3 pos = getPosition(itc).xyz;
-	vec4 ccol = texture2DRect(lightMap, tc).rgba;
-	
-	vec2 dlt = kern_scale * delta / (1.0+norm.xy*norm.xy);
-	dlt /= max(-pos.z*dist_factor, 1.0);
-	
-	vec2 defined_weight = kern[0].xy; // special case the first (centre) sample's weight in the blur; we have to sample it anyway so we get it for 'free'
-	vec4 col = defined_weight.xyxx * ccol;
-
-	// relax tolerance according to distance to avoid speckling artifacts, as angles and distances are a lot more abrupt within a small screen area at larger distances
-	float pointplanedist_tolerance_pow2 = pos.z*pos.z*0.00005;
-
-	// perturb sampling origin slightly in screen-space to hide edge-ghosting artifacts where smoothing radius is quite large
-	tc += ( (mod(tc.x+tc.y,2) - 0.5) * kern[1].z * dlt * 0.5 );
-
-	for (int i = 1; i < 4; i++)
-	{
-		vec2 samptc = tc + kern[i].z*dlt;
-		vec3 samppos = getPosition(ivec2(samptc)).xyz; 
-		float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane
-		if (d*d <= pointplanedist_tolerance_pow2)
-		{
-			col += texture2DRect(lightMap, samptc)*kern[i].xyxx;
-			defined_weight += kern[i].xy;
-		}
-	}
-	for (int i = 1; i < 4; i++)
-	{
-		vec2 samptc = vec2(tc - kern[i].z*dlt);
-		vec3 samppos = getPosition(ivec2(samptc)).xyz; 
-		float d = dot(norm.xyz, samppos.xyz-pos.xyz);// dist from plane
-		if (d*d <= pointplanedist_tolerance_pow2)
-		{
-			col += texture2DRect(lightMap, samptc)*kern[i].xyxx;
-			defined_weight += kern[i].xy;
-		}
-	}
-
-	col /= defined_weight.xyxx;
-	col.y *= col.y;
-
-	gl_FragColor = col;
-}
-
diff --git a/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl
index e904b7ded006c69cd7a6bb9b022d8f4e7ba2e423..212f7e56adff95dc365e2673f47b416045361411 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/blurLightV.glsl
@@ -22,16 +22,18 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 modelview_projection_matrix;
 
-varying vec2 vary_fragcoord;
+ATTRIBUTE vec3 position;
+
+VARYING vec2 vary_fragcoord;
 uniform vec2 screen_res;
 
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform(); 
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
+	vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	gl_Position = pos; 
 	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl
index 429a891f0734b5579a8daa9f3b8c399a5de0e2cb..6cc5f23acaf43f64103b221b15949ba91dd25616 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/bumpF.glsl
@@ -23,27 +23,32 @@
  * $/LicenseInfo$
  */
  
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
 
 uniform sampler2D diffuseMap;
 uniform sampler2D bumpMap;
 
-varying vec3 vary_mat0;
-varying vec3 vary_mat1;
-varying vec3 vary_mat2;
+VARYING vec3 vary_mat0;
+VARYING vec3 vary_mat1;
+VARYING vec3 vary_mat2;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 void main() 
 {
-	vec3 col = gl_Color.rgb * texture2D(diffuseMap, gl_TexCoord[0].xy).rgb;
-	vec3 norm = texture2D(bumpMap, gl_TexCoord[0].xy).rgb * 2.0 - 1.0;
+	vec3 col = vertex_color.rgb * texture2D(diffuseMap, vary_texcoord0.xy).rgb;
+	vec3 norm = texture2D(bumpMap, vary_texcoord0.xy).rgb * 2.0 - 1.0;
 
 	vec3 tnorm = vec3(dot(norm,vary_mat0),
 			  dot(norm,vary_mat1),
 			  dot(norm,vary_mat2));
 						
 	gl_FragData[0] = vec4(col, 0.0);
-	gl_FragData[1] = gl_Color.aaaa; // spec
-	//gl_FragData[1] = vec4(vec3(gl_Color.a), gl_Color.a+(1.0-gl_Color.a)*gl_Color.a); // spec - from former class3 - maybe better, but not so well tested
+	gl_FragData[1] = vertex_color.aaaa; // spec
+	//gl_FragData[1] = vec4(vec3(vertex_color.a), vertex_color.a+(1.0-vertex_color.a)*vertex_color.a); // spec - from former class3 - maybe better, but not so well tested
 	vec3 nvn = normalize(tnorm);
 	gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl
index 7d934e7ff836f1353d21de682fa3eb2c49c5f602..6c205074b4e623fb83b296f58a3d58a04dd8b125 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/bumpSkinnedV.glsl
@@ -22,33 +22,43 @@
  * $/LicenseInfo$
  */
 
+uniform mat4 projection_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
 
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec2 texcoord2;
 
-varying vec3 vary_mat0;
-varying vec3 vary_mat1;
-varying vec3 vary_mat2;
+VARYING vec3 vary_mat0;
+VARYING vec3 vary_mat1;
+VARYING vec3 vary_mat2;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 mat4 getObjectSkinnedTransform();
 
 void main()
 {
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
 	
 	mat4 mat = getObjectSkinnedTransform();
 	
-	mat = gl_ModelViewMatrix * mat;
+	mat = modelview_matrix * mat;
 	
-	vec3 pos = (mat*gl_Vertex).xyz;
+	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
 	
 	
-	vec3 n = normalize((mat * vec4(gl_Normal.xyz+gl_Vertex.xyz, 1.0)).xyz-pos.xyz);
-	vec3 b = normalize((mat * vec4(gl_MultiTexCoord2.xyz+gl_Vertex.xyz, 1.0)).xyz-pos.xyz);
+	vec3 n = normalize((mat * vec4(normal.xyz+position.xyz, 1.0)).xyz-pos.xyz);
+	vec3 b = normalize((mat * vec4(vec4(texcoord2,0,1).xyz+position.xyz, 1.0)).xyz-pos.xyz);
 	vec3 t = cross(b, n);
 	
 	vary_mat0 = vec3(t.x, b.x, n.x);
 	vary_mat1 = vec3(t.y, b.y, n.y);
 	vary_mat2 = vec3(t.z, b.z, n.z);
 	
-	gl_Position = gl_ProjectionMatrix*vec4(pos, 1.0);
-	gl_FrontColor = gl_Color;
+	gl_Position = projection_matrix*vec4(pos, 1.0);
+	vertex_color = diffuse_color;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl b/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl
index 92fd41554db63f0ce9290a1ae7c70aa978279100..c8d38bb8f74e72dd4ad681f1fb43b94cec2f6b00 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/bumpV.glsl
@@ -22,26 +22,36 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
 
-varying vec3 vary_mat0;
-varying vec3 vary_mat1;
-varying vec3 vary_mat2;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 binormal;
+
+VARYING vec3 vary_mat0;
+VARYING vec3 vary_mat1;
+VARYING vec3 vary_mat2;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform(); 
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0); 
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
 	
-	vec3 n = normalize(gl_NormalMatrix * gl_Normal);
-	vec3 b = normalize(gl_NormalMatrix * gl_MultiTexCoord2.xyz);
+	vec3 n = normalize(normal_matrix * normal);
+	vec3 b = normalize(normal_matrix * binormal);
 	vec3 t = cross(b, n);
 	
 	vary_mat0 = vec3(t.x, b.x, n.x);
 	vary_mat1 = vec3(t.y, b.y, n.y);
 	vary_mat2 = vec3(t.z, b.z, n.z);
 	
-	gl_FrontColor = gl_Color;
+	vertex_color = diffuse_color;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
index f4310dae958796b181a132ff98192ffabad5ebe5..db272cf601efe783fc0f3a280d07824ab1f29e6a 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsF.glsl
@@ -24,20 +24,28 @@
  */
  
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
 
 /////////////////////////////////////////////////////////////////////////
 // The fragment shader for the sky
 /////////////////////////////////////////////////////////////////////////
 
-varying vec4 vary_CloudColorSun;
-varying vec4 vary_CloudColorAmbient;
-varying float vary_CloudDensity;
+VARYING vec4 vary_CloudColorSun;
+VARYING vec4 vary_CloudColorAmbient;
+VARYING float vary_CloudDensity;
 
 uniform sampler2D cloud_noise_texture;
 uniform vec4 cloud_pos_density1;
 uniform vec4 cloud_pos_density2;
 uniform vec4 gamma;
 
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
+VARYING vec2 vary_texcoord2;
+VARYING vec2 vary_texcoord3;
+
 /// Soft clips the light with a gamma correction
 vec3 scaleSoftClip(vec3 light) {
 	//soft clip effect:
@@ -50,14 +58,14 @@ vec3 scaleSoftClip(vec3 light) {
 void main()
 {
 	// Set variables
-	vec2 uv1 = gl_TexCoord[0].xy;
-	vec2 uv2 = gl_TexCoord[1].xy;
+	vec2 uv1 = vary_texcoord0.xy;
+	vec2 uv2 = vary_texcoord1.xy;
 
 	vec4 cloudColorSun = vary_CloudColorSun;
 	vec4 cloudColorAmbient = vary_CloudColorAmbient;
 	float cloudDensity = vary_CloudDensity;
-	vec2 uv3 = gl_TexCoord[2].xy;
-	vec2 uv4 = gl_TexCoord[3].xy;
+	vec2 uv3 = vary_texcoord2.xy;
+	vec2 uv4 = vary_texcoord3.xy;
 
 	// Offset texture coords
 	uv1 += cloud_pos_density1.xy;	//large texture, visible density
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl
index c175a834c23386c0e5c866fdf0aaf57efd74b078..64e094e3c5b13e1e6d3e8c627a5d2b8efd451477 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/cloudsV.glsl
@@ -22,17 +22,25 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
 
 //////////////////////////////////////////////////////////////////////////
 // The vertex shader for creating the atmospheric sky
 ///////////////////////////////////////////////////////////////////////////////
 
 // Output parameters
-varying vec4 vary_CloudColorSun;
-varying vec4 vary_CloudColorAmbient;
-varying float vary_CloudDensity;
+VARYING vec4 vary_CloudColorSun;
+VARYING vec4 vary_CloudColorAmbient;
+VARYING float vary_CloudDensity;
+
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
+VARYING vec2 vary_texcoord2;
+VARYING vec2 vary_texcoord3;
 
 // Inputs
 uniform vec3 camPosLocal;
@@ -59,12 +67,12 @@ void main()
 {
 
 	// World / view / projection
-	gl_Position = ftransform();
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
 
-	gl_TexCoord[0] = gl_MultiTexCoord0;
+	vary_texcoord0 = texcoord0;
 
 	// Get relative position
-	vec3 P = gl_Vertex.xyz - camPosLocal.xyz + vec3(0,50,0);
+	vec3 P = position.xyz - camPosLocal.xyz + vec3(0,50,0);
 
 	// Set altitude
 	if (P.y > 0.)
@@ -160,17 +168,17 @@ void main()
 
 
 	// Texture coords
-	gl_TexCoord[0] = gl_MultiTexCoord0;
-	gl_TexCoord[0].xy -= 0.5;
-	gl_TexCoord[0].xy /= cloud_scale.x;
-	gl_TexCoord[0].xy += 0.5;
+	vary_texcoord0 = texcoord0;
+	vary_texcoord0.xy -= 0.5;
+	vary_texcoord0.xy /= cloud_scale.x;
+	vary_texcoord0.xy += 0.5;
 
-	gl_TexCoord[1] = gl_TexCoord[0];
-	gl_TexCoord[1].x += lightnorm.x * 0.0125;
-	gl_TexCoord[1].y += lightnorm.z * 0.0125;
+	vary_texcoord1 = vary_texcoord0;
+	vary_texcoord1.x += lightnorm.x * 0.0125;
+	vary_texcoord1.y += lightnorm.z * 0.0125;
 
-	gl_TexCoord[2] = gl_TexCoord[0] * 16.;
-	gl_TexCoord[3] = gl_TexCoord[1] * 16.;
+	vary_texcoord2 = vary_texcoord0 * 16.;
+	vary_texcoord3 = vary_texcoord1 * 16.;
 
 	// Combine these to minimize register use
 	vary_CloudColorAmbient += oHazeColorBelowCloud;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..e612efba61ffd5a570d1218b2099886a18ca7b29
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl
@@ -0,0 +1,88 @@
+/** 
+ * @file cofF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2DRect diffuseRect;
+uniform sampler2DRect depthMap;
+uniform sampler2D bloomMap;
+
+uniform float depth_cutoff;
+uniform float norm_cutoff;
+uniform float focal_distance;
+uniform float blur_constant;
+uniform float tan_pixel_angle;
+uniform float magnification;
+uniform float max_cof;
+
+uniform mat4 inv_proj;
+uniform vec2 screen_res;
+
+VARYING vec2 vary_fragcoord;
+
+float getDepth(vec2 pos_screen)
+{
+	float z = texture2DRect(depthMap, pos_screen.xy).r;
+	z = z*2.0-1.0;
+	vec4 ndc = vec4(0.0, 0.0, z, 1.0);
+	vec4 p = inv_proj*ndc;
+	return p.z/p.w;
+}
+
+float calc_cof(float depth)
+{
+	float sc = (depth-focal_distance)/-depth*blur_constant;
+		
+	sc /= magnification;
+	
+	// tan_pixel_angle = pixel_length/-depth;
+	float pixel_length =  tan_pixel_angle*-focal_distance;
+	
+	sc = sc/pixel_length;
+	sc *= 1.414;
+	
+	return sc;
+}
+
+void main() 
+{
+	vec2 tc = vary_fragcoord.xy;
+	
+	float depth = getDepth(tc);
+	
+	vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy);
+	
+	float sc = calc_cof(depth);
+	sc = min(sc, max_cof);
+	sc = max(sc, -max_cof);
+	
+	vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
+	gl_FragColor.rgb = diff.rgb + bloom.rgb;
+	gl_FragColor.a = sc/max_cof*0.5+0.5;
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl
index 933e50fed148d8808782596e86dfd27a0bf2fb64..e9989a4e4893ef9163aa232e1aa2fe6d65fc64b4 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskF.glsl
@@ -1,5 +1,5 @@
 /** 
- * @file diffuseF.glsl
+ * @file diffuseAlphaMaskF.glsl
  *
  * $LicenseInfo:firstyear=2011&license=viewerlgpl$
  * Second Life Viewer Source Code
@@ -22,20 +22,24 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
 
 uniform float minimum_alpha;
-uniform float maximum_alpha;
 
 uniform sampler2D diffuseMap;
 
-varying vec3 vary_normal;
+VARYING vec3 vary_normal;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 void main() 
 {
-	vec4 col = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color;
+	vec4 col = texture2D(diffuseMap, vary_texcoord0.xy) * vertex_color;
 	
-	if (col.a < minimum_alpha || col.a > maximum_alpha)
+	if (col.a < minimum_alpha)
 	{
 		discard;
 	}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl
index f3ad6f92de58686a6bdf79d7f7a3b40fa04a6a24..fdf8d72b38f8ddac681a71645790ea13e6672b78 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskIndexedF.glsl
@@ -22,17 +22,23 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
-varying vec3 vary_normal;
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
+
+VARYING vec3 vary_normal;
 
 uniform float minimum_alpha;
-uniform float maximum_alpha;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 void main() 
 {
-	vec4 col = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
+	vec4 col = diffuseLookup(vary_texcoord0.xy) * vertex_color;
 	
-	if (col.a < minimum_alpha || col.a > maximum_alpha)
+	if (col.a < minimum_alpha)
 	{
 		discard;
 	}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..bb20e2ca476ae6c4a141ce3420a0566bb0a5a017
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseAlphaMaskNoColorF.glsl
@@ -0,0 +1,52 @@
+/** 
+ * @file diffuseAlphaMaskNoColorF.glsl
+ *
+ * $LicenseInfo:firstyear=2005&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2005, 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$
+ */
+ 
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
+
+uniform float minimum_alpha;
+
+uniform sampler2D diffuseMap;
+
+VARYING vec3 vary_normal;
+VARYING vec2 vary_texcoord0;
+
+void main() 
+{
+	vec4 col = texture2D(diffuseMap, vary_texcoord0.xy);
+	
+	if (col.a < minimum_alpha)
+	{
+		discard;
+	}
+
+	gl_FragData[0] = vec4(col.rgb, 0.0);
+	gl_FragData[1] = vec4(0,0,0,0); // spec
+	vec3 nvn = normalize(vary_normal);
+	gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl
index 9c9a8b56c59085b950fe7d8201c25133fceff97a..7bde49eb86b9b647af9631f3f076ff7ab3283143 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseF.glsl
@@ -23,18 +23,22 @@
  * $/LicenseInfo$
  */
  
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
 
 uniform sampler2D diffuseMap;
 
-varying vec3 vary_normal;
+VARYING vec3 vary_normal;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 void main() 
 {
-	vec3 col = gl_Color.rgb * texture2D(diffuseMap, gl_TexCoord[0].xy).rgb;
+	vec3 col = vertex_color.rgb * texture2D(diffuseMap, vary_texcoord0.xy).rgb;
 	gl_FragData[0] = vec4(col, 0.0);
-	gl_FragData[1] = gl_Color.aaaa; // spec
-	//gl_FragData[1] = vec4(vec3(gl_Color.a), gl_Color.a+(1.0-gl_Color.a)*gl_Color.a); // spec - from former class3 - maybe better, but not so well tested
+	gl_FragData[1] = vertex_color.aaaa; // spec
+	//gl_FragData[1] = vec4(vec3(vertex_color.a), vertex_color.a+(1.0-vertex_color.a)*vertex_color.a); // spec - from former class3 - maybe better, but not so well tested
 	vec3 nvn = normalize(vary_normal);
 	gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl
index 4d996a099dcfdf00edff08c4d2b1436af1c94134..75b45111e0e40247ab1abdde7f93eded58f45c98 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseIndexedF.glsl
@@ -22,16 +22,22 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
-varying vec3 vary_normal;
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
+
+VARYING vec3 vary_normal;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 void main() 
 {
-	vec3 col = gl_Color.rgb * diffuseLookup(gl_TexCoord[0].xy).rgb;
+	vec3 col = vertex_color.rgb * diffuseLookup(vary_texcoord0.xy).rgb;
 
 	gl_FragData[0] = vec4(col, 0.0);
-	gl_FragData[1] = gl_Color.aaaa; // spec
-	//gl_FragData[1] = vec4(vec3(gl_Color.a), gl_Color.a+(1.0-gl_Color.a)*gl_Color.a); // spec - from former class3 - maybe better, but not so well tested
+	gl_FragData[1] = vertex_color.aaaa; // spec
+	//gl_FragData[1] = vec4(vec3(vertex_color.a), vertex_color.a+(1.0-vertex_color.a)*vertex_color.a); // spec - from former class3 - maybe better, but not so well tested
 	vec3 nvn = normalize(vary_normal);
 	gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..9461e3e32e52ee78d018925fd0c7d936932dfd96
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseNoColorV.glsl
@@ -0,0 +1,45 @@
+/** 
+ * @file diffuseNoColorV.glsl
+ *
+  * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix; 
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec3 vary_normal;
+
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+	//transform vertex
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0); 
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+	
+	vary_normal = normalize(normal_matrix * normal);
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl
index 1470d7c9ca8bcbfbf4427f8e8acd0712fe03ab13..a74290bfcd0c60ba2f123e535f862ed017e18f62 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseSkinnedV.glsl
@@ -22,29 +22,38 @@
  * $/LicenseInfo$
  */
 
+uniform mat4 projection_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
 
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
 
-varying vec3 vary_normal;
+VARYING vec3 vary_normal;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 mat4 getObjectSkinnedTransform();
 
 void main()
 {
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
 	
 	mat4 mat = getObjectSkinnedTransform();
 	
-	mat = gl_ModelViewMatrix * mat;
-	vec3 pos = (mat*gl_Vertex).xyz;
+	mat = modelview_matrix * mat;
+	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
 	
-	vec4 norm = gl_Vertex;
-	norm.xyz += gl_Normal.xyz;
+	vec4 norm = vec4(position.xyz, 1.0);
+	norm.xyz += normal.xyz;
 	norm.xyz = (mat*norm).xyz;
 	norm.xyz = normalize(norm.xyz-pos.xyz);
 
 	vary_normal = norm.xyz;
 			
-	gl_FrontColor = gl_Color;
+	vertex_color = diffuse_color;
 	
-	gl_Position = gl_ProjectionMatrix*vec4(pos, 1.0);
+	gl_Position = projection_matrix*vec4(pos, 1.0);
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl
index 7c5a4d35b380e05fb85e63b1db9684c9c521892e..76d29b1df7dce0986ccdbe508f33cd13a42b1fdd 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/diffuseV.glsl
@@ -22,20 +22,31 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
 
-varying vec3 vary_normal;
-varying float vary_texture_index;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec3 vary_normal;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void passTextureIndex();
 
 void main()
 {
 	//transform vertex
-	gl_Position = gl_ModelViewProjectionMatrix * vec4(gl_Vertex.xyz, 1.0); 
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0); 
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
 	
-	vary_texture_index = gl_Vertex.w;
-	vary_normal = normalize(gl_NormalMatrix * gl_Normal);
+	passTextureIndex();
+	vary_normal = normalize(normal_matrix * normal);
 
-	gl_FrontColor = gl_Color;
+	vertex_color = diffuse_color;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl b/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..01e3505359f98ccb6c11bb76fd91d61392b7bdf6
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/dofCombineF.glsl
@@ -0,0 +1,67 @@
+/** 
+ * @file dofCombineF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2DRect diffuseRect;
+uniform sampler2DRect lightMap;
+
+uniform mat4 inv_proj;
+uniform vec2 screen_res;
+
+uniform float max_cof;
+uniform float res_scale;
+
+VARYING vec2 vary_fragcoord;
+
+void main() 
+{
+	vec2 tc = vary_fragcoord.xy;
+	
+	vec4 dof = texture2DRect(diffuseRect, vary_fragcoord.xy*res_scale);
+	
+	vec4 diff = texture2DRect(lightMap, vary_fragcoord.xy);
+
+	float a = min(abs(diff.a*2.0-1.0) * max_cof*res_scale*res_scale, 1.0);
+
+	if (a > 0.25 && a < 0.75)
+	{ //help out the transition a bit
+		float sc = a/res_scale;
+		
+		vec4 col;
+		col = texture2DRect(lightMap, vary_fragcoord.xy+vec2(sc,sc));
+		col += texture2DRect(lightMap, vary_fragcoord.xy+vec2(-sc,sc));
+		col += texture2DRect(lightMap, vary_fragcoord.xy+vec2(sc,-sc));
+		col += texture2DRect(lightMap, vary_fragcoord.xy+vec2(-sc,-sc));
+		
+		diff = mix(diff, col*0.25, a);
+	}
+
+	gl_FragColor = mix(diff, dof, a);
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl b/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..92f78125d840a56cee60026fca694c68c4a81fde
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/emissiveF.glsl
@@ -0,0 +1,50 @@
+/** 
+ * @file emissiveF.glsl
+ *
+ * $LicenseInfo:firstyear=2005&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2005, 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$
+ */
+ 
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void main() 
+{
+	float shadow = 1.0;
+
+	vec4 color = diffuseLookup(vary_texcoord0.xy)*vertex_color;
+	
+	color.rgb = fullbrightAtmosTransport(color.rgb);
+
+	color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+	gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..115b04797f8a1bfc346cc14057f08d77f9d47d82
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/emissiveV.glsl
@@ -0,0 +1,63 @@
+/** 
+ * @file emissiveV.glsl
+ *
+  * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec4 emissive;
+ATTRIBUTE vec2 texcoord0;
+
+void calcAtmospherics(vec3 inPositionEye);
+
+vec3 atmosAmbient(vec3 light);
+vec3 atmosAffectDirectionalLight(float lightIntensity);
+vec3 scaleDownLight(vec3 light);
+vec3 scaleUpLight(vec3 light);
+
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
+void main()
+{
+	//transform vertex
+	vec4 vert = vec4(position.xyz, 1.0);
+	vec4 pos = (modelview_matrix * vert);
+	passTextureIndex();
+
+	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+	
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+	
+	calcAtmospherics(pos.xyz);
+	
+	vertex_color = emissive;
+
+	
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
index 6c506676afd2ced5770dc4cefad12a8ce8f824ca..84ae2f9f109f180a6ab49a71bf75a57cbd2d1ea4 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightF.glsl
@@ -23,9 +23,14 @@
  * $/LicenseInfo$
  */
  
+#extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
-#extension GL_ARB_texture_rectangle : enable
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 vec3 fullbrightAtmosTransport(vec3 light);
 vec3 fullbrightScaleSoftClip(vec3 light);
@@ -35,7 +40,7 @@ void main()
 {
 	float shadow = 1.0;
 
-	vec4 color = diffuseLookup(gl_TexCoord[0].xy)*gl_Color;
+	vec4 color = diffuseLookup(vary_texcoord0.xy)*vertex_color;
 	
 	color.rgb = fullbrightAtmosTransport(color.rgb);
 
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl
index a4ff0b80e2df9b14fb601d032a3f1a30c6350c32..2e6982d101791c337bb96c3775a40cdd0912a821 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/fullbrightV.glsl
@@ -22,8 +22,16 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
 
 void calcAtmospherics(vec3 inPositionEye);
 
@@ -32,23 +40,25 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
 vec3 scaleDownLight(vec3 light);
 vec3 scaleUpLight(vec3 light);
 
-varying float vary_texture_index;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 
 void main()
 {
 	//transform vertex
-	vec4 vert = vec4(gl_Vertex.xyz, 1.0);
-	vary_texture_index = gl_Vertex.w;
+	vec4 vert = vec4(position.xyz, 1.0);
+	vec4 pos = (modelview_matrix * vert);
+	passTextureIndex();
 
-	gl_Position = gl_ModelViewProjectionMatrix*vert; 
+	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
 	
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
 	
-	vec4 pos = (gl_ModelViewMatrix * vert);
-				
 	calcAtmospherics(pos.xyz);
 	
-	gl_FrontColor = gl_Color;
+	vertex_color = diffuse_color;
 
-	gl_FogFragCoord = pos.z;
+	
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl b/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..5af94064526d59ab9faaa5b92a8e53cbf5d8a889
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/fxaaF.glsl
@@ -0,0 +1,2118 @@
+/** 
+ * @file fxaaF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+ 
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+#define FXAA_PC 1
+//#define FXAA_GLSL_130 1
+#define FXAA_QUALITY__PRESET 12
+
+/*============================================================================
+
+
+                    NVIDIA FXAA 3.11 by TIMOTHY LOTTES
+
+
+------------------------------------------------------------------------------
+COPYRIGHT (C) 2010, 2011 NVIDIA CORPORATION. ALL RIGHTS RESERVED.
+------------------------------------------------------------------------------
+TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
+*AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA
+OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR
+CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR
+LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION,
+OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR INABILITY TO USE
+THIS SOFTWARE, EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+------------------------------------------------------------------------------
+                           INTEGRATION CHECKLIST
+------------------------------------------------------------------------------
+(1.)
+In the shader source, setup defines for the desired configuration.
+When providing multiple shaders (for different presets),
+simply setup the defines differently in multiple files.
+Example,
+
+  #define FXAA_PC 1
+  #define FXAA_HLSL_5 1
+  #define FXAA_QUALITY__PRESET 12
+
+Or,
+
+  #define FXAA_360 1
+  
+Or,
+
+  #define FXAA_PS3 1
+  
+Etc.
+
+(2.)
+Then include this file,
+
+  #include "Fxaa3_11.h"
+
+(3.)
+Then call the FXAA pixel shader from within your desired shader.
+Look at the FXAA Quality FxaaPixelShader() for docs on inputs.
+As for FXAA 3.11 all inputs for all shaders are the same 
+to enable easy porting between platforms.
+
+  return FxaaPixelShader(...);
+
+(4.)
+Insure pass prior to FXAA outputs RGBL (see next section).
+Or use,
+
+  #define FXAA_GREEN_AS_LUMA 1
+
+(5.)
+Setup engine to provide the following constants
+which are used in the FxaaPixelShader() inputs,
+
+  FxaaFloat2 fxaaQualityRcpFrame,
+  FxaaFloat4 fxaaConsoleRcpFrameOpt,
+  FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+  FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+  FxaaFloat fxaaQualitySubpix,
+  FxaaFloat fxaaQualityEdgeThreshold,
+  FxaaFloat fxaaQualityEdgeThresholdMin,
+  FxaaFloat fxaaConsoleEdgeSharpness,
+  FxaaFloat fxaaConsoleEdgeThreshold,
+  FxaaFloat fxaaConsoleEdgeThresholdMin,
+  FxaaFloat4 fxaaConsole360ConstDir
+
+Look at the FXAA Quality FxaaPixelShader() for docs on inputs.
+
+(6.)
+Have FXAA vertex shader run as a full screen triangle,
+and output "pos" and "fxaaConsolePosPos" 
+such that inputs in the pixel shader provide,
+
+  // {xy} = center of pixel
+  FxaaFloat2 pos,
+
+  // {xy__} = upper left of pixel
+  // {__zw} = lower right of pixel
+  FxaaFloat4 fxaaConsolePosPos,
+
+(7.)
+Insure the texture sampler(s) used by FXAA are set to bilinear filtering.
+
+
+------------------------------------------------------------------------------
+                    INTEGRATION - RGBL AND COLORSPACE
+------------------------------------------------------------------------------
+FXAA3 requires RGBL as input unless the following is set, 
+
+  #define FXAA_GREEN_AS_LUMA 1
+
+In which case the engine uses green in place of luma,
+and requires RGB input is in a non-linear colorspace.
+
+RGB should be LDR (low dynamic range).
+Specifically do FXAA after tonemapping.
+
+RGB data as returned by a texture fetch can be non-linear,
+or linear when FXAA_GREEN_AS_LUMA is not set.
+Note an "sRGB format" texture counts as linear,
+because the result of a texture fetch is linear data.
+Regular "RGBA8" textures in the sRGB colorspace are non-linear.
+
+If FXAA_GREEN_AS_LUMA is not set,
+luma must be stored in the alpha channel prior to running FXAA.
+This luma should be in a perceptual space (could be gamma 2.0).
+Example pass before FXAA where output is gamma 2.0 encoded,
+
+  color.rgb = ToneMap(color.rgb); // linear color output
+  color.rgb = sqrt(color.rgb);    // gamma 2.0 color output
+  return color;
+
+To use FXAA,
+
+  color.rgb = ToneMap(color.rgb);  // linear color output
+  color.rgb = sqrt(color.rgb);     // gamma 2.0 color output
+  color.a = dot(color.rgb, FxaaFloat3(0.299, 0.587, 0.114)); // compute luma
+  return color;
+
+Another example where output is linear encoded,
+say for instance writing to an sRGB formated render target,
+where the render target does the conversion back to sRGB after blending,
+
+  color.rgb = ToneMap(color.rgb); // linear color output
+  return color;
+
+To use FXAA,
+
+  color.rgb = ToneMap(color.rgb); // linear color output
+  color.a = sqrt(dot(color.rgb, FxaaFloat3(0.299, 0.587, 0.114))); // compute luma
+  return color;
+
+Getting luma correct is required for the algorithm to work correctly.
+
+
+------------------------------------------------------------------------------
+                          BEING LINEARLY CORRECT?
+------------------------------------------------------------------------------
+Applying FXAA to a framebuffer with linear RGB color will look worse.
+This is very counter intuitive, but happends to be true in this case.
+The reason is because dithering artifacts will be more visiable 
+in a linear colorspace.
+
+
+------------------------------------------------------------------------------
+                             COMPLEX INTEGRATION
+------------------------------------------------------------------------------
+Q. What if the engine is blending into RGB before wanting to run FXAA?
+
+A. In the last opaque pass prior to FXAA,
+   have the pass write out luma into alpha.
+   Then blend into RGB only.
+   FXAA should be able to run ok
+   assuming the blending pass did not any add aliasing.
+   This should be the common case for particles and common blending passes.
+
+A. Or use FXAA_GREEN_AS_LUMA.
+
+============================================================================*/
+
+/*============================================================================
+
+                             INTEGRATION KNOBS
+
+============================================================================*/
+//
+// FXAA_PS3 and FXAA_360 choose the console algorithm (FXAA3 CONSOLE).
+// FXAA_360_OPT is a prototype for the new optimized 360 version.
+//
+// 1 = Use API.
+// 0 = Don't use API.
+//
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_PS3
+    #define FXAA_PS3 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_360
+    #define FXAA_360 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_360_OPT
+    #define FXAA_360_OPT 0
+#endif
+/*==========================================================================*/
+#ifndef FXAA_PC
+    //
+    // FXAA Quality
+    // The high quality PC algorithm.
+    //
+    #define FXAA_PC 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_PC_CONSOLE
+    //
+    // The console algorithm for PC is included
+    // for developers targeting really low spec machines.
+    // Likely better to just run FXAA_PC, and use a really low preset.
+    //
+    #define FXAA_PC_CONSOLE 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_GLSL_120
+    #define FXAA_GLSL_120 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_GLSL_130
+    #define FXAA_GLSL_130 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_HLSL_3
+    #define FXAA_HLSL_3 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_HLSL_4
+    #define FXAA_HLSL_4 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_HLSL_5
+    #define FXAA_HLSL_5 0
+#endif
+/*==========================================================================*/
+#ifndef FXAA_GREEN_AS_LUMA
+    //
+    // For those using non-linear color,
+    // and either not able to get luma in alpha, or not wanting to,
+    // this enables FXAA to run using green as a proxy for luma.
+    // So with this enabled, no need to pack luma in alpha.
+    //
+    // This will turn off AA on anything which lacks some amount of green.
+    // Pure red and blue or combination of only R and B, will get no AA.
+    //
+    // Might want to lower the settings for both,
+    //    fxaaConsoleEdgeThresholdMin
+    //    fxaaQualityEdgeThresholdMin
+    // In order to insure AA does not get turned off on colors 
+    // which contain a minor amount of green.
+    //
+    // 1 = On.
+    // 0 = Off.
+    //
+    #define FXAA_GREEN_AS_LUMA 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_EARLY_EXIT
+    //
+    // Controls algorithm's early exit path.
+    // On PS3 turning this ON adds 2 cycles to the shader.
+    // On 360 turning this OFF adds 10ths of a millisecond to the shader.
+    // Turning this off on console will result in a more blurry image.
+    // So this defaults to on.
+    //
+    // 1 = On.
+    // 0 = Off.
+    //
+    #define FXAA_EARLY_EXIT 1
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_DISCARD
+    //
+    // Only valid for PC OpenGL currently.
+    // Probably will not work when FXAA_GREEN_AS_LUMA = 1.
+    //
+    // 1 = Use discard on pixels which don't need AA.
+    //     For APIs which enable concurrent TEX+ROP from same surface.
+    // 0 = Return unchanged color on pixels which don't need AA.
+    //
+    #define FXAA_DISCARD 0
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_FAST_PIXEL_OFFSET
+    //
+    // Used for GLSL 120 only.
+    //
+    // 1 = GL API supports fast pixel offsets
+    // 0 = do not use fast pixel offsets
+    //
+    #ifdef GL_EXT_gpu_shader4
+        #define FXAA_FAST_PIXEL_OFFSET 1
+    #endif
+    #ifdef GL_NV_gpu_shader5
+        #define FXAA_FAST_PIXEL_OFFSET 1
+    #endif
+    #ifdef GL_ARB_gpu_shader5
+        #define FXAA_FAST_PIXEL_OFFSET 1
+    #endif
+    #ifndef FXAA_FAST_PIXEL_OFFSET
+        #define FXAA_FAST_PIXEL_OFFSET 0
+    #endif
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_GATHER4_ALPHA
+    //
+    // 1 = API supports gather4 on alpha channel.
+    // 0 = API does not support gather4 on alpha channel.
+    //
+    #if (FXAA_HLSL_5 == 1)
+        #define FXAA_GATHER4_ALPHA 1
+    #endif
+    #ifdef GL_ARB_gpu_shader5
+        #define FXAA_GATHER4_ALPHA 1
+    #endif
+    #ifdef GL_NV_gpu_shader5
+        #define FXAA_GATHER4_ALPHA 1
+    #endif
+    #ifndef FXAA_GATHER4_ALPHA
+        #define FXAA_GATHER4_ALPHA 0
+    #endif
+#endif
+
+/*============================================================================
+                      FXAA CONSOLE PS3 - TUNING KNOBS
+============================================================================*/
+#ifndef FXAA_CONSOLE__PS3_EDGE_SHARPNESS
+    //
+    // Consoles the sharpness of edges on PS3 only.
+    // Non-PS3 tuning is done with shader input.
+    //
+    // Due to the PS3 being ALU bound,
+    // there are only two safe values here: 4 and 8.
+    // These options use the shaders ability to a free *|/ by 2|4|8.
+    //
+    // 8.0 is sharper
+    // 4.0 is softer
+    // 2.0 is really soft (good for vector graphics inputs)
+    //
+    #if 1
+        #define FXAA_CONSOLE__PS3_EDGE_SHARPNESS 8.0
+    #endif
+    #if 0
+        #define FXAA_CONSOLE__PS3_EDGE_SHARPNESS 4.0
+    #endif
+    #if 0
+        #define FXAA_CONSOLE__PS3_EDGE_SHARPNESS 2.0
+    #endif
+#endif
+/*--------------------------------------------------------------------------*/
+#ifndef FXAA_CONSOLE__PS3_EDGE_THRESHOLD
+    //
+    // Only effects PS3.
+    // Non-PS3 tuning is done with shader input.
+    //
+    // The minimum amount of local contrast required to apply algorithm.
+    // The console setting has a different mapping than the quality setting.
+    //
+    // This only applies when FXAA_EARLY_EXIT is 1.
+    //
+    // Due to the PS3 being ALU bound,
+    // there are only two safe values here: 0.25 and 0.125.
+    // These options use the shaders ability to a free *|/ by 2|4|8.
+    //
+    // 0.125 leaves less aliasing, but is softer
+    // 0.25 leaves more aliasing, and is sharper
+    //
+    #if 1
+        #define FXAA_CONSOLE__PS3_EDGE_THRESHOLD 0.125
+    #else
+        #define FXAA_CONSOLE__PS3_EDGE_THRESHOLD 0.25
+    #endif
+#endif
+
+/*============================================================================
+                        FXAA QUALITY - TUNING KNOBS
+------------------------------------------------------------------------------
+NOTE the other tuning knobs are now in the shader function inputs!
+============================================================================*/
+#ifndef FXAA_QUALITY__PRESET
+    //
+    // Choose the quality preset.
+    // This needs to be compiled into the shader as it effects code.
+    // Best option to include multiple presets is to 
+    // in each shader define the preset, then include this file.
+    // 
+    // OPTIONS
+    // -----------------------------------------------------------------------
+    // 10 to 15 - default medium dither (10=fastest, 15=highest quality)
+    // 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality)
+    // 39       - no dither, very expensive 
+    //
+    // NOTES
+    // -----------------------------------------------------------------------
+    // 12 = slightly faster then FXAA 3.9 and higher edge quality (default)
+    // 13 = about same speed as FXAA 3.9 and better than 12
+    // 23 = closest to FXAA 3.9 visually and performance wise
+    //  _ = the lowest digit is directly related to performance
+    // _  = the highest digit is directly related to style
+    // 
+    #define FXAA_QUALITY__PRESET 12
+#endif
+
+
+/*============================================================================
+
+                           FXAA QUALITY - PRESETS
+
+============================================================================*/
+
+/*============================================================================
+                     FXAA QUALITY - MEDIUM DITHER PRESETS
+============================================================================*/
+#if (FXAA_QUALITY__PRESET == 10)
+    #define FXAA_QUALITY__PS 3
+    #define FXAA_QUALITY__P0 1.5
+    #define FXAA_QUALITY__P1 3.0
+    #define FXAA_QUALITY__P2 12.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 11)
+    #define FXAA_QUALITY__PS 4
+    #define FXAA_QUALITY__P0 1.0
+    #define FXAA_QUALITY__P1 1.5
+    #define FXAA_QUALITY__P2 3.0
+    #define FXAA_QUALITY__P3 12.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 12)
+    #define FXAA_QUALITY__PS 5
+    #define FXAA_QUALITY__P0 1.0
+    #define FXAA_QUALITY__P1 1.5
+    #define FXAA_QUALITY__P2 2.0
+    #define FXAA_QUALITY__P3 4.0
+    #define FXAA_QUALITY__P4 12.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 13)
+    #define FXAA_QUALITY__PS 6
+    #define FXAA_QUALITY__P0 1.0
+    #define FXAA_QUALITY__P1 1.5
+    #define FXAA_QUALITY__P2 2.0
+    #define FXAA_QUALITY__P3 2.0
+    #define FXAA_QUALITY__P4 4.0
+    #define FXAA_QUALITY__P5 12.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 14)
+    #define FXAA_QUALITY__PS 7
+    #define FXAA_QUALITY__P0 1.0
+    #define FXAA_QUALITY__P1 1.5
+    #define FXAA_QUALITY__P2 2.0
+    #define FXAA_QUALITY__P3 2.0
+    #define FXAA_QUALITY__P4 2.0
+    #define FXAA_QUALITY__P5 4.0
+    #define FXAA_QUALITY__P6 12.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 15)
+    #define FXAA_QUALITY__PS 8
+    #define FXAA_QUALITY__P0 1.0
+    #define FXAA_QUALITY__P1 1.5
+    #define FXAA_QUALITY__P2 2.0
+    #define FXAA_QUALITY__P3 2.0
+    #define FXAA_QUALITY__P4 2.0
+    #define FXAA_QUALITY__P5 2.0
+    #define FXAA_QUALITY__P6 4.0
+    #define FXAA_QUALITY__P7 12.0
+#endif
+
+/*============================================================================
+                     FXAA QUALITY - LOW DITHER PRESETS
+============================================================================*/
+#if (FXAA_QUALITY__PRESET == 20)
+    #define FXAA_QUALITY__PS 3
+    #define FXAA_QUALITY__P0 1.5
+    #define FXAA_QUALITY__P1 2.0
+    #define FXAA_QUALITY__P2 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 21)
+    #define FXAA_QUALITY__PS 4
+    #define FXAA_QUALITY__P0 1.0
+    #define FXAA_QUALITY__P1 1.5
+    #define FXAA_QUALITY__P2 2.0
+    #define FXAA_QUALITY__P3 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 22)
+    #define FXAA_QUALITY__PS 5
+    #define FXAA_QUALITY__P0 1.0
+    #define FXAA_QUALITY__P1 1.5
+    #define FXAA_QUALITY__P2 2.0
+    #define FXAA_QUALITY__P3 2.0
+    #define FXAA_QUALITY__P4 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 23)
+    #define FXAA_QUALITY__PS 6
+    #define FXAA_QUALITY__P0 1.0
+    #define FXAA_QUALITY__P1 1.5
+    #define FXAA_QUALITY__P2 2.0
+    #define FXAA_QUALITY__P3 2.0
+    #define FXAA_QUALITY__P4 2.0
+    #define FXAA_QUALITY__P5 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 24)
+    #define FXAA_QUALITY__PS 7
+    #define FXAA_QUALITY__P0 1.0
+    #define FXAA_QUALITY__P1 1.5
+    #define FXAA_QUALITY__P2 2.0
+    #define FXAA_QUALITY__P3 2.0
+    #define FXAA_QUALITY__P4 2.0
+    #define FXAA_QUALITY__P5 3.0
+    #define FXAA_QUALITY__P6 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 25)
+    #define FXAA_QUALITY__PS 8
+    #define FXAA_QUALITY__P0 1.0
+    #define FXAA_QUALITY__P1 1.5
+    #define FXAA_QUALITY__P2 2.0
+    #define FXAA_QUALITY__P3 2.0
+    #define FXAA_QUALITY__P4 2.0
+    #define FXAA_QUALITY__P5 2.0
+    #define FXAA_QUALITY__P6 4.0
+    #define FXAA_QUALITY__P7 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 26)
+    #define FXAA_QUALITY__PS 9
+    #define FXAA_QUALITY__P0 1.0
+    #define FXAA_QUALITY__P1 1.5
+    #define FXAA_QUALITY__P2 2.0
+    #define FXAA_QUALITY__P3 2.0
+    #define FXAA_QUALITY__P4 2.0
+    #define FXAA_QUALITY__P5 2.0
+    #define FXAA_QUALITY__P6 2.0
+    #define FXAA_QUALITY__P7 4.0
+    #define FXAA_QUALITY__P8 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 27)
+    #define FXAA_QUALITY__PS 10
+    #define FXAA_QUALITY__P0 1.0
+    #define FXAA_QUALITY__P1 1.5
+    #define FXAA_QUALITY__P2 2.0
+    #define FXAA_QUALITY__P3 2.0
+    #define FXAA_QUALITY__P4 2.0
+    #define FXAA_QUALITY__P5 2.0
+    #define FXAA_QUALITY__P6 2.0
+    #define FXAA_QUALITY__P7 2.0
+    #define FXAA_QUALITY__P8 4.0
+    #define FXAA_QUALITY__P9 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 28)
+    #define FXAA_QUALITY__PS 11
+    #define FXAA_QUALITY__P0 1.0
+    #define FXAA_QUALITY__P1 1.5
+    #define FXAA_QUALITY__P2 2.0
+    #define FXAA_QUALITY__P3 2.0
+    #define FXAA_QUALITY__P4 2.0
+    #define FXAA_QUALITY__P5 2.0
+    #define FXAA_QUALITY__P6 2.0
+    #define FXAA_QUALITY__P7 2.0
+    #define FXAA_QUALITY__P8 2.0
+    #define FXAA_QUALITY__P9 4.0
+    #define FXAA_QUALITY__P10 8.0
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_QUALITY__PRESET == 29)
+    #define FXAA_QUALITY__PS 12
+    #define FXAA_QUALITY__P0 1.0
+    #define FXAA_QUALITY__P1 1.5
+    #define FXAA_QUALITY__P2 2.0
+    #define FXAA_QUALITY__P3 2.0
+    #define FXAA_QUALITY__P4 2.0
+    #define FXAA_QUALITY__P5 2.0
+    #define FXAA_QUALITY__P6 2.0
+    #define FXAA_QUALITY__P7 2.0
+    #define FXAA_QUALITY__P8 2.0
+    #define FXAA_QUALITY__P9 2.0
+    #define FXAA_QUALITY__P10 4.0
+    #define FXAA_QUALITY__P11 8.0
+#endif
+
+/*============================================================================
+                     FXAA QUALITY - EXTREME QUALITY
+============================================================================*/
+#if (FXAA_QUALITY__PRESET == 39)
+    #define FXAA_QUALITY__PS 12
+    #define FXAA_QUALITY__P0 1.0
+    #define FXAA_QUALITY__P1 1.0
+    #define FXAA_QUALITY__P2 1.0
+    #define FXAA_QUALITY__P3 1.0
+    #define FXAA_QUALITY__P4 1.0
+    #define FXAA_QUALITY__P5 1.5
+    #define FXAA_QUALITY__P6 2.0
+    #define FXAA_QUALITY__P7 2.0
+    #define FXAA_QUALITY__P8 2.0
+    #define FXAA_QUALITY__P9 2.0
+    #define FXAA_QUALITY__P10 4.0
+    #define FXAA_QUALITY__P11 8.0
+#endif
+
+
+
+/*============================================================================
+
+                                API PORTING
+
+============================================================================*/
+#if (FXAA_GLSL_120 == 1) || (FXAA_GLSL_130 == 1)
+    #define FxaaBool bool
+    #define FxaaDiscard discard
+    #define FxaaFloat float
+    #define FxaaFloat2 vec2
+    #define FxaaFloat3 vec3
+    #define FxaaFloat4 vec4
+    #define FxaaHalf float
+    #define FxaaHalf2 vec2
+    #define FxaaHalf3 vec3
+    #define FxaaHalf4 vec4
+    #define FxaaInt2 ivec2
+    #define FxaaSat(x) clamp(x, 0.0, 1.0)
+    #define FxaaTex sampler2D
+#else
+    #define FxaaBool bool
+    #define FxaaDiscard clip(-1)
+    #define FxaaFloat float
+    #define FxaaFloat2 float2
+    #define FxaaFloat3 float3
+    #define FxaaFloat4 float4
+    #define FxaaHalf half
+    #define FxaaHalf2 half2
+    #define FxaaHalf3 half3
+    #define FxaaHalf4 half4
+    #define FxaaSat(x) saturate(x)
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_GLSL_120 == 1)
+    // Requires,
+    //  #version 120
+    // And at least,
+    //  #extension GL_EXT_gpu_shader4 : enable
+    //  (or set FXAA_FAST_PIXEL_OFFSET 1 to work like DX9)
+    #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0)
+    #if (FXAA_FAST_PIXEL_OFFSET == 1)
+        #define FxaaTexOff(t, p, o, r) texture2DLodOffset(t, p, 0.0, o)
+    #else
+        #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0)
+    #endif
+    #if (FXAA_GATHER4_ALPHA == 1)
+        // use #extension GL_ARB_gpu_shader5 : enable
+        #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)
+        #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)
+        #define FxaaTexGreen4(t, p) textureGather(t, p, 1)
+        #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)
+    #endif
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_GLSL_130 == 1)
+    // Requires "#version 130" or better
+    #define FxaaTexTop(t, p) textureLod(t, p, 0.0)
+    #define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)
+    #if (FXAA_GATHER4_ALPHA == 1)
+        // use #extension GL_ARB_gpu_shader5 : enable
+        #define FxaaTexAlpha4(t, p) textureGather(t, p, 3)
+        #define FxaaTexOffAlpha4(t, p, o) textureGatherOffset(t, p, o, 3)
+        #define FxaaTexGreen4(t, p) textureGather(t, p, 1)
+        #define FxaaTexOffGreen4(t, p, o) textureGatherOffset(t, p, o, 1)
+    #endif
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_HLSL_3 == 1) || (FXAA_360 == 1) || (FXAA_PS3 == 1)
+    #define FxaaInt2 float2
+    #define FxaaTex sampler2D
+    #define FxaaTexTop(t, p) tex2Dlod(t, float4(p, 0.0, 0.0))
+    #define FxaaTexOff(t, p, o, r) tex2Dlod(t, float4(p + (o * r), 0, 0))
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_HLSL_4 == 1)
+    #define FxaaInt2 int2
+    struct FxaaTex { SamplerState smpl; Texture2D tex; };
+    #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)
+    #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)
+#endif
+/*--------------------------------------------------------------------------*/
+#if (FXAA_HLSL_5 == 1)
+    #define FxaaInt2 int2
+    struct FxaaTex { SamplerState smpl; Texture2D tex; };
+    #define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)
+    #define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)
+    #define FxaaTexAlpha4(t, p) t.tex.GatherAlpha(t.smpl, p)
+    #define FxaaTexOffAlpha4(t, p, o) t.tex.GatherAlpha(t.smpl, p, o)
+    #define FxaaTexGreen4(t, p) t.tex.GatherGreen(t.smpl, p)
+    #define FxaaTexOffGreen4(t, p, o) t.tex.GatherGreen(t.smpl, p, o)
+#endif
+
+
+/*============================================================================
+                   GREEN AS LUMA OPTION SUPPORT FUNCTION
+============================================================================*/
+#if (FXAA_GREEN_AS_LUMA == 0)
+    FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.w; }
+#else
+    FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }
+#endif    
+
+
+
+
+/*============================================================================
+
+                             FXAA3 QUALITY - PC
+
+============================================================================*/
+#if (FXAA_PC == 1)
+/*--------------------------------------------------------------------------*/
+FxaaFloat4 FxaaPixelShader(
+    //
+    // Use noperspective interpolation here (turn off perspective interpolation).
+    // {xy} = center of pixel
+    FxaaFloat2 pos,
+    //
+    // Used only for FXAA Console, and not used on the 360 version.
+    // Use noperspective interpolation here (turn off perspective interpolation).
+    // {xy__} = upper left of pixel
+    // {__zw} = lower right of pixel
+    FxaaFloat4 fxaaConsolePosPos,
+    //
+    // Input color texture.
+    // {rgb_} = color in linear or perceptual color space
+    // if (FXAA_GREEN_AS_LUMA == 0)
+    //     {___a} = luma in perceptual color space (not linear)
+    FxaaTex tex,
+    //
+    // Only used on the optimized 360 version of FXAA Console.
+    // For everything but 360, just use the same input here as for "tex".
+    // For 360, same texture, just alias with a 2nd sampler.
+    // This sampler needs to have an exponent bias of -1.
+    FxaaTex fxaaConsole360TexExpBiasNegOne,
+    //
+    // Only used on the optimized 360 version of FXAA Console.
+    // For everything but 360, just use the same input here as for "tex".
+    // For 360, same texture, just alias with a 3nd sampler.
+    // This sampler needs to have an exponent bias of -2.
+    FxaaTex fxaaConsole360TexExpBiasNegTwo,
+    //
+    // Only used on FXAA Quality.
+    // This must be from a constant/uniform.
+    // {x_} = 1.0/screenWidthInPixels
+    // {_y} = 1.0/screenHeightInPixels
+    FxaaFloat2 fxaaQualityRcpFrame,
+    //
+    // Only used on FXAA Console.
+    // This must be from a constant/uniform.
+    // This effects sub-pixel AA quality and inversely sharpness.
+    //   Where N ranges between,
+    //     N = 0.50 (default)
+    //     N = 0.33 (sharper)
+    // {x___} = -N/screenWidthInPixels  
+    // {_y__} = -N/screenHeightInPixels
+    // {__z_} =  N/screenWidthInPixels  
+    // {___w} =  N/screenHeightInPixels 
+    FxaaFloat4 fxaaConsoleRcpFrameOpt,
+    //
+    // Only used on FXAA Console.
+    // Not used on 360, but used on PS3 and PC.
+    // This must be from a constant/uniform.
+    // {x___} = -2.0/screenWidthInPixels  
+    // {_y__} = -2.0/screenHeightInPixels
+    // {__z_} =  2.0/screenWidthInPixels  
+    // {___w} =  2.0/screenHeightInPixels 
+    FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+    //
+    // Only used on FXAA Console.
+    // Only used on 360 in place of fxaaConsoleRcpFrameOpt2.
+    // This must be from a constant/uniform.
+    // {x___} =  8.0/screenWidthInPixels  
+    // {_y__} =  8.0/screenHeightInPixels
+    // {__z_} = -4.0/screenWidthInPixels  
+    // {___w} = -4.0/screenHeightInPixels 
+    FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+    //
+    // Only used on FXAA Quality.
+    // This used to be the FXAA_QUALITY__SUBPIX define.
+    // It is here now to allow easier tuning.
+    // Choose the amount of sub-pixel aliasing removal.
+    // This can effect sharpness.
+    //   1.00 - upper limit (softer)
+    //   0.75 - default amount of filtering
+    //   0.50 - lower limit (sharper, less sub-pixel aliasing removal)
+    //   0.25 - almost off
+    //   0.00 - completely off
+    FxaaFloat fxaaQualitySubpix,
+    //
+    // Only used on FXAA Quality.
+    // This used to be the FXAA_QUALITY__EDGE_THRESHOLD define.
+    // It is here now to allow easier tuning.
+    // The minimum amount of local contrast required to apply algorithm.
+    //   0.333 - too little (faster)
+    //   0.250 - low quality
+    //   0.166 - default
+    //   0.125 - high quality 
+    //   0.063 - overkill (slower)
+    FxaaFloat fxaaQualityEdgeThreshold,
+    //
+    // Only used on FXAA Quality.
+    // This used to be the FXAA_QUALITY__EDGE_THRESHOLD_MIN define.
+    // It is here now to allow easier tuning.
+    // Trims the algorithm from processing darks.
+    //   0.0833 - upper limit (default, the start of visible unfiltered edges)
+    //   0.0625 - high quality (faster)
+    //   0.0312 - visible limit (slower)
+    // Special notes when using FXAA_GREEN_AS_LUMA,
+    //   Likely want to set this to zero.
+    //   As colors that are mostly not-green
+    //   will appear very dark in the green channel!
+    //   Tune by looking at mostly non-green content,
+    //   then start at zero and increase until aliasing is a problem.
+    FxaaFloat fxaaQualityEdgeThresholdMin,
+    // 
+    // Only used on FXAA Console.
+    // This used to be the FXAA_CONSOLE__EDGE_SHARPNESS define.
+    // It is here now to allow easier tuning.
+    // This does not effect PS3, as this needs to be compiled in.
+    //   Use FXAA_CONSOLE__PS3_EDGE_SHARPNESS for PS3.
+    //   Due to the PS3 being ALU bound,
+    //   there are only three safe values here: 2 and 4 and 8.
+    //   These options use the shaders ability to a free *|/ by 2|4|8.
+    // For all other platforms can be a non-power of two.
+    //   8.0 is sharper (default!!!)
+    //   4.0 is softer
+    //   2.0 is really soft (good only for vector graphics inputs)
+    FxaaFloat fxaaConsoleEdgeSharpness,
+    //
+    // Only used on FXAA Console.
+    // This used to be the FXAA_CONSOLE__EDGE_THRESHOLD define.
+    // It is here now to allow easier tuning.
+    // This does not effect PS3, as this needs to be compiled in.
+    //   Use FXAA_CONSOLE__PS3_EDGE_THRESHOLD for PS3.
+    //   Due to the PS3 being ALU bound,
+    //   there are only two safe values here: 1/4 and 1/8.
+    //   These options use the shaders ability to a free *|/ by 2|4|8.
+    // The console setting has a different mapping than the quality setting.
+    // Other platforms can use other values.
+    //   0.125 leaves less aliasing, but is softer (default!!!)
+    //   0.25 leaves more aliasing, and is sharper
+    FxaaFloat fxaaConsoleEdgeThreshold,
+    //
+    // Only used on FXAA Console.
+    // This used to be the FXAA_CONSOLE__EDGE_THRESHOLD_MIN define.
+    // It is here now to allow easier tuning.
+    // Trims the algorithm from processing darks.
+    // The console setting has a different mapping than the quality setting.
+    // This only applies when FXAA_EARLY_EXIT is 1.
+    // This does not apply to PS3, 
+    // PS3 was simplified to avoid more shader instructions.
+    //   0.06 - faster but more aliasing in darks
+    //   0.05 - default
+    //   0.04 - slower and less aliasing in darks
+    // Special notes when using FXAA_GREEN_AS_LUMA,
+    //   Likely want to set this to zero.
+    //   As colors that are mostly not-green
+    //   will appear very dark in the green channel!
+    //   Tune by looking at mostly non-green content,
+    //   then start at zero and increase until aliasing is a problem.
+    FxaaFloat fxaaConsoleEdgeThresholdMin,
+    //    
+    // Extra constants for 360 FXAA Console only.
+    // Use zeros or anything else for other platforms.
+    // These must be in physical constant registers and NOT immedates.
+    // Immedates will result in compiler un-optimizing.
+    // {xyzw} = float4(1.0, -1.0, 0.25, -0.25)
+    FxaaFloat4 fxaaConsole360ConstDir
+) {
+/*--------------------------------------------------------------------------*/
+    FxaaFloat2 posM;
+    posM.x = pos.x;
+    posM.y = pos.y;
+    #if (FXAA_GATHER4_ALPHA == 1)
+        #if (FXAA_DISCARD == 0)
+            FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);
+            #if (FXAA_GREEN_AS_LUMA == 0)
+                #define lumaM rgbyM.w
+            #else
+                #define lumaM rgbyM.y
+            #endif
+        #endif
+        #if (FXAA_GREEN_AS_LUMA == 0)
+            FxaaFloat4 luma4A = FxaaTexAlpha4(tex, posM);
+            FxaaFloat4 luma4B = FxaaTexOffAlpha4(tex, posM, FxaaInt2(-1, -1));
+        #else
+            FxaaFloat4 luma4A = FxaaTexGreen4(tex, posM);
+            FxaaFloat4 luma4B = FxaaTexOffGreen4(tex, posM, FxaaInt2(-1, -1));
+        #endif
+        #if (FXAA_DISCARD == 1)
+            #define lumaM luma4A.w
+        #endif
+        #define lumaE luma4A.z
+        #define lumaS luma4A.x
+        #define lumaSE luma4A.y
+        #define lumaNW luma4B.w
+        #define lumaN luma4B.z
+        #define lumaW luma4B.x
+    #else
+        FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);
+        #if (FXAA_GREEN_AS_LUMA == 0)
+            #define lumaM rgbyM.w
+        #else
+            #define lumaM rgbyM.y
+        #endif
+        FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));
+        FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));
+        FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));
+        FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));
+    #endif
+/*--------------------------------------------------------------------------*/
+    FxaaFloat maxSM = max(lumaS, lumaM);
+    FxaaFloat minSM = min(lumaS, lumaM);
+    FxaaFloat maxESM = max(lumaE, maxSM);
+    FxaaFloat minESM = min(lumaE, minSM);
+    FxaaFloat maxWN = max(lumaN, lumaW);
+    FxaaFloat minWN = min(lumaN, lumaW);
+    FxaaFloat rangeMax = max(maxWN, maxESM);
+    FxaaFloat rangeMin = min(minWN, minESM);
+    FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold;
+    FxaaFloat range = rangeMax - rangeMin;
+    FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled);
+    FxaaBool earlyExit = range < rangeMaxClamped;
+/*--------------------------------------------------------------------------*/
+    if(earlyExit)
+        #if (FXAA_DISCARD == 1)
+            FxaaDiscard;
+        #else
+            return rgbyM;
+        #endif
+/*--------------------------------------------------------------------------*/
+    #if (FXAA_GATHER4_ALPHA == 0)
+        FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy));
+        FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy));
+        FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy));
+        FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));
+    #else
+        FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(1, -1), fxaaQualityRcpFrame.xy));
+        FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));
+    #endif
+/*--------------------------------------------------------------------------*/
+    FxaaFloat lumaNS = lumaN + lumaS;
+    FxaaFloat lumaWE = lumaW + lumaE;
+    FxaaFloat subpixRcpRange = 1.0/range;
+    FxaaFloat subpixNSWE = lumaNS + lumaWE;
+    FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS;
+    FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE;
+/*--------------------------------------------------------------------------*/
+    FxaaFloat lumaNESE = lumaNE + lumaSE;
+    FxaaFloat lumaNWNE = lumaNW + lumaNE;
+    FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;
+    FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;
+/*--------------------------------------------------------------------------*/
+    FxaaFloat lumaNWSW = lumaNW + lumaSW;
+    FxaaFloat lumaSWSE = lumaSW + lumaSE;
+    FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);
+    FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);
+    FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;
+    FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE;
+    FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4;
+    FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4;
+/*--------------------------------------------------------------------------*/
+    FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;
+    FxaaFloat lengthSign = fxaaQualityRcpFrame.x;
+    FxaaBool horzSpan = edgeHorz >= edgeVert;
+    FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;
+/*--------------------------------------------------------------------------*/
+    if(!horzSpan) lumaN = lumaW;
+    if(!horzSpan) lumaS = lumaE;
+    if(horzSpan) lengthSign = fxaaQualityRcpFrame.y;
+    FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM;
+/*--------------------------------------------------------------------------*/
+    FxaaFloat gradientN = lumaN - lumaM;
+    FxaaFloat gradientS = lumaS - lumaM;
+    FxaaFloat lumaNN = lumaN + lumaM;
+    FxaaFloat lumaSS = lumaS + lumaM;
+    FxaaBool pairN = abs(gradientN) >= abs(gradientS);
+    FxaaFloat gradient = max(abs(gradientN), abs(gradientS));
+    if(pairN) lengthSign = -lengthSign;
+    FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);
+/*--------------------------------------------------------------------------*/
+    FxaaFloat2 posB;
+    posB.x = posM.x;
+    posB.y = posM.y;
+    FxaaFloat2 offNP;
+    offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;
+    offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;
+    if(!horzSpan) posB.x += lengthSign * 0.5;
+    if( horzSpan) posB.y += lengthSign * 0.5;
+/*--------------------------------------------------------------------------*/
+    FxaaFloat2 posN;
+    posN.x = posB.x - offNP.x * FXAA_QUALITY__P0;
+    posN.y = posB.y - offNP.y * FXAA_QUALITY__P0;
+    FxaaFloat2 posP;
+    posP.x = posB.x + offNP.x * FXAA_QUALITY__P0;
+    posP.y = posB.y + offNP.y * FXAA_QUALITY__P0;
+    FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0;
+    FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));
+    FxaaFloat subpixE = subpixC * subpixC;
+    FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));
+/*--------------------------------------------------------------------------*/
+    if(!pairN) lumaNN = lumaSS;
+    FxaaFloat gradientScaled = gradient * 1.0/4.0;
+    FxaaFloat lumaMM = lumaM - lumaNN * 0.5;
+    FxaaFloat subpixF = subpixD * subpixE;
+    FxaaBool lumaMLTZero = lumaMM < 0.0;
+/*--------------------------------------------------------------------------*/
+    lumaEndN -= lumaNN * 0.5;
+    lumaEndP -= lumaNN * 0.5;
+    FxaaBool doneN = abs(lumaEndN) >= gradientScaled;
+    FxaaBool doneP = abs(lumaEndP) >= gradientScaled;
+    if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P1;
+    if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P1;
+    FxaaBool doneNP = (!doneN) || (!doneP);
+    if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P1;
+    if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P1;
+/*--------------------------------------------------------------------------*/
+    if(doneNP) {
+        if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+        if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+        if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+        if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+        doneN = abs(lumaEndN) >= gradientScaled;
+        doneP = abs(lumaEndP) >= gradientScaled;
+        if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P2;
+        if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P2;
+        doneNP = (!doneN) || (!doneP);
+        if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P2;
+        if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P2;
+/*--------------------------------------------------------------------------*/
+        #if (FXAA_QUALITY__PS > 3)
+        if(doneNP) {
+            if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+            if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+            if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+            if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+            doneN = abs(lumaEndN) >= gradientScaled;
+            doneP = abs(lumaEndP) >= gradientScaled;
+            if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P3;
+            if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P3;
+            doneNP = (!doneN) || (!doneP);
+            if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P3;
+            if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P3;
+/*--------------------------------------------------------------------------*/
+            #if (FXAA_QUALITY__PS > 4)
+            if(doneNP) {
+                if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+                if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+                if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+                if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+                doneN = abs(lumaEndN) >= gradientScaled;
+                doneP = abs(lumaEndP) >= gradientScaled;
+                if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P4;
+                if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P4;
+                doneNP = (!doneN) || (!doneP);
+                if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P4;
+                if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P4;
+/*--------------------------------------------------------------------------*/
+                #if (FXAA_QUALITY__PS > 5)
+                if(doneNP) {
+                    if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+                    if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+                    if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+                    if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+                    doneN = abs(lumaEndN) >= gradientScaled;
+                    doneP = abs(lumaEndP) >= gradientScaled;
+                    if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P5;
+                    if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P5;
+                    doneNP = (!doneN) || (!doneP);
+                    if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P5;
+                    if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P5;
+/*--------------------------------------------------------------------------*/
+                    #if (FXAA_QUALITY__PS > 6)
+                    if(doneNP) {
+                        if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+                        if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+                        if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+                        if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+                        doneN = abs(lumaEndN) >= gradientScaled;
+                        doneP = abs(lumaEndP) >= gradientScaled;
+                        if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P6;
+                        if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P6;
+                        doneNP = (!doneN) || (!doneP);
+                        if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P6;
+                        if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P6;
+/*--------------------------------------------------------------------------*/
+                        #if (FXAA_QUALITY__PS > 7)
+                        if(doneNP) {
+                            if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+                            if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+                            if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+                            if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+                            doneN = abs(lumaEndN) >= gradientScaled;
+                            doneP = abs(lumaEndP) >= gradientScaled;
+                            if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P7;
+                            if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P7;
+                            doneNP = (!doneN) || (!doneP);
+                            if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P7;
+                            if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P7;
+/*--------------------------------------------------------------------------*/
+    #if (FXAA_QUALITY__PS > 8)
+    if(doneNP) {
+        if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+        if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+        if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+        if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+        doneN = abs(lumaEndN) >= gradientScaled;
+        doneP = abs(lumaEndP) >= gradientScaled;
+        if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P8;
+        if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P8;
+        doneNP = (!doneN) || (!doneP);
+        if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P8;
+        if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P8;
+/*--------------------------------------------------------------------------*/
+        #if (FXAA_QUALITY__PS > 9)
+        if(doneNP) {
+            if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+            if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+            if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+            if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+            doneN = abs(lumaEndN) >= gradientScaled;
+            doneP = abs(lumaEndP) >= gradientScaled;
+            if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P9;
+            if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P9;
+            doneNP = (!doneN) || (!doneP);
+            if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P9;
+            if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P9;
+/*--------------------------------------------------------------------------*/
+            #if (FXAA_QUALITY__PS > 10)
+            if(doneNP) {
+                if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+                if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+                if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+                if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+                doneN = abs(lumaEndN) >= gradientScaled;
+                doneP = abs(lumaEndP) >= gradientScaled;
+                if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P10;
+                if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P10;
+                doneNP = (!doneN) || (!doneP);
+                if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P10;
+                if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P10;
+/*--------------------------------------------------------------------------*/
+                #if (FXAA_QUALITY__PS > 11)
+                if(doneNP) {
+                    if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+                    if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+                    if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+                    if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+                    doneN = abs(lumaEndN) >= gradientScaled;
+                    doneP = abs(lumaEndP) >= gradientScaled;
+                    if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P11;
+                    if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P11;
+                    doneNP = (!doneN) || (!doneP);
+                    if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P11;
+                    if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P11;
+/*--------------------------------------------------------------------------*/
+                    #if (FXAA_QUALITY__PS > 12)
+                    if(doneNP) {
+                        if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
+                        if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
+                        if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
+                        if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
+                        doneN = abs(lumaEndN) >= gradientScaled;
+                        doneP = abs(lumaEndP) >= gradientScaled;
+                        if(!doneN) posN.x -= offNP.x * FXAA_QUALITY__P12;
+                        if(!doneN) posN.y -= offNP.y * FXAA_QUALITY__P12;
+                        doneNP = (!doneN) || (!doneP);
+                        if(!doneP) posP.x += offNP.x * FXAA_QUALITY__P12;
+                        if(!doneP) posP.y += offNP.y * FXAA_QUALITY__P12;
+/*--------------------------------------------------------------------------*/
+                    }
+                    #endif
+/*--------------------------------------------------------------------------*/
+                }
+                #endif
+/*--------------------------------------------------------------------------*/
+            }
+            #endif
+/*--------------------------------------------------------------------------*/
+        }
+        #endif
+/*--------------------------------------------------------------------------*/
+    }
+    #endif
+/*--------------------------------------------------------------------------*/
+                        }
+                        #endif
+/*--------------------------------------------------------------------------*/
+                    }
+                    #endif
+/*--------------------------------------------------------------------------*/
+                }
+                #endif
+/*--------------------------------------------------------------------------*/
+            }
+            #endif
+/*--------------------------------------------------------------------------*/
+        }
+        #endif
+/*--------------------------------------------------------------------------*/
+    }
+/*--------------------------------------------------------------------------*/
+    FxaaFloat dstN = posM.x - posN.x;
+    FxaaFloat dstP = posP.x - posM.x;
+    if(!horzSpan) dstN = posM.y - posN.y;
+    if(!horzSpan) dstP = posP.y - posM.y;
+/*--------------------------------------------------------------------------*/
+    FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;
+    FxaaFloat spanLength = (dstP + dstN);
+    FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;
+    FxaaFloat spanLengthRcp = 1.0/spanLength;
+/*--------------------------------------------------------------------------*/
+    FxaaBool directionN = dstN < dstP;
+    FxaaFloat dst = min(dstN, dstP);
+    FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP;
+    FxaaFloat subpixG = subpixF * subpixF;
+    FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5;
+    FxaaFloat subpixH = subpixG * fxaaQualitySubpix;
+/*--------------------------------------------------------------------------*/
+    FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0;
+    FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH);
+    if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;
+    if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;
+    #if (FXAA_DISCARD == 1)
+        return FxaaTexTop(tex, posM);
+    #else
+        return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM);
+    #endif
+}
+/*==========================================================================*/
+#endif
+
+
+
+
+/*============================================================================
+
+                         FXAA3 CONSOLE - PC VERSION
+                         
+------------------------------------------------------------------------------
+Instead of using this on PC, I'd suggest just using FXAA Quality with
+    #define FXAA_QUALITY__PRESET 10
+Or 
+    #define FXAA_QUALITY__PRESET 20
+Either are higher qualilty and almost as fast as this on modern PC GPUs.
+============================================================================*/
+#if (FXAA_PC_CONSOLE == 1)
+/*--------------------------------------------------------------------------*/
+FxaaFloat4 FxaaPixelShader(
+    // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
+    FxaaFloat2 pos,
+    FxaaFloat4 fxaaConsolePosPos,
+    FxaaTex tex,
+    FxaaTex fxaaConsole360TexExpBiasNegOne,
+    FxaaTex fxaaConsole360TexExpBiasNegTwo,
+    FxaaFloat2 fxaaQualityRcpFrame,
+    FxaaFloat4 fxaaConsoleRcpFrameOpt,
+    FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+    FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+    FxaaFloat fxaaQualitySubpix,
+    FxaaFloat fxaaQualityEdgeThreshold,
+    FxaaFloat fxaaQualityEdgeThresholdMin,
+    FxaaFloat fxaaConsoleEdgeSharpness,
+    FxaaFloat fxaaConsoleEdgeThreshold,
+    FxaaFloat fxaaConsoleEdgeThresholdMin,
+    FxaaFloat4 fxaaConsole360ConstDir
+) {
+/*--------------------------------------------------------------------------*/
+    FxaaFloat lumaNw = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.xy));
+    FxaaFloat lumaSw = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.xw));
+    FxaaFloat lumaNe = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.zy));
+    FxaaFloat lumaSe = FxaaLuma(FxaaTexTop(tex, fxaaConsolePosPos.zw));
+/*--------------------------------------------------------------------------*/
+    FxaaFloat4 rgbyM = FxaaTexTop(tex, pos.xy);
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        FxaaFloat lumaM = rgbyM.w;
+    #else
+        FxaaFloat lumaM = rgbyM.y;
+    #endif
+/*--------------------------------------------------------------------------*/
+    FxaaFloat lumaMaxNwSw = max(lumaNw, lumaSw);
+    lumaNe += 1.0/384.0;
+    FxaaFloat lumaMinNwSw = min(lumaNw, lumaSw);
+/*--------------------------------------------------------------------------*/
+    FxaaFloat lumaMaxNeSe = max(lumaNe, lumaSe);
+    FxaaFloat lumaMinNeSe = min(lumaNe, lumaSe);
+/*--------------------------------------------------------------------------*/
+    FxaaFloat lumaMax = max(lumaMaxNeSe, lumaMaxNwSw);
+    FxaaFloat lumaMin = min(lumaMinNeSe, lumaMinNwSw);
+/*--------------------------------------------------------------------------*/
+    FxaaFloat lumaMaxScaled = lumaMax * fxaaConsoleEdgeThreshold;
+/*--------------------------------------------------------------------------*/
+    FxaaFloat lumaMinM = min(lumaMin, lumaM);
+    FxaaFloat lumaMaxScaledClamped = max(fxaaConsoleEdgeThresholdMin, lumaMaxScaled);
+    FxaaFloat lumaMaxM = max(lumaMax, lumaM);
+    FxaaFloat dirSwMinusNe = lumaSw - lumaNe;
+    FxaaFloat lumaMaxSubMinM = lumaMaxM - lumaMinM;
+    FxaaFloat dirSeMinusNw = lumaSe - lumaNw;
+    if(lumaMaxSubMinM < lumaMaxScaledClamped) return rgbyM;
+/*--------------------------------------------------------------------------*/
+    FxaaFloat2 dir;
+    dir.x = dirSwMinusNe + dirSeMinusNw;
+    dir.y = dirSwMinusNe - dirSeMinusNw;
+/*--------------------------------------------------------------------------*/
+    FxaaFloat2 dir1 = normalize(dir.xy);
+    FxaaFloat4 rgbyN1 = FxaaTexTop(tex, pos.xy - dir1 * fxaaConsoleRcpFrameOpt.zw);
+    FxaaFloat4 rgbyP1 = FxaaTexTop(tex, pos.xy + dir1 * fxaaConsoleRcpFrameOpt.zw);
+/*--------------------------------------------------------------------------*/
+    FxaaFloat dirAbsMinTimesC = min(abs(dir1.x), abs(dir1.y)) * fxaaConsoleEdgeSharpness;
+    FxaaFloat2 dir2 = clamp(dir1.xy / dirAbsMinTimesC, -2.0, 2.0);
+/*--------------------------------------------------------------------------*/
+    FxaaFloat4 rgbyN2 = FxaaTexTop(tex, pos.xy - dir2 * fxaaConsoleRcpFrameOpt2.zw);
+    FxaaFloat4 rgbyP2 = FxaaTexTop(tex, pos.xy + dir2 * fxaaConsoleRcpFrameOpt2.zw);
+/*--------------------------------------------------------------------------*/
+    FxaaFloat4 rgbyA = rgbyN1 + rgbyP1;
+    FxaaFloat4 rgbyB = ((rgbyN2 + rgbyP2) * 0.25) + (rgbyA * 0.25);
+/*--------------------------------------------------------------------------*/
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        FxaaBool twoTap = (rgbyB.w < lumaMin) || (rgbyB.w > lumaMax);
+    #else
+        FxaaBool twoTap = (rgbyB.y < lumaMin) || (rgbyB.y > lumaMax);
+    #endif
+    if(twoTap) rgbyB.xyz = rgbyA.xyz * 0.5;
+    return rgbyB; }
+/*==========================================================================*/
+#endif
+
+
+
+/*============================================================================
+
+                      FXAA3 CONSOLE - 360 PIXEL SHADER 
+
+------------------------------------------------------------------------------
+This optimized version thanks to suggestions from Andy Luedke.
+Should be fully tex bound in all cases.
+As of the FXAA 3.11 release, I have still not tested this code,
+however I fixed a bug which was in both FXAA 3.9 and FXAA 3.10.
+And note this is replacing the old unoptimized version.
+If it does not work, please let me know so I can fix it.
+============================================================================*/
+#if (FXAA_360 == 1)
+/*--------------------------------------------------------------------------*/
+[reduceTempRegUsage(4)]
+float4 FxaaPixelShader(
+    // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
+    FxaaFloat2 pos,
+    FxaaFloat4 fxaaConsolePosPos,
+    FxaaTex tex,
+    FxaaTex fxaaConsole360TexExpBiasNegOne,
+    FxaaTex fxaaConsole360TexExpBiasNegTwo,
+    FxaaFloat2 fxaaQualityRcpFrame,
+    FxaaFloat4 fxaaConsoleRcpFrameOpt,
+    FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+    FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+    FxaaFloat fxaaQualitySubpix,
+    FxaaFloat fxaaQualityEdgeThreshold,
+    FxaaFloat fxaaQualityEdgeThresholdMin,
+    FxaaFloat fxaaConsoleEdgeSharpness,
+    FxaaFloat fxaaConsoleEdgeThreshold,
+    FxaaFloat fxaaConsoleEdgeThresholdMin,
+    FxaaFloat4 fxaaConsole360ConstDir
+) {
+/*--------------------------------------------------------------------------*/
+    float4 lumaNwNeSwSe;
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        asm { 
+            tfetch2D lumaNwNeSwSe.w___, tex, pos.xy, OffsetX = -0.5, OffsetY = -0.5, UseComputedLOD=false
+            tfetch2D lumaNwNeSwSe._w__, tex, pos.xy, OffsetX =  0.5, OffsetY = -0.5, UseComputedLOD=false
+            tfetch2D lumaNwNeSwSe.__w_, tex, pos.xy, OffsetX = -0.5, OffsetY =  0.5, UseComputedLOD=false
+            tfetch2D lumaNwNeSwSe.___w, tex, pos.xy, OffsetX =  0.5, OffsetY =  0.5, UseComputedLOD=false
+        };
+    #else
+        asm { 
+            tfetch2D lumaNwNeSwSe.y___, tex, pos.xy, OffsetX = -0.5, OffsetY = -0.5, UseComputedLOD=false
+            tfetch2D lumaNwNeSwSe._y__, tex, pos.xy, OffsetX =  0.5, OffsetY = -0.5, UseComputedLOD=false
+            tfetch2D lumaNwNeSwSe.__y_, tex, pos.xy, OffsetX = -0.5, OffsetY =  0.5, UseComputedLOD=false
+            tfetch2D lumaNwNeSwSe.___y, tex, pos.xy, OffsetX =  0.5, OffsetY =  0.5, UseComputedLOD=false
+        };
+    #endif
+/*--------------------------------------------------------------------------*/
+    lumaNwNeSwSe.y += 1.0/384.0;
+    float2 lumaMinTemp = min(lumaNwNeSwSe.xy, lumaNwNeSwSe.zw);
+    float2 lumaMaxTemp = max(lumaNwNeSwSe.xy, lumaNwNeSwSe.zw);
+    float lumaMin = min(lumaMinTemp.x, lumaMinTemp.y);
+    float lumaMax = max(lumaMaxTemp.x, lumaMaxTemp.y);
+/*--------------------------------------------------------------------------*/
+    float4 rgbyM = tex2Dlod(tex, float4(pos.xy, 0.0, 0.0));
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        float lumaMinM = min(lumaMin, rgbyM.w);
+        float lumaMaxM = max(lumaMax, rgbyM.w);
+    #else
+        float lumaMinM = min(lumaMin, rgbyM.y);
+        float lumaMaxM = max(lumaMax, rgbyM.y);
+    #endif        
+    if((lumaMaxM - lumaMinM) < max(fxaaConsoleEdgeThresholdMin, lumaMax * fxaaConsoleEdgeThreshold)) return rgbyM;
+/*--------------------------------------------------------------------------*/
+    float2 dir;
+    dir.x = dot(lumaNwNeSwSe, fxaaConsole360ConstDir.yyxx);
+    dir.y = dot(lumaNwNeSwSe, fxaaConsole360ConstDir.xyxy);
+    dir = normalize(dir);
+/*--------------------------------------------------------------------------*/
+    float4 dir1 = dir.xyxy * fxaaConsoleRcpFrameOpt.xyzw;
+/*--------------------------------------------------------------------------*/
+    float4 dir2;
+    float dirAbsMinTimesC = min(abs(dir.x), abs(dir.y)) * fxaaConsoleEdgeSharpness;
+    dir2 = saturate(fxaaConsole360ConstDir.zzww * dir.xyxy / dirAbsMinTimesC + 0.5);
+    dir2 = dir2 * fxaaConsole360RcpFrameOpt2.xyxy + fxaaConsole360RcpFrameOpt2.zwzw;
+/*--------------------------------------------------------------------------*/
+    float4 rgbyN1 = tex2Dlod(fxaaConsole360TexExpBiasNegOne, float4(pos.xy + dir1.xy, 0.0, 0.0));
+    float4 rgbyP1 = tex2Dlod(fxaaConsole360TexExpBiasNegOne, float4(pos.xy + dir1.zw, 0.0, 0.0));
+    float4 rgbyN2 = tex2Dlod(fxaaConsole360TexExpBiasNegTwo, float4(pos.xy + dir2.xy, 0.0, 0.0));
+    float4 rgbyP2 = tex2Dlod(fxaaConsole360TexExpBiasNegTwo, float4(pos.xy + dir2.zw, 0.0, 0.0));
+/*--------------------------------------------------------------------------*/
+    float4 rgbyA = rgbyN1 + rgbyP1;
+    float4 rgbyB = rgbyN2 + rgbyP2 * 0.5 + rgbyA;
+/*--------------------------------------------------------------------------*/
+    float4 rgbyR = ((rgbyB.w - lumaMax) > 0.0) ? rgbyA : rgbyB;
+    rgbyR = ((rgbyB.w - lumaMin) > 0.0) ? rgbyR : rgbyA;
+    return rgbyR; }
+/*==========================================================================*/
+#endif
+
+
+
+/*============================================================================
+
+         FXAA3 CONSOLE - OPTIMIZED PS3 PIXEL SHADER (NO EARLY EXIT)
+
+==============================================================================
+The code below does not exactly match the assembly.
+I have a feeling that 12 cycles is possible, but was not able to get there.
+Might have to increase register count to get full performance.
+Note this shader does not use perspective interpolation.
+
+Use the following cgc options,
+
+  --fenable-bx2 --fastmath --fastprecision --nofloatbindings
+
+------------------------------------------------------------------------------
+                             NVSHADERPERF OUTPUT
+------------------------------------------------------------------------------
+For reference and to aid in debug, output of NVShaderPerf should match this,
+
+Shader to schedule:
+  0: texpkb h0.w(TRUE), v5.zyxx, #0
+  2: addh h2.z(TRUE), h0.w, constant(0.001953, 0.000000, 0.000000, 0.000000).x
+  4: texpkb h0.w(TRUE), v5.xwxx, #0
+  6: addh h0.z(TRUE), -h2, h0.w
+  7: texpkb h1.w(TRUE), v5, #0
+  9: addh h0.x(TRUE), h0.z, -h1.w
+ 10: addh h3.w(TRUE), h0.z, h1
+ 11: texpkb h2.w(TRUE), v5.zwzz, #0
+ 13: addh h0.z(TRUE), h3.w, -h2.w
+ 14: addh h0.x(TRUE), h2.w, h0
+ 15: nrmh h1.xz(TRUE), h0_n
+ 16: minh_m8 h0.x(TRUE), |h1|, |h1.z|
+ 17: maxh h4.w(TRUE), h0, h1
+ 18: divx h2.xy(TRUE), h1_n.xzzw, h0_n
+ 19: movr r1.zw(TRUE), v4.xxxy
+ 20: madr r2.xz(TRUE), -h1, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).zzww, r1.zzww
+ 22: minh h5.w(TRUE), h0, h1
+ 23: texpkb h0(TRUE), r2.xzxx, #0
+ 25: madr r0.zw(TRUE), h1.xzxz, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w), r1
+ 27: maxh h4.x(TRUE), h2.z, h2.w
+ 28: texpkb h1(TRUE), r0.zwzz, #0
+ 30: addh_d2 h1(TRUE), h0, h1
+ 31: madr r0.xy(TRUE), -h2, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
+ 33: texpkb h0(TRUE), r0, #0
+ 35: minh h4.z(TRUE), h2, h2.w
+ 36: fenct TRUE
+ 37: madr r1.xy(TRUE), h2, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
+ 39: texpkb h2(TRUE), r1, #0
+ 41: addh_d2 h0(TRUE), h0, h2
+ 42: maxh h2.w(TRUE), h4, h4.x
+ 43: minh h2.x(TRUE), h5.w, h4.z
+ 44: addh_d2 h0(TRUE), h0, h1
+ 45: slth h2.x(TRUE), h0.w, h2
+ 46: sgth h2.w(TRUE), h0, h2
+ 47: movh h0(TRUE), h0
+ 48: addx.c0 rc(TRUE), h2, h2.w
+ 49: movh h0(c0.NE.x), h1
+
+IPU0 ------ Simplified schedule: --------
+Pass |  Unit  |  uOp |  PC:  Op
+-----+--------+------+-------------------------
+   1 | SCT0/1 |  mov |   0:  TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
+     |    TEX |  txl |   0:  TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
+     |   SCB1 |  add |   2:  ADDh h2.z, h0.--w-, const.--x-;
+     |        |      |
+   2 | SCT0/1 |  mov |   4:  TXLr h0.w, g[TEX1].xwxx, const.xxxx, TEX0;
+     |    TEX |  txl |   4:  TXLr h0.w, g[TEX1].xwxx, const.xxxx, TEX0;
+     |   SCB1 |  add |   6:  ADDh h0.z,-h2, h0.--w-;
+     |        |      |
+   3 | SCT0/1 |  mov |   7:  TXLr h1.w, g[TEX1], const.xxxx, TEX0;
+     |    TEX |  txl |   7:  TXLr h1.w, g[TEX1], const.xxxx, TEX0;
+     |   SCB0 |  add |   9:  ADDh h0.x, h0.z---,-h1.w---;
+     |   SCB1 |  add |  10:  ADDh h3.w, h0.---z, h1;
+     |        |      |
+   4 | SCT0/1 |  mov |  11:  TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
+     |    TEX |  txl |  11:  TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
+     |   SCB0 |  add |  14:  ADDh h0.x, h2.w---, h0;
+     |   SCB1 |  add |  13:  ADDh h0.z, h3.--w-,-h2.--w-;
+     |        |      |
+   5 |   SCT1 |  mov |  15:  NRMh h1.xz, h0;
+     |    SRB |  nrm |  15:  NRMh h1.xz, h0;
+     |   SCB0 |  min |  16:  MINh*8 h0.x, |h1|, |h1.z---|;
+     |   SCB1 |  max |  17:  MAXh h4.w, h0, h1;
+     |        |      |
+   6 |   SCT0 |  div |  18:  DIVx h2.xy, h1.xz--, h0;
+     |   SCT1 |  mov |  19:  MOVr r1.zw, g[TEX0].--xy;
+     |   SCB0 |  mad |  20:  MADr r2.xz,-h1, const.z-w-, r1.z-w-;
+     |   SCB1 |  min |  22:  MINh h5.w, h0, h1;
+     |        |      |
+   7 | SCT0/1 |  mov |  23:  TXLr h0, r2.xzxx, const.xxxx, TEX0;
+     |    TEX |  txl |  23:  TXLr h0, r2.xzxx, const.xxxx, TEX0;
+     |   SCB0 |  max |  27:  MAXh h4.x, h2.z---, h2.w---;
+     |   SCB1 |  mad |  25:  MADr r0.zw, h1.--xz, const, r1;
+     |        |      |
+   8 | SCT0/1 |  mov |  28:  TXLr h1, r0.zwzz, const.xxxx, TEX0;
+     |    TEX |  txl |  28:  TXLr h1, r0.zwzz, const.xxxx, TEX0;
+     | SCB0/1 |  add |  30:  ADDh/2 h1, h0, h1;
+     |        |      |
+   9 |   SCT0 |  mad |  31:  MADr r0.xy,-h2, const.xy--, r1.zw--;
+     |   SCT1 |  mov |  33:  TXLr h0, r0, const.zzzz, TEX0;
+     |    TEX |  txl |  33:  TXLr h0, r0, const.zzzz, TEX0;
+     |   SCB1 |  min |  35:  MINh h4.z, h2, h2.--w-;
+     |        |      |
+  10 |   SCT0 |  mad |  37:  MADr r1.xy, h2, const.xy--, r1.zw--;
+     |   SCT1 |  mov |  39:  TXLr h2, r1, const.zzzz, TEX0;
+     |    TEX |  txl |  39:  TXLr h2, r1, const.zzzz, TEX0;
+     | SCB0/1 |  add |  41:  ADDh/2 h0, h0, h2;
+     |        |      |
+  11 |   SCT0 |  min |  43:  MINh h2.x, h5.w---, h4.z---;
+     |   SCT1 |  max |  42:  MAXh h2.w, h4, h4.---x;
+     | SCB0/1 |  add |  44:  ADDh/2 h0, h0, h1;
+     |        |      |
+  12 |   SCT0 |  set |  45:  SLTh h2.x, h0.w---, h2;
+     |   SCT1 |  set |  46:  SGTh h2.w, h0, h2;
+     | SCB0/1 |  mul |  47:  MOVh h0, h0;
+     |        |      |
+  13 |   SCT0 |  mad |  48:  ADDxc0_s rc, h2, h2.w---;
+     | SCB0/1 |  mul |  49:  MOVh h0(NE0.xxxx), h1;
+ 
+Pass   SCT  TEX  SCB
+  1:   0% 100%  25%
+  2:   0% 100%  25%
+  3:   0% 100%  50%
+  4:   0% 100%  50%
+  5:   0%   0%  50%
+  6: 100%   0%  75%
+  7:   0% 100%  75%
+  8:   0% 100% 100%
+  9:   0% 100%  25%
+ 10:   0% 100% 100%
+ 11:  50%   0% 100%
+ 12:  50%   0% 100%
+ 13:  25%   0% 100%
+
+MEAN:  17%  61%  67%
+
+Pass   SCT0  SCT1   TEX  SCB0  SCB1
+  1:    0%    0%  100%    0%  100%
+  2:    0%    0%  100%    0%  100%
+  3:    0%    0%  100%  100%  100%
+  4:    0%    0%  100%  100%  100%
+  5:    0%    0%    0%  100%  100%
+  6:  100%  100%    0%  100%  100%
+  7:    0%    0%  100%  100%  100%
+  8:    0%    0%  100%  100%  100%
+  9:    0%    0%  100%    0%  100%
+ 10:    0%    0%  100%  100%  100%
+ 11:  100%  100%    0%  100%  100%
+ 12:  100%  100%    0%  100%  100%
+ 13:  100%    0%    0%  100%  100%
+
+MEAN:   30%   23%   61%   76%  100%
+Fragment Performance Setup: Driver RSX Compiler, GPU RSX, Flags 0x5
+Results 13 cycles, 3 r regs, 923,076,923 pixels/s
+============================================================================*/
+#if (FXAA_PS3 == 1) && (FXAA_EARLY_EXIT == 0)
+/*--------------------------------------------------------------------------*/
+#pragma regcount 7
+#pragma disablepc all
+#pragma option O3
+#pragma option OutColorPrec=fp16
+#pragma texformat default RGBA8
+/*==========================================================================*/
+half4 FxaaPixelShader(
+    // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
+    FxaaFloat2 pos,
+    FxaaFloat4 fxaaConsolePosPos,
+    FxaaTex tex,
+    FxaaTex fxaaConsole360TexExpBiasNegOne,
+    FxaaTex fxaaConsole360TexExpBiasNegTwo,
+    FxaaFloat2 fxaaQualityRcpFrame,
+    FxaaFloat4 fxaaConsoleRcpFrameOpt,
+    FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+    FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+    FxaaFloat fxaaQualitySubpix,
+    FxaaFloat fxaaQualityEdgeThreshold,
+    FxaaFloat fxaaQualityEdgeThresholdMin,
+    FxaaFloat fxaaConsoleEdgeSharpness,
+    FxaaFloat fxaaConsoleEdgeThreshold,
+    FxaaFloat fxaaConsoleEdgeThresholdMin,
+    FxaaFloat4 fxaaConsole360ConstDir
+) {
+/*--------------------------------------------------------------------------*/
+// (1)
+    half4 dir;
+    half4 lumaNe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zy, 0, 0));
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        lumaNe.w += half(1.0/512.0);
+        dir.x = -lumaNe.w;
+        dir.z = -lumaNe.w;
+    #else
+        lumaNe.y += half(1.0/512.0);
+        dir.x = -lumaNe.y;
+        dir.z = -lumaNe.y;
+    #endif
+/*--------------------------------------------------------------------------*/
+// (2)
+    half4 lumaSw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xw, 0, 0));
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        dir.x += lumaSw.w;
+        dir.z += lumaSw.w;
+    #else
+        dir.x += lumaSw.y;
+        dir.z += lumaSw.y;
+    #endif        
+/*--------------------------------------------------------------------------*/
+// (3)
+    half4 lumaNw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xy, 0, 0));
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        dir.x -= lumaNw.w;
+        dir.z += lumaNw.w;
+    #else
+        dir.x -= lumaNw.y;
+        dir.z += lumaNw.y;
+    #endif
+/*--------------------------------------------------------------------------*/
+// (4)
+    half4 lumaSe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zw, 0, 0));
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        dir.x += lumaSe.w;
+        dir.z -= lumaSe.w;
+    #else
+        dir.x += lumaSe.y;
+        dir.z -= lumaSe.y;
+    #endif
+/*--------------------------------------------------------------------------*/
+// (5)
+    half4 dir1_pos;
+    dir1_pos.xy = normalize(dir.xyz).xz;
+    half dirAbsMinTimesC = min(abs(dir1_pos.x), abs(dir1_pos.y)) * half(FXAA_CONSOLE__PS3_EDGE_SHARPNESS);
+/*--------------------------------------------------------------------------*/
+// (6)
+    half4 dir2_pos;
+    dir2_pos.xy = clamp(dir1_pos.xy / dirAbsMinTimesC, half(-2.0), half(2.0));
+    dir1_pos.zw = pos.xy;
+    dir2_pos.zw = pos.xy;
+    half4 temp1N;
+    temp1N.xy = dir1_pos.zw - dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
+/*--------------------------------------------------------------------------*/
+// (7)
+    temp1N = h4tex2Dlod(tex, half4(temp1N.xy, 0.0, 0.0));
+    half4 rgby1;
+    rgby1.xy = dir1_pos.zw + dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
+/*--------------------------------------------------------------------------*/
+// (8)
+    rgby1 = h4tex2Dlod(tex, half4(rgby1.xy, 0.0, 0.0));
+    rgby1 = (temp1N + rgby1) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (9)
+    half4 temp2N;
+    temp2N.xy = dir2_pos.zw - dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
+    temp2N = h4tex2Dlod(tex, half4(temp2N.xy, 0.0, 0.0));
+/*--------------------------------------------------------------------------*/
+// (10)
+    half4 rgby2;
+    rgby2.xy = dir2_pos.zw + dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
+    rgby2 = h4tex2Dlod(tex, half4(rgby2.xy, 0.0, 0.0));
+    rgby2 = (temp2N + rgby2) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (11)
+    // compilier moves these scalar ops up to other cycles
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        half lumaMin = min(min(lumaNw.w, lumaSw.w), min(lumaNe.w, lumaSe.w));
+        half lumaMax = max(max(lumaNw.w, lumaSw.w), max(lumaNe.w, lumaSe.w));
+    #else
+        half lumaMin = min(min(lumaNw.y, lumaSw.y), min(lumaNe.y, lumaSe.y));
+        half lumaMax = max(max(lumaNw.y, lumaSw.y), max(lumaNe.y, lumaSe.y));
+    #endif        
+    rgby2 = (rgby2 + rgby1) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (12)
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        bool twoTapLt = rgby2.w < lumaMin;
+        bool twoTapGt = rgby2.w > lumaMax;
+    #else
+        bool twoTapLt = rgby2.y < lumaMin;
+        bool twoTapGt = rgby2.y > lumaMax;
+    #endif
+/*--------------------------------------------------------------------------*/
+// (13)
+    if(twoTapLt || twoTapGt) rgby2 = rgby1;
+/*--------------------------------------------------------------------------*/
+    return rgby2; }
+/*==========================================================================*/
+#endif
+
+
+
+/*============================================================================
+
+       FXAA3 CONSOLE - OPTIMIZED PS3 PIXEL SHADER (WITH EARLY EXIT)
+
+==============================================================================
+The code mostly matches the assembly.
+I have a feeling that 14 cycles is possible, but was not able to get there.
+Might have to increase register count to get full performance.
+Note this shader does not use perspective interpolation.
+
+Use the following cgc options,
+
+ --fenable-bx2 --fastmath --fastprecision --nofloatbindings
+
+Use of FXAA_GREEN_AS_LUMA currently adds a cycle (16 clks).
+Will look at fixing this for FXAA 3.12.
+------------------------------------------------------------------------------
+                             NVSHADERPERF OUTPUT
+------------------------------------------------------------------------------
+For reference and to aid in debug, output of NVShaderPerf should match this,
+
+Shader to schedule:
+  0: texpkb h0.w(TRUE), v5.zyxx, #0
+  2: addh h2.y(TRUE), h0.w, constant(0.001953, 0.000000, 0.000000, 0.000000).x
+  4: texpkb h1.w(TRUE), v5.xwxx, #0
+  6: addh h0.x(TRUE), h1.w, -h2.y
+  7: texpkb h2.w(TRUE), v5.zwzz, #0
+  9: minh h4.w(TRUE), h2.y, h2
+ 10: maxh h5.x(TRUE), h2.y, h2.w
+ 11: texpkb h0.w(TRUE), v5, #0
+ 13: addh h3.w(TRUE), -h0, h0.x
+ 14: addh h0.x(TRUE), h0.w, h0
+ 15: addh h0.z(TRUE), -h2.w, h0.x
+ 16: addh h0.x(TRUE), h2.w, h3.w
+ 17: minh h5.y(TRUE), h0.w, h1.w
+ 18: nrmh h2.xz(TRUE), h0_n
+ 19: minh_m8 h2.w(TRUE), |h2.x|, |h2.z|
+ 20: divx h4.xy(TRUE), h2_n.xzzw, h2_n.w
+ 21: movr r1.zw(TRUE), v4.xxxy
+ 22: maxh h2.w(TRUE), h0, h1
+ 23: fenct TRUE
+ 24: madr r0.xy(TRUE), -h2.xzzw, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).zwzz, r1.zwzz
+ 26: texpkb h0(TRUE), r0, #0
+ 28: maxh h5.x(TRUE), h2.w, h5
+ 29: minh h5.w(TRUE), h5.y, h4
+ 30: madr r1.xy(TRUE), h2.xzzw, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).zwzz, r1.zwzz
+ 32: texpkb h2(TRUE), r1, #0
+ 34: addh_d2 h2(TRUE), h0, h2
+ 35: texpkb h1(TRUE), v4, #0
+ 37: maxh h5.y(TRUE), h5.x, h1.w
+ 38: minh h4.w(TRUE), h1, h5
+ 39: madr r0.xy(TRUE), -h4, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
+ 41: texpkb h0(TRUE), r0, #0
+ 43: addh_m8 h5.z(TRUE), h5.y, -h4.w
+ 44: madr r2.xy(TRUE), h4, constant(cConst5.x, cConst5.y, cConst5.z, cConst5.w).xyxx, r1.zwzz
+ 46: texpkb h3(TRUE), r2, #0
+ 48: addh_d2 h0(TRUE), h0, h3
+ 49: addh_d2 h3(TRUE), h0, h2
+ 50: movh h0(TRUE), h3
+ 51: slth h3.x(TRUE), h3.w, h5.w
+ 52: sgth h3.w(TRUE), h3, h5.x
+ 53: addx.c0 rc(TRUE), h3.x, h3
+ 54: slth.c0 rc(TRUE), h5.z, h5
+ 55: movh h0(c0.NE.w), h2
+ 56: movh h0(c0.NE.x), h1
+
+IPU0 ------ Simplified schedule: --------
+Pass |  Unit  |  uOp |  PC:  Op
+-----+--------+------+-------------------------
+   1 | SCT0/1 |  mov |   0:  TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
+     |    TEX |  txl |   0:  TXLr h0.w, g[TEX1].zyxx, const.xxxx, TEX0;
+     |   SCB0 |  add |   2:  ADDh h2.y, h0.-w--, const.-x--;
+     |        |      |
+   2 | SCT0/1 |  mov |   4:  TXLr h1.w, g[TEX1].xwxx, const.xxxx, TEX0;
+     |    TEX |  txl |   4:  TXLr h1.w, g[TEX1].xwxx, const.xxxx, TEX0;
+     |   SCB0 |  add |   6:  ADDh h0.x, h1.w---,-h2.y---;
+     |        |      |
+   3 | SCT0/1 |  mov |   7:  TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
+     |    TEX |  txl |   7:  TXLr h2.w, g[TEX1].zwzz, const.xxxx, TEX0;
+     |   SCB0 |  max |  10:  MAXh h5.x, h2.y---, h2.w---;
+     |   SCB1 |  min |   9:  MINh h4.w, h2.---y, h2;
+     |        |      |
+   4 | SCT0/1 |  mov |  11:  TXLr h0.w, g[TEX1], const.xxxx, TEX0;
+     |    TEX |  txl |  11:  TXLr h0.w, g[TEX1], const.xxxx, TEX0;
+     |   SCB0 |  add |  14:  ADDh h0.x, h0.w---, h0;
+     |   SCB1 |  add |  13:  ADDh h3.w,-h0, h0.---x;
+     |        |      |
+   5 |   SCT0 |  mad |  16:  ADDh h0.x, h2.w---, h3.w---;
+     |   SCT1 |  mad |  15:  ADDh h0.z,-h2.--w-, h0.--x-;
+     |   SCB0 |  min |  17:  MINh h5.y, h0.-w--, h1.-w--;
+     |        |      |
+   6 |   SCT1 |  mov |  18:  NRMh h2.xz, h0;
+     |    SRB |  nrm |  18:  NRMh h2.xz, h0;
+     |   SCB1 |  min |  19:  MINh*8 h2.w, |h2.---x|, |h2.---z|;
+     |        |      |
+   7 |   SCT0 |  div |  20:  DIVx h4.xy, h2.xz--, h2.ww--;
+     |   SCT1 |  mov |  21:  MOVr r1.zw, g[TEX0].--xy;
+     |   SCB1 |  max |  22:  MAXh h2.w, h0, h1;
+     |        |      |
+   8 |   SCT0 |  mad |  24:  MADr r0.xy,-h2.xz--, const.zw--, r1.zw--;
+     |   SCT1 |  mov |  26:  TXLr h0, r0, const.xxxx, TEX0;
+     |    TEX |  txl |  26:  TXLr h0, r0, const.xxxx, TEX0;
+     |   SCB0 |  max |  28:  MAXh h5.x, h2.w---, h5;
+     |   SCB1 |  min |  29:  MINh h5.w, h5.---y, h4;
+     |        |      |
+   9 |   SCT0 |  mad |  30:  MADr r1.xy, h2.xz--, const.zw--, r1.zw--;
+     |   SCT1 |  mov |  32:  TXLr h2, r1, const.xxxx, TEX0;
+     |    TEX |  txl |  32:  TXLr h2, r1, const.xxxx, TEX0;
+     | SCB0/1 |  add |  34:  ADDh/2 h2, h0, h2;
+     |        |      |
+  10 | SCT0/1 |  mov |  35:  TXLr h1, g[TEX0], const.xxxx, TEX0;
+     |    TEX |  txl |  35:  TXLr h1, g[TEX0], const.xxxx, TEX0;
+     |   SCB0 |  max |  37:  MAXh h5.y, h5.-x--, h1.-w--;
+     |   SCB1 |  min |  38:  MINh h4.w, h1, h5;
+     |        |      |
+  11 |   SCT0 |  mad |  39:  MADr r0.xy,-h4, const.xy--, r1.zw--;
+     |   SCT1 |  mov |  41:  TXLr h0, r0, const.zzzz, TEX0;
+     |    TEX |  txl |  41:  TXLr h0, r0, const.zzzz, TEX0;
+     |   SCB0 |  mad |  44:  MADr r2.xy, h4, const.xy--, r1.zw--;
+     |   SCB1 |  add |  43:  ADDh*8 h5.z, h5.--y-,-h4.--w-;
+     |        |      |
+  12 | SCT0/1 |  mov |  46:  TXLr h3, r2, const.xxxx, TEX0;
+     |    TEX |  txl |  46:  TXLr h3, r2, const.xxxx, TEX0;
+     | SCB0/1 |  add |  48:  ADDh/2 h0, h0, h3;
+     |        |      |
+  13 | SCT0/1 |  mad |  49:  ADDh/2 h3, h0, h2;
+     | SCB0/1 |  mul |  50:  MOVh h0, h3;
+     |        |      |
+  14 |   SCT0 |  set |  51:  SLTh h3.x, h3.w---, h5.w---;
+     |   SCT1 |  set |  52:  SGTh h3.w, h3, h5.---x;
+     |   SCB0 |  set |  54:  SLThc0 rc, h5.z---, h5;
+     |   SCB1 |  add |  53:  ADDxc0_s rc, h3.---x, h3;
+     |        |      |
+  15 | SCT0/1 |  mul |  55:  MOVh h0(NE0.wwww), h2;
+     | SCB0/1 |  mul |  56:  MOVh h0(NE0.xxxx), h1;
+ 
+Pass   SCT  TEX  SCB
+  1:   0% 100%  25%
+  2:   0% 100%  25%
+  3:   0% 100%  50%
+  4:   0% 100%  50%
+  5:  50%   0%  25%
+  6:   0%   0%  25%
+  7: 100%   0%  25%
+  8:   0% 100%  50%
+  9:   0% 100% 100%
+ 10:   0% 100%  50%
+ 11:   0% 100%  75%
+ 12:   0% 100% 100%
+ 13: 100%   0% 100%
+ 14:  50%   0%  50%
+ 15: 100%   0% 100%
+
+MEAN:  26%  60%  56%
+
+Pass   SCT0  SCT1   TEX  SCB0  SCB1
+  1:    0%    0%  100%  100%    0%
+  2:    0%    0%  100%  100%    0%
+  3:    0%    0%  100%  100%  100%
+  4:    0%    0%  100%  100%  100%
+  5:  100%  100%    0%  100%    0%
+  6:    0%    0%    0%    0%  100%
+  7:  100%  100%    0%    0%  100%
+  8:    0%    0%  100%  100%  100%
+  9:    0%    0%  100%  100%  100%
+ 10:    0%    0%  100%  100%  100%
+ 11:    0%    0%  100%  100%  100%
+ 12:    0%    0%  100%  100%  100%
+ 13:  100%  100%    0%  100%  100%
+ 14:  100%  100%    0%  100%  100%
+ 15:  100%  100%    0%  100%  100%
+
+MEAN:   33%   33%   60%   86%   80%
+Fragment Performance Setup: Driver RSX Compiler, GPU RSX, Flags 0x5
+Results 15 cycles, 3 r regs, 800,000,000 pixels/s
+============================================================================*/
+#if (FXAA_PS3 == 1) && (FXAA_EARLY_EXIT == 1)
+/*--------------------------------------------------------------------------*/
+#pragma regcount 7
+#pragma disablepc all
+#pragma option O2
+#pragma option OutColorPrec=fp16
+#pragma texformat default RGBA8
+/*==========================================================================*/
+half4 FxaaPixelShader(
+    // See FXAA Quality FxaaPixelShader() source for docs on Inputs!
+    FxaaFloat2 pos,
+    FxaaFloat4 fxaaConsolePosPos,
+    FxaaTex tex,
+    FxaaTex fxaaConsole360TexExpBiasNegOne,
+    FxaaTex fxaaConsole360TexExpBiasNegTwo,
+    FxaaFloat2 fxaaQualityRcpFrame,
+    FxaaFloat4 fxaaConsoleRcpFrameOpt,
+    FxaaFloat4 fxaaConsoleRcpFrameOpt2,
+    FxaaFloat4 fxaaConsole360RcpFrameOpt2,
+    FxaaFloat fxaaQualitySubpix,
+    FxaaFloat fxaaQualityEdgeThreshold,
+    FxaaFloat fxaaQualityEdgeThresholdMin,
+    FxaaFloat fxaaConsoleEdgeSharpness,
+    FxaaFloat fxaaConsoleEdgeThreshold,
+    FxaaFloat fxaaConsoleEdgeThresholdMin,
+    FxaaFloat4 fxaaConsole360ConstDir
+) {
+/*--------------------------------------------------------------------------*/
+// (1)
+    half4 rgbyNe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zy, 0, 0));
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        half lumaNe = rgbyNe.w + half(1.0/512.0);
+    #else
+        half lumaNe = rgbyNe.y + half(1.0/512.0);
+    #endif
+/*--------------------------------------------------------------------------*/
+// (2)
+    half4 lumaSw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xw, 0, 0));
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        half lumaSwNegNe = lumaSw.w - lumaNe;
+    #else
+        half lumaSwNegNe = lumaSw.y - lumaNe;
+    #endif
+/*--------------------------------------------------------------------------*/
+// (3)
+    half4 lumaNw = h4tex2Dlod(tex, half4(fxaaConsolePosPos.xy, 0, 0));
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        half lumaMaxNwSw = max(lumaNw.w, lumaSw.w);
+        half lumaMinNwSw = min(lumaNw.w, lumaSw.w);
+    #else
+        half lumaMaxNwSw = max(lumaNw.y, lumaSw.y);
+        half lumaMinNwSw = min(lumaNw.y, lumaSw.y);
+    #endif
+/*--------------------------------------------------------------------------*/
+// (4)
+    half4 lumaSe = h4tex2Dlod(tex, half4(fxaaConsolePosPos.zw, 0, 0));
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        half dirZ =  lumaNw.w + lumaSwNegNe;
+        half dirX = -lumaNw.w + lumaSwNegNe;
+    #else
+        half dirZ =  lumaNw.y + lumaSwNegNe;
+        half dirX = -lumaNw.y + lumaSwNegNe;
+    #endif
+/*--------------------------------------------------------------------------*/
+// (5)
+    half3 dir;
+    dir.y = 0.0;
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        dir.x =  lumaSe.w + dirX;
+        dir.z = -lumaSe.w + dirZ;
+        half lumaMinNeSe = min(lumaNe, lumaSe.w);
+    #else
+        dir.x =  lumaSe.y + dirX;
+        dir.z = -lumaSe.y + dirZ;
+        half lumaMinNeSe = min(lumaNe, lumaSe.y);
+    #endif
+/*--------------------------------------------------------------------------*/
+// (6)
+    half4 dir1_pos;
+    dir1_pos.xy = normalize(dir).xz;
+    half dirAbsMinTimes8 = min(abs(dir1_pos.x), abs(dir1_pos.y)) * half(FXAA_CONSOLE__PS3_EDGE_SHARPNESS);
+/*--------------------------------------------------------------------------*/
+// (7)
+    half4 dir2_pos;
+    dir2_pos.xy = clamp(dir1_pos.xy / dirAbsMinTimes8, half(-2.0), half(2.0));
+    dir1_pos.zw = pos.xy;
+    dir2_pos.zw = pos.xy;
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        half lumaMaxNeSe = max(lumaNe, lumaSe.w);
+    #else
+        half lumaMaxNeSe = max(lumaNe, lumaSe.y);
+    #endif
+/*--------------------------------------------------------------------------*/
+// (8)
+    half4 temp1N;
+    temp1N.xy = dir1_pos.zw - dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
+    temp1N = h4tex2Dlod(tex, half4(temp1N.xy, 0.0, 0.0));
+    half lumaMax = max(lumaMaxNwSw, lumaMaxNeSe);
+    half lumaMin = min(lumaMinNwSw, lumaMinNeSe);
+/*--------------------------------------------------------------------------*/
+// (9)
+    half4 rgby1;
+    rgby1.xy = dir1_pos.zw + dir1_pos.xy * fxaaConsoleRcpFrameOpt.zw;
+    rgby1 = h4tex2Dlod(tex, half4(rgby1.xy, 0.0, 0.0));
+    rgby1 = (temp1N + rgby1) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (10)
+    half4 rgbyM = h4tex2Dlod(tex, half4(pos.xy, 0.0, 0.0));
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        half lumaMaxM = max(lumaMax, rgbyM.w);
+        half lumaMinM = min(lumaMin, rgbyM.w);
+    #else
+        half lumaMaxM = max(lumaMax, rgbyM.y);
+        half lumaMinM = min(lumaMin, rgbyM.y);
+    #endif
+/*--------------------------------------------------------------------------*/
+// (11)
+    half4 temp2N;
+    temp2N.xy = dir2_pos.zw - dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
+    temp2N = h4tex2Dlod(tex, half4(temp2N.xy, 0.0, 0.0));
+    half4 rgby2;
+    rgby2.xy = dir2_pos.zw + dir2_pos.xy * fxaaConsoleRcpFrameOpt2.zw;
+    half lumaRangeM = (lumaMaxM - lumaMinM) / FXAA_CONSOLE__PS3_EDGE_THRESHOLD;
+/*--------------------------------------------------------------------------*/
+// (12)
+    rgby2 = h4tex2Dlod(tex, half4(rgby2.xy, 0.0, 0.0));
+    rgby2 = (temp2N + rgby2) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (13)
+    rgby2 = (rgby2 + rgby1) * 0.5;
+/*--------------------------------------------------------------------------*/
+// (14)
+    #if (FXAA_GREEN_AS_LUMA == 0)
+        bool twoTapLt = rgby2.w < lumaMin;
+        bool twoTapGt = rgby2.w > lumaMax;
+    #else
+        bool twoTapLt = rgby2.y < lumaMin;
+        bool twoTapGt = rgby2.y > lumaMax;
+    #endif
+    bool earlyExit = lumaRangeM < lumaMax;
+    bool twoTap = twoTapLt || twoTapGt;
+/*--------------------------------------------------------------------------*/
+// (15)
+    if(twoTap) rgby2 = rgby1;
+    if(earlyExit) rgby2 = rgbyM;
+/*--------------------------------------------------------------------------*/
+    return rgby2; }
+/*==========================================================================*/
+#endif
+
+uniform sampler2D diffuseMap;
+
+uniform vec2 rcp_screen_res;
+uniform vec4 rcp_frame_opt;
+uniform vec4 rcp_frame_opt2;
+uniform vec2 screen_res;
+VARYING vec2 vary_fragcoord;
+VARYING vec2 vary_tc;
+
+void main() 
+{
+	vec4 diff =			FxaaPixelShader(vary_tc,			//pos
+										vec4(vary_fragcoord.xy, 0, 0), //fxaaConsolePosPos
+										diffuseMap,					//tex
+										diffuseMap,					
+										diffuseMap,
+										rcp_screen_res,				//fxaaQualityRcpFrame
+										vec4(0,0,0,0),				//fxaaConsoleRcpFrameOpt
+										rcp_frame_opt,				//fxaaConsoleRcpFrameOpt2
+										rcp_frame_opt2,				//fxaaConsole360RcpFrameOpt2
+										0.75,						//fxaaQualitySubpix
+										0.07,						//fxaaQualityEdgeThreshold
+										0.03,						//fxaaQualityEdgeThresholdMin
+										8.0,						//fxaaConsoleEdgeSharpness
+										0.125,						//fxaaConsoleEdgeThreshold
+										0.05,						//fxaaConsoleEdgeThresholdMin
+										vec4(0,0,0,0));				//fxaaConsole360ConstDir
+
+
+
+	//diff = texture2D(diffuseMap, vary_tc);
+	
+	gl_FragColor = diff;
+	
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/giF.glsl b/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
index bfb7760af827752ac6ef6a9563266f04ab8bdbe1..29ca80ae92d08fcbd845ddb174a2ff2553a0c7ed 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/giF.glsl
@@ -23,10 +23,12 @@
  * $/LicenseInfo$
  */
  
-
-
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2DRect depthMap;
 uniform sampler2DRect normalMap;
 uniform sampler2D noiseMap;
@@ -38,7 +40,7 @@ uniform sampler2D		depthGIMap;
 uniform sampler2D		lightFunc;
 
 // Inputs
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
 
 uniform vec2 screen_res;
 
@@ -182,5 +184,5 @@ void main()
 	vec3 norm = texture2DRect(normalMap, pos_screen).xyz;
 	norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
 	
-	gl_FragData[0].xyz = giAmbient(pos, norm);
+	gl_FragColor.xyz = giAmbient(pos, norm);
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/giV.glsl b/indra/newview/app_settings/shaders/class1/deferred/giV.glsl
index 190e32b6a34102d938e25f11ca0f22962d66b332..e5d3bb8ea61d1fc3261f09867bc8ba43bac6b3c8 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/giV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/giV.glsl
@@ -22,21 +22,27 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 modelview_projection_matrix;
 
-varying vec2 vary_fragcoord;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_fragcoord;
 
 uniform vec2 screen_res;
 
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform(); 
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
+	vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	gl_Position = pos; 
+	
 	vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;	
-	vec4 tex = gl_MultiTexCoord0;
+	vec4 tex = vec4(texcoord0,0,1);
 	tex.w = 1.0;
 
-	gl_FrontColor = gl_Color;
+	vertex_color = diffuse_color;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl
index 7152e13946f45d405b670be78bc50f25d961428c..a44173a2a4d519f481a5c68976798ea5215d5f28 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/impostorF.glsl
@@ -22,25 +22,30 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
+
 uniform float minimum_alpha;
-uniform float maximum_alpha;
 
 
 uniform sampler2D diffuseMap;
 uniform sampler2D normalMap;
 uniform sampler2D specularMap;
 
+VARYING vec2 vary_texcoord0;
+
 void main() 
 {
-	vec4 col = texture2D(diffuseMap, gl_TexCoord[0].xy);
+	vec4 col = texture2D(diffuseMap, vary_texcoord0.xy);
 
-	if (col.a < minimum_alpha || col.a > maximum_alpha)
+	if (col.a < minimum_alpha)
 	{
 		discard;
 	}
 
 	gl_FragData[0] = vec4(col.rgb, col.a * 0.005);
-	gl_FragData[1] = texture2D(specularMap, gl_TexCoord[0].xy);
-	gl_FragData[2] = vec4(texture2D(normalMap, gl_TexCoord[0].xy).xyz, 0.0);
+	gl_FragData[1] = texture2D(specularMap, vary_texcoord0.xy);
+	gl_FragData[2] = vec4(texture2D(normalMap, vary_texcoord0.xy).xyz, 0.0);
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl b/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl
index 0cf8c6817395e90ff5c7c800dd34e52ebad34718..42266e9378e12dcca9ae0138eacfa267e9ff41e3 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/impostorV.glsl
@@ -22,14 +22,18 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec2 vary_texcoord0;
 
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform(); 
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-	
-	gl_FrontColor = gl_Color;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0); 
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
index 4ba26fb0c6e38a34618112a26ed9d3e5753b4d51..e014a14ad86c0746dbafd48584e78b9496f7423c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/luminanceF.glsl
@@ -22,12 +22,14 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
-
-
-
+ 
 uniform sampler2DRect diffuseMap;
 
-varying vec2 vary_fragcoord;
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec2 vary_fragcoord;
 
 void main() 
 {
diff --git a/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl b/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl
index 9f22175f8402a546e2c07fe48e685ef982d4edbe..f2dc60aa5d2327ec00442d0bb17f951d06601635 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/luminanceV.glsl
@@ -23,19 +23,23 @@
  * $/LicenseInfo$
  */
 
+uniform mat4 modelview_projection_matrix;
+ 
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
 
-
-
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
+VARYING vec4 vertex_color;
 
 uniform vec2 screen_res;
 
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform(); 
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
+	vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	gl_Position = pos;
+	
 	vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;	
 
-	gl_FrontColor = gl_Color;
+	vertex_color = diffuse_color;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
index 42212a978ea4f94f9f1f3fe3f7952fd25207cf54..179c721a2fad36c471579607d3d679fc319a3f27 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightF.glsl
@@ -23,10 +23,12 @@
  * $/LicenseInfo$
  */
 
-
-
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2DRect depthMap;
 uniform sampler2DRect diffuseRect;
 uniform sampler2DRect specularRect;
@@ -45,7 +47,7 @@ uniform int light_count;
 uniform vec4 light[MAX_LIGHT_COUNT];
 uniform vec4 light_col[MAX_LIGHT_COUNT];
 
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
 uniform vec2 screen_res;
 
 uniform float far_z;
@@ -124,7 +126,7 @@ void main()
 				
 				if (sa > 0.0)
 				{
-					sa = texture2D(lightFunc,vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0);
+					sa = texture2D(lightFunc,vec2(sa, spec.a)).r * min(dist_atten*4.0, 1.0);
 					sa *= noise;
 					col += da*sa*light_col[i].rgb*spec.rgb;
 				}
@@ -141,6 +143,4 @@ void main()
 	
 	gl_FragColor.rgb = out_col;
 	gl_FragColor.a = 0.0;
-	
-	//gl_FragColor = vec4(0.1, 0.025, 0.025/4.0, 0.0);
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl
deleted file mode 100644
index 863bac19cfacc6ae1df4e85293cd792affa85ca9..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightMSF.glsl
+++ /dev/null
@@ -1,155 +0,0 @@
-/** 
- * @file multiPointLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS normalMap;
-uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
-
-
-uniform vec3 env_mat[3];
-uniform float sun_wash;
-
-uniform int light_count;
-
-#define MAX_LIGHT_COUNT		16
-uniform vec4 light[MAX_LIGHT_COUNT];
-uniform vec4 light_col[MAX_LIGHT_COUNT];
-
-varying vec4 vary_fragcoord;
-uniform vec2 screen_res;
-
-uniform float far_z;
-
-uniform mat4 inv_proj;
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
-	float depth = texelFetch(depthMap, pos_screen, sample).r;
-	vec2 sc = vec2(pos_screen.xy)*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-void main() 
-{
-	vec2 frag = (vary_fragcoord.xy*0.5+0.5)*screen_res;
-	ivec2 itc = ivec2(frag);
-
-	int wght = 0;
-	vec3 fcol = vec3(0,0,0);
-
-	for (int s = 0; s < samples; ++s)
-	{
-		vec3 pos = getPosition(itc, s).xyz;
-		if (pos.z >= far_z)
-		{
-			vec3 norm = texelFetch(normalMap, itc, s).xyz;
-			norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-			norm = normalize(norm);
-			vec4 spec = texelFetch(specularRect, itc, s);
-			vec3 diff = texelFetch(diffuseRect, itc, s).rgb;
-			float noise = texture2D(noiseMap, frag.xy/128.0).b;
-			vec3 out_col = vec3(0,0,0);
-			vec3 npos = normalize(-pos);
-
-			// As of OSX 10.6.7 ATI Apple's crash when using a variable size loop
-			for (int i = 0; i < MAX_LIGHT_COUNT; ++i)
-			{
-				bool light_contrib = (i < light_count);
-		
-				vec3 lv = light[i].xyz-pos;
-				float dist2 = dot(lv,lv);
-				dist2 /= light[i].w;
-				if (dist2 > 1.0)
-				{
-					light_contrib = false;
-				}
-		
-				float da = dot(norm, lv);
-				if (da < 0.0)
-				{
-					light_contrib = false;
-				}
-		
-				if (light_contrib)
-				{
-					lv = normalize(lv);
-					da = dot(norm, lv);
-					
-					float fa = light_col[i].a+1.0;
-					float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
-					dist_atten *= noise;
-
-					float lit = da * dist_atten;
-			
-					vec3 col = light_col[i].rgb*lit*diff;
-					//vec3 col = vec3(dist2, light_col[i].a, lit);
-			
-					if (spec.a > 0.0)
-					{
-						//vec3 ref = dot(pos+lv, norm);
-				
-						float sa = dot(normalize(lv+npos),norm);
-				
-						if (sa > 0.0)
-						{
-							sa = texture2D(lightFunc,vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0);
-							sa *= noise;
-							col += da*sa*light_col[i].rgb*spec.rgb;
-						}
-					}
-			
-					out_col += col;
-				}
-			}
-	
-			fcol += out_col;
-			++wght;
-		}
-	}
-
-	if (wght <= 0)
-	{
-		discard;
-	}
-
-	gl_FragColor.rgb = fcol/samples;
-	gl_FragColor.a = 0.0;
-
-	
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl
index 1362a48daf47df6652151526936ff46bfc59ca6d..eefefa640de101a326a82d83bf5068aa8d41dc2f 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiPointLightV.glsl
@@ -23,16 +23,17 @@
  * $/LicenseInfo$
  */
 
+uniform mat4 modelview_projection_matrix;
 
+ATTRIBUTE vec3 position;
 
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
 
 void main()
 {
 	//transform vertex
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
+	vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
 	vary_fragcoord = pos;
 
 	gl_Position = pos;
-	gl_FrontColor = gl_Color;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
index 85b0ce5beb18cb92e3471434903ca6a07a72aeb5..2196d14895b293ea0a0e2f0abb79ae8f01a477e7 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightF.glsl
@@ -23,7 +23,9 @@
  * $/LicenseInfo$
  */
 
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
 //class 1 -- no shadows
 
@@ -35,7 +37,6 @@ uniform sampler2DRect depthMap;
 uniform sampler2DRect normalMap;
 uniform samplerCube environmentMap;
 uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
 uniform sampler2D projectionMap;
 
 uniform mat4 proj_mat; //screen space to light space
@@ -55,9 +56,12 @@ uniform float sun_wash;
 uniform int proj_shadow_idx;
 uniform float shadow_fade;
 
-varying vec4 vary_light;
+uniform vec3 center;
+uniform vec3 color;
+uniform float falloff;
+uniform float size;
 
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
 uniform vec2 screen_res;
 
 uniform mat4 inv_proj;
@@ -110,7 +114,7 @@ vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
 
 vec4 getPosition(vec2 pos_screen)
 {
-	float depth = texture2DRect(depthMap, pos_screen.xy).a;
+	float depth = texture2DRect(depthMap, pos_screen.xy).r;
 	vec2 sc = pos_screen.xy*2.0;
 	sc /= screen_res;
 	sc -= vec2(1.0,1.0);
@@ -129,9 +133,9 @@ void main()
 	frag.xy *= screen_res;
 	
 	vec3 pos = getPosition(frag.xy).xyz;
-	vec3 lv = vary_light.xyz-pos.xyz;
+	vec3 lv = center.xyz-pos.xyz;
 	float dist2 = dot(lv,lv);
-	dist2 /= vary_light.w;
+	dist2 /= size;
 	if (dist2 > 1.0)
 	{
 		discard;
@@ -150,7 +154,7 @@ void main()
 	
 	proj_tc.xyz /= proj_tc.w;
 	
-	float fa = gl_Color.a+1.0;
+	float fa = falloff+1.0;
 	float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);
 	if (dist_atten <= 0.0)
 	{
@@ -182,7 +186,7 @@ void main()
 			
 			vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
 		
-			vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
+			vec3 lcol = color.rgb * plcol.rgb * plcol.a;
 			
 			lit = da * dist_atten * noise;
 			
@@ -199,7 +203,7 @@ void main()
 			
 		amb_da = min(amb_da, 1.0-lit);
 			
-		col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
+		col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
 	}
 	
 	
@@ -232,7 +236,7 @@ void main()
 					stc.y > 0.0)
 				{
 					vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
-					col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb;
+					col += dist_atten*scol.rgb*color.rgb*scol.a*spec.rgb;
 				}
 			}
 		}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl
deleted file mode 100644
index 10285817c213c20662f3819c9f64b28c4daef2d1..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/multiSpotLightMSF.glsl
+++ /dev/null
@@ -1,250 +0,0 @@
-/** 
- * @file multiSpotLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
-
-
-
-//class 1 -- no shadows
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
-uniform sampler2D projectionMap;
-
-uniform mat4 proj_mat; //screen space to light space
-uniform float proj_near; //near clip for projection
-uniform vec3 proj_p; //plane projection is emitting from (in screen space)
-uniform vec3 proj_n;
-uniform float proj_focus; //distance from plane to begin blurring
-uniform float proj_lod;  //(number of mips in proj map)
-uniform float proj_range; //range between near clip and far clip plane of projection
-uniform float proj_ambient_lod;
-uniform float proj_ambiance;
-uniform float near_clip;
-uniform float far_clip;
-
-uniform vec3 proj_origin; //origin of projection to be used for angular attenuation
-uniform float sun_wash;
-uniform float shadow_fade;
-
-varying vec4 vary_light;
-
-varying vec4 vary_fragcoord;
-uniform vec2 screen_res;
-
-uniform mat4 inv_proj;
-
-vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
-{
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	
-	vec2 dist = tc-vec2(0.5);
-	
-	float det = max(1.0-lod/(proj_lod*0.5), 0.0);
-	
-	float d = dot(dist,dist);
-		
-	ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0);
-	
-	return ret;
-}
-
-vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
-{
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	
-	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-	
-	float det = min(lod/(proj_lod*0.5), 1.0);
-	
-	float d = min(dist.x, dist.y);
-	
-	float edge = 0.25*det;
-		
-	ret *= clamp(d/edge, 0.0, 1.0);
-	
-	return ret;
-}
-
-vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
-{
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	
-	vec2 dist = tc-vec2(0.5);
-	
-	float d = dot(dist,dist);
-		
-	ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
-	
-	return ret;
-}
-
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
-	float depth = texelFetch(depthMap, pos_screen, sample).r;
-	vec2 sc = vec2(pos_screen.xy)*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-void main() 
-{
-	int wght = 0;
-
-	vec3 fcol = vec3(0,0,0);
-
-	vec2 frag = (vary_fragcoord.xy*0.5+0.5)*screen_res;
-	
-	ivec2 itc = ivec2(frag.xy);
-
-	for (int i = 0; i < samples; ++i)
-	{
-		vec3 pos = getPosition(itc, i).xyz;
-		vec3 lv = vary_light.xyz-pos.xyz;
-		float dist2 = dot(lv,lv);
-		dist2 /= vary_light.w;
-		if (dist2 <= 1.0)
-		{
-			vec3 norm = texelFetch(normalMap, itc, i).xyz*2.0-1.0;
-	
-			norm = normalize(norm);
-			float l_dist = -dot(lv, proj_n);
-	
-			vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
-			if (proj_tc.z >= 0.0)
-			{
-				proj_tc.xyz /= proj_tc.w;
-	
-				float fa = gl_Color.a+1.0;
-				float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);
-				if (dist_atten > 0.0)
-				{
-					lv = proj_origin-pos.xyz;
-					lv = normalize(lv);
-					float da = dot(norm, lv);
-		
-					vec3 col = vec3(0,0,0);
-		
-					vec3 diff_tex = texelFetch(diffuseRect, itc, i).rgb;
-		
-					float noise = texture2D(noiseMap, frag.xy/128.0).b;
-					if (proj_tc.z > 0.0 &&
-						proj_tc.x < 1.0 &&
-						proj_tc.y < 1.0 &&
-						proj_tc.x > 0.0 &&
-						proj_tc.y > 0.0)
-					{
-						float lit = 0.0;
-						float amb_da = proj_ambiance;
-		
-						if (da > 0.0)
-						{
-							float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
-							float lod = diff * proj_lod;
-			
-							vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
-		
-							vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
-			
-							lit = da * dist_atten * noise;
-			
-							col = lcol*lit*diff_tex;
-							amb_da += (da*0.5)*proj_ambiance;
-						}
-		
-						//float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
-						vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
-							
-						amb_da += (da*da*0.5+0.5)*proj_ambiance;
-				
-						amb_da *= dist_atten * noise;
-			
-						amb_da = min(amb_da, 1.0-lit);
-			
-						col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
-					}
-	
-	
-					vec4 spec = texelFetch(specularRect, itc, i);
-					if (spec.a > 0.0)
-					{
-						vec3 ref = reflect(normalize(pos), norm);
-		
-						//project from point pos in direction ref to plane proj_p, proj_n
-						vec3 pdelta = proj_p-pos;
-						float ds = dot(ref, proj_n);
-		
-						if (ds < 0.0)
-						{
-							vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
-			
-							vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
-
-							if (stc.z > 0.0)
-							{
-								stc.xy /= stc.w;
-
-								float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0);
-				
-								stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5);
-								
-								if (stc.x < 1.0 &&
-									stc.y < 1.0 &&
-									stc.x > 0.0 &&
-									stc.y > 0.0)
-								{
-									vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
-									col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb;
-								}
-							}
-						}
-					}
-	
-					fcol += col;
-					++wght;
-				}
-			}
-		}
-	}
-
-	if (wght <= 0)
-	{
-		discard;
-	}
-
-	gl_FragColor.rgb = fcol/samples;	
-	gl_FragColor.a = 0.0;
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl b/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..879942d8faa7cd04b53e9a31ea516673c19717a0
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/normgenF.glsl
@@ -0,0 +1,56 @@
+/** 
+ * @file normgenF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+ 
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2D alphaMap;
+
+VARYING vec2 vary_texcoord0;
+
+uniform float stepX;
+uniform float stepY;
+uniform float norm_scale;
+
+void main()
+{
+	float alpha = texture2D(alphaMap, vary_texcoord0).a;
+
+	vec3 right = vec3(norm_scale, 0, (texture2D(alphaMap, vary_texcoord0+vec2(stepX, 0)).a-alpha)*255);
+	vec3 left = vec3(-norm_scale, 0, (texture2D(alphaMap, vary_texcoord0-vec2(stepX, 0)).a-alpha)*255);
+	vec3 up = vec3(0, -norm_scale, (texture2D(alphaMap, vary_texcoord0-vec2(0, stepY)).a-alpha)*255);
+	vec3 down = vec3(0, norm_scale, (texture2D(alphaMap, vary_texcoord0+vec2(0, stepY)).a-alpha)*255);
+	
+	vec3 norm = cross(right, down) + cross(down, left) + cross(left,up) + cross(up, right);
+	
+	norm = normalize(norm);
+	norm *= 0.5;
+	norm += 0.5;	
+	
+	gl_FragColor = vec4(norm, alpha);
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/normgenV.glsl b/indra/newview/app_settings/shaders/class1/deferred/normgenV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..9bceae05b71d05783930f7264aa3a13cc7093bab
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/normgenV.glsl
@@ -0,0 +1,36 @@
+/** 
+ * @file normgenV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+ 
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec2 vary_fragcoord;
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+	gl_Position = vec4(position.x*2.0-1.0, position.y*2.0-1.0, -1.0, 1.0); 
+	vary_texcoord0 = texcoord0;
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
index 0771f9b91a975954a8864f91b33fd67ad7065a8a..b673d00d6e2e1dd1909d840b76b9733a75f9fa0b 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightF.glsl
@@ -23,10 +23,12 @@
  * $/LicenseInfo$
  */
  
- 
-
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2DRect diffuseRect;
 uniform sampler2DRect specularRect;
 uniform sampler2DRect normalMap;
@@ -38,9 +40,12 @@ uniform sampler2DRect depthMap;
 uniform vec3 env_mat[3];
 uniform float sun_wash;
 
-varying vec4 vary_light;
+uniform vec3 center;
+uniform vec3 color;
+uniform float falloff;
+uniform float size;
 
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
 uniform vec2 screen_res;
 
 uniform mat4 inv_proj;
@@ -67,9 +72,9 @@ void main()
 	frag.xy *= screen_res;
 	
 	vec3 pos = getPosition(frag.xy).xyz;
-	vec3 lv = vary_light.xyz-pos;
+	vec3 lv = center.xyz-pos;
 	float dist2 = dot(lv,lv);
-	dist2 /= vary_light.w;
+	dist2 /= size;
 	if (dist2 > 1.0)
 	{
 		discard;
@@ -90,11 +95,11 @@ void main()
 	float noise = texture2D(noiseMap, frag.xy/128.0).b;
 	
 	vec3 col = texture2DRect(diffuseRect, frag.xy).rgb;
-	float fa = gl_Color.a+1.0;
+	float fa = falloff+1.0;
 	float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
 	float lit = da * dist_atten * noise;
 	
-	col = gl_Color.rgb*lit*col;
+	col = color.rgb*lit*col;
 
 	vec4 spec = texture2DRect(specularRect, frag.xy);
 	if (spec.a > 0.0)
@@ -102,9 +107,9 @@ void main()
 		float sa = dot(normalize(lv-normalize(pos)),norm);
 		if (sa > 0.0)
 		{
-			sa = texture2D(lightFunc, vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0);
+			sa = texture2D(lightFunc, vec2(sa, spec.a)).r * min(dist_atten*4.0, 1.0);
 			sa *= noise;
-			col += da*sa*gl_Color.rgb*spec.rgb;
+			col += da*sa*color.rgb*spec.rgb;
 		}
 	}
 	
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl
deleted file mode 100644
index cdce58c84ef540bd35be24fac4a8e8842b3b0334..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/pointLightMSF.glsl
+++ /dev/null
@@ -1,126 +0,0 @@
-/** 
- * @file pointLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
- 
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS normalMap;
-uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
-
-
-uniform vec3 env_mat[3];
-uniform float sun_wash;
-
-varying vec4 vary_light;
-
-varying vec4 vary_fragcoord;
-uniform vec2 screen_res;
-
-uniform mat4 inv_proj;
-uniform vec4 viewport;
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
-	float depth = texelFetch(depthMap, pos_screen, sample).r;
-	vec2 sc = (vec2(pos_screen.xy)-viewport.xy)*2.0;
-	sc /= viewport.zw;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-void main() 
-{
-	vec4 frag = vary_fragcoord;
-	frag.xyz /= frag.w;
-	frag.xyz = frag.xyz*0.5+0.5;
-	frag.xy *= screen_res;
-	
-	ivec2 itc = ivec2(frag.xy);
-
-	int wght = 0;
-	vec3 fcol = vec3(0,0,0);
-
-	for (int s = 0; s < samples; ++s)
-	{
-		vec3 pos = getPosition(itc, s).xyz;
-		vec3 lv = vary_light.xyz-pos;
-		float dist2 = dot(lv,lv);
-		dist2 /= vary_light.w;
-		if (dist2 <= 1.0)
-		{
-			vec3 norm = texelFetch(normalMap, itc, s).xyz;
-			norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-			float da = dot(norm, lv);
-			if (da >= 0.0)
-			{
-				norm = normalize(norm);
-				lv = normalize(lv);
-				da = dot(norm, lv);
-	
-				float noise = texture2D(noiseMap, frag.xy/128.0).b;
-	
-				vec3 col = texelFetch(diffuseRect, itc, s).rgb;
-				float fa = gl_Color.a+1.0;
-				float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
-				float lit = da * dist_atten * noise;
-	
-				col = gl_Color.rgb*lit*col;
-
-				vec4 spec = texelFetch(specularRect, itc, s);
-				if (spec.a > 0.0)
-				{
-					float sa = dot(normalize(lv-normalize(pos)),norm);
-					if (sa > 0.0)
-					{
-						sa = texture2D(lightFunc, vec2(sa, spec.a)).a * min(dist_atten*4.0, 1.0);
-						sa *= noise;
-						col += da*sa*gl_Color.rgb*spec.rgb;
-					}
-				}
-
-				fcol += col;
-				++wght;
-			}
-		}
-	}
-	
-	if (wght <= 0)
-	{
-		discard;
-	}
-		
-	gl_FragColor.rgb = fcol/samples;	
-	gl_FragColor.a = 0.0;
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl
index db1b9d3feb88f3e16de78253322a00289e4d4a5a..cb14e6d4e8b164235c9c53ecbb72081ea167b1fd 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/pointLightV.glsl
@@ -23,23 +23,17 @@
  * $/LicenseInfo$
  */
 
+uniform mat4 modelview_projection_matrix;
 
+ATTRIBUTE vec3 position;
 
-varying vec4 vary_light;
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
 
 void main()
 {
 	//transform vertex
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
+	vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
 	vary_fragcoord = pos;
 		
-	vec4 tex = gl_MultiTexCoord0;
-	tex.w = 1.0;
-	
-	vary_light = gl_MultiTexCoord0;
-	
 	gl_Position = pos;
-		
-	gl_FrontColor = gl_Color;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
index 29f5f899ba20eeb9856ff3d2a77a4c8cf0cdfba0..18d451bf878068e1a74c7d77f9f3767148c4c6bd 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredF.glsl
@@ -22,82 +22,32 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
-
 
 #extension GL_ARB_texture_rectangle : enable
 
-uniform sampler2DRect diffuseRect;
-uniform sampler2DRect edgeMap;
-uniform sampler2DRect depthMap;
-uniform sampler2DRect normalMap;
-uniform sampler2D bloomMap;
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
-uniform float depth_cutoff;
-uniform float norm_cutoff;
-uniform float focal_distance;
-uniform float blur_constant;
-uniform float tan_pixel_angle;
-uniform float magnification;
+uniform sampler2DRect diffuseRect;
 
 uniform mat4 inv_proj;
 uniform vec2 screen_res;
+uniform float max_cof;
+uniform float res_scale;
 
-varying vec2 vary_fragcoord;
-
-float getDepth(vec2 pos_screen)
-{
-	float z = texture2DRect(depthMap, pos_screen.xy).r;
-	z = z*2.0-1.0;
-	vec4 ndc = vec4(0.0, 0.0, z, 1.0);
-	vec4 p = inv_proj*ndc;
-	return p.z/p.w;
-}
+VARYING vec2 vary_fragcoord;
 
-float calc_cof(float depth)
+void dofSample(inout vec4 diff, inout float w, float min_sc, vec2 tc)
 {
-	float sc = abs(depth-focal_distance)/-depth*blur_constant;
-		
-	sc /= magnification;
-	
-	// tan_pixel_angle = pixel_length/-depth;
-	float pixel_length =  tan_pixel_angle*-focal_distance;
-	
-	sc = sc/pixel_length;
-	sc *= 1.414;
-	
-	return sc;
-}
-
-void dofSampleNear(inout vec4 diff, inout float w, float cur_sc, vec2 tc)
-{
-	float d = getDepth(tc);
-	
-	float sc = calc_cof(d);
-	
-	float wg = 0.25;
-		
 	vec4 s = texture2DRect(diffuseRect, tc);
-	// de-weight dull areas to make highlights 'pop'
-	wg += s.r+s.g+s.b;
-	
-	diff += wg*s;
-	
-	w += wg;
-}
 
-void dofSample(inout vec4 diff, inout float w, float min_sc, float cur_depth, vec2 tc)
-{
-	float d = getDepth(tc);
-	
-	float sc = calc_cof(d);
-	
-	if (sc > min_sc //sampled pixel is more "out of focus" than current sample radius
-	   || d < cur_depth) //sampled pixel is further away than current pixel
+	float sc = abs(s.a*2.0-1.0)*max_cof;
+
+	if (sc > min_sc) //sampled pixel is more "out of focus" than current sample radius
 	{
 		float wg = 0.25;
 		
-		vec4 s = texture2DRect(diffuseRect, tc);
 		// de-weight dull areas to make highlights 'pop'
 		wg += s.r+s.g+s.b;
 	
@@ -107,30 +57,35 @@ void dofSample(inout vec4 diff, inout float w, float min_sc, float cur_depth, ve
 	}
 }
 
+void dofSampleNear(inout vec4 diff, inout float w, float min_sc, vec2 tc)
+{
+	vec4 s = texture2DRect(diffuseRect, tc);
+
+	float wg = 0.25;
+
+	// de-weight dull areas to make highlights 'pop'
+	wg += s.r+s.g+s.b;
+
+	diff += wg*s;
+		
+	w += wg;
+}
 
 void main() 
 {
-	vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz;
-	norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-		
 	vec2 tc = vary_fragcoord.xy;
 	
-	float depth = getDepth(tc);
-	
 	vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy);
 	
 	{ 
 		float w = 1.0;
 		
-		float sc = calc_cof(depth);
-		sc = min(abs(sc), 10.0);
-		
-		float fd = depth*0.5f;
-		
+		float sc = (diff.a*2.0-1.0)*max_cof;
+			
 		float PI = 3.14159265358979323846264;
 
 		// sample quite uniformly spaced points within a circle, for a circular 'bokeh'		
-		//if (depth < focal_distance)
+		if (sc > 0.5)
 		{
 			while (sc > 0.5)
 			{
@@ -141,15 +96,31 @@ void main()
 					float samp_x = sc*sin(ang);
 					float samp_y = sc*cos(ang);
 					// you could test sample coords against an interesting non-circular aperture shape here, if desired.
-					dofSample(diff, w, sc, depth, vary_fragcoord.xy + vec2(samp_x,samp_y));
+					dofSampleNear(diff, w, sc, vary_fragcoord.xy + vec2(samp_x,samp_y));
 				}
 				sc -= 1.0;
 			}
 		}
-		
+		else if (sc < -0.5)
+		{
+			sc = abs(sc);
+			while (sc > 0.5)
+			{
+				int its = int(max(1.0,(sc*3.7)));
+				for (int i=0; i<its; ++i)
+				{
+					float ang = sc+i*2*PI/its; // sc is added for rotary perturbance
+					float samp_x = sc*sin(ang);
+					float samp_y = sc*cos(ang);
+					// you could test sample coords against an interesting non-circular aperture shape here, if desired.
+					dofSample(diff, w, sc, vary_fragcoord.xy + vec2(samp_x,samp_y));
+				}
+				sc -= 1.0;
+			}
+		}
+
 		diff /= w;
 	}
 		
-	vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
-	gl_FragColor = diff + bloom;
+	gl_FragColor = diff;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl
deleted file mode 100644
index 792102a64d7835144c588d4ba8af1d0ed9c6e666..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredMSF.glsl
+++ /dev/null
@@ -1,151 +0,0 @@
-/** 
- * @file postDeferredF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS edgeMap;
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2D bloomMap;
-
-uniform float depth_cutoff;
-uniform float norm_cutoff;
-uniform float focal_distance;
-uniform float blur_constant;
-uniform float tan_pixel_angle;
-uniform float magnification;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-varying vec2 vary_fragcoord;
-
-vec4 texture2DMS(sampler2DMS tex, ivec2 tc)
-{
-	vec4 ret = vec4(0,0,0,0);
-	for (int i = 0; i < samples; ++i)
-	{
-		ret += texelFetch(tex, tc, i);
-	}
-
-	return ret/samples;
-}
-
-float getDepth(ivec2 pos_screen)
-{
-	float z = texture2DMS(depthMap, pos_screen.xy).r;
-	z = z*2.0-1.0;
-	vec4 ndc = vec4(0.0, 0.0, z, 1.0);
-	vec4 p = inv_proj*ndc;
-	return p.z/p.w;
-}
-
-float calc_cof(float depth)
-{
-	float sc = abs(depth-focal_distance)/-depth*blur_constant;
-		
-	sc /= magnification;
-	
-	// tan_pixel_angle = pixel_length/-depth;
-	float pixel_length =  tan_pixel_angle*-focal_distance;
-	
-	sc = sc/pixel_length;
-	sc *= 1.414;
-	
-	return sc;
-}
-
-void dofSample(inout vec4 diff, inout float w, float min_sc, float cur_depth, ivec2 tc)
-{
-	float d = getDepth(tc);
-	
-	float sc = calc_cof(d);
-	
-	if (sc > min_sc //sampled pixel is more "out of focus" than current sample radius
-	   || d < cur_depth) //sampled pixel is further away than current pixel
-	{
-		float wg = 0.25;
-		
-		vec4 s = texture2DMS(diffuseRect, tc);
-		// de-weight dull areas to make highlights 'pop'
-		wg += s.r+s.g+s.b;
-	
-		diff += wg*s;
-		
-		w += wg;
-	}
-}
-
-
-void main() 
-{
-	ivec2 itc = ivec2(vary_fragcoord.xy);
-
-	vec3 norm = texture2DMS(normalMap, itc).xyz;
-	norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-		
-	float depth = getDepth(itc);
-	
-	vec4 diff = texture2DMS(diffuseRect, itc);
-	
-	{ 
-		float w = 1.0;
-		
-		float sc = calc_cof(depth);
-		sc = min(abs(sc), 10.0);
-		
-		float fd = depth*0.5f;
-		
-		float PI = 3.14159265358979323846264;
-
-		int isc = int(sc);
-		
-		// sample quite uniformly spaced points within a circle, for a circular 'bokeh'		
-		//if (depth < focal_distance)
-		{
-			for (int x = -isc; x <= isc; x+=2)
-			{
-				for (int y = -isc; y <= isc; y+=2)
-				{
-					ivec2 cur_samp = ivec2(x,y);
-					float cur_sc = length(vec2(cur_samp));
-					if (cur_sc < sc)
-					{
-						dofSample(diff, w, cur_sc, depth, itc+cur_samp);
-					}
-				}
-			}
-		}
-		
-		diff /= w;
-	}
-		
-	vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
-	gl_FragColor = diff + bloom;
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
index 34e30a30703d9efd7bb53eedce7b146ab20e8be6..c275434777256419a97d9457fd537b557f5357e9 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl
@@ -1,5 +1,5 @@
 /** 
- * @file postDeferredF.glsl
+ * @file postDeferredNoDoFF.glsl
  *
  * $LicenseInfo:firstyear=2007&license=viewerlgpl$
  * Second Life Viewer Source Code
@@ -23,15 +23,17 @@
  * $/LicenseInfo$
  */
  
-
-
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2DRect diffuseRect;
 uniform sampler2D bloomMap;
 
 uniform vec2 screen_res;
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
 
 void main() 
 {
@@ -40,3 +42,4 @@ void main()
 	vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
 	gl_FragColor = diff + bloom;
 }
+
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl
deleted file mode 100644
index 41849858e7d9ec2f447b619a6c9923faec1b6c6e..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFMSF.glsl
+++ /dev/null
@@ -1,55 +0,0 @@
-/** 
- * @file postDeferredF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2D bloomMap;
-
-uniform vec2 screen_res;
-varying vec2 vary_fragcoord;
-
-vec4 texture2DMS(sampler2DMS tex, ivec2 tc)
-{
-	vec4 ret = vec4(0,0,0,0);
-
-	for (int i = 0; i < samples; ++i)
-	{
-		 ret += texelFetch(tex,tc,i);
-	}
-
-	return ret/samples;
-}
-
-void main() 
-{
-	vec4 diff = texture2DMS(diffuseRect, ivec2(vary_fragcoord.xy));
-
-	vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
-	gl_FragColor = diff + bloom;
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl
index cb83dda795f87098fd9d5bc508b27c762cc53fff..8edf5b2723f90450d09bf857126bdcfc18f9501a 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredV.glsl
@@ -22,16 +22,23 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+
+VARYING vec2 vary_fragcoord;
+VARYING vec2 vary_tc;
+
+uniform vec2 tc_scale;
 
-varying vec2 vary_fragcoord;
 uniform vec2 screen_res;
 
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform(); 
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
+	vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	gl_Position = pos;	
+	vary_tc = (pos.xy*0.5+0.5)*tc_scale;
 	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl
index 99257daca4a8c5b316e67edb5e5869cbaf3d9626..84d65d5b3b23b678e8ede1d53da38b32c970ff45 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postgiF.glsl
@@ -22,9 +22,11 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
-
 
+ #ifdef DEFINE_GL_FRAGCOLOR
+ out vec4 gl_FragColor;
+ #endif
+ 
 uniform sampler2DRect depthMap;
 uniform sampler2DRect normalMap;
 uniform sampler2DRect giLightMap;
@@ -38,7 +40,7 @@ uniform int kern_length;
 uniform float kern_scale;
 uniform vec3 blur_quad;
 
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
 
 uniform mat4 inv_proj;
 uniform vec2 screen_res;
@@ -94,7 +96,5 @@ void main()
 	
 	col = col*col*blur_quad.x + col*blur_quad.y + blur_quad.z;
 	
-	gl_FragData[0].xyz = col;
-	
-	//gl_FragColor = ccol;
+	gl_FragColor.rgb = col;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl b/indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl
index 6231ee68b75c69b50b1cbd480d448b468fd89833..0d5c8e728740cfb0bb3b7db95efab885d7895577 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/postgiV.glsl
@@ -22,16 +22,19 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
+
+uniform mat4 modelview_projection_matrix;
  
+ATTRIBUTE vec3 position;
 
 
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
 uniform vec2 screen_res;
 
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform(); 
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
+	vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	gl_Position = pos; 	
 	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl
index 615317febfd24ef4fb9ba842143098fa2658d118..c1fb7b55d4f2a5b84d724fb35f600066ec3f58a9 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskF.glsl
@@ -22,19 +22,24 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform float minimum_alpha;
-uniform float maximum_alpha;
 
 uniform sampler2D diffuseMap;
 
-varying vec4 post_pos;
+VARYING vec4 post_pos;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 void main() 
 {
-	float alpha = texture2D(diffuseMap, gl_TexCoord[0].xy).a * gl_Color.a;
+	float alpha = diffuseLookup(vary_texcoord0.xy).a * vertex_color.a;
 
-	if (alpha < minimum_alpha || alpha > maximum_alpha)
+	if (alpha < minimum_alpha)
 	{
 		discard;
 	}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl
index 4be18a9c5e4970edc957ab4c08f61bc5248a17dd..7d3b06c56e7517c684c978abf34c808256257a14 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/shadowAlphaMaskV.glsl
@@ -22,20 +22,30 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
 
-varying vec4 post_pos;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 post_pos;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void passTextureIndex();
 
 void main()
 {
 	//transform vertex
-	vec4 pos = gl_ModelViewProjectionMatrix*gl_Vertex;
-	
+	vec4 pos = modelview_projection_matrix*vec4(position.xyz, 1.0);
 	post_pos = pos;
 	
 	gl_Position = vec4(pos.x, pos.y, pos.w*0.5, pos.w);
 	
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-	gl_FrontColor = gl_Color;
+	passTextureIndex();
+
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+	vertex_color = diffuse_color;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl
index 541f08d5fe71b4bdaef723fbe5936260e6cfe51a..bf75ca262ec1f72161a845c7a3d350c43b32594d 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/shadowF.glsl
@@ -23,9 +23,11 @@
  * $/LicenseInfo$
  */
  
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
-
-varying vec4 post_pos;
+VARYING vec4 post_pos;
 
 void main() 
 {
diff --git a/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl
index fc3ff45614876bae6c0e6d19ebaa8f7307ab49df..8b46e81f90c03a12ed5d3b4ade3cf217c920d5db 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/shadowV.glsl
@@ -22,15 +22,17 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 modelview_projection_matrix;
 
-varying vec4 post_pos;
+ATTRIBUTE vec3 position;
+
+VARYING vec4 post_pos;
 
 void main()
 {
 	//transform vertex
-	vec4 pos = gl_ModelViewProjectionMatrix*gl_Vertex;
+	vec4 pos = modelview_projection_matrix*vec4(position.xyz, 1.0);
 	
 	post_pos = pos;
 	
diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl
index 59c0a994cdd79d075696a7edb5af51d3dc5e0ff4..96ad0aa93a374f2564840ea123677797f22c9a07 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/skyF.glsl
@@ -23,13 +23,15 @@
  * $/LicenseInfo$
  */
  
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
 
 /////////////////////////////////////////////////////////////////////////
 // The fragment shader for the sky
 /////////////////////////////////////////////////////////////////////////
 
-varying vec4 vary_HazeColor;
+VARYING vec4 vary_HazeColor;
 
 uniform sampler2D cloud_noise_texture;
 uniform vec4 gamma;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl
index 3a44bb6d261af16a1a9fc5f87539a66c9edc32ea..721de18e0b15b05cbd1786833dee4ddb3ed44ad5 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/skyV.glsl
@@ -22,15 +22,19 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
 
 // SKY ////////////////////////////////////////////////////////////////////////
 // The vertex shader for creating the atmospheric sky
 ///////////////////////////////////////////////////////////////////////////////
 
 // Output parameters
-varying vec4 vary_HazeColor;
+VARYING vec4 vary_HazeColor;
+VARYING vec2 vary_texcoord0;
 
 // Inputs
 uniform vec3 camPosLocal;
@@ -57,12 +61,12 @@ void main()
 {
 
 	// World / view / projection
-	gl_Position = ftransform();
-	gl_TexCoord[0] = gl_MultiTexCoord0;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	vary_texcoord0 = texcoord0;
 
 	// Get relative position
-	vec3 P = gl_Vertex.xyz - camPosLocal.xyz + vec3(0,50,0);
-	//vec3 P = gl_Vertex.xyz + vec3(0,50,0);
+	vec3 P = position.xyz - camPosLocal.xyz + vec3(0,50,0);
+	//vec3 P = position.xyz + vec3(0,50,0);
 
 	// Set altitude
 	if (P.y > 0.)
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
index 855d89ebe605a4b2f921f175131850c59ba95e38..51110ae4df7275bf79e9f1a081b6f0855863c99c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl
@@ -23,17 +23,18 @@
  * $/LicenseInfo$
  */
  
-
-
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2DRect diffuseRect;
 uniform sampler2DRect specularRect;
 uniform sampler2DRect positionMap;
 uniform sampler2DRect normalMap;
 uniform sampler2DRect lightMap;
 uniform sampler2DRect depthMap;
-uniform sampler2D	  noiseMap;
 uniform samplerCube environmentMap;
 uniform sampler2D	  lightFunc;
 
@@ -58,13 +59,11 @@ uniform vec4 distance_multiplier;
 uniform vec4 max_y;
 uniform vec4 glow;
 uniform float scene_light_strength;
-uniform vec3 env_mat[3];
-//uniform mat4 shadow_matrix[3];
-//uniform vec4 shadow_clip;
+uniform mat3 env_mat;
 uniform mat3 ssao_effect_mat;
 
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
+uniform vec3 sun_dir;
+VARYING vec2 vary_fragcoord;
 
 vec3 vary_PositionEye;
 
@@ -146,10 +145,6 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {
 	vec3 P = inPositionEye;
 	setPositionEye(P);
 	
-	//(TERRAIN) limit altitude
-	if (P.y > max_y.x) P *= (max_y.x / P.y);
-	if (P.y < -max_y.x) P *= (-max_y.x / P.y);
-
 	vec3 tmpLightnorm = lightnorm.xyz;
 
 	vec3 Pn = normalize(P);
@@ -281,9 +276,8 @@ void main()
 	vec3 pos = getPosition_d(tc, depth).xyz;
 	vec3 norm = texture2DRect(normalMap, tc).xyz;
 	norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-	//vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz;
-	
-	float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
+		
+	float da = max(dot(norm.xyz, sun_dir.xyz), 0.0);
 	
 	vec4 diffuse = texture2DRect(diffuseRect, tc);
 	vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
@@ -304,13 +298,18 @@ void main()
 			// the old infinite-sky shiny reflection
 			//
 			vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
-			float sa = dot(refnormpersp, vary_light.xyz);
-			vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).a;
+			float sa = dot(refnormpersp, sun_dir.xyz);
+			vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).r;
 			
 			// add the two types of shiny together
 			vec3 spec_contrib = dumbshiny * spec.rgb;
 			bloom = dot(spec_contrib, spec_contrib);
 			col += spec_contrib;
+
+			//add environmentmap
+			vec3 env_vec = env_mat * refnormpersp;
+			col = mix(col.rgb, textureCube(environmentMap, env_vec).rgb, 
+				max(spec.a-diffuse.a*2.0, 0.0)); 
 		}
 	
 		col = atmosLighting(col);
@@ -324,5 +323,6 @@ void main()
 	}
 
 	gl_FragColor.rgb = col;
+
 	gl_FragColor.a = bloom;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl
deleted file mode 100644
index f118b0da2a486be459313fdb707d0a1cff4420a2..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl
+++ /dev/null
@@ -1,342 +0,0 @@
-/** 
- * @file softenLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS normalMap;
-uniform sampler2DMS depthMap;
-uniform sampler2D	  noiseMap;
-uniform samplerCube environmentMap;
-uniform sampler2D	  lightFunc;
-
-uniform float blur_size;
-uniform float blur_fidelity;
-
-// Inputs
-uniform vec4 morphFactor;
-uniform vec3 camPosLocal;
-//uniform vec4 camPosWorld;
-uniform vec4 gamma;
-uniform vec4 lightnorm;
-uniform vec4 sunlight_color;
-uniform vec4 ambient;
-uniform vec4 blue_horizon;
-uniform vec4 blue_density;
-uniform vec4 haze_horizon;
-uniform vec4 haze_density;
-uniform vec4 cloud_shadow;
-uniform vec4 density_multiplier;
-uniform vec4 distance_multiplier;
-uniform vec4 max_y;
-uniform vec4 glow;
-uniform float scene_light_strength;
-uniform vec3 env_mat[3];
-//uniform mat4 shadow_matrix[3];
-//uniform vec4 shadow_clip;
-uniform mat3 ssao_effect_mat;
-
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
-
-vec3 vary_PositionEye;
-
-vec3 vary_SunlitColor;
-vec3 vary_AmblitColor;
-vec3 vary_AdditiveColor;
-vec3 vary_AtmosAttenuation;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-vec4 getPosition_d(vec2 pos_screen, float depth)
-{
-	vec2 sc = pos_screen.xy*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-vec3 getPositionEye()
-{
-	return vary_PositionEye;
-}
-vec3 getSunlitColor()
-{
-	return vary_SunlitColor;
-}
-vec3 getAmblitColor()
-{
-	return vary_AmblitColor;
-}
-vec3 getAdditiveColor()
-{
-	return vary_AdditiveColor;
-}
-vec3 getAtmosAttenuation()
-{
-	return vary_AtmosAttenuation;
-}
-
-
-void setPositionEye(vec3 v)
-{
-	vary_PositionEye = v;
-}
-
-void setSunlitColor(vec3 v)
-{
-	vary_SunlitColor = v;
-}
-
-void setAmblitColor(vec3 v)
-{
-	vary_AmblitColor = v;
-}
-
-void setAdditiveColor(vec3 v)
-{
-	vary_AdditiveColor = v;
-}
-
-void setAtmosAttenuation(vec3 v)
-{
-	vary_AtmosAttenuation = v;
-}
-
-void calcAtmospherics(vec3 inPositionEye, float ambFactor) {
-
-	vec3 P = inPositionEye;
-	setPositionEye(P);
-	
-	//(TERRAIN) limit altitude
-	if (P.y > max_y.x) P *= (max_y.x / P.y);
-	if (P.y < -max_y.x) P *= (-max_y.x / P.y);
-
-	vec3 tmpLightnorm = lightnorm.xyz;
-
-	vec3 Pn = normalize(P);
-	float Plen = length(P);
-
-	vec4 temp1 = vec4(0);
-	vec3 temp2 = vec3(0);
-	vec4 blue_weight;
-	vec4 haze_weight;
-	vec4 sunlight = sunlight_color;
-	vec4 light_atten;
-
-	//sunlight attenuation effect (hue and brightness) due to atmosphere
-	//this is used later for sunlight modulation at various altitudes
-	light_atten = (blue_density * 1.0 + vec4(haze_density.r) * 0.25) * (density_multiplier.x * max_y.x);
-		//I had thought blue_density and haze_density should have equal weighting,
-		//but attenuation due to haze_density tends to seem too strong
-
-	temp1 = blue_density + vec4(haze_density.r);
-	blue_weight = blue_density / temp1;
-	haze_weight = vec4(haze_density.r) / temp1;
-
-	//(TERRAIN) compute sunlight from lightnorm only (for short rays like terrain)
-	temp2.y = max(0.0, tmpLightnorm.y);
-	temp2.y = 1. / temp2.y;
-	sunlight *= exp( - light_atten * temp2.y);
-
-	// main atmospheric scattering line integral
-	temp2.z = Plen * density_multiplier.x;
-
-	// Transparency (-> temp1)
-	// ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier.x in a variable because the ati
-	// compiler gets confused.
-	temp1 = exp(-temp1 * temp2.z * distance_multiplier.x);
-
-	//final atmosphere attenuation factor
-	setAtmosAttenuation(temp1.rgb);
-	
-	//compute haze glow
-	//(can use temp2.x as temp because we haven't used it yet)
-	temp2.x = dot(Pn, tmpLightnorm.xyz);
-	temp2.x = 1. - temp2.x;
-		//temp2.x is 0 at the sun and increases away from sun
-	temp2.x = max(temp2.x, .03);	//was glow.y
-		//set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
-	temp2.x *= glow.x;
-		//higher glow.x gives dimmer glow (because next step is 1 / "angle")
-	temp2.x = pow(temp2.x, glow.z);
-		//glow.z should be negative, so we're doing a sort of (1 / "angle") function
-
-	//add "minimum anti-solar illumination"
-	temp2.x += .25;
-	
-	//increase ambient when there are more clouds
-	vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow.x * 0.5;
-	
-	/*  decrease value and saturation (that in HSV, not HSL) for occluded areas
-	 * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html
-	 * // The following line of code performs the equivalent of:
-	 * float ambAlpha = tmpAmbient.a;
-	 * float ambValue = dot(vec3(tmpAmbient), vec3(0.577)); // projection onto <1/rt(3), 1/rt(3), 1/rt(3)>, the neutral white-black axis
-	 * vec3 ambHueSat = vec3(tmpAmbient) - vec3(ambValue);
-	 * tmpAmbient = vec4(RenderSSAOEffect.valueFactor * vec3(ambValue) + RenderSSAOEffect.saturationFactor *(1.0 - ambFactor) * ambHueSat, ambAlpha);
-	 */
-	tmpAmbient = vec4(mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor), tmpAmbient.a);
-
-	//haze color
-	setAdditiveColor(
-		vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow.x) + tmpAmbient)
-	  + (haze_horizon.r * haze_weight) * (sunlight*(1.-cloud_shadow.x) * temp2.x
-		  + tmpAmbient)));
-
-	//brightness of surface both sunlight and ambient
-	setSunlitColor(vec3(sunlight * .5));
-	setAmblitColor(vec3(tmpAmbient * .25));
-	setAdditiveColor(getAdditiveColor() * vec3(1.0 - temp1));
-}
-
-vec3 atmosLighting(vec3 light)
-{
-	light *= getAtmosAttenuation().r;
-	light += getAdditiveColor();
-	return (2.0 * light);
-}
-
-vec3 atmosTransport(vec3 light) {
-	light *= getAtmosAttenuation().r;
-	light += getAdditiveColor() * 2.0;
-	return light;
-}
-vec3 atmosGetDiffuseSunlightColor()
-{
-	return getSunlitColor();
-}
-
-vec3 scaleDownLight(vec3 light)
-{
-	return (light / scene_light_strength );
-}
-
-vec3 scaleUpLight(vec3 light)
-{
-	return (light * scene_light_strength);
-}
-
-vec3 atmosAmbient(vec3 light)
-{
-	return getAmblitColor() + light / 2.0;
-}
-
-vec3 atmosAffectDirectionalLight(float lightIntensity)
-{
-	return getSunlitColor() * lightIntensity;
-}
-
-vec3 scaleSoftClip(vec3 light)
-{
-	//soft clip effect:
-	light = 1. - clamp(light, vec3(0.), vec3(1.));
-	light = 1. - pow(light, gamma.xxx);
-
-	return light;
-}
-
-vec4 texture2DMS(sampler2DMS tex, ivec2 tc)
-{
-	vec4 ret = vec4(0,0,0,0);
-
-	for (int i = 0; i < samples; ++i)
-	{
-		 ret += texelFetch(tex,tc,i);
-	}
-
-	return ret/samples;
-}
-
-void main() 
-{
-	vec2 tc = vary_fragcoord.xy;
-	ivec2 itc = ivec2(tc);
-
-	vec4 fcol = vec4(0,0,0,0);
-
-	for (int i = 0; i < samples; ++i)
-	{
-		float depth = texelFetch(depthMap, itc, i).r;
-		vec3 pos = getPosition_d(tc, depth).xyz;
-		vec3 norm = texelFetch(normalMap, itc, i).xyz;
-
-		norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-		//vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz;
-	
-		float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
-	
-		vec4 diffuse = texelFetch(diffuseRect, itc, i);
-		vec3 col;
-		float bloom = 0.0;
-
-		if (diffuse.a < 0.9)
-		{
-			vec4 spec = texelFetch(specularRect, itc, i);
-	
-			calcAtmospherics(pos.xyz, 1.0);
-	
-			col = atmosAmbient(vec3(0));
-			col += atmosAffectDirectionalLight(max(min(da, 1.0), diffuse.a));
-	
-			col *= diffuse.rgb;
-	
-			if (spec.a > 0.0) // specular reflection
-			{
-				// the old infinite-sky shiny reflection
-				//
-				vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
-				float sa = dot(refnormpersp, vary_light.xyz);
-				vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).a;
-
-				// add the two types of shiny together
-				vec3 spec_contrib = dumbshiny * spec.rgb;
-				bloom = dot(spec_contrib, spec_contrib);
-				col += spec_contrib;
-			}
-
-			col = atmosLighting(col);
-			col = scaleSoftClip(col);
-			col = mix(col, diffuse.rgb, diffuse.a);
-		}
-		else
-		{
-			col = diffuse.rgb;
-		}
-
-		fcol += vec4(col, bloom);
-	}
-				
-	gl_FragColor = fcol/samples;
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl
index fed238510a0281a7f4b81520f4c81b9a3972fe89..c6031fc45a28a184822ff9d1118a2443e8ec76e6 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightV.glsl
@@ -23,22 +23,18 @@
  * $/LicenseInfo$
  */
  
+uniform mat4 modelview_projection_matrix;
 
+ATTRIBUTE vec3 position;
 
 uniform vec2 screen_res;
 
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform(); 
-	
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
-	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
+	vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	gl_Position = pos; 
 		
-	vec4 tex = gl_MultiTexCoord0;
-	tex.w = 1.0;
-	
-	vary_light = gl_MultiTexCoord0;
+	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
index 7363bd671512a03269c14e4da241d02ee81ca1b9..cc0f4e5b6bff3cfe0e0478986857417476433719 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/spotLightF.glsl
@@ -23,17 +23,18 @@
  * $/LicenseInfo$
  */
 
-
-
+ 
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2DRect diffuseRect;
 uniform sampler2DRect specularRect;
 uniform sampler2DRect depthMap;
 uniform sampler2DRect normalMap;
-uniform samplerCube environmentMap;
 uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
 uniform sampler2D projectionMap;
 
 uniform mat4 proj_mat; //screen space to light space
@@ -50,9 +51,12 @@ uniform float far_clip;
 uniform vec3 proj_origin; //origin of projection to be used for angular attenuation
 uniform float sun_wash;
 
-varying vec4 vary_light;
+uniform vec3 center;
+uniform vec3 color;
+uniform float falloff;
+uniform float size;
 
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
 uniform vec2 screen_res;
 
 uniform mat4 inv_proj;
@@ -78,9 +82,9 @@ void main()
 	frag.xy *= screen_res;
 	
 	vec3 pos = getPosition(frag.xy).xyz;
-	vec3 lv = vary_light.xyz-pos.xyz;
+	vec3 lv = center.xyz-pos.xyz;
 	float dist2 = dot(lv,lv);
-	dist2 /= vary_light.w;
+	dist2 /= size;
 	if (dist2 > 1.0)
 	{
 		discard;
@@ -100,7 +104,7 @@ void main()
 	
 	proj_tc.xyz /= proj_tc.w;
 	
-	float fa = gl_Color.a+1.0;
+	float fa = falloff+1.0;
 	float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
 	
 	lv = proj_origin-pos.xyz;
@@ -126,7 +130,7 @@ void main()
 			
 			vec4 plcol = texture2DLod(projectionMap, proj_tc.xy, lod);
 		
-			vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
+			vec3 lcol = color.rgb * plcol.rgb * plcol.a;
 			
 			lit = da * dist_atten * noise;
 			
@@ -145,7 +149,7 @@ void main()
 		
 		amb_da = min(amb_da, 1.0-lit);
 		
-		col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
+		col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
 	}
 	
 	
@@ -174,7 +178,7 @@ void main()
 					stc.y > 0.0)
 				{
 					vec4 scol = texture2DLod(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
-					col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb;
+					col += dist_atten*scol.rgb*color.rgb*scol.a*spec.rgb;
 				}
 			}
 		}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl
deleted file mode 100644
index 0c0171881fbb0736eeb414ac417cdbc4835481a3..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/spotLightMSF.glsl
+++ /dev/null
@@ -1,252 +0,0 @@
-/** 
- * @file multiSpotLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
-
-
-
-//class 1 -- no shadows
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
-uniform sampler2D projectionMap;
-
-uniform mat4 proj_mat; //screen space to light space
-uniform float proj_near; //near clip for projection
-uniform vec3 proj_p; //plane projection is emitting from (in screen space)
-uniform vec3 proj_n;
-uniform float proj_focus; //distance from plane to begin blurring
-uniform float proj_lod;  //(number of mips in proj map)
-uniform float proj_range; //range between near clip and far clip plane of projection
-uniform float proj_ambient_lod;
-uniform float proj_ambiance;
-uniform float near_clip;
-uniform float far_clip;
-
-uniform vec3 proj_origin; //origin of projection to be used for angular attenuation
-uniform float sun_wash;
-uniform int proj_shadow_idx;
-uniform float shadow_fade;
-
-varying vec4 vary_light;
-
-varying vec4 vary_fragcoord;
-uniform vec2 screen_res;
-
-uniform mat4 inv_proj;
-
-vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
-{
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	
-	vec2 dist = tc-vec2(0.5);
-	
-	float det = max(1.0-lod/(proj_lod*0.5), 0.0);
-	
-	float d = dot(dist,dist);
-		
-	ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0);
-	
-	return ret;
-}
-
-vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
-{
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	
-	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-	
-	float det = min(lod/(proj_lod*0.5), 1.0);
-	
-	float d = min(dist.x, dist.y);
-	
-	float edge = 0.25*det;
-		
-	ret *= clamp(d/edge, 0.0, 1.0);
-	
-	return ret;
-}
-
-vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
-{
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	
-	vec2 dist = tc-vec2(0.5);
-	
-	float d = dot(dist,dist);
-		
-	ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
-	
-	return ret;
-}
-
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
-	float depth = texelFetch(depthMap, pos_screen, sample).r;
-	vec2 sc = vec2(pos_screen.xy)*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-void main() 
-{
-	vec4 frag = vary_fragcoord;
-	frag.xyz /= frag.w;
-	frag.xyz = frag.xyz*0.5+0.5;
-	frag.xy *= screen_res;
-	ivec2 itc = ivec2(frag.xy);
-
-	vec3 fcol = vec3(0,0,0);
-	int wght = 0;
-	
-	for (int i = 0; i < samples; ++i)
-	{
-		vec3 pos = getPosition(itc, i).xyz;
-		vec3 lv = vary_light.xyz-pos.xyz;
-		float dist2 = dot(lv,lv);
-		dist2 /= vary_light.w;
-		if (dist2 <= 1.0)
-		{
-			vec3 norm = texelFetch(normalMap, itc, i).xyz*2.0-1.0;
-	
-			norm = normalize(norm);
-			float l_dist = -dot(lv, proj_n);
-	
-			vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
-			if (proj_tc.z >= 0.0)
-			{
-				proj_tc.xyz /= proj_tc.w;
-	
-				float fa = gl_Color.a+1.0;
-				float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);
-				if (dist_atten > 0.0)
-				{
-					lv = proj_origin-pos.xyz;
-					lv = normalize(lv);
-					float da = dot(norm, lv);
-		
-					vec3 col = vec3(0,0,0);
-		
-					vec3 diff_tex = texelFetch(diffuseRect, itc, i).rgb;
-		
-					float noise = texture2D(noiseMap, frag.xy/128.0).b;
-					if (proj_tc.z > 0.0 &&
-						proj_tc.x < 1.0 &&
-						proj_tc.y < 1.0 &&
-						proj_tc.x > 0.0 &&
-						proj_tc.y > 0.0)
-					{
-						float lit = 0.0;
-						float amb_da = proj_ambiance;
-		
-						if (da > 0.0)
-						{
-							float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
-							float lod = diff * proj_lod;
-			
-							vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
-		
-							vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
-			
-							lit = da * dist_atten * noise;
-			
-							col = lcol*lit*diff_tex;
-							amb_da += (da*0.5)*proj_ambiance;
-						}
-		
-						//float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
-						vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
-							
-						amb_da += (da*da*0.5+0.5)*proj_ambiance;
-				
-						amb_da *= dist_atten * noise;
-			
-						amb_da = min(amb_da, 1.0-lit);
-			
-						col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
-					}
-	
-	
-					vec4 spec = texelFetch(specularRect, itc, i);
-					if (spec.a > 0.0)
-					{
-						vec3 ref = reflect(normalize(pos), norm);
-		
-						//project from point pos in direction ref to plane proj_p, proj_n
-						vec3 pdelta = proj_p-pos;
-						float ds = dot(ref, proj_n);
-		
-						if (ds < 0.0)
-						{
-							vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
-			
-							vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
-
-							if (stc.z > 0.0)
-							{
-								stc.xy /= stc.w;
-
-								float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0);
-				
-								stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5);
-								
-								if (stc.x < 1.0 &&
-									stc.y < 1.0 &&
-									stc.x > 0.0 &&
-									stc.y > 0.0)
-								{
-									vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
-									col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb;
-								}
-							}
-						}
-					}
-	
-					fcol += col;
-					++wght;
-				}
-			}
-		}
-	}
-
-	if (wght <= 0)
-	{
-		discard;
-	}
-
-	gl_FragColor.rgb = fcol/samples;	
-	gl_FragColor.a = 0.0;
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl
index 4ab59d4d66ad035398d495859e131304ddd45adb..03fccd276614c2bd3393bc2f2d6d725a7335f079 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/starsF.glsl
@@ -22,14 +22,19 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 uniform sampler2D diffuseMap;
 
 void main() 
 {
-	vec4 col = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy);
+	vec4 col = vertex_color * texture2D(diffuseMap, vary_texcoord0.xy);
 	
 	gl_FragData[0] = col;
 	gl_FragData[1] = vec4(0,0,0,0);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl b/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl
index 84adf6bc41ade89e5445446f9f62b47fc597928e..8bc5b063799a77d7edc481fc0283c1577dc319c0 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/starsV.glsl
@@ -22,14 +22,21 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
 
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 void main()
 {
 	//transform vertex
-	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; 
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-	gl_FrontColor = gl_Color;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0); 
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+	vertex_color = diffuse_color;
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
index 78ea15e87a9b38ae4b76ce00a52fb7541af45222..adc7c5d005881dc9589e0e6664e04e25260d73a4 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightF.glsl
@@ -23,12 +23,14 @@
  * $/LicenseInfo$
  */
  
-
-
 //class 1, no shadow, no SSAO, should never be called
 
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 void main() 
 {
 	gl_FragColor = vec4(0,0,0,0);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightMSF.glsl
deleted file mode 100644
index 78ea15e87a9b38ae4b76ce00a52fb7541af45222..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightMSF.glsl
+++ /dev/null
@@ -1,35 +0,0 @@
-/** 
- * @file sunLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-//class 1, no shadow, no SSAO, should never be called
-
-#extension GL_ARB_texture_rectangle : enable
-
-void main() 
-{
-	gl_FragColor = vec4(0,0,0,0);
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
index 2f880d65dd97ead1a7d37b5985980959ff401bfc..fc5959a33c49545105a9b7857728303bda990758 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOF.glsl
@@ -23,9 +23,12 @@
  */
  
 
-
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 //class 1 -- no shadow, SSAO only
 
 uniform sampler2DRect depthMap;
@@ -41,8 +44,7 @@ uniform float ssao_max_radius;
 uniform float ssao_factor;
 uniform float ssao_factor_inv;
 
-varying vec2 vary_fragcoord;
-varying vec4 vary_light;
+VARYING vec2 vary_fragcoord;
 
 uniform mat4 inv_proj;
 uniform vec2 screen_res;
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl
deleted file mode 100644
index abb64334ed21dedcf3d2b9e18cfe87441c30b767..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightSSAOMSF.glsl
+++ /dev/null
@@ -1,140 +0,0 @@
-/** 
- * @file sunLightSSAOF.glsl
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-//class 1 -- no shadow, SSAO only
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2D noiseMap;
-
-
-// Inputs
-uniform mat4 shadow_matrix[6];
-uniform vec4 shadow_clip;
-uniform float ssao_radius;
-uniform float ssao_max_radius;
-uniform float ssao_factor;
-uniform float ssao_factor_inv;
-
-varying vec2 vary_fragcoord;
-varying vec4 vary_light;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-uniform float shadow_bias;
-uniform float shadow_offset;
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
-	float depth = texelFetch(depthMap, pos_screen, sample).r;
-	vec2 sc = pos_screen.xy*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-//calculate decreases in ambient lighting when crowded out (SSAO)
-float calcAmbientOcclusion(vec4 pos, vec3 norm, int sample)
-{
-	float ret = 1.0;
-	
-	vec2 kern[8];
-	// exponentially (^2) distant occlusion samples spread around origin
-	kern[0] = vec2(-1.0, 0.0) * 0.125*0.125;
-	kern[1] = vec2(1.0, 0.0) * 0.250*0.250;
-	kern[2] = vec2(0.0, 1.0) * 0.375*0.375;
-	kern[3] = vec2(0.0, -1.0) * 0.500*0.500;
-	kern[4] = vec2(0.7071, 0.7071) * 0.625*0.625;
-	kern[5] = vec2(-0.7071, -0.7071) * 0.750*0.750;
-	kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875;
-	kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000;
-
-	vec2 pos_screen = vary_fragcoord.xy;
-	vec3 pos_world = pos.xyz;
-	vec2 noise_reflect = texture2D(noiseMap, vary_fragcoord.xy/128.0).xy;
-		
-	float angle_hidden = 0.0;
-	int points = 0;
-		
-	float scale = min(ssao_radius / -pos_world.z, ssao_max_radius);
-		
-	// it was found that keeping # of samples a constant was the fastest, probably due to compiler optimizations unrolling?)
-	for (int i = 0; i < 8; i++)
-	{
-		ivec2 samppos_screen = ivec2(pos_screen + scale * reflect(kern[i], noise_reflect));
-		vec3 samppos_world = getPosition(samppos_screen, sample).xyz; 
-			
-		vec3 diff = pos_world - samppos_world;
-		float dist2 = dot(diff, diff);
-			
-		// assume each sample corresponds to an occluding sphere with constant radius, constant x-sectional area
-		// --> solid angle shrinking by the square of distance
-		//radius is somewhat arbitrary, can approx with just some constant k * 1 / dist^2
-		//(k should vary inversely with # of samples, but this is taken care of later)
-			
-		angle_hidden = angle_hidden + float(dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) * min(1.0/dist2, ssao_factor_inv);
-			
-		// 'blocked' samples (significantly closer to camera relative to pos_world) are "no data", not "no occlusion" 
-		points = points + int(diff.z > -1.0);
-	}
-		
-	angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0);
-		
-	ret = (1.0 - (float(points != 0) * angle_hidden));
-	
-	return min(ret, 1.0);
-}
-
-void main() 
-{
-	vec2 pos_screen = vary_fragcoord.xy;
-	ivec2 itc = ivec2(pos_screen);
-		
-	float col = 0;
-
-	for (int i = 0; i < samples; i++)
-	{
-		vec4 pos = getPosition(itc, i);
-		vec3 norm = texelFetch(normalMap, itc, i).xyz;
-		norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-		col += calcAmbientOcclusion(pos,norm,i);
-	}
-
-	col /= samples;
-
-	gl_FragColor[0] = 1.0;
-	gl_FragColor[1] = col;
-	gl_FragColor[2] = 1.0; 
-	gl_FragColor[3] = 1.0;
-}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl
index e7ab11c6ed2866e939c32c39def4d78d7a430dd6..473d6df8faa82fbfe02a63458993bec2cb6f2be3 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/sunLightV.glsl
@@ -22,24 +22,20 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 modelview_projection_matrix;
+ 
+ATTRIBUTE vec3 position;
 
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
 
 uniform vec2 screen_res;
 
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform(); 
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
-	vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;	
-	vec4 tex = gl_MultiTexCoord0;
-	tex.w = 1.0;
+	vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	gl_Position = pos; 
 	
-	vary_light = gl_MultiTexCoord0;
-		
-	gl_FrontColor = gl_Color;
+	vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;	
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl b/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl
index c6578ea177c07636ec8d4b8ee523c938e7f9ef46..5522e6c41d041008c8cae3aab8a6dfbe86473281 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/terrainF.glsl
@@ -23,7 +23,9 @@
  * $/LicenseInfo$
  */
  
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
 
 uniform sampler2D detail_0;
 uniform sampler2D detail_1;
@@ -31,24 +33,26 @@ uniform sampler2D detail_2;
 uniform sampler2D detail_3;
 uniform sampler2D alpha_ramp;
 
-varying vec3 vary_normal;
+VARYING vec3 vary_normal;
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
 
 void main()
 {
 	/// Note: This should duplicate the blending functionality currently used for the terrain rendering.
 	
-	vec4 color0 = texture2D(detail_0, gl_TexCoord[0].xy);
-	vec4 color1 = texture2D(detail_1, gl_TexCoord[0].xy);
-	vec4 color2 = texture2D(detail_2, gl_TexCoord[0].xy);
-	vec4 color3 = texture2D(detail_3, gl_TexCoord[0].xy);
+	vec4 color0 = texture2D(detail_0, vary_texcoord0.xy);
+	vec4 color1 = texture2D(detail_1, vary_texcoord0.xy);
+	vec4 color2 = texture2D(detail_2, vary_texcoord0.xy);
+	vec4 color3 = texture2D(detail_3, vary_texcoord0.xy);
 
-	float alpha1 = texture2D(alpha_ramp, gl_TexCoord[0].zw).a;
-	float alpha2 = texture2D(alpha_ramp,gl_TexCoord[1].xy).a;
-	float alphaFinal = texture2D(alpha_ramp, gl_TexCoord[1].zw).a;
+	float alpha1 = texture2D(alpha_ramp, vary_texcoord0.zw).a;
+	float alpha2 = texture2D(alpha_ramp,vary_texcoord1.xy).a;
+	float alphaFinal = texture2D(alpha_ramp, vary_texcoord1.zw).a;
 	vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal );
 	
 	gl_FragData[0] = vec4(outColor.rgb, 0.0);
-	gl_FragData[1] = vec4(outColor.rgb*0.2, 0.2);
+	gl_FragData[1] = vec4(0,0,0,0);
 	vec3 nvn = normalize(vary_normal);
 	gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl b/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl
index fc19a7370919e5c6c3da58e1d6df89d30d490f13..5effee4e4eabd76c2940129ebf68afb46f0febda 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/terrainV.glsl
@@ -22,10 +22,24 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
 
-varying vec3 vary_normal;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec2 texcoord1;
+
+VARYING vec3 vary_normal;
+
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
+
+uniform vec4 object_plane_s;
+uniform vec4 object_plane_t;
 
 vec4 texgen_object(vec4  vpos, vec4 tc, mat4 mat, vec4 tp0, vec4 tp1)
 {
@@ -44,16 +58,16 @@ vec4 texgen_object(vec4  vpos, vec4 tc, mat4 mat, vec4 tp0, vec4 tp1)
 void main()
 {
 	//transform vertex
-	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
 			
-	vary_normal = normalize(gl_NormalMatrix * gl_Normal);
+	vary_normal = normalize(normal_matrix * normal);
 	
 	// Transform and pass tex coords
- 	gl_TexCoord[0].xy = texgen_object(gl_Vertex, gl_MultiTexCoord0, gl_TextureMatrix[0], gl_ObjectPlaneS[0], gl_ObjectPlaneT[0]).xy;
+ 	vary_texcoord0.xy = texgen_object(vec4(position, 1.0), vec4(texcoord0,0,1), texture_matrix0, object_plane_s, object_plane_t).xy;
 	
-	vec4 t = gl_MultiTexCoord1;
+	vec4 t = vec4(texcoord1,0,1);
 	
-	gl_TexCoord[0].zw = t.xy;
-	gl_TexCoord[1].xy = t.xy-vec2(2.0, 0.0);
-	gl_TexCoord[1].zw = t.xy-vec2(1.0, 0.0);
+	vary_texcoord0.zw = t.xy;
+	vary_texcoord1.xy = t.xy-vec2(2.0, 0.0);
+	vary_texcoord1.zw = t.xy-vec2(1.0, 0.0);
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl
index 56a149523e0c0470013300e2d26ae19564d4ef83..ea98d6884ca63a83f63953970de7de5db3637f2c 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/treeF.glsl
@@ -22,17 +22,28 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
 
 uniform sampler2D diffuseMap;
 
-varying vec3 vary_normal;
+VARYING vec4 vertex_color;
+VARYING vec3 vary_normal;
+VARYING vec2 vary_texcoord0;
+
+uniform float minimum_alpha;
 
 void main() 
 {
-	vec4 col = texture2D(diffuseMap, gl_TexCoord[0].xy);
-	gl_FragData[0] = vec4(gl_Color.rgb*col.rgb, col.a <= 0.5 ? 0.0 : 0.005);
+	vec4 col = texture2D(diffuseMap, vary_texcoord0.xy);
+	if (col.a < minimum_alpha)
+	{
+		discard;
+	}
+
+	gl_FragData[0] = vec4(vertex_color.rgb*col.rgb, 0.0);
 	gl_FragData[1] = vec4(0,0,0,0);
 	vec3 nvn = normalize(vary_normal);
 	gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..20d01705358e1db54915476bfe3ea372a1985f88
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/treeShadowF.glsl
@@ -0,0 +1,49 @@
+/** 
+ * @file treeShadowF.glsl
+ *
+ * $LicenseInfo:firstyear=2005&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2005, 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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
+
+uniform sampler2D diffuseMap;
+
+VARYING vec4 post_pos;
+VARYING vec2 vary_texcoord0;
+
+void main() 
+{
+	float alpha = texture2D(diffuseMap, vary_texcoord0.xy).a;
+
+	if (alpha < minimum_alpha)
+	{
+		discard;
+	}
+
+	gl_FragColor = vec4(1,1,1,1);
+	
+	gl_FragDepth = max(post_pos.z/post_pos.w*0.5+0.5, 0.0);
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeShadowV.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeShadowV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..e472a753045eae3586551c8f8c41990567bd369d
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/deferred/treeShadowV.glsl
@@ -0,0 +1,45 @@
+/** 
+ * @file treeShadowV.glsl
+ *
+  * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+ 
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 post_pos;
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+	//transform vertex
+	vec4 pos = modelview_projection_matrix*vec4(position.xyz, 1.0);
+	
+	post_pos = pos;
+	
+	gl_Position = vec4(pos.x, pos.y, pos.w*0.5, pos.w);
+	
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+}
diff --git a/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl b/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl
index 01401028d643b199462be0422b1e088fe001ed56..3b6571a24a9ded2af5eee0fc1598e54b3a4b8122 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/treeV.glsl
@@ -22,18 +22,26 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+uniform mat3 normal_matrix;
 
-varying vec3 vary_normal;
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec3 vary_normal;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform(); 
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0); 
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
 	
-	vary_normal = normalize(gl_NormalMatrix * gl_Normal);
+	vary_normal = normalize(normal_matrix * normal);
 
-	gl_FrontColor = gl_Color;
+	vertex_color = vec4(1,1,1,1);
 }
diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
index c3e7371c8e4b4407ea8e53b6bb4876be390a6a4a..4c9ea24a249c076f1f62404fd68c4ed14229182e 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/waterF.glsl
@@ -23,10 +23,12 @@
  * $/LicenseInfo$
  */
  
-
-
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragData[3];
+#endif
+
 vec3 scaleSoftClip(vec3 inColor);
 vec3 atmosTransport(vec3 inColor);
 
@@ -58,10 +60,10 @@ uniform vec2 screen_res;
 uniform mat4 norm_mat; //region space to screen space
 
 //bigWave is (refCoord.w, view.w);
-varying vec4 refCoord;
-varying vec4 littleWave;
-varying vec4 view;
-varying vec4 vary_position;
+VARYING vec4 refCoord;
+VARYING vec4 littleWave;
+VARYING vec4 view;
+VARYING vec4 vary_position;
 
 void main() 
 {
diff --git a/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl b/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl
index 9d415ade85cf80b45048eca7b9d6ecb3b82499de..9734acf005a372378eff057667cb4bfea6033210 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/waterV.glsl
@@ -22,7 +22,11 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
 
 
 void calcAtmospherics(vec3 inPositionEye);
@@ -33,11 +37,11 @@ uniform float time;
 uniform vec3 eyeVec;
 uniform float waterHeight;
 
-varying vec4 refCoord;
-varying vec4 littleWave;
-varying vec4 view;
+VARYING vec4 refCoord;
+VARYING vec4 littleWave;
+VARYING vec4 view;
 
-varying vec4 vary_position;
+VARYING vec4 vary_position;
 
 float wave(vec2 v, float t, float f, vec2 d, float s) 
 {
@@ -47,43 +51,42 @@ float wave(vec2 v, float t, float f, vec2 d, float s)
 void main()
 {
 	//transform vertex
-	vec4 position = gl_Vertex;
-	mat4 modelViewProj = gl_ModelViewProjectionMatrix;
+	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);
 	
-	position.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 = position;
+	oPosition = vec4(position, 1.0);
 	oPosition.z = mix(oPosition.z, max(eyeVec.z*0.75, 0.0), d);
-	vary_position = gl_ModelViewMatrix * oPosition;
+	vary_position = modelview_matrix * oPosition;
 	oPosition = modelViewProj * oPosition;
 	
 	refCoord.xyz = oPosition.xyz + vec3(0,0,0.2);
 	
 	//get wave position parameter (create sweeping horizontal waves)
-	vec3 v = position.xyz;
+	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.
-	position.xyz = oEyeVec.xyz*(waterHeight/oEyeVec.z);
-	position.w = 1.0;
-	position = position*gl_ModelViewMatrix;
-	
-	calcAtmospherics((gl_ModelViewMatrix * gl_Vertex).xyz);
-	
+	pos.xyz = oEyeVec.xyz*(waterHeight/oEyeVec.z);
+	pos.w = 1.0;
+	pos = modelview_matrix*pos;
 	
+	calcAtmospherics(pos.xyz);
+		
 	//pass wave parameters to pixel shader
 	vec2 bigWave =  (v.xy) * vec2(0.04,0.04)  + d1 * time * 0.055;
 	//get two normal map (detail map) texture coordinates
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
index e827863436dd96e6733801b700d6f740e003d4ba..9a3d7922244c322ab315cb9d481e6af7b1a83104 100644
--- a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
+++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
@@ -23,10 +23,12 @@
  * $/LicenseInfo$
  */
  
-
-
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2DRect diffuseMap;
 uniform float minLuminance;
 uniform float maxExtractAlpha;
@@ -34,10 +36,11 @@ uniform vec3 lumWeights;
 uniform vec3 warmthWeights;
 uniform float warmthAmount;
 
+VARYING vec2 vary_texcoord0;
+
 void main()
 {
-	vec4 col = texture2DRect(diffuseMap, gl_TexCoord[0].xy);	
-
+	vec4 col = texture2DRect(diffuseMap, vary_texcoord0.xy);	
 	/// CALCULATING LUMINANCE (Using NTSC lum weights)
 	/// http://en.wikipedia.org/wiki/Luma_%28video%29
 	float lum = smoothstep(minLuminance, minLuminance+1.0, dot(col.rgb, lumWeights ) );
@@ -45,4 +48,5 @@ void main()
 	
 	gl_FragColor.rgb = col.rgb; 
 	gl_FragColor.a = max(col.a, mix(lum, warmth, warmthAmount) * maxExtractAlpha);
+	
 }
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl
deleted file mode 100644
index c2cc8ed5677a096dc946bb4e76434e1e9eb86195..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class1/effects/glowExtractMSF.glsl
+++ /dev/null
@@ -1,56 +0,0 @@
-/** 
- * @file glowExtractF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseMap;
-uniform float minLuminance;
-uniform float maxExtractAlpha;
-uniform vec3 lumWeights;
-uniform vec3 warmthWeights;
-uniform float warmthAmount;
-
-void main()
-{
-	ivec2 itc = ivec2(gl_TexCoord[0].xy);
-	vec4 fcol = vec4(0,0,0,0);
-
-	for (int i = 0; i < samples; i++)
-	{
-		vec4 col = texelFetch(diffuseMap, itc, i);	
-
-		/// CALCULATING LUMINANCE (Using NTSC lum weights)
-		/// http://en.wikipedia.org/wiki/Luma_%28video%29
-		float lum = smoothstep(minLuminance, minLuminance+1.0, dot(col.rgb, lumWeights ) );
-		float warmth = smoothstep(minLuminance, minLuminance+1.0, max(col.r * warmthWeights.r, max(col.g * warmthWeights.g, col.b * warmthWeights.b)) ); 
-	
-		fcol += vec4(col.rgb, max(col.a, mix(lum, warmth, warmthAmount) * maxExtractAlpha));
-	}
-
-	gl_FragColor = fcol/samples;
-}
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl
index 8db6d1bf24b490f88404d431491f040036bf74cc..1396dc6973539d03888ebd4c2c9862c16ac5b6f6 100644
--- a/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl
+++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractV.glsl
@@ -23,11 +23,16 @@
  * $/LicenseInfo$
  */
 
+uniform mat4 modelview_projection_matrix;
 
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec2 vary_texcoord0;
 
 void main() 
 {
-	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+	gl_Position = modelview_projection_matrix * vec4(position, 1.0);
 	
-	gl_TexCoord[0].xy = gl_MultiTexCoord0.xy;
+	vary_texcoord0.xy = texcoord0;
 }
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowF.glsl
index 75cff75ea9e9f4367c9afc2388fe2acb4ab333e7..90bb84323ccfd916072a082c7502f0a216e9a16b 100644
--- a/indra/newview/app_settings/shaders/class1/effects/glowF.glsl
+++ b/indra/newview/app_settings/shaders/class1/effects/glowF.glsl
@@ -23,11 +23,18 @@
  * $/LicenseInfo$
  */
  
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
 uniform sampler2D diffuseMap;
 uniform float glowStrength;
 
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
+VARYING vec4 vary_texcoord2;
+VARYING vec4 vary_texcoord3;
+
 void main()
 {
 
@@ -38,14 +45,14 @@ void main()
 		kern[0] = 0.25; kern[1] = 0.5; kern[2] = 0.8; kern[3] = 1.0;
 		kern[4] = 1.0;  kern[5] = 0.8; kern[6] = 0.5; kern[7] = 0.25;
 	
-	col += kern[0] * texture2D(diffuseMap, gl_TexCoord[0].xy);	
-	col += kern[1] * texture2D(diffuseMap, gl_TexCoord[1].xy);
-	col += kern[2] * texture2D(diffuseMap, gl_TexCoord[2].xy);	
-	col += kern[3] * texture2D(diffuseMap, gl_TexCoord[3].xy);	
-	col += kern[4] * texture2D(diffuseMap, gl_TexCoord[0].zw);	
-	col += kern[5] * texture2D(diffuseMap, gl_TexCoord[1].zw);	
-	col += kern[6] * texture2D(diffuseMap, gl_TexCoord[2].zw);	
-	col += kern[7] * texture2D(diffuseMap, gl_TexCoord[3].zw);	
+	col += kern[0] * texture2D(diffuseMap, vary_texcoord0.xy);	
+	col += kern[1] * texture2D(diffuseMap, vary_texcoord1.xy);
+	col += kern[2] * texture2D(diffuseMap, vary_texcoord2.xy);	
+	col += kern[3] * texture2D(diffuseMap, vary_texcoord3.xy);	
+	col += kern[4] * texture2D(diffuseMap, vary_texcoord0.zw);	
+	col += kern[5] * texture2D(diffuseMap, vary_texcoord1.zw);	
+	col += kern[6] * texture2D(diffuseMap, vary_texcoord2.zw);	
+	col += kern[7] * texture2D(diffuseMap, vary_texcoord3.zw);	
 	
 	gl_FragColor = vec4(col.rgb * glowStrength, col.a);
 }
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowV.glsl b/indra/newview/app_settings/shaders/class1/effects/glowV.glsl
index a5aacc019659c94a0dc055644970658683fd1ba0..cdb2281578ec8316010b340e7371a36068a0dc80 100644
--- a/indra/newview/app_settings/shaders/class1/effects/glowV.glsl
+++ b/indra/newview/app_settings/shaders/class1/effects/glowV.glsl
@@ -23,20 +23,28 @@
  * $/LicenseInfo$
  */
  
+uniform mat4 modelview_projection_matrix;
 
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
 
 uniform vec2 glowDelta;
 
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
+VARYING vec4 vary_texcoord2;
+VARYING vec4 vary_texcoord3;
+
 void main() 
 {
-	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+	gl_Position = modelview_projection_matrix * vec4(position, 1.0);
 	
-	gl_TexCoord[0].xy = gl_MultiTexCoord0.xy + glowDelta*(-3.5);
-	gl_TexCoord[1].xy = gl_MultiTexCoord0.xy + glowDelta*(-2.5);
-	gl_TexCoord[2].xy = gl_MultiTexCoord0.xy + glowDelta*(-1.5);
-	gl_TexCoord[3].xy = gl_MultiTexCoord0.xy + glowDelta*(-0.5);
-	gl_TexCoord[0].zw = gl_MultiTexCoord0.xy + glowDelta*(0.5);
-	gl_TexCoord[1].zw = gl_MultiTexCoord0.xy + glowDelta*(1.5);
-	gl_TexCoord[2].zw = gl_MultiTexCoord0.xy + glowDelta*(2.5);
-	gl_TexCoord[3].zw = gl_MultiTexCoord0.xy + glowDelta*(3.5);
+	vary_texcoord0.xy = texcoord0 + glowDelta*(-3.5);
+	vary_texcoord1.xy = texcoord0 + glowDelta*(-2.5);
+	vary_texcoord2.xy = texcoord0 + glowDelta*(-1.5);
+	vary_texcoord3.xy = texcoord0 + glowDelta*(-0.5);
+	vary_texcoord0.zw = texcoord0 + glowDelta*(0.5);
+	vary_texcoord1.zw = texcoord0 + glowDelta*(1.5);
+	vary_texcoord2.zw = texcoord0 + glowDelta*(2.5);
+	vary_texcoord3.zw = texcoord0 + glowDelta*(3.5);
 }
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
index c61d5a2a086c79e358bef42fd001aa6a03410d6b..18f6d91804da058317070dd5ab52208de2c56ce4 100644
--- a/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/terrainF.glsl
@@ -1,4 +1,4 @@
-/** 
+/**
  * @file terrainF.glsl
  *
  * $LicenseInfo:firstyear=2007&license=viewerlgpl$
@@ -23,19 +23,42 @@
  * $/LicenseInfo$
  */
  
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
+VARYING vec4 vertex_color;
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
 
-uniform sampler2D detail0;
-uniform sampler2D detail1;
-uniform sampler2D alphaRamp;
+uniform sampler2D detail_0;
+uniform sampler2D detail_1;
+uniform sampler2D detail_2;
+uniform sampler2D detail_3;
+uniform sampler2D alpha_ramp;
 
-void main() 
+vec3 atmosLighting(vec3 light);
+
+vec3 scaleSoftClip(vec3 color);
+
+void main()
 {
-	float a = texture2D(alphaRamp, gl_TexCoord[1].xy).a;
-	vec3 color = mix(texture2D(detail1, gl_TexCoord[2].xy).rgb,
-					 texture2D(detail0, gl_TexCoord[0].xy).rgb,
-					 a);
+	/// Note: This should duplicate the blending functionality currently used for the terrain rendering.
+	
+	/// TODO Confirm tex coords and bind them appropriately in vert shader.
+	vec4 color0 = texture2D(detail_0, vary_texcoord0.xy);
+	vec4 color1 = texture2D(detail_1, vary_texcoord0.xy);
+	vec4 color2 = texture2D(detail_2, vary_texcoord0.xy);
+	vec4 color3 = texture2D(detail_3, vary_texcoord0.xy);
 
-	gl_FragColor.rgb = color;
-	gl_FragColor.a = texture2D(alphaRamp, gl_TexCoord[3].xy).a;
+	float alpha1 = texture2D(alpha_ramp, vary_texcoord0.zw).a;
+	float alpha2 = texture2D(alpha_ramp,vary_texcoord1.xy).a;
+	float alphaFinal = texture2D(alpha_ramp, vary_texcoord1.zw).a;
+	vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal );
+	
+	/// Add WL Components
+	outColor.rgb = atmosLighting(outColor.rgb * vertex_color.rgb);
+	
+	gl_FragColor = vec4(scaleSoftClip(outColor.rgb), 1.0);
 }
+
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
index 917891c063481d1faa584299b04130a2ec3a1dda..d09c5f9247c174e8d13f7ef2e4721fbefaf31476 100644
--- a/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/terrainV.glsl
@@ -1,4 +1,4 @@
-/** 
+/**
  * @file terrainV.glsl
  *
  * $LicenseInfo:firstyear=2007&license=viewerlgpl$
@@ -22,8 +22,25 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+uniform vec4 object_plane_t;
+uniform vec4 object_plane_s;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec2 texcoord1;
+
+VARYING vec4 vertex_color;
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
+
+void calcAtmospherics(vec3 inPositionEye);
 
 vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
 
@@ -44,17 +61,27 @@ vec4 texgen_object(vec4  vpos, vec4 tc, mat4 mat, vec4 tp0, vec4 tp1)
 void main()
 {
 	//transform vertex
-	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
-			
-	vec4 pos = gl_ModelViewMatrix * gl_Vertex;
-	vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+
+	vec4 pos = modelview_matrix * vec4(position.xyz, 1.0);
+	vec3 norm = normalize(normal_matrix * normal);
+
+	calcAtmospherics(pos.xyz);
+
+	/// Potentially better without it for water.
+	pos /= pos.w;
+
+	vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), vec4(0));
 	
-	vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), gl_Color);
+	vertex_color = color;
+
+	// Transform and pass tex coords
+ 	vary_texcoord0.xy = texgen_object(vec4(position.xyz, 1.0), vec4(texcoord0,0,1), texture_matrix0, object_plane_s, object_plane_t).xy;
 	
-	gl_FrontColor = color;
+	vec4 t = vec4(texcoord1,0,1);
 	
-	gl_TexCoord[0] = texgen_object(gl_Vertex,gl_MultiTexCoord0,gl_TextureMatrix[0],gl_ObjectPlaneS[0],gl_ObjectPlaneT[0]);
-	gl_TexCoord[1] = gl_TextureMatrix[1]*gl_MultiTexCoord1;
-	gl_TexCoord[2] = texgen_object(gl_Vertex,gl_MultiTexCoord2,gl_TextureMatrix[2],gl_ObjectPlaneS[2],gl_ObjectPlaneT[2]);
-	gl_TexCoord[3] = gl_TextureMatrix[3]*gl_MultiTexCoord3;
+	vary_texcoord0.zw = t.xy;
+	vary_texcoord1.xy = t.xy-vec2(2.0, 0.0);
+	vary_texcoord1.zw = t.xy-vec2(1.0, 0.0);
 }
+
diff --git a/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl b/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl
index 711b42b95ed517f6afe7bae767e613608e372e45..e5c7ced52c0d08fa5fd3d71b378f50de73f6eb3d 100644
--- a/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/terrainWaterF.glsl
@@ -1,4 +1,4 @@
-/** 
+/**
  * @file terrainWaterF.glsl
  *
  * $LicenseInfo:firstyear=2007&license=viewerlgpl$
@@ -22,22 +22,44 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
-// this class1 shader is just a copy of terrainF
+VARYING vec4 vertex_color;
+VARYING vec4 vary_texcoord0;
+VARYING vec4 vary_texcoord1;
 
-uniform sampler2D detail0;
-uniform sampler2D detail1;
-uniform sampler2D alphaRamp;
+uniform sampler2D detail_0;
+uniform sampler2D detail_1;
+uniform sampler2D detail_2;
+uniform sampler2D detail_3;
+uniform sampler2D alpha_ramp;
 
-void main() 
+vec3 atmosLighting(vec3 light);
+
+vec4 applyWaterFog(vec4 color);
+
+void main()
 {
-	float a = texture2D(alphaRamp, gl_TexCoord[1].xy).a;
-	vec3 color = mix(texture2D(detail1, gl_TexCoord[2].xy).rgb,
-					 texture2D(detail0, gl_TexCoord[0].xy).rgb,
-					 a);
+	/// Note: This should duplicate the blending functionality currently used for the terrain rendering.
+	
+	/// TODO Confirm tex coords and bind them appropriately in vert shader.
+	vec4 color0 = texture2D(detail_0, vary_texcoord0.xy);
+	vec4 color1 = texture2D(detail_1, vary_texcoord0.xy);
+	vec4 color2 = texture2D(detail_2, vary_texcoord0.xy);
+	vec4 color3 = texture2D(detail_3, vary_texcoord0.xy);
 
-	gl_FragColor.rgb = color;
-	gl_FragColor.a = texture2D(alphaRamp, gl_TexCoord[3].xy).a;
+	float alpha1 = texture2D(alpha_ramp, vary_texcoord0.zw).a;
+	float alpha2 = texture2D(alpha_ramp,vary_texcoord1.xy).a;
+	float alphaFinal = texture2D(alpha_ramp, vary_texcoord1.zw).a;
+	vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal );
+	
+	/// Add WL Components
+	outColor.rgb = atmosLighting(outColor.rgb * vertex_color.rgb);
+	
+	outColor = applyWaterFog(outColor);
+	gl_FragColor = outColor;
 }
+
diff --git a/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl b/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl
index 72e8e739b3905aafa4f84a710f527e5ba434882c..1fdb90f7926c0e97788a3eeaa4b6ffe5bd847ac8 100644
--- a/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/underWaterF.glsl
@@ -23,36 +23,82 @@
  * $/LicenseInfo$
  */
  
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
 uniform sampler2D diffuseMap;
 uniform sampler2D bumpMap;   
 uniform sampler2D screenTex;
+uniform sampler2D refTex;
+uniform sampler2D screenDepth;
 
+uniform vec4 fogCol;
+uniform vec3 lightDir;
+uniform vec3 specular;
+uniform float lightExp;
+uniform vec2 fbScale;
 uniform float refScale;
+uniform float znear;
+uniform float zfar;
+uniform float kd;
+uniform vec4 waterPlane;
+uniform vec3 eyeVec;
 uniform vec4 waterFogColor;
+uniform float waterFogDensity;
+uniform float waterFogKS;
+uniform vec2 screenRes;
 
 //bigWave is (refCoord.w, view.w);
-varying vec4 refCoord;
-varying vec4 littleWave;
-varying vec4 view;
+VARYING vec4 refCoord;
+VARYING vec4 littleWave;
+VARYING vec4 view;
 
-void main() 
+vec4 applyWaterFog(vec4 color, vec3 viewVec)
 {
-	vec4 color;    
+	//normalize view vector
+	vec3 view = normalize(viewVec);
+	float es = -view.z;
+
+	//find intersection point with water plane and eye vector
 	
-	//get bigwave normal
-	vec3 wavef = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0;
-    
-	//get detail normals
-	vec3 dcol = texture2D(bumpMap, littleWave.xy).rgb*0.75;
-	dcol += texture2D(bumpMap, littleWave.zw).rgb*1.25;
-	    
-	//interpolate between big waves and little waves (big waves in deep water)
-	wavef = (wavef+dcol)*0.5;
+	//get eye depth
+	float e0 = max(-waterPlane.w, 0.0);
+	
+	//get object depth
+	float depth = length(viewVec);
+		
+	//get "thickness" of water
+	float l = max(depth, 0.1);
 
-	//crunch normal to range [-1,1]
-	wavef -= vec3(1,1,1);
+	float kd = waterFogDensity;
+	float ks = waterFogKS;
+	vec4 kc = waterFogColor;
+	
+	float F = 0.98;
+	
+	float t1 = -kd * pow(F, ks * e0);
+	float t2 = kd + ks * es;
+	float t3 = pow(F, t2*l) - 1.0;
+	
+	float L = min(t1/t2*t3, 1.0);
+	
+	float D = pow(0.98, l*kd);
+	//return vec4(1.0, 0.0, 1.0, 1.0);
+	return color * D + kc * L;
+	//depth /= 10.0;
+	//return vec4(depth,depth,depth,0.0);
+}
+
+void main() 
+{
+	vec4 color;
+	    
+	//get detail normals
+	vec3 wave1 = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0-1.0;
+	vec3 wave2 = texture2D(bumpMap, littleWave.xy).xyz*2.0-1.0;
+	vec3 wave3 = texture2D(bumpMap, littleWave.zw).xyz*2.0-1.0;    
+	vec3 wavef = normalize(wave1+wave2+wave3);
 	
 	//figure out distortion vector (ripply)   
 	vec2 distort = (refCoord.xy/refCoord.z) * 0.5 + 0.5;
@@ -60,6 +106,5 @@ void main()
 		
 	vec4 fb = texture2D(screenTex, distort);
 	
-	gl_FragColor.rgb = mix(waterFogColor.rgb, fb.rgb, waterFogColor.a * 0.001 + 0.999);
-	gl_FragColor.a = fb.a;
+	gl_FragColor = applyWaterFog(fb,view.xyz);
 }
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterF.glsl
index 4d555b566abcc9d33538b02590e266ebe389cfa8..444c896d38888fa00f6e986ac91af09ad3f7485b 100644
--- a/indra/newview/app_settings/shaders/class1/environment/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/waterF.glsl
@@ -23,20 +23,19 @@
  * $/LicenseInfo$
  */
  
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
 vec3 scaleSoftClip(vec3 inColor);
 vec3 atmosTransport(vec3 inColor);
-vec3 applyWaterFog(vec4 inColor);
 
-uniform sampler2D diffuseMap;
 uniform sampler2D bumpMap;   
 uniform sampler2D screenTex;
 uniform sampler2D refTex;
 
 uniform float sunAngle;
 uniform float sunAngle2;
-uniform float scaledAngle;
 uniform vec3 lightDir;
 uniform vec3 specular;
 uniform float lightExp;
@@ -47,67 +46,92 @@ uniform vec3 normScale;
 uniform float fresnelScale;
 uniform float fresnelOffset;
 uniform float blurMultiplier;
-uniform vec4 fogCol;
+
 
 //bigWave is (refCoord.w, view.w);
-varying vec4 refCoord;
-varying vec4 littleWave;
-varying vec4 view;
+VARYING vec4 refCoord;
+VARYING vec4 littleWave;
+VARYING vec4 view;
 
 void main() 
 {
-	vec3 viewVec = view.xyz;
 	vec4 color;
 	
-	float dist = length(viewVec.xy);
+	float dist = length(view.xy);
 	
 	//normalize view vector
-	viewVec = normalize(viewVec);
+	vec3 viewVec = normalize(view.xyz);
 	
 	//get wave normals
-	vec3 wavef = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0;
-
-	//get detail normals
-	vec3 dcol = texture2D(bumpMap, littleWave.xy).rgb*0.75;
-	dcol += texture2D(bumpMap, littleWave.zw).rgb*1.25;
-
-	//interpolate between big waves and little waves (big waves in deep water)
-	wavef = (wavef + dcol) * 0.5;
-	
-	//crunch normal to range [-1,1]
-	wavef -= vec3(1,1,1);
-	wavef = normalize(wavef);
-   
+	vec3 wave1 = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0-1.0;
+	vec3 wave2 = texture2D(bumpMap, littleWave.xy).xyz*2.0-1.0;
+	vec3 wave3 = texture2D(bumpMap, littleWave.zw).xyz*2.0-1.0;
 	//get base fresnel components	
 	
-	float df = dot(viewVec,wavef) * fresnelScale + fresnelOffset;
+	vec3 df = vec3(
+					dot(viewVec, wave1),
+					dot(viewVec, (wave2 + wave3) * 0.5),
+					dot(viewVec, wave3)
+				 ) * fresnelScale + fresnelOffset;
+	df *= df;
 		    
 	vec2 distort = (refCoord.xy/refCoord.z) * 0.5 + 0.5;
 	
 	float dist2 = dist;
 	dist = max(dist, 5.0);
 	
+	float dmod = sqrt(dist);
+	
+	vec2 dmod_scale = vec2(dmod*dmod, dmod);
+	
 	//get reflected color
-	vec2 refdistort = wavef.xy*dot(normScale, vec3(0.333));
-	vec2 refvec = distort+refdistort/dist;
-	vec4 refcol = texture2D(refTex, refvec);
+	vec2 refdistort1 = wave1.xy*normScale.x;
+	vec2 refvec1 = distort+refdistort1/dmod_scale;
+	vec4 refcol1 = texture2D(refTex, refvec1);
+	
+	vec2 refdistort2 = wave2.xy*normScale.y;
+	vec2 refvec2 = distort+refdistort2/dmod_scale;
+	vec4 refcol2 = texture2D(refTex, refvec2);
+	
+	vec2 refdistort3 = wave3.xy*normScale.z;
+	vec2 refvec3 = distort+refdistort3/dmod_scale;
+	vec4 refcol3 = texture2D(refTex, refvec3);
+
+	vec4 refcol = refcol1 + refcol2 + refcol3;
+	float df1 = df.x + df.y + df.z;
+	refcol *= df1 * 0.333;
+	
+	vec3 wavef = (wave1 + wave2 * 0.4 + wave3 * 0.6) * 0.5;
+	
+	wavef.z *= max(-viewVec.z, 0.1);
+	wavef = normalize(wavef);
+	
+	float df2 = dot(viewVec, wavef) * fresnelScale+fresnelOffset;
+	
+	vec2 refdistort4 = wavef.xy*0.125;
+	refdistort4.y -= abs(refdistort4.y);
+	vec2 refvec4 = distort+refdistort4/dmod;
+	float dweight = min(dist2*blurMultiplier, 1.0);
+	vec4 baseCol = texture2D(refTex, refvec4);
+	refcol = mix(baseCol*df2, refcol, dweight);
 
 	//get specular component
 	float spec = clamp(dot(lightDir, (reflect(viewVec,wavef))),0.0,1.0);
-	
+		
 	//harden specular
-	spec = pow(spec, lightExp);
+	spec = pow(spec, 128.0);
 
 	//figure out distortion vector (ripply)   
-	vec2 distort2 = distort+wavef.xy*refScale/max(dist*df, 1.0);
+	vec2 distort2 = distort+wavef.xy*refScale/max(dmod*df1, 1.0);
 		
 	vec4 fb = texture2D(screenTex, distort2);
 	
 	//mix with reflection
-	color.rgb = mix(mix(fogCol.rgb, fb.rgb, fogCol.a), refcol.rgb, df);
+	// Note we actually want to use just df1, but multiplying by 0.999999 gets around and nvidia compiler bug
+	color.rgb = mix(fb.rgb, refcol.rgb, df1 * 0.99999);
 	color.rgb += spec * specular;
 	
-	//color.rgb = applyWaterFog(color);//atmosTransport(color.rgb);
+	color.rgb = atmosTransport(color.rgb);
 	color.rgb = scaleSoftClip(color.rgb);
 	color.a = spec * sunAngle2;
 
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
index d44690d1fb482e89943e127610b49139d1d0cd15..4bdfce9260c77145dcb244b561d87ce1a4230ea7 100644
--- a/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/waterFogF.glsl
@@ -25,16 +25,50 @@
  
 
 
+uniform vec4 lightnorm;
+uniform vec4 waterPlane;
+uniform vec4 waterFogColor;
+uniform float waterFogDensity;
+uniform float waterFogKS;
+
+vec3 getPositionEye();
+
 vec4 applyWaterFog(vec4 color)
 {
-	// GL_EXP2 Fog
-	//float fog = exp(-gl_Fog.density * gl_Fog.density * gl_FogFragCoord * gl_FogFragCoord);
-	// GL_EXP Fog
-	// float fog = exp(-gl_Fog.density * gl_FogFragCoord);
-	// GL_LINEAR Fog
-	float fog = (gl_Fog.end - gl_FogFragCoord) * gl_Fog.scale;
-	fog = clamp(fog, 0.0, 1.0);
-	color.rgb = mix(gl_Fog.color.rgb, color.rgb, fog);
+	//normalize view vector
+	vec3 view = normalize(getPositionEye());
+	float es = -(dot(view, waterPlane.xyz));
+
+	//find intersection point with water plane and eye vector
+	
+	//get eye depth
+	float e0 = max(-waterPlane.w, 0.0);
+	
+	vec3 int_v = waterPlane.w > 0.0 ? view * waterPlane.w/es : vec3(0.0, 0.0, 0.0);
+	
+	//get object depth
+	float depth = length(getPositionEye() - int_v);
+		
+	//get "thickness" of water
+	float l = max(depth, 0.1);
+
+	float kd = waterFogDensity;
+	float ks = waterFogKS;
+	vec4 kc = waterFogColor;
+	
+	float F = 0.98;
+	
+	float t1 = -kd * pow(F, ks * e0);
+	float t2 = kd + ks * es;
+	float t3 = pow(F, t2*l) - 1.0;
+	
+	float L = min(t1/t2*t3, 1.0);
+	
+	float D = pow(0.98, l*kd);
+	
+	color.rgb = color.rgb * D + kc.rgb * L;
+	color.a = kc.a + color.a;
+	
 	return color;
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl
index 610c06fbbc341c3f69c25876b9dd715a3ca0e0f4..f66ba1d2d9403f0a3f102773b17c363e7ed64e4f 100644
--- a/indra/newview/app_settings/shaders/class1/environment/waterV.glsl
+++ b/indra/newview/app_settings/shaders/class1/environment/waterV.glsl
@@ -22,8 +22,11 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
 
 void calcAtmospherics(vec3 inPositionEye);
 
@@ -33,9 +36,9 @@ uniform float time;
 uniform vec3 eyeVec;
 uniform float waterHeight;
 
-varying vec4 refCoord;
-varying vec4 littleWave;
-varying vec4 view;
+VARYING vec4 refCoord;
+VARYING vec4 littleWave;
+VARYING vec4 view;
 
 float wave(vec2 v, float t, float f, vec2 d, float s) 
 {
@@ -45,8 +48,7 @@ float wave(vec2 v, float t, float f, vec2 d, float s)
 void main()
 {
 	//transform vertex
-	vec4 position = gl_Vertex;
-	mat4 modelViewProj = gl_ModelViewProjectionMatrix;
+	mat4 modelViewProj = modelview_projection_matrix;
 	
 	vec4 oPosition;
 		    
@@ -57,27 +59,29 @@ void main()
 	float d = length(oEyeVec.xy);
 	float ld = min(d, 2560.0);
 	
-	position.xy = eyeVec.xy + oEyeVec.xy/d*ld;
+	vec3 lpos = position;
+	lpos.xy = eyeVec.xy + oEyeVec.xy/d*ld;
 	view.xyz = oEyeVec;
 		
 	d = clamp(ld/1536.0-0.5, 0.0, 1.0);	
 	d *= d;
 		
-	oPosition = position;
+	oPosition = vec4(lpos, 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 = position.xyz;
+	vec3 v = lpos;
 	v.x += (cos(v.x*0.08/*+time*0.01*/)+sin(v.y*0.02))*6.0;
 	    
 	//push position for further horizon effect.
-	position.xyz = oEyeVec.xyz*(waterHeight/oEyeVec.z);
-	position.w = 1.0;
-	position = position*gl_ModelViewMatrix;
+	vec4 pos;
+	pos.xyz = oEyeVec.xyz*(waterHeight/oEyeVec.z);
+	pos.w = 1.0;
+	pos = modelview_matrix*pos;
 	
-	calcAtmospherics((gl_ModelViewMatrix * gl_Vertex).xyz);
+	calcAtmospherics(pos.xyz);
 	
 	
 	//pass wave parameters to pixel shader
diff --git a/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl b/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..d2f5e1987aa6132df7c1d9dcbccc7e95313734b9
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/alphamaskF.glsl
@@ -0,0 +1,46 @@
+/** 
+ * @file alphamaskF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2D diffuseMap;
+
+uniform float minimum_alpha;
+
+VARYING vec2 vary_texcoord0;
+VARYING vec4 vertex_color;
+
+void main() 
+{
+	vec4 col = vertex_color*texture2D(diffuseMap, vary_texcoord0.xy);
+	if (col.a < minimum_alpha)
+	{
+		discard;
+	}
+
+	gl_FragColor = col;
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/alphamaskV.glsl b/indra/newview/app_settings/shaders/class1/interface/alphamaskV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..3580d1f27b2c247e35ac0704fbb06196fa6a44e5
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/alphamaskV.glsl
@@ -0,0 +1,42 @@
+/** 
+ * @file alphamaskV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+	gl_Position = modelview_projection_matrix * vec4(position, 1);
+	vary_texcoord0 =  (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+	vertex_color = diffuse_color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl b/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl
index 27c63fdc8b9c8dea2e496b1b537a9dc73bf25457..4b481ba834a6559bec12cdd464e87d7682752305 100644
--- a/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl
@@ -22,14 +22,21 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2D diffuseMap;
 
 uniform float custom_alpha;
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 void main() 
 {
-	vec4 color = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy);
+	vec4 color = vertex_color*texture2D(diffuseMap, vary_texcoord0.xy);
 	color.a *= custom_alpha;
 	gl_FragColor = color;
 }
diff --git a/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl b/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl
index c4c896c35c4d75ec39c90d0ebfc973508329000e..890474d6d8c1c8af946c15afab2d8b0030240a37 100644
--- a/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl
@@ -22,13 +22,20 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 void main()
 {
-	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
-	gl_TexCoord[0] = gl_MultiTexCoord0;
-	gl_FrontColor = gl_Color;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	vary_texcoord0 = texcoord0;
+	vertex_color = diffuse_color;
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/interface/debugF.glsl b/indra/newview/app_settings/shaders/class1/interface/debugF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..6bcc97ba1882cba93e48ca5b2a1981f7e98f5008
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/debugF.glsl
@@ -0,0 +1,35 @@
+/** 
+ * @file debugF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform vec4 color;
+
+void main() 
+{
+	gl_FragColor = color;
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/debugV.glsl b/indra/newview/app_settings/shaders/class1/interface/debugV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..f4d704577ad5e6f83bfb83971895255c2258397d
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/debugV.glsl
@@ -0,0 +1,34 @@
+/** 
+ * @file debugV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&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$
+ */
+
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+
+void main()
+{
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
index b8963e1decb2813a3eb3418749e3d934dc666a81..f67703b83907b932b8a64e204a2af79d0bec42c8 100644
--- a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl
@@ -22,14 +22,21 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 #extension GL_ARB_texture_rectangle : enable
 
 uniform sampler2D glowMap;
 uniform sampler2DRect screenMap;
 
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
+
 void main() 
 {
-	gl_FragColor = texture2D(glowMap, gl_TexCoord[0].xy) +
-					texture2DRect(screenMap, gl_TexCoord[1].xy);
+	gl_FragColor = texture2D(glowMap, vary_texcoord0.xy) +
+					texture2DRect(screenMap, vary_texcoord1.xy);
 }
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..c66a6e5b481800208a4e5e775edf120edfa30e64
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl
@@ -0,0 +1,42 @@
+/** 
+ * @file glowcombineFXAAF.glsl
+ *
+ * $LicenseInfo:firstyear=2005&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2005, 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$
+ */
+ 
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2DRect diffuseRect;
+
+uniform vec2 screen_res;
+VARYING vec2 vary_tc;
+
+void main() 
+{
+	vec3 col = texture2DRect(diffuseRect, vary_tc*screen_res).rgb;
+	
+	gl_FragColor = vec4(col.rgb, dot(col.rgb, vec3(0.299, 0.587, 0.144)));
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAV.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..058f3b1b820e5d97af8b290685074b71b2e3ae03
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAV.glsl
@@ -0,0 +1,39 @@
+/** 
+ * @file glowcombineFXAAV.glsl
+ *
+  * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+
+VARYING vec2 vary_tc;
+
+void main()
+{
+	vec4 pos = modelview_projection_matrix*vec4(position.xyz, 1.0);
+	gl_Position = pos;
+
+	vary_tc = pos.xy*0.5+0.5;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl
index 4c6360f71d036cb7622afdb452d2cd2e18d3d4cf..f7970b7f78b36ec21b1225cfdf5cab8f6c653875 100644
--- a/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl
@@ -22,12 +22,20 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec2 texcoord1;
+
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
 
 void main()
 {
-	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
-	gl_TexCoord[0] = gl_MultiTexCoord0;
-	gl_TexCoord[1] = gl_MultiTexCoord1;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	vary_texcoord0 = texcoord0;
+	vary_texcoord1 = texcoord1;
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl b/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl
index a3cb5225ba36035b9485c72000f034affaecfc8c..ecbc30f05fff8fba0172bd319841f98c6c059e70 100644
--- a/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/highlightF.glsl
@@ -23,11 +23,16 @@
  * $/LicenseInfo$
  */
  
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
-
+uniform vec4 color;
 uniform sampler2D diffuseMap;
 
+VARYING vec2 vary_texcoord0;
+
 void main() 
 {
-	gl_FragColor = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy);
+	gl_FragColor = color*texture2D(diffuseMap, vary_texcoord0.xy);
 }
diff --git a/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl b/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl
index da3bea6d065c73a3995ed61db61ba40d64952c01..9bf7b60eb76a709653d9a379a1d3392ca9aa79b0 100644
--- a/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/highlightV.glsl
@@ -22,24 +22,19 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec2 vary_texcoord0;
 
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform();
-	vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
-	pos = normalize(pos);
-	float d = dot(pos, normalize(gl_NormalMatrix * gl_Normal));
-	d *= d;
-	d = 1.0 - d;
-	d *= d;
-		
-	d = min(d, gl_Color.a*2.0);
-			
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-	gl_FrontColor.rgb = gl_Color.rgb;
-	gl_FrontColor.a = max(d, gl_Color.a);
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl
index 57248699cb97f656523b5ecae0ddaaf484dd2454..85f819f4c29e93fe27198079c4e6854187cf2ddc 100644
--- a/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl
@@ -23,6 +23,10 @@
  * $/LicenseInfo$
  */
  
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 void main() 
 {
 	gl_FragColor = vec4(1,1,1,1);
diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl
index 915e452e0f843ae2678e1d95afe92e5a984878dc..c26fa08ddc62e15f9ed80556d197e7ae7d5ef700 100644
--- a/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl
@@ -23,8 +23,12 @@
  * $/LicenseInfo$
  */
 
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+
 void main()
 {
-	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..fafeb5a7b4916bc2c653ea394ba333586a2c900a
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorF.glsl
@@ -0,0 +1,37 @@
+/** 
+ * @file onetexturenocolorF.glsl
+ *
+ * $LicenseInfo:firstyear=2005&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2005, 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$
+ */
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2D tex0;
+
+VARYING vec2 vary_texcoord0;
+
+void main() 
+{
+	gl_FragColor = texture2D(tex0, vary_texcoord0.xy);
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorV.glsl b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..6b9986c8d7f3d52a5a1d3b57ab357f62024a6fa1
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/onetexturenocolorV.glsl
@@ -0,0 +1,38 @@
+/** 
+ * @file onetexturenocolorV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+ 
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+	gl_Position = modelview_projection_matrix * vec4(position, 1);
+	vary_texcoord0 = texcoord0;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl b/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl
index b1d2b949acc49eab38b188f15fcbd6029bed318d..f790122749400020f115babcf9422da6a9cc3629 100644
--- a/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl
@@ -22,12 +22,19 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2D tex0;
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 void main() 
 {
-	float alpha = texture2D(tex0, gl_TexCoord[0].xy).a * gl_Color.a;
+	float alpha = texture2D(tex0, vary_texcoord0.xy).a * vertex_color.a;
 
-	gl_FragColor = vec4(gl_Color.rgb, alpha);
+	gl_FragColor = vec4(vertex_color.rgb, alpha);
 }
diff --git a/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl b/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl
index fedf6ae5466ce282650d6772781355e525637a62..c58f9dfdaf84554d27e407035229ae23df175b88 100644
--- a/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl
@@ -22,13 +22,20 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
+
+uniform mat4 modelview_projection_matrix;
  
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 void main()
 {
-	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
-	gl_FrontColor = gl_Color;
-	gl_TexCoord[0] = gl_MultiTexCoord0;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	vertex_color = diffuse_color;
+	vary_texcoord0 = texcoord0;
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl b/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..a0bb255cfaa214818bf95069ac37a8d358adfb1f
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/splattexturerectF.glsl
@@ -0,0 +1,40 @@
+/** 
+ * @file splattexturerectF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&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$
+ */
+ 
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2DRect screenMap;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void main() 
+{
+	gl_FragColor = 	texture2DRect(screenMap, vary_texcoord0.xy) * vertex_color;
+}
diff --git a/indra/newview/app_settings/shaders/class1/interface/splattexturerectV.glsl b/indra/newview/app_settings/shaders/class1/interface/splattexturerectV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..641d670c2675111ebd23900912e964db7bfd222e
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/interface/splattexturerectV.glsl
@@ -0,0 +1,41 @@
+/** 
+ * @file splattexturerectV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&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$
+ */
+
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec4 diffuse_color;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void main()
+{
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	vary_texcoord0 = texcoord0;
+	vertex_color = diffuse_color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl b/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl
index 3408cc44f8e37afc52bf6b9a006463eee85ce2bf..cdb48163dd48e2eb20dfa0ffe66fc1d934967e9e 100644
--- a/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl
@@ -22,11 +22,18 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2D tex0;
 uniform sampler2D tex1;
 
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
+
 void main() 
 {
-	gl_FragColor = texture2D(tex0, gl_TexCoord[0].xy)+texture2D(tex1, gl_TexCoord[1].xy);
+	gl_FragColor = texture2D(tex0, vary_texcoord0.xy)+texture2D(tex1, vary_texcoord1.xy);
 }
diff --git a/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl b/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl
index 94aa964be6d53020557dac7c46759df913501bc7..3c2f297f7f555c6a25461ada639762adca41e9a5 100644
--- a/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl
@@ -23,12 +23,19 @@
  * $/LicenseInfo$
  */
  
+uniform mat4 modelview_projection_matrix;
 
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec2 texcoord1;
+
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
 
 void main()
 {
-	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
-	gl_TexCoord[0] = gl_MultiTexCoord0;
-	gl_TexCoord[1] = gl_MultiTexCoord1;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	vary_texcoord0 = texcoord0;
+	vary_texcoord1 = texcoord1;
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/interface/uiF.glsl b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl
index 7694056b08f5801ed4ee0f8ef70cfca6946c98f5..36d6e06fc5f7baae3e33e19fb4fe7ab46887cedd 100644
--- a/indra/newview/app_settings/shaders/class1/interface/uiF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl
@@ -22,10 +22,17 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2D diffuseMap;
 
+VARYING vec2 vary_texcoord0;
+VARYING vec4 vertex_color;
+
 void main() 
 {
-	gl_FragColor = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy);
+	gl_FragColor = vertex_color*texture2D(diffuseMap, vary_texcoord0.xy);
 }
diff --git a/indra/newview/app_settings/shaders/class1/interface/uiV.glsl b/indra/newview/app_settings/shaders/class1/interface/uiV.glsl
index b1b90d0b5eced13de9a2818f3a952a298d5adcef..220dafef25d977f8db1cdb5d9a386258060e0c0b 100644
--- a/indra/newview/app_settings/shaders/class1/interface/uiV.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/uiV.glsl
@@ -22,13 +22,21 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 void main()
 {
-	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
-	gl_TexCoord[0] = gl_MultiTexCoord0;
-	gl_FrontColor = gl_Color;
+	gl_Position = modelview_projection_matrix * vec4(position, 1);
+	vary_texcoord0 =  (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+	vertex_color = diffuse_color;
 }
 
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl
similarity index 85%
rename from indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl
index 4c053290655bb54fefb354bb06216f9b05d7cd5f..10413bdeb093494eb710e9f0f2dcd1664937390d 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskF.glsl
@@ -23,18 +23,23 @@
  * $/LicenseInfo$
  */
  
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
 uniform float minimum_alpha;
-uniform float maximum_alpha;
 
 vec3 atmosLighting(vec3 light);
 vec3 scaleSoftClip(vec3 light);
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 void default_lighting() 
 {
-	vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
+	vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
 	
-	if (color.a < minimum_alpha || color.a > maximum_alpha)
+	if (color.a < minimum_alpha)
 	{
 		discard;
 	}
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl
similarity index 85%
rename from indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl
index 0de909353e18fd8b611623ea748e4ba2fb1f4af9..1164e5b0a69fee830ed7028e78e77ab6f1dc6259 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightAlphaMaskNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightAlphaMaskNonIndexedF.glsl
@@ -22,22 +22,26 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
-uniform float minimum_alpha;
-uniform float maximum_alpha;
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
+uniform float minimum_alpha;
 
 uniform sampler2D diffuseMap;
 
 vec3 atmosLighting(vec3 light);
 vec3 scaleSoftClip(vec3 light);
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 void default_lighting() 
 {
-	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color;
+	vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
 
-	if (color.a < minimum_alpha || color.a > maximum_alpha)
+	if (color.a < minimum_alpha)
 	{
 		discard;
 	}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
index 5cb3eb05a7c283da669cd7b88ba1a27835b93ba0..735f5b381376edb98516bcac2469d8349976343a 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightF.glsl
@@ -22,14 +22,25 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
-uniform sampler2D diffuseMap;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+vec3 atmosLighting(vec3 light);
+vec3 scaleSoftClip(vec3 light);
 
 void default_lighting() 
 {
-	vec4 color = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy);
+	vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+	
+	color.rgb = atmosLighting(color.rgb);
+
+	color.rgb = scaleSoftClip(color.rgb);
+
 	gl_FragColor = color;
 }
 
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl
similarity index 85%
rename from indra/newview/app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl
index 8c7713c08db6aa6c3717b8ad865ecef2761323b8..ba99c0ed71eeded3abbb157914e701818e660225 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightAlphaMaskF.glsl
@@ -22,18 +22,24 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform float minimum_alpha;
-uniform float maximum_alpha;
 
 vec3 fullbrightAtmosTransport(vec3 light);
 vec3 fullbrightScaleSoftClip(vec3 light);
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 void fullbright_lighting()
 {
-	vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
+	vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
 	
-	if (color.a < minimum_alpha || color.a > maximum_alpha)
+	if (color.a < minimum_alpha)
 	{
 		discard;
 	}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl
index f3ba8b73a80d978d7acf716a4efd0fe60e42fe6a..c3edc0bd708e9cd99ff8030c990b7ba83cdb3d46 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightF.glsl
@@ -22,14 +22,25 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
-uniform sampler2D diffuseMap;
+vec3 fullbrightAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
 
 void fullbright_lighting()
 {
-	gl_FragColor = texture2D(diffuseMap, gl_TexCoord[0].xy);
+	vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+	
+	color.rgb = fullbrightAtmosTransport(color.rgb);
+	
+	color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+	gl_FragColor = color;
 }
 
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
similarity index 85%
rename from indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
index 89468b9665316da515dd180fe0471bc16c3bce5d..276fad4f44864aae30831bfc36d5adf7dd67341b 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedAlphaMaskF.glsl
@@ -22,20 +22,26 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform float minimum_alpha;
-uniform float maximum_alpha;
 
 vec3 fullbrightAtmosTransport(vec3 light);
 vec3 fullbrightScaleSoftClip(vec3 light);
 
 uniform sampler2D diffuseMap;
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 void fullbright_lighting()
 {
-	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color;
+	vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
 	
-	if (color.a < minimum_alpha || color.a > maximum_alpha)
+	if (color.a < minimum_alpha)
 	{
 		discard;
 	}
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl
similarity index 87%
rename from indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl
index a909ff608af520cf77357875093462f005df5946..4e1e664e6b5c99f7ee3d62870c8f2502ce1b1b3d 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightNonIndexedF.glsl
@@ -22,8 +22,13 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 vec3 fullbrightAtmosTransport(vec3 light);
 vec3 fullbrightScaleSoftClip(vec3 light);
@@ -32,7 +37,7 @@ uniform sampler2D diffuseMap;
 
 void fullbright_lighting()
 {
-	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color;
+	vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
 	
 	color.rgb = fullbrightAtmosTransport(color.rgb);
 	
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl
index b4c8a9abcedbde35c6209cdee0839df470b77f9b..c981e9eba255b0f2df190f2a8f252a8ad8db8cc9 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyF.glsl
@@ -22,14 +22,34 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
 
-uniform sampler2D diffuseMap;
 uniform samplerCube environmentMap;
 
-void fullbright_shiny_lighting() 
+vec3 fullbrightShinyAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+
+void fullbright_shiny_lighting()
 {
-	gl_FragColor = texture2D(diffuseMap, gl_TexCoord[0].xy);
+	vec4 color = diffuseLookup(vary_texcoord0.xy);
+	color.rgb *= vertex_color.rgb;
+	
+	vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;	
+	color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+	color.rgb = fullbrightShinyAtmosTransport(color.rgb);
+
+	color.rgb = fullbrightScaleSoftClip(color.rgb);
+
+	color.a = max(color.a, vertex_color.a);
+
+	gl_FragColor = color;
 }
+
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl
similarity index 76%
rename from indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl
index af73168c13085ee434bafd166da053802142e0f8..a4893f035997ac9f0deb25609c6a95342081f2fe 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyNonIndexedF.glsl
@@ -22,8 +22,14 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
 
 uniform samplerCube environmentMap;
 uniform sampler2D diffuseMap;
@@ -33,17 +39,17 @@ vec3 fullbrightScaleSoftClip(vec3 light);
 
 void fullbright_shiny_lighting()
 {
-	vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy);
-	color.rgb *= gl_Color.rgb;
+	vec4 color = texture2D(diffuseMap, vary_texcoord0.xy);
+	color.rgb *= vertex_color.rgb;
 	
-	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	
-	color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
+	vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;	
+	color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
 
 	color.rgb = fullbrightShinyAtmosTransport(color.rgb);
 
 	color.rgb = fullbrightScaleSoftClip(color.rgb);
 
-	color.a = max(color.a, gl_Color.a);
+	color.a = max(color.a, vertex_color.a);
 
 	gl_FragColor = color;
 }
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl
index 925d6fbcfd860471b9181ceb845ee7b6868bc26a..c10cde98e0ddcb6c493fff00300191e8b649329f 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterF.glsl
@@ -21,14 +21,33 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
-
  
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
 
-uniform sampler2D diffuseMap;
 uniform samplerCube environmentMap;
 
-void fullbright_shiny_lighting_water() 
+vec3 fullbrightShinyAtmosTransport(vec3 light);
+vec3 fullbrightScaleSoftClip(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void fullbright_shiny_lighting_water()
 {
-	gl_FragColor = texture2D(diffuseMap, gl_TexCoord[0].xy);
+	vec4 color = diffuseLookup(vary_texcoord0.xy);
+	color.rgb *= vertex_color.rgb;
+	
+	vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;	
+	color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+	color.rgb = fullbrightShinyAtmosTransport(color.rgb);
+	color.rgb = fullbrightScaleSoftClip(color.rgb);
+	color.a = max(color.a, vertex_color.a);
+
+	gl_FragColor = applyWaterFog(color);
 }
+
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
similarity index 77%
rename from indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
index e0a7986705adb1a96e06e4b57c12e0b74e5555f8..e9b26087f46074854e3a161d264113bfddcfdb0f 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightShinyWaterNonIndexedF.glsl
@@ -22,8 +22,13 @@
  * $/LicenseInfo$
  */
  
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
-
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
 
 uniform samplerCube environmentMap;
 uniform sampler2D diffuseMap;
@@ -34,15 +39,15 @@ vec4 applyWaterFog(vec4 color);
 
 void fullbright_shiny_lighting_water()
 {
-	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy);
-	color.rgb *= gl_Color.rgb;
+	vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
+	color.rgb *= vertex_color.rgb;
 	
-	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	
-	color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
+	vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;	
+	color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
 
 	color.rgb = fullbrightShinyAtmosTransport(color.rgb);
 	color.rgb = fullbrightScaleSoftClip(color.rgb);
-	color.a = max(color.a, gl_Color.a);
+	color.a = max(color.a, vertex_color.a);
 
 	gl_FragColor = applyWaterFog(color);
 }
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl
similarity index 86%
rename from indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl
index e5998b77a9ca3151290e835c156c1726e4d39c02..754b2922d979512b31b6e908a3c21a715a9823c7 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterAlphaMaskF.glsl
@@ -23,19 +23,25 @@
  * $/LicenseInfo$
  */
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform float minimum_alpha;
-uniform float maximum_alpha;
 
 vec4 diffuseLookup(vec2 texcoord);
 
 vec3 fullbrightAtmosTransport(vec3 light);
 vec4 applyWaterFog(vec4 color);
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 void fullbright_lighting_water()
 {
-	vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
+	vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
 
-	if (color.a < minimum_alpha || color.a > maximum_alpha)
+	if (color.a < minimum_alpha)
 	{
 		discard;
 	}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
index 71238f7d31609653c2698502a3b2aef2c4157cf4..2547f9e75054957436659fe8b90d392272091eda 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterF.glsl
@@ -23,13 +23,24 @@
  * $/LicenseInfo$
  */
 
- 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
-uniform sampler2D diffuseMap;
+vec4 diffuseLookup(vec2 texcoord);
+
+vec3 fullbrightAtmosTransport(vec3 light);
+vec4 applyWaterFog(vec4 color);
 
 void fullbright_lighting_water()
 {
-	gl_FragColor = texture2D(diffuseMap, gl_TexCoord[0].xy);
+	vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+	color.rgb = fullbrightAtmosTransport(color.rgb);
+	
+	gl_FragColor = applyWaterFog(color);
 }
 
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
similarity index 85%
rename from indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
index 3fdd110f7d76435fa2c6cb9968eafecaa20f0e4e..f69b907dc751b135a8e250670d55eb5edb0b8cfa 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedAlphaMaskF.glsl
@@ -22,20 +22,26 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform float minimum_alpha;
-uniform float maximum_alpha;
 
 uniform sampler2D diffuseMap;
 
 vec3 fullbrightAtmosTransport(vec3 light);
 vec4 applyWaterFog(vec4 color);
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 void fullbright_lighting_water()
 {
-	vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color;
+	vec4 color = texture2D(diffuseMap, vary_texcoord0.xy) * vertex_color;
 
-	if (color.a < minimum_alpha || color.a > maximum_alpha)
+	if (color.a < minimum_alpha)
 	{
 		discard;
 	}
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl
similarity index 86%
rename from indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl
index 01b89019b15bb633e49cf6278e9401d81e46b3ae..aa3ef8cdd91290df2ab60b037237abf57e251da5 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightFullbrightWaterNonIndexedF.glsl
@@ -22,8 +22,13 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 uniform sampler2D diffuseMap;
 
@@ -32,7 +37,7 @@ vec4 applyWaterFog(vec4 color);
 
 void fullbright_lighting_water()
 {
-	vec4 color = texture2D(diffuseMap, gl_TexCoord[0].xy) * gl_Color;
+	vec4 color = texture2D(diffuseMap, vary_texcoord0.xy) * vertex_color;
 
 	color.rgb = fullbrightAtmosTransport(color.rgb);
 	
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl
similarity index 86%
rename from indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl
index d419c2d116ec1395ec366991b22ad56c919b5275..9f1a358b5389a6c134f9c5a9d3a52149f6cf6ee2 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightNonIndexedF.glsl
@@ -22,8 +22,13 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+ 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 uniform sampler2D diffuseMap;
 
@@ -32,7 +37,7 @@ vec3 scaleSoftClip(vec3 light);
 
 void default_lighting() 
 {
-	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color;
+	vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
 	
 	color.rgb = atmosLighting(color.rgb);
 
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl
index 7c9b7c218f96e5dcb77bdea530593e9f6c5e97ba..e9c27dbefd5c5266260d2137fe611bea7bc91569 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyF.glsl
@@ -22,16 +22,33 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
 
-uniform sampler2D diffuseMap;
 uniform samplerCube environmentMap;
 
-void shiny_lighting() 
+vec3 scaleSoftClip(vec3 light);
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void shiny_lighting()
 {
-	vec4 color = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy);
+	vec4 color = diffuseLookup(vary_texcoord0.xy);
+	color.rgb *= vertex_color.rgb;
+	
+	vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;	
+	color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+	color.rgb = atmosLighting(color.rgb);
+
+	color.rgb = scaleSoftClip(color.rgb);
+	color.a = max(color.a, vertex_color.a);
 	gl_FragColor = color;
 }
 
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl
similarity index 76%
rename from indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl
index 3b30ebf6f144e8acc4679738a836e15b136c5cf6..595ad743650d9b6b938a4f32b1df9f258eb0f035 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyNonIndexedF.glsl
@@ -22,9 +22,14 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
-
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+ 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
 
 uniform samplerCube environmentMap;
 uniform sampler2D diffuseMap;
@@ -35,16 +40,16 @@ vec4 applyWaterFog(vec4 color);
 
 void shiny_lighting()
 {
-	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy);
-	color.rgb *= gl_Color.rgb;
+	vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
+	color.rgb *= vertex_color.rgb;
 	
-	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	
-	color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
+	vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;	
+	color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
 
 	color.rgb = atmosLighting(color.rgb);
 
 	color.rgb = scaleSoftClip(color.rgb);
-	color.a = max(color.a, gl_Color.a);
+	color.a = max(color.a, vertex_color.a);
 	gl_FragColor = color;
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl
index ca1af8fc795b7e15c9f01dc8e473cbb76fd3aaec..68c727d62c4e4e7b2b3ea64ffbad60e2c27e902b 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterF.glsl
@@ -22,16 +22,30 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
 
-uniform sampler2D diffuseMap;
 uniform samplerCube environmentMap;
 
-void shiny_lighting_water() 
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void shiny_lighting_water()
 {
-	vec4 color = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy);
-	gl_FragColor = color;
+	vec4 color = diffuseLookup(vary_texcoord0.xy);
+	color.rgb *= vertex_color.rgb;
+	
+	vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;	
+	color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
+
+	color.rgb = atmosLighting(color.rgb);
+	color.a = max(color.a, vertex_color.a);
+	gl_FragColor = applyWaterFog(color);
 }
 
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl
similarity index 75%
rename from indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl
index eeb997fb5f77729c1183c19c439bf5eb1af878c6..f32b9e1958bfb0b15f46635ee3edc30121b92bd2 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightShinyWaterNonIndexedF.glsl
@@ -22,9 +22,14 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
 
 uniform sampler2D diffuseMap;
 uniform samplerCube environmentMap;
@@ -34,14 +39,14 @@ vec4 applyWaterFog(vec4 color);
 
 void shiny_lighting_water()
 {
-	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy);
-	color.rgb *= gl_Color.rgb;
+	vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
+	color.rgb *= vertex_color.rgb;
 	
-	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	
-	color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
+	vec3 envColor = textureCube(environmentMap, vary_texcoord1.xyz).rgb;	
+	color.rgb = mix(color.rgb, envColor.rgb, vertex_color.a);
 
 	color.rgb = atmosLighting(color.rgb);
-	color.a = max(color.a, gl_Color.a);
+	color.a = max(color.a, vertex_color.a);
 	gl_FragColor = applyWaterFog(color);
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl
index 4a59b8245dc100419b4451e295ea19e6352003ab..24bf9b3cee5168a8cfc7928b545eddc39e8a9736 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightSpecularV.glsl
@@ -1,5 +1,5 @@
 /** 
- * @file lightV.glsl
+ * @file lightSpecularV.glsl
  *
  * $LicenseInfo:firstyear=2007&license=viewerlgpl$
  * Second Life Viewer Source Code
@@ -25,22 +25,12 @@
  
 
 
-float calcDirectionalLight(vec3 n, vec3 l);
+// All lights, no specular highlights
+
+vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol);
 
-// Same as non-specular lighting in lightV.glsl
 vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol)
 {
-	specularColor.rgb = vec3(0.0, 0.0, 0.0);
-	vec4 col;
-	col.a = color.a;
-
-	col.rgb = gl_LightModel.ambient.rgb + baseCol.rgb;
-
-	col.rgb += gl_LightSource[0].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[0].position.xyz);
-	col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
-
-	col.rgb = min(col.rgb*color.rgb, 1.0);
-
-	return col;	
+	return sumLightsSpecular(pos, norm, color, specularColor, baseCol);
 }
 
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
index 742cb38d804ba27595b79ab1ece82a9886b8133a..8045809b82c6cc6e18b4fdfeefa9ec26ed35c706 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightV.glsl
@@ -25,20 +25,12 @@
  
 
 
-float calcDirectionalLight(vec3 n, vec3 l);
+// All lights, no specular highlights
+
+vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight);
 
 vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
 {
-	vec4 col;
-	col.a = color.a;
-	
-	col.rgb = gl_LightModel.ambient.rgb + baseLight.rgb;
-	
-	col.rgb += gl_LightSource[0].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[0].position.xyz);
-	col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
-						
-	col.rgb = min(col.rgb*color.rgb, 1.0);
-	
-	return col;	
+	return sumLights(pos, norm, color, baseLight);
 }
 
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl
similarity index 85%
rename from indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl
index 072dcaa6b65e327a73642b7dd3ec03fc1038269f..103dd633c92971597f5b0cf8d8d3aa7b0dbe83af 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskF.glsl
@@ -22,18 +22,24 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform float minimum_alpha;
-uniform float maximum_alpha;
 
 vec3 atmosLighting(vec3 light);
 vec4 applyWaterFog(vec4 color);
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 void default_lighting_water()
 {
-	vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
+	vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
 
-	if (color.a < minimum_alpha || color.a > maximum_alpha)
+	if (color.a < minimum_alpha)
 	{
 		discard;
 	}
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl
similarity index 85%
rename from indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl
index 2df34da4b47aa2026ce06fde1ecf8694161221d0..bef72752daf6cbc9be38d290b2610e8f47a800a0 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterAlphaMaskNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterAlphaMaskNonIndexedF.glsl
@@ -22,20 +22,26 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform float minimum_alpha;
-uniform float maximum_alpha;
 
 uniform sampler2D diffuseMap;
 
 vec3 atmosLighting(vec3 light);
 vec4 applyWaterFog(vec4 color);
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 void default_lighting_water()
 {
-	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color;
+	vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
 
-	if (color.a < minimum_alpha || color.a > maximum_alpha)
+	if (color.a < minimum_alpha)
 	{
 		discard;
 	}
diff --git a/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl
index da76a977b6427228c370a3c7eb50ccb51fb62182..e9537d1e9d5eac272053a07269e9dcee4214ee65 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterF.glsl
@@ -22,14 +22,23 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif 
 
-uniform sampler2D diffuseMap;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
-void default_lighting_water() 
+vec3 atmosLighting(vec3 light);
+vec4 applyWaterFog(vec4 color);
+
+void default_lighting_water()
 {
-	vec4 color = gl_Color * texture2D(diffuseMap, gl_TexCoord[0].xy);
-	gl_FragColor = color;
+	vec4 color = diffuseLookup(vary_texcoord0.xy) * vertex_color;
+
+	color.rgb = atmosLighting(color.rgb);
+
+	gl_FragColor = applyWaterFog(color);
 }
 
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl b/indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl
similarity index 86%
rename from indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl
rename to indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl
index 5a86dad82785c344bbd012d9f99a129a2b1ff955..8b0c25b7053d601d48a63eba8382b869a40fa37d 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/lightWaterNonIndexedF.glsl
@@ -22,8 +22,13 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 uniform sampler2D diffuseMap;
 
@@ -32,7 +37,7 @@ vec4 applyWaterFog(vec4 color);
 
 void default_lighting_water()
 {
-	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color;
+	vec4 color = texture2D(diffuseMap,vary_texcoord0.xy) * vertex_color;
 
 	color.rgb = atmosLighting(color.rgb);
 
diff --git a/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl
index 3e0815226c698324b3cd87656be97b575e06178a..7059ff31aed4b7fa8ffb0661c2e6fc98ad939f46 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/sumLightsSpecularV.glsl
@@ -31,21 +31,22 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
 vec3 atmosGetDiffuseSunlightColor();
 vec3 scaleDownLight(vec3 light);
 
+uniform vec4 light_position[8];
+uniform vec3 light_diffuse[8];
+
 vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol)
 {
-	vec4 col;
-	col.a = color.a;
-	
-	
+	vec4 col = vec4(0,0,0, color.a);
+		
 	vec3 view = normalize(pos);
 	
 	/// collect all the specular values from each calcXXXLightSpecular() function
 	vec4 specularSum = vec4(0.0);
 
-	col.rgb = gl_LightSource[1].diffuse.rgb * calcDirectionalLightSpecular(specularColor, view, norm, gl_LightSource[1].position.xyz, gl_LightSource[1].diffuse.rgb, 1.0);
+	col.rgb += light_diffuse[1].rgb * calcDirectionalLightSpecular(specularColor, view, norm, light_position[1].xyz,light_diffuse[1].rgb, 1.0);
 	col.rgb = scaleDownLight(col.rgb);
 	col.rgb += atmosAmbient(baseCol.rgb);
-	col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, gl_LightSource[0].position.xyz,atmosGetDiffuseSunlightColor() * baseCol.a, 1.0));
+	col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, light_position[0].xyz,atmosGetDiffuseSunlightColor()*baseCol.a, 1.0));
 
 	col.rgb = min(col.rgb * color.rgb, 1.0);
 	specularColor.rgb = min(specularColor.rgb * specularSum.rgb, 1.0);
diff --git a/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl
index c271dbcd18920be785ce378c7fbcb453093b16b0..41288c21c19c4be8a7ecc5052b108bb74fd690d3 100644
--- a/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl
+++ b/indra/newview/app_settings/shaders/class1/lighting/sumLightsV.glsl
@@ -23,7 +23,8 @@
  * $/LicenseInfo$
  */
  
-
+uniform vec4 light_position[8];
+uniform vec3 light_diffuse[8];
 
 float calcDirectionalLight(vec3 n, vec3 l);
 
@@ -36,10 +37,10 @@ vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
 	vec4 col;
 	col.a = color.a;
 	
-	col.rgb = gl_LightSource[1].diffuse.rgb * calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
+	col.rgb = light_diffuse[1].rgb * calcDirectionalLight(norm, light_position[1].xyz);
 	col.rgb = scaleDownLight(col.rgb);
 	col.rgb += atmosAmbient(baseLight.rgb);
-	col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, gl_LightSource[0].position.xyz));
+	col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, light_position[0].xyz));
 	
 	col.rgb = min(col.rgb*color.rgb, 1.0);
 	
diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
index 11031a8829819a074acd4ea55ecaaa0460e38d98..4b85d61aca8b090aae822ad57be3c38b01d1d726 100644
--- a/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl
@@ -22,14 +22,21 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2D texture0;
 uniform sampler2D texture1;
 
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
+
 void main() 
 {
-	float tex0 = texture2D(texture0, gl_TexCoord[0].xy).a;
-	float tex1 = texture2D(texture1, gl_TexCoord[1].xy).a;
+	float tex0 = texture2D(texture0, vary_texcoord0.xy).a;
+	float tex1 = texture2D(texture1, vary_texcoord1.xy).a;
 
 	gl_FragColor = vec4(tex0+(1.0-tex1)-0.5);
 }
diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl
index c50ed86315d172dcfa0873533258e9f9241fb082..a7738087dcc940f41229140b89a9fa54502d85fc 100644
--- a/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl
@@ -22,13 +22,21 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec2 texcoord1;
+
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
 
 void main()
 {
 	//transform vertex
-	gl_Position = gl_ModelViewProjectionMatrix*gl_Vertex;
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-	gl_TexCoord[1] = gl_TextureMatrix[1] * gl_MultiTexCoord1;
-	gl_FrontColor = gl_Color;
+	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+	vary_texcoord1 = (texture_matrix0 * vec4(texcoord1,0,1)).xy;
 }
diff --git a/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..8494ffba5289f7f3c06d74387d6cff315417b77e
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/emissiveSkinnedV.glsl
@@ -0,0 +1,58 @@
+/** 
+ * @file emissiveSkinnedV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+uniform mat4 projection_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 emissive;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
+void calcAtmospherics(vec3 inPositionEye);
+mat4 getObjectSkinnedTransform();
+
+void main()
+{
+	//transform vertex
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+	
+	mat4 mat = getObjectSkinnedTransform();
+	
+	mat = modelview_matrix * mat;
+	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
+	
+	calcAtmospherics(pos.xyz);
+
+	vertex_color = emissive;
+	
+	gl_Position = projection_matrix*vec4(pos, 1.0);
+		
+	
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl b/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..e984deb0c89c10a12ce0547ce4596dce9cad820d
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/emissiveV.glsl
@@ -0,0 +1,56 @@
+/**
+ * @file emissiveV.glsl
+ *
+  * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec4 emissive;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+void calcAtmospherics(vec3 inPositionEye);
+
+
+
+
+void main()
+{
+	//transform vertex
+	passTextureIndex();
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+	
+	vec4 pos = (modelview_matrix * vec4(position.xyz, 1.0));
+	calcAtmospherics(pos.xyz);
+
+	vertex_color = emissive;
+
+	
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl
index 0fab5e5001007ad0bebf5ce122484ea23206a53d..a54c0caf81079e22e56e76a98257b1ea99a231bc 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightF.glsl
@@ -20,7 +20,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  * 
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
- * $/LicenseInfo$
+ * $/LicenseInfo$F
  */
  
 
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..5d6f14230c73b14a9fd36a94a56d9d45054574cc
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightNoColorV.glsl
@@ -0,0 +1,53 @@
+/**
+ * @file fullbrightNoColorV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
+void calcAtmospherics(vec3 inPositionEye);
+
+void main()
+{
+	//transform vertex
+	vec4 vert = vec4(position.xyz,1.0);
+	vec4 pos = (modelview_matrix * vert);
+	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+
+	calcAtmospherics(pos.xyz);
+
+	vertex_color = vec4(1,1,1,1);
+
+	
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl
index e1a7f263f7aaaddf479be6325a081ea573815a3c..79b552ee1a9656fcb18a5e93d406ab30cd8d2b6c 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl
@@ -22,6 +22,19 @@
  * $/LicenseInfo$
  */
 
+uniform mat4 texture_matrix0;
+uniform mat4 texture_matrix1;
+uniform mat4 modelview_matrix;
+uniform mat4 projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
 
 
 void calcAtmospherics(vec3 inPositionEye);
@@ -31,24 +44,24 @@ void main()
 {
 	mat4 mat = getObjectSkinnedTransform();
 	
-	mat = gl_ModelViewMatrix * mat;
-	vec3 pos = (mat*gl_Vertex).xyz;
+	mat = modelview_matrix * mat;
+	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
 	
-	vec4 norm = gl_Vertex;
-	norm.xyz += gl_Normal.xyz;
+	vec4 norm = vec4(position.xyz, 1.0);
+	norm.xyz += normal.xyz;
 	norm.xyz = (mat*norm).xyz;
 	norm.xyz = normalize(norm.xyz-pos.xyz);
 		
 	vec3 ref = reflect(pos.xyz, -norm.xyz);
 
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-	gl_TexCoord[1] = gl_TextureMatrix[1]*vec4(ref,1.0);
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+	vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz;
 
 	calcAtmospherics(pos.xyz);
 
-	gl_FrontColor = gl_Color;
+	vertex_color = diffuse_color;
+	
+	gl_Position = projection_matrix*vec4(pos, 1.0);
 	
-	gl_Position = gl_ProjectionMatrix*vec4(pos, 1.0);
 	
-	gl_FogFragCoord = pos.z;
 }
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl
index 36b00dfbc109a4cb09b8b3f69ebffdd8e5fe788d..34bd8d445a0eb532d77e10ea45897715bc369c65 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinyV.glsl
@@ -22,28 +22,46 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 texture_matrix1;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
 
 
 void calcAtmospherics(vec3 inPositionEye);
 
 uniform vec4 origin;
 
+
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
+
+
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform();
+	vec4 vert = vec4(position.xyz,1.0);
+	passTextureIndex();
+	vec4 pos = (modelview_matrix * vert);
+	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
 	
-	vec4 pos = (gl_ModelViewMatrix * gl_Vertex);
-	vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+	vec3 norm = normalize(normal_matrix * normal);
 	vec3 ref = reflect(pos.xyz, -norm);
 
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-	gl_TexCoord[1] = gl_TextureMatrix[1]*vec4(ref,1.0);
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+	vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz;
 
 	calcAtmospherics(pos.xyz);
 
-	gl_FrontColor = gl_Color;
-
-	gl_FogFragCoord = pos.z;
+	vertex_color = diffuse_color;
 }
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl
index b540054c56cee2b99c40a3183594abae477d00f3..eff75435a9459409ffa579611fca663c6c942fbb 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl
@@ -22,31 +22,36 @@
  * $/LicenseInfo$
  */
 
+uniform mat4 projection_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
 
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
 
 void calcAtmospherics(vec3 inPositionEye);
 mat4 getObjectSkinnedTransform();
 
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
 void main()
 {
 	//transform vertex
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
 	
 	mat4 mat = getObjectSkinnedTransform();
 	
-	mat = gl_ModelViewMatrix * mat;
-	vec3 pos = (mat*gl_Vertex).xyz;
+	mat = modelview_matrix * mat;
+	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
 	
-	vec4 norm = gl_Vertex;
-	norm.xyz += gl_Normal.xyz;
-	norm.xyz = (mat*norm).xyz;
-	norm.xyz = normalize(norm.xyz-pos.xyz);
-		
 	calcAtmospherics(pos.xyz);
 
-	gl_FrontColor = gl_Color;
+	vertex_color = diffuse_color;
 	
-	gl_Position = gl_ProjectionMatrix*vec4(pos, 1.0);
+	gl_Position = projection_matrix*vec4(pos, 1.0);
 		
-	gl_FogFragCoord = pos.z;
+	
 }
diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl
index 22f731ffde021ddd14dbb2d1da8845fe8b151070..fc20d3270e2a349931b972de5e8a1117b9d0597c 100644
--- a/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightV.glsl
@@ -22,22 +22,37 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
  
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
 
 
 void calcAtmospherics(vec3 inPositionEye);
 
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform();
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	vec4 vert = vec4(position.xyz,1.0);
+	passTextureIndex();
+	vec4 pos = (modelview_matrix * vert);
+	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
 	
-	vec4 pos = (gl_ModelViewMatrix * gl_Vertex);
-
 	calcAtmospherics(pos.xyz);
 
-	gl_FrontColor = gl_Color;
+	vertex_color = diffuse_color;
 
-	gl_FogFragCoord = pos.z;
+	
 }
diff --git a/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl b/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl
index 92c09ce93715ff8b5db62898baabf5792d6f5d80..3c6e22b2959140012b6bc53714c7fdc6e05ceebd 100644
--- a/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/impostorF.glsl
@@ -22,20 +22,22 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
-uniform float minimum_alpha;
-uniform float maximum_alpha;
 
-vec3 fullbrightAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform float minimum_alpha;
 
 uniform sampler2D diffuseMap;
 
+VARYING vec2 vary_texcoord0;
+
 void main()
 {
-	vec4 color = texture2D(diffuseMap,gl_TexCoord[0].xy) * gl_Color;
+	vec4 color = texture2D(diffuseMap,vary_texcoord0.xy);
 	
-	if (color.a < minimum_alpha || color.a > maximum_alpha)
+	if (color.a < minimum_alpha)
 	{
 		discard;
 	}
diff --git a/indra/newview/app_settings/shaders/class1/objects/impostorV.glsl b/indra/newview/app_settings/shaders/class1/objects/impostorV.glsl
index eea51eba45009973c9e53908529faa8b27e53a5f..e90dbb115a4c8ffc0ab2e7ce142c53cafdf3741e 100644
--- a/indra/newview/app_settings/shaders/class1/objects/impostorV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/impostorV.glsl
@@ -22,13 +22,19 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
- 
+
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_projection_matrix;
+
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec2 vary_texcoord0;
+
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform();
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-	
-	gl_FrontColor = gl_Color;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0, 0, 1)).xy;
 }
diff --git a/indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl b/indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..254c1d4fc292962a83b592277162ec9ad5127549
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/indexedTextureF.glsl
@@ -0,0 +1,33 @@
+/** 
+ * @file fullbrightF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+ 
+ 
+
+
+void main() 
+{
+	fullbright_lighting();
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl b/indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..a95c9e0ab9ef5a04caf22acfcf116a93b37b960d
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/indexedTextureV.glsl
@@ -0,0 +1,34 @@
+/** 
+ * @file indexedTextureV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+ATTRIBUTE float texture_index;
+
+VARYING float vary_texture_index;
+
+void passTextureIndex()
+{
+	vary_texture_index = texture_index;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl b/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..80ea286ac04781fe0b96d93ec1b406256a43f60f
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/nonindexedTextureV.glsl
@@ -0,0 +1,31 @@
+/** 
+ * @file nonindexedTextureV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+void passTextureIndex()
+{
+
+}
+
+
diff --git a/indra/newview/app_settings/shaders/class1/objects/previewV.glsl b/indra/newview/app_settings/shaders/class1/objects/previewV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..5dcfa87066fc95e4ec36e254e007c6f93f9655ce
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/previewV.glsl
@@ -0,0 +1,57 @@
+/** 
+ * @file previewV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
+vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
+void calcAtmospherics(vec3 inPositionEye);
+
+void main()
+{
+	//transform vertex
+	vec4 pos = (modelview_matrix * vec4(position.xyz, 1.0));
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+		
+	vec3 norm = normalize(normal_matrix * normal);
+
+	calcAtmospherics(pos.xyz);
+
+	vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), vec4(0.));
+	vertex_color = color;
+
+	
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl
index f5fd4ededd1a34a4fe4ee5cdb3dbdbd5b350c8b4..591d6fc5c94853c3e4d833085a1e9209139b9ec9 100644
--- a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl
@@ -22,7 +22,19 @@
  * $/LicenseInfo$
  */
 
+uniform mat4 projection_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 texture_matrix1;
+uniform mat4 modelview_matrix;
 
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
 
 vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
 void calcAtmospherics(vec3 inPositionEye);
@@ -32,23 +44,23 @@ void main()
 {
 	mat4 mat = getObjectSkinnedTransform();
 	
-	mat = gl_ModelViewMatrix * mat;
-	vec3 pos = (mat*gl_Vertex).xyz;
+	mat = modelview_matrix * mat;
+	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
 	
-	vec4 norm = gl_Vertex;
-	norm.xyz += gl_Normal.xyz;
+	vec4 norm = vec4(position.xyz, 1.0);
+	norm.xyz += normal.xyz;
 	norm.xyz = (mat*norm).xyz;
 	norm.xyz = normalize(norm.xyz-pos.xyz);
 		
 	vec3 ref = reflect(pos.xyz, -norm.xyz);
 
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-	gl_TexCoord[1] = gl_TextureMatrix[1]*vec4(ref,1.0);
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+	vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz;
 
 	calcAtmospherics(pos.xyz);
 
-	vec4 color = calcLighting(pos.xyz, norm.xyz, gl_Color, vec4(0.));
-	gl_FrontColor = color;
+	vec4 color = calcLighting(pos.xyz, norm.xyz, diffuse_color, vec4(0.));
+	vertex_color = color;
 	
-	gl_Position = gl_ProjectionMatrix*vec4(pos, 1.0);
+	gl_Position = projection_matrix*vec4(pos, 1.0);
 }
diff --git a/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl
index 13a58f0d4a0093289cdab78d06186e788cb319a3..fdb3453cc581dafaee3aaa16dfc32ef01da119a9 100644
--- a/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/shinyV.glsl
@@ -1,4 +1,4 @@
-/** 
+/**
  * @file shinyV.glsl
  *
  * $LicenseInfo:firstyear=2007&license=viewerlgpl$
@@ -22,8 +22,24 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 texture_matrix1;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+VARYING vec3 vary_texcoord1;
+
+vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
 
 void calcAtmospherics(vec3 inPositionEye);
 
@@ -32,19 +48,18 @@ uniform vec4 origin;
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform();
-	
-	vec4 pos = (gl_ModelViewMatrix * gl_Vertex);
-	vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+	vec4 vert = vec4(position.xyz,1.0);
+	passTextureIndex();
+	vec4 pos = (modelview_matrix * vert);
+	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+		
+	vec3 norm = normalize(normal_matrix * normal);
+	vec3 ref = reflect(pos.xyz, -norm);
+
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+	vary_texcoord1 = (texture_matrix1*vec4(ref,1.0)).xyz;
 
 	calcAtmospherics(pos.xyz);
-	
-	gl_FrontColor = gl_Color;
-	
-	vec3 ref = reflect(pos.xyz, -norm);
-	
-	gl_TexCoord[0] = gl_TextureMatrix[0]*vec4(ref,1.0);
-	
-	gl_FogFragCoord = pos.z;
-}
 
+	vertex_color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.0));	
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..0be52a52af3a91ff13a030c3ee13488476f86e62
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleNoColorV.glsl
@@ -0,0 +1,59 @@
+/** 
+ * @file simpleNoColorV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+uniform vec4 color;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
+vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
+void calcAtmospherics(vec3 inPositionEye);
+
+void main()
+{
+	//transform vertex
+	vec4 pos = (modelview_matrix * vec4(position.xyz, 1.0));
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+		
+	vec3 norm = normalize(normal_matrix * normal);
+
+	calcAtmospherics(pos.xyz);
+
+	vec4 col = calcLighting(pos.xyz, norm, color, vec4(0.));
+	vertex_color = col;
+
+	
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..cb80697d154a7dcb3c8eeef3c51f895e71651a9f
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleNonIndexedV.glsl
@@ -0,0 +1,61 @@
+/** 
+ * @file simpleNonIndexedV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
+vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
+void calcAtmospherics(vec3 inPositionEye);
+
+void main()
+{
+	//transform vertex
+	vec4 vert = vec4(position.xyz,1.0);
+	
+	gl_Position = modelview_projection_matrix*vert;
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0, 0, 1)).xy;
+	
+	vec4 pos = (modelview_matrix * vert);
+	
+	vec3 norm = normalize(normal_matrix * normal);
+
+	calcAtmospherics(pos.xyz);
+
+	vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
+	vertex_color = color;
+
+	
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl
index ad171f7b4318234a4240479954d4cd2440ebff58..1c6e53b1879c1a84e6a8b0bf9e12b4476530ed55 100644
--- a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl
@@ -22,6 +22,17 @@
  * $/LicenseInfo$
  */
 
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 
 vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
@@ -31,24 +42,24 @@ mat4 getObjectSkinnedTransform();
 void main()
 {
 	//transform vertex
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
 	
 	mat4 mat = getObjectSkinnedTransform();
 	
-	mat = gl_ModelViewMatrix * mat;
-	vec3 pos = (mat*gl_Vertex).xyz;
+	mat = modelview_matrix * mat;
+	vec3 pos = (mat*vec4(position.xyz, 1.0)).xyz;
 	
-	vec4 norm = gl_Vertex;
-	norm.xyz += gl_Normal.xyz;
+	vec4 norm = vec4(position.xyz, 1.0);
+	norm.xyz += normal.xyz;
 	norm.xyz = (mat*norm).xyz;
 	norm.xyz = normalize(norm.xyz-pos.xyz);
 		
 	calcAtmospherics(pos.xyz);
 
-	vec4 color = calcLighting(pos.xyz, norm.xyz, gl_Color, vec4(0.));
-	gl_FrontColor = color;
+	vec4 color = calcLighting(pos.xyz, norm.xyz, diffuse_color, vec4(0.));
+	vertex_color = color;
+	
+	gl_Position = projection_matrix*vec4(pos, 1.0);
 	
-	gl_Position = gl_ProjectionMatrix*vec4(pos, 1.0);
 	
-	gl_FogFragCoord = pos.z;
 }
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleTexGenV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleTexGenV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..d4dee78793eeebd502a4775969d41373f5d1f74e
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleTexGenV.glsl
@@ -0,0 +1,77 @@
+/** 
+ * @file simpleV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+
+uniform vec4 color;
+uniform vec4 object_plane_t;
+uniform vec4 object_plane_s;
+
+vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
+void calcAtmospherics(vec3 inPositionEye);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+vec4 texgen_object(vec4  vpos, vec4 tc, mat4 mat, vec4 tp0, vec4 tp1)
+{
+	vec4 tcoord;
+	
+	tcoord.x = dot(vpos, tp0);
+	tcoord.y = dot(vpos, tp1);
+	tcoord.z = tc.z;
+	tcoord.w = tc.w;
+	
+	tcoord = mat * tcoord; 
+	
+	return tcoord; 
+}
+
+void main()
+{
+	//transform vertex
+	vec4 vert = vec4(position.xyz,1.0);
+	passTextureIndex();
+	vec4 pos = (modelview_matrix * vert);
+	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+	vary_texcoord0.xy = texgen_object(vec4(position.xyz, 1.0), vec4(texcoord0,0,1), texture_matrix0, object_plane_s, object_plane_t).xy;
+		
+	vec3 norm = normalize(normal_matrix * normal);
+
+	calcAtmospherics(pos.xyz);
+
+	vec4 color = calcLighting(pos.xyz, norm, color, vec4(0.));
+	vertex_color = color;
+
+	
+}
diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
index dc1794e132ff216b70221940f85bf593d197e06c..37a20383e2c8499eaba3d370b63f7edab9958de9 100644
--- a/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
+++ b/indra/newview/app_settings/shaders/class1/objects/simpleV.glsl
@@ -22,26 +22,43 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
 
 vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
 void calcAtmospherics(vec3 inPositionEye);
 
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform();
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	vec4 vert = vec4(position.xyz,1.0);
+	passTextureIndex();
+	vec4 pos = (modelview_matrix * vert);
+	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0, 0, 1)).xy;
+	
 	
-	vec4 pos = (gl_ModelViewMatrix * gl_Vertex);
 	
-	vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+	vec3 norm = normalize(normal_matrix * normal);
 
 	calcAtmospherics(pos.xyz);
 
-	vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
-	gl_FrontColor = color;
+	vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
+	vertex_color = color;
 
-	gl_FogFragCoord = pos.z;
+	
 }
diff --git a/indra/newview/app_settings/shaders/class1/objects/treeV.glsl b/indra/newview/app_settings/shaders/class1/objects/treeV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..fa01a27ec0aea2fdc9acfb17536a72617661057e
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/objects/treeV.glsl
@@ -0,0 +1,60 @@
+/** 
+ * @file treeV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec3 normal;
+
+vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
+void calcAtmospherics(vec3 inPositionEye);
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+
+void main()
+{
+	//transform vertex
+	vec4 vert = vec4(position.xyz,1.0);
+	
+	gl_Position = modelview_projection_matrix*vert;
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0, 0, 1)).xy;
+	
+	vec4 pos = (modelview_matrix * vert);
+	
+	vec3 norm = normalize(normal_matrix * normal);
+
+	calcAtmospherics(pos.xyz);
+
+	vec4 color = calcLighting(pos.xyz, norm, vec4(1,1,1,1), vec4(0.));
+	vertex_color = color;
+
+	
+}
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl
index 15738e37e82bb7faeb47e950c3d8bce4b9a7d8f5..6ff860362c28285ccd8a838160a102227374a26a 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsHelpersV.glsl
@@ -23,21 +23,22 @@
  * $/LicenseInfo$
  */
  
-
+uniform vec4 sunlight_color_copy;
+uniform vec4 light_ambient;
 
 vec3 atmosAmbient(vec3 light)
 {
-	return gl_LightModel.ambient.rgb + light;
+	return light + light_ambient.rgb;
 }
 
 vec3 atmosAffectDirectionalLight(float lightIntensity)
 {
-	return gl_LightSource[0].diffuse.rgb * lightIntensity;
+	return sunlight_color_copy.rgb * lightIntensity;
 }
 
 vec3 atmosGetDiffuseSunlightColor()
 {
-	return gl_LightSource[0].diffuse.rgb;
+	return sunlight_color_copy.rgb;
 }
 
 vec3 scaleDownLight(vec3 light)
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl
index dbacf286371601d862a7341cff2ccf7c4ab1d209..8bdae328bde8a0c6b79abf657384757a5e9ed0dd 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsF.glsl
@@ -24,10 +24,7 @@
  */
  
 
-
-varying vec3 vary_PositionEye;
-
 vec3 getPositionEye()
 {
-	return vary_PositionEye;
+	return vec3(0,0,0);
 }
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl
index e051ac9851eb4270502bf5a3113723f0831fee79..8ec9ae617caf4d97face8cd387d178424575d288 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsV.glsl
@@ -25,15 +25,12 @@
  
 
 
-varying vec3 vary_PositionEye;
-
-
 vec3 getPositionEye()
 {
-	return vary_PositionEye;
+	return vec3(0,0,0);
 }
 
 void setPositionEye(vec3 v)
 {
-	vary_PositionEye = v;
+	
 }
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..636d4af006f164fba5d97f7471ef97c9394e4843
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterF.glsl
@@ -0,0 +1,33 @@
+/** 
+ * @file atmosphericVarsWaterF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+ 
+
+VARYING vec3 vary_PositionEye;
+
+vec3 getPositionEye()
+{
+	return vary_PositionEye;
+}
+
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..8afcc20f6d190f903a0e95863eda7d62f53c2cdd
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsVarsWaterV.glsl
@@ -0,0 +1,37 @@
+/** 
+ * @file atmosphericVarsWaterV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+ 
+ 
+VARYING vec3 vary_PositionEye;
+
+vec3 getPositionEye()
+{
+	return vary_PositionEye;
+}
+
+void setPositionEye(vec3 v)
+{
+	vary_PositionEye = v;
+}
diff --git a/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl b/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl
index f9f376c2b7308d933f32a08feb5f11dba6fc6ab8..5af9f5c902b3ee23e27cf7c1ad63808644fdbfa2 100644
--- a/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl
+++ b/indra/newview/app_settings/shaders/class2/avatar/eyeballV.glsl
@@ -22,7 +22,19 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
+
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 
 vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol);
@@ -31,20 +43,20 @@ void calcAtmospherics(vec3 inPositionEye);
 void main()
 {
 	//transform vertex
-	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-	
-	vec3 pos = (gl_ModelViewMatrix * gl_Vertex).xyz;
-	vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+	vec3 pos = (modelview_matrix * vec4(position.xyz, 1.0)).xyz;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+		
+	vec3 norm = normalize(normal_matrix * normal);
 
 	calcAtmospherics(pos.xyz);
 	
 	// vec4 specular = specularColor;
 	vec4 specular = vec4(1.0);
-	vec4 color = calcLightingSpecular(pos, norm, gl_Color, specular, vec4(0.0));
+	vec4 color = calcLightingSpecular(pos, norm, diffuse_color, specular, vec4(0.0));
 			
-	gl_FrontColor = color;
-	gl_FogFragCoord = pos.z;
+	vertex_color = color;
+	
 
 }
 
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
index 839606cdcb888aa1bae9d1ea0a9e7b070e64bcf5..1179b212aeb7ae0a2d35ec7762d6617d44dfe2e7 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaF.glsl
@@ -22,11 +22,16 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
-
 
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 uniform sampler2DRectShadow shadowMap0;
 uniform sampler2DRectShadow shadowMap1;
 uniform sampler2DRectShadow shadowMap2;
@@ -41,29 +46,16 @@ uniform vec2 shadow_res;
 vec3 atmosLighting(vec3 light);
 vec3 scaleSoftClip(vec3 light);
 
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_position;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
 
 uniform float shadow_bias;
 
 uniform mat4 inv_proj;
 
-vec4 getPosition(vec2 pos_screen)
-{
-	float depth = texture2DRect(depthMap, pos_screen.xy).a;
-	vec2 sc = pos_screen.xy*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos.xyz /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
 float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)
 {
 	stc.xyz /= stc.w;
@@ -122,9 +114,9 @@ void main()
 		}
 	}
 	
-	vec4 diff = diffuseLookup(gl_TexCoord[0].xy);
+	vec4 diff = diffuseLookup(vary_texcoord0.xy);
 
-	vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, gl_Color.a);
+	vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, vertex_color.a);
 	vec4 color = diff * col;
 	
 	color.rgb = atmosLighting(color.rgb);
@@ -133,10 +125,6 @@ void main()
 
 	color.rgb += diff.rgb * vary_pointlight_col.rgb;
 
-	//gl_FragColor = gl_Color;
 	gl_FragColor = color;
-	//gl_FragColor.r = 0.0;
-	//gl_FragColor = vec4(1,shadow,1,1);
-	
 }
 
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl
index 84e49a5f8f1c33a5eca72e424822f7ee2a64d13c..0df557f2aad81915a0fe5c17598699732a081663 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedF.glsl
@@ -23,10 +23,12 @@
  * $/LicenseInfo$
  */
  
-
-
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2DRectShadow shadowMap0;
 uniform sampler2DRectShadow shadowMap1;
 uniform sampler2DRectShadow shadowMap2;
@@ -42,11 +44,13 @@ uniform vec2 shadow_res;
 vec3 atmosLighting(vec3 light);
 vec3 scaleSoftClip(vec3 light);
 
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_position;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
+VARYING vec2 vary_texcoord0;
+VARYING vec4 vertex_color;
 
 uniform float shadow_bias;
 
@@ -123,9 +127,9 @@ void main()
 		}
 	}
 	
-	vec4 diff = texture2D(diffuseMap,gl_TexCoord[0].xy);
+	vec4 diff = texture2D(diffuseMap,vary_texcoord0.xy);
 
-	vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, gl_Color.a);
+	vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, vertex_color.a);
 	vec4 color = diff * col;
 	
 	color.rgb = atmosLighting(color.rgb);
@@ -134,10 +138,6 @@ void main()
 
 	color.rgb += diff.rgb * vary_pointlight_col.rgb;
 
-	//gl_FragColor = gl_Color;
-	gl_FragColor = color;
-	//gl_FragColor.r = 0.0;
-	//gl_FragColor = vec4(1,shadow,1,1);
-	
+	gl_FragColor = color;	
 }
 
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..331dbc70793868cda044e8dbcf8cb607ed6fc809
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaNonIndexedNoColorF.glsl
@@ -0,0 +1,142 @@
+/** 
+ * @file alphaNonIndexedNoColorF.glsl
+ *
+ * $LicenseInfo:firstyear=2005&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2005, 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$
+ */
+ 
+#extension GL_ARB_texture_rectangle : enable
+
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
+uniform sampler2DRectShadow shadowMap0;
+uniform sampler2DRectShadow shadowMap1;
+uniform sampler2DRectShadow shadowMap2;
+uniform sampler2DRectShadow shadowMap3;
+uniform sampler2DRect depthMap;
+uniform sampler2D diffuseMap;
+
+uniform mat4 shadow_matrix[6];
+uniform vec4 shadow_clip;
+uniform vec2 screen_res;
+uniform vec2 shadow_res;
+
+vec3 atmosLighting(vec3 light);
+vec3 scaleSoftClip(vec3 light);
+
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
+VARYING vec2 vary_texcoord0;
+
+uniform float shadow_bias;
+
+uniform mat4 inv_proj;
+
+vec4 getPosition(vec2 pos_screen)
+{
+	float depth = texture2DRect(depthMap, pos_screen.xy).a;
+	vec2 sc = pos_screen.xy*2.0;
+	sc /= screen_res;
+	sc -= vec2(1.0,1.0);
+	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
+	vec4 pos = inv_proj * ndc;
+	pos.xyz /= pos.w;
+	pos.w = 1.0;
+	return pos;
+}
+
+float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)
+{
+	stc.xyz /= stc.w;
+	stc.z += shadow_bias;
+	
+	float cs = shadow2DRect(shadowMap, stc.xyz).x;
+	float shadow = cs;
+
+	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(scl, scl, 0.0)).x, cs);
+	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(scl, -scl, 0.0)).x, cs);
+	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-scl, scl, 0.0)).x, cs);
+	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-scl, -scl, 0.0)).x, cs);
+			
+	return shadow/5.0;
+}
+
+
+void main() 
+{
+	vec2 frag = vary_fragcoord.xy/vary_fragcoord.z*0.5+0.5;
+	frag *= screen_res;
+	
+	float shadow = 1.0;
+	vec4 pos = vec4(vary_position, 1.0);
+	
+	vec4 spos = pos;
+		
+	if (spos.z > -shadow_clip.w)
+	{	
+		vec4 lpos;
+		
+		if (spos.z < -shadow_clip.z)
+		{
+			lpos = shadow_matrix[3]*spos;
+			lpos.xy *= shadow_res;
+			shadow = pcfShadow(shadowMap3, lpos, 1.5);
+			shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0);
+		}
+		else if (spos.z < -shadow_clip.y)
+		{
+			lpos = shadow_matrix[2]*spos;
+			lpos.xy *= shadow_res;
+			shadow = pcfShadow(shadowMap2, lpos, 1.5);
+		}
+		else if (spos.z < -shadow_clip.x)
+		{
+			lpos = shadow_matrix[1]*spos;
+			lpos.xy *= shadow_res;
+			shadow = pcfShadow(shadowMap1, lpos, 1.5);
+		}
+		else
+		{
+			lpos = shadow_matrix[0]*spos;
+			lpos.xy *= shadow_res;
+			shadow = pcfShadow(shadowMap0, lpos, 1.5);
+		}
+	}
+	
+	vec4 diff = texture2D(diffuseMap,vary_texcoord0.xy);
+
+	vec4 col = vec4(vary_ambient + vary_directional.rgb*shadow, 1.0);
+	vec4 color = diff * col;
+	
+	color.rgb = atmosLighting(color.rgb);
+
+	color.rgb = scaleSoftClip(color.rgb);
+
+	color.rgb += diff.rgb * vary_pointlight_col.rgb;
+
+	gl_FragColor = color;
+}
+
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl
index 20121da52d2403eed6b850724ee7f02215c7f248..83815b178608f2d1e58dcc53ea534acc3c11dddb 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaSkinnedV.glsl
@@ -21,8 +21,16 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 projection_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+ 
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
 
 vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
 void calcAtmospherics(vec3 inPositionEye);
@@ -34,33 +42,42 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
 vec3 scaleDownLight(vec3 light);
 vec3 scaleUpLight(vec3 light);
 
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_position;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 
 uniform float near_clip;
 uniform float shadow_offset;
 uniform float shadow_bias;
 
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8]; 
+uniform vec3 light_diffuse[8];
+
 float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
 {
-	//get light vector
+//get light vector
 	vec3 lv = lp.xyz-v;
 	
 	//get distance
-	float d = length(lv);
+	float d = dot(lv,lv);
 	
 	float da = 0.0;
 
 	if (d > 0.0 && la > 0.0 && fa > 0.0)
 	{
 		//normalize light vector
-		lv *= 1.0/d;
+		lv = normalize(lv);
 	
 		//distance attenuation
-		float dist2 = d*d/(la*la);
+		float dist2 = d/la;
 		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
 
 		// spotlight coefficient.
@@ -68,7 +85,7 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 		da *= spot*spot; // GL_SPOT_EXPONENT=2
 
 		//angular attenuation
-		da *= calcDirectionalLight(n, lv);
+		da *= max(dot(n, lv), 0.0);		
 	}
 
 	return da;	
@@ -76,56 +93,56 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 
 void main()
 {
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
 	
 	mat4 mat = getObjectSkinnedTransform();
 	
-	mat = gl_ModelViewMatrix * mat;
+	mat = modelview_matrix * mat;
 	
-	vec3 pos = (mat*gl_Vertex).xyz;
+	vec3 pos = (mat*vec4(position, 1.0)).xyz;
 	
-	gl_Position = gl_ProjectionMatrix * vec4(pos, 1.0);
+	gl_Position = projection_matrix * vec4(pos, 1.0);
 	
-	vec4 n = gl_Vertex;
-	n.xyz += gl_Normal.xyz;
+	vec4 n = vec4(position, 1.0);
+	n.xyz += normal.xyz;
 	n.xyz = (mat*n).xyz;
 	n.xyz = normalize(n.xyz-pos.xyz);
 	
 	vec3 norm = n.xyz;
 	
-	float dp_directional_light = max(0.0, dot(norm, gl_LightSource[0].position.xyz));
-	vary_position = pos.xyz + gl_LightSource[0].position.xyz * (1.0-dp_directional_light)*shadow_offset;
+	float dp_directional_light = max(0.0, dot(norm, light_position[0].xyz));
+	vary_position = pos.xyz + light_position[0].xyz * (1.0-dp_directional_light)*shadow_offset;
 			
 	calcAtmospherics(pos.xyz);
 
-	//vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
-	vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+	//vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
+	vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a);
 
 	// Collect normal lights
-	col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].specular.a);
-	col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation ,gl_LightSource[3].specular.a);
-	col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation, gl_LightSource[4].specular.a);
-	col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].quadraticAttenuation, gl_LightSource[5].specular.a);
-	col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation, gl_LightSource[6].specular.a);
-	col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation, gl_LightSource[7].specular.a);
+	col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].y, light_attenuation[2].z);
+	col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].y, light_attenuation[3].z);
+	col.rgb += light_diffuse[4].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[4], light_direction[4], light_attenuation[4].x, light_attenuation[4].y, light_attenuation[4].z);
+	col.rgb += light_diffuse[5].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[5], light_direction[5], light_attenuation[5].x, light_attenuation[5].y, light_attenuation[5].z);
+	col.rgb += light_diffuse[6].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[6], light_direction[6], light_attenuation[6].x, light_attenuation[6].y, light_attenuation[6].z);
+	col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].y, light_attenuation[7].z);
 	
-	vary_pointlight_col = col.rgb*gl_Color.rgb;
+	vary_pointlight_col = col.rgb*diffuse_color.rgb;
 
 	col.rgb = vec3(0,0,0);
 
 	// Add windlight lights
 	col.rgb = atmosAmbient(vec3(0.));
 		
-	vary_ambient = col.rgb*gl_Color.rgb;
-	vary_directional.rgb = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a)));
+	vary_ambient = col.rgb*diffuse_color.rgb;
+	vary_directional.rgb = diffuse_color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, light_position[0].xyz), (1.0-diffuse_color.a)*(1.0-diffuse_color.a)));
 	
-	col.rgb = min(col.rgb*gl_Color.rgb, 1.0);
+	col.rgb = min(col.rgb*diffuse_color.rgb, 1.0);
 	
-	gl_FrontColor = col;
+	vertex_color = col;
 
-	gl_FogFragCoord = pos.z;
 	
-	pos.xyz = (gl_ModelViewProjectionMatrix * gl_Vertex).xyz;
+	
+	pos.xyz = (modelview_projection_matrix * vec4(position.xyz, 1.0)).xyz;
 	vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
 	
 }
diff --git a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
index 307ae300987dac18bb6c0c4f90293d8384c2f5a8..1660f9687eb82d9690998c9a6e045c58a5c32016 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/alphaV.glsl
@@ -22,8 +22,17 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat3 normal_matrix;
+uniform mat4 texture_matrix0;
+uniform mat4 modelview_matrix;
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+void passTextureIndex();
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec4 diffuse_color;
+ATTRIBUTE vec2 texcoord0;
 
 vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
 void calcAtmospherics(vec3 inPositionEye);
@@ -35,34 +44,42 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
 vec3 scaleDownLight(vec3 light);
 vec3 scaleUpLight(vec3 light);
 
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_position;
-varying vec3 vary_pointlight_col;
-varying float vary_texture_index;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_position;
+VARYING vec3 vary_pointlight_col;
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
 
 uniform float near_clip;
 uniform float shadow_offset;
 uniform float shadow_bias;
 
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8]; 
+uniform vec3 light_diffuse[8];
+
 float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
 {
 	//get light vector
 	vec3 lv = lp.xyz-v;
 	
 	//get distance
-	float d = length(lv);
+	float d = dot(lv,lv);
 	
 	float da = 0.0;
 
 	if (d > 0.0 && la > 0.0 && fa > 0.0)
 	{
 		//normalize light vector
-		lv *= 1.0/d;
+		lv = normalize(lv);
 	
 		//distance attenuation
-		float dist2 = d*d/(la*la);
+		float dist2 = d/la;
 		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
 
 		// spotlight coefficient.
@@ -70,7 +87,7 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 		da *= spot*spot; // GL_SPOT_EXPONENT=2
 
 		//angular attenuation
-		da *= calcDirectionalLight(n, lv);
+		da *= max(dot(n, lv), 0.0);		
 	}
 
 	return da;	
@@ -79,48 +96,49 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 void main()
 {
 	//transform vertex
-	vec4 vert = vec4(gl_Vertex.xyz, 1.0);
-	vary_texture_index = gl_Vertex.w;
-	gl_Position = gl_ModelViewProjectionMatrix * vert; 
-	
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
+	vec4 vert = vec4(position.xyz, 1.0);
+	passTextureIndex();
+	vec4 pos = (modelview_matrix * vert);
+	gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
 	
-	vec4 pos = (gl_ModelViewMatrix * vert);
-	vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
+	vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
+		
+	vec3 norm = normalize(normal_matrix * normal);
 	
-	float dp_directional_light = max(0.0, dot(norm, gl_LightSource[0].position.xyz));
-	vary_position = pos.xyz + gl_LightSource[0].position.xyz * (1.0-dp_directional_light)*shadow_offset;
+	float dp_directional_light = max(0.0, dot(norm, light_position[0].xyz));
+	vary_position = pos.xyz + light_position[0].xyz * (1.0-dp_directional_light)*shadow_offset;
 		
 	calcAtmospherics(pos.xyz);
 
-	//vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
-	vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+	//vec4 color = calcLighting(pos.xyz, norm, diffuse_color, vec4(0.));
+	vec4 col = vec4(0.0, 0.0, 0.0, diffuse_color.a);
 
-	// Collect normal lights
-	col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].specular.a);
-	col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation ,gl_LightSource[3].specular.a);
-	col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation, gl_LightSource[4].specular.a);
-	col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].quadraticAttenuation, gl_LightSource[5].specular.a);
-	col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation, gl_LightSource[6].specular.a);
-	col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation, gl_LightSource[7].specular.a);
 	
-	vary_pointlight_col = col.rgb*gl_Color.rgb;
+	// Collect normal lights
+	col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].y, light_attenuation[2].z);
+	col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].y, light_attenuation[3].z);
+	col.rgb += light_diffuse[4].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[4], light_direction[4], light_attenuation[4].x, light_attenuation[4].y, light_attenuation[4].z);
+	col.rgb += light_diffuse[5].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[5], light_direction[5], light_attenuation[5].x, light_attenuation[5].y, light_attenuation[5].z);
+	col.rgb += light_diffuse[6].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[6], light_direction[6], light_attenuation[6].x, light_attenuation[6].y, light_attenuation[6].z);
+	col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].y, light_attenuation[7].z);
+
+	vary_pointlight_col = col.rgb*diffuse_color.rgb;
 
 	col.rgb = vec3(0,0,0);
 
 	// Add windlight lights
 	col.rgb = atmosAmbient(vec3(0.));
 	
-	vary_ambient = col.rgb*gl_Color.rgb;
-	vary_directional.rgb = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a)));
+	vary_ambient = col.rgb*diffuse_color.rgb;
+	vary_directional.rgb = diffuse_color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, light_position[0].xyz), (1.0-diffuse_color.a)*(1.0-diffuse_color.a)));
 	
-	col.rgb = col.rgb*gl_Color.rgb;
+	col.rgb = col.rgb*diffuse_color.rgb;
 	
-	gl_FrontColor = col;
+	vertex_color = col;
 
-	gl_FogFragCoord = pos.z;
 	
-	pos = gl_ModelViewProjectionMatrix * vert;
+	
+	pos = modelview_projection_matrix * vert;
 	vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
 	
 }
diff --git a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
index 80f386ecb03a24514c26cbd1f133e6b48b34435d..84c27edb268adac713729ce6730e16e02552f651 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/avatarAlphaV.glsl
@@ -23,7 +23,11 @@
  * $/LicenseInfo$
  */
  
+uniform mat4 projection_matrix;
 
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
 
 vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
 mat4 getSkinnedTransform();
@@ -37,33 +41,42 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
 vec3 scaleDownLight(vec3 light);
 vec3 scaleUpLight(vec3 light);
 
-varying vec3 vary_position;
-varying vec3 vary_ambient;
-varying vec3 vary_directional;
-varying vec3 vary_fragcoord;
-varying vec3 vary_pointlight_col;
+VARYING vec3 vary_position;
+VARYING vec3 vary_ambient;
+VARYING vec3 vary_directional;
+VARYING vec3 vary_fragcoord;
+VARYING vec3 vary_pointlight_col;
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
+
+uniform vec4 color;
 
 uniform float near_clip;
 uniform float shadow_offset;
 uniform float shadow_bias;
 
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8]; 
+uniform vec3 light_diffuse[8];
+
 float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float fa, float is_pointlight)
 {
 	//get light vector
 	vec3 lv = lp.xyz-v;
 	
 	//get distance
-	float d = length(lv);
+	float d = dot(lv,lv);
 	
 	float da = 0.0;
 
 	if (d > 0.0 && la > 0.0 && fa > 0.0)
 	{
 		//normalize light vector
-		lv *= 1.0/d;
+		lv = normalize(lv);
 	
 		//distance attenuation
-		float dist2 = d*d/(la*la);
+		float dist2 = d/la;
 		da = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
 
 		// spotlight coefficient.
@@ -71,7 +84,7 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 		da *= spot*spot; // GL_SPOT_EXPONENT=2
 
 		//angular attenuation
-		da *= calcDirectionalLight(n, lv);
+		da *= max(dot(n, lv), 0.0);		
 	}
 
 	return da;	
@@ -79,56 +92,55 @@ float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, floa
 
 void main()
 {
-	gl_TexCoord[0] = gl_MultiTexCoord0;
+	vary_texcoord0 = texcoord0;
 				
 	vec4 pos;
 	vec3 norm;
 	
 	mat4 trans = getSkinnedTransform();
-	pos.x = dot(trans[0], gl_Vertex);
-	pos.y = dot(trans[1], gl_Vertex);
-	pos.z = dot(trans[2], gl_Vertex);
+	vec4 pos_in = vec4(position.xyz, 1.0);
+	pos.x = dot(trans[0], pos_in);
+	pos.y = dot(trans[1], pos_in);
+	pos.z = dot(trans[2], pos_in);
 	pos.w = 1.0;
 	
-	norm.x = dot(trans[0].xyz, gl_Normal);
-	norm.y = dot(trans[1].xyz, gl_Normal);
-	norm.z = dot(trans[2].xyz, gl_Normal);
+	norm.x = dot(trans[0].xyz, normal);
+	norm.y = dot(trans[1].xyz, normal);
+	norm.z = dot(trans[2].xyz, normal);
 	norm = normalize(norm);
 		
-	gl_Position = gl_ProjectionMatrix * pos;
+	gl_Position = projection_matrix * pos;
 	
-	float dp_directional_light = max(0.0, dot(norm, gl_LightSource[0].position.xyz));
-	vary_position = pos.xyz + gl_LightSource[0].position.xyz * (1.0-dp_directional_light)*shadow_offset;
+	float dp_directional_light = max(0.0, dot(norm, light_position[0].xyz));
+	vary_position = pos.xyz + light_position[0].xyz * (1.0-dp_directional_light)*shadow_offset;
 	
 	calcAtmospherics(pos.xyz);
 
-	//vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
-
-	vec4 col = vec4(0.0, 0.0, 0.0, gl_Color.a);
+	vec4 col = vec4(0.0, 0.0, 0.0, 1.0);
 
 	// Collect normal lights
-	col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].specular.a);
-	col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation ,gl_LightSource[3].specular.a);
-	col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation, gl_LightSource[4].specular.a);
-	col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].quadraticAttenuation, gl_LightSource[5].specular.a);
-	col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation, gl_LightSource[6].specular.a);
-	col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation, gl_LightSource[7].specular.a);
+	col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].y, light_attenuation[2].z);
+	col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].y, light_attenuation[3].z);
+	col.rgb += light_diffuse[4].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[4], light_direction[4], light_attenuation[4].x, light_attenuation[4].y, light_attenuation[4].z);
+	col.rgb += light_diffuse[5].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[5], light_direction[5], light_attenuation[5].x, light_attenuation[5].y, light_attenuation[5].z);
+	col.rgb += light_diffuse[6].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[6], light_direction[6], light_attenuation[6].x, light_attenuation[6].y, light_attenuation[6].z);
+	col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].y, light_attenuation[7].z);
 	
-	vary_pointlight_col = col.rgb*gl_Color.rgb;
+	vary_pointlight_col = col.rgb*color.rgb;
 
 	col.rgb = vec3(0,0,0);
 
 	// Add windlight lights
 	col.rgb = atmosAmbient(vec3(0.));
 	
-	vary_ambient = col.rgb*gl_Color.rgb;
-	vary_directional = gl_Color.rgb*atmosAffectDirectionalLight(max(calcDirectionalLight(norm, gl_LightSource[0].position.xyz), (1.0-gl_Color.a)*(1.0-gl_Color.a)));
+	vary_ambient = col.rgb*color.rgb;
+	vary_directional = atmosAffectDirectionalLight(max(calcDirectionalLight(norm, light_position[0].xyz), 0.0));
 	
-	col.rgb = min(col.rgb*gl_Color.rgb, 1.0);
+	col.rgb = col.rgb*color.rgb;
 	
-	gl_FrontColor = col;
+	vertex_color = col;
 
-	gl_FogFragCoord = pos.z;
+	
 	vary_fragcoord.xyz = pos.xyz + vec3(0,0,near_clip);
 }
 
diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl
deleted file mode 100644
index d9eafb6ebadaf1188940f7d6da702a89076c8069..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/edgeF.glsl
+++ /dev/null
@@ -1,81 +0,0 @@
-/** 
- * @file edgeF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-
-uniform sampler2DRect depthMap;
-uniform sampler2DRect normalMap;
-
-varying vec2 vary_fragcoord;
-
-uniform float depth_cutoff;
-uniform float norm_cutoff;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-float getDepth(vec2 pos_screen)
-{
-	float z = texture2DRect(depthMap, pos_screen.xy).r;
-	z = z*2.0-1.0;
-	vec4 ndc = vec4(0.0, 0.0, z, 1.0);
-	vec4 p = inv_proj*ndc;
-	return p.z/p.w;
-}
-
-void main() 
-{
-	vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz;
-	norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-	float depth = getDepth(vary_fragcoord.xy);
-	
-	vec2 tc = vary_fragcoord.xy;
-	
-	float sc = 0.75;
-	
-	vec2 de;
-	de.x = (depth-getDepth(tc+vec2(sc, sc))) + (depth-getDepth(tc+vec2(-sc, -sc)));
-	de.y = (depth-getDepth(tc+vec2(-sc, sc))) + (depth-getDepth(tc+vec2(sc, -sc)));
-	de /= depth;
-	de *= de;
-	de = step(depth_cutoff, de);
-	
-	vec2 ne;
-	vec3 nexnorm = texture2DRect(normalMap, tc+vec2(-sc,-sc)).rgb;
-	nexnorm = vec3((nexnorm.xy-0.5)*2.0,nexnorm.z); // unpack norm
-	ne.x = dot(nexnorm, norm);
-	vec3 neynorm = texture2DRect(normalMap, tc+vec2(sc,sc)).rgb;
-	neynorm = vec3((neynorm.xy-0.5)*2.0,neynorm.z); // unpack norm
-	ne.y = dot(neynorm, norm);
-	
-	ne = 1.0-ne;
-	
-	ne = step(norm_cutoff, ne);
-	
-	gl_FragColor.a = dot(de,de)+dot(ne,ne);
-	//gl_FragColor.a = dot(de,de);
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl
deleted file mode 100644
index a84fdd5dc139acfc158558c0fc7ba8e19e829ac9..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/edgeMSF.glsl
+++ /dev/null
@@ -1,92 +0,0 @@
-/** 
- * @file edgeF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-
-varying vec2 vary_fragcoord;
-
-uniform float depth_cutoff;
-uniform float norm_cutoff;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-float getDepth(ivec2 pos_screen, int sample)
-{
-	float z = texelFetch(depthMap, pos_screen, sample).r;
-	z = z*2.0-1.0;
-	vec4 ndc = vec4(0.0, 0.0, z, 1.0);
-	vec4 p = inv_proj*ndc;
-	return p.z/p.w;
-}
-
-void main() 
-{
-	float e = 0;
-	
-	ivec2 itc = ivec2(vary_fragcoord.xy);
-
-	for (int i = 0; i < samples; i++)
-	{	
-		vec3 norm = texelFetch(normalMap, itc, i).xyz;
-		norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-		float depth = getDepth(itc, i);
-	
-		vec2 tc = vary_fragcoord.xy;
-	
-		int sc = 1;
-	
-		vec2 de;
-		de.x = (depth-getDepth(itc+ivec2(sc, sc),i)) + (depth-getDepth(itc+ivec2(-sc, -sc), i));
-		de.y = (depth-getDepth(itc+ivec2(-sc, sc),i)) + (depth-getDepth(itc+ivec2(sc, -sc), i));
-		de /= depth;
-		de *= de;
-		de = step(depth_cutoff, de);
-	
-		vec2 ne;
-		vec3 nexnorm = texelFetch(normalMap, itc+ivec2(-sc,-sc), i).rgb;
-		nexnorm = vec3((nexnorm.xy-0.5)*2.0,nexnorm.z); // unpack norm
-		ne.x = dot(nexnorm, norm);
-		vec3 neynorm = texelFetch(normalMap, itc+ivec2(sc,sc), i).rgb;
-		neynorm = vec3((neynorm.xy-0.5)*2.0,neynorm.z); // unpack norm
-		ne.y = dot(neynorm, norm);
-	
-		ne = 1.0-ne;
-	
-		ne = step(norm_cutoff, ne);
-
-		e += dot(de,de)+dot(ne,ne);
-	}
-
-	e /= samples;
-	
-	gl_FragColor.a = e;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl b/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl
deleted file mode 100644
index 9deff7bb2aed71f6719ccde610bd7ae6f394b2c2..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/edgeV.glsl
+++ /dev/null
@@ -1,37 +0,0 @@
-/** 
- * @file edgeV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-varying vec2 vary_fragcoord;
-uniform vec2 screen_res;
-
-void main()
-{
-	//transform vertex
-	gl_Position = ftransform(); 
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
-	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
index 0b31cbefd18282b5b63800f66292913f3eb74c8a..14a683971a47792c73403501358d749a5eed07c5 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightF.glsl
@@ -22,11 +22,13 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
-
-
-
+ 
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2DRect diffuseRect;
 uniform sampler2DRect specularRect;
 uniform sampler2DRect depthMap;
@@ -34,7 +36,6 @@ uniform sampler2DRect normalMap;
 uniform samplerCube environmentMap;
 uniform sampler2DRect lightMap;
 uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
 uniform sampler2D projectionMap;
 
 uniform mat4 proj_mat; //screen space to light space
@@ -54,9 +55,12 @@ uniform float sun_wash;
 uniform int proj_shadow_idx;
 uniform float shadow_fade;
 
-varying vec4 vary_light;
+uniform vec3 center;
+uniform float size;
+uniform vec3 color;
+uniform float falloff;
 
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
 uniform vec2 screen_res;
 
 uniform mat4 inv_proj;
@@ -128,9 +132,9 @@ void main()
 	frag.xy *= screen_res;
 	
 	vec3 pos = getPosition(frag.xy).xyz;
-	vec3 lv = vary_light.xyz-pos.xyz;
+	vec3 lv = center.xyz-pos.xyz;
 	float dist2 = dot(lv,lv);
-	dist2 /= vary_light.w;
+	dist2 /= size;
 	if (dist2 > 1.0)
 	{
 		discard;
@@ -161,7 +165,7 @@ void main()
 	
 	proj_tc.xyz /= proj_tc.w;
 	
-	float fa = gl_Color.a+1.0;
+	float fa = falloff+1.0;
 	float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);
 	if (dist_atten <= 0.0)
 	{
@@ -193,7 +197,7 @@ void main()
 			
 			vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
 		
-			vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
+			vec3 lcol = color.rgb * plcol.rgb * plcol.a;
 			
 			lit = da * dist_atten * noise;
 			
@@ -210,7 +214,7 @@ void main()
 			
 		amb_da = min(amb_da, 1.0-lit);
 			
-		col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
+		col += amb_da*color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
 	}
 	
 	
@@ -243,7 +247,7 @@ void main()
 					stc.y > 0.0)
 				{
 					vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
-					col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb*shadow;
+					col += dist_atten*scol.rgb*color.rgb*scol.a*spec.rgb*shadow;
 				}
 			}
 		}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl
deleted file mode 100644
index 1afa9a9fb40c3cce6972f81e3ec8faaec417eab3..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/multiSpotLightMSF.glsl
+++ /dev/null
@@ -1,262 +0,0 @@
-/** 
- * @file multiSpotLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2DRect lightMap;
-uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
-uniform sampler2D projectionMap;
-
-uniform mat4 proj_mat; //screen space to light space
-uniform float proj_near; //near clip for projection
-uniform vec3 proj_p; //plane projection is emitting from (in screen space)
-uniform vec3 proj_n;
-uniform float proj_focus; //distance from plane to begin blurring
-uniform float proj_lod;  //(number of mips in proj map)
-uniform float proj_range; //range between near clip and far clip plane of projection
-uniform float proj_ambient_lod;
-uniform float proj_ambiance;
-uniform float near_clip;
-uniform float far_clip;
-
-uniform vec3 proj_origin; //origin of projection to be used for angular attenuation
-uniform float sun_wash;
-uniform int proj_shadow_idx;
-uniform float shadow_fade;
-
-varying vec4 vary_light;
-
-varying vec4 vary_fragcoord;
-uniform vec2 screen_res;
-
-uniform mat4 inv_proj;
-
-vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
-{
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	
-	vec2 dist = tc-vec2(0.5);
-	
-	float det = max(1.0-lod/(proj_lod*0.5), 0.0);
-	
-	float d = dot(dist,dist);
-		
-	ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0);
-	
-	return ret;
-}
-
-vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
-{
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	
-	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-	
-	float det = min(lod/(proj_lod*0.5), 1.0);
-	
-	float d = min(dist.x, dist.y);
-	
-	float edge = 0.25*det;
-		
-	ret *= clamp(d/edge, 0.0, 1.0);
-	
-	return ret;
-}
-
-vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
-{
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	
-	vec2 dist = tc-vec2(0.5);
-	
-	float d = dot(dist,dist);
-		
-	ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
-	
-	return ret;
-}
-
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
-	float depth = texelFetch(depthMap, pos_screen, sample).r;
-	vec2 sc = vec2(pos_screen.xy)*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-void main() 
-{
-	int wght = 0;
-
-	vec3 fcol = vec3(0,0,0);
-
-	vec2 frag = (vary_fragcoord.xy*0.5+0.5)*screen_res;
-	
-	ivec2 itc = ivec2(frag.xy);
-
-	float shadow = 1.0;
-
-	if (proj_shadow_idx >= 0)
-	{
-		vec4 shd = texture2DRect(lightMap, frag);
-		float sh[2];
-		sh[0] = shd.b;
-		sh[1] = shd.a;
-		shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0);
-	}
-		
-	for (int i = 0; i < samples; i++)
-	{
-		vec3 pos = getPosition(itc, i).xyz;
-		vec3 lv = vary_light.xyz-pos.xyz;
-		float dist2 = dot(lv,lv);
-		dist2 /= vary_light.w;
-		if (dist2 <= 1.0)
-		{
-			vec3 norm = texelFetch(normalMap, itc, i).xyz;
-			norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-	
-			norm = normalize(norm);
-			float l_dist = -dot(lv, proj_n);
-	
-			vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
-			if (proj_tc.z >= 0.0)
-			{
-				proj_tc.xyz /= proj_tc.w;
-	
-				float fa = gl_Color.a+1.0;
-				float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);
-				if (dist_atten > 0.0)
-				{
-					lv = proj_origin-pos.xyz;
-					lv = normalize(lv);
-					float da = dot(norm, lv);
-		
-					vec3 col = vec3(0,0,0);
-		
-					vec3 diff_tex = texelFetch(diffuseRect, itc, i).rgb;
-		
-					float noise = texture2D(noiseMap, frag.xy/128.0).b;
-					if (proj_tc.z > 0.0 &&
-						proj_tc.x < 1.0 &&
-						proj_tc.y < 1.0 &&
-						proj_tc.x > 0.0 &&
-						proj_tc.y > 0.0)
-					{
-						float lit = 0.0;
-						float amb_da = proj_ambiance;
-		
-						if (da > 0.0)
-						{
-							float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
-							float lod = diff * proj_lod;
-			
-							vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
-		
-							vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
-			
-							lit = da * dist_atten * noise;
-			
-							col = lcol*lit*diff_tex*shadow;
-							amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance;
-						}
-		
-						//float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
-						vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
-							
-						amb_da += (da*da*0.5+0.5)*proj_ambiance;
-				
-						amb_da *= dist_atten * noise;
-			
-						amb_da = min(amb_da, 1.0-lit);
-			
-						col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
-					}
-	
-	
-					vec4 spec = texelFetch(specularRect, itc, i);
-					if (spec.a > 0.0)
-					{
-						vec3 ref = reflect(normalize(pos), norm);
-		
-						//project from point pos in direction ref to plane proj_p, proj_n
-						vec3 pdelta = proj_p-pos;
-						float ds = dot(ref, proj_n);
-		
-						if (ds < 0.0)
-						{
-							vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
-			
-							vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
-
-							if (stc.z > 0.0)
-							{
-								stc.xy /= stc.w;
-
-								float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0);
-				
-								stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5);
-								
-								if (stc.x < 1.0 &&
-									stc.y < 1.0 &&
-									stc.x > 0.0 &&
-									stc.y > 0.0)
-								{
-									vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
-									col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb*shadow;
-								}
-							}
-						}
-					}
-
-					fcol += col;
-					wght++;
-				}
-			}
-		}
-	}
-	
-	if (wght <= 0)
-	{
-		discard;
-	}
-
-	gl_FragColor.rgb = fcol/samples;	
-	gl_FragColor.a = 0.0;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
index d7407332e53f0ebba5b2831be2a65a2c7d09aa11..97f3063a9e10d794c729ca6e9c93fbd79f819908 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl
@@ -23,16 +23,17 @@
  * $/LicenseInfo$
  */
  
-
-
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 uniform sampler2DRect diffuseRect;
 uniform sampler2DRect specularRect;
 uniform sampler2DRect normalMap;
 uniform sampler2DRect lightMap;
 uniform sampler2DRect depthMap;
-uniform sampler2D	  noiseMap;
 uniform samplerCube environmentMap;
 uniform sampler2D	  lightFunc;
 uniform vec3 gi_quad;
@@ -58,15 +59,16 @@ uniform vec4 distance_multiplier;
 uniform vec4 max_y;
 uniform vec4 glow;
 uniform float scene_light_strength;
-uniform vec3 env_mat[3];
+uniform mat3 env_mat;
 uniform vec4 shadow_clip;
 uniform mat3 ssao_effect_mat;
 
 uniform mat4 inv_proj;
 uniform vec2 screen_res;
 
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
+uniform vec3 sun_dir;
+
+VARYING vec2 vary_fragcoord;
 
 vec3 vary_PositionEye;
 
@@ -145,10 +147,6 @@ void calcAtmospherics(vec3 inPositionEye, float ambFactor) {
 	vec3 P = inPositionEye;
 	setPositionEye(P);
 	
-	//(TERRAIN) limit altitude
-	if (P.y > max_y.x) P *= (max_y.x / P.y);
-	if (P.y < -max_y.x) P *= (-max_y.x / P.y);
-
 	vec3 tmpLightnorm = lightnorm.xyz;
 
 	vec3 Pn = normalize(P);
@@ -280,9 +278,8 @@ void main()
 	vec3 pos = getPosition_d(tc, depth).xyz;
 	vec3 norm = texture2DRect(normalMap, tc).xyz;
 	norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-	//vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz;
-	
-	float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
+		
+	float da = max(dot(norm.xyz, sun_dir.xyz), 0.0);
 	
 	vec4 diffuse = texture2DRect(diffuseRect, tc);
 
@@ -309,13 +306,18 @@ void main()
 			// the old infinite-sky shiny reflection
 			//
 			vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
-			float sa = dot(refnormpersp, vary_light.xyz);
-			vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a;
+			float sa = dot(refnormpersp, sun_dir.xyz);
+			vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).r;
 
 			// add the two types of shiny together
 			vec3 spec_contrib = dumbshiny * spec.rgb;
 			bloom = dot(spec_contrib, spec_contrib);
 			col += spec_contrib;
+
+			//add environmentmap
+			vec3 env_vec = env_mat * refnormpersp;
+			col = mix(col.rgb, textureCube(environmentMap, env_vec).rgb, 
+				max(spec.a-diffuse.a*2.0, 0.0)); 
 		}
 			
 		col = atmosLighting(col);
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
deleted file mode 100644
index 12442944514de15c44def731f4a069c21a2661a7..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl
+++ /dev/null
@@ -1,337 +0,0 @@
-/** 
- * @file softenLightMSF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS normalMap;
-uniform sampler2DRect lightMap;
-uniform sampler2DMS depthMap;
-uniform sampler2D	  noiseMap;
-uniform samplerCube environmentMap;
-uniform sampler2D	  lightFunc;
-uniform vec3 gi_quad;
-
-uniform float blur_size;
-uniform float blur_fidelity;
-
-// Inputs
-uniform vec4 morphFactor;
-uniform vec3 camPosLocal;
-//uniform vec4 camPosWorld;
-uniform vec4 gamma;
-uniform vec4 lightnorm;
-uniform vec4 sunlight_color;
-uniform vec4 ambient;
-uniform vec4 blue_horizon;
-uniform vec4 blue_density;
-uniform vec4 haze_horizon;
-uniform vec4 haze_density;
-uniform vec4 cloud_shadow;
-uniform vec4 density_multiplier;
-uniform vec4 distance_multiplier;
-uniform vec4 max_y;
-uniform vec4 glow;
-uniform float scene_light_strength;
-uniform vec3 env_mat[3];
-uniform vec4 shadow_clip;
-uniform mat3 ssao_effect_mat;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
-
-vec3 vary_PositionEye;
-
-vec3 vary_SunlitColor;
-vec3 vary_AmblitColor;
-vec3 vary_AdditiveColor;
-vec3 vary_AtmosAttenuation;
-
-vec4 getPosition_d(vec2 pos_screen, float depth)
-{
-	vec2 sc = pos_screen.xy*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-vec3 getPositionEye()
-{
-	return vary_PositionEye;
-}
-vec3 getSunlitColor()
-{
-	return vary_SunlitColor;
-}
-vec3 getAmblitColor()
-{
-	return vary_AmblitColor;
-}
-vec3 getAdditiveColor()
-{
-	return vary_AdditiveColor;
-}
-vec3 getAtmosAttenuation()
-{
-	return vary_AtmosAttenuation;
-}
-
-
-void setPositionEye(vec3 v)
-{
-	vary_PositionEye = v;
-}
-
-void setSunlitColor(vec3 v)
-{
-	vary_SunlitColor = v;
-}
-
-void setAmblitColor(vec3 v)
-{
-	vary_AmblitColor = v;
-}
-
-void setAdditiveColor(vec3 v)
-{
-	vary_AdditiveColor = v;
-}
-
-void setAtmosAttenuation(vec3 v)
-{
-	vary_AtmosAttenuation = v;
-}
-
-void calcAtmospherics(vec3 inPositionEye, float ambFactor) {
-
-	vec3 P = inPositionEye;
-	setPositionEye(P);
-	
-	//(TERRAIN) limit altitude
-	if (P.y > max_y.x) P *= (max_y.x / P.y);
-	if (P.y < -max_y.x) P *= (-max_y.x / P.y);
-
-	vec3 tmpLightnorm = lightnorm.xyz;
-
-	vec3 Pn = normalize(P);
-	float Plen = length(P);
-
-	vec4 temp1 = vec4(0);
-	vec3 temp2 = vec3(0);
-	vec4 blue_weight;
-	vec4 haze_weight;
-	vec4 sunlight = sunlight_color;
-	vec4 light_atten;
-
-	//sunlight attenuation effect (hue and brightness) due to atmosphere
-	//this is used later for sunlight modulation at various altitudes
-	light_atten = (blue_density * 1.0 + vec4(haze_density.r) * 0.25) * (density_multiplier.x * max_y.x);
-		//I had thought blue_density and haze_density should have equal weighting,
-		//but attenuation due to haze_density tends to seem too strong
-
-	temp1 = blue_density + vec4(haze_density.r);
-	blue_weight = blue_density / temp1;
-	haze_weight = vec4(haze_density.r) / temp1;
-
-	//(TERRAIN) compute sunlight from lightnorm only (for short rays like terrain)
-	temp2.y = max(0.0, tmpLightnorm.y);
-	temp2.y = 1. / temp2.y;
-	sunlight *= exp( - light_atten * temp2.y);
-
-	// main atmospheric scattering line integral
-	temp2.z = Plen * density_multiplier.x;
-
-	// Transparency (-> temp1)
-	// ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier.x in a variable because the ati
-	// compiler gets confused.
-	temp1 = exp(-temp1 * temp2.z * distance_multiplier.x);
-
-	//final atmosphere attenuation factor
-	setAtmosAttenuation(temp1.rgb);
-	
-	//compute haze glow
-	//(can use temp2.x as temp because we haven't used it yet)
-	temp2.x = dot(Pn, tmpLightnorm.xyz);
-	temp2.x = 1. - temp2.x;
-		//temp2.x is 0 at the sun and increases away from sun
-	temp2.x = max(temp2.x, .03);	//was glow.y
-		//set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
-	temp2.x *= glow.x;
-		//higher glow.x gives dimmer glow (because next step is 1 / "angle")
-	temp2.x = pow(temp2.x, glow.z);
-		//glow.z should be negative, so we're doing a sort of (1 / "angle") function
-
-	//add "minimum anti-solar illumination"
-	temp2.x += .25;
-	
-	//increase ambient when there are more clouds
-	vec4 tmpAmbient = ambient + (vec4(1.) - ambient) * cloud_shadow.x * 0.5;
-	
-	/*  decrease value and saturation (that in HSV, not HSL) for occluded areas
-	 * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html
-	 * // The following line of code performs the equivalent of:
-	 * float ambAlpha = tmpAmbient.a;
-	 * float ambValue = dot(vec3(tmpAmbient), vec3(0.577)); // projection onto <1/rt(3), 1/rt(3), 1/rt(3)>, the neutral white-black axis
-	 * vec3 ambHueSat = vec3(tmpAmbient) - vec3(ambValue);
-	 * tmpAmbient = vec4(RenderSSAOEffect.valueFactor * vec3(ambValue) + RenderSSAOEffect.saturationFactor *(1.0 - ambFactor) * ambHueSat, ambAlpha);
-	 */
-	tmpAmbient = vec4(mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor), tmpAmbient.a);
-
-	//haze color
-	setAdditiveColor(
-		vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow.x) + tmpAmbient)
-	  + (haze_horizon.r * haze_weight) * (sunlight*(1.-cloud_shadow.x) * temp2.x
-		  + tmpAmbient)));
-
-	//brightness of surface both sunlight and ambient
-	setSunlitColor(vec3(sunlight * .5));
-	setAmblitColor(vec3(tmpAmbient * .25));
-	setAdditiveColor(getAdditiveColor() * vec3(1.0 - temp1));
-}
-
-vec3 atmosLighting(vec3 light)
-{
-	light *= getAtmosAttenuation().r;
-	light += getAdditiveColor();
-	return (2.0 * light);
-}
-
-vec3 atmosTransport(vec3 light) {
-	light *= getAtmosAttenuation().r;
-	light += getAdditiveColor() * 2.0;
-	return light;
-}
-vec3 atmosGetDiffuseSunlightColor()
-{
-	return getSunlitColor();
-}
-
-vec3 scaleDownLight(vec3 light)
-{
-	return (light / scene_light_strength );
-}
-
-vec3 scaleUpLight(vec3 light)
-{
-	return (light * scene_light_strength);
-}
-
-vec3 atmosAmbient(vec3 light)
-{
-	return getAmblitColor() + light / 2.0;
-}
-
-vec3 atmosAffectDirectionalLight(float lightIntensity)
-{
-	return getSunlitColor() * lightIntensity;
-}
-
-vec3 scaleSoftClip(vec3 light)
-{
-	//soft clip effect:
-	light = 1. - clamp(light, vec3(0.), vec3(1.));
-	light = 1. - pow(light, gamma.xxx);
-
-	return light;
-}
-
-void main() 
-{
-	vec2 tc = vary_fragcoord.xy;
-	ivec2 itc = ivec2(tc);
-
-	vec4 fcol = vec4(0,0,0,0);
-
-	vec2 scol_ambocc = texture2DRect(lightMap, tc).rg;
-	float ambocc = scol_ambocc.g;
-
-	for (int i = 0; i < samples; ++i)
-	{
-		float depth = texelFetch(depthMap, itc.xy, i).r;
-		vec3 pos = getPosition_d(tc, depth).xyz;
-		vec3 norm = texelFetch(normalMap, itc, i).xyz;
-		norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-			
-		float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
-	
-		vec4 diffuse = texelFetch(diffuseRect, itc, i);
-		vec3 col;
-		float bloom = 0.0;
-		if (diffuse.a < 0.9)
-		{
-			vec4 spec = texelFetch(specularRect, itc, i);
-	
-			float amb = 0;
-
-			float scol = max(scol_ambocc.r, diffuse.a); 
-			amb += ambocc;
-
-			calcAtmospherics(pos.xyz, ambocc);
-	
-			col = atmosAmbient(vec3(0));
-			col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a));
-	
-			col *= diffuse.rgb;
-	
-			if (spec.a > 0.0) // specular reflection
-			{
-				// the old infinite-sky shiny reflection
-				//
-				vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
-				float sa = dot(refnormpersp, vary_light.xyz);
-				vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a;
-
-				// add the two types of shiny together
-				vec3 spec_contrib = dumbshiny * spec.rgb;
-				bloom = dot(spec_contrib, spec_contrib);
-				col += spec_contrib;
-			}
-	
-			col = atmosLighting(col);
-			col = scaleSoftClip(col);
-
-			col = mix(col, diffuse.rgb, diffuse.a);
-		}
-		else
-		{
-			col = diffuse.rgb;
-		}
-
-		fcol += vec4(col, bloom);
-	}
-		
-	gl_FragColor = fcol/samples; 
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl
index fed238510a0281a7f4b81520f4c81b9a3972fe89..c840d727843a95a9f2049dcf827eccb93d6519f3 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightV.glsl
@@ -22,23 +22,21 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
 
 uniform vec2 screen_res;
 
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
+VARYING vec2 vary_fragcoord;
+
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform(); 
+	vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	gl_Position = pos; 
 	
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
-	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
-		
-	vec4 tex = gl_MultiTexCoord0;
-	tex.w = 1.0;
 	
-	vary_light = gl_MultiTexCoord0;
+	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
 }
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
index 25270f49392c809a438f506d08bb6eeb2360c827..31bd0c79dab7a1ec5fc04116edaa20ffa8817207 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/spotLightF.glsl
@@ -23,9 +23,13 @@
  * $/LicenseInfo$
  */
  
+#extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
-#extension GL_ARB_texture_rectangle : enable
+VARYING vec4 vertex_color;
 
 uniform sampler2DRect diffuseRect;
 uniform sampler2DRect specularRect;
@@ -34,7 +38,6 @@ uniform sampler2DRect normalMap;
 uniform samplerCube environmentMap;
 uniform sampler2DRect lightMap;
 uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
 uniform sampler2D projectionMap;
 
 uniform mat4 proj_mat; //screen space to light space
@@ -53,9 +56,9 @@ uniform float sun_wash;
 uniform int proj_shadow_idx;
 uniform float shadow_fade;
 
-varying vec4 vary_light;
+VARYING vec4 vary_light;
 
-varying vec4 vary_fragcoord;
+VARYING vec4 vary_fragcoord;
 uniform vec2 screen_res;
 
 uniform mat4 inv_proj;
@@ -114,7 +117,7 @@ void main()
 	
 	proj_tc.xyz /= proj_tc.w;
 	
-	float fa = gl_Color.a+1.0;
+	float fa = vertex_color.a+1.0;
 	float dist_atten = clamp(1.0-(dist2-1.0*(1.0-fa))/fa, 0.0, 1.0);
 	
 	lv = proj_origin-pos.xyz;
@@ -140,7 +143,7 @@ void main()
 			
 			vec4 plcol = texture2DLod(projectionMap, proj_tc.xy, lod);
 		
-			vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
+			vec3 lcol = vertex_color.rgb * plcol.rgb * plcol.a;
 			
 			lit = da * dist_atten * noise;
 			
@@ -163,7 +166,7 @@ void main()
 		
 		amb_da = min(amb_da, 1.0-lit);
 		
-		col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
+		col += amb_da*vertex_color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
 	}
 	
 	
@@ -192,7 +195,7 @@ void main()
 					stc.y > 0.0)
 				{
 					vec4 scol = texture2DLod(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
-					col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb*shadow;
+					col += dist_atten*scol.rgb*vertex_color.rgb*scol.a*spec.rgb*shadow;
 				}
 			}
 		}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl
deleted file mode 100644
index 4962e73e390c3cc6e3b5e2fec2fb550a2da1a350..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/spotLightMSF.glsl
+++ /dev/null
@@ -1,263 +0,0 @@
-/** 
- * @file multiSpotLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
-
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-uniform sampler2DMS diffuseRect;
-uniform sampler2DMS specularRect;
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2DRect lightMap;
-uniform sampler2D noiseMap;
-uniform sampler2D lightFunc;
-uniform sampler2D projectionMap;
-
-uniform mat4 proj_mat; //screen space to light space
-uniform float proj_near; //near clip for projection
-uniform vec3 proj_p; //plane projection is emitting from (in screen space)
-uniform vec3 proj_n;
-uniform float proj_focus; //distance from plane to begin blurring
-uniform float proj_lod;  //(number of mips in proj map)
-uniform float proj_range; //range between near clip and far clip plane of projection
-uniform float proj_ambient_lod;
-uniform float proj_ambiance;
-uniform float near_clip;
-uniform float far_clip;
-
-uniform vec3 proj_origin; //origin of projection to be used for angular attenuation
-uniform float sun_wash;
-uniform int proj_shadow_idx;
-uniform float shadow_fade;
-
-varying vec4 vary_light;
-
-varying vec4 vary_fragcoord;
-uniform vec2 screen_res;
-
-uniform mat4 inv_proj;
-
-vec4 texture2DLodSpecular(sampler2D projectionMap, vec2 tc, float lod)
-{
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	
-	vec2 dist = tc-vec2(0.5);
-	
-	float det = max(1.0-lod/(proj_lod*0.5), 0.0);
-	
-	float d = dot(dist,dist);
-		
-	ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0)+det, 1.0);
-	
-	return ret;
-}
-
-vec4 texture2DLodDiffuse(sampler2D projectionMap, vec2 tc, float lod)
-{
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	
-	vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
-	
-	float det = min(lod/(proj_lod*0.5), 1.0);
-	
-	float d = min(dist.x, dist.y);
-	
-	float edge = 0.25*det;
-		
-	ret *= clamp(d/edge, 0.0, 1.0);
-	
-	return ret;
-}
-
-vec4 texture2DLodAmbient(sampler2D projectionMap, vec2 tc, float lod)
-{
-	vec4 ret = texture2DLod(projectionMap, tc, lod);
-	
-	vec2 dist = tc-vec2(0.5);
-	
-	float d = dot(dist,dist);
-		
-	ret *= min(clamp((0.25-d)/0.25, 0.0, 1.0), 1.0);
-	
-	return ret;
-}
-
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
-	float depth = texelFetch(depthMap, pos_screen, sample).r;
-	vec2 sc = vec2(pos_screen.xy)*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-void main() 
-{
-	vec4 frag = vary_fragcoord;
-	frag.xyz /= frag.w;
-	frag.xyz = frag.xyz*0.5+0.5;
-	frag.xy *= screen_res;
-	ivec2 itc = ivec2(frag.xy);
-	
-	vec3 fcol = vec3(0,0,0);
-	int wght = 0;
-
-	float shadow = 1.0;
-	
-	if (proj_shadow_idx >= 0)
-	{
-		vec4 shd = texture2DRect(lightMap, frag.xy);
-		float sh[2];
-		sh[0] = shd.b;
-		sh[1] = shd.a;
-		shadow = min(sh[proj_shadow_idx]+shadow_fade, 1.0);
-	}
-	
-	for (int i = 0; i < samples; i++)
-	{
-		vec3 pos = getPosition(itc, i).xyz;
-		vec3 lv = vary_light.xyz-pos.xyz;
-		float dist2 = dot(lv,lv);
-		dist2 /= vary_light.w;
-		if (dist2 <= 1.0)
-		{
-			vec3 norm = texelFetch(normalMap, itc, i).xyz;
-			norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-	
-			norm = normalize(norm);
-			float l_dist = -dot(lv, proj_n);
-	
-			vec4 proj_tc = (proj_mat * vec4(pos.xyz, 1.0));
-			if (proj_tc.z >= 0.0)
-			{
-				proj_tc.xyz /= proj_tc.w;
-	
-				float fa = gl_Color.a+1.0;
-				float dist_atten = min(1.0-(dist2-1.0*(1.0-fa))/fa, 1.0);
-				if (dist_atten > 0.0)
-				{
-					lv = proj_origin-pos.xyz;
-					lv = normalize(lv);
-					float da = dot(norm, lv);
-		
-					vec3 col = vec3(0,0,0);
-		
-					vec3 diff_tex = texelFetch(diffuseRect, itc, i).rgb;
-		
-					float noise = texture2D(noiseMap, frag.xy/128.0).b;
-					if (proj_tc.z > 0.0 &&
-						proj_tc.x < 1.0 &&
-						proj_tc.y < 1.0 &&
-						proj_tc.x > 0.0 &&
-						proj_tc.y > 0.0)
-					{
-						float lit = 0.0;
-						float amb_da = proj_ambiance;
-		
-						if (da > 0.0)
-						{
-							float diff = clamp((l_dist-proj_focus)/proj_range, 0.0, 1.0);
-							float lod = diff * proj_lod;
-			
-							vec4 plcol = texture2DLodDiffuse(projectionMap, proj_tc.xy, lod);
-		
-							vec3 lcol = gl_Color.rgb * plcol.rgb * plcol.a;
-			
-							lit = da * dist_atten * noise;
-			
-							col = lcol*lit*diff_tex*shadow;
-							amb_da += (da*0.5)*(1.0-shadow)*proj_ambiance;
-						}
-		
-						//float diff = clamp((proj_range-proj_focus)/proj_range, 0.0, 1.0);
-						vec4 amb_plcol = texture2DLodAmbient(projectionMap, proj_tc.xy, proj_lod);
-							
-						amb_da += (da*da*0.5+0.5)*proj_ambiance;
-				
-						amb_da *= dist_atten * noise;
-			
-						amb_da = min(amb_da, 1.0-lit);
-			
-						col += amb_da*gl_Color.rgb*diff_tex.rgb*amb_plcol.rgb*amb_plcol.a;
-					}
-	
-	
-					vec4 spec = texelFetch(specularRect, itc, i);
-					if (spec.a > 0.0)
-					{
-						vec3 ref = reflect(normalize(pos), norm);
-		
-						//project from point pos in direction ref to plane proj_p, proj_n
-						vec3 pdelta = proj_p-pos;
-						float ds = dot(ref, proj_n);
-		
-						if (ds < 0.0)
-						{
-							vec3 pfinal = pos + ref * dot(pdelta, proj_n)/ds;
-			
-							vec4 stc = (proj_mat * vec4(pfinal.xyz, 1.0));
-
-							if (stc.z > 0.0)
-							{
-								stc.xy /= stc.w;
-
-								float fatten = clamp(spec.a*spec.a+spec.a*0.5, 0.25, 1.0);
-				
-								stc.xy = (stc.xy - vec2(0.5)) * fatten + vec2(0.5);
-								
-								if (stc.x < 1.0 &&
-									stc.y < 1.0 &&
-									stc.x > 0.0 &&
-									stc.y > 0.0)
-								{
-									vec4 scol = texture2DLodSpecular(projectionMap, stc.xy, proj_lod-spec.a*proj_lod);
-									col += dist_atten*scol.rgb*gl_Color.rgb*scol.a*spec.rgb*shadow;
-								}
-							}
-						}
-					}
-
-					fcol += col;
-					wght++;
-				}
-			}
-		}
-	}
-	
-	if (wght <= 0)
-	{
-		discard;
-	}
-
-	gl_FragColor.rgb = fcol/wght;	
-	gl_FragColor.a = 0.0;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
index 1809cff1e5d32c79a5e492e51e838124dbe46a1b..229c2f4b67533b9c5ca119d52f47c47f1d05cbec 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightF.glsl
@@ -22,11 +22,13 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
-
 
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 //class 2, shadows, no SSAO
 
 uniform sampler2DRect depthMap;
@@ -47,13 +49,13 @@ uniform float ssao_max_radius;
 uniform float ssao_factor;
 uniform float ssao_factor_inv;
 
-varying vec2 vary_fragcoord;
-varying vec4 vary_light;
+VARYING vec2 vary_fragcoord;
 
 uniform mat4 inv_proj;
 uniform vec2 screen_res;
 uniform vec2 shadow_res;
 uniform vec2 proj_shadow_res;
+uniform vec3 sun_dir;
 
 uniform float shadow_bias;
 uniform float shadow_offset;
@@ -132,10 +134,10 @@ void main()
 	}*/
 	
 	float shadow = 1.0;
-	float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
+	float dp_directional_light = max(0.0, dot(norm, sun_dir.xyz));
 
 	vec3 shadow_pos = pos.xyz + displace*norm;
-	vec3 offset = vary_light.xyz * (1.0-dp_directional_light);
+	vec3 offset = sun_dir.xyz * (1.0-dp_directional_light);
 	
 	vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0);
 	
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl
deleted file mode 100644
index ac4fe52655993877f94c10244a78f300f4ec41c1..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightMSF.glsl
+++ /dev/null
@@ -1,220 +0,0 @@
-/** 
- * @file sunLightMSF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-//class 2, shadows, no SSAO
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2DRectShadow shadowMap0;
-uniform sampler2DRectShadow shadowMap1;
-uniform sampler2DRectShadow shadowMap2;
-uniform sampler2DRectShadow shadowMap3;
-uniform sampler2DShadow shadowMap4;
-uniform sampler2DShadow shadowMap5;
-
-
-// Inputs
-uniform mat4 shadow_matrix[6];
-uniform vec4 shadow_clip;
-uniform float ssao_radius;
-uniform float ssao_max_radius;
-uniform float ssao_factor;
-uniform float ssao_factor_inv;
-
-varying vec2 vary_fragcoord;
-varying vec4 vary_light;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-uniform vec2 shadow_res;
-uniform vec2 proj_shadow_res;
-
-uniform float shadow_bias;
-uniform float shadow_offset;
-
-uniform float spot_shadow_bias;
-uniform float spot_shadow_offset;
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
-	float depth = texelFetch(depthMap, pos_screen.xy, sample).r;
-	vec2 sc = vec2(pos_screen.xy)*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)
-{
-	stc.xyz /= stc.w;
-	stc.z += shadow_bias*scl;
-	
-	float cs = shadow2DRect(shadowMap, stc.xyz).x;
-	float shadow = cs;
-
-	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, 1.5, 0.0)).x, cs);
-	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, -1.5, 0.0)).x, cs);
-	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, 1.5, 0.0)).x, cs);
-	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, -1.5, 0.0)).x, cs);
-			
-	return shadow/5.0;
-	
-	//return shadow;
-}
-
-float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl)
-{
-	stc.xyz /= stc.w;
-	stc.z += spot_shadow_bias*scl;
-	
-	float cs = shadow2D(shadowMap, stc.xyz).x;
-	float shadow = cs;
-
-	vec2 off = 1.5/proj_shadow_res;
-	
-	shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, off.y, 0.0)).x, cs);
-	shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, -off.y, 0.0)).x, cs);
-	shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, off.y, 0.0)).x, cs);
-	shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, -off.y, 0.0)).x, cs);
-				
-	return shadow/5.0;
-	
-	//return shadow;
-}
-
-void main() 
-{
-	vec2 pos_screen = vary_fragcoord.xy;
-	ivec2 itc = ivec2(pos_screen);
-
-	//try doing an unproject here
-	
-	vec4 fcol = vec4(0,0,0,0);
-
-	for (int i = 0; i < samples; i++)
-	{
-		vec4 pos = getPosition(itc, i);
-	
-		vec4 nmap4 = texelFetch(normalMap, itc, i);
-		nmap4 = vec4((nmap4.xy-0.5)*2.0,nmap4.z,nmap4.w); // unpack norm
-		float displace = nmap4.w;
-		vec3 norm = nmap4.xyz;
-	
-		/*if (pos.z == 0.0) // do nothing for sky *FIX: REMOVE THIS IF/WHEN THE POSITION MAP IS BEING USED AS A STENCIL
-		{
-			gl_FragColor = vec4(0.0); // doesn't matter
-			return;
-		}*/
-	
-		float shadow = 1.0;
-		float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
-
-		vec3 shadow_pos = pos.xyz + displace*norm;
-		vec3 offset = vary_light.xyz * (1.0-dp_directional_light);
-	
-		vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0);
-	
-		if (spos.z > -shadow_clip.w)
-		{	
-			if (dp_directional_light == 0.0)
-			{
-				// if we know this point is facing away from the sun then we know it's in shadow without having to do a squirrelly shadow-map lookup
-				shadow = 0.0;
-			}
-			else
-			{
-				vec4 lpos;
-			
-				if (spos.z < -shadow_clip.z)
-				{
-					lpos = shadow_matrix[3]*spos;
-					lpos.xy *= shadow_res;
-					shadow = pcfShadow(shadowMap3, lpos, 0.25);
-					shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0);
-				}
-				else if (spos.z < -shadow_clip.y)
-				{
-					lpos = shadow_matrix[2]*spos;
-					lpos.xy *= shadow_res;
-					shadow = pcfShadow(shadowMap2, lpos, 0.5);
-				}
-				else if (spos.z < -shadow_clip.x)
-				{
-					lpos = shadow_matrix[1]*spos;
-					lpos.xy *= shadow_res;
-					shadow = pcfShadow(shadowMap1, lpos, 0.75);
-				}
-				else
-				{
-					lpos = shadow_matrix[0]*spos;
-					lpos.xy *= shadow_res;
-					shadow = pcfShadow(shadowMap0, lpos, 1.0);
-				}
-		
-				// take the most-shadowed value out of these two:
-				//  * the blurred sun shadow in the light (shadow) map
-				//  * an unblurred dot product between the sun and this norm
-				// the goal is to err on the side of most-shadow to fill-in shadow holes and reduce artifacting
-				shadow = min(shadow, dp_directional_light);
-			
-				//lpos.xy /= lpos.w*32.0;
-				//if (fract(lpos.x) < 0.1 || fract(lpos.y) < 0.1)
-				//{
-				//	shadow = 0.0;
-				//}
-			
-			}
-		}
-		else
-		{
-			// more distant than the shadow map covers
-			shadow = 1.0;
-		}
-	
-		fcol[0] += shadow;
-		fcol[1] += 1.0;
-
-		spos = vec4(shadow_pos+norm*spot_shadow_offset, 1.0);
-	
-		//spotlight shadow 1
-		vec4 lpos = shadow_matrix[4]*spos;
-		fcol[2] += pcfShadow(shadowMap4, lpos, 0.8); 
-	
-		//spotlight shadow 2
-		lpos = shadow_matrix[5]*spos;
-		fcol[3] += pcfShadow(shadowMap5, lpos, 0.8); 
-	}
-
-	gl_FragColor = fcol/samples;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
index 681186d6b2320999f8de1b12943ebbe7d4ebc4a4..6b420833b955eeba19072696e4f4e96680a8e460 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOF.glsl
@@ -22,10 +22,12 @@
  * $/LicenseInfo$
  */
  
-
-
 #extension GL_ARB_texture_rectangle : enable
 
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
+
 //class 2 -- shadows and SSAO
 
 uniform sampler2DRect depthMap;
@@ -38,6 +40,7 @@ uniform sampler2DShadow shadowMap4;
 uniform sampler2DShadow shadowMap5;
 uniform sampler2D noiseMap;
 
+
 // Inputs
 uniform mat4 shadow_matrix[6];
 uniform vec4 shadow_clip;
@@ -46,13 +49,13 @@ uniform float ssao_max_radius;
 uniform float ssao_factor;
 uniform float ssao_factor_inv;
 
-varying vec2 vary_fragcoord;
-varying vec4 vary_light;
+VARYING vec2 vary_fragcoord;
 
 uniform mat4 inv_proj;
 uniform vec2 screen_res;
 uniform vec2 shadow_res;
 uniform vec2 proj_shadow_res;
+uniform vec3 sun_dir;
 
 uniform float shadow_bias;
 uniform float shadow_offset;
@@ -73,11 +76,8 @@ vec4 getPosition(vec2 pos_screen)
 	return pos;
 }
 
-//calculate decreases in ambient lighting when crowded out (SSAO)
-float calcAmbientOcclusion(vec4 pos, vec3 norm)
+vec2 getKern(int i)
 {
-	float ret = 1.0;
-
 	vec2 kern[8];
 	// exponentially (^2) distant occlusion samples spread around origin
 	kern[0] = vec2(-1.0, 0.0) * 0.125*0.125;
@@ -88,22 +88,30 @@ float calcAmbientOcclusion(vec4 pos, vec3 norm)
 	kern[5] = vec2(-0.7071, -0.7071) * 0.750*0.750;
 	kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875;
 	kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000;
+	
+	return kern[i];
+}
+
+//calculate decreases in ambient lighting when crowded out (SSAO)
+float calcAmbientOcclusion(vec4 pos, vec3 norm)
+{
+	float ret = 1.0;
 
 	vec2 pos_screen = vary_fragcoord.xy;
 	vec3 pos_world = pos.xyz;
 	vec2 noise_reflect = texture2D(noiseMap, vary_fragcoord.xy/128.0).xy;
 		
 	float angle_hidden = 0.0;
-	int points = 0;
+	float points = 0;
 		
 	float scale = min(ssao_radius / -pos_world.z, ssao_max_radius);
-		
+	
 	// it was found that keeping # of samples a constant was the fastest, probably due to compiler optimizations (unrolling?)
 	for (int i = 0; i < 8; i++)
 	{
-		vec2 samppos_screen = pos_screen + scale * reflect(kern[i], noise_reflect);
+		vec2 samppos_screen = pos_screen + scale * reflect(getKern(i), noise_reflect);
 		vec3 samppos_world = getPosition(samppos_screen).xyz; 
-			
+		
 		vec3 diff = pos_world - samppos_world;
 		float dist2 = dot(diff, diff);
 			
@@ -111,17 +119,21 @@ float calcAmbientOcclusion(vec4 pos, vec3 norm)
 		// --> solid angle shrinking by the square of distance
 		//radius is somewhat arbitrary, can approx with just some constant k * 1 / dist^2
 		//(k should vary inversely with # of samples, but this is taken care of later)
-			
-		angle_hidden = angle_hidden + float(dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) * min(1.0/dist2, ssao_factor_inv);
+		
+		float funky_val = (dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) ? 1.0 : 0.0;
+		angle_hidden = angle_hidden + funky_val * min(1.0/dist2, ssao_factor_inv);
 			
 		// 'blocked' samples (significantly closer to camera relative to pos_world) are "no data", not "no occlusion" 
-		points = points + int(diff.z > -1.0);
+		float diffz_val = (diff.z > -1.0) ? 1.0 : 0.0;
+		points = points + diffz_val;
 	}
 		
-	angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0);
-		
-	ret = (1.0 - (float(points != 0) * angle_hidden));
+	angle_hidden = min(ssao_factor*angle_hidden/points, 1.0);
 	
+	float points_val = (points > 0.0) ? 1.0 : 0.0;
+	ret = (1.0 - (points_val * angle_hidden));
+
+	ret = max(ret, 0.0);
 	return min(ret, 1.0);
 }
 
@@ -158,7 +170,6 @@ float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl)
 	shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, off.y, 0.0)).x, cs);
 	shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, -off.y, 0.0)).x, cs);
 	
-			
 	return shadow/5.0;
 	
 	//return shadow;
@@ -184,10 +195,10 @@ void main()
 	}*/
 	
 	float shadow = 1.0;
-	float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
+	float dp_directional_light = max(0.0, dot(norm, sun_dir.xyz));
 
 	vec3 shadow_pos = pos.xyz + displace*norm;
-	vec3 offset = vary_light.xyz * (1.0-dp_directional_light);
+	vec3 offset = sun_dir.xyz * (1.0-dp_directional_light);
 	
 	vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0);
 	
@@ -251,7 +262,7 @@ void main()
 	gl_FragColor[0] = shadow;
 	gl_FragColor[1] = calcAmbientOcclusion(pos, norm);
 	
-	spos.xyz = shadow_pos+norm*spot_shadow_offset;
+	spos = vec4(shadow_pos+norm*spot_shadow_offset, 1.0);
 	
 	//spotlight shadow 1
 	vec4 lpos = shadow_matrix[4]*spos;
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl
deleted file mode 100644
index 0fd7b7525dc996f0690252ed88ad24c5a89f544b..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightSSAOMSF.glsl
+++ /dev/null
@@ -1,258 +0,0 @@
-/** 
- * @file sunLightSSAOF.glsl
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-#extension GL_ARB_texture_multisample : enable
-
-//class 2 -- shadows and SSAO
-
-uniform sampler2DMS depthMap;
-uniform sampler2DMS normalMap;
-uniform sampler2DRectShadow shadowMap0;
-uniform sampler2DRectShadow shadowMap1;
-uniform sampler2DRectShadow shadowMap2;
-uniform sampler2DRectShadow shadowMap3;
-uniform sampler2DShadow shadowMap4;
-uniform sampler2DShadow shadowMap5;
-uniform sampler2D noiseMap;
-
-// Inputs
-uniform mat4 shadow_matrix[6];
-uniform vec4 shadow_clip;
-uniform float ssao_radius;
-uniform float ssao_max_radius;
-uniform float ssao_factor;
-uniform float ssao_factor_inv;
-
-varying vec2 vary_fragcoord;
-varying vec4 vary_light;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-uniform vec2 shadow_res;
-uniform vec2 proj_shadow_res;
-
-uniform float shadow_bias;
-uniform float shadow_offset;
-
-uniform float spot_shadow_bias;
-uniform float spot_shadow_offset;
-
-vec4 getPosition(ivec2 pos_screen, int sample)
-{
-	float depth = texelFetch(depthMap, pos_screen, sample).r;
-	vec2 sc = vec2(pos_screen.xy)*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-//calculate decreases in ambient lighting when crowded out (SSAO)
-float calcAmbientOcclusion(vec4 pos, vec3 norm, int sample)
-{
-	float ret = 1.0;
-
-	vec2 kern[8];
-	// exponentially (^2) distant occlusion samples spread around origin
-	kern[0] = vec2(-1.0, 0.0) * 0.125*0.125;
-	kern[1] = vec2(1.0, 0.0) * 0.250*0.250;
-	kern[2] = vec2(0.0, 1.0) * 0.375*0.375;
-	kern[3] = vec2(0.0, -1.0) * 0.500*0.500;
-	kern[4] = vec2(0.7071, 0.7071) * 0.625*0.625;
-	kern[5] = vec2(-0.7071, -0.7071) * 0.750*0.750;
-	kern[6] = vec2(-0.7071, 0.7071) * 0.875*0.875;
-	kern[7] = vec2(0.7071, -0.7071) * 1.000*1.000;
-
-	vec2 pos_screen = vary_fragcoord.xy;
-	vec3 pos_world = pos.xyz;
-	vec2 noise_reflect = texture2D(noiseMap, vary_fragcoord.xy/128.0).xy;
-		
-	float angle_hidden = 0.0;
-	int points = 0;
-		
-	float scale = min(ssao_radius / -pos_world.z, ssao_max_radius);
-		
-	// it was found that keeping # of samples a constant was the fastest, probably due to compiler optimizations (unrolling?)
-	for (int i = 0; i < 8; i++)
-	{
-		ivec2 samppos_screen = ivec2(pos_screen + scale * reflect(kern[i], noise_reflect));
-		vec3 samppos_world = getPosition(samppos_screen, sample).xyz; 
-			
-		vec3 diff = pos_world - samppos_world;
-		float dist2 = dot(diff, diff);
-			
-		// assume each sample corresponds to an occluding sphere with constant radius, constant x-sectional area
-		// --> solid angle shrinking by the square of distance
-		//radius is somewhat arbitrary, can approx with just some constant k * 1 / dist^2
-		//(k should vary inversely with # of samples, but this is taken care of later)
-			
-		angle_hidden = angle_hidden + float(dot((samppos_world - 0.05*norm - pos_world), norm) > 0.0) * min(1.0/dist2, ssao_factor_inv);
-			
-		// 'blocked' samples (significantly closer to camera relative to pos_world) are "no data", not "no occlusion" 
-		points = points + int(diff.z > -1.0);
-	}
-		
-	angle_hidden = min(ssao_factor*angle_hidden/float(points), 1.0);
-		
-	ret = (1.0 - (float(points != 0) * angle_hidden));
-	
-	return min(ret, 1.0);
-}
-
-float pcfShadow(sampler2DRectShadow shadowMap, vec4 stc, float scl)
-{
-	stc.xyz /= stc.w;
-	stc.z += shadow_bias*scl;
-	
-	float cs = shadow2DRect(shadowMap, stc.xyz).x;
-	float shadow = cs;
-
-	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, 1.5, 0.0)).x, cs);
-	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(1.5, -1.5, 0.0)).x, cs);
-	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, 1.5, 0.0)).x, cs);
-	shadow += max(shadow2DRect(shadowMap, stc.xyz+vec3(-1.5, -1.5, 0.0)).x, cs);
-			
-	return shadow/5.0;
-	
-	//return shadow;
-}
-
-float pcfShadow(sampler2DShadow shadowMap, vec4 stc, float scl)
-{
-	stc.xyz /= stc.w;
-	stc.z += spot_shadow_bias*scl;
-	
-	float cs = shadow2D(shadowMap, stc.xyz).x;
-	float shadow = cs;
-
-	vec2 off = 1.5/proj_shadow_res;
-	
-	shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, off.y, 0.0)).x, cs);
-	shadow += max(shadow2D(shadowMap, stc.xyz+vec3(off.x, -off.y, 0.0)).x, cs);
-	shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, off.y, 0.0)).x, cs);
-	shadow += max(shadow2D(shadowMap, stc.xyz+vec3(-off.x, -off.y, 0.0)).x, cs);
-	
-			
-	return shadow/5.0;
-	
-	//return shadow;
-}
-
-void main() 
-{
-	vec2 pos_screen = vary_fragcoord.xy;
-	ivec2 itc = ivec2(pos_screen);
-	vec4 fcol = vec4(0,0,0,0);
-
-	for (int i = 0; i < samples; i++)
-	{
-		vec4 pos = getPosition(itc, i);
-	
-		vec4 nmap4 = texelFetch(normalMap, itc, i);
-		nmap4 = vec4((nmap4.xy-0.5)*2.0,nmap4.z,nmap4.w); // unpack norm
-		float displace = nmap4.w;
-		vec3 norm = nmap4.xyz;
-	
-		float shadow = 1.0;
-		float dp_directional_light = max(0.0, dot(norm, vary_light.xyz));
-
-		vec3 shadow_pos = pos.xyz + displace*norm;
-		vec3 offset = vary_light.xyz * (1.0-dp_directional_light);
-	
-		vec4 spos = vec4(shadow_pos+offset*shadow_offset, 1.0);
-	
-		if (spos.z > -shadow_clip.w)
-		{	
-			if (dp_directional_light == 0.0)
-			{
-				// if we know this point is facing away from the sun then we know it's in shadow without having to do a squirrelly shadow-map lookup
-				shadow = 0.0;
-			}
-			else
-			{
-				vec4 lpos;
-			
-				if (spos.z < -shadow_clip.z)
-				{
-					lpos = shadow_matrix[3]*spos;
-					lpos.xy *= shadow_res;
-					shadow = pcfShadow(shadowMap3, lpos, 0.25);
-					shadow += max((pos.z+shadow_clip.z)/(shadow_clip.z-shadow_clip.w)*2.0-1.0, 0.0);
-				}
-				else if (spos.z < -shadow_clip.y)
-				{
-					lpos = shadow_matrix[2]*spos;
-					lpos.xy *= shadow_res;
-					shadow = pcfShadow(shadowMap2, lpos, 0.5);
-				}
-				else if (spos.z < -shadow_clip.x)
-				{
-					lpos = shadow_matrix[1]*spos;
-					lpos.xy *= shadow_res;
-					shadow = pcfShadow(shadowMap1, lpos, 0.75);
-				}
-				else
-				{
-					lpos = shadow_matrix[0]*spos;
-					lpos.xy *= shadow_res;
-					shadow = pcfShadow(shadowMap0, lpos, 1.0);
-				}
-		
-				// take the most-shadowed value out of these two:
-				//  * the blurred sun shadow in the light (shadow) map
-				//  * an unblurred dot product between the sun and this norm
-				// the goal is to err on the side of most-shadow to fill-in shadow holes and reduce artifacting
-				shadow = min(shadow, dp_directional_light);
-			
-			}
-		}
-		else
-		{
-			// more distant than the shadow map covers
-			shadow = 1.0;
-		}
-	
-		
-		fcol[0] += shadow;
-		fcol[1] += calcAmbientOcclusion(pos, norm, i);
-
-		spos.xyz = shadow_pos+offset*spot_shadow_offset;
-	
-		//spotlight shadow 1
-		vec4 lpos = shadow_matrix[4]*spos;
-		fcol[2] += pcfShadow(shadowMap4, lpos, 0.8); 
-	
-		//spotlight shadow 2
-		lpos = shadow_matrix[5]*spos;
-		fcol[3] += pcfShadow(shadowMap5, lpos, 0.8); 
-	}
-		
-	gl_FragColor = fcol / samples;
-}
diff --git a/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl b/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl
index e7ab11c6ed2866e939c32c39def4d78d7a430dd6..bc5eb5181d0317864c5982fc27b17366760462e6 100644
--- a/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl
+++ b/indra/newview/app_settings/shaders/class2/deferred/sunLightV.glsl
@@ -1,5 +1,5 @@
 /** 
- * @file sunLightF.glsl
+ * @file sunLightV.glsl
  *
  * $LicenseInfo:firstyear=2007&license=viewerlgpl$
  * Second Life Viewer Source Code
@@ -22,24 +22,20 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 modelview_projection_matrix;
 
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
+ATTRIBUTE vec3 position;
+
+VARYING vec2 vary_fragcoord;
 
 uniform vec2 screen_res;
 
 void main()
 {
 	//transform vertex
-	gl_Position = ftransform(); 
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
-	vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;	
-	vec4 tex = gl_MultiTexCoord0;
-	tex.w = 1.0;
+	vec4 pos = modelview_projection_matrix * vec4(position.xyz, 1.0);
+	gl_Position = pos; 
 	
-	vary_light = gl_MultiTexCoord0;
-		
-	gl_FrontColor = gl_Color;
+	vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;	
 }
diff --git a/indra/newview/app_settings/shaders/class2/effects/blurF.glsl b/indra/newview/app_settings/shaders/class2/effects/blurF.glsl
deleted file mode 100644
index 35411db04b3579202ac5d6d9b1514411beef6126..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/effects/blurF.glsl
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * @file blurf.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-uniform sampler2DRect RenderTexture;
-uniform float bloomStrength;
-
-varying vec4 gl_TexCoord[gl_MaxTextureCoords];
-void main(void) 
-{
-	float blurWeights[7];
-	blurWeights[0] = 0.05;
-	blurWeights[1] = 0.1;
-	blurWeights[2] = 0.2;
-	blurWeights[3] = 0.3;
-	blurWeights[4] = 0.2;
-	blurWeights[5] = 0.1;
-	blurWeights[6] = 0.05;
-	
-	vec3 color = vec3(0,0,0);
-	for (int i = 0; i < 7; i++){
-		color += vec3(texture2DRect(RenderTexture, gl_TexCoord[i].st)) * blurWeights[i];
-	}
-
-	color *= bloomStrength;
-
-	gl_FragColor = vec4(color, 1.0);
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/blurV.glsl b/indra/newview/app_settings/shaders/class2/effects/blurV.glsl
deleted file mode 100644
index 3e47ed15fe44bc68f2d92ec583c896ee040ab712..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/effects/blurV.glsl
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * @file blurV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-uniform vec2 texelSize;
-uniform vec2 blurDirection;
-uniform float blurWidth;
-
-void main(void)
-{
-	// Transform vertex
-	gl_Position = ftransform();
-	
-	vec2 blurDelta = texelSize * blurDirection * vec2(blurWidth, blurWidth);
-	vec2 s = gl_MultiTexCoord0.st - (blurDelta * 3.0);
-	
-	// for (int i = 0; i < 7; i++) {
-		// gl_TexCoord[i].st = s + (i * blurDelta);
-	// }
-
-	// MANUALLY UNROLL
-	gl_TexCoord[0].st = s;
-	gl_TexCoord[1].st = s + blurDelta;
-	gl_TexCoord[2].st = s + (2. * blurDelta);
-	gl_TexCoord[3].st = s + (3. * blurDelta);
-	gl_TexCoord[4].st = s + (4. * blurDelta);
-	gl_TexCoord[5].st = s + (5. * blurDelta);
-	gl_TexCoord[6].st = s + (6. * blurDelta);
-
-	// gl_TexCoord[0].st = s;
-	// gl_TexCoord[1].st = blurDelta;
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl b/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl
deleted file mode 100644
index 42ab8d40e88529da650c0638566f360a4c27c234..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/effects/colorFilterF.glsl
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * @file colorFilterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-uniform sampler2DRect RenderTexture;
-uniform float brightness;
-uniform float contrast;
-uniform vec3  contrastBase;
-uniform float saturation;
-uniform vec3  lumWeights;
-
-const float gamma = 2.0;
-
-void main(void) 
-{
-	vec3 color = vec3(texture2DRect(RenderTexture, gl_TexCoord[0].st));
-
-	/// Modulate brightness
-	color *= brightness;
-
-	/// Modulate contrast
-	color = mix(contrastBase, color, contrast);
-
-	/// Modulate saturation
-	color = mix(vec3(dot(color, lumWeights)), color, saturation);
-
-	gl_FragColor = vec4(color, 1.0);
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/drawQuadV.glsl b/indra/newview/app_settings/shaders/class2/effects/drawQuadV.glsl
deleted file mode 100644
index 25806cd91426810d613f5b3c5391b429975882c7..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/effects/drawQuadV.glsl
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * @file drawQuadV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-void main(void)
-{
-	//transform vertex
-	gl_Position = ftransform();
-	gl_TexCoord[0] = gl_MultiTexCoord0;
-	gl_TexCoord[1] = gl_MultiTexCoord1;
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/extractF.glsl b/indra/newview/app_settings/shaders/class2/effects/extractF.glsl
deleted file mode 100644
index 9187c8ec313aff5f6c033ed1e5b31191263b8896..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/effects/extractF.glsl
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * @file extractF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-uniform sampler2DRect RenderTexture;
-uniform float extractLow;
-uniform float extractHigh;
-uniform vec3 lumWeights;
-
-void main(void) 
-{
-	/// Get scene color
-	vec3 color = vec3(texture2DRect(RenderTexture, gl_TexCoord[0].st));
-	
-	/// Extract luminance and scale up by night vision brightness
-	float lum = smoothstep(extractLow, extractHigh, dot(color, lumWeights));
-
-	gl_FragColor = vec4(vec3(lum), 1.0);
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl b/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl
deleted file mode 100644
index 76b675a9bdfe044f97f9256e1e598111270981cf..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/effects/nightVisionF.glsl
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * @file nightVisionF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-uniform sampler2DRect RenderTexture;
-uniform sampler2D NoiseTexture;
-uniform float brightMult;
-uniform float noiseStrength;
-
-float luminance(vec3 color)
-{
-	/// CALCULATING LUMINANCE (Using NTSC lum weights)
-	/// http://en.wikipedia.org/wiki/Luma_%28video%29
-	return dot(color, vec3(0.299, 0.587, 0.114));
-}
-
-void main(void) 
-{
-	/// Get scene color
-	vec3 color = vec3(texture2DRect(RenderTexture, gl_TexCoord[0].st));
-	
-	/// Extract luminance and scale up by night vision brightness
-	float lum = luminance(color) * brightMult;
-
-	/// Convert into night vision color space
-	/// Newer NVG colors (crisper and more saturated)
-	vec3 outColor = (lum * vec3(0.91, 1.21, 0.9)) + vec3(-0.07, 0.1, -0.12); 
-
-	/// Add noise
-	float noiseValue = texture2D(NoiseTexture, gl_TexCoord[1].st).r;
-	noiseValue = (noiseValue - 0.5) * noiseStrength;
-
-	/// Older NVG colors (more muted)
-	// vec3 outColor = (lum * vec3(0.82, 0.75, 0.83)) + vec3(0.05, 0.32, -0.11); 
-	
-	outColor += noiseValue;
-
-	gl_FragColor = vec4(outColor, 1.0);
-}
diff --git a/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl b/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl
deleted file mode 100644
index abf1be6645c7e53075a97477c71c270204926d7e..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/effects/simpleF.glsl
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * @file simpleF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-uniform sampler2DRect RenderTexture;
-
-void main(void) 
-{
-	vec3 color = vec3(texture2DRect(RenderTexture, gl_TexCoord[0].st));
-	gl_FragColor = vec4(1.0 - color, 1.0);
-}
diff --git a/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl b/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl
deleted file mode 100644
index df08fce0daa5237571c7352a10c6cbf37b4d8ca3..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/environment/terrainF.glsl
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * @file terrainF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-uniform sampler2D detail_0;
-uniform sampler2D detail_1;
-uniform sampler2D detail_2;
-uniform sampler2D detail_3;
-uniform sampler2D alpha_ramp;
-
-vec3 atmosLighting(vec3 light);
-
-vec3 scaleSoftClip(vec3 color);
-
-void main()
-{
-	/// Note: This should duplicate the blending functionality currently used for the terrain rendering.
-	
-	/// TODO Confirm tex coords and bind them appropriately in vert shader.
-	vec4 color0 = texture2D(detail_0, gl_TexCoord[0].xy);
-	vec4 color1 = texture2D(detail_1, gl_TexCoord[0].xy);
-	vec4 color2 = texture2D(detail_2, gl_TexCoord[0].xy);
-	vec4 color3 = texture2D(detail_3, gl_TexCoord[0].xy);
-
-	float alpha1 = texture2D(alpha_ramp, gl_TexCoord[0].zw).a;
-	float alpha2 = texture2D(alpha_ramp,gl_TexCoord[1].xy).a;
-	float alphaFinal = texture2D(alpha_ramp, gl_TexCoord[1].zw).a;
-	vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal );
-	
-	/// Add WL Components
-	outColor.rgb = atmosLighting(outColor.rgb * gl_Color.rgb);
-	
-	gl_FragColor = vec4(scaleSoftClip(outColor.rgb), 1.0);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/environment/terrainV.glsl b/indra/newview/app_settings/shaders/class2/environment/terrainV.glsl
deleted file mode 100644
index 36d0c99b63b42539a506548c55024f08dcaace98..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/environment/terrainV.glsl
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * @file terrainV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-void calcAtmospherics(vec3 inPositionEye);
-
-vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
-
-vec4 texgen_object(vec4  vpos, vec4 tc, mat4 mat, vec4 tp0, vec4 tp1)
-{
-	vec4 tcoord;
-	
-	tcoord.x = dot(vpos, tp0);
-	tcoord.y = dot(vpos, tp1);
-	tcoord.z = tc.z;
-	tcoord.w = tc.w;
-	
-	tcoord = mat * tcoord; 
-	
-	return tcoord; 
-}
-
-void main()
-{
-	//transform vertex
-	gl_Position = ftransform();
-
-	vec4 pos = gl_ModelViewMatrix * gl_Vertex;
-	vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
-
-	/// Potentially better without it for water.
-	pos /= pos.w;
-
-	calcAtmospherics((gl_ModelViewMatrix * gl_Vertex).xyz);
-
-	vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0));
-	
-	gl_FrontColor = color;
-
-	// Transform and pass tex coords
- 	gl_TexCoord[0].xy = texgen_object(gl_Vertex, gl_MultiTexCoord0, gl_TextureMatrix[0], gl_ObjectPlaneS[0], gl_ObjectPlaneT[0]).xy;
-	
-	vec4 t = gl_MultiTexCoord1;
-	
-	gl_TexCoord[0].zw = t.xy;
-	gl_TexCoord[1].xy = t.xy-vec2(2.0, 0.0);
-	gl_TexCoord[1].zw = t.xy-vec2(1.0, 0.0);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl b/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl
deleted file mode 100644
index 90468b45a227c2f5e09cc23c2b8c7cecabae695f..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/environment/terrainWaterF.glsl
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * @file terrainWaterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-uniform sampler2D detail_0;
-uniform sampler2D detail_1;
-uniform sampler2D detail_2;
-uniform sampler2D detail_3;
-uniform sampler2D alpha_ramp;
-
-vec3 atmosLighting(vec3 light);
-
-vec4 applyWaterFog(vec4 color);
-
-void main()
-{
-	/// Note: This should duplicate the blending functionality currently used for the terrain rendering.
-	
-	/// TODO Confirm tex coords and bind them appropriately in vert shader.
-	vec4 color0 = texture2D(detail_0, gl_TexCoord[0].xy);
-	vec4 color1 = texture2D(detail_1, gl_TexCoord[0].xy);
-	vec4 color2 = texture2D(detail_2, gl_TexCoord[0].xy);
-	vec4 color3 = texture2D(detail_3, gl_TexCoord[0].xy);
-
-	float alpha1 = texture2D(alpha_ramp, gl_TexCoord[0].zw).a;
-	float alpha2 = texture2D(alpha_ramp,gl_TexCoord[1].xy).a;
-	float alphaFinal = texture2D(alpha_ramp, gl_TexCoord[1].zw).a;
-	vec4 outColor = mix( mix(color3, color2, alpha2), mix(color1, color0, alpha1), alphaFinal );
-	
-	/// Add WL Components
-	outColor.rgb = atmosLighting(outColor.rgb * gl_Color.rgb);
-	
-	outColor = applyWaterFog(outColor);
-	gl_FragColor = outColor;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl b/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl
deleted file mode 100644
index f947aa4be10120774213c6db507607f377158ca0..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/environment/underWaterF.glsl
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * @file underWaterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-uniform sampler2D diffuseMap;
-uniform sampler2D bumpMap;   
-uniform sampler2D screenTex;
-uniform sampler2D refTex;
-uniform sampler2D screenDepth;
-
-uniform vec4 fogCol;
-uniform vec3 lightDir;
-uniform vec3 specular;
-uniform float lightExp;
-uniform vec2 fbScale;
-uniform float refScale;
-uniform float znear;
-uniform float zfar;
-uniform float kd;
-uniform vec4 waterPlane;
-uniform vec3 eyeVec;
-uniform vec4 waterFogColor;
-uniform float waterFogDensity;
-uniform float waterFogKS;
-uniform vec2 screenRes;
-
-//bigWave is (refCoord.w, view.w);
-varying vec4 refCoord;
-varying vec4 littleWave;
-varying vec4 view;
-
-vec4 applyWaterFog(vec4 color, vec3 viewVec)
-{
-	//normalize view vector
-	vec3 view = normalize(viewVec);
-	float es = -view.z;
-
-	//find intersection point with water plane and eye vector
-	
-	//get eye depth
-	float e0 = max(-waterPlane.w, 0.0);
-	
-	//get object depth
-	float depth = length(viewVec);
-		
-	//get "thickness" of water
-	float l = max(depth, 0.1);
-
-	float kd = waterFogDensity;
-	float ks = waterFogKS;
-	vec4 kc = waterFogColor;
-	
-	float F = 0.98;
-	
-	float t1 = -kd * pow(F, ks * e0);
-	float t2 = kd + ks * es;
-	float t3 = pow(F, t2*l) - 1.0;
-	
-	float L = min(t1/t2*t3, 1.0);
-	
-	float D = pow(0.98, l*kd);
-	//return vec4(1.0, 0.0, 1.0, 1.0);
-	return color * D + kc * L;
-	//depth /= 10.0;
-	//return vec4(depth,depth,depth,0.0);
-}
-
-void main() 
-{
-	vec4 color;
-	    
-	//get detail normals
-	vec3 wave1 = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0-1.0;
-	vec3 wave2 = texture2D(bumpMap, littleWave.xy).xyz*2.0-1.0;
-	vec3 wave3 = texture2D(bumpMap, littleWave.zw).xyz*2.0-1.0;    
-	vec3 wavef = normalize(wave1+wave2+wave3);
-	
-	//figure out distortion vector (ripply)   
-	vec2 distort = (refCoord.xy/refCoord.z) * 0.5 + 0.5;
-	distort = distort+wavef.xy*refScale;
-		
-	vec4 fb = texture2D(screenTex, distort);
-	
-	gl_FragColor = applyWaterFog(fb,view.xyz);
-}
diff --git a/indra/newview/app_settings/shaders/class2/environment/waterF.glsl b/indra/newview/app_settings/shaders/class2/environment/waterF.glsl
deleted file mode 100644
index dc543b2231a13ddc95b02c357916ed4ef2b5d0ea..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/environment/waterF.glsl
+++ /dev/null
@@ -1,137 +0,0 @@
-/** 
- * @file waterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-vec3 scaleSoftClip(vec3 inColor);
-vec3 atmosTransport(vec3 inColor);
-
-uniform sampler2D bumpMap;   
-uniform sampler2D screenTex;
-uniform sampler2D refTex;
-
-uniform float sunAngle;
-uniform float sunAngle2;
-uniform vec3 lightDir;
-uniform vec3 specular;
-uniform float lightExp;
-uniform float refScale;
-uniform float kd;
-uniform vec2 screenRes;
-uniform vec3 normScale;
-uniform float fresnelScale;
-uniform float fresnelOffset;
-uniform float blurMultiplier;
-
-
-//bigWave is (refCoord.w, view.w);
-varying vec4 refCoord;
-varying vec4 littleWave;
-varying vec4 view;
-
-void main() 
-{
-	vec4 color;
-	
-	float dist = length(view.xy);
-	
-	//normalize view vector
-	vec3 viewVec = normalize(view.xyz);
-	
-	//get wave normals
-	vec3 wave1 = texture2D(bumpMap, vec2(refCoord.w, view.w)).xyz*2.0-1.0;
-	vec3 wave2 = texture2D(bumpMap, littleWave.xy).xyz*2.0-1.0;
-	vec3 wave3 = texture2D(bumpMap, littleWave.zw).xyz*2.0-1.0;
-	//get base fresnel components	
-	
-	vec3 df = vec3(
-					dot(viewVec, wave1),
-					dot(viewVec, (wave2 + wave3) * 0.5),
-					dot(viewVec, wave3)
-				 ) * fresnelScale + fresnelOffset;
-	df *= df;
-		    
-	vec2 distort = (refCoord.xy/refCoord.z) * 0.5 + 0.5;
-	
-	float dist2 = dist;
-	dist = max(dist, 5.0);
-	
-	float dmod = sqrt(dist);
-	
-	vec2 dmod_scale = vec2(dmod*dmod, dmod);
-	
-	//get reflected color
-	vec2 refdistort1 = wave1.xy*normScale.x;
-	vec2 refvec1 = distort+refdistort1/dmod_scale;
-	vec4 refcol1 = texture2D(refTex, refvec1);
-	
-	vec2 refdistort2 = wave2.xy*normScale.y;
-	vec2 refvec2 = distort+refdistort2/dmod_scale;
-	vec4 refcol2 = texture2D(refTex, refvec2);
-	
-	vec2 refdistort3 = wave3.xy*normScale.z;
-	vec2 refvec3 = distort+refdistort3/dmod_scale;
-	vec4 refcol3 = texture2D(refTex, refvec3);
-
-	vec4 refcol = refcol1 + refcol2 + refcol3;
-	float df1 = df.x + df.y + df.z;
-	refcol *= df1 * 0.333;
-	
-	vec3 wavef = (wave1 + wave2 * 0.4 + wave3 * 0.6) * 0.5;
-	
-	wavef.z *= max(-viewVec.z, 0.1);
-	wavef = normalize(wavef);
-	
-	float df2 = dot(viewVec, wavef) * fresnelScale+fresnelOffset;
-	
-	vec2 refdistort4 = wavef.xy*0.125;
-	refdistort4.y -= abs(refdistort4.y);
-	vec2 refvec4 = distort+refdistort4/dmod;
-	float dweight = min(dist2*blurMultiplier, 1.0);
-	vec4 baseCol = texture2D(refTex, refvec4);
-	refcol = mix(baseCol*df2, refcol, dweight);
-
-	//get specular component
-	float spec = clamp(dot(lightDir, (reflect(viewVec,wavef))),0.0,1.0);
-		
-	//harden specular
-	spec = pow(spec, 128.0);
-
-	//figure out distortion vector (ripply)   
-	vec2 distort2 = distort+wavef.xy*refScale/max(dmod*df1, 1.0);
-		
-	vec4 fb = texture2D(screenTex, distort2);
-	
-	//mix with reflection
-	// Note we actually want to use just df1, but multiplying by 0.999999 gets around and nvidia compiler bug
-	color.rgb = mix(fb.rgb, refcol.rgb, df1 * 0.99999);
-	color.rgb += spec * specular;
-	
-	color.rgb = atmosTransport(color.rgb);
-	color.rgb = scaleSoftClip(color.rgb);
-	color.a = spec * sunAngle2;
-
-	gl_FragColor = color;
-}
diff --git a/indra/newview/app_settings/shaders/class2/environment/waterFogF.glsl b/indra/newview/app_settings/shaders/class2/environment/waterFogF.glsl
deleted file mode 100644
index 4bdfce9260c77145dcb244b561d87ce1a4230ea7..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/environment/waterFogF.glsl
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * @file waterFogF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-uniform vec4 lightnorm;
-uniform vec4 waterPlane;
-uniform vec4 waterFogColor;
-uniform float waterFogDensity;
-uniform float waterFogKS;
-
-vec3 getPositionEye();
-
-vec4 applyWaterFog(vec4 color)
-{
-	//normalize view vector
-	vec3 view = normalize(getPositionEye());
-	float es = -(dot(view, waterPlane.xyz));
-
-	//find intersection point with water plane and eye vector
-	
-	//get eye depth
-	float e0 = max(-waterPlane.w, 0.0);
-	
-	vec3 int_v = waterPlane.w > 0.0 ? view * waterPlane.w/es : vec3(0.0, 0.0, 0.0);
-	
-	//get object depth
-	float depth = length(getPositionEye() - int_v);
-		
-	//get "thickness" of water
-	float l = max(depth, 0.1);
-
-	float kd = waterFogDensity;
-	float ks = waterFogKS;
-	vec4 kc = waterFogColor;
-	
-	float F = 0.98;
-	
-	float t1 = -kd * pow(F, ks * e0);
-	float t2 = kd + ks * es;
-	float t3 = pow(F, t2*l) - 1.0;
-	
-	float L = min(t1/t2*t3, 1.0);
-	
-	float D = pow(0.98, l*kd);
-	
-	color.rgb = color.rgb * D + kc.rgb * L;
-	color.a = kc.a + color.a;
-	
-	return color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl
deleted file mode 100644
index d12d88f1c5cc9e1a58b0724aa00d8ea9f11a6c06..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightF.glsl
+++ /dev/null
@@ -1,41 +0,0 @@
-/** 
- * @file lightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-vec3 atmosLighting(vec3 light);
-vec3 scaleSoftClip(vec3 light);
-
-void default_lighting() 
-{
-	vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
-	
-	color.rgb = atmosLighting(color.rgb);
-
-	color.rgb = scaleSoftClip(color.rgb);
-
-	gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl
deleted file mode 100644
index f03b1fdc749102c3976ed93de01afb145d5a01fd..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightF.glsl
+++ /dev/null
@@ -1,41 +0,0 @@
-/** 
- * @file lightFullbrightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-
-void fullbright_lighting()
-{
-	vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
-	
-	color.rgb = fullbrightAtmosTransport(color.rgb);
-	
-	color.rgb = fullbrightScaleSoftClip(color.rgb);
-
-	gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl
deleted file mode 100644
index d2bc912edb2ae3887e3b8ab2cc0095d73305a8a6..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyF.glsl
+++ /dev/null
@@ -1,49 +0,0 @@
-/** 
- * @file lightFullbrightShinyF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-uniform samplerCube environmentMap;
-
-vec3 fullbrightShinyAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-
-void fullbright_shiny_lighting()
-{
-	vec4 color = diffuseLookup(gl_TexCoord[0].xy);
-	color.rgb *= gl_Color.rgb;
-	
-	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	
-	color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
-
-	color.rgb = fullbrightShinyAtmosTransport(color.rgb);
-
-	color.rgb = fullbrightScaleSoftClip(color.rgb);
-
-	color.a = max(color.a, gl_Color.a);
-
-	gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl
deleted file mode 100644
index e9dab85095886b93d820be8b98cdc220e462f879..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightShinyWaterF.glsl
+++ /dev/null
@@ -1,48 +0,0 @@
-/** 
- * @file lightFullbrightShinyWaterF.glsl
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-
-uniform samplerCube environmentMap;
-
-vec3 fullbrightShinyAtmosTransport(vec3 light);
-vec3 fullbrightScaleSoftClip(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void fullbright_shiny_lighting_water()
-{
-	vec4 color = diffuseLookup(gl_TexCoord[0].xy);
-	color.rgb *= gl_Color.rgb;
-	
-	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	
-	color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
-
-	color.rgb = fullbrightShinyAtmosTransport(color.rgb);
-	color.rgb = fullbrightScaleSoftClip(color.rgb);
-	color.a = max(color.a, gl_Color.a);
-
-	gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl
deleted file mode 100644
index 20ff3712af52e86c29023eb303ee16e794d1722a..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightFullbrightWaterF.glsl
+++ /dev/null
@@ -1,41 +0,0 @@
-/** 
- * @file lightFullbrightWaterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-vec4 diffuseLookup(vec2 texcoord);
-
-vec3 fullbrightAtmosTransport(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void fullbright_lighting_water()
-{
-	vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
-
-	color.rgb = fullbrightAtmosTransport(color.rgb);
-	
-	gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl
deleted file mode 100644
index ba4cd949d6ab0d7c59e438c9248161de57fc4b69..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyF.glsl
+++ /dev/null
@@ -1,49 +0,0 @@
-/** 
- * @file lightShinyF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-
-uniform samplerCube environmentMap;
-
-vec3 scaleSoftClip(vec3 light);
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void shiny_lighting()
-{
-	vec4 color = diffuseLookup(gl_TexCoord[0].xy);
-	color.rgb *= gl_Color.rgb;
-	
-	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	
-	color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
-
-	color.rgb = atmosLighting(color.rgb);
-
-	color.rgb = scaleSoftClip(color.rgb);
-	color.a = max(color.a, gl_Color.a);
-	gl_FragColor = color;
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl
deleted file mode 100644
index c451e68763c7c2191519de27714fb45566063ccc..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightShinyWaterF.glsl
+++ /dev/null
@@ -1,46 +0,0 @@
-/** 
- * @file lightShinyWaterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-
-uniform samplerCube environmentMap;
-
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void shiny_lighting_water()
-{
-	vec4 color = diffuseLookup(gl_TexCoord[0].xy);
-	color.rgb *= gl_Color.rgb;
-	
-	vec3 envColor = textureCube(environmentMap, gl_TexCoord[1].xyz).rgb;	
-	color.rgb = mix(color.rgb, envColor.rgb, gl_Color.a);
-
-	color.rgb = atmosLighting(color.rgb);
-	color.a = max(color.a, gl_Color.a);
-	gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightSpecularV.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightSpecularV.glsl
deleted file mode 100644
index 24bf9b3cee5168a8cfc7928b545eddc39e8a9736..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightSpecularV.glsl
+++ /dev/null
@@ -1,36 +0,0 @@
-/** 
- * @file lightSpecularV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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 lights, no specular highlights
-
-vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol);
-
-vec4 calcLightingSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol)
-{
-	return sumLightsSpecular(pos, norm, color, specularColor, baseCol);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl
deleted file mode 100644
index 8045809b82c6cc6e18b4fdfeefa9ec26ed35c706..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightV.glsl
+++ /dev/null
@@ -1,36 +0,0 @@
-/** 
- * @file lightV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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 lights, no specular highlights
-
-vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight);
-
-vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
-{
-	return sumLights(pos, norm, color, baseLight);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl b/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl
deleted file mode 100644
index ae7be4d231d6a1823e24f04b67c1d61be99bdb23..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/lighting/lightWaterF.glsl
+++ /dev/null
@@ -1,39 +0,0 @@
-/** 
- * @file lightWaterF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-vec3 atmosLighting(vec3 light);
-vec4 applyWaterFog(vec4 color);
-
-void default_lighting_water()
-{
-	vec4 color = diffuseLookup(gl_TexCoord[0].xy) * gl_Color;
-
-	color.rgb = atmosLighting(color.rgb);
-
-	gl_FragColor = applyWaterFog(color);
-}
-
diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl
index d0a12479db3343b85ace9ab7d6a58b4946682a34..3acf9fe883fa0644defbe7c297c0e44304faef11 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/sumLightsSpecularV.glsl
@@ -33,6 +33,10 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
 vec3 atmosGetDiffuseSunlightColor();
 vec3 scaleDownLight(vec3 light);
 
+uniform vec4 light_position[8];
+uniform vec3 light_attenuation[8]; 
+uniform vec3 light_diffuse[8];
+
 vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol)
 {
 	vec4 col = vec4(0.0, 0.0, 0.0, color.a);
@@ -43,15 +47,14 @@ vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor
 	vec4 specularSum = vec4(0.0);
 	
 	// Collect normal lights (need to be divided by two, as we later multiply by 2)
-	col.rgb += gl_LightSource[1].diffuse.rgb * calcDirectionalLightSpecular(specularColor, view, norm, gl_LightSource[1].position.xyz, gl_LightSource[1].diffuse.rgb, 1.0);
-	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[2].position.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation, gl_LightSource[2].diffuse.rgb);
-	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[3].position.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation, gl_LightSource[3].diffuse.rgb);
-	//col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[4].position.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation, gl_LightSource[4].diffuse.rgb);
+	col.rgb += light_diffuse[1].rgb * calcDirectionalLightSpecular(specularColor, view, norm, light_position[1].xyz,light_diffuse[1].rgb, 1.0);
+	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[2].xyz, light_attenuation[2].x, light_attenuation[2].y, light_diffuse[2].rgb); 
+	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[3].xyz, light_attenuation[3].x, light_attenuation[3].y, light_diffuse[3].rgb); 
 	col.rgb = scaleDownLight(col.rgb);
 						
 	// Add windlight lights
 	col.rgb += atmosAmbient(baseCol.rgb);
-	col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, gl_LightSource[0].position.xyz, atmosGetDiffuseSunlightColor()*baseCol.a, 1.0));
+	col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, light_position[0].xyz,atmosGetDiffuseSunlightColor()*baseCol.a, 1.0));
 
 	col.rgb = min(col.rgb*color.rgb, 1.0);
 	specularColor.rgb = min(specularColor.rgb*specularSum.rgb, 1.0);
diff --git a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl
index ad045a305805a167564caea00f536cffaaa33ef2..c9987ef3b946e5f317ec5cc5a42bab1e28410f1f 100644
--- a/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl
+++ b/indra/newview/app_settings/shaders/class2/lighting/sumLightsV.glsl
@@ -23,8 +23,6 @@
  * $/LicenseInfo$
  */
  
-
-
 float calcDirectionalLight(vec3 n, vec3 l);
 float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight);
 
@@ -32,21 +30,26 @@ vec3 atmosAmbient(vec3 light);
 vec3 atmosAffectDirectionalLight(float lightIntensity);
 vec3 scaleDownLight(vec3 light);
 
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8]; 
+uniform vec3 light_diffuse[8];
+
 vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
 {
 	vec4 col = vec4(0.0, 0.0, 0.0, color.a);
 	
 	// Collect normal lights (need to be divided by two, as we later multiply by 2)
-	col.rgb += gl_LightSource[1].diffuse.rgb * calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
+	col.rgb += light_diffuse[1].rgb * calcDirectionalLight(norm, light_position[1].xyz);
+
+	col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].z);
+	col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].z);
 
-	col.rgb += gl_LightSource[2].diffuse.rgb * calcPointLightOrSpotLight(pos, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].specular.a);
-	col.rgb += gl_LightSource[3].diffuse.rgb * calcPointLightOrSpotLight(pos, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].specular.a);
-	//col.rgb += gl_LightSource[4].diffuse.rgb * calcPointLightOrSpotLight(pos, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].specular.a);
 	col.rgb = scaleDownLight(col.rgb);
 
 	// Add windlight lights
 	col.rgb += atmosAmbient(baseLight.rgb);
-	col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, gl_LightSource[0].position.xyz));
+	col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, light_position[0].xyz));
 				
 	col.rgb = min(col.rgb*color.rgb, 1.0);
 	
diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl
deleted file mode 100644
index 819b28e4fd9d4214aaf742eeb2dcb1953d1401c0..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/objects/fullbrightShinyV.glsl
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * @file fullbrightShinyV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-void calcAtmospherics(vec3 inPositionEye);
-
-uniform vec4 origin;
-
-varying float vary_texture_index;
-
-void main()
-{
-	//transform vertex
-	vec4 vert = vec4(gl_Vertex.xyz,1.0);
-	vary_texture_index = gl_Vertex.w;
-	gl_Position = gl_ModelViewProjectionMatrix*vert;
-	
-	vec4 pos = (gl_ModelViewMatrix * vert);
-	vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
-	vec3 ref = reflect(pos.xyz, -norm);
-
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-	gl_TexCoord[1] = gl_TextureMatrix[1]*vec4(ref,1.0);
-
-	calcAtmospherics(pos.xyz);
-
-	gl_FrontColor = gl_Color;
-
-	gl_FogFragCoord = pos.z;
-}
diff --git a/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl b/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl
deleted file mode 100644
index abf6e37b7cbdd964cce13fb97df42cefdd820527..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/objects/fullbrightV.glsl
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * @file fullbrightV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-void calcAtmospherics(vec3 inPositionEye);
-
-varying float vary_texture_index;
-
-void main()
-{
-	//transform vertex
-	vec4 vert = vec4(gl_Vertex.xyz,1.0);
-	vary_texture_index = gl_Vertex.w;
-	gl_Position = gl_ModelViewProjectionMatrix*vert;
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-	
-	vec4 pos = (gl_ModelViewMatrix * vert);
-
-	calcAtmospherics(pos.xyz);
-
-	gl_FrontColor = gl_Color;
-
-	gl_FogFragCoord = pos.z;
-}
diff --git a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl b/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl
deleted file mode 100644
index 44c711701bf8890b1b23c475c14b4ab2392d31f4..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/objects/shinyV.glsl
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * @file shinyV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
-
-void calcAtmospherics(vec3 inPositionEye);
-
-varying float vary_texture_index;
-
-uniform vec4 origin;
-
-void main()
-{
-	//transform vertex
-	vec4 vert = vec4(gl_Vertex.xyz,1.0);
-	vary_texture_index = gl_Vertex.w;
-	gl_Position = gl_ModelViewProjectionMatrix*vert;
-	
-	vec4 pos = (gl_ModelViewMatrix * vert);
-	vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
-	vec3 ref = reflect(pos.xyz, -norm);
-
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-	gl_TexCoord[1] = gl_TextureMatrix[1]*vec4(ref,1.0);
-
-	calcAtmospherics(pos.xyz);
-
-	gl_FrontColor = calcLighting(pos.xyz, norm, gl_Color, vec4(0.0));
-
-	gl_FogFragCoord = pos.z;
-}
diff --git a/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl b/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl
deleted file mode 100644
index b0114763c144f4c86b1dec01853072012cd85783..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class2/objects/simpleV.glsl
+++ /dev/null
@@ -1,51 +0,0 @@
-/** 
- * @file simpleV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
-void calcAtmospherics(vec3 inPositionEye);
-
-varying float vary_texture_index;
-
-void main()
-{
-	//transform vertex
-	vec4 vert = vec4(gl_Vertex.xyz,1.0);
-	vary_texture_index = gl_Vertex.w;
-	gl_Position = gl_ModelViewProjectionMatrix*vert;
-	gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
-	
-	vec4 pos = (gl_ModelViewMatrix * vert);
-	
-	vec3 norm = normalize(gl_NormalMatrix * gl_Normal);
-
-	calcAtmospherics(pos.xyz);
-
-	vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.));
-	gl_FrontColor = color;
-
-	gl_FogFragCoord = pos.z;
-}
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl
index be990c17579b617e8d2916eefff19590775e46f2..6a83be1426d8337aa6469e8bc57c17ad7e35141b 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsV.glsl
@@ -25,7 +25,7 @@
  
 
 
-// varying param funcs
+// VARYING param funcs
 void setSunlitColor(vec3 v);
 void setAmblitColor(vec3 v);
 void setAdditiveColor(vec3 v);
@@ -34,8 +34,8 @@ void setPositionEye(vec3 v);
 
 vec3 getAdditiveColor();
 
-//varying vec4 vary_CloudUVs;
-//varying float vary_CloudDensity;
+//VARYING vec4 vary_CloudUVs;
+//VARYING float vary_CloudDensity;
 
 // Inputs
 uniform vec4 morphFactor;
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
index a98c04b25932a8137fe0dd59c4bbad55234679d3..765b0927c3acc27cf0f87f8fc558b0ec5bddd5a8 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsF.glsl
@@ -24,25 +24,17 @@
  */
  
 
+VARYING vec3 vary_SunlitColor;
+VARYING vec3 vary_AdditiveColor;
+VARYING vec3 vary_AtmosAttenuation;
 
-varying vec3 vary_PositionEye;
-
-varying vec3 vary_SunlitColor;
-varying vec3 vary_AmblitColor;
-varying vec3 vary_AdditiveColor;
-varying vec3 vary_AtmosAttenuation;
-
-vec3 getPositionEye()
-{
-	return vary_PositionEye;
-}
 vec3 getSunlitColor()
 {
-	return vary_SunlitColor;
+	return vec3(0,0,0);
 }
 vec3 getAmblitColor()
 {
-	return vary_AmblitColor;
+	return vec3(0,0,0);
 }
 vec3 getAdditiveColor()
 {
@@ -50,5 +42,5 @@ vec3 getAdditiveColor()
 }
 vec3 getAtmosAttenuation()
 {
-	return vary_AtmosAttenuation;
+	return vec3(vary_AtmosAttenuation);
 }
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl
index 7c3cb88b3ce73900075b3fa93cea44e7ef34da33..99dbee15eed4006818f8f5a730990e86f68a3990 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsV.glsl
@@ -24,57 +24,61 @@
  */
  
 
+VARYING vec3 vary_AdditiveColor;
+VARYING vec3 vary_AtmosAttenuation;
 
-varying vec3 vary_PositionEye;
+vec3 additive_color;
+vec3 atmos_attenuation;
+vec3 sunlit_color;
+vec3 amblit_color;
+vec3 position_eye;
 
-varying vec3 vary_SunlitColor;
-varying vec3 vary_AmblitColor;
-varying vec3 vary_AdditiveColor;
-varying vec3 vary_AtmosAttenuation;
-
-vec3 getPositionEye()
-{
-	return vary_PositionEye;
-}
 vec3 getSunlitColor()
 {
-	return vary_SunlitColor;
+	return sunlit_color;
 }
 vec3 getAmblitColor()
 {
-	return vary_AmblitColor;
+	return amblit_color;
 }
+
 vec3 getAdditiveColor()
 {
-	return vary_AdditiveColor;
+	return additive_color;
 }
 vec3 getAtmosAttenuation()
 {
-	return vary_AtmosAttenuation;
+	return atmos_attenuation;
 }
 
+vec3 getPositionEye()
+{
+	return position_eye;
+}
 
 void setPositionEye(vec3 v)
 {
-	vary_PositionEye = v;
+	position_eye = v;
 }
 
 void setSunlitColor(vec3 v)
 {
-	vary_SunlitColor = v;
+	sunlit_color  = v;
 }
 
 void setAmblitColor(vec3 v)
 {
-	vary_AmblitColor = v;
+	amblit_color = v;
 }
 
 void setAdditiveColor(vec3 v)
 {
+	additive_color = v;
 	vary_AdditiveColor = v;
 }
 
 void setAtmosAttenuation(vec3 v)
 {
+	atmos_attenuation = v;
 	vary_AtmosAttenuation = v;
 }
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..163ef26444615a51a7ce25e698adaefe57b0e1ae
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterF.glsl
@@ -0,0 +1,50 @@
+/** 
+ * @file atmosphericVarsWaterF.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+ 
+VARYING vec3 vary_PositionEye;
+VARYING vec3 vary_AdditiveColor;
+VARYING vec3 vary_AtmosAttenuation;
+
+vec3 getSunlitColor()
+{
+	return vec3(0,0,0);
+}
+vec3 getAmblitColor()
+{
+	return vec3(0,0,0);
+}
+vec3 getAdditiveColor()
+{
+	return vary_AdditiveColor;
+}
+vec3 getAtmosAttenuation()
+{
+	return vary_AtmosAttenuation;
+}
+vec3 getPositionEye()
+{
+	return vary_PositionEye;
+}
+
diff --git a/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl
new file mode 100644
index 0000000000000000000000000000000000000000..553f6752e631ed1af2b6f4b2f482a956a3edbbc7
--- /dev/null
+++ b/indra/newview/app_settings/shaders/class2/windlight/atmosphericsVarsWaterV.glsl
@@ -0,0 +1,81 @@
+/** 
+ * @file atmosphericVarsWaterV.glsl
+ *
+ * $LicenseInfo:firstyear=2007&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2007, 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$
+ */
+ 
+VARYING vec3 vary_PositionEye;
+VARYING vec3 vary_AdditiveColor;
+VARYING vec3 vary_AtmosAttenuation;
+
+vec3 atmos_attenuation;
+vec3 sunlit_color;
+vec3 amblit_color;
+
+vec3 getSunlitColor()
+{
+	return sunlit_color;
+}
+vec3 getAmblitColor()
+{
+	return amblit_color;
+}
+
+vec3 getAdditiveColor()
+{
+	return vary_AdditiveColor;
+}
+vec3 getAtmosAttenuation()
+{
+	return atmos_attenuation;
+}
+
+vec3 getPositionEye()
+{
+	return vary_PositionEye;
+}
+
+void setPositionEye(vec3 v)
+{
+	vary_PositionEye = v;
+}
+
+void setSunlitColor(vec3 v)
+{
+	sunlit_color  = v;
+}
+
+void setAmblitColor(vec3 v)
+{
+	amblit_color = v;
+}
+
+void setAdditiveColor(vec3 v)
+{
+	vary_AdditiveColor = v;
+}
+
+void setAtmosAttenuation(vec3 v)
+{
+	atmos_attenuation = v;
+	vary_AtmosAttenuation = v;
+}
diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl
index b90cec119b73f72f108efd8cc62efbf958c4522c..4ab06c6e21fbc0bea8c90e85591f50f4882e5db5 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsF.glsl
@@ -23,15 +23,21 @@
  * $/LicenseInfo$
  */
  
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
 /////////////////////////////////////////////////////////////////////////
 // The fragment shader for the sky
 /////////////////////////////////////////////////////////////////////////
 
-varying vec4 vary_CloudColorSun;
-varying vec4 vary_CloudColorAmbient;
-varying float vary_CloudDensity;
+VARYING vec4 vary_CloudColorSun;
+VARYING vec4 vary_CloudColorAmbient;
+VARYING float vary_CloudDensity;
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
+VARYING vec2 vary_texcoord2;
+VARYING vec2 vary_texcoord3;
 
 uniform sampler2D cloud_noise_texture;
 uniform vec4 cloud_pos_density1;
@@ -50,14 +56,14 @@ vec3 scaleSoftClip(vec3 light) {
 void main()
 {
 	// Set variables
-	vec2 uv1 = gl_TexCoord[0].xy;
-	vec2 uv2 = gl_TexCoord[1].xy;
+	vec2 uv1 = vary_texcoord0.xy;
+	vec2 uv2 = vary_texcoord1.xy;
 
 	vec4 cloudColorSun = vary_CloudColorSun;
 	vec4 cloudColorAmbient = vary_CloudColorAmbient;
 	float cloudDensity = vary_CloudDensity;
-	vec2 uv3 = gl_TexCoord[2].xy;
-	vec2 uv4 = gl_TexCoord[3].xy;
+	vec2 uv3 = vary_texcoord2.xy;
+	vec2 uv4 = vary_texcoord3.xy;
 
 	// Offset texture coords
 	uv1 += cloud_pos_density1.xy;	//large texture, visible density
diff --git a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl
index c175a834c23386c0e5c866fdf0aaf57efd74b078..c5bb52169cc7110e04ba90e9ccd4ffbb2d7abe71 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/cloudsV.glsl
@@ -22,17 +22,24 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 modelview_projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec2 texcoord0;
 
 //////////////////////////////////////////////////////////////////////////
 // The vertex shader for creating the atmospheric sky
 ///////////////////////////////////////////////////////////////////////////////
 
 // Output parameters
-varying vec4 vary_CloudColorSun;
-varying vec4 vary_CloudColorAmbient;
-varying float vary_CloudDensity;
+VARYING vec4 vary_CloudColorSun;
+VARYING vec4 vary_CloudColorAmbient;
+VARYING float vary_CloudDensity;
+VARYING vec2 vary_texcoord0;
+VARYING vec2 vary_texcoord1;
+VARYING vec2 vary_texcoord2;
+VARYING vec2 vary_texcoord3;
 
 // Inputs
 uniform vec3 camPosLocal;
@@ -59,12 +66,12 @@ void main()
 {
 
 	// World / view / projection
-	gl_Position = ftransform();
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
 
-	gl_TexCoord[0] = gl_MultiTexCoord0;
+	vary_texcoord0 = texcoord0;
 
 	// Get relative position
-	vec3 P = gl_Vertex.xyz - camPosLocal.xyz + vec3(0,50,0);
+	vec3 P = position.xyz - camPosLocal.xyz + vec3(0,50,0);
 
 	// Set altitude
 	if (P.y > 0.)
@@ -160,17 +167,17 @@ void main()
 
 
 	// Texture coords
-	gl_TexCoord[0] = gl_MultiTexCoord0;
-	gl_TexCoord[0].xy -= 0.5;
-	gl_TexCoord[0].xy /= cloud_scale.x;
-	gl_TexCoord[0].xy += 0.5;
+	vary_texcoord0 = texcoord0;
+	vary_texcoord0.xy -= 0.5;
+	vary_texcoord0.xy /= cloud_scale.x;
+	vary_texcoord0.xy += 0.5;
 
-	gl_TexCoord[1] = gl_TexCoord[0];
-	gl_TexCoord[1].x += lightnorm.x * 0.0125;
-	gl_TexCoord[1].y += lightnorm.z * 0.0125;
+	vary_texcoord1 = vary_texcoord0;
+	vary_texcoord1.x += lightnorm.x * 0.0125;
+	vary_texcoord1.y += lightnorm.z * 0.0125;
 
-	gl_TexCoord[2] = gl_TexCoord[0] * 16.;
-	gl_TexCoord[3] = gl_TexCoord[1] * 16.;
+	vary_texcoord2 = vary_texcoord0 * 16.;
+	vary_texcoord3 = vary_texcoord1 * 16.;
 
 	// Combine these to minimize register use
 	vary_CloudColorAmbient += oHazeColorBelowCloud;
diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl
index ac569e8257864da5b0bef882a73329c8deacb08a..c9d96b2cf4624f167a7c7bf5b62636b973207eb6 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/skyF.glsl
@@ -23,13 +23,15 @@
  * $/LicenseInfo$
  */
  
-
+#ifdef DEFINE_GL_FRAGCOLOR
+out vec4 gl_FragColor;
+#endif
 
 /////////////////////////////////////////////////////////////////////////
 // The fragment shader for the sky
 /////////////////////////////////////////////////////////////////////////
 
-varying vec4 vary_HazeColor;
+VARYING vec4 vary_HazeColor;
 
 uniform sampler2D cloud_noise_texture;
 uniform vec4 gamma;
diff --git a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl
index 3a44bb6d261af16a1a9fc5f87539a66c9edc32ea..46773cf89f69830002f4ba4364ce11472debf5fd 100644
--- a/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl
+++ b/indra/newview/app_settings/shaders/class2/windlight/skyV.glsl
@@ -23,14 +23,16 @@
  * $/LicenseInfo$
  */
  
+uniform mat4 modelview_projection_matrix;
 
+ATTRIBUTE vec3 position;
 
 // SKY ////////////////////////////////////////////////////////////////////////
 // The vertex shader for creating the atmospheric sky
 ///////////////////////////////////////////////////////////////////////////////
 
 // Output parameters
-varying vec4 vary_HazeColor;
+VARYING vec4 vary_HazeColor;
 
 // Inputs
 uniform vec3 camPosLocal;
@@ -57,12 +59,11 @@ void main()
 {
 
 	// World / view / projection
-	gl_Position = ftransform();
-	gl_TexCoord[0] = gl_MultiTexCoord0;
+	gl_Position = modelview_projection_matrix * vec4(position.xyz, 1.0);
 
 	// Get relative position
-	vec3 P = gl_Vertex.xyz - camPosLocal.xyz + vec3(0,50,0);
-	//vec3 P = gl_Vertex.xyz + vec3(0,50,0);
+	vec3 P = position.xyz - camPosLocal.xyz + vec3(0,50,0);
+	//vec3 P = position.xyz + vec3(0,50,0);
 
 	// Set altitude
 	if (P.y > 0.)
diff --git a/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl b/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl
index 151602dbc089d06f0dfdaf048033aac3460dd023..721054b5adb20ca41550baa1f2dcdddc214a6c2e 100644
--- a/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl
+++ b/indra/newview/app_settings/shaders/class3/avatar/avatarV.glsl
@@ -22,39 +22,47 @@
  * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
  * $/LicenseInfo$
  */
- 
 
+uniform mat4 projection_matrix;
+
+ATTRIBUTE vec3 position;
+ATTRIBUTE vec3 normal;
+ATTRIBUTE vec2 texcoord0;
+ATTRIBUTE vec4 clothing; 
+
+VARYING vec4 vertex_color;
+VARYING vec2 vary_texcoord0;
 
 vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol);
 mat4 getSkinnedTransform();
 void calcAtmospherics(vec3 inPositionEye);
 
-attribute vec4 clothing; //4
+uniform vec4 color;
 
-attribute vec4 gWindDir;		//7
-attribute vec4 gSinWaveParams; //3
-attribute vec4 gGravity;		//5
+uniform vec4 gWindDir;		
+uniform vec4 gSinWaveParams; 
+uniform vec4 gGravity;		
 
 const vec4 gMinMaxConstants = vec4(1.0, 0.166666, 0.0083143, .00018542);	 // #minimax-generated coefficients
 const vec4 gPiConstants	= vec4(0.159154943, 6.28318530, 3.141592653, 1.5707963); //	# {1/2PI, 2PI, PI, PI/2}
 
 void main()
 {
-	gl_TexCoord[0] = gl_MultiTexCoord0;
+	vary_texcoord0 = texcoord0;
 		
 	vec4 pos;
 	mat4 trans = getSkinnedTransform();
 		
 	vec3 norm;
-	norm.x = dot(trans[0].xyz, gl_Normal);
-	norm.y = dot(trans[1].xyz, gl_Normal);
-	norm.z = dot(trans[2].xyz, gl_Normal);
+	norm.x = dot(trans[0].xyz, normal);
+	norm.y = dot(trans[1].xyz, normal);
+	norm.z = dot(trans[2].xyz, normal);
 	norm = normalize(norm);
 		
 	//wind
 	vec4 windEffect;
 	windEffect = vec4(dot(norm, gWindDir.xyz));	
-	pos.x = dot(trans[2].xyz, gl_Vertex.xyz);
+	pos.x = dot(trans[2].xyz, position.xyz);
 	windEffect.xyz = pos.x * vec3(0.015, 0.015, 0.015)
 						+ windEffect.xyz;
 	windEffect.w = windEffect.w * 2.0 + 1.0;				// move wind offset value to [-1, 3]
@@ -101,7 +109,7 @@ void main()
 	sinWave.xyz = max(sinWave.xyz, vec3(-1.0, -1.0, -1.0));	// clamp to underlying body shape
 	offsetPos = clothing * sinWave.x;						// multiply wind effect times clothing displacement
 	temp2 = gWindDir*sinWave.z + vec4(norm,0);				// calculate normal offset due to wind oscillation
-	offsetPos = vec4(1.0,1.0,1.0,0.0)*offsetPos+gl_Vertex;	// add to offset vertex position, and zero out effect from w
+	offsetPos = vec4(1.0,1.0,1.0,0.0)*offsetPos+vec4(position.xyz, 1.0);	// add to offset vertex position, and zero out effect from w
 	norm += temp2.xyz*2.0;									// add sin wave effect on normals (exaggerated)
 	
 	//add "backlighting" effect
@@ -119,12 +127,8 @@ void main()
 
 	calcAtmospherics(pos.xyz);
 	
-	vec4 color = calcLighting(pos.xyz, norm, gl_Color, vec4(0.0));			
-	gl_FrontColor = color; 
+	vec4 col = calcLighting(pos.xyz, norm, color, vec4(0.0));			
+	vertex_color = col; 
 					
-	gl_Position = gl_ProjectionMatrix * pos;
-	
-	
-	gl_TexCoord[2] = vec4(pos.xyz, 1.0);
-
+	gl_Position = projection_matrix * pos;
 }
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl
deleted file mode 100644
index 616ea5fe9e7fd06d0ada66c17a511223be2cd049..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleF.glsl
+++ /dev/null
@@ -1,106 +0,0 @@
-/** 
- * @file giDownsampleF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-uniform sampler2DRect giLightMap;
-
-uniform vec2 kern[32];
-uniform float dist_factor;
-uniform float blur_size;
-uniform vec2 delta;
-uniform int kern_length;
-uniform float kern_scale;
-uniform vec3 blur_quad;
-
-varying vec2 vary_fragcoord;
-
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-vec4 getPosition(vec2 pos_screen)
-{
-	float depth = texture2DRect(depthMap, pos_screen.xy).a;
-	vec2 sc = pos_screen.xy*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-float getDepth(vec2 pos_screen)
-{
-	float z = texture2DRect(depthMap, pos_screen.xy).a;
-	z = z*2.0-1.0;
-	vec4 ndc = vec4(0.0, 0.0, z, 1.0);
-	vec4 p = inv_proj*ndc;
-	return p.z/p.w;
-}
-
-void main() 
-{
-	vec3 norm = texture2DRect(normalMap, vary_fragcoord.xy).xyz;
-	norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-	float depth = getDepth(vary_fragcoord.xy);
-		
-	vec3 ccol = texture2DRect(giLightMap, vary_fragcoord.xy).rgb;
-	vec2 dlt = kern_scale * delta/(vec2(1.0,1.0)+norm.xy*norm.xy);
-	dlt /= clamp(-depth*blur_quad.x, 1.0, 3.0);
-	float defined_weight = kern[0].x;
-	vec3 col = ccol*kern[0].x;
-	
-	for (int i = 0; i < kern_length; i++)
-	{
-		vec2 tc = vary_fragcoord.xy + kern[i].y*dlt;
-		vec3 sampNorm = texture2DRect(normalMap, tc.xy).xyz;
-		sampNorm = vec3((sampNorm.xy-0.5)*2.0,sampNorm.z); // unpack norm
-		
-		float d = dot(norm.xyz, sampNorm);
-		
-		if (d > 0.5)
-		{
-			float sampdepth = getDepth(tc.xy);
-			sampdepth -= depth;
-			if (sampdepth*sampdepth < blur_quad.z)
-			{
-	    		col += texture2DRect(giLightMap, tc).rgb*kern[i].x;
-				defined_weight += kern[i].x;
-			}
-		}
-	}
-
-	col /= defined_weight;
-	
-	//col = ccol;
-	
-	col = col*blur_quad.y;
-	
-	gl_FragData[0].xyz = col;
-	
-	//gl_FragColor = ccol;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleV.glsl b/indra/newview/app_settings/shaders/class3/deferred/giDownsampleV.glsl
deleted file mode 100644
index 6231ee68b75c69b50b1cbd480d448b468fd89833..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/giDownsampleV.glsl
+++ /dev/null
@@ -1,37 +0,0 @@
-/** 
- * @file postgiV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-varying vec2 vary_fragcoord;
-uniform vec2 screen_res;
-
-void main()
-{
-	//transform vertex
-	gl_Position = ftransform(); 
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
-	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giF.glsl
deleted file mode 100644
index 95913a502c4a852e3fc9ee7d1e3a18dad108cfd0..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/giF.glsl
+++ /dev/null
@@ -1,211 +0,0 @@
-/** 
- * @file giF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-
-uniform sampler2DRect depthMap;
-uniform sampler2DRect normalMap;
-uniform sampler2DRect lightMap;
-uniform sampler2DRect specularRect;
-
-uniform sampler2D noiseMap;
-
-uniform sampler2D		diffuseGIMap;
-uniform sampler2D		specularGIMap;
-uniform sampler2D		normalGIMap;
-uniform sampler2D		depthGIMap;
-
-uniform sampler2D		lightFunc;
-
-// Inputs
-varying vec2 vary_fragcoord;
-
-uniform vec2 screen_res;
-
-uniform vec4 sunlight_color;
-
-uniform mat4 inv_proj;
-uniform mat4 gi_mat;  //gPipeline.mGIMatrix - eye space to sun space
-uniform mat4 gi_mat_proj; //gPipeline.mGIMatrixProj - eye space to projected sun space
-uniform mat4 gi_norm_mat; //gPipeline.mGINormalMatrix - eye space normal to sun space normal matrix
-uniform mat4 gi_inv_proj; //gPipeline.mGIInvProj - projected sun space to sun space
-uniform float gi_sample_width;
-uniform float gi_noise;
-uniform float gi_attenuation;
-uniform float gi_range;
-
-vec4 getPosition(vec2 pos_screen)
-{
-	float depth = texture2DRect(depthMap, pos_screen.xy).a;
-	vec2 sc = pos_screen.xy*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-vec4 getGIPosition(vec2 gi_tc)
-{
-	float depth = texture2D(depthGIMap, gi_tc).a;
-	vec2 sc = gi_tc*2.0;
-	sc -= vec2(1.0, 1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = gi_inv_proj*ndc;
-	pos.xyz /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-vec3 giAmbient(vec3 pos, vec3 norm)
-{
-	vec4 gi_c = gi_mat_proj * vec4(pos, 1.0);
-	gi_c.xyz /= gi_c.w;
-
-	vec4 gi_pos = gi_mat*vec4(pos,1.0);
-	vec3 gi_norm = (gi_norm_mat*vec4(norm,1.0)).xyz;
-	gi_norm = normalize(gi_norm);
-	
-	vec4 c_spec = texture2DRect(specularRect, vary_fragcoord.xy);
-	vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).rgb;
-	gi_pos.xyz += nz.x*gi_noise*gi_norm.xyz;
-	vec2 tcx = gi_norm.xy;
-	vec2 tcy = gi_norm.yx;
-	
-	vec4 eye_pos = gi_mat*vec4(0,0,0,1.0);
-	
-	vec3 eye_dir = normalize(gi_pos.xyz-eye_pos.xyz);
-	vec3 eye_ref = reflect(eye_dir, gi_norm);
-	
-	float da = 0.0; //texture2DRect(lightMap, vary_fragcoord.xy).r*0.5;
-	vec3 fdiff = vec3(da);
-	float fda = da;
-	
-	vec3 rcol = vec3(0,0,0);
-	
-	float fsa = 0.0;
-	
-
-	for (int i = -1; i <= 1; i += 2 )
-	{
-		for (int j = -1; j <= 1; j+= 2)
-		{
-			vec2 tc = vec2(i, j)*0.75+gi_norm.xy*nz.z;
-			tc += nz.xy*2.0;
-			tc *= gi_sample_width*0.25;
-			tc += gi_c.xy;
-			
-			vec3 lnorm = -(texture2D(normalGIMap, tc.xy).xyz*2.0-1.0);
-			vec3 lpos = getGIPosition(tc.xy).xyz;
-							
-			vec3 at = lpos-gi_pos.xyz;
-			float dist = length(at);
-			float dist_atten = clamp(1.0/(gi_attenuation*dist), 0.0, 1.0);
-			
-						
-			if (dist_atten > 0.01)
-			{ //possible contribution of indirect light to this surface
-				vec3 ldir = at;
-				
-				float ld = -dot(ldir, lnorm);
-				
-				if (ld < 0.0)
-				{  					
-					float ang_atten = dot(ldir, gi_norm);
-				
-					if (ang_atten > 0.0)
-					{  
-						vec4 spec = texture2D(specularGIMap, tc.xy);
-						at = normalize(at);
-						vec3 diff;		
-						
-						float da = 0.0;
-												
-						//contribution from indirect source to visible pixel
-						vec3 ha = at;
-						ha.z -= 1.0;
-						ha = normalize(ha);
-						if (spec.a > 0.0)
-						{
-							float sa = dot(ha,lnorm);
-							da = texture2D(lightFunc, vec2(sa, spec.a)).a;
-						}
-						else
-						{
-							da = -lnorm.z;
-						}
-						
-						diff = texture2D(diffuseGIMap, tc.xy).rgb+spec.rgb*spec.a*2.0;
-												
-						if (da > 0.0)
-						{ //contribution from visible pixel to eye
-							vec3 ha = normalize(at-eye_dir);
-							if (c_spec.a > 0.0)
-							{
-								float sa = dot(ha, gi_norm);
-								da = dist_atten*texture2D(lightFunc, vec2(sa, c_spec.a)).a;
-							}
-							else
-							{
-								da = dist_atten*dot(gi_norm, normalize(ldir));
-							}
-							fda += da;
-							fdiff += da*(c_spec.rgb*c_spec.a*2.0+vec3(1,1,1))*diff.rgb;
-						}
-					}
-				}
-			}
-		}
-	}
-
-	fdiff *= sunlight_color.rgb;
-	
-	vec3 ret = fda*fdiff;
-	
-	return clamp(ret,vec3(0.0), vec3(1.0));
-}
-
-void main() 
-{
-	vec2 pos_screen = vary_fragcoord.xy;
-	vec4 pos = getPosition(pos_screen);
-	
-	float rad = gi_range*0.5;
-	
-	vec3 norm = texture2DRect(normalMap, pos_screen).xyz;
-	norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-	float dist = max(length(pos.xyz)-rad, 0.0);
-	
-	float da = clamp(1.0-dist/rad, 0.0, 1.0);
-	
-	vec3 ambient = da > 0.0 ? giAmbient(pos.xyz, norm) : vec3(0);
-	
-		
-	gl_FragData[0].xyz = mix(vec3(0), ambient, da);
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl b/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl
deleted file mode 100644
index 7c55fcc2864075f0d8f3d441721a25ba7898127b..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/giFinalF.glsl
+++ /dev/null
@@ -1,45 +0,0 @@
-/** 
- * @file giFinalF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-
-uniform sampler2DRect diffuseRect;
-uniform sampler2D	  bloomMap;
-uniform sampler2DRect edgeMap;
-
-uniform vec2 screen_res;
-varying vec2 vary_fragcoord;
-
-
-void main() 
-{
-	vec4 bloom = texture2D(bloomMap, vary_fragcoord.xy/screen_res);
-	vec4 diff = texture2DRect(diffuseRect, vary_fragcoord.xy);
-	
-	gl_FragColor = bloom + diff;
-	//gl_FragColor.rgb = vec3(texture2DRect(edgeMap, vary_fragcoord.xy).a);
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giFinalV.glsl b/indra/newview/app_settings/shaders/class3/deferred/giFinalV.glsl
deleted file mode 100644
index a6a206502c7ff7fd3dc0553da9bcfa24b60fbddb..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/giFinalV.glsl
+++ /dev/null
@@ -1,37 +0,0 @@
-/** 
- * @file giFinalV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-varying vec2 vary_fragcoord;
-uniform vec2 screen_res;
-
-void main()
-{
-	//transform vertex
-	gl_Position = ftransform(); 
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
-	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/giV.glsl b/indra/newview/app_settings/shaders/class3/deferred/giV.glsl
deleted file mode 100644
index 190e32b6a34102d938e25f11ca0f22962d66b332..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/giV.glsl
+++ /dev/null
@@ -1,42 +0,0 @@
-/** 
- * @file giV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-varying vec2 vary_fragcoord;
-
-uniform vec2 screen_res;
-
-void main()
-{
-	//transform vertex
-	gl_Position = ftransform(); 
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
-	vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;	
-	vec4 tex = gl_MultiTexCoord0;
-	tex.w = 1.0;
-
-	gl_FrontColor = gl_Color;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl b/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl
deleted file mode 100644
index 13517a26baca2a7e633391ddd0df7257d6bc03a3..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/luminanceF.glsl
+++ /dev/null
@@ -1,39 +0,0 @@
-/** 
- * @file luminanceF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-
-uniform sampler2DRect lightMap;
-uniform sampler2DRect diffuseRect;
-
-varying vec2 vary_fragcoord;
-void main() 
-{
-	float i = texture2DRect(lightMap, vary_fragcoord.xy).r;
-	gl_FragColor.rgb = vec3(i);
-	gl_FragColor.a = 1.0;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/luminanceV.glsl b/indra/newview/app_settings/shaders/class3/deferred/luminanceV.glsl
deleted file mode 100644
index 2d99ef5481777c7ba2019d3a783f5d2b0b19de0e..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/luminanceV.glsl
+++ /dev/null
@@ -1,40 +0,0 @@
-/** 
- * @file giV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-varying vec2 vary_fragcoord;
-
-uniform vec2 screen_res;
-
-void main()
-{
-	//transform vertex
-	gl_Position = ftransform(); 
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
-	vary_fragcoord = (pos.xy * 0.5 + 0.5)*screen_res;	
-
-	gl_FrontColor = gl_Color;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl b/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl
deleted file mode 100644
index 0364da62584166af21506f656fa85caf28cdc9e1..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/postDeferredF.glsl
+++ /dev/null
@@ -1,100 +0,0 @@
-/** 
- * @file postDeferredF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
-  
-
-
-#extension GL_ARB_texture_rectangle : enable
-
-uniform sampler2DRect diffuseRect;
-uniform sampler2DRect specularRect;
-
-uniform sampler2DRect localLightMap;
-uniform sampler2DRect sunLightMap;
-uniform sampler2DRect giLightMap;
-uniform sampler2DRect edgeMap;
-
-uniform sampler2D	  luminanceMap;
-
-uniform sampler2DRect lightMap;
-
-uniform sampler2D	  lightFunc;
-uniform sampler2D	  noiseMap;
-
-uniform float sun_lum_scale;
-uniform float sun_lum_offset;
-uniform float lum_scale;
-uniform float lum_lod;
-uniform vec4 ambient;
-uniform float gi_brightness;
-uniform float gi_luminance;
-
-uniform vec4 sunlight_color;
-
-uniform vec2 screen_res;
-varying vec2 vary_fragcoord;
-
-void main() 
-{
-	vec2 tc = vary_fragcoord.xy;
-	vec4 lcol = texture2DLod(luminanceMap, vec2(0.5, 0.5), lum_lod);
-	
-	vec3 gi_col = texture2DRect(giLightMap, vary_fragcoord.xy).rgb;
-	vec4 sun_col =	texture2DRect(sunLightMap, vary_fragcoord.xy);
-	vec3 local_col = texture2DRect(localLightMap, vary_fragcoord.xy).rgb;
-	
-	float scol = texture2DRect(lightMap, vary_fragcoord.xy).r;
-			
-	vec3 diff = texture2DRect(diffuseRect, vary_fragcoord.xy).rgb;
-	vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
-	
-	gi_col = gi_col*(diff.rgb+spec.rgb*spec.a);
-
-	float lum = 1.0-clamp(pow(lcol.r, gi_brightness)+sun_lum_offset, 0.0, 1.0);
-	
-	lum *= sun_lum_scale;
-	
-	sun_col *= 1.0+(lum*lum_scale*scol);
-					  
-	vec4 col;
-	col.rgb = gi_col+sun_col.rgb+local_col;
-	
-	col.a = sun_col.a;
-	
-	vec3 bcol = vec3(0,0,0);
-	float tweight = 0.0;
-	for (int i = 0; i < 16; i++)
-	{
-		float weight = (float(i)+1.0)/2.0;
-		bcol += texture2DLod(luminanceMap, vary_fragcoord.xy/screen_res, weight).rgb*weight*weight*weight;
-		tweight += weight*weight;
-	}
-	
-	bcol /= tweight;
-	bcol *= gi_luminance;
-	col.rgb += bcol*lum;
-	
-	gl_FragColor = col;
-	//gl_FragColor.rgb = texture2DRect(giLightMap, vary_fragcoord.xy).rgb;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/postDeferredV.glsl b/indra/newview/app_settings/shaders/class3/deferred/postDeferredV.glsl
deleted file mode 100644
index cb83dda795f87098fd9d5bc508b27c762cc53fff..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/postDeferredV.glsl
+++ /dev/null
@@ -1,37 +0,0 @@
-/** 
- * @file postDeferredV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-varying vec2 vary_fragcoord;
-uniform vec2 screen_res;
-
-void main()
-{
-	//transform vertex
-	gl_Position = ftransform(); 
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
-	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl b/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl
deleted file mode 100644
index 009b5cc7439f76c8f7b49334f13aaf00ac68b755..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/postgiF.glsl
+++ /dev/null
@@ -1,89 +0,0 @@
-/** 
- * @file postgiF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-
-uniform sampler2DRect depthMap;
-uniform sampler2DRect normalMap;
-uniform sampler2DRect giLightMap;
-uniform sampler2D	noiseMap;
-uniform sampler2D	giMip;
-uniform sampler2DRect edgeMap;
-
-
-uniform vec2 delta;
-uniform float kern_scale;
-uniform float gi_edge_weight;
-uniform float gi_blur_brightness;
-
-varying vec2 vary_fragcoord;
-
-void main() 
-{
-	vec2 dlt = kern_scale*delta;
-	float defined_weight = 0.0; 
-	vec3 col = vec3(0.0); 
-	
-	float e = 1.0;
-	
-	for (int i = 1; i < 8; i++)
-	{
-		vec2 tc = vary_fragcoord.xy + float(i) * dlt;
-		
-		e = max(e, 0.0);
-		float wght = e;
-		
-	   	col += texture2DRect(giLightMap, tc).rgb*wght;
-		defined_weight += wght;
-				
-		e *= e;
-		e -=(texture2DRect(edgeMap, tc.xy-dlt*0.25).a+
-			texture2DRect(edgeMap, tc.xy+dlt*0.25).a)*gi_edge_weight;
-	}
-
-	e = 1.0;
-	
-	for (int i = 1; i < 8; i++)
-	{
-		vec2 tc = vary_fragcoord.xy - float(i) * dlt;
-		
-		e = max(e,0.0);
-		float wght = e;
-		
-	   	col += texture2DRect(giLightMap, tc).rgb*wght;
-		defined_weight += wght;
-	
-		e *= e;
-		e -= (texture2DRect(edgeMap, tc.xy-dlt*0.25).a+
-			texture2DRect(edgeMap, tc.xy+dlt*0.25).a)*gi_edge_weight;
-		
-	}
-	
-	col /= max(defined_weight, 0.01);
-
-	gl_FragColor.rgb = col * gi_blur_brightness;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/postgiV.glsl b/indra/newview/app_settings/shaders/class3/deferred/postgiV.glsl
deleted file mode 100644
index 6231ee68b75c69b50b1cbd480d448b468fd89833..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/postgiV.glsl
+++ /dev/null
@@ -1,37 +0,0 @@
-/** 
- * @file postgiV.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-varying vec2 vary_fragcoord;
-uniform vec2 screen_res;
-
-void main()
-{
-	//transform vertex
-	gl_Position = ftransform(); 
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
-	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
deleted file mode 100644
index 1c02adea89bb3e8f90cd1d379a25f2db71e130e3..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl
+++ /dev/null
@@ -1,335 +0,0 @@
-/** 
- * @file softenLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-#extension GL_ARB_texture_rectangle : enable
-
-uniform sampler2DRect diffuseRect;
-uniform sampler2DRect specularRect;
-uniform sampler2DRect normalMap;
-uniform sampler2DRect lightMap;
-uniform sampler2D	  noiseMap;
-uniform samplerCube environmentMap;
-uniform sampler2D	  lightFunc;
-uniform vec3 gi_quad;
-
-uniform float blur_size;
-uniform float blur_fidelity;
-
-// Inputs
-uniform vec4 morphFactor;
-uniform vec3 camPosLocal;
-//uniform vec4 camPosWorld;
-uniform vec4 gamma;
-uniform vec4 lightnorm;
-uniform vec4 sunlight_color;
-uniform vec4 ambient;
-uniform vec4 blue_horizon;
-uniform vec4 blue_density;
-uniform vec4 haze_horizon;
-uniform vec4 haze_density;
-uniform vec4 cloud_shadow;
-uniform vec4 density_multiplier;
-uniform vec4 distance_multiplier;
-uniform vec4 max_y;
-uniform vec4 glow;
-uniform float scene_light_strength;
-uniform vec3 env_mat[3];
-uniform vec4 shadow_clip;
-uniform mat3 ssao_effect_mat;
-
-uniform sampler2DRect depthMap;
-uniform mat4 inv_proj;
-uniform vec2 screen_res;
-
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
-
-vec3 vary_PositionEye;
-
-vec3 vary_SunlitColor;
-vec3 vary_AmblitColor;
-vec3 vary_AdditiveColor;
-vec3 vary_AtmosAttenuation;
-uniform float gi_ambiance;
-
-vec4 getPosition_d(vec2 pos_screen, float depth)
-{
-	vec2 sc = pos_screen.xy*2.0;
-	sc /= screen_res;
-	sc -= vec2(1.0,1.0);
-	vec4 ndc = vec4(sc.x, sc.y, 2.0*depth-1.0, 1.0);
-	vec4 pos = inv_proj * ndc;
-	pos /= pos.w;
-	pos.w = 1.0;
-	return pos;
-}
-
-vec4 getPosition(vec2 pos_screen)
-{ //get position in screen space (world units) given window coordinate and depth map
-	float depth = texture2DRect(depthMap, pos_screen.xy).a;
-	return getPosition_d(pos_screen, depth);
-}
-
-vec3 getPositionEye()
-{
-	return vary_PositionEye;
-}
-vec3 getSunlitColor()
-{
-	return vary_SunlitColor;
-}
-vec3 getAmblitColor()
-{
-	return vary_AmblitColor;
-}
-vec3 getAdditiveColor()
-{
-	return vary_AdditiveColor;
-}
-vec3 getAtmosAttenuation()
-{
-	return vary_AtmosAttenuation;
-}
-
-
-void setPositionEye(vec3 v)
-{
-	vary_PositionEye = v;
-}
-
-void setSunlitColor(vec3 v)
-{
-	vary_SunlitColor = v;
-}
-
-void setAmblitColor(vec3 v)
-{
-	vary_AmblitColor = v;
-}
-
-void setAdditiveColor(vec3 v)
-{
-	vary_AdditiveColor = v;
-}
-
-void setAtmosAttenuation(vec3 v)
-{
-	vary_AtmosAttenuation = v;
-}
-
-void calcAtmospherics(vec3 inPositionEye, float ambFactor) {
-
-	vec3 P = inPositionEye;
-	setPositionEye(P);
-	
-	//(TERRAIN) limit altitude
-	if (P.y > max_y.x) P *= (max_y.x / P.y);
-	if (P.y < -max_y.x) P *= (-max_y.x / P.y);
-
-	vec3 tmpLightnorm = lightnorm.xyz;
-
-	vec3 Pn = normalize(P);
-	float Plen = length(P);
-
-	vec4 temp1 = vec4(0);
-	vec3 temp2 = vec3(0);
-	vec4 blue_weight;
-	vec4 haze_weight;
-	vec4 sunlight = sunlight_color;
-	vec4 light_atten;
-
-	//sunlight attenuation effect (hue and brightness) due to atmosphere
-	//this is used later for sunlight modulation at various altitudes
-	light_atten = (blue_density * 1.0 + vec4(haze_density.r) * 0.25) * (density_multiplier.x * max_y.x);
-		//I had thought blue_density and haze_density should have equal weighting,
-		//but attenuation due to haze_density tends to seem too strong
-
-	temp1 = blue_density + vec4(haze_density.r);
-	blue_weight = blue_density / temp1;
-	haze_weight = vec4(haze_density.r) / temp1;
-
-	//(TERRAIN) compute sunlight from lightnorm only (for short rays like terrain)
-	temp2.y = max(0.0, tmpLightnorm.y);
-	temp2.y = 1. / temp2.y;
-	sunlight *= exp( - light_atten * temp2.y);
-
-	// main atmospheric scattering line integral
-	temp2.z = Plen * density_multiplier.x;
-
-	// Transparency (-> temp1)
-	// ATI Bugfix -- can't store temp1*temp2.z*distance_multiplier.x in a variable because the ati
-	// compiler gets confused.
-	temp1 = exp(-temp1 * temp2.z * distance_multiplier.x);
-
-	//final atmosphere attenuation factor
-	setAtmosAttenuation(temp1.rgb);
-	
-	//compute haze glow
-	//(can use temp2.x as temp because we haven't used it yet)
-	temp2.x = dot(Pn, tmpLightnorm.xyz);
-	temp2.x = 1. - temp2.x;
-		//temp2.x is 0 at the sun and increases away from sun
-	temp2.x = max(temp2.x, .03);	//was glow.y
-		//set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
-	temp2.x *= glow.x;
-		//higher glow.x gives dimmer glow (because next step is 1 / "angle")
-	temp2.x = pow(temp2.x, glow.z);
-		//glow.z should be negative, so we're doing a sort of (1 / "angle") function
-
-	//add "minimum anti-solar illumination"
-	temp2.x += .25;
-	
-	//increase ambient when there are more clouds
-	vec4 tmpAmbient = ambient*gi_ambiance + (vec4(1.) - ambient*gi_ambiance) * cloud_shadow.x * 0.5;
-	
-	/*  decrease value and saturation (that in HSV, not HSL) for occluded areas
-	 * // for HSV color/geometry used here, see http://gimp-savvy.com/BOOK/index.html?node52.html
-	 * // The following line of code performs the equivalent of:
-	 * float ambAlpha = tmpAmbient.a;
-	 * float ambValue = dot(vec3(tmpAmbient), vec3(0.577)); // projection onto <1/rt(3), 1/rt(3), 1/rt(3)>, the neutral white-black axis
-	 * vec3 ambHueSat = vec3(tmpAmbient) - vec3(ambValue);
-	 * tmpAmbient = vec4(RenderSSAOEffect.valueFactor * vec3(ambValue) + RenderSSAOEffect.saturationFactor *(1.0 - ambFactor) * ambHueSat, ambAlpha);
-	 */
-	tmpAmbient = vec4(mix(ssao_effect_mat * tmpAmbient.rgb, tmpAmbient.rgb, ambFactor), tmpAmbient.a);
-
-	//haze color
-	setAdditiveColor(
-		vec3(blue_horizon * blue_weight * (sunlight*(1.-cloud_shadow.x) + tmpAmbient)
-	  + (haze_horizon.r * haze_weight) * (sunlight*(1.-cloud_shadow.x) * temp2.x
-		  + tmpAmbient)));
-
-	//brightness of surface both sunlight and ambient
-	setSunlitColor(vec3(sunlight * .5));
-	setAmblitColor(vec3(tmpAmbient * .25));
-	setAdditiveColor(getAdditiveColor() * vec3(1.0 - temp1));
-}
-
-vec3 atmosLighting(vec3 light)
-{
-	light *= getAtmosAttenuation().r;
-	light += getAdditiveColor();
-	return (2.0 * light);
-}
-
-vec3 atmosTransport(vec3 light) {
-	light *= getAtmosAttenuation().r;
-	light += getAdditiveColor() * 2.0;
-	return light;
-}
-vec3 atmosGetDiffuseSunlightColor()
-{
-	return getSunlitColor();
-}
-
-vec3 scaleDownLight(vec3 light)
-{
-	return (light / scene_light_strength );
-}
-
-vec3 scaleUpLight(vec3 light)
-{
-	return (light * scene_light_strength);
-}
-
-vec3 atmosAmbient(vec3 light)
-{
-	return getAmblitColor() + light / 2.0;
-}
-
-vec3 atmosAffectDirectionalLight(float lightIntensity)
-{
-	return getSunlitColor() * lightIntensity;
-}
-
-vec3 scaleSoftClip(vec3 light)
-{
-	//soft clip effect:
-	light = 1. - clamp(light, vec3(0.), vec3(1.));
-	light = 1. - pow(light, gamma.xxx);
-
-	return light;
-}
-
-void main() 
-{
-	vec2 tc = vary_fragcoord.xy;
-	float depth = texture2DRect(depthMap, tc.xy).a;
-	vec3 pos = getPosition_d(tc, depth).xyz;
-	vec3 norm = texture2DRect(normalMap, tc).xyz;
-	norm = vec3((norm.xy-0.5)*2.0,norm.z); // unpack norm
-	//vec3 nz = texture2D(noiseMap, vary_fragcoord.xy/128.0).xyz;
-	
-	float da = max(dot(norm.xyz, vary_light.xyz), 0.0);
-	
-	vec4 diffuse = texture2DRect(diffuseRect, tc);
-	vec3 col;
-	float bloom = 0.0;
-
-	if (diffuse.a < 0.9)
-	{
-		vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy);
-	
-		da = texture2D(lightFunc, vec2(da, 0.0)).a;
-		
-		vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg;
-		float scol = max(scol_ambocc.r, diffuse.a); 
-		float ambocc = scol_ambocc.g;
-	
-		calcAtmospherics(pos.xyz, ambocc);
-	
-		col = atmosAmbient(vec3(0));
-		col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a));
-	
-		col *= diffuse.rgb;
-	
-		if (spec.a > 0.0) // specular reflection
-		{
-			// the old infinite-sky shiny reflection
-			//
-			vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz));
-			float sa = dot(refnormpersp, vary_light.xyz);
-			vec3 dumbshiny = vary_SunlitColor*scol*texture2D(lightFunc, vec2(sa, spec.a)).a;
-		
-			// add the two types of shiny together
-			vec3 spec_contrib = dumbshiny * spec.rgb;
-			bloom = dot(spec_contrib, spec_contrib);
-			col += spec_contrib;		
-		}
-	
-		col = atmosLighting(col);
-		col = scaleSoftClip(col);
-
-		col = mix(col, diffuse.rgb, diffuse.a);
-	}
-	else
-	{
-		col = diffuse.rgb;
-	}
-		
-	gl_FragColor.rgb = col;
-	gl_FragColor.a = bloom;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightV.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightV.glsl
deleted file mode 100644
index fed238510a0281a7f4b81520f4c81b9a3972fe89..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/softenLightV.glsl
+++ /dev/null
@@ -1,44 +0,0 @@
-/** 
- * @file softenLightF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-uniform vec2 screen_res;
-
-varying vec4 vary_light;
-varying vec2 vary_fragcoord;
-void main()
-{
-	//transform vertex
-	gl_Position = ftransform(); 
-	
-	vec4 pos = gl_ModelViewProjectionMatrix * gl_Vertex;
-	vary_fragcoord = (pos.xy*0.5+0.5)*screen_res;
-		
-	vec4 tex = gl_MultiTexCoord0;
-	tex.w = 1.0;
-	
-	vary_light = gl_MultiTexCoord0;
-}
diff --git a/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl b/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl
deleted file mode 100644
index 56a149523e0c0470013300e2d26ae19564d4ef83..0000000000000000000000000000000000000000
--- a/indra/newview/app_settings/shaders/class3/deferred/treeF.glsl
+++ /dev/null
@@ -1,39 +0,0 @@
-/** 
- * @file treeF.glsl
- *
- * $LicenseInfo:firstyear=2007&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2007, 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$
- */
- 
-
-
-uniform sampler2D diffuseMap;
-
-varying vec3 vary_normal;
-
-void main() 
-{
-	vec4 col = texture2D(diffuseMap, gl_TexCoord[0].xy);
-	gl_FragData[0] = vec4(gl_Color.rgb*col.rgb, col.a <= 0.5 ? 0.0 : 0.005);
-	gl_FragData[1] = vec4(0,0,0,0);
-	vec3 nvn = normalize(vary_normal);
-	gl_FragData[2] = vec4(nvn.xy * 0.5 + 0.5, nvn.z, 0.0);
-}
diff --git a/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl b/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl
index 79bd017efc05500122fd48fa780d8165dbdeb2b9..e043ac873ebbbcf0fd1bb81ab33b310ec3cee997 100644
--- a/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl
+++ b/indra/newview/app_settings/shaders/class3/lighting/sumLightsSpecularV.glsl
@@ -23,8 +23,6 @@
  * $/LicenseInfo$
  */
  
-
-
 float calcDirectionalLightSpecular(inout vec4 specular, vec3 view, vec3 n, vec3 l, vec3 lightCol, float da);
 vec3 calcPointLightSpecular(inout vec4 specular, vec3 view, vec3 v, vec3 n, vec3 l, float r, float pw, vec3 lightCol);
 
@@ -33,6 +31,10 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
 vec3 atmosGetDiffuseSunlightColor();
 vec3 scaleDownLight(vec3 light);
 
+uniform vec4 light_position[8];
+uniform vec3 light_attenuation[8]; 
+uniform vec3 light_diffuse[8];
+
 vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor, vec4 baseCol)
 {
 	vec4 col = vec4(0.0, 0.0, 0.0, color.a);
@@ -43,18 +45,18 @@ vec4 sumLightsSpecular(vec3 pos, vec3 norm, vec4 color, inout vec4 specularColor
 	vec4 specularSum = vec4(0.0);
 	
 	// Collect normal lights (need to be divided by two, as we later multiply by 2)
-	col.rgb += gl_LightSource[1].diffuse.rgb * calcDirectionalLightSpecular(specularColor, view, norm, gl_LightSource[1].position.xyz,gl_LightSource[1].diffuse.rgb, 1.0);
-	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[2].position.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].quadraticAttenuation,gl_LightSource[2].diffuse.rgb);
-	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[3].position.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].quadraticAttenuation,gl_LightSource[3].diffuse.rgb);
-	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[4].position.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].quadraticAttenuation,gl_LightSource[4].diffuse.rgb);
-	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[5].position.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].quadraticAttenuation,gl_LightSource[5].diffuse.rgb);
-	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[6].position.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].quadraticAttenuation,gl_LightSource[6].diffuse.rgb);
-	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, gl_LightSource[7].position.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].quadraticAttenuation,gl_LightSource[7].diffuse.rgb);
+	col.rgb += light_diffuse[1].rgb * calcDirectionalLightSpecular(specularColor, view, norm, light_position[1].xyz,light_diffuse[1].rgb, 1.0);
+	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[2].xyz, light_attenuation[2].x, light_attenuation[2].y, light_diffuse[2].rgb); 
+	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[3].xyz, light_attenuation[3].x, light_attenuation[3].y, light_diffuse[3].rgb); 
+	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[4].xyz, light_attenuation[4].x, light_attenuation[4].y, light_diffuse[4].rgb); 
+	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[5].xyz, light_attenuation[5].x, light_attenuation[5].y, light_diffuse[5].rgb); 
+	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[6].xyz, light_attenuation[6].x, light_attenuation[6].y, light_diffuse[6].rgb); 
+	col.rgb += calcPointLightSpecular(specularSum, view, pos, norm, light_position[7].xyz, light_attenuation[7].x, light_attenuation[7].y, light_diffuse[7].rgb); 
 	col.rgb = scaleDownLight(col.rgb);
 						
 	// Add windlight lights
 	col.rgb += atmosAmbient(baseCol.rgb);
-	col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, gl_LightSource[0].position.xyz,atmosGetDiffuseSunlightColor()*baseCol.a, 1.0));
+	col.rgb += atmosAffectDirectionalLight(calcDirectionalLightSpecular(specularSum, view, norm, light_position[0].xyz,atmosGetDiffuseSunlightColor()*baseCol.a, 1.0));
 
 	col.rgb = min(col.rgb*color.rgb, 1.0);
 	specularColor.rgb = min(specularColor.rgb*specularSum.rgb, 1.0);
diff --git a/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl b/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl
index dcdc72ac024c2dd55969ba9fd0061f8a8756ebe2..dadff40933a1dc067f024741e0c41ceed4d3a24d 100644
--- a/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl
+++ b/indra/newview/app_settings/shaders/class3/lighting/sumLightsV.glsl
@@ -24,7 +24,6 @@
  */
  
 
-
 float calcDirectionalLight(vec3 n, vec3 l);
 float calcPointLightOrSpotLight(vec3 v, vec3 n, vec4 lp, vec3 ln, float la, float is_pointlight);
 
@@ -33,22 +32,29 @@ vec3 atmosAffectDirectionalLight(float lightIntensity);
 vec3 scaleDownLight(vec3 light);
 vec3 scaleUpLight(vec3 light);
 
+uniform vec4 light_position[8];
+uniform vec3 light_direction[8];
+uniform vec3 light_attenuation[8]; 
+uniform vec3 light_diffuse[8];
+
 vec4 sumLights(vec3 pos, vec3 norm, vec4 color, vec4 baseLight)
 {
 	vec4 col = vec4(0.0, 0.0, 0.0, color.a);
 	
 	// Collect normal lights (need to be divided by two, as we later multiply by 2)
-	col.rgb += gl_LightSource[2].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[2].position, gl_LightSource[2].spotDirection.xyz, gl_LightSource[2].linearAttenuation, gl_LightSource[2].specular.a);
-	col.rgb += gl_LightSource[3].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[3].position, gl_LightSource[3].spotDirection.xyz, gl_LightSource[3].linearAttenuation, gl_LightSource[3].specular.a);
-	col.rgb += gl_LightSource[4].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[4].position, gl_LightSource[4].spotDirection.xyz, gl_LightSource[4].linearAttenuation, gl_LightSource[4].specular.a);
-	col.rgb += gl_LightSource[5].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[5].position, gl_LightSource[5].spotDirection.xyz, gl_LightSource[5].linearAttenuation, gl_LightSource[5].specular.a);
-	col.rgb += gl_LightSource[6].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[6].position, gl_LightSource[6].spotDirection.xyz, gl_LightSource[6].linearAttenuation, gl_LightSource[6].specular.a);
-	col.rgb += gl_LightSource[7].diffuse.rgb*calcPointLightOrSpotLight(pos.xyz, norm, gl_LightSource[7].position, gl_LightSource[7].spotDirection.xyz, gl_LightSource[7].linearAttenuation, gl_LightSource[7].specular.a);
-	col.rgb += gl_LightSource[1].diffuse.rgb*calcDirectionalLight(norm, gl_LightSource[1].position.xyz);
+	
+	// Collect normal lights
+	col.rgb += light_diffuse[2].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[2], light_direction[2], light_attenuation[2].x, light_attenuation[2].z);
+	col.rgb += light_diffuse[3].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[3], light_direction[3], light_attenuation[3].x, light_attenuation[3].z);
+	col.rgb += light_diffuse[4].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[4], light_direction[4], light_attenuation[4].x, light_attenuation[4].z);
+	col.rgb += light_diffuse[5].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[5], light_direction[5], light_attenuation[5].x, light_attenuation[5].z);
+	col.rgb += light_diffuse[6].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[6], light_direction[6], light_attenuation[6].x, light_attenuation[6].z);
+	col.rgb += light_diffuse[7].rgb*calcPointLightOrSpotLight(pos.xyz, norm, light_position[7], light_direction[7], light_attenuation[7].x, light_attenuation[7].z);
+	col.rgb += light_diffuse[1].rgb*calcDirectionalLight(norm, light_position[1].xyz);
 	col.rgb = scaleDownLight(col.rgb);
 
 	// Add windlight lights
-	col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, gl_LightSource[0].position.xyz));
+	col.rgb += atmosAffectDirectionalLight(calcDirectionalLight(norm, light_position[0].xyz));
 	col.rgb += atmosAmbient(baseLight.rgb);
 
 	col.rgb = min(col.rgb*color.rgb, 1.0);
diff --git a/indra/newview/app_settings/toolbars.xml b/indra/newview/app_settings/toolbars.xml
new file mode 100644
index 0000000000000000000000000000000000000000..29c019719dea0a42cb9bf1c41491345c877a48cc
--- /dev/null
+++ b/indra/newview/app_settings/toolbars.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toolbars>
+  <bottom_toolbar
+    button_display_mode="icons_with_text">
+    <command name="chat"/>
+    <command name="speak"/>
+    <command name="destinations"/>
+    <command name="people"/>
+    <command name="profile"/>
+    <command name="move"/>
+    <command name="view"/>
+    <command name="howto"/>
+  </bottom_toolbar>
+  <left_toolbar
+    button_display_mode="icons_only">
+    <command name="avatar"/>
+    <command name="appearance"/>
+    <command name="inventory"/>
+    <command name="search"/>
+    <command name="places"/>
+    <command name="voice"/>
+    <command name="minimap"/>
+    <command name="snapshot"/>
+  </left_toolbar>
+</toolbars>
diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml
index 5d6b10c0470970367c0ea1b319ba4bf26217da07..99dbfcae51e8d94d201fee72ae01434df3e35bb4 100644
--- a/indra/newview/character/avatar_lad.xml
+++ b/indra/newview/character/avatar_lad.xml
@@ -393,7 +393,26 @@
        max_attachment_offset="2.0"
        visible_in_first_person="true" />
        
-
+    <attachment_point
+       id="39"
+       group="6"
+       pie_slice="1"
+       name="Neck"
+       joint="mNeck"
+       position="0 0 0"
+       rotation="0 0 0"
+       visible_in_first_person="true" />
+  	
+  	<attachment_point
+       id="40"
+       group="6"
+       pie_slice="2"
+       name="Avatar Center"
+       joint="mRoot"
+       position="0 0 0"
+       rotation="0 0 0"
+       visible_in_first_person="true" />
+  	
     <param
        id="32"
        group="1"
diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt
old mode 100755
new mode 100644
index e12c2f7853c8ba6f6e65f0e9a6e833cfbe114fc5..0f33d40ac3a1200e0ff5c683265a5be17e66bb79
--- a/indra/newview/featuretable.txt
+++ b/indra/newview/featuretable.txt
@@ -1,4 +1,8 @@
 version 32
+// The version number above should be implemented IF AND ONLY IF some
+// change has been made that is sufficiently important to justify
+// resetting the graphics preferences of all users to the recommended
+// defaults.  This should be as rare an event as we can manage.
 
 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences 
 // Should be combined into one table
@@ -65,6 +69,8 @@ RenderShadowDetail			1	2
 WatchdogDisabled				1	1
 RenderUseStreamVBO			1	1
 RenderFSAASamples			1	16
+RenderMaxTextureIndex		1	16
+
 
 //
 // Low Graphics Settings
@@ -155,7 +161,7 @@ WLSkyDetail					1	48
 RenderDeferred				1	0
 RenderDeferredSSAO			1	0
 RenderShadowDetail			1	0
-RenderFSAASamples			1	4
+RenderFSAASamples			1	2
 
 //
 // Ultra graphics (REALLY PURTY!)
@@ -184,7 +190,7 @@ WLSkyDetail					1	128
 RenderDeferred				1	1
 RenderDeferredSSAO			1	1
 RenderShadowDetail			1	2
-RenderFSAASamples			1	8
+RenderFSAASamples			1	2
 
 
 //
@@ -292,6 +298,7 @@ RenderVBOEnable				1	0
 
 list OpenGLPre30
 RenderDeferred				0	0
+RenderMaxTextureIndex		1	1
 
 list Intel
 RenderAnisotropic			1	0
diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt
index 6e962f3c567e2063b1dc4e4710d27dd2a0edcae9..8142311a550d280a8c724358ce7f2d2a28ab3272 100644
--- a/indra/newview/featuretable_linux.txt
+++ b/indra/newview/featuretable_linux.txt
@@ -1,4 +1,8 @@
 version 27
+// The version number above should be implemented IF AND ONLY IF some
+// change has been made that is sufficiently important to justify
+// resetting the graphics preferences of all users to the recommended
+// defaults.  This should be as rare an event as we can manage.
 
 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences
 // Should be combined into one table
@@ -63,6 +67,7 @@ RenderDeferred				1	1
 RenderDeferredSSAO			1	1
 RenderShadowDetail			1	2
 RenderFSAASamples			1	16
+RenderMaxTextureIndex		1	16
 
 //
 // Low Graphics Settings
@@ -153,7 +158,7 @@ WLSkyDetail					1	48
 RenderDeferred				1	0
 RenderDeferredSSAO			1	0
 RenderShadowDetail			1	0
-RenderFSAASamples			1	4
+RenderFSAASamples			1	2
 
 //
 // Ultra graphics (REALLY PURTY!)
@@ -183,7 +188,7 @@ WLSkyDetail					1	128
 RenderDeferred				1	1
 RenderDeferredSSAO			1	1
 RenderShadowDetail			1	2
-RenderFSAASamples			1	8
+RenderFSAASamples			1	2
 
 //
 // Class Unknown Hardware (unknown)
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index 2690e8ec70800fd76b3c8583af315d2f7bbc72f1..942c0430816ae4bed17df51312df2e3d1c37e0fd 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -1,4 +1,8 @@
-version 30
+version 32
+// The version number above should be implemented IF AND ONLY IF some
+// change has been made that is sufficiently important to justify
+// resetting the graphics preferences of all users to the recommended
+// defaults.  This should be as rare an event as we can manage.
 
 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences
 // Should be combined into one table
@@ -47,10 +51,10 @@ RenderTerrainLODFactor			1	2.0
 RenderTransparentWater			1	1
 RenderTreeLODFactor				1	1.0
 RenderUseImpostors				1	1
-RenderVBOEnable					1	0
-RenderVBOMappingDisable		1	0
+RenderVBOEnable					1	1
+RenderVBOMappingDisable			1	1
 RenderVolumeLODFactor			1	2.0
-UseStartScreen				1	1
+UseStartScreen					1	1
 UseOcclusion					1	1
 VertexShaderEnable				1	1
 WindLightUseAtmosShaders		1	1
@@ -63,8 +67,9 @@ RenderDeferred				1	1
 RenderDeferredSSAO			1	1
 RenderShadowDetail			1	2
 WatchdogDisabled				1	1
-RenderUseStreamVBO			1	0
+RenderUseStreamVBO			1	1
 RenderFSAASamples			1	16
+RenderMaxTextureIndex		1	16
 
 //
 // Low Graphics Settings
@@ -155,7 +160,7 @@ WLSkyDetail					1	48
 RenderDeferred				1	0
 RenderDeferredSSAO			1	0
 RenderShadowDetail			1	2
-RenderFSAASamples			1	4
+RenderFSAASamples			1	2
 
 //
 // Ultra graphics (REALLY PURTY!)
@@ -185,7 +190,7 @@ WLSkyDetail					1	128
 RenderDeferred				1	0
 RenderDeferredSSAO			1	0
 RenderShadowDetail			1	2
-RenderFSAASamples			1	8
+RenderFSAASamples			1	2
 
 //
 // Class Unknown Hardware (unknown)
@@ -286,7 +291,7 @@ list TexUnit8orLess
 RenderDeferredSSAO			0	0
 
 list ATI
-RenderDeferredSSAO			0	0
+RenderDeferredSSAO			1	0
 
 list Intel
 RenderAnisotropic			1	0
diff --git a/indra/newview/featuretable_solaris.txt b/indra/newview/featuretable_solaris.txt
index 7df75687f213a96191a5f73edbe2511f943b05cd..e7cae1abdcede63791a93515bbd9ea753fd9477c 100644
--- a/indra/newview/featuretable_solaris.txt
+++ b/indra/newview/featuretable_solaris.txt
@@ -1,4 +1,8 @@
 version 15
+// The version number above should be implemented IF AND ONLY IF some
+// change has been made that is sufficiently important to justify
+// resetting the graphics preferences of all users to the recommended
+// defaults.  This should be as rare an event as we can manage.
 
 // NOTE: This is mostly identical to featuretable.txt with a few differences
 // Should be combined into one table
diff --git a/indra/newview/featuretable_xp.txt b/indra/newview/featuretable_xp.txt
index a0245f5369070dd5ed6fee3f49f594584a6065b6..278d6018600788b3da964d7a00af0943551173c9 100644
--- a/indra/newview/featuretable_xp.txt
+++ b/indra/newview/featuretable_xp.txt
@@ -1,4 +1,8 @@
 version 31
+// The version number above should be implemented IF AND ONLY IF some
+// change has been made that is sufficiently important to justify
+// resetting the graphics preferences of all users to the recommended
+// defaults.  This should be as rare an event as we can manage.
 
 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences
 // Should be combined into one table
@@ -65,6 +69,7 @@ RenderShadowDetail			1	0
 WatchdogDisabled				1	1
 RenderUseStreamVBO			1	1
 RenderFSAASamples			1	16
+RenderMaxTextureIndex		1	16
 
 //
 // Low Graphics Settings
@@ -155,7 +160,7 @@ WLSkyDetail					1	48
 RenderDeferred				1	0
 RenderDeferredSSAO			1	0
 RenderShadowDetail			1	2
-RenderFSAASamples			1	4
+RenderFSAASamples			1	2
 
 //
 // Ultra graphics (REALLY PURTY!)
@@ -185,7 +190,7 @@ WLSkyDetail					1	128
 RenderDeferred				1	0
 RenderDeferredSSAO			1	0
 RenderShadowDetail			1	2
-RenderFSAASamples			1	8
+RenderFSAASamples			1	2
 
 //
 // Class Unknown Hardware (unknown)
@@ -290,6 +295,7 @@ RenderVBOEnable				1	0
 
 list OpenGLPre30
 RenderDeferred				0	0
+RenderMaxTextureIndex		1	1
 
 list Intel
 RenderAnisotropic			1	0
diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt
index 6ed4e3b7f7d9afabd182d15291ddcd60383ce0a3..198e7024593af28e5b0fcf1ec7623cfdcb371eaf 100644
--- a/indra/newview/gpu_table.txt
+++ b/indra/newview/gpu_table.txt
@@ -5,6 +5,10 @@
 // against driver strings, a class number, and whether we claim
 // to support them or not.
 //
+// Case is not significant in either the regular expressions or the
+// driver strings; the recognizer code lowercases both before using
+// them.
+//
 // If you modify this table, use the (perl) gpu_table_tester
 // to compare the results of recognizing known cards (it is easy
 // to mess this up by putting things in the wrong order):
@@ -12,13 +16,13 @@
 // perl ../../scripts/gpu_table_tester -g gpu_table.txt tests/gpus_seen.txt | diff - tests/gpus_results.txt
 //
 // Format:
-//   Fields are separated by one or more tab (not space) characters
-//   <recognizer name>	<regular expression>	<class>		<supported>
+//	 Fields are separated by one or more tab (not space) characters
+//	 <recognizer name>	<regular expression>	<class>		<supported>
 //
 // Class Numbers:
-//		0 - Defaults to low graphics settings.  No shaders on by default
-//		1 - Defaults to mid graphics settings.  Basic shaders on by default
-//		2 - Defaults to high graphics settings.  Atmospherics on by default.
+//		0 - Defaults to low graphics settings.	No shaders on by default
+//		1 - Defaults to mid graphics settings.	Basic shaders on by default
+//		2 - Defaults to high graphics settings.	 Atmospherics on by default.
 //		3 - Same as class 2 for now.
 //
 // Supported Number:
@@ -39,7 +43,8 @@ ATI All-in-Wonder X800			.*ATI.*All-in-Wonder X8.*					2		1
 ATI All-in-Wonder X1800			.*ATI.*All-in-Wonder X18.*					3		1
 ATI All-in-Wonder X1900			.*ATI.*All-in-Wonder X19.*					3		1
 ATI All-in-Wonder PCI-E			.*ATI.*All-in-Wonder.*PCI-E.*				1		1
-ATI All-in-Wonder Radeon 		.*ATI.*All-in-Wonder Radeon.*				0		1
+ATI All-in-Wonder Radeon		.*ATI.*All-in-Wonder Radeon.*				0		1
+ATI ASUS ARES					.*ATI.*ASUS.*ARES.*							3		1
 ATI ASUS A9xxx					.*ATI.*ASUS.*A9.*							1		1
 ATI ASUS AH24xx					.*ATI.*ASUS.*AH24.*							1		1
 ATI ASUS AH26xx					.*ATI.*ASUS.*AH26.*							3		1
@@ -51,6 +56,7 @@ ATI ASUS AX5xx					.*ATI.*ASUS.*AX5.*							1		1
 ATI ASUS AX8xx					.*ATI.*ASUS.*AX8.*							2		1
 ATI ASUS EAH24xx				.*ATI.*ASUS.*EAH24.*						2		1
 ATI ASUS EAH26xx				.*ATI.*ASUS.*EAH26.*						3		1
+ATI ASUS EAH29xx				.*ATI.*ASUS.*EAH29.*						3		1
 ATI ASUS EAH34xx				.*ATI.*ASUS.*EAH34.*						1		1
 ATI ASUS EAH36xx				.*ATI.*ASUS.*EAH36.*						3		1
 ATI ASUS EAH38xx				.*ATI.*ASUS.*EAH38.*						3		1
@@ -59,12 +65,17 @@ ATI ASUS EAH45xx				.*ATI.*ASUS.*EAH45.*						1		1
 ATI ASUS EAH48xx				.*ATI.*ASUS.*EAH48.*						3		1
 ATI ASUS EAH57xx				.*ATI.*ASUS.*EAH57.*						3		1
 ATI ASUS EAH58xx				.*ATI.*ASUS.*EAH58.*						3		1
+ATI ASUS EAH6xxx				.*ATI.*ASUS.*EAH6.*							3		1
 ATI ASUS Radeon X1xxx			.*ATI.*ASUS.*X1.*							3		1
 ATI Radeon X7xx					.*ATI.*ASUS.*X7.*							1		1
-ATI Radeon X1xxx				.*ATI.*X1.*									0		1
-ATI Radeon X13xx				.*ATI.*Diamond X13.*						1		1
-ATI Radeon X16xx				.*ATI.*Diamond X16.*						1		1
-ATI Radeon X19xx				.*ATI.*Diamond X19.*						1		1
+ATI Radeon X19xx				.*ATI.*(Radeon|Diamond) X19.* ?.*			3		1
+ATI Radeon X18xx				.*ATI.*(Radeon|Diamond) X18.* ?.*			3		1
+ATI Radeon X17xx				.*ATI.*(Radeon|Diamond) X17.* ?.*			2		1
+ATI Radeon X16xx				.*ATI.*(Radeon|Diamond) X16.* ?.*			2		1
+ATI Radeon X15xx				.*ATI.*(Radeon|Diamond) X15.* ?.*			2		1
+ATI Radeon X13xx				.*ATI.*(Radeon|Diamond) X13.* ?.*			1		1
+ATI Radeon X1xxx				.*ATI.*(Radeon|Diamond) X1.. ?.*			1		1
+ATI Radeon X2xxx				.*ATI.*(Radeon|Diamond) X2.. ?.*			1		1
 ATI Display Adapter				.*ATI.*display adapter.*					0		1
 ATI FireGL 5200					.*ATI.*FireGL V52.*							0		1
 ATI FireGL 5xxx					.*ATI.*FireGL V5.*							1		1
@@ -74,8 +85,9 @@ ATI FirePro M5800				.*ATI.*FirePro.*M58.*						3		1
 ATI FirePro M7740				.*ATI.*FirePro.*M77.*						3		1
 ATI FirePro M7820				.*ATI.*FirePro.*M78.*						3		1
 ATI FireMV						.*ATI.*FireMV.*								0		1
-ATI Geforce 9500 GT				.*ATI.*Geforce 9500 *GT						2		1
-ATI Geforce 9800 GT				.*ATI.*Geforce 9800 *GT						2		1
+ATI Geforce 9500 GT				.*ATI.*Geforce 9500 *GT.*					2		1
+ATI Geforce 9600 GT				.*ATI.*Geforce 9600 *GT.*					2		1
+ATI Geforce 9800 GT				.*ATI.*Geforce 9800 *GT.*					2		1
 ATI Generic						.*ATI.*Generic.*							0		0
 ATI Hercules 9800				.*ATI.*Hercules.*9800.*						1		1
 ATI IGP 340M					.*ATI.*IGP.*340M.*							0		0
@@ -85,168 +97,156 @@ ATI M56							.*ATI.*M56.*								1		1
 ATI M71							.*ATI.*M71.*								1		1
 ATI M72							.*ATI.*M72.*								1		1
 ATI M76							.*ATI.*M76.*								3		1
-ATI Mobility Radeon 4100		.*ATI.*(Mobility|MOBILITY).*41.*			0		1
-ATI Mobility Radeon 7xxx		.*ATI.*(Mobility|MOBILITY).*Radeon 7.*		0		1
-ATI Mobility Radeon 8xxx		.*ATI.*(Mobility|MOBILITY).*Radeon 8.*		0		1
-ATI Mobility Radeon 9800		.*ATI.*(Mobility|MOBILITY).*98.*			1		1
-ATI Mobility Radeon 9700		.*ATI.*(Mobility|MOBILITY).*97.*			1		1
-ATI Mobility Radeon 9600		.*ATI.*(Mobility|MOBILITY).*96.*			0		1
-ATI Mobility Radeon HD 530v		.*ATI.*(Mobility|MOBILITY).*HD *530v.*		1		1
-ATI Mobility Radeon HD 540v		.*ATI.*(Mobility|MOBILITY).*HD *540v.*		2		1
-ATI Mobility Radeon HD 545v		.*ATI.*(Mobility|MOBILITY).*HD *545v.*		2		1
-ATI Mobility Radeon HD 550v		.*ATI.*(Mobility|MOBILITY).*HD *550v.*		2		1
-ATI Mobility Radeon HD 560v		.*ATI.*(Mobility|MOBILITY).*HD *560v.*		2		1
-ATI Mobility Radeon HD 565v		.*ATI.*(Mobility|MOBILITY).*HD *565v.*		2		1
-ATI Mobility Radeon HD 2300		.*ATI.*(Mobility|MOBILITY).*HD *23.*		1		1
-ATI Mobility Radeon HD 2400		.*ATI.*(Mobility|MOBILITY).*HD *24.*		1		1
-ATI Mobility Radeon HD 2600		.*ATI.*(Mobility|MOBILITY).*HD *26.*		3		1
-ATI Mobility Radeon HD 2700		.*ATI.*(Mobility|MOBILITY).*HD *27.*		3		1
-ATI Mobility Radeon HD 3100		.*ATI.*(Mobility|MOBILITY).*HD *31.*		0		1
-ATI Mobility Radeon HD 3200		.*ATI.*(Mobility|MOBILITY).*HD *32.*		0		1
-ATI Mobility Radeon HD 3400		.*ATI.*(Mobility|MOBILITY).*HD *34.*		2		1
-ATI Mobility Radeon HD 3600		.*ATI.*(Mobility|MOBILITY).*HD *36.*		3		1
-ATI Mobility Radeon HD 3800		.*ATI.*(Mobility|MOBILITY).*HD *38.*		3		1
-ATI Mobility Radeon HD 4200		.*ATI.*(Mobility|MOBILITY).*HD *42.*		2		1
-ATI Mobility Radeon HD 4300		.*ATI.*(Mobility|MOBILITY).*HD *43.*		2		1
-ATI Mobility Radeon HD 4500		.*ATI.*(Mobility|MOBILITY).*HD *45.*		3		1
-ATI Mobility Radeon HD 4600		.*ATI.*(Mobility|MOBILITY).*HD *46.*		3		1
-ATI Mobility Radeon HD 4800		.*ATI.*(Mobility|MOBILITY).*HD *48.*		3		1
-ATI Mobility Radeon HD 5100		.*ATI.*(Mobility|MOBILITY).*HD *51.*		2		1
-ATI Mobility Radeon HD 5300		.*ATI.*(Mobility|MOBILITY).*HD *53.*		2		1
-ATI Mobility Radeon HD 5400		.*ATI.*(Mobility|MOBILITY).*HD *54.*		2		1
-ATI Mobility Radeon HD 5500		.*ATI.*(Mobility|MOBILITY).*HD *55.*		2		1
-ATI Mobility Radeon HD 5600		.*ATI.*(Mobility|MOBILITY).*HD *56.*		2		1
-ATI Mobility Radeon HD 5700		.*ATI.*(Mobility|MOBILITY).*HD *57.*		3		1
-ATI Mobility Radeon HD 6200		.*ATI.*(Mobility|MOBILITY).*HD *62.*		2		1
-ATI Mobility Radeon HD 6300		.*ATI.*(Mobility|MOBILITY).*HD *63.*		2		1
-ATI Mobility Radeon HD 6400M	.*ATI.*(Mobility|MOBILITY).*HD *64.*		3		1
-ATI Mobility Radeon HD 6500M	.*ATI.*(Mobility|MOBILITY).*HD *65.*		3		1
-ATI Mobility Radeon HD 6600M	.*ATI.*(Mobility|MOBILITY).*HD *66.*		3		1
-ATI Mobility Radeon HD 6700M	.*ATI.*(Mobility|MOBILITY).*HD *67.*		3		1
-ATI Mobility Radeon HD 6800M	.*ATI.*(Mobility|MOBILITY).*HD *68.*		3		1
-ATI Mobility Radeon HD 6900M	.*ATI.*(Mobility|MOBILITY).*HD *69.*		3		1
-ATI Mobility Radeon X1xxx		.*ATI.*(Mobility|MOBILITY).*X1.*			0		1
-ATI Mobility Radeon X2xxx		.*ATI.*(Mobility|MOBILITY).*X2.*			0		1
-ATI Mobility Radeon X3xx		.*ATI.*(Mobility|MOBILITY).*X3.*			1		1
-ATI Mobility Radeon X6xx		.*ATI.*(Mobility|MOBILITY).*X6.*			1		1
-ATI Mobility Radeon X7xx		.*ATI.*(Mobility|MOBILITY).*X7.*			1		1
-ATI Mobility Radeon Xxxx		.*ATI.*(Mobility|MOBILITY).*X.*				0		1
-ATI Mobility Radeon				.*ATI.*(Mobility|MOBILITY).*				0		1
-ATI Radeon HD 2300				.*ATI.*(Radeon|RADEON) HD *23.*				0		1
-ATI Radeon HD 2400				.*ATI.*(Radeon|RADEON) HD *24.*				1		1
-ATI Radeon HD 2600				.*ATI.*(Radeon|RADEON) HD *26.*				2		1
-ATI Radeon HD 2900				.*ATI.*(Radeon|RADEON) HD *29.*				3		1
-ATI Radeon HD 3000				.*ATI.*(Radeon|RADEON) HD *30.*				0		1
-ATI Radeon HD 3100				.*ATI.*(Radeon|RADEON) HD *31.*				1		1
-ATI Radeon HD 3200				.*ATI.*(Radeon|RADEON) HD *32.*				0		1
-ATI Radeon HD 3300				.*ATI.*(Radeon|RADEON) HD *33.*				1		1
-ATI Radeon HD 3400				.*ATI.*(Radeon|RADEON) HD *34.*				1		1
-ATI Radeon HD 3500				.*ATI.*(Radeon|RADEON) HD *35.*				1		1
-ATI Radeon HD 3600				.*ATI.*(Radeon|RADEON) HD *36.*				3		1
-ATI Radeon HD 3700				.*ATI.*(Radeon|RADEON) HD *37.*				3		1
-ATI Radeon HD 3800				.*ATI.*(Radeon|RADEON) HD *38.*				3		1
-ATI Radeon HD 4200				.*ATI.*(Radeon|RADEON) HD *42.*				1		1
-ATI Radeon HD 4300				.*ATI.*(Radeon|RADEON) HD *43.*				1		1
-ATI Radeon HD 4400				.*ATI.*(Radeon|RADEON) HD *44.*				1		1
-ATI Radeon HD 4500				.*ATI.*(Radeon|RADEON) HD *45.*				3		1
-ATI Radeon HD 4600				.*ATI.*(Radeon|RADEON) HD *46.*				3		1
-ATI Radeon HD 4700				.*ATI.*(Radeon|RADEON) HD *47.*				3		1
-ATI Radeon HD 4800				.*ATI.*(Radeon|RADEON) HD *48.*				3		1
-ATI Radeon HD 5400				.*ATI.*(Radeon|RADEON) HD *54.*				3		1
-ATI Radeon HD 5500				.*ATI.*(Radeon|RADEON) HD *55.*				3		1
-ATI Radeon HD 5600				.*ATI.*(Radeon|RADEON) HD *56.*				3		1
-ATI Radeon HD 5700				.*ATI.*(Radeon|RADEON) HD *57.*				3		1
-ATI Radeon HD 5800				.*ATI.*(Radeon|RADEON) HD *58.*				3		1
-ATI Radeon HD 5900				.*ATI.*(Radeon|RADEON) HD *59.*				3		1
-ATI Radeon HD 6200				.*ATI.*(Radeon|RADEON) HD *62.*				2		1
-ATI Radeon HD 6300				.*ATI.*(Radeon|RADEON) HD *63.*				2		1
-ATI Radeon HD 6400				.*ATI.*(Radeon|RADEON) HD *64.*				3		1
-ATI Radeon HD 6500				.*ATI.*(Radeon|RADEON) HD *65.*				3		1
-ATI Radeon HD 66xx				.*ATI.*(Radeon|RADEON) HD *66.*				3		1
-ATI Radeon HD 6700				.*ATI.*(Radeon|RADEON) HD *67.*				3		1
-ATI Radeon HD 6800				.*ATI.*(Radeon|RADEON) HD *68.*				3		1
-ATI Radeon HD 6900				.*ATI.*(Radeon|RADEON) HD *69.*				3		1
-ATI Radeon OpenGL				.*ATI.*(Radeon|RADEON) OpenGL.* 			0		0
-ATI Radeon 2100					.*ATI.*(Radeon|RADEON) 21.*					0		1
-ATI Radeon 3000					.*ATI.*(Radeon|RADEON) 30.*					0		1
-ATI Radeon 3100					.*ATI.*(Radeon|RADEON) 31.*					1		1
-ATI Radeon 5xxx					.*ATI.*(Radeon|RADEON) 5.*					3		1
-ATI Radeon 7xxx					.*ATI.*(Radeon|RADEON) 7.*					0		1
-ATI Radeon 8xxx					.*ATI.*(Radeon|RADEON) 8.*					0		1
-ATI Radeon 9000					.*ATI.*(Radeon|RADEON) 90.*					0		1
-ATI Radeon 9100					.*ATI.*(Radeon|RADEON) 91.*					0		1
-ATI Radeon 9200					.*ATI.*(Radeon|RADEON) 92.*					0		1
-ATI Radeon 9500					.*ATI.*(Radeon|RADEON) 95.*					0		1
-ATI Radeon 9600					.*ATI.*(Radeon|RADEON) 96.*					0		1
-ATI Radeon 9700					.*ATI.*(Radeon|RADEON) 97.*					1		1
-ATI Radeon 9800					.*ATI.*(Radeon|RADEON) 98.*					1		1
+ATI Radeon HD 64xx				.*ATI.*AMD Radeon.* HD [67]4..[MG]			3		1
+ATI Radeon HD 65xx				.*ATI.*AMD Radeon.* HD [67]5..[MG]			3		1
+ATI Radeon HD 66xx				.*ATI.*AMD Radeon.* HD [67]6..[MG]			3		1
+ATI Mobility Radeon 4100		.*ATI.*Mobility.*41..						1		1
+ATI Mobility Radeon 7xxx		.*ATI.*Mobility.*Radeon 7.*					0		1
+ATI Mobility Radeon 8xxx		.*ATI.*Mobility.*Radeon 8.*					0		1
+ATI Mobility Radeon 9800		.*ATI.*Mobility.*98.*						1		1
+ATI Mobility Radeon 9700		.*ATI.*Mobility.*97.*						1		1
+ATI Mobility Radeon 9600		.*ATI.*Mobility.*96.*						0		1
+ATI Mobility Radeon HD 530v		.*ATI.*Mobility.*HD *530v.*					1		1
+ATI Mobility Radeon HD 540v		.*ATI.*Mobility.*HD *540v.*					2		1
+ATI Mobility Radeon HD 545v		.*ATI.*Mobility.*HD *545v.*					2		1
+ATI Mobility Radeon HD 550v		.*ATI.*Mobility.*HD *550v.*					2		1
+ATI Mobility Radeon HD 560v		.*ATI.*Mobility.*HD *560v.*					2		1
+ATI Mobility Radeon HD 565v		.*ATI.*Mobility.*HD *565v.*					2		1
+ATI Mobility Radeon HD 2300		.*ATI.*Mobility.*HD *23.*					2		1
+ATI Mobility Radeon HD 2400		.*ATI.*Mobility.*HD *24.*					2		1
+ATI Mobility Radeon HD 2600		.*ATI.*Mobility.*HD *26.*					3		1
+ATI Mobility Radeon HD 2700		.*ATI.*Mobility.*HD *27.*					3		1
+ATI Mobility Radeon HD 3100		.*ATI.*Mobility.*HD *31.*					0		1
+ATI Mobility Radeon HD 3200		.*ATI.*Mobility.*HD *32.*					0		1
+ATI Mobility Radeon HD 3400		.*ATI.*Mobility.*HD *34.*					2		1
+ATI Mobility Radeon HD 3600		.*ATI.*Mobility.*HD *36.*					3		1
+ATI Mobility Radeon HD 3800		.*ATI.*Mobility.*HD *38.*					3		1
+ATI Mobility Radeon HD 4200		.*ATI.*Mobility.*HD *42.*					2		1
+ATI Mobility Radeon HD 4300		.*ATI.*Mobility.*HD *43.*					2		1
+ATI Mobility Radeon HD 4500		.*ATI.*Mobility.*HD *45.*					3		1
+ATI Mobility Radeon HD 4600		.*ATI.*Mobility.*HD *46.*					3		1
+ATI Mobility Radeon HD 4800		.*ATI.*Mobility.*HD *48.*					3		1
+ATI Mobility Radeon HD 5100		.*ATI.*Mobility.*HD *51.*					3		1
+ATI Mobility Radeon HD 5300		.*ATI.*Mobility.*HD *53.*					3		1
+ATI Mobility Radeon HD 5400		.*ATI.*Mobility.*HD *54.*					3		1
+ATI Mobility Radeon HD 5500		.*ATI.*Mobility.*HD *55.*					3		1
+ATI Mobility Radeon HD 5600		.*ATI.*Mobility.*HD *56.*					3		1
+ATI Mobility Radeon HD 5700		.*ATI.*Mobility.*HD *57.*					3		1
+ATI Mobility Radeon HD 6200		.*ATI.*Mobility.*HD *62.*					3		1
+ATI Mobility Radeon HD 6300		.*ATI.*Mobility.*HD *63.*					3		1
+ATI Mobility Radeon HD 6400M	.*ATI.*Mobility.*HD *64.*					3		1
+ATI Mobility Radeon HD 6500M	.*ATI.*Mobility.*HD *65.*					3		1
+ATI Mobility Radeon HD 6600M	.*ATI.*Mobility.*HD *66.*					3		1
+ATI Mobility Radeon HD 6700M	.*ATI.*Mobility.*HD *67.*					3		1
+ATI Mobility Radeon HD 6800M	.*ATI.*Mobility.*HD *68.*					3		1
+ATI Mobility Radeon HD 6900M	.*ATI.*Mobility.*HD *69.*					3		1
+ATI Radeon HD 2300				.*ATI.*Radeon HD *23..						2		1
+ATI Radeon HD 2400				.*ATI.*Radeon HD *24..						2		1
+ATI Radeon HD 2600				.*ATI.*Radeon HD *26..						2		1
+ATI Radeon HD 2900				.*ATI.*Radeon HD *29..						3		1
+ATI Radeon HD 3000				.*ATI.*Radeon HD *30..						0		1
+ATI Radeon HD 3100				.*ATI.*Radeon HD *31..						1		1
+ATI Radeon HD 3200				.*ATI.*Radeon HD *32..						1		1
+ATI Radeon HD 3300				.*ATI.*Radeon HD *33..						2		1
+ATI Radeon HD 3400				.*ATI.*Radeon HD *34..						2		1
+ATI Radeon HD 3500				.*ATI.*Radeon HD *35..						2		1
+ATI Radeon HD 3600				.*ATI.*Radeon HD *36..						3		1
+ATI Radeon HD 3700				.*ATI.*Radeon HD *37..						3		1
+ATI Radeon HD 3800				.*ATI.*Radeon HD *38..						3		1
+ATI Radeon HD 4100				.*ATI.*Radeon HD *41..						1		1
+ATI Radeon HD 4200				.*ATI.*Radeon HD *42..						1		1
+ATI Radeon HD 4300				.*ATI.*Radeon HD *43..						2		1
+ATI Radeon HD 4400				.*ATI.*Radeon HD *44..						2		1
+ATI Radeon HD 4500				.*ATI.*Radeon HD *45..						3		1
+ATI Radeon HD 4600				.*ATI.*Radeon HD *46..						3		1
+ATI Radeon HD 4700				.*ATI.*Radeon HD *47..						3		1
+ATI Radeon HD 4800				.*ATI.*Radeon HD *48..						3		1
+ATI Radeon HD 5400				.*ATI.*Radeon HD *54..						3		1
+ATI Radeon HD 5500				.*ATI.*Radeon HD *55..						3		1
+ATI Radeon HD 5600				.*ATI.*Radeon HD *56..						3		1
+ATI Radeon HD 5700				.*ATI.*Radeon HD *57..						3		1
+ATI Radeon HD 5800				.*ATI.*Radeon HD *58..						3		1
+ATI Radeon HD 5900				.*ATI.*Radeon HD *59..						3		1
+ATI Radeon HD 6200				.*ATI.*Radeon HD *62..						3		1
+ATI Radeon HD 6300				.*ATI.*Radeon HD *63..						3		1
+ATI Radeon HD 6400				.*ATI.*Radeon HD *64..						3		1
+ATI Radeon HD 6500				.*ATI.*Radeon HD *65..						3		1
+ATI Radeon HD 6600				.*ATI.*Radeon HD *66..						3		1
+ATI Radeon HD 6700				.*ATI.*Radeon HD *67..						3		1
+ATI Radeon HD 6800				.*ATI.*Radeon HD *68..						3		1
+ATI Radeon HD 6900				.*ATI.*Radeon HD *69..						3		1
+ATI Radeon OpenGL				.*ATI.*Radeon OpenGL.*						0		0
+ATI Radeon 2100					.*ATI.*Radeon 21..							0		1
+ATI Radeon 3000					.*ATI.*Radeon 30..							0		1
+ATI Radeon 3100					.*ATI.*Radeon 31..							1		1
+ATI Radeon 5xxx					.*ATI.*Radeon 5...							3		1
+ATI Radeon 7xxx					.*ATI.*Radeon 7...							0		1
+ATI Radeon 8xxx					.*ATI.*Radeon 8...							0		1
+ATI Radeon 9000					.*ATI.*Radeon 90..							0		1
+ATI Radeon 9100					.*ATI.*Radeon 91..							0		1
+ATI Radeon 9200					.*ATI.*Radeon 92..							0		1
+ATI Radeon 9500					.*ATI.*Radeon 95..							0		1
+ATI Radeon 9600					.*ATI.*Radeon 96..							0		1
+ATI Radeon 9700					.*ATI.*Radeon 97..							1		1
+ATI Radeon 9800					.*ATI.*Radeon 98..							1		1
 ATI Radeon RV250				.*ATI.*RV250.*								0		1
 ATI Radeon RV600				.*ATI.*RV6.*								1		1
 ATI Radeon RX700				.*ATI.*RX70.*								1		1
-ATI Radeon RX800				.*ATI.*(Radeon|RADEON) *RX80.*				2		1
+ATI Radeon RX800				.*ATI.*Radeon *RX80.*						2		1
 ATI RS880M						.*ATI.*RS880M								1		1
 ATI Radeon RX9550				.*ATI.*RX9550.*								1		1
-ATI Radeon VE					.*ATI.*(Radeon|RADEON).*VE.*				0		0
-ATI Radeon X1000				.*ATI.*(Radeon|RADEON) *X10.*				0		1
-ATI Radeon X1200				.*ATI.*(Radeon|RADEON) *X12.*				0		1
-ATI Radeon X1300				.*ATI.*(Radeon|RADEON) *X13.*				1		1
-ATI Radeon X1400				.*ATI.*(Radeon|RADEON) *X14.*				1		1
-ATI Radeon X1500				.*ATI.*(Radeon|RADEON) *X15.*				1		1
-ATI Radeon X1600				.*ATI.*(Radeon|RADEON) *X16.*				1		1
-ATI Radeon X1700				.*ATI.*(Radeon|RADEON) *X17.*				1		1
-ATI Radeon X1800				.*ATI.*(Radeon|RADEON) *X18.*				3		1
-ATI Radeon X1900				.*ATI.*(Radeon|RADEON) *X19.*				3		1
-ATI Radeon X300					.*ATI.*(Radeon|RADEON) *X3.*				0		1
-ATI Radeon X400					.*ATI.*(Radeon|RADEON) X4.*					0		1
-ATI Radeon X500					.*ATI.*(Radeon|RADEON) X5.*					0		1
-ATI Radeon X600					.*ATI.*(Radeon|RADEON) X6.*					1		1
-ATI Radeon X700					.*ATI.*(Radeon|RADEON) X7.*					1		1
-ATI Radeon X800					.*ATI.*(Radeon|RADEON) X8.*					2		1
-ATI Radeon X900					.*ATI.*(Radeon|RADEON) X9.*					2		1
-ATI Radeon Xpress				.*ATI.*(Radeon|RADEON) (Xpress|XPRESS).*	0		1
+ATI Radeon VE					.*ATI.*Radeon.*VE.*							0		0
+ATI Radeon X300					.*ATI.*Radeon *X3.*							0		1
+ATI Radeon X400					.*ATI.*Radeon ?X4.*							0		1
+ATI Radeon X500					.*ATI.*Radeon ?X5.*							0		1
+ATI Radeon X600					.*ATI.*Radeon ?X6.*							1		1
+ATI Radeon X700					.*ATI.*Radeon ?X7.*							1		1
+ATI Radeon X800					.*ATI.*Radeon ?X8.*							2		1
+ATI Radeon X900					.*ATI.*Radeon ?X9.*							2		1
+ATI Radeon Xpress				.*ATI.*Radeon Xpress.*						0		1
 ATI Rage 128					.*ATI.*Rage 128.*							0		1
-ATI R350 (9800)					.*(ATI)?.*R350.*							1		1
-ATI R580 (X1900)				.*(ATI)?.*R580.*							3		1
-ATI RC410 (Xpress 200)			.*(ATI)?.*RC410.*							0		0
-ATI RS48x (Xpress 200x)			.*(ATI)?.*RS48.*							0		0
-ATI RS600 (Xpress 3200)			.*(ATI)?.*RS600.*							0		0
-ATI RV350 (9600)				.*(ATI)?.*RV350.*							0		1
-ATI RV370 (X300)				.*(ATI)?.*RV370.*							0		1
-ATI RV410 (X700)				.*(ATI)?.*RV410.*							1		1
-ATI RV515						.*(ATI)?.*RV515.*							1		1
-ATI RV570 (X1900 GT/PRO)		.*(ATI)?.*RV570.*							3		1
-ATI RV380						.*(ATI)?.*RV380.*							0		1
-ATI RV530						.*(ATI)?.*RV530.*							1		1
-ATI RX480 (Xpress 200P)			.*(ATI)?.*RX480.*							0		1
-ATI RX700						.*(ATI)?.*RX700.*							1		1
-AMD ANTILLES (HD 6990)			.*(AMD|ATI).*(Antilles|ANTILLES).*			3		1
-AMD BARTS (HD 6800)				.*(AMD|ATI).*(Barts|BARTS).*				3		1
-AMD CAICOS (HD 6400)			.*(AMD|ATI).*(Caicos|CAICOS).*				3		1
+ATI R350 (9800)					.*R350.*									1		1
+ATI R580 (X1900)				.*R580.*									3		1
+ATI RC410 (Xpress 200)			.*RC410.*									0		0
+ATI RS48x (Xpress 200x)			.*RS48.*									0		0
+ATI RS600 (Xpress 3200)			.*RS600.*									0		0
+ATI RV350 (9600)				.*RV350.*									0		1
+ATI RV370 (X300)				.*RV370.*									0		1
+ATI RV410 (X700)				.*RV410.*									1		1
+ATI RV515						.*RV515.*									1		1
+ATI RV570 (X1900 GT/PRO)		.*RV570.*									3		1
+ATI RV380						.*RV380.*									0		1
+ATI RV530						.*RV530.*									1		1
+ATI RX480 (Xpress 200P)			.*RX480.*									0		1
+ATI RX700						.*RX700.*									1		1
+AMD ANTILLES (HD 6990)			.*(AMD|ATI).*Antilles.*						3		1
+AMD BARTS (HD 6800)				.*(AMD|ATI).*Barts.*						3		1
+AMD CAICOS (HD 6400)			.*(AMD|ATI).*Caicos.*						3		1
 AMD CAYMAN (HD 6900)			.*(AMD|ATI).*(Cayman|CAYMAM).*				3		1
-AMD CEDAR (HD 5450)				.*(AMD|ATI).*(Cedar|CEDAR).*				2		1
-AMD CYPRESS (HD 5800)			.*(AMD|ATI).*(Cypress|CYPRESS).*			3		1
-AMD HEMLOCK (HD 5970)			.*(AMD|ATI).*(Hemlock|HEMLOCK).*			3		1
-AMD JUNIPER (HD 5700)			.*(AMD|ATI).*(Juniper|JUNIPER).*			3		1
-AMD PARK						.*(AMD|ATI).*(Park|PARK).*					3		1
-AMD REDWOOD (HD 5500/5600)		.*(AMD|ATI).*(Redwood|REDWOOD).*			3		1
-AMD TURKS (HD 6500/6600)		.*(AMD|ATI).*(Turks|TURKS).*				3		1
-AMD RS780 (HD 3200)				.*(AMD|ATI)?.*RS780.*						0		1
-AMD RS880 (HD 4200)				.*(AMD|ATI)?.*RS880.*						1		1
-AMD RV610 (HD 2400)				.*(AMD|ATI)?.*RV610.*						1		1
-AMD RV620 (HD 3400)				.*(AMD|ATI)?.*RV620.*						1		1
-AMD RV630 (HD 2600)				.*(AMD|ATI)?.*RV630.*						2		1
-AMD RV635 (HD 3600)				.*(AMD|ATI)?.*RV635.*						3		1
-AMD RV670 (HD 3800)				.*(AMD|ATI)?.*RV670.*						3		1
-AMD R680 (HD 3870 X2)			.*(AMD|ATI)?.*R680.*						3		1
-AMD R700 (HD 4800 X2)			.*(AMD|ATI)?.*R700.*						3		1
-AMD RV710 (HD 4300)				.*(AMD|ATI)?.*RV710.*						1		1
-AMD RV730 (HD 4600)				.*(AMD|ATI)?.*RV730.*						3		1
-AMD RV740 (HD 4700)				.*(AMD|ATI)?.*RV740.*						3		1
-AMD RV770 (HD 4800)				.*(AMD|ATI)?.*RV770.*						3		1
-AMD RV790 (HD 4800)				.*(AMD|ATI)?.*RV790.*						3		1
+AMD CEDAR (HD 5450)				.*(AMD|ATI).*Cedar.*						2		1
+AMD CYPRESS (HD 5800)			.*(AMD|ATI).*Cypress.*						3		1
+AMD HEMLOCK (HD 5970)			.*(AMD|ATI).*Hemlock.*						3		1
+AMD JUNIPER (HD 5700)			.*(AMD|ATI).*Juniper.*						3		1
+AMD PARK						.*(AMD|ATI).*Park.*							3		1
+AMD REDWOOD (HD 5500/5600)		.*(AMD|ATI).*Redwood.*						3		1
+AMD TURKS (HD 6500/6600)		.*(AMD|ATI).*Turks.*						3		1
+AMD RS780 (HD 3200)				.*RS780.*									0		1
+AMD RS880 (HD 4200)				.*RS880.*									1		1
+AMD RV610 (HD 2400)				.*RV610.*									1		1
+AMD RV620 (HD 3400)				.*RV620.*									1		1
+AMD RV630 (HD 2600)				.*RV630.*									2		1
+AMD RV635 (HD 3600)				.*RV635.*									3		1
+AMD RV670 (HD 3800)				.*RV670.*									3		1
+AMD R680 (HD 3870 X2)			.*R680.*									3		1
+AMD R700 (HD 4800 X2)			.*R700.*									3		1
+AMD RV710 (HD 4300)				.*RV710.*									1		1
+AMD RV730 (HD 4600)				.*RV730.*									3		1
+AMD RV740 (HD 4700)				.*RV740.*									3		1
+AMD RV770 (HD 4800)				.*RV770.*									3		1
+AMD RV790 (HD 4800)				.*RV790.*									3		1
 ATI 760G/Radeon 3000			.*ATI.*AMD 760G.*							1		1
 ATI 780L/Radeon 3000			.*ATI.*AMD 780L.*							1		1
-ATI Radeon DDR					.*ATI.*(Radeon|RADEON) ?DDR.*				0		1
+ATI Radeon DDR					.*ATI.*Radeon ?DDR.*						0		1
 ATI FirePro 2000				.*ATI.*FirePro 2.*							1		1
 ATI FirePro 3000				.*ATI.*FirePro V3.*							1		1
 ATI FirePro 4000				.*ATI.*FirePro V4.*							2		1
@@ -255,8 +255,8 @@ ATI FirePro 7000				.*ATI.*FirePro V7.*							3		1
 ATI FirePro M					.*ATI.*FirePro M.*							3		1
 ATI Technologies				.*ATI *Technologies.*						0		1
 // This entry is last to work around the "R300" driver problem.
-ATI R300 (9700)					.*(ATI)?.*R300.*							1		1
-ATI Radeon 						.*ATI.*Radeon.*								0		1
+ATI R300 (9700)					.*R300.*									1		1
+ATI Radeon						.*ATI.*(Diamond|Radeon).*					0		1
 Intel X3100						.*Intel.*X3100.*							0		1
 Intel 830M						.*Intel.*830M								0		0
 Intel 845G						.*Intel.*845G								0		0
@@ -273,13 +273,13 @@ Intel G33						.*Intel.*G33.*								0		0
 Intel G41						.*Intel.*G41.*								0		1
 Intel G45						.*Intel.*G45.*								0		1
 Intel Bear Lake					.*Intel.*Bear Lake.*						0		0
-Intel Broadwater 				.*Intel.*Broadwater.*						0		0
+Intel Broadwater				.*Intel.*Broadwater.*						0		0
 Intel Brookdale					.*Intel.*Brookdale.*						0		0
 Intel Cantiga					.*Intel.*Cantiga.*							0		0
 Intel Eaglelake					.*Intel.*Eaglelake.*						0		1
 Intel Graphics Media HD			.*Intel.*Graphics Media.*HD.*				0		1
 Intel HD Graphics				.*Intel.*HD Graphics.*						2		1
-Intel Mobile 4 Series			.*Intel.*Mobile *4 Series.*					0		1
+Intel Mobile 4 Series			.*Intel.*Mobile.* 4 Series.*				0		1
 Intel Media Graphics HD			.*Intel.*Media Graphics HD.*				0		1
 Intel Montara					.*Intel.*Montara.*							0		0
 Intel Pineview					.*Intel.*Pineview.*							0		1
@@ -288,204 +288,219 @@ Intel HD Graphics 2000			.*Intel.*HD2000.*							1		1
 Intel HD Graphics 3000			.*Intel.*HD3000.*							2		1
 Matrox							.*Matrox.*									0		0
 Mesa							.*Mesa.*									0		0
-NVIDIA 205						.*NVIDIA.*GeForce 205.*						2		1
-NVIDIA 210						.*NVIDIA.*GeForce 210.*						2		1
-NVIDIA 310M						.*NVIDIA.*GeForce 310M.*					1		1
-NVIDIA 310						.*NVIDIA.*GeForce 310.*						3		1
-NVIDIA 315M						.*NVIDIA.*GeForce 315M.*					2		1
-NVIDIA 315						.*NVIDIA.*GeForce 315.*						3		1
-NVIDIA 320M						.*NVIDIA.*GeForce 320M.*					2		1
-NVIDIA G100M					.*NVIDIA *(GeForce)? *(G)? ?100M.*			0		1
-NVIDIA G100						.*NVIDIA *(GeForce)? *(G)? ?100.*			0		1
-NVIDIA G102M					.*NVIDIA *(GeForce)? *(G)? ?102M.*			0		1
-NVIDIA G103M					.*NVIDIA *(GeForce)? *(G)? ?103M.*			0		1
-NVIDIA G105M					.*NVIDIA *(GeForce)? *(G)? ?105M.*			0		1
-NVIDIA G 110M					.*NVIDIA *(GeForce)? *(G)? ?110M.*			0		1
-NVIDIA G 120M					.*NVIDIA *(GeForce)? *(G)? ?120M.*			1		1
-NVIDIA G 200					.*NVIDIA *(GeForce)? *(G)? ?200(M)?.*		0		1
-NVIDIA G 205M					.*NVIDIA *(GeForce)? *(G)? ?205(M)?.*		0		1
-NVIDIA G 210					.*NVIDIA *(GeForce)? *(G)? ?210(M)?.*		1		1
-NVIDIA 305M						.*NVIDIA *(GeForce)? *(G)? ?305(M)?.*		1		1
-NVIDIA G 310M					.*NVIDIA *(GeForce)? *(G)? ?310(M)?.*		2		1
-NVIDIA G 315					.*NVIDIA *(GeForce)? *(G)? ?315(M)?.*		2		1
-NVIDIA G 320M					.*NVIDIA *(GeForce)? *(G)? ?320(M)?.*		2		1
-NVIDIA G 405					.*NVIDIA *(GeForce)? *(G)? ?405(M)?.*		1		1
-NVIDIA G 410M					.*NVIDIA *(GeForce)? *(G)? ?410(M)?.*		1		1
-NVIDIA GT 120M					.*NVIDIA.*(GeForce)? *GT *120(M)?.*			2		1
-NVIDIA GT 120					.*NVIDIA.*GT.*120							2		1
-NVIDIA GT 130M					.*NVIDIA.*(GeForce)? *GT *130(M)?.*			2		1
-NVIDIA GT 140M					.*NVIDIA.*(GeForce)? *GT *140(M)?.*			2		1
-NVIDIA GT 150M					.*NVIDIA.*(GeForce)? *GT(S)? *150(M)?.*		2		1
-NVIDIA GT 160M					.*NVIDIA.*(GeForce)? *GT *160(M)?.*			2		1
-NVIDIA GT 220M					.*NVIDIA.*(GeForce)? *GT *220(M)?.*			2		1
-NVIDIA GT 230M					.*NVIDIA.*(GeForce)? *GT *230(M)?.*			2		1
-NVIDIA GT 240M					.*NVIDIA.*(GeForce)? *GT *240(M)?.*			2		1
-NVIDIA GT 250M					.*NVIDIA.*(GeForce)? *GT *250(M)?.*			2		1
-NVIDIA GT 260M					.*NVIDIA.*(GeForce)? *GT *260(M)?.*			2		1
-NVIDIA GT 320M					.*NVIDIA.*(GeForce)? *GT *320(M)?.*			2		1
-NVIDIA GT 325M					.*NVIDIA.*(GeForce)? *GT *325(M)?.*			0		1
-NVIDIA GT 330M					.*NVIDIA.*(GeForce)? *GT *330(M)?.*			3		1
-NVIDIA GT 335M					.*NVIDIA.*(GeForce)? *GT *335(M)?.*			1		1
-NVIDIA GT 340M					.*NVIDIA.*(GeForce)? *GT *340(M)?.*			2		1
-NVIDIA GT 415M					.*NVIDIA.*(GeForce)? *GT *415(M)?.*			2		1
-NVIDIA GT 420M					.*NVIDIA.*(GeForce)? *GT *420(M)?.*			2		1
-NVIDIA GT 425M					.*NVIDIA.*(GeForce)? *GT *425(M)?.*			3		1
-NVIDIA GT 430M					.*NVIDIA.*(GeForce)? *GT *430(M)?.*			3		1
-NVIDIA GT 435M					.*NVIDIA.*(GeForce)? *GT *435(M)?.*			3		1
-NVIDIA GT 440M					.*NVIDIA.*(GeForce)? *GT *440(M)?.*			3		1
-NVIDIA GT 445M					.*NVIDIA.*(GeForce)? *GT *445(M)?.*			3		1
-NVIDIA GT 450M					.*NVIDIA.*(GeForce)? *GT *450(M)?.*			3		1
-NVIDIA GT 520M					.*NVIDIA.*(GeForce)? *GT *520(M)?.*			3		1
-NVIDIA GT 525M					.*NVIDIA.*(GeForce)? *GT *525(M)?.*			3		1
-NVIDIA GT 540M					.*NVIDIA.*(GeForce)? *GT *540(M)?.*			3		1
-NVIDIA GT 550M					.*NVIDIA.*(GeForce)? *GT *550(M)?.*			3		1
-NVIDIA GT 555M					.*NVIDIA.*(GeForce)? *GT *555(M)?.*			3		1
-NVIDIA GTS 160M					.*NVIDIA.*(GeForce)? *GT(S)? *160(M)?.*		2		1
-NVIDIA GTS 240					.*NVIDIA.*(GeForce)? *GTS *24.*				3		1
-NVIDIA GTS 250					.*NVIDIA.*(GeForce)? *GTS *25.*				3		1
-NVIDIA GTS 350M					.*NVIDIA.*(GeForce)? *GTS *350M.*			3		1
-NVIDIA GTS 360M					.*NVIDIA.*(GeForce)? *GTS *360M.*			3		1
-NVIDIA GTS 360					.*NVIDIA.*(GeForce)? *GTS *360.*			3		1
-NVIDIA GTS 450					.*NVIDIA.*(GeForce)? *GTS *45.*				3		1
-NVIDIA GTX 260					.*NVIDIA.*(GeForce)? *GTX *26.*				3		1
-NVIDIA GTX 275					.*NVIDIA.*(GeForce)? *GTX *275.*			3		1
-NVIDIA GTX 270					.*NVIDIA.*(GeForce)? *GTX *27.*				3		1
-NVIDIA GTX 285					.*NVIDIA.*(GeForce)? *GTX *285.*			3		1
-NVIDIA GTX 280					.*NVIDIA.*(GeForce)? *GTX *280.*			3		1
-NVIDIA GTX 290					.*NVIDIA.*(GeForce)? *GTX *290.*			3		1
-NVIDIA GTX 295					.*NVIDIA.*(GeForce)? *GTX *295.*			3		1
-NVIDIA GTX 460M					.*NVIDIA.*(GeForce)? *GTX *460M.*			3		1
-NVIDIA GTX 465					.*NVIDIA.*(GeForce)? *GTX *465.*			3		1
-NVIDIA GTX 460					.*NVIDIA.*(GeForce)? *GTX *46.*				3		1
-NVIDIA GTX 470M					.*NVIDIA.*(GeForce)? *GTX *470M.*			3		1
-NVIDIA GTX 470					.*NVIDIA.*(GeForce)? *GTX *47.*				3		1
-NVIDIA GTX 480M					.*NVIDIA.*(GeForce)? *GTX *480M.*			3		1
-NVIDIA GTX 485M					.*NVIDIA.*(GeForce)? *GTX *485M.*			3		1
-NVIDIA GTX 480					.*NVIDIA.*(GeForce)? *GTX *48.*				3		1
-NVIDIA GTX 530					.*NVIDIA.*(GeForce)? *GTX *53.*				3		1
-NVIDIA GTX 550					.*NVIDIA.*(GeForce)? *GTX *55.*				3		1
-NVIDIA GTX 560					.*NVIDIA.*(GeForce)? *GTX *56.*				3		1
-NVIDIA GTX 570					.*NVIDIA.*(GeForce)? *GTX *57.*				3		1
-NVIDIA GTX 580M					.*NVIDIA.*(GeForce)? *GTX *580M.*			3		1
-NVIDIA GTX 580					.*NVIDIA.*(GeForce)? *GTX *58.*				3		1
-NVIDIA GTX 590					.*NVIDIA.*(GeForce)? *GTX *59.*				3		1
-NVIDIA C51						.*NVIDIA.*(GeForce)? *C51.*					0		1
-NVIDIA G72						.*NVIDIA.*(GeForce)? *G72.*					1		1
-NVIDIA G73						.*NVIDIA.*(GeForce)? *G73.*					1		1
-NVIDIA G84						.*NVIDIA.*(GeForce)? *G84.*					2		1
-NVIDIA G86						.*NVIDIA.*(GeForce)? *G86.*					3		1
-NVIDIA G92						.*NVIDIA.*(GeForce)? *G92.*					3		1
+NVIDIA 205						.*NVIDIA .*GeForce 205.*					2		1
+NVIDIA 210						.*NVIDIA .*GeForce 210.*					2		1
+NVIDIA 310M						.*NVIDIA .*GeForce 310M.*					1		1
+NVIDIA 310						.*NVIDIA .*GeForce 310.*					3		1
+NVIDIA 315M						.*NVIDIA .*GeForce 315M.*					2		1
+NVIDIA 315						.*NVIDIA .*GeForce 315.*					3		1
+NVIDIA 320M						.*NVIDIA .*GeForce 320M.*					2		1
+NVIDIA G100M					.*NVIDIA .*100M.*							0		1
+NVIDIA G100						.*NVIDIA .*100.*							0		1
+NVIDIA G102M					.*NVIDIA .*102M.*							0		1
+NVIDIA G103M					.*NVIDIA .*103M.*							0		1
+NVIDIA G105M					.*NVIDIA .*105M.*							0		1
+NVIDIA G 110M					.*NVIDIA .*110M.*							0		1
+NVIDIA G 120M					.*NVIDIA .*120M.*							1		1
+NVIDIA G 200					.*NVIDIA .*200(M)?.*						0		1
+NVIDIA G 205M					.*NVIDIA .*205(M)?.*						0		1
+NVIDIA G 210					.*NVIDIA .*210(M)?.*						1		1
+NVIDIA 305M						.*NVIDIA .*305(M)?.*						1		1
+NVIDIA G 310M					.*NVIDIA .*310(M)?.*						2		1
+NVIDIA G 315					.*NVIDIA .*315(M)?.*						2		1
+NVIDIA G 320M					.*NVIDIA .*320(M)?.*						2		1
+NVIDIA G 405					.*NVIDIA .*405(M)?.*						1		1
+NVIDIA G 410M					.*NVIDIA .*410(M)?.*						1		1
+NVIDIA GT 120M					.*NVIDIA .*GT *120(M)?.*					2		1
+NVIDIA GT 120					.*NVIDIA .*GT.*120							2		1
+NVIDIA GT 130M					.*NVIDIA .*GT *130(M)?.*					2		1
+NVIDIA GT 140M					.*NVIDIA .*GT *140(M)?.*					2		1
+NVIDIA GT 150M					.*NVIDIA .*GT(S)? *150(M)?.*				2		1
+NVIDIA GT 160M					.*NVIDIA .*GT *160(M)?.*					2		1
+NVIDIA GT 220M					.*NVIDIA .*GT *220(M)?.*					2		1
+NVIDIA GT 230M					.*NVIDIA .*GT *230(M)?.*					2		1
+NVIDIA GT 240M					.*NVIDIA .*GT *240(M)?.*					2		1
+NVIDIA GT 250M					.*NVIDIA .*GT *250(M)?.*					2		1
+NVIDIA GT 260M					.*NVIDIA .*GT *260(M)?.*					2		1
+NVIDIA GT 320M					.*NVIDIA .*GT *320(M)?.*					2		1
+NVIDIA GT 325M					.*NVIDIA .*GT *325(M)?.*					0		1
+NVIDIA GT 330M					.*NVIDIA .*GT *330(M)?.*					3		1
+NVIDIA GT 335M					.*NVIDIA .*GT *335(M)?.*					1		1
+NVIDIA GT 340M					.*NVIDIA .*GT *340(M)?.*					2		1
+NVIDIA GT 415M					.*NVIDIA .*GT *415(M)?.*					2		1
+NVIDIA GT 420M					.*NVIDIA .*GT *420(M)?.*					2		1
+NVIDIA GT 425M					.*NVIDIA .*GT *425(M)?.*					3		1
+NVIDIA GT 430M					.*NVIDIA .*GT *430(M)?.*					3		1
+NVIDIA GT 435M					.*NVIDIA .*GT *435(M)?.*					3		1
+NVIDIA GT 440M					.*NVIDIA .*GT *440(M)?.*					3		1
+NVIDIA GT 445M					.*NVIDIA .*GT *445(M)?.*					3		1
+NVIDIA GT 450M					.*NVIDIA .*GT *450(M)?.*					3		1
+NVIDIA GT 520M					.*NVIDIA .*GT *52.(M)?.*					3		1
+NVIDIA GT 530M					.*NVIDIA .*GT *530(M)?.*					3		1
+NVIDIA GT 540M					.*NVIDIA .*GT *54.(M)?.*					3		1
+NVIDIA GT 550M					.*NVIDIA .*GT *550(M)?.*					3		1
+NVIDIA GT 555M					.*NVIDIA .*GT *555(M)?.*					3		1
+NVIDIA GTS 160M					.*NVIDIA .*GT(S)? *160(M)?.*				2		1
+NVIDIA GTS 240					.*NVIDIA .*GTS *24.*						3		1
+NVIDIA GTS 250					.*NVIDIA .*GTS *25.*						3		1
+NVIDIA GTS 350M					.*NVIDIA .*GTS *350M.*						3		1
+NVIDIA GTS 360M					.*NVIDIA .*GTS *360M.*						3		1
+NVIDIA GTS 360					.*NVIDIA .*GTS *360.*						3		1
+NVIDIA GTS 450					.*NVIDIA .*GTS *45.*						3		1
+NVIDIA GTX 260					.*NVIDIA .*GTX *26.*						3		1
+NVIDIA GTX 275					.*NVIDIA .*GTX *275.*						3		1
+NVIDIA GTX 270					.*NVIDIA .*GTX *27.*						3		1
+NVIDIA GTX 285					.*NVIDIA .*GTX *285.*						3		1
+NVIDIA GTX 280					.*NVIDIA .*GTX *280.*						3		1
+NVIDIA GTX 290					.*NVIDIA .*GTX *290.*						3		1
+NVIDIA GTX 295					.*NVIDIA .*GTX *295.*						3		1
+NVIDIA GTX 460M					.*NVIDIA .*GTX *460M.*						3		1
+NVIDIA GTX 465					.*NVIDIA .*GTX *465.*						3		1
+NVIDIA GTX 460					.*NVIDIA .*GTX *46.*						3		1
+NVIDIA GTX 470M					.*NVIDIA .*GTX *470M.*						3		1
+NVIDIA GTX 470					.*NVIDIA .*GTX *47.*						3		1
+NVIDIA GTX 480M					.*NVIDIA .*GTX *480M.*						3		1
+NVIDIA GTX 485M					.*NVIDIA .*GTX *485M.*						3		1
+NVIDIA GTX 480					.*NVIDIA .*GTX *48.*						3		1
+NVIDIA GTX 530					.*NVIDIA .*GTX *53.*						3		1
+NVIDIA GTX 550					.*NVIDIA .*GTX *55.*						3		1
+NVIDIA GTX 560					.*NVIDIA .*GTX *56.*						3		1
+NVIDIA GTX 570					.*NVIDIA .*GTX *57.*						3		1
+NVIDIA GTX 580M					.*NVIDIA .*GTX *580M.*						3		1
+NVIDIA GTX 580					.*NVIDIA .*GTX *58.*						3		1
+NVIDIA GTX 590					.*NVIDIA .*GTX *59.*						3		1
+NVIDIA C51						.*NVIDIA .*C51.*							0		1
+NVIDIA G72						.*NVIDIA .*G72.*							1		1
+NVIDIA G73						.*NVIDIA .*G73.*							1		1
+NVIDIA G84						.*NVIDIA .*G84.*							2		1
+NVIDIA G86						.*NVIDIA .*G86.*							3		1
+NVIDIA G92						.*NVIDIA .*G92.*							3		1
 NVIDIA GeForce					.*GeForce 256.*								0		0
 NVIDIA GeForce 2				.*GeForce ?2 ?.*							0		1
 NVIDIA GeForce 3				.*GeForce ?3 ?.*							0		1
 NVIDIA GeForce 3 Ti				.*GeForce ?3 Ti.*							0		1
-NVIDIA GeForce 4				.*NVIDIA.*GeForce ?4.*						0		1
-NVIDIA GeForce 4 Go				.*NVIDIA.*GeForce ?4.*Go.*					0		1
-NVIDIA GeForce 4 MX				.*NVIDIA.*GeForce ?4 MX.*					0		1
-NVIDIA GeForce 4 PCX			.*NVIDIA.*GeForce ?4 PCX.*					0		1
-NVIDIA GeForce 4 Ti				.*NVIDIA.*GeForce ?4 Ti.*					0		1
-NVIDIA GeForce 6100				.*NVIDIA.*GeForce 61.*						0		1
-NVIDIA GeForce 6200				.*NVIDIA.*GeForce 62.*						0		1
-NVIDIA GeForce 6500				.*NVIDIA.*GeForce 65.*						0		1
-NVIDIA GeForce 6600				.*NVIDIA.*GeForce 66.*						1		1
-NVIDIA GeForce 6700				.*NVIDIA.*GeForce 67.*						2		1
-NVIDIA GeForce 6800				.*NVIDIA.*GeForce 68.*						2		1
-NVIDIA GeForce 7000				.*NVIDIA.*GeForce 70.*						0		1
-NVIDIA GeForce 7100				.*NVIDIA.*GeForce 71.*						0		1
-NVIDIA GeForce 7200				.*NVIDIA.*GeForce 72.*						1		1
-NVIDIA GeForce 7300				.*NVIDIA.*GeForce 73.*						1		1
-NVIDIA GeForce 7500				.*NVIDIA.*GeForce 75.*						1		1
-NVIDIA GeForce 7600				.*NVIDIA.*GeForce 76.*						2		1
-NVIDIA GeForce 7800				.*NVIDIA.*GeForce 78.*						2		1
-NVIDIA GeForce 7900				.*NVIDIA.*GeForce 79.*						2		1
-NVIDIA GeForce 8100				.*NVIDIA.*GeForce 81.*						1		1
-NVIDIA GeForce 8200M			.*NVIDIA.*GeForce 8200M.*					1		1
-NVIDIA GeForce 8200				.*NVIDIA.*GeForce 82.*						1		1
-NVIDIA GeForce 8300				.*NVIDIA.*GeForce 83.*						1		1
-NVIDIA GeForce 8400M			.*NVIDIA.*GeForce 8400M.*					1		1
-NVIDIA GeForce 8400				.*NVIDIA.*GeForce 84.*						1		1
-NVIDIA GeForce 8500				.*NVIDIA.*GeForce 85.*						3		1
-NVIDIA GeForce 8600M			.*NVIDIA.*GeForce 8600M.*					1		1
-NVIDIA GeForce 8600				.*NVIDIA.*GeForce 86.*						3		1
-NVIDIA GeForce 8700M			.*NVIDIA.*GeForce 8700M.*					3		1
-NVIDIA GeForce 8700				.*NVIDIA.*GeForce 87.*						3		1
-NVIDIA GeForce 8800M			.*NVIDIA.*GeForce 8800M.*					3		1
-NVIDIA GeForce 8800				.*NVIDIA.*GeForce 88.*						3		1
-NVIDIA GeForce 9100M			.*NVIDIA.*GeForce 9100M.*					0		1
-NVIDIA GeForce 9100				.*NVIDIA.*GeForce 91.*						0		1
-NVIDIA GeForce 9200M			.*NVIDIA.*GeForce 9200M.*					1		1
-NVIDIA GeForce 9200				.*NVIDIA.*GeForce 92.*						1		1
-NVIDIA GeForce 9300M			.*NVIDIA.*GeForce 9300M.*					1		1
-NVIDIA GeForce 9300				.*NVIDIA.*GeForce 93.*						1		1
-NVIDIA GeForce 9400M			.*NVIDIA.*GeForce 9400M.*					1		1
-NVIDIA GeForce 9400				.*NVIDIA.*GeForce 94.*						1		1
-NVIDIA GeForce 9500M			.*NVIDIA.*GeForce 9500M.*					2		1
-NVIDIA GeForce 9500				.*NVIDIA.*GeForce 95.*						2		1
-NVIDIA GeForce 9600M			.*NVIDIA.*GeForce 9600M.*					3		1
-NVIDIA GeForce 9600				.*NVIDIA.*GeForce 96.*						2		1
-NVIDIA GeForce 9700M			.*NVIDIA.*GeForce 9700M.*					2		1
-NVIDIA GeForce 9800M			.*NVIDIA.*GeForce 9800M.*					3		1
-NVIDIA GeForce 9800				.*NVIDIA.*GeForce 98.*						3		1
-NVIDIA GeForce FX 5100			.*NVIDIA.*GeForce FX 51.*					0		1
-NVIDIA GeForce FX 5200			.*NVIDIA.*GeForce FX 52.*					0		1
-NVIDIA GeForce FX 5300			.*NVIDIA.*GeForce FX 53.*					0		1
-NVIDIA GeForce FX 5500			.*NVIDIA.*GeForce FX 55.*					0		1
-NVIDIA GeForce FX 5600			.*NVIDIA.*GeForce FX 56.*					0		1
-NVIDIA GeForce FX 5700			.*NVIDIA.*GeForce FX 57.*					1		1
-NVIDIA GeForce FX 5800			.*NVIDIA.*GeForce FX 58.*					1		1
-NVIDIA GeForce FX 5900			.*NVIDIA.*GeForce FX 59.*					1		1
-NVIDIA GeForce FX Go5100		.*NVIDIA.*GeForce FX Go51.*					0		1
-NVIDIA GeForce FX Go5200		.*NVIDIA.*GeForce FX Go52.*					0		1
-NVIDIA GeForce FX Go5300		.*NVIDIA.*GeForce FX Go53.*					0		1
-NVIDIA GeForce FX Go5500		.*NVIDIA.*GeForce FX Go55.*					0		1
-NVIDIA GeForce FX Go5600		.*NVIDIA.*GeForce FX Go56.*					0		1
-NVIDIA GeForce FX Go5700		.*NVIDIA.*GeForce FX Go57.*					1		1
-NVIDIA GeForce FX Go5800		.*NVIDIA.*GeForce FX Go58.*					1		1
-NVIDIA GeForce FX Go5900		.*NVIDIA.*GeForce FX Go59.*					1		1
-NVIDIA GeForce FX Go5xxx		.*NVIDIA.*GeForce FX Go.*					0		1
-NVIDIA GeForce Go 6100			.*NVIDIA.*GeForce Go 61.*					0		1
-NVIDIA GeForce Go 6200			.*NVIDIA.*GeForce Go 62.*					0		1
-NVIDIA GeForce Go 6400			.*NVIDIA.*GeForce Go 64.*					1		1
-NVIDIA GeForce Go 6500			.*NVIDIA.*GeForce Go 65.*					1		1
-NVIDIA GeForce Go 6600			.*NVIDIA.*GeForce Go 66.*					1		1
-NVIDIA GeForce Go 6700			.*NVIDIA.*GeForce Go 67.*					1		1
-NVIDIA GeForce Go 6800			.*NVIDIA.*GeForce Go 68.*					1		1
-NVIDIA GeForce Go 7200			.*NVIDIA.*GeForce Go 72.*					1		1
-NVIDIA GeForce Go 7300 LE		.*NVIDIA.*GeForce Go 73.*LE.*				0		1
-NVIDIA GeForce Go 7300			.*NVIDIA.*GeForce Go 73.*					1		1
-NVIDIA GeForce Go 7400			.*NVIDIA.*GeForce Go 74.*					1		1
-NVIDIA GeForce Go 7600			.*NVIDIA.*GeForce Go 76.*					2		1
-NVIDIA GeForce Go 7700			.*NVIDIA.*GeForce Go 77.*					2		1
-NVIDIA GeForce Go 7800			.*NVIDIA.*GeForce Go 78.*					2		1
-NVIDIA GeForce Go 7900			.*NVIDIA.*GeForce Go 79.*					2		1
-NVIDIA D9M						.*NVIDIA.*D9M.*								1		1
-NVIDIA G94						.*NVIDIA.*G94.*								3		1
+NVIDIA GeForce 4				.*NVIDIA .*GeForce ?4.*						0		1
+NVIDIA GeForce 4 Go				.*NVIDIA .*GeForce ?4.*Go.*					0		1
+NVIDIA GeForce 4 MX				.*NVIDIA .*GeForce ?4 MX.*					0		1
+NVIDIA GeForce 4 PCX			.*NVIDIA .*GeForce ?4 PCX.*					0		1
+NVIDIA GeForce 4 Ti				.*NVIDIA .*GeForce ?4 Ti.*					0		1
+NVIDIA GeForce 6100				.*NVIDIA .*GeForce 61.*						0		1
+NVIDIA GeForce 6200				.*NVIDIA .*GeForce 62.*						0		1
+NVIDIA GeForce 6500				.*NVIDIA .*GeForce 65.*						0		1
+NVIDIA GeForce 6600				.*NVIDIA .*GeForce 66.*						1		1
+NVIDIA GeForce 6700				.*NVIDIA .*GeForce 67.*						2		1
+NVIDIA GeForce 6800				.*NVIDIA .*GeForce 68.*						2		1
+NVIDIA GeForce 7000				.*NVIDIA .*GeForce 70.*						0		1
+NVIDIA GeForce 7100				.*NVIDIA .*GeForce 71.*						0		1
+NVIDIA GeForce 7200				.*NVIDIA .*GeForce 72.*						1		1
+NVIDIA GeForce 7300				.*NVIDIA .*GeForce 73.*						1		1
+NVIDIA GeForce 7500				.*NVIDIA .*GeForce 75.*						1		1
+NVIDIA GeForce 7600				.*NVIDIA .*GeForce 76.*						2		1
+NVIDIA GeForce 7800				.*NVIDIA .*GeForce 78.*						2		1
+NVIDIA GeForce 7900				.*NVIDIA .*GeForce 79.*						2		1
+NVIDIA GeForce 8100				.*NVIDIA .*GeForce 81.*						1		1
+NVIDIA GeForce 8200M			.*NVIDIA .*GeForce 8200M.*					1		1
+NVIDIA GeForce 8200				.*NVIDIA .*GeForce 82.*						1		1
+NVIDIA GeForce 8300				.*NVIDIA .*GeForce 83.*						2		1
+NVIDIA GeForce 8400M			.*NVIDIA .*GeForce 8400M.*					2		1
+NVIDIA GeForce 8400				.*NVIDIA .*GeForce 84.*						2		1
+NVIDIA GeForce 8500				.*NVIDIA .*GeForce 85.*						3		1
+NVIDIA GeForce 8600M			.*NVIDIA .*GeForce 8600M.*					2		1
+NVIDIA GeForce 8600				.*NVIDIA .*GeForce 86.*						3		1
+NVIDIA GeForce 8700M			.*NVIDIA .*GeForce 8700M.*					3		1
+NVIDIA GeForce 8700				.*NVIDIA .*GeForce 87.*						3		1
+NVIDIA GeForce 8800M			.*NVIDIA .*GeForce 8800M.*					3		1
+NVIDIA GeForce 8800				.*NVIDIA .*GeForce 88.*						3		1
+NVIDIA GeForce 9100M			.*NVIDIA .*GeForce 9100M.*					0		1
+NVIDIA GeForce 9100				.*NVIDIA .*GeForce 91.*						0		1
+NVIDIA GeForce 9200M			.*NVIDIA .*GeForce 9200M.*					1		1
+NVIDIA GeForce 9200				.*NVIDIA .*GeForce 92.*						1		1
+NVIDIA GeForce 9300M			.*NVIDIA .*GeForce 9300M.*					2		1
+NVIDIA GeForce 9300				.*NVIDIA .*GeForce 93.*						2		1
+NVIDIA GeForce 9400M			.*NVIDIA .*GeForce 9400M.*					2		1
+NVIDIA GeForce 9400				.*NVIDIA .*GeForce 94.*						2		1
+NVIDIA GeForce 9500M			.*NVIDIA .*GeForce 9500M.*					2		1
+NVIDIA GeForce 9500				.*NVIDIA .*GeForce 95.*						2		1
+NVIDIA GeForce 9600M			.*NVIDIA .*GeForce 9600M.*					3		1
+NVIDIA GeForce 9600				.*NVIDIA .*GeForce 96.*						2		1
+NVIDIA GeForce 9700M			.*NVIDIA .*GeForce 9700M.*					2		1
+NVIDIA GeForce 9800M			.*NVIDIA .*GeForce 9800M.*					3		1
+NVIDIA GeForce 9800				.*NVIDIA .*GeForce 98.*						3		1
+NVIDIA GeForce FX 5100			.*NVIDIA .*GeForce FX 51.*					0		1
+NVIDIA GeForce FX 5200			.*NVIDIA .*GeForce FX 52.*					0		1
+NVIDIA GeForce FX 5300			.*NVIDIA .*GeForce FX 53.*					0		1
+NVIDIA GeForce FX 5500			.*NVIDIA .*GeForce FX 55.*					0		1
+NVIDIA GeForce FX 5600			.*NVIDIA .*GeForce FX 56.*					0		1
+NVIDIA GeForce FX 5700			.*NVIDIA .*GeForce FX 57.*					1		1
+NVIDIA GeForce FX 5800			.*NVIDIA .*GeForce FX 58.*					1		1
+NVIDIA GeForce FX 5900			.*NVIDIA .*GeForce FX 59.*					1		1
+NVIDIA GeForce FX Go5100		.*NVIDIA .*GeForce FX Go51.*				0		1
+NVIDIA GeForce FX Go5200		.*NVIDIA .*GeForce FX Go52.*				0		1
+NVIDIA GeForce FX Go5300		.*NVIDIA .*GeForce FX Go53.*				0		1
+NVIDIA GeForce FX Go5500		.*NVIDIA .*GeForce FX Go55.*				0		1
+NVIDIA GeForce FX Go5600		.*NVIDIA .*GeForce FX Go56.*				0		1
+NVIDIA GeForce FX Go5700		.*NVIDIA .*GeForce FX Go57.*				1		1
+NVIDIA GeForce FX Go5800		.*NVIDIA .*GeForce FX Go58.*				1		1
+NVIDIA GeForce FX Go5900		.*NVIDIA .*GeForce FX Go59.*				1		1
+NVIDIA GeForce FX Go5xxx		.*NVIDIA .*GeForce FX Go.*					0		1
+NVIDIA GeForce Go 6100			.*NVIDIA .*GeForce Go 61.*					0		1
+NVIDIA GeForce Go 6200			.*NVIDIA .*GeForce Go 62.*					0		1
+NVIDIA GeForce Go 6400			.*NVIDIA .*GeForce Go 64.*					1		1
+NVIDIA GeForce Go 6500			.*NVIDIA .*GeForce Go 65.*					1		1
+NVIDIA GeForce Go 6600			.*NVIDIA .*GeForce Go 66.*					1		1
+NVIDIA GeForce Go 6700			.*NVIDIA .*GeForce Go 67.*					1		1
+NVIDIA GeForce Go 6800			.*NVIDIA .*GeForce Go 68.*					1		1
+NVIDIA GeForce Go 7200			.*NVIDIA .*GeForce Go 72.*					1		1
+NVIDIA GeForce Go 7300 LE		.*NVIDIA .*GeForce Go 73.*LE.*				0		1
+NVIDIA GeForce Go 7300			.*NVIDIA .*GeForce Go 73.*					1		1
+NVIDIA GeForce Go 7400			.*NVIDIA .*GeForce Go 74.*					1		1
+NVIDIA GeForce Go 7600			.*NVIDIA .*GeForce Go 76.*					2		1
+NVIDIA GeForce Go 7700			.*NVIDIA .*GeForce Go 77.*					2		1
+NVIDIA GeForce Go 7800			.*NVIDIA .*GeForce Go 78.*					2		1
+NVIDIA GeForce Go 7900			.*NVIDIA .*GeForce Go 79.*					2		1
+NVIDIA D9M						.*NVIDIA .*D9M.*							1		1
+NVIDIA G94						.*NVIDIA .*G94.*							3		1
 NVIDIA GeForce Go 6				.*GeForce Go 6.*							1		1
-NVIDIA ION 2					.*NVIDIA ION 2.*							2		1
-NVIDIA ION						.*NVIDIA ION.*								2		1
-NVIDIA NB9M						.*GeForce NB9M.*							1		1
-NVIDIA NB9P						.*GeForce NB9P.*							1		1
+NVIDIA ION 2					.*NVIDIA .*ION 2.*							2		1
+NVIDIA ION 						.*NVIDIA .*ION.*							2		1
+NVIDIA NB8M						.*NVIDIA .*NB8M.*							1		1
+NVIDIA NB8P						.*NVIDIA .*NB8P.*							2		1
+NVIDIA NB9E						.*NVIDIA .*NB9E.*							3		1
+NVIDIA NB9M						.*NVIDIA .*NB9M.*							1		1
+NVIDIA NB9P						.*NVIDIA .*NB9P.*							2		1
+NVIDIA N10						.*NVIDIA .*N10.*							1		1
 NVIDIA GeForce PCX				.*GeForce PCX.*								0		1
-NVIDIA Generic					.*NVIDIA.*Unknown.*							0		0
-NVIDIA NV17						.*GeForce NV17.*							0		1
-NVIDIA NV34						.*NVIDIA.*NV34.*							0		1
-NVIDIA NV35						.*NVIDIA.*NV35.*							0		1
-NVIDIA NV36						.*GeForce NV36.*							1		1
-NVIDIA NV43						.*NVIDIA *NV43.*							1		1
-NVIDIA NV44						.*NVIDIA *NV44.*							1		1
-NVIDIA nForce					.*NVIDIA *nForce.*							0		0
-NVIDIA MCP78					.*NVIDIA *MCP78.*							1		1
+NVIDIA Generic					.*NVIDIA .*Unknown.*						0		0
+NVIDIA NV17						.*NVIDIA .*NV17.*							0		1
+NVIDIA NV34						.*NVIDIA .*NV34.*							0		1
+NVIDIA NV35						.*NVIDIA .*NV35.*							0		1
+NVIDIA NV36						.*NVIDIA .*NV36.*							1		1
+NVIDIA NV41						.*NVIDIA .*NV41.*							1		1
+NVIDIA NV43						.*NVIDIA .*NV43.*							1		1
+NVIDIA NV44						.*NVIDIA .*NV44.*							1		1
+NVIDIA nForce					.*NVIDIA .*nForce.*							0		0
+NVIDIA MCP51					.*NVIDIA .*MCP51.*							1		1
+NVIDIA MCP61					.*NVIDIA .*MCP61.*							1		1
+NVIDIA MCP67					.*NVIDIA .*MCP67.*							1		1
+NVIDIA MCP68					.*NVIDIA .*MCP68.*							1		1
+NVIDIA MCP73					.*NVIDIA .*MCP73.*							1		1
+NVIDIA MCP77					.*NVIDIA .*MCP77.*							1		1
+NVIDIA MCP78					.*NVIDIA .*MCP78.*							1		1
+NVIDIA MCP79					.*NVIDIA .*MCP79.*							1		1
+NVIDIA MCP7A					.*NVIDIA .*MCP7A.*							1		1
 NVIDIA Quadro2					.*Quadro2.*									0		1
 NVIDIA Quadro 1000M				.*Quadro.*1000M.*							2		1
-NVIDIA Quadro 2000 M/D			.*Quadro.*2000(M|D)?.*						3		1
+NVIDIA Quadro 2000 M/D			.*Quadro.*2000.*							3		1
+NVIDIA Quadro 3000M				.*Quadro.*3000M.*							3		1
 NVIDIA Quadro 4000M				.*Quadro.*4000M.*							3		1
 NVIDIA Quadro 4000				.*Quadro *4000.*							3		1
-NVIDIA Quadro 50x0 M			.*Quadro.*50.0(M)?.*						3		1
+NVIDIA Quadro 50x0 M			.*Quadro.*50.0.*							3		1
 NVIDIA Quadro 6000				.*Quadro.*6000.*							3		1
 NVIDIA Quadro 400				.*Quadro.*400.*								2		1
 NVIDIA Quadro 600				.*Quadro.*600.*								2		1
 NVIDIA Quadro4					.*Quadro4.*									0		1
 NVIDIA Quadro DCC				.*Quadro DCC.*								0		1
+NVIDIA Quadro CX				.*Quadro.*CX.*								3		1
 NVIDIA Quadro FX 770M			.*Quadro.*FX *770M.*						2		1
 NVIDIA Quadro FX 1500M			.*Quadro.*FX *1500M.*						1		1
 NVIDIA Quadro FX 1600M			.*Quadro.*FX *1600M.*						2		1
@@ -498,16 +513,16 @@ NVIDIA Quadro FX 3700			.*Quadro.*FX *3700.*						3		1
 NVIDIA Quadro FX 3800			.*Quadro.*FX *3800.*						3		1
 NVIDIA Quadro FX 4500			.*Quadro.*FX *45.*							3		1
 NVIDIA Quadro FX 880M			.*Quadro.*FX *880M.*						3		1
-NVIDIA Quadro FX 4800			.*NVIDIA.*Quadro *FX *4800.*				3		1
+NVIDIA Quadro FX 4800			.*NVIDIA .*Quadro *FX *4800.*				3		1
 NVIDIA Quadro FX				.*Quadro FX.*								1		1
 NVIDIA Quadro NVS 1xxM			.*Quadro NVS *1.[05]M.*						0		1
-NVIDIA Quadro NVS 300M			.*NVIDIA.*NVS *300M.*						2		1
-NVIDIA Quadro NVS 320M			.*NVIDIA.*NVS *320M.*						2		1
-NVIDIA Quadro NVS 2100M			.*NVIDIA.*NVS *2100M.*						2		1
-NVIDIA Quadro NVS 3100M			.*NVIDIA.*NVS *3100M.*						2		1
-NVIDIA Quadro NVS 4200M			.*NVIDIA.*NVS *4200M.*						2		1
-NVIDIA Quadro NVS 5100M			.*NVIDIA.*NVS *5100M.*						2		1
-NVIDIA Quadro NVS				.*NVIDIA.*NVS								0		1
+NVIDIA Quadro NVS 300M			.*NVIDIA .*NVS *300M.*						2		1
+NVIDIA Quadro NVS 320M			.*NVIDIA .*NVS *320M.*						2		1
+NVIDIA Quadro NVS 2100M			.*NVIDIA .*NVS *2100M.*						2		1
+NVIDIA Quadro NVS 3100M			.*NVIDIA .*NVS *3100M.*						2		1
+NVIDIA Quadro NVS 4200M			.*NVIDIA .*NVS *4200M.*						2		1
+NVIDIA Quadro NVS 5100M			.*NVIDIA .*NVS *5100M.*						2		1
+NVIDIA Quadro NVS				.*NVIDIA .*NVS								0		1
 NVIDIA RIVA TNT					.*RIVA TNT.*								0		0
 S3								.*S3 Graphics.*								0		0
 SiS								SiS.*										0		0
@@ -517,3 +532,4 @@ XGI								XGI.*										0		0
 VIA								VIA.*										0		0
 Apple Generic					Apple.*Generic.*							0		0
 Apple Software Renderer			Apple.*Software Renderer.*					0		0
+Humper							Humper.*									0		1
diff --git a/indra/newview/installers/darwin/fix_application_icon_position.sh b/indra/newview/installers/darwin/fix_application_icon_position.sh
old mode 100755
new mode 100644
diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi
old mode 100755
new mode 100644
index 98cc8fa7027e323a2252dbfb846ed95e3b8dbdf4..8a6114f0d5736c8c0bcf3e0eac16246d00cb0145
--- a/indra/newview/installers/windows/installer_template.nsi
+++ b/indra/newview/installers/windows/installer_template.nsi
@@ -52,10 +52,10 @@ RequestExecutionLevel admin	; on Vista we must be admin because we write to Prog
 !include "%%SOURCE%%\installers\windows\lang_fr.nsi"
 !include "%%SOURCE%%\installers\windows\lang_ja.nsi"
 !include "%%SOURCE%%\installers\windows\lang_it.nsi"
-!include "%%SOURCE%%\installers\windows\lang_ko.nsi"
-!include "%%SOURCE%%\installers\windows\lang_nl.nsi"
 !include "%%SOURCE%%\installers\windows\lang_pl.nsi"
 !include "%%SOURCE%%\installers\windows\lang_pt-br.nsi"
+!include "%%SOURCE%%\installers\windows\lang_ru.nsi"
+!include "%%SOURCE%%\installers\windows\lang_tr.nsi"
 !include "%%SOURCE%%\installers\windows\lang_zh.nsi"
 
 # *TODO: Move these into the language files themselves
@@ -66,11 +66,11 @@ LangString LanguageCode ${LANG_SPANISH}  "es"
 LangString LanguageCode ${LANG_FRENCH}   "fr"
 LangString LanguageCode ${LANG_JAPANESE} "ja"
 LangString LanguageCode ${LANG_ITALIAN}  "it"
-LangString LanguageCode ${LANG_KOREAN}   "ko"
-LangString LanguageCode ${LANG_DUTCH}    "nl"
 LangString LanguageCode ${LANG_POLISH}   "pl"
 LangString LanguageCode ${LANG_PORTUGUESEBR} "pt"
-LangString LanguageCode ${LANG_SIMPCHINESE}  "zh"
+LangString LanguageCode ${LANG_RUSSIAN}  "ru"
+LangString LanguageCode ${LANG_TURKISH}  "tr"
+LangString LanguageCode ${LANG_TRADCHINESE}  "zh"
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Tweak for different servers/builds (this placeholder is replaced by viewer_manifest.py)
@@ -115,6 +115,7 @@ Var COMMANDLINE         ; command line passed to this installer, set in .onInit
 Var SHORTCUT_LANG_PARAM ; "--set InstallLanguage de", passes language to viewer
 Var SKIP_DIALOGS        ; set from command line in  .onInit. autoinstall 
                         ; GUI and the defaults.
+Var DO_UNINSTALL_V2     ; If non-null, path to a previous Viewer 2 installation that will be uninstalled.
 
 ;;; Function definitions should go before file includes, because calls to
 ;;; DLLs like LangDLL trigger an implicit file include, so if that call is at
@@ -310,6 +311,29 @@ Function CheckNetworkConnection
 FunctionEnd
 
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Function CheckWillUninstallV2               
+;
+; If we are being called through auto-update, we need to uninstall any
+; existing V2 installation. Otherwise, we wind up with
+; SecondLifeViewer2 and SecondLifeViewer installations existing side
+; by side no indication which to use.
+; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+Function CheckWillUninstallV2
+
+  StrCpy $DO_UNINSTALL_V2 ""
+
+  StrCmp $SKIP_DIALOGS "true" 0 CHECKV2_DONE
+  StrCmp $INSTDIR "$PROGRAMFILES\SecondLifeViewer2" CHECKV2_DONE ; don't uninstall our own install dir.
+  IfFileExists "$PROGRAMFILES\SecondLifeViewer2\uninst.exe" CHECKV2_FOUND CHECKV2_DONE
+
+CHECKV2_FOUND:
+  StrCpy $DO_UNINSTALL_V2 "true"
+
+CHECKV2_DONE:
+
+FunctionEnd
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ; Save user files to temp location
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -334,7 +358,7 @@ Push $2
     ExpandEnvStrings $2 $2
 
     CreateDirectory "$TEMP\SecondLifeSettingsBackup\$0"
-    CopyFiles  "$2\Application Data\SecondLife\*" "$TEMP\SecondLifeSettingsBackup\$0"
+    CopyFiles /SILENT "$2\Application Data\SecondLife\*" "$TEMP\SecondLifeSettingsBackup\$0"
 
   CONTINUE:
     IntOp $0 $0 + 1
@@ -350,7 +374,7 @@ Push $0
     ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
     StrCmp $0 "" +2
     CreateDirectory "$TEMP\SecondLifeSettingsBackup\AllUsers\"
-    CopyFiles "$2\Application Data\SecondLife\*" "$TEMP\SecondLifeSettingsBackup\AllUsers\"
+    CopyFiles /SILENT "$2\Application Data\SecondLife\*" "$TEMP\SecondLifeSettingsBackup\AllUsers\"
 Pop $0
 
 FunctionEnd
@@ -377,7 +401,7 @@ Push $2
     ExpandEnvStrings $2 $2
 
     CreateDirectory "$2\Application Data\SecondLife\"
-    CopyFiles "$TEMP\SecondLifeSettingsBackup\$0\*" "$2\Application Data\SecondLife\" 
+    CopyFiles /SILENT "$TEMP\SecondLifeSettingsBackup\$0\*" "$2\Application Data\SecondLife\" 
 
   CONTINUE:
     IntOp $0 $0 + 1
@@ -393,11 +417,53 @@ Push $0
     ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
     StrCmp $0 "" +2
     CreateDirectory "$2\Application Data\SecondLife\"
-    CopyFiles "$TEMP\SecondLifeSettingsBackup\AllUsers\*" "$2\Application Data\SecondLife\" 
+    CopyFiles /SILENT "$TEMP\SecondLifeSettingsBackup\AllUsers\*" "$2\Application Data\SecondLife\" 
+Pop $0
+
+FunctionEnd
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Remove temp dirs
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+Function RemoveTempUserFiles
+
+Push $0
+Push $1
+Push $2
+
+    StrCpy $0 0 ; Index number used to iterate via EnumRegKey
+
+  LOOP:
+    EnumRegKey $1 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $0
+    StrCmp $1 "" DONE               ; no more users
+
+    ReadRegStr $2 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$1" "ProfileImagePath" 
+    StrCmp $2 "" CONTINUE 0         ; "ProfileImagePath" value is missing
+
+    ; Required since ProfileImagePath is of type REG_EXPAND_SZ
+    ExpandEnvStrings $2 $2
+
+    RMDir /r "$TEMP\SecondLifeSettingsBackup\$0\*"
+
+  CONTINUE:
+    IntOp $0 $0 + 1
+    Goto LOOP
+  DONE:
+
+Pop $2
+Pop $1
+Pop $0
+
+; Copy files in Documents and Settings\All Users\SecondLife
+Push $0
+    ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
+    StrCmp $0 "" +2
+    RMDir /r "$TEMP\SecondLifeSettingsBackup\AllUsers\*"
 Pop $0
 
 FunctionEnd
 
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ; Clobber user files - TEST ONLY
 ; This is here for testing, generally not desirable to call it.
@@ -864,9 +930,12 @@ Call CheckIfAdministrator		; Make sure the user can install/uninstall
 Call CheckIfAlreadyCurrent		; Make sure that we haven't already installed this version
 Call CloseSecondLife			; Make sure we're not running
 Call CheckNetworkConnection		; ping secondlife.com
+Call CheckWillUninstallV2               ; See if a V2 install exists and will be removed.
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-Call PreserveUserFiles
+StrCmp $DO_UNINSTALL_V2 "" PRESERVE_DONE
+  Call PreserveUserFiles
+PRESERVE_DONE:
 
 ;;; Don't remove cache files during a regular install, removing the inventory cache on upgrades results in lots of damage to the servers.
 ;Call RemoveCacheFiles			; Installing over removes potentially corrupted
@@ -951,17 +1020,15 @@ WriteRegExpandStr HKEY_CLASSES_ROOT "x-grid-location-info\shell\open\command" ""
 ; write out uninstaller
 WriteUninstaller "$INSTDIR\uninst.exe"
 
-; Remove existing "Second Life Viewer 2" install if any.
-StrCmp $INSTDIR "$PROGRAMFILES\SecondLifeViewer2" SLV2_DONE ; unless that's the install directory
-IfFileExists "$PROGRAMFILES\SecondLifeViewer2\uninst.exe" SLV2_FOUND SLV2_DONE
-
-SLV2_FOUND:
-ExecWait '"$PROGRAMFILES\SecondLifeViewer2\uninst.exe" /S _?=$PROGRAMFILES\SecondLifeViewer2'
-Delete "$PROGRAMFILES\SecondLifeViewer2\uninst.exe" ; with _? option above, uninst.exe will be left behind.
-RMDir "$PROGRAMFILES\SecondLifeViewer2" ; will remove only if empty.
+; Uninstall existing "Second Life Viewer 2" install if needed.
+StrCmp $DO_UNINSTALL_V2 "" REMOVE_SLV2_DONE
+  ExecWait '"$PROGRAMFILES\SecondLifeViewer2\uninst.exe" /S _?=$PROGRAMFILES\SecondLifeViewer2'
+  Delete "$PROGRAMFILES\SecondLifeViewer2\uninst.exe" ; with _? option above, uninst.exe will be left behind.
+  RMDir "$PROGRAMFILES\SecondLifeViewer2" ; will remove only if empty.
 
-SLV2_DONE:
-Call RestoreUserFiles
+  Call RestoreUserFiles
+  Call RemoveTempUserFiles
+REMOVE_SLV2_DONE:
 
 ; end of default section
 SectionEnd
diff --git a/indra/newview/installers/windows/lang_ko.nsi b/indra/newview/installers/windows/lang_ko.nsi
deleted file mode 100644
index 5162b7ddad1f7ebdceda14a6d70cad38050ae704..0000000000000000000000000000000000000000
Binary files a/indra/newview/installers/windows/lang_ko.nsi and /dev/null differ
diff --git a/indra/newview/installers/windows/lang_nl.nsi b/indra/newview/installers/windows/lang_nl.nsi
deleted file mode 100644
index 8884b1e8585416464c522dad2f002b3a8338326f..0000000000000000000000000000000000000000
Binary files a/indra/newview/installers/windows/lang_nl.nsi and /dev/null differ
diff --git a/indra/newview/installers/windows/lang_ru.nsi b/indra/newview/installers/windows/lang_ru.nsi
new file mode 100644
index 0000000000000000000000000000000000000000..de7affe08a3f5ff4f7e9619600ee715b0043e235
Binary files /dev/null and b/indra/newview/installers/windows/lang_ru.nsi differ
diff --git a/indra/newview/installers/windows/lang_tr.nsi b/indra/newview/installers/windows/lang_tr.nsi
new file mode 100644
index 0000000000000000000000000000000000000000..5e7e3d797bc1b8e709396876d847798252a77ce4
Binary files /dev/null and b/indra/newview/installers/windows/lang_tr.nsi differ
diff --git a/indra/newview/installers/windows/lang_zh.nsi b/indra/newview/installers/windows/lang_zh.nsi
index d17e860df933ffac36093d13c3bc217bf077a126..ecf1185fbbe69c9560a13c6f345b75a1c0b34639 100644
Binary files a/indra/newview/installers/windows/lang_zh.nsi and b/indra/newview/installers/windows/lang_zh.nsi differ
diff --git a/indra/newview/installers/windows/language_menu.nsi b/indra/newview/installers/windows/language_menu.nsi
index fef8d40c69bb52e43992e39ecf028062cebc51cb..08ad42532f46988169c2d0a413e51fd9b967be03 100644
Binary files a/indra/newview/installers/windows/language_menu.nsi and b/indra/newview/installers/windows/language_menu.nsi differ
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index 296ae8f10b973e364e102ad94238928c24c1c89e..ab9b5ff436823665ccd1151c00216f3187129d08 100755
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -36,10 +36,10 @@
 #include "llagentwearables.h"
 #include "llagentui.h"
 #include "llanimationstates.h"
-#include "llbottomtray.h"
 #include "llcallingcard.h"
 #include "llcapabilitylistener.h"
 #include "llchannelmanager.h"
+#include "llchicletbar.h"
 #include "llconsole.h"
 #include "llenvmanager.h"
 #include "llfirstuse.h"
@@ -68,9 +68,11 @@
 #include "llstatusbar.h"
 #include "llteleportflags.h"
 #include "lltool.h"
+#include "lltoolbarview.h"
 #include "lltoolpie.h"
 #include "lltoolmgr.h"
 #include "lltrans.h"
+#include "lluictrl.h"
 #include "llurlentry.h"
 #include "llviewercontrol.h"
 #include "llviewerdisplay.h"
@@ -152,6 +154,68 @@ bool handleSlowMotionAnimation(const LLSD& newvalue)
 	return true;
 }
 
+// static
+void LLAgent::parcelChangedCallback()
+{
+	bool can_edit = LLToolMgr::getInstance()->canEdit();
+
+	gAgent.mCanEditParcel = can_edit;
+}
+
+// static
+bool LLAgent::isActionAllowed(const LLSD& sdname)
+{
+	bool retval = false;
+
+	const std::string& param = sdname.asString();
+
+	if (param == "build")
+	{
+		retval = gAgent.canEditParcel();
+	}
+	else if (param == "speak")
+	{
+		if ( gAgent.isVoiceConnected() && 
+			LLViewerParcelMgr::getInstance()->allowAgentVoice() &&
+				! LLVoiceClient::getInstance()->inTuningMode() )
+		{
+			retval = true;
+		}
+		else
+		{
+			retval = false;
+		}
+	}
+
+	return retval;
+}
+
+// static 
+void LLAgent::pressMicrophone(const LLSD& name)
+{
+	LLFirstUse::speak(false);
+
+	 LLVoiceClient::getInstance()->inputUserControlState(true);
+}
+
+// static 
+void LLAgent::releaseMicrophone(const LLSD& name)
+{
+	LLVoiceClient::getInstance()->inputUserControlState(false);
+}
+
+// static
+void LLAgent::toggleMicrophone(const LLSD& name)
+{
+	LLVoiceClient::getInstance()->toggleUserPTTState();
+}
+
+// static
+bool LLAgent::isMicrophoneOn(const LLSD& sdname)
+{
+	return LLVoiceClient::getInstance()->getUserPTTState();
+}
+
 // ************************************************************
 // Enabled this definition to compile a 'hacked' viewer that
 // locally believes the end user has godlike powers.
@@ -183,6 +247,7 @@ LLAgent::LLAgent() :
 	mbTeleportKeepsLookAt(false),
 
 	mAgentAccess(new LLAgentAccess(gSavedSettings)),
+	mCanEditParcel(false),
 	mTeleportSourceSLURL(new LLSLURL),
 	mTeleportState( TELEPORT_NONE ),
 	mRegionp(NULL),
@@ -231,6 +296,8 @@ LLAgent::LLAgent() :
 	mCurrentFidget(0),
 	mFirstLogin(FALSE),
 	mGenderChosen(FALSE),
+	
+	mVoiceConnected(false),
 
 	mAppearanceSerialNum(0),
 
@@ -267,7 +334,9 @@ void LLAgent::init()
 
 	gSavedSettings.getControl("PreferredMaturity")->getValidateSignal()->connect(boost::bind(&LLAgent::validateMaturity, this, _2));
 	gSavedSettings.getControl("PreferredMaturity")->getSignal()->connect(boost::bind(&LLAgent::handleMaturity, this, _2));
-	
+
+	LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(boost::bind(&LLAgent::parcelChangedCallback));
+
 	mInitialized = TRUE;
 }
 
@@ -1032,20 +1101,11 @@ F32 LLAgent::clampPitchToLimits(F32 angle)
 
 	LLVector3 skyward = getReferenceUpVector();
 
-	F32			look_down_limit;
-	F32			look_up_limit = 10.f * DEG_TO_RAD;
+	const F32 look_down_limit = 179.f * DEG_TO_RAD;;
+	const F32 look_up_limit   =   1.f * DEG_TO_RAD;
 
 	F32 angle_from_skyward = acos( mFrameAgent.getAtAxis() * skyward );
 
-	if (isAgentAvatarValid() && gAgentAvatarp->isSitting())
-	{
-		look_down_limit = 130.f * DEG_TO_RAD;
-	}
-	else
-	{
-		look_down_limit = 170.f * DEG_TO_RAD;
-	}
-
 	// clamp pitch to limits
 	if ((angle >= 0.f) && (angle_from_skyward + angle > look_down_limit))
 	{
@@ -1797,11 +1857,12 @@ void LLAgent::endAnimationUpdateUI()
 	// clean up UI from mode we're leaving
 	if (gAgentCamera.getLastCameraMode() == CAMERA_MODE_MOUSELOOK )
 	{
+		gToolBarView->setToolBarsVisible(true);
 		// show mouse cursor
 		gViewerWindow->showCursor();
 		// show menus
 		gMenuBarView->setVisible(TRUE);
-		LLNavigationBar::getInstance()->setVisible(TRUE);
+		LLNavigationBar::getInstance()->setVisible(TRUE && gSavedSettings.getBOOL("ShowNavbarNavigationPanel"));
 		gStatusBar->setVisibleForMouselook(true);
 
 		if (gSavedSettings.getBOOL("ShowMiniLocationPanel"))
@@ -1809,7 +1870,7 @@ void LLAgent::endAnimationUpdateUI()
 			LLPanelTopInfoBar::getInstance()->setVisible(TRUE);
 		}
 
-		LLBottomTray::getInstance()->onMouselookModeOut();
+		LLChicletBar::getInstance()->setVisible(TRUE);
 
 		LLPanelStandStopFlying::getInstance()->setVisible(TRUE);
 
@@ -1906,14 +1967,19 @@ void LLAgent::endAnimationUpdateUI()
 	//---------------------------------------------------------------------
 	if (gAgentCamera.getCameraMode() == CAMERA_MODE_MOUSELOOK)
 	{
-		// hide menus
+		// clean up UI
+		// first show anything hidden by UI toggle
+		gViewerWindow->setUIVisibility(TRUE);
+
+		// then hide stuff we want hidden for mouselook 
+		gToolBarView->setToolBarsVisible(false);
 		gMenuBarView->setVisible(FALSE);
 		LLNavigationBar::getInstance()->setVisible(FALSE);
 		gStatusBar->setVisibleForMouselook(false);
 
 		LLPanelTopInfoBar::getInstance()->setVisible(FALSE);
 
-		LLBottomTray::getInstance()->onMouselookModeIn();
+		LLChicletBar::getInstance()->setVisible(FALSE);
 
 		LLPanelStandStopFlying::getInstance()->setVisible(FALSE);
 
@@ -3248,6 +3314,7 @@ void LLAgent::processAgentCachedTextureResponse(LLMessageSystem *mesgsys, void *
 	}
 
 	llinfos << "Received cached texture response for " << num_results << " textures." << llendl;
+	gAgentAvatarp->outputRezTiming("Fetched agent wearables textures from cache. Will now load them");
 
 	gAgentAvatarp->updateMeshTextures();
 
@@ -3361,7 +3428,14 @@ bool LLAgent::teleportCore(bool is_local)
 	LLFloaterReg::hideInstance("region_info");
 
 	// minimize the Search floater (STORM-1474)
-	LLFloaterReg::getInstance("search")->setMinimized(TRUE);
+	{
+		LLFloater* instance = LLFloaterReg::getInstance("search");
+
+		if (instance && instance->getVisible())
+		{
+			instance->setMinimized(TRUE);
+		}
+	}
 
 	LLViewerParcelMgr::getInstance()->deselectLand();
 	LLViewerMediaFocus::getInstance()->clearFocus();
@@ -3922,14 +3996,14 @@ void LLAgent::renderAutoPilotTarget()
 		F32 height_meters;
 		LLVector3d target_global;
 
-		glMatrixMode(GL_MODELVIEW);
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 		gGL.pushMatrix();
 
 		// not textured
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 
 		// lovely green
-		glColor4f(0.f, 1.f, 1.f, 1.f);
+		gGL.color4f(0.f, 1.f, 1.f, 1.f);
 
 		target_global = mAutoPilotTargetGlobal;
 
@@ -3937,9 +4011,9 @@ void LLAgent::renderAutoPilotTarget()
 
 		height_meters = 1.f;
 
-		glScalef(height_meters, height_meters, height_meters);
+		gGL.scalef(height_meters, height_meters, height_meters);
 
-		gSphere.render(1500.f);
+		gSphere.render();
 
 		gGL.popMatrix();
 	}
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h
index 5e23ced4243c1b065617869dfa9509715583707a..740770bbdf26b0cbea117d436f8e38726b16d66f 100644
--- a/indra/newview/llagent.h
+++ b/indra/newview/llagent.h
@@ -282,7 +282,23 @@ class LLAgent : public LLOldEvents::LLObservable
 	static void		toggleFlying();
 	static bool		enableFlying();
 	BOOL			canFly(); 			// Does this parcel allow you to fly?
-	
+
+	//--------------------------------------------------------------------
+	// Voice
+	//--------------------------------------------------------------------
+public:
+	bool 			isVoiceConnected() const { return mVoiceConnected; }
+	void			setVoiceConnected(const bool b)	{ mVoiceConnected = b; }
+
+	static void		pressMicrophone(const LLSD& name);
+	static void		releaseMicrophone(const LLSD& name);
+	static void		toggleMicrophone(const LLSD& name);
+	static bool		isMicrophoneOn(const LLSD& sdname);
+	static bool		isActionAllowed(const LLSD& sdname);
+
+private:
+	bool			mVoiceConnected;
+
 	//--------------------------------------------------------------------
 	// Chat
 	//--------------------------------------------------------------------
@@ -575,6 +591,14 @@ class LLAgent : public LLOldEvents::LLObservable
  **                                                                            **
  *******************************************************************************/
 
+	// Build
+public:
+	bool			canEditParcel() const { return mCanEditParcel; }
+private:
+	bool			mCanEditParcel;
+
+	static void parcelChangedCallback();
+
 /********************************************************************************
  **                                                                            **
  **                    ACCESS
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index f195c985c08cb825a59040d9f0b737049cf258c6..751b73e1eb0a1fd68399acc9d8b1a7fb8c68e852 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -2040,11 +2040,12 @@ void LLAgentCamera::resetCamera()
 //-----------------------------------------------------------------------------
 void LLAgentCamera::changeCameraToMouselook(BOOL animate)
 {
-	if (!gSavedSettings.getBOOL("EnableMouselook") || LLViewerJoystick::getInstance()->getOverrideCamera())
+	if (!gSavedSettings.getBOOL("EnableMouselook") 
+		|| LLViewerJoystick::getInstance()->getOverrideCamera())
 	{
 		return;
 	}
-
+	
 	// visibility changes at end of animation
 	gViewerWindow->getWindow()->resetBusyCount();
 
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index b9125ec8d363c12ae6c5e15b706d14f1e4dc3ca1..09305a5b4d2685f298652fc5ed7f3aa35983dcea 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -33,6 +33,7 @@
 #include "llagentwearablesfetch.h"
 #include "llappearancemgr.h"
 #include "llcallbacklist.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llgesturemgr.h"
 #include "llinventorybridge.h"
 #include "llinventoryfunctions.h"
@@ -42,7 +43,6 @@
 #include "llnotificationsutil.h"
 #include "lloutfitobserver.h"
 #include "llsidepanelappearance.h"
-#include "llsidetray.h"
 #include "lltexlayer.h"
 #include "lltooldraganddrop.h"
 #include "llviewerregion.h"
@@ -185,6 +185,7 @@ void LLAgentWearables::setAvatarObject(LLVOAvatarSelf *avatar)
 { 
 	if (avatar)
 	{
+		avatar->outputRezTiming("Sending wearables request");
 		sendAgentWearablesRequest();
 	}
 }
@@ -949,6 +950,11 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs
 	if (mInitialWearablesUpdateReceived)
 		return;
 
+	if (isAgentAvatarValid())
+	{
+		gAgentAvatarp->outputRezTiming("Received initial wearables update");
+	}
+
 	// notify subscribers that wearables started loading. See EXT-7777
 	// *TODO: find more proper place to not be called from deprecated method.
 	// Seems such place is found: LLInitialWearablesFetch::processContents()
@@ -1168,15 +1174,12 @@ class OnWearableItemCreatedCB: public LLInventoryCallback
 	std::vector<LLWearable*> mWearablesAwaitingItems;
 };
 
-void LLAgentWearables::createStandardWearables(BOOL female)
+void LLAgentWearables::createStandardWearables()
 {
-	llwarns << "Creating Standard " << (female ? "female" : "male")
-			<< " Wearables" << llendl;
+	llwarns << "Creating standard wearables" << llendl;
 
 	if (!isAgentAvatarValid()) return;
 
-	gAgentAvatarp->setSex(female ? SEX_FEMALE : SEX_MALE);
-
 	const BOOL create[LLWearableType::WT_COUNT] = 
 		{
 			TRUE,  //LLWearableType::WT_SHAPE
@@ -1622,6 +1625,11 @@ void LLAgentWearables::queryWearableCache()
 	//VWR-22113: gAgent.getRegion() can return null if invalid, seen here on logout
 	if(gAgent.getRegion())
 	{
+		if (isAgentAvatarValid())
+		{
+			gAgentAvatarp->outputRezTiming("Fetching textures from cache");
+		}
+
 		llinfos << "Requesting texture cache entry for " << num_queries << " baked textures" << llendl;
 		gMessageSystem->sendReliable(gAgent.getRegion()->getHost());
 		gAgentQueryManager.mNumPendingQueries++;
@@ -2015,7 +2023,7 @@ void LLAgentWearables::editWearable(const LLUUID& item_id)
 	}
 
 	const BOOL disable_camera_switch = LLWearableType::getDisableCameraSwitch(wearable->getType());
-	LLPanel* panel = LLSideTray::getInstance()->getPanel("sidepanel_appearance");
+	LLPanel* panel = LLFloaterSidePanelContainer::getPanel("appearance");
 	LLSidepanelAppearance::editWearable(wearable, panel, disable_camera_switch);
 }
 
diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h
index 252b812c2785d23c2c9cfe0f325abc62d5260928..01cae3ffd86b1cb59b611655b2bf89d7c5cb434f 100644
--- a/indra/newview/llagentwearables.h
+++ b/indra/newview/llagentwearables.h
@@ -56,7 +56,7 @@ class LLAgentWearables : public LLInitClass<LLAgentWearables>
 	LLAgentWearables();
 	virtual ~LLAgentWearables();
 	void 			setAvatarObject(LLVOAvatarSelf *avatar);
-	void			createStandardWearables(BOOL female); 
+	void			createStandardWearables(); 
 	void			cleanup();
 	void			dump();
 
diff --git a/indra/newview/llagentwearablesfetch.cpp b/indra/newview/llagentwearablesfetch.cpp
index 1edc96e1652200861bc4e909d2888b19d2a3cd9b..8cba54347e3141f744f8dc32970b407e53dc50ca 100644
--- a/indra/newview/llagentwearablesfetch.cpp
+++ b/indra/newview/llagentwearablesfetch.cpp
@@ -87,6 +87,10 @@ class LLOrderMyOutfitsOnDestroy: public LLInventoryCallback
 LLInitialWearablesFetch::LLInitialWearablesFetch(const LLUUID& cof_id) :
 	LLInventoryFetchDescendentsObserver(cof_id)
 {
+	if (isAgentAvatarValid())
+	{
+		gAgentAvatarp->outputRezTiming("Initial wearables fetch started");
+	}
 }
 
 LLInitialWearablesFetch::~LLInitialWearablesFetch()
@@ -101,6 +105,10 @@ void LLInitialWearablesFetch::done()
 	// idle tick instead.
 	gInventory.removeObserver(this);
 	doOnIdleOneTime(boost::bind(&LLInitialWearablesFetch::processContents,this));
+	if (isAgentAvatarValid())
+	{
+		gAgentAvatarp->outputRezTiming("Initial wearables fetch done");
+	}
 }
 
 void LLInitialWearablesFetch::add(InitialWearableData &data)
@@ -111,6 +119,12 @@ void LLInitialWearablesFetch::add(InitialWearableData &data)
 
 void LLInitialWearablesFetch::processContents()
 {
+	if(!gAgentAvatarp) //no need to process wearables if the agent avatar is deleted.
+	{
+		delete this;
+		return ;
+	}
+
 	// Fetch the wearable items from the Current Outfit Folder
 	LLInventoryModel::cat_array_t cat_array;
 	LLInventoryModel::item_array_t wearable_array;
diff --git a/indra/newview/llagentwearablesfetch.h b/indra/newview/llagentwearablesfetch.h
index 7dafab4a3359f702702553e2e4bf733991135149..bedc445c0ebe76eaa480e40d7dd4afc39e3f18e5 100644
--- a/indra/newview/llagentwearablesfetch.h
+++ b/indra/newview/llagentwearablesfetch.h
@@ -40,6 +40,8 @@
 //--------------------------------------------------------------------
 class LLInitialWearablesFetch : public LLInventoryFetchDescendentsObserver
 {
+	LOG_CLASS(LLInitialWearablesFetch);
+
 public:
 	LLInitialWearablesFetch(const LLUUID& cof_id);
 	~LLInitialWearablesFetch();
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index 3cb9b77010eed60ce98d493cae49f1acd950426e..33f5373d7e80627cc3e3ad9581040968b2a89dc0 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -34,6 +34,7 @@
 #include "llattachmentsmgr.h"
 #include "llcommandhandler.h"
 #include "lleventtimer.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llgesturemgr.h"
 #include "llinventorybridge.h"
 #include "llinventoryfunctions.h"
@@ -43,7 +44,6 @@
 #include "lloutfitslist.h"
 #include "llselectmgr.h"
 #include "llsidepanelappearance.h"
-#include "llsidetray.h"
 #include "llviewerobjectlist.h"
 #include "llvoavatar.h"
 #include "llvoavatarself.h"
@@ -116,7 +116,7 @@ class LLAppearanceHandler : public LLCommandHandler
 			return true;
 		}
 
-		LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD());
+		LLFloaterSidePanelContainer::showPanel("appearance", LLSD());
 		return true;
 	}
 };
@@ -268,6 +268,8 @@ struct LLFoundData
 	
 class LLWearableHoldingPattern
 {
+	LOG_CLASS(LLWearableHoldingPattern);
+
 public:
 	LLWearableHoldingPattern();
 	~LLWearableHoldingPattern();
@@ -436,6 +438,11 @@ void LLWearableHoldingPattern::checkMissingWearables()
 
 void LLWearableHoldingPattern::onAllComplete()
 {
+	if (isAgentAvatarValid())
+	{
+		gAgentAvatarp->outputRezTiming("Agent wearables fetch complete");
+	}
+
 	if (!isMostRecent())
 	{
 		llwarns << "skipping because LLWearableHolding pattern is invalid (superceded by later outfit request)" << llendl;
@@ -1505,7 +1512,7 @@ void LLAppearanceMgr::updateCOF(const LLUUID& category, bool append)
 void LLAppearanceMgr::updatePanelOutfitName(const std::string& name)
 {
 	LLSidepanelAppearance* panel_appearance =
-		dynamic_cast<LLSidepanelAppearance *>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+		dynamic_cast<LLSidepanelAppearance *>(LLFloaterSidePanelContainer::getPanel("appearance"));
 	if (panel_appearance)
 	{
 		panel_appearance->refreshCurrentOutfitName(name);
@@ -1943,7 +1950,7 @@ void LLAppearanceMgr::wearInventoryCategoryOnAvatar( LLInventoryCategory* catego
 	if (gAgentCamera.cameraCustomizeAvatar())
 	{
 		// switching to outfit editor should automagically save any currently edited wearable
-		LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+		LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
 	}
 
 	LLAppearanceMgr::changeOutfit(TRUE, category->getUUID(), append);
@@ -2264,6 +2271,85 @@ void LLAppearanceMgr::updateIsDirty()
 	}
 }
 
+// *HACK: Must match name in Library or agent inventory
+const std::string ROOT_GESTURES_FOLDER = "Gestures";
+const std::string COMMON_GESTURES_FOLDER = "Common Gestures";
+const std::string MALE_GESTURES_FOLDER = "Male Gestures";
+const std::string FEMALE_GESTURES_FOLDER = "Female Gestures";
+const std::string SPEECH_GESTURES_FOLDER = "Speech Gestures";
+const std::string OTHER_GESTURES_FOLDER = "Other Gestures";
+
+void LLAppearanceMgr::copyLibraryGestures()
+{
+	llinfos << "Copying library gestures" << llendl;
+
+	// Copy gestures
+	LLUUID lib_gesture_cat_id =
+		gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE,false,true);
+	if (lib_gesture_cat_id.isNull())
+	{
+		llwarns << "Unable to copy gestures, source category not found" << llendl;
+	}
+	LLUUID dst_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE);
+
+	std::vector<std::string> gesture_folders_to_copy;
+	gesture_folders_to_copy.push_back(MALE_GESTURES_FOLDER);
+	gesture_folders_to_copy.push_back(FEMALE_GESTURES_FOLDER);
+	gesture_folders_to_copy.push_back(COMMON_GESTURES_FOLDER);
+	gesture_folders_to_copy.push_back(SPEECH_GESTURES_FOLDER);
+	gesture_folders_to_copy.push_back(OTHER_GESTURES_FOLDER);
+
+	for(std::vector<std::string>::iterator it = gesture_folders_to_copy.begin();
+		it != gesture_folders_to_copy.end();
+		++it)
+	{
+		std::string& folder_name = *it;
+
+		LLPointer<LLInventoryCallback> cb(NULL);
+
+		// After copying gestures, activate Common, Other, plus
+		// Male and/or Female, depending upon the initial outfit gender.
+		ESex gender = gAgentAvatarp->getSex();
+
+		std::string activate_male_gestures;
+		std::string activate_female_gestures;
+		switch (gender) {
+			case SEX_MALE:
+				activate_male_gestures = MALE_GESTURES_FOLDER;
+				break;
+			case SEX_FEMALE:
+				activate_female_gestures = FEMALE_GESTURES_FOLDER;
+				break;
+			case SEX_BOTH:
+				activate_male_gestures = MALE_GESTURES_FOLDER;
+				activate_female_gestures = FEMALE_GESTURES_FOLDER;
+				break;
+		}
+
+		if (folder_name == activate_male_gestures ||
+			folder_name == activate_female_gestures ||
+			folder_name == COMMON_GESTURES_FOLDER ||
+			folder_name == OTHER_GESTURES_FOLDER)
+		{
+			cb = new ActivateGestureCallback;
+		}
+
+		LLUUID cat_id = findDescendentCategoryIDByName(lib_gesture_cat_id,folder_name);
+		if (cat_id.isNull())
+		{
+			llwarns << "failed to find gesture folder for " << folder_name << llendl;
+		}
+		else
+		{
+			llinfos << "initiating fetch and copy for " << folder_name << " cat_id " << cat_id << llendl;
+			callAfterCategoryFetch(cat_id,
+								   boost::bind(&LLAppearanceMgr::shallowCopyCategory,
+											   &LLAppearanceMgr::instance(),
+											   cat_id, dst_id, cb));
+		}
+	}
+}
+
 void LLAppearanceMgr::autopopulateOutfits()
 {
 	// If this is the very first time the user has logged into viewer2+ (from a legacy viewer, or new account)
@@ -2284,10 +2370,19 @@ void LLAppearanceMgr::autopopulateOutfits()
 // Handler for anything that's deferred until avatar de-clouds.
 void LLAppearanceMgr::onFirstFullyVisible()
 {
+	gAgentAvatarp->outputRezTiming("Avatar fully loaded");
+	gAgentAvatarp->reportAvatarRezTime();
 	gAgentAvatarp->debugAvatarVisible();
+
 	// The auto-populate is failing at the point of generating outfits
 	// folders, so don't do the library copy until that is resolved.
 	// autopopulateOutfits();
+
+	// If this is the first time we've ever logged in,
+	// then copy default gestures from the library.
+	if (gAgent.isFirstLogin()) {
+		copyLibraryGestures();
+	}
 }
 
 bool LLAppearanceMgr::updateBaseOutfit()
@@ -2465,10 +2560,11 @@ class LLShowCreatedOutfit: public LLInventoryCallback
 		// add may be processed after login process is finished
 		if (mShowPanel)
 		{
-			LLSideTray::getInstance()->showPanel("panel_outfits_inventory", key);
+			LLFloaterSidePanelContainer::showPanel("appearance", "panel_outfits_inventory", key);
+
 		}
 		LLOutfitsList *outfits_list =
-			dynamic_cast<LLOutfitsList*>(LLSideTray::getInstance()->getPanel("outfitslist_tab"));
+			dynamic_cast<LLOutfitsList*>(LLFloaterSidePanelContainer::getPanel("appearance", "outfitslist_tab"));
 		if (outfits_list)
 		{
 			outfits_list->setSelectedOutfitByUUID(mFolderID);
diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h
index 4b1d95cf2541bb3655b2c2ab500447b27fabc62e..c1d561781d21f947f00b540480f7d3571add79df 100644
--- a/indra/newview/llappearancemgr.h
+++ b/indra/newview/llappearancemgr.h
@@ -151,6 +151,9 @@ class LLAppearanceMgr: public LLSingleton<LLAppearanceMgr>
 
 	// Create initial outfits from library.
 	void autopopulateOutfits();
+
+	// Copy initial gestures from library.
+	void copyLibraryGestures();
 	
 	void wearBaseOutfit();
 
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 12795a1ec6ad2cdf98cfda830171b88546ae5f65..49fbdbf1dffb75a25dc41c0a0c302bb5995c38ec 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -45,6 +45,8 @@
 #include "llwindow.h"
 #include "llviewerstats.h"
 #include "llviewerstatsrecorder.h"
+#include "llmarketplacefunctions.h"
+#include "llmarketplacenotifications.h"
 #include "llmd5.h"
 #include "llmeshrepository.h"
 #include "llpumpio.h"
@@ -75,13 +77,13 @@
 //#include "llfirstuse.h"
 #include "llrender.h"
 #include "llteleporthistory.h"
+#include "lltoast.h"
 #include "lllocationhistory.h"
 #include "llfasttimerview.h"
 #include "llvector4a.h"
 #include "llviewermenufile.h"
 #include "llvoicechannel.h"
 #include "llvoavatarself.h"
-#include "llsidetray.h"
 #include "llurlmatch.h"
 #include "lltextutil.h"
 #include "lllogininstance.h"
@@ -90,6 +92,7 @@
 #include "llweb.h"
 #include "llsecondlifeurls.h"
 #include "llupdaterservice.h"
+#include "llcallfloater.h"
 
 // Linden library includes
 #include "llavatarnamecache.h"
@@ -110,6 +113,8 @@
 
 // Third party library includes
 #include <boost/bind.hpp>
+#include <boost/foreach.hpp>
+
 
 
 #if LL_WINDOWS
@@ -520,6 +525,8 @@ static void settings_to_globals()
 
 	LLSurface::setTextureSize(gSavedSettings.getU32("RegionTextureSize"));
 	
+	LLRender::sGLCoreProfile = gSavedSettings.getBOOL("RenderGLCoreProfile");
+
 	LLImageGL::sGlobalUseAnisotropic	= gSavedSettings.getBOOL("RenderAnisotropic");
 	LLVOVolume::sLODFactor				= gSavedSettings.getF32("RenderVolumeLODFactor");
 	LLVOVolume::sDistanceFactor			= 1.f-LLVOVolume::sLODFactor * 0.1f;
@@ -554,42 +561,6 @@ static void settings_modify()
 	gDebugGL = gSavedSettings.getBOOL("RenderDebugGL") || gDebugSession;
 	gDebugPipeline = gSavedSettings.getBOOL("RenderDebugPipeline");
 	gAuditTexture = gSavedSettings.getBOOL("AuditTexture");
-#if LL_VECTORIZE
-	if (gSysCPU.hasAltivec())
-	{
-		gSavedSettings.setBOOL("VectorizeEnable", TRUE );
-		gSavedSettings.setU32("VectorizeProcessor", 0 );
-	}
-	else
-	if (gSysCPU.hasSSE2())
-	{
-		gSavedSettings.setBOOL("VectorizeEnable", TRUE );
-		gSavedSettings.setU32("VectorizeProcessor", 2 );
-	}
-	else
-	if (gSysCPU.hasSSE())
-	{
-		gSavedSettings.setBOOL("VectorizeEnable", TRUE );
-		gSavedSettings.setU32("VectorizeProcessor", 1 );
-	}
-	else
-	{
-		// Don't bother testing or running if CPU doesn't support it. JC
-		gSavedSettings.setBOOL("VectorizePerfTest", FALSE );
-		gSavedSettings.setBOOL("VectorizeEnable", FALSE );
-		gSavedSettings.setU32("VectorizeProcessor", 0 );
-		gSavedSettings.setBOOL("VectorizeSkin", FALSE);
-	}
-#else
-	// This build target doesn't support SSE, don't test/run.
-	gSavedSettings.setBOOL("VectorizePerfTest", FALSE );
-	gSavedSettings.setBOOL("VectorizeEnable", FALSE );
-	gSavedSettings.setU32("VectorizeProcessor", 0 );
-	gSavedSettings.setBOOL("VectorizeSkin", FALSE);
-
-	// disable fullscreen mode, unsupported
-	gSavedSettings.setBOOL("WindowFullScreen", FALSE);
-#endif
 }
 
 class LLFastTimerLogThread : public LLThread
@@ -724,7 +695,7 @@ bool LLAppViewer::init()
 	//set the max heap size.
 	initMaxHeapSize() ;
 
-	LLPrivateMemoryPoolManager::initClass((BOOL)gSavedSettings.getBOOL("MemoryPrivatePoolEnabled")) ;
+	LLPrivateMemoryPoolManager::initClass((BOOL)gSavedSettings.getBOOL("MemoryPrivatePoolEnabled"), (U32)gSavedSettings.getU32("MemoryPrivatePoolSize")) ;
 
 	// write Google Breakpad minidump files to our log directory
 	std::string logdir = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "");
@@ -751,7 +722,9 @@ bool LLAppViewer::init()
 
     // *NOTE:Mani - LLCurl::initClass is not thread safe. 
     // Called before threads are created.
-    LLCurl::initClass(gSavedSettings.getBOOL("CurlUseMultipleThreads"));
+    LLCurl::initClass(gSavedSettings.getF32("CurlRequestTimeOut"), 
+						gSavedSettings.getS32("CurlMaximumNumberOfHandles"), 
+						gSavedSettings.getBOOL("CurlUseMultipleThreads"));
 	LL_INFOS("InitInfo") << "LLCurl initialized." << LL_ENDL ;
 
     LLMachineID::init();
@@ -771,7 +744,7 @@ bool LLAppViewer::init()
 		LLViewerAssetStatsFF::init();
 	}
 
-    initThreads();
+	initThreads();
 	LL_INFOS("InitInfo") << "Threads initialized." << LL_ENDL ;
 
 	// Initialize settings early so that the defaults for ignorable dialogs are
@@ -845,9 +818,9 @@ bool LLAppViewer::init()
 	LLWeb::initClass();			  // do this after LLUI
 	
 	// Provide the text fields with callbacks for opening Urls
-	LLUrlAction::setOpenURLCallback(&LLWeb::loadURL);
-	LLUrlAction::setOpenURLInternalCallback(&LLWeb::loadURLInternal);
-	LLUrlAction::setOpenURLExternalCallback(&LLWeb::loadURLExternal);
+	LLUrlAction::setOpenURLCallback(boost::bind(&LLWeb::loadURL, _1, LLStringUtil::null, LLStringUtil::null));
+	LLUrlAction::setOpenURLInternalCallback(boost::bind(&LLWeb::loadURLInternal, _1, LLStringUtil::null, LLStringUtil::null));
+	LLUrlAction::setOpenURLExternalCallback(boost::bind(&LLWeb::loadURLExternal, _1, true, LLStringUtil::null));
 	LLUrlAction::setExecuteSLURLCallback(&LLURLDispatcher::dispatchFromTextEditor);
 
 	// Let code in llui access the viewer help floater
@@ -873,8 +846,6 @@ bool LLAppViewer::init()
 
 	LLAgent::parseTeleportMessages("teleport_strings.xml");
 
-	LLViewerJointMesh::updateVectorize();
-
 	// load MIME type -> media impl mappings
 	std::string mime_types_name;
 #if LL_DARWIN
@@ -1124,9 +1095,12 @@ void LLAppViewer::checkMemory()
 {
 	const static F32 MEMORY_CHECK_INTERVAL = 1.0f ; //second
 	//const static F32 MAX_QUIT_WAIT_TIME = 30.0f ; //seconds
-	const static U32 MAX_SIZE_CHECKED_MEMORY_BLOCK = 64 * 1024 * 1024 ; //64 MB
 	//static F32 force_quit_timer = MAX_QUIT_WAIT_TIME + MEMORY_CHECK_INTERVAL ;
-	static void* last_reserved_address = NULL ;
+
+	if(!gGLManager.mDebugGPU)
+	{
+		return ;
+	}
 
 	if(MEMORY_CHECK_INTERVAL > mMemCheckTimer.getElapsedTimeF32())
 	{
@@ -1134,53 +1108,12 @@ void LLAppViewer::checkMemory()
 	}
 	mMemCheckTimer.reset() ;
 
-	if(gGLManager.mDebugGPU)
-	{
 		//update the availability of memory
 		LLMemory::updateMemoryInfo() ;
-	}
-
-	//check the virtual address space fragmentation
-	if(!last_reserved_address)
-	{
-		last_reserved_address = LLMemory::tryToAlloc(last_reserved_address, MAX_SIZE_CHECKED_MEMORY_BLOCK) ;
-	}
-	else
-	{
-		last_reserved_address = LLMemory::tryToAlloc(last_reserved_address, MAX_SIZE_CHECKED_MEMORY_BLOCK) ;
-		if(!last_reserved_address) //failed, try once more
-		{
-			last_reserved_address = LLMemory::tryToAlloc(last_reserved_address, MAX_SIZE_CHECKED_MEMORY_BLOCK) ;
-		}
-	}
 
-	S32 is_low = !last_reserved_address || LLMemory::isMemoryPoolLow() ;
-
-	//if(is_low < 0) //to force quit
-	//{
-	//	if(force_quit_timer > MAX_QUIT_WAIT_TIME) //just hit the limit for the first time
-	//	{
-	//		//send out the notification to tell the viewer is about to quit in 30 seconds.
-	//		LLNotification::Params params("ForceQuitDueToLowMemory");
-	//		LLNotifications::instance().add(params);
-
-	//		force_quit_timer = MAX_QUIT_WAIT_TIME - MEMORY_CHECK_INTERVAL ;
-	//	}
-	//	else
-	//	{
-	//		force_quit_timer -= MEMORY_CHECK_INTERVAL ;
-	//		if(force_quit_timer < 0.f)
-	//		{
-	//			forceQuit() ; //quit
-	//		}
-	//	}
-	//}
-	//else
-	//{
-	//	force_quit_timer = MAX_QUIT_WAIT_TIME + MEMORY_CHECK_INTERVAL ;
-	//}
+	bool is_low = LLMemory::isMemoryPoolLow() ;
 
-	LLPipeline::throttleNewMemoryAllocation(!is_low ? FALSE : TRUE) ;		
+	LLPipeline::throttleNewMemoryAllocation(is_low) ;		
 	
 	if(is_low)
 	{
@@ -1213,7 +1146,7 @@ bool LLAppViewer::mainLoop()
 	//-------------------------------------------
 
 	// Create IO Pump to use for HTTP Requests.
-	gServicePump = new LLPumpIO;
+	gServicePump = new LLPumpIO(gAPRPoolp);
 	LLHTTPClient::setPump(*gServicePump);
 	LLCurl::setCAFile(gDirUtilp->getCAFile());
 
@@ -1221,6 +1154,7 @@ bool LLAppViewer::mainLoop()
 
 	LLVoiceChannel::initClass();
 	LLVoiceClient::getInstance()->init(gServicePump);
+	LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLCallFloater::sOnCurrentChannelChanged, _1), true);
 	LLTimer frameTimer,idleTimer;
 	LLTimer debugTime;
 	LLViewerJoystick* joystick(LLViewerJoystick::getInstance());
@@ -1255,7 +1189,7 @@ bool LLAppViewer::mainLoop()
 			if (gViewerWindow)
 			{
 				LLFastTimer t2(FTM_MESSAGES);
-				gViewerWindow->mWindow->processMiscNativeEvents();
+				gViewerWindow->getWindow()->processMiscNativeEvents();
 			}
 		
 			pingMainloopTimeout("Main:GatherInput");
@@ -1268,7 +1202,7 @@ bool LLAppViewer::mainLoop()
 					llwarns << " Someone took over my signal/exception handler (post messagehandling)!" << llendl;
 				}
 
-				gViewerWindow->mWindow->gatherInput();
+				gViewerWindow->getWindow()->gatherInput();
 			}
 
 #if 1 && !LL_RELEASE_FOR_DOWNLOAD
@@ -1297,9 +1231,9 @@ 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->mWindow->getVisible())
+				if ((gHeadlessClient || gViewerWindow->getWindow()->getVisible())
 					&& gViewerWindow->getActive()
-					&& !gViewerWindow->mWindow->getMinimized()
+					&& !gViewerWindow->getWindow()->getMinimized()
 					&& LLStartUp::getStartupState() == STATE_STARTED
 					&& (gHeadlessClient || !gViewerWindow->getShowProgress())
 					&& !gFocusMgr.focusLocked())
@@ -1378,7 +1312,7 @@ bool LLAppViewer::mainLoop()
 				}
 
 				// yield cooperatively when not running as foreground window
-				if (   (gViewerWindow && !gViewerWindow->mWindow->getVisible())
+				if (   (gViewerWindow && !gViewerWindow->getWindow()->getVisible())
 						|| !gFocusMgr.getAppHasFocus())
 				{
 					// Sleep if we're not rendering, or the window is minimized.
@@ -1416,17 +1350,19 @@ bool LLAppViewer::mainLoop()
 				{
 					S32 work_pending = 0;
 					S32 io_pending = 0;
+					F32 max_time = llmin(gFrameIntervalSeconds*10.f, 1.f);
+
 					{
 						LLFastTimer ftm(FTM_TEXTURE_CACHE);
- 						work_pending += LLAppViewer::getTextureCache()->update(1); // unpauses the texture cache thread
+ 						work_pending += LLAppViewer::getTextureCache()->update(max_time); // unpauses the texture cache thread
 					}
 					{
 						LLFastTimer ftm(FTM_DECODE);
-	 					work_pending += LLAppViewer::getImageDecodeThread()->update(1); // unpauses the image thread
+	 					work_pending += LLAppViewer::getImageDecodeThread()->update(max_time); // unpauses the image thread
 					}
 					{
 						LLFastTimer ftm(FTM_DECODE);
-	 					work_pending += LLAppViewer::getTextureFetch()->update(1); // unpauses the texture fetch thread
+	 					work_pending += LLAppViewer::getTextureFetch()->update(max_time); // unpauses the texture fetch thread
 					}
 
 					{
@@ -1452,6 +1388,11 @@ bool LLAppViewer::mainLoop()
 					}
 				}
 				gMeshRepo.update() ;
+				
+				if(!LLCurl::getCurlThread()->update(1))
+				{
+					LLCurl::getCurlThread()->pause() ; //nothing in the curl thread.
+				}
 
 				if(!total_work_pending) //pause texture fetching threads if nothing to process.
 				{
@@ -1572,16 +1513,16 @@ bool LLAppViewer::cleanup()
 	}
 
 	// *TODO - generalize this and move DSO wrangling to a helper class -brad
-	for(std::map<apr_dso_handle_t*, boost::shared_ptr<LLAPRPool> >::iterator plugin = mPlugins.begin();
-		plugin != mPlugins.end(); ++plugin)
+	std::set<struct apr_dso_handle_t *>::const_iterator i;
+	for(i = mPlugins.begin(); i != mPlugins.end(); ++i)
 	{
 		int (*ll_plugin_stop_func)(void) = NULL;
-		apr_status_t rv = apr_dso_sym((apr_dso_handle_sym_t*)&ll_plugin_stop_func, plugin->first, "ll_plugin_stop");
+		apr_status_t rv = apr_dso_sym((apr_dso_handle_sym_t*)&ll_plugin_stop_func, *i, "ll_plugin_stop");
 		ll_plugin_stop_func();
 
-		rv = apr_dso_unload(plugin->first);
+		rv = apr_dso_unload(*i);
 	}
-	mPlugins.clear();	// Forget handles and destroy all memory pools.
+	mPlugins.clear();
 
 	//flag all elements as needing to be destroyed immediately
 	// to ensure shutdown order
@@ -1847,6 +1788,7 @@ bool LLAppViewer::cleanup()
 		pending += LLAppViewer::getTextureFetch()->update(1); // unpauses the texture fetch thread
 		pending += LLVFSThread::updateClass(0);
 		pending += LLLFSThread::updateClass(0);
+		pending += LLCurl::getCurlThread()->update(1) ;
 		F64 idle_time = idleTimer.getElapsedTimeF64();
 		if(!pending)
 		{
@@ -1858,6 +1800,7 @@ bool LLAppViewer::cleanup()
 			break;
 		}
 	}
+	LLCurl::getCurlThread()->pause() ;
 
 	// Delete workers first
 	// shotdown all worker threads before deleting them in case of co-dependencies
@@ -2005,6 +1948,8 @@ bool LLAppViewer::initThreads()
 	static const bool enable_threads = true;
 #endif
 
+	LLImage::initClass();
+
 	LLVFSThread::initClass(enable_threads && false);
 	LLLFSThread::initClass(enable_threads && false);
 
@@ -2014,12 +1959,11 @@ bool LLAppViewer::initThreads()
 	LLAppViewer::sTextureFetch = new LLTextureFetch(LLAppViewer::getTextureCache(),
 													sImageDecodeThread,
 													enable_threads && true,
-													app_metrics_qa_mode);
-	LLImage::initClass();
+													app_metrics_qa_mode);	
 
 	if (LLFastTimer::sLog || LLFastTimer::sMetricLog)
 	{
-		LLFastTimer::sLogLock = new LLMutex;
+		LLFastTimer::sLogLock = new LLMutex(NULL);
 		mFastTimerLogThread = new LLFastTimerLogThread(LLFastTimer::sLogName);
 		mFastTimerLogThread->start();
 	}
@@ -2080,42 +2024,37 @@ bool LLAppViewer::loadSettingsFromDirectory(const std::string& location_key,
 		llerrs << "Invalid settings location list" << llendl;
 	}
 
-	for(LLInitParam::ParamIterator<SettingsGroup>::const_iterator it = mSettingsLocationList->groups.begin(), end_it = mSettingsLocationList->groups.end();
-		it != end_it;
-		++it)
+	BOOST_FOREACH(const SettingsGroup& group, mSettingsLocationList->groups)
 	{
 		// skip settings groups that aren't the one we requested
-		if (it->name() != location_key) continue;
+		if (group.name() != location_key) continue;
 
-		ELLPath path_index = (ELLPath)it->path_index();
+		ELLPath path_index = (ELLPath)group.path_index();
 		if(path_index <= LL_PATH_NONE || path_index >= LL_PATH_LAST)
 		{
 			llerrs << "Out of range path index in app_settings/settings_files.xml" << llendl;
 			return false;
 		}
 
-		LLInitParam::ParamIterator<SettingsFile>::const_iterator file_it, end_file_it;
-		for (file_it = it->files.begin(), end_file_it = it->files.end();
-			file_it != end_file_it;
-			++file_it)
+		BOOST_FOREACH(const SettingsFile& file, group.files)
 		{
-			llinfos << "Attempting to load settings for the group " << file_it->name()
+			llinfos << "Attempting to load settings for the group " << file.name()
 			    << " - from location " << location_key << llendl;
 
-			LLControlGroup* settings_group = LLControlGroup::getInstance(file_it->name);
+			LLControlGroup* settings_group = LLControlGroup::getInstance(file.name);
 			if(!settings_group)
 			{
-				llwarns << "No matching settings group for name " << file_it->name() << llendl;
+				llwarns << "No matching settings group for name " << file.name() << llendl;
 				continue;
 			}
 
 			std::string full_settings_path;
 
-			if (file_it->file_name_setting.isProvided() 
-				&& gSavedSettings.controlExists(file_it->file_name_setting))
+			if (file.file_name_setting.isProvided() 
+				&& gSavedSettings.controlExists(file.file_name_setting))
 			{
 				// try to find filename stored in file_name_setting control
-				full_settings_path = gSavedSettings.getString(file_it->file_name_setting);
+				full_settings_path = gSavedSettings.getString(file.file_name_setting);
 				if (full_settings_path.empty())
 				{
 					continue;
@@ -2129,16 +2068,16 @@ bool LLAppViewer::loadSettingsFromDirectory(const std::string& location_key,
 			else
 			{
 				// by default, use specified file name
-				full_settings_path = gDirUtilp->getExpandedFilename((ELLPath)path_index, file_it->file_name());
+				full_settings_path = gDirUtilp->getExpandedFilename((ELLPath)path_index, file.file_name());
 			}
 
-			if(settings_group->loadFromFile(full_settings_path, set_defaults, file_it->persistent))
+			if(settings_group->loadFromFile(full_settings_path, set_defaults, file.persistent))
 			{	// success!
 				llinfos << "Loaded settings file " << full_settings_path << llendl;
 			}
 			else
 			{	// failed to load
-				if(file_it->required)
+				if(file.required)
 				{
 					llerrs << "Error: Cannot load required settings file from: " << full_settings_path << llendl;
 					return false;
@@ -2161,20 +2100,15 @@ bool LLAppViewer::loadSettingsFromDirectory(const std::string& location_key,
 std::string LLAppViewer::getSettingsFilename(const std::string& location_key,
 											 const std::string& file)
 {
-	for(LLInitParam::ParamIterator<SettingsGroup>::const_iterator it = mSettingsLocationList->groups.begin(), end_it = mSettingsLocationList->groups.end();
-		it != end_it;
-		++it)
+	BOOST_FOREACH(const SettingsGroup& group, mSettingsLocationList->groups)
 	{
-		if (it->name() == location_key)
+		if (group.name() == location_key)
 		{
-			LLInitParam::ParamIterator<SettingsFile>::const_iterator file_it, end_file_it;
-			for (file_it = it->files.begin(), end_file_it = it->files.end();
-				file_it != end_file_it;
-				++file_it)
+			BOOST_FOREACH(const SettingsFile& settings_file, group.files)
 			{
-				if (file_it->name() == file)
+				if (settings_file.name() == file)
 				{
-					return file_it->file_name;
+					return settings_file.file_name;
 				}
 			}
 		}
@@ -2326,7 +2260,7 @@ bool LLAppViewer::initConfiguration()
 
 	if (gSavedSettings.getBOOL("FirstRunThisInstall"))
 	{
-		gSavedSettings.setString("SessionSettingsFile", "settings.xml");
+		// Note that the "FirstRunThisInstall" settings is currently unused.
 		gSavedSettings.setBOOL("FirstRunThisInstall", FALSE);
 	}
 
@@ -2870,48 +2804,15 @@ void LLAppViewer::initUpdater()
 
 void LLAppViewer::checkForCrash(void)
 {
-    
 #if LL_SEND_CRASH_REPORTS
 	if (gLastExecEvent == LAST_EXEC_FROZE)
     {
-        llinfos << "Last execution froze, requesting to send crash report." << llendl;
-        //
-        // Pop up a freeze or crash warning dialog
-        //
-        S32 choice;
-	const S32 cb = gCrashSettings.getS32("CrashSubmitBehavior");
-        if(cb == CRASH_BEHAVIOR_ASK)
-        {
-            std::ostringstream msg;
-			msg << LLTrans::getString("MBFrozenCrashed");
-			std::string alert = LLTrans::getString("APP_NAME") + " " + LLTrans::getString("MBAlert");
-            choice = OSMessageBox(msg.str(),
-                                  alert,
-                                  OSMB_YESNO);
-        } 
-        else if(cb == CRASH_BEHAVIOR_NEVER_SEND)
-        {
-            choice = OSBTN_NO;
-        }
-        else
-        {
-            choice = OSBTN_YES;
-        }
-
-        if (OSBTN_YES == choice)
-        {
-            llinfos << "Sending crash report." << llendl;
+        llinfos << "Last execution froze, sending a crash report." << llendl;
             
-            bool report_freeze = true;
-            handleCrashReporting(report_freeze);
-        }
-        else
-        {
-            llinfos << "Not sending crash report." << llendl;
-        }
+		bool report_freeze = true;
+		handleCrashReporting(report_freeze);
     }
 #endif // LL_SEND_CRASH_REPORTS    
-    
 }
 
 //
@@ -2937,11 +2838,21 @@ bool LLAppViewer::initWindow()
 
 	// always start windowed
 	BOOL ignorePixelDepth = gSavedSettings.getBOOL("IgnorePixelDepth");
-	gViewerWindow = new LLViewerWindow(gWindowTitle, 
-		VIEWER_WINDOW_CLASSNAME,
-		gSavedSettings.getS32("WindowX"), gSavedSettings.getS32("WindowY"),
-		gSavedSettings.getS32("WindowWidth"), gSavedSettings.getS32("WindowHeight"),
-		gSavedSettings.getBOOL("WindowFullScreen"), ignorePixelDepth);
+
+	LLViewerWindow::Params window_params;
+	window_params
+		.title(gWindowTitle)
+		.name(VIEWER_WINDOW_CLASSNAME)
+		.x(gSavedSettings.getS32("WindowX"))
+		.y(gSavedSettings.getS32("WindowY"))
+		.width(gSavedSettings.getU32("WindowWidth"))
+		.height(gSavedSettings.getU32("WindowHeight"))
+		.min_width(gSavedSettings.getU32("MinWindowWidth"))
+		.min_height(gSavedSettings.getU32("MinWindowHeight"))
+		.fullscreen(gSavedSettings.getBOOL("FullScreen"))
+		.ignore_pixel_depth(ignorePixelDepth);
+
+	gViewerWindow = new LLViewerWindow(window_params);
 
 	LL_INFOS("AppInit") << "gViewerwindow created." << LL_ENDL;
 
@@ -2968,7 +2879,7 @@ bool LLAppViewer::initWindow()
 		
 	if (gSavedSettings.getBOOL("WindowMaximized"))
 	{
-		gViewerWindow->mWindow->maximize();
+		gViewerWindow->getWindow()->maximize();
 	}
 
 	//
@@ -3011,7 +2922,7 @@ bool LLAppViewer::initWindow()
 
 	if (gSavedSettings.getBOOL("WindowMaximized"))
 	{
-		gViewerWindow->mWindow->maximize();
+		gViewerWindow->getWindow()->maximize();
 	}
 
 	LLUI::sWindow = gViewerWindow->getWindow();
@@ -3023,7 +2934,7 @@ bool LLAppViewer::initWindow()
 	gViewerWindow->initBase();
 
 	// show viewer window
-	//gViewerWindow->mWindow->show();
+	//gViewerWindow->getWindow()->show();
 
 	LL_INFOS("AppInit") << "Window initialization done." << LL_ENDL;
 	return true;
@@ -3057,12 +2968,12 @@ void LLAppViewer::cleanupSavedSettings()
 	// as we don't track it in callbacks
 	if(NULL != gViewerWindow)
 	{
-		BOOL maximized = gViewerWindow->mWindow->getMaximized();
+		BOOL maximized = gViewerWindow->getWindow()->getMaximized();
 		if (!maximized)
 		{
 			LLCoordScreen window_pos;
 			
-			if (gViewerWindow->mWindow->getPosition(&window_pos))
+			if (gViewerWindow->getWindow()->getPosition(&window_pos))
 			{
 				gSavedSettings.setS32("WindowX", window_pos.mX);
 				gSavedSettings.setS32("WindowY", window_pos.mY);
@@ -3162,6 +3073,8 @@ void LLAppViewer::handleViewerCrash()
 
 	llinfos << "Last render pool type: " << LLPipeline::sCurRenderPoolType << llendl ;
 
+	LLMemory::logMemoryInfo(true) ;
+
 	//print out recorded call stacks if there are any.
 	LLError::LLCallStacks::print();
 
@@ -3267,7 +3180,8 @@ void LLAppViewer::handleViewerCrash()
 		else crash_file_name = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,ERROR_MARKER_FILE_NAME);
 		llinfos << "Creating crash marker file " << crash_file_name << llendl;
 		
-		LLAPRFile crash_file(crash_file_name, LL_APR_W);
+		LLAPRFile crash_file ;
+		crash_file.open(crash_file_name, LL_APR_W);
 		if (crash_file.getFileHandle())
 		{
 			LL_INFOS("MarkerFile") << "Created crash marker file " << crash_file_name << LL_ENDL;
@@ -3331,10 +3245,11 @@ bool LLAppViewer::anotherInstanceRunning()
 	LL_DEBUGS("MarkerFile") << "Checking marker file for lock..." << LL_ENDL;
 
 	//Freeze case checks
-	if (LLAPRFile::isExist(marker_file, LL_APR_RB))
+	if (LLAPRFile::isExist(marker_file, NULL, LL_APR_RB))
 	{
 		// File exists, try opening with write permissions
-		LLAPRFile outfile(marker_file, LL_APR_WB);
+		LLAPRFile outfile ;
+		outfile.open(marker_file, LL_APR_WB);
 		apr_file_t* fMarker = outfile.getFileHandle() ; 
 		if (!fMarker)
 		{
@@ -3373,25 +3288,25 @@ void LLAppViewer::initMarkerFile()
 	std::string llerror_marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, LLERROR_MARKER_FILE_NAME);
 	std::string error_marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, ERROR_MARKER_FILE_NAME);
 
-	if (LLAPRFile::isExist(mMarkerFileName, LL_APR_RB) && !anotherInstanceRunning())
+	if (LLAPRFile::isExist(mMarkerFileName, NULL, LL_APR_RB) && !anotherInstanceRunning())
 	{
 		gLastExecEvent = LAST_EXEC_FROZE;
 		LL_INFOS("MarkerFile") << "Exec marker found: program froze on previous execution" << LL_ENDL;
 	}    
-	if(LLAPRFile::isExist(logout_marker_file, LL_APR_RB))
+	if(LLAPRFile::isExist(logout_marker_file, NULL, LL_APR_RB))
 	{
 		gLastExecEvent = LAST_EXEC_LOGOUT_FROZE;
 		LL_INFOS("MarkerFile") << "Last exec LLError crashed, setting LastExecEvent to " << gLastExecEvent << LL_ENDL;
 		LLAPRFile::remove(logout_marker_file);
 	}
-	if(LLAPRFile::isExist(llerror_marker_file, LL_APR_RB))
+	if(LLAPRFile::isExist(llerror_marker_file, NULL, LL_APR_RB))
 	{
 		if(gLastExecEvent == LAST_EXEC_LOGOUT_FROZE) gLastExecEvent = LAST_EXEC_LOGOUT_CRASH;
 		else gLastExecEvent = LAST_EXEC_LLERROR_CRASH;
 		LL_INFOS("MarkerFile") << "Last exec LLError crashed, setting LastExecEvent to " << gLastExecEvent << LL_ENDL;
 		LLAPRFile::remove(llerror_marker_file);
 	}
-	if(LLAPRFile::isExist(error_marker_file, LL_APR_RB))
+	if(LLAPRFile::isExist(error_marker_file, NULL, LL_APR_RB))
 	{
 		if(gLastExecEvent == LAST_EXEC_LOGOUT_FROZE) gLastExecEvent = LAST_EXEC_LOGOUT_CRASH;
 		else gLastExecEvent = LAST_EXEC_OTHER_CRASH;
@@ -3407,7 +3322,7 @@ void LLAppViewer::initMarkerFile()
 	
 	// Create the marker file for this execution & lock it
 	apr_status_t s;
-	s = mMarkerFile.open(mMarkerFileName, LL_APR_W, LLAPRFile::long_lived);
+	s = mMarkerFile.open(mMarkerFileName, LL_APR_W, TRUE);	
 
 	if (s == APR_SUCCESS && mMarkerFile.getFileHandle())
 	{
@@ -3502,8 +3417,6 @@ void LLAppViewer::requestQuit()
 		gFloaterView->closeAllChildren(true);
 	}
 
-	LLSideTray::getInstance()->notifyChildren(LLSD().with("request","quit"));
-
 	send_stats();
 
 	gLogoutTimer.reset();
@@ -3522,20 +3435,6 @@ static bool finish_quit(const LLSD& notification, const LLSD& response)
 }
 static LLNotificationFunctorRegistration finish_quit_reg("ConfirmQuit", finish_quit);
 
-static bool switch_standard_skin_and_quit(const LLSD& notification, const LLSD& response)
-{
-	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-
-	if (option == 0)
-	{
-		gSavedSettings.setString("SessionSettingsFile", "");
-		LLAppViewer::instance()->requestQuit();
-	}
-	return false;
-}
-
-static LLNotificationFunctorRegistration standard_skin_quit_reg("SwitchToStandardSkinAndQuit", switch_standard_skin_and_quit);
-
 void LLAppViewer::userQuit()
 {
 	if (gDisconnected || gViewerWindow->getProgressView()->getVisible())
@@ -4159,6 +4058,7 @@ void LLAppViewer::idle()
 	LLFrameTimer::updateFrameTime();
 	LLFrameTimer::updateFrameCount();
 	LLEventTimer::updateClass();
+	LLNotificationsUI::LLToast::updateClass();
 	LLCriticalDamp::updateInterpolants();
 	LLMortician::updateClass();
 	LLFilePickerThread::clearDead();  //calls LLFilePickerThread::notify()
@@ -4362,7 +4262,7 @@ void LLAppViewer::idle()
 	///////////////////////////////////////
 	// Agent and camera movement
 	//
-		LLCoordGL current_mouse = gViewerWindow->getCurrentMouse();
+	LLCoordGL current_mouse = gViewerWindow->getCurrentMouse();
 
 	{
 		// After agent and camera moved, figure out if we need to
@@ -4508,6 +4408,10 @@ void LLAppViewer::idle()
 
 	// update media focus
 	LLViewerMediaFocus::getInstance()->update();
+	
+	// Update marketplace
+	LLMarketplaceInventoryImporter::update();
+	LLMarketplaceInventoryNotifications::update();
 
 	// objects and camera should be in sync, do LOD calculations now
 	{
@@ -4564,10 +4468,6 @@ void LLAppViewer::idleShutdown()
 		return;
 	}
 
-	if (LLSideTray::getInstance()->notifyChildren(LLSD().with("request","wait_quit")))
-	{
-		return;
-	}
 
 
 	
@@ -4653,7 +4553,8 @@ void LLAppViewer::sendLogoutRequest()
 		gLogoutInProgress = TRUE;
 		mLogoutMarkerFileName = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,LOGOUT_MARKER_FILE_NAME);
 		
-		LLAPRFile outfile(mLogoutMarkerFileName, LL_APR_W);
+		LLAPRFile outfile ;
+		outfile.open(mLogoutMarkerFileName, LL_APR_W);
 		mLogoutMarkerFile =  outfile.getFileHandle() ;
 		if (mLogoutMarkerFile)
 		{
@@ -5105,15 +5006,14 @@ void LLAppViewer::loadEventHostModule(S32 listen_port)
 	}
 #endif // LL_WINDOWS
 
-	boost::shared_ptr<LLAPRPool> eventhost_dso_memory_pool_ptr(new LLAPRPool);
-	LLAPRPool& eventhost_dso_memory_pool(*eventhost_dso_memory_pool_ptr);
-	apr_dso_handle_t* eventhost_dso_handle = NULL;
+	apr_dso_handle_t * eventhost_dso_handle = NULL;
+	apr_pool_t * eventhost_dso_memory_pool = NULL;
 
 	//attempt to load the shared library
-	eventhost_dso_memory_pool.create();
+	apr_pool_create(&eventhost_dso_memory_pool, NULL);
 	apr_status_t rv = apr_dso_load(&eventhost_dso_handle,
 		dso_path.c_str(),
-		eventhost_dso_memory_pool());
+		eventhost_dso_memory_pool);
 	llassert_always(! ll_apr_warn_status(rv, eventhost_dso_handle));
 	llassert_always(eventhost_dso_handle != NULL);
 
@@ -5133,8 +5033,7 @@ void LLAppViewer::loadEventHostModule(S32 listen_port)
 		llerrs << "problem loading eventhost plugin, status: " << status << llendl;
 	}
 
-	// Store the handle and link it to the pool that was used to allocate it.
-	mPlugins[eventhost_dso_handle] = eventhost_dso_memory_pool_ptr;
+	mPlugins.insert(eventhost_dso_handle);
 }
 
 void LLAppViewer::launchUpdater()
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index 168aaf5d947ece222eac412d4a7706f647481e39..71a7868191ae95cee19acb390ce02d445faba688 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -270,7 +270,7 @@ class LLAppViewer : public LLApp
 
     LLAllocator mAlloc;
 
-	std::map<apr_dso_handle_t*, boost::shared_ptr<LLAPRPool> > mPlugins;
+	std::set<struct apr_dso_handle_t*> mPlugins;
 
 	LLFrameTimer mMemCheckTimer;
 	
diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp
index db11462fcbd292c4c1f82258938a48b53f2b2b77..48d02dfeaade77a3b13729edbb1ab2925af61897 100644
--- a/indra/newview/llappviewerlinux.cpp
+++ b/indra/newview/llappviewerlinux.cpp
@@ -111,7 +111,6 @@ int main( int argc, char **argv )
 	}
 	delete viewer_app_ptr;
 	viewer_app_ptr = NULL;
-
 	return 0;
 }
 
diff --git a/indra/newview/llappviewerlinux_api_dbus.cpp b/indra/newview/llappviewerlinux_api_dbus.cpp
index 1ae469dfcfde79ffcf9ad423038e454ea387c60e..32e7e0a83d5b10d350bcfceefa47d5478a5bd9c5 100644
--- a/indra/newview/llappviewerlinux_api_dbus.cpp
+++ b/indra/newview/llappviewerlinux_api_dbus.cpp
@@ -27,11 +27,11 @@
 #if LL_DBUS_ENABLED
 
 #include "linden_common.h"
-#include "llaprpool.h"
 
 extern "C" {
 #include <dbus/dbus-glib.h>
 
+#include "apr_pools.h"
 #include "apr_dso.h"
 }
 
@@ -44,7 +44,7 @@ extern "C" {
 #undef LL_DBUS_SYM
 
 static bool sSymsGrabbed = false;
-static LLAPRPool sSymDBUSDSOMemoryPool;
+static apr_pool_t *sSymDBUSDSOMemoryPool = NULL;
 static apr_dso_handle_t *sSymDBUSDSOHandleG = NULL;
 
 bool grab_dbus_syms(std::string dbus_dso_name)
@@ -63,11 +63,11 @@ bool grab_dbus_syms(std::string dbus_dso_name)
 #define LL_DBUS_SYM(REQUIRED, DBUSSYM, RTN, ...) do{rv = apr_dso_sym((apr_dso_handle_sym_t*)&ll##DBUSSYM, sSymDBUSDSOHandle, #DBUSSYM); if (rv != APR_SUCCESS) {INFOMSG("Failed to grab symbol: %s", #DBUSSYM); if (REQUIRED) sym_error = true;} else DEBUGMSG("grabbed symbol: %s from %p", #DBUSSYM, (void*)ll##DBUSSYM);}while(0)
 
 	//attempt to load the shared library
-	sSymDBUSDSOMemoryPool.create();
+	apr_pool_create(&sSymDBUSDSOMemoryPool, NULL);
   
 	if ( APR_SUCCESS == (rv = apr_dso_load(&sSymDBUSDSOHandle,
 					       dbus_dso_name.c_str(),
-					       sSymDBUSDSOMemoryPool()) ))
+					       sSymDBUSDSOMemoryPool) ))
 	{
 		INFOMSG("Found DSO: %s", dbus_dso_name.c_str());
 
@@ -109,7 +109,11 @@ void ungrab_dbus_syms()
 		sSymDBUSDSOHandleG = NULL;
 	}
 	
-	sSymDBUSDSOMemoryPool.destroy();
+	if ( sSymDBUSDSOMemoryPool )
+	{
+		apr_pool_destroy(sSymDBUSDSOMemoryPool);
+		sSymDBUSDSOMemoryPool = NULL;
+	}
 	
 	// NULL-out all of the symbols we'd grabbed
 #define LL_DBUS_SYM(REQUIRED, DBUSSYM, RTN, ...) do{ll##DBUSSYM = NULL;}while(0)
diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp
index 8929c0c1a4ceb023c0c91a37cf27939e2f1aba2f..c2916717bd415f80fa6243c4780ec117229f145e 100644
--- a/indra/newview/llappviewermacosx.cpp
+++ b/indra/newview/llappviewermacosx.cpp
@@ -113,7 +113,6 @@ int main( int argc, char **argv )
 	}
 	delete viewer_app_ptr;
 	viewer_app_ptr = NULL;
-
 	return 0;
 }
 
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
index f94c843ad9b5ee1d85f96c103486c3d768f00fa7..647ace7ee32281bc20912f31800b04ce41f9429c 100644
--- a/indra/newview/llappviewerwin32.cpp
+++ b/indra/newview/llappviewerwin32.cpp
@@ -403,11 +403,9 @@ bool LLAppViewerWin32::initHardwareTest()
 	//
 	if (FALSE == gSavedSettings.getBOOL("NoHardwareProbe"))
 	{
-		BOOL vram_only = !gSavedSettings.getBOOL("ProbeHardwareOnStartup");
-
 		// per DEV-11631 - disable hardware probing for everything
 		// but vram.
-		vram_only = TRUE;
+		BOOL vram_only = TRUE;
 
 		LLSplashScreen::update(LLTrans::getString("StartupDetectingHardware"));
 
diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
index 966f5b941e0adfcbbd22b074eb420223dc1b23e8..65bfc990d1eab087d5adb102024eccc089b52454 100644
--- a/indra/newview/llassetuploadresponders.cpp
+++ b/indra/newview/llassetuploadresponders.cpp
@@ -78,6 +78,8 @@ void on_new_single_inventory_upload_complete(
 	const LLSD& server_response,
 	S32 upload_price)
 {
+	bool success = false;
+
 	if ( upload_price > 0 )
 	{
 		// this upload costed us L$, update our balance
@@ -152,6 +154,7 @@ void on_new_single_inventory_upload_complete(
 
 		gInventory.updateItem(item);
 		gInventory.notifyObservers();
+		success = true;
 
 		// Show the preview panel for textures and sounds to let
 		// user know that the image (or snapshot) arrived intact.
@@ -175,6 +178,13 @@ void on_new_single_inventory_upload_complete(
 
 	// remove the "Uploading..." message
 	LLUploadDialog::modalUploadFinished();	
+
+	// Let the Snapshot floater know we have finished uploading a snapshot to inventory.
+	LLFloater* floater_snapshot = LLFloaterReg::findInstance("snapshot");
+	if (asset_type == LLAssetType::AT_TEXTURE && floater_snapshot)
+	{
+		floater_snapshot->notify(LLSD().with("set-finished", LLSD().with("ok", success).with("msg", "inventory")));
+	}
 }
 
 LLAssetUploadResponder::LLAssetUploadResponder(const LLSD &post_data,
@@ -285,6 +295,11 @@ void LLAssetUploadResponder::uploadFailure(const LLSD& content)
 {
 	// remove the "Uploading..." message
 	LLUploadDialog::modalUploadFinished();
+	LLFloater* floater_snapshot = LLFloaterReg::findInstance("snapshot");
+	if (floater_snapshot)
+	{
+		floater_snapshot->notify(LLSD().with("set-finished", LLSD().with("ok", false).with("msg", "inventory")));
+	}
 	
 	std::string reason = content["state"];
 	// deal with L$ errors
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index 4cdfcea64eb9971eee7ccfa2b3b58de7d27402d3..9a7cdcfa21ba9dd3f41a313305991f9ec41e6294 100755
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -47,6 +47,7 @@
 #include "llfloatergroups.h"
 #include "llfloaterreg.h"
 #include "llfloaterpay.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfloaterwebcontent.h"
 #include "llfloaterworldmap.h"
 #include "llfolderview.h"
@@ -60,7 +61,6 @@
 #include "llpaneloutfitedit.h"
 #include "llpanelprofile.h"
 #include "llrecentpeople.h"
-#include "llsidetray.h"
 #include "lltrans.h"
 #include "llviewercontrol.h"
 #include "llviewerobjectlist.h"
@@ -302,6 +302,12 @@ void LLAvatarActions::startConference(const uuid_vec_t& ids)
 	make_ui_sound("UISndStartIM");
 }
 
+static const char* get_profile_floater_name(const LLUUID& avatar_id)
+{
+	// Use different floater XML for our profile to be able to save its rect.
+	return avatar_id == gAgentID ? "my_profile" : "profile";
+}
+
 static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarName& av_name)
 {
 	std::string username = av_name.mUsername;
@@ -314,14 +320,10 @@ static void on_avatar_name_show_profile(const LLUUID& agent_id, const LLAvatarNa
 	std::string url = getProfileURL(username);
 
 	// PROFILES: open in webkit window
-	const bool show_chrome = false;
-	static LLCachedControl<LLRect> profile_rect(gSavedSettings, "WebProfileRect");
-	LLFloaterWebContent::create(LLFloaterWebContent::Params().
-							url(url).
-							id(agent_id.asString()).
-							show_chrome(show_chrome).
-							window_class("profile").
-							preferred_media_size(profile_rect));
+	LLFloaterWebContent::Params p;
+	p.url(url).
+		id(agent_id.asString());
+	LLFloaterReg::showInstance(get_profile_floater_name(agent_id), p);
 }
 
 // static
@@ -338,17 +340,24 @@ bool LLAvatarActions::profileVisible(const LLUUID& id)
 {
 	LLSD sd;
 	sd["id"] = id;
-	LLFloaterWebContent *browser = dynamic_cast<LLFloaterWebContent*> (LLFloaterReg::findInstance("profile", sd));
+	LLFloater* browser = getProfileFloater(id);
 	return browser && browser->isShown();
 }
 
+//static
+LLFloater* LLAvatarActions::getProfileFloater(const LLUUID& id)
+{
+	LLFloaterWebContent *browser = dynamic_cast<LLFloaterWebContent*>
+		(LLFloaterReg::findInstance(get_profile_floater_name(id), LLSD().with("id", id)));
+	return browser;
+}
 
 //static 
 void LLAvatarActions::hideProfile(const LLUUID& id)
 {
 	LLSD sd;
 	sd["id"] = id;
-	LLFloaterWebContent *browser = dynamic_cast<LLFloaterWebContent*> (LLFloaterReg::findInstance("profile", sd));
+	LLFloater* browser = getProfileFloater(id);
 	if (browser)
 	{
 		browser->closeFloater();
@@ -438,8 +447,7 @@ void LLAvatarActions::csr(const LLUUID& id, std::string name)
 void LLAvatarActions::share(const LLUUID& id)
 {
 	LLSD key;
-	LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
-
+	LLFloaterSidePanelContainer::showPanel("inventory", key);
 
 	LLUUID session_id = gIMMgr->computeSessionID(IM_NOTHING_SPECIAL,id);
 
@@ -462,7 +470,7 @@ namespace action_give_inventory
 	 */
 	static LLInventoryPanel* get_outfit_editor_inventory_panel()
 	{
-		LLPanelOutfitEdit* panel_outfit_edit = dynamic_cast<LLPanelOutfitEdit*>(LLSideTray::getInstance()->getPanel("panel_outfit_edit"));
+		LLPanelOutfitEdit* panel_outfit_edit = dynamic_cast<LLPanelOutfitEdit*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
 		if (NULL == panel_outfit_edit) return NULL;
 
 		LLInventoryPanel* inventory_panel = panel_outfit_edit->findChild<LLInventoryPanel>("folder_view");
@@ -672,12 +680,29 @@ namespace action_give_inventory
 		std::string items;
 		build_items_string(inventory_selected_uuids, items);
 
+		int folders_count = 0;
+		std::set<LLUUID>::const_iterator it = inventory_selected_uuids.begin();
+
+		//traverse through selected inventory items and count folders among them
+		for ( ; it != inventory_selected_uuids.end() && folders_count <=1 ; ++it)
+		{
+			LLViewerInventoryCategory* inv_cat = gInventory.getCategory(*it);
+			if (NULL != inv_cat)
+			{
+				folders_count++;
+			}
+		}
+
+		// EXP-1599
+		// In case of sharing multiple folders, make the confirmation
+		// dialog contain a warning that only one folder can be shared at a time.
+		std::string notification = (folders_count > 1) ? "ShareFolderConfirmation" : "ShareItemsConfirmation";
 		LLSD substitutions;
 		substitutions["RESIDENTS"] = residents;
 		substitutions["ITEMS"] = items;
 		LLShareInfo::instance().mAvatarNames = avatar_names;
 		LLShareInfo::instance().mAvatarUuids = avatar_uuids;
-		LLNotificationsUtil::add("ShareItemsConfirmation", substitutions, LLSD(), &give_inventory_cb);
+		LLNotificationsUtil::add(notification, substitutions, LLSD(), &give_inventory_cb);
 	}
 }
 
@@ -696,9 +721,11 @@ std::set<LLUUID> LLAvatarActions::getInventorySelectedUUIDs()
 
 	if (inventory_selected_uuids.empty())
 	{
-		LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
-
-		inventory_selected_uuids = sidepanel_inventory->getInboxOrOutboxSelectionList();
+		LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+		if (sidepanel_inventory)
+		{
+			inventory_selected_uuids = sidepanel_inventory->getInboxSelectionList();
+		}
 	}
 
 	return inventory_selected_uuids;
diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h
index fbfd815f41174330c57bd5b2923a767b69b8e8f4..748b7cb3d19fc583f2a88d940958e3c179e5b5eb 100644
--- a/indra/newview/llavataractions.h
+++ b/indra/newview/llavataractions.h
@@ -35,7 +35,7 @@
 #include <vector>
 
 class LLInventoryPanel;
-
+class LLFloater;
 
 /**
  * Friend-related actions (add, remove, offer teleport, etc)
@@ -96,6 +96,7 @@ class LLAvatarActions
 	static void showProfile(const LLUUID& id);
 	static void hideProfile(const LLUUID& id);
 	static bool profileVisible(const LLUUID& id);
+	static LLFloater* getProfileFloater(const LLUUID& id);
 
 	/**
 	 * Show avatar on world map.
diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp
old mode 100644
new mode 100755
index 42e7decec188e4cbf76e94d4ef6771ebd11fc045..b539ac38ed82eedf7dc83e2cd98af50e86a4d317
--- a/indra/newview/llavatariconctrl.cpp
+++ b/indra/newview/llavatariconctrl.cpp
@@ -75,6 +75,9 @@ void LLAvatarIconIDCache::load	()
 		LLUUID icon_id;
 		LLDate date;
 
+		if (line.length()<=uuid_len*2)
+			continue; // short line, bail out to prevent substr calls throwing exception.
+
 		std::string avatar_id_str = line.substr(0,uuid_len);
 		std::string icon_id_str = line.substr(uuid_len,uuid_len);
 		
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
deleted file mode 100644
index c8cfe5b51ecbf249ee12cd7524c925fd85075557..0000000000000000000000000000000000000000
--- a/indra/newview/llbottomtray.cpp
+++ /dev/null
@@ -1,1991 +0,0 @@
-/** 
- * @file llbottomtray.cpp
- * @brief LLBottomTray class 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 "llviewerprecompiledheaders.h" // must be first include
-
-#define LLBOTTOMTRAY_CPP
-#include "llbottomtray.h"
-
-// library includes
-#include "llfloaterreg.h"
-#include "llflyoutbutton.h"
-#include "lllayoutstack.h"
-#include "llnotifications.h"
-#include "llnotificationsutil.h"
-#include "lltexteditor.h"
-
-// newview includes
-#include "llagent.h"
-#include "llagentcamera.h"
-#include "llavataractions.h"
-#include "llchiclet.h"
-#include "llfloatercamera.h"
-#include "llhints.h"
-#include "llimfloater.h" // for LLIMFloater
-#include "llnearbychatbar.h"
-#include "llnearbychatbarlistener.h"
-#include "llsidetray.h"
-#include "llspeakbutton.h"
-#include "llsplitbutton.h"
-#include "llsyswellwindow.h"
-#include "lltoolmgr.h"
-#include "llviewerparcelmgr.h"
-
-#include "llviewerwindow.h"
-#include "llsdserialize.h"
-#include "llfirstuse.h"
-
-// Distance from mouse down on which drag'n'drop should be started.
-#define DRAG_START_DISTANCE 3
-
-static const std::string SORTING_DATA_FILE_NAME = "bottomtray_buttons_order.xml";
-
-LLDefaultChildRegistry::Register<LLBottomtrayButton> bottomtray_button("bottomtray_button");
-
-// LLBottomtrayButton methods
-
-// virtual
-BOOL LLBottomtrayButton::handleHover(S32 x, S32 y, MASK mask)
-{
-	if (mCanDrag)
-	{
-		// pass hover to bottomtray
-		S32 screenX, screenY;
-		localPointToScreen(x, y, &screenX, &screenY);
-		LLBottomTray::getInstance()->onDraggableButtonHover(screenX, screenY);
-
-		return TRUE;
-	}
-	else
-	{
-		return LLButton::handleHover(x, y, mask);
-	}
-}
-//virtual
-BOOL LLBottomtrayButton::handleMouseUp(S32 x, S32 y, MASK mask)
-{
-	if (mCanDrag)
-	{
-	S32 screenX, screenY;
-	localPointToScreen(x, y, &screenX, &screenY);
-	// pass mouse up to bottomtray
-	LLBottomTray::getInstance()->onDraggableButtonMouseUp(this, screenX, screenY);
-	}
-	return LLButton::handleMouseUp(x, y, mask);
-}
-//virtual
-BOOL LLBottomtrayButton::handleMouseDown(S32 x, S32 y, MASK mask)
-{
-	if (mCanDrag)
-	{
-	S32 screenX, screenY;
-	localPointToScreen(x, y, &screenX, &screenY);
-	// pass mouse up to bottomtray
-	LLBottomTray::getInstance()->onDraggableButtonMouseDown(this, screenX, screenY);
-	}
-	return LLButton::handleMouseDown(x, y, mask);
-}
-
-static void update_build_button_enable_state()
-{
-	bool can_edit = LLToolMgr::getInstance()->canEdit();
-
-	LLBottomTray::getInstance()->getChildView("build_btn")->setEnabled(can_edit);
-}
-
-// Build time optimization, generate extern template once in .cpp file
-template class LLBottomTray* LLSingleton<class LLBottomTray>::getInstance();
-
-namespace
-{
-	const std::string& PANEL_CHICLET_NAME	= "chiclet_list_panel";
-
-	S32 get_panel_min_width(LLLayoutStack* stack, LLView* panel)
-	{
-		S32 minimal_width = 0;
-		llassert(stack);
-		if ( stack && panel && panel->getVisible() )
-		{
-			stack->getPanelMinSize(panel->getName(), &minimal_width);
-		}
-		return minimal_width;
-	}
-
-	S32 get_panel_max_width(LLLayoutStack* stack, LLPanel* panel)
-	{
-		S32 max_width = 0;
-		llassert(stack);
-		if ( stack && panel && panel->getVisible() )
-		{
-			stack->getPanelMaxSize(panel->getName(), &max_width);
-		}
-		return max_width;
-	}
-
-	S32 get_curr_width(LLUICtrl* ctrl)
-	{
-		S32 cur_width = 0;
-		if ( ctrl && ctrl->getVisible() )
-		{
-			cur_width = ctrl->getRect().getWidth();
-		}
-		return cur_width;
-	}
-}
-
-class LLBottomTrayLite
-	: public LLPanel
-{
-public:
-	LLBottomTrayLite()
-		: mNearbyChatBar(NULL),
-		mChatBarContainer(NULL),
-		  mGesturePanel(NULL)
-	{
-		mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
-		buildFromFile("panel_bottomtray_lite.xml");
-	}
-
-	BOOL postBuild()
-	{
-		mNearbyChatBar = findChild<LLNearbyChatBar>("chat_bar");
-		mChatBarContainer = getChild<LLLayoutPanel>("chat_bar_layout_panel");
-		mGesturePanel = getChild<LLPanel>("gesture_panel");
-
-		// Hide "show_nearby_chat" button 
-		if (mNearbyChatBar)
-		{
-			LLLineEditor* chat_box = mNearbyChatBar->getChatBox();
-			LLUICtrl* show_btn = mNearbyChatBar->getChild<LLUICtrl>("show_nearby_chat");
-			S32 delta_width = show_btn->getRect().getWidth();
-			show_btn->setVisible(FALSE);
-			chat_box->reshape(chat_box->getRect().getWidth() + delta_width, chat_box->getRect().getHeight());
-		}
-		return TRUE;
-	}
-
-	void onFocusLost()
-	{
-		if (gAgentCamera.cameraMouselook())
-		{
-			LLBottomTray::getInstance()->setVisible(FALSE);
-		}
-	}
-
-	LLNearbyChatBar*	mNearbyChatBar;
-	LLLayoutPanel*		mChatBarContainer;
-	LLPanel*			mGesturePanel;
-};
-
-LLBottomTray::LLBottomTray(const LLSD&)
-:	mDesiredNearbyChatWidth(0),
-	mChicletPanel(NULL),
-	mSpeakPanel(NULL),
-	mSpeakBtn(NULL),
-	mNearbyChatBar(NULL),
-	mChatBarContainer(NULL),
-	mNearbyCharResizeHandlePanel(NULL),
-	mToolbarStack(NULL),
-	mMovementButton(NULL),
-	mResizeState(RS_NORESIZE),
-	mBottomTrayContextMenu(NULL),
-	mCamButton(NULL),
-	mBottomTrayLite(NULL),
-	mIsInLiteMode(false),
-	mDragStarted(false),
-	mDraggedItem(NULL),
-	mLandingTab(NULL),
-	mCheckForDrag(false)
-{
-	// Firstly add our self to IMSession observers, so we catch session events
-	// before chiclets do that.
-	LLIMMgr::getInstance()->addSessionObserver(this);
-
-	mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
-
-	buildFromFile("panel_bottomtray.xml");
-
-	LLUICtrl::CommitCallbackRegistry::defaultRegistrar().add("CameraPresets.ChangeView", boost::bind(&LLFloaterCamera::onClickCameraItem, _2));
-
-	//this is to fix a crash that occurs because LLBottomTray is a singleton
-	//and thus is deleted at the end of the viewers lifetime, but to be cleanly
-	//destroyed LLBottomTray requires some subsystems that are long gone
-	//LLUI::getRootView()->addChild(this);
-
-	{
-		mBottomTrayLite = new LLBottomTrayLite();
-		mBottomTrayLite->setFollowsAll();
-		mBottomTrayLite->setVisible(FALSE);
-	}
-
-	mImageDragIndication = LLUI::getUIImage(getString("DragIndicationImageName"));
-	mDesiredNearbyChatWidth = mNearbyChatBar ? mNearbyChatBar->getRect().getWidth() : 0;
-}
-
-LLBottomTray::~LLBottomTray()
-{
-	if (!LLSingleton<LLIMMgr>::destroyed())
-	{
-		LLIMMgr::getInstance()->removeSessionObserver(this);
-	}
-
-	if (mNearbyChatBar)
-	{
-		// store custom width of chatbar panel.
-		S32 custom_width = mChatBarContainer->getRect().getWidth();
-		gSavedSettings.setS32("ChatBarCustomWidth", custom_width);
-	}
-
-	// emulate previous floater behavior to be hidden on startup.
-	// override effect of save_visibility=true.
-	// this attribute is necessary to button.initial_callback=Button.SetFloaterToggle works properly:
-	//		i.g when floater changes its visibility - button changes its toggle state.
-	getChild<LLUICtrl>("build_btn")->setControlValue(false);
-	getChild<LLUICtrl>("search_btn")->setControlValue(false);
-	getChild<LLUICtrl>("world_map_btn")->setControlValue(false);
-}
-
-// *TODO Vadim: why void* ?
-void* LLBottomTray::createNearbyChatBar(void* userdata)
-{
-	return new LLNearbyChatBar();
-}
-
-LLNearbyChatBar* LLBottomTray::getNearbyChatBar()
-{
-	return mIsInLiteMode ? mBottomTrayLite->mNearbyChatBar : mNearbyChatBar;
-}
-
-LLIMChiclet* LLBottomTray::createIMChiclet(const LLUUID& session_id)
-{
-	LLIMChiclet::EType im_chiclet_type = LLIMChiclet::getIMSessionType(session_id);
-
-	switch (im_chiclet_type)
-	{
-	case LLIMChiclet::TYPE_IM:
-		return getChicletPanel()->createChiclet<LLIMP2PChiclet>(session_id);
-	case LLIMChiclet::TYPE_GROUP:
-		return getChicletPanel()->createChiclet<LLIMGroupChiclet>(session_id);
-	case LLIMChiclet::TYPE_AD_HOC:
-		return getChicletPanel()->createChiclet<LLAdHocChiclet>(session_id);
-	case LLIMChiclet::TYPE_UNKNOWN:
-		break;
-	}
-
-	return NULL;
-}
-
-//virtual
-void LLBottomTray::sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id)
-{
-	if (!getChicletPanel()) return;
-
-	LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(session_id);
-	if (!session) return;
-
-	// no need to spawn chiclets for participants in P2P calls called through Avaline
-	if (session->isP2P() && session->isOtherParticipantAvaline()) return;
-
-	if (getChicletPanel()->findChiclet<LLChiclet>(session_id)) return;
-
-	LLIMChiclet* chiclet = createIMChiclet(session_id);
-	if(chiclet)
-	{
-		chiclet->setIMSessionName(name);
-		chiclet->setOtherParticipantId(other_participant_id);
-		
-		LLIMFloater::onIMChicletCreated(session_id);
-
-	}
-	else
-	{
-		llerrs << "Could not create chiclet" << llendl;
-	}
-}
-
-//virtual
-void LLBottomTray::sessionRemoved(const LLUUID& session_id)
-{
-	if(getChicletPanel())
-	{
-		// IM floater should be closed when session removed and associated chiclet closed
-		LLIMFloater* iMfloater = LLFloaterReg::findTypedInstance<LLIMFloater>(
-				"impanel", session_id);
-		if (iMfloater != NULL)
-		{
-			iMfloater->closeFloater();
-		}
-
-		getChicletPanel()->removeChiclet(session_id);
-	}
-}
-
-void LLBottomTray::sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id)
-{
-	//this is only needed in case of outgoing ad-hoc/group chat sessions
-	LLChicletPanel* chiclet_panel = getChicletPanel();
-	if (chiclet_panel)
-	{
-		//it should be ad-hoc im chiclet or group im chiclet
-		LLChiclet* chiclet = chiclet_panel->findChiclet<LLChiclet>(old_session_id);
-		if (chiclet) chiclet->setSessionId(new_session_id);
-	}
-}
-
-S32 LLBottomTray::getTotalUnreadIMCount()
-{
-	return getChicletPanel()->getTotalUnreadIMCount();
-}
-
-// virtual
-void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, bool proximal)
-{
-	// Time it takes to connect to voice channel might be pretty long,
-	// so don't expect user login or STATUS_VOICE_ENABLED to be followed by STATUS_JOINED.
-	BOOL enable = FALSE;
-
-	switch (status)
-	{
-	// Do not add STATUS_VOICE_ENABLED because voice chat is 
-	// inactive until STATUS_JOINED
-	case STATUS_JOINED:
-		enable = TRUE;
-		break;
-	default:
-		enable = FALSE;
-		break;
-	}
-
-	// We have to enable/disable right and left parts of speak button separately (EXT-4648)
-	getChild<LLButton>("speak_btn")->setEnabled(enable);
-
-	// skipped to avoid button blinking
-	if (status != STATUS_JOINING && status!= STATUS_LEFT_CHANNEL)
-	{
-		bool voice_status = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking();
-		getChild<LLButton>("speak_flyout_btn")->setEnabled(voice_status);
-		gMenuBarView->getChild<LLView>("Nearby Voice")->setEnabled(voice_status);
-		if (voice_status)
-		{
-			LLFirstUse::speak(true);
-		}
-	}
-}
-
-void LLBottomTray::onMouselookModeOut()
-{
-	mIsInLiteMode = false;
-	mBottomTrayLite->setVisible(FALSE);
-	mNearbyChatBar->getChatBox()->setText(mBottomTrayLite->mNearbyChatBar->getChatBox()->getText());
-	setVisible(TRUE);
-}
-
-void LLBottomTray::onMouselookModeIn()
-{
-	setVisible(FALSE);
-
-	// Attach the lite bottom tray
-	if (getParent() && mBottomTrayLite->getParent() != getParent())
-		getParent()->addChild(mBottomTrayLite);
-
-	mBottomTrayLite->setShape(getLocalRect());
-	mBottomTrayLite->mNearbyChatBar->getChatBox()->setText(mNearbyChatBar->getChatBox()->getText());
-	mBottomTrayLite->mGesturePanel->setVisible(gSavedSettings.getBOOL("ShowGestureButton"));
-
-	mIsInLiteMode = true;
-}
-
-//virtual
-// setVisible used instead of onVisibilityChange, since LLAgent calls it on entering/leaving mouselook mode.
-// If bottom tray is already visible in mouselook mode, then onVisibilityChange will not be called from setVisible(true),
-void LLBottomTray::setVisible(BOOL visible)
-{
-	if (mIsInLiteMode)
-	{
-		mBottomTrayLite->setVisible(visible);
-	}
-	else 
-	{
-		LLPanel::setVisible(visible);
-	}
-}
-
-S32 LLBottomTray::notifyParent(const LLSD& info)
-{
-	if(info.has("well_empty")) // implementation of EXT-3397
-	{
-		const std::string chiclet_name = info["well_name"];
-
-		// only "im_well" or "notification_well" names are expected.
-		// They are set in panel_bottomtray.xml in <chiclet_im_well> & <chiclet_notification>
-		llassert("im_well" == chiclet_name || "notification_well" == chiclet_name);
-
-		BOOL should_be_visible = !info["well_empty"];
-		showWellButton("im_well" == chiclet_name ? RS_IM_WELL : RS_NOTIFICATION_WELL, should_be_visible);
-		return 1;
-	}
-
-	if (info.has("action") && info["action"] == "resize")
-	{
-		const std::string& name = info["view_name"];
-
-		// expected only resize of nearby chatbar
-		if (mChatBarContainer->getName() != name) return LLPanel::notifyParent(info);
-
-		const S32 new_width = info["new_width"];
-
-		processChatbarCustomization(new_width);
-
-		return 2;
-	}
-	return LLPanel::notifyParent(info);
-}
-
-void LLBottomTray::showBottomTrayContextMenu(S32 x, S32 y, MASK mask)
-{
-	// We should show BottomTrayContextMenu in last  turn
-	if (mBottomTrayContextMenu && !LLMenuGL::sMenuContainer->getVisibleMenu())
-	{
-		    //there are no other context menu (IM chiclet etc ), so we can show BottomTrayContextMenu
-
-		    updateContextMenu(x, y, mask);
-			mBottomTrayContextMenu->buildDrawLabels();
-			mBottomTrayContextMenu->updateParent(LLMenuGL::sMenuContainer);
-			LLMenuGL::showPopup(this, mBottomTrayContextMenu, x, y);
-		
-	}
-}
-
-void LLBottomTray::updateContextMenu(S32 x, S32 y, MASK mask)
-{
-	LLUICtrl* edit_box = mNearbyChatBar->getChild<LLUICtrl>("chat_box");
-
-	S32 local_x = x - mChatBarContainer->getRect().mLeft - edit_box->getRect().mLeft;
-	S32 local_y = y - mChatBarContainer->getRect().mBottom - edit_box->getRect().mBottom;
-
-	bool in_edit_box = edit_box->pointInView(local_x, local_y);
-
-	mBottomTrayContextMenu->setItemVisible("Separator", in_edit_box);
-	mBottomTrayContextMenu->setItemVisible("NearbyChatBar_Cut", in_edit_box);
-	mBottomTrayContextMenu->setItemVisible("NearbyChatBar_Copy", in_edit_box);
-	mBottomTrayContextMenu->setItemVisible("NearbyChatBar_Paste", in_edit_box);
-	mBottomTrayContextMenu->setItemVisible("NearbyChatBar_Delete", in_edit_box);
-	mBottomTrayContextMenu->setItemVisible("NearbyChatBar_Select_All", in_edit_box);
-}
-
-void LLBottomTray::showSpeakButton(bool visible)
-{
-	// Show/hide the button
-	setTrayButtonVisible(RS_BUTTON_SPEAK, visible);
-
-	// and adjust other panels according to the occupied/freed space.
-	const S32 panel_width = mSpeakPanel->getRect().getWidth();
-	if (visible)
-	{
-		processWidthDecreased(-panel_width);
-	}
-	else
-	{
-		processWidthIncreased(panel_width);
-	}
-}
-
-void LLBottomTray::toggleMovementControls()
-{
-	if (mMovementButton)
-		mMovementButton->onCommit();
-}
-
-void LLBottomTray::toggleCameraControls()
-{
-	if (mCamButton)
-		mCamButton->onCommit();
-}
-
-BOOL LLBottomTray::postBuild()
-{
-	LLHints::registerHintTarget("bottom_tray", LLView::getHandle());
-	LLHints::registerHintTarget("dest_guide_btn", getChild<LLUICtrl>("destination_btn")->getHandle());
-	LLHints::registerHintTarget("avatar_picker_btn", getChild<LLUICtrl>("avatar_btn")->getHandle());
-
-	LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("NearbyChatBar.Action", boost::bind(&LLBottomTray::onContextMenuItemClicked, this, _2));
-	LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("NearbyChatBar.EnableMenuItem", boost::bind(&LLBottomTray::onContextMenuItemEnabled, this, _2));
-
-	mBottomTrayContextMenu =  LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_bottomtray.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
-	gMenuHolder->addChild(mBottomTrayContextMenu);
-
-	mNearbyChatBar = findChild<LLNearbyChatBar>("chat_bar");
-	LLHints::registerHintTarget("chat_bar", mNearbyChatBar->LLView::getHandle());
-
-	mListener.reset(new LLNearbyChatBarListener(*mNearbyChatBar));
-
-	mChatBarContainer = getChild<LLLayoutPanel>("chat_bar_layout_panel");
-	mNearbyCharResizeHandlePanel = getChild<LLPanel>("chat_bar_resize_handle_panel");
-
-	mToolbarStack = getChild<LLLayoutStack>("toolbar_stack");
-	mMovementButton = getChild<LLButton>("movement_btn");
-	LLHints::registerHintTarget("move_btn", mMovementButton->getHandle());
-	mCamButton = getChild<LLButton>("camera_btn");
-	setRightMouseDownCallback(boost::bind(&LLBottomTray::showBottomTrayContextMenu,this, _2, _3,_4));
-
-	mSpeakPanel = getChild<LLPanel>("speak_panel");
-	mSpeakBtn = findChild<LLSpeakButton>("talk");
-	if (mSpeakBtn)
-	{
-		LLHints::registerHintTarget("speak_btn", mSpeakBtn->getHandle());
-
-		// Localization tool doesn't understand custom buttons like <talk_button>
-		mSpeakBtn->setSpeakToolTip( getString("SpeakBtnToolTip") );
-		mSpeakBtn->setShowToolTip( getString("VoiceControlBtnToolTip") );
-	}	
-	else
-	{
-		LLTransientFloaterMgr::getInstance()->addControlView(getChild<LLButton>("speak_btn"));
-		LLTransientFloaterMgr::getInstance()->addControlView(getChild<LLButton>("flyout_btn"));
-	}
-
-
-	// Both parts of speak button should be initially disabled because
-	// it takes some time between logging in to world and connecting to voice channel.
-	getChild<LLButton>("speak_btn")->setEnabled(false);
-	getChild<LLButton>("speak_flyout_btn")->setEnabled(false);
-	gMenuBarView->getChild<LLView>("Nearby Voice")->setEnabled(false);
-
-	// Registering Chat Bar to receive Voice client status change notifications.
-	LLVoiceClient::getInstance()->addObserver(this);
-
-	mNearbyChatBar->getChatBox()->setContextMenu(NULL);
-
-	mChicletPanel = getChild<LLChicletPanel>("chiclet_list");
-
-	initResizeStateContainers();
-
-	setButtonsControlsAndListeners();
-
-	initButtonsVisibility();
-
-	// update wells visibility:
-	showWellButton(RS_IM_WELL, !LLIMWellWindow::getInstance()->isWindowEmpty());
-	showWellButton(RS_NOTIFICATION_WELL, !LLNotificationWellWindow::getInstance()->isWindowEmpty());
-
-	loadButtonsOrder();
-
-	LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(boost::bind(&update_build_button_enable_state));
-
-	return TRUE;
-}
-
-//Drag-n-drop
-
-void LLBottomTray::onDraggableButtonMouseDown(LLUICtrl* ctrl, S32 x, S32 y)
-{
-	if (ctrl == NULL) return;
-	LLView* parent_view = ctrl->getParent();
-	if(parent_view != NULL)
-	{
-		// we actually drag'n'drop panel (not button) in code, so have to find a parent
-		// of button which called this method on mouse down.
-		LLPanel* parent = dynamic_cast<LLPanel*>(parent_view);
-		// It may happen that we clicked not usual button, but button inside widget(speak, gesture)
-		// so we'll need to get a level higher to reach layout panel as a parent.
-		if(parent == NULL) parent = dynamic_cast<LLPanel*>(parent_view->getParent());
-		if (parent && parent->getVisible())
-		{
-			mDraggedItem = parent;
-			mCheckForDrag = true;
-			mStartX = x;
-			mStartY = y;
-		}
-	}
-}
-
-LLPanel* LLBottomTray::findChildPanelByLocalCoords(S32 x, S32 y)
-{
-	LLPanel* ctrl = 0;
-	S32 screenX, screenY;
-	const child_list_t* list = mToolbarStack->getChildList();
-
-	localPointToScreen(x, y, &screenX, &screenY);
-
-	// look for a child panel which contains the point (screenX, screenY) in it's rectangle
-	for (child_list_const_iter_t i = list->begin(); i != list->end(); ++i)
-	{
-		LLRect rect;
-		localRectToScreen((*i)->getRect(), &rect);
-
-		if (rect.pointInRect(screenX, screenY))
-		{
-			ctrl = dynamic_cast<LLPanel*>(*i);
-			break;
-		}
-	}
-
-	return ctrl;
-}
-
-void LLBottomTray::onDraggableButtonHover(S32 x, S32 y)
-{
-	// if mouse down on draggable item was done, check whether we should start DnD
-	if (mCheckForDrag)
-	{
-		// Start drag'n'drop if mouse cursor was dragged away frome mouse down location enough
-		if(sqrt((float)((mStartX-x)*(mStartX-x)+(mStartY-y)*(mStartY-y))) > DRAG_START_DISTANCE)
-		{
-			mDragStarted = true;
-			mCheckForDrag = false;
-		}
-	}
-	if (mDragStarted)
-	{
-		// Check whether the cursor is over draggable area, find which panel it is and set is as
-		// landing tab for drag'n'drop
-		if(isCursorOverDraggableArea(x, y))
-		{
-			LLPanel* panel = findChildPanelByLocalCoords(x,y);
-			if (panel && panel != mDraggedItem) mLandingTab = panel;
-			gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROWDRAG);
-		}
-		else
-		{
-			gViewerWindow->getWindow()->setCursor(UI_CURSOR_NO);
-		}
-	}
-	else
-	{
-		// Reset cursor in case you move your mouse from the drag handle to a button.
-		getWindow()->setCursor(UI_CURSOR_ARROW);
-
-	}
-}
-
-bool LLBottomTray::isCursorOverDraggableArea(S32 x, S32 y)
-{
-	// Draggable area lasts from the nearby chat input resize handle
-	// to the chiclet area (exlusively).
-	bool result = getRect().pointInRect(x, y);
-	result = result && mNearbyCharResizeHandlePanel->calcScreenRect().mRight < x;
-	result = result && mChicletPanel->calcScreenRect().mRight > x;
-	return result;
-}
-
-void LLBottomTray::updateButtonsOrdersAfterDnD()
-{
-	// *TODO: change implementation of this method to support simplify it
-	// (and according to future possible changes in the way button order is saved between sessions).
-	state_object_map_t::const_iterator it = mStateProcessedObjectMap.begin();
-	state_object_map_t::const_iterator it_end = mStateProcessedObjectMap.end();
-	EResizeState dragged_state = RS_NORESIZE;
-	EResizeState landing_state = RS_NORESIZE;
-	bool landing_state_found = false;
-	// Find states for dragged item and landing tab
-	for (; it != it_end; ++it)
-	{
-		if (it->second == mDraggedItem)
-		{
-			dragged_state = it->first;
-		}
-		else if (it->second == mLandingTab)
-		{
-			landing_state = it->first;
-			landing_state_found = true;
-		}
-	}
-
-	if (dragged_state == RS_NORESIZE)
-	{
-		llwarns << "Cannot determine what button is being dragged" << llendl;
-		llassert(dragged_state != RS_NORESIZE);
-		return;
-	}
-
-	lldebugs << "Will place " << resizeStateToString(dragged_state)
-		<< " before " << resizeStateToString(landing_state) << llendl;
-
-	// Update order of buttons according to drag'n'drop
-	mButtonsOrder.erase(std::find(mButtonsOrder.begin(), mButtonsOrder.end(), dragged_state));
-	if (!landing_state_found && mLandingTab == getChild<LLPanel>(PANEL_CHICLET_NAME))
-	{
-		mButtonsOrder.push_back(dragged_state);
-	}
-	else
-	{
-		if (!landing_state_found) landing_state = RS_BUTTON_SPEAK; // just a random fallback
-		mButtonsOrder.insert(std::find(mButtonsOrder.begin(), mButtonsOrder.end(), landing_state), dragged_state);
-	}
-
-	// Synchronize button process order with their order
-	resize_state_vec_t::const_iterator it1 = mButtonsOrder.begin();
-	const resize_state_vec_t::const_iterator it_end1 = mButtonsOrder.end();
-	resize_state_vec_t::iterator it2 = mButtonsProcessOrder.begin();
-	for (; it1 != it_end1; ++it1)
-	{
-		// Skip Speak because it is not in mButtonsProcessOrder(it's the reason why mButtonsOrder was introduced).
-		// If any other draggable items will be added to bottomtray later, they should also be skipped here.
-		if (*it1 != RS_BUTTON_SPEAK)
-		{
-			*it2 = *it1;
-			++it2;
-		}
-	}
-
-	saveButtonsOrder();
-}
-
-void LLBottomTray::saveButtonsOrder()
-{
-	if (!gSavedSettings.getBOOL("AllowBottomTrayButtonReordering")) return;
-
-	std::string user_dir = gDirUtilp->getLindenUserDir();
-	if (user_dir.empty()) return;
-	
-	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME);
-	LLSD settings_llsd;
-	int i = 0;
-	const resize_state_vec_t::const_iterator it_end = mButtonsOrder.end();
-	// we use numbers as keys for map which is saved in file and contains resize states as its values
-	for (resize_state_vec_t::const_iterator it = mButtonsOrder.begin(); it != it_end; ++it, i++)
-	{
-		std::string str = llformat("%d", i);
-		settings_llsd[str] = *it;		
-	}
-	llofstream file;
-	file.open(filename);
-	LLSDSerialize::toPrettyXML(settings_llsd, file);
-}
-
-void LLBottomTray::loadButtonsOrder()
-{
-	if (!gSavedSettings.getBOOL("AllowBottomTrayButtonReordering")) return;
-
-	// load per-resident sorting information
-	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME);
-
-	LLSD settings_llsd;
-	llifstream file;
-	file.open(filename);
-	if (!file.is_open()) return;
-	
-	LLSDSerialize::fromXML(settings_llsd, file);
-	
-
-	mButtonsOrder.clear();
-	mButtonsProcessOrder.clear();
-	int i = 0;
-	// getting button order from file
-	for (LLSD::map_const_iterator iter = settings_llsd.beginMap();
-		iter != settings_llsd.endMap(); ++iter, ++i)
-	{
-		std::string str = llformat("%d", i);
-		EResizeState state = (EResizeState)settings_llsd[str].asInteger();
-		mButtonsOrder.push_back(state);
-		// RS_BUTTON_SPEAK is skipped, because it shouldn't be in mButtonsProcessOrder (it does not hide or shrink).
-		if (state != RS_BUTTON_SPEAK)
-		{
-			mButtonsProcessOrder.push_back(state);
-		}		
-	}
-
-	// There are other panels in layout stack order of which is not saved. Also, panels order of which is saved,
-	// are already in layout stack but in wrong order. The most convenient way to place them is moving them 
-	// to front one by one (because in this case we don't have to pass the panel before which we want to insert our
-	// panel to movePanel()). So panels are moved in order from the end of mButtonsOrder vector(reverse iterator is used).
-	const resize_state_vec_t::const_reverse_iterator it_end = mButtonsOrder.rend();
-	// placing panels in layout stack according to button order which we loaded in previous for
-	for (resize_state_vec_t::const_reverse_iterator it = mButtonsOrder.rbegin(); it != it_end; ++it, ++i)
-	{
-		LLPanel* panel_to_move = getButtonPanel(*it);
-		mToolbarStack->movePanel(panel_to_move, NULL, true); // prepend 		
-	}
-	// Nearbychat is not stored in order settings file, but it must be the first of the panels, so moving it
-	// (along with its drag handle) manually here.
-	mToolbarStack->movePanel(getChild<LLLayoutPanel>("chat_bar_resize_handle_panel"), NULL, true);
-	mToolbarStack->movePanel(mChatBarContainer, NULL, true);
-}
-
-void LLBottomTray::onDraggableButtonMouseUp(LLUICtrl* ctrl, S32 x, S32 y)
-{
-	//if mouse up happened over area where drop is possible, change order of buttons
-	if (mLandingTab != NULL && mDraggedItem != NULL && mDragStarted)
-	{
-		if(isCursorOverDraggableArea(x, y))
-		{
-			// change order of panels in layout stack
-			mToolbarStack->movePanel(mDraggedItem, (LLPanel*)mLandingTab);
-			// change order of buttons in order vectors
-			updateButtonsOrdersAfterDnD();
-		}
-	}
-	gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW);
-	mDragStarted = false;
-	mDraggedItem = NULL;
-	mLandingTab = NULL;
-	mCheckForDrag = false;
-}
-
-void LLBottomTray::draw()
-{
-	LLPanel::draw();
-	if (mLandingTab)
-	{
-		static S32 w = mImageDragIndication->getWidth();
-		static S32 h = mImageDragIndication->getHeight();
-		LLRect rect = mLandingTab->calcScreenRect();
-		mImageDragIndication->draw(rect.mLeft - w/2, rect.getHeight(), w, h);
-	}
-	getChild<LLButton>("show_profile_btn")->setToggleState(LLAvatarActions::profileVisible(gAgent.getID()));
-
-	LLPanel* panel = LLSideTray::getInstance()->getPanel("panel_people");
-	if (panel && panel->isInVisibleChain())
-	{
-		getChild<LLButton>("show_people_button")->setToggleState(true);
-	}
-	else
-	{
-		getChild<LLButton>("show_people_button")->setToggleState(false);
-	}
-
-	LLFloater* help_browser = (LLFloaterReg::findInstance("help_browser"));
-	bool help_floater_visible = (help_browser && help_browser->isInVisibleChain());
-
-	getChild<LLButton>("show_help_btn")->setToggleState(help_floater_visible);
-
-	bool openmic = LLVoiceClient::getInstance()->getUserPTTState();
-	bool voiceenabled = LLVoiceClient::getInstance()->voiceEnabled();
-	getChild<LLButton>("speak_btn")->setToggleState(openmic && voiceenabled);
-	getChild<LLOutputMonitorCtrl>("chat_zone_indicator")->setIsMuted(!voiceenabled);
-
-}
-
-bool LLBottomTray::onContextMenuItemEnabled(const LLSD& userdata)
-{
-	std::string item = userdata.asString();
-	LLLineEditor* edit_box = mNearbyChatBar->findChild<LLLineEditor>("chat_box");
-	
-	if (item == "can_cut")
-	{
-		return edit_box->canCut();
-	}
-	else if (item == "can_copy")
-	{
-		return edit_box->canCopy();
-	}
-	else if (item == "can_paste")
-	{
-		return edit_box->canPaste();
-	}
-	else if (item == "can_delete")
-	{
-		return edit_box->canDoDelete();
-	}
-	else if (item == "can_select_all")
-	{
-		return edit_box->canSelectAll() && (edit_box->getLength()>0);
-	}
-	return true;
-}
-
-
-void LLBottomTray::onContextMenuItemClicked(const LLSD& userdata)
-{
-	std::string item = userdata.asString();
-	LLLineEditor* edit_box = mNearbyChatBar->findChild<LLLineEditor>("chat_box");
-
-	if (item == "cut")
-	{
-		edit_box->cut();
-	}
-	else if (item == "copy")
-	{
-		edit_box->copy();
-	}
-	else if (item == "paste")
-	{
-		edit_box->paste();
-		edit_box->setFocus(TRUE);
-	}
-	else if (item == "delete")
-	{
-		edit_box->doDelete();
-	}
-	else if (item == "select_all")
-	{
-		edit_box->selectAll();
-	}
-}
-
-void LLBottomTray::log(LLView* panel, const std::string& descr)
-{
-	if (NULL == panel) return;
-	LLView* layout = panel->getParent();
-	LL_DEBUGS("Bottom Tray Rects") << descr << ": "
-		<< "panel: " << panel->getName()
-		<< ", rect: " << panel->getRect()
- 
- 
-		<< " layout: " << layout->getName()
-		<< ", rect: " << layout->getRect()
-		<< LL_ENDL;
-}
-
-void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
-	static S32 debug_calling_number = 0;
-	lldebugs << "**************************************** " << ++debug_calling_number << llendl;
-
-	S32 current_width = getRect().getWidth();
-	S32 delta_width = width - current_width;
-	lldebugs << "Reshaping: " 
-		<< ", width: " << width
-		<< ", cur width: " << current_width
-		<< ", delta_width: " << delta_width
-		<< ", called_from_parent: " << called_from_parent
-		<< llendl;
-
-	if (mNearbyChatBar)			log(mNearbyChatBar, "before");
-	if (mChicletPanel)			log(mChicletPanel, "before");
-
-	// Difference between bottom tray width required to fit its children and the actual width. (see EXT-991)
-	// Positive value means that bottom tray is not wide enough.
-	// Negative value means that there is free space.
-	static S32 extra_shrink_width = 0;
-	bool should_be_reshaped = true;
-
-	if (mChicletPanel && mToolbarStack && mNearbyChatBar)
-	{
-		// Firstly, update layout stack to ensure we deal with correct panel sizes.
-		{
-			BOOL saved_anim = mToolbarStack->getAnimate();
-			// Set chiclet panel to be autoresized by default.
-			mToolbarStack->updatePanelAutoResize(PANEL_CHICLET_NAME, TRUE);
-			// Disable animation to prevent layout updating in several frames.
-			mToolbarStack->setAnimate(FALSE);
-			// Force the updating of layout to reset panels collapse factor.
-			mToolbarStack->updateLayout();
-			// Restore animate state.
-			mToolbarStack->setAnimate(saved_anim);
-		}
-
-		// bottom tray is narrowed
-		if (delta_width < 0)
-		{
-			if (extra_shrink_width > 0) // not enough space
-			{
-				extra_shrink_width += llabs(delta_width);
-				should_be_reshaped = false;
-			}
-			else
-			{
-				extra_shrink_width = processWidthDecreased(delta_width);
-
-				// increase new width to extra_shrink_width value to not reshape less than bottom tray minimum
-				width += extra_shrink_width;
-			}
-		}
-		// bottom tray is widened
-		else
-		{
-			if (extra_shrink_width > delta_width)
-			{
-				// Still not enough space.
-				// Only subtract the delta from the required delta and don't reshape.
-				extra_shrink_width -= delta_width;
-				should_be_reshaped = false;
-			}
-			else 
-			{
-				if (extra_shrink_width > 0)
-				{
-					// If we have some extra shrink width let's reduce delta_width & width
-					delta_width -= extra_shrink_width;
-					width -= extra_shrink_width;
-					extra_shrink_width = 0;
-				}
-				processWidthIncreased(delta_width);
-			}
-		}
-	}
-
-	if (should_be_reshaped)
-	{
-		lldebugs << "Reshape all children with width: " << width << llendl;
-		LLPanel::reshape(width, height, called_from_parent);
-	}
-
-	if (mNearbyChatBar)			log(mNearbyChatBar, "after");
-	if (mChicletPanel)			log(mChicletPanel, "after");
-
-
-	// Restore width of the chatbar on first reshape.
-	// we can not to do this from postBuild because reshape is called from parent view on startup
-	// creation after it and reset width according to resize logic.
-	static bool needs_restore_custom_state = true;
-	if (mChatBarContainer && needs_restore_custom_state)
-	{
-		// restore custom width of chatbar panel.
-		S32 new_width = gSavedSettings.getS32("ChatBarCustomWidth");
-		if (new_width > 0)
-		{
-			mDesiredNearbyChatWidth = new_width;
-			processChatbarCustomization(new_width);
-			lldebugs << "Setting nearby chat bar width to " << new_width << " px" << llendl;
-			mChatBarContainer->reshape(new_width, mChatBarContainer->getRect().getHeight());
-		}
-		needs_restore_custom_state = false;
-	}
-
-}
-
-S32 LLBottomTray::processWidthDecreased(S32 delta_width)
-{
-	bool still_should_be_processed = true;
-
-	const S32 chiclet_panel_shrink_headroom = getChicletPanelShrinkHeadroom();
-
-	// There are four steps of processing width decrease. If in one of them required width was reached,
-	// further are not needed.
-	// 1. Decreasing width of chiclet panel.
-	if (chiclet_panel_shrink_headroom > 0)
-	{
-		// we have some space to decrease chiclet panel
-		S32 shrink_by = llmin(-delta_width, chiclet_panel_shrink_headroom);
-
-		lldebugs << "delta_width: " << delta_width
-			<< ", panel_delta_min: " << chiclet_panel_shrink_headroom
-			<< ", shrink_by: " << shrink_by
-			<< llendl;
-
-		// is chiclet panel wide enough to process resizing?
-		delta_width += chiclet_panel_shrink_headroom;
-
-		still_should_be_processed = delta_width < 0;
-
-		lldebugs << "Shrinking chiclet panel by " << shrink_by << " px" << llendl;
-		mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - shrink_by, mChicletPanel->getParent()->getRect().getHeight());
-		log(mChicletPanel, "after processing panel decreasing via chiclet panel");
-
-		lldebugs << "RS_CHICLET_PANEL" 
-			<< ", delta_width: " << delta_width
-			<< llendl;
-	}
-
-	S32 buttons_freed_width = 0;
-	// 2. Decreasing width of buttons.
-	if (still_should_be_processed)
-	{
-		processShrinkButtons(delta_width, buttons_freed_width);
-		still_should_be_processed = delta_width < 0;
-	}
-
-	// 3. Decreasing width of nearby chat.
-	const S32 chatbar_panel_min_width = get_panel_min_width(mToolbarStack, mChatBarContainer);
-	const S32 chatbar_panel_width = mChatBarContainer->getRect().getWidth();
-	if (still_should_be_processed && chatbar_panel_width > chatbar_panel_min_width)
-	{
-		// we have some space to decrease chatbar panel
-		S32 chatbar_shrink_headroom = chatbar_panel_width - chatbar_panel_min_width;
-
-		S32 shrink_by = llmin(-delta_width, chatbar_shrink_headroom);
-
-		// is chatbar panel wide enough to process resizing?
-		delta_width += chatbar_shrink_headroom;
-
-		still_should_be_processed = delta_width < 0;
-
-		// chatbar should only be shrunk here, not stretched
-		if (shrink_by > 0)
-		{
-			lldebugs << "Shrinking nearby chat bar by " << shrink_by << " px " << llendl;
-			mChatBarContainer->reshape(mNearbyChatBar->getRect().getWidth() - shrink_by, mChatBarContainer->getRect().getHeight());
-		}
-
-		log(mNearbyChatBar, "after processing panel decreasing via nearby chatbar panel");
-
-		lldebugs << "RS_CHATBAR_INPUT"
-			<< ", shrink_by: " << shrink_by
-			<< ", delta_width: " << delta_width
-			<< llendl;
-	}
-
-	S32 extra_shrink_width = 0;
-	// 4. Hiding buttons if needed.
-	if (still_should_be_processed)
-	{
-		processHideButtons(delta_width, buttons_freed_width);
-
-		if (delta_width < 0)
-		{
-			extra_shrink_width = -delta_width;
-			llwarns << "There is no enough width to reshape all children: " 
-				<< extra_shrink_width << llendl;
-		}
-
-		if (buttons_freed_width > 0)
-		{
-			S32 nearby_needed_width = mDesiredNearbyChatWidth - mNearbyChatBar->getRect().getWidth();
-			if (nearby_needed_width > 0)
-			{
-				S32 compensative_width = nearby_needed_width > buttons_freed_width ? buttons_freed_width : nearby_needed_width; 
-				log(mNearbyChatBar, "before applying compensative width");
-				lldebugs << "Extending nearby chat bar by " << compensative_width << " px" << llendl;
-				mChatBarContainer->reshape(mChatBarContainer->getRect().getWidth() + compensative_width, mChatBarContainer->getRect().getHeight() );
-				log(mNearbyChatBar, "after applying compensative width");
-				lldebugs << buttons_freed_width << llendl;
-			}
-		}
-	}
-
-	return extra_shrink_width;
-}
-
-void LLBottomTray::processWidthIncreased(S32 delta_width)
-{
-	if (delta_width <= 0) return;
-
-	// how much room we have to show hidden buttons
-	S32 available_width = delta_width + getChicletPanelShrinkHeadroom();
-
-	lldebugs << "Distributing (" << getChicletPanelShrinkHeadroom()
-		<< " + " << delta_width << ") = " << available_width << " px" << llendl;
-
-	// 1. Try showing buttons that have been auto-hidden.
-	S32 processed_width = processShowButtons(available_width);
-	lldebugs << "processed_width = " << processed_width << ", delta_width = " << delta_width << llendl;
-
-	lldebugs << "Available_width after showing buttons: " << available_width << llendl;
-
-	// If the newly shown buttons have consumed more than delta_width pixels,
-	// shrink the chiclet panel.
-	if (processed_width > delta_width)
-	{
-		// 1. use delta width of resizing
-		S32 shrink_by = processed_width - delta_width;
-
-		// 2. use width available via decreasing of chiclet panel
-		if (shrink_by > 0)
-		{
-			lldebugs << "Shrinking chiclet panel by " << shrink_by << " px" << llendl;
-			mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - shrink_by, mChicletPanel->getParent()->getRect().getHeight());
-			log(mChicletPanel, "after applying compensative width for chiclets: ");
-			lldebugs << shrink_by << llendl;
-		}
-
-		// shown buttons take some space, rest should be processed by nearby chatbar & chiclet panels
-		delta_width -= processed_width;
-	}
-
-	// 2. Expand the nearby chat bar if needed.
-	S32 chatbar_panel_width = mChatBarContainer->getRect().getWidth();
-	lldebugs << "delta_width = " << delta_width
-		<< ", chatbar_panel_width = " << chatbar_panel_width
-		<< ", mDesiredNearbyChatWidth = " << mDesiredNearbyChatWidth << llendl;
-	if (delta_width > 0 && chatbar_panel_width < mDesiredNearbyChatWidth)
-	{
-		S32 extend_by_max = mDesiredNearbyChatWidth - chatbar_panel_width;
-		S32 extend_by = llmin(delta_width, extend_by_max);
-		lldebugs << "Unprocessed delta width: " << delta_width
-			<< " px, chatbar can be extended by " << extend_by_max
-			<< " px, extending it by " << extend_by << " px"
-			<< llendl;
-
-		delta_width -= extend_by_max;
-		lldebugs << "Extending nearby chat bar by " << extend_by << " px " << llendl;
-		mChatBarContainer->reshape(chatbar_panel_width + extend_by, mChatBarContainer->getRect().getHeight());
-		log(mNearbyChatBar, "applied unprocessed delta width");
-	}
-
-	// 3. Expand buttons that have been auto-shrunk,
-	// if we haven't yet consumed all the available headroom.
-	if (delta_width > 0)
-	{
-		S32 available_width = delta_width + getChicletPanelShrinkHeadroom();
-		processExtendButtons(available_width);
-	}
-}
-
-S32 LLBottomTray::processShowButtons(S32& available_width)
-{
-	lldebugs << "Distributing " << available_width << " px" << llendl;
-	S32 original_available_width = available_width;
-
-	// process buttons from left to right
-	resize_state_vec_t::const_iterator it = mButtonsProcessOrder.begin();
-	const resize_state_vec_t::const_iterator it_end = mButtonsProcessOrder.end();
-
-	for (; it != it_end; ++it)
-	{
-		// is there available space?
-		if (available_width <= 0) break;
-
-		// try to show next button
-		processShowButton(*it, available_width);
-	}
-
-	return original_available_width - available_width;
-}
-
-bool LLBottomTray::processShowButton(EResizeState shown_object_type, S32& available_width)
-{
-	// Check if the button was previously auto-hidden (due to lack of space).
-	if (!isAutoHidden(shown_object_type))
-	{
-		return false;
-	}
-
-	// Ok. Try showing the button.
-	return showButton(shown_object_type, available_width);
-}
-
-void LLBottomTray::processHideButtons(S32& required_width, S32& buttons_freed_width)
-{
-	// process buttons from right to left
-	resize_state_vec_t::const_reverse_iterator it = mButtonsProcessOrder.rbegin();
-	const resize_state_vec_t::const_reverse_iterator it_end = mButtonsProcessOrder.rend();
-
-	for (; it != it_end; ++it)
-	{
-		// is it still necessary to hide a button?
-		if (required_width >= 0) break;
-
-		// try to hide next button
-		processHideButton(*it, required_width, buttons_freed_width);
-	}
-}
-
-void LLBottomTray::processHideButton(EResizeState processed_object_type, S32& required_width, S32& buttons_freed_width)
-{
-	lldebugs << "Trying to hide object type: " << processed_object_type << llendl;
-	LLPanel* panel = getButtonPanel(processed_object_type);
-	if (NULL == panel)
-	{
-		return;
-	}
-
-	if (panel->getVisible())
-	{
-		required_width += panel->getRect().getWidth();
-
-		if (required_width > 0)
-		{
-			buttons_freed_width += required_width;
-		}
-
-		setTrayButtonVisible(processed_object_type, false);
-
-		setAutoHidden(processed_object_type, true);
-
-		lldebugs << "processing object type: " << processed_object_type
-			<< ", buttons_freed_width: " << buttons_freed_width
-			<< llendl;
-	}
-}
-
-void LLBottomTray::processShrinkButtons(S32& required_width, S32& buttons_freed_width)
-{
-	// process buttons from right to left
-	resize_state_vec_t::const_reverse_iterator it = mButtonsProcessOrder.rbegin();
-	const resize_state_vec_t::const_reverse_iterator it_end = mButtonsProcessOrder.rend();
-
-	// iterate through buttons in the mButtonsProcessOrder first
-	for (; it != it_end; ++it)
-	{
-		// is it still necessary to hide a button?
-		if (required_width >= 0) break;
-
-		// try to shrink next button
-		processShrinkButton(*it, required_width);
-	}
-
-	// then shrink Speak button
-	if (required_width < 0)
-	{
-		S32 panel_min_width = 0;
-		std::string panel_name = mSpeakPanel->getName();
-		bool success = mToolbarStack->getPanelMinSize(panel_name, &panel_min_width);
-		if (!success)
-		{
-			lldebugs << "Panel was not found to get its min width: " << panel_name << llendl;
-		}
-		else
-		{
-			S32 panel_width = mSpeakPanel->getRect().getWidth();
-			S32 possible_shrink_width = panel_width - panel_min_width;
-
-			if (possible_shrink_width > 0)
-			{
-				if (mSpeakBtn)
-				{	
-					mSpeakBtn->setLabelVisible(false);
-				}
-
-				mSpeakPanel->reshape(panel_width - possible_shrink_width, mSpeakPanel->getRect().getHeight());
-
-				required_width += possible_shrink_width;
-
-				if (required_width > 0)
-				{
-					buttons_freed_width += required_width;
-				}
-
-				lldebugs << "Shrunk Speak button panel: " << panel_name
-					<< ", shrunk width: " << possible_shrink_width
-					<< ", rest width to process: " << required_width
-					<< llendl;
-			}
-		}
-	}
-}
-
-void LLBottomTray::processShrinkButton(EResizeState processed_object_type, S32& required_width)
-{
-	LLPanel* panel = getButtonPanel(processed_object_type);
-	if (NULL == panel)
-	{
-		return;
-	}
-
-	if (panel->getVisible())
-	{
-		S32 panel_width = panel->getRect().getWidth();
-		S32 panel_min_width = 0;
-		std::string panel_name = panel->getName();
-		bool success = mToolbarStack->getPanelMinSize(panel_name, &panel_min_width);
-		S32 possible_shrink_width = panel_width - panel_min_width;
-
-		if (!success)
-		{
-			lldebugs << "Panel was not found to get its min width: " << panel_name << llendl;
-		}
-		// we have some space to free by shrinking the button
-		else if (possible_shrink_width > 0)
-		{
-			// let calculate real width to shrink
-
-			// 1. apply all possible width
-			required_width += possible_shrink_width;
-
-			// 2. it it is too much... 
-			if (required_width > 0)
-			{
-				// reduce applied shrunk width to the excessive value.
-				possible_shrink_width -= required_width;
-				required_width = 0;
-			}
-			panel->reshape(panel_width - possible_shrink_width, panel->getRect().getHeight());
-
-			lldebugs << "Shrunk panel: " << panel_name
-				<< ", shrunk width: " << possible_shrink_width
-				<< ", rest width to process: " << required_width
-				<< llendl;
-		}
-	}
-}
-
-
-void LLBottomTray::processExtendButtons(S32& available_width)
-{
-	// do not allow extending any buttons if we have some buttons hidden via resize
-	if (isAutoHidden(RS_BUTTONS_CAN_BE_HIDDEN)) return;
-
-	lldebugs << "Distributing " << available_width << " px" << llendl;
-
-	// First try extending the Speak button.
-	if (available_width > 0)
-	{
-		if (!processExtendSpeakButton(available_width))
-		{
-			// The Speak button needs extension but lacks some space.
-			// Don't extend other buttons in this case: the Speak button
-			// should consume the available headroom first.
-			return;
-		}
-	}
-
-	// Then process the other buttons from left to right.
-	if (available_width > 0)
-	{
-		resize_state_vec_t::const_iterator it = mButtonsProcessOrder.begin();
-		const resize_state_vec_t::const_iterator it_end = mButtonsProcessOrder.end();
-
-		// iterate through buttons in the mButtonsProcessOrder first
-		for (; it != it_end; ++it)
-		{
-			// is there available space?
-			if (available_width <= 0) break;
-
-			// try to extend next button
-			processExtendButton(*it, available_width);
-		}
-	}
-}
-
-bool LLBottomTray::processExtendSpeakButton(S32& available_width)
-{
-	if (available_width <= 0)
-	{
-		llassert(available_width > 0);
-		return true;
-	}
-
-	const S32 panel_max_width = mObjectDefaultWidthMap[RS_BUTTON_SPEAK];
-	const S32 panel_width = mSpeakPanel->getRect().getWidth();
-	const S32 required_headroom = panel_max_width - panel_width;
-
-	if (panel_width < panel_max_width) // if the button isn't extended already
-	{
-		if (available_width < required_headroom) // not enough space
-		{
-			lldebugs << "Need (" << required_headroom << " - " << available_width << ") = "
-				<< (required_headroom - available_width) << " more px"
-				<< " to extend the Speak button"<< llendl;
-
-			return false; // Don't extend other buttons until we extend Speak.
-		}
-
-		// Reshape the Speak button to its maximum width.
-		if (mSpeakBtn) mSpeakBtn->setLabelVisible(true);
-		mSpeakPanel->reshape(panel_max_width, mSpeakPanel->getRect().getHeight());
-
-		available_width -= required_headroom;
-		llassert(available_width >= 0);
-
-		lldebugs << "Extending Speak button panel: " << mSpeakPanel->getName()
-			<< ", extended width: " << required_headroom
-			<< ", rest width to process: " << available_width
-			<< llendl;
-	}
-
-	return true;
-}
-
-void LLBottomTray::processExtendButton(EResizeState processed_object_type, S32& available_width)
-{
-	llassert(available_width >= 0);
-
-	LLPanel* panel = getButtonPanel(processed_object_type);
-	if (NULL == panel)
-	{
-		return;
-	}
-
-	if (!panel->getVisible()) return;
-
-	// Widen the button up to its maximum width, but by not more than <available_width> px.
-	S32 panel_max_width = mObjectDefaultWidthMap[processed_object_type];
-	S32 panel_width = panel->getRect().getWidth();
-	S32 required_headroom = panel_max_width - panel_width;
-
-	S32 extend_by = llmin(available_width, required_headroom);
-	if (extend_by > 0)
-	{
-		panel->reshape(panel_width + extend_by, panel->getRect().getHeight());
-
-		// Decrease amount of headroom available for other panels.
-		available_width -= extend_by;
-
-		lldebugs << "Extending " << panel->getName()
-			<< " by " << extend_by
-			<< " px; remaining available width: " << available_width
-			<< llendl;
-	}
-}
-
-bool LLBottomTray::canButtonBeShown(EResizeState processed_object_type) const
-{
-	// Check that all buttons (that can be hidden on resize)
-	// to the left of the given one are already shown.
-
-	// process buttons in direct order (from left to right)
-	resize_state_vec_t::const_iterator it = mButtonsProcessOrder.begin();
-	const resize_state_vec_t::const_iterator it_end = mButtonsProcessOrder.end();
-
-	MASK buttons_before_mask = RS_NORESIZE;
-	for (; it != it_end; ++it)
-	{
-		const EResizeState button_type = *it;
-		if (button_type == processed_object_type) break;
-
-		buttons_before_mask |= button_type;
-	}
-
-	return !isAutoHidden(buttons_before_mask);
-}
-
-void LLBottomTray::initResizeStateContainers()
-{
-	// init map with objects should be processed for each type
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SPEAK, getChild<LLPanel>("speak_panel")));
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_GESTURES, getChild<LLPanel>("gesture_panel")));
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MOVEMENT, getChild<LLPanel>("movement_panel")));
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_CAMERA, getChild<LLPanel>("cam_panel")));
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_DESTINATIONS, getChild<LLPanel>("destinations_panel")));
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_AVATARS, getChild<LLPanel>("avatar_panel")));
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SNAPSHOT, getChild<LLPanel>("snapshot_panel")));
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_BUILD, getChild<LLPanel>("build_btn_panel")));
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SEARCH, getChild<LLPanel>("search_btn_panel")));
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_WORLD_MAP, getChild<LLPanel>("world_map_btn_panel")));
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_MINI_MAP, getChild<LLPanel>("mini_map_btn_panel")));
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SPLITTER_1, getChild<LLPanel>("splitter_panel_1")));
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_PEOPLE, getChild<LLPanel>("people_panel")));
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_PROFILE, getChild<LLPanel>("profile_panel")));
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_SPLITTER_2, getChild<LLPanel>("splitter_panel_2")));
-	mStateProcessedObjectMap.insert(std::make_pair(RS_BUTTON_HOWTO, getChild<LLPanel>("howto_panel")));
-
-	// init an order of processed buttons
-	mButtonsProcessOrder.push_back(RS_BUTTON_DESTINATIONS);
-	mButtonsProcessOrder.push_back(RS_BUTTON_AVATARS);
-	mButtonsProcessOrder.push_back(RS_BUTTON_SNAPSHOT);
-	mButtonsProcessOrder.push_back(RS_BUTTON_BUILD);
-	mButtonsProcessOrder.push_back(RS_BUTTON_SEARCH);
-	mButtonsProcessOrder.push_back(RS_BUTTON_WORLD_MAP);
-	mButtonsProcessOrder.push_back(RS_BUTTON_MINI_MAP);
-	mButtonsProcessOrder.push_back(RS_BUTTON_SPLITTER_1);
-	mButtonsProcessOrder.push_back(RS_BUTTON_PEOPLE);
-	mButtonsProcessOrder.push_back(RS_BUTTON_PROFILE);
-	mButtonsProcessOrder.push_back(RS_BUTTON_SPLITTER_2);
-	mButtonsProcessOrder.push_back(RS_BUTTON_HOWTO);
-	mButtonsProcessOrder.push_back(RS_BUTTON_MOVEMENT);
-	mButtonsProcessOrder.push_back(RS_BUTTON_CAMERA);
-	mButtonsProcessOrder.push_back(RS_BUTTON_GESTURES);
-
-	mButtonsOrder.push_back(RS_BUTTON_SPEAK);
-	mButtonsOrder.insert(mButtonsOrder.end(), mButtonsProcessOrder.begin(), mButtonsProcessOrder.end());
-
-	// init default widths
-
-	// process buttons that can be hidden on resize...
-	resize_state_vec_t::const_iterator it = mButtonsProcessOrder.begin();
-	const resize_state_vec_t::const_iterator it_end = mButtonsProcessOrder.end();
-
-	for (; it != it_end; ++it)
-	{
-		const EResizeState button_type = *it;
-		// is there an appropriate object?
-		LLPanel* button_panel = getButtonPanel(button_type);
-		if (!button_panel) continue;
-
-		// set default width for it.
-		mObjectDefaultWidthMap[button_type] = button_panel->getRect().getWidth();
-	}
-
-	// ... and add Speak button because it also can be shrunk.
-	mObjectDefaultWidthMap[RS_BUTTON_SPEAK]	   = mSpeakPanel->getRect().getWidth();
-}
-
-// this method must be called before restoring of the chat entry field on startup
-// because it resets chatbar's width according to resize logic.
-void LLBottomTray::initButtonsVisibility()
-{
-	setVisibleAndFitWidths(RS_BUTTON_SPEAK, gSavedSettings.getBOOL("EnableVoiceChat") || !mSpeakBtn );
-	setVisibleAndFitWidths(RS_BUTTON_GESTURES, gSavedSettings.getBOOL("ShowGestureButton"));
-	setVisibleAndFitWidths(RS_BUTTON_MOVEMENT, gSavedSettings.getBOOL("ShowMoveButton"));
-	setVisibleAndFitWidths(RS_BUTTON_CAMERA, gSavedSettings.getBOOL("ShowCameraButton"));
-	setVisibleAndFitWidths(RS_BUTTON_SNAPSHOT, gSavedSettings.getBOOL("ShowSnapshotButton"));
-	setVisibleAndFitWidths(RS_BUTTON_BUILD, gSavedSettings.getBOOL("ShowBuildButton"));
-	setVisibleAndFitWidths(RS_BUTTON_SEARCH, gSavedSettings.getBOOL("ShowSearchButton"));
-	setVisibleAndFitWidths(RS_BUTTON_WORLD_MAP, gSavedSettings.getBOOL("ShowWorldMapButton"));
-	setVisibleAndFitWidths(RS_BUTTON_MINI_MAP, gSavedSettings.getBOOL("ShowMiniMapButton"));
-	lldebugs << "mResizeState = " << resizeStateMaskToString(mResizeState) << llendl;
-}
-
-void LLBottomTray::setButtonsControlsAndListeners()
-{
-	// always show the speak panel if using the basic skin
-	if (mSpeakBtn)
-	{
-		gSavedSettings.getControl("EnableVoiceChat")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_SPEAK, _2));
-	}	
-
-	gSavedSettings.getControl("ShowGestureButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_GESTURES, _2));
-	gSavedSettings.getControl("ShowMoveButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_MOVEMENT, _2));
-	gSavedSettings.getControl("ShowCameraButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_CAMERA, _2));
-	gSavedSettings.getControl("ShowSnapshotButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_SNAPSHOT, _2));
-	gSavedSettings.getControl("ShowBuildButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_BUILD, _2));
-	gSavedSettings.getControl("ShowSearchButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_SEARCH, _2));
-	gSavedSettings.getControl("ShowWorldMapButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_WORLD_MAP, _2));
-	gSavedSettings.getControl("ShowMiniMapButton")->getSignal()->connect(boost::bind(&LLBottomTray::toggleShowButton, RS_BUTTON_MINI_MAP, _2));
-
-
-	LLButton* build_btn = getChild<LLButton>("build_btn");
-	// set control name for Build button. It is not enough to link it with Button.SetFloaterToggle in xml
-	std::string vis_control_name = LLFloaterReg::declareVisibilityControl("build");
-	// Set the button control value (toggle state) to the floater visibility control (Sets the value as well)
-	build_btn->setControlVariable(LLFloater::getControlGroup()->getControl(vis_control_name));
-}
-
-bool LLBottomTray::toggleShowButton(LLBottomTray::EResizeState button_type, const LLSD& new_visibility)
-{
-	if (LLBottomTray::instanceExists())
-	{
-		LLBottomTray::getInstance()->setTrayButtonVisibleIfPossible(button_type, new_visibility.asBoolean());
-	}
-	return true;
-}
-
-bool LLBottomTray::showButton(EResizeState button_type, S32& available_width)
-{
-	LLPanel* panel = getButtonPanel(button_type);
-	if (NULL == panel)
-	{
-		return false;
-	}
-
-	if (panel->getVisible())
-	{
-		return false;
-	}
-
-	// Check if none of the buttons to the left of the given one was auto-hidden.
-	// (we auto-show the buttons left to right).
-	if (!canButtonBeShown(button_type))
-	{
-		return false;
-	}
-
-	// Make sure we have enough room to show this button.
-	const S32 required_width = panel->getRect().getWidth();
-	if (available_width < required_width)
-	{
-		lldebugs << "Need " << (required_width - available_width) << " more px to show " << resizeStateToString(button_type) << llendl;
-		return false;
-	}
-
-	// All good. Show the button.
-	setTrayButtonVisible(button_type, true);
-
-	// Let the caller know that there is now less available space.
-	available_width -= required_width;
-
-	lldebugs << "Showing button " << resizeStateToString(button_type)
-		<< ", remaining available width: " << available_width
-		<< llendl;
-	setAutoHidden(button_type, false);
-
-	return true;
-}
-
-void LLBottomTray::setTrayButtonVisible(EResizeState shown_object_type, bool visible)
-{
-	LLPanel* panel = getButtonPanel(shown_object_type);
-	if (NULL == panel)
-	{
-		return;
-	}
-
-	panel->setVisible(visible);
-}
-
-void LLBottomTray::setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible, bool raise_notification)
-{
-	if (!setVisibleAndFitWidths(shown_object_type, visible) && visible && raise_notification)
-	{
-		LLNotificationsUtil::add("BottomTrayButtonCanNotBeShown",
-								 LLSD(),
-								 LLSD(),
-								 LLNotificationFunctorRegistry::instance().DONOTHING);
-	}
-}
-
-bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible)
-{
-	// The Speak button is treated specially: if voice is enabled,
-	// the button should be displayed no matter how much space we've got.
-	if (object_type == RS_BUTTON_SPEAK)
-	{
-		showSpeakButton(visible);
-		return true;
-	}
-
-	LLPanel* cur_panel = getButtonPanel(object_type);
-	if (NULL == cur_panel)
-	{
-		return false;
-	}
-
-	bool is_set = true;
-
-	if (visible)
-	{
-		// Assume that only chiclet panel can be auto-resized
-		const S32 available_width = getChicletPanelShrinkHeadroom();
-
-		S32 preferred_width = mObjectDefaultWidthMap[object_type];
-		S32 current_width = cur_panel->getRect().getWidth();
-		S32 result_width = 0;
-		bool decrease_width = false;
-
-		if (preferred_width > 0 && available_width >= preferred_width)
-		{
-			result_width = preferred_width;
-		}
-		else if (available_width >= current_width)
-		{
-			result_width = current_width;
-		}
-		else
-		{
-			// Calculate the possible shrunk width as difference between current and minimal widths
-			const S32 chatbar_shrunk_width =
-				mChatBarContainer->getRect().getWidth() - get_panel_min_width(mToolbarStack, mChatBarContainer);
-
-			S32 sum_of_min_widths = get_panel_min_width(mToolbarStack, mSpeakPanel);
-			S32 sum_of_curr_widths = get_curr_width(mSpeakPanel);
-
-			resize_state_vec_t::const_iterator it = mButtonsProcessOrder.begin();
-			const resize_state_vec_t::const_iterator it_end = mButtonsProcessOrder.end();
-
-			for (; it != it_end; ++it)
-			{
-				LLPanel* cur_panel = getButtonPanel(*it);
-				sum_of_min_widths += get_panel_min_width(mToolbarStack, cur_panel);
-				sum_of_curr_widths += get_curr_width(cur_panel);
-			}
-
-			const S32 possible_shrunk_width =
-				chatbar_shrunk_width + (sum_of_curr_widths - sum_of_min_widths);
-
-			// Minimal width of current panel
-			S32 minimal_width = 0;
-			mToolbarStack->getPanelMinSize(cur_panel->getName(), &minimal_width);
-
-			if ( (available_width + possible_shrunk_width) >= minimal_width)
-			{
-				// There is enough space for minimal width, but set the result_width
-				// to preferred_width so buttons widths decreasing will be done in predefined order
-				result_width = (preferred_width > 0) ? preferred_width : current_width;
-				decrease_width = true;
-			}
-			else
-			{
-				lldebugs << "Need " << (minimal_width - available_width - possible_shrunk_width)
-					<< " more px to show " << resizeStateToString(object_type) << llendl;
-
-				// Make the button uppear when we have more available space.
-				setAutoHidden(object_type, true);
-				return false;
-			}
-		}
-
-		if (result_width != current_width)
-		{
-			cur_panel->reshape(result_width, cur_panel->getRect().getHeight());
-			current_width = result_width;
-		}
-
-		is_set = showButton(object_type, current_width);
-
-		// Shrink buttons if needed
-		if (is_set && decrease_width)
-		{
-			processWidthDecreased( -result_width);
-		}
-	}
-	else
-	{
-		const S32 delta_width = get_curr_width(cur_panel);
-
-		setTrayButtonVisible(object_type, false);
-
-		// Mark button NOT to show while future bottom tray extending
-		lldebugs << "Removing " << resizeStateToString(object_type) << " from mResizeState" << llendl;
-		setAutoHidden(object_type, false);
-
-		// Extend other buttons if need
-		if (delta_width)
-		{
-			processWidthIncreased(delta_width);
-		}
-	}
-	return is_set;
-}
-
-LLPanel* LLBottomTray::getButtonPanel(EResizeState button_type)
-{
-	// Don't use the operator[] because it inserts a NULL value if the key is not found.
-	if (mStateProcessedObjectMap.count(button_type) == 0)
-	{
-		llwarns << "Cannot find a panel for " << resizeStateToString(button_type) << llendl;
-		llassert(mStateProcessedObjectMap.count(button_type) == 1);
-		return NULL;
-	}
-
-	return mStateProcessedObjectMap[button_type];
-}
-
-void LLBottomTray::showWellButton(EResizeState object_type, bool visible)
-{
-	llassert( ((RS_NOTIFICATION_WELL | RS_IM_WELL) & object_type) == object_type );
-
-	const std::string panel_name = RS_IM_WELL == object_type ? "im_well_panel" : "notification_well_panel";
-
-	LLView * panel = getChild<LLView>(panel_name);
-
-	// if necessary visibility is set nothing to do here
-	if (panel->getVisible() == (BOOL)visible) return;
-
-	S32 panel_width = panel->getRect().getWidth();
-	panel->setVisible(visible);
-
-	if (visible)
-	{
-		// method assumes that input param is a negative value
-		processWidthDecreased(-panel_width);
-	}
-	else
-	{
-		processWidthIncreased(panel_width);
-	}
-}
-
-void LLBottomTray::processChatbarCustomization(S32 new_width)
-{
-	if (NULL == mNearbyChatBar) return;
-
-	const S32 delta_width = mChatBarContainer->getRect().getWidth() - new_width;
-
-	if (delta_width == 0) return;
-
-	{
-		static unsigned dbg_cnt = 0;
-		lldebugs << llformat("*** (%03d) ************************************* %d", delta_width, ++dbg_cnt) << llendl;
-	}
-
-	mDesiredNearbyChatWidth = new_width;
-
-	const S32 available_chiclet_shrink_width = getChicletPanelShrinkHeadroom();
-	llassert(available_chiclet_shrink_width >= 0);
-
-	if (delta_width > 0) // panel gets narrowly
-	{
-		S32 total_possible_width = delta_width + available_chiclet_shrink_width;
-		processShowButtons(total_possible_width);
-		processExtendButtons(total_possible_width);
-	}
-	// here (delta_width < 0) // panel gets wider
-	else //if (-delta_width > available_chiclet_shrink_width)
-	{
-		S32 required_width = delta_width + available_chiclet_shrink_width;
-		S32 buttons_freed_width = 0;
-		processShrinkButtons(required_width, buttons_freed_width);
-		processHideButtons(required_width, buttons_freed_width);
-	}
-}
-
-S32 LLBottomTray::getChicletPanelShrinkHeadroom() const
-{
-	static const S32 min_width = mChicletPanel->getMinWidth();
-	const S32 cur_width = mChicletPanel->getParent()->getRect().getWidth();
-
-	S32 shrink_headroom = cur_width - min_width;
-	llassert(shrink_headroom >= 0); // the panel cannot get narrower than the minimum
-	return shrink_headroom;
-}
-
-// static
-std::string LLBottomTray::resizeStateToString(EResizeState state)
-{
-	const char *rs_string = "UNKNOWN_BUTTON";
-	
-	switch (state)
-	{
-		case RS_NORESIZE:               rs_string = "RS_NORESIZE";              break;
-		case RS_CHICLET_PANEL:          rs_string = "RS_CHICLET_PANEL";         break;
-		case RS_CHATBAR_INPUT:          rs_string = "RS_CHATBAR_INPUT";         break;
-		case RS_BUTTON_SNAPSHOT:        rs_string = "RS_BUTTON_SNAPSHOT";       break;
-		case RS_BUTTON_CAMERA:          rs_string = "RS_BUTTON_CAMERA";         break;
-		case RS_BUTTON_MOVEMENT:        rs_string = "RS_BUTTON_MOVEMENT";       break;
-		case RS_BUTTON_GESTURES:        rs_string = "RS_BUTTON_GESTURES";       break;
-		case RS_BUTTON_SPEAK:           rs_string = "RS_BUTTON_SPEAK";          break;
-		case RS_IM_WELL:                rs_string = "RS_IM_WELL";               break;
-		case RS_NOTIFICATION_WELL:      rs_string = "RS_NOTIFICATION_WELL";     break;
-		case RS_BUTTON_BUILD:           rs_string = "RS_BUTTON_BUILD";          break;
-		case RS_BUTTON_SEARCH:          rs_string = "RS_BUTTON_SEARCH";         break;
-		case RS_BUTTON_WORLD_MAP:       rs_string = "RS_BUTTON_WORLD_MAP";      break;
-		case RS_BUTTON_MINI_MAP:        rs_string = "RS_BUTTON_MINI_MAP";       break;
-		case RS_BUTTON_DESTINATIONS:    rs_string = "RS_BUTTON_DESTINATIONS";   break;
-		case RS_BUTTON_AVATARS:         rs_string = "RS_BUTTON_AVATARS";        break;
-		case RS_BUTTON_PEOPLE:          rs_string = "RS_BUTTON_PEOPLE";         break;
-		case RS_BUTTON_PROFILE:         rs_string = "RS_BUTTON_PROFILE";        break;
-		case RS_BUTTON_HOWTO:           rs_string = "RS_BUTTON_HOWTO";          break;
-		case RS_BUTTON_SPLITTER_1:      rs_string = "RS_BUTTON_SPLITTER_1";     break;
-		case RS_BUTTON_SPLITTER_2:      rs_string = "RS_BUTTON_SPLITTER_2";     break;
-		case RS_BUTTONS_CAN_BE_HIDDEN:  rs_string = "RS_BUTTONS_CAN_BE_HIDDEN"; break;
-		// No default to track additions.
-	}
-
-	return rs_string;
-}
-
-// static
-std::string LLBottomTray::resizeStateMaskToString(MASK mask)
-{
-	std::string res;
-
-	bool add_delimiter = false;
-    for (U32 i = 0; i < 16; i++)
-    {
-    	EResizeState state = (EResizeState) (1 << i);
-    	if (mask & state)
-    	{
-    		if (!add_delimiter)
-    		{
-    			add_delimiter = true;
-    		}
-    		else
-    		{
-    			res += ", ";
-    		}
-
-			res += resizeStateToString(state);
-    	}
-    }
-
-    if (res.empty())
-    {
-    	res = resizeStateToString(RS_NORESIZE);
-    }
-
-    res += llformat(" (0x%X)", mask);
-    return res;
-}
-
-bool LLBottomTray::isAutoHidden(MASK button_types) const
-{
-	return (mResizeState & button_types) != 0;
-}
-
-void LLBottomTray::setAutoHidden(MASK button_types, bool hide)
-{
-	if (hide)
-	{
-		mResizeState |= button_types;
-	}
-	else
-	{
-		mResizeState &= ~button_types;
-	}
-}
-
-//EOF
diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h
deleted file mode 100644
index e26b0792e93370eda7d2dbf3f0e284d442aacc4d..0000000000000000000000000000000000000000
--- a/indra/newview/llbottomtray.h
+++ /dev/null
@@ -1,564 +0,0 @@
-/** 
-* @file llbottomtray.h
-* @brief LLBottomTray class header file
-*
-* $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_LLBOTTOMPANEL_H
-#define LL_LLBOTTOMPANEL_H
-
-#include "llpanel.h"
-#include "llimview.h"
-#include "llbutton.h"
-
-class LLChicletPanel;
-class LLLayoutStack;
-class LLSpeakButton;
-class LLNearbyChatBar;
-class LLIMChiclet;
-class LLBottomTrayLite;
-class LLLayoutPanel;
-class LLMenuGL;
-class LLNearbyChatBarListener;
-
-// Build time optimization, generate once in .cpp file
-#ifndef LLBOTTOMTRAY_CPP
-extern template class LLBottomTray* LLSingleton<class LLBottomTray>::getInstance();
-#endif
-
-/**
- * Class for buttons that should have drag'n'drop ability in bottomtray.
- * These buttons pass mouse events handling to bottomtray.
- */
-class LLBottomtrayButton : public LLButton
-{
-public:
-	struct Params : public LLInitParam::Block<Params, LLButton::Params>
-	{
-		Optional<bool> can_drag;
-		Params()
-		: can_drag("can_drag", true){}
-	};
-	/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask);
-	/*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask);
-	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask);
-
-protected:
-	LLBottomtrayButton(const Params& p)
-	:	LLButton(p),
-		mCanDrag(p.can_drag)
-	{
-
-	}
-	friend class LLUICtrlFactory;
-
-	bool mCanDrag;
-};
-
-class LLBottomTray 
-	: public LLSingleton<LLBottomTray>
-	, public LLPanel
-	, public LLIMSessionObserver
-	, public LLVoiceClientStatusObserver
-{
-	LOG_CLASS(LLBottomTray);
-	friend class LLSingleton<LLBottomTray>;
-	friend class LLBottomTrayLite;
-public:
-	~LLBottomTray();
-
-	BOOL postBuild();
-
-	LLChicletPanel*		getChicletPanel()	{return mChicletPanel;}
-	LLNearbyChatBar*		getNearbyChatBar();
-
-	void onCommitGesture(LLUICtrl* ctrl);
-
-	// LLIMSessionObserver observe triggers
-	virtual void sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id);
-	virtual void sessionRemoved(const LLUUID& session_id);
-	void sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id);
-
-	S32 getTotalUnreadIMCount();
-
-	virtual void reshape(S32 width, S32 height, BOOL called_from_parent);
-
-	virtual void setVisible(BOOL visible);
-
-	/*virtual*/ S32 notifyParent(const LLSD& info);
-
-	// Implements LLVoiceClientStatusObserver::onChange() to enable the speak
-	// button when voice is available
-	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
-
-	void showBottomTrayContextMenu(S32 x, S32 y, MASK mask);
-
-	void showSpeakButton(bool visible);
-
-	void toggleMovementControls();
-	void toggleCameraControls();
-
-	void onMouselookModeIn();
-	void onMouselookModeOut();
-
-	/**
-	 * Creates IM Chiclet based on session type (IM chat or Group chat)
-	 */
-	LLIMChiclet* createIMChiclet(const LLUUID& session_id);
-
-	// Below are methods that were introduced or overriden in bottomtray to handle drag'n'drop
-
-	virtual void draw();
-
-	/**
-	 * These three methods handle drag'n'drop, they may be called directly from child buttons.
-	 * handleHover and other virtual handle* couldn't be used here, because we should call LLPanel::handle*,
-	 * but x and y here are often outside of bottomtray.
-	 */
-	void onDraggableButtonHover(S32 x, S32 y);
-	void onDraggableButtonMouseDown(LLUICtrl* button, S32 x, S32 y);
-	void onDraggableButtonMouseUp(LLUICtrl* button, S32 x, S32 y);
-
-
-private:
-	typedef enum e_resize_state
-	{
-		RS_NORESIZE				= 0x0000,
-		RS_CHICLET_PANEL		= 0x0001,
-		RS_CHATBAR_INPUT		= 0x0002,
-		RS_BUTTON_SNAPSHOT		= 0x0004,
-		RS_BUTTON_CAMERA		= 0x0008,
-		RS_BUTTON_MOVEMENT		= 0x0010,
-		RS_BUTTON_GESTURES		= 0x0020,
-		RS_BUTTON_SPEAK			= 0x0040,
-		RS_IM_WELL				= 0x0080,
-		RS_NOTIFICATION_WELL	= 0x0100,
-		RS_BUTTON_BUILD			= 0x0200,
-		RS_BUTTON_SEARCH		= 0x0400,
-		RS_BUTTON_WORLD_MAP		= 0x0800,
-		RS_BUTTON_MINI_MAP		= 0x1000,
-		RS_BUTTON_DESTINATIONS	= 0x2000,
-		RS_BUTTON_AVATARS		= 0x4000,
-		RS_BUTTON_PEOPLE		= 0x8000,
-		RS_BUTTON_PROFILE		= 0x10000,
-		RS_BUTTON_HOWTO			= 0x20000,
-		RS_BUTTON_SPLITTER_1	= 0x40000,
-		RS_BUTTON_SPLITTER_2	= 0x80000,
-
-		/*
-		Once new button that can be hidden on resize is added don't forget to update related places:
-			- RS_BUTTONS_CAN_BE_HIDDEN enum value below.
-			- initResizeStateContainers(): mStateProcessedObjectMap and mButtonsProcessOrder
-		*/
-
-		/**
-		 * Specifies buttons which can be hidden when bottom tray is shrunk.
-		 * They are: Gestures, Movement (Move), Camera (View), Snapshot
-		 *		new: Build, Search, Map, World Map, Mini-Map, destinations, avatars
-		 */
-		RS_BUTTONS_CAN_BE_HIDDEN = RS_BUTTON_SNAPSHOT | RS_BUTTON_CAMERA | RS_BUTTON_MOVEMENT | RS_BUTTON_GESTURES
-									| RS_BUTTON_BUILD | RS_BUTTON_SEARCH | RS_BUTTON_WORLD_MAP | RS_BUTTON_MINI_MAP
-									| RS_BUTTON_DESTINATIONS | RS_BUTTON_AVATARS
-	}EResizeState;
-
-	// Below are three methods that were introduced to handle drag'n'drop
-
-	/**
-	 * finds a panel under the specified LOCAL point
-	 */
-	LLPanel* findChildPanelByLocalCoords(S32 x, S32 y);
-
-	/**
-	 * checks whether the cursor is over an area where the dragged button may be dropped
-	 */
-	bool isCursorOverDraggableArea(S32 x, S32 y);
-
-	/**
-	 * Updates process(shrink/show/hide) order of buttons and order in which they'll be stored for further save/load.
-	 * It is called when dragged button is dropped
-	 */
-	void updateButtonsOrdersAfterDnD();
-
-	// saves order of buttons to file on disk
-	void saveButtonsOrder();
-	// reads order of buttons from file on disk
-	void loadButtonsOrder();
-
-	/**
-	 * Updates child controls size and visibility when it is necessary to reduce total width.
-	 *
-	 * Process order:
-	 *	- reduce chiclet panel to its minimal width;
-	 *  - reduce chatbar to its minimal width;
-	 *  - reduce visible buttons from right to left to their minimal width;
-	 *  - hide visible buttons from right to left;
-	 * When button is hidden chatbar extended to fill released space if it is necessary.
-	 *
-	 * @param[in] delta_width - value by which bottom tray should be shrunk. It is a negative value.
-	 * @return positive value which bottom tray can not process when it reaches its minimal width.
-	 *		Zero if there was enough space to process delta_width.
-	 */
-	S32 processWidthDecreased(S32 delta_width);
-
-	/**
-	 * Updates child controls size and visibility when it is necessary to extend total width.
-	 *
-	 * Process order:
-	 *  - show invisible buttons should be shown from left to right if possible;
-	 *  - extend visible buttons from left to right to their default width;
-	 *  - extend chatbar to its maximal width;
-	 *	- extend chiclet panel to all available space;
-	 * When chatbar & chiclet panels are wider then their minimal width they can be reduced to allow
-	 * a button gets visible in case if passed delta_width is not enough (chatbar first).
-	 *
-	 * @param[in] delta_width - value by which bottom tray should be extended. It is a positive value.
-	 */
-	void processWidthIncreased(S32 delta_width);
-
-	/** helper function to log debug messages */
-	void log(LLView* panel, const std::string& descr);
-
-	/**
-	 * Tries to show hidden by resize buttons using available width.
-	 *
-	 * Gets buttons visible if there is enough space. Reduces available_width in this case.
-	 *
-	 * @params[in, out] available_width - reference to available width to be used to show buttons.
-	 * @see processShowButton()
-	 * @return consumed pixels (difference in available width).
-	 */
-	S32 processShowButtons(S32& available_width);
-
-	/**
-	 * Tries to show panel with specified button using available width.
-	 *
-	 * Shows button specified by type if there is enough space. Reduces available_width in this case.
-	 *
-	 * @params[in] shown_object_type - type of button to be shown.
-	 * @params[in, out] available_width - reference to available width to be used to show button.
-	 *
-	 * @return true if button can be shown, false otherwise
-	 */
-	bool processShowButton(EResizeState shown_object_type, S32& available_width);
-
-	/**
-	 * Hides visible panels with all buttons that may be hidden by resize if it is necessary.
-	 *
-	 * When button gets hidden some space is released in bottom tray.
-	 * This space is taken into account for several consecutive calls for several buttons.
-	 *
-	 * @params[in, out] required_width - reference to required width to be released. This is a negative value.
-	 *			Its absolute value is decreased by shown panel width.
-	 * @params[in, out] buttons_freed_width - reference to value released over required one.
-	 *			If panel's width is more than required difference is added to buttons_freed_width.
-	 * @see processHideButton()
-	 */
-	void processHideButtons(S32& required_width, S32& buttons_freed_width);
-
-	/**
-	 * Hides panel with specified button if it is visible.
-	 *
-	 * When button gets hidden some space is released in bottom tray.
-	 * This space is taken into account for several consecutive calls for several buttons.
-	 *
-	 * @params[in] processed_object_type - type of button to be hide.
-	 * @params[in, out] required_width - reference to required width to be released. This is a negative value.
-	 *			Its absolute value is decreased by panel width.
-	 * @params[in, out] buttons_freed_width - reference to value released over required one.
-	 *			If panel's width is more than required difference is added to buttons_freed_width.
-	 */
-	void processHideButton(EResizeState processed_object_type, S32& required_width, S32& buttons_freed_width);
-
-	/**
-	 * Shrinks shown buttons to reduce total taken space.
-	 *
-	 * Shrinks buttons that may be shrunk smoothly first. Then shrinks Speak button.
-	 *
-	 * @param[in, out] required_width - reference to width value which should be released when buttons are shrunk. It is a negative value.
-	 * It is increased on the value processed by buttons.
-	 * @params[in, out] buttons_freed_width - reference to value released over required one.
-	 *			If width of panel with Speak button is more than required that difference is added
-	 *				to buttons_freed_width.
-	 *			This is because Speak button shrinks discretely unlike other buttons which are changed smoothly.
-	 */
-	void processShrinkButtons(S32& required_width, S32& buttons_freed_width);
-
-	/**
-	 * Shrinks panel with specified button if it is visible.
-	 *
-	 * @params[in] processed_object_type - type of button to be shrunk.
-	 * @param[in, out] required_width - reference to width value which should be released when button is shrunk. It is a negative value.
-	 * It is increased on the value released by the button.
-	 */
-	void processShrinkButton(EResizeState processed_object_type, S32& required_width);
-
-	/**
-	 * Extends shown buttons to increase total taken space.
-	 *
-	 * Extends buttons that may be extended smoothly first. Then extends Speak button.
-	 *
-	 * @param[in, out] available_width - reference to width value which buttons can use to be extended.
-	 *		It is a positive value. It is decreased on the value processed by buttons.
-	 */
-	void processExtendButtons(S32& available_width);
-
-	/**
-	 * Extends the Speak button if there is enough headroom.
-	 *
-	 * Unlike other buttons, the Speak buttons has only two possible widths:
-	 * the minimal one (without label) and the maximal (default) one.
-	 *
-	 * If the button is at its minimum width there is not enough headroom to
-	 * reshape it to the maximum width, the method does nothing.
-	 *
-	 * @param available_width Available headroom.
-	 * @return false if the button requires extension but there's not enough headroom, true otherwise.
-	 */
-	bool processExtendSpeakButton(S32& available_width);
-
-	/**
-	 * Extends shown button to increase total taken space.
-	 *
-	 * @params[in] processed_object_type - type of button to be extended.
-	 * @param[in, out] available_width - reference to width value which button can use to be extended.
-	 *		It is a positive value. It is decreased on the value processed by buttons.
-	 */
-	void processExtendButton(EResizeState processed_object_type, S32& available_width);
-
-	/**
-	 * Determines if specified by type object can be shown. It should be hidden by shrink before.
-	 *
-	 * Processes buttons a such way to show buttons in constant order:
-	 *   - Gestures, Move, View, Snapshot
-	 */
-	bool canButtonBeShown(EResizeState processed_object_type) const;
-
-	/**
-	 * Initializes all containers stored data related to children resize state.
-	 *
-	 * @see mStateProcessedObjectMap
-	 * @see mObjectDefaultWidthMap
-	 * @see mButtonsProcessOrder
-	 */
-	void initResizeStateContainers();
-
-	/**
-	 * Initializes buttons' visibility depend on stored Control Settings.
-	 */
-	void initButtonsVisibility();
-
-	/**
-	 * Initializes listeners of Control Settings to toggle appropriate buttons' visibility.
-	 *
-	 * @see toggleShowButton()
-	 */
-	void setButtonsControlsAndListeners();
-
-	/**
-	 * Toggles visibility of specified button depend on passed value.
-	 *
-	 * @param button_type - type of button to be toggled
-	 * @param new_visibility - new visibility of the button
-	 *
-	 * @see setButtonsControlsAndListeners()
-	 */
-	static bool toggleShowButton(EResizeState button_type, const LLSD& new_visibility);
-
-	/**
-	 * Show the button if there is enough space.
-	 *
-	 * @param[in]      button_type -    type of button to be shown.
-	 * @param[in, out] available_width  amount of available space on the bottom bar.
-	 *
-	 * @return true if button was shown, false that's not possible (not enough space, etc)
-	 */
-	bool showButton(EResizeState button_type, S32& available_width);
-
-	/**
-	 * Sets passed visibility to object specified by resize type.
-	 */
-	void setTrayButtonVisible(EResizeState shown_object_type, bool visible);
-
-	/**
-	 * Sets passed visibility to object specified by resize type if it is possible.
-	 *
-	 * If it is impossible to show required button due to there is no enough room in bottom tray
-	 * it will no be shown. Is called via context menu commands.
-	 * In this case Alert Dialog will be shown to notify user about that.
-	 *
-	 * Method also stores resize state to be processed while future bottom tray extending:
-	 *  - if hidden while resizing button should be hidden it will not be shown while extending;
-	 *  - if hidden via context menu button should be shown but there is no enough room for now
-	 *    it will be shown while extending.
-	 */
-	void setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible, bool raise_notification = true);
-
-	/**
-	 * Sets passed visibility to required button and fit widths of shown
-	 * buttons(notice that method can shrink widths to
-	 * allocate needed room in bottom tray).
-	 * Returns true if visibility of required button was set.
-	 */
-	bool setVisibleAndFitWidths(EResizeState object_type, bool visible);
-
-	/**
-	 * Get panel containing the given button.
-	 *
-	 * @see mStateProcessedObjectMap
-	 */
-	LLPanel* getButtonPanel(EResizeState button_type);
-
-	/**
-	 * Shows/hides panel with specified well button (IM or Notification)
-	 *
-	 * @param[in] object_type - type of well button to be processed.
-	 *		Must be one of RS_IM_WELL or RS_NOTIFICATION_WELL.
-	 * @param[in] visible - flag specified whether button should be shown or hidden.
-	 */
-	void showWellButton(EResizeState object_type, bool visible);
-
-	/**
-	 * Handles a customization of chatbar width.
-	 *
-	 * When chatbar gets wider layout stack will reduce chiclet panel (it is auto-resizable)
-	 *	But once chiclet panel reaches its minimal width Stack will force to reduce buttons width.
-	 *	including Speak button. The similar behavior is when chatbar gets narrowly.
-	 * This methods force resize behavior to resize buttons properly in these cases.
-	 */
-	void processChatbarCustomization(S32 new_width);
-
-	/**
-	 * @return difference between current chiclet panel width and the minimum.
-	 */
-	S32 getChicletPanelShrinkHeadroom() const;
-
-	/// Get button name for debugging.
-	static std::string resizeStateToString(EResizeState state);
-
-	/// Dump a mask for debugging
-	static std::string resizeStateMaskToString(MASK mask);
-
-	/// @return true if any of the the passed buttons have been auto-hidden due to lack of available space.
-	bool isAutoHidden(MASK button_types) const;
-
-	/**
-	 * (Un)Mark the buttons as hidden.
-	 *
-	 * Auto-hidden buttons are those that re-appear as soon as we have enough available space.
-	 */
-	void setAutoHidden(MASK button_types, bool hide);
-
-	/// Buttons automatically hidden due to lack of space.
-	MASK mResizeState;
-
-	/**
-	 * Mapping of button types to the layout panels the buttons are wrapped in.
-	 *
-	 * Used by getButtonPanel().
-	 */
-	typedef std::map<EResizeState, LLPanel*> state_object_map_t;
-	state_object_map_t mStateProcessedObjectMap;
-
-	/// Default (maximum) widths of the layout panels.
-	typedef std::map<EResizeState, S32> state_object_width_map_t;
-	state_object_width_map_t mObjectDefaultWidthMap;
-
-	typedef std::vector<EResizeState> resize_state_vec_t;
-
-	/**
-	 * Contains order in which child buttons should be processed in show/hide, extend/shrink methods.
-	 */
-	resize_state_vec_t mButtonsProcessOrder;
-
-	/**
-	 * Contains order in which child buttons are shown.
-	 * It traces order of all bottomtray buttons that may change place via drag'n'drop and should
-	 * save and load it between sessions. mButtonsProcessOrder is not enough for it because it contains only
-	 * buttons that may be hidden.
-	 */
-	resize_state_vec_t mButtonsOrder;
-
-protected:
-
-	LLBottomTray(const LLSD& key = LLSD());
-
-	static void* createNearbyChatBar(void* userdata);
-
-	void updateContextMenu(S32 x, S32 y, MASK mask);
-	void onContextMenuItemClicked(const LLSD& userdata);
-	bool onContextMenuItemEnabled(const LLSD& userdata);
-
-	// Either default or saved after user's manual resize width of nearby chat.
-	// Nearby chat will not always have it, because sometimes it can be shrunk on resize,
-	// but when possible it will be restored back to this value.
-	S32					mDesiredNearbyChatWidth;
-	LLChicletPanel* 	mChicletPanel;
-	LLPanel*			mSpeakPanel;
-	LLSpeakButton* 		mSpeakBtn;
-	LLNearbyChatBar*	mNearbyChatBar;
-	LLLayoutPanel*		mChatBarContainer;
-	LLPanel*		mNearbyCharResizeHandlePanel;
-	LLLayoutStack*		mToolbarStack;
-	LLMenuGL*			mBottomTrayContextMenu;
-	LLButton*			mCamButton;
-	LLButton*			mMovementButton;
-	LLBottomTrayLite*   mBottomTrayLite;
-	bool                mIsInLiteMode;
-
-	// Drag'n'Drop
-
-	/**
-	 * Is true if mouse down happened on draggable button.
-	 * Set false whether on drag start or on mouse up.
-	 */
-	bool mCheckForDrag;
-	/**
-	 * These two variables hold corrdinates of mouse down on draggable button.
-	 * They are used to compare with current coordinates of cursor and determine whether drag'n'drop should start.
-	 */
-	S32 mStartX;
-	S32 mStartY;
-	/**
-	 * True if drag'n'drop is happening.
-	 */
-	bool mDragStarted;
-
-	/**
-	 * Pointer to panel which is currently dragged (though it seems to user that button is dragged,
-	 * we are changing place of layout panel).
-	 */
-	LLPanel* mDraggedItem;
-	/**
-	 * Panel before which the dragged button will be inserted.
-	 */
-	LLPanel* mLandingTab;
-	/**
-	 * Image used to show position where dragged button will be dropped.
-	 */
-	LLUIImage* mImageDragIndication;
-
-	// We want only one LLNearbyChatBarListener object, so it's tied to this singleton
-	boost::shared_ptr<LLNearbyChatBarListener> mListener;
-};
-
-#endif // LL_LLBOTTOMPANEL_H
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index 945a760d059d51daf24628f4b9c744ca408a3dcb..e3217668c540eda7e0895051f03f533cdb5e8bae 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -37,9 +37,9 @@
 #include "llavatarnamecache.h"
 #include "llavatariconctrl.h"
 #include "llavatarlist.h"
-#include "llbottomtray.h"
 #include "lldraghandle.h"
 #include "llimfloater.h"
+#include "llimview.h"
 #include "llfloaterreg.h"
 #include "llparticipantlist.h"
 #include "llspeakers.h"
@@ -115,9 +115,6 @@ LLCallFloater::LLCallFloater(const LLSD& key)
 	LLVoiceClient::instance().addObserver(this);
 	LLTransientFloaterMgr::getInstance()->addControlView(this);
 
-	// force docked state since this floater doesn't save it between recreations
-	setDocked(true);
-
 	// update the agent's name if display name setting change
 	LLAvatarNameCache::addUseDisplayNamesCallback(boost::bind(&LLCallFloater::updateAgentModeratorState, this));
 	LLViewerDisplayName::addNameChangedCallback(boost::bind(&LLCallFloater::updateAgentModeratorState, this));
@@ -145,7 +142,6 @@ LLCallFloater::~LLCallFloater()
 // virtual
 BOOL LLCallFloater::postBuild()
 {
-	LLTransientDockableFloater::postBuild();
 	mAvatarList = getChild<LLAvatarList>("speakers_list");
 	mAvatarListRefreshConnection = mAvatarList->setRefreshCompleteCallback(boost::bind(&LLCallFloater::onAvatarListRefreshed, this));
 
@@ -154,20 +150,10 @@ BOOL LLCallFloater::postBuild()
 	mNonAvatarCaller = findChild<LLNonAvatarCaller>("non_avatar_caller");
 	mNonAvatarCaller->setVisible(FALSE);
 
-	LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("speak_flyout_btn");
-
-	setDockControl(new LLDockControl(
-		anchor_panel, this,
-		getDockTongue(), LLDockControl::TOP));
-
 	initAgentData();
 
 	connectToChannel(LLVoiceChannel::getCurrentVoiceChannel());
 
-	setIsChrome(true);
-	//chrome="true" hides floater caption 
-	if (mDragHandle)
-		mDragHandle->setTitleVisible(TRUE);
 	updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
 	
 	updateSession();
@@ -204,13 +190,13 @@ void LLCallFloater::draw()
 	if (mParticipants)
 		mParticipants->updateRecentSpeakersOrder();
 
-	LLTransientDockableFloater::draw();
+	LLFloater::draw();
 }
 
 // virtual
 void LLCallFloater::setFocus( BOOL b )
 {
-	LLTransientDockableFloater::setFocus(b);
+	LLFloater::setFocus(b);
 
 	// Force using active floater transparency (STORM-730).
 	// We have to override setFocus() for LLCallFloater because selecting an item
diff --git a/indra/newview/llchannelmanager.cpp b/indra/newview/llchannelmanager.cpp
index 4ab3d8dc9816960b787cfbd5af0dd2239cfb9299..987651fc80435dfc493761b8ead5925b67e72b24 100644
--- a/indra/newview/llchannelmanager.cpp
+++ b/indra/newview/llchannelmanager.cpp
@@ -58,7 +58,10 @@ LLChannelManager::~LLChannelManager()
 {
 	for(std::vector<ChannelElem>::iterator it = mChannelList.begin(); it !=  mChannelList.end(); ++it)
 	{
-		delete (*it).channel;
+		LLScreenChannelBase* channel = it->channel.get();
+		if (!channel) continue;
+
+		delete channel;
 	}
 
 	mChannelList.clear();
@@ -68,9 +71,10 @@ LLChannelManager::~LLChannelManager()
 LLScreenChannel* LLChannelManager::createNotificationChannel()
 {
 	//  creating params for a channel
-	LLChannelManager::Params p;
+	LLScreenChannelBase::Params p;
 	p.id = LLUUID(gSavedSettings.getString("NotificationChannelUUID"));
 	p.channel_align = CA_RIGHT;
+	p.toast_align = NA_TOP;
 
 	// Getting a Channel for our notifications
 	return dynamic_cast<LLScreenChannel*> (LLChannelManager::getInstance()->getChannel(p));
@@ -84,16 +88,19 @@ void LLChannelManager::onLoginCompleted()
 	// calc a number of all offline notifications
 	for(std::vector<ChannelElem>::iterator it = mChannelList.begin(); it !=  mChannelList.end(); ++it)
 	{
+		LLScreenChannelBase* channel = it->channel.get();
+		if (!channel) continue;
+
 		// don't calc notifications for Nearby Chat
-		if((*it).channel->getChannelID() == LLUUID(gSavedSettings.getString("NearByChatChannelUUID")))
+		if(channel->getChannelID() == LLUUID(gSavedSettings.getString("NearByChatChannelUUID")))
 		{
 			continue;
 		}
 
 		// don't calc notifications for channels that always show their notifications
-		if(!(*it).channel->getDisplayToastsAlways())
+		if(!channel->getDisplayToastsAlways())
 		{
-			away_notifications +=(*it).channel->getNumberOfHiddenToasts();
+			away_notifications +=channel->getNumberOfHiddenToasts();
 		}
 	}
 
@@ -106,7 +113,7 @@ void LLChannelManager::onLoginCompleted()
 	else
 	{
 		// create a channel for the StartUp Toast
-		LLChannelManager::Params p;
+		LLScreenChannelBase::Params p;
 		p.id = LLUUID(gSavedSettings.getString("StartUpChannelUUID"));
 		p.channel_align = CA_RIGHT;
 		mStartUpChannel = createChannel(p);
@@ -157,33 +164,22 @@ LLScreenChannelBase*	LLChannelManager::addChannel(LLScreenChannelBase* channel)
 
 	ChannelElem new_elem;
 	new_elem.id = channel->getChannelID();
-	new_elem.channel = channel;
+	new_elem.channel = channel->getHandle();
 
 	mChannelList.push_back(new_elem); 
 
 	return channel;
 }
 
-LLScreenChannel* LLChannelManager::createChannel(LLChannelManager::Params& p)
+LLScreenChannel* LLChannelManager::createChannel(LLScreenChannelBase::Params& p)
 {
-	LLScreenChannel* new_channel = new LLScreenChannel(p.id); 
-
-	if(!new_channel)
-	{
-		llerrs << "LLChannelManager::getChannel(LLChannelManager::Params& p) - can't create a channel!" << llendl;		
-	}
-	else
-	{
-		new_channel->setToastAlignment(p.toast_align);
-		new_channel->setChannelAlignment(p.channel_align);
-		new_channel->setDisplayToastsAlways(p.display_toasts_always);
+	LLScreenChannel* new_channel = new LLScreenChannel(p); 
 
-		addChannel(new_channel);
-	}
+	addChannel(new_channel);
 	return new_channel;
 }
 
-LLScreenChannelBase* LLChannelManager::getChannel(LLChannelManager::Params& p)
+LLScreenChannelBase* LLChannelManager::getChannel(LLScreenChannelBase::Params& p)
 {
 	LLScreenChannelBase* new_channel = findChannelByID(p.id);
 
@@ -195,19 +191,19 @@ LLScreenChannelBase* LLChannelManager::getChannel(LLChannelManager::Params& p)
 }
 
 //--------------------------------------------------------------------------
-LLScreenChannelBase* LLChannelManager::findChannelByID(const LLUUID id)
+LLScreenChannelBase* LLChannelManager::findChannelByID(const LLUUID& id)
 {
 	std::vector<ChannelElem>::iterator it = find(mChannelList.begin(), mChannelList.end(), id); 
 	if(it != mChannelList.end())
 	{
-		return (*it).channel;
+		return (*it).channel.get();
 	}
 
 	return NULL;
 }
 
 //--------------------------------------------------------------------------
-void LLChannelManager::removeChannelByID(const LLUUID id)
+void LLChannelManager::removeChannelByID(const LLUUID& id)
 {
 	std::vector<ChannelElem>::iterator it = find(mChannelList.begin(), mChannelList.end(), id); 
 	if(it != mChannelList.end())
@@ -222,7 +218,10 @@ void LLChannelManager::muteAllChannels(bool mute)
 	for (std::vector<ChannelElem>::iterator it = mChannelList.begin();
 			it != mChannelList.end(); it++)
 	{
-		it->channel->setShowToasts(!mute);
+		if (it->channel.get())
+		{
+			it->channel.get()->setShowToasts(!mute);
+		}
 	}
 }
 
diff --git a/indra/newview/llchannelmanager.h b/indra/newview/llchannelmanager.h
index 1a0b98f6cf485f17e11999d4a8c912a7cc79c2d1..a5de8a53271dc434fa5cae04ad7ee59d1ce47705 100644
--- a/indra/newview/llchannelmanager.h
+++ b/indra/newview/llchannelmanager.h
@@ -44,24 +44,14 @@ namespace LLNotificationsUI
 class LLChannelManager : public LLSingleton<LLChannelManager>
 {
 public:
-	struct Params
-	{
-		LLUUID				id;
-		bool				display_toasts_always;
-		EToastAlignment		toast_align;
-		EChannelAlignment	channel_align;
-
-		Params()
-		:	id(LLUUID("")), display_toasts_always(false), toast_align(NA_BOTTOM), channel_align(CA_LEFT)
-		{}
-	};
+
 
 	struct ChannelElem
 	{
-		LLUUID				id;
-		LLScreenChannelBase*	channel;
+		LLUUID							id;
+		LLHandle<LLScreenChannelBase>	channel;
 
-		ChannelElem() : id(LLUUID("")), channel(NULL) { }
+		ChannelElem() { }
 
 		ChannelElem(const ChannelElem &elem)
 		{
@@ -84,18 +74,18 @@ class LLChannelManager : public LLSingleton<LLChannelManager>
 	void onStartUpToastClose();
 
 	// creates a new ScreenChannel according to the given parameters or returns existing if present
-	LLScreenChannelBase*	getChannel(LLChannelManager::Params& p);
+	LLScreenChannelBase*	getChannel(LLScreenChannelBase::Params& p);
 
 	LLScreenChannelBase*	addChannel(LLScreenChannelBase* channel);
 
 	// returns a channel by its ID
-	LLScreenChannelBase*	findChannelByID(const LLUUID id);
+	LLScreenChannelBase*	findChannelByID(const LLUUID& id);
 
 	// creator of the Notification channel, that is used in more than one handler
 	LLScreenChannel*		createNotificationChannel();
 
 	// remove channel methods
-	void	removeChannelByID(const LLUUID id);
+	void	removeChannelByID(const LLUUID& id);
 
 	/**
 	 * Manages toasts showing for all channels.
@@ -117,7 +107,7 @@ class LLChannelManager : public LLSingleton<LLChannelManager>
 	std::vector<ChannelElem>& getChannelList() { return mChannelList;}
 private:
 
-	LLScreenChannel* createChannel(LLChannelManager::Params& p);
+	LLScreenChannel* createChannel(LLScreenChannelBase::Params& p);
 
 	LLScreenChannel*			mStartUpChannel;
 	std::vector<ChannelElem>	mChannelList;
diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp
index cf0374075a26477e87aeb7a7d1355890e94d7661..d6095cce07d541e48297146c7c1e2164b96b6e77 100644
--- a/indra/newview/llchatbar.cpp
+++ b/indra/newview/llchatbar.cpp
@@ -60,7 +60,6 @@
 #include "llui.h"
 #include "llviewermenu.h"
 #include "lluictrlfactory.h"
-#include "llbottomtray.h"
 
 //
 // Globals
@@ -95,7 +94,7 @@ LLChatBar::LLChatBar()
 	mGestureCombo(NULL),
 	mObserver(NULL)
 {
-	setIsChrome(TRUE);
+	//setIsChrome(TRUE);
 }
 
 
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 913d2f34b029570094a1a6469838ce2a0b5df3ab..f530d10ddc525aec066d78a1550f9824035d2940 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -42,6 +42,7 @@
 #include "llavataractions.h"
 #include "lltrans.h"
 #include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llmutelist.h"
 #include "llstylemap.h"
 #include "llslurl.h"
@@ -58,8 +59,6 @@
 
 #include "llviewercontrol.h"
 
-#include "llsidetray.h"//for blocked objects panel
-
 static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");
 
 const static std::string NEW_LINE(rawstr_to_utf8("\n"));
@@ -144,7 +143,7 @@ class LLChatHistoryHeader: public LLPanel
 		{
 			LLMuteList::getInstance()->add(LLMute(getAvatarId(), mFrom, LLMute::OBJECT));
 
-			LLSideTray::getInstance()->showPanel("panel_block_list_sidetray", LLSD().with("blocked_to_select", getAvatarId()));
+			LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD().with("blocked_to_select", getAvatarId()));
 		}
 	}
 
@@ -622,7 +621,6 @@ void LLChatHistory::initFromParams(const LLChatHistory::Params& p)
 	panel_p.has_border = false;
 	panel_p.mouse_opaque = false;
 	panel_p.min_dim = 30;
-	panel_p.max_dim = S32_MAX;
 	panel_p.auto_resize = true;
 	panel_p.user_resize = false;
 
diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp
index 8584885bc974e842e63d916ead326abf9e76db4d..9a84280f258f7be30c1763d1882c88943cdec6ae 100644
--- a/indra/newview/llchatitemscontainerctrl.cpp
+++ b/indra/newview/llchatitemscontainerctrl.cpp
@@ -35,6 +35,7 @@
 #include "llfloaterreg.h"
 #include "lllocalcliprect.h"
 #include "lltrans.h"
+#include "llnearbychatbar.h"
 
 #include "llviewercontrol.h"
 #include "llagentdata.h"
@@ -315,12 +316,12 @@ BOOL	LLNearbyChatToastPanel::handleMouseUp	(S32 x, S32 y, MASK mask)
 			return TRUE;
 		else
 		{
-			LLFloaterReg::showInstance("nearby_chat",LLSD());
+			LLNearbyChatBar::getInstance()->showHistory();
 			return FALSE;
 		}
 	}
 
-	LLFloaterReg::showInstance("nearby_chat",LLSD());
+	LLNearbyChatBar::getInstance()->showHistory();
 	return LLPanel::handleMouseUp(x,y,mask);
 }
 
diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 245157923ddfee6d3fc991bf937d778b49192d30..aabab0ccb9982e8d9243f840eacdee24a39eb4f5 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -29,7 +29,7 @@
 
 #include "llagent.h"
 #include "llavataractions.h"
-#include "llbottomtray.h"
+#include "llchicletbar.h"
 #include "lleventtimer.h"
 #include "llgroupactions.h"
 #include "lliconctrl.h"
@@ -214,10 +214,10 @@ void LLSysWellChiclet::updateWidget(bool is_window_empty)
 {
 	mButton->setEnabled(!is_window_empty);
 
-	LLSD params;
-	params["well_empty"] = is_window_empty;
-	params["well_name"] = getName();
-	notifyParent(params);
+	if (LLChicletBar::instanceExists())
+	{
+		LLChicletBar::getInstance()->showWellButton(getName(), !is_window_empty);
+	}
 }
 // virtual
 BOOL LLSysWellChiclet::handleRightMouseDown(S32 x, S32 y, MASK mask)
@@ -250,6 +250,12 @@ LLIMWellChiclet::LLIMWellChiclet(const Params& p)
 
 LLIMWellChiclet::~LLIMWellChiclet()
 {
+	LLIMWellWindow* im_well_window = LLIMWellWindow::findInstance();
+	if (im_well_window)
+	{
+		im_well_window->setSysWellChiclet(NULL);
+	}
+
 	LLIMMgr::getInstance()->removeSessionObserver(this);
 }
 
@@ -296,8 +302,15 @@ void LLIMWellChiclet::createMenu()
 
 void LLIMWellChiclet::messageCountChanged(const LLSD& session_data)
 {
+	// The singleton class LLChicletBar instance might be already deleted
+	// so don't create a new one.
+	if (!LLChicletBar::instanceExists())
+	{
+		return;
+	}
+
 	const LLUUID& session_id = session_data["session_id"];
-	const S32 counter = LLBottomTray::getInstance()->getTotalUnreadIMCount();
+	const S32 counter = LLChicletBar::getInstance()->getTotalUnreadIMCount();
 	const bool im_not_visible = !LLFloaterReg::instanceVisible("im_container")
 		&& !LLFloaterReg::instanceVisible("impanel", session_id);
 
diff --git a/indra/newview/llchicletbar.cpp b/indra/newview/llchicletbar.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f1bc51fbe757a060b656dd36b94d8630da3bf65f
--- /dev/null
+++ b/indra/newview/llchicletbar.cpp
@@ -0,0 +1,345 @@
+/** 
+ * @file llchicletbar.cpp
+ * @brief LLChicletBar class implementation
+ *
+ * $LicenseInfo:firstyear=2011&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 "llviewerprecompiledheaders.h" // must be first include
+
+#include "llchicletbar.h"
+
+// library includes
+#include "llfloaterreg.h"
+#include "lllayoutstack.h"
+
+// newview includes
+#include "llchiclet.h"
+#include "llimfloater.h" // for LLIMFloater
+#include "llpaneltopinfobar.h"
+#include "llsyswellwindow.h"
+
+namespace
+{
+	const std::string& PANEL_CHICLET_NAME	= "chiclet_list_panel";
+
+	S32 get_curr_width(LLUICtrl* ctrl)
+	{
+		S32 cur_width = 0;
+		if ( ctrl && ctrl->getVisible() )
+		{
+			cur_width = ctrl->getRect().getWidth();
+		}
+		return cur_width;
+	}
+}
+
+LLChicletBar::LLChicletBar(const LLSD&)
+:	mChicletPanel(NULL),
+	mToolbarStack(NULL)
+{
+	// Firstly add our self to IMSession observers, so we catch session events
+	// before chiclets do that.
+	LLIMMgr::getInstance()->addSessionObserver(this);
+
+	buildFromFile("panel_chiclet_bar.xml");
+}
+
+LLChicletBar::~LLChicletBar()
+{
+	if (!LLSingleton<LLIMMgr>::destroyed())
+	{
+		LLIMMgr::getInstance()->removeSessionObserver(this);
+	}
+}
+
+LLIMChiclet* LLChicletBar::createIMChiclet(const LLUUID& session_id)
+{
+	LLIMChiclet::EType im_chiclet_type = LLIMChiclet::getIMSessionType(session_id);
+
+	switch (im_chiclet_type)
+	{
+	case LLIMChiclet::TYPE_IM:
+		return getChicletPanel()->createChiclet<LLIMP2PChiclet>(session_id);
+	case LLIMChiclet::TYPE_GROUP:
+		return getChicletPanel()->createChiclet<LLIMGroupChiclet>(session_id);
+	case LLIMChiclet::TYPE_AD_HOC:
+		return getChicletPanel()->createChiclet<LLAdHocChiclet>(session_id);
+	case LLIMChiclet::TYPE_UNKNOWN:
+		break;
+	}
+
+	return NULL;
+}
+
+//virtual
+void LLChicletBar::sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id)
+{
+	if (!getChicletPanel()) return;
+
+	LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(session_id);
+	if (!session) return;
+
+	// no need to spawn chiclets for participants in P2P calls called through Avaline
+	if (session->isP2P() && session->isOtherParticipantAvaline()) return;
+
+	if (getChicletPanel()->findChiclet<LLChiclet>(session_id)) return;
+
+	LLIMChiclet* chiclet = createIMChiclet(session_id);
+	if(chiclet)
+	{
+		chiclet->setIMSessionName(name);
+		chiclet->setOtherParticipantId(other_participant_id);
+		
+		LLIMFloater::onIMChicletCreated(session_id);
+
+	}
+	else
+	{
+		llwarns << "Could not create chiclet" << llendl;
+	}
+}
+
+//virtual
+void LLChicletBar::sessionRemoved(const LLUUID& session_id)
+{
+	if(getChicletPanel())
+	{
+		// IM floater should be closed when session removed and associated chiclet closed
+		LLIMFloater* iMfloater = LLFloaterReg::findTypedInstance<LLIMFloater>("impanel", session_id);
+		if (iMfloater != NULL)
+		{
+			iMfloater->closeFloater();
+		}
+
+		getChicletPanel()->removeChiclet(session_id);
+	}
+}
+
+void LLChicletBar::sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id)
+{
+	//this is only needed in case of outgoing ad-hoc/group chat sessions
+	LLChicletPanel* chiclet_panel = getChicletPanel();
+	if (chiclet_panel)
+	{
+		//it should be ad-hoc im chiclet or group im chiclet
+		LLChiclet* chiclet = chiclet_panel->findChiclet<LLChiclet>(old_session_id);
+		if (chiclet) chiclet->setSessionId(new_session_id);
+	}
+}
+
+S32 LLChicletBar::getTotalUnreadIMCount()
+{
+	return getChicletPanel()->getTotalUnreadIMCount();
+}
+
+BOOL LLChicletBar::postBuild()
+{
+	mToolbarStack = getChild<LLLayoutStack>("toolbar_stack");
+	mChicletPanel = getChild<LLChicletPanel>("chiclet_list");
+
+	showWellButton("im_well", !LLIMWellWindow::getInstance()->isWindowEmpty());
+	showWellButton("notification_well", !LLNotificationWellWindow::getInstance()->isWindowEmpty());
+
+	LLPanelTopInfoBar::instance().setResizeCallback(boost::bind(&LLChicletBar::fitWithTopInfoBar, this));
+	LLPanelTopInfoBar::instance().setVisibleCallback(boost::bind(&LLChicletBar::fitWithTopInfoBar, this));
+
+	return TRUE;
+}
+
+void LLChicletBar::showWellButton(const std::string& well_name, bool visible)
+{
+	LLView * panel = findChild<LLView>(well_name + "_panel");
+	if (!panel)	return;
+
+	panel->setVisible(visible);
+}
+
+void LLChicletBar::log(LLView* panel, const std::string& descr)
+{
+	if (NULL == panel) return;
+	LLView* layout = panel->getParent();
+	LL_DEBUGS("Chiclet Bar Rects") << descr << ": "
+		<< "panel: " << panel->getName()
+		<< ", rect: " << panel->getRect()
+		<< " layout: " << layout->getName()
+		<< ", rect: " << layout->getRect()
+		<< LL_ENDL;
+}
+
+void LLChicletBar::reshape(S32 width, S32 height, BOOL called_from_parent)
+{
+	static S32 debug_calling_number = 0;
+	lldebugs << "**************************************** " << ++debug_calling_number << llendl;
+
+	S32 current_width = getRect().getWidth();
+	S32 delta_width = width - current_width;
+	lldebugs << "Reshaping: "
+		<< ", width: " << width
+		<< ", cur width: " << current_width
+		<< ", delta_width: " << delta_width
+		<< ", called_from_parent: " << called_from_parent
+		<< llendl;
+
+	if (mChicletPanel)			log(mChicletPanel, "before");
+
+	// Difference between chiclet bar width required to fit its children and the actual width. (see EXT-991)
+	// Positive value means that chiclet bar is not wide enough.
+	// Negative value means that there is free space.
+	static S32 extra_shrink_width = 0;
+	bool should_be_reshaped = true;
+
+	if (mChicletPanel && mToolbarStack)
+	{
+		// Firstly, update layout stack to ensure we deal with correct panel sizes.
+		{
+			// Force the updating of layout to reset panels collapse factor.
+			mToolbarStack->updateLayout();
+		}
+
+		// chiclet bar is narrowed
+		if (delta_width < 0)
+		{
+			if (extra_shrink_width > 0) // not enough space
+			{
+				extra_shrink_width += llabs(delta_width);
+				should_be_reshaped = false;
+			}
+			else
+			{
+				extra_shrink_width = processWidthDecreased(delta_width);
+
+				// increase new width to extra_shrink_width value to not reshape less than chiclet bar minimum
+				width += extra_shrink_width;
+			}
+		}
+		// chiclet bar is widened
+		else
+		{
+			if (extra_shrink_width > delta_width)
+			{
+				// Still not enough space.
+				// Only subtract the delta from the required delta and don't reshape.
+				extra_shrink_width -= delta_width;
+				should_be_reshaped = false;
+			}
+			else if (extra_shrink_width > 0)
+			{
+				// If we have some extra shrink width let's reduce delta_width & width
+				delta_width -= extra_shrink_width;
+				width -= extra_shrink_width;
+				extra_shrink_width = 0;
+			}
+		}
+	}
+
+	if (should_be_reshaped)
+	{
+		lldebugs << "Reshape all children with width: " << width << llendl;
+		LLPanel::reshape(width, height, called_from_parent);
+	}
+
+	if (mChicletPanel)			log(mChicletPanel, "after");
+}
+
+S32 LLChicletBar::processWidthDecreased(S32 delta_width)
+{
+	bool still_should_be_processed = true;
+
+	const S32 chiclet_panel_shrink_headroom = getChicletPanelShrinkHeadroom();
+
+	// Decreasing width of chiclet panel.
+	if (chiclet_panel_shrink_headroom > 0)
+	{
+		// we have some space to decrease chiclet panel
+		S32 shrink_by = llmin(-delta_width, chiclet_panel_shrink_headroom);
+
+		lldebugs << "delta_width: " << delta_width
+			<< ", panel_delta_min: " << chiclet_panel_shrink_headroom
+			<< ", shrink_by: " << shrink_by
+			<< llendl;
+
+		// is chiclet panel wide enough to process resizing?
+		delta_width += chiclet_panel_shrink_headroom;
+
+		still_should_be_processed = delta_width < 0;
+
+		lldebugs << "Shrinking chiclet panel by " << shrink_by << " px" << llendl;
+		mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - shrink_by, mChicletPanel->getParent()->getRect().getHeight());
+		log(mChicletPanel, "after processing panel decreasing via chiclet panel");
+
+		lldebugs << "RS_CHICLET_PANEL"
+			<< ", delta_width: " << delta_width
+			<< llendl;
+	}
+
+	S32 extra_shrink_width = 0;
+
+	if (still_should_be_processed)
+	{
+		extra_shrink_width = -delta_width;
+		llwarns << "There is no enough width to reshape all children: "
+			<< extra_shrink_width << llendl;
+	}
+
+	return extra_shrink_width;
+}
+
+S32 LLChicletBar::getChicletPanelShrinkHeadroom() const
+{
+	static const S32 min_width = mChicletPanel->getMinWidth();
+	const S32 cur_width = mChicletPanel->getParent()->getRect().getWidth();
+
+	S32 shrink_headroom = cur_width - min_width;
+	llassert(shrink_headroom >= 0); // the panel cannot get narrower than the minimum
+	return shrink_headroom;
+}
+
+void LLChicletBar::fitWithTopInfoBar()
+{
+	LLPanelTopInfoBar& top_info_bar = LLPanelTopInfoBar::instance();
+
+	LLRect rect = getRect();
+	S32 width = rect.getWidth();
+
+	if (top_info_bar.getVisible())
+	{
+		S32 delta = top_info_bar.calcScreenRect().mRight - calcScreenRect().mLeft;
+		if (delta < 0 && rect.mLeft < llabs(delta))
+			delta = -rect.mLeft;
+		rect.setLeftTopAndSize(rect.mLeft + delta, rect.mTop, rect.getWidth(), rect.getHeight());
+		width = rect.getWidth() - delta;
+	}
+	else
+	{
+		LLView* parent = getParent();
+		if (parent)
+		{
+			LLRect parent_rect = parent->getRect();
+			rect.setLeftTopAndSize(0, rect.mTop, rect.getWidth(), rect.getHeight());
+			width = parent_rect.getWidth();
+		}
+	}
+
+	setRect(rect);
+	LLPanel::reshape(width, rect.getHeight(), false);
+}
diff --git a/indra/newview/llchicletbar.h b/indra/newview/llchicletbar.h
new file mode 100644
index 0000000000000000000000000000000000000000..1427bf95e0f725f6ac2c68fe508c8cd64365219e
--- /dev/null
+++ b/indra/newview/llchicletbar.h
@@ -0,0 +1,105 @@
+/** 
+* @file llchicletbar.h
+* @brief LLChicletBar class header file
+*
+* $LicenseInfo:firstyear=2011&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$
+*/
+
+#ifndef LL_LLCHICLETBAR_H
+#define LL_LLCHICLETBAR_H
+
+#include "llpanel.h"
+#include "llimview.h"
+
+class LLChicletPanel;
+class LLIMChiclet;
+class LLLayoutPanel;
+class LLLayoutStack;
+
+class LLChicletBar
+	: public LLSingleton<LLChicletBar>
+	, public LLPanel
+	, public LLIMSessionObserver
+{
+	LOG_CLASS(LLChicletBar);
+	friend class LLSingleton<LLChicletBar>;
+public:
+	~LLChicletBar();
+
+	BOOL postBuild();
+
+	LLChicletPanel*	getChicletPanel() { return mChicletPanel; }
+
+	// LLIMSessionObserver observe triggers
+	virtual void sessionAdded(const LLUUID& session_id, const std::string& name, const LLUUID& other_participant_id);
+	virtual void sessionRemoved(const LLUUID& session_id);
+	void sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id);
+
+	S32 getTotalUnreadIMCount();
+
+	/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent);
+
+	/**
+	 * Creates IM Chiclet based on session type (IM chat or Group chat)
+	 */
+	LLIMChiclet* createIMChiclet(const LLUUID& session_id);
+
+	/**
+	 * Shows/hides panel with specified well button (IM or Notification)
+	 *
+	 * @param well_name - name of the well panel to be processed.
+	 * @param visible - a flag specifying whether a button should be shown or hidden.
+	 */
+	void showWellButton(const std::string& well_name, bool visible);
+
+private:
+	/**
+	 * Updates child controls size and visibility when it is necessary to reduce total width.
+	 *
+	 * @param delta_width - value by which chiclet bar should be shrunk. It is a negative value.
+	 * @returns positive value which chiclet bar can not process when it reaches its minimal width.
+	 *		Zero if there was enough space to process delta_width.
+	 */
+	S32 processWidthDecreased(S32 delta_width);
+
+	/** helper function to log debug messages */
+	void log(LLView* panel, const std::string& descr);
+
+	/**
+	 * @return difference between current chiclet panel width and the minimum.
+	 */
+	S32 getChicletPanelShrinkHeadroom() const;
+
+	/**
+	 * function adjusts Chiclet bar width to prevent overlapping with Mini-Location bar
+	 * EXP-1463
+	 */
+	void fitWithTopInfoBar();
+
+protected:
+	LLChicletBar(const LLSD& key = LLSD());
+
+	LLChicletPanel* 	mChicletPanel;
+	LLLayoutStack*		mToolbarStack;
+};
+
+#endif // LL_LLCHICLETBAR_H
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index 254c0adef16bfffb71c6b0ff955914f795be29cc..e9c7a3fa0394691089d183e97a3663c4f41de137 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -33,6 +33,7 @@
 #include "llagentdata.h"
 #include "llagentwearables.h"
 #include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llinventory.h"
 #include "llinventoryfunctions.h"
 #include "lllistcontextmenu.h"
@@ -40,7 +41,6 @@
 #include "llviewermenu.h"
 #include "llwearableitemslist.h"
 #include "llpaneloutfitedit.h"
-#include "llsidetray.h"
 #include "lltrans.h"
 
 static LLRegisterPanelClassWrapper<LLCOFWearables> t_cof_wearables("cof_wearables");
@@ -159,13 +159,8 @@ class CofClothingContextMenu : public CofContextMenu
 protected:
 	static void replaceWearable(const LLUUID& item_id)
 	{
-		// *TODO: Most probable that accessing to LLPanelOutfitEdit instance should be:
-		// LLSideTray::getInstance()->getSidepanelAppearance()->getPanelOutfitEdit()
-		// without casting. Getter methods provides possibility to check and construct
-		// absent instance. Explicit relations between components avoids situations
-		// when we tries to construct instance with unsatisfied implicit input conditions.
 		LLPanelOutfitEdit	* panel_outfit_edit =
-						dynamic_cast<LLPanelOutfitEdit*> (LLSideTray::getInstance()->getPanel(
+						dynamic_cast<LLPanelOutfitEdit*> (LLFloaterSidePanelContainer::getPanel("appearance",
 								"panel_outfit_edit"));
 		if (panel_outfit_edit != NULL)
 		{
@@ -235,9 +230,7 @@ class CofBodyPartContextMenu : public CofContextMenu
 		LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
 		LLUUID selected_id = mUUIDs.back();
 
-		// *HACK* need to pass pointer to LLPanelOutfitEdit instead of LLSideTray::getInstance()->getPanel().
-		// LLSideTray::getInstance()->getPanel() is rather slow variant
-		LLPanelOutfitEdit* panel_oe = dynamic_cast<LLPanelOutfitEdit*>(LLSideTray::getInstance()->getPanel("panel_outfit_edit"));
+		LLPanelOutfitEdit* panel_oe = dynamic_cast<LLPanelOutfitEdit*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
 		registrar.add("BodyPart.Replace", boost::bind(&LLPanelOutfitEdit::onReplaceMenuItemClicked, panel_oe, selected_id));
 		registrar.add("BodyPart.Edit", boost::bind(LLAgentWearables::editWearable, selected_id));
 		registrar.add("BodyPart.Create", boost::bind(&CofBodyPartContextMenu::createNew, this, selected_id));
@@ -335,6 +328,19 @@ BOOL LLCOFWearables::postBuild()
 	return LLPanel::postBuild();
 }
 
+void LLCOFWearables::setAttachmentsTitle()
+{
+	if (mAttachmentsTab)
+	{
+		U32 free_slots = MAX_AGENT_ATTACHMENTS - mAttachments->size();
+
+		LLStringUtil::format_map_t args_attachments;
+		args_attachments["[COUNT]"] = llformat ("%d", free_slots);
+		std::string attachments_title = LLTrans::getString("Attachments remain", args_attachments);
+		mAttachmentsTab->setTitle(attachments_title);
+	}
+}
+
 void LLCOFWearables::onSelectionChange(LLFlatListView* selected_list)
 {
 	if (!selected_list) return;
@@ -497,6 +503,7 @@ void LLCOFWearables::populateAttachmentsAndBodypartsLists(const LLInventoryModel
 	{
 		mAttachments->sort();
 		mAttachments->notify(REARRANGE); //notifying the parent about the list's size change (cause items were added with rearrange=false)
+		setAttachmentsTitle();
 	}
 	else
 	{
diff --git a/indra/newview/llcofwearables.h b/indra/newview/llcofwearables.h
index 1f8d6d0c94efacd7a3dbd351a12e2496477c1198..9957d6a64e18f1e61fbed1d83ccd20105255678f 100644
--- a/indra/newview/llcofwearables.h
+++ b/indra/newview/llcofwearables.h
@@ -91,6 +91,8 @@ class LLCOFWearables : public LLPanel
 	 */
 	void selectClothing(LLWearableType::EType clothing_type);
 
+	void setAttachmentsTitle();
+
 protected:
 
 	void populateAttachmentsAndBodypartsLists(const LLInventoryModel::item_array_t& cof_items);
diff --git a/indra/newview/llcylinder.cpp b/indra/newview/llcylinder.cpp
index 4901e29691689c91b7451369c34c2469763b48a4..f353851a251f3ddbac17a2ca39fa7cb2e1695955 100644
--- a/indra/newview/llcylinder.cpp
+++ b/indra/newview/llcylinder.cpp
@@ -37,261 +37,39 @@
 #include "llgl.h"
 #include "llglheaders.h"
 
-LLCylinder	gCylinder;
 LLCone		gCone;
 
-GLUquadricObj* gQuadObj = NULL;
-
-static const GLint SLICES[] = { 30, 20, 12, 6 };		// same as sphere slices
-static const GLint STACKS = 2;
-static const GLfloat RADIUS = 0.5f;
-	
-// draws a cylinder or cone
-// returns approximate number of triangles required
-U32 draw_cylinder_side(GLint slices, GLint stacks, GLfloat base_radius, GLfloat top_radius)
-{
-	U32 triangles = 0;
-	GLfloat height = 1.0f;
-
-	if (!gQuadObj)
-	{
-		gQuadObj = gluNewQuadric();
-		if (!gQuadObj) llerror("draw_cylindrical_body couldn't allocated quadric", 0);
-	}
-
-	gluQuadricDrawStyle(gQuadObj, GLU_FILL);
-	gluQuadricNormals(gQuadObj, GLU_SMOOTH);
-	gluQuadricOrientation(gQuadObj, GLU_OUTSIDE);
-	gluQuadricTexture(gQuadObj, GL_TRUE);
-	gluCylinder(gQuadObj, base_radius, top_radius, height, slices, stacks);
-	triangles += stacks * (slices * 2);
-	
-
-	return triangles;
-}
-
-
-// Returns number of triangles required to draw
-// Need to know if top or not to set lighting normals
-const BOOL TOP = TRUE;
-const BOOL BOTTOM = FALSE;
-U32 draw_cylinder_cap(GLint slices, GLfloat base_radius, BOOL is_top)
-{
-	U32 triangles = 0;
-
-	if (!gQuadObj)
-	{
-		gQuadObj = gluNewQuadric();
-		if (!gQuadObj) llerror("draw_cylinder_base couldn't allocated quadric", 0);
-	}
-
-	gluQuadricDrawStyle(gQuadObj, GLU_FILL);
-	gluQuadricNormals(gQuadObj, GLU_SMOOTH);
-	gluQuadricOrientation(gQuadObj, GLU_OUTSIDE);
-	gluQuadricTexture(gQuadObj, GL_TRUE);
-
-	// no hole in the middle of the disk, and just one ring
-	GLdouble inner_radius = 0.0;
-	GLint rings = 1;
-
-	// normals point in +z for top, -z for base
-	if (is_top)
-	{
-		gluQuadricOrientation(gQuadObj, GLU_OUTSIDE);
-	}
-	else
-	{
-		gluQuadricOrientation(gQuadObj, GLU_INSIDE);
-	}
-	gluDisk(gQuadObj, inner_radius, base_radius, slices, rings);
-	triangles += slices;
-
-	return triangles;
-}
-
-void LLCylinder::drawSide(S32 detail)
-{
-	draw_cylinder_side(SLICES[detail], STACKS, RADIUS, RADIUS);
-}
-
-void LLCylinder::drawTop(S32 detail)
-{
-	draw_cylinder_cap(SLICES[detail], RADIUS, TOP);
-}
-
-void LLCylinder::drawBottom(S32 detail)
-{
-	draw_cylinder_cap(SLICES[detail], RADIUS, BOTTOM);
-}
-
-void LLCylinder::prerender()
-{
-}
-
-void LLCylinder::cleanupGL()
-{
-	if (gQuadObj)
-	{
-		gluDeleteQuadric(gQuadObj);
-		gQuadObj = NULL;
-	}
-}
-
-void LLCylinder::render(F32 pixel_area)
-{
-	renderface(pixel_area, 0);
-	renderface(pixel_area, 1);
-	renderface(pixel_area, 2);
-}
-
-
-void LLCylinder::renderface(F32 pixel_area, S32 face)
-{
-	if (face < 0 || face > 2)
-	{
-		llerror("LLCylinder::renderface() invalid face number", face);
-		return;
-	}
-
-	glMatrixMode(GL_MODELVIEW);
-	glPushMatrix();
-
-	S32 level_of_detail;
-
-	if (pixel_area > 20000.f)
-	{
-		level_of_detail = 0;
-	}
-	else if (pixel_area > 1600.f)
-	{
-		level_of_detail = 1;
-	}
-	else if (pixel_area > 200.f)
-	{
-		level_of_detail = 2;
-	}
-	else
-	{
-		level_of_detail = 3;
-	}
-
-	if (level_of_detail < 0 || CYLINDER_LEVELS_OF_DETAIL <= level_of_detail)
-	{
-		llerror("LLCylinder::renderface() invalid level of detail", level_of_detail);
-		return;
-	}
-
-	LLVertexBuffer::unbind();
-	
-	switch(face)
-	{
-	case 0:
-		glTranslatef(0.f, 0.f, -0.5f);
-		drawSide(level_of_detail);
-		break;
-	case 1:
-		glTranslatef(0.0f, 0.f, 0.5f);
-		drawTop(level_of_detail);
-		break;
-	case 2:
-		glTranslatef(0.0f, 0.f, -0.5f);
-		drawBottom(level_of_detail);
-		break;
-	default:
-		llerror("LLCylinder::renderface() fell out of switch", 0);
-		break;
-	}
-
-	glMatrixMode(GL_MODELVIEW);
-	glPopMatrix();
-}
-
-
 //
 // Cones
 //
 
-void LLCone::prerender()
+void LLCone::render(S32 sides)
 {
-}
+	gGL.begin(LLRender::TRIANGLE_FAN);
+	gGL.vertex3f(0,0,0);
 
-void LLCone::cleanupGL()
-{
-	if (gQuadObj)
+	for (U32 i = 0; i < sides; i++)
 	{
-		gluDeleteQuadric(gQuadObj);
-		gQuadObj = NULL;
+		F32 a = (F32) i/sides * F_PI*2.f;
+		F32 x = cosf(a)*0.5f;
+		F32 y = sinf(a)*0.5f;
+		gGL.vertex3f(x,y,-.5f);
 	}
-}
+	gGL.vertex3f(cosf(0.f)*0.5f, sinf(0.f)*0.5f, -0.5f);
 
-void LLCone::drawSide(S32 detail)
-{
-	draw_cylinder_side( SLICES[detail], STACKS, RADIUS, 0.f );	
-}
-
-void LLCone::drawBottom(S32 detail)
-{
-	draw_cylinder_cap( SLICES[detail], RADIUS, BOTTOM );
-}
-
-void LLCone::render(S32 level_of_detail)
-{
-	GLfloat height = 1.0f;
+	gGL.end();
 
-	if (level_of_detail < 0 || CONE_LEVELS_OF_DETAIL <= level_of_detail)
+	gGL.begin(LLRender::TRIANGLE_FAN);
+	gGL.vertex3f(0.f, 0.f, 0.5f);
+	for (U32 i = 0; i < sides; i++)
 	{
-		llerror("LLCone::render() invalid level of detail", level_of_detail);
-		return;
+		F32 a = (F32) i/sides * F_PI*2.f;
+		F32 x = cosf(a)*0.5f;
+		F32 y = sinf(a)*0.5f;
+		gGL.vertex3f(x,y,-0.5f);
 	}
+	gGL.vertex3f(cosf(0.f)*0.5f, sinf(0.f)*0.5f, -0.5f);
 
-	glMatrixMode(GL_MODELVIEW);
-	glPushMatrix();
-
-	// center object at 0
-	glTranslatef(0.f, 0.f, - height / 2.0f);
-
-	drawSide(level_of_detail);
-	drawBottom(level_of_detail);
-
-	glMatrixMode(GL_MODELVIEW);
-	glPopMatrix();
+	gGL.end();
 }
 
-
-void LLCone::renderface(S32 level_of_detail, S32 face)
-{
-	if (face < 0 || face > 1)
-	{
-		llerror("LLCone::renderface() invalid face number", face);
-		return;
-	}
-
-	if (level_of_detail < 0 || CONE_LEVELS_OF_DETAIL <= level_of_detail)
-	{
-		llerror("LLCone::renderface() invalid level of detail", level_of_detail);
-		return;
-	}
-
-	glMatrixMode(GL_MODELVIEW);
-	glPushMatrix();
-
-	LLVertexBuffer::unbind();
-	
-	switch(face)
-	{
-	case 0:
-		glTranslatef(0.f, 0.f, -0.5f);
-		drawSide(level_of_detail);
-		break;
-	case 1:
-		glTranslatef(0.f, 0.f, -0.5f);
-		drawBottom(level_of_detail);
-		break;
-	default:
-		llerror("LLCylinder::renderface() fell out of switch", 0);
-		break;
-	}
-
-	glMatrixMode(GL_MODELVIEW);
-	glPopMatrix();
-}
diff --git a/indra/newview/llcylinder.h b/indra/newview/llcylinder.h
index 40a669ceb6d82294deb56a464925f6e843bb851b..4369f06659d048ad3ba72c4edb89c59147f22fcd 100644
--- a/indra/newview/llcylinder.h
+++ b/indra/newview/llcylinder.h
@@ -30,45 +30,18 @@
 //#include "stdtypes.h"
 //#include "llgl.h"
 
-//
-// Cylinders
-//
-const S32 CYLINDER_LEVELS_OF_DETAIL = 4;
-const S32 CYLINDER_FACES = 3;
-
-class LLCylinder
-{
-public:
-	void prerender();
-	void drawTop(S32 detail);
-	void drawSide(S32 detail);
-	void drawBottom(S32 detail);
-	void cleanupGL();
-
-	void render(F32 pixel_area);
-	void renderface(F32 pixel_area, S32 face);
-};
-
+#include "llvertexbuffer.h"
 
 //
 // Cones
 //
 
-const S32 CONE_LOD_HIGHEST = 0;
-const S32 CONE_LEVELS_OF_DETAIL = 4;
-const S32 CONE_FACES = 2;
-
 class LLCone
 {	
 public:
-	void prerender();
-	void cleanupGL();
-	void drawSide(S32 detail);
-	void drawBottom(S32 detail);
-	void render(S32 level_of_detail);
-	void renderface(S32 level_of_detail, S32 face);
+	void render(S32 sides = 12);
 };
 
-extern LLCylinder gCylinder;
+
 extern LLCone gCone;
 #endif
diff --git a/indra/newview/lldebugview.cpp b/indra/newview/lldebugview.cpp
index cc6ba05e7e197f5e2da6e723c48d243c64cd2f7e..7d3170cb76504149753aa9243920a28980fa0230 100644
--- a/indra/newview/lldebugview.cpp
+++ b/indra/newview/lldebugview.cpp
@@ -55,9 +55,23 @@ LLDebugView* gDebugView = NULL;
 static LLDefaultChildRegistry::Register<LLDebugView> r("debug_view");
 
 LLDebugView::LLDebugView(const LLDebugView::Params& p)
-:	LLView(p)
+:	LLView(p),
+	mFastTimerView(NULL),
+	mMemoryView(NULL),
+	mDebugConsolep(NULL),
+	mFloaterSnapRegion(NULL)
 {}
 
+LLDebugView::~LLDebugView()
+{
+	// These have already been deleted.  Fix the globals appropriately.
+	gDebugView = NULL;
+	gTextureView = NULL;
+	gSceneView = NULL;
+	gTextureSizeView = NULL;
+	gTextureCategoryView = NULL;
+}
+
 void LLDebugView::init()
 {
 	LLRect r;
@@ -109,8 +123,6 @@ void LLDebugView::init()
 	addChild(gTextureView);
 	//gTextureView->reshape(r.getWidth(), r.getHeight(), TRUE);
 
-	
-
 
 	if(gAuditTexture)
 	{
@@ -136,14 +148,16 @@ void LLDebugView::init()
 	}
 }
 
-
-LLDebugView::~LLDebugView()
+void LLDebugView::draw()
 {
-	// These have already been deleted.  Fix the globals appropriately.
-	gDebugView = NULL;
-	gTextureView = NULL;
-	gSceneView = NULL;
-	gTextureSizeView = NULL;
-	gTextureCategoryView = NULL;
-}
+	if (mFloaterSnapRegion == NULL)
+	{
+		mFloaterSnapRegion = getRootView()->getChildView("floater_snap_region");
+	}
+
+	LLRect debug_rect;
+	mFloaterSnapRegion->localRectToOtherView(mFloaterSnapRegion->getLocalRect(), &debug_rect, getParent());
 
+	setShape(debug_rect);
+	LLView::draw();
+}
diff --git a/indra/newview/lldebugview.h b/indra/newview/lldebugview.h
index 20262fc89e5a9042c839331893c057a5cdd2982d..5aec77ad6275fdff32f8406bf60b393b5ea9c159 100644
--- a/indra/newview/lldebugview.h
+++ b/indra/newview/lldebugview.h
@@ -51,16 +51,19 @@ class LLDebugView : public LLView
 			changeDefault(mouse_opaque, false);
 		}
 	};
+	
 	LLDebugView(const Params&);
 	~LLDebugView();
 
 	void init();
-
+	void draw();
+	
 	void setStatsVisible(BOOL visible);
 	
 	LLFastTimerView* mFastTimerView;
 	LLMemoryView*	 mMemoryView;
 	LLConsole*		 mDebugConsolep;
+	LLView*			 mFloaterSnapRegion;
 };
 
 extern LLDebugView* gDebugView;
diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp
index dd243397a1a4f65c314b75c25e2c6d401468772e..1e03582a29176f2fb11c06baebfd7bde3f3ae7c6 100644
--- a/indra/newview/lldirpicker.cpp
+++ b/indra/newview/lldirpicker.cpp
@@ -217,12 +217,12 @@ OSStatus	LLDirPicker::doNavChooseDialog()
 
 	error = NavCreateChooseFolderDialog(&mNavOptions, &doNavCallbackEvent, NULL, NULL, &navRef);
 
-	gViewerWindow->mWindow->beforeDialog();
+	gViewerWindow->getWindow()->beforeDialog();
 
 	if (error == noErr)
 		error = NavDialogRun(navRef);
 
-	gViewerWindow->mWindow->afterDialog();
+	gViewerWindow->getWindow()->afterDialog();
 
 	if (error == noErr)
 		error = NavDialogGetReply(navRef, &navReply);
diff --git a/indra/newview/lldndbutton.cpp b/indra/newview/lldndbutton.cpp
index 8a38c8a6437fa61452bad8c69fad0569eff84300..7c9dda6b1ddc9ac589dc906a96e62ccf99b404af 100644
--- a/indra/newview/lldndbutton.cpp
+++ b/indra/newview/lldndbutton.cpp
@@ -31,16 +31,9 @@
 
 static LLDefaultChildRegistry::Register<LLDragAndDropButton> r("dnd_button");
 
-LLDragAndDropButton::Params::Params()
-{
-
-}
-
 LLDragAndDropButton::LLDragAndDropButton(const Params& params)
 : LLButton(params)
-{
-
-}
+{}
 
 BOOL LLDragAndDropButton::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, void* cargo_data, EAcceptance* accept, std::string& tooltip_msg)
 {
diff --git a/indra/newview/lldndbutton.h b/indra/newview/lldndbutton.h
index 0642cbb7b91dbdd5a4f86815e0f3e63b5c39bc5d..53ea2f5ea7bed4773a35f82ee658d4292e17fd94 100644
--- a/indra/newview/lldndbutton.h
+++ b/indra/newview/lldndbutton.h
@@ -43,10 +43,7 @@
 class LLDragAndDropButton : public LLButton
 {
 public:
-	struct Params : public LLInitParam::Block<Params, LLButton::Params>
-	{
-		Params();
-	};
+	struct Params : public LLInitParam::Block<Params, LLButton::Params> {};
 
 	LLDragAndDropButton(const Params& params);
 
diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp
index debac9dcbfd9dd4ebf10bb30f3deda6c1f2e0ad5..21b21c152a6b981f929e21784da6c36b0db839a3 100644
--- a/indra/newview/lldrawable.cpp
+++ b/indra/newview/lldrawable.cpp
@@ -1077,6 +1077,7 @@ BOOL LLDrawable::isVisible() const
 LLSpatialBridge::LLSpatialBridge(LLDrawable* root, BOOL render_by_group, U32 data_mask)
 : LLSpatialPartition(data_mask, render_by_group, GL_STREAM_DRAW_ARB)
 {
+	mBridge = this;
 	mDrawable = root;
 	root->setSpatialBridge(this);
 	
@@ -1105,6 +1106,15 @@ LLSpatialBridge::~LLSpatialBridge()
 	{
 		group->mSpatialPartition->remove(this, group);
 	}
+
+	//delete octree here so listeners will still be able to access bridge specific state
+	destroyTree();
+}
+
+void LLSpatialBridge::destroyTree()
+{
+	delete mOctree;
+	mOctree = NULL;
 }
 
 void LLSpatialBridge::updateSpatialExtents()
diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp
index 286284f828e13af883bce36d6ce5dba52da5fd27..35f8a8579671ef3ac9ccaed54c22323a7d6dc032 100644
--- a/indra/newview/lldrawpool.cpp
+++ b/indra/newview/lldrawpool.cpp
@@ -384,7 +384,7 @@ BOOL LLFacePool::LLOverrideFaceColor::sOverrideFaceColor = FALSE;
 
 void LLFacePool::LLOverrideFaceColor::setColor(const LLColor4& color)
 {
-	glColor4fv(color.mV);
+	gGL.diffuseColor4fv(color.mV);
 }
 
 void LLFacePool::LLOverrideFaceColor::setColor(const LLColor4U& color)
@@ -394,7 +394,7 @@ void LLFacePool::LLOverrideFaceColor::setColor(const LLColor4U& color)
 
 void LLFacePool::LLOverrideFaceColor::setColor(F32 r, F32 g, F32 b, F32 a)
 {
-	glColor4f(r,g,b,a);
+	gGL.diffuseColor4f(r,g,b,a);
 }
 
 
@@ -457,10 +457,10 @@ void LLRenderPass::applyModelMatrix(LLDrawInfo& params)
 	if (params.mModelMatrix != gGLLastMatrix)
 	{
 		gGLLastMatrix = params.mModelMatrix;
-		glLoadMatrixd(gGLModelView);
+		gGL.loadMatrix(gGLModelView);
 		if (params.mModelMatrix)
 		{
-			glMultMatrixf((GLfloat*) params.mModelMatrix->mMatrix);
+			gGL.multMatrix((GLfloat*) params.mModelMatrix->mMatrix);
 		}
 		gPipeline.mMatrixOpCount++;
 	}
@@ -494,8 +494,8 @@ void LLRenderPass::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL ba
 				{
 					tex_setup = true;
 					gGL.getTexUnit(0)->activate();
-					glMatrixMode(GL_TEXTURE);
-					glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix);
+					gGL.matrixMode(LLRender::MM_TEXTURE);
+					gGL.loadMatrix((GLfloat*) params.mTextureMatrix->mMatrix);
 					gPipeline.mTextureMatrixOps++;
 				}
 			}
@@ -519,8 +519,8 @@ void LLRenderPass::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL ba
 
 	if (tex_setup)
 	{
-		glLoadIdentity();
-		glMatrixMode(GL_MODELVIEW);
+		gGL.loadIdentity();
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 	}
 }
 
diff --git a/indra/newview/lldrawpool.h b/indra/newview/lldrawpool.h
index c7acbb42c62da2c8aa5a471e7c8f5a5aaddfd536..5a2981e749614677d406f7a797c6a65a580ee072 100644
--- a/indra/newview/lldrawpool.h
+++ b/indra/newview/lldrawpool.h
@@ -133,7 +133,6 @@ class LLRenderPass : public LLDrawPool
 		PASS_ALPHA,
 		PASS_ALPHA_MASK,
 		PASS_FULLBRIGHT_ALPHA_MASK,
-		PASS_ALPHA_SHADOW,
 		NUM_RENDER_TYPES,
 	};
 
diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp
index 9719140a37a52f26214fad5e6145cea7be7f68aa..ddb7d3ceebd2bf62ca0710bbe630aec2d0f09551 100644
--- a/indra/newview/lldrawpoolalpha.cpp
+++ b/indra/newview/lldrawpoolalpha.cpp
@@ -54,7 +54,7 @@ static BOOL deferred_render = FALSE;
 
 LLDrawPoolAlpha::LLDrawPoolAlpha(U32 type) :
 		LLRenderPass(type), current_shader(NULL), target_shader(NULL),
-		simple_shader(NULL), fullbright_shader(NULL),
+		simple_shader(NULL), fullbright_shader(NULL), emissive_shader(NULL),
 		mColorSFactor(LLRender::BF_UNDEF), mColorDFactor(LLRender::BF_UNDEF),
 		mAlphaSFactor(LLRender::BF_UNDEF), mAlphaDFactor(LLRender::BF_UNDEF)
 {
@@ -90,7 +90,7 @@ void LLDrawPoolAlpha::renderDeferred(S32 pass)
 {
 	LLFastTimer t(FTM_RENDER_GRASS);
 	gDeferredDiffuseAlphaMaskProgram.bind();
-	gDeferredDiffuseAlphaMaskProgram.setAlphaRange(0.33f, 1.f);
+	gDeferredDiffuseAlphaMaskProgram.setMinimumAlpha(0.33f);
 
 	//render alpha masked objects
 	LLRenderPass::pushBatches(LLRenderPass::PASS_ALPHA_MASK, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE);
@@ -136,7 +136,7 @@ void LLDrawPoolAlpha::beginPostDeferredPass(S32 pass)
 		simple_shader = NULL;
 		fullbright_shader = NULL;
 		gObjectFullbrightAlphaMaskProgram.bind();
-		gObjectFullbrightAlphaMaskProgram.setAlphaRange(0.33f, 1.f);
+		gObjectFullbrightAlphaMaskProgram.setMinimumAlpha(0.33f);
 	}
 
 	deferred_render = TRUE;
@@ -175,11 +175,13 @@ void LLDrawPoolAlpha::beginRenderPass(S32 pass)
 	{
 		simple_shader = &gObjectSimpleWaterAlphaMaskProgram;
 		fullbright_shader = &gObjectFullbrightWaterAlphaMaskProgram;
+		emissive_shader = &gObjectEmissiveWaterProgram;
 	}
 	else
 	{
 		simple_shader = &gObjectSimpleAlphaMaskProgram;
 		fullbright_shader = &gObjectFullbrightAlphaMaskProgram;
+		emissive_shader = &gObjectEmissiveProgram;
 	}
 
 	if (mVertexShaderLevel > 0)
@@ -230,14 +232,14 @@ void LLDrawPoolAlpha::render(S32 pass)
 			if (!LLPipeline::sRenderDeferred || !deferred_render)
 			{
 				simple_shader->bind();
-				simple_shader->setAlphaRange(0.33f, 1.f);
+				simple_shader->setMinimumAlpha(0.33f);
 
 				pushBatches(LLRenderPass::PASS_ALPHA_MASK, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE);
 			}
 			if (fullbright_shader)
 			{
 				fullbright_shader->bind();
-				fullbright_shader->setAlphaRange(0.33f, 1.f);
+				fullbright_shader->setMinimumAlpha(0.33f);
 			}
 			pushBatches(LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE);
 			//LLGLSLShader::bindNoShader();
@@ -273,16 +275,16 @@ void LLDrawPoolAlpha::render(S32 pass)
 			if (LLPipeline::sImpostorRender)
 			{
 				fullbright_shader->bind();
-				fullbright_shader->setAlphaRange(0.5f, 1.f);
+				fullbright_shader->setMinimumAlpha(0.5f);
 				simple_shader->bind();
-				simple_shader->setAlphaRange(0.5f, 1.f);
+				simple_shader->setMinimumAlpha(0.5f);
 			}				
 			else
 			{
 				fullbright_shader->bind();
-				fullbright_shader->setAlphaRange(0.f, 1.f);
+				fullbright_shader->setMinimumAlpha(0.f);
 				simple_shader->bind();
-				simple_shader->setAlphaRange(0.f, 1.f);
+				simple_shader->setMinimumAlpha(0.f);
 			}
 		}
 		else
@@ -319,20 +321,26 @@ void LLDrawPoolAlpha::render(S32 pass)
 		BOOL shaders = gPipeline.canUseVertexShaders();
 		if(shaders) 
 		{
-			gObjectFullbrightNonIndexedProgram.bind();
+			gHighlightProgram.bind();
 		}
 		else
 		{
 			gPipeline.enableLightsFullbright(LLColor4(1,1,1,1));
 		}
-		glColor4f(1,0,0,1);
+
+		gGL.diffuseColor4f(1,0,0,1);
+				
 		LLViewerFetchedTexture::sSmokeImagep->addTextureStats(1024.f*1024.f);
 		gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sSmokeImagep, TRUE) ;
 		renderAlphaHighlight(LLVertexBuffer::MAP_VERTEX |
 							LLVertexBuffer::MAP_TEXCOORD0);
+
+		pushBatches(LLRenderPass::PASS_ALPHA_MASK, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE);
+		pushBatches(LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, FALSE);
+
 		if(shaders) 
 		{
-			gObjectFullbrightNonIndexedProgram.unbind();
+			gHighlightProgram.unbind();
 		}
 	}
 }
@@ -472,8 +480,8 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)
 						{
 							tex_setup = true;
 							gGL.getTexUnit(0)->activate();
-							glMatrixMode(GL_TEXTURE);
-							glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix);
+							gGL.matrixMode(LLRender::MM_TEXTURE);
+							gGL.loadMatrix((GLfloat*) params.mTextureMatrix->mMatrix);
 							gPipeline.mTextureMatrixOps++;
 						}
 					}
@@ -488,30 +496,34 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask)
 				gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode);
 				
 				// If this alpha mesh has glow, then draw it a second time to add the destination-alpha (=glow).  Interleaving these state-changing calls could be expensive, but glow must be drawn Z-sorted with alpha.
-				if (draw_glow_for_this_partition &&
-				    params.mGlowColor.mV[3] > 0)
+				if (current_shader && 
+					draw_glow_for_this_partition &&
+					params.mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_EMISSIVE))
 				{
 					// install glow-accumulating blend mode
 					gGL.blendFunc(LLRender::BF_ZERO, LLRender::BF_ONE, // don't touch color
 						      LLRender::BF_ONE, LLRender::BF_ONE); // add to alpha (glow)
 
+					emissive_shader->bind();
+					
 					// glow doesn't use vertex colors from the mesh data
-					params.mVertexBuffer->setBuffer(mask & ~LLVertexBuffer::MAP_COLOR);
-					glColor4ubv(params.mGlowColor.mV);
-
+					params.mVertexBuffer->setBuffer((mask & ~LLVertexBuffer::MAP_COLOR) | LLVertexBuffer::MAP_EMISSIVE);
+					
 					// do the actual drawing, again
 					params.mVertexBuffer->drawRange(params.mDrawMode, params.mStart, params.mEnd, params.mCount, params.mOffset);
 					gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode);
 
 					// restore our alpha blend mode
 					gGL.blendFunc(mColorSFactor, mColorDFactor, mAlphaSFactor, mAlphaDFactor);
+
+					current_shader->bind();
 				}
 			
 				if (tex_setup)
 				{
 					gGL.getTexUnit(0)->activate();
-					glLoadIdentity();
-					glMatrixMode(GL_MODELVIEW);
+					gGL.loadIdentity();
+					gGL.matrixMode(LLRender::MM_MODELVIEW);
 				}
 			}
 		}
diff --git a/indra/newview/lldrawpoolalpha.h b/indra/newview/lldrawpoolalpha.h
index 12a7ae92b12f9dbd60fd7dee206acf55776c8ae7..a4245e561d85cf3e70a377b59c73405b8f219805 100644
--- a/indra/newview/lldrawpoolalpha.h
+++ b/indra/newview/lldrawpoolalpha.h
@@ -78,6 +78,7 @@ class LLDrawPoolAlpha: public LLRenderPass
 	LLGLSLShader* target_shader;
 	LLGLSLShader* simple_shader;
 	LLGLSLShader* fullbright_shader;	
+	LLGLSLShader* emissive_shader;
 
 	// our 'normal' alpha blend function for this pass
 	LLRender::eBlendFactor mColorSFactor;
diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index 37ee81aeb545afdbde39a9e5c2bfeb4626bb540b..b002c11af52a79f932cd662cbc647fda3f69c499 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -263,7 +263,6 @@ void LLDrawPoolAvatar::beginPostDeferredAlpha()
 	gPipeline.bindDeferredShader(*sVertexProgram);
 	
 	sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
-	enable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
 }
 
 void LLDrawPoolAvatar::beginDeferredRiggedAlpha()
@@ -271,7 +270,6 @@ void LLDrawPoolAvatar::beginDeferredRiggedAlpha()
 	sVertexProgram = &gDeferredSkinnedAlphaProgram;
 	gPipeline.bindDeferredShader(*sVertexProgram);
 	sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
-	LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
 	gPipeline.enableLightsDynamic();
 }
 
@@ -280,7 +278,6 @@ void LLDrawPoolAvatar::endDeferredRiggedAlpha()
 	LLVertexBuffer::unbind();
 	gPipeline.unbindDeferredShader(*sVertexProgram);
 	sDiffuseChannel = 0;
-	LLVertexBuffer::sWeight4Loc = -1;
 	sVertexProgram = NULL;
 }
 
@@ -314,8 +311,7 @@ void LLDrawPoolAvatar::endPostDeferredAlpha()
 	// if we're in software-blending, remember to set the fence _after_ we draw so we wait till this rendering is done
 	sRenderingSkinned = FALSE;
 	sSkipOpaque = FALSE;
-	disable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
-	
+		
 	gPipeline.unbindDeferredShader(*sVertexProgram);
 	sDiffuseChannel = 0;
 	sShaderLevel = mVertexShaderLevel;
@@ -356,27 +352,22 @@ void LLDrawPoolAvatar::beginShadowPass(S32 pass)
 	if (pass == 0)
 	{
 		sVertexProgram = &gDeferredAvatarShadowProgram;
-		if (sShaderLevel > 0)
-		{
-			gAvatarMatrixParam = sVertexProgram->mUniform[LLViewerShaderMgr::AVATAR_MATRIX];
-		}
-		//gGL.setAlphaRejectSettings(LLRender::CF_GREATER_EQUAL, 0.2f);
 		
-		glColor4f(1,1,1,1);
+		//gGL.setAlphaRejectSettings(LLRender::CF_GREATER_EQUAL, 0.2f);		
 
 		if ((sShaderLevel > 0))  // for hardware blending
 		{
 			sRenderingSkinned = TRUE;
 			sVertexProgram->bind();
-			enable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
 		}
+
+		gGL.diffuseColor4f(1,1,1,1);
 	}
 	else
 	{
 		sVertexProgram = &gDeferredAttachmentShadowProgram;
 		sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
 		sVertexProgram->bind();
-		LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
 	}
 }
 
@@ -389,14 +380,12 @@ void LLDrawPoolAvatar::endShadowPass(S32 pass)
 		{
 			sRenderingSkinned = FALSE;
 			sVertexProgram->unbind();
-			disable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
 		}
 	}
 	else
 	{
 		LLVertexBuffer::unbind();
 		sVertexProgram->unbind();
-		LLVertexBuffer::sWeight4Loc = -1;
 		sVertexProgram = NULL;
 	}
 }
@@ -430,11 +419,6 @@ void LLDrawPoolAvatar::renderShadow(S32 pass)
 	
 	if (pass == 0)
 	{
-		if (sShaderLevel > 0)
-		{
-			gAvatarMatrixParam = sVertexProgram->mUniform[LLViewerShaderMgr::AVATAR_MATRIX];
-		}
-
 		avatarp->renderSkinned(AVATAR_RENDER_PASS_SINGLE);
 	}
 	else
@@ -492,11 +476,6 @@ void LLDrawPoolAvatar::beginRenderPass(S32 pass)
 	//reset vertex buffer mappings
 	LLVertexBuffer::unbind();
 
-	if (pass == 0)
-	{ //make sure no stale colors are left over from a previous render
-		glColor4f(1,1,1,1);
-	}
-
 	if (LLPipeline::sImpostorRender)
 	{ //impostor render does not have impostors or rigid rendering
 		pass += 2;
@@ -535,6 +514,11 @@ void LLDrawPoolAvatar::beginRenderPass(S32 pass)
 		beginRiggedGlow();
 		break;
 	}
+
+	if (pass == 0)
+	{ //make sure no stale colors are left over from a previous render
+		gGL.diffuseColor4f(1,1,1,1);
+	}
 }
 
 void LLDrawPoolAvatar::endRenderPass(S32 pass)
@@ -592,7 +576,7 @@ void LLDrawPoolAvatar::beginImpostor()
 	if (LLGLSLShader::sNoFixedFunction)
 	{
 		gImpostorProgram.bind();
-		gImpostorProgram.setAlphaRange(0.01f, 1.f);
+		gImpostorProgram.setMinimumAlpha(0.01f);
 	}
 
 	gPipeline.enableLightsFullbright(LLColor4(1,1,1,1));
@@ -614,17 +598,17 @@ void LLDrawPoolAvatar::beginRigid()
 	{
 		if (LLPipeline::sUnderWaterRender)
 		{
-			sVertexProgram = &gObjectAlphaMaskNonIndexedWaterProgram;
+			sVertexProgram = &gObjectAlphaMaskNoColorWaterProgram;
 		}
 		else
 		{
-			sVertexProgram = &gObjectAlphaMaskNonIndexedProgram;
+			sVertexProgram = &gObjectAlphaMaskNoColorProgram;
 		}
 		
 		if (sVertexProgram != NULL)
 		{	//eyeballs render with the specular shader
 			sVertexProgram->bind();
-			sVertexProgram->setAlphaRange(0.2f, 1.f);
+			sVertexProgram->setMinimumAlpha(0.2f);
 		}
 	}
 	else
@@ -657,7 +641,7 @@ void LLDrawPoolAvatar::beginDeferredImpostor()
 	sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
 
 	sVertexProgram->bind();
-	sVertexProgram->setAlphaRange(0.01f, 1.f);
+	sVertexProgram->setMinimumAlpha(0.01f);
 }
 
 void LLDrawPoolAvatar::endDeferredImpostor()
@@ -672,14 +656,16 @@ void LLDrawPoolAvatar::endDeferredImpostor()
 
 void LLDrawPoolAvatar::beginDeferredRigid()
 {
-	sVertexProgram = &gDeferredNonIndexedDiffuseProgram;
-				
+	sVertexProgram = &gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram;
+	sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
 	sVertexProgram->bind();
+	sVertexProgram->setMinimumAlpha(0.2f);
 }
 
 void LLDrawPoolAvatar::endDeferredRigid()
 {
 	sShaderLevel = mVertexShaderLevel;
+	sVertexProgram->disableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
 	sVertexProgram->unbind();
 	gGL.getTexUnit(0)->activate();
 }
@@ -703,11 +689,11 @@ void LLDrawPoolAvatar::beginSkinned()
 	{
 		if (LLPipeline::sUnderWaterRender)
 		{
-			sVertexProgram = &gObjectAlphaMaskNonIndexedWaterProgram;
+			sVertexProgram = &gObjectAlphaMaskNoColorWaterProgram;
 		}
 		else
 		{
-			sVertexProgram = &gObjectAlphaMaskNonIndexedProgram;
+			sVertexProgram = &gObjectAlphaMaskNoColorProgram;
 		}
 	}
 	
@@ -716,17 +702,6 @@ void LLDrawPoolAvatar::beginSkinned()
 		sRenderingSkinned = TRUE;
 
 		sVertexProgram->bind();
-		if (sShaderLevel >= SHADER_LEVEL_CLOTH)
-		{
-			enable_cloth_weights(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_CLOTHING]);
-		}
-		enable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
-
-		if (sShaderLevel >= SHADER_LEVEL_BUMP)
-		{
-			enable_binormals(sVertexProgram->mAttribute[LLViewerShaderMgr::BINORMAL]);
-		}
-		
 		sVertexProgram->enableTexture(LLViewerShaderMgr::BUMP_MAP);
 		gGL.getTexUnit(0)->activate();
 	}
@@ -742,7 +717,7 @@ void LLDrawPoolAvatar::beginSkinned()
 
 	if (LLGLSLShader::sNoFixedFunction)
 	{
-		sVertexProgram->setAlphaRange(0.2f, 1.f);
+		sVertexProgram->setMinimumAlpha(0.2f);
 	}
 }
 
@@ -754,16 +729,6 @@ void LLDrawPoolAvatar::endSkinned()
 		sRenderingSkinned = FALSE;
 		sVertexProgram->disableTexture(LLViewerShaderMgr::BUMP_MAP);
 		gGL.getTexUnit(0)->activate();
-		disable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
-		if (sShaderLevel >= SHADER_LEVEL_BUMP)
-		{
-			disable_binormals(sVertexProgram->mAttribute[LLViewerShaderMgr::BINORMAL]);
-		}
-		if ((sShaderLevel >= SHADER_LEVEL_CLOTH))
-		{
-			disable_cloth_weights(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_CLOTHING]);
-		}
-
 		sVertexProgram->unbind();
 		sShaderLevel = mVertexShaderLevel;
 	}
@@ -809,7 +774,6 @@ void LLDrawPoolAvatar::beginRiggedSimple()
 	{
 		sDiffuseChannel = 0;
 		sVertexProgram->bind();
-		LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
 	}
 }
 
@@ -820,7 +784,6 @@ void LLDrawPoolAvatar::endRiggedSimple()
 	{
 		sVertexProgram->unbind();
 		sVertexProgram = NULL;
-		LLVertexBuffer::sWeight4Loc = -1;
 	}
 }
 
@@ -847,7 +810,34 @@ void LLDrawPoolAvatar::endRiggedFullbrightAlpha()
 
 void LLDrawPoolAvatar::beginRiggedGlow()
 {
-	beginRiggedFullbright();
+	if (sShaderLevel > 0)
+	{
+		if (LLPipeline::sUnderWaterRender)
+		{
+			sVertexProgram = &gSkinnedObjectEmissiveWaterProgram;
+		}
+		else
+		{
+			sVertexProgram = &gSkinnedObjectEmissiveProgram;
+		}
+	}
+	else
+	{
+		if (LLPipeline::sUnderWaterRender)
+		{
+			sVertexProgram = &gObjectEmissiveNonIndexedWaterProgram;
+		}
+		else
+		{
+			sVertexProgram = &gObjectEmissiveNonIndexedProgram;
+		}
+	}
+
+	if (sShaderLevel > 0 || gPipeline.canUseVertexShaders())
+	{
+		sDiffuseChannel = 0;
+		sVertexProgram->bind();
+	}
 }
 
 void LLDrawPoolAvatar::endRiggedGlow()
@@ -884,7 +874,6 @@ void LLDrawPoolAvatar::beginRiggedFullbright()
 	{
 		sDiffuseChannel = 0;
 		sVertexProgram->bind();
-		LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
 	}
 }
 
@@ -895,7 +884,6 @@ void LLDrawPoolAvatar::endRiggedFullbright()
 	{
 		sVertexProgram->unbind();
 		sVertexProgram = NULL;
-		LLVertexBuffer::sWeight4Loc = -1;
 	}
 }
 
@@ -928,7 +916,6 @@ void LLDrawPoolAvatar::beginRiggedShinySimple()
 	{
 		sVertexProgram->bind();
 		LLDrawPoolBump::bindCubeMap(sVertexProgram, 2, sDiffuseChannel, cube_channel, false);
-		LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
 	}
 }
 
@@ -940,7 +927,6 @@ void LLDrawPoolAvatar::endRiggedShinySimple()
 		LLDrawPoolBump::unbindCubeMap(sVertexProgram, 2, sDiffuseChannel, cube_channel, false);
 		sVertexProgram->unbind();
 		sVertexProgram = NULL;
-		LLVertexBuffer::sWeight4Loc = -1;
 	}
 }
 
@@ -974,7 +960,6 @@ void LLDrawPoolAvatar::beginRiggedFullbrightShiny()
 	{
 		sVertexProgram->bind();
 		LLDrawPoolBump::bindCubeMap(sVertexProgram, 2, sDiffuseChannel, cube_channel, false);
-		LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
 	}
 }
 
@@ -986,7 +971,6 @@ void LLDrawPoolAvatar::endRiggedFullbrightShiny()
 		LLDrawPoolBump::unbindCubeMap(sVertexProgram, 2, sDiffuseChannel, cube_channel, false);
 		sVertexProgram->unbind();
 		sVertexProgram = NULL;
-		LLVertexBuffer::sWeight4Loc = -1;
 	}
 }
 
@@ -996,14 +980,12 @@ void LLDrawPoolAvatar::beginDeferredRiggedSimple()
 	sVertexProgram = &gDeferredSkinnedDiffuseProgram;
 	sDiffuseChannel = 0;
 	sVertexProgram->bind();
-	LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
 }
 
 void LLDrawPoolAvatar::endDeferredRiggedSimple()
 {
 	LLVertexBuffer::unbind();
 	sVertexProgram->unbind();
-	LLVertexBuffer::sWeight4Loc = -1;
 	sVertexProgram = NULL;
 }
 
@@ -1013,7 +995,6 @@ void LLDrawPoolAvatar::beginDeferredRiggedBump()
 	sVertexProgram->bind();
 	normal_channel = sVertexProgram->enableTexture(LLViewerShaderMgr::BUMP_MAP);
 	sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
-	LLVertexBuffer::sWeight4Loc = sVertexProgram->getAttribLocation(LLViewerShaderMgr::OBJECT_WEIGHT);
 }
 
 void LLDrawPoolAvatar::endDeferredRiggedBump()
@@ -1022,7 +1003,6 @@ void LLDrawPoolAvatar::endDeferredRiggedBump()
 	sVertexProgram->disableTexture(LLViewerShaderMgr::BUMP_MAP);
 	sVertexProgram->disableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
 	sVertexProgram->unbind();
-	LLVertexBuffer::sWeight4Loc = -1;
 	normal_channel = -1;
 	sDiffuseChannel = 0;
 	sVertexProgram = NULL;
@@ -1032,14 +1012,12 @@ void LLDrawPoolAvatar::beginDeferredSkinned()
 {
 	sShaderLevel = mVertexShaderLevel;
 	sVertexProgram = &gDeferredAvatarProgram;
-
 	sRenderingSkinned = TRUE;
 
 	sVertexProgram->bind();
+	sVertexProgram->setMinimumAlpha(0.2f);
 	
 	sDiffuseChannel = sVertexProgram->enableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
-	enable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
-
 	gGL.getTexUnit(0)->activate();
 }
 
@@ -1047,7 +1025,6 @@ void LLDrawPoolAvatar::endDeferredSkinned()
 {
 	// if we're in software-blending, remember to set the fence _after_ we draw so we wait till this rendering is done
 	sRenderingSkinned = FALSE;
-	disable_vertex_weighting(sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT]);
 	sVertexProgram->unbind();
 
 	sVertexProgram->disableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
@@ -1161,10 +1138,10 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
 		return;
 	}
 
-	if (single_avatar && avatarp->mSpecialRenderMode >= 1) // 1=anim preview, 2=image preview,  3=morph view
+	/*if (single_avatar && avatarp->mSpecialRenderMode >= 1) // 1=anim preview, 2=image preview,  3=morph view
 	{
 		gPipeline.enableLightsAvatarEdit(LLColor4(.5f, .5f, .5f, 1.f));
-	}
+	}*/
 	
 	if (pass == 1)
 	{
@@ -1255,11 +1232,6 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
 		return;
 	}
 	
-	if (sShaderLevel > 0)
-	{
-		gAvatarMatrixParam = sVertexProgram->mUniform[LLViewerShaderMgr::AVATAR_MATRIX];
-	}
-    
 	if ((sShaderLevel >= SHADER_LEVEL_CLOTH))
 	{
 		LLMatrix4 rot_mat;
@@ -1273,16 +1245,16 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
 		wind = wind * rot_mat;
 		wind.mV[VW] = avatarp->mWindVec.mV[VW];
 
-		sVertexProgram->vertexAttrib4fv(LLViewerShaderMgr::AVATAR_WIND, wind.mV);
+		sVertexProgram->uniform4fv(LLViewerShaderMgr::AVATAR_WIND, 1, wind.mV);
 		F32 phase = -1.f * (avatarp->mRipplePhase);
 
 		F32 freq = 7.f + (noise1(avatarp->mRipplePhase) * 2.f);
 		LLVector4 sin_params(freq, freq, freq, phase);
-		sVertexProgram->vertexAttrib4fv(LLViewerShaderMgr::AVATAR_SINWAVE, sin_params.mV);
+		sVertexProgram->uniform4fv(LLViewerShaderMgr::AVATAR_SINWAVE, 1, sin_params.mV);
 
 		LLVector4 gravity(0.f, 0.f, -CLOTHING_GRAVITY_EFFECT, 0.f);
 		gravity = gravity * rot_mat;
-		sVertexProgram->vertexAttrib4fv(LLViewerShaderMgr::AVATAR_GRAVITY, gravity.mV);
+		sVertexProgram->uniform4fv(LLViewerShaderMgr::AVATAR_GRAVITY, 1, gravity.mV);
 	}
 
 	if( !single_avatar || (avatarp == single_avatar) )
@@ -1306,14 +1278,14 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
 	
 	if (buffer.isNull() || 
 		buffer->getTypeMask() != data_mask ||
-		buffer->getRequestedVerts() != vol_face.mNumVertices ||
-		buffer->getRequestedIndices() != vol_face.mNumIndices ||
+		buffer->getNumVerts() != vol_face.mNumVertices ||
+		buffer->getNumIndices() != vol_face.mNumIndices ||
 		(drawable && drawable->isState(LLDrawable::REBUILD_ALL)))
 	{
 		face->setGeomIndex(0);
 		face->setIndicesIndex(0);
 		
-		if (buffer.isNull() || buffer->getTypeMask() != data_mask)
+		if (buffer.isNull() || buffer->getTypeMask() != data_mask || !buffer->isWriteable())
 		{ //make a new buffer
 			if (sShaderLevel > 0)
 			{
@@ -1346,7 +1318,21 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
 
 		LLMatrix3 mat_normal(mat3);				
 
+		//let getGeometryVolume know if alpha should override shiny
+		U32 type = gPipeline.getPoolTypeFromTE(face->getTextureEntry(), face->getTexture());
+
+		if (type == LLDrawPool::POOL_ALPHA)
+		{
+			face->setPoolType(LLDrawPool::POOL_ALPHA);
+		}
+		else
+		{
+			face->setPoolType(LLDrawPool::POOL_AVATAR);
+		}
+
 		face->getGeometryVolume(*volume, face->getTEOffset(), mat_vert, mat_normal, offset, true);
+
+		buffer->flush();
 	}
 
 	if (sShaderLevel <= 0 && face->mLastSkinTime < avatar->getLastSkinTime())
@@ -1383,7 +1369,7 @@ void LLDrawPoolAvatar::updateRiggedFaceVertexBuffer(LLVOAvatar* avatar, LLFace*
 		LLMatrix4a bind_shape_matrix;
 		bind_shape_matrix.loadu(skin->mBindShapeMatrix);
 
-		for (U32 j = 0; j < buffer->getRequestedVerts(); ++j)
+		for (U32 j = 0; j < buffer->getNumVerts(); ++j)
 		{
 			LLMatrix4a final_mat;
 			final_mat.clear();
@@ -1483,12 +1469,12 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
 			continue;
 		}
 
-		stop_glerror();
+		//stop_glerror();
 
-		const LLVolumeFace& vol_face = volume->getVolumeFace(te);
-		updateRiggedFaceVertexBuffer(avatar, face, skin, volume, vol_face);
+		//const LLVolumeFace& vol_face = volume->getVolumeFace(te);
+		//updateRiggedFaceVertexBuffer(avatar, face, skin, volume, vol_face);
 		
-		stop_glerror();
+		//stop_glerror();
 
 		U32 data_mask = LLFace::getRiggedDataMask(type);
 
@@ -1524,17 +1510,15 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
 				data_mask &= ~LLVertexBuffer::MAP_WEIGHT4;
 			}
 
-			buff->setBuffer(data_mask);
-
 			U16 start = face->getGeomStart();
 			U16 end = start + face->getGeomCount()-1;
 			S32 offset = face->getIndicesStart();
 			U32 count = face->getIndicesCount();
 
-			if (glow)
+			/*if (glow)
 			{
-				glColor4f(0,0,0,face->getTextureEntry()->getGlow());
-			}
+				gGL.diffuseColor4f(0,0,0,face->getTextureEntry()->getGlow());
+			}*/
 
 			gGL.getTexUnit(sDiffuseChannel)->bind(face->getTexture());
 			if (normal_channel > -1)
@@ -1544,14 +1528,16 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
 
 			if (face->mTextureMatrix)
 			{
-				glMatrixMode(GL_TEXTURE);
-				glLoadMatrixf((F32*) face->mTextureMatrix->mMatrix);
+				gGL.matrixMode(LLRender::MM_TEXTURE);
+				gGL.loadMatrix((F32*) face->mTextureMatrix->mMatrix);
+				buff->setBuffer(data_mask);
 				buff->drawRange(LLRender::TRIANGLES, start, end, count, offset);
-				glLoadIdentity();
-				glMatrixMode(GL_MODELVIEW);
+				gGL.loadIdentity();
+				gGL.matrixMode(LLRender::MM_MODELVIEW);
 			}
 			else
 			{
+				buff->setBuffer(data_mask);
 				buff->drawRange(LLRender::TRIANGLES, start, end, count, offset);		
 			}
 		}
@@ -1560,6 +1546,7 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
 
 void LLDrawPoolAvatar::renderDeferredRiggedSimple(LLVOAvatar* avatar)
 {
+	updateRiggedVertexBuffers(avatar);
 	renderRigged(avatar, RIGGED_DEFERRED_SIMPLE);
 }
 
@@ -1568,8 +1555,58 @@ void LLDrawPoolAvatar::renderDeferredRiggedBump(LLVOAvatar* avatar)
 	renderRigged(avatar, RIGGED_DEFERRED_BUMP);
 }
 
+void LLDrawPoolAvatar::updateRiggedVertexBuffers(LLVOAvatar* avatar)
+{
+	//update rigged vertex buffers
+	for (U32 type = 0; type < NUM_RIGGED_PASSES; ++type)
+	{
+		for (U32 i = 0; i < mRiggedFace[type].size(); ++i)
+		{
+			LLFace* face = mRiggedFace[type][i];
+			LLDrawable* drawable = face->getDrawable();
+			if (!drawable)
+			{
+				continue;
+			}
+
+			LLVOVolume* vobj = drawable->getVOVolume();
+
+			if (!vobj)
+			{
+				continue;
+			}
+
+			LLVolume* volume = vobj->getVolume();
+			S32 te = face->getTEOffset();
+
+			if (!volume || volume->getNumVolumeFaces() <= te)
+			{
+				continue;
+			}
+
+			LLUUID mesh_id = volume->getParams().getSculptID();
+			if (mesh_id.isNull())
+			{
+				continue;
+			}
+
+			const LLMeshSkinInfo* skin = gMeshRepo.getSkinInfo(mesh_id, vobj);
+			if (!skin)
+			{
+				continue;
+			}
+
+			stop_glerror();
+
+			const LLVolumeFace& vol_face = volume->getVolumeFace(te);
+			updateRiggedFaceVertexBuffer(avatar, face, skin, volume, vol_face);
+		}
+	}
+}
+
 void LLDrawPoolAvatar::renderRiggedSimple(LLVOAvatar* avatar)
 {
+	updateRiggedVertexBuffers(avatar);
 	renderRigged(avatar, RIGGED_SIMPLE);
 }
 
@@ -1684,34 +1721,3 @@ LLVertexBufferAvatar::LLVertexBufferAvatar()
 }
 
 
-void LLVertexBufferAvatar::setupVertexBuffer(U32 data_mask) const
-{
-	if (sRenderingSkinned)
-	{
-		U8* base = useVBOs() ? (U8*) mAlignedOffset : mMappedData;
-
-		glVertexPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_VERTEX], (void*)(base + 0));
-		glNormalPointer(GL_FLOAT, LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_NORMAL], (void*)(base + mOffsets[TYPE_NORMAL]));
-		glTexCoordPointer(2,GL_FLOAT, LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_TEXCOORD0], (void*)(base + mOffsets[TYPE_TEXCOORD0]));
-		
-		set_vertex_weights(LLDrawPoolAvatar::sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_WEIGHT], 
-						LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_WEIGHT], (F32*)(base + mOffsets[TYPE_WEIGHT]));
-
-		if (sShaderLevel >= LLDrawPoolAvatar::SHADER_LEVEL_BUMP)
-		{
-			set_binormals(LLDrawPoolAvatar::sVertexProgram->mAttribute[LLViewerShaderMgr::BINORMAL],
-				LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_BINORMAL], (LLVector3*)(base + mOffsets[TYPE_BINORMAL]));
-		}
-	
-		if (sShaderLevel >= LLDrawPoolAvatar::SHADER_LEVEL_CLOTH)
-		{
-			set_vertex_clothing_weights(LLDrawPoolAvatar::sVertexProgram->mAttribute[LLViewerShaderMgr::AVATAR_CLOTHING], 
-				LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_CLOTHWEIGHT], (LLVector4*)(base + mOffsets[TYPE_CLOTHWEIGHT]));
-		}
-	}
-	else
-	{
-		LLVertexBuffer::setupVertexBuffer(data_mask);
-	}
-}
-
diff --git a/indra/newview/lldrawpoolavatar.h b/indra/newview/lldrawpoolavatar.h
index fcd8294af544e27d8b4a10150590ef7c3c49b5ce..69e306885893797c00e5b222c59d338d59a43739 100644
--- a/indra/newview/lldrawpoolavatar.h
+++ b/indra/newview/lldrawpoolavatar.h
@@ -134,6 +134,7 @@ class LLDrawPoolAvatar : public LLFacePool
 									  const LLMeshSkinInfo* skin, 
 									  LLVolume* volume,
 									  const LLVolumeFace& vol_face);
+	void updateRiggedVertexBuffers(LLVOAvatar* avatar);
 
 	void renderRigged(LLVOAvatar* avatar, U32 type, bool glow = false);
 	void renderRiggedSimple(LLVOAvatar* avatar);
@@ -176,6 +177,7 @@ class LLDrawPoolAvatar : public LLFacePool
 		RIGGED_FULLBRIGHT_SHINY_MASK = RIGGED_SIMPLE_MASK,							 
 		RIGGED_GLOW_MASK = LLVertexBuffer::MAP_VERTEX | 
 							 LLVertexBuffer::MAP_TEXCOORD0 |
+							 LLVertexBuffer::MAP_EMISSIVE |
 							 LLVertexBuffer::MAP_WEIGHT4,
 		RIGGED_ALPHA_MASK = RIGGED_SIMPLE_MASK,
 		RIGGED_FULLBRIGHT_ALPHA_MASK = RIGGED_FULLBRIGHT_MASK,
@@ -214,7 +216,6 @@ class LLVertexBufferAvatar : public LLVertexBuffer
 {
 public:
 	LLVertexBufferAvatar();
-	virtual void setupVertexBuffer(U32 data_mask) const;
 };
 
 extern S32 AVATAR_OFFSET_POS;
diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp
index 0742250b0b995b973cf0a5debad9eba4e139e9e4..b58efe62ab6dc4f2af0b4740391ebc73ca6cf5dd 100644
--- a/indra/newview/lldrawpoolbump.cpp
+++ b/indra/newview/lldrawpoolbump.cpp
@@ -763,7 +763,7 @@ void LLDrawPoolBump::renderBump(U32 pass)
 	LLGLDisable fog(GL_FOG);
 	LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE, GL_LEQUAL);
 	LLGLEnable blend(GL_BLEND);
-	glColor4f(1,1,1,1);
+	gGL.diffuseColor4f(1,1,1,1);
 	/// Get rid of z-fighting with non-bump pass.
 	LLGLEnable polyOffset(GL_POLYGON_OFFSET_FILL);
 	glPolygonOffset(-1.0f, -1.0f);
@@ -786,7 +786,7 @@ void LLDrawPoolBump::endBump(U32 pass)
 	{
 		// Disable texture blending on unit 1
 		gGL.getTexUnit(1)->activate();
-		//gGL.getTexUnit(1)->disable();
+		gGL.getTexUnit(1)->disable();
 		gGL.getTexUnit(1)->setTextureBlendType(LLTexUnit::TB_MULT);
 
 		// Disable texture blending on unit 0
@@ -1036,51 +1036,48 @@ LLViewerTexture* LLBumpImageList::getBrightnessDarknessImage(LLViewerFetchedText
 	llassert( (bump_code == BE_BRIGHTNESS) || (bump_code == BE_DARKNESS) );
 
 	LLViewerTexture* bump = NULL;
-	const F32 BRIGHTNESS_DARKNESS_PIXEL_AREA_THRESHOLD = 1000;
-	if( src_image->getMaxVirtualSize() > BRIGHTNESS_DARKNESS_PIXEL_AREA_THRESHOLD )
-	{
-		bump_image_map_t* entries_list = NULL;
-		void (*callback_func)( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata ) = NULL;
+	
+	bump_image_map_t* entries_list = NULL;
+	void (*callback_func)( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata ) = NULL;
 
-		switch( bump_code )
-		{
-		case BE_BRIGHTNESS:
-			entries_list = &mBrightnessEntries;
-			callback_func = LLBumpImageList::onSourceBrightnessLoaded;
-			break;
-		case BE_DARKNESS:
-			entries_list = &mDarknessEntries;
-			callback_func = LLBumpImageList::onSourceDarknessLoaded;
-			break;
-		default:
-			llassert(0);
-			return NULL;
-		}
+	switch( bump_code )
+	{
+	case BE_BRIGHTNESS:
+		entries_list = &mBrightnessEntries;
+		callback_func = LLBumpImageList::onSourceBrightnessLoaded;
+		break;
+	case BE_DARKNESS:
+		entries_list = &mDarknessEntries;
+		callback_func = LLBumpImageList::onSourceDarknessLoaded;
+		break;
+	default:
+		llassert(0);
+		return NULL;
+	}
 
-		bump_image_map_t::iterator iter = entries_list->find(src_image->getID());
-		if (iter != entries_list->end() && iter->second.notNull())
-		{
-			bump = iter->second;
-		}
-		else
-		{
-			LLPointer<LLImageRaw> raw = new LLImageRaw(1,1,1);
-			raw->clear(0x77, 0x77, 0xFF, 0xFF);
+	bump_image_map_t::iterator iter = entries_list->find(src_image->getID());
+	if (iter != entries_list->end() && iter->second.notNull())
+	{
+		bump = iter->second;
+	}
+	else
+	{
+		LLPointer<LLImageRaw> raw = new LLImageRaw(1,1,1);
+		raw->clear(0x77, 0x77, 0xFF, 0xFF);
 
-			(*entries_list)[src_image->getID()] = LLViewerTextureManager::getLocalTexture( raw.get(), TRUE);
-			bump = (*entries_list)[src_image->getID()]; // In case callback was called immediately and replaced the image
-		}
+		(*entries_list)[src_image->getID()] = LLViewerTextureManager::getLocalTexture( raw.get(), TRUE);
+		bump = (*entries_list)[src_image->getID()]; // In case callback was called immediately and replaced the image
+	}
 
-		if (!src_image->hasCallbacks())
-		{ //if image has no callbacks but resolutions don't match, trigger raw image loaded callback again
-			if (src_image->getWidth() != bump->getWidth() ||
-				src_image->getHeight() != bump->getHeight())// ||
-				//(LLPipeline::sRenderDeferred && bump->getComponents() != 4))
-			{
-				src_image->setBoostLevel(LLViewerTexture::BOOST_BUMP) ;
-				src_image->setLoadedCallback( callback_func, 0, TRUE, FALSE, new LLUUID(src_image->getID()), NULL );
-				src_image->forceToSaveRawImage(0) ;
-			}
+	if (!src_image->hasCallbacks())
+	{ //if image has no callbacks but resolutions don't match, trigger raw image loaded callback again
+		if (src_image->getWidth() != bump->getWidth() ||
+			src_image->getHeight() != bump->getHeight())// ||
+			//(LLPipeline::sRenderDeferred && bump->getComponents() != 4))
+		{
+			src_image->setBoostLevel(LLViewerTexture::BOOST_BUMP) ;
+			src_image->setLoadedCallback( callback_func, 0, TRUE, FALSE, new LLUUID(src_image->getID()), NULL );
+			src_image->forceToSaveRawImage(0) ;
 		}
 	}
 
@@ -1088,6 +1085,8 @@ LLViewerTexture* LLBumpImageList::getBrightnessDarknessImage(LLViewerFetchedText
 }
 
 
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_STANDARD_LOADED("Bump Standard Callback");
+
 // static
 void LLBumpImageList::onSourceBrightnessLoaded( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata )
 {
@@ -1110,14 +1109,24 @@ void LLBumpImageList::onSourceDarknessLoaded( BOOL success, LLViewerFetchedTextu
 	}
 }
 
+static LLFastTimer::DeclareTimer FTM_BUMP_GEN_NORMAL("Generate Normal Map");
+static LLFastTimer::DeclareTimer FTM_BUMP_CREATE_TEXTURE("Create GL Normal Map");
+
 void LLBumpImageList::onSourceStandardLoaded( BOOL success, LLViewerFetchedTexture* src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata)
 {
 	if (success && LLPipeline::sRenderDeferred)
 	{
+		LLFastTimer t(FTM_BUMP_SOURCE_STANDARD_LOADED);
 		LLPointer<LLImageRaw> nrm_image = new LLImageRaw(src->getWidth(), src->getHeight(), 4);
-		generateNormalMapFromAlpha(src, nrm_image);
+		{
+			LLFastTimer t(FTM_BUMP_GEN_NORMAL);
+			generateNormalMapFromAlpha(src, nrm_image);
+		}
 		src_vi->setExplicitFormat(GL_RGBA, GL_RGBA);
-		src_vi->createGLTexture(src_vi->getDiscardLevel(), nrm_image);
+		{
+			LLFastTimer t(FTM_BUMP_CREATE_TEXTURE);
+			src_vi->createGLTexture(src_vi->getDiscardLevel(), nrm_image);
+		}
 	}
 }
 
@@ -1176,24 +1185,39 @@ void LLBumpImageList::generateNormalMapFromAlpha(LLImageRaw* src, LLImageRaw* nr
 	}
 }
 
+
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_LOADED("Bump Source Loaded");
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_ENTRIES_UPDATE("Entries Update");
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_MIN_MAX("Min/Max");
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_RGB2LUM("RGB to Luminance");
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_RESCALE("Rescale");
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_GEN_NORMAL("Generate Normal");
+static LLFastTimer::DeclareTimer FTM_BUMP_SOURCE_CREATE("Create");
+
 // static
 void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLImageRaw* src, LLUUID& source_asset_id, EBumpEffect bump_code )
 {
 	if( success )
 	{
+		LLFastTimer t(FTM_BUMP_SOURCE_LOADED);
+
+
 		bump_image_map_t& entries_list(bump_code == BE_BRIGHTNESS ? gBumpImageList.mBrightnessEntries : gBumpImageList.mDarknessEntries );
 		bump_image_map_t::iterator iter = entries_list.find(source_asset_id);
 
-		if (iter == entries_list.end() ||
-			iter->second.isNull() ||
-                        iter->second->getWidth() != src->getWidth() ||
-                        iter->second->getHeight() != src->getHeight()) // bump not cached yet or has changed resolution
-		{ //make sure an entry exists for this image
-			LLPointer<LLImageRaw> raw = new LLImageRaw(1,1,1);
-			raw->clear(0x77, 0x77, 0xFF, 0xFF);
-
-			entries_list[src_vi->getID()] = LLViewerTextureManager::getLocalTexture( raw.get(), TRUE);
-			iter = entries_list.find(src_vi->getID());
+		{
+			LLFastTimer t(FTM_BUMP_SOURCE_ENTRIES_UPDATE);
+			if (iter == entries_list.end() ||
+				iter->second.isNull() ||
+							iter->second->getWidth() != src->getWidth() ||
+							iter->second->getHeight() != src->getHeight()) // bump not cached yet or has changed resolution
+			{ //make sure an entry exists for this image
+				LLPointer<LLImageRaw> raw = new LLImageRaw(1,1,1);
+				raw->clear(0x77, 0x77, 0xFF, 0xFF);
+
+				entries_list[src_vi->getID()] = LLViewerTextureManager::getLocalTexture( raw.get(), TRUE);
+				iter = entries_list.find(src_vi->getID());
+			}
 		}
 
 		//if (iter->second->getWidth() != src->getWidth() ||
@@ -1224,50 +1248,56 @@ void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLI
 			{
 			case 1:
 			case 2:
-				if( src_data_size == dst_data_size * src_components )
 				{
-					for( S32 i = 0, j=0; i < dst_data_size; i++, j+= src_components )
+					LLFastTimer t(FTM_BUMP_SOURCE_MIN_MAX);
+					if( src_data_size == dst_data_size * src_components )
 					{
-						dst_data[i] = src_data[j];
-						if( dst_data[i] < minimum )
-						{
-							minimum = dst_data[i];
-						}
-						if( dst_data[i] > maximum )
+						for( S32 i = 0, j=0; i < dst_data_size; i++, j+= src_components )
 						{
-							maximum = dst_data[i];
+							dst_data[i] = src_data[j];
+							if( dst_data[i] < minimum )
+							{
+								minimum = dst_data[i];
+							}
+							if( dst_data[i] > maximum )
+							{
+								maximum = dst_data[i];
+							}
 						}
 					}
-				}
-				else
-				{
-					llassert(0);
-					dst_image->clear();
+					else
+					{
+						llassert(0);
+						dst_image->clear();
+					}
 				}
 				break;
 			case 3:
 			case 4:
-				if( src_data_size == dst_data_size * src_components )
 				{
-					for( S32 i = 0, j=0; i < dst_data_size; i++, j+= src_components )
+					LLFastTimer t(FTM_BUMP_SOURCE_RGB2LUM);
+					if( src_data_size == dst_data_size * src_components )
 					{
-						// RGB to luminance
-						dst_data[i] = (R_WEIGHT * src_data[j] + G_WEIGHT * src_data[j+1] + B_WEIGHT * src_data[j+2]) >> FIXED_PT;
-						//llassert( dst_data[i] <= 255 );true because it's 8bit
-						if( dst_data[i] < minimum )
+						for( S32 i = 0, j=0; i < dst_data_size; i++, j+= src_components )
 						{
-							minimum = dst_data[i];
-						}
-						if( dst_data[i] > maximum )
-						{
-							maximum = dst_data[i];
+							// RGB to luminance
+							dst_data[i] = (R_WEIGHT * src_data[j] + G_WEIGHT * src_data[j+1] + B_WEIGHT * src_data[j+2]) >> FIXED_PT;
+							//llassert( dst_data[i] <= 255 );true because it's 8bit
+							if( dst_data[i] < minimum )
+							{
+								minimum = dst_data[i];
+							}
+							if( dst_data[i] > maximum )
+							{
+								maximum = dst_data[i];
+							}
 						}
 					}
-				}
-				else
-				{
-					llassert(0);
-					dst_image->clear();
+					else
+					{
+						llassert(0);
+						dst_image->clear();
+					}
 				}
 				break;
 			default:
@@ -1278,6 +1308,7 @@ void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLI
 
 			if( maximum > minimum )
 			{
+				LLFastTimer t(FTM_BUMP_SOURCE_RESCALE);
 				U8 bias_and_scale_lut[256];
 				F32 twice_one_over_range = 2.f / (maximum - minimum);
 				S32 i;
@@ -1311,17 +1342,99 @@ void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLI
 			// accidentally releases it.
 			LLPointer<LLViewerTexture> bump = LLViewerTextureManager::getLocalTexture( TRUE );
 			
+			
 			if (!LLPipeline::sRenderDeferred)
 			{
+				LLFastTimer t(FTM_BUMP_SOURCE_CREATE);
 				bump->setExplicitFormat(GL_ALPHA8, GL_ALPHA);
 				bump->createGLTexture(0, dst_image);
 			}
-			else
-			{
-				LLPointer<LLImageRaw> nrm_image = new LLImageRaw(dst_image->getWidth(), dst_image->getHeight(), 4);
-				generateNormalMapFromAlpha(dst_image, nrm_image);
-				bump->setExplicitFormat(GL_RGBA, GL_RGBA);
-				bump->createGLTexture(0, nrm_image);
+			else 
+			{ //convert to normal map
+				{
+					LLFastTimer t(FTM_BUMP_SOURCE_CREATE);
+					bump->setExplicitFormat(GL_RGBA8, GL_ALPHA);
+					bump->createGLTexture(0, dst_image);
+				}
+
+				{
+					LLFastTimer t(FTM_BUMP_SOURCE_GEN_NORMAL);
+					gPipeline.mScreen.bindTarget();
+					
+					LLGLDepthTest depth(GL_FALSE);
+					LLGLDisable cull(GL_CULL_FACE);
+					LLGLDisable blend(GL_BLEND);
+					gGL.setColorMask(TRUE, TRUE);
+					gNormalMapGenProgram.bind();
+					gNormalMapGenProgram.uniform1f("norm_scale", gSavedSettings.getF32("RenderNormalMapScale"));
+					gNormalMapGenProgram.uniform1f("stepX", 1.f/bump->getWidth());
+					gNormalMapGenProgram.uniform1f("stepY", 1.f/bump->getHeight());
+
+					LLVector2 v((F32) bump->getWidth()/gPipeline.mScreen.getWidth(),
+								(F32) bump->getHeight()/gPipeline.mScreen.getHeight());
+
+					gGL.getTexUnit(0)->bind(bump);
+					
+					S32 width = bump->getWidth();
+					S32 height = bump->getHeight();
+
+					S32 screen_width = gPipeline.mScreen.getWidth();
+					S32 screen_height = gPipeline.mScreen.getHeight();
+
+					glViewport(0, 0, screen_width, screen_height);
+
+					for (S32 left = 0; left < width; left += screen_width)
+					{
+						S32 right = left + screen_width;
+						right = llmin(right, width);
+						
+						F32 left_tc = (F32) left/ width;
+						F32 right_tc = (F32) right/width;
+
+						for (S32 bottom = 0; bottom < height; bottom += screen_height)
+						{
+							S32 top = bottom+screen_height;
+							top = llmin(top, height);
+
+							F32 bottom_tc = (F32) bottom/height;
+							F32 top_tc = (F32)(bottom+screen_height)/height;
+							top_tc = llmin(top_tc, 1.f);
+
+							F32 screen_right = (F32) (right-left)/screen_width;
+							F32 screen_top = (F32) (top-bottom)/screen_height;
+
+							gGL.begin(LLRender::TRIANGLE_STRIP);
+							gGL.texCoord2f(left_tc, bottom_tc);
+							gGL.vertex2f(0, 0);
+
+							gGL.texCoord2f(left_tc, top_tc);
+							gGL.vertex2f(0, screen_top);
+
+							gGL.texCoord2f(right_tc, bottom_tc);
+							gGL.vertex2f(screen_right, 0);
+
+							gGL.texCoord2f(right_tc, top_tc);
+							gGL.vertex2f(screen_right, screen_top);
+
+							gGL.end();
+
+							gGL.flush();
+
+							S32 w = right-left;
+							S32 h = top-bottom;
+
+							glCopyTexSubImage2D(GL_TEXTURE_2D, 0, left, bottom, 0, 0, w, h);
+						}
+					}
+
+					glGenerateMipmap(GL_TEXTURE_2D);
+
+					gPipeline.mScreen.flush();
+
+					gNormalMapGenProgram.unbind();
+										
+					//generateNormalMapFromAlpha(dst_image, nrm_image);
+				}
 			}
 		
 			iter->second = bump; // derefs (and deletes) old image
@@ -1369,18 +1482,24 @@ void LLDrawPoolBump::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL
 			if (mShiny)
 			{
 				gGL.getTexUnit(0)->activate();
-				glMatrixMode(GL_TEXTURE);
+				gGL.matrixMode(LLRender::MM_TEXTURE);
 			}
 			else
 			{
-				gGL.getTexUnit(1)->activate();
-				glMatrixMode(GL_TEXTURE);
-				glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix);
-				gPipeline.mTextureMatrixOps++;
+				if (!LLGLSLShader::sNoFixedFunction)
+				{
+					gGL.getTexUnit(1)->activate();
+					gGL.matrixMode(LLRender::MM_TEXTURE);
+					gGL.loadMatrix((GLfloat*) params.mTextureMatrix->mMatrix);
+				}
+
 				gGL.getTexUnit(0)->activate();
+				gGL.matrixMode(LLRender::MM_TEXTURE);
+				gGL.loadMatrix((GLfloat*) params.mTextureMatrix->mMatrix);
+				gPipeline.mTextureMatrixOps++;
 			}
 
-			glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix);
+			gGL.loadMatrix((GLfloat*) params.mTextureMatrix->mMatrix);
 			gPipeline.mTextureMatrixOps++;
 
 			tex_setup = true;
@@ -1390,7 +1509,7 @@ void LLDrawPoolBump::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL
 		{
 			if (params.mTexture.notNull())
 			{
-				gGL.getTexUnit(diffuse_channel)->bind(params.mTexture) ;
+				gGL.getTexUnit(diffuse_channel)->bind(params.mTexture);
 				params.mTexture->addTextureStats(params.mVSize);		
 			}
 			else
@@ -1415,12 +1534,17 @@ void LLDrawPoolBump::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL
 		}
 		else
 		{
-			gGL.getTexUnit(1)->activate();
-			glLoadIdentity();
+			if (!LLGLSLShader::sNoFixedFunction)
+			{
+				gGL.getTexUnit(1)->activate();
+				gGL.matrixMode(LLRender::MM_TEXTURE);
+				gGL.loadIdentity();
+			}
 			gGL.getTexUnit(0)->activate();
+			gGL.matrixMode(LLRender::MM_TEXTURE);
 		}
-		glLoadIdentity();
-		glMatrixMode(GL_MODELVIEW);
+		gGL.loadIdentity();
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 	}
 }
 
@@ -1465,6 +1589,7 @@ void LLDrawPoolInvisible::endDeferredPass( S32 pass )
 
 void LLDrawPoolInvisible::renderDeferred( S32 pass )
 { //render invisiprims; this doesn't work becaue it also blocks all the post-deferred stuff
+#if 0 
 	LLFastTimer t(FTM_RENDER_INVISIBLE);
   
 	U32 invisi_mask = LLVertexBuffer::MAP_VERTEX;
@@ -1482,4 +1607,5 @@ void LLDrawPoolInvisible::renderDeferred( S32 pass )
 		renderShiny(true);
 		endShiny(true);
 	}
+#endif
 }
diff --git a/indra/newview/lldrawpoolground.cpp b/indra/newview/lldrawpoolground.cpp
index ce07e62122de7d44ed340cd50344c9c485b84c09..59c3fbf7a125bf6ab727770e59ffc606d4bfeedc 100644
--- a/indra/newview/lldrawpoolground.cpp
+++ b/indra/newview/lldrawpoolground.cpp
@@ -71,9 +71,9 @@ void LLDrawPoolGround::render(S32 pass)
 	LLGLSquashToFarClip far_clip(glh_get_current_projection());
 
 	F32 water_height = gAgent.getRegion()->getWaterHeight();
-	glPushMatrix();
+	gGL.pushMatrix();
 	LLVector3 origin = LLViewerCamera::getInstance()->getOrigin();
-	glTranslatef(origin.mV[0], origin.mV[1], llmax(origin.mV[2], water_height));
+	gGL.translatef(origin.mV[0], origin.mV[1], llmax(origin.mV[2], water_height));
 
 	LLFace *facep = mDrawFace[0];
 
@@ -82,6 +82,6 @@ void LLDrawPoolGround::render(S32 pass)
 	LLOverrideFaceColor col(this, gSky.mVOSkyp->getGLFogColor());
 	facep->renderIndexed();
 	
-	glPopMatrix();
+	gGL.popMatrix();
 }
 
diff --git a/indra/newview/lldrawpoolsimple.cpp b/indra/newview/lldrawpoolsimple.cpp
index eec4ee6bac99c75456d0c951b7914003f62096e7..6e0ea78af2b2d326dbb639a943852d51cf688ec9 100644
--- a/indra/newview/lldrawpoolsimple.cpp
+++ b/indra/newview/lldrawpoolsimple.cpp
@@ -46,7 +46,7 @@ static LLFastTimer::DeclareTimer FTM_RENDER_GRASS_DEFERRED("Deferred Grass");
 
 void LLDrawPoolGlow::beginPostDeferredPass(S32 pass)
 {
-	gDeferredFullbrightProgram.bind();
+	gDeferredEmissiveProgram.bind();
 }
 
 static LLFastTimer::DeclareTimer FTM_RENDER_GLOW_PUSH("Glow Push");
@@ -76,10 +76,22 @@ void LLDrawPoolGlow::renderPostDeferred(S32 pass)
 
 void LLDrawPoolGlow::endPostDeferredPass(S32 pass)
 {
-	gDeferredFullbrightProgram.unbind();
+	gDeferredEmissiveProgram.unbind();
 	LLRenderPass::endRenderPass(pass);
 }
 
+S32 LLDrawPoolGlow::getNumPasses()
+{
+	if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 0)
+	{
+		return 1;
+	}
+	else
+	{
+		return 0;
+	}
+}
+
 void LLDrawPoolGlow::render(S32 pass)
 {
 	LLFastTimer t(FTM_RENDER_GLOW);
@@ -93,39 +105,29 @@ void LLDrawPoolGlow::render(S32 pass)
 	
 	U32 shader_level = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_OBJECT);
 
-	if (shader_level > 0 && fullbright_shader)
-	{
-		fullbright_shader->bind();
-	}
-	else
-	{
-		gPipeline.enableLightsFullbright(LLColor4(1,1,1,1));
-	}
+	//should never get here without basic shaders enabled
+	llassert(shader_level > 0);
+	
+	LLGLSLShader* shader = LLPipeline::sUnderWaterRender ? &gObjectEmissiveWaterProgram : &gObjectEmissiveProgram;
+	shader->bind();
 
 	LLGLDepthTest depth(GL_TRUE, GL_FALSE);
 	gGL.setColorMask(false, true);
 
-	if (shader_level > 1)
-	{
-		pushBatches(LLRenderPass::PASS_GLOW, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE);
-	}
-	else
-	{
-		renderTexture(LLRenderPass::PASS_GLOW, getVertexDataMask());
-	}
+	pushBatches(LLRenderPass::PASS_GLOW, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE);
 	
 	gGL.setColorMask(true, false);
 	gGL.setSceneBlendType(LLRender::BT_ALPHA);
 	
 	if (shader_level > 0 && fullbright_shader)
 	{
-		fullbright_shader->unbind();
+		shader->unbind();
 	}
 }
 
 void LLDrawPoolGlow::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture, BOOL batch_textures)
 {
-	glColor4ubv(params.mGlowColor.mV);
+	//gGL.diffuseColor4ubv(params.mGlowColor.mV);
 	LLRenderPass::pushBatch(params, mask, texture, batch_textures);
 }
 
@@ -253,6 +255,7 @@ void LLDrawPoolGrass::prerender()
 void LLDrawPoolGrass::beginRenderPass(S32 pass)
 {
 	LLFastTimer t(FTM_RENDER_GRASS);
+	stop_glerror();
 
 	if (LLPipeline::sUnderWaterRender)
 	{
@@ -266,7 +269,7 @@ void LLDrawPoolGrass::beginRenderPass(S32 pass)
 	if (mVertexShaderLevel > 0)
 	{
 		simple_shader->bind();
-		simple_shader->setAlphaRange(0.5f, 1.f);
+		simple_shader->setMinimumAlpha(0.5f);
 	}
 	else 
 	{
@@ -322,7 +325,7 @@ void LLDrawPoolGrass::renderDeferred(S32 pass)
 	{
 		LLFastTimer t(FTM_RENDER_GRASS_DEFERRED);
 		gDeferredNonIndexedDiffuseAlphaMaskProgram.bind();
-		gDeferredNonIndexedDiffuseAlphaMaskProgram.setAlphaRange(0.5f, 1.f);
+		gDeferredNonIndexedDiffuseAlphaMaskProgram.setMinimumAlpha(0.5f);
 		//render grass
 		LLRenderPass::renderTexture(LLRenderPass::PASS_GRASS, getVertexDataMask());
 	}			
diff --git a/indra/newview/lldrawpoolsimple.h b/indra/newview/lldrawpoolsimple.h
index 3811b3d398f872193cb6861e63c053f6f926e263..bd62bc75025fc7179ea257df5760c32b8ed1cf05 100644
--- a/indra/newview/lldrawpoolsimple.h
+++ b/indra/newview/lldrawpoolsimple.h
@@ -118,7 +118,8 @@ class LLDrawPoolGlow : public LLRenderPass
 	enum
 	{
 		VERTEX_DATA_MASK =	LLVertexBuffer::MAP_VERTEX |
-							LLVertexBuffer::MAP_TEXCOORD0
+							LLVertexBuffer::MAP_TEXCOORD0 |
+							LLVertexBuffer::MAP_EMISSIVE
 	};
 
 	virtual U32 getVertexDataMask() { return VERTEX_DATA_MASK; }
@@ -130,6 +131,8 @@ class LLDrawPoolGlow : public LLRenderPass
 	/*virtual*/ void endPostDeferredPass(S32 pass);
 	/*virtual*/ void renderPostDeferred(S32 pass);
 
+	/*virtual*/ S32 getNumPasses();
+
 	void render(S32 pass = 0);
 	void pushBatch(LLDrawInfo& params, U32 mask, BOOL texture = TRUE, BOOL batch_textures = FALSE);
 
diff --git a/indra/newview/lldrawpoolsky.cpp b/indra/newview/lldrawpoolsky.cpp
index efffb2df9e705ab96682a8c6c7c8ea3f8abe4288..7f7d9f65c60c048a26d02438e278dd21893f190f 100644
--- a/indra/newview/lldrawpoolsky.cpp
+++ b/indra/newview/lldrawpoolsky.cpp
@@ -76,15 +76,16 @@ void LLDrawPoolSky::render(S32 pass)
 		return;
 	}
 	
-	// use a shader only underwater
+	// don't render sky under water (background just gets cleared to fog color)
 	if(mVertexShaderLevel > 0 && LLPipeline::sUnderWaterRender)
 	{
-		mShader = &gObjectFullbrightWaterProgram;
-		mShader->bind();
+		return;
 	}
-	else if (LLGLSLShader::sNoFixedFunction)
+
+
+	if (LLGLSLShader::sNoFixedFunction)
 	{ //just use the UI shader (generic single texture no lighting)
-		gUIProgram.bind();
+		gOneTextureNoColorProgram.bind();
 	}
 	else
 	{
@@ -111,21 +112,21 @@ void LLDrawPoolSky::render(S32 pass)
 	
 	LLGLDisable clip(GL_CLIP_PLANE0);
 
-	glPushMatrix();
+	gGL.pushMatrix();
 	LLVector3 origin = LLViewerCamera::getInstance()->getOrigin();
-	glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]);
+	gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]);
 
 	S32 face_count = (S32)mDrawFace.size();
 
 	LLVertexBuffer::unbind();
-	glColor4f(1,1,1,1);
+	gGL.diffuseColor4f(1,1,1,1);
 
 	for (S32 i = 0; i < llmin(6, face_count); ++i)
 	{
 		renderSkyCubeFace(i);
 	}
 
-	glPopMatrix();
+	gGL.popMatrix();
 }
 
 void LLDrawPoolSky::renderSkyCubeFace(U8 side)
@@ -146,7 +147,7 @@ void LLDrawPoolSky::renderSkyCubeFace(U8 side)
 		
 		LLGLEnable blend(GL_BLEND);
 		mSkyTex[side].bindTexture(FALSE);
-		glColor4f(1, 1, 1, LLSkyTex::getInterpVal()); // lighting is disabled
+		gGL.diffuseColor4f(1, 1, 1, LLSkyTex::getInterpVal()); // lighting is disabled
 		face.renderIndexed();
 	}
 }
diff --git a/indra/newview/lldrawpoolterrain.cpp b/indra/newview/lldrawpoolterrain.cpp
index 3daa0f8261f808ad247960da29ce766f83a3f5d2..b95d8296fa0b3057fb3edc37e99074deb8ead479 100644
--- a/indra/newview/lldrawpoolterrain.cpp
+++ b/indra/newview/lldrawpoolterrain.cpp
@@ -62,13 +62,16 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
 	LLFacePool(POOL_TERRAIN),
 	mTexturep(texturep)
 {
+	U32 format = GL_ALPHA8;
+	U32 int_format = GL_ALPHA;
+
 	// Hack!
 	sDetailScale = 1.f/gSavedSettings.getF32("RenderTerrainScale");
 	sDetailMode = gSavedSettings.getS32("RenderTerrainDetail");
 	mAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient.tga", 
 													TRUE, LLViewerTexture::BOOST_UI, 
 													LLViewerTexture::FETCHED_TEXTURE,
-													GL_ALPHA8, GL_ALPHA,
+													format, int_format,
 													LLUUID("e97cf410-8e61-7005-ec06-629eba4cd1fb"));
 
 	//gGL.getTexUnit(0)->bind(mAlphaRampImagep.get());
@@ -77,7 +80,7 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerTexture *texturep) :
 	m2DAlphaRampImagep = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient_2d.j2c", 
 													TRUE, LLViewerTexture::BOOST_UI, 
 													LLViewerTexture::FETCHED_TEXTURE,
-													GL_ALPHA8, GL_ALPHA,
+													format, int_format,
 													LLUUID("38b86f85-2575-52a9-a531-23108d8da837"));
 
 	//gGL.getTexUnit(0)->bind(m2DAlphaRampImagep.get());
@@ -106,6 +109,10 @@ U32 LLDrawPoolTerrain::getVertexDataMask()
 	{
 		return LLVertexBuffer::MAP_VERTEX;
 	}
+	else if (LLGLSLShader::sCurBoundShaderPtr)
+	{
+		return VERTEX_DATA_MASK & ~(LLVertexBuffer::MAP_TEXCOORD2 | LLVertexBuffer::MAP_TEXCOORD3);
+	}
 	else
 	{
 		return VERTEX_DATA_MASK; 
@@ -115,14 +122,7 @@ U32 LLDrawPoolTerrain::getVertexDataMask()
 void LLDrawPoolTerrain::prerender()
 {
 	mVertexShaderLevel = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_ENVIRONMENT);
-	if (mVertexShaderLevel > 0)
-	{
-		sDetailMode = 1;
-	}
-	else
-	{
-		sDetailMode = gSavedSettings.getS32("RenderTerrainDetail");
-	}
+	sDetailMode = gSavedSettings.getS32("RenderTerrainDetail");
 }
 
 void LLDrawPoolTerrain::beginRenderPass( S32 pass )
@@ -132,7 +132,7 @@ void LLDrawPoolTerrain::beginRenderPass( S32 pass )
 
 	sShader = LLPipeline::sUnderWaterRender ? 
 					&gTerrainWaterProgram :
-					&gTerrainProgram;
+					&gTerrainProgram;	
 
 	if (mVertexShaderLevel > 1 && sShader->mShaderLevel > 0)
 	{
@@ -174,6 +174,8 @@ void LLDrawPoolTerrain::render(S32 pass)
 		compp->mDetailTextures[i]->addTextureStats(1024.f*1024.f); // assume large pixel area
 	}
 
+	LLOverrideFaceColor override(this, 1.f, 1.f, 1.f, 1.f);
+
 	if (!gGLManager.mHasMultitexture)
 	{
 		// No multitexture, render simple land.
@@ -188,22 +190,27 @@ void LLDrawPoolTerrain::render(S32 pass)
 	}
 
 	LLGLSPipeline gls;
-	LLOverrideFaceColor override(this, 1.f, 1.f, 1.f, 1.f);
-
+	
 	if (mVertexShaderLevel > 1 && sShader->mShaderLevel > 0)
 	{
 		gPipeline.enableLightsDynamic();
+
 		renderFullShader();
 	}
 	else
 	{
 		gPipeline.enableLightsStatic();
 
-		if (sDetailMode == 0){
+		if (sDetailMode == 0)
+		{
 			renderSimple();
-		} else if (gGLManager.mNumTextureUnits < 4){
+		} 
+		else if (gGLManager.mNumTextureUnits < 4)
+		{
 			renderFull2TU();
-		} else {
+		} 
+		else 
+		{
 			renderFull4TU();
 		}
 	}
@@ -215,8 +222,9 @@ void LLDrawPoolTerrain::render(S32 pass)
 		{ //use fullbright shader for highlighting
 			LLGLSLShader* old_shader = sShader;
 			sShader->unbind();
-			sShader = &gObjectFullbrightNonIndexedProgram;
+			sShader = &gHighlightProgram;
 			sShader->bind();
+			gGL.diffuseColor4f(1,1,1,1);
 			LLGLEnable polyOffset(GL_POLYGON_OFFSET_FILL);
 			glPolygonOffset(-1.0f, -1.0f);
 			renderOwnership();
@@ -312,16 +320,15 @@ void LLDrawPoolTerrain::renderFullShader()
 	gGL.getTexUnit(detail0)->bind(detail_texture0p);
 	gGL.getTexUnit(0)->activate();
 
-	glEnable(GL_TEXTURE_GEN_S);
-	glEnable(GL_TEXTURE_GEN_T);
-	glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
-	glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
+	LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+	llassert(shader);
+		
+	shader->uniform4fv("object_plane_s", 1, tp0.mV);
+	shader->uniform4fv("object_plane_t", 1, tp1.mV);
 
-	glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
-	glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 	//
 	// detail texture 1
@@ -331,9 +338,9 @@ void LLDrawPoolTerrain::renderFullShader()
 	
 	/// ALPHA TEXTURE COORDS 0:
 	gGL.getTexUnit(1)->activate();
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	
 	// detail texture 2
 	//
@@ -343,10 +350,10 @@ void LLDrawPoolTerrain::renderFullShader()
 	gGL.getTexUnit(2)->activate();
 	
 	/// ALPHA TEXTURE COORDS 1:
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glTranslatef(-2.f, 0.f, 0.f);
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.translatef(-2.f, 0.f, 0.f);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 	//
 	// detail texture 3
@@ -356,10 +363,10 @@ void LLDrawPoolTerrain::renderFullShader()
 	
 	/// ALPHA TEXTURE COORDS 2:
 	gGL.getTexUnit(3)->activate();
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glTranslatef(-1.f, 0.f, 0.f);
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.translatef(-1.f, 0.f, 0.f);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 	//
 	// Alpha Ramp 
@@ -380,38 +387,30 @@ void LLDrawPoolTerrain::renderFullShader()
 	gGL.getTexUnit(alpha_ramp)->unbind(LLTexUnit::TT_TEXTURE);
 	gGL.getTexUnit(4)->disable();
 	gGL.getTexUnit(4)->activate();
-	glDisable(GL_TEXTURE_GEN_S);
-	glDisable(GL_TEXTURE_GEN_T);
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
-
+	
 	gGL.getTexUnit(detail3)->unbind(LLTexUnit::TT_TEXTURE);
 	gGL.getTexUnit(3)->disable();
 	gGL.getTexUnit(3)->activate();
-	glDisable(GL_TEXTURE_GEN_S);
-	glDisable(GL_TEXTURE_GEN_T);
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
+	
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 	gGL.getTexUnit(detail2)->unbind(LLTexUnit::TT_TEXTURE);
 	gGL.getTexUnit(2)->disable();
 	gGL.getTexUnit(2)->activate();
-	glDisable(GL_TEXTURE_GEN_S);
-	glDisable(GL_TEXTURE_GEN_T);
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
+	
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 	gGL.getTexUnit(detail1)->unbind(LLTexUnit::TT_TEXTURE);
 	gGL.getTexUnit(1)->disable();
 	gGL.getTexUnit(1)->activate();
-	glDisable(GL_TEXTURE_GEN_S);
-	glDisable(GL_TEXTURE_GEN_T);
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
+	
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	
 	//----------------------------------------------------------------------------
 	// Restore Texture Unit 0 defaults
@@ -419,11 +418,9 @@ void LLDrawPoolTerrain::renderFullShader()
 	gGL.getTexUnit(detail0)->unbind(LLTexUnit::TT_TEXTURE);
 	gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE);
 	gGL.getTexUnit(0)->activate();
-	glDisable(GL_TEXTURE_GEN_S);
-	glDisable(GL_TEXTURE_GEN_T);
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 }
 
 void LLDrawPoolTerrain::renderFull4TU()
@@ -534,9 +531,9 @@ void LLDrawPoolTerrain::renderFull4TU()
 	gGL.getTexUnit(1)->activate();
 
 	// Set the texture matrix
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glTranslatef(-2.f, 0.f, 0.f);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.translatef(-2.f, 0.f, 0.f);
 
 	// Care about alpha only
 	gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
@@ -566,9 +563,9 @@ void LLDrawPoolTerrain::renderFull4TU()
 	gGL.getTexUnit(3)->activate();
 
 	// Set the texture matrix
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glTranslatef(-1.f, 0.f, 0.f);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.translatef(-1.f, 0.f, 0.f);
   
 	// Set alpha texture and do lighting modulation
 	gGL.getTexUnit(3)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_PREV_COLOR, LLTexUnit::TBS_VERT_COLOR);
@@ -586,9 +583,9 @@ void LLDrawPoolTerrain::renderFull4TU()
 	gGL.getTexUnit(3)->disable();
 	gGL.getTexUnit(3)->activate();
 	
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 	gGL.getTexUnit(2)->unbind(LLTexUnit::TT_TEXTURE);
 	gGL.getTexUnit(2)->disable();
@@ -596,17 +593,17 @@ void LLDrawPoolTerrain::renderFull4TU()
 	
 	glDisable(GL_TEXTURE_GEN_S);
 	glDisable(GL_TEXTURE_GEN_T);
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 	gGL.getTexUnit(1)->unbind(LLTexUnit::TT_TEXTURE);	
 	gGL.getTexUnit(1)->disable();
 	gGL.getTexUnit(1)->activate();
  	
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 	// Restore blend state
 	gGL.setSceneBlendType(LLRender::BT_ALPHA);
@@ -620,9 +617,9 @@ void LLDrawPoolTerrain::renderFull4TU()
 	
 	glDisable(GL_TEXTURE_GEN_S);
 	glDisable(GL_TEXTURE_GEN_T);
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 	gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
 }
@@ -714,9 +711,9 @@ void LLDrawPoolTerrain::renderFull2TU()
 	gGL.getTexUnit(0)->bind(m2DAlphaRampImagep);
 
 	// Set the texture matrix
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glTranslatef(-1.f, 0.f, 0.f);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.translatef(-1.f, 0.f, 0.f);
 
 	// Care about alpha only
 	gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
@@ -753,9 +750,9 @@ void LLDrawPoolTerrain::renderFull2TU()
 	gGL.getTexUnit(0)->activate();
 	gGL.getTexUnit(0)->bind(m2DAlphaRampImagep);
 	// Set the texture matrix
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glTranslatef(-2.f, 0.f, 0.f);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.translatef(-2.f, 0.f, 0.f);
 
 	// Care about alpha only
 	gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
@@ -793,9 +790,9 @@ void LLDrawPoolTerrain::renderFull2TU()
 
 	glDisable(GL_TEXTURE_GEN_S);
 	glDisable(GL_TEXTURE_GEN_T);
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 	//----------------------------------------------------------------------------
 	// Restore Texture Unit 0 defaults
@@ -805,9 +802,9 @@ void LLDrawPoolTerrain::renderFull2TU()
 
 	glDisable(GL_TEXTURE_GEN_S);
 	glDisable(GL_TEXTURE_GEN_T);
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
 }
 
@@ -831,13 +828,21 @@ void LLDrawPoolTerrain::renderSimple()
 	tp0.setVec(tscale, 0.f, 0.0f, -1.f*(origin_agent.mV[0]/256.f));
 	tp1.setVec(0.f, tscale, 0.0f, -1.f*(origin_agent.mV[1]/256.f));
 	
-	glEnable(GL_TEXTURE_GEN_S);
-	glEnable(GL_TEXTURE_GEN_T);
-	glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
-	glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
-	glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
-	glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
-	
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		sShader->uniform4fv("object_plane_s", 1, tp0.mV);
+		sShader->uniform4fv("object_plane_t", 1, tp1.mV);
+	}
+	else
+	{
+		glEnable(GL_TEXTURE_GEN_S);
+		glEnable(GL_TEXTURE_GEN_T);
+		glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
+		glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
+		glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
+		glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
+	}
+
 	gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_VERT_COLOR);
 
 	drawLoop();
@@ -847,11 +852,14 @@ void LLDrawPoolTerrain::renderSimple()
 	
 	gGL.getTexUnit(0)->activate();
 	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-	glDisable(GL_TEXTURE_GEN_S);
-	glDisable(GL_TEXTURE_GEN_T);
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
+	if (!LLGLSLShader::sNoFixedFunction)
+	{
+		glDisable(GL_TEXTURE_GEN_S);
+		glDisable(GL_TEXTURE_GEN_T);
+	}
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
 }
 
@@ -882,11 +890,11 @@ void LLDrawPoolTerrain::renderOwnership()
 	// texture coordinates for pixel 256x256 is not 1,1. This makes the
 	// ownership map not line up with the selection. We address this with
 	// a texture matrix multiply.
-	glMatrixMode(GL_TEXTURE);
-	glPushMatrix();
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.pushMatrix();
 
 	const F32 TEXTURE_FUDGE = 257.f / 256.f;
-	glScalef( TEXTURE_FUDGE, TEXTURE_FUDGE, 1.f );
+	gGL.scalef( TEXTURE_FUDGE, TEXTURE_FUDGE, 1.f );
 	for (std::vector<LLFace*>::iterator iter = mDrawFace.begin();
 		 iter != mDrawFace.end(); iter++)
 	{
@@ -895,9 +903,9 @@ void LLDrawPoolTerrain::renderOwnership()
 							LLVertexBuffer::MAP_TEXCOORD0);
 	}
 
-	glMatrixMode(GL_TEXTURE);
-	glPopMatrix();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.popMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 }
 
 
diff --git a/indra/newview/lldrawpoolterrain.h b/indra/newview/lldrawpoolterrain.h
index 3056da44d574bdbe08a5a920733a53286d1aadfd..283ed87f1ad6b2785d1f424cae442c0546f19d8d 100644
--- a/indra/newview/lldrawpoolterrain.h
+++ b/indra/newview/lldrawpoolterrain.h
@@ -40,8 +40,7 @@ class LLDrawPoolTerrain : public LLFacePool
 							LLVertexBuffer::MAP_TEXCOORD0 |
 							LLVertexBuffer::MAP_TEXCOORD1 |
 							LLVertexBuffer::MAP_TEXCOORD2 |
-							LLVertexBuffer::MAP_TEXCOORD3 |
-							LLVertexBuffer::MAP_COLOR
+							LLVertexBuffer::MAP_TEXCOORD3
 	};
 
 	virtual U32 getVertexDataMask();
diff --git a/indra/newview/lldrawpooltree.cpp b/indra/newview/lldrawpooltree.cpp
index a6e01511147ad195682099d091ddd481cdd6cd46..3165a3516c004669d7cc3b946266b33a604faeee 100644
--- a/indra/newview/lldrawpooltree.cpp
+++ b/indra/newview/lldrawpooltree.cpp
@@ -65,17 +65,18 @@ void LLDrawPoolTree::beginRenderPass(S32 pass)
 		
 	if (LLPipeline::sUnderWaterRender)
 	{
-		shader = &gObjectAlphaMaskNonIndexedWaterProgram;
+		shader = &gTreeWaterProgram;
 	}
 	else
 	{
-		shader = &gObjectAlphaMaskNonIndexedProgram;
+		shader = &gTreeProgram;
 	}
 
 	if (gPipeline.canUseVertexShaders())
 	{
 		shader->bind();
-		shader->setAlphaRange(0.5f, 1.f);
+		shader->setMinimumAlpha(0.5f);
+		gGL.diffuseColor4f(1,1,1,1);
 	}
 	else
 	{
@@ -96,25 +97,18 @@ void LLDrawPoolTree::render(S32 pass)
 	LLGLState test(GL_ALPHA_TEST, LLGLSLShader::sNoFixedFunction ? 0 : 1);
 	LLOverrideFaceColor color(this, 1.f, 1.f, 1.f, 1.f);
 
-	if (gSavedSettings.getBOOL("RenderAnimateTrees"))
-	{
-		renderTree();
-	}
-	else
+	gGL.getTexUnit(sDiffTex)->bind(mTexturep);
+				
+	for (std::vector<LLFace*>::iterator iter = mDrawFace.begin();
+		 iter != mDrawFace.end(); iter++)
 	{
-		gGL.getTexUnit(sDiffTex)->bind(mTexturep);
-					
-		for (std::vector<LLFace*>::iterator iter = mDrawFace.begin();
-			 iter != mDrawFace.end(); iter++)
+		LLFace *face = *iter;
+		LLVertexBuffer* buff = face->getVertexBuffer();
+		if(buff)
 		{
-			LLFace *face = *iter;
-			LLVertexBuffer* buff = face->getVertexBuffer();
-			if(buff)
-			{
-				buff->setBuffer(LLDrawPoolTree::VERTEX_DATA_MASK);
-				buff->drawRange(LLRender::TRIANGLES, 0, buff->getRequestedVerts()-1, buff->getRequestedIndices(), 0); 
-				gPipeline.addTrianglesDrawn(buff->getRequestedIndices());
-			}
+			buff->setBuffer(LLDrawPoolTree::VERTEX_DATA_MASK);
+			buff->drawRange(LLRender::TRIANGLES, 0, buff->getNumVerts()-1, buff->getNumIndices(), 0); 
+			gPipeline.addTrianglesDrawn(buff->getNumIndices());
 		}
 	}
 }
@@ -141,9 +135,9 @@ void LLDrawPoolTree::beginDeferredPass(S32 pass)
 {
 	LLFastTimer t(FTM_RENDER_TREES);
 		
-	shader = &gDeferredNonIndexedDiffuseAlphaMaskProgram;
+	shader = &gDeferredTreeProgram;
 	shader->bind();
-	shader->setAlphaRange(0.5f, 1.f);
+	shader->setMinimumAlpha(0.5f);
 }
 
 void LLDrawPoolTree::renderDeferred(S32 pass)
@@ -168,8 +162,8 @@ void LLDrawPoolTree::beginShadowPass(S32 pass)
 	glPolygonOffset(gSavedSettings.getF32("RenderDeferredTreeShadowOffset"),
 					gSavedSettings.getF32("RenderDeferredTreeShadowBias"));
 
-	gDeferredShadowAlphaMaskProgram.bind();
-	gDeferredShadowAlphaMaskProgram.setAlphaRange(0.5f, 1.f);
+	gDeferredTreeShadowProgram.bind();
+	gDeferredTreeShadowProgram.setMinimumAlpha(0.5f);
 }
 
 void LLDrawPoolTree::renderShadow(S32 pass)
@@ -183,133 +177,7 @@ void LLDrawPoolTree::endShadowPass(S32 pass)
 	
 	glPolygonOffset(gSavedSettings.getF32("RenderDeferredSpotShadowOffset"),
 						gSavedSettings.getF32("RenderDeferredSpotShadowBias"));
-}
-
-
-void LLDrawPoolTree::renderTree(BOOL selecting)
-{
-	LLGLState normalize(GL_NORMALIZE, TRUE);
-	
-	// Bind the texture for this tree.
-	gGL.getTexUnit(sDiffTex)->bind(mTexturep.get(), TRUE);
-		
-	U32 indices_drawn = 0;
-
-	glMatrixMode(GL_MODELVIEW);
-	
-	for (std::vector<LLFace*>::iterator iter = mDrawFace.begin();
-		 iter != mDrawFace.end(); iter++)
-	{
-		LLFace *face = *iter;
-		LLDrawable *drawablep = face->getDrawable();
-
-		if (drawablep->isDead() || !face->getVertexBuffer())
-		{
-			continue;
-		}
-
-		face->getVertexBuffer()->setBuffer(LLDrawPoolTree::VERTEX_DATA_MASK);
-		U16* indicesp = (U16*) face->getVertexBuffer()->getIndicesPointer();
-
-		// Render each of the trees
-		LLVOTree *treep = (LLVOTree *)drawablep->getVObj().get();
-
-		LLColor4U color(255,255,255,255);
-
-		if (!selecting || treep->mGLName != 0)
-		{
-			if (selecting)
-			{
-				S32 name = treep->mGLName;
-				
-				color = LLColor4U((U8)(name >> 16), (U8)(name >> 8), (U8)name, 255);
-			}
-			
-			gGLLastMatrix = NULL;
-			glLoadMatrixd(gGLModelView);
-			//glPushMatrix();
-			F32 mat[16];
-			for (U32 i = 0; i < 16; i++)
-				mat[i] = (F32) gGLModelView[i];
-
-			LLMatrix4 matrix(mat);
-			
-			// Translate to tree base  HACK - adjustment in Z plants tree underground
-			const LLVector3 &pos_agent = treep->getPositionAgent();
-			//glTranslatef(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ] - 0.1f);
-			LLMatrix4 trans_mat;
-			trans_mat.setTranslation(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ] - 0.1f);
-			trans_mat *= matrix;
-			
-			// Rotate to tree position and bend for current trunk/wind
-			// Note that trunk stiffness controls the amount of bend at the trunk as 
-			// opposed to the crown of the tree
-			// 
-			const F32 TRUNK_STIFF = 22.f;
-			
-			LLQuaternion rot = 
-				LLQuaternion(treep->mTrunkBend.magVec()*TRUNK_STIFF*DEG_TO_RAD, LLVector4(treep->mTrunkBend.mV[VX], treep->mTrunkBend.mV[VY], 0)) *
-				LLQuaternion(90.f*DEG_TO_RAD, LLVector4(0,0,1)) *
-				treep->getRotation();
-
-			LLMatrix4 rot_mat(rot);
-			rot_mat *= trans_mat;
-
-			F32 radius = treep->getScale().magVec()*0.05f;
-			LLMatrix4 scale_mat;
-			scale_mat.mMatrix[0][0] = 
-				scale_mat.mMatrix[1][1] =
-				scale_mat.mMatrix[2][2] = radius;
-
-			scale_mat *= rot_mat;
-
-			const F32 THRESH_ANGLE_FOR_BILLBOARD = 15.f;
-			const F32 BLEND_RANGE_FOR_BILLBOARD = 3.f;
-
-			F32 droop = treep->mDroop + 25.f*(1.f - treep->mTrunkBend.magVec());
-			
-			S32 stop_depth = 0;
-			F32 app_angle = treep->getAppAngle()*LLVOTree::sTreeFactor;
-			F32 alpha = 1.0;
-			S32 trunk_LOD = LLVOTree::sMAX_NUM_TREE_LOD_LEVELS;
-
-			for (S32 j = 0; j < 4; j++)
-			{
-
-				if (app_angle > LLVOTree::sLODAngles[j])
-				{
-					trunk_LOD = j;
-					break;
-				}
-			} 
-			if(trunk_LOD >= LLVOTree::sMAX_NUM_TREE_LOD_LEVELS)
-			{
-				continue ; //do not render.
-			}
-
-			if (app_angle < (THRESH_ANGLE_FOR_BILLBOARD - BLEND_RANGE_FOR_BILLBOARD))
-			{
-				//
-				//  Draw only the billboard 
-				//
-				//  Only the billboard, can use closer to normal alpha func.
-				stop_depth = -1;
-				LLFacePool::LLOverrideFaceColor clr(this, color); 
-				indices_drawn += treep->drawBranchPipeline(scale_mat, indicesp, trunk_LOD, stop_depth, treep->mDepth, treep->mTrunkDepth, 1.0, treep->mTwist, droop, treep->mBranches, alpha);
-			}
-			else // if (app_angle > (THRESH_ANGLE_FOR_BILLBOARD + BLEND_RANGE_FOR_BILLBOARD))
-			{
-				//
-				//  Draw only the full geometry tree
-				//
-				//stop_depth = (app_angle < THRESH_ANGLE_FOR_RECURSION_REDUCTION);
-				LLFacePool::LLOverrideFaceColor clr(this, color); 
-				indices_drawn += treep->drawBranchPipeline(scale_mat, indicesp, trunk_LOD, stop_depth, treep->mDepth, treep->mTrunkDepth, 1.0, treep->mTwist, droop, treep->mBranches, alpha);
-			}
-			
-			//glPopMatrix();
-		}
-	}
+	gDeferredTreeShadowProgram.unbind();
 }
 
 BOOL LLDrawPoolTree::verify() const
diff --git a/indra/newview/lldrawpooltree.h b/indra/newview/lldrawpooltree.h
index ddb259bb821a2297e2e9fc4fbcdc4b27d4dc4ef5..e7e25453cffffaa7d7adcd0c3d408b40eff6c9d7 100644
--- a/indra/newview/lldrawpooltree.h
+++ b/indra/newview/lldrawpooltree.h
@@ -68,9 +68,6 @@ class LLDrawPoolTree : public LLFacePool
 	/*virtual*/ LLColor3 getDebugColor() const; // For AGP debug display
 
 	static S32 sDiffTex;
-
-private:
-	void renderTree(BOOL selecting = FALSE);
 };
 
 #endif // LL_LLDRAWPOOLTREE_H
diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp
index 31c14361b5f1ecc93e8deb6b1eff517d2ba1bd56..4f6eaa5a5b778b099e53e65cf599ff26d088be7a 100644
--- a/indra/newview/lldrawpoolwater.cpp
+++ b/indra/newview/lldrawpoolwater.cpp
@@ -59,6 +59,8 @@ BOOL LLDrawPoolWater::sSkipScreenCopy = FALSE;
 BOOL LLDrawPoolWater::sNeedsReflectionUpdate = TRUE;
 BOOL LLDrawPoolWater::sNeedsDistortionUpdate = TRUE;
 LLColor4 LLDrawPoolWater::sWaterFogColor = LLColor4(0.2f, 0.5f, 0.5f, 0.f);
+F32 LLDrawPoolWater::sWaterFogEnd = 0.f;
+
 LLVector3 LLDrawPoolWater::sLightDir;
 
 LLDrawPoolWater::LLDrawPoolWater() :
@@ -219,7 +221,7 @@ void LLDrawPoolWater::render(S32 pass)
 		water_color.setVec(1.f, 1.f, 1.f, 0.5f*(1.f + up_dot));
 	}
 
-	glColor4fv(water_color.mV);
+	gGL.diffuseColor4fv(water_color.mV);
 
 	// Automatically generate texture coords for detail map
 	glEnable(GL_TEXTURE_GEN_S); //texture unit 1
@@ -275,15 +277,15 @@ void LLDrawPoolWater::render(S32 pass)
 		gSky.mVOSkyp->getCubeMap()->enable(0);
 		gSky.mVOSkyp->getCubeMap()->bind();
 
-		glMatrixMode(GL_TEXTURE);
-		glLoadIdentity();
+		gGL.matrixMode(LLRender::MM_TEXTURE);
+		gGL.loadIdentity();
 		LLMatrix4 camera_mat = LLViewerCamera::getInstance()->getModelview();
 		LLMatrix4 camera_rot(camera_mat.getMat3());
 		camera_rot.invert();
 
-		glLoadMatrixf((F32 *)camera_rot.mMatrix);
+		gGL.loadMatrix((F32 *)camera_rot.mMatrix);
 
-		glMatrixMode(GL_MODELVIEW);
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 		LLOverrideFaceColor overrid(this, 1.f, 1.f, 1.f,  0.5f*up_dot);
 
 		gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
@@ -310,9 +312,9 @@ void LLDrawPoolWater::render(S32 pass)
 		
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 		gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE);
-		glMatrixMode(GL_TEXTURE);
-		glLoadIdentity();
-		glMatrixMode(GL_MODELVIEW);
+		gGL.matrixMode(LLRender::MM_TEXTURE);
+		gGL.loadIdentity();
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 		
 	}
 
@@ -332,6 +334,21 @@ void LLDrawPoolWater::renderOpaqueLegacyWater()
 {
 	LLVOSky *voskyp = gSky.mVOSkyp;
 
+	LLGLSLShader* shader = NULL;
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		if (LLPipeline::sUnderWaterRender)
+		{
+			shader = &gObjectSimpleNonIndexedTexGenWaterProgram;
+		}
+		else
+		{
+			shader = &gObjectSimpleNonIndexedTexGenProgram;
+		}
+
+		shader->bind();
+	}
+
 	stop_glerror();
 
 	// Depth sorting and write to depth buffer
@@ -354,10 +371,13 @@ void LLDrawPoolWater::renderOpaqueLegacyWater()
 	gGL.getTexUnit(0)->bind(mOpaqueWaterImagep);
 
 	// Automatically generate texture coords for water texture
-	glEnable(GL_TEXTURE_GEN_S); //texture unit 0
-	glEnable(GL_TEXTURE_GEN_T); //texture unit 0
-	glTexGenf(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
-	glTexGenf(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
+	if (!shader)
+	{
+		glEnable(GL_TEXTURE_GEN_S); //texture unit 0
+		glEnable(GL_TEXTURE_GEN_T); //texture unit 0
+		glTexGenf(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
+		glTexGenf(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
+	}
 
 	// Use the fact that we know all water faces are the same size
 	// to save some computation
@@ -380,10 +400,18 @@ void LLDrawPoolWater::renderOpaqueLegacyWater()
 	F32 tp0[4] = { 16.f / 256.f, 0.0f, 0.0f, offset };
 	F32 tp1[4] = { 0.0f, 16.f / 256.f, 0.0f, offset };
 
-	glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0);
-	glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1);
+	if (!shader)
+	{
+		glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0);
+		glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1);
+	}
+	else
+	{
+		shader->uniform4fv("object_plane_s", 1, tp0);
+		shader->uniform4fv("object_plane_t", 1, tp1);
+	}
 
-	glColor3f(1.f, 1.f, 1.f);
+	gGL.diffuseColor3f(1.f, 1.f, 1.f);
 
 	for (std::vector<LLFace*>::iterator iter = mDrawFace.begin();
 		 iter != mDrawFace.end(); iter++)
@@ -399,9 +427,12 @@ void LLDrawPoolWater::renderOpaqueLegacyWater()
 
 	stop_glerror();
 
-	// Reset the settings back to expected values
-	glDisable(GL_TEXTURE_GEN_S); //texture unit 0
-	glDisable(GL_TEXTURE_GEN_T); //texture unit 0
+	if (!shader)
+	{
+		// Reset the settings back to expected values
+		glDisable(GL_TEXTURE_GEN_S); //texture unit 0
+		glDisable(GL_TEXTURE_GEN_T); //texture unit 0
+	}
 
 	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 	gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
@@ -623,8 +654,6 @@ void LLDrawPoolWater::shade()
 		water_color.mV[3] = 0.9f;
 	}
 
-	glColor4fv(water_color.mV);
-
 	{
 		LLGLEnable depth_clamp(gGLManager.mHasDepthClamp ? GL_DEPTH_CLAMP : 0);
 		LLGLDisable cullface(GL_CULL_FACE);
diff --git a/indra/newview/lldrawpoolwater.h b/indra/newview/lldrawpoolwater.h
index 99b541ca5a384d1de939c9795e96b908f0265abd..aeeba179d6ca134c240ea7cf70ec4768a95cea20 100644
--- a/indra/newview/lldrawpoolwater.h
+++ b/indra/newview/lldrawpoolwater.h
@@ -49,6 +49,7 @@ class LLDrawPoolWater: public LLFacePool
 	static LLVector3 sLightDir;
 
 	static LLColor4 sWaterFogColor;
+	static F32 sWaterFogEnd;
 
 	enum
 	{
diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp
index 79a835fd14ef1e8f6950766ea8f23d8d03ced896..caf15fe1cbb0616719f98e98b7989980ad2c9f38 100644
--- a/indra/newview/lldrawpoolwlsky.cpp
+++ b/indra/newview/lldrawpoolwlsky.cpp
@@ -100,12 +100,12 @@ void LLDrawPoolWLSky::beginRenderPass( S32 pass )
 {
 	sky_shader =
 		LLPipeline::sUnderWaterRender ?
-			&gObjectSimpleWaterProgram :
+			&gObjectFullbrightNoColorWaterProgram :
 			&gWLSkyProgram;
 
 	cloud_shader =
 			LLPipeline::sUnderWaterRender ?
-				&gObjectSimpleWaterProgram :
+				&gObjectFullbrightNoColorWaterProgram :
 				&gWLCloudProgram;
 }
 
@@ -130,33 +130,33 @@ void LLDrawPoolWLSky::renderDome(F32 camHeightLocal, LLGLSLShader * shader) cons
 
 	llassert_always(NULL != shader);
 
-	glPushMatrix();
+	gGL.pushMatrix();
 
 	//chop off translation
 	if (LLPipeline::sReflectionRender && origin.mV[2] > 256.f)
 	{
-		glTranslatef(origin.mV[0], origin.mV[1], 256.f-origin.mV[2]*0.5f);
+		gGL.translatef(origin.mV[0], origin.mV[1], 256.f-origin.mV[2]*0.5f);
 	}
 	else
 	{
-		glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]);
+		gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]);
 	}
 		
 
 	// the windlight sky dome works most conveniently in a coordinate system
 	// where Y is up, so permute our basis vectors accordingly.
-	glRotatef(120.f, 1.f / F_SQRT3, 1.f / F_SQRT3, 1.f / F_SQRT3);
+	gGL.rotatef(120.f, 1.f / F_SQRT3, 1.f / F_SQRT3, 1.f / F_SQRT3);
 
-	glScalef(0.333f, 0.333f, 0.333f);
+	gGL.scalef(0.333f, 0.333f, 0.333f);
 
-	glTranslatef(0.f,-camHeightLocal, 0.f);
+	gGL.translatef(0.f,-camHeightLocal, 0.f);
 	
 	// Draw WL Sky	
 	shader->uniform3f("camPosLocal", 0.f, camHeightLocal, 0.f);
 
 	gSky.mVOWLSkyp->drawDome();
 
-	glPopMatrix();
+	gGL.popMatrix();
 }
 
 void LLDrawPoolWLSky::renderSkyHaze(F32 camHeightLocal) const
@@ -197,7 +197,7 @@ void LLDrawPoolWLSky::renderStars(void) const
 	gGL.getTexUnit(0)->bind(gSky.mVOSkyp->getBloomTex());
 
 	gGL.pushMatrix();
-	glRotatef(gFrameTimeSeconds*0.01f, 0.f, 0.f, 1.f);
+	gGL.rotatef(gFrameTimeSeconds*0.01f, 0.f, 0.f, 1.f);
 	// gl_FragColor.rgb = gl_Color.rgb;
 	// gl_FragColor.a = gl_Color.a * star_alpha.a;
 	if (LLGLSLShader::sNoFixedFunction)
@@ -267,10 +267,6 @@ void LLDrawPoolWLSky::renderHeavenlyBodies()
 
 	if (gSky.mVOSkyp->getMoon().getDraw() && face->getGeomCount())
 	{
-		if (gPipeline.canUseVertexShaders())
-		{
-			gUIProgram.bind();
-		}
 		// *NOTE: even though we already bound this texture above for the
 		// stars register combiners, we bind again here for defensive reasons,
 		// since LLImageGL::bind detects that it's a noop, and optimizes it out.
@@ -284,12 +280,18 @@ void LLDrawPoolWLSky::renderHeavenlyBodies()
 			
 		color.mV[3] = llclamp(a, 0.f, 1.f);
 		
+		if (gPipeline.canUseVertexShaders())
+		{
+			gHighlightProgram.bind();
+		}
+
 		LLFacePool::LLOverrideFaceColor color_override(this, color);
+		
 		face->renderIndexed();
 
 		if (gPipeline.canUseVertexShaders())
 		{
-			gUIProgram.unbind();
+			gHighlightProgram.unbind();
 		}
 	}
 }
@@ -315,10 +317,10 @@ void LLDrawPoolWLSky::renderDeferred(S32 pass)
 	renderSkyHaze(camHeightLocal);
 
 	LLVector3 const & origin = LLViewerCamera::getInstance()->getOrigin();
-	glPushMatrix();
+	gGL.pushMatrix();
 
 		
-		glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]);
+		gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]);
 
 		gDeferredStarProgram.bind();
 		// *NOTE: have to bind a texture here since register combiners blending in
@@ -332,7 +334,7 @@ void LLDrawPoolWLSky::renderDeferred(S32 pass)
 		
 		gDeferredStarProgram.unbind();
 
-	glPopMatrix();
+	gGL.popMatrix();
 
 	renderSkyClouds(camHeightLocal);
 
@@ -360,9 +362,9 @@ void LLDrawPoolWLSky::render(S32 pass)
 	renderSkyHaze(camHeightLocal);
 
 	LLVector3 const & origin = LLViewerCamera::getInstance()->getOrigin();
-	glPushMatrix();
+	gGL.pushMatrix();
 
-		glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]);
+		gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]);
 
 		// *NOTE: have to bind a texture here since register combiners blending in
 		// renderStars() requires something to be bound and we might as well only
@@ -374,7 +376,7 @@ void LLDrawPoolWLSky::render(S32 pass)
 		renderStars();
 		
 
-	glPopMatrix();
+	gGL.popMatrix();
 
 	renderSkyClouds(camHeightLocal);
 
diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp
index fb9958ee9dd52affbea8ee0538be67a76037105e..5d6081a35cfc0f3e8c64f5d9c6ddc48073aaa168 100644
--- a/indra/newview/lldynamictexture.cpp
+++ b/indra/newview/lldynamictexture.cpp
@@ -41,6 +41,7 @@
 #include "llviewerdisplay.h"
 #include "llrender.h"
 #include "pipeline.h"
+#include "llglslshader.h"
 
 // static
 LLViewerDynamicTexture::instance_list_t LLViewerDynamicTexture::sInstances[ LLViewerDynamicTexture::ORDER_COUNT ];
@@ -207,6 +208,9 @@ BOOL LLViewerDynamicTexture::updateAllInstances()
 		return TRUE;
 	}
 
+	LLGLSLShader::bindNoShader();
+	LLVertexBuffer::unbind();
+	
 	BOOL result = FALSE;
 	BOOL ret = FALSE ;
 	for( S32 order = 0; order < ORDER_COUNT; order++ )
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index 432e61f6d8479c593e6b3025529d155a56308a84..cd33a19a2a86a2f913bbcb2d7dea74e664e7f932 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -496,14 +496,14 @@ void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)
 		gGL.pushMatrix();
 		if (mDrawablep->isActive())
 		{
-			glMultMatrixf((GLfloat*)mDrawablep->getRenderMatrix().mMatrix);
+			gGL.multMatrix((GLfloat*)mDrawablep->getRenderMatrix().mMatrix);
 		}
 		else
 		{
-			glMultMatrixf((GLfloat*)mDrawablep->getRegion()->mRenderMatrix.mMatrix);
+			gGL.multMatrix((GLfloat*)mDrawablep->getRegion()->mRenderMatrix.mMatrix);
 		}
 
-		glColor4fv(color.mV);
+		gGL.diffuseColor4fv(color.mV);
 	
 		if (mDrawablep->isState(LLDrawable::RIGGED))
 		{
@@ -515,7 +515,7 @@ void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)
 				{
 					LLGLEnable offset(GL_POLYGON_OFFSET_FILL);
 					glPolygonOffset(-1.f, -1.f);
-					glMultMatrixf((F32*) volume->getRelativeXform().mMatrix);
+					gGL.multMatrix((F32*) volume->getRelativeXform().mMatrix);
 					const LLVolumeFace& vol_face = rigged->getVolumeFace(getTEOffset());
 					LLVertexBuffer::unbind();
 					glVertexPointer(3, GL_FLOAT, 16, vol_face.mPositions);
@@ -524,6 +524,7 @@ void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)
 						glEnableClientState(GL_TEXTURE_COORD_ARRAY);
 						glTexCoordPointer(2, GL_FLOAT, 8, vol_face.mTexCoords);
 					}
+					gGL.syncMatrices();
 					glDrawElements(GL_TRIANGLES, vol_face.mNumIndices, GL_UNSIGNED_SHORT, vol_face.mIndices);
 					glDisableClientState(GL_TEXTURE_COORD_ARRAY);
 				}
@@ -557,17 +558,17 @@ void LLFace::renderSelectedUV()
 
 	// add green dither pattern on top of red/blue gradient
 	gGL.blendFunc(LLRender::BF_ONE, LLRender::BF_ONE);
-	glMatrixMode(GL_TEXTURE);
-	glPushMatrix();
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.pushMatrix();
 	// make green pattern repeat once per texel in red/blue texture
-	glScalef(256.f, 256.f, 1.f);
-	glMatrixMode(GL_MODELVIEW);
+	gGL.scalef(256.f, 256.f, 1.f);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 	renderSelected(green_imagep, LLColor4::white);
 
-	glMatrixMode(GL_TEXTURE);
-	glPopMatrix();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.popMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.blendFunc(LLRender::BF_SOURCE_ALPHA, LLRender::BF_ONE_MINUS_SOURCE_ALPHA);
 }
 */
@@ -692,6 +693,49 @@ static void xform(LLVector2 &tex_coord, F32 cosAng, F32 sinAng, F32 offS, F32 of
 	tex_coord.mV[1] = t;
 }
 
+// Transform the texture coordinates for this face.
+static void xform4a(LLVector4a &tex_coord, const LLVector4a& trans, const LLVector4Logical& mask, const LLVector4a& rot0, const LLVector4a& rot1, const LLVector4a& offset, const LLVector4a& scale) 
+{
+	//tex coord is two coords, <s0, t0, s1, t1>
+	LLVector4a st;
+
+	// Texture transforms are done about the center of the face.
+	st.setAdd(tex_coord, trans);
+	
+	// Handle rotation
+	LLVector4a rot_st;
+		
+	// <s0 * cosAng, s0*-sinAng, s1*cosAng, s1*-sinAng>
+	LLVector4a s0;
+	s0.splat(st, 0);
+	LLVector4a s1;
+	s1.splat(st, 2);
+	LLVector4a ss;
+	ss.setSelectWithMask(mask, s1, s0);
+
+	LLVector4a a; 
+	a.setMul(rot0, ss);
+	
+	// <t0*sinAng, t0*cosAng, t1*sinAng, t1*cosAng>
+	LLVector4a t0;
+	t0.splat(st, 1);
+	LLVector4a t1;
+	t1.splat(st, 3);
+	LLVector4a tt;
+	tt.setSelectWithMask(mask, t1, t0);
+
+	LLVector4a b;
+	b.setMul(rot1, tt);
+		
+	st.setAdd(a,b);
+
+	// Then scale
+	st.mul(scale);
+
+	// Then offset
+	tex_coord.setAdd(st, offset);
+}
+
 
 bool less_than_max_mag(const LLVector4a& vec)
 {
@@ -1055,9 +1099,20 @@ static LLFastTimer::DeclareTimer FTM_FACE_GEOM_POSITION("Position");
 static LLFastTimer::DeclareTimer FTM_FACE_GEOM_NORMAL("Normal");
 static LLFastTimer::DeclareTimer FTM_FACE_GEOM_TEXTURE("Texture");
 static LLFastTimer::DeclareTimer FTM_FACE_GEOM_COLOR("Color");
+static LLFastTimer::DeclareTimer FTM_FACE_GEOM_EMISSIVE("Emissive");
 static LLFastTimer::DeclareTimer FTM_FACE_GEOM_WEIGHTS("Weights");
 static LLFastTimer::DeclareTimer FTM_FACE_GEOM_BINORMAL("Binormal");
 static LLFastTimer::DeclareTimer FTM_FACE_GEOM_INDEX("Index");
+static LLFastTimer::DeclareTimer FTM_FACE_GEOM_INDEX_TAIL("Tail");
+static LLFastTimer::DeclareTimer FTM_FACE_POSITION_STORE("Pos");
+static LLFastTimer::DeclareTimer FTM_FACE_TEXTURE_INDEX_STORE("TexIdx");
+static LLFastTimer::DeclareTimer FTM_FACE_POSITION_PAD("Pad");
+static LLFastTimer::DeclareTimer FTM_FACE_TEX_DEFAULT("Default");
+static LLFastTimer::DeclareTimer FTM_FACE_TEX_QUICK("Quick");
+static LLFastTimer::DeclareTimer FTM_FACE_TEX_QUICK_NO_XFORM("No Xform");
+static LLFastTimer::DeclareTimer FTM_FACE_TEX_QUICK_XFORM("Xform");
+
+static LLFastTimer::DeclareTimer FTM_FACE_TEX_QUICK_PLANAR("Quick Planar");
 
 BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 							   const S32 &f,
@@ -1071,7 +1126,14 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 	S32 num_vertices = (S32)vf.mNumVertices;
 	S32 num_indices = (S32) vf.mNumIndices;
 	
-	bool map_range = gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange;
+	if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_OCTREE))
+	{
+		updateRebuildFlags();
+	}
+
+
+	//don't use map range (generates many redundant unmap calls)
+	bool map_range = false; //gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange;
 
 	if (mVertexBuffer.notNull())
 	{
@@ -1097,16 +1159,12 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 	}
 
 	LLStrider<LLVector3> vert;
-	LLVector4a* vertices = NULL;
 	LLStrider<LLVector2> tex_coords;
 	LLStrider<LLVector2> tex_coords2;
-	LLVector4a* normals = NULL;
 	LLStrider<LLVector3> norm;
 	LLStrider<LLColor4U> colors;
-	LLVector4a* binormals = NULL;
 	LLStrider<LLVector3> binorm;
 	LLStrider<U16> indicesp;
-	LLVector4a* weights = NULL;
 	LLStrider<LLVector4> wght;
 
 	BOOL full_rebuild = force_rebuild || mDrawablep->isState(LLDrawable::REBUILD_VOLUME);
@@ -1124,6 +1182,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 	
 	bool rebuild_pos = full_rebuild || mDrawablep->isState(LLDrawable::REBUILD_POSITION);
 	bool rebuild_color = full_rebuild || mDrawablep->isState(LLDrawable::REBUILD_COLOR);
+	bool rebuild_emissive = rebuild_color && mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_EMISSIVE);
 	bool rebuild_tcoord = full_rebuild || mDrawablep->isState(LLDrawable::REBUILD_TCOORD);
 	bool rebuild_normal = rebuild_pos && mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_NORMAL);
 	bool rebuild_binormal = rebuild_pos && mVertexBuffer->hasDataType(LLVertexBuffer::TYPE_BINORMAL);
@@ -1194,7 +1253,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 		LLFastTimer t(FTM_FACE_GEOM_INDEX);
 		mVertexBuffer->getIndexStrider(indicesp, mIndicesIndex, mIndicesCount, map_range);
 
-		__m128i* dst = (__m128i*) indicesp.get();
+		volatile __m128i* dst = (__m128i*) indicesp.get();
 		__m128i* src = (__m128i*) vf.mIndices;
 		__m128i offset = _mm_set1_epi16(index_offset);
 
@@ -1203,17 +1262,22 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 		for (S32 i = 0; i < end; i++)
 		{
 			__m128i res = _mm_add_epi16(src[i], offset);
-			_mm_storeu_si128(dst+i, res);
+			_mm_storeu_si128((__m128i*) dst++, res);
 		}
 
-		for (S32 i = end*8; i < num_indices; ++i)
 		{
-			indicesp[i] = vf.mIndices[i]+index_offset;
+			LLFastTimer t(FTM_FACE_GEOM_INDEX_TAIL);
+			U16* idx = (U16*) dst;
+
+			for (S32 i = end*8; i < num_indices; ++i)
+			{
+				*idx++ = vf.mIndices[i]+index_offset;
+			}
 		}
 
 		if (map_range)
 		{
-			mVertexBuffer->setBuffer(0);
+			mVertexBuffer->flush();
 		}
 	}
 	
@@ -1365,19 +1429,48 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 
 			if (texgen != LLTextureEntry::TEX_GEN_PLANAR)
 			{
+				LLFastTimer t(FTM_FACE_TEX_QUICK);
 				if (!do_tex_mat)
 				{
 					if (!do_xform)
 					{
+						LLFastTimer t(FTM_FACE_TEX_QUICK_NO_XFORM);
 						LLVector4a::memcpyNonAliased16((F32*) tex_coords.get(), (F32*) vf.mTexCoords, num_vertices*2*sizeof(F32));
 					}
 					else
 					{
-						for (S32 i = 0; i < num_vertices; i++)
+						LLFastTimer t(FTM_FACE_TEX_QUICK_XFORM);
+						F32* dst = (F32*) tex_coords.get();
+						LLVector4a* src = (LLVector4a*) vf.mTexCoords;
+
+						LLVector4a trans;
+						trans.splat(-0.5f);
+
+						LLVector4a rot0;
+						rot0.set(cos_ang, -sin_ang, cos_ang, -sin_ang);
+
+						LLVector4a rot1;
+						rot1.set(sin_ang, cos_ang, sin_ang, cos_ang);
+
+						LLVector4a scale;
+						scale.set(ms, mt, ms, mt);
+
+						LLVector4a offset;
+						offset.set(os+0.5f, ot+0.5f, os+0.5f, ot+0.5f);
+
+						LLVector4Logical mask;
+						mask.clear();
+						mask.setElement<2>();
+						mask.setElement<3>();
+
+						U32 count = num_vertices/2 + num_vertices%2;
+
+						for (S32 i = 0; i < count; i++)
 						{	
-							LLVector2 tc(vf.mTexCoords[i]);
-							xform(tc, cos_ang, sin_ang, os, ot, ms, mt);
-							*tex_coords++ = tc;	
+							LLVector4a res = *src++;
+							xform4a(res, trans, mask, rot0, rot1, offset, scale);
+							res.store4a(dst);
+							dst += 4;
 						}
 					}
 				}
@@ -1399,6 +1492,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 			}
 			else
 			{ //no bump, no atlas, tex gen planar
+				LLFastTimer t(FTM_FACE_TEX_QUICK_PLANAR);
 				if (do_tex_mat)
 				{
 					for (S32 i = 0; i < num_vertices; i++)
@@ -1438,11 +1532,12 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 
 			if (map_range)
 			{
-				mVertexBuffer->setBuffer(0);
+				mVertexBuffer->flush();
 			}
 		}
 		else
 		{ //either bump mapped or in atlas, just do the whole expensive loop
+			LLFastTimer t(FTM_FACE_TEX_DEFAULT);
 			mVertexBuffer->getTexCoord0Strider(tex_coords, mGeomIndex, mGeomCount, map_range);
 
 			std::vector<LLVector2> bump_tc;
@@ -1585,7 +1680,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 
 			if (map_range)
 			{
-				mVertexBuffer->setBuffer(0);
+				mVertexBuffer->flush();
 			}
 
 			if (do_bump)
@@ -1622,7 +1717,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 
 				if (map_range)
 				{
-					mVertexBuffer->setBuffer(0);
+					mVertexBuffer->flush();
 				}
 			}
 		}
@@ -1634,45 +1729,58 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 		llassert(num_vertices > 0);
 		
 		mVertexBuffer->getVertexStrider(vert, mGeomIndex, mGeomCount, map_range);
-		vertices = (LLVector4a*) vert.get();
-	
+			
+
 		LLMatrix4a mat_vert;
 		mat_vert.loadu(mat_vert_in);
 
 		LLVector4a* src = vf.mPositions;
-		LLVector4a* dst = vertices;
+		volatile F32* dst = (volatile F32*) vert.get();
 
-		LLVector4a* end = dst+num_vertices;
-		do
-		{	
-			mat_vert.affineTransform(*src++, *dst++);
-		}
-		while(dst < end);
+		volatile F32* end = dst+num_vertices*4;
+		LLVector4a res;
+
+		LLVector4a texIdx;
 
 		F32 index = (F32) (mTextureIndex < 255 ? mTextureIndex : 0);
-		F32 *index_dst = (F32*) vertices;
-		F32 *index_end = (F32*) end;
+		llassert(index <= LLGLSLShader::sIndexedTextureChannels-1);
+
+		LLVector4Logical mask;
+		mask.clear();
+		mask.setElement<3>();
+		
+		texIdx.set(0,0,0,index);
 
-		index_dst += 3;
-		index_end += 3;
-		do
 		{
-			*index_dst = index;
-			index_dst += 4;
+			LLFastTimer t(FTM_FACE_POSITION_STORE);
+			LLVector4a tmp;
+
+			do
+			{	
+				mat_vert.affineTransform(*src++, res);
+				tmp.setSelectWithMask(mask, texIdx, res);
+				tmp.store4a((F32*) dst);
+				dst += 4;
+			}
+			while(dst < end);
 		}
-		while (index_dst < index_end);
-		
-		S32 aligned_pad_vertices = mGeomCount - num_vertices;
-		LLVector4a* last_vec = end - 1;
-		while (aligned_pad_vertices > 0)
+
 		{
-			--aligned_pad_vertices;
-			*dst++ = *last_vec;
+			LLFastTimer t(FTM_FACE_POSITION_PAD);
+			S32 aligned_pad_vertices = mGeomCount - num_vertices;
+			res.set(res[0], res[1], res[2], 0.f);
+
+			while (aligned_pad_vertices > 0)
+			{
+				--aligned_pad_vertices;
+				res.store4a((F32*) dst);
+				dst += 4;
+			}
 		}
-		
+
 		if (map_range)
 		{
-			mVertexBuffer->setBuffer(0);
+			mVertexBuffer->flush();
 		}
 	}
 		
@@ -1680,19 +1788,20 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 	{
 		LLFastTimer t(FTM_FACE_GEOM_NORMAL);
 		mVertexBuffer->getNormalStrider(norm, mGeomIndex, mGeomCount, map_range);
-		normals = (LLVector4a*) norm.get();
+		F32* normals = (F32*) norm.get();
 	
 		for (S32 i = 0; i < num_vertices; i++)
 		{	
 			LLVector4a normal;
 			mat_normal.rotate(vf.mNormals[i], normal);
 			normal.normalize3fast();
-			normals[i] = normal;
+			normal.store4a(normals);
+			normals += 4;
 		}
 
 		if (map_range)
 		{
-			mVertexBuffer->setBuffer(0);
+			mVertexBuffer->flush();
 		}
 	}
 		
@@ -1700,19 +1809,20 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 	{
 		LLFastTimer t(FTM_FACE_GEOM_BINORMAL);
 		mVertexBuffer->getBinormalStrider(binorm, mGeomIndex, mGeomCount, map_range);
-		binormals = (LLVector4a*) binorm.get();
+		F32* binormals = (F32*) binorm.get();
 		
 		for (S32 i = 0; i < num_vertices; i++)
 		{	
 			LLVector4a binormal;
 			mat_normal.rotate(vf.mBinormals[i], binormal);
 			binormal.normalize3fast();
-			binormals[i] = binormal;
+			binormal.store4a(binormals);
+			binormals += 4;
 		}
 
 		if (map_range)
 		{
-			mVertexBuffer->setBuffer(0);
+			mVertexBuffer->flush();
 		}
 	}
 	
@@ -1720,11 +1830,11 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 	{
 		LLFastTimer t(FTM_FACE_GEOM_WEIGHTS);
 		mVertexBuffer->getWeight4Strider(wght, mGeomIndex, mGeomCount, map_range);
-		weights = (LLVector4a*) wght.get();
-		LLVector4a::memcpyNonAliased16((F32*) weights, (F32*) vf.mWeights, num_vertices*4*sizeof(F32));
+		F32* weights = (F32*) wght.get();
+		LLVector4a::memcpyNonAliased16(weights, (F32*) vf.mWeights, num_vertices*4*sizeof(F32));
 		if (map_range)
 		{
-			mVertexBuffer->setBuffer(0);
+			mVertexBuffer->flush();
 		}
 	}
 
@@ -1740,7 +1850,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 		
 		src.loadua((F32*) vec);
 
-		LLVector4a* dst = (LLVector4a*) colors.get();
+		F32* dst = (F32*) colors.get();
 		S32 num_vecs = num_vertices/4;
 		if (num_vertices%4 > 0)
 		{
@@ -1749,15 +1859,55 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 
 		for (S32 i = 0; i < num_vecs; i++)
 		{	
-			dst[i] = src;
+			src.store4a(dst);
+			dst += 4;
 		}
 
 		if (map_range)
 		{
-			mVertexBuffer->setBuffer(0);
+			mVertexBuffer->flush();
 		}
 	}
 
+	if (rebuild_emissive)
+	{
+		LLFastTimer t(FTM_FACE_GEOM_EMISSIVE);
+		LLStrider<LLColor4U> emissive;
+		mVertexBuffer->getEmissiveStrider(emissive, mGeomIndex, mGeomCount, map_range);
+
+		U8 glow = (U8) llclamp((S32) (getTextureEntry()->getGlow()*255), 0, 255);
+
+		LLVector4a src;
+
+		
+		U32 glow32 = glow |
+					 (glow << 8) |
+					 (glow << 16) |
+					 (glow << 24);
+
+		U32 vec[4];
+		vec[0] = vec[1] = vec[2] = vec[3] = glow32;
+		
+		src.loadua((F32*) vec);
+
+		F32* dst = (F32*) emissive.get();
+		S32 num_vecs = num_vertices/4;
+		if (num_vertices%4 > 0)
+		{
+			++num_vecs;
+		}
+
+		for (S32 i = 0; i < num_vecs; i++)
+		{	
+			src.store4a(dst);
+			dst += 4;
+		}
+
+		if (map_range)
+		{
+			mVertexBuffer->flush();
+		}
+	}
 	if (rebuild_tcoord)
 	{
 		mTexExtents[0].setVec(0,0);
@@ -1773,6 +1923,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
 		mTexExtents[1][1] *= et ;
 	}
 
+
 	mLastVertexBuffer = mVertexBuffer;
 	mLastGeomCount = mGeomCount;
 	mLastGeomIndex = mGeomIndex;
@@ -2014,7 +2165,7 @@ BOOL LLFace::verify(const U32* indices_array) const
 	}
 	
 	// First, check whether the face data fits within the pool's range.
-	if ((mGeomIndex + mGeomCount) > mVertexBuffer->getRequestedVerts())
+	if ((mGeomIndex + mGeomCount) > mVertexBuffer->getNumVerts())
 	{
 		ok = FALSE;
 		llinfos << "Face references invalid vertices!" << llendl;
@@ -2033,7 +2184,7 @@ BOOL LLFace::verify(const U32* indices_array) const
 		llinfos << "Face has bogus indices count" << llendl;
 	}
 	
-	if (mIndicesIndex + mIndicesCount > mVertexBuffer->getRequestedIndices())
+	if (mIndicesIndex + mIndicesCount > mVertexBuffer->getNumIndices())
 	{
 		ok = FALSE;
 		llinfos << "Face references invalid indices!" << llendl;
@@ -2095,7 +2246,7 @@ void LLFace::renderSetColor() const
 	{
 		const LLColor4* color = &(getRenderColor());
 		
-		glColor4fv(color->mV);
+		gGL.diffuseColor4fv(color->mV);
 	}
 }
 
@@ -2130,10 +2281,10 @@ S32 LLFace::renderElements(const U16 *index_array) const
 	}
 	else
 	{
-		glPushMatrix();
-		glMultMatrixf((float*)getRenderMatrix().mMatrix);
+		gGL.pushMatrix();
+		gGL.multMatrix((float*)getRenderMatrix().mMatrix);
 		ret = pushVertices(index_array);
-		glPopMatrix();
+		gGL.popMatrix();
 	}
 	
 	return ret;
diff --git a/indra/newview/llface.h b/indra/newview/llface.h
index b5eaeecd60ea18c533f441e7c9b04c51386ef85f..82e4ab61b7d9d5695afbe08f0c929327eca019e6 100644
--- a/indra/newview/llface.h
+++ b/indra/newview/llface.h
@@ -329,13 +329,9 @@ class LLFace
 			{
 				return lhs->getTexture() < rhs->getTexture();
 			}
-			else if (lte->getBumpShinyFullbright() != rte->getBumpShinyFullbright())
-			{
-				return lte->getBumpShinyFullbright() < rte->getBumpShinyFullbright();
-			}
 			else 
 			{
-				return lte->getGlow() < rte->getGlow();
+				return lte->getBumpShinyFullbright() < rte->getBumpShinyFullbright();
 			}
 		}
 	};
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index a161428c2b99b2366a0775b3447ecbf08f8bb182..233038daba3664c74fa5749c18311927609c1073 100644
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -105,6 +105,7 @@ void LLFastTimerView::onPause()
 	if (!LLFastTimer::sPauseHistory)
 	{
 		mScrollIndex = 0;
+		LLFastTimer::sResetHistory = true;
 		getChild<LLButton>("pause_btn")->setLabel(getString("pause"));
 	}
 	else
@@ -591,6 +592,7 @@ void LLFastTimerView::draw()
 			{
 				mAvgCountTotal = ticks;
 				mMaxCountTotal = ticks;
+				LLFastTimer::sResetHistory = false;
 			}
 		}
 
@@ -1125,10 +1127,10 @@ void LLFastTimerView::exportCharts(const std::string& base, const std::string& t
 	LLPointer<LLImageRaw> scratch = new LLImageRaw(1024, 512, 3);
 
 	gGL.pushMatrix();
-	glLoadIdentity();
-	glMatrixMode(GL_PROJECTION);
-	glLoadIdentity();
-	glOrtho(-0.05, 1.05, -0.05, 1.05, -1.0, 1.0);
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.loadIdentity();
+	gGL.ortho(-0.05f, 1.05f, -0.05f, 1.05f, -1.0f, 1.0f);
 
 	//render charts
 	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -1367,7 +1369,7 @@ void LLFastTimerView::exportCharts(const std::string& base, const std::string& t
 	buffer.flush();
 
 	gGL.popMatrix();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.popMatrix();
 }
 
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 0b17d64eb078a60daeebc5f3d33a2412f45b8395..f4b6dc2c816190673274924519e8705ef46afaf0 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -31,6 +31,7 @@
 #include "llfocusmgr.h"
 #include "llinventory.h"
 #include "lllandmarkactions.h"
+#include "lltoolbarview.h"
 #include "lltrans.h"
 #include "lluictrlfactory.h"
 #include "llmenugl.h"
@@ -41,10 +42,10 @@
 #include "llinventoryclipboard.h"
 #include "llinventorybridge.h"
 #include "llinventoryfunctions.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfloaterworldmap.h"
 #include "lllandmarkactions.h"
 #include "llnotificationsutil.h"
-#include "llsidetray.h"
 #include "lltoggleablemenu.h"
 #include "llviewerinventory.h"
 #include "llviewermenu.h"
@@ -54,6 +55,7 @@
 static LLDefaultChildRegistry::Register<LLFavoritesBarCtrl> r("favorites_bar");
 
 const S32 DROP_DOWN_MENU_WIDTH = 250;
+const S32 DROP_DOWN_MENU_TOP_PAD = 13;
 
 /**
  * Helper for LLFavoriteLandmarkButton and LLFavoriteLandmarkMenuItem.
@@ -360,7 +362,7 @@ struct LLFavoritesSort
 
 LLFavoritesBarCtrl::Params::Params()
 : image_drag_indication("image_drag_indication"),
-  chevron_button("chevron_button"),
+  more_button("more_button"),
   label("label")
 {
 }
@@ -389,10 +391,10 @@ LLFavoritesBarCtrl::LLFavoritesBarCtrl(const LLFavoritesBarCtrl::Params& p)
 	gInventory.addObserver(this);
 
 	//make chevron button                                                                                                                               
-	LLButton::Params chevron_button_params(p.chevron_button);                                         
-	chevron_button_params.click_callback.function(boost::bind(&LLFavoritesBarCtrl::showDropDownMenu, this));     
-	mChevronButton = LLUICtrlFactory::create<LLButton> (chevron_button_params);
-	addChild(mChevronButton); 
+	LLTextBox::Params more_button_params(p.more_button);
+	mMoreTextBox = LLUICtrlFactory::create<LLTextBox> (more_button_params);
+	mMoreTextBox->setClickedCallback(boost::bind(&LLFavoritesBarCtrl::showDropDownMenu, this));
+	addChild(mMoreTextBox);
 
 	LLTextBox::Params label_param(p.label);
 	mBarLabel = LLUICtrlFactory::create<LLTextBox> (label_param);
@@ -403,8 +405,8 @@ LLFavoritesBarCtrl::~LLFavoritesBarCtrl()
 {
 	gInventory.removeObserver(this);
 
-	LLView::deleteViewByHandle(mOverflowMenuHandle);
-	LLView::deleteViewByHandle(mContextMenuHandle);
+	if (mOverflowMenuHandle.get()) mOverflowMenuHandle.get()->die();
+	if (mContextMenuHandle.get()) mContextMenuHandle.get()->die();
 }
 
 BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
@@ -441,17 +443,17 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 			{
 				setLandingTab(dest);
 			}
-			/*
-			 * the condition dest == NULL can be satisfied not only in the case
-			 * of dragging to the right from the last tab of the favbar. there is a
-			 * small gap between each tab. if the user drags something exactly there
-			 * then mLandingTab will be set to NULL and the dragged item will be pushed
-			 * to the end of the favorites bar. this is incorrect behavior. that's why
-			 * we need an additional check which excludes the case described previously
-			 * making sure that the mouse pointer is beyond the last tab.
-			 */
-			else if (mLastTab && x >= mLastTab->getRect().mRight)
+			else if (mLastTab && (x >= mLastTab->getRect().mRight))
 			{
+				/*
+				 * the condition dest == NULL can be satisfied not only in the case
+				 * of dragging to the right from the last tab of the favbar. there is a
+				 * small gap between each tab. if the user drags something exactly there
+				 * then mLandingTab will be set to NULL and the dragged item will be pushed
+				 * to the end of the favorites bar. this is incorrect behavior. that's why
+				 * we need an additional check which excludes the case described previously
+				 * making sure that the mouse pointer is beyond the last tab.
+				 */
 				setLandingTab(NULL);
 			}
 
@@ -465,7 +467,6 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 				if (drop)
 				{
 					handleExistingFavoriteDragAndDrop(x, y);
-					showDragMarker(FALSE);
 				}
 			}
 			else
@@ -488,7 +489,6 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 						setLandingTab(NULL);
 					}
 					handleNewFavoriteDragAndDrop(item, favorites_id, x, y);
-					showDragMarker(FALSE);
 				}
 			}
 		}
@@ -502,20 +502,29 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 
 void LLFavoritesBarCtrl::handleExistingFavoriteDragAndDrop(S32 x, S32 y)
 {
+	// Identify the button hovered and the side to drop
 	LLFavoriteLandmarkButton* dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLandingTab);
+	bool insert_before = true;	
+	if (!dest)
+	{
+		insert_before = false;
+		dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLastTab);
+	}
 
-	// there is no need to handle if an item was dragged onto itself
+	// There is no need to handle if an item was dragged onto itself
 	if (dest && dest->getLandmarkId() == mDragItemId)
 	{
 		return;
 	}
 
+	// Insert the dragged item in the right place
 	if (dest)
 	{
-		LLInventoryModel::updateItemsOrder(mItems, mDragItemId, dest->getLandmarkId());
+		LLInventoryModel::updateItemsOrder(mItems, mDragItemId, dest->getLandmarkId(), insert_before);
 	}
 	else
 	{
+		// This can happen when the item list is empty
 		mItems.push_back(gInventory.getItem(mDragItemId));
 	}
 
@@ -532,22 +541,35 @@ void LLFavoritesBarCtrl::handleExistingFavoriteDragAndDrop(S32 x, S32 y)
 
 void LLFavoritesBarCtrl::handleNewFavoriteDragAndDrop(LLInventoryItem *item, const LLUUID& favorites_id, S32 x, S32 y)
 {
-	LLFavoriteLandmarkButton* dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLandingTab);
-
-	// there is no need to handle if an item was dragged onto itself
+	// Identify the button hovered and the side to drop
+	LLFavoriteLandmarkButton* dest = NULL;
+	bool insert_before = true;
+	if (!mItems.empty())
+	{
+		dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLandingTab);
+		if (!dest)
+		{
+			insert_before = false;
+			dest = dynamic_cast<LLFavoriteLandmarkButton*>(mLastTab);
+		}
+	}
+	
+	// There is no need to handle if an item was dragged onto itself
 	if (dest && dest->getLandmarkId() == mDragItemId)
 	{
 		return;
 	}
-
+	
 	LLPointer<LLViewerInventoryItem> viewer_item = new LLViewerInventoryItem(item);
 
+	// Insert the dragged item in the right place
 	if (dest)
 	{
-		insertBeforeItem(mItems, dest->getLandmarkId(), viewer_item);
+		insertItem(mItems, dest->getLandmarkId(), viewer_item, insert_before);
 	}
 	else
 	{
+		// This can happen when the item list is empty
 		mItems.push_back(viewer_item);
 	}
 
@@ -577,7 +599,11 @@ void LLFavoritesBarCtrl::handleNewFavoriteDragAndDrop(LLInventoryItem *item, con
 	if (tool_dad->getSource() == LLToolDragAndDrop::SOURCE_NOTECARD)
 	{
 		viewer_item->setType(LLAssetType::AT_LANDMARK);
-		copy_inventory_from_notecard(tool_dad->getObjectID(), tool_dad->getSourceID(), viewer_item.get(), gInventoryCallbacks.registerCB(cb));
+		copy_inventory_from_notecard(favorites_id,
+									 tool_dad->getObjectID(),
+									 tool_dad->getSourceID(),
+									 viewer_item.get(),
+									 gInventoryCallbacks.registerCB(cb));
 	}
 	else
 	{
@@ -640,7 +666,7 @@ void LLFavoritesBarCtrl::draw()
 		{
 			// mouse pointer hovers over an existing tab
 			LLRect rect = mLandingTab->getRect();
-			mImageDragIndication->draw(rect.mLeft - w/2, rect.getHeight(), w, h);
+			mImageDragIndication->draw(rect.mLeft, rect.getHeight(), w, h);
 		}
 		else if (mLastTab)
 		{
@@ -648,6 +674,8 @@ void LLFavoritesBarCtrl::draw()
 			LLRect rect = mLastTab->getRect();
 			mImageDragIndication->draw(rect.mRight, rect.getHeight(), w, h);
 		}
+		// Once drawn, mark this false so we won't draw it again (unless we hit the favorite bar again)
+		mShowDragMarker = FALSE;
 	}
 }
 
@@ -692,7 +720,7 @@ void LLFavoritesBarCtrl::updateButtons()
 	const child_list_t* childs = getChildList();
 	child_list_const_iter_t child_it = childs->begin();
 	int first_changed_item_index = 0;
-	int rightest_point = getRect().mRight - mChevronButton->getRect().getWidth();
+	int rightest_point = getRect().mRight - mMoreTextBox->getRect().getWidth();
 	//lets find first changed button
 	while (child_it != childs->end() && first_changed_item_index < mItems.count())
 	{
@@ -719,7 +747,7 @@ void LLFavoritesBarCtrl::updateButtons()
 	if (first_changed_item_index <= mItems.count())
 	{
 		// Rebuild the buttons only
-		// child_list_t is a linked list, so safe to erase from the middle if we pre-incrament the iterator
+		// child_list_t is a linked list, so safe to erase from the middle if we pre-increment the iterator
 
 		while (child_it != childs->end())
 		{
@@ -735,9 +763,9 @@ void LLFavoritesBarCtrl::updateButtons()
 		}
 		// we have to remove ChevronButton to make sure that the last item will be LandmarkButton to get the right aligning
 		// keep in mind that we are cutting all buttons in space between the last visible child of favbar and ChevronButton
-		if (mChevronButton->getParent() == this)
+		if (mMoreTextBox->getParent() == this)
 		{
-			removeChild(mChevronButton);
+			removeChild(mMoreTextBox);
 		}
 		int last_right_edge = 0;
 		//calculate new buttons offset
@@ -777,13 +805,13 @@ void LLFavoritesBarCtrl::updateButtons()
 			S32 buttonHGap = button_params.rect.left; // default value
 			LLRect rect;
 			// Chevron button should stay right aligned
-			rect.setOriginAndSize(getRect().mRight - mChevronButton->getRect().getWidth() - buttonHGap, 0,
-					mChevronButton->getRect().getWidth(),
-					mChevronButton->getRect().getHeight());
+			rect.setOriginAndSize(getRect().mRight - mMoreTextBox->getRect().getWidth() - buttonHGap, 0,
+					mMoreTextBox->getRect().getWidth(),
+					mMoreTextBox->getRect().getHeight());
 
-			addChild(mChevronButton);
-			mChevronButton->setRect(rect);
-			mChevronButton->setVisible(TRUE);
+			addChild(mMoreTextBox);
+			mMoreTextBox->setRect(rect);
+			mMoreTextBox->setVisible(TRUE);
 		}
 		// Update overflow menu
 		LLToggleableMenu* overflow_menu = static_cast <LLToggleableMenu*> (mOverflowMenuHandle.get());
@@ -808,16 +836,16 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem
 
 	/**
 	 * WORKAROUND:
-	 * there are some problem with displaying of fonts in buttons. 
-	 * Empty space (or ...) is displaying instead of last symbols, even though the width of the button is enough.
-	 * Problem will gone, if we  stretch out the button. For that reason I have to put additional  20 pixels.
+	 * There are some problem with displaying of fonts in buttons. 
+	 * Empty space or ellipsis might be displayed instead of last symbols, even though the width of the button is enough.
+	 * The problem disappears if we pad the button with 20 pixels.
 	 */
 	int required_width = mFont->getWidth(item->getName()) + 20;
 	int width = required_width > def_button_width? def_button_width : required_width;
 	LLFavoriteLandmarkButton* fav_btn = NULL;
 
-	// do we have a place for next button + double buttonHGap + mChevronButton ? 
-	if(curr_x + width + 2*button_x_delta +  mChevronButton->getRect().getWidth() > getRect().mRight )
+	// do we have a place for next button + double buttonHGap + mMoreTextBox ?
+	if(curr_x + width + 2*button_x_delta +  mMoreTextBox->getRect().getWidth() > getRect().mRight )
 	{
 		return NULL;
 	}
@@ -838,7 +866,6 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem
 	fav_btn->setRect(butt_rect);
 	// change only left and save bottom
 	fav_btn->setFont(mFont);
-	fav_btn->setName(item->getName());
 	fav_btn->setLabel(item->getName());
 	fav_btn->setToolTip(item->getName());
 	fav_btn->setCommitCallback(boost::bind(&LLFavoritesBarCtrl::onButtonClick, this, item->getUUID()));
@@ -893,84 +920,157 @@ void LLFavoritesBarCtrl::showDropDownMenu()
 {
 	if (mOverflowMenuHandle.isDead())
 	{
-		LLToggleableMenu::Params menu_p;
-		menu_p.name("favorites menu");
-		menu_p.can_tear_off(false);
-		menu_p.visible(false);
-		menu_p.scrollable(true);
-		menu_p.max_scrollable_items = 10;
-		menu_p.preferred_width = DROP_DOWN_MENU_WIDTH;
-
-		LLToggleableMenu* menu = LLUICtrlFactory::create<LLFavoriteLandmarkToggleableMenu>(menu_p);
-		mOverflowMenuHandle = menu->getHandle();
+		createOverflowMenu();
 	}
 
 	LLToggleableMenu* menu = (LLToggleableMenu*)mOverflowMenuHandle.get();
+	if (menu && menu->toggleVisibility())
+	{
+		if (mUpdateDropDownItems)
+		{
+			updateMenuItems(menu);
+		}
 
-	if (menu)
+		menu->buildDrawLabels();
+		menu->updateParent(LLMenuGL::sMenuContainer);
+		menu->setButtonRect(mMoreTextBox->getRect(), this);
+		positionAndShowMenu(menu);
+	}
+}
+
+void LLFavoritesBarCtrl::createOverflowMenu()
+{
+	LLToggleableMenu::Params menu_p;
+	menu_p.name("favorites menu");
+	menu_p.can_tear_off(false);
+	menu_p.visible(false);
+	menu_p.scrollable(true);
+	menu_p.max_scrollable_items = 10;
+	menu_p.preferred_width = DROP_DOWN_MENU_WIDTH;
+
+	LLToggleableMenu* menu = LLUICtrlFactory::create<LLFavoriteLandmarkToggleableMenu>(menu_p);
+	mOverflowMenuHandle = menu->getHandle();
+}
+
+void LLFavoritesBarCtrl::updateMenuItems(LLToggleableMenu* menu)
+{
+	menu->empty();
+
+	U32 widest_item = 0;
+
+	for (S32 i = mFirstDropDownItem; i < mItems.count(); i++)
 	{
-		if (!menu->toggleVisibility())
-			return;
+		LLViewerInventoryItem* item = mItems.get(i);
+		const std::string& item_name = item->getName();
 
-		U32 max_width = llmin(DROP_DOWN_MENU_WIDTH, getRect().getWidth());
-		if (mUpdateDropDownItems)
+		LLFavoriteLandmarkMenuItem::Params item_params;
+		item_params.name(item_name);
+		item_params.label(item_name);
+		item_params.on_click.function(boost::bind(&LLFavoritesBarCtrl::onButtonClick, this, item->getUUID()));
+
+		LLFavoriteLandmarkMenuItem *menu_item = LLUICtrlFactory::create<LLFavoriteLandmarkMenuItem>(item_params);
+		menu_item->initFavoritesBarPointer(this);
+		menu_item->setRightMouseDownCallback(boost::bind(&LLFavoritesBarCtrl::onButtonRightClick, this, item->getUUID(), _1, _2, _3, _4));
+		menu_item->LLUICtrl::setMouseDownCallback(boost::bind(&LLFavoritesBarCtrl::onButtonMouseDown, this, item->getUUID(), _1, _2, _3, _4));
+		menu_item->LLUICtrl::setMouseUpCallback(boost::bind(&LLFavoritesBarCtrl::onButtonMouseUp, this, item->getUUID(), _1, _2, _3, _4));
+		menu_item->setLandmarkID(item->getUUID());
+
+		fitLabelWidth(menu_item);
+
+		widest_item = llmax(widest_item, menu_item->getNominalWidth());
+
+		menu->addChild(menu_item);
+	}
+
+	addOpenLandmarksMenuItem(menu);
+	mUpdateDropDownItems = false;
+}
+
+void LLFavoritesBarCtrl::fitLabelWidth(LLMenuItemCallGL* menu_item)
+{
+	U32 max_width = llmin(DROP_DOWN_MENU_WIDTH, getRect().getWidth());
+	std::string item_name = menu_item->getName();
+
+	// Check whether item name wider than menu
+	if (menu_item->getNominalWidth() > max_width)
+	{
+		S32 chars_total = item_name.length();
+		S32 chars_fitted = 1;
+		menu_item->setLabel(LLStringExplicit(""));
+		S32 label_space = max_width - menu_item->getFont()->getWidth("...") -
+				menu_item->getNominalWidth();// This returns width of menu item with empty label (pad pixels)
+
+		while (chars_fitted < chars_total
+				&& menu_item->getFont()->getWidth(item_name, 0, chars_fitted) < label_space)
 		{
-			menu->empty();
+			chars_fitted++;
+		}
+		chars_fitted--; // Rolling back one char, that doesn't fit
 
-			U32 widest_item = 0;
+		menu_item->setLabel(item_name.substr(0, chars_fitted) + "...");
+	}
+}
 
-			for (S32 i = mFirstDropDownItem; i < mItems.count(); i++)
-			{
-				LLViewerInventoryItem* item = mItems.get(i);
-				const std::string& item_name = item->getName();
-
-				LLFavoriteLandmarkMenuItem::Params item_params;
-				item_params.name(item_name);
-				item_params.label(item_name);
-
-				item_params.on_click.function(boost::bind(
-						&LLFavoritesBarCtrl::onButtonClick, this,
-						item->getUUID()));
-				LLFavoriteLandmarkMenuItem *menu_item = LLUICtrlFactory::create<LLFavoriteLandmarkMenuItem>(item_params);
-				menu_item->initFavoritesBarPointer(this);
-				menu_item->setRightMouseDownCallback(boost::bind(&LLFavoritesBarCtrl::onButtonRightClick, this, item->getUUID(), _1, _2, _3, _4));
-				menu_item->LLUICtrl::setMouseDownCallback(boost::bind(&LLFavoritesBarCtrl::onButtonMouseDown, this, item->getUUID(), _1, _2, _3, _4));
-				menu_item->LLUICtrl::setMouseUpCallback(boost::bind(&LLFavoritesBarCtrl::onButtonMouseUp, this, item->getUUID(), _1, _2, _3, _4));
-				menu_item->setLandmarkID(item->getUUID());
-
-				// Check whether item name wider than menu
-				if (menu_item->getNominalWidth() > max_width)
-				{
-					S32 chars_total = item_name.length();
-					S32 chars_fitted = 1;
-					menu_item->setLabel(LLStringExplicit(""));
-					S32 label_space = max_width - menu_item->getFont()->getWidth("...") - 
-							menu_item->getNominalWidth();// This returns width of menu item with empty label (pad pixels) 
-
-					while (chars_fitted < chars_total
-							&& menu_item->getFont()->getWidth(item_name, 0, chars_fitted) < label_space)
-					{
-						chars_fitted++;
-					}
-					chars_fitted--; // Rolling back one char, that doesn't fit
+void LLFavoritesBarCtrl::addOpenLandmarksMenuItem(LLToggleableMenu* menu)
+{
+	std::string label_untrans = "Open landmarks";
+	std::string	label_transl;
+	bool translated = LLTrans::findString(label_transl, label_untrans);
+
+	LLMenuItemCallGL::Params item_params;
+	item_params.name("open_my_landmarks");
+	item_params.label(translated ? label_transl: label_untrans);
+	LLSD key;
+	key["type"] = "open_landmark_tab";
+	item_params.on_click.function(boost::bind(&LLFloaterSidePanelContainer::showPanel, "places", key));
+	LLMenuItemCallGL* menu_item = LLUICtrlFactory::create<LLMenuItemCallGL>(item_params);
+
+	fitLabelWidth(menu_item);
+
+	LLMenuItemSeparatorGL::Params sep_params;
+	sep_params.enabled_color=LLUIColorTable::instance().getColor("MenuItemEnabledColor");
+	sep_params.disabled_color=LLUIColorTable::instance().getColor("MenuItemDisabledColor");
+	sep_params.highlight_bg_color=LLUIColorTable::instance().getColor("MenuItemHighlightBgColor");
+	sep_params.highlight_fg_color=LLUIColorTable::instance().getColor("MenuItemHighlightFgColor");
+	LLMenuItemSeparatorGL* separator = LLUICtrlFactory::create<LLMenuItemSeparatorGL>(sep_params);
+
+	menu->addChild(separator);
+	menu->addChild(menu_item);
+}
 
-					menu_item->setLabel(item_name.substr(0, chars_fitted)
-							+ "...");
-				}
-				widest_item = llmax(widest_item, menu_item->getNominalWidth());
+void LLFavoritesBarCtrl::positionAndShowMenu(LLToggleableMenu* menu)
+{
+	U32 max_width = llmin(DROP_DOWN_MENU_WIDTH, getRect().getWidth());
 
-				menu->addChild(menu_item);
-			}
-			mUpdateDropDownItems = false;
+	S32 menu_x = getRect().getWidth() - max_width;
+	S32 menu_y = getParent()->getRect().mBottom - DROP_DOWN_MENU_TOP_PAD;
+
+	// the menu should be offset of the right edge of the window
+	// so it's no covered by buttons in the right-side toolbar.
+	LLToolBar* right_toolbar = gToolBarView->getChild<LLToolBar>("toolbar_right");
+	if (right_toolbar && right_toolbar->hasButtons())
+	{
+		S32 toolbar_top = 0;
+
+		if (LLView* top_border_panel = right_toolbar->getChild<LLView>("button_panel"))
+		{
+			toolbar_top = top_border_panel->calcScreenRect().mTop;
 		}
 
-		menu->buildDrawLabels();
-		menu->updateParent(LLMenuGL::sMenuContainer);
+		// Calculating the bottom (in screen coord) of the drop down menu
+		S32 menu_top = getParent()->getRect().mBottom - DROP_DOWN_MENU_TOP_PAD;
+		S32 menu_bottom = menu_top - menu->getRect().getHeight();
+		S32 menu_bottom_screen = 0;
 
-		menu->setButtonRect(mChevronButton->getRect(), this);
+		localPointToScreen(0, menu_bottom, &menu_top, &menu_bottom_screen);
 
-		LLMenuGL::showPopup(this, menu, getRect().getWidth() - max_width, 0);
+		if (menu_bottom_screen < toolbar_top)
+		{
+			menu_x -= right_toolbar->getRect().getWidth();
+		}
 	}
+
+	LLMenuGL::showPopup(this, menu, menu_x, menu_y);
 }
 
 void LLFavoritesBarCtrl::onButtonClick(LLUUID item_id)
@@ -1057,7 +1157,7 @@ void LLFavoritesBarCtrl::doToSelected(const LLSD& userdata)
 		key["type"] = "landmark";
 		key["id"] = mSelectedItemID;
 
-		LLSideTray::getInstance()->showPanel("panel_places", key);
+		LLFloaterSidePanelContainer::showPanel("places", key);
 	}
 	else if (action == "copy_slurl")
 	{
@@ -1103,7 +1203,9 @@ void LLFavoritesBarCtrl::doToSelected(const LLSD& userdata)
 	LLToggleableMenu* menu = (LLToggleableMenu*) mOverflowMenuHandle.get();
 	if (mRestoreOverflowMenu && menu && !menu->getVisible())
 	{
+		menu->resetScrollPositionOnShow(false);
 		showDropDownMenu();
+		menu->resetScrollPositionOnShow(true);
 	}
 }
 
@@ -1225,25 +1327,24 @@ BOOL LLFavoritesBarCtrl::handleHover(S32 x, S32 y, MASK mask)
 
 LLUICtrl* LLFavoritesBarCtrl::findChildByLocalCoords(S32 x, S32 y)
 {
-	LLUICtrl* ctrl = 0;
-	S32 screenX, screenY;
+	LLUICtrl* ctrl = NULL;
 	const child_list_t* list = getChildList();
 
-	localPointToScreen(x, y, &screenX, &screenY);
-
-	// look for a child which contains the point (screenX, screenY) in it's rectangle
 	for (child_list_const_iter_t i = list->begin(); i != list->end(); ++i)
 	{
-		LLRect rect;
-		localRectToScreen((*i)->getRect(), &rect);
-
-		if (rect.pointInRect(screenX, screenY))
+		// Look only for children that are favorite buttons
+		if ((*i)->getName() == "favorites_bar_btn")
 		{
-			ctrl = dynamic_cast<LLUICtrl*>(*i);
-			break;
+			LLRect rect = (*i)->getRect();
+			// We consider a button hit if the cursor is left of the right side
+			// This makes the hit a bit less finicky than hitting directly on the button itself
+			if (x <= rect.mRight)
+			{
+				ctrl = dynamic_cast<LLUICtrl*>(*i);
+				break;
+			}
 		}
 	}
-
 	return ctrl;
 }
 
@@ -1264,29 +1365,28 @@ BOOL LLFavoritesBarCtrl::needToSaveItemsOrder(const LLInventoryModel::item_array
 	return result;
 }
 
-LLInventoryModel::item_array_t::iterator LLFavoritesBarCtrl::findItemByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id)
+void LLFavoritesBarCtrl::insertItem(LLInventoryModel::item_array_t& items, const LLUUID& dest_item_id, LLViewerInventoryItem* insertedItem, bool insert_before)
 {
-	LLInventoryModel::item_array_t::iterator result = items.end();
+	// Get the iterator to the destination item
+	LLInventoryModel::item_array_t::iterator it_dest = LLInventoryModel::findItemIterByUUID(items, dest_item_id);
+	if (it_dest == items.end())
+		return;
 
-	for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i)
+	// Go to the next element if one wishes to insert after the dest element
+	if (!insert_before)
 	{
-		if ((*i)->getUUID() == id)
-		{
-			result = i;
-			break;
-		}
+		++it_dest;
 	}
-
-	return result;
-}
-
-void LLFavoritesBarCtrl::insertBeforeItem(LLInventoryModel::item_array_t& items, const LLUUID& beforeItemId, LLViewerInventoryItem* insertedItem)
-{
-	LLViewerInventoryItem* beforeItem = gInventory.getItem(beforeItemId);
-	llassert(beforeItem);
-	if (beforeItem)
+	
+	// Insert the source item in the right place
+	if (it_dest != items.end())
+	{
+		items.insert(it_dest, insertedItem);
+	}
+	else 
 	{
-		items.insert(findItemByUUID(items, beforeItem->getUUID()), insertedItem);
+		// Append to the list if it_dest reached the end
+		items.push_back(insertedItem);
 	}
 }
 
diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h
index 1a28731c4f27838b1565ddbc5b26d400bd4f9ff5..2f75b3bb0eec119a4b66a660c6dd4a2abd5ea656 100644
--- a/indra/newview/llfavoritesbar.h
+++ b/indra/newview/llfavoritesbar.h
@@ -34,13 +34,16 @@
 #include "llinventoryobserver.h"
 #include "llinventorymodel.h"
 
+class LLMenuItemCallGL;
+class LLToggleableMenu;
+
 class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver
 {
 public:
 	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
 	{
 		Optional<LLUIImage*> image_drag_indication;
-		Optional<LLButton::Params> chevron_button;
+		Optional<LLTextBox::Params> more_button;
 		Optional<LLTextBox::Params> label;
 		Params();
 	};
@@ -127,15 +130,26 @@ class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver
 	 * inserts an item identified by insertedItemId BEFORE an item identified by beforeItemId.
 	 * this function assumes that an item identified by insertedItemId doesn't exist in items array.
 	 */
-	void insertBeforeItem(LLInventoryModel::item_array_t& items, const LLUUID& beforeItemId, LLViewerInventoryItem* insertedItem);
+	void insertItem(LLInventoryModel::item_array_t& items, const LLUUID& dest_item_id, LLViewerInventoryItem* insertedItem, bool insert_before);
 
 	// finds an item by it's UUID in the items array
 	LLInventoryModel::item_array_t::iterator findItemByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id);
 
+	void createOverflowMenu();
+
+	void updateMenuItems(LLToggleableMenu* menu);
+
+	// Fits menu item label width with favorites menu width
+	void fitLabelWidth(LLMenuItemCallGL* menu_item);
+
+	void addOpenLandmarksMenuItem(LLToggleableMenu* menu);
+
+	void positionAndShowMenu(LLToggleableMenu* menu);
+
 	BOOL mShowDragMarker;
 	LLUICtrl* mLandingTab;
 	LLUICtrl* mLastTab;
-	LLButton* mChevronButton;
+	LLTextBox* mMoreTextBox;
 	LLTextBox* mBarLabel;
 
 	LLUUID mDragItemId;
diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp
index db9a0424c0d66182c25ec07e5b99ac3ed6c6e5a0..08f9d267054cffb2662bd7a810e06bd2b59157b9 100644
--- a/indra/newview/llfeaturemanager.cpp
+++ b/indra/newview/llfeaturemanager.cpp
@@ -51,6 +51,7 @@
 #include "llcontrol.h"
 #include "llboost.h"
 #include "llweb.h"
+#include "llviewershadermgr.h"
 
 #if LL_WINDOWS
 #include "lldxhardware.h"
@@ -662,8 +663,10 @@ void LLFeatureManager::applyFeatures(bool skipFeatures)
 
 void LLFeatureManager::setGraphicsLevel(S32 level, bool skipFeatures)
 {
-	applyBaseMasks();
+	LLViewerShaderMgr::sSkipReload = true;
 
+	applyBaseMasks();
+	
 	switch (level)
 	{
 		case 0:
@@ -684,6 +687,9 @@ void LLFeatureManager::setGraphicsLevel(S32 level, bool skipFeatures)
 	}
 
 	applyFeatures(skipFeatures);
+
+	LLViewerShaderMgr::sSkipReload = false;
+	LLViewerShaderMgr::instance()->setShaders();
 }
 
 void LLFeatureManager::applyBaseMasks()
@@ -725,7 +731,7 @@ void LLFeatureManager::applyBaseMasks()
 	{
 		maskFeatures("NoPixelShaders");
 	}
-	if (!gGLManager.mHasVertexShader)
+	if (!gGLManager.mHasVertexShader || !mGPUSupported)
 	{
 		maskFeatures("NoVertexShaders");
 	}
diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp
index 8c0ed298551cdb32294b472fd98a668a21516930..8024755e8665e934953c345f99614b85fb954d52 100644
--- a/indra/newview/llfilepicker.cpp
+++ b/indra/newview/llfilepicker.cpp
@@ -58,6 +58,7 @@ LLFilePicker LLFilePicker::sInstance;
 #define SLOBJECT_FILTER L"Objects (*.slobject)\0*.slobject\0"
 #define RAW_FILTER L"RAW files (*.raw)\0*.raw\0"
 #define MODEL_FILTER L"Model files (*.dae)\0*.dae\0"
+#define SCRIPT_FILTER L"Script files (*.lsl)\0*.lsl\0"
 #endif
 
 //
@@ -213,6 +214,10 @@ BOOL LLFilePicker::setupFilter(ELoadFilter filter)
 		mOFN.lpstrFilter = MODEL_FILTER \
 			L"\0";
 		break;
+	case FFLOAD_SCRIPT:
+		mOFN.lpstrFilter = SCRIPT_FILTER \
+			L"\0";
+		break;
 	default:
 		res = FALSE;
 		break;
@@ -497,6 +502,14 @@ BOOL LLFilePicker::getSaveFile(ESaveFilter filter, const std::string& filename)
 			L"Compressed Images (*.j2c)\0*.j2c\0" \
 			L"\0";
 		break;
+	case FFSAVE_SCRIPT:
+		if (filename.empty())
+		{
+			wcsncpy( mFilesW,L"untitled.lsl", FILENAME_BUFFER_SIZE);
+		}
+		mOFN.lpstrDefExt = L"txt";
+		mOFN.lpstrFilter = L"LSL Files (*.lsl)\0*.lsl\0" L"\0";
+		break;
 	default:
 		return FALSE;
 	}
@@ -620,6 +633,14 @@ Boolean LLFilePicker::navOpenFilterProc(AEDesc *theItem, void *info, void *callB
 								result = false;
 							}
 						}
+						else if (filter == FFLOAD_SCRIPT)
+						{
+							if (fileInfo.filetype != 'LSL ' &&
+								(fileInfo.extension && (CFStringCompare(fileInfo.extension, CFSTR("lsl"), kCFCompareCaseInsensitive) != kCFCompareEqualTo)) )
+							{
+								result = false;
+							}
+						}
 						
 						if (fileInfo.extension)
 						{
@@ -653,12 +674,12 @@ OSStatus	LLFilePicker::doNavChooseDialog(ELoadFilter filter)
 	//   (It is destroyed by NavDialogDispose() below.)
 	error = NavCreateChooseFileDialog(&mNavOptions, NULL, NULL, NULL, navOpenFilterProc, (void*)(&filter), &navRef);
 
-	gViewerWindow->mWindow->beforeDialog();
+	gViewerWindow->getWindow()->beforeDialog();
 
 	if (error == noErr)
 		error = NavDialogRun(navRef);
 
-	gViewerWindow->mWindow->afterDialog();
+	gViewerWindow->getWindow()->afterDialog();
 
 	if (error == noErr)
 		error = NavDialogGetReply(navRef, &navReply);
@@ -766,6 +787,12 @@ OSStatus	LLFilePicker::doNavSaveDialog(ESaveFilter filter, const std::string& fi
 			extension = CFSTR(".j2c");
 			break;
 		
+		case FFSAVE_SCRIPT:
+			type = 'LSL ';
+			creator = '\?\?\?\?';
+			extension = CFSTR(".lsl");
+			break;
+		
 		case FFSAVE_ALL:
 		default:
 			type = '\?\?\?\?';
@@ -808,13 +835,13 @@ OSStatus	LLFilePicker::doNavSaveDialog(ESaveFilter filter, const std::string& fi
 		}
 	}
 	
-	gViewerWindow->mWindow->beforeDialog();
+	gViewerWindow->getWindow()->beforeDialog();
 
 	// Run the dialog
 	if (error == noErr)
 		error = NavDialogRun(navRef);
 
-	gViewerWindow->mWindow->afterDialog();
+	gViewerWindow->getWindow()->afterDialog();
 
 	if (error == noErr)
 		error = NavDialogGetReply(navRef, &navReply);
@@ -1192,7 +1219,12 @@ static std::string add_imageload_filter_to_gtkchooser(GtkWindow *picker)
 	add_common_filters_to_gtkchooser(gfilter, picker, filtername);
 	return filtername;
 }
-
+ 
+static std::string add_script_filter_to_gtkchooser(GtkWindow *picker)
+{
+	return add_simple_mime_filter_to_gtkchooser(picker,  "text/plain",
+							LLTrans::getString("script_files") + " (*.lsl)");
+}
 
 BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename )
 {
@@ -1204,7 +1236,7 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
 		return FALSE;
 	}
 
-	gViewerWindow->mWindow->beforeDialog();
+	gViewerWindow->getWindow()->beforeDialog();
 
 	reset();
 	
@@ -1258,6 +1290,10 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
 				 LLTrans::getString("compressed_image_files") + " (*.j2c)");
 			suggest_ext = ".j2c";
 			break;
+		case FFSAVE_SCRIPT:
+			caption += add_script_filter_to_gtkchooser(picker);
+			suggest_ext = ".lsl";
+			break;
 		default:;
 			break;
 		}
@@ -1284,7 +1320,7 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
 		rtn = (getFileCount() == 1);
 	}
 
-	gViewerWindow->mWindow->afterDialog();
+	gViewerWindow->getWindow()->afterDialog();
 
 	return rtn;
 }
@@ -1299,7 +1335,7 @@ BOOL LLFilePicker::getOpenFile( ELoadFilter filter, bool blocking )
 		return FALSE;
 	}
 
-	gViewerWindow->mWindow->beforeDialog();
+	gViewerWindow->getWindow()->beforeDialog();
 
 	reset();
 	
@@ -1323,6 +1359,9 @@ BOOL LLFilePicker::getOpenFile( ELoadFilter filter, bool blocking )
 		case FFLOAD_IMAGE:
 			filtername = add_imageload_filter_to_gtkchooser(picker);
 			break;
+		case FFLOAD_SCRIPT:
+			filtername = add_script_filter_to_gtkchooser(picker);
+			break;
 		default:;
 			break;
 		}
@@ -1337,7 +1376,7 @@ BOOL LLFilePicker::getOpenFile( ELoadFilter filter, bool blocking )
 		rtn = (getFileCount() == 1);
 	}
 
-	gViewerWindow->mWindow->afterDialog();
+	gViewerWindow->getWindow()->afterDialog();
 
 	return rtn;
 }
@@ -1352,7 +1391,7 @@ BOOL LLFilePicker::getMultipleOpenFiles( ELoadFilter filter )
 		return FALSE;
 	}
 
-	gViewerWindow->mWindow->beforeDialog();
+	gViewerWindow->getWindow()->beforeDialog();
 
 	reset();
 	
@@ -1370,7 +1409,7 @@ BOOL LLFilePicker::getMultipleOpenFiles( ELoadFilter filter )
 		rtn = !mFiles.empty();
 	}
 
-	gViewerWindow->mWindow->afterDialog();
+	gViewerWindow->getWindow()->afterDialog();
 
 	return rtn;
 }
diff --git a/indra/newview/llfilepicker.h b/indra/newview/llfilepicker.h
index cd843a8f33f322e5cf3a50f44c4eea49fdf22f79..a4d5d68ff58f51ddb93b15266de9856e5eaf492e 100644
--- a/indra/newview/llfilepicker.h
+++ b/indra/newview/llfilepicker.h
@@ -84,6 +84,7 @@ class LLFilePicker
 		FFLOAD_RAW = 8,
 		FFLOAD_MODEL = 9,
 		FFLOAD_COLLADA = 10,
+		FFLOAD_SCRIPT = 11,
 	};
 
 	enum ESaveFilter
@@ -103,6 +104,7 @@ class LLFilePicker
 		FFSAVE_J2C = 12,
 		FFSAVE_PNG = 13,
 		FFSAVE_JPEG = 14,
+		FFSAVE_SCRIPT = 15,
 	};
 
 	// open the dialog. This is a modal operation
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp
index 849826bb6b8a5df0dc99935ace177629dc614826..83fb887d81b3e2ad2c19fa193886d19e7ba3aa3e 100644
--- a/indra/newview/llfloaterabout.cpp
+++ b/indra/newview/llfloaterabout.cpp
@@ -70,6 +70,22 @@ extern U32 gPacketsIn;
 
 static std::string get_viewer_release_notes_url();
 
+///----------------------------------------------------------------------------
+/// Class LLServerReleaseNotesURLFetcher
+///----------------------------------------------------------------------------
+class LLServerReleaseNotesURLFetcher : public LLHTTPClient::Responder
+{
+	LOG_CLASS(LLServerReleaseNotesURLFetcher);
+public:
+
+	static void startFetch();
+	/*virtual*/ void completedHeader(U32 status, const std::string& reason, const LLSD& content);
+	/*virtual*/ void completedRaw(
+		U32 status,
+		const std::string& reason,
+		const LLChannelDescriptors& channels,
+		const LLIOPipe::buffer_ptr_t& buffer);
+};
 
 ///----------------------------------------------------------------------------
 /// Class LLFloaterAbout
@@ -89,6 +105,11 @@ class LLFloaterAbout
 	/// separated so that we can programmatically access the same info.
 	static LLSD getInfo();
 	void onClickCopyToClipboard();
+
+	void updateServerReleaseNotesURL(const std::string& url);
+
+private:
+	void setSupportText(const std::string& server_release_notes_url);
 };
 
 
@@ -122,76 +143,17 @@ BOOL LLFloaterAbout::postBuild()
 	getChild<LLUICtrl>("copy_btn")->setCommitCallback(
 		boost::bind(&LLFloaterAbout::onClickCopyToClipboard, this));
 
-#if LL_WINDOWS
-	getWindow()->incBusyCount();
-	getWindow()->setCursor(UI_CURSOR_ARROW);
-#endif
-	LLSD info(getInfo());
-#if LL_WINDOWS
-	getWindow()->decBusyCount();
-	getWindow()->setCursor(UI_CURSOR_ARROW);
-#endif
-
-	std::ostringstream support;
-
-	// Render the LLSD from getInfo() as a format_map_t
-	LLStringUtil::format_map_t args;
-
-	// allow the "Release Notes" URL label to be localized
-	args["ReleaseNotes"] = LLTrans::getString("ReleaseNotes");
-
-	for (LLSD::map_const_iterator ii(info.beginMap()), iend(info.endMap());
-		 ii != iend; ++ii)
-	{
-		if (! ii->second.isArray())
-		{
-			// Scalar value
-			if (ii->second.isUndefined())
-			{
-				args[ii->first] = getString("none");
-			}
-			else
-			{
-				// don't forget to render value asString()
-				args[ii->first] = ii->second.asString();
-			}
-		}
-		else
-		{
-			// array value: build KEY_0, KEY_1 etc. entries
-			for (LLSD::Integer n(0), size(ii->second.size()); n < size; ++n)
-			{
-				args[STRINGIZE(ii->first << '_' << n)] = ii->second[n].asString();
-			}
-		}
-	}
-
-	// Now build the various pieces
-	support << getString("AboutHeader", args);
-	if (info.has("REGION"))
+	if (gAgent.getRegion())
 	{
-		support << "\n\n" << getString("AboutPosition", args);
+		// start fetching server release notes URL
+		setSupportText(LLTrans::getString("RetrievingData"));
+		LLServerReleaseNotesURLFetcher::startFetch();
 	}
-	support << "\n\n" << getString("AboutSystem", args);
-	support << "\n";
-	if (info.has("GRAPHICS_DRIVER_VERSION"))
+	else // not logged in
 	{
-		support << "\n" << getString("AboutDriver", args);
-	}
-	support << "\n" << getString("AboutLibs", args);
-	if (info.has("COMPILER"))
-	{
-		support << "\n" << getString("AboutCompiler", args);
-	}
-	if (info.has("PACKETS_IN"))
-	{
-		support << '\n' << getString("AboutTraffic", args);
+		setSupportText(LLStringUtil::null);
 	}
 
-	support_widget->appendText(support.str(), 
-								FALSE, 
-								LLStyle::Params()
-									.color(LLUIColorTable::instance().getColor("TextFgReadOnlyColor")));
 	support_widget->blockUndo();
 
 	// Fix views
@@ -294,7 +256,6 @@ LLSD LLFloaterAbout::getInfo()
 		info["HOSTNAME"] = gAgent.getRegion()->getHost().getHostName();
 		info["HOSTIP"] = gAgent.getRegion()->getHost().getString();
 		info["SERVER_VERSION"] = gLastVersionChannel;
-		info["SERVER_RELEASE_NOTES_URL"] = LLWeb::escapeURL(region->getCapability("ServerReleaseNotes"));
 	}
 
 	// CPU
@@ -389,6 +350,98 @@ void LLFloaterAbout::onClickCopyToClipboard()
 	support_widget->deselect();
 }
 
+void LLFloaterAbout::updateServerReleaseNotesURL(const std::string& url)
+{
+	setSupportText(url);
+}
+
+void LLFloaterAbout::setSupportText(const std::string& server_release_notes_url)
+{
+#if LL_WINDOWS
+	getWindow()->incBusyCount();
+	getWindow()->setCursor(UI_CURSOR_ARROW);
+#endif
+	LLSD info(getInfo());
+#if LL_WINDOWS
+	getWindow()->decBusyCount();
+	getWindow()->setCursor(UI_CURSOR_ARROW);
+#endif
+
+	if (LLStringUtil::startsWith(server_release_notes_url, "http")) // it's an URL
+	{
+		info["SERVER_RELEASE_NOTES_URL"] = "[" + LLWeb::escapeURL(server_release_notes_url) + " " + LLTrans::getString("ReleaseNotes") + "]";
+	}
+	else
+	{
+		info["SERVER_RELEASE_NOTES_URL"] = server_release_notes_url;
+	}
+
+	LLViewerTextEditor *support_widget =
+		getChild<LLViewerTextEditor>("support_editor", true);
+
+	std::ostringstream support;
+
+	// Render the LLSD from getInfo() as a format_map_t
+	LLStringUtil::format_map_t args;
+
+	// allow the "Release Notes" URL label to be localized
+	args["ReleaseNotes"] = LLTrans::getString("ReleaseNotes");
+
+	for (LLSD::map_const_iterator ii(info.beginMap()), iend(info.endMap());
+		 ii != iend; ++ii)
+	{
+		if (! ii->second.isArray())
+		{
+			// Scalar value
+			if (ii->second.isUndefined())
+			{
+				args[ii->first] = getString("none");
+			}
+			else
+			{
+				// don't forget to render value asString()
+				args[ii->first] = ii->second.asString();
+			}
+		}
+		else
+		{
+			// array value: build KEY_0, KEY_1 etc. entries
+			for (LLSD::Integer n(0), size(ii->second.size()); n < size; ++n)
+			{
+				args[STRINGIZE(ii->first << '_' << n)] = ii->second[n].asString();
+			}
+		}
+	}
+
+	// Now build the various pieces
+	support << getString("AboutHeader", args);
+	if (info.has("REGION"))
+	{
+		support << "\n\n" << getString("AboutPosition", args);
+	}
+	support << "\n\n" << getString("AboutSystem", args);
+	support << "\n";
+	if (info.has("GRAPHICS_DRIVER_VERSION"))
+	{
+		support << "\n" << getString("AboutDriver", args);
+	}
+	support << "\n" << getString("AboutLibs", args);
+	if (info.has("COMPILER"))
+	{
+		support << "\n" << getString("AboutCompiler", args);
+	}
+	if (info.has("PACKETS_IN"))
+	{
+		support << '\n' << getString("AboutTraffic", args);
+	}
+
+	support_widget->clear();
+	support_widget->appendText(support.str(),
+								FALSE,
+								LLStyle::Params()
+									.color(LLUIColorTable::instance().getColor("TextFgReadOnlyColor")));
+}
+
 ///----------------------------------------------------------------------------
 /// LLFloaterAboutUtil
 ///----------------------------------------------------------------------------
@@ -398,3 +451,52 @@ void LLFloaterAboutUtil::registerFloater()
 		&LLFloaterReg::build<LLFloaterAbout>);
 
 }
+
+///----------------------------------------------------------------------------
+/// Class LLServerReleaseNotesURLFetcher implementation
+///----------------------------------------------------------------------------
+// static
+void LLServerReleaseNotesURLFetcher::startFetch()
+{
+	LLViewerRegion* region = gAgent.getRegion();
+	if (!region) return;
+
+	// We cannot display the URL returned by the ServerReleaseNotes capability
+	// because opening it in an external browser will trigger a warning about untrusted
+	// SSL certificate.
+	// So we query the URL ourselves, expecting to find
+	// an URL suitable for external browsers in the "Location:" HTTP header.
+	std::string cap_url = region->getCapability("ServerReleaseNotes");
+	LLHTTPClient::get(cap_url, new LLServerReleaseNotesURLFetcher);
+}
+
+// virtual
+void LLServerReleaseNotesURLFetcher::completedHeader(U32 status, const std::string& reason, const LLSD& content)
+{
+	lldebugs << "Status: " << status << llendl;
+	lldebugs << "Reason: " << reason << llendl;
+	lldebugs << "Headers: " << content << llendl;
+
+	LLFloaterAbout* floater_about = LLFloaterReg::getTypedInstance<LLFloaterAbout>("sl_about");
+	if (floater_about)
+	{
+		std::string location = content["location"].asString();
+		if (location.empty())
+		{
+			location = floater_about->getString("ErrorFetchingServerReleaseNotesURL");
+		}
+		floater_about->updateServerReleaseNotesURL(location);
+	}
+}
+
+// virtual
+void LLServerReleaseNotesURLFetcher::completedRaw(
+	U32 status,
+	const std::string& reason,
+	const LLChannelDescriptors& channels,
+	const LLIOPipe::buffer_ptr_t& buffer)
+{
+	// Do nothing.
+	// We're overriding just because the base implementation tries to
+	// deserialize LLSD which triggers warnings.
+}
diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp
index 9f0218a95e34b463af7712ba2495ac57e1b92d8f..2a3512e21a922e334382aa9980e55a004aabff31 100644
--- a/indra/newview/llfloateranimpreview.cpp
+++ b/indra/newview/llfloateranimpreview.cpp
@@ -223,7 +223,8 @@ BOOL LLFloaterAnimPreview::postBuild()
 		// now load bvh file
 		S32 file_size;
 		
-		LLAPRFile infile(mFilenameAndPath, LL_APR_RB, &file_size);
+		LLAPRFile infile ;
+		infile.open(mFilenameAndPath, LL_APR_RB, NULL, &file_size);
 		
 		if (!infile.getFileHandle())
 		{
@@ -1062,14 +1063,19 @@ BOOL	LLPreviewAnimation::render()
 	mNeedsUpdate = FALSE;
 	LLVOAvatar* avatarp = mDummyAvatar;
 	
-	glMatrixMode(GL_PROJECTION);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
 	gGL.pushMatrix();
-	glLoadIdentity();
-	glOrtho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
+	gGL.loadIdentity();
+	gGL.ortho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
 
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.pushMatrix();
-	glLoadIdentity();
+	gGL.loadIdentity();
+
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gUIProgram.bind();
+	}
 
 	LLGLSUIDefault def;
 	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -1077,10 +1083,10 @@ BOOL	LLPreviewAnimation::render()
 
 	gl_rect_2d_simple( mFullWidth, mFullHeight );
 
-	glMatrixMode(GL_PROJECTION);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
 	gGL.popMatrix();
 
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.popMatrix();
 
 	gGL.flush();
diff --git a/indra/newview/llfloateravatar.cpp b/indra/newview/llfloateravatar.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bdc5b581a9f7ea21030145d7e1cca376b167bc8f
--- /dev/null
+++ b/indra/newview/llfloateravatar.cpp
@@ -0,0 +1,54 @@
+/** 
+ * @file llfloateravatar.h
+ * @author Leyla Farazha
+ * @brief floater for the avatar changer
+ *
+ * $LicenseInfo:firstyear=2011&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$
+ */
+
+/**
+ * Floater that appears when buying an object, giving a preview
+ * of its contents and their permissions.
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloateravatar.h"
+#include "lluictrlfactory.h"
+
+
+LLFloaterAvatar::LLFloaterAvatar(const LLSD& key)
+	:	LLFloater(key)
+{
+}
+
+LLFloaterAvatar::~LLFloaterAvatar()
+{
+}
+
+BOOL LLFloaterAvatar::postBuild()
+{
+	enableResizeCtrls(true, true, false);
+	return TRUE;
+}
+
+
diff --git a/indra/newview/llfloateravatar.h b/indra/newview/llfloateravatar.h
new file mode 100644
index 0000000000000000000000000000000000000000..cadc5e4028be24ed39f4bec922eaf4f3469bc81d
--- /dev/null
+++ b/indra/newview/llfloateravatar.h
@@ -0,0 +1,43 @@
+/** 
+ * @file llfloateravatar.h
+ * @author Leyla Farazha
+ * @brief floater for the avatar changer
+ *
+ * $LicenseInfo:firstyear=2011&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$
+ */
+
+#ifndef LL_FLOATER_AVATAR_H
+#define LL_FLOATER_AVATAR_H
+
+#include "llfloater.h"
+
+class LLFloaterAvatar:
+	public LLFloater
+{
+	friend class LLFloaterReg;
+private:
+	LLFloaterAvatar(const LLSD& key);
+	/*virtual*/	~LLFloaterAvatar();
+	/*virtual*/	BOOL postBuild();
+};
+
+#endif
diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp
index 1dfa904a191de18c5b56780d0e6a13d43c35308b..21b58d3e3dcf2f0c7115a57f9a48da6bbbf3f000 100644
--- a/indra/newview/llfloatercamera.cpp
+++ b/indra/newview/llfloatercamera.cpp
@@ -36,7 +36,6 @@
 #include "lljoystickbutton.h"
 #include "llviewercontrol.h"
 #include "llviewercamera.h"
-#include "llbottomtray.h"
 #include "lltoolmgr.h"
 #include "lltoolfocus.h"
 #include "llslider.h"
@@ -314,12 +313,6 @@ void LLFloaterCamera::onOpen(const LLSD& key)
 {
 	LLFirstUse::viewPopup();
 
-	LLButton *anchor_panel = LLBottomTray::getInstance()->getChild<LLButton>("camera_btn");
-
-	setDockControl(new LLDockControl(
-		anchor_panel, this,
-		getDockTongue(), LLDockControl::TOP));
-
 	mZoom->onOpen(key);
 
 	// Returns to previous mode, see EXT-2727(View tool should remember state).
@@ -343,27 +336,23 @@ void LLFloaterCamera::onClose(bool app_quitting)
 	if (mCurrMode == CAMERA_CTRL_MODE_PAN)
 		mPrevMode = CAMERA_CTRL_MODE_PAN;
 
-	// HACK: Should always close as docked to prevent toggleInstance without calling onOpen.
-	if ( !isDocked() )
-		setDocked(true);
 	switchMode(CAMERA_CTRL_MODE_PAN);
 	mClosed = TRUE;
 }
 
 LLFloaterCamera::LLFloaterCamera(const LLSD& val)
-:	LLTransientDockableFloater(NULL, true, val),
+:	LLFloater(val),
 	mClosed(FALSE),
 	mCurrMode(CAMERA_CTRL_MODE_PAN),
 	mPrevMode(CAMERA_CTRL_MODE_PAN)
 {
-	LLHints::registerHintTarget("view_popup", LLView::getHandle());
+	LLHints::registerHintTarget("view_popup", getHandle());
+	mCommitCallbackRegistrar.add("CameraPresets.ChangeView", boost::bind(&LLFloaterCamera::onClickCameraItem, _2));
 }
 
 // virtual
 BOOL LLFloaterCamera::postBuild()
 {
-	setIsChrome(TRUE);
-	setTitleVisible(TRUE); // restore title visibility after chrome applying
 	updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
 
 	mRotate = getChild<LLJoystickCameraRotate>(ORBIT);
@@ -379,7 +368,7 @@ BOOL LLFloaterCamera::postBuild()
 	// ensure that appearance mode is handled while building. See EXT-7796.
 	handleAvatarEditingAppearance(sAppearanceEditing);
 
-	return LLDockableFloater::postBuild();
+	return LLFloater::postBuild();
 }
 
 void LLFloaterCamera::fillFlatlistFromPanel (LLFlatListView* list, LLPanel* panel)
@@ -444,26 +433,6 @@ void LLFloaterCamera::setMode(ECameraControlMode mode)
 	updateState();
 }
 
-void LLFloaterCamera::setModeTitle(const ECameraControlMode mode)
-{
-	std::string title; 
-	switch(mode)
-	{
-	case CAMERA_CTRL_MODE_MODES:
-		title = getString("camera_modes_title");
-		break;
-	case CAMERA_CTRL_MODE_PAN:
-		title = getString("pan_mode_title");
-		break;
-	case CAMERA_CTRL_MODE_PRESETS:
-		title = getString("presets_mode_title");
-		break;
-	default:
-		break;
-	}
-	setTitle(title);
-}
-
 void LLFloaterCamera::switchMode(ECameraControlMode mode)
 {
 	setMode(mode);
@@ -543,7 +512,6 @@ void LLFloaterCamera::updateState()
 	{
 		iter->second->setToggleState(iter->first == mCurrMode);
 	}
-	setModeTitle(mCurrMode);
 }
 
 void LLFloaterCamera::updateItemsSelection()
diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h
index 424191ef2632b5cb99200d720ea43a2b25f0d5ab..4d6d03f22d9078e150720bf44b6ee3fdba7753c1 100644
--- a/indra/newview/llfloatercamera.h
+++ b/indra/newview/llfloatercamera.h
@@ -27,7 +27,7 @@
 #ifndef LLFLOATERCAMERA_H
 #define LLFLOATERCAMERA_H
 
-#include "lltransientdockablefloater.h"
+#include "llfloater.h"
 #include "lliconctrl.h"
 #include "lltextbox.h"
 #include "llflatlistview.h"
@@ -45,8 +45,7 @@ enum ECameraControlMode
 	CAMERA_CTRL_MODE_PRESETS
 };
 
-class LLFloaterCamera
-	:	public LLTransientDockableFloater
+class LLFloaterCamera : public LLFloater
 {
 	friend class LLFloaterReg;
 	
@@ -103,9 +102,6 @@ class LLFloaterCamera
 	/* sets a new mode preserving previous one and updates ui*/
 	void setMode(ECameraControlMode mode);
 
-	/** set title appropriate to passed mode */
-	void setModeTitle(const ECameraControlMode mode);
-
 	/* updates the state (UI) according to the current mode */
 	void updateState();
 
diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp
deleted file mode 100644
index 2679dbb78bac04165b7b9564f9b6f7ef9aa77308..0000000000000000000000000000000000000000
--- a/indra/newview/llfloaterchat.cpp
+++ /dev/null
@@ -1,485 +0,0 @@
-/** 
- * @file llfloaterchat.cpp
- * @brief LLFloaterChat class 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$
- */
-
-/**
- * Actually the "Chat History" floater.
- * Should be llfloaterchathistory, not llfloaterchat.
- */
-
-#include "llviewerprecompiledheaders.h"
-
-// project include
-#include "llagent.h"
-#include "llappviewer.h"
-#include "llbutton.h"
-#include "llcheckboxctrl.h"
-#include "llcombobox.h"
-#include "llconsole.h"
-#include "llfloateractivespeakers.h"
-#include "llfloaterchatterbox.h"
-#include "llfloaterreg.h"
-#include "llfloaterscriptdebug.h"
-#include "llkeyboard.h"
-//#include "lllineeditor.h"
-#include "llmutelist.h"
-//#include "llresizehandle.h"
-#include "llchatbar.h"
-#include "llrecentpeople.h"
-#include "llpanelblockedlist.h"
-#include "llslurl.h"
-#include "llstatusbar.h"
-#include "llviewertexteditor.h"
-#include "llviewergesture.h"			// for triggering gestures
-#include "llviewermessage.h"
-#include "llviewerwindow.h"
-#include "llviewercontrol.h"
-#include "lluictrlfactory.h"
-#include "lllogchat.h"
-#include "lltexteditor.h"
-#include "lltextparser.h"
-#include "llweb.h"
-#include "llstylemap.h"
-
-// linden library includes
-#include "llaudioengine.h"
-#include "llchat.h"
-#include "llfontgl.h"
-#include "llrect.h"
-#include "llerror.h"
-#include "llstring.h"
-#include "llwindow.h"
-#include "message.h"
-
-//
-// Constants
-//
-const F32 INSTANT_MSG_SIZE = 8.0f;
-const F32 CHAT_MSG_SIZE = 8.0f;
-
-
-//
-// Global statics
-//
-LLColor4 get_text_color(const LLChat& chat);
-
-//
-// Member Functions
-//
-LLFloaterChat::LLFloaterChat(const LLSD& seed)
-	: LLFloater(seed),
-	  mPanel(NULL)
-{
-	mFactoryMap["chat_panel"] = LLCallbackMap(createChatPanel, NULL);
-	mFactoryMap["active_speakers_panel"] = LLCallbackMap(createSpeakersPanel, NULL);
-	//Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this,"floater_chat_history.xml");
-
-}
-
-LLFloaterChat::~LLFloaterChat()
-{
-	// Children all cleaned up by default view destructor.
-}
-
-void LLFloaterChat::draw()
-{
-	// enable say and shout only when text available
-		
-	childSetValue("toggle_active_speakers_btn", childIsVisible("active_speakers_panel"));
-
-	LLChatBar* chat_barp = findChild<LLChatBar>("chat_panel", TRUE);
-	if (chat_barp)
-	{
-		chat_barp->refresh();
-	}
-
-	mPanel->refreshSpeakers();
-	LLFloater::draw();
-}
-
-BOOL LLFloaterChat::postBuild()
-{
-	// Hide the chat overlay when our history is visible.
-	setVisibleCallback(boost::bind(&LLFloaterChat::updateConsoleVisibility, this));
-	
-	mPanel = (LLPanelActiveSpeakers*)getChild<LLPanel>("active_speakers_panel");
-
-	childSetCommitCallback("show mutes",onClickToggleShowMute,this); //show mutes
-	childSetVisible("Chat History Editor with mute",FALSE);
-	childSetAction("toggle_active_speakers_btn", onClickToggleActiveSpeakers, this);
-
-	return TRUE;
-}
-
-void LLFloaterChat::updateConsoleVisibility()
-{
-	if(gDisconnected)
-	{
-		return;
-	}
-	// determine whether we should show console due to not being visible
-	gConsole->setVisible( !isInVisibleChain()								// are we not in part of UI being drawn?
-							|| isMinimized()								// are we minimized?
-							|| (getHost() && getHost()->isMinimized() ));	// are we hosted in a minimized floater?
-}
-
-void add_timestamped_line(LLViewerTextEditor* edit, LLChat chat, const LLColor4& color)
-{
-	std::string line = chat.mText;
-	bool prepend_newline = true;
-	if (gSavedSettings.getBOOL("ChatShowTimestamps"))
-	{
-		edit->appendTime(prepend_newline);
-		prepend_newline = false;
-	}
-
-	// If the msg is from an agent (not yourself though),
-	// extract out the sender name and replace it with the hotlinked name.
-	if (chat.mSourceType == CHAT_SOURCE_AGENT &&
-		chat.mFromID != LLUUID::null)
-	{
-		chat.mURL = LLSLURL("agent", chat.mFromID, "inspect").getSLURLString();
-	}
-
-	// If the chat line has an associated url, link it up to the name.
-	if (!chat.mURL.empty()
-		&& (line.length() > chat.mFromName.length() && line.find(chat.mFromName,0) == 0))
-	{
-		std::string start_line = line.substr(0, chat.mFromName.length() + 1);
-		line = line.substr(chat.mFromName.length() + 1);
-		edit->appendText(start_line, prepend_newline, LLStyleMap::instance().lookup(chat.mFromID,chat.mURL));
-		edit->blockUndo();
-		prepend_newline = false;
-	}
-	edit->appendText(line, prepend_newline, LLStyle::Params().color(color));
-	edit->blockUndo();
-}
-
-// static
-void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file)
-{	
-	if (log_to_file && (gSavedPerAccountSettings.getBOOL("LogChat"))) 
-	{
-		if (chat.mChatType != CHAT_TYPE_WHISPER && chat.mChatType != CHAT_TYPE_SHOUT)
-		{
-			LLLogChat::saveHistory("chat", chat.mFromName, chat.mFromID, chat.mText);
-		}
-		else
-		{
-			LLLogChat::saveHistory("chat", "", chat.mFromID, chat.mFromName + " " + chat.mText);
-		}
-	}
-	
-	LLColor4 color = get_text_color(chat);
-	
-	if (!log_to_file) color = LLColor4::grey;	//Recap from log file.
-
-	if (chat.mChatType == CHAT_TYPE_DEBUG_MSG)
-	{
-		if(gSavedSettings.getBOOL("ShowScriptErrors") == FALSE)
-			return;
-		if (gSavedSettings.getS32("ShowScriptErrorsLocation") == 1)
-		{
-			LLFloaterScriptDebug::addScriptLine(chat.mText,
-												chat.mFromName, 
-												color, 
-												chat.mFromID);
-			return;
-		}
-	}
-	
-	// could flash the chat button in the status bar here. JC
-	LLFloaterChat* chat_floater = LLFloaterChat::getInstance();
-	LLViewerTextEditor*	history_editor = chat_floater->getChild<LLViewerTextEditor>("Chat History Editor");
-	LLViewerTextEditor*	history_editor_with_mute = chat_floater->getChild<LLViewerTextEditor>("Chat History Editor with mute");
-
-	if (!chat.mMuted)
-	{
-		add_timestamped_line(history_editor, chat, color);
-		add_timestamped_line(history_editor_with_mute, chat, color);
-	}
-	else
-	{
-		// desaturate muted chat
-		LLColor4 muted_color = lerp(color, LLColor4::grey, 0.5f);
-		add_timestamped_line(history_editor_with_mute, chat, color);
-	}
-	
-	// add objects as transient speakers that can be muted
-	if (chat.mSourceType == CHAT_SOURCE_OBJECT)
-	{
-		chat_floater->mPanel->setSpeaker(chat.mFromID, chat.mFromName, LLSpeaker::STATUS_NOT_IN_CHANNEL, LLSpeaker::SPEAKER_OBJECT);
-	}
-
-	// start tab flashing on incoming text from other users (ignoring system text, etc)
-	if (!chat_floater->isInVisibleChain() && chat.mSourceType == CHAT_SOURCE_AGENT)
-	{
-		LLFloaterChatterBox::getInstance()->setFloaterFlashing(chat_floater, TRUE);
-	}
-}
-
-// static
-void LLFloaterChat::setHistoryCursorAndScrollToEnd()
-{
-	LLViewerTextEditor*	history_editor = LLFloaterChat::getInstance()->getChild<LLViewerTextEditor>("Chat History Editor");
-	LLViewerTextEditor*	history_editor_with_mute = LLFloaterChat::getInstance()->getChild<LLViewerTextEditor>("Chat History Editor with mute");
-	
-	if (history_editor) 
-	{
-		history_editor->setCursorAndScrollToEnd();
-	}
-	if (history_editor_with_mute)
-	{
-		 history_editor_with_mute->setCursorAndScrollToEnd();
-	}
-}
-
-
-//static 
-void LLFloaterChat::onClickMute(void *data)
-{
-	LLFloaterChat* self = (LLFloaterChat*)data;
-
-	LLComboBox*	chatter_combo = self->getChild<LLComboBox>("chatter combobox");
-
-	const std::string& name = chatter_combo->getSimple();
-	LLUUID id = chatter_combo->getCurrentID();
-
-	if (name.empty()) return;
-
-	LLMute mute(id);
-	mute.setFromDisplayName(name);
-	LLMuteList::getInstance()->add(mute);
-	LLPanelBlockedList::showPanelAndSelect(mute.mID);
-}
-
-//static
-void LLFloaterChat::onClickToggleShowMute(LLUICtrl* caller, void *data)
-{
-	LLFloaterChat* floater = (LLFloaterChat*)data;
-
-
-	//LLCheckBoxCtrl*	
-	BOOL show_mute = floater->getChild<LLCheckBoxCtrl>("show mutes")->get();
-	LLViewerTextEditor*	history_editor = floater->getChild<LLViewerTextEditor>("Chat History Editor");
-	LLViewerTextEditor*	history_editor_with_mute = floater->getChild<LLViewerTextEditor>("Chat History Editor with mute");
-
-	if (!history_editor || !history_editor_with_mute)
-		return;
-
-	//BOOL show_mute = floater->mShowMuteCheckBox->get();
-	if (show_mute)
-	{
-		history_editor->setVisible(FALSE);
-		history_editor_with_mute->setVisible(TRUE);
-		history_editor_with_mute->setCursorAndScrollToEnd();
-	}
-	else
-	{
-		history_editor->setVisible(TRUE);
-		history_editor_with_mute->setVisible(FALSE);
-		history_editor->setCursorAndScrollToEnd();
-	}
-}
-
-// Put a line of chat in all the right places
-void LLFloaterChat::addChat(const LLChat& chat, BOOL local_agent)
-{
-	triggerAlerts(chat.mText);
-
-	// Add the sender to the list of people with which we've recently interacted.
-	// this is not the best place to add _all_ messages to recent list
-	// comment this for now, may remove later on code cleanup
-	//if(chat.mSourceType == CHAT_SOURCE_AGENT && chat.mFromID.notNull())
-	//	LLRecentPeople::instance().add(chat.mFromID);
-	
-	addChatHistory(chat, true);
-}
-
-// Moved from lltextparser.cpp to break llui/llaudio library dependency.
-//static
-void LLFloaterChat::triggerAlerts(const std::string& text)
-{
-	LLTextParser* parser = LLTextParser::getInstance();
-//    bool spoken=FALSE;
-	for (S32 i=0;i<parser->mHighlights.size();i++)
-	{
-		LLSD& highlight = parser->mHighlights[i];
-		if (parser->findPattern(text,highlight) >= 0 )
-		{
-			if(gAudiop)
-			{
-				if ((std::string)highlight["sound_lluuid"] != LLUUID::null.asString())
-				{
-					gAudiop->triggerSound(highlight["sound_lluuid"].asUUID(), 
-						gAgent.getID(),
-						1.f,
-						LLAudioEngine::AUDIO_TYPE_UI,
-						gAgent.getPositionGlobal() );
-				}
-/*				
-				if (!spoken) 
-				{
-					LLTextToSpeech* text_to_speech = NULL;
-					text_to_speech = LLTextToSpeech::getInstance();
-					spoken = text_to_speech->speak((LLString)highlight["voice"],text); 
-				}
- */
-			}
-			if (highlight["flash"])
-			{
-				LLWindow* viewer_window = gViewerWindow->getWindow();
-				if (viewer_window && viewer_window->getMinimized())
-				{
-					viewer_window->flashIcon(5.f);
-				}
-			}
-		}
-	}
-}
-
-LLColor4 get_text_color(const LLChat& chat)
-{
-	LLColor4 text_color;
-
-	if(chat.mMuted)
-	{
-		text_color.setVec(0.8f, 0.8f, 0.8f, 1.f);
-	}
-	else
-	{
-		switch(chat.mSourceType)
-		{
-		case CHAT_SOURCE_SYSTEM:
-			text_color = LLUIColorTable::instance().getColor("SystemChatColor");
-			break;
-		case CHAT_SOURCE_AGENT:
-		    if (chat.mFromID.isNull())
-			{
-				text_color = LLUIColorTable::instance().getColor("SystemChatColor");
-			}
-			else
-			{
-				if(gAgent.getID() == chat.mFromID)
-				{
-					text_color = LLUIColorTable::instance().getColor("UserChatColor");
-				}
-				else
-				{
-					text_color = LLUIColorTable::instance().getColor("AgentChatColor");
-				}
-			}
-			break;
-		case CHAT_SOURCE_OBJECT:
-			if (chat.mChatType == CHAT_TYPE_DEBUG_MSG)
-			{
-				text_color = LLUIColorTable::instance().getColor("ScriptErrorColor");
-			}
-			else if ( chat.mChatType == CHAT_TYPE_OWNER )
-			{
-				text_color = LLUIColorTable::instance().getColor("llOwnerSayChatColor");
-			}
-			else
-			{
-				text_color = LLUIColorTable::instance().getColor("ObjectChatColor");
-			}
-			break;
-		default:
-			text_color.setToWhite();
-		}
-
-		if (!chat.mPosAgent.isExactlyZero())
-		{
-			LLVector3 pos_agent = gAgent.getPositionAgent();
-			F32 distance_squared = dist_vec_squared(pos_agent, chat.mPosAgent);
-			F32 dist_near_chat = gAgent.getNearChatRadius();
-			if (distance_squared > dist_near_chat * dist_near_chat)
-			{
-				// diminish far-off chat
-				text_color.mV[VALPHA] = 0.8f;
-			}
-		}
-	}
-
-	return text_color;
-}
-
-//static
-void LLFloaterChat::loadHistory()
-{
-	LLLogChat::loadHistory(std::string("chat"), &chatFromLogFile, (void *)LLFloaterChat::getInstance()); 
-}
-
-//static
-void LLFloaterChat::chatFromLogFile(LLLogChat::ELogLineType type , const LLSD& line, void* userdata)
-{
-	switch (type)
-	{
-	case LLLogChat::LOG_EMPTY:
-	case LLLogChat::LOG_END:
-		// *TODO: nice message from XML file here
-		break;
-	case LLLogChat::LOG_LINE:
-	case LLLogChat::LOG_LLSD:
-		{
-			LLChat chat;					
-			chat.mText = line["message"].asString();
-			get_text_color(chat);
-			addChatHistory(chat,  FALSE);
-		}
-		break;
-	default:
-		// nothing
-		break;
-	}
-}
-
-//static
-void* LLFloaterChat::createSpeakersPanel(void* data)
-{
-	return new LLPanelActiveSpeakers(LLLocalSpeakerMgr::getInstance(), TRUE);
-}
-
-//static
-void* LLFloaterChat::createChatPanel(void* data)
-{
-	LLChatBar* chatp = new LLChatBar();
-	return chatp;
-}
-
-// static
-void LLFloaterChat::onClickToggleActiveSpeakers(void* userdata)
-{
-	LLFloaterChat* self = (LLFloaterChat*)userdata;
-
-	self->childSetVisible("active_speakers_panel", !self->childIsVisible("active_speakers_panel"));
-}
-
-//static
- LLFloaterChat* LLFloaterChat::getInstance()
- {
-	 return LLFloaterReg::getTypedInstance<LLFloaterChat>("chat", LLSD()) ;
-	 
- }
diff --git a/indra/newview/llfloaterchat.h b/indra/newview/llfloaterchat.h
deleted file mode 100644
index fb2aabbfdf7f6be441472fec19937478c7d6d41a..0000000000000000000000000000000000000000
--- a/indra/newview/llfloaterchat.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/** 
- * @file llfloaterchat.h
- * @brief LLFloaterChat class definition
- *
- * $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$
- */
-
-/*
- * Actually the "Chat History" floater.
- * Should be llfloaterchathistory, not llfloaterchat.
- */
-
-#ifndef LL_LLFLOATERCHAT_H
-#define LL_LLFLOATERCHAT_H
-
-#include "llfloater.h"
-#include "lllogchat.h"
-
-class LLChat;
-class LLPanelActiveSpeakers;
-class LLLogChat;
-
-class LLFloaterChat : public LLFloater
-{
-public:
-	LLFloaterChat(const LLSD& seed);
-	~LLFloaterChat();
-
-	virtual void draw();
-	virtual BOOL postBuild();
-
-	void updateConsoleVisibility();
-
-	static void setHistoryCursorAndScrollToEnd();
-
-	//  *TODO:Skinning - move these to LLChat (or LLViewerChat?)
-	// Add chat to console and history list.
-	// Color based on source, type, distance.
-	static void addChat(const LLChat& chat, BOOL local_agent = FALSE);
-	// Add chat to history alone.
-	static void addChatHistory(const LLChat& chat, bool log_to_file = true);
-	
-	static void triggerAlerts(const std::string& text);
-
-	static void onClickMute(void *data);
-	static void onClickToggleShowMute(LLUICtrl* caller, void *data);
-	static void onClickToggleActiveSpeakers(void* userdata);
-	static void chatFromLogFile(LLLogChat::ELogLineType type, const LLSD& line, void* userdata);
-	static void loadHistory();
-	static void* createSpeakersPanel(void* data);
-	static void* createChatPanel(void* data);
-	
-	static LLFloaterChat* getInstance(); // *TODO:Skinning Deprecate
-	
-	LLPanelActiveSpeakers* mPanel;
-	BOOL mScrolledToEnd;
-};
-
-#endif
diff --git a/indra/newview/llfloaterchatterbox.cpp b/indra/newview/llfloaterchatterbox.cpp
deleted file mode 100644
index dc33e45dd46e2e76673b079b348ae91e07b3b3f2..0000000000000000000000000000000000000000
--- a/indra/newview/llfloaterchatterbox.cpp
+++ /dev/null
@@ -1,344 +0,0 @@
-/** 
- * @file llfloaterchatterbox.cpp
- * @author Richard
- * @date 2007-05-08
- * @brief Implementation of the chatterbox integrated conversation ui
- *
- * $LicenseInfo:firstyear=2007&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 "llfloaterreg.h"
-#include "llfloaterchatterbox.h"
-#include "lluictrlfactory.h"
-#include "llfloaterfriends.h"
-#include "llfloatergroups.h"
-#include "llviewercontrol.h"
-#include "llvoicechannel.h"
-#include "llimpanel.h"
-#include "llimview.h"
-
-//
-// LLFloaterMyFriends
-//
-
-LLFloaterMyFriends::LLFloaterMyFriends(const LLSD& seed)
-	: LLFloater(seed)
-{
-	mFactoryMap["friends_panel"] = LLCallbackMap(LLFloaterMyFriends::createFriendsPanel, NULL);
-	mFactoryMap["groups_panel"] = LLCallbackMap(LLFloaterMyFriends::createGroupsPanel, NULL);
-	//Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_my_friends.xml");
-}
-
-LLFloaterMyFriends::~LLFloaterMyFriends()
-{
-}
-
-BOOL LLFloaterMyFriends::postBuild()
-{
-	return TRUE;
-}
-
-void LLFloaterMyFriends::onOpen(const LLSD& key)
-{
-	if (key.asString() == "friends")
-	{
-		childShowTab("friends_and_groups", "friends_panel");
-	}
-	else if (key.asString() == "groups")
-	{
-		childShowTab("friends_and_groups", "groups_panel");
-	}
-}
-
-//static
-void* LLFloaterMyFriends::createFriendsPanel(void* data)
-{
-	return new LLPanelFriends();
-}
-
-//static
-void* LLFloaterMyFriends::createGroupsPanel(void* data)
-{
-	return new LLPanelGroups();
-}
-
-//static
-LLFloaterMyFriends* LLFloaterMyFriends::getInstance()
-{
-	return LLFloaterReg::getTypedInstance<LLFloaterMyFriends>("contacts", "friends") ;
-}
-
-//
-// LLFloaterChatterBox
-//
-LLFloaterChatterBox::LLFloaterChatterBox(const LLSD& seed)
-:	LLMultiFloater(seed),
-	mActiveVoiceFloater(NULL)
-{
-	mAutoResize = FALSE;
-
-	//Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_chatterbox.xml", FALSE);
-}
-
-LLFloaterChatterBox::~LLFloaterChatterBox()
-{
-}
-
-BOOL LLFloaterChatterBox::postBuild()
-{
-	setVisibleCallback(boost::bind(&LLFloaterChatterBox::onVisibilityChange, this, _2));
-	
-	if (gSavedSettings.getBOOL("ContactsTornOff"))
-	{
-		LLFloaterMyFriends* floater_contacts = LLFloaterMyFriends::getInstance();
-		if(floater_contacts)
-		{
-			// add then remove to set up relationship for re-attach
-			addFloater(floater_contacts, FALSE);
-			removeFloater(floater_contacts);
-			// reparent to floater view
-			gFloaterView->addChild(floater_contacts);
-		}
-	}
-	else
-	{
-		addFloater(LLFloaterMyFriends::getInstance(), TRUE);
-	}
-
-	mTabContainer->lockTabs();
-	return TRUE;
-}
-
-BOOL LLFloaterChatterBox::handleKeyHere(KEY key, MASK mask)
-{
-	if (key == 'W' && mask == MASK_CONTROL)
-	{
-		LLFloater* floater = getActiveFloater();
-		// is user closeable and is system closeable
-		if (floater && floater->canClose())
-		{
-			if (floater->isCloseable())
-			{
-				floater->closeFloater();
-			}
-			else
-			{
-				// close chatterbox window if frontmost tab is reserved, non-closeable tab
-				// such as contacts or near me
-				closeFloater();
-			}
-		}
-		return TRUE;
-	}
-
-	return LLMultiFloater::handleKeyHere(key, mask);
-}
-
-void LLFloaterChatterBox::draw()
-{
-	// clear new im notifications when chatterbox is visible
-	if (!isMinimized()) 
-	{
-		gIMMgr->clearNewIMNotification();
-	}
-	LLFloater* current_active_floater = getCurrentVoiceFloater();
-	// set icon on tab for floater currently associated with active voice channel
-	if(mActiveVoiceFloater != current_active_floater)
-	{
-		// remove image from old floater's tab
-		if (mActiveVoiceFloater)
-		{
-			mTabContainer->setTabImage(mActiveVoiceFloater, "");
-		}
-	}
-
-	// update image on current active tab
-	if (current_active_floater)
-	{
-		LLColor4 icon_color = LLColor4::white;
-		LLVoiceChannel* channelp = LLVoiceChannel::getCurrentVoiceChannel();
-		if (channelp)
-		{
-			if (channelp->isActive())
-			{
-				icon_color = LLColor4::green;
-			}
-			else if (channelp->getState() == LLVoiceChannel::STATE_ERROR)
-			{
-				icon_color = LLColor4::red;
-			}
-			else // active, but not connected
-			{
-				icon_color = LLColor4::yellow;
-			}
-		}
-		mTabContainer->setTabImage(current_active_floater, "active_voice_tab.tga", icon_color);
-	}
-
-	mActiveVoiceFloater = current_active_floater;
-
-	LLMultiFloater::draw();
-}
-
-void LLFloaterChatterBox::onOpen(const LLSD& key)
-{
-	//*TODO:Skinning show the session id associated with key
-	if (key.asString() == "local")
-	{
-	}
-	else if (key.isDefined())
-	{
-		/*LLFloaterIMPanel* impanel = gIMMgr->findFloaterBySession(key.asUUID());
-		if (impanel)
-		{
-			impanel->openFloater();
-		}*/
-	}
-}
-
-void LLFloaterChatterBox::onVisibilityChange ( const LLSD& new_visibility )
-{
-}
-
-void LLFloaterChatterBox::removeFloater(LLFloater* floaterp)
-{
-	if(!floaterp) return;
-		
-	if (floaterp->getName() == "chat floater")
-	{
-		// only my friends floater now locked
-		mTabContainer->lockTabs(mTabContainer->getNumLockedTabs() - 1);
-		gSavedSettings.setBOOL("ChatHistoryTornOff", TRUE);
-		floaterp->setCanClose(TRUE);
-	}
-	else if (floaterp->getName() == "floater_my_friends")
-	{
-		// only chat floater now locked
-		mTabContainer->lockTabs(mTabContainer->getNumLockedTabs() - 1);
-		gSavedSettings.setBOOL("ContactsTornOff", TRUE);
-		floaterp->setCanClose(TRUE);
-	}
-	LLMultiFloater::removeFloater(floaterp);
-}
-
-void LLFloaterChatterBox::addFloater(LLFloater* floaterp, 
-									BOOL select_added_floater, 
-									LLTabContainer::eInsertionPoint insertion_point)
-{
-	if(!floaterp) return;
-	
-	S32 num_locked_tabs = mTabContainer->getNumLockedTabs();
-
-	// already here
-	if (floaterp->getHost() == this)
-	{
-		openFloater(floaterp->getKey());
-		return;
-	}
-
-	// make sure my friends and chat history both locked when re-attaching chat history
-	if (floaterp->getName() == "chat floater")
-	{
-		mTabContainer->unlockTabs();
-		// add chat history as second tab if contact window is present, first tab otherwise
-		if (getChildView("floater_my_friends"))
-		{
-			// assuming contacts window is first tab, select it
-			mTabContainer->selectFirstTab();
-			// and add ourselves after
-			LLMultiFloater::addFloater(floaterp, select_added_floater, LLTabContainer::RIGHT_OF_CURRENT);
-		}
-		else
-		{
-			LLMultiFloater::addFloater(floaterp, select_added_floater, LLTabContainer::START);
-		}
-		
-		// make sure first two tabs are now locked
-		mTabContainer->lockTabs(num_locked_tabs + 1);
-		gSavedSettings.setBOOL("ChatHistoryTornOff", FALSE);
-		floaterp->setCanClose(FALSE);
-	}
-	else if (floaterp->getName() == "floater_my_friends")
-	{
-		mTabContainer->unlockTabs();
-		// add contacts window as first tab
-		LLMultiFloater::addFloater(floaterp, select_added_floater, LLTabContainer::START);
-		// make sure first two tabs are now locked
-		mTabContainer->lockTabs(num_locked_tabs + 1);
-		gSavedSettings.setBOOL("ContactsTornOff", FALSE);
-		floaterp->setCanClose(FALSE);
-	}
-	else
-	{
-		LLMultiFloater::addFloater(floaterp, select_added_floater, insertion_point);
-		// openFloater(floaterp->getKey());
-	}
-
-	// make sure active voice icon shows up for new tab
-	if (floaterp == mActiveVoiceFloater)
-	{
-		mTabContainer->setTabImage(floaterp, "active_voice_tab.tga");	
-	}
-}
-
-//static
-LLFloaterChatterBox* LLFloaterChatterBox::getInstance()
-{
-	return LLFloaterReg::getTypedInstance<LLFloaterChatterBox>("communicate", LLSD()) ; 
-}
-
-//static 
-LLFloater* LLFloaterChatterBox::getCurrentVoiceFloater()
-{
-	if (!LLVoiceClient::getInstance()->voiceEnabled())
-	{
-		return NULL;
-	}
-	if (LLVoiceChannelProximal::getInstance() == LLVoiceChannel::getCurrentVoiceChannel())
-	{
-		return NULL;
-	}
-	else
-	{
-		LLFloaterChatterBox* floater = LLFloaterChatterBox::getInstance();
-		if(!floater) return NULL;
-		// iterator over all IM tabs (skip friends and near me)
-		for (S32 i = 0; i < floater->getFloaterCount(); i++)
-		{
-			LLPanel* panelp = floater->mTabContainer->getPanelByIndex(i);
-			if (panelp->getName() == "im_floater")
-			{
-				// only LLFloaterIMPanels are called "im_floater"
-				LLFloaterIMPanel* im_floaterp = (LLFloaterIMPanel*)panelp;
-				LLVoiceChannel* voice_channel = LLIMModel::getInstance()->getVoiceChannel(im_floaterp->getSessionID());
-				if (voice_channel  == LLVoiceChannel::getCurrentVoiceChannel())
-				{
-					return im_floaterp;
-				}
-			}
-		}
-	}
-	return NULL;
-}
diff --git a/indra/newview/llfloaterchatterbox.h b/indra/newview/llfloaterchatterbox.h
deleted file mode 100644
index 3a8bfe2fa4dd7b9683ba0d6b65b84df382ac4042..0000000000000000000000000000000000000000
--- a/indra/newview/llfloaterchatterbox.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/** 
- * @file llfloaterchatterbox.h
- * @author Richard
- * @date 2007-05-04
- * @brief Integrated friends and group management/communication tool
- *
- * $LicenseInfo:firstyear=2007&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_LLFLOATERCHATTERBOX_H
-#define LL_LLFLOATERCHATTERBOX_H
-
-#include "llfloater.h"
-#include "llmultifloater.h"
-#include "llstring.h"
-#include "llimpanel.h"
-
-class LLTabContainer;
-
-class LLFloaterChatterBox : public LLMultiFloater
-{
-public:
-	LLFloaterChatterBox(const LLSD& seed);
-	virtual ~LLFloaterChatterBox();
-	
-	/*virtual*/ BOOL postBuild();
-	/*virtual*/ BOOL handleKeyHere(KEY key, MASK mask);
-	/*virtual*/ void draw();
-	/*virtual*/ void onOpen(const LLSD& key);
-
-	/*virtual*/ void removeFloater(LLFloater* floaterp);
-	/*virtual*/ void addFloater(LLFloater* floaterp, 
-								BOOL select_added_floater, 
-								LLTabContainer::eInsertionPoint insertion_point = LLTabContainer::END);
-
-	static LLFloaterChatterBox* getInstance(); // *TODO:Skinning Deprecate
-	static LLFloater* getCurrentVoiceFloater();
-	
-protected:
-	void onVisibilityChange ( const LLSD& new_visibility );
-	
-	LLFloater* mActiveVoiceFloater;
-};
-
-
-class LLFloaterMyFriends : public LLFloater
-{
-public:
-	LLFloaterMyFriends(const LLSD& seed);
-	virtual ~LLFloaterMyFriends();
-
-	/*virtual*/ BOOL postBuild();
-	/*virtual*/ void onOpen(const LLSD& key);
-
-	static LLFloaterMyFriends* getInstance(); // *TODO:Skinning Deprecate
-	
-	static void* createFriendsPanel(void* data);
-	static void* createGroupsPanel(void* data);
-};
-
-#endif // LL_LLFLOATERCHATTERBOX_H
diff --git a/indra/newview/llfloatercolorpicker.cpp b/indra/newview/llfloatercolorpicker.cpp
index 659e52271afc44402f361f31c08d7cb644936a4c..05d73c24167195fa80ad649160ee6df01bec7e9c 100644
--- a/indra/newview/llfloatercolorpicker.cpp
+++ b/indra/newview/llfloatercolorpicker.cpp
@@ -271,7 +271,7 @@ void LLFloaterColorPicker::destroyUI ()
 	if ( mSwatchView )
 	{
 		this->removeChild ( mSwatchView );
-		delete mSwatchView;
+		mSwatchView->die();;
 		mSwatchView = NULL;
 	}
 }
diff --git a/indra/newview/llfloaterdestinations.cpp b/indra/newview/llfloaterdestinations.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..af21cb593ffef2a8527cf027d2e6760f3df03e4b
--- /dev/null
+++ b/indra/newview/llfloaterdestinations.cpp
@@ -0,0 +1,54 @@
+/** 
+ * @file llfloaterdestinations.h
+ * @author Leyla Farazha
+ * @brief floater for the destinations guide
+ *
+ * $LicenseInfo:firstyear=2011&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$
+ */
+
+/**
+ * Floater that appears when buying an object, giving a preview
+ * of its contents and their permissions.
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llfloaterdestinations.h"
+#include "lluictrlfactory.h"
+
+
+LLFloaterDestinations::LLFloaterDestinations(const LLSD& key)
+	:	LLFloater(key)
+{
+}
+
+LLFloaterDestinations::~LLFloaterDestinations()
+{
+}
+
+BOOL LLFloaterDestinations::postBuild()
+{
+	enableResizeCtrls(true, true, false);
+	return TRUE;
+}
+
+
diff --git a/indra/newview/llfloaterdestinations.h b/indra/newview/llfloaterdestinations.h
new file mode 100644
index 0000000000000000000000000000000000000000..85d9b3391e5782dcd263a449a40aef1e24fb2aec
--- /dev/null
+++ b/indra/newview/llfloaterdestinations.h
@@ -0,0 +1,43 @@
+/** 
+ * @file llfloaterdestinations.h
+ * @author Leyla Farazha
+ * @brief floater for the destinations guide
+ *
+ * $LicenseInfo:firstyear=2011&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$
+ */
+
+#ifndef LL_FLOATER_DESTINATIONS_H
+#define LL_FLOATER_DESTINATIONS_H
+
+#include "llfloater.h"
+
+class LLFloaterDestinations:
+	public LLFloater
+{
+	friend class LLFloaterReg;
+private:
+	LLFloaterDestinations(const LLSD& key);
+	/*virtual*/	~LLFloaterDestinations();
+	/*virtual*/	BOOL postBuild();
+};
+
+#endif
diff --git a/indra/newview/llfloaterfriends.cpp b/indra/newview/llfloaterfriends.cpp
deleted file mode 100644
index f93568d617b97e8248be6d2e4692d84799c7cffd..0000000000000000000000000000000000000000
--- a/indra/newview/llfloaterfriends.cpp
+++ /dev/null
@@ -1,807 +0,0 @@
-/** 
- * @file llfloaterfriends.cpp
- * @author Phoenix
- * @date 2005-01-13
- * @brief Implementation of the friends floater
- *
- * $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 "llviewerprecompiledheaders.h"
-
-#include "llfloaterfriends.h"
-
-#include <sstream>
-
-#include "lldir.h"
-
-#include "llagent.h"
-#include "llappviewer.h"	// for gLastVersionChannel
-#include "llfloateravatarpicker.h"
-#include "llviewerwindow.h"
-#include "llbutton.h"
-#include "llavataractions.h"
-#include "llinventorymodel.h"
-#include "llnamelistctrl.h"
-#include "llnotificationsutil.h"
-#include "llresmgr.h"
-#include "llscrolllistctrl.h"
-#include "llscrolllistitem.h"
-#include "llscrolllistcell.h"
-#include "lluictrlfactory.h"
-#include "llmenucommands.h"
-#include "llviewercontrol.h"
-#include "llviewermessage.h"
-#include "lleventtimer.h"
-#include "lltextbox.h"
-#include "llvoiceclient.h"
-
-// *TODO: Move more common stuff to LLAvatarActions?
-
-//Maximum number of people you can select to do an operation on at once.
-#define MAX_FRIEND_SELECT 20
-#define DEFAULT_PERIOD 5.0
-#define RIGHTS_CHANGE_TIMEOUT 5.0
-#define OBSERVER_TIMEOUT 0.5
-
-#define ONLINE_SIP_ICON_NAME "slim_icon_16_viewer.tga"
-
-// simple class to observe the calling cards.
-class LLLocalFriendsObserver : public LLFriendObserver, public LLEventTimer
-{
-public: 
-	LLLocalFriendsObserver(LLPanelFriends* floater) : mFloater(floater), LLEventTimer(OBSERVER_TIMEOUT)
-	{
-		mEventTimer.stop();
-	}
-	virtual ~LLLocalFriendsObserver()
-	{
-		mFloater = NULL;
-	}
-	virtual void changed(U32 mask)
-	{
-		// events can arrive quickly in bulk - we need not process EVERY one of them -
-		// so we wait a short while to let others pile-in, and process them in aggregate.
-		mEventTimer.start();
-
-		// save-up all the mask-bits which have come-in
-		mMask |= mask;
-	}
-	virtual BOOL tick()
-	{
-		mFloater->updateFriends(mMask);
-
-		mEventTimer.stop();
-		mMask = 0;
-
-		return FALSE;
-	}
-	
-protected:
-	LLPanelFriends* mFloater;
-	U32 mMask;
-};
-
-LLPanelFriends::LLPanelFriends() :
-	LLPanel(),
-	LLEventTimer(DEFAULT_PERIOD),
-	mObserver(NULL),
-	mShowMaxSelectWarning(TRUE),
-	mAllowRightsChange(TRUE),
-	mNumRightsChanged(0)
-{
-	mEventTimer.stop();
-	mObserver = new LLLocalFriendsObserver(this);
-	LLAvatarTracker::instance().addObserver(mObserver);
-	// For notification when SIP online status changes.
-	LLVoiceClient::getInstance()->addObserver(mObserver);
-}
-
-LLPanelFriends::~LLPanelFriends()
-{
-	// For notification when SIP online status changes.
-	LLVoiceClient::getInstance()->removeObserver(mObserver);
-	LLAvatarTracker::instance().removeObserver(mObserver);
-	delete mObserver;
-}
-
-BOOL LLPanelFriends::tick()
-{
-	mEventTimer.stop();
-	mPeriod = DEFAULT_PERIOD;
-	mAllowRightsChange = TRUE;
-	updateFriends(LLFriendObserver::ADD);
-	return FALSE;
-}
-
-void LLPanelFriends::updateFriends(U32 changed_mask)
-{
-	LLUUID selected_id;
-	LLCtrlListInterface *friends_list = childGetListInterface("friend_list");
-	if (!friends_list) return;
-	LLCtrlScrollInterface *friends_scroll = childGetScrollInterface("friend_list");
-	if (!friends_scroll) return;
-	
-	// We kill the selection warning, otherwise we'll spam with warning popups
-	// if the maximum amount of friends are selected
-	mShowMaxSelectWarning = false;
-
-	std::vector<LLUUID> selected_friends = getSelectedIDs();
-	if(changed_mask & (LLFriendObserver::ADD | LLFriendObserver::REMOVE | LLFriendObserver::ONLINE))
-	{
-		refreshNames(changed_mask);
-	}
-	else if(changed_mask & LLFriendObserver::POWERS)
-	{
-		--mNumRightsChanged;
-		if(mNumRightsChanged > 0)
-		{
-			mPeriod = RIGHTS_CHANGE_TIMEOUT;	
-			mEventTimer.start();
-			mAllowRightsChange = FALSE;
-		}
-		else
-		{
-			tick();
-		}
-	}
-	if(selected_friends.size() > 0)
-	{
-		// only non-null if friends was already found. This may fail,
-		// but we don't really care here, because refreshUI() will
-		// clean up the interface.
-		friends_list->setCurrentByID(selected_id);
-		for(std::vector<LLUUID>::iterator itr = selected_friends.begin(); itr != selected_friends.end(); ++itr)
-		{
-			friends_list->setSelectedByValue(*itr, true);
-		}
-	}
-
-	refreshUI();
-	mShowMaxSelectWarning = true;
-}
-
-// virtual
-BOOL LLPanelFriends::postBuild()
-{
-	mFriendsList = getChild<LLScrollListCtrl>("friend_list");
-	mFriendsList->setMaxSelectable(MAX_FRIEND_SELECT);
-	mFriendsList->setMaximumSelectCallback(boost::bind(&LLPanelFriends::onMaximumSelect));
-	mFriendsList->setCommitOnSelectionChange(TRUE);
-	mFriendsList->setContextMenu(LLScrollListCtrl::MENU_AVATAR);
-	childSetCommitCallback("friend_list", onSelectName, this);
-	getChild<LLScrollListCtrl>("friend_list")->setDoubleClickCallback(onClickIM, this);
-
-	U32 changed_mask = LLFriendObserver::ADD | LLFriendObserver::REMOVE | LLFriendObserver::ONLINE;
-	refreshNames(changed_mask);
-
-	childSetAction("im_btn", onClickIM, this);
-	childSetAction("profile_btn", onClickProfile, this);
-	childSetAction("offer_teleport_btn", onClickOfferTeleport, this);
-	childSetAction("pay_btn", onClickPay, this);
-	childSetAction("add_btn", onClickAddFriend, this);
-	childSetAction("remove_btn", onClickRemove, this);
-
-	setDefaultBtn("im_btn");
-
-	updateFriends(LLFriendObserver::ADD);
-	refreshUI();
-
-	// primary sort = online status, secondary sort = name
-	mFriendsList->sortByColumn(std::string("friend_name"), TRUE);
-	mFriendsList->sortByColumn(std::string("icon_online_status"), FALSE);
-
-	return TRUE;
-}
-
-BOOL LLPanelFriends::addFriend(const LLUUID& agent_id)
-{
-	LLAvatarTracker& at = LLAvatarTracker::instance();
-	const LLRelationship* relationInfo = at.getBuddyInfo(agent_id);
-	if(!relationInfo) return FALSE;
-
-	bool isOnlineSIP = LLVoiceClient::getInstance()->isOnlineSIP(agent_id);
-	bool isOnline = relationInfo->isOnline();
-
-	std::string fullname;
-	BOOL have_name = gCacheName->getFullName(agent_id, fullname);
-	
-	LLSD element;
-	element["id"] = agent_id;
-	LLSD& friend_column = element["columns"][LIST_FRIEND_NAME];
-	friend_column["column"] = "friend_name";
-	friend_column["value"] = fullname;
-	friend_column["font"]["name"] = "SANSSERIF";
-	friend_column["font"]["style"] = "NORMAL";	
-
-	LLSD& online_status_column = element["columns"][LIST_ONLINE_STATUS];
-	online_status_column["column"] = "icon_online_status";
-	online_status_column["type"] = "icon";
-	
-	if (isOnline)
-	{
-		friend_column["font"]["style"] = "BOLD";	
-		online_status_column["value"] = "icon_avatar_online.tga";
-	}
-	else if(isOnlineSIP)
-	{
-		friend_column["font"]["style"] = "BOLD";	
-		online_status_column["value"] = ONLINE_SIP_ICON_NAME;
-	}
-
-	LLSD& online_column = element["columns"][LIST_VISIBLE_ONLINE];
-	online_column["column"] = "icon_visible_online";
-	online_column["type"] = "checkbox";
-	online_column["value"] = relationInfo->isRightGrantedTo(LLRelationship::GRANT_ONLINE_STATUS);
-
-	LLSD& visible_map_column = element["columns"][LIST_VISIBLE_MAP];
-	visible_map_column["column"] = "icon_visible_map";
-	visible_map_column["type"] = "checkbox";
-	visible_map_column["value"] = relationInfo->isRightGrantedTo(LLRelationship::GRANT_MAP_LOCATION);
-
-	LLSD& edit_my_object_column = element["columns"][LIST_EDIT_MINE];
-	edit_my_object_column["column"] = "icon_edit_mine";
-	edit_my_object_column["type"] = "checkbox";
-	edit_my_object_column["value"] = relationInfo->isRightGrantedTo(LLRelationship::GRANT_MODIFY_OBJECTS);
-
-	LLSD& edit_their_object_column = element["columns"][LIST_EDIT_THEIRS];
-	edit_their_object_column["column"] = "icon_edit_theirs";
-	edit_their_object_column["type"] = "checkbox";
-	edit_their_object_column["enabled"] = "";
-	edit_their_object_column["value"] = relationInfo->isRightGrantedFrom(LLRelationship::GRANT_MODIFY_OBJECTS);
-
-	LLSD& update_gen_column = element["columns"][LIST_FRIEND_UPDATE_GEN];
-	update_gen_column["column"] = "friend_last_update_generation";
-	update_gen_column["value"] = have_name ? relationInfo->getChangeSerialNum() : -1;
-
-	mFriendsList->addElement(element, ADD_BOTTOM);
-	return have_name;
-}
-
-// propagate actual relationship to UI.
-// Does not resort the UI list because it can be called frequently. JC
-BOOL LLPanelFriends::updateFriendItem(const LLUUID& agent_id, const LLRelationship* info)
-{
-	if (!info) return FALSE;
-	LLScrollListItem* itemp = mFriendsList->getItem(agent_id);
-	if (!itemp) return FALSE;
-	
-	bool isOnlineSIP = LLVoiceClient::getInstance()->isOnlineSIP(itemp->getUUID());
-	bool isOnline = info->isOnline();
-
-	std::string fullname;
-	BOOL have_name = gCacheName->getFullName(agent_id, fullname);
-	
-	// Name of the status icon to use
-	std::string statusIcon;
-	
-	if(isOnline)
-	{
-		statusIcon = "icon_avatar_online.tga";
-	}
-	else if(isOnlineSIP)
-	{
-		statusIcon = ONLINE_SIP_ICON_NAME;
-	}
-
-	itemp->getColumn(LIST_ONLINE_STATUS)->setValue(statusIcon);
-	
-	itemp->getColumn(LIST_FRIEND_NAME)->setValue(fullname);
-	// render name of online friends in bold text
-	((LLScrollListText*)itemp->getColumn(LIST_FRIEND_NAME))->setFontStyle((isOnline || isOnlineSIP) ? LLFontGL::BOLD : LLFontGL::NORMAL);	
-	itemp->getColumn(LIST_VISIBLE_ONLINE)->setValue(info->isRightGrantedTo(LLRelationship::GRANT_ONLINE_STATUS));
-	itemp->getColumn(LIST_VISIBLE_MAP)->setValue(info->isRightGrantedTo(LLRelationship::GRANT_MAP_LOCATION));
-	itemp->getColumn(LIST_EDIT_MINE)->setValue(info->isRightGrantedTo(LLRelationship::GRANT_MODIFY_OBJECTS));
-	S32 change_generation = have_name ? info->getChangeSerialNum() : -1;
-	itemp->getColumn(LIST_FRIEND_UPDATE_GEN)->setValue(change_generation);
-
-	// enable this item, in case it was disabled after user input
-	itemp->setEnabled(TRUE);
-
-	// Do not resort, this function can be called frequently.
-	return have_name;
-}
-
-void LLPanelFriends::refreshRightsChangeList()
-{
-	std::vector<LLUUID> friends = getSelectedIDs();
-	S32 num_selected = friends.size();
-
-	bool can_offer_teleport = num_selected >= 1;
-	bool selected_friends_online = true;
-
-	const LLRelationship* friend_status = NULL;
-	for(std::vector<LLUUID>::iterator itr = friends.begin(); itr != friends.end(); ++itr)
-	{
-		friend_status = LLAvatarTracker::instance().getBuddyInfo(*itr);
-		if (friend_status)
-		{
-			if(!friend_status->isOnline())
-			{
-				can_offer_teleport = false;
-				selected_friends_online = false;
-			}
-		}
-		else // missing buddy info, don't allow any operations
-		{
-			can_offer_teleport = false;
-		}
-	}
-	
-	if (num_selected == 0)  // nothing selected
-	{
-		childSetEnabled("im_btn", FALSE);
-		childSetEnabled("offer_teleport_btn", FALSE);
-	}
-	else // we have at least one friend selected...
-	{
-		// only allow IMs to groups when everyone in the group is online
-		// to be consistent with context menus in inventory and because otherwise
-		// offline friends would be silently dropped from the session
-		childSetEnabled("im_btn", selected_friends_online || num_selected == 1);
-		childSetEnabled("offer_teleport_btn", can_offer_teleport);
-	}
-}
-
-struct SortFriendsByID
-{
-	bool operator() (const LLScrollListItem* const a, const LLScrollListItem* const b) const
-	{
-		return a->getValue().asUUID() < b->getValue().asUUID();
-	}
-};
-
-void LLPanelFriends::refreshNames(U32 changed_mask)
-{
-	std::vector<LLUUID> selected_ids = getSelectedIDs();	
-	S32 pos = mFriendsList->getScrollPos();	
-	
-	// get all buddies we know about
-	LLAvatarTracker::buddy_map_t all_buddies;
-	LLAvatarTracker::instance().copyBuddyList(all_buddies);
-
-	BOOL have_names = TRUE;
-
-	if(changed_mask & (LLFriendObserver::ADD | LLFriendObserver::REMOVE))
-	{
-		have_names &= refreshNamesSync(all_buddies);
-	}
-
-	if(changed_mask & LLFriendObserver::ONLINE)
-	{
-		have_names &= refreshNamesPresence(all_buddies);
-	}
-
-	if (!have_names)
-	{
-		mEventTimer.start();
-	}
-	// Changed item in place, need to request sort and update columns
-	// because we might have changed data in a column on which the user
-	// has already sorted. JC
-	mFriendsList->updateSort();
-
-	// re-select items
-	mFriendsList->selectMultiple(selected_ids);
-	mFriendsList->setScrollPos(pos);
-}
-
-BOOL LLPanelFriends::refreshNamesSync(const LLAvatarTracker::buddy_map_t & all_buddies)
-{
-	mFriendsList->deleteAllItems();
-
-	BOOL have_names = TRUE;
-	LLAvatarTracker::buddy_map_t::const_iterator buddy_it = all_buddies.begin();
-
-	for(; buddy_it != all_buddies.end(); ++buddy_it)
-	{
-		have_names &= addFriend(buddy_it->first);
-	}
-
-	return have_names;
-}
-
-BOOL LLPanelFriends::refreshNamesPresence(const LLAvatarTracker::buddy_map_t & all_buddies)
-{
-	std::vector<LLScrollListItem*> items = mFriendsList->getAllData();
-	std::sort(items.begin(), items.end(), SortFriendsByID());
-
-	LLAvatarTracker::buddy_map_t::const_iterator buddy_it  = all_buddies.begin();
-	std::vector<LLScrollListItem*>::const_iterator item_it = items.begin();
-	BOOL have_names = TRUE;
-
-	while(true)
-	{
-		if(item_it == items.end() || buddy_it == all_buddies.end())
-		{
-			break;
-		}
-
-		const LLUUID & buddy_uuid = buddy_it->first;
-		const LLUUID & item_uuid  = (*item_it)->getValue().asUUID();
-		if(item_uuid == buddy_uuid)
-		{
-			const LLRelationship* info = buddy_it->second;
-			if (!info) 
-			{	
-				++item_it;
-				continue;
-			}
-			
-			S32 last_change_generation = (*item_it)->getColumn(LIST_FRIEND_UPDATE_GEN)->getValue().asInteger();
-			if (last_change_generation < info->getChangeSerialNum())
-			{
-				// update existing item in UI
-				have_names &= updateFriendItem(buddy_it->first, info);
-			}
-
-			++buddy_it;
-			++item_it;
-		}
-		else if(item_uuid < buddy_uuid)
-		{
-			++item_it;
-		}
-		else //if(item_uuid > buddy_uuid)
-		{
-			++buddy_it;
-		}
-	}
-
-	return have_names;
-}
-
-void LLPanelFriends::refreshUI()
-{	
-	BOOL single_selected = FALSE;
-	BOOL multiple_selected = FALSE;
-	int num_selected = mFriendsList->getAllSelected().size();
-	if(num_selected > 0)
-	{
-		single_selected = TRUE;
-		if(num_selected > 1)
-		{
-			multiple_selected = TRUE;		
-		}
-	}
-
-
-	//Options that can only be performed with one friend selected
-	childSetEnabled("profile_btn", single_selected && !multiple_selected);
-	childSetEnabled("pay_btn", single_selected && !multiple_selected);
-
-	//Options that can be performed with up to MAX_FRIEND_SELECT friends selected
-	//(single_selected will always be true in this situations)
-	childSetEnabled("remove_btn", single_selected);
-	childSetEnabled("im_btn", single_selected);
-//	childSetEnabled("friend_rights", single_selected);
-
-	refreshRightsChangeList();
-}
-
-std::vector<LLUUID> LLPanelFriends::getSelectedIDs()
-{
-	LLUUID selected_id;
-	std::vector<LLUUID> friend_ids;
-	std::vector<LLScrollListItem*> selected = mFriendsList->getAllSelected();
-	for(std::vector<LLScrollListItem*>::iterator itr = selected.begin(); itr != selected.end(); ++itr)
-	{
-		friend_ids.push_back((*itr)->getUUID());
-	}
-	return friend_ids;
-}
-
-// static
-void LLPanelFriends::onSelectName(LLUICtrl* ctrl, void* user_data)
-{
-	LLPanelFriends* panelp = (LLPanelFriends*)user_data;
-
-	if(panelp)
-	{
-		panelp->refreshUI();
-		// check to see if rights have changed
-		panelp->applyRightsToFriends();
-	}
-}
-
-//static
-void LLPanelFriends::onMaximumSelect()
-{
-	LLSD args;
-	args["MAX_SELECT"] = llformat("%d", MAX_FRIEND_SELECT);
-	LLNotificationsUtil::add("MaxListSelectMessage", args);
-};
-
-// static
-void LLPanelFriends::onClickProfile(void* user_data)
-{
-	LLPanelFriends* panelp = (LLPanelFriends*)user_data;
-
-	std::vector<LLUUID> ids = panelp->getSelectedIDs();
-	if(ids.size() > 0)
-	{
-		LLUUID agent_id = ids[0];
-		LLAvatarActions::showProfile(agent_id);
-	}
-}
-
-// static
-void LLPanelFriends::onClickIM(void* user_data)
-{
-	LLPanelFriends* panelp = (LLPanelFriends*)user_data;
-
-	std::vector<LLUUID> ids = panelp->getSelectedIDs();
-	if(ids.size() > 0)
-	{
-		if(ids.size() == 1)
-		{
-			LLAvatarActions::startIM(ids[0]);
-		}
-		else
-		{
-			LLAvatarActions::startConference(ids);
-		}
-	}
-}
-
-// static
-void LLPanelFriends::onPickAvatar(const std::vector<std::string>& names,
-									const std::vector<LLUUID>& ids)
-{
-	if (names.empty()) return;
-	if (ids.empty()) return;
-	LLAvatarActions::requestFriendshipDialog(ids[0], names[0]);
-}
-
-// static
-void LLPanelFriends::onClickAddFriend(void* user_data)
-{
-	LLPanelFriends* panelp = (LLPanelFriends*)user_data;
-	LLFloater* root_floater = gFloaterView->getParentFloater(panelp);
-	LLFloaterAvatarPicker* picker = LLFloaterAvatarPicker::show(boost::bind(&LLPanelFriends::onPickAvatar, _1,_2), FALSE, TRUE);
-	if (root_floater)
-	{
-		root_floater->addDependentFloater(picker);
-	}
-}
-
-// static
-void LLPanelFriends::onClickRemove(void* user_data)
-{
-	LLPanelFriends* panelp = (LLPanelFriends*)user_data;
-	LLAvatarActions::removeFriendsDialog(panelp->getSelectedIDs());
-}
-
-// static
-void LLPanelFriends::onClickOfferTeleport(void* user_data)
-{
-	LLPanelFriends* panelp = (LLPanelFriends*)user_data;
-	LLAvatarActions::offerTeleport(panelp->getSelectedIDs());
-}
-
-// static
-void LLPanelFriends::onClickPay(void* user_data)
-{
-	LLPanelFriends* panelp = (LLPanelFriends*)user_data;
-
-	std::vector<LLUUID> ids = panelp->getSelectedIDs();
-	if(ids.size() == 1)
-	{	
-		LLAvatarActions::pay(ids[0]);
-	}
-}
-
-void LLPanelFriends::confirmModifyRights(rights_map_t& ids, EGrantRevoke command)
-{
-	if (ids.empty()) return;
-	
-	LLSD args;
-	if(ids.size() > 0)
-	{
-		rights_map_t* rights = new rights_map_t(ids);
-
-		// for single friend, show their name
-		if(ids.size() == 1)
-		{
-			LLUUID agent_id = ids.begin()->first;
-			std::string first, last;
-			if(gCacheName->getName(agent_id, first, last))
-			{
-				args["FIRST_NAME"] = first;
-				args["LAST_NAME"] = last;	
-			}
-			if (command == GRANT)
-			{
-				LLNotificationsUtil::add("GrantModifyRights", 
-					args, 
-					LLSD(), 
-					boost::bind(&LLPanelFriends::modifyRightsConfirmation, this, _1, _2, rights));
-			}
-			else
-			{
-				LLNotificationsUtil::add("RevokeModifyRights", 
-					args, 
-					LLSD(), 
-					boost::bind(&LLPanelFriends::modifyRightsConfirmation, this, _1, _2, rights));
-			}
-		}
-		else
-		{
-			if (command == GRANT)
-			{
-				LLNotificationsUtil::add("GrantModifyRightsMultiple", 
-					args, 
-					LLSD(), 
-					boost::bind(&LLPanelFriends::modifyRightsConfirmation, this, _1, _2, rights));
-			}
-			else
-			{
-				LLNotificationsUtil::add("RevokeModifyRightsMultiple", 
-					args, 
-					LLSD(), 
-					boost::bind(&LLPanelFriends::modifyRightsConfirmation, this, _1, _2, rights));
-			}
-		}
-	}
-}
-
-bool LLPanelFriends::modifyRightsConfirmation(const LLSD& notification, const LLSD& response, rights_map_t* rights)
-{
-	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-	if(0 == option)
-	{
-		sendRightsGrant(*rights);
-	}
-	else
-	{
-		// need to resync view with model, since user cancelled operation
-		rights_map_t::iterator rights_it;
-		for (rights_it = rights->begin(); rights_it != rights->end(); ++rights_it)
-		{
-			const LLRelationship* info = LLAvatarTracker::instance().getBuddyInfo(rights_it->first);
-			updateFriendItem(rights_it->first, info);
-		}
-	}
-	refreshUI();
-
-	delete rights;
-	return false;
-}
-
-void LLPanelFriends::applyRightsToFriends()
-{
-	BOOL rights_changed = FALSE;
-
-	// store modify rights separately for confirmation
-	rights_map_t rights_updates;
-
-	BOOL need_confirmation = FALSE;
-	EGrantRevoke confirmation_type = GRANT;
-
-	// this assumes that changes only happened to selected items
-	std::vector<LLScrollListItem*> selected = mFriendsList->getAllSelected();
-	for(std::vector<LLScrollListItem*>::iterator itr = selected.begin(); itr != selected.end(); ++itr)
-	{
-		LLUUID id = (*itr)->getValue();
-		const LLRelationship* buddy_relationship = LLAvatarTracker::instance().getBuddyInfo(id);
-		if (buddy_relationship == NULL) continue;
-
-		bool show_online_staus = (*itr)->getColumn(LIST_VISIBLE_ONLINE)->getValue().asBoolean();
-		bool show_map_location = (*itr)->getColumn(LIST_VISIBLE_MAP)->getValue().asBoolean();
-		bool allow_modify_objects = (*itr)->getColumn(LIST_EDIT_MINE)->getValue().asBoolean();
-
-		S32 rights = buddy_relationship->getRightsGrantedTo();
-		if(buddy_relationship->isRightGrantedTo(LLRelationship::GRANT_ONLINE_STATUS) != show_online_staus)
-		{
-			rights_changed = TRUE;
-			if(show_online_staus) 
-			{
-				rights |= LLRelationship::GRANT_ONLINE_STATUS;
-			}
-			else 
-			{
-				// ONLINE_STATUS necessary for MAP_LOCATION
-				rights &= ~LLRelationship::GRANT_ONLINE_STATUS;
-				rights &= ~LLRelationship::GRANT_MAP_LOCATION;
-				// propagate rights constraint to UI
-				(*itr)->getColumn(LIST_VISIBLE_MAP)->setValue(FALSE);
-			}
-		}
-		if(buddy_relationship->isRightGrantedTo(LLRelationship::GRANT_MAP_LOCATION) != show_map_location)
-		{
-			rights_changed = TRUE;
-			if(show_map_location) 
-			{
-				// ONLINE_STATUS necessary for MAP_LOCATION
-				rights |= LLRelationship::GRANT_MAP_LOCATION;
-				rights |= LLRelationship::GRANT_ONLINE_STATUS;
-				(*itr)->getColumn(LIST_VISIBLE_ONLINE)->setValue(TRUE);
-			}
-			else 
-			{
-				rights &= ~LLRelationship::GRANT_MAP_LOCATION;
-			}
-		}
-		
-		// now check for change in modify object rights, which requires confirmation
-		if(buddy_relationship->isRightGrantedTo(LLRelationship::GRANT_MODIFY_OBJECTS) != allow_modify_objects)
-		{
-			rights_changed = TRUE;
-			need_confirmation = TRUE;
-
-			if(allow_modify_objects)
-			{
-				rights |= LLRelationship::GRANT_MODIFY_OBJECTS;
-				confirmation_type = GRANT;
-			}
-			else
-			{
-				rights &= ~LLRelationship::GRANT_MODIFY_OBJECTS;
-				confirmation_type = REVOKE;
-			}
-		}
-
-		if (rights_changed)
-		{
-			rights_updates.insert(std::make_pair(id, rights));
-			// disable these ui elements until response from server
-			// to avoid race conditions
-			(*itr)->setEnabled(FALSE);
-		}
-	}
-
-	// separately confirm grant and revoke of modify rights
-	if (need_confirmation)
-	{
-		confirmModifyRights(rights_updates, confirmation_type);
-	}
-	else
-	{
-		sendRightsGrant(rights_updates);
-	}
-}
-
-void LLPanelFriends::sendRightsGrant(rights_map_t& ids)
-{
-	if (ids.empty()) return;
-
-	LLMessageSystem* msg = gMessageSystem;
-
-	// setup message header
-	msg->newMessageFast(_PREHASH_GrantUserRights);
-	msg->nextBlockFast(_PREHASH_AgentData);
-	msg->addUUID(_PREHASH_AgentID, gAgent.getID());
-	msg->addUUID(_PREHASH_SessionID, gAgent.getSessionID());
-
-	rights_map_t::iterator id_it;
-	rights_map_t::iterator end_it = ids.end();
-	for(id_it = ids.begin(); id_it != end_it; ++id_it)
-	{
-		msg->nextBlockFast(_PREHASH_Rights);
-		msg->addUUID(_PREHASH_AgentRelated, id_it->first);
-		msg->addS32(_PREHASH_RelatedRights, id_it->second);
-	}
-
-	mNumRightsChanged = ids.size();
-	gAgent.sendReliableMessage();
-}
diff --git a/indra/newview/llfloaterfriends.h b/indra/newview/llfloaterfriends.h
deleted file mode 100644
index a303477c95a744e10cf71646a71fb070b535b3db..0000000000000000000000000000000000000000
--- a/indra/newview/llfloaterfriends.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/** 
- * @file llfloaterfriends.h
- * @author Phoenix
- * @date 2005-01-13
- * @brief Declaration of class for displaying the local agent's friends.
- *
- * $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$
- */
-
-#ifndef LL_LLFLOATERFRIENDS_H
-#define LL_LLFLOATERFRIENDS_H
-
-#include "llpanel.h"
-#include "llstring.h"
-#include "lluuid.h"
-#include "lltimer.h"
-#include "llcallingcard.h"
-
-class LLFriendObserver;
-class LLRelationship;
-class LLScrollListItem;
-class LLScrollListCtrl;
-
-/** 
- * @class LLPanelFriends
- * @brief An instance of this class is used for displaying your friends
- * and gives you quick access to all agents which a user relationship.
- *
- * @sa LLFloater
- */
-class LLPanelFriends : public LLPanel, public LLEventTimer
-{
-public:
-	LLPanelFriends();
-	virtual ~LLPanelFriends();
-
-	/** 
-	 * @brief This method either creates or brings to the front the
-	 * current instantiation of this floater. There is only once since
-	 * you can currently only look at your local friends.
-	 */
-	virtual BOOL tick();
-
-	/** 
-	 * @brief This method is called in response to the LLAvatarTracker
-	 * sending out a changed() message.
-	 */
-	void updateFriends(U32 changed_mask);
-
-	virtual BOOL postBuild();
-
-	// *HACK Made public to remove friends from LLAvatarIconCtrl context menu
-	static bool handleRemove(const LLSD& notification, const LLSD& response);
-
-private:
-
-	enum FRIENDS_COLUMN_ORDER
-	{
-		LIST_ONLINE_STATUS,
-		LIST_FRIEND_NAME,
-		LIST_VISIBLE_ONLINE,
-		LIST_VISIBLE_MAP,
-		LIST_EDIT_MINE,
-		LIST_EDIT_THEIRS,
-		LIST_FRIEND_UPDATE_GEN
-	};
-
-	// protected members
-	typedef std::map<LLUUID, S32> rights_map_t;
-	void refreshNames(U32 changed_mask);
-	BOOL refreshNamesSync(const LLAvatarTracker::buddy_map_t & all_buddies);
-	BOOL refreshNamesPresence(const LLAvatarTracker::buddy_map_t & all_buddies);
-	void refreshUI();
-	void refreshRightsChangeList();
-	void applyRightsToFriends();
-	BOOL addFriend(const LLUUID& agent_id);	
-	BOOL updateFriendItem(const LLUUID& agent_id, const LLRelationship* relationship);
-
-	typedef enum 
-	{
-		GRANT,
-		REVOKE
-	} EGrantRevoke;
-	void confirmModifyRights(rights_map_t& ids, EGrantRevoke command);
-	void sendRightsGrant(rights_map_t& ids);
-
-	// return empty vector if nothing is selected
-	std::vector<LLUUID> getSelectedIDs();
-
-	// callback methods
-	static void onSelectName(LLUICtrl* ctrl, void* user_data);
-	static bool callbackAddFriend(const LLSD& notification, const LLSD& response);
-	static bool callbackAddFriendWithMessage(const LLSD& notification, const LLSD& response);
-	static void onPickAvatar(const std::vector<std::string>& names, const std::vector<LLUUID>& ids);
-	static void onMaximumSelect();
-
-	static void onClickIM(void* user_data);
-	static void onClickProfile(void* user_data);
-	static void onClickAddFriend(void* user_data);
-	static void onClickRemove(void* user_data);
-
-	static void onClickOfferTeleport(void* user_data);
-	static void onClickPay(void* user_data);
-
-	static void onClickModifyStatus(LLUICtrl* ctrl, void* user_data);
-
-	bool modifyRightsConfirmation(const LLSD& notification, const LLSD& response, rights_map_t* rights);
-
-private:
-	// member data
-	LLFriendObserver* mObserver;
-	LLUUID mAddFriendID;
-	std::string mAddFriendName;
-	LLScrollListCtrl* mFriendsList;
-	BOOL mShowMaxSelectWarning;
-	BOOL mAllowRightsChange;
-	S32 mNumRightsChanged;
-};
-
-
-#endif // LL_LLFLOATERFRIENDS_H
diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp
index 42ec7d765b4a6313b5fc69abbdbd4a818327394c..f9a403cf9ff407a145614e515afab2f189c96c17 100644
--- a/indra/newview/llfloaterhardwaresettings.cpp
+++ b/indra/newview/llfloaterhardwaresettings.cpp
@@ -34,7 +34,9 @@
 #include "llviewercontrol.h"
 #include "llviewertexturelist.h"
 #include "llfeaturemanager.h"
+#include "llspinctrl.h"
 #include "llstartup.h"
+#include "lltextbox.h"
 #include "pipeline.h"
 
 // Linden library includes
@@ -98,18 +100,40 @@ void LLFloaterHardwareSettings::refreshEnabledState()
 	}
 
 	// if no windlight shaders, turn off nighttime brightness, gamma, and fog distance
-	getChildView("gamma")->setEnabled(!gPipeline.canUseWindLightShaders());
+	LLSpinCtrl* gamma_ctrl = getChild<LLSpinCtrl>("gamma");
+	gamma_ctrl->setEnabled(!gPipeline.canUseWindLightShaders());
 	getChildView("(brightness, lower is brighter)")->setEnabled(!gPipeline.canUseWindLightShaders());
 	getChildView("fog")->setEnabled(!gPipeline.canUseWindLightShaders());
-	getChildView("fsaa")->setEnabled(gPipeline.canUseAntiAliasing());
-	getChildView("antialiasing restart")->setVisible(!gSavedSettings.getBOOL("RenderDeferred"));
 
-	/* Enable to reset fsaa value to disabled when feature is not available.
-	if (!gPipeline.canUseAntiAliasing())
+	// anti-aliasing
 	{
-		getChild<LLUICtrl>("fsaa")->setValue((LLSD::Integer) 0);
+		LLUICtrl* fsaa_ctrl = getChild<LLUICtrl>("fsaa");
+		LLTextBox* fsaa_text = getChild<LLTextBox>("antialiasing label");
+		LLView* fsaa_restart = getChildView("antialiasing restart");
+		
+		// Enable or disable the control, the "Antialiasing:" label and the restart warning
+		// based on code support for the feature on the current hardware.
+
+		if (gPipeline.canUseAntiAliasing())
+		{
+			fsaa_ctrl->setEnabled(TRUE);
+			
+			// borrow the text color from the gamma control for consistency
+			fsaa_text->setColor(gamma_ctrl->getEnabledTextColor());
+
+			fsaa_restart->setVisible(!gSavedSettings.getBOOL("RenderDeferred"));
+		}
+		else
+		{
+			fsaa_ctrl->setEnabled(FALSE);
+			fsaa_ctrl->setValue((LLSD::Integer) 0);
+			
+			// borrow the text color from the gamma control for consistency
+			fsaa_text->setColor(gamma_ctrl->getDisabledTextColor());
+			
+			fsaa_restart->setVisible(FALSE);
+		}
 	}
-	*/
 }
 
 //============================================================================
diff --git a/indra/newview/llfloaterhelpbrowser.cpp b/indra/newview/llfloaterhelpbrowser.cpp
index 3012638d44ea7450916932c83e5a898ad85568b4..fd9c37ae7328991723402fde96a2e8114b3f43d4 100644
--- a/indra/newview/llfloaterhelpbrowser.cpp
+++ b/indra/newview/llfloaterhelpbrowser.cpp
@@ -39,6 +39,7 @@
 #include "llurlhistory.h"
 #include "llmediactrl.h"
 #include "llviewermedia.h"
+#include "llviewerhelp.h"
 
 
 LLFloaterHelpBrowser::LLFloaterHelpBrowser(const LLSD& key)
@@ -74,6 +75,17 @@ void LLFloaterHelpBrowser::buildURLHistory()
 void LLFloaterHelpBrowser::onOpen(const LLSD& key)
 {
 	gSavedSettings.setBOOL("HelpFloaterOpen", TRUE);
+
+	std::string topic = key.asString();
+
+	if (topic == "__local")
+	{
+		mBrowser->navigateToLocalPage( "help-offline" , "index.html" );
+	}
+	else
+	{
+		mBrowser->navigateTo(LLViewerHelp::instance().getURL(topic));
+	}
 }
 
 //virtual
@@ -148,8 +160,3 @@ void LLFloaterHelpBrowser::openMedia(const std::string& media_url)
 	mBrowser->navigateTo(media_url, "text/html");
 	setCurrentURL(media_url);
 }
-
-void LLFloaterHelpBrowser::navigateToLocalPage( const std::string& subdir, const std::string& filename_in )
-{
-	mBrowser->navigateToLocalPage(subdir, filename_in);
-}
diff --git a/indra/newview/llfloaterhelpbrowser.h b/indra/newview/llfloaterhelpbrowser.h
index afe0f4df690b6c868e74a211fead813a60266f1d..bf4f544a14b1cc75cde3d38158a3cb21f2719203 100644
--- a/indra/newview/llfloaterhelpbrowser.h
+++ b/indra/newview/llfloaterhelpbrowser.h
@@ -1,5 +1,5 @@
 /** 
- * @file llfloatermediabrowser.h
+ * @file llfloaterhelpbrowser.h
  * @brief HTML Help floater - uses embedded web browser control
  *
  * $LicenseInfo:firstyear=2006&license=viewerlgpl$
@@ -48,8 +48,6 @@ class LLFloaterHelpBrowser :
 	/*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event);
 
 	void openMedia(const std::string& media_url);
-
-	void navigateToLocalPage( const std::string& subdir, const std::string& filename_in );
 	
  private:
 	void buildURLHistory();
diff --git a/indra/newview/llfloaterhud.cpp b/indra/newview/llfloaterhud.cpp
index 4181d1906e55a652d6d689fbf51a949a139f0622..58c76a0b85efe08995e93a231de8c706bc98f549 100644
--- a/indra/newview/llfloaterhud.cpp
+++ b/indra/newview/llfloaterhud.cpp
@@ -54,14 +54,6 @@ LLFloaterHUD::LLFloaterHUD(const LLSD& key)
 		return;
 	}
 	
-	// Don't grab the focus as it will impede performing in-world actions
-	// while using the HUD
-	setIsChrome(TRUE);
-
-	// Chrome doesn't show the window title by default, but here we
-	// want to show it.
-	setTitleVisible(true);
-	
 	// Opaque background since we never get the focus
 	setBackgroundOpaque(TRUE);
 }
diff --git a/indra/newview/llfloaterimagepreview.cpp b/indra/newview/llfloaterimagepreview.cpp
index e4d8e3513d72f79ed481a5a5f27703da8c5e0128..92ee8ddac6a54dc94d8519b1d787fd481c9bead9 100644
--- a/indra/newview/llfloaterimagepreview.cpp
+++ b/indra/newview/llfloaterimagepreview.cpp
@@ -50,6 +50,7 @@
 #include "llvoavatar.h"
 #include "pipeline.h"
 #include "lluictrlfactory.h"
+#include "llviewershadermgr.h"
 #include "llviewertexturelist.h"
 #include "llstring.h"
 
@@ -62,6 +63,7 @@
 const S32 PREVIEW_BORDER_WIDTH = 2;
 const S32 PREVIEW_RESIZE_HANDLE_SIZE = S32(RESIZE_HANDLE_WIDTH * OO_SQRT2) + PREVIEW_BORDER_WIDTH;
 const S32 PREVIEW_HPAD = PREVIEW_RESIZE_HANDLE_SIZE;
+const S32 PREVIEW_VPAD = -24;	// yuk, hard coded
 const S32 PREF_BUTTON_HEIGHT = 16 + 7 + 16;
 const S32 PREVIEW_TEXTURE_HEIGHT = 320;
 
@@ -98,7 +100,7 @@ BOOL LLFloaterImagePreview::postBuild()
 	childSetCommitCallback("clothing_type_combo", onPreviewTypeCommit, this);
 
 	mPreviewRect.set(PREVIEW_HPAD, 
-		PREVIEW_TEXTURE_HEIGHT,
+		PREVIEW_TEXTURE_HEIGHT + PREVIEW_VPAD,
 		getRect().getWidth() - PREVIEW_HPAD, 
 		PREVIEW_HPAD + PREF_BUTTON_HEIGHT + PREVIEW_HPAD);
 	mPreviewImageRect.set(0.f, 1.f, 1.f, 0.f);
@@ -270,13 +272,13 @@ void LLFloaterImagePreview::draw()
 			gGL.begin( LLRender::QUADS );
 			{
 				gGL.texCoord2f(mPreviewImageRect.mLeft, mPreviewImageRect.mTop);
-				gGL.vertex2i(PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT);
+				gGL.vertex2i(PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT + PREVIEW_VPAD);
 				gGL.texCoord2f(mPreviewImageRect.mLeft, mPreviewImageRect.mBottom);
 				gGL.vertex2i(PREVIEW_HPAD, PREVIEW_HPAD + PREF_BUTTON_HEIGHT + PREVIEW_HPAD);
 				gGL.texCoord2f(mPreviewImageRect.mRight, mPreviewImageRect.mBottom);
 				gGL.vertex2i(r.getWidth() - PREVIEW_HPAD, PREVIEW_HPAD + PREF_BUTTON_HEIGHT + PREVIEW_HPAD);
 				gGL.texCoord2f(mPreviewImageRect.mRight, mPreviewImageRect.mTop);
-				gGL.vertex2i(r.getWidth() - PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT);
+				gGL.vertex2i(r.getWidth() - PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT + PREVIEW_VPAD);
 			}
 			gGL.end();
 
@@ -302,13 +304,13 @@ void LLFloaterImagePreview::draw()
 				gGL.begin( LLRender::QUADS );
 				{
 					gGL.texCoord2f(0.f, 1.f);
-					gGL.vertex2i(PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT);
+					gGL.vertex2i(PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT + PREVIEW_VPAD);
 					gGL.texCoord2f(0.f, 0.f);
 					gGL.vertex2i(PREVIEW_HPAD, PREVIEW_HPAD + PREF_BUTTON_HEIGHT + PREVIEW_HPAD);
 					gGL.texCoord2f(1.f, 0.f);
 					gGL.vertex2i(r.getWidth() - PREVIEW_HPAD, PREVIEW_HPAD + PREF_BUTTON_HEIGHT + PREVIEW_HPAD);
 					gGL.texCoord2f(1.f, 1.f);
-					gGL.vertex2i(r.getWidth() - PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT);
+					gGL.vertex2i(r.getWidth() - PREVIEW_HPAD, PREVIEW_TEXTURE_HEIGHT + PREVIEW_VPAD);
 				}
 				gGL.end();
 
@@ -649,25 +651,30 @@ BOOL LLImagePreviewAvatar::render()
 	gGL.pushUIMatrix();
 	gGL.loadUIIdentity();
 
-	glMatrixMode(GL_PROJECTION);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
 	gGL.pushMatrix();
-	glLoadIdentity();
-	glOrtho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
+	gGL.loadIdentity();
+	gGL.ortho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
 
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.pushMatrix();
-	glLoadIdentity();
+	gGL.loadIdentity();
 	
 
 	LLGLSUIDefault def;
 	gGL.color4f(0.15f, 0.2f, 0.3f, 1.f);
 
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gUIProgram.bind();
+	}
+
 	gl_rect_2d_simple( mFullWidth, mFullHeight );
 
-	glMatrixMode(GL_PROJECTION);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
 	gGL.popMatrix();
 
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.popMatrix();
 
 	gGL.flush();
@@ -690,8 +697,7 @@ BOOL LLImagePreviewAvatar::render()
 
 	LLVertexBuffer::unbind();
 	avatarp->updateLOD();
-	
-
+		
 	if (avatarp->mDrawable.notNull())
 	{
 		LLGLDepthTest gls_depth(GL_TRUE, GL_TRUE);
@@ -699,7 +705,7 @@ BOOL LLImagePreviewAvatar::render()
 		LLGLDisable no_blend(GL_BLEND);
 
 		LLDrawPoolAvatar *avatarPoolp = (LLDrawPoolAvatar *)avatarp->mDrawable->getFace(0)->getPool();
-		
+		gPipeline.enableLightsPreview();
 		avatarPoolp->renderAvatars(avatarp);  // renders only one avatar
 	}
 
@@ -790,15 +796,17 @@ void LLImagePreviewSculpted::setPreviewTarget(LLImageRaw* imagep, F32 distance)
 	U32 num_indices = vf.mNumIndices;
 	U32 num_vertices = vf.mNumVertices;
 
-	mVertexBuffer = new LLVertexBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL, 0);
+	mVertexBuffer = new LLVertexBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD0, 0);
 	mVertexBuffer->allocateBuffer(num_vertices, num_indices, TRUE);
 
 	LLStrider<LLVector3> vertex_strider;
 	LLStrider<LLVector3> normal_strider;
+	LLStrider<LLVector2> tc_strider;
 	LLStrider<U16> index_strider;
 
 	mVertexBuffer->getVertexStrider(vertex_strider);
 	mVertexBuffer->getNormalStrider(normal_strider);
+	mVertexBuffer->getTexCoord0Strider(tc_strider);
 	mVertexBuffer->getIndexStrider(index_strider);
 
 	// build vertices and normals
@@ -806,7 +814,8 @@ void LLImagePreviewSculpted::setPreviewTarget(LLImageRaw* imagep, F32 distance)
 	pos = (LLVector3*) vf.mPositions; pos.setStride(16);
 	LLStrider<LLVector3> norm;
 	norm = (LLVector3*) vf.mNormals; norm.setStride(16);
-		
+	LLStrider<LLVector2> tc;
+	tc = (LLVector2*) vf.mTexCoords; tc.setStride(8);
 
 	for (U32 i = 0; i < num_vertices; i++)
 	{
@@ -814,6 +823,7 @@ void LLImagePreviewSculpted::setPreviewTarget(LLImageRaw* imagep, F32 distance)
 		LLVector3 normal = *norm++;
 		normal.normalize();
 		*(normal_strider++) = normal;
+		*(tc_strider++) = *tc++;
 	}
 
 	// build indices
@@ -835,23 +845,28 @@ BOOL LLImagePreviewSculpted::render()
 	LLGLEnable cull(GL_CULL_FACE);
 	LLGLDepthTest depth(GL_TRUE);
 
-	glMatrixMode(GL_PROJECTION);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
 	gGL.pushMatrix();
-	glLoadIdentity();
-	glOrtho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
+	gGL.loadIdentity();
+	gGL.ortho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
 
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.pushMatrix();
-	glLoadIdentity();
+	gGL.loadIdentity();
 		
 	gGL.color4f(0.15f, 0.2f, 0.3f, 1.f);
 
-	gl_rect_2d_simple( mFullWidth, mFullHeight );
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gUIProgram.bind();
+	}
 
-	glMatrixMode(GL_PROJECTION);
+	gl_rect_2d_simple( mFullWidth, mFullHeight );
+	
+	gGL.matrixMode(LLRender::MM_PROJECTION);
 	gGL.popMatrix();
 
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.popMatrix();
 
 	glClear(GL_DEPTH_BUFFER_BIT);
@@ -876,17 +891,28 @@ BOOL LLImagePreviewSculpted::render()
 	const LLVolumeFace &vf = mVolume->getVolumeFace(0);
 	U32 num_indices = vf.mNumIndices;
 	
-	mVertexBuffer->setBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL);
-
 	gPipeline.enableLightsAvatar();
+
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gObjectPreviewProgram.bind();
+	}
 	gGL.pushMatrix();
 	const F32 SCALE = 1.25f;
 	gGL.scalef(SCALE, SCALE, SCALE);
 	const F32 BRIGHTNESS = 0.9f;
 	gGL.color3f(BRIGHTNESS, BRIGHTNESS, BRIGHTNESS);
+
+	mVertexBuffer->setBuffer(LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD0);
 	mVertexBuffer->draw(LLRender::TRIANGLES, num_indices, 0);
 
 	gGL.popMatrix();
+
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gObjectPreviewProgram.unbind();
+	}
+
 	return TRUE;
 }
 
diff --git a/indra/newview/llfloaterinspect.cpp b/indra/newview/llfloaterinspect.cpp
index a09b9ea235d78d18fdaebca609211fd649191742..cece8d299cc8ed2ea715828d7732a1edea325cb3 100644
--- a/indra/newview/llfloaterinspect.cpp
+++ b/indra/newview/llfloaterinspect.cpp
@@ -37,6 +37,7 @@
 #include "llselectmgr.h"
 #include "lltoolcomp.h"
 #include "lltoolmgr.h"
+#include "lltrans.h"
 #include "llviewercontrol.h"
 #include "llviewerobject.h"
 #include "lluictrlfactory.h"
@@ -166,6 +167,15 @@ LLUUID LLFloaterInspect::getSelectedUUID()
 	return LLUUID::null;
 }
 
+void LLFloaterInspect::onGetAvNameCallback(const LLUUID& idCreator, const LLAvatarName& av_name, void* FloaterPtr)
+{
+	if (FloaterPtr)
+	{
+		LLFloaterInspect* floater = (LLFloaterInspect*)FloaterPtr;
+		floater->dirty();
+	}
+}
+
 void LLFloaterInspect::refresh()
 {
 	LLUUID creator_id;
@@ -205,11 +215,32 @@ void LLFloaterInspect::refresh()
 		substitution["datetime"] = (S32) timestamp;
 		LLStringUtil::format (timeStr, substitution);
 
+		const LLUUID& idOwner = obj->mPermissions->getOwner();
+		const LLUUID& idCreator = obj->mPermissions->getCreator();
 		LLAvatarName av_name;
-		LLAvatarNameCache::get(obj->mPermissions->getOwner(), &av_name);
-		owner_name = av_name.getCompleteName();
-		LLAvatarNameCache::get(obj->mPermissions->getCreator(), &av_name);
-		creator_name = av_name.getCompleteName();
+
+		// Only work with the names if we actually get a result
+		// from the name cache. If not, defer setting the
+		// actual name and set a placeholder.
+		if (LLAvatarNameCache::get(idOwner, &av_name))
+		{
+			owner_name = av_name.getCompleteName();
+		}
+		else
+		{
+			owner_name = LLTrans::getString("RetrievingData");
+			LLAvatarNameCache::get(idOwner, boost::bind(&LLFloaterInspect::onGetAvNameCallback, _1, _2, this));
+		}
+
+		if (LLAvatarNameCache::get(idCreator, &av_name))
+		{
+			creator_name = av_name.getCompleteName();
+		}
+		else
+		{
+			creator_name = LLTrans::getString("RetrievingData");
+			LLAvatarNameCache::get(idCreator, boost::bind(&LLFloaterInspect::onGetAvNameCallback, _1, _2, this));
+		}
 		
 		row["id"] = obj->getObject()->getID();
 		row["columns"][0]["column"] = "object_name";
diff --git a/indra/newview/llfloaterinspect.h b/indra/newview/llfloaterinspect.h
index d9ffdf114b49273d000ac4fcc9e7f2deb466b901..7ee83ccdb47060e3c6837928a06601872da27782 100644
--- a/indra/newview/llfloaterinspect.h
+++ b/indra/newview/llfloaterinspect.h
@@ -29,6 +29,7 @@
 #ifndef LL_LLFLOATERINSPECT_H
 #define LL_LLFLOATERINSPECT_H
 
+#include "llavatarname.h"
 #include "llfloater.h"
 
 //class LLTool;
@@ -53,6 +54,9 @@ class LLFloaterInspect : public LLFloater
 	void onClickCreatorProfile();
 	void onClickOwnerProfile();
 	void onSelectObject();
+
+	static void onGetAvNameCallback(const LLUUID& idCreator, const LLAvatarName& av_name, void* FloaterPtr);
+
 	LLScrollListCtrl* mObjectList;
 protected:
 	// protected members
diff --git a/indra/newview/llfloaterinventory.cpp b/indra/newview/llfloaterinventory.cpp
index df769bdd8852d8de09767559ea9aee7db4b0589c..9b9b90e5219481452c72e69553fd56d7f2c04c03 100644
--- a/indra/newview/llfloaterinventory.cpp
+++ b/indra/newview/llfloaterinventory.cpp
@@ -98,3 +98,12 @@ void LLFloaterInventory::onOpen(const LLSD& key)
 {
 	//LLFirstUse::useInventory();
 }
+
+void LLFloaterInventory::onClose(bool app_quitting)
+{
+	LLFloater::onClose(app_quitting);
+	if (mKey.asInteger() > 1)
+	{
+		destroy();
+	}
+}
diff --git a/indra/newview/llfloaterinventory.h b/indra/newview/llfloaterinventory.h
index f59a015b07f7499bfad26eb6ccd850a35e5355a7..823c4903b42d1b2672abccc64179bd78d4f6d837 100644
--- a/indra/newview/llfloaterinventory.h
+++ b/indra/newview/llfloaterinventory.h
@@ -58,6 +58,7 @@ class LLFloaterInventory : public LLFloater
 
 	// Inherited functionality
 	/*virtual*/ void onOpen(const LLSD& key);
+	/*virtual*/ void onClose(bool app_quitting);
 
 	LLInventoryPanel* getPanel();
 	LLPanelMainInventory* getMainInventoryPanel() { return mPanelMainInventory;}
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 4746f93009295e937f69219028357237e2ae928b..95da8ff948bd25b016d9499e7772e0b99db617d0 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -433,7 +433,6 @@ BOOL LLPanelLandGeneral::postBuild()
 
 	
 	mTextDwell = getChild<LLTextBox>("DwellText");
-
 	
 	mBtnBuyLand = getChild<LLButton>("Buy Land...");
 	mBtnBuyLand->setClickedCallback(onClickBuyLand, (void*)&BUY_PERSONAL_LAND);
@@ -696,20 +695,26 @@ void LLPanelLandGeneral::refresh()
 		S32 area;
 		S32 claim_price;
 		S32 rent_price;
-		F32 dwell;
+		F32 dwell = DWELL_NAN;
 		LLViewerParcelMgr::getInstance()->getDisplayInfo(&area,
 								 &claim_price,
 								 &rent_price,
 								 &for_sale,
 								 &dwell);
-
 		// Area
 		LLUIString price = getString("area_size_text");
 		price.setArg("[AREA]", llformat("%d",area));    
 		mTextPriceLabel->setText(getString("area_text"));
 		mTextPrice->setText(price.getString());
 
-		mTextDwell->setText(llformat("%.0f", dwell));
+		if (dwell == DWELL_NAN)
+		{
+			mTextDwell->setText(LLTrans::getString("LoadingData"));
+		}
+		else
+		{
+			mTextDwell->setText(llformat("%.0f", dwell));
+		}
 
 		if (for_sale)
 		{
@@ -1801,7 +1806,6 @@ LLPanelLandOptions::LLPanelLandOptions(LLParcelSelectionHandle& parcel)
 	mCheckEditGroupObjects(NULL),
 	mCheckAllObjectEntry(NULL),
 	mCheckGroupObjectEntry(NULL),
-	mCheckEditLand(NULL),
 	mCheckSafe(NULL),
 	mCheckFly(NULL),
 	mCheckGroupScripts(NULL),
@@ -1835,10 +1839,6 @@ BOOL LLPanelLandOptions::postBuild()
 	mCheckGroupObjectEntry = getChild<LLCheckBoxCtrl>( "group object entry check");
 	childSetCommitCallback("group object entry check", onCommitAny, this);
 	
-	mCheckEditLand = getChild<LLCheckBoxCtrl>( "edit land check");
-	childSetCommitCallback("edit land check", onCommitAny, this);
-
-	
 	mCheckGroupScripts = getChild<LLCheckBoxCtrl>( "check group scripts");
 	childSetCommitCallback("check group scripts", onCommitAny, this);
 
@@ -1951,9 +1951,6 @@ void LLPanelLandOptions::refresh()
 		mCheckGroupObjectEntry	->set(FALSE);
 		mCheckGroupObjectEntry	->setEnabled(FALSE);
 
-		mCheckEditLand		->set(FALSE);
-		mCheckEditLand		->setEnabled(FALSE);
-		
 		mCheckSafe			->set(FALSE);
 		mCheckSafe			->setEnabled(FALSE);
 
@@ -2001,10 +1998,6 @@ void LLPanelLandOptions::refresh()
 
 		mCheckGroupObjectEntry	->set( parcel->getAllowGroupObjectEntry() ||  parcel->getAllowAllObjectEntry());
 		mCheckGroupObjectEntry	->setEnabled( can_change_options && !parcel->getAllowAllObjectEntry() );
-
-		BOOL can_change_terraform = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_EDIT);
-		mCheckEditLand		->set( parcel->getAllowTerraform() );
-		mCheckEditLand		->setEnabled( can_change_terraform );
 		
 		mCheckSafe			->set( !parcel->getAllowDamage() );
 		mCheckSafe			->setEnabled( can_change_options );
@@ -2032,7 +2025,6 @@ void LLPanelLandOptions::refresh()
 		}
 
 		mSeeAvatarsCtrl->set(parcel->getSeeAVs());
-		mSeeAvatarsCtrl->setLabel(getString("see_avs_text"));
 		mSeeAvatarsCtrl->setEnabled(can_change_options && parcel->getHaveNewParcelLimitData());
 
 		BOOL can_change_landing_point = LLViewerParcelMgr::isParcelModifiableByAgent(parcel, 
@@ -2230,7 +2222,7 @@ void LLPanelLandOptions::onCommitAny(LLUICtrl *ctrl, void *userdata)
 	BOOL create_group_objects	= self->mCheckEditGroupObjects->get() || self->mCheckEditObjects->get();
 	BOOL all_object_entry		= self->mCheckAllObjectEntry->get();
 	BOOL group_object_entry	= self->mCheckGroupObjectEntry->get() || self->mCheckAllObjectEntry->get();
-	BOOL allow_terraform	= self->mCheckEditLand->get();
+	BOOL allow_terraform	= false; // removed from UI so always off now - self->mCheckEditLand->get();
 	BOOL allow_damage		= !self->mCheckSafe->get();
 	BOOL allow_fly			= self->mCheckFly->get();
 	BOOL allow_landmark		= TRUE; // cannot restrict landmark creation
@@ -2482,27 +2474,6 @@ void LLPanelLandAccess::refresh()
 				mListBanned->addNameItem(entry.mID, ADD_DEFAULT, TRUE, suffix);
 			}
 		}
-		
-		LLCheckBoxWithTBAcess* maturity_checkbox = (LLCheckBoxWithTBAcess*) getChild<LLCheckBoxCtrl>( "public_access");
-		LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
-		if(region)
-		{
-			LLTextBox* maturity_textbox = maturity_checkbox->getTextBox();
-			insert_maturity_into_textbox(maturity_textbox, gFloaterView->getParentFloater(this), getString("allow_public_access"));
-			maturity_checkbox->reshape(maturity_checkbox->getRect().getWidth(), maturity_checkbox->getRect().getHeight(), FALSE);
-		}
-		else
-		{
-			std::string maturity_string = getString("allow_public_access");
-			size_t maturity_pos = maturity_string.find(MATURITY);
-
-			if (maturity_pos != std::string::npos)
-			{
-				maturity_string.replace(maturity_pos, MATURITY.length(), std::string(""));
-			}
-
-			maturity_checkbox->setLabel(maturity_string);
-		}
 
 		if(parcel->getRegionDenyAnonymousOverride())
 		{
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
index 6fceca1acddb5d7d6d1347f46e50dc03701d13f1..4f1c10274a044c53692f5c1eb982261d1136dced 100644
--- a/indra/newview/llfloaterland.h
+++ b/indra/newview/llfloaterland.h
@@ -330,7 +330,6 @@ class LLPanelLandOptions
 	LLCheckBoxCtrl*	mCheckEditGroupObjects;
 	LLCheckBoxCtrl*	mCheckAllObjectEntry;
 	LLCheckBoxCtrl*	mCheckGroupObjectEntry;
-	LLCheckBoxCtrl*	mCheckEditLand;
 	LLCheckBoxCtrl*	mCheckSafe;
 	LLCheckBoxCtrl*	mCheckFly;
 	LLCheckBoxCtrl*	mCheckGroupScripts;
diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp
index 641e64247bab0c98ce43a27cb51c1e2a70eee00e..a65e9e911a9fb91c6624361ff377ffbace99bbdc 100644
--- a/indra/newview/llfloatermap.cpp
+++ b/indra/newview/llfloatermap.cpp
@@ -100,17 +100,11 @@ BOOL LLFloaterMap::postBuild()
 	mTextBoxSouthWest = getChild<LLTextBox> ("floater_map_southwest");
 	mTextBoxNorthWest = getChild<LLTextBox> ("floater_map_northwest");
 
-	stretchMiniMap(getRect().getWidth() - MAP_PADDING_LEFT - MAP_PADDING_RIGHT
-		,getRect().getHeight() - MAP_PADDING_TOP - MAP_PADDING_BOTTOM);
-
 	updateMinorDirections();
 
 	// Get the drag handle all the way in back
 	sendChildToBack(getDragHandle());
 
-	setIsChrome(TRUE);
-	getDragHandle()->setTitleVisible(TRUE);
-	
 	// keep onscreen
 	gFloaterView->adjustToFitScreen(this, FALSE);
 
@@ -223,40 +217,10 @@ void LLFloaterMap::draw()
 	LLFloater::draw();
 }
 
-// virtual
-void LLFloaterMap::onFocusReceived()
-{
-	setBackgroundOpaque(true);
-	LLPanel::onFocusReceived();
-}
-
-// virtual
-void LLFloaterMap::onFocusLost()
-{
-	setBackgroundOpaque(false);
-	LLPanel::onFocusLost();
-}
-
-void LLFloaterMap::stretchMiniMap(S32 width,S32 height)
-{
-	//fix for ext-7112
-	//by default ctrl can't overlap caption area
-	if(mMap)
-	{
-		LLRect map_rect;
-		map_rect.setLeftTopAndSize( MAP_PADDING_LEFT, getRect().getHeight() - MAP_PADDING_TOP, width, height);
-		mMap->reshape( width, height, 1);
-		mMap->setRect(map_rect);
-	}
-}
-
 void LLFloaterMap::reshape(S32 width, S32 height, BOOL called_from_parent)
 {
 	LLFloater::reshape(width, height, called_from_parent);
 	
-	stretchMiniMap(width - MAP_PADDING_LEFT - MAP_PADDING_RIGHT
-		,height - MAP_PADDING_TOP - MAP_PADDING_BOTTOM);
-
 	updateMinorDirections();
 }
 
@@ -285,16 +249,3 @@ void LLFloaterMap::handleZoom(const LLSD& userdata)
 		mMap->setScale(scale);
 	}
 }
-
-void	LLFloaterMap::setMinimized(BOOL b)
-{
-	LLFloater::setMinimized(b);
-	if(b)
-	{
-		setTitle(getString("mini_map_caption"));
-	}
-	else
-	{
-		setTitle("");
-	}
-}
diff --git a/indra/newview/llfloatermap.h b/indra/newview/llfloatermap.h
index 5cf66a594bf249f9683f70b0621869e1e761b068..8a1b965e628bf89442107057a31e8f50d5f2fbb3 100644
--- a/indra/newview/llfloatermap.h
+++ b/indra/newview/llfloatermap.h
@@ -45,18 +45,12 @@ class LLFloaterMap : public LLFloater
 	/*virtual*/ BOOL	handleDoubleClick( S32 x, S32 y, MASK mask );
 	/*virtual*/ void	reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
 	/*virtual*/ void	draw();
-	/*virtual*/ void	onFocusLost();
-	/*virtual*/ void	onFocusReceived();
 
-	/*virtual*/ void	setMinimized(BOOL b);
-	
 private:
 	void handleZoom(const LLSD& userdata);
 	void setDirectionPos( LLTextBox* text_box, F32 rotation );
 	void updateMinorDirections();
 
-	void stretchMiniMap(S32 width,S32 height);
-	
 	LLTextBox*		mTextBoxEast;
 	LLTextBox*		mTextBoxNorth;
 	LLTextBox*		mTextBoxWest;
diff --git a/indra/newview/llfloatermediabrowser.cpp b/indra/newview/llfloatermediabrowser.cpp
deleted file mode 100644
index 7a670dd90cca7b108027d6911e5ced8d2086b502..0000000000000000000000000000000000000000
--- a/indra/newview/llfloatermediabrowser.cpp
+++ /dev/null
@@ -1,462 +0,0 @@
-/** 
- * @file llfloatermediabrowser.cpp
- * @brief media browser floater - uses embedded media browser control
- *
- * $LicenseInfo:firstyear=2006&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 "llfloatermediabrowser.h"
-
-#include "llfloaterreg.h"
-#include "llparcel.h"
-#include "llpluginclassmedia.h"
-#include "lluictrlfactory.h"
-#include "llmediactrl.h"
-#include "llviewerwindow.h"
-#include "llviewercontrol.h"
-#include "llviewerparcelmgr.h"
-#include "llweb.h"
-#include "llui.h"
-#include "roles_constants.h"
-
-#include "llurlhistory.h"
-#include "llmediactrl.h"
-#include "llviewermedia.h"
-#include "llviewerparcelmedia.h"
-#include "llcombobox.h"
-#include "llwindow.h"
-#include "lllayoutstack.h"
-#include "llcheckboxctrl.h"
-
-#include "llnotifications.h"
-
-// TEMP
-#include "llsdutil.h"
-
-LLFloaterMediaBrowser::LLFloaterMediaBrowser(const LLSD& key)
-	: LLFloater(key)
-{
-}
-
-//static 
-void LLFloaterMediaBrowser::create(const std::string &url, const std::string& target, const std::string& uuid)
-{
-	lldebugs << "url = " << url << ", target = " << target << ", uuid = " << uuid << llendl;
-	
-	std::string tag = target;
-	
-	if(target.empty() || target == "_blank")
-	{
-		if(!uuid.empty())
-		{
-			tag = uuid;
-		}
-		else
-		{
-		// create a unique tag for this instance
-		LLUUID id;
-		id.generate();
-		tag = id.asString();
-	}
-	}
-	
-	S32 browser_window_limit = gSavedSettings.getS32("MediaBrowserWindowLimit");
-	
-	if(LLFloaterReg::findInstance("media_browser", tag) != NULL)
-	{
-		// There's already a media browser for this tag, so we won't be opening a new window.
-	}
-	else if(browser_window_limit != 0)
-	{
-		// showInstance will open a new window.  Figure out how many media browsers are already open, 
-		// and close the least recently opened one if this will put us over the limit.
-		
-		LLFloaterReg::const_instance_list_t &instances = LLFloaterReg::getFloaterList("media_browser");
-		lldebugs << "total instance count is " << instances.size() << llendl;
-		
-		for(LLFloaterReg::const_instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); iter++)
-		{
-			lldebugs << "    " << (*iter)->getKey() << llendl;
-		}
-		
-		if(instances.size() >= (size_t)browser_window_limit)
-		{
-			// Destroy the least recently opened instance
-			(*instances.begin())->closeFloater();
-		}
-	}
-
-	LLFloaterMediaBrowser *browser = dynamic_cast<LLFloaterMediaBrowser*> (LLFloaterReg::showInstance("media_browser", tag));
-	llassert(browser);
-	if(browser)
-	{
-		browser->mUUID = uuid;
-
-		// tell the browser instance to load the specified URL
-		browser->openMedia(url, target);
-		LLViewerMedia::proxyWindowOpened(target, uuid);
-	}
-}
-
-//static 
-void LLFloaterMediaBrowser::closeRequest(const std::string &uuid)
-{
-	LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("media_browser");
-	lldebugs << "instance list size is " << inst_list.size() << ", incoming uuid is " << uuid << llendl;
-	for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)
-	{
-		LLFloaterMediaBrowser* i = dynamic_cast<LLFloaterMediaBrowser*>(*iter);
-		lldebugs << "    " << i->mUUID << llendl;
-		if (i && i->mUUID == uuid)
-		{
-			i->closeFloater(false);
-			return;
- 		}
- 	}
-}
-
-//static 
-void LLFloaterMediaBrowser::geometryChanged(const std::string &uuid, S32 x, S32 y, S32 width, S32 height)
-{
-	LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("media_browser");
-	lldebugs << "instance list size is " << inst_list.size() << ", incoming uuid is " << uuid << llendl;
-	for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)
-	{
-		LLFloaterMediaBrowser* i = dynamic_cast<LLFloaterMediaBrowser*>(*iter);
-		lldebugs << "    " << i->mUUID << llendl;
-		if (i && i->mUUID == uuid)
-		{
-			i->geometryChanged(x, y, width, height);
-			return;
-	}
-}
-}
-	
-void LLFloaterMediaBrowser::geometryChanged(S32 x, S32 y, S32 width, S32 height)
-{	
-	// Make sure the layout of the browser control is updated, so this calculation is correct.
-	LLLayoutStack::updateClass();
-		
-	// TODO: need to adjust size and constrain position to make sure floaters aren't moved outside the window view, etc.
-	LLCoordWindow window_size;
-	getWindow()->getSize(&window_size);
-
-	// Adjust width and height for the size of the chrome on the Media Browser window.
-	width += getRect().getWidth() - mBrowser->getRect().getWidth();
-	height += getRect().getHeight() - mBrowser->getRect().getHeight();
-	
-	LLRect geom;
-	geom.setOriginAndSize(x, window_size.mY - (y + height), width, height);
-
-	lldebugs << "geometry change: " << geom << llendl;
-	
-	handleReshape(geom,false);
-}
-
-
-void LLFloaterMediaBrowser::draw()
-{
-	getChildView("go")->setEnabled(!mAddressCombo->getValue().asString().empty());
-	LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
-	if(parcel)
-	{
-		getChildView("parcel_owner_controls")->setVisible( LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_CHANGE_MEDIA));
-		getChildView("assign")->setEnabled(!mAddressCombo->getValue().asString().empty());
-	}
-	bool show_time_controls = false;
-	bool media_playing = false;
-	if(mBrowser)
-	{
-		LLPluginClassMedia* media_plugin = mBrowser->getMediaPlugin();
-		if(media_plugin)
-		{
-			show_time_controls = media_plugin->pluginSupportsMediaTime();
-			media_playing = media_plugin->getStatus() == LLPluginClassMediaOwner::MEDIA_PLAYING;
-		}
-	}
-	getChildView("rewind")->setVisible( show_time_controls);
-	getChildView("play")->setVisible( show_time_controls && ! media_playing);
-	getChildView("pause")->setVisible( show_time_controls && media_playing);
-	getChildView("stop")->setVisible( show_time_controls);
-	getChildView("seek")->setVisible( show_time_controls);
-
-	getChildView("play")->setEnabled(! media_playing);
-	getChildView("stop")->setEnabled(media_playing);
-
-	getChildView("back")->setEnabled(mBrowser->canNavigateBack());
-	getChildView("forward")->setEnabled(mBrowser->canNavigateForward());
-
-	LLFloater::draw();
-}
-
-BOOL LLFloaterMediaBrowser::postBuild()
-{
-	mBrowser = getChild<LLMediaCtrl>("browser");
-	mBrowser->addObserver(this);
-
-	mAddressCombo = getChild<LLComboBox>("address");
-	mAddressCombo->setCommitCallback(onEnterAddress, this);
-	mAddressCombo->sortByName();
-
-	childSetAction("back", onClickBack, this);
-	childSetAction("forward", onClickForward, this);
-	childSetAction("reload", onClickRefresh, this);
-	childSetAction("rewind", onClickRewind, this);
-	childSetAction("play", onClickPlay, this);
-	childSetAction("stop", onClickStop, this);
-	childSetAction("pause", onClickPlay, this);
-	childSetAction("seek", onClickSeek, this);
-	childSetAction("go", onClickGo, this);
-	childSetAction("close", onClickClose, this);
-	childSetAction("open_browser", onClickOpenWebBrowser, this);
-	childSetAction("assign", onClickAssign, this);
-
-	buildURLHistory();
-
-	return TRUE;
-}
-
-void LLFloaterMediaBrowser::buildURLHistory()
-{
-	LLCtrlListInterface* url_list = childGetListInterface("address");
-	if (url_list)
-	{
-		url_list->operateOnAll(LLCtrlListInterface::OP_DELETE);
-	}
-
-	// Get all of the entries in the "browser" collection
-	LLSD browser_history = LLURLHistory::getURLHistory("browser");
-
-	LLSD::array_iterator iter_history =
-		browser_history.beginArray();
-	LLSD::array_iterator end_history =
-		browser_history.endArray();
-	for(; iter_history != end_history; ++iter_history)
-	{
-		std::string url = (*iter_history).asString();
-		if(! url.empty())
-			url_list->addSimpleElement(url);
-	}
-
-	// initialize URL history in the plugin
-	if(mBrowser && mBrowser->getMediaPlugin())
-	{
-		mBrowser->getMediaPlugin()->initializeUrlHistory(browser_history);
-	}
-}
-
-std::string LLFloaterMediaBrowser::getSupportURL()
-{
-	return getString("support_page_url");
-}
-
-//virtual
-void LLFloaterMediaBrowser::onClose(bool app_quitting)
-{
-	LLViewerMedia::proxyWindowClosed(mUUID);
-	//setVisible(FALSE);
-	destroy();
-}
-
-void LLFloaterMediaBrowser::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event)
-{
-	if(event == MEDIA_EVENT_LOCATION_CHANGED)
-	{
-		setCurrentURL(self->getLocation());
-	}
-	else if(event == MEDIA_EVENT_NAVIGATE_COMPLETE)
-	{
-		// This is the event these flags are sent with.
-		getChildView("back")->setEnabled(self->getHistoryBackAvailable());
-		getChildView("forward")->setEnabled(self->getHistoryForwardAvailable());
-	}
-	else if(event == MEDIA_EVENT_CLOSE_REQUEST)
-	{
-		// The browser instance wants its window closed.
-		closeFloater();
-	}
-	else if(event == MEDIA_EVENT_GEOMETRY_CHANGE)
-	{
-		geometryChanged(self->getGeometryX(), self->getGeometryY(), self->getGeometryWidth(), self->getGeometryHeight());
-	}
-}
-
-void LLFloaterMediaBrowser::setCurrentURL(const std::string& url)
-{
-	mCurrentURL = url;
-
-	mAddressCombo->remove(mCurrentURL);
-	mAddressCombo->add(mCurrentURL);
-	mAddressCombo->selectByValue(mCurrentURL);
-
-	// Serialize url history
-	LLURLHistory::removeURL("browser", mCurrentURL);
-	LLURLHistory::addURL("browser", mCurrentURL);
-
-	getChildView("back")->setEnabled(mBrowser->canNavigateBack());
-	getChildView("forward")->setEnabled(mBrowser->canNavigateForward());
-	getChildView("reload")->setEnabled(TRUE);
-}
-
-//static 
-void LLFloaterMediaBrowser::onEnterAddress(LLUICtrl* ctrl, void* user_data)
-{
-	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-	self->mBrowser->navigateTo(self->mAddressCombo->getValue().asString());
-}
-
-//static 
-void LLFloaterMediaBrowser::onClickRefresh(void* user_data)
-{
-	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
-	if( self->mBrowser->getMediaPlugin() &&  self->mBrowser->getMediaPlugin()->pluginSupportsMediaBrowser())
-	{
-		bool ignore_cache = true;
-		self->mBrowser->getMediaPlugin()->browse_reload( ignore_cache );
-	}
-	else
-	{
-		self->mBrowser->navigateTo(self->mCurrentURL);
-	}
-}
-
-//static 
-void LLFloaterMediaBrowser::onClickForward(void* user_data)
-{
-	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
-	self->mBrowser->navigateForward();
-}
-
-//static 
-void LLFloaterMediaBrowser::onClickBack(void* user_data)
-{
-	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
-	self->mBrowser->navigateBack();
-}
-
-//static 
-void LLFloaterMediaBrowser::onClickGo(void* user_data)
-{
-	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
-	self->mBrowser->navigateTo(self->mAddressCombo->getValue().asString());
-}
-
-//static 
-void LLFloaterMediaBrowser::onClickClose(void* user_data)
-{
-	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
-	self->closeFloater();
-}
-
-//static 
-void LLFloaterMediaBrowser::onClickOpenWebBrowser(void* user_data)
-{
-	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
-	std::string url = self->mCurrentURL.empty() ? 
-		self->mBrowser->getHomePageUrl() :
-		self->mCurrentURL;
-	LLWeb::loadURLExternal(url);
-}
-
-void LLFloaterMediaBrowser::onClickAssign(void* user_data)
-{
-	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
-	LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
-	if (!parcel)
-	{
-		return;
-	}
-	std::string media_url = self->mAddressCombo->getValue().asString();
-	LLStringUtil::trim(media_url);
-
-	if(parcel->getMediaType() != "text/html")
-	{
-		parcel->setMediaURL(media_url);
-		parcel->setMediaCurrentURL(media_url);
-		parcel->setMediaType(std::string("text/html"));
-		LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel, true );
-		LLViewerParcelMedia::sendMediaNavigateMessage(media_url);
-		LLViewerParcelMedia::stop();
-		// LLViewerParcelMedia::update( parcel );
-	}
-	LLViewerParcelMedia::sendMediaNavigateMessage(media_url);
-}
-//static 
-void LLFloaterMediaBrowser::onClickRewind(void* user_data)
-{
-	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
-	if(self->mBrowser->getMediaPlugin())
-		self->mBrowser->getMediaPlugin()->start(-2.0f);
-}
-//static 
-void LLFloaterMediaBrowser::onClickPlay(void* user_data)
-{
-	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
-	LLPluginClassMedia* plugin = self->mBrowser->getMediaPlugin();
-	if(plugin)
-	{
-		if(plugin->getStatus() == LLPluginClassMediaOwner::MEDIA_PLAYING)
-		{
-			plugin->pause();
-		}
-		else
-		{
-			plugin->start();
-		}
-	}
-}
-//static 
-void LLFloaterMediaBrowser::onClickStop(void* user_data)
-{
-	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
-	if(self->mBrowser->getMediaPlugin())
-		self->mBrowser->getMediaPlugin()->stop();
-}
-//static 
-void LLFloaterMediaBrowser::onClickSeek(void* user_data)
-{
-	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
-
-	if(self->mBrowser->getMediaPlugin())
-		self->mBrowser->getMediaPlugin()->start(2.0f);
-}
-void LLFloaterMediaBrowser::openMedia(const std::string& media_url, const std::string& target)
-{
-	mBrowser->setHomePageUrl(media_url);
-	mBrowser->setTarget(target);
-	mBrowser->navigateTo(media_url);
-	setCurrentURL(media_url);
-}
-
-
diff --git a/indra/newview/llfloatermediabrowser.h b/indra/newview/llfloatermediabrowser.h
deleted file mode 100644
index 152d221a01849c09d4ebd7ea616e45d19a993119..0000000000000000000000000000000000000000
--- a/indra/newview/llfloatermediabrowser.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/** 
- * @file llfloatermediabrowser.h
- * @brief media browser floater - uses embedded media browser control
- *
- * $LicenseInfo:firstyear=2006&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_LLFLOATERMEDIABROWSER_H
-#define LL_LLFLOATERMEDIABROWSER_H
-
-#include "llfloater.h"
-#include "llmediactrl.h"
-
-
-class LLComboBox;
-class LLMediaCtrl;
-class LLNotification;
-
-class LLFloaterMediaBrowser : 
-	public LLFloater, 
-	public LLViewerMediaObserver
-{
-public:
-    LOG_CLASS(LLFloaterMediaBrowser);
-	LLFloaterMediaBrowser(const LLSD& key);
-
-	static void create(const std::string &url, const std::string& target, const std::string& uuid = LLStringUtil::null);
-
-	static void closeRequest(const std::string &uuid);
-	static void geometryChanged(const std::string &uuid, S32 x, S32 y, S32 width, S32 height);
-	void geometryChanged(S32 x, S32 y, S32 width, S32 height);
-	
-	/*virtual*/ BOOL postBuild();
-	/*virtual*/ void onClose(bool app_quitting);
-	/*virtual*/ void draw();
-
-	// inherited from LLViewerMediaObserver
-	/*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event);
-
-	void openMedia(const std::string& media_url, const std::string& target);
-	void buildURLHistory();
-	std::string getSupportURL();
-	void setCurrentURL(const std::string& url);
-
-	static void onEnterAddress(LLUICtrl* ctrl, void* user_data);
-	static void onClickRefresh(void* user_data);
-	static void onClickBack(void* user_data);
-	static void onClickForward(void* user_data);
-	static void onClickGo(void* user_data);
-	static void onClickClose(void* user_data);
-	static void onClickOpenWebBrowser(void* user_data);
-	static void onClickAssign(void* user_data);
-	static void onClickRewind(void* user_data);
-	static void onClickPlay(void* user_data);
-	static void onClickStop(void* user_data);
-	static void onClickSeek(void* user_data);
-
-private:
-	LLMediaCtrl* mBrowser;
-	LLComboBox* mAddressCombo;
-	std::string mCurrentURL;
-	boost::shared_ptr<LLNotification> mCurNotification;
-	std::string mUUID;
-};
-
-#endif  // LL_LLFLOATERMEDIABROWSER_H
-
diff --git a/indra/newview/llfloatermediasettings.cpp b/indra/newview/llfloatermediasettings.cpp
index b5f1b967df7e71b826f260958977a5c3ec23b3dc..895e16adef7d17dddee08adde2f1cb9f307eabd4 100644
--- a/indra/newview/llfloatermediasettings.cpp
+++ b/indra/newview/llfloatermediasettings.cpp
@@ -212,10 +212,13 @@ void LLFloaterMediaSettings::commitFields()
 //static 
 void LLFloaterMediaSettings::clearValues( bool editable)
 {
-	// clean up all panels before updating
-	sInstance->mPanelMediaSettingsGeneral	 ->clearValues(sInstance->mPanelMediaSettingsGeneral,  editable);
-	sInstance->mPanelMediaSettingsSecurity	 ->clearValues(sInstance->mPanelMediaSettingsSecurity,	editable);
-	sInstance->mPanelMediaSettingsPermissions->clearValues(sInstance->mPanelMediaSettingsPermissions,  editable);	
+	if (sInstance)
+	{
+		// clean up all panels before updating
+		sInstance->mPanelMediaSettingsGeneral	 ->clearValues(sInstance->mPanelMediaSettingsGeneral,  editable);
+		sInstance->mPanelMediaSettingsSecurity	 ->clearValues(sInstance->mPanelMediaSettingsSecurity,	editable);
+		sInstance->mPanelMediaSettingsPermissions->clearValues(sInstance->mPanelMediaSettingsPermissions,  editable);
+	}
 }
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
old mode 100644
new mode 100755
index 5869cf6fee2441c2e43d501646633da894c5b13b..9122e5a8f5e5e2b193e2efbcfc1a8edb7d474e90
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -26,6 +26,10 @@
 
 #include "llviewerprecompiledheaders.h"
 
+#if LL_MSVC
+#pragma warning (disable : 4263)
+#pragma warning (disable : 4264)
+#endif
 #include "dae.h"
 //#include "dom.h"
 #include "dom/domAsset.h"
@@ -47,6 +51,10 @@
 #include "dom/domScale.h"
 #include "dom/domTranslate.h"
 #include "dom/domVisual_scene.h"
+#if LL_MSVC
+#pragma warning (default : 4263)
+#pragma warning (default : 4264)
+#endif
 
 #include "llfloatermodelpreview.h"
 
@@ -103,6 +111,7 @@
 #include "llviewerobjectlist.h"
 #include "llanimationstates.h"
 #include "llviewernetwork.h"
+#include "llviewershadermgr.h"
 #include "glod/glod.h"
 #include <boost/algorithm/string.hpp>
 
@@ -388,7 +397,7 @@ mCalculateBtn(NULL)
 	mLastMouseX = 0;
 	mLastMouseY = 0;
 	mGLName = 0;
-	mStatusLock = new LLMutex();
+	mStatusLock = new LLMutex(NULL);
 	mModelPreview = NULL;
 
 	mLODMode[LLModel::LOD_HIGH] = 0;
@@ -496,6 +505,11 @@ BOOL LLFloaterModelPreview::postBuild()
 	{
 		validate_url = "http://secondlife.com/my/account/mesh.php";
 	}
+	else if (current_grid == "damballah")
+	{
+		// Staging grid has its own naming scheme.
+		validate_url = "http://secondlife-staging.com/my/account/mesh.php";
+	}
 	else
 	{
 		validate_url = llformat("http://secondlife.%s.lindenlab.com/my/account/mesh.php",current_grid.c_str());
@@ -744,6 +758,11 @@ void LLFloaterModelPreview::draw()
 
 	if (!mModelPreview->mLoading)
 	{
+		if ( mModelPreview->getLoadState() == LLModelLoader::ERROR_MATERIALS )
+		{
+			childSetTextArg("status", "[STATUS]", getString("status_material_mismatch"));
+		}
+		else
 		if ( mModelPreview->getLoadState() > LLModelLoader::ERROR_PARSING )
 		{		
 			childSetTextArg("status", "[STATUS]", getString(LLModel::getStatusString(mModelPreview->getLoadState() - LLModelLoader::ERROR_PARSING)));
@@ -995,38 +1014,38 @@ void LLFloaterModelPreview::onPhysicsBrowse(LLUICtrl* ctrl, void* userdata)
 //static
 void LLFloaterModelPreview::onPhysicsUseLOD(LLUICtrl* ctrl, void* userdata)
 {
-	S32 num_modes = 4;
-	S32 which_mode = 3;
-	static S32 previous_mode = which_mode;
+	S32 num_lods = 4;
+	S32 which_mode;
 
 	LLCtrlSelectionInterface* iface = sInstance->childGetSelectionInterface("physics_lod_combo");
 	if (iface)
 	{
 		which_mode = iface->getFirstSelectedIndex();
 	}
+	else
+	{
+		llwarns << "no iface" << llendl;
+		return;
+	}
 
-	S32 file_mode = iface->getItemCount() - 1;
-	bool file_browse = which_mode == file_mode;
-	bool lod_to_file = file_browse && (previous_mode != file_mode);
-	bool file_to_lod = !file_browse && (previous_mode == file_mode);
-
-	if (!lod_to_file)
+	if (which_mode <= 0)
 	{
-		which_mode = num_modes - which_mode;
-		sInstance->mModelPreview->setPhysicsFromLOD(which_mode);
+		llwarns << "which_mode out of range, " << which_mode << llendl;
 	}
 
-	if (lod_to_file || file_to_lod)
+	S32 file_mode = iface->getItemCount() - 1;
+	if (which_mode < file_mode)
 	{
-		LLModelPreview *model_preview = sInstance->mModelPreview;
-		if (model_preview)
-		{
-			model_preview->refresh();
-			model_preview->updateStatusMessages();
-		}
+		S32 which_lod = num_lods - which_mode;
+		sInstance->mModelPreview->setPhysicsFromLOD(which_lod);
 	}
 
-	previous_mode = which_mode;
+	LLModelPreview *model_preview = sInstance->mModelPreview;
+	if (model_preview)
+	{
+		model_preview->refresh();
+		model_preview->updateStatusMessages();
+	}
 }
 
 //static 
@@ -3077,7 +3096,7 @@ LLColor4 LLModelLoader::getDaeColor(daeElement* element)
 //-----------------------------------------------------------------------------
 
 LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp)
-: LLViewerDynamicTexture(width, height, 3, ORDER_MIDDLE, FALSE), LLMutex()
+: LLViewerDynamicTexture(width, height, 3, ORDER_MIDDLE, FALSE), LLMutex(NULL)
 , mPelvisZOffset( 0.0f )
 , mLegacyRigValid( false )
 , mRigValidJointUpload( false )
@@ -3304,7 +3323,7 @@ void LLModelPreview::rebuildUploadData()
 	F32 max_scale = 0.f;
 
 	//reorder materials to match mBaseModel
-	for (U32 i = 0; i < LLModel::NUM_LODS; i++)
+	for (U32 i = 0; i < LLModel::NUM_LODS-1; i++)
 	{
 		if (mBaseModel.size() == mModel[i].size())
 		{
@@ -3316,6 +3335,7 @@ void LLModelPreview::rebuildUploadData()
 				
 				if ( !mModel[i][j]->matchMaterialOrder(mBaseModel[j], refFaceCnt, modelFaceCnt ) )
 				{
+					setLoadState( LLModelLoader::ERROR_MATERIALS );
 					mFMP->childDisable( "calculate_btn" );
 				}
 			}
@@ -3840,6 +3860,15 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim
 
 	LLVertexBuffer::unbind();
 
+	bool no_ff = LLGLSLShader::sNoFixedFunction;
+	LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+	LLGLSLShader::sNoFixedFunction = false;
+
+	if (shader)
+	{
+		shader->unbind();
+	}
+	
 	stop_gloderror();
 	static U32 cur_name = 1;
 
@@ -3940,7 +3969,7 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim
 				U32 num_indices = mVertexBuffer[5][mdl][i]->getNumIndices();
 				if (num_indices > 2)
 				{
-					glodInsertElements(mObject[mdl], i, GL_TRIANGLES, num_indices, GL_UNSIGNED_SHORT, mVertexBuffer[5][mdl][i]->getIndicesPointer(), 0, 0.f);
+					glodInsertElements(mObject[mdl], i, GL_TRIANGLES, num_indices, GL_UNSIGNED_SHORT, (U8*) mVertexBuffer[5][mdl][i]->getIndicesPointer(), 0, 0.f);
 				}
 				tri_count += num_indices/3;
 				stop_gloderror();
@@ -4054,14 +4083,14 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim
 				{
 					buff->allocateBuffer(sizes[i*2+1], sizes[i*2], true);
 					buff->setBuffer(type_mask);
-					glodFillElements(mObject[base], names[i], GL_UNSIGNED_SHORT, buff->getIndicesPointer());
+					glodFillElements(mObject[base], names[i], GL_UNSIGNED_SHORT, (U8*) buff->getIndicesPointer());
 					stop_gloderror();
 				}
 				else
 				{ //this face was eliminated, create a dummy triangle (one vertex, 3 indices, all 0)
 					buff->allocateBuffer(1, 3, true);
-					memset(buff->getMappedData(), 0, buff->getSize());
-					memset(buff->getIndicesPointer(), 0, buff->getIndicesSize());
+					memset((U8*) buff->getMappedData(), 0, buff->getSize());
+					memset((U8*) buff->getIndicesPointer(), 0, buff->getIndicesSize());
 				}
 
 				buff->validateRange(0, buff->getNumVerts()-1, buff->getNumIndices(), 0);
@@ -4138,6 +4167,13 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_lim
 
 	mResourceCost = calcResourceCost();
 
+	LLVertexBuffer::unbind();
+	LLGLSLShader::sNoFixedFunction = no_ff;
+	if (shader)
+	{
+		shader->bind();
+	}
+
 	/*if (which_lod == -1 && mScene[LLModel::LOD_PHYSICS].empty())
 	 { //build physics scene
 	 mScene[LLModel::LOD_PHYSICS] = mScene[LLModel::LOD_LOW];
@@ -4351,11 +4387,6 @@ void LLModelPreview::updateStatusMessages()
 		{
 			skinAndRigOk = false;
 		}	
-		else
-		if ( !isLegacyRigValid() )
-		{
-			mFMP->childDisable("calculate_btn");
-		}
 	}
 	
 	if(upload_ok && mModelLoader)
@@ -4849,8 +4880,8 @@ void LLModelPreview::addEmptyFace( LLModel* pTarget )
 	LLPointer<LLVertexBuffer> buff = new LLVertexBuffer(type_mask, 0);
 	
 	buff->allocateBuffer(1, 3, true);
-	memset( buff->getMappedData(), 0, buff->getSize() );
-	memset( buff->getIndicesPointer(), 0, buff->getIndicesSize() );
+	memset( (U8*) buff->getMappedData(), 0, buff->getSize() );
+	memset( (U8*) buff->getIndicesPointer(), 0, buff->getIndicesSize() );
 		
 	buff->validateRange( 0, buff->getNumVerts()-1, buff->getNumIndices(), 0 );
 		
@@ -4888,6 +4919,8 @@ BOOL LLModelPreview::render()
 	LLMutexLock lock(this);
 	mNeedsUpdate = FALSE;
 
+	bool use_shaders = LLGLSLShader::sNoFixedFunction;
+
 	bool edges = mViewOption["show_edges"];
 	bool joint_positions = mViewOption["show_joint_positions"];
 	bool skin_weight = mViewOption["show_skin_weight"];
@@ -4904,25 +4937,33 @@ BOOL LLModelPreview::render()
 	LLGLDisable fog(GL_FOG);
 
 	{
+		if (use_shaders)
+		{
+			gUIProgram.bind();
+		}
 		//clear background to blue
-		glMatrixMode(GL_PROJECTION);
+		gGL.matrixMode(LLRender::MM_PROJECTION);
 		gGL.pushMatrix();
-		glLoadIdentity();
-		glOrtho(0.0f, width, 0.0f, height, -1.0f, 1.0f);
+		gGL.loadIdentity();
+		gGL.ortho(0.0f, width, 0.0f, height, -1.0f, 1.0f);
 
-		glMatrixMode(GL_MODELVIEW);
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 		gGL.pushMatrix();
-		glLoadIdentity();
+		gGL.loadIdentity();
 
 		gGL.color4f(0.169f, 0.169f, 0.169f, 1.f);
 
 		gl_rect_2d_simple( width, height );
 
-		glMatrixMode(GL_PROJECTION);
+		gGL.matrixMode(LLRender::MM_PROJECTION);
 		gGL.popMatrix();
 
-		glMatrixMode(GL_MODELVIEW);
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 		gGL.popMatrix();
+		if (use_shaders)
+		{
+			gUIProgram.unbind();
+		}
 	}
 
 	LLFloaterModelPreview* fmp = LLFloaterModelPreview::sInstance;
@@ -5035,7 +5076,7 @@ BOOL LLModelPreview::render()
 		refresh();
 	}
 
-	glLoadIdentity();
+	gGL.loadIdentity();
 	gPipeline.enableLightsPreview();
 
 	LLQuaternion camera_rot = LLQuaternion(mCameraPitch, LLVector3::y_axis) *
@@ -5060,6 +5101,11 @@ BOOL LLModelPreview::render()
 
 	const U32 type_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD0;
 
+	if (use_shaders)
+	{
+		gObjectPreviewProgram.bind();
+	}
+
 	LLGLEnable normalize(GL_NORMALIZE);
 
 	if (!mBaseModel.empty() && mVertexBuffer[5].empty())
@@ -5071,6 +5117,8 @@ BOOL LLModelPreview::render()
 
 	if (!mModel[mPreviewLOD].empty())
 	{
+		mFMP->childEnable("reset_btn");
+
 		bool regen = mVertexBuffer[mPreviewLOD].empty();
 		if (!regen)
 		{
@@ -5083,7 +5131,7 @@ BOOL LLModelPreview::render()
 		}
 
 		//make sure material lists all match
-		for (U32 i = 0; i < LLModel::NUM_LODS; i++)
+		for (U32 i = 0; i < LLModel::NUM_LODS-1; i++)
 		{
 			if (mBaseModel.size() == mModel[i].size())
 			{
@@ -5121,7 +5169,7 @@ BOOL LLModelPreview::render()
 				gGL.pushMatrix();
 				LLMatrix4 mat = instance.mTransform;
 
-				glMultMatrixf((GLfloat*) mat.mMatrix);
+				gGL.multMatrix((GLfloat*) mat.mMatrix);
 
 				for (U32 i = 0; i < mVertexBuffer[mPreviewLOD][model].size(); ++i)
 				{
@@ -5137,7 +5185,8 @@ BOOL LLModelPreview::render()
 							const std::string& binding = instance.mModel->mMaterialList[i];						
 							const LLImportMaterial& material = instance.mMaterial[binding];
 
-							glColor4fv(material.mDiffuseColor.mV);
+							gGL.diffuseColor4fv(material.mDiffuseColor.mV);
+
 							if (material.mDiffuseMap.notNull())
 							{
 								if (material.mDiffuseMap->getDiscardLevel() > -1)
@@ -5150,12 +5199,12 @@ BOOL LLModelPreview::render()
 					}
 					else
 					{
-						glColor4f(1,1,1,1);
+						gGL.diffuseColor4f(1,1,1,1);
 					}
 
 					buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0);
 					gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-					glColor3f(0.4f, 0.4f, 0.4f);
+					gGL.diffuseColor3f(0.4f, 0.4f, 0.4f);
 
 					if (edges)
 					{
@@ -5203,7 +5252,7 @@ BOOL LLModelPreview::render()
 						gGL.pushMatrix();
 						LLMatrix4 mat = instance.mTransform;
 
-						glMultMatrixf((GLfloat*) mat.mMatrix);
+						gGL.multMatrix((GLfloat*) mat.mMatrix);
 
 
 						bool render_mesh = true;
@@ -5268,12 +5317,12 @@ BOOL LLModelPreview::render()
 								LLVertexBuffer* buffer = mVertexBuffer[LLModel::LOD_PHYSICS][model][i];
 
 								gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-								glColor4f(0.4f, 0.4f, 0.0f, 0.4f);
+								gGL.diffuseColor4f(0.4f, 0.4f, 0.0f, 0.4f);
 
 								buffer->setBuffer(type_mask & buffer->getTypeMask());
 								buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0);
 
-								glColor3f(1.f, 1.f, 0.f);
+								gGL.diffuseColor3f(1.f, 1.f, 0.f);
 
 								glLineWidth(2.f);
 								glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
@@ -5293,7 +5342,7 @@ BOOL LLModelPreview::render()
 					//show degenerate triangles
 					LLGLDepthTest depth(GL_TRUE, GL_TRUE, GL_ALWAYS);
 					LLGLDisable cull(GL_CULL_FACE);
-					glColor4f(1.f,0.f,0.f,1.f);
+					gGL.diffuseColor4f(1.f,0.f,0.f,1.f);
 					const LLVector4a scale(0.5f);
 
 					for (LLMeshUploadThread::instance_list::iterator iter = mUploadData.begin(); iter != mUploadData.end(); ++iter)
@@ -5310,7 +5359,7 @@ BOOL LLModelPreview::render()
 						gGL.pushMatrix();
 						LLMatrix4 mat = instance.mTransform;
 
-						glMultMatrixf((GLfloat*) mat.mMatrix);
+						gGL.multMatrix((GLfloat*) mat.mMatrix);
 
 
 						LLPhysicsDecomp* decomp = gMeshRepo.mDecompThread;
@@ -5376,7 +5425,16 @@ BOOL LLModelPreview::render()
 
 			if (joint_positions)
 			{
+				LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+				if (shader)
+				{
+					gDebugProgram.bind();
+				}
 				getPreviewAvatar()->renderCollisionVolumes();
+				if (shader)
+				{
+					shader->bind();
+				}
 			}
 
 			for (LLModelLoader::scene::iterator iter = mScene[mPreviewLOD].begin(); iter != mScene[mPreviewLOD].end(); ++iter)
@@ -5415,7 +5473,7 @@ BOOL LLModelPreview::render()
 								}
 							}
 
-							for (U32 j = 0; j < buffer->getRequestedVerts(); ++j)
+							for (U32 j = 0; j < buffer->getNumVerts(); ++j)
 							{
 								LLMatrix4 final_mat;
 								final_mat.mMatrix[0][0] = final_mat.mMatrix[1][1] = final_mat.mMatrix[2][2] = final_mat.mMatrix[3][3] = 0.f;
@@ -5459,11 +5517,12 @@ BOOL LLModelPreview::render()
 
 							const std::string& binding = instance.mModel->mMaterialList[i];
 							const LLImportMaterial& material = instance.mMaterial[binding];
+
 							buffer->setBuffer(type_mask & buffer->getTypeMask());
-							glColor4fv(material.mDiffuseColor.mV);
+							gGL.diffuseColor4fv(material.mDiffuseColor.mV);
 							gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 							buffer->draw(LLRender::TRIANGLES, buffer->getNumIndices(), 0);
-							glColor3f(0.4f, 0.4f, 0.4f);
+							gGL.diffuseColor3f(0.4f, 0.4f, 0.4f);
 
 							if (edges)
 							{
@@ -5480,6 +5539,11 @@ BOOL LLModelPreview::render()
 		}
 	}
 
+	if (use_shaders)
+	{
+		gObjectPreviewProgram.unbind();
+	}
+
 	gGL.popMatrix();
 
 	return TRUE;
@@ -5568,6 +5632,7 @@ void LLFloaterModelPreview::onReset(void* user_data)
 	assert_main_thread();
 
 	LLFloaterModelPreview* fmp = (LLFloaterModelPreview*) user_data;
+	fmp->childDisable("reset_btn");
 	LLModelPreview* mp = fmp->mModelPreview;
 	std::string filename = mp->mLODFile[3]; 
 
diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h
index 47de99ce25d939aa6f8231294297b19bd114a6a6..64324854a55e82415ce91c0f8afb1d8498cc5f21 100644
--- a/indra/newview/llfloatermodelpreview.h
+++ b/indra/newview/llfloatermodelpreview.h
@@ -70,7 +70,8 @@ class LLModelLoader : public LLThread
 		GENERATING_VERTEX_BUFFERS,
 		GENERATING_LOD,
 		DONE,
-		ERROR_PARSING //basically loading failed
+		ERROR_PARSING, //basically loading failed
+		ERROR_MATERIALS,
 	} eLoadState;
 
 	U32 mState;
diff --git a/indra/newview/llfloaternamedesc.cpp b/indra/newview/llfloaternamedesc.cpp
index ae95d4392accfcd2641fd5c23d3a216ab416bc90..66f0fc3cd774ef155e07e6164676bb40429e58f4 100644
--- a/indra/newview/llfloaternamedesc.cpp
+++ b/indra/newview/llfloaternamedesc.cpp
@@ -204,3 +204,24 @@ BOOL LLFloaterSoundPreview::postBuild()
 	getChild<LLUICtrl>("ok_btn")->setCommitCallback(boost::bind(&LLFloaterNameDesc::onBtnOK, this));
 	return TRUE;
 }
+
+
+//-----------------------------------------------------------------------------
+// LLFloaterScriptPreview()
+//-----------------------------------------------------------------------------
+
+LLFloaterScriptPreview::LLFloaterScriptPreview(const LLSD& filename )
+	: LLFloaterNameDesc(filename)
+{
+	mIsText = TRUE;
+}
+
+BOOL LLFloaterScriptPreview::postBuild()
+{
+	if (!LLFloaterNameDesc::postBuild())
+	{
+		return FALSE;
+	}
+	getChild<LLUICtrl>("ok_btn")->setCommitCallback(boost::bind(&LLFloaterNameDesc::onBtnOK, this));
+	return TRUE;
+}
diff --git a/indra/newview/llfloaternamedesc.h b/indra/newview/llfloaternamedesc.h
index 7381a6334a993867bdd1eade9f3b2dcb7edb141c..69bbccaf8047762f01a3ab5162e5ecc39d560d75 100644
--- a/indra/newview/llfloaternamedesc.h
+++ b/indra/newview/llfloaternamedesc.h
@@ -51,6 +51,7 @@ class LLFloaterNameDesc : public LLFloater
 
 protected:
 	BOOL        mIsAudio;
+	bool		mIsText;
 
 	std::string		mFilenameAndPath;
 	std::string		mFilename;
@@ -62,5 +63,12 @@ class LLFloaterSoundPreview : public LLFloaterNameDesc
 	LLFloaterSoundPreview(const LLSD& filename );
 	virtual BOOL postBuild();
 };
-	
+
+class LLFloaterScriptPreview : public LLFloaterNameDesc
+{
+public:
+	LLFloaterScriptPreview(const LLSD& filename );
+	virtual BOOL postBuild();
+};
+
 #endif  // LL_LLFLOATERNAMEDESC_H
diff --git a/indra/newview/llfloaternotificationsconsole.cpp b/indra/newview/llfloaternotificationsconsole.cpp
index 29af81d64c0e40e5266f74f482c5ec82e8e19e91..2681d4b34d2964de520e8f0d8e73a8cbccc01bfa 100644
--- a/indra/newview/llfloaternotificationsconsole.cpp
+++ b/indra/newview/llfloaternotificationsconsole.cpp
@@ -220,7 +220,7 @@ void LLFloaterNotificationConsole::addChannel(const std::string& name, bool open
 void LLFloaterNotificationConsole::removeChannel(const std::string& name)
 {
 	LLPanel* panelp = getChild<LLPanel>(name);
-	getChildRef<LLLayoutStack>("notification_channels").removePanel(panelp);
+	getChildRef<LLView>("notification_channels").removeChild(panelp);
 	delete panelp;
 
 	updateResizeLimits();
diff --git a/indra/newview/llfloateropenobject.cpp b/indra/newview/llfloateropenobject.cpp
index 8b6619def2f1db6eb3bdc3e86975eb1fe34f398d..4bfef8b45fae6ff58b26e57f116ade9b25dc6785 100644
--- a/indra/newview/llfloateropenobject.cpp
+++ b/indra/newview/llfloateropenobject.cpp
@@ -162,26 +162,66 @@ void LLFloaterOpenObject::moveToInventory(bool wear)
 	{
 		parent_category_id = gInventory.getRootFolderID();
 	}
+	
+	LLCategoryCreate* cat_data = new LLCategoryCreate(object_id, wear);
+	
 	LLUUID category_id = gInventory.createNewCategory(parent_category_id, 
-		LLFolderType::FT_NONE, 
-		name);
+													  LLFolderType::FT_NONE, 
+													  name,
+													  callbackCreateInventoryCategory,
+													  (void*)cat_data);
+
+	//If we get a null category ID, we are using a capability in createNewCategory and we will
+	//handle the following in the callbackCreateInventoryCategory routine.
+	if ( category_id.notNull() )
+	{
+		delete cat_data;
+		
+		LLCatAndWear* data = new LLCatAndWear;
+		data->mCatID = category_id;
+		data->mWear = wear;
+		data->mFolderResponded = false;
+
+		// Copy and/or move the items into the newly created folder.
+		// Ignore any "you're going to break this item" messages.
+		BOOL success = move_inv_category_world_to_agent(object_id, category_id, TRUE,
+														callbackMoveInventory, 
+														(void*)data);
+		if (!success)
+		{
+			delete data;
+			data = NULL;
 
-	LLCatAndWear* data = new LLCatAndWear;
-	data->mCatID = category_id;
-	data->mWear = wear;
+			LLNotificationsUtil::add("OpenObjectCannotCopy");
+		}
+	}
+}
 
+// static
+void LLFloaterOpenObject::callbackCreateInventoryCategory(const LLSD& result, void* data)
+{
+	LLCategoryCreate* cat_data = (LLCategoryCreate*)data;
+	
+	LLUUID category_id = result["folder_id"].asUUID();
+	LLCatAndWear* wear_data = new LLCatAndWear;
+
+	wear_data->mCatID = category_id;
+	wear_data->mWear = cat_data->mWear;
+	wear_data->mFolderResponded = true;
+	
 	// Copy and/or move the items into the newly created folder.
 	// Ignore any "you're going to break this item" messages.
-	BOOL success = move_inv_category_world_to_agent(object_id, category_id, TRUE,
+	BOOL success = move_inv_category_world_to_agent(cat_data->mObjectID, category_id, TRUE,
 													callbackMoveInventory, 
-													(void*)data);
+													(void*)wear_data);
 	if (!success)
 	{
-		delete data;
-		data = NULL;
-
+		delete wear_data;
+		wear_data = NULL;
+		
 		LLNotificationsUtil::add("OpenObjectCannotCopy");
 	}
+	delete cat_data;	
 }
 
 // static
diff --git a/indra/newview/llfloateropenobject.h b/indra/newview/llfloateropenobject.h
index 0706e99f16493544e84ab5fe4e79aec7fd080eb5..bf7fe69c656fbad1bb9e4b9d7f9a926a34aed5a3 100644
--- a/indra/newview/llfloateropenobject.h
+++ b/indra/newview/llfloateropenobject.h
@@ -45,10 +45,20 @@ class LLFloaterOpenObject
 	
 	void dirty();
 	
+	class LLCategoryCreate
+	{
+		public:
+			LLCategoryCreate(LLUUID object_id, bool wear) : mObjectID(object_id), mWear(wear) {}
+		public:
+			LLUUID mObjectID;
+			bool mWear;
+	};
+	
 	struct LLCatAndWear
 	{
 		LLUUID mCatID;
 		bool mWear;
+		bool mFolderResponded;
 	};
 
 protected:
@@ -62,6 +72,7 @@ class LLFloaterOpenObject
 
 	void onClickMoveToInventory();
 	void onClickMoveAndWear();
+	static void callbackCreateInventoryCategory(const LLSD& result, void* data);
 	static void callbackMoveInventory(S32 result, void* data);
 
 private:
diff --git a/indra/newview/llfloateroutbox.cpp b/indra/newview/llfloateroutbox.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..540f977305f08c1d9023c8304602009ce117bbca
--- /dev/null
+++ b/indra/newview/llfloateroutbox.cpp
@@ -0,0 +1,567 @@
+/** 
+ * @file llfloateroutbox.cpp
+ * @brief Implementation of the merchant outbox window
+ *
+ * $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 "llviewerprecompiledheaders.h"
+
+#include "llfloateroutbox.h"
+
+#include "llfloaterreg.h"
+#include "llfolderview.h"
+#include "llinventorybridge.h"
+#include "llinventorymodelbackgroundfetch.h"
+#include "llinventoryobserver.h"
+#include "llinventorypanel.h"
+#include "llmarketplacefunctions.h"
+#include "llnotificationhandler.h"
+#include "llnotificationmanager.h"
+#include "llnotificationsutil.h"
+#include "lltextbox.h"
+#include "lltransientfloatermgr.h"
+#include "lltrans.h"
+#include "llviewernetwork.h"
+#include "llwindowshade.h"
+
+#define USE_WINDOWSHADE_DIALOGS	0
+
+
+///----------------------------------------------------------------------------
+/// LLOutboxNotification class
+///----------------------------------------------------------------------------
+
+bool LLNotificationsUI::LLOutboxNotification::processNotification(const LLSD& notify)
+{
+	LLFloaterOutbox* outbox_floater = LLFloaterReg::getTypedInstance<LLFloaterOutbox>("outbox");
+	
+	outbox_floater->showNotification(notify);
+
+	return false;
+}
+
+
+///----------------------------------------------------------------------------
+/// LLOutboxAddedObserver helper class
+///----------------------------------------------------------------------------
+
+class LLOutboxAddedObserver : public LLInventoryCategoryAddedObserver
+{
+public:
+	LLOutboxAddedObserver(LLFloaterOutbox * outboxFloater)
+		: LLInventoryCategoryAddedObserver()
+		, mOutboxFloater(outboxFloater)
+	{
+	}
+	
+	void done()
+	{
+		for (cat_vec_t::iterator it = mAddedCategories.begin(); it != mAddedCategories.end(); ++it)
+		{
+			LLViewerInventoryCategory* added_category = *it;
+			
+			LLFolderType::EType added_category_type = added_category->getPreferredType();
+			
+			if (added_category_type == LLFolderType::FT_OUTBOX)
+			{
+				mOutboxFloater->setupOutbox(added_category->getUUID());
+			}
+		}
+	}
+	
+private:
+	LLFloaterOutbox *	mOutboxFloater;
+};
+
+///----------------------------------------------------------------------------
+/// LLFloaterOutbox
+///----------------------------------------------------------------------------
+
+LLFloaterOutbox::LLFloaterOutbox(const LLSD& key)
+	: LLFloater(key)
+	, mCategoriesObserver(NULL)
+	, mCategoryAddedObserver(NULL)
+	, mImportBusy(false)
+	, mImportButton(NULL)
+	, mInventoryFolderCountText(NULL)
+	, mInventoryImportInProgress(NULL)
+	, mInventoryPlaceholder(NULL)
+	, mInventoryText(NULL)
+	, mInventoryTitle(NULL)
+	, mOutboxId(LLUUID::null)
+	, mOutboxInventoryPanel(NULL)
+	, mOutboxItemCount(0)
+	, mOutboxTopLevelDropZone(NULL)
+	, mWindowShade(NULL)
+{
+}
+
+LLFloaterOutbox::~LLFloaterOutbox()
+{
+	if (mCategoriesObserver && gInventory.containsObserver(mCategoriesObserver))
+	{
+		gInventory.removeObserver(mCategoriesObserver);
+	}
+	delete mCategoriesObserver;
+	
+	if (mCategoryAddedObserver && gInventory.containsObserver(mCategoryAddedObserver))
+	{
+		gInventory.removeObserver(mCategoryAddedObserver);
+	}
+	delete mCategoryAddedObserver;
+}
+
+BOOL LLFloaterOutbox::postBuild()
+{
+	mInventoryFolderCountText = getChild<LLTextBox>("outbox_folder_count");
+	mInventoryImportInProgress = getChild<LLView>("import_progress_indicator");
+	mInventoryPlaceholder = getChild<LLView>("outbox_inventory_placeholder_panel");
+	mInventoryText = mInventoryPlaceholder->getChild<LLTextBox>("outbox_inventory_placeholder_text");
+	mInventoryTitle = mInventoryPlaceholder->getChild<LLTextBox>("outbox_inventory_placeholder_title");
+	
+	mImportButton = getChild<LLButton>("outbox_import_btn");
+	mImportButton->setCommitCallback(boost::bind(&LLFloaterOutbox::onImportButtonClicked, this));
+
+	mOutboxTopLevelDropZone = getChild<LLPanel>("outbox_generic_drag_target");
+
+	LLFocusableElement::setFocusReceivedCallback(boost::bind(&LLFloaterOutbox::onFocusReceived, this));
+
+	return TRUE;
+}
+
+void LLFloaterOutbox::onClose(bool app_quitting)
+{
+	if (mWindowShade)
+	{
+		delete mWindowShade;
+
+		mWindowShade = NULL;
+	}
+}
+
+void LLFloaterOutbox::onOpen(const LLSD& key)
+{
+	//
+	// Look for an outbox and set up the inventory API
+	//
+	
+	if (mOutboxId.isNull())
+	{
+		const bool do_not_create_folder = false;
+		const bool do_not_find_in_library = false;
+		
+		const LLUUID outbox_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, do_not_create_folder, do_not_find_in_library);
+		
+		if (outbox_id.isNull())
+		{
+			// Observe category creation to catch outbox creation
+			mCategoryAddedObserver = new LLOutboxAddedObserver(this);
+			gInventory.addObserver(mCategoryAddedObserver);
+		}
+		else
+		{
+			setupOutbox(outbox_id);
+		}
+	}
+	
+	updateView();
+	
+	//
+	// Trigger fetch of outbox contents
+	//
+	
+	fetchOutboxContents();
+}
+
+void LLFloaterOutbox::onFocusReceived()
+{
+	fetchOutboxContents();
+}
+
+void LLFloaterOutbox::fetchOutboxContents()
+{
+	if (mOutboxId.notNull())
+	{
+		LLInventoryModelBackgroundFetch::instance().start(mOutboxId);
+	}
+}
+
+void LLFloaterOutbox::setupOutbox(const LLUUID& outboxId)
+{
+	llassert(outboxId.notNull());
+	llassert(mOutboxId.isNull());
+	llassert(mCategoriesObserver == NULL);
+	
+	mOutboxId = outboxId;
+	
+	// No longer need to observe new category creation
+	if (mCategoryAddedObserver && gInventory.containsObserver(mCategoryAddedObserver))
+	{
+		gInventory.removeObserver(mCategoryAddedObserver);
+		delete mCategoryAddedObserver;
+		mCategoryAddedObserver = NULL;
+	}
+	
+	// Create observer for outbox modifications
+	mCategoriesObserver = new LLInventoryCategoriesObserver();
+	gInventory.addObserver(mCategoriesObserver);
+	
+	mCategoriesObserver->addCategory(mOutboxId, boost::bind(&LLFloaterOutbox::onOutboxChanged, this));
+	
+	//
+	// Set up the outbox inventory view
+	//
+	
+	mOutboxInventoryPanel = 
+		LLUICtrlFactory::createFromFile<LLInventoryPanel>("panel_outbox_inventory.xml",
+														  mInventoryPlaceholder->getParent(),
+														  LLInventoryPanel::child_registry_t::instance());
+	
+	llassert(mOutboxInventoryPanel);
+	
+	// Reshape the inventory to the proper size
+	LLRect inventory_placeholder_rect = mInventoryPlaceholder->getRect();
+	mOutboxInventoryPanel->setShape(inventory_placeholder_rect);
+	
+	// Set the sort order newest to oldest
+	mOutboxInventoryPanel->setSortOrder(LLInventoryFilter::SO_FOLDERS_BY_NAME);	
+	mOutboxInventoryPanel->getFilter()->markDefault();
+	
+	fetchOutboxContents();
+	
+	//
+	// Initialize the marketplace import API
+	//
+	
+	LLMarketplaceInventoryImporter& importer = LLMarketplaceInventoryImporter::instance();
+	
+	importer.setInitializationErrorCallback(boost::bind(&LLFloaterOutbox::initializationReportError, this, _1, _2));
+	importer.setStatusChangedCallback(boost::bind(&LLFloaterOutbox::importStatusChanged, this, _1));
+	importer.setStatusReportCallback(boost::bind(&LLFloaterOutbox::importReportResults, this, _1, _2));
+	importer.initialize();
+}
+
+void LLFloaterOutbox::setStatusString(const std::string& statusString)
+{
+	llassert(mInventoryFolderCountText != NULL);
+
+	mInventoryFolderCountText->setText(statusString);
+}
+
+void LLFloaterOutbox::updateFolderCount()
+{
+	S32 item_count = 0;
+
+	if (mOutboxId.notNull())
+	{
+		LLInventoryModel::cat_array_t * cats;
+		LLInventoryModel::item_array_t * items;
+		gInventory.getDirectDescendentsOf(mOutboxId, cats, items);
+
+		item_count = cats->count() + items->count();
+	}
+	
+	mOutboxItemCount = item_count;
+
+	if (!mImportBusy)
+	{
+		updateFolderCountStatus();
+	}
+}
+
+void LLFloaterOutbox::updateFolderCountStatus()
+{
+	if (mOutboxInventoryPanel)
+	{
+		switch (mOutboxItemCount)
+		{
+			case 0:	setStatusString(getString("OutboxFolderCount0"));	break;
+			case 1:	setStatusString(getString("OutboxFolderCount1"));	break;
+			default:
+			{
+				std::string item_count_str = llformat("%d", mOutboxItemCount);
+				
+				LLStringUtil::format_map_t args;
+				args["[NUM]"] = item_count_str;
+				
+				setStatusString(getString("OutboxFolderCountN", args));
+				break;
+			}
+		}
+	}
+
+	mImportButton->setEnabled(mOutboxItemCount > 0);
+}
+
+void LLFloaterOutbox::updateView()
+{
+	updateFolderCount();
+
+	if (mOutboxItemCount > 0)
+	{
+		mOutboxInventoryPanel->setVisible(TRUE);
+		mInventoryPlaceholder->setVisible(FALSE);
+	}
+	else
+	{
+		if (mOutboxInventoryPanel)
+		{
+			mOutboxInventoryPanel->setVisible(FALSE);
+		}
+
+		mInventoryPlaceholder->setVisible(TRUE);
+
+		std::string outbox_text;
+		std::string outbox_title;
+		std::string outbox_tooltip;
+		
+		const LLSD& subs = getMarketplaceStringSubstitutions();
+		
+		if (mOutboxId.notNull())
+		{
+			outbox_text = LLTrans::getString("InventoryOutboxNoItems", subs);
+			outbox_title = LLTrans::getString("InventoryOutboxNoItemsTitle");
+			outbox_tooltip = LLTrans::getString("InventoryOutboxNoItemsTooltip");
+		}
+		else
+		{
+			outbox_text = LLTrans::getString("InventoryOutboxNotMerchant", subs);
+			outbox_title = LLTrans::getString("InventoryOutboxNotMerchantTitle");
+			outbox_tooltip = LLTrans::getString("InventoryOutboxNotMerchantTooltip");
+		}
+		
+		mInventoryText->setValue(outbox_text);
+		mInventoryTitle->setValue(outbox_title);
+		mInventoryPlaceholder->getParent()->setToolTip(outbox_tooltip);
+	}
+}
+
+bool isAccepted(EAcceptance accept)
+{
+	return (accept >= ACCEPT_YES_COPY_SINGLE);
+}
+
+BOOL LLFloaterOutbox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+										EDragAndDropType cargo_type,
+										void* cargo_data,
+										EAcceptance* accept,
+										std::string& tooltip_msg)
+{
+	if ((mOutboxInventoryPanel == NULL) ||
+		(mWindowShade && mWindowShade->isShown()) ||
+		LLMarketplaceInventoryImporter::getInstance()->isImportInProgress())
+	{
+		return FALSE;
+	}
+	
+	LLView * handled_view = childrenHandleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
+	BOOL handled = (handled_view != NULL);
+
+	// Determine if the mouse is inside the inventory panel itself or just within the floater
+	bool pointInInventoryPanel = false;
+	bool pointInInventoryPanelChild = false;
+	LLFolderView * root_folder = mOutboxInventoryPanel->getRootFolder();
+	if (mOutboxInventoryPanel->getVisible())
+	{
+		S32 inv_x, inv_y;
+		localPointToOtherView(x, y, &inv_x, &inv_y, mOutboxInventoryPanel);
+
+		pointInInventoryPanel = mOutboxInventoryPanel->getRect().pointInRect(inv_x, inv_y);
+
+		LLView * inventory_panel_child_at_point = mOutboxInventoryPanel->childFromPoint(inv_x, inv_y, true);
+		pointInInventoryPanelChild = (inventory_panel_child_at_point != root_folder);
+	}
+	
+	// Pass all drag and drop for this floater to the outbox inventory control
+	if (!handled || !isAccepted(*accept))
+	{
+		// Handle the drag and drop directly to the root of the outbox if we're not in the inventory panel
+		// (otherwise the inventory panel itself will handle the drag and drop operation, without any override)
+		if (!pointInInventoryPanel)
+		{
+			handled = root_folder->handleDragAndDropToThisFolder(mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
+		}
+
+		mOutboxTopLevelDropZone->setBackgroundVisible(handled && !drop && isAccepted(*accept));
+	}
+	else
+	{
+		mOutboxTopLevelDropZone->setBackgroundVisible(!pointInInventoryPanelChild);
+	}
+	
+	return handled;
+}
+
+BOOL LLFloaterOutbox::handleHover(S32 x, S32 y, MASK mask)
+{
+	mOutboxTopLevelDropZone->setBackgroundVisible(FALSE);
+
+	return LLFloater::handleHover(x, y, mask);
+}
+
+void LLFloaterOutbox::onMouseLeave(S32 x, S32 y, MASK mask)
+{
+	mOutboxTopLevelDropZone->setBackgroundVisible(FALSE);
+
+	LLFloater::onMouseLeave(x, y, mask);
+}
+
+void LLFloaterOutbox::onImportButtonClicked()
+{
+	mOutboxInventoryPanel->clearSelection();
+
+	mImportBusy = LLMarketplaceInventoryImporter::instance().triggerImport();
+}
+
+void LLFloaterOutbox::onOutboxChanged()
+{
+	llassert(!mOutboxId.isNull());
+	
+	if (mOutboxInventoryPanel)
+	{
+		mOutboxInventoryPanel->requestSort();
+	}
+
+	fetchOutboxContents();
+
+	updateView();
+}
+
+void LLFloaterOutbox::importReportResults(U32 status, const LLSD& content)
+{
+	if (status == MarketplaceErrorCodes::IMPORT_DONE)
+	{
+		LLNotificationsUtil::add("OutboxImportComplete");
+	}
+	else if (status == MarketplaceErrorCodes::IMPORT_DONE_WITH_ERRORS)
+	{
+		const LLSD& subs = getMarketplaceStringSubstitutions();
+
+		LLNotificationsUtil::add("OutboxImportHadErrors", subs);
+	}
+	else
+	{
+		char status_string[16];
+		sprintf(status_string, "%d", status);
+		
+		LLSD subs;
+		subs["[ERROR_CODE]"] = status_string;
+		
+		LLNotificationsUtil::add("OutboxImportFailed", subs);
+	}
+	
+	updateView();
+}
+
+void LLFloaterOutbox::importStatusChanged(bool inProgress)
+{
+	if (inProgress)
+	{
+		if (mImportBusy)
+		{
+			setStatusString(getString("OutboxImporting"));
+		}
+		else
+		{
+			setStatusString(getString("OutboxInitializing"));
+		}
+		
+		mImportBusy = true;
+		mImportButton->setEnabled(false);
+		mInventoryImportInProgress->setVisible(true);
+	}
+	else
+	{
+		mImportBusy = false;
+		mImportButton->setEnabled(mOutboxItemCount > 0);
+		mInventoryImportInProgress->setVisible(false);
+	}
+	
+	updateView();
+}
+
+void LLFloaterOutbox::initializationReportError(U32 status, const LLSD& content)
+{
+	if (status != MarketplaceErrorCodes::IMPORT_DONE)
+	{
+		char status_string[16];
+		sprintf(status_string, "%d", status);
+		
+		LLSD subs;
+		subs["[ERROR_CODE]"] = status_string;
+		
+		LLNotificationsUtil::add("OutboxInitFailed", subs);
+	}
+	
+	updateView();
+}
+
+void LLFloaterOutbox::showNotification(const LLSD& notify)
+{
+	LLNotificationPtr notification = LLNotifications::instance().find(notify["id"].asUUID());
+	
+	if (!notification)
+	{
+		llerrs << "Unable to find outbox notification!" << notify.asString() << llendl;
+		
+		return;
+	}
+
+#if USE_WINDOWSHADE_DIALOGS
+
+	if (mWindowShade)
+	{
+		delete mWindowShade;
+	}
+	
+	LLRect floater_rect = getLocalRect();
+	floater_rect.mTop -= getHeaderHeight();
+	floater_rect.stretch(-5, 0);
+	
+	LLWindowShade::Params params;
+	params.name = "notification_shade";
+	params.rect = floater_rect;
+	params.follows.flags = FOLLOWS_ALL;
+	params.modal = true;
+	params.can_close = false;
+	params.shade_color = LLColor4::white % 0.25f;
+	params.text_color = LLColor4::white;
+	
+	mWindowShade = LLUICtrlFactory::create<LLWindowShade>(params);
+	
+	addChild(mWindowShade);
+	mWindowShade->show(notification);
+	
+#else
+	
+	LLNotificationsUI::LLEventHandler * handler =
+		LLNotificationsUI::LLNotificationManager::instance().getHandlerForNotification("alertmodal");
+	
+	LLNotificationsUI::LLSysHandler * sys_handler = dynamic_cast<LLNotificationsUI::LLSysHandler *>(handler);
+	llassert(sys_handler);
+	
+	sys_handler->processNotification(notify);
+	
+#endif
+}
+
diff --git a/indra/newview/llfloateroutbox.h b/indra/newview/llfloateroutbox.h
new file mode 100644
index 0000000000000000000000000000000000000000..18baccf1c95e75ae3c74dacdf3675fcb8cba4734
--- /dev/null
+++ b/indra/newview/llfloateroutbox.h
@@ -0,0 +1,114 @@
+/** 
+ * @file llfloateroutbox.h
+ * @brief LLFloaterOutbox
+ * class definition
+ *
+ * $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
+ * ABILITY 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_LLFLOATEROUTBOX_H
+#define LL_LLFLOATEROUTBOX_H
+
+#include "llfloater.h"
+#include "llfoldertype.h"
+#include "llnotificationptr.h"
+
+
+class LLButton;
+class LLInventoryCategoriesObserver;
+class LLInventoryCategoryAddedObserver;
+class LLInventoryPanel;
+class LLLoadingIndicator;
+class LLNotification;
+class LLTextBox;
+class LLView;
+class LLWindowShade;
+
+
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+// Class LLFloaterOutbox
+//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+class LLFloaterOutbox : public LLFloater
+{
+public:
+	LLFloaterOutbox(const LLSD& key);
+	~LLFloaterOutbox();
+	
+	void setupOutbox(const LLUUID& outboxId);
+
+	// virtuals
+	BOOL postBuild();
+	BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+						   EDragAndDropType cargo_type,
+						   void* cargo_data,
+						   EAcceptance* accept,
+						   std::string& tooltip_msg);
+	
+	void showNotification(const LLSD& notify);
+
+	BOOL handleHover(S32 x, S32 y, MASK mask);
+	void onMouseLeave(S32 x, S32 y, MASK mask);
+
+protected:
+	void fetchOutboxContents();
+
+	void importReportResults(U32 status, const LLSD& content);
+	void importStatusChanged(bool inProgress);
+	void initializationReportError(U32 status, const LLSD& content);
+	
+	void onClose(bool app_quitting);
+	void onOpen(const LLSD& key);
+
+	void onFocusReceived();
+
+	void onImportButtonClicked();
+	void onOutboxChanged();
+	
+	void setStatusString(const std::string& statusString);
+	
+	void updateFolderCount();
+	void updateFolderCountStatus();
+	void updateView();
+
+private:
+	LLInventoryCategoriesObserver *		mCategoriesObserver;
+	LLInventoryCategoryAddedObserver *	mCategoryAddedObserver;
+	
+	bool			mImportBusy;
+	LLButton *		mImportButton;
+	
+	LLTextBox *		mInventoryFolderCountText;
+	LLView *		mInventoryImportInProgress;
+	LLView *		mInventoryPlaceholder;
+	LLTextBox *		mInventoryText;
+	LLTextBox *		mInventoryTitle;
+	
+	LLUUID				mOutboxId;
+	LLInventoryPanel *	mOutboxInventoryPanel;
+	U32					mOutboxItemCount;
+	LLPanel *			mOutboxTopLevelDropZone;
+	
+	LLWindowShade *	mWindowShade;
+};
+
+#endif // LL_LLFLOATEROUTBOX_H
diff --git a/indra/newview/llfloaterpostcard.cpp b/indra/newview/llfloaterpostcard.cpp
deleted file mode 100644
index 3bcbb987f750eec897a7aa6145fea62790452e45..0000000000000000000000000000000000000000
--- a/indra/newview/llfloaterpostcard.cpp
+++ /dev/null
@@ -1,384 +0,0 @@
-/** 
- * @file llfloaterpostcard.cpp
- * @brief Postcard send floater, allows setting name, e-mail address, etc.
- *
- * $LicenseInfo:firstyear=2004&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 "llfloaterpostcard.h"
-
-#include "llfontgl.h"
-#include "llsys.h"
-#include "llgl.h"
-#include "v3dmath.h"
-#include "lldir.h"
-
-#include "llagent.h"
-#include "llui.h"
-#include "lllineeditor.h"
-#include "llbutton.h"
-#include "lltexteditor.h"
-#include "llfloaterreg.h"
-#include "llnotificationsutil.h"
-#include "llviewercontrol.h"
-#include "llviewernetwork.h"
-#include "lluictrlfactory.h"
-#include "lluploaddialog.h"
-#include "llviewerstats.h"
-#include "llviewerwindow.h"
-#include "llstatusbar.h"
-#include "llviewerregion.h"
-#include "lleconomy.h"
-#include "message.h"
-
-#include "llimagejpeg.h"
-#include "llimagej2c.h"
-#include "llvfile.h"
-#include "llvfs.h"
-#include "llviewertexture.h"
-#include "llassetuploadresponders.h"
-#include "llagentui.h"
-
-#include <boost/regex.hpp>  //boost.regex lib
-
-///----------------------------------------------------------------------------
-/// Local function declarations, constants, enums, and typedefs
-///----------------------------------------------------------------------------
-
-///----------------------------------------------------------------------------
-/// Class LLFloaterPostcard
-///----------------------------------------------------------------------------
-
-LLFloaterPostcard::LLFloaterPostcard(const LLSD& key)
-:	LLFloater(key),
-	mJPEGImage(NULL),
-	mViewerImage(NULL),
-	mHasFirstMsgFocus(false)
-{
-}
-
-// Destroys the object
-LLFloaterPostcard::~LLFloaterPostcard()
-{
-	mJPEGImage = NULL; // deletes image
-}
-
-BOOL LLFloaterPostcard::postBuild()
-{
-	// pick up the user's up-to-date email address
-	gAgent.sendAgentUserInfoRequest();
-
-	childSetAction("cancel_btn", onClickCancel, this);
-	childSetAction("send_btn", onClickSend, this);
-
-	getChildView("from_form")->setEnabled(FALSE);
-
-	std::string name_string;
-	LLAgentUI::buildFullname(name_string);
-	getChild<LLUICtrl>("name_form")->setValue(LLSD(name_string));
-
-	// For the first time a user focusess to .the msg box, all text will be selected.
-	getChild<LLUICtrl>("msg_form")->setFocusChangedCallback(boost::bind(onMsgFormFocusRecieved, _1, this));
-	
-	getChild<LLUICtrl>("to_form")->setFocus(TRUE);
-
-    return TRUE;
-}
-
-// static
-LLFloaterPostcard* LLFloaterPostcard::showFromSnapshot(LLImageJPEG *jpeg, LLViewerTexture *img, const LLVector2 &image_scale, const LLVector3d& pos_taken_global)
-{
-	// Take the images from the caller
-	// It's now our job to clean them up
-	LLFloaterPostcard* instance = LLFloaterReg::showTypedInstance<LLFloaterPostcard>("postcard", LLSD(img->getID()));
-
-	if (instance) // may be 0 if we're in mouselook mode
-	{
-		instance->mJPEGImage = jpeg;
-		instance->mViewerImage = img;
-		instance->mImageScale = image_scale;
-		instance->mPosTakenGlobal = pos_taken_global;
-	}
-	
-	return instance;
-}
-
-void LLFloaterPostcard::draw()
-{
-	LLGLSUIDefault gls_ui;
-	LLFloater::draw();
-
-	if(!isMinimized() && mViewerImage.notNull() && mJPEGImage.notNull()) 
-	{
-		// Force the texture to be 100% opaque when the floater is focused.
-		F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency();
-		LLRect rect(getRect());
-
-		// first set the max extents of our preview
-		rect.translate(-rect.mLeft, -rect.mBottom);
-		rect.mLeft += 320;
-		rect.mRight -= 10;
-		rect.mTop -= 27;
-		rect.mBottom = rect.mTop - 130;
-
-		// then fix the aspect ratio
-		F32 ratio = (F32)mJPEGImage->getWidth() / (F32)mJPEGImage->getHeight();
-		if ((F32)rect.getWidth() / (F32)rect.getHeight() >= ratio)
-		{
-			rect.mRight = LLRect::tCoordType((F32)rect.mLeft + ((F32)rect.getHeight() * ratio));
-		}
-		else
-		{
-			rect.mBottom = LLRect::tCoordType((F32)rect.mTop - ((F32)rect.getWidth() / ratio));
-		}
-		{
-			gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-			gl_rect_2d(rect, LLColor4(0.f, 0.f, 0.f, 1.f) % alpha);
-			rect.stretch(-1);
-		}
-		{
-
-		glMatrixMode(GL_TEXTURE);
-		glPushMatrix();
-		{
-			glScalef(mImageScale.mV[VX], mImageScale.mV[VY], 1.f);
-			glMatrixMode(GL_MODELVIEW);
-			gl_draw_scaled_image(rect.mLeft,
-								 rect.mBottom,
-								 rect.getWidth(),
-								 rect.getHeight(),
-								 mViewerImage.get(), 
-								 LLColor4::white % alpha);
-		}
-		glMatrixMode(GL_TEXTURE);
-		glPopMatrix();
-		glMatrixMode(GL_MODELVIEW);
-		}
-	}
-}
-
-// static
-void LLFloaterPostcard::onClickCancel(void* data)
-{
-	if (data)
-	{
-		LLFloaterPostcard *self = (LLFloaterPostcard *)data;
-
-		self->closeFloater(false);
-	}
-}
-
-class LLSendPostcardResponder : public LLAssetUploadResponder
-{
-public:
-	LLSendPostcardResponder(const LLSD &post_data,
-							const LLUUID& vfile_id,
-							LLAssetType::EType asset_type):
-	    LLAssetUploadResponder(post_data, vfile_id, asset_type)
-	{	
-	}
-	// *TODO define custom uploadFailed here so it's not such a generic message
-	void uploadComplete(const LLSD& content)
-	{
-		// we don't care about what the server returns from this post, just clean up the UI
-		LLUploadDialog::modalUploadFinished();
-	}
-};
-
-// static
-void LLFloaterPostcard::onClickSend(void* data)
-{
-	if (data)
-	{
-		LLFloaterPostcard *self = (LLFloaterPostcard *)data;
-
-		std::string from(self->getChild<LLUICtrl>("from_form")->getValue().asString());
-		std::string to(self->getChild<LLUICtrl>("to_form")->getValue().asString());
-		
-		boost::regex emailFormat("[A-Za-z0-9.%+-_]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}(,[ \t]*[A-Za-z0-9.%+-_]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,})*");
-		
-		if (to.empty() || !boost::regex_match(to, emailFormat))
-		{
-			LLNotificationsUtil::add("PromptRecipientEmail");
-			return;
-		}
-
-		if (from.empty() || !boost::regex_match(from, emailFormat))
-		{
-			LLNotificationsUtil::add("PromptSelfEmail");
-			return;
-		}
-
-		std::string subject(self->getChild<LLUICtrl>("subject_form")->getValue().asString());
-		if(subject.empty() || !self->mHasFirstMsgFocus)
-		{
-			LLNotificationsUtil::add("PromptMissingSubjMsg", LLSD(), LLSD(), boost::bind(&LLFloaterPostcard::missingSubjMsgAlertCallback, self, _1, _2));
-			return;
-		}
-
-		if (self->mJPEGImage.notNull())
-		{
-			self->sendPostcard();
-		}
-		else
-		{
-			LLNotificationsUtil::add("ErrorProcessingSnapshot");
-		}
-	}
-}
-
-// static
-void LLFloaterPostcard::uploadCallback(const LLUUID& asset_id, void *user_data, S32 result, LLExtStat ext_status) // StoreAssetData callback (fixed)
-{
-	LLFloaterPostcard *self = (LLFloaterPostcard *)user_data;
-	
-	LLUploadDialog::modalUploadFinished();
-	
-	if (result)
-	{
-		LLSD args;
-		args["REASON"] = std::string(LLAssetStorage::getErrorString(result));
-		LLNotificationsUtil::add("ErrorUploadingPostcard", args);
-	}
-	else
-	{
-		// only create the postcard once the upload succeeds
-
-		// request the postcard
-		LLMessageSystem* msg = gMessageSystem;
-		msg->newMessage("SendPostcard");
-		msg->nextBlock("AgentData");
-		msg->addUUID("AgentID", gAgent.getID());
-		msg->addUUID("SessionID", gAgent.getSessionID());
-		msg->addUUID("AssetID", self->mAssetID);
-		msg->addVector3d("PosGlobal", self->mPosTakenGlobal);
-		msg->addString("To", self->getChild<LLUICtrl>("to_form")->getValue().asString());
-		msg->addString("From", self->getChild<LLUICtrl>("from_form")->getValue().asString());
-		msg->addString("Name", self->getChild<LLUICtrl>("name_form")->getValue().asString());
-		msg->addString("Subject", self->getChild<LLUICtrl>("subject_form")->getValue().asString());
-		msg->addString("Msg", self->getChild<LLUICtrl>("msg_form")->getValue().asString());
-		msg->addBOOL("AllowPublish", FALSE);
-		msg->addBOOL("MaturePublish", FALSE);
-		gAgent.sendReliableMessage();
-	}
-
-	self->closeFloater();
-}
-
-// static
-void LLFloaterPostcard::updateUserInfo(const std::string& email)
-{
-	LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("postcard");
-	for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin();
-		 iter != inst_list.end(); ++iter)
-	{
-		LLFloater* instance = *iter;
-		const std::string& text = instance->getChild<LLUICtrl>("from_form")->getValue().asString();
-		if (text.empty())
-		{
-			// there's no text in this field yet, pre-populate
-			instance->getChild<LLUICtrl>("from_form")->setValue(LLSD(email));
-		}
-	}
-}
-
-void LLFloaterPostcard::onMsgFormFocusRecieved(LLFocusableElement* receiver, void* data)
-{
-	LLFloaterPostcard* self = (LLFloaterPostcard *)data;
-	if(self) 
-	{
-		LLTextEditor* msgForm = self->getChild<LLTextEditor>("msg_form");
-		if(msgForm && msgForm == receiver && msgForm->hasFocus() && !(self->mHasFirstMsgFocus))
-		{
-			self->mHasFirstMsgFocus = true;
-			msgForm->setText(LLStringUtil::null);
-		}
-	}
-}
-
-bool LLFloaterPostcard::missingSubjMsgAlertCallback(const LLSD& notification, const LLSD& response)
-{
-	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-	if(0 == option)
-	{
-		// User clicked OK
-		if((getChild<LLUICtrl>("subject_form")->getValue().asString()).empty())
-		{
-			// Stuff the subject back into the form.
-			getChild<LLUICtrl>("subject_form")->setValue(getString("default_subject"));
-		}
-
-		if(!mHasFirstMsgFocus)
-		{
-			// The user never switched focus to the messagee window. 
-			// Using the default string.
-			getChild<LLUICtrl>("msg_form")->setValue(getString("default_message"));
-		}
-
-		sendPostcard();
-	}
-	return false;
-}
-
-void LLFloaterPostcard::sendPostcard()
-{
-	mTransactionID.generate();
-	mAssetID = mTransactionID.makeAssetID(gAgent.getSecureSessionID());
-	LLVFile::writeFile(mJPEGImage->getData(), mJPEGImage->getDataSize(), gVFS, mAssetID, LLAssetType::AT_IMAGE_JPEG);
-
-	// upload the image
-	std::string url = gAgent.getRegion()->getCapability("SendPostcard");
-	if(!url.empty())
-	{
-		llinfos << "Send Postcard via capability" << llendl;
-		LLSD body = LLSD::emptyMap();
-		// the capability already encodes: agent ID, region ID
-		body["pos-global"] = mPosTakenGlobal.getValue();
-		body["to"] = getChild<LLUICtrl>("to_form")->getValue().asString();
-		body["from"] = getChild<LLUICtrl>("from_form")->getValue().asString();
-		body["name"] = getChild<LLUICtrl>("name_form")->getValue().asString();
-		body["subject"] = getChild<LLUICtrl>("subject_form")->getValue().asString();
-		body["msg"] = getChild<LLUICtrl>("msg_form")->getValue().asString();
-		LLHTTPClient::post(url, body, new LLSendPostcardResponder(body, mAssetID, LLAssetType::AT_IMAGE_JPEG));
-	} 
-	else
-	{
-		gAssetStorage->storeAssetData(mTransactionID, LLAssetType::AT_IMAGE_JPEG, &uploadCallback, (void *)this, FALSE);
-	}
-	
-	// give user feedback of the event
-	gViewerWindow->playSnapshotAnimAndSound();
-	LLUploadDialog::modalUploadDialog(getString("upload_message"));
-
-	// don't destroy the window until the upload is done
-	// this way we keep the information in the form
-	setVisible(FALSE);
-
-	// also remove any dependency on another floater
-	// so that we can be sure to outlive it while we
-	// need to.
-	LLFloater* dependee = getDependee();
-	if (dependee)
-		dependee->removeDependentFloater(this);
-}
diff --git a/indra/newview/llfloaterpostcard.h b/indra/newview/llfloaterpostcard.h
deleted file mode 100644
index 472592154fe6ea52e8ff6be686f05a810ba17e04..0000000000000000000000000000000000000000
--- a/indra/newview/llfloaterpostcard.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/** 
- * @file llfloaterpostcard.h
- * @brief Postcard send floater, allows setting name, e-mail address, etc.
- *
- * $LicenseInfo:firstyear=2004&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_LLFLOATERPOSTCARD_H
-#define LL_LLFLOATERPOSTCARD_H
-
-#include "llfloater.h"
-#include "llcheckboxctrl.h"
-
-#include "llpointer.h"
-
-class LLTextEditor;
-class LLLineEditor;
-class LLButton;
-class LLViewerTexture;
-class LLImageJPEG;
-
-class LLFloaterPostcard 
-: public LLFloater
-{
-public:
-	LLFloaterPostcard(const LLSD& key);
-	virtual ~LLFloaterPostcard();
-
-	virtual BOOL postBuild();
-	virtual void draw();
-
-	static LLFloaterPostcard* showFromSnapshot(LLImageJPEG *jpeg, LLViewerTexture *img, const LLVector2& img_scale, const LLVector3d& pos_taken_global);
-
-	static void onClickCancel(void* data);
-	static void onClickSend(void* data);
-
-	static void uploadCallback(const LLUUID& asset_id,
-							   void *user_data,
-							   S32 result, LLExtStat ext_status);
-
-	static void updateUserInfo(const std::string& email);
-
-	static void onMsgFormFocusRecieved(LLFocusableElement* receiver, void* data);
-	bool missingSubjMsgAlertCallback(const LLSD& notification, const LLSD& response);
-
-	void sendPostcard();
-
-private:
-	
-	LLPointer<LLImageJPEG> mJPEGImage;
-	LLPointer<LLViewerTexture> mViewerImage;
-	LLTransactionID mTransactionID;
-	LLAssetID mAssetID;
-	LLVector2 mImageScale;
-	LLVector3d mPosTakenGlobal;
-	bool mHasFirstMsgFocus;
-};
-
-
-#endif // LL_LLFLOATERPOSTCARD_H
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index d65928e3859fc31ce650155d672db2249d4a8f1f..a333989e7e5951319f38aa05027acc803965821e 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -50,6 +50,7 @@
 #include "llfloaterreg.h"
 #include "llfloaterabout.h"
 #include "llfloaterhardwaresettings.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llimfloater.h"
 #include "llkeyboard.h"
 #include "llmodaldialog.h"
@@ -66,7 +67,6 @@
 #include "llscrolllistctrl.h"
 #include "llscrolllistitem.h"
 #include "llsliderctrl.h"
-#include "llsidetray.h"
 #include "lltabcontainer.h"
 #include "lltrans.h"
 #include "llviewercontrol.h"
@@ -304,7 +304,7 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
 	mOriginalIMViaEmail(false),
 	mLanguageChanged(false),
 	mAvatarDataInitialized(false),
-	mDoubleClickActionDirty(false)
+	mClickActionDirty(false)
 {
 	
 	//Build Floater is now Called from 	LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>);
@@ -345,11 +345,11 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key)
 	mCommitCallbackRegistrar.add("Pref.MaturitySettings",		boost::bind(&LLFloaterPreference::onChangeMaturity, this));
 	mCommitCallbackRegistrar.add("Pref.BlockList",				boost::bind(&LLFloaterPreference::onClickBlockList, this));
 	mCommitCallbackRegistrar.add("Pref.Proxy",					boost::bind(&LLFloaterPreference::onClickProxySettings, this));
+	mCommitCallbackRegistrar.add("Pref.TranslationSettings",	boost::bind(&LLFloaterPreference::onClickTranslationSettings, this));
 	
 	sSkin = gSavedSettings.getString("SkinCurrent");
 
-	mCommitCallbackRegistrar.add("Pref.CommitDoubleClickChekbox",	boost::bind(&LLFloaterPreference::onDoubleClickCheckBox, this, _1));
-	mCommitCallbackRegistrar.add("Pref.CommitRadioDoubleClick",	boost::bind(&LLFloaterPreference::onDoubleClickRadio, this));
+	mCommitCallbackRegistrar.add("Pref.ClickActionChange",				boost::bind(&LLFloaterPreference::onClickActionChange, this));
 
 	gSavedSettings.getControl("NameTagShowUsernames")->getCommitSignal()->connect(boost::bind(&handleNameTagOptionChanged,  _2));	
 	gSavedSettings.getControl("NameTagShowFriends")->getCommitSignal()->connect(boost::bind(&handleNameTagOptionChanged,  _2));	
@@ -439,8 +439,6 @@ BOOL LLFloaterPreference::postBuild()
 	if (!tabcontainer->selectTab(gSavedSettings.getS32("LastPrefTab")))
 		tabcontainer->selectFirstTab();
 
-	updateDoubleClickControls();
-
 	getChild<LLUICtrl>("cache_location")->setEnabled(FALSE); // make it read-only but selectable (STORM-227)
 	std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "");
 	setCacheLocation(cache_location);
@@ -581,10 +579,10 @@ void LLFloaterPreference::apply()
 
 	saveAvatarProperties();
 
-	if (mDoubleClickActionDirty)
+	if (mClickActionDirty)
 	{
-		updateDoubleClickSettings();
-		mDoubleClickActionDirty = false;
+		updateClickActionSettings();
+		mClickActionDirty = false;
 	}
 }
 
@@ -602,6 +600,9 @@ void LLFloaterPreference::cancel()
 	}
 	// hide joystick pref floater
 	LLFloaterReg::hideInstance("pref_joystick");
+
+	// hide translation settings floater
+	LLFloaterReg::hideInstance("prefs_translation");
 	
 	// cancel hardware menu
 	LLFloaterHardwareSettings* hardware_settings = LLFloaterReg::getTypedInstance<LLFloaterHardwareSettings>("prefs_hardware_settings");
@@ -613,11 +614,12 @@ void LLFloaterPreference::cancel()
 	// reverts any changes to current skin
 	gSavedSettings.setString("SkinCurrent", sSkin);
 
-	if (mDoubleClickActionDirty)
+	if (mClickActionDirty)
 	{
-		updateDoubleClickControls();
-		mDoubleClickActionDirty = false;
+		updateClickActionControls();
+		mClickActionDirty = false;
 	}
+
 	LLFloaterPreferenceProxy * advanced_proxy_settings = LLFloaterReg::findTypedInstance<LLFloaterPreferenceProxy>("prefs_proxy");
 	if (advanced_proxy_settings)
 	{
@@ -682,6 +684,9 @@ void LLFloaterPreference::onOpen(const LLSD& key)
 	// Display selected maturity icons.
 	onChangeMaturity();
 	
+	// Load (double-)click to walk/teleport settings.
+	updateClickActionControls();
+	
 	// Enabled/disabled popups, might have been changed by user actions
 	// while preferences floater was closed.
 	buildPopupLists();
@@ -1496,79 +1501,42 @@ void LLFloaterPreference::onChangeMaturity()
 // but the UI for this will still be enabled
 void LLFloaterPreference::onClickBlockList()
 {
-	// don't create side tray on demand
-	if (LLSideTray::instanceCreated())
-	{
-		LLSideTray::getInstance()->showPanel("panel_block_list_sidetray");
-	}
+	LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
 }
 
-void LLFloaterPreference::onDoubleClickCheckBox(LLUICtrl* ctrl)
+void LLFloaterPreference::onClickProxySettings()
 {
-	if (!ctrl) return;
-	mDoubleClickActionDirty = true;
-	LLRadioGroup* radio_double_click_action = getChild<LLRadioGroup>("double_click_action");
-	if (!radio_double_click_action) return;
-	// select default value("teleport") in radio-group.
-	radio_double_click_action->setSelectedIndex(0);
-	// set radio-group enabled depending on state of checkbox
-	radio_double_click_action->setEnabled(ctrl->getValue());
+	LLFloaterReg::showInstance("prefs_proxy");
 }
 
-void LLFloaterPreference::onDoubleClickRadio()
+void LLFloaterPreference::onClickTranslationSettings()
 {
-	mDoubleClickActionDirty = true;
+	LLFloaterReg::showInstance("prefs_translation");
 }
 
-void LLFloaterPreference::updateDoubleClickSettings()
+void LLFloaterPreference::onClickActionChange()
 {
-	LLCheckBoxCtrl* double_click_action_cb = getChild<LLCheckBoxCtrl>("double_click_chkbox");
-	if (!double_click_action_cb) return;
-	bool enable = double_click_action_cb->getValue().asBoolean();
-
-	LLRadioGroup* radio_double_click_action = getChild<LLRadioGroup>("double_click_action");
-	if (!radio_double_click_action) return;
-	
-	// enable double click radio-group depending on state of checkbox
-	radio_double_click_action->setEnabled(enable);
-	
-	if (!enable)
-	{
-		// set double click action settings values to false if checkbox was unchecked
-		gSavedSettings.setBOOL("DoubleClickAutoPilot", false);
-		gSavedSettings.setBOOL("DoubleClickTeleport", false);
-	}
-	else
-	{
-		std::string selected = radio_double_click_action->getValue().asString();
-		bool teleport_selected = selected == "radio_teleport";
-		// set double click action settings values depending on chosen radio-button
-		gSavedSettings.setBOOL( "DoubleClickTeleport", teleport_selected );
-		gSavedSettings.setBOOL( "DoubleClickAutoPilot", !teleport_selected );
-	}
+	mClickActionDirty = true;
 }
 
-void LLFloaterPreference::onClickProxySettings()
+void LLFloaterPreference::updateClickActionSettings()
 {
-	LLFloaterReg::showInstance("prefs_proxy");
+	const int single_clk_action = getChild<LLComboBox>("single_click_action_combo")->getValue().asInteger();
+	const int double_clk_action = getChild<LLComboBox>("double_click_action_combo")->getValue().asInteger();
+
+	gSavedSettings.setBOOL("ClickToWalk",			single_clk_action == 1);
+	gSavedSettings.setBOOL("DoubleClickAutoPilot",	double_clk_action == 1);
+	gSavedSettings.setBOOL("DoubleClickTeleport",	double_clk_action == 2);
 }
 
-void LLFloaterPreference::updateDoubleClickControls()
+void LLFloaterPreference::updateClickActionControls()
 {
-	// check is one of double-click actions settings enabled
-	bool double_click_action_enabled = gSavedSettings.getBOOL("DoubleClickAutoPilot") || gSavedSettings.getBOOL("DoubleClickTeleport");
-	LLCheckBoxCtrl* double_click_action_cb = getChild<LLCheckBoxCtrl>("double_click_chkbox");
-	if (double_click_action_cb)
-	{
-		// check checkbox if one of double-click actions settings enabled, uncheck otherwise
-		double_click_action_cb->setValue(double_click_action_enabled);
-	}
-	LLRadioGroup* double_click_action_radio = getChild<LLRadioGroup>("double_click_action");
-	if (!double_click_action_radio) return;
-	// set radio-group enabled if one of double-click actions settings enabled
-	double_click_action_radio->setEnabled(double_click_action_enabled);
-	// select button in radio-group depending on setting
-	double_click_action_radio->setSelectedIndex(gSavedSettings.getBOOL("DoubleClickAutoPilot"));
+	const bool click_to_walk = gSavedSettings.getBOOL("ClickToWalk");
+	const bool dbl_click_to_walk = gSavedSettings.getBOOL("DoubleClickAutoPilot");
+	const bool dbl_click_to_teleport = gSavedSettings.getBOOL("DoubleClickTeleport");
+
+	getChild<LLComboBox>("single_click_action_combo")->setValue((int)click_to_walk);
+	getChild<LLComboBox>("double_click_action_combo")->setValue(dbl_click_to_teleport ? 2 : (int)dbl_click_to_walk);
 }
 
 void LLFloaterPreference::applyUIColor(LLUICtrl* ctrl, const LLSD& param)
@@ -1954,7 +1922,6 @@ BOOL LLFloaterPreferenceProxy::postBuild()
 		getChild<LLLineEditor>("socks5_password")->setValue(socks_cred->getAuthenticator()["creds"].asString());
 	}
 
-	center();
 	return TRUE;
 }
 
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index ef9bc2dd5322313ef4f4d7da940ba92527c63440..7ee3294478b9e6e2da634590c7a0ba76fca6eba8 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -104,14 +104,13 @@ class LLFloaterPreference : public LLFloater, public LLAvatarPropertiesObserver
 	void setHardwareDefaults();
 	// callback for when client turns on shaders
 	void onVertexShaderEnable();
-	// callback for changing double click action checkbox
-	void onDoubleClickCheckBox(LLUICtrl* ctrl);
-	// callback for selecting double click action radio-button
-	void onDoubleClickRadio();
-	// updates double-click action settings depending on controls from preferences
-	void updateDoubleClickSettings();
-	// updates double-click action controls depending on values from settings.xml
-	void updateDoubleClickControls();
+
+	// callback for commit in the "Single click on land" and "Double click on land" comboboxes.
+	void onClickActionChange();
+	// updates click/double-click action settings depending on controls values
+	void updateClickActionSettings();
+	// updates click/double-click action controls depending on values from settings.xml
+	void updateClickActionControls();
 	
 	// This function squirrels away the current values of the controls so that
 	// cancel() can restore them.	
@@ -157,6 +156,7 @@ class LLFloaterPreference : public LLFloater, public LLAvatarPropertiesObserver
 	void onChangeMaturity();
 	void onClickBlockList();
 	void onClickProxySettings();
+	void onClickTranslationSettings();
 	void applyUIColor(LLUICtrl* ctrl, const LLSD& param);
 	void getUIColor(LLUICtrl* ctrl, const LLSD& param);
 	
@@ -164,9 +164,7 @@ class LLFloaterPreference : public LLFloater, public LLAvatarPropertiesObserver
 	static void refreshSkin(void* data);
 private:
 	static std::string sSkin;
-	// set true if state of double-click action checkbox or radio-group was changed by user
-	// (reset back to false on apply or cancel)
-	bool mDoubleClickActionDirty;
+	bool mClickActionDirty; ///< Set to true when the click/double-click options get changed by user.
 	bool mGotPersonalInfo;
 	bool mOriginalIMViaEmail;
 	bool mLanguageChanged;
diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..be7a53491d81a8c7f86ed94d71a647efe11ce3c7
--- /dev/null
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -0,0 +1,111 @@
+/** 
+ * @file llfloatersidepanelcontainer.cpp
+ * @brief LLFloaterSidePanelContainer class definition
+ *
+ * $LicenseInfo:firstyear=2011&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 "llviewerprecompiledheaders.h"
+
+#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
+
+// newview includes
+#include "llsidetraypanelcontainer.h"
+#include "lltransientfloatermgr.h"
+
+//static
+const std::string LLFloaterSidePanelContainer::sMainPanelName("main_panel");
+
+LLFloaterSidePanelContainer::LLFloaterSidePanelContainer(const LLSD& key, const Params& params)
+:	LLFloater(key, params)
+{
+	// Prevent transient floaters (e.g. IM windows) from hiding
+	// when this floater is clicked.
+	LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::GLOBAL, this);
+}
+
+LLFloaterSidePanelContainer::~LLFloaterSidePanelContainer()
+{
+	LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::GLOBAL, this);
+}
+
+void LLFloaterSidePanelContainer::onOpen(const LLSD& key)
+{
+	getChild<LLPanel>(sMainPanelName)->onOpen(key);
+}
+
+LLPanel* LLFloaterSidePanelContainer::openChildPanel(const std::string& panel_name, const LLSD& params)
+{
+	LLView* view = findChildView(panel_name, true);
+	if (!view) return NULL;
+
+	openFloater();
+
+	LLPanel* panel = NULL;
+
+	LLSideTrayPanelContainer* container = dynamic_cast<LLSideTrayPanelContainer*>(view->getParent());
+	if (container)
+	{
+		LLSD new_params = params;
+		new_params[LLSideTrayPanelContainer::PARAM_SUB_PANEL_NAME] = panel_name;
+		container->onOpen(new_params);
+
+		panel = container->getCurrentPanel();
+	}
+	else if ((panel = dynamic_cast<LLPanel*>(view)) != NULL)
+	{
+		panel->onOpen(params);
+	}
+
+	return panel;
+}
+
+void LLFloaterSidePanelContainer::showPanel(const std::string& floater_name, const LLSD& key)
+{
+	LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>(floater_name);
+	if (floaterp)
+	{
+		floaterp->openChildPanel(sMainPanelName, key);
+	}
+}
+
+void LLFloaterSidePanelContainer::showPanel(const std::string& floater_name, const std::string& panel_name, const LLSD& key)
+{
+	LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>(floater_name);
+	if (floaterp)
+	{
+		floaterp->openChildPanel(panel_name, key);
+	}
+}
+
+LLPanel* LLFloaterSidePanelContainer::getPanel(const std::string& floater_name, const std::string& panel_name)
+{
+	LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>(floater_name);
+
+	if (floaterp)
+	{
+		return floaterp->findChild<LLPanel>(panel_name, true);
+	}
+
+	return NULL;
+}
diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h
new file mode 100644
index 0000000000000000000000000000000000000000..10d85867ce5807e7fa0ab2ef5e09de5d3d7fc039
--- /dev/null
+++ b/indra/newview/llfloatersidepanelcontainer.h
@@ -0,0 +1,81 @@
+/** 
+ * @file llfloatersidepanelcontainer.h
+ * @brief LLFloaterSidePanelContainer class
+ *
+ *
+ * $LicenseInfo:firstyear=2011&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$
+ */
+
+#ifndef LL_LLFLOATERSIDEPANELCONTAINER_H
+#define LL_LLFLOATERSIDEPANELCONTAINER_H
+
+#include "llfloater.h"
+
+/**
+ * Class LLFloaterSidePanelContainer
+ *
+ * Provides an interface for all former Side Tray panels.
+ *
+ * This class helps to make sure that clicking a floater containing the side panel
+ * doesn't make transient floaters (e.g. IM windows) hide, so that it's possible to
+ * drag an inventory item from My Inventory window to a docked IM window,
+ * i.e. share the item (see VWR-22891).
+ */
+class LLFloaterSidePanelContainer : public LLFloater
+{
+private:
+	static const std::string sMainPanelName;
+
+public:
+	LLFloaterSidePanelContainer(const LLSD& key, const Params& params = getDefaultParams());
+	~LLFloaterSidePanelContainer();
+
+	/*virtual*/ void onOpen(const LLSD& key);
+
+	LLPanel* openChildPanel(const std::string& panel_name, const LLSD& params);
+
+	static void showPanel(const std::string& floater_name, const LLSD& key);
+
+	static void showPanel(const std::string& floater_name, const std::string& panel_name, const LLSD& key);
+	
+	static LLPanel* getPanel(const std::string& floater_name, const std::string& panel_name = sMainPanelName);
+	
+	/**
+	 * Gets the panel of given type T (doesn't show it or do anything else with it).
+	 *
+	 * @param floater_name a string specifying the floater to be searched for a child panel.
+	 * @param panel_name a string specifying the child panel to get.
+	 * @returns a pointer to the panel of given type T.
+	 */
+	template <typename T>
+	static T* getPanel(const std::string& floater_name, const std::string& panel_name = sMainPanelName)
+	{
+		T* panel = dynamic_cast<T*>(getPanel(floater_name, panel_name));
+		if (!panel)
+		{
+			llwarns << "Child named \"" << panel_name << "\" of type " << typeid(T*).name() << " not found" << llendl;
+		}
+		return panel;
+	}
+};
+
+#endif // LL_LLFLOATERSIDEPANELCONTAINER_H
diff --git a/indra/newview/llfloatersidetraytab.cpp b/indra/newview/llfloatersidetraytab.cpp
deleted file mode 100644
index 9f15e62d84fd6d15f33848965728efcb0312a21d..0000000000000000000000000000000000000000
--- a/indra/newview/llfloatersidetraytab.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/** 
- * @file llfloatersidetraytab.cpp
- * @brief LLFloaterSideTrayTab class definition
- *
- * $LicenseInfo:firstyear=2010&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 "llfloatersidetraytab.h"
-
-// newview includes
-#include "lltransientfloatermgr.h"
-#include "llsidetray.h"
-
-LLFloaterSideTrayTab::LLFloaterSideTrayTab(const LLSD& key, const Params& params)
-:	LLFloater(key, params)
-{
-	// Prevent transient floaters (e.g. IM windows) from hiding
-	// when this floater is clicked.
-	LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::GLOBAL, this);
-}
-
-LLFloaterSideTrayTab::~LLFloaterSideTrayTab()
-{
-	LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::GLOBAL, this);
-}
-
-void LLFloaterSideTrayTab::onClose(bool app_quitting)
-{
-	// The floater is already being closed, so don't toggle it once more (that may crash viewer).
-	LLSideTray::getInstance()->setTabDocked(getName(), /* dock = */ true, /* toggle_floater = */ false);
-}
diff --git a/indra/newview/llfloatersidetraytab.h b/indra/newview/llfloatersidetraytab.h
deleted file mode 100644
index 89f2444a0e4fa34829db7ecb7990c5cc51499211..0000000000000000000000000000000000000000
--- a/indra/newview/llfloatersidetraytab.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/** 
- * @file llfloatersidetraytab.h
- * @brief LLFloaterSideTrayTab class definition
- *
- * $LicenseInfo:firstyear=2010&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_LLFLOATERSIDETRAYTAB_H
-#define LL_LLFLOATERSIDETRAYTAB_H
-
-#include "llfloater.h"
-
-/**
- * When a side tray tab gets detached, it's wrapped in an instance of this class.
- *
- * This class helps to make sure that clicking a detached side tray tab doesn't
- * make transient floaters (e.g. IM windows) hide, so that it's possible to
- * drag an inventory item from detached My Inventory window to a docked IM window,
- * i.e. share the item (see VWR-22891).
- */
-class LLFloaterSideTrayTab : public LLFloater
-{
-public:
-	LLFloaterSideTrayTab(const LLSD& key, const Params& params = getDefaultParams());
-	~LLFloaterSideTrayTab();
-
-	void onClose(bool app_quitting);
-};
-
-#endif // LL_LLFLOATERSIDETRAYTAB_H
diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp
index 00dc7b1627500a411bb3421ec5d2bbf2b500dac5..d8d62e5bbbee6d422889cce9408079e61b0638eb 100644
--- a/indra/newview/llfloatersnapshot.cpp
+++ b/indra/newview/llfloatersnapshot.cpp
@@ -42,6 +42,8 @@
 #include "llcombobox.h"
 #include "lleconomy.h"
 #include "lllandmarkactions.h"
+#include "llpanelsnapshot.h"
+#include "llsidetraypanelcontainer.h"
 #include "llsliderctrl.h"
 #include "llspinctrl.h"
 #include "llviewercontrol.h"
@@ -50,9 +52,7 @@
 #include "llviewercamera.h"
 #include "llviewerwindow.h"
 #include "llviewermenufile.h"	// upload_new_resource()
-#include "llfloaterpostcard.h"
 #include "llcheckboxctrl.h"
-#include "llradiogroup.h"
 #include "llslurl.h"
 #include "lltoolfocus.h"
 #include "lltoolmgr.h"
@@ -76,18 +76,17 @@
 #include "llimagej2c.h"
 #include "lllocalcliprect.h"
 #include "llnotificationsutil.h"
+#include "llpostcard.h"
 #include "llresmgr.h"		// LLLocale
 #include "llvfile.h"
 #include "llvfs.h"
+#include "llwebprofile.h"
 #include "llwindow.h"
 
 ///----------------------------------------------------------------------------
 /// Local function declarations, constants, enums, and typedefs
 ///----------------------------------------------------------------------------
-S32 LLFloaterSnapshot::sUIWinHeightLong = 530 ;
-S32 LLFloaterSnapshot::sUIWinHeightShort = LLFloaterSnapshot::sUIWinHeightLong - 240 ;
-S32 LLFloaterSnapshot::sUIWinWidth = 215 ;
-
+LLUICtrl* LLFloaterSnapshot::sThumbnailPlaceholder = NULL;
 LLSnapshotFloaterView* gSnapshotFloaterView = NULL;
 
 const F32 AUTO_SNAPSHOT_TIME_DELAY = 1.f;
@@ -108,6 +107,7 @@ static LLDefaultChildRegistry::Register<LLSnapshotFloaterView> r("snapshot_float
 ///----------------------------------------------------------------------------
 class LLSnapshotLivePreview : public LLView
 {
+	LOG_CLASS(LLSnapshotLivePreview);
 public:
 	enum ESnapshotType
 	{
@@ -135,7 +135,11 @@ class LLSnapshotLivePreview : public LLView
 	/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent);
 	
 	void setSize(S32 w, S32 h);
+	void setWidth(S32 w) { mWidth[mCurImageIndex] = w; }
+	void setHeight(S32 h) { mHeight[mCurImageIndex] = h; }
 	void getSize(S32& w, S32& h) const;
+	S32 getWidth() const { return mWidth[mCurImageIndex]; }
+	S32 getHeight() const { return mHeight[mCurImageIndex]; }
 	S32 getDataSize() const { return mDataSize; }
 	void setMaxImageSize(S32 size) ;
 	S32  getMaxImageSize() {return mMaxImageSize ;}
@@ -152,8 +156,10 @@ class LLSnapshotLivePreview : public LLView
 	LLViewerTexture* getCurrentImage();
 	F32 getImageAspect();
 	F32 getAspect() ;
-	LLRect getImageRect();
-	BOOL isImageScaled();
+	const LLRect& getImageRect() const { return mImageRect[mCurImageIndex]; }
+	BOOL isImageScaled() const { return mImageScaled[mCurImageIndex]; }
+	void setImageScaled(BOOL scaled) { mImageScaled[mCurImageIndex] = scaled; }
+	const LLVector3d& getPosTakenGlobal() const { return mPosTakenGlobal; }
 	
 	void setSnapshotType(ESnapshotType type) { mSnapshotType = type; }
 	void setSnapshotFormat(LLFloaterSnapshot::ESnapshotFormat type) { mSnapshotFormat = type; }
@@ -161,10 +167,13 @@ class LLSnapshotLivePreview : public LLView
 	void setSnapshotBufferType(LLViewerWindow::ESnapshotType type) { mSnapshotBufferType = type; }
 	void updateSnapshot(BOOL new_snapshot, BOOL new_thumbnail = FALSE, F32 delay = 0.f);
 	void saveWeb();
-	LLFloaterPostcard* savePostcard();
 	void saveTexture();
 	BOOL saveLocal();
 
+	LLPointer<LLImageFormatted>	getFormattedImage() const { return mFormattedImage; }
+	LLPointer<LLImageRaw>		getEncodedImage() const { return mPreviewImageEncoded; }
+
+	/// Sets size of preview thumbnail image and thhe surrounding rect.
 	BOOL setThumbnailImageSize() ;
 	void generateThumbnailImage(BOOL force_update = FALSE) ;
 	void resetThumbnailImage() { mThumbnailImage = NULL ; }
@@ -293,7 +302,7 @@ LLViewerTexture* LLSnapshotLivePreview::getCurrentImage()
 
 F32 LLSnapshotLivePreview::getAspect()
 {
-	F32 image_aspect_ratio = ((F32)mWidth[mCurImageIndex]) / ((F32)mHeight[mCurImageIndex]);
+	F32 image_aspect_ratio = ((F32)getWidth()) / ((F32)getHeight());
 	F32 window_aspect_ratio = ((F32)getRect().getWidth()) / ((F32)getRect().getHeight());
 
 	if (!mKeepAspectRatio)//gSavedSettings.getBOOL("KeepAspectForSnapshot"))
@@ -308,7 +317,7 @@ F32 LLSnapshotLivePreview::getAspect()
 
 F32 LLSnapshotLivePreview::getImageAspect()
 {
-	if (!mViewerImage[mCurImageIndex])
+	if (!getCurrentImage())
 	{
 		return 0.f;
 	}
@@ -316,32 +325,24 @@ F32 LLSnapshotLivePreview::getImageAspect()
 	return getAspect() ;	
 }
 
-LLRect LLSnapshotLivePreview::getImageRect()
-{
-	return mImageRect[mCurImageIndex];
-}
-
-BOOL LLSnapshotLivePreview::isImageScaled()
-{
-	return mImageScaled[mCurImageIndex];
-}
-
 void LLSnapshotLivePreview::updateSnapshot(BOOL new_snapshot, BOOL new_thumbnail, F32 delay) 
-{ 
-	if (mSnapshotUpToDate)
+{
+	// Invalidate current image.
+	lldebugs << "updateSnapshot: mSnapshotUpToDate = " << getSnapshotUpToDate() << llendl;
+	if (getSnapshotUpToDate())
 	{
 		S32 old_image_index = mCurImageIndex;
 		mCurImageIndex = (mCurImageIndex + 1) % 2; 
-		mWidth[mCurImageIndex] = mWidth[old_image_index];
-		mHeight[mCurImageIndex] = mHeight[old_image_index];
+		setSize(mWidth[old_image_index], mHeight[old_image_index]);
 		mFallAnimTimer.start();		
 	}
 	mSnapshotUpToDate = FALSE; 		
 
+	// Update snapshot source rect depending on whether we keep the aspect ratio.
 	LLRect& rect = mImageRect[mCurImageIndex];
 	rect.set(0, getRect().getHeight(), getRect().getWidth(), 0);
 
-	F32 image_aspect_ratio = ((F32)mWidth[mCurImageIndex]) / ((F32)mHeight[mCurImageIndex]);
+	F32 image_aspect_ratio = ((F32)getWidth()) / ((F32)getHeight());
 	F32 window_aspect_ratio = ((F32)getRect().getWidth()) / ((F32)getRect().getHeight());
 
 	if (mKeepAspectRatio)//gSavedSettings.getBOOL("KeepAspectForSnapshot"))
@@ -362,17 +363,22 @@ void LLSnapshotLivePreview::updateSnapshot(BOOL new_snapshot, BOOL new_thumbnail
 		}
 	}
 
+	// Stop shining animation.
 	mShineAnimTimer.stop();
+
+	// Update snapshot if requested.
 	if (new_snapshot)
 	{
 		mSnapshotDelayTimer.start();
 		mSnapshotDelayTimer.setTimerExpirySec(delay);
+		LLFloaterSnapshot::preUpdate();
 	}
+
+	// Update thumbnail if requested.
 	if(new_thumbnail)
 	{
 		mThumbnailUpToDate = FALSE ;
 	}
-	setThumbnailImageSize();
 }
 
 void LLSnapshotLivePreview::setSnapshotQuality(S32 quality)
@@ -428,26 +434,26 @@ void LLSnapshotLivePreview::drawPreviewRect(S32 offset_x, S32 offset_y)
 //called when the frame is frozen.
 void LLSnapshotLivePreview::draw()
 {
-	if (mViewerImage[mCurImageIndex].notNull() &&
+	if (getCurrentImage() &&
 	    mPreviewImageEncoded.notNull() &&
-	    mSnapshotUpToDate)
+	    getSnapshotUpToDate())
 	{
 		LLColor4 bg_color(0.f, 0.f, 0.3f, 0.4f);
 		gl_rect_2d(getRect(), bg_color);
-		LLRect &rect = mImageRect[mCurImageIndex];
-		LLRect shadow_rect = mImageRect[mCurImageIndex];
+		const LLRect& rect = getImageRect();
+		LLRect shadow_rect = rect;
 		shadow_rect.stretch(BORDER_WIDTH);
 		gl_drop_shadow(shadow_rect.mLeft, shadow_rect.mTop, shadow_rect.mRight, shadow_rect.mBottom, LLColor4(0.f, 0.f, 0.f, mNeedsFlash ? 0.f :0.5f), 10);
 
 		LLColor4 image_color(1.f, 1.f, 1.f, 1.f);
 		gGL.color4fv(image_color.mV);
-		gGL.getTexUnit(0)->bind(mViewerImage[mCurImageIndex]);
+		gGL.getTexUnit(0)->bind(getCurrentImage());
 		// calculate UV scale
-		F32 uv_width = mImageScaled[mCurImageIndex] ? 1.f : llmin((F32)mWidth[mCurImageIndex] / (F32)mViewerImage[mCurImageIndex]->getWidth(), 1.f);
-		F32 uv_height = mImageScaled[mCurImageIndex] ? 1.f : llmin((F32)mHeight[mCurImageIndex] / (F32)mViewerImage[mCurImageIndex]->getHeight(), 1.f);
-		glPushMatrix();
+		F32 uv_width = isImageScaled() ? 1.f : llmin((F32)getWidth() / (F32)getCurrentImage()->getWidth(), 1.f);
+		F32 uv_height = isImageScaled() ? 1.f : llmin((F32)getHeight() / (F32)getCurrentImage()->getHeight(), 1.f);
+		gGL.pushMatrix();
 		{
-			glTranslatef((F32)rect.mLeft, (F32)rect.mBottom, 0.f);
+			gGL.translatef((F32)rect.mLeft, (F32)rect.mBottom, 0.f);
 			gGL.begin(LLRender::QUADS);
 			{
 				gGL.texCoord2f(uv_width, uv_height);
@@ -464,7 +470,7 @@ void LLSnapshotLivePreview::draw()
 			}
 			gGL.end();
 		}
-		glPopMatrix();
+		gGL.popMatrix();
 
 		gGL.color4f(1.f, 1.f, 1.f, mFlashAlpha);
 		gl_rect_2d(getRect());
@@ -484,6 +490,7 @@ void LLSnapshotLivePreview::draw()
 			mFlashAlpha = lerp(mFlashAlpha, 0.f, LLCriticalDamp::getInterpolant(0.15f));
 		}
 
+		// Draw shining animation if appropriate.
 		if (mShineCountdown > 0)
 		{
 			mShineCountdown--;
@@ -494,6 +501,7 @@ void LLSnapshotLivePreview::draw()
 		}
 		else if (mShineAnimTimer.getStarted())
 		{
+			lldebugs << "Drawing shining animation" << llendl;
 			F32 shine_interp = llmin(1.f, mShineAnimTimer.getElapsedTimeF32() / SHINE_TIME);
 			
 			// draw "shine" effect
@@ -538,7 +546,7 @@ void LLSnapshotLivePreview::draw()
 	{
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 		gGL.color4f(1.f, 1.f, 1.f, 1.f);
-		LLRect outline_rect = mImageRect[mCurImageIndex];
+		const LLRect& outline_rect = getImageRect();
 		gGL.begin(LLRender::QUADS);
 		{
 			gGL.vertex2i(outline_rect.mLeft - BORDER_WIDTH, outline_rect.mTop + BORDER_WIDTH);
@@ -570,6 +578,7 @@ void LLSnapshotLivePreview::draw()
 		S32 old_image_index = (mCurImageIndex + 1) % 2;
 		if (mViewerImage[old_image_index].notNull() && mFallAnimTimer.getElapsedTimeF32() < FALL_TIME)
 		{
+			lldebugs << "Drawing fall animation" << llendl;
 			F32 fall_interp = mFallAnimTimer.getElapsedTimeF32() / FALL_TIME;
 			F32 alpha = clamp_rescale(fall_interp, 0.f, 1.f, 0.8f, 0.4f);
 			LLColor4 image_color(1.f, 1.f, 1.f, alpha);
@@ -580,11 +589,11 @@ void LLSnapshotLivePreview::draw()
 			BOOL rescale = !mImageScaled[old_image_index] && mViewerImage[mCurImageIndex].notNull();
 			F32 uv_width = rescale ? llmin((F32)mWidth[old_image_index] / (F32)mViewerImage[mCurImageIndex]->getWidth(), 1.f) : 1.f;
 			F32 uv_height = rescale ? llmin((F32)mHeight[old_image_index] / (F32)mViewerImage[mCurImageIndex]->getHeight(), 1.f) : 1.f;
-			glPushMatrix();
+			gGL.pushMatrix();
 			{
 				LLRect& rect = mImageRect[old_image_index];
-				glTranslatef((F32)rect.mLeft, (F32)rect.mBottom - llround(getRect().getHeight() * 2.f * (fall_interp * fall_interp)), 0.f);
-				glRotatef(-45.f * fall_interp, 0.f, 0.f, 1.f);
+				gGL.translatef((F32)rect.mLeft, (F32)rect.mBottom - llround(getRect().getHeight() * 2.f * (fall_interp * fall_interp)), 0.f);
+				gGL.rotatef(-45.f * fall_interp, 0.f, 0.f, 1.f);
 				gGL.begin(LLRender::QUADS);
 				{
 					gGL.texCoord2f(uv_width, uv_height);
@@ -601,7 +610,7 @@ void LLSnapshotLivePreview::draw()
 				}
 				gGL.end();
 			}
-			glPopMatrix();
+			gGL.popMatrix();
 		}
 	}
 }
@@ -613,13 +622,14 @@ void LLSnapshotLivePreview::reshape(S32 width, S32 height, BOOL called_from_pare
 	LLView::reshape(width, height, called_from_parent);
 	if (old_rect.getWidth() != width || old_rect.getHeight() != height)
 	{
+		lldebugs << "window reshaped, updating thumbnail" << llendl;
 		updateSnapshot(FALSE, TRUE);
 	}
 }
 
 BOOL LLSnapshotLivePreview::setThumbnailImageSize()
 {
-	if(mWidth[mCurImageIndex] < 10 || mHeight[mCurImageIndex] < 10)
+	if(getWidth() < 10 || getHeight() < 10)
 	{
 		return FALSE ;
 	}
@@ -629,8 +639,10 @@ BOOL LLSnapshotLivePreview::setThumbnailImageSize()
 	F32 window_aspect_ratio = ((F32)window_width) / ((F32)window_height);
 
 	// UI size for thumbnail
-	S32 max_width = LLFloaterSnapshot::getUIWinWidth() - 20;
-	S32 max_height = 90;
+	// *FIXME: the rect does not change, so maybe there's no need to recalculate max w/h.
+	const LLRect& thumbnail_rect = LLFloaterSnapshot::getThumbnailPlaceholderRect();
+	S32 max_width = thumbnail_rect.getWidth();
+	S32 max_height = thumbnail_rect.getHeight();
 
 	if (window_aspect_ratio > (F32)max_width / max_height)
 	{
@@ -653,11 +665,11 @@ BOOL LLSnapshotLivePreview::setThumbnailImageSize()
 	S32 left = 0 , top = mThumbnailHeight, right = mThumbnailWidth, bottom = 0 ;
 	if(!mKeepAspectRatio)
 	{
-		F32 ratio_x = (F32)mWidth[mCurImageIndex] / window_width ;
-		F32 ratio_y = (F32)mHeight[mCurImageIndex] / window_height ;
+		F32 ratio_x = (F32)getWidth() / window_width ;
+		F32 ratio_y = (F32)getHeight() / window_height ;
 
-		//if(mWidth[mCurImageIndex] > window_width ||
-		//	mHeight[mCurImageIndex] > window_height )
+		//if(getWidth() > window_width ||
+		//	getHeight() > window_height )
 		{
 			if(ratio_x > ratio_y)
 			{
@@ -689,11 +701,11 @@ void LLSnapshotLivePreview::generateThumbnailImage(BOOL force_update)
 	{
 		return ;
 	}
-	if(mThumbnailUpToDate && !force_update)//already updated
+	if(getThumbnailUpToDate() && !force_update)//already updated
 	{
 		return ;
 	}
-	if(mWidth[mCurImageIndex] < 10 || mHeight[mCurImageIndex] < 10)
+	if(getWidth() < 10 || getHeight() < 10)
 	{
 		return ;
 	}
@@ -713,25 +725,19 @@ void LLSnapshotLivePreview::generateThumbnailImage(BOOL force_update)
 		resetThumbnailImage() ;
 	}		
 
-	LLPointer<LLImageRaw> raw = NULL ;
-	S32 w , h ;
-	w = get_lower_power_two(mThumbnailWidth, 512) * 2 ;
-	h = get_lower_power_two(mThumbnailHeight, 512) * 2 ;
-
+	LLPointer<LLImageRaw> raw = new LLImageRaw;
+	if(!gViewerWindow->thumbnailSnapshot(raw,
+							mThumbnailWidth, mThumbnailHeight,
+							gSavedSettings.getBOOL("RenderUIInSnapshot"),
+							FALSE,
+							mSnapshotBufferType) )								
 	{
-		raw = new LLImageRaw ;
-		if(!gViewerWindow->thumbnailSnapshot(raw,
-								w, h,
-								gSavedSettings.getBOOL("RenderUIInSnapshot"),
-								FALSE,
-								mSnapshotBufferType) )								
-		{
-			raw = NULL ;
-		}
+		raw = NULL ;
 	}
 
 	if(raw)
 	{
+		raw->expandToPowerOfTwo();
 		mThumbnailImage = LLViewerTextureManager::getLocalTexture(raw.get(), FALSE); 		
 		mThumbnailUpToDate = TRUE ;
 	}
@@ -746,8 +752,14 @@ void LLSnapshotLivePreview::generateThumbnailImage(BOOL force_update)
 //static 
 BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
 {
-	LLSnapshotLivePreview* previewp = (LLSnapshotLivePreview*)snapshot_preview;	
+	LLSnapshotLivePreview* previewp = (LLSnapshotLivePreview*)snapshot_preview;
+	if (previewp->getWidth() == 0 || previewp->getHeight() == 0)
+	{
+		llwarns << "Incorrect dimensions: " << previewp->getWidth() << "x" << previewp->getHeight() << llendl;
+		return FALSE;
+	}
 
+	// If we're in freeze-frame mode and camera has moved, update snapshot.
 	LLVector3 new_camera_pos = LLViewerCamera::getInstance()->getOrigin();
 	LLQuaternion new_camera_rot = LLViewerCamera::getInstance()->getQuaternion();
 	if (gSavedSettings.getBOOL("FreezeTime") && 
@@ -757,6 +769,7 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
 		previewp->mCameraRot = new_camera_rot;
 		// request a new snapshot whenever the camera moves, with a time delay
 		BOOL autosnap = gSavedSettings.getBOOL("AutoSnapshot");
+		lldebugs << "camera moved, updating thumbnail" << llendl;
 		previewp->updateSnapshot(
 			autosnap, // whether a new snapshot is needed or merely invalidate the existing one
 			FALSE, // or if 1st arg is false, whether to produce a new thumbnail image.
@@ -773,7 +786,9 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
 	}
 
 	// time to produce a snapshot
+	previewp->setThumbnailImageSize();
 
+	lldebugs << "producing snapshot" << llendl;
 	if (!previewp->mPreviewImage)
 	{
 		previewp->mPreviewImage = new LLImageRaw;
@@ -788,13 +803,13 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
 	previewp->setEnabled(FALSE);
 	
 	previewp->getWindow()->incBusyCount();
-	previewp->mImageScaled[previewp->mCurImageIndex] = FALSE;
+	previewp->setImageScaled(FALSE);
 
 	// grab the raw image and encode it into desired format
 	if(gViewerWindow->rawSnapshot(
 							previewp->mPreviewImage,
-							previewp->mWidth[previewp->mCurImageIndex],
-							previewp->mHeight[previewp->mCurImageIndex],
+							previewp->getWidth(),
+							previewp->getHeight(),
 							previewp->mKeepAspectRatio,//gSavedSettings.getBOOL("KeepAspectForSnapshot"),
 							previewp->getSnapshotType() == LLSnapshotLivePreview::SNAPSHOT_TEXTURE,
 							gSavedSettings.getBOOL("RenderUIInSnapshot"),
@@ -809,6 +824,7 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
 
 		if(previewp->getSnapshotType() == SNAPSHOT_TEXTURE)
 		{
+			lldebugs << "Encoding new image of format J2C" << llendl;
 			LLPointer<LLImageJ2C> formatted = new LLImageJ2C;
 			LLPointer<LLImageRaw> scaled = new LLImageRaw(
 				previewp->mPreviewImage->getData(),
@@ -816,8 +832,8 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
 				previewp->mPreviewImage->getHeight(),
 				previewp->mPreviewImage->getComponents());
 		
-			scaled->biasedScaleToPowerOfTwo(512);
-			previewp->mImageScaled[previewp->mCurImageIndex] = TRUE;
+			scaled->biasedScaleToPowerOfTwo(MAX_TEXTURE_SIZE);
+			previewp->setImageScaled(TRUE);
 			if (formatted->encode(scaled, 0.f))
 			{
 				previewp->mDataSize = formatted->getDataSize();
@@ -829,18 +845,8 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
 			// delete any existing image
 			previewp->mFormattedImage = NULL;
 			// now create the new one of the appropriate format.
-			// note: postcards and web hardcoded to use jpeg always.
-			LLFloaterSnapshot::ESnapshotFormat format;
-
-			if (previewp->getSnapshotType() == SNAPSHOT_POSTCARD ||
-				previewp->getSnapshotType() == SNAPSHOT_WEB)
-			{
-				format = LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG;
-			}
-			else
-			{
-				format = previewp->getSnapshotFormat();
-			}
+			LLFloaterSnapshot::ESnapshotFormat format = previewp->getSnapshotFormat();
+			lldebugs << "Encoding new image of format " << format << llendl;
 
 			switch(format)
 			{
@@ -882,7 +888,7 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
 			{
 				// go ahead and shrink image to appropriate power of 2 for display
 				scaled->biasedScaleToPowerOfTwo(1024);
-				previewp->mImageScaled[previewp->mCurImageIndex] = TRUE;
+				previewp->setImageScaled(TRUE);
 			}
 			else
 			{
@@ -920,56 +926,28 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
 	{
 		previewp->generateThumbnailImage() ;
 	}
+	lldebugs << "done creating snapshot" << llendl;
+	LLFloaterSnapshot::postUpdate();
 
 	return TRUE;
 }
 
 void LLSnapshotLivePreview::setSize(S32 w, S32 h)
 {
-	mWidth[mCurImageIndex] = w;
-	mHeight[mCurImageIndex] = h;
+	lldebugs << "setSize(" << w << ", " << h << ")" << llendl;
+	setWidth(w);
+	setHeight(h);
 }
 
 void LLSnapshotLivePreview::getSize(S32& w, S32& h) const
 {
-	w = mWidth[mCurImageIndex];
-	h = mHeight[mCurImageIndex];
-}
-
-LLFloaterPostcard* LLSnapshotLivePreview::savePostcard()
-{
-	if(mViewerImage[mCurImageIndex].isNull())
-	{
-		//this should never happen!!
-		llwarns << "The snapshot image has not been generated!" << llendl ;
-		return NULL ;
-	}
-
-	// calculate and pass in image scale in case image data only use portion
-	// of viewerimage buffer
-	LLVector2 image_scale(1.f, 1.f);
-	if (!isImageScaled())
-	{
-		image_scale.setVec(llmin(1.f, (F32)mWidth[mCurImageIndex] / (F32)getCurrentImage()->getWidth()), llmin(1.f, (F32)mHeight[mCurImageIndex] / (F32)getCurrentImage()->getHeight()));
-	}
-
-	LLImageJPEG* jpg = dynamic_cast<LLImageJPEG*>(mFormattedImage.get());
-	if(!jpg)
-	{
-		llwarns << "Formatted image not a JPEG" << llendl;
-		return NULL;
-	}
-	LLFloaterPostcard* floater = LLFloaterPostcard::showFromSnapshot(jpg, mViewerImage[mCurImageIndex], image_scale, mPosTakenGlobal);
-	// relinquish lifetime of jpeg image to postcard floater
-	mFormattedImage = NULL;
-	mDataSize = 0;
-	updateSnapshot(FALSE, FALSE);
-
-	return floater;
+	w = getWidth();
+	h = getHeight();
 }
 
 void LLSnapshotLivePreview::saveTexture()
 {
+	lldebugs << "saving texture: " << mPreviewImage->getWidth() << "x" << mPreviewImage->getHeight() << llendl;
 	// gen a new uuid for this asset
 	LLTransactionID tid;
 	tid.generate();
@@ -981,8 +959,9 @@ void LLSnapshotLivePreview::saveTexture()
 												  mPreviewImage->getHeight(),
 												  mPreviewImage->getComponents());
 	
-	scaled->biasedScaleToPowerOfTwo(512);
-			
+	scaled->biasedScaleToPowerOfTwo(MAX_TEXTURE_SIZE);
+	lldebugs << "scaled texture to " << scaled->getWidth() << "x" << scaled->getHeight() << llendl;
+
 	if (formatted->encode(scaled, 0.0f))
 	{
 		LLVFile::writeFile(formatted->getData(), formatted->getDataSize(), gVFS, new_asset_id, LLAssetType::AT_TEXTURE);
@@ -1022,11 +1001,6 @@ BOOL LLSnapshotLivePreview::saveLocal()
 {
 	BOOL success = gViewerWindow->saveImageNumbered(mFormattedImage);
 
-	// Relinquish image memory. Save button will be disabled as a side-effect.
-	mFormattedImage = NULL;
-	mDataSize = 0;
-	updateSnapshot(FALSE, FALSE);
-
 	if(success)
 	{
 		gViewerWindow->playSnapshotAnimAndSound();
@@ -1067,11 +1041,21 @@ void LLSnapshotLivePreview::regionNameCallback(LLImageJPEG* snapshot, LLSD& meta
 
 class LLFloaterSnapshot::Impl
 {
+	LOG_CLASS(LLFloaterSnapshot::Impl);
 public:
+	typedef enum e_status
+	{
+		STATUS_READY,
+		STATUS_WORKING,
+		STATUS_FINISHED
+	} EStatus;
+
 	Impl()
 	:	mAvatarPauseHandles(),
 		mLastToolset(NULL),
-		mAspectRatioCheckOff(false)
+		mAspectRatioCheckOff(false),
+		mNeedRefresh(false),
+		mStatus(STATUS_READY)
 	{
 	}
 	~Impl()
@@ -1080,43 +1064,49 @@ class LLFloaterSnapshot::Impl
 		mAvatarPauseHandles.clear();
 
 	}
-	static void onClickDiscard(void* data);
-	static void onClickKeep(void* data);
-	static void onCommitSave(LLUICtrl* ctrl, void* data);
 	static void onClickNewSnapshot(void* data);
 	static void onClickAutoSnap(LLUICtrl *ctrl, void* data);
 	//static void onClickAdvanceSnap(LLUICtrl *ctrl, void* data);
-	static void onClickLess(void* data) ;
 	static void onClickMore(void* data) ;
 	static void onClickUICheck(LLUICtrl *ctrl, void* data);
 	static void onClickHUDCheck(LLUICtrl *ctrl, void* data);
-	static void onClickKeepOpenCheck(LLUICtrl *ctrl, void* data);
-	static void onClickKeepAspectCheck(LLUICtrl *ctrl, void* data);
-	static void onCommitQuality(LLUICtrl* ctrl, void* data);
-	static void onCommitResolution(LLUICtrl* ctrl, void* data) { updateResolution(ctrl, data); }
+	static void applyKeepAspectCheck(LLFloaterSnapshot* view, BOOL checked);
 	static void updateResolution(LLUICtrl* ctrl, void* data, BOOL do_update = TRUE);
 	static void onCommitFreezeFrame(LLUICtrl* ctrl, void* data);
 	static void onCommitLayerTypes(LLUICtrl* ctrl, void*data);
-	static void onCommitSnapshotType(LLUICtrl* ctrl, void* data);
-	static void onCommitSnapshotFormat(LLUICtrl* ctrl, void* data);
-	static void onCommitCustomResolution(LLUICtrl *ctrl, void* data);
-	static void resetSnapshotSizeOnUI(LLFloaterSnapshot *view, S32 width, S32 height) ;
+	static void onImageQualityChange(LLFloaterSnapshot* view, S32 quality_val);
+	static void onImageFormatChange(LLFloaterSnapshot* view);
+	static void applyCustomResolution(LLFloaterSnapshot* view, S32 w, S32 h);
+	static void onSnapshotUploadFinished(bool status);
+	static void onSendingPostcardFinished(bool status);
 	static BOOL checkImageSize(LLSnapshotLivePreview* previewp, S32& width, S32& height, BOOL isWidthChanged, S32 max_value);
+	static void setImageSizeSpinnersValues(LLFloaterSnapshot *view, S32 width, S32 height) ;
+	static void updateSpinners(LLFloaterSnapshot* view, LLSnapshotLivePreview* previewp, S32& width, S32& height, BOOL is_width_changed);
+
+	static LLPanelSnapshot* getActivePanel(LLFloaterSnapshot* floater, bool ok_if_not_found = true);
+	static LLSnapshotLivePreview::ESnapshotType getActiveSnapshotType(LLFloaterSnapshot* floater);
+	static LLFloaterSnapshot::ESnapshotFormat getImageFormat(LLFloaterSnapshot* floater);
+	static LLSpinCtrl* getWidthSpinner(LLFloaterSnapshot* floater);
+	static LLSpinCtrl* getHeightSpinner(LLFloaterSnapshot* floater);
+	static void enableAspectRatioCheckbox(LLFloaterSnapshot* floater, BOOL enable);
+	static void setAspectRatioCheckboxValue(LLFloaterSnapshot* floater, BOOL checked);
 
 	static LLSnapshotLivePreview* getPreviewView(LLFloaterSnapshot *floater);
 	static void setResolution(LLFloaterSnapshot* floater, const std::string& comboname);
 	static void updateControls(LLFloaterSnapshot* floater);
 	static void updateLayout(LLFloaterSnapshot* floater);
-	static void updateResolutionTextEntry(LLFloaterSnapshot* floater);
+	static void setStatus(EStatus status, bool ok = true, const std::string& msg = LLStringUtil::null);
+	EStatus getStatus() const { return mStatus; }
+	static void setNeedRefresh(LLFloaterSnapshot* floater, bool need);
 
 private:
-	static LLSnapshotLivePreview::ESnapshotType getTypeIndex(LLFloaterSnapshot* floater);
-	static LLSD getTypeName(LLSnapshotLivePreview::ESnapshotType index);
-	static ESnapshotFormat getFormatIndex(LLFloaterSnapshot* floater);
 	static LLViewerWindow::ESnapshotType getLayerType(LLFloaterSnapshot* floater);
 	static void comboSetCustom(LLFloaterSnapshot *floater, const std::string& comboname);
 	static void checkAutoSnapshot(LLSnapshotLivePreview* floater, BOOL update_thumbnail = FALSE);
 	static void checkAspectRatio(LLFloaterSnapshot *view, S32 index) ;
+	static void setWorking(LLFloaterSnapshot* floater, bool working);
+	static void setFinished(LLFloaterSnapshot* floater, bool finished, bool ok = true, const std::string& msg = LLStringUtil::null);
+
 
 public:
 	std::vector<LLAnimPauseRequest> mAvatarPauseHandles;
@@ -1124,84 +1114,98 @@ class LLFloaterSnapshot::Impl
 	LLToolset*	mLastToolset;
 	LLHandle<LLView> mPreviewHandle;
 	bool mAspectRatioCheckOff ;
+	bool mNeedRefresh;
+	EStatus mStatus;
 };
 
 // static
-LLSnapshotLivePreview* LLFloaterSnapshot::Impl::getPreviewView(LLFloaterSnapshot *floater)
+LLPanelSnapshot* LLFloaterSnapshot::Impl::getActivePanel(LLFloaterSnapshot* floater, bool ok_if_not_found)
 {
-	LLSnapshotLivePreview* previewp = (LLSnapshotLivePreview*)floater->impl.mPreviewHandle.get();
-	return previewp;
+	LLSideTrayPanelContainer* panel_container = floater->getChild<LLSideTrayPanelContainer>("panel_container");
+	LLPanelSnapshot* active_panel = dynamic_cast<LLPanelSnapshot*>(panel_container->getCurrentPanel());
+	if (!ok_if_not_found)
+	{
+		llassert_always(active_panel != NULL);
+	}
+	return active_panel;
 }
 
 // static
-LLSnapshotLivePreview::ESnapshotType LLFloaterSnapshot::Impl::getTypeIndex(LLFloaterSnapshot* floater)
+LLSnapshotLivePreview::ESnapshotType LLFloaterSnapshot::Impl::getActiveSnapshotType(LLFloaterSnapshot* floater)
 {
-	LLSnapshotLivePreview::ESnapshotType index = LLSnapshotLivePreview::SNAPSHOT_POSTCARD;
-	LLSD value = floater->getChild<LLUICtrl>("snapshot_type_radio")->getValue();
+	LLSnapshotLivePreview::ESnapshotType type = LLSnapshotLivePreview::SNAPSHOT_WEB;
+	std::string name;
+	LLPanelSnapshot* spanel = getActivePanel(floater);
 
-	const std::string id = value.asString();
-	if (id == "postcard")
+	if (spanel)
 	{
-		index = LLSnapshotLivePreview::SNAPSHOT_POSTCARD;
+		name = spanel->getName();
 	}
-	else if (id == "texture")
+
+	if (name == "panel_snapshot_postcard")
 	{
-		index = LLSnapshotLivePreview::SNAPSHOT_TEXTURE;
+		type = LLSnapshotLivePreview::SNAPSHOT_POSTCARD;
 	}
-	else if (id == "local")
+	else if (name == "panel_snapshot_inventory")
 	{
-		index = LLSnapshotLivePreview::SNAPSHOT_LOCAL;
+		type = LLSnapshotLivePreview::SNAPSHOT_TEXTURE;
 	}
-	else if (id == "share_to_web")
+	else if (name == "panel_snapshot_local")
 	{
-		index = LLSnapshotLivePreview::SNAPSHOT_WEB;
+		type = LLSnapshotLivePreview::SNAPSHOT_LOCAL;
 	}
 
-	return index;
+	return type;
+}
+
+// static
+LLFloaterSnapshot::ESnapshotFormat LLFloaterSnapshot::Impl::getImageFormat(LLFloaterSnapshot* floater)
+{
+	LLPanelSnapshot* active_panel = getActivePanel(floater);
+	// FIXME: if the default is not PNG, profile uploads may fail.
+	return active_panel ? active_panel->getImageFormat() : LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG;
 }
 
 // static
-LLSD LLFloaterSnapshot::Impl::getTypeName(LLSnapshotLivePreview::ESnapshotType index)
+LLSpinCtrl* LLFloaterSnapshot::Impl::getWidthSpinner(LLFloaterSnapshot* floater)
 {
-	std::string id;
-	switch (index)
+	LLPanelSnapshot* active_panel = getActivePanel(floater);
+	return active_panel ? active_panel->getWidthSpinner() : floater->getChild<LLSpinCtrl>("snapshot_width");
+}
+
+// static
+LLSpinCtrl* LLFloaterSnapshot::Impl::getHeightSpinner(LLFloaterSnapshot* floater)
+{
+	LLPanelSnapshot* active_panel = getActivePanel(floater);
+	return active_panel ? active_panel->getHeightSpinner() : floater->getChild<LLSpinCtrl>("snapshot_height");
+}
+
+// static
+void LLFloaterSnapshot::Impl::enableAspectRatioCheckbox(LLFloaterSnapshot* floater, BOOL enable)
+{
+	LLPanelSnapshot* active_panel = getActivePanel(floater);
+	if (active_panel)
 	{
-		case LLSnapshotLivePreview::SNAPSHOT_WEB:
-			id = "share_to_web";
-			break;
-		case LLSnapshotLivePreview::SNAPSHOT_POSTCARD:
-			id = "postcard";
-			break;
-		case LLSnapshotLivePreview::SNAPSHOT_TEXTURE:
-			id = "texture";
-			break;
-		case LLSnapshotLivePreview::SNAPSHOT_LOCAL:
-		default:
-			id = "local";
-			break;
+		active_panel->enableAspectRatioCheckbox(enable);
 	}
-	return LLSD(id);
 }
 
 // static
-LLFloaterSnapshot::ESnapshotFormat LLFloaterSnapshot::Impl::getFormatIndex(LLFloaterSnapshot* floater)
+void LLFloaterSnapshot::Impl::setAspectRatioCheckboxValue(LLFloaterSnapshot* floater, BOOL checked)
 {
-	ESnapshotFormat index = SNAPSHOT_FORMAT_PNG;
-	if(floater->hasChild("local_format_combo"))
+	LLPanelSnapshot* active_panel = getActivePanel(floater);
+	if (active_panel)
 	{
-		LLComboBox* local_format_combo = floater->findChild<LLComboBox>("local_format_combo");
-		const std::string id  = local_format_combo->getSelectedItemLabel();
-		if (id == "PNG")
-			index = SNAPSHOT_FORMAT_PNG;
-		else if (id == "JPEG")
-			index = SNAPSHOT_FORMAT_JPEG;
-		else if (id == "BMP")
-			index = SNAPSHOT_FORMAT_BMP;
+		active_panel->getChild<LLUICtrl>(active_panel->getAspectRatioCBName())->setValue(checked);
 	}
-		return index;
 }
 
-
+// static
+LLSnapshotLivePreview* LLFloaterSnapshot::Impl::getPreviewView(LLFloaterSnapshot *floater)
+{
+	LLSnapshotLivePreview* previewp = (LLSnapshotLivePreview*)floater->impl.mPreviewHandle.get();
+	return previewp;
+}
 
 // static
 LLViewerWindow::ESnapshotType LLFloaterSnapshot::Impl::getLayerType(LLFloaterSnapshot* floater)
@@ -1229,20 +1233,28 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
 {
 	LLSnapshotLivePreview* previewp = getPreviewView(floaterp);
 
-	S32 delta_height = gSavedSettings.getBOOL("AdvanceSnapshot") ? 0 : floaterp->getUIWinHeightShort() - floaterp->getUIWinHeightLong() ;
+	BOOL advanced = gSavedSettings.getBOOL("AdvanceSnapshot");
+
+	// Show/hide advanced options.
+	LLPanel* advanced_options_panel = floaterp->getChild<LLPanel>("advanced_options_panel");
+	floaterp->getChild<LLButton>("advanced_options_btn")->setImageOverlay(advanced ? "TabIcon_Open_Off" : "TabIcon_Close_Off");
+	if (advanced != advanced_options_panel->getVisible())
+	{
+		S32 panel_width = advanced_options_panel->getRect().getWidth();
+		floaterp->getChild<LLPanel>("advanced_options_panel")->setVisible(advanced);
+		S32 floater_width = floaterp->getRect().getWidth();
+		floater_width += (advanced ? panel_width : -panel_width);
+		floaterp->reshape(floater_width, floaterp->getRect().getHeight());
+	}
 
-	if(!gSavedSettings.getBOOL("AdvanceSnapshot")) //set to original window resolution
+	if(!advanced) //set to original window resolution
 	{
 		previewp->mKeepAspectRatio = TRUE;
 
+		floaterp->getChild<LLComboBox>("profile_size_combo")->setCurrentByIndex(0);
 		floaterp->getChild<LLComboBox>("postcard_size_combo")->setCurrentByIndex(0);
-		gSavedSettings.setS32("SnapshotPostcardLastResolution", 0);
-
 		floaterp->getChild<LLComboBox>("texture_size_combo")->setCurrentByIndex(0);
-		gSavedSettings.setS32("SnapshotTextureLastResolution", 0);
-
 		floaterp->getChild<LLComboBox>("local_size_combo")->setCurrentByIndex(0);
-		gSavedSettings.setS32("SnapshotLocalLastResolution", 0);
 
 		LLSnapshotLivePreview* previewp = getPreviewView(floaterp);
 		previewp->setSize(gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw());
@@ -1256,7 +1268,8 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
 		floaterp->getParent()->setMouseOpaque(TRUE);
 		
 		// shrink to smaller layout
-		floaterp->reshape(floaterp->getRect().getWidth(), floaterp->getUIWinHeightLong() + delta_height);
+		// *TODO: unneeded?
+		floaterp->reshape(floaterp->getRect().getWidth(), floaterp->getRect().getHeight());
 
 		// can see and interact with fullscreen preview now
 		if (previewp)
@@ -1286,7 +1299,8 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
 	else // turning off freeze frame mode
 	{
 		floaterp->getParent()->setMouseOpaque(FALSE);
-		floaterp->reshape(floaterp->getRect().getWidth(), floaterp->getUIWinHeightLong() + delta_height);
+		// *TODO: unneeded?
+		floaterp->reshape(floaterp->getRect().getWidth(), floaterp->getRect().getHeight());
 		if (previewp)
 		{
 			previewp->setVisible(FALSE);
@@ -1312,86 +1326,67 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
 // No other methods should be changing any of the controls directly except for helpers called by this method.
 // The basic pattern for programmatically changing the GUI settings is to first set the
 // appropriate saved settings and then call this method to sync the GUI with them.
+// FIXME: The above comment seems obsolete now.
 // static
 void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
 {
-	LLRadioGroup* snapshot_type_radio = floater->getChild<LLRadioGroup>("snapshot_type_radio");
-	LLSnapshotLivePreview::ESnapshotType shot_type = (LLSnapshotLivePreview::ESnapshotType)gSavedSettings.getS32("LastSnapshotType");
-	snapshot_type_radio->setSelectedByValue(getTypeName(shot_type), true);
-
+	LLSnapshotLivePreview::ESnapshotType shot_type = getActiveSnapshotType(floater);
 	ESnapshotFormat shot_format = (ESnapshotFormat)gSavedSettings.getS32("SnapshotFormat");
 	LLViewerWindow::ESnapshotType layer_type = getLayerType(floater);
 
+#if 0
 	floater->getChildView("share_to_web")->setVisible( gSavedSettings.getBOOL("SnapshotSharingEnabled"));
+#endif
 
-	floater->getChildView("postcard_size_combo")->setVisible( FALSE);
-	floater->getChildView("texture_size_combo")->setVisible( FALSE);
-	floater->getChildView("local_size_combo")->setVisible( FALSE);
-
-	floater->getChild<LLComboBox>("postcard_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotPostcardLastResolution"));
-	floater->getChild<LLComboBox>("texture_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotTextureLastResolution"));
-	floater->getChild<LLComboBox>("local_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotLocalLastResolution"));
 	floater->getChild<LLComboBox>("local_format_combo")->selectNthItem(gSavedSettings.getS32("SnapshotFormat"));
-
-	// *TODO: Separate settings for Web images from postcards
-	floater->getChildView("send_btn")->setVisible(	shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD ||
-													shot_type == LLSnapshotLivePreview::SNAPSHOT_WEB);
-	floater->getChildView("upload_btn")->setVisible(shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE);
-	floater->getChildView("save_btn")->setVisible(	shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL);
-	floater->getChildView("keep_aspect_check")->setEnabled(shot_type != LLSnapshotLivePreview::SNAPSHOT_TEXTURE && !floater->impl.mAspectRatioCheckOff);
+	enableAspectRatioCheckbox(floater, !floater->impl.mAspectRatioCheckOff);
+	setAspectRatioCheckboxValue(floater, gSavedSettings.getBOOL("KeepAspectForSnapshot"));
 	floater->getChildView("layer_types")->setEnabled(shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL);
 
-	BOOL is_advance = gSavedSettings.getBOOL("AdvanceSnapshot");
-	BOOL is_local = shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL;
-	BOOL show_slider = (shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD ||
-						shot_type == LLSnapshotLivePreview::SNAPSHOT_WEB ||
-					   (is_local && shot_format == LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG));
-
-	floater->getChildView("more_btn")->setVisible( !is_advance); // the only item hidden in advanced mode
-	floater->getChildView("less_btn")->setVisible(				is_advance);
-	floater->getChildView("type_label2")->setVisible(				is_advance);
-	floater->getChildView("format_label")->setVisible(			is_advance && is_local);
-	floater->getChildView("local_format_combo")->setVisible(		is_advance && is_local);
-	floater->getChildView("layer_types")->setVisible(				is_advance);
-	floater->getChildView("layer_type_label")->setVisible(		is_advance);
-	floater->getChildView("snapshot_width")->setVisible(			is_advance);
-	floater->getChildView("snapshot_height")->setVisible(			is_advance);
-	floater->getChildView("keep_aspect_check")->setVisible(		is_advance);
-	floater->getChildView("ui_check")->setVisible(				is_advance);
-	floater->getChildView("hud_check")->setVisible(				is_advance);
-	floater->getChildView("keep_open_check")->setVisible(			is_advance);
-	floater->getChildView("freeze_frame_check")->setVisible(		is_advance);
-	floater->getChildView("auto_snapshot_check")->setVisible(		is_advance);
-	floater->getChildView("image_quality_slider")->setVisible(	is_advance && show_slider);
-
-	if (gSavedSettings.getBOOL("RenderUIInSnapshot") || gSavedSettings.getBOOL("RenderHUDInSnapshot"))
-	{ //clamp snapshot resolution to window size when showing UI or HUD in snapshot
-
-		LLSpinCtrl* width_ctrl = floater->getChild<LLSpinCtrl>("snapshot_width");
-		LLSpinCtrl* height_ctrl = floater->getChild<LLSpinCtrl>("snapshot_height");
-
-		S32 width = gViewerWindow->getWindowWidthRaw();
-		S32 height = gViewerWindow->getWindowHeightRaw();
-
-		width_ctrl->setMaxValue(width);
-		
-		height_ctrl->setMaxValue(height);
+	LLPanelSnapshot* active_panel = getActivePanel(floater);
+	if (active_panel)
+	{
+		LLSpinCtrl* width_ctrl = getWidthSpinner(floater);
+		LLSpinCtrl* height_ctrl = getHeightSpinner(floater);
 
-		if (width_ctrl->getValue().asInteger() > width)
+		// Initialize spinners.
+		if (width_ctrl->getValue().asInteger() == 0)
 		{
-			width_ctrl->forceSetValue(width);
+			S32 w = gViewerWindow->getWindowWidthRaw();
+			lldebugs << "Initializing width spinner (" << width_ctrl->getName() << "): " << w << llendl;
+			width_ctrl->setValue(w);
 		}
-		if (height_ctrl->getValue().asInteger() > height)
+		if (height_ctrl->getValue().asInteger() == 0)
 		{
-			height_ctrl->forceSetValue(height);
+			S32 h = gViewerWindow->getWindowHeightRaw();
+			lldebugs << "Initializing height spinner (" << height_ctrl->getName() << "): " << h << llendl;
+			height_ctrl->setValue(h);
+		}
+
+		// Сlamp snapshot resolution to window size when showing UI or HUD in snapshot.
+		if (gSavedSettings.getBOOL("RenderUIInSnapshot") || gSavedSettings.getBOOL("RenderHUDInSnapshot"))
+		{
+			S32 width = gViewerWindow->getWindowWidthRaw();
+			S32 height = gViewerWindow->getWindowHeightRaw();
+
+			width_ctrl->setMaxValue(width);
+
+			height_ctrl->setMaxValue(height);
+
+			if (width_ctrl->getValue().asInteger() > width)
+			{
+				width_ctrl->forceSetValue(width);
+			}
+			if (height_ctrl->getValue().asInteger() > height)
+			{
+				height_ctrl->forceSetValue(height);
+			}
+		}
+		else
+		{
+			width_ctrl->setMaxValue(6016);
+			height_ctrl->setMaxValue(6016);
 		}
-	}
-	else
-	{ 
-		LLSpinCtrl* width = floater->getChild<LLSpinCtrl>("snapshot_width");
-		width->setMaxValue(6016);
-		LLSpinCtrl* height = floater->getChild<LLSpinCtrl>("snapshot_height");
-		height->setMaxValue(6016);
 	}
 		
 	LLSnapshotLivePreview* previewp = getPreviewView(floater);
@@ -1399,11 +1394,7 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
 	BOOL got_snap = previewp && previewp->getSnapshotUpToDate();
 
 	// *TODO: Separate maximum size for Web images from postcards
-	floater->getChildView("send_btn")->setEnabled((shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD ||
-											shot_type == LLSnapshotLivePreview::SNAPSHOT_WEB) &&
-											got_snap && previewp->getDataSize() <= MAX_POSTCARD_DATASIZE);
-	floater->getChildView("upload_btn")->setEnabled(shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE  && got_snap);
-	floater->getChildView("save_btn")->setEnabled(shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL    && got_snap);
+	lldebugs << "Is snapshot up-to-date? " << got_snap << llendl;
 
 	LLLocale locale(LLLocale::USER_LOCALE);
 	std::string bytes_string;
@@ -1411,155 +1402,111 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
 	{
 		LLResMgr::getInstance()->getIntegerString(bytes_string, (previewp->getDataSize()) >> 10 );
 	}
-	S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
-	floater->getChild<LLUICtrl>("texture")->setLabelArg("[AMOUNT]", llformat("%d",upload_cost));
-	floater->getChild<LLUICtrl>("upload_btn")->setLabelArg("[AMOUNT]", llformat("%d",upload_cost));
+
+	// Update displayed image resolution.
+	LLTextBox* image_res_tb = floater->getChild<LLTextBox>("image_res_text");
+	image_res_tb->setVisible(got_snap);
+	if (got_snap)
+	{
+		LLPointer<LLImageRaw> img = previewp->getEncodedImage();
+		image_res_tb->setTextArg("[WIDTH]", llformat("%d", img->getWidth()));
+		image_res_tb->setTextArg("[HEIGHT]", llformat("%d", img->getHeight()));
+	}
+
 	floater->getChild<LLUICtrl>("file_size_label")->setTextArg("[SIZE]", got_snap ? bytes_string : floater->getString("unknown"));
 	floater->getChild<LLUICtrl>("file_size_label")->setColor(
 		shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD 
 		&& got_bytes
 		&& previewp->getDataSize() > MAX_POSTCARD_DATASIZE ? LLUIColor(LLColor4::red) : LLUIColorTable::instance().getColor( "LabelTextColor" ));
 
+	// Update the width and height spinners based on the corresponding resolution combos. (?)
 	switch(shot_type)
 	{
-	  // *TODO: Separate settings for Web images from postcards
 	  case LLSnapshotLivePreview::SNAPSHOT_WEB:
+		layer_type = LLViewerWindow::SNAPSHOT_TYPE_COLOR;
+		floater->getChild<LLUICtrl>("layer_types")->setValue("colors");
+		setResolution(floater, "profile_size_combo");
+		break;
 	  case LLSnapshotLivePreview::SNAPSHOT_POSTCARD:
 		layer_type = LLViewerWindow::SNAPSHOT_TYPE_COLOR;
 		floater->getChild<LLUICtrl>("layer_types")->setValue("colors");
-		if(is_advance)
-		{			
-			setResolution(floater, "postcard_size_combo");
-		}
+		setResolution(floater, "postcard_size_combo");
 		break;
 	  case LLSnapshotLivePreview::SNAPSHOT_TEXTURE:
 		layer_type = LLViewerWindow::SNAPSHOT_TYPE_COLOR;
 		floater->getChild<LLUICtrl>("layer_types")->setValue("colors");
-		if(is_advance)
-		{
-			setResolution(floater, "texture_size_combo");			
-		}
+		setResolution(floater, "texture_size_combo");
 		break;
 	  case  LLSnapshotLivePreview::SNAPSHOT_LOCAL:
-		if(is_advance)
-		{
-			setResolution(floater, "local_size_combo");
-		}
+		setResolution(floater, "local_size_combo");
 		break;
 	  default:
 		break;
 	}
 
-	updateResolutionTextEntry(floater);
-
 	if (previewp)
 	{
 		previewp->setSnapshotType(shot_type);
 		previewp->setSnapshotFormat(shot_format);
 		previewp->setSnapshotBufferType(layer_type);
 	}
-}
-
-// static
-void LLFloaterSnapshot::Impl::updateResolutionTextEntry(LLFloaterSnapshot* floater)
-{
-	LLSpinCtrl* width_spinner = floater->getChild<LLSpinCtrl>("snapshot_width");
-	LLSpinCtrl* height_spinner = floater->getChild<LLSpinCtrl>("snapshot_height");
 
-	if(getTypeIndex(floater) == LLSnapshotLivePreview::SNAPSHOT_TEXTURE)
+	LLPanelSnapshot* current_panel = Impl::getActivePanel(floater);
+	if (current_panel)
 	{
-		width_spinner->setAllowEdit(FALSE);
-		height_spinner->setAllowEdit(FALSE);
-	}
-	else
-	{
-		width_spinner->setAllowEdit(TRUE);
-		height_spinner->setAllowEdit(TRUE);
+		LLSD info;
+		info["have-snapshot"] = got_snap;
+		current_panel->updateControls(info);
 	}
+	lldebugs << "finished updating controls" << llendl;
 }
 
 // static
-void LLFloaterSnapshot::Impl::checkAutoSnapshot(LLSnapshotLivePreview* previewp, BOOL update_thumbnail)
+void LLFloaterSnapshot::Impl::setStatus(EStatus status, bool ok, const std::string& msg)
 {
-	if (previewp)
+	LLFloaterSnapshot* floater = LLFloaterSnapshot::getInstance();
+	switch (status)
 	{
-		BOOL autosnap = gSavedSettings.getBOOL("AutoSnapshot");
-		previewp->updateSnapshot(autosnap, update_thumbnail, autosnap ? AUTO_SNAPSHOT_TIME_DELAY : 0.f);
+	case STATUS_READY:
+		setWorking(floater, false);
+		setFinished(floater, false);
+		break;
+	case STATUS_WORKING:
+		setWorking(floater, true);
+		setFinished(floater, false);
+		break;
+	case STATUS_FINISHED:
+		setWorking(floater, false);
+		setFinished(floater, true, ok, msg);
+		break;
 	}
-}
 
-// static
-void LLFloaterSnapshot::Impl::onClickDiscard(void* data)
-{
-	LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
-	
-	if (view)
-	{
-		view->closeFloater();
-	}
+	floater->impl.mStatus = status;
 }
 
-
 // static
-void LLFloaterSnapshot::Impl::onCommitSave(LLUICtrl* ctrl, void* data)
+void LLFloaterSnapshot::Impl::setNeedRefresh(LLFloaterSnapshot* floater, bool need)
 {
-	if (ctrl->getValue().asString() == "save as")
+	if (!floater) return;
+
+	// Don't display the "Refresh to save" message if we're in auto-refresh mode.
+	if (gSavedSettings.getBOOL("AutoSnapshot"))
 	{
-		gViewerWindow->resetSnapshotLoc();
+		need = false;
 	}
-	onClickKeep(data);
+
+	floater->mRefreshLabel->setVisible(need);
+	floater->impl.mNeedRefresh = need;
 }
 
 // static
-void LLFloaterSnapshot::Impl::onClickKeep(void* data)
+void LLFloaterSnapshot::Impl::checkAutoSnapshot(LLSnapshotLivePreview* previewp, BOOL update_thumbnail)
 {
-	LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
-	LLSnapshotLivePreview* previewp = getPreviewView(view);
-
 	if (previewp)
 	{
-		switch (previewp->getSnapshotType())
-		{
-		  case LLSnapshotLivePreview::SNAPSHOT_WEB:
-			previewp->saveWeb();
-			break;
-
-		  case LLSnapshotLivePreview::SNAPSHOT_POSTCARD:
-			{
-				LLFloaterPostcard* floater = previewp->savePostcard();
-				// if still in snapshot mode, put postcard floater in snapshot floaterview
-				// and link it to snapshot floater
-				if (floater && !gSavedSettings.getBOOL("CloseSnapshotOnKeep"))
-				{
-					gFloaterView->removeChild(floater);
-					gSnapshotFloaterView->addChild(floater);
-					view->addDependentFloater(floater, FALSE);
-				}
-			}
-			break;
-
-		  case LLSnapshotLivePreview::SNAPSHOT_TEXTURE:
-			previewp->saveTexture();
-			break;
-
-		  case LLSnapshotLivePreview::SNAPSHOT_LOCAL:
-			previewp->saveLocal();
-			break;
-
-		  default:
-			break;
-		}
-
-		if (gSavedSettings.getBOOL("CloseSnapshotOnKeep"))
-		{
-			view->closeFloater();
-		}
-		else
-		{
-			checkAutoSnapshot(previewp);
-		}
-
-		updateControls(view);
+		BOOL autosnap = gSavedSettings.getBOOL("AutoSnapshot");
+		lldebugs << "updating " << (autosnap ? "snapshot" : "thumbnail") << llendl;
+		previewp->updateSnapshot(autosnap, update_thumbnail, autosnap ? AUTO_SNAPSHOT_TIME_DELAY : 0.f);
 	}
 }
 
@@ -1570,6 +1517,8 @@ void LLFloaterSnapshot::Impl::onClickNewSnapshot(void* data)
 	LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
 	if (previewp && view)
 	{
+		view->impl.setStatus(Impl::STATUS_READY);
+		lldebugs << "updating snapshot" << llendl;
 		previewp->updateSnapshot(TRUE);
 	}
 }
@@ -1590,36 +1539,15 @@ void LLFloaterSnapshot::Impl::onClickAutoSnap(LLUICtrl *ctrl, void* data)
 
 void LLFloaterSnapshot::Impl::onClickMore(void* data)
 {
-	gSavedSettings.setBOOL( "AdvanceSnapshot", TRUE );
+	BOOL visible = gSavedSettings.getBOOL("AdvanceSnapshot");
 	
-	LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;		
-	if (view)
-	{
-		view->translate( 0, view->getUIWinHeightShort() - view->getUIWinHeightLong() );
-		view->reshape(view->getRect().getWidth(), view->getUIWinHeightLong());
-		updateControls(view) ;
-		updateLayout(view) ;
-		if(getPreviewView(view))
-		{
-			getPreviewView(view)->setThumbnailImageSize() ;
-		}
-	}
-}
-void LLFloaterSnapshot::Impl::onClickLess(void* data)
-{
-	gSavedSettings.setBOOL( "AdvanceSnapshot", FALSE );
-	
-	LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;		
+	LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
 	if (view)
 	{
-		view->translate( 0, view->getUIWinHeightLong() - view->getUIWinHeightShort() );
-		view->reshape(view->getRect().getWidth(), view->getUIWinHeightShort());
+		view->impl.setStatus(Impl::STATUS_READY);
+		gSavedSettings.setBOOL("AdvanceSnapshot", !visible);
 		updateControls(view) ;
 		updateLayout(view) ;
-		if(getPreviewView(view))
-		{
-			getPreviewView(view)->setThumbnailImageSize() ;
-		}
 	}
 }
 
@@ -1652,20 +1580,10 @@ void LLFloaterSnapshot::Impl::onClickHUDCheck(LLUICtrl *ctrl, void* data)
 }
 
 // static
-void LLFloaterSnapshot::Impl::onClickKeepOpenCheck(LLUICtrl* ctrl, void* data)
+void LLFloaterSnapshot::Impl::applyKeepAspectCheck(LLFloaterSnapshot* view, BOOL checked)
 {
-	LLCheckBoxCtrl *check = (LLCheckBoxCtrl *)ctrl;
-
-	gSavedSettings.setBOOL( "CloseSnapshotOnKeep", !check->get() );
-}
+	gSavedSettings.setBOOL("KeepAspectForSnapshot", checked);
 
-// static
-void LLFloaterSnapshot::Impl::onClickKeepAspectCheck(LLUICtrl* ctrl, void* data)
-{
-	LLCheckBoxCtrl *check = (LLCheckBoxCtrl *)ctrl;
-	gSavedSettings.setBOOL( "KeepAspectForSnapshot", check->get() );
-	
-	LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
 	if (view)
 	{
 		LLSnapshotLivePreview* previewp = getPreviewView(view) ;
@@ -1675,11 +1593,9 @@ void LLFloaterSnapshot::Impl::onClickKeepAspectCheck(LLUICtrl* ctrl, void* data)
 
 			S32 w, h ;
 			previewp->getSize(w, h) ;
-			if(checkImageSize(previewp, w, h, TRUE, previewp->getMaxImageSize()))
-			{
-				resetSnapshotSizeOnUI(view, w, h) ;
-			}
+			updateSpinners(view, previewp, w, h, TRUE); // may change w and h
 
+			lldebugs << "updating thumbnail" << llendl;
 			previewp->setSize(w, h) ;
 			previewp->updateSnapshot(FALSE, TRUE);
 			checkAutoSnapshot(previewp, TRUE);
@@ -1687,20 +1603,6 @@ void LLFloaterSnapshot::Impl::onClickKeepAspectCheck(LLUICtrl* ctrl, void* data)
 	}
 }
 
-// static
-void LLFloaterSnapshot::Impl::onCommitQuality(LLUICtrl* ctrl, void* data)
-{
-	LLSliderCtrl* slider = (LLSliderCtrl*)ctrl;
-	S32 quality_val = llfloor((F32)slider->getValue().asReal());
-
-	LLSnapshotLivePreview* previewp = getPreviewView((LLFloaterSnapshot *)data);
-	if (previewp)
-	{
-		previewp->setSnapshotQuality(quality_val);
-	}
-	checkAutoSnapshot(previewp, TRUE);
-}
-
 // static
 void LLFloaterSnapshot::Impl::onCommitFreezeFrame(LLUICtrl* ctrl, void* data)
 {
@@ -1723,74 +1625,83 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde
 	LLSnapshotLivePreview *previewp = getPreviewView(view) ;
 
 	// Don't round texture sizes; textures are commonly stretched in world, profiles, etc and need to be "squashed" during upload, not cropped here
-#if 0
-	if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE == getTypeIndex(view))
+	if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE == getActiveSnapshotType(view))
 	{
 		previewp->mKeepAspectRatio = FALSE ;
 		return ;
 	}
-#endif
-	
-	if(0 == index) //current window size
-	{
-		view->impl.mAspectRatioCheckOff = true ;
-		view->getChildView("keep_aspect_check")->setEnabled(FALSE) ;
 
-		if(previewp)
-		{
-			previewp->mKeepAspectRatio = TRUE ;
-		}
+	BOOL keep_aspect = FALSE, enable_cb = FALSE;
+
+	if (0 == index) // current window size
+	{
+		enable_cb = FALSE;
+		keep_aspect = TRUE;
 	}
-	else if(-1 == index) //custom
+	else if (-1 == index) // custom
 	{
-		view->impl.mAspectRatioCheckOff = false ;
-		//if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE != gSavedSettings.getS32("LastSnapshotType"))
-		{
-			view->getChildView("keep_aspect_check")->setEnabled(TRUE) ;
-
-			if(previewp)
-			{
-				previewp->mKeepAspectRatio = gSavedSettings.getBOOL("KeepAspectForSnapshot") ;
-			}
-		}
+		enable_cb = TRUE;
+		keep_aspect = gSavedSettings.getBOOL("KeepAspectForSnapshot");
 	}
-	else
+	else // predefined resolution
 	{
-		view->impl.mAspectRatioCheckOff = true ;
-		view->getChildView("keep_aspect_check")->setEnabled(FALSE) ;
-
-		if(previewp)
-		{
-			previewp->mKeepAspectRatio = FALSE ;
-		}
+		enable_cb = FALSE;
+		keep_aspect = FALSE;
 	}
 
-	return ;
+	view->impl.mAspectRatioCheckOff = !enable_cb;
+	enableAspectRatioCheckbox(view, enable_cb);
+	if (previewp)
+	{
+		previewp->mKeepAspectRatio = keep_aspect;
+	}
 }
 
-static std::string lastSnapshotWidthName()
+// Show/hide upload progress indicators.
+// static
+void LLFloaterSnapshot::Impl::setWorking(LLFloaterSnapshot* floater, bool working)
 {
-	switch(gSavedSettings.getS32("LastSnapshotType"))
+	LLUICtrl* working_lbl = floater->getChild<LLUICtrl>("working_lbl");
+	working_lbl->setVisible(working);
+	floater->getChild<LLUICtrl>("working_indicator")->setVisible(working);
+
+	if (working)
 	{
-	  // *TODO: Separate settings for Web snapshots and postcards
-	  case LLSnapshotLivePreview::SNAPSHOT_WEB:		 return "LastSnapshotToEmailWidth";
-	  case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: return "LastSnapshotToEmailWidth";
-	  case LLSnapshotLivePreview::SNAPSHOT_TEXTURE:  return "LastSnapshotToInventoryWidth";
-	  default:                                       return "LastSnapshotToDiskWidth";
+		const std::string panel_name = getActivePanel(floater, false)->getName();
+		const std::string prefix = panel_name.substr(std::string("panel_snapshot_").size());
+		std::string progress_text = floater->getString(prefix + "_" + "progress_str");
+		working_lbl->setValue(progress_text);
+	}
+
+	// All controls should be disabled while posting.
+	floater->setCtrlsEnabled(!working);
+	LLPanelSnapshot* active_panel = getActivePanel(floater);
+	if (active_panel)
+	{
+		active_panel->enableControls(!working);
 	}
 }
-static std::string lastSnapshotHeightName()
+
+// Show/hide upload status message.
+// static
+void LLFloaterSnapshot::Impl::setFinished(LLFloaterSnapshot* floater, bool finished, bool ok, const std::string& msg)
 {
-	switch(gSavedSettings.getS32("LastSnapshotType"))
+	floater->mSucceessLblPanel->setVisible(finished && ok);
+	floater->mFailureLblPanel->setVisible(finished && !ok);
+
+	if (finished)
 	{
-	  // *TODO: Separate settings for Web snapshots and postcards
-	  case LLSnapshotLivePreview::SNAPSHOT_WEB:	     return "LastSnapshotToEmailHeight";
-	  case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: return "LastSnapshotToEmailHeight";
-	  case LLSnapshotLivePreview::SNAPSHOT_TEXTURE:  return "LastSnapshotToInventoryHeight";
-	  default:                                       return "LastSnapshotToDiskHeight";
+		LLUICtrl* finished_lbl = floater->getChild<LLUICtrl>(ok ? "succeeded_lbl" : "failed_lbl");
+		std::string result_text = floater->getString(msg + "_" + (ok ? "succeeded_str" : "failed_str"));
+		finished_lbl->setValue(result_text);
+
+		LLSideTrayPanelContainer* panel_container = floater->getChild<LLSideTrayPanelContainer>("panel_container");
+		panel_container->openPreviousPanel();
+		panel_container->getCurrentPanel()->onOpen(LLSD());
 	}
 }
 
+// Apply a new resolution selected from the given combobox.
 // static
 void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL do_update)
 {
@@ -1799,14 +1710,10 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL
 		
 	if (!view || !combobox)
 	{
+		llassert(view && combobox);
 		return;
 	}
 
-	// save off all selected resolution values
-	gSavedSettings.setS32("SnapshotPostcardLastResolution", view->getChild<LLComboBox>("postcard_size_combo")->getCurrentIndex());
-	gSavedSettings.setS32("SnapshotTextureLastResolution",  view->getChild<LLComboBox>("texture_size_combo")->getCurrentIndex());
-	gSavedSettings.setS32("SnapshotLocalLastResolution",    view->getChild<LLComboBox>("local_size_combo")->getCurrentIndex());
-
 	std::string sdstring = combobox->getSelectedValue();
 	LLSD sdres;
 	std::stringstream sstream(sdstring);
@@ -1824,16 +1731,42 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL
 		if (width == 0 || height == 0)
 		{
 			// take resolution from current window size
+			lldebugs << "Setting preview res from window: " << gViewerWindow->getWindowWidthRaw() << "x" << gViewerWindow->getWindowHeightRaw() << llendl;
 			previewp->setSize(gViewerWindow->getWindowWidthRaw(), gViewerWindow->getWindowHeightRaw());
 		}
 		else if (width == -1 || height == -1)
 		{
 			// load last custom value
-			previewp->setSize(gSavedSettings.getS32(lastSnapshotWidthName()), gSavedSettings.getS32(lastSnapshotHeightName()));
+			S32 new_width = 0, new_height = 0;
+			LLPanelSnapshot* spanel = getActivePanel(view);
+			if (spanel)
+			{
+				lldebugs << "Loading typed res from panel " << spanel->getName() << llendl;
+				new_width = spanel->getTypedPreviewWidth();
+				new_height = spanel->getTypedPreviewHeight();
+
+				// Limit custom size for inventory snapshots to 512x512 px.
+				if (getActiveSnapshotType(view) == LLSnapshotLivePreview::SNAPSHOT_TEXTURE)
+				{
+					new_width = llmin(new_width, MAX_TEXTURE_SIZE);
+					new_height = llmin(new_height, MAX_TEXTURE_SIZE);
+				}
+			}
+			else
+			{
+				lldebugs << "No custom res chosen, setting preview res from window: "
+					<< gViewerWindow->getWindowWidthRaw() << "x" << gViewerWindow->getWindowHeightRaw() << llendl;
+				new_width = gViewerWindow->getWindowWidthRaw();
+				new_height = gViewerWindow->getWindowHeightRaw();
+			}
+
+			llassert(new_width > 0 && new_height > 0);
+			previewp->setSize(new_width, new_height);
 		}
 		else
 		{
 			// use the resolution from the selected pre-canned drop-down choice
+			lldebugs << "Setting preview res selected from combo: " << width << "x" << height << llendl;
 			previewp->setSize(width, height);
 		}
 
@@ -1847,16 +1780,12 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL
 			height = llmin(height, gViewerWindow->getWindowHeightRaw());
 		}
 
+		updateSpinners(view, previewp, width, height, TRUE); // may change width and height
 		
-		if(checkImageSize(previewp, width, height, TRUE, previewp->getMaxImageSize()))
-		{
-			resetSnapshotSizeOnUI(view, width, height) ;
-		}
-		
-		if(view->getChild<LLUICtrl>("snapshot_width")->getValue().asInteger() != width || view->getChild<LLUICtrl>("snapshot_height")->getValue().asInteger() != height)
+		if(getWidthSpinner(view)->getValue().asInteger() != width || getHeightSpinner(view)->getValue().asInteger() != height)
 		{
-			view->getChild<LLUICtrl>("snapshot_width")->setValue(width);
-			view->getChild<LLUICtrl>("snapshot_height")->setValue(height);
+			getWidthSpinner(view)->setValue(width);
+			getHeightSpinner(view)->setValue(height);
 		}
 
 		if(original_width != width || original_height != height)
@@ -1865,10 +1794,13 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL
 
 			// hide old preview as the aspect ratio could be wrong
 			checkAutoSnapshot(previewp, FALSE);
+			lldebugs << "updating thumbnail" << llendl;
 			getPreviewView(view)->updateSnapshot(FALSE, TRUE);
 			if(do_update)
 			{
+				lldebugs << "Will update controls" << llendl;
 				updateControls(view);
+				setNeedRefresh(view, true);
 			}
 		}
 	}
@@ -1892,96 +1824,46 @@ void LLFloaterSnapshot::Impl::onCommitLayerTypes(LLUICtrl* ctrl, void*data)
 	}
 }
 
-//static 
-void LLFloaterSnapshot::Impl::onCommitSnapshotType(LLUICtrl* ctrl, void* data)
+// static
+void LLFloaterSnapshot::Impl::onImageQualityChange(LLFloaterSnapshot* view, S32 quality_val)
 {
-	LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;		
-	if (view)
+	LLSnapshotLivePreview* previewp = getPreviewView(view);
+	if (previewp)
 	{
-		gSavedSettings.setS32("LastSnapshotType", getTypeIndex(view));
-		getPreviewView(view)->updateSnapshot(TRUE);
-		updateControls(view);
+		previewp->setSnapshotQuality(quality_val);
 	}
+	checkAutoSnapshot(previewp, TRUE);
 }
 
-
-//static 
-void LLFloaterSnapshot::Impl::onCommitSnapshotFormat(LLUICtrl* ctrl, void* data)
+// static
+void LLFloaterSnapshot::Impl::onImageFormatChange(LLFloaterSnapshot* view)
 {
-	LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;
 	if (view)
 	{
-		gSavedSettings.setS32("SnapshotFormat", getFormatIndex(view));
+		gSavedSettings.setS32("SnapshotFormat", getImageFormat(view));
+		lldebugs << "image format changed, updating snapshot" << llendl;
 		getPreviewView(view)->updateSnapshot(TRUE);
 		updateControls(view);
+		setNeedRefresh(view, false); // we're refreshing
 	}
 }
 
-
-
 // Sets the named size combo to "custom" mode.
 // static
 void LLFloaterSnapshot::Impl::comboSetCustom(LLFloaterSnapshot* floater, const std::string& comboname)
 {
 	LLComboBox* combo = floater->getChild<LLComboBox>(comboname);
-
 	combo->setCurrentByIndex(combo->getItemCount() - 1); // "custom" is always the last index
-
-	if(comboname == "postcard_size_combo") 
-	{
-		gSavedSettings.setS32("SnapshotPostcardLastResolution", combo->getCurrentIndex());
-	}
-	else if(comboname == "texture_size_combo") 
-	{
-		gSavedSettings.setS32("SnapshotTextureLastResolution", combo->getCurrentIndex());
-	}
-	else if(comboname == "local_size_combo") 
-	{
-		gSavedSettings.setS32("SnapshotLocalLastResolution", combo->getCurrentIndex());
-	}
-
 	checkAspectRatio(floater, -1); // -1 means custom
 }
 
-
-
+// Update supplied width and height according to the constrain proportions flag; limit them by max_val.
 //static
 BOOL LLFloaterSnapshot::Impl::checkImageSize(LLSnapshotLivePreview* previewp, S32& width, S32& height, BOOL isWidthChanged, S32 max_value)
 {
 	S32 w = width ;
 	S32 h = height ;
 
-	//if texture, ignore aspect ratio setting, round image size to power of 2.
-#if 0 // Don't round texture sizes; textures are commonly stretched in world, profiles, etc and need to be "squashed" during upload, not cropped here
-	if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE == gSavedSettings.getS32("LastSnapshotType"))
-	{
-		if(width > max_value)
-		{
-			width = max_value ;
-		}
-		if(height > max_value)
-		{
-			height = max_value ;
-		}
-
-		//round to nearest power of 2 based on the direction of movement
-		// i.e. higher power of two if increasing texture resolution
-		if(gSavedSettings.getS32("LastSnapshotToInventoryWidth") < width ||
-			gSavedSettings.getS32("LastSnapshotToInventoryHeight") < height)
-		{
-			// Up arrow pressed
-			width = get_next_power_two(width, MAX_TEXTURE_SIZE) ;
-			height = get_next_power_two(height, MAX_TEXTURE_SIZE) ;
-		}
-		else
-		{
-			// Down or no change
-			width = get_lower_power_two(width, MAX_TEXTURE_SIZE) ;
-			height = get_lower_power_two(height, MAX_TEXTURE_SIZE) ;
-		}
-	}
-	else
-#endif
 	if(previewp && previewp->mKeepAspectRatio)
 	{
 		if(gViewerWindow->getWindowWidthRaw() < 1 || gViewerWindow->getWindowHeightRaw() < 1)
@@ -1995,11 +1877,11 @@ BOOL LLFloaterSnapshot::Impl::checkImageSize(LLSnapshotLivePreview* previewp, S3
 		//change another value proportionally
 		if(isWidthChanged)
 		{
-			height = (S32)(width / aspect_ratio) ;
+			height = llround(width / aspect_ratio) ;
 		}
 		else
 		{
-			width = (S32)(height * aspect_ratio) ;
+			width = llround(height * aspect_ratio) ;
 		}
 
 		//bound w/h by the max_value
@@ -2017,87 +1899,79 @@ BOOL LLFloaterSnapshot::Impl::checkImageSize(LLSnapshotLivePreview* previewp, S3
 			}
 		}
 	}
-	else
-	{
-	}
 
 	return (w != width || h != height) ;
 }
 
 //static
-void LLFloaterSnapshot::Impl::resetSnapshotSizeOnUI(LLFloaterSnapshot *view, S32 width, S32 height)
+void LLFloaterSnapshot::Impl::setImageSizeSpinnersValues(LLFloaterSnapshot *view, S32 width, S32 height)
 {
-	view->getChild<LLSpinCtrl>("snapshot_width")->forceSetValue(width);
-	view->getChild<LLSpinCtrl>("snapshot_height")->forceSetValue(height);
-	gSavedSettings.setS32(lastSnapshotWidthName(), width);
-	gSavedSettings.setS32(lastSnapshotHeightName(), height);
+	getWidthSpinner(view)->forceSetValue(width);
+	getHeightSpinner(view)->forceSetValue(height);
 }
 
-//static
-void LLFloaterSnapshot::Impl::onCommitCustomResolution(LLUICtrl *ctrl, void* data)
+// static
+void LLFloaterSnapshot::Impl::updateSpinners(LLFloaterSnapshot* view, LLSnapshotLivePreview* previewp, S32& width, S32& height, BOOL is_width_changed)
 {
-	LLFloaterSnapshot *view = (LLFloaterSnapshot *)data;		
-	if (view)
+	if (checkImageSize(previewp, width, height, is_width_changed, previewp->getMaxImageSize()))
 	{
-		S32 w = llfloor((F32)view->getChild<LLUICtrl>("snapshot_width")->getValue().asReal());
-		S32 h = llfloor((F32)view->getChild<LLUICtrl>("snapshot_height")->getValue().asReal());
+		setImageSizeSpinnersValues(view, width, height);
+	}
+}
 
-		LLSnapshotLivePreview* previewp = getPreviewView(view);
-		if (previewp)
+// static
+void LLFloaterSnapshot::Impl::applyCustomResolution(LLFloaterSnapshot* view, S32 w, S32 h)
+{
+	bool need_refresh = false;
+
+	lldebugs << "applyCustomResolution(" << w << ", " << h << ")" << llendl;
+	if (!view) return;
+
+	LLSnapshotLivePreview* previewp = getPreviewView(view);
+	if (previewp)
+	{
+		S32 curw,curh;
+		previewp->getSize(curw, curh);
+
+		if (w != curw || h != curh)
 		{
-			S32 curw,curh;
-			previewp->getSize(curw, curh);
-			
-			if (w != curw || h != curh)
-			{
-				BOOL update_ = FALSE ;
-				//if to upload a snapshot, process spinner input in a special way.
-#if 0  // Don't round texture sizes; textures are commonly stretched in world, profiles, etc and need to be "squashed" during upload, not cropped here
-				if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE == gSavedSettings.getS32("LastSnapshotType"))
-				{
-					S32 spinner_increment = (S32)((LLSpinCtrl*)ctrl)->getIncrement() ;
-					S32 dw = w - curw ;
-					S32 dh = h - curh ;
-					dw = (dw == spinner_increment) ? 1 : ((dw == -spinner_increment) ? -1 : 0) ;
-					dh = (dh == spinner_increment) ? 1 : ((dh == -spinner_increment) ? -1 : 0) ;
-
-					if(dw)
-					{
-						w = (dw > 0) ? curw << dw : curw >> -dw ;
-						update_ = TRUE ;
-					}
-					if(dh)
-					{
-						h = (dh > 0) ? curh << dh : curh >> -dh ;
-						update_ = TRUE ;
-					}
-				}
-#endif
-				previewp->setMaxImageSize((S32)((LLSpinCtrl *)ctrl)->getMaxValue()) ;
-				
-				// Check image size changes the value of height and width
-				if(checkImageSize(previewp, w, h, w != curw, previewp->getMaxImageSize())
-					|| update_)
-				{
-					resetSnapshotSizeOnUI(view, w, h) ;
-				}
+			//if to upload a snapshot, process spinner input in a special way.
+			previewp->setMaxImageSize((S32) getWidthSpinner(view)->getMaxValue()) ;
 
-				previewp->setSize(w,h);
-				checkAutoSnapshot(previewp, FALSE);
-				previewp->updateSnapshot(FALSE, TRUE);
-				comboSetCustom(view, "postcard_size_combo");
-				comboSetCustom(view, "texture_size_combo");
-				comboSetCustom(view, "local_size_combo");
-			}
-		}
+			updateSpinners(view, previewp, w, h, w != curw); // may change w and h
 
-		gSavedSettings.setS32(lastSnapshotWidthName(), w);
-		gSavedSettings.setS32(lastSnapshotHeightName(), h);
+			previewp->setSize(w,h);
+			checkAutoSnapshot(previewp, FALSE);
+			lldebugs << "applied custom resolution, updating thumbnail" << llendl;
+			previewp->updateSnapshot(FALSE, TRUE);
+			comboSetCustom(view, "profile_size_combo");
+			comboSetCustom(view, "postcard_size_combo");
+			comboSetCustom(view, "texture_size_combo");
+			comboSetCustom(view, "local_size_combo");
+			need_refresh = true;
+		}
+	}
 
-		updateControls(view);
+	updateControls(view);
+	if (need_refresh)
+	{
+		setNeedRefresh(view, true); // need to do this after updateControls()
 	}
 }
 
+// static
+void LLFloaterSnapshot::Impl::onSnapshotUploadFinished(bool status)
+{
+	setStatus(STATUS_FINISHED, status, "profile");
+}
+
+
+// static
+void LLFloaterSnapshot::Impl::onSendingPostcardFinished(bool status)
+{
+	setStatus(STATUS_FINISHED, status, "postcard");
+}
+
 ///----------------------------------------------------------------------------
 /// Class LLFloaterSnapshot
 ///----------------------------------------------------------------------------
@@ -2105,6 +1979,10 @@ void LLFloaterSnapshot::Impl::onCommitCustomResolution(LLUICtrl *ctrl, void* dat
 // Default constructor
 LLFloaterSnapshot::LLFloaterSnapshot(const LLSD& key)
 	: LLFloater(key),
+	  mRefreshBtn(NULL),
+	  mRefreshLabel(NULL),
+	  mSucceessLblPanel(NULL),
+	  mFailureLblPanel(NULL),
 	  impl (*(new Impl))
 {
 }
@@ -2112,7 +1990,7 @@ LLFloaterSnapshot::LLFloaterSnapshot(const LLSD& key)
 // Destroys the object
 LLFloaterSnapshot::~LLFloaterSnapshot()
 {
-	LLView::deleteViewByHandle(impl.mPreviewHandle);
+	if (impl.mPreviewHandle.get()) impl.mPreviewHandle.get()->die();
 
 	//unfreeze everything else
 	gSavedSettings.setBOOL("FreezeTime", FALSE);
@@ -2134,24 +2012,13 @@ BOOL LLFloaterSnapshot::postBuild()
 		LLWebSharing::instance().init();
 	}
 
-	childSetCommitCallback("snapshot_type_radio", Impl::onCommitSnapshotType, this);
-	childSetCommitCallback("local_format_combo", Impl::onCommitSnapshotFormat, this);
-	
+	mRefreshBtn = getChild<LLUICtrl>("new_snapshot_btn");
 	childSetAction("new_snapshot_btn", Impl::onClickNewSnapshot, this);
+	mRefreshLabel = getChild<LLUICtrl>("refresh_lbl");
+	mSucceessLblPanel = getChild<LLUICtrl>("succeeded_panel");
+	mFailureLblPanel = getChild<LLUICtrl>("failed_panel");
 
-	childSetAction("more_btn", Impl::onClickMore, this);
-	childSetAction("less_btn", Impl::onClickLess, this);
-
-	childSetAction("upload_btn", Impl::onClickKeep, this);
-	childSetAction("send_btn", Impl::onClickKeep, this);
-	childSetCommitCallback("save_btn", Impl::onCommitSave, this);
-	childSetAction("discard_btn", Impl::onClickDiscard, this);
-
-	childSetCommitCallback("image_quality_slider", Impl::onCommitQuality, this);
-	getChild<LLUICtrl>("image_quality_slider")->setValue(gSavedSettings.getS32("SnapshotQuality"));
-
-	childSetCommitCallback("snapshot_width", Impl::onCommitCustomResolution, this);
-	childSetCommitCallback("snapshot_height", Impl::onCommitCustomResolution, this);
+	childSetAction("advanced_options_btn", Impl::onClickMore, this);
 
 	childSetCommitCallback("ui_check", Impl::onClickUICheck, this);
 	getChild<LLUICtrl>("ui_check")->setValue(gSavedSettings.getBOOL("RenderUIInSnapshot"));
@@ -2159,28 +2026,22 @@ BOOL LLFloaterSnapshot::postBuild()
 	childSetCommitCallback("hud_check", Impl::onClickHUDCheck, this);
 	getChild<LLUICtrl>("hud_check")->setValue(gSavedSettings.getBOOL("RenderHUDInSnapshot"));
 
-	childSetCommitCallback("keep_open_check", Impl::onClickKeepOpenCheck, this);
-	getChild<LLUICtrl>("keep_open_check")->setValue(!gSavedSettings.getBOOL("CloseSnapshotOnKeep"));
-
-	childSetCommitCallback("keep_aspect_check", Impl::onClickKeepAspectCheck, this);
-	getChild<LLUICtrl>("keep_aspect_check")->setValue(gSavedSettings.getBOOL("KeepAspectForSnapshot"));
+	impl.setAspectRatioCheckboxValue(this, gSavedSettings.getBOOL("KeepAspectForSnapshot"));
 
 	childSetCommitCallback("layer_types", Impl::onCommitLayerTypes, this);
 	getChild<LLUICtrl>("layer_types")->setValue("colors");
 	getChildView("layer_types")->setEnabled(FALSE);
 
-	getChild<LLUICtrl>("snapshot_width")->setValue(gSavedSettings.getS32(lastSnapshotWidthName()));
-	getChild<LLUICtrl>("snapshot_height")->setValue(gSavedSettings.getS32(lastSnapshotHeightName()));
-
 	getChild<LLUICtrl>("freeze_frame_check")->setValue(gSavedSettings.getBOOL("UseFreezeFrame"));
 	childSetCommitCallback("freeze_frame_check", Impl::onCommitFreezeFrame, this);
 
 	getChild<LLUICtrl>("auto_snapshot_check")->setValue(gSavedSettings.getBOOL("AutoSnapshot"));
 	childSetCommitCallback("auto_snapshot_check", Impl::onClickAutoSnap, this);
 
-	childSetCommitCallback("postcard_size_combo", Impl::onCommitResolution, this);
-	childSetCommitCallback("texture_size_combo", Impl::onCommitResolution, this);
-	childSetCommitCallback("local_size_combo", Impl::onCommitResolution, this);
+	LLWebProfile::setImageUploadResultCallback(boost::bind(&LLFloaterSnapshot::Impl::onSnapshotUploadFinished, _1));
+	LLPostCard::setPostResultCallback(boost::bind(&LLFloaterSnapshot::Impl::onSendingPostcardFinished, _1));
+
+	sThumbnailPlaceholder = getChild<LLUICtrl>("thumbnail_placeholder");
 
 	// create preview window
 	LLRect full_screen_rect = getRootView()->getRect();
@@ -2198,6 +2059,13 @@ BOOL LLFloaterSnapshot::postBuild()
 	gFloaterView->removeChild(this);
 	gSnapshotFloaterView->addChild(this);
 
+	// Pre-select "Current Window" resolution.
+	getChild<LLComboBox>("profile_size_combo")->selectNthItem(0);
+	getChild<LLComboBox>("postcard_size_combo")->selectNthItem(0);
+	getChild<LLComboBox>("texture_size_combo")->selectNthItem(0);
+	getChild<LLComboBox>("local_size_combo")->selectNthItem(0);
+	getChild<LLComboBox>("local_format_combo")->selectNthItem(0);
+
 	impl.mPreviewHandle = previewp->getHandle();
 	impl.updateControls(this);
 	impl.updateLayout(this);
@@ -2217,23 +2085,69 @@ void LLFloaterSnapshot::draw()
 
 	LLFloater::draw();
 
-	if (previewp)
+	if (previewp && !isMinimized())
 	{		
 		if(previewp->getThumbnailImage())
 		{
-			LLRect thumbnail_rect = getChild<LLUICtrl>("thumbnail_placeholder")->getRect();
+			bool working = impl.getStatus() == Impl::STATUS_WORKING;
+			const LLRect& thumbnail_rect = getThumbnailPlaceholderRect();
+			const S32 thumbnail_w = previewp->getThumbnailWidth();
+			const S32 thumbnail_h = previewp->getThumbnailHeight();
+
+			// calc preview offset within the preview rect
+			const S32 local_offset_x = (thumbnail_rect.getWidth() - thumbnail_w) / 2 ;
+			const S32 local_offset_y = (thumbnail_rect.getHeight() - thumbnail_h) / 2 ; // preview y pos within the preview rect
 
-			S32 offset_x = (getRect().getWidth() - previewp->getThumbnailWidth()) / 2 ;
-			S32 offset_y = thumbnail_rect.mBottom + (thumbnail_rect.getHeight() - previewp->getThumbnailHeight()) / 2 ;
+			// calc preview offset within the floater rect
+			S32 offset_x = thumbnail_rect.mLeft + local_offset_x;
+			S32 offset_y = thumbnail_rect.mBottom + local_offset_y;
 
-			glMatrixMode(GL_MODELVIEW);
+			gGL.matrixMode(LLRender::MM_MODELVIEW);
 			// Apply floater transparency to the texture unless the floater is focused.
 			F32 alpha = getTransparencyType() == TT_ACTIVE ? 1.0f : getCurrentTransparency();
+			LLColor4 color = working ? LLColor4::grey4 : LLColor4::white;
 			gl_draw_scaled_image(offset_x, offset_y, 
-					previewp->getThumbnailWidth(), previewp->getThumbnailHeight(), 
-					previewp->getThumbnailImage(), LLColor4::white % alpha);
+					thumbnail_w, thumbnail_h,
+					previewp->getThumbnailImage(), color % alpha);
 
 			previewp->drawPreviewRect(offset_x, offset_y) ;
+
+			// Draw some controls on top of the preview thumbnail.
+			static const S32 PADDING = 5;
+			static const S32 REFRESH_LBL_BG_HEIGHT = 32;
+
+			// Reshape and position the posting result message panels at the top of the thumbnail.
+			// Do this regardless of current posting status (finished or not) to avoid flicker
+			// when the result message is displayed for the first time.
+			// if (impl.getStatus() == Impl::STATUS_FINISHED)
+			{
+				LLRect result_lbl_rect = mSucceessLblPanel->getRect();
+				const S32 result_lbl_h = result_lbl_rect.getHeight();
+				result_lbl_rect.setLeftTopAndSize(local_offset_x, local_offset_y + thumbnail_h, thumbnail_w - 1, result_lbl_h);
+				mSucceessLblPanel->reshape(result_lbl_rect.getWidth(), result_lbl_h);
+				mSucceessLblPanel->setRect(result_lbl_rect);
+				mFailureLblPanel->reshape(result_lbl_rect.getWidth(), result_lbl_h);
+				mFailureLblPanel->setRect(result_lbl_rect);
+			}
+
+			// Position the refresh button in the bottom left corner of the thumbnail.
+			mRefreshBtn->setOrigin(local_offset_x + PADDING, local_offset_y + PADDING);
+
+			if (impl.mNeedRefresh)
+			{
+				// Place the refresh hint text to the right of the refresh button.
+				const LLRect& refresh_btn_rect = mRefreshBtn->getRect();
+				mRefreshLabel->setOrigin(refresh_btn_rect.mLeft + refresh_btn_rect.getWidth() + PADDING, refresh_btn_rect.mBottom);
+
+				// Draw the refresh hint background.
+				LLRect refresh_label_bg_rect(offset_x, offset_y + REFRESH_LBL_BG_HEIGHT, offset_x + thumbnail_w - 1, offset_y);
+				gl_rect_2d(refresh_label_bg_rect, LLColor4::white % 0.9f, TRUE);
+			}
+
+			gGL.pushUIMatrix();
+			LLUI::translate((F32) thumbnail_rect.mLeft, (F32) thumbnail_rect.mBottom);
+			sThumbnailPlaceholder->draw();
+			gGL.popUIMatrix();
 		}
 	}
 }
@@ -2243,12 +2157,16 @@ void LLFloaterSnapshot::onOpen(const LLSD& key)
 	LLSnapshotLivePreview* preview = LLFloaterSnapshot::Impl::getPreviewView(this);
 	if(preview)
 	{
+		lldebugs << "opened, updating snapshot" << llendl;
 		preview->updateSnapshot(TRUE);
 	}
 	focusFirstItem(FALSE);
 	gSnapshotFloaterView->setEnabled(TRUE);
 	gSnapshotFloaterView->setVisible(TRUE);
 	gSnapshotFloaterView->adjustToFitScreen(this, FALSE);
+
+	// Initialize default tab.
+	getChild<LLSideTrayPanelContainer>("panel_container")->getCurrentPanel()->onOpen(LLSD());
 }
 
 void LLFloaterSnapshot::onClose(bool app_quitting)
@@ -2256,6 +2174,62 @@ void LLFloaterSnapshot::onClose(bool app_quitting)
 	getParent()->setMouseOpaque(FALSE);
 }
 
+// virtual
+S32 LLFloaterSnapshot::notify(const LLSD& info)
+{
+	// A child panel wants to change snapshot resolution.
+	if (info.has("combo-res-change"))
+	{
+		std::string combo_name = info["combo-res-change"]["control-name"].asString();
+		impl.updateResolution(getChild<LLUICtrl>(combo_name), this);
+		return 1;
+	}
+
+	if (info.has("custom-res-change"))
+	{
+		LLSD res = info["custom-res-change"];
+		impl.applyCustomResolution(this, res["w"].asInteger(), res["h"].asInteger());
+		return 1;
+	}
+
+	if (info.has("keep-aspect-change"))
+	{
+		impl.applyKeepAspectCheck(this, info["keep-aspect-change"].asBoolean());
+		return 1;
+	}
+
+	if (info.has("image-quality-change"))
+	{
+		impl.onImageQualityChange(this, info["image-quality-change"].asInteger());
+		return 1;
+	}
+
+	if (info.has("image-format-change"))
+	{
+		impl.onImageFormatChange(this);
+		return 1;
+	}
+
+	if (info.has("set-ready"))
+	{
+		impl.setStatus(Impl::STATUS_READY);
+		return 1;
+	}
+
+	if (info.has("set-working"))
+	{
+		impl.setStatus(Impl::STATUS_WORKING);
+		return 1;
+	}
+
+	if (info.has("set-finished"))
+	{
+		LLSD data = info["set-finished"];
+		impl.setStatus(Impl::STATUS_FINISHED, data["ok"].asBoolean(), data["msg"].asString());
+		return 1;
+	}
+	return 0;
+}
 
 //static 
 void LLFloaterSnapshot::update()
@@ -2265,6 +2239,7 @@ void LLFloaterSnapshot::update()
 		return;
 	
 	BOOL changed = FALSE;
+	lldebugs << "npreviews: " << LLSnapshotLivePreview::sList.size() << llendl;
 	for (std::set<LLSnapshotLivePreview*>::iterator iter = LLSnapshotLivePreview::sList.begin();
 		 iter != LLSnapshotLivePreview::sList.end(); ++iter)
 	{
@@ -2272,10 +2247,181 @@ void LLFloaterSnapshot::update()
 	}
 	if(changed)
 	{
+		lldebugs << "changed" << llendl;
 		inst->impl.updateControls(inst);
 	}
 }
 
+// static
+LLFloaterSnapshot* LLFloaterSnapshot::getInstance()
+{
+	return LLFloaterReg::getTypedInstance<LLFloaterSnapshot>("snapshot");
+}
+
+// static
+void LLFloaterSnapshot::saveTexture()
+{
+	lldebugs << "saveTexture" << llendl;
+
+	// FIXME: duplicated code
+	LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+	if (!instance)
+	{
+		llassert(instance != NULL);
+		return;
+	}
+	LLSnapshotLivePreview* previewp = Impl::getPreviewView(instance);
+	if (!previewp)
+	{
+		llassert(previewp != NULL);
+		return;
+	}
+
+	previewp->saveTexture();
+}
+
+// static
+BOOL LLFloaterSnapshot::saveLocal()
+{
+	lldebugs << "saveLocal" << llendl;
+	// FIXME: duplicated code
+	LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+	if (!instance)
+	{
+		llassert(instance != NULL);
+		return FALSE;
+	}
+	LLSnapshotLivePreview* previewp = Impl::getPreviewView(instance);
+	if (!previewp)
+	{
+		llassert(previewp != NULL);
+		return FALSE;
+	}
+
+	return previewp->saveLocal();
+}
+
+// static
+void LLFloaterSnapshot::preUpdate()
+{
+	// FIXME: duplicated code
+	LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+	if (instance)
+	{
+		// Disable the send/post/save buttons until snapshot is ready.
+		Impl::updateControls(instance);
+
+		// Force hiding the "Refresh to save" hint because we know we've just started refresh.
+		Impl::setNeedRefresh(instance, false);
+	}
+}
+
+// static
+void LLFloaterSnapshot::postUpdate()
+{
+	// FIXME: duplicated code
+	LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+	if (instance)
+	{
+		// Enable the send/post/save buttons.
+		Impl::updateControls(instance);
+
+		// We've just done refresh.
+		Impl::setNeedRefresh(instance, false);
+
+		// The refresh button is initially hidden. We show it after the first update,
+		// i.e. when preview appears.
+		if (!instance->mRefreshBtn->getVisible())
+		{
+			instance->mRefreshBtn->setVisible(true);
+		}
+	}
+}
+
+// static
+void LLFloaterSnapshot::postSave()
+{
+	LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+	if (!instance)
+	{
+		llassert(instance != NULL);
+		return;
+	}
+
+	instance->impl.updateControls(instance);
+	instance->impl.setStatus(Impl::STATUS_WORKING);
+}
+
+// static
+void LLFloaterSnapshot::postPanelSwitch()
+{
+	LLFloaterSnapshot* instance = getInstance();
+	instance->impl.updateControls(instance);
+
+	// Remove the success/failure indicator whenever user presses a snapshot option button.
+	instance->impl.setStatus(Impl::STATUS_READY);
+}
+
+// static
+LLPointer<LLImageFormatted> LLFloaterSnapshot::getImageData()
+{
+	// FIXME: May not work for textures.
+
+	LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+	if (!instance)
+	{
+		llassert(instance != NULL);
+		return NULL;
+	}
+
+	LLSnapshotLivePreview* previewp = Impl::getPreviewView(instance);
+	if (!previewp)
+	{
+		llassert(previewp != NULL);
+		return NULL;
+	}
+
+	LLPointer<LLImageFormatted> img = previewp->getFormattedImage();
+	if (!img.get())
+	{
+		llwarns << "Empty snapshot image data" << llendl;
+		llassert(img.get() != NULL);
+	}
+
+	return img;
+}
+
+// static
+const LLVector3d& LLFloaterSnapshot::getPosTakenGlobal()
+{
+	LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+	if (!instance)
+	{
+		llassert(instance != NULL);
+		return LLVector3d::zero;
+	}
+
+	LLSnapshotLivePreview* previewp = Impl::getPreviewView(instance);
+	if (!previewp)
+	{
+		llassert(previewp != NULL);
+		return LLVector3d::zero;
+	}
+
+	return previewp->getPosTakenGlobal();
+}
+
+// static
+void LLFloaterSnapshot::setAgentEmail(const std::string& email)
+{
+	LLFloaterSnapshot* instance = LLFloaterReg::findTypedInstance<LLFloaterSnapshot>("snapshot");
+	if (instance)
+	{
+		LLSideTrayPanelContainer* panel_container = instance->getChild<LLSideTrayPanelContainer>("panel_container");
+		LLPanel* postcard_panel = panel_container->getPanelByName("panel_snapshot_postcard");
+		postcard_panel->notify(LLSD().with("agent-email", email));
+	}
+}
 
 ///----------------------------------------------------------------------------
 /// Class LLSnapshotFloaterView
diff --git a/indra/newview/llfloatersnapshot.h b/indra/newview/llfloatersnapshot.h
index c92d9efde507bcaa29662c5c232125c8903905cf..afe135fa407cd009258f4c5a375e28dd96867963 100644
--- a/indra/newview/llfloatersnapshot.h
+++ b/indra/newview/llfloatersnapshot.h
@@ -27,11 +27,15 @@
 #ifndef LL_LLFLOATERSNAPSHOT_H
 #define LL_LLFLOATERSNAPSHOT_H
 
+#include "llimage.h"
 #include "llfloater.h"
 
+class LLSpinCtrl;
 
 class LLFloaterSnapshot : public LLFloater
 {
+	LOG_CLASS(LLFloaterSnapshot);
+
 public:
 	typedef enum e_snapshot_format
 	{
@@ -47,20 +51,31 @@ class LLFloaterSnapshot : public LLFloater
 	/*virtual*/ void draw();
 	/*virtual*/ void onOpen(const LLSD& key);
 	/*virtual*/ void onClose(bool app_quitting);
+	/*virtual*/ S32 notify(const LLSD& info);
 	
 	static void update();
-	
-	static S32  getUIWinHeightLong()  {return sUIWinHeightLong ;}
-	static S32  getUIWinHeightShort() {return sUIWinHeightShort ;}
-	static S32  getUIWinWidth()       {return sUIWinWidth ;}
+
+	// TODO: create a snapshot model instead
+	static LLFloaterSnapshot* getInstance();
+	static void saveTexture();
+	static BOOL saveLocal();
+	static void preUpdate();
+	static void postUpdate();
+	static void postSave();
+	static void postPanelSwitch();
+	static LLPointer<LLImageFormatted> getImageData();
+	static const LLVector3d& getPosTakenGlobal();
+	static void setAgentEmail(const std::string& email);
+
+	static const LLRect& getThumbnailPlaceholderRect() { return sThumbnailPlaceholder->getRect(); }
 
 private:
+	static LLUICtrl* sThumbnailPlaceholder;
+	LLUICtrl *mRefreshBtn, *mRefreshLabel;
+	LLUICtrl *mSucceessLblPanel, *mFailureLblPanel;
+
 	class Impl;
 	Impl& impl;
-
-	static S32    sUIWinHeightLong ;
-	static S32    sUIWinHeightShort ;
-	static S32    sUIWinWidth ;
 };
 
 class LLSnapshotFloaterView : public LLFloaterView
diff --git a/indra/newview/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp
index e692f1735ae39b72ff26a4e5c745db40d6132a00..72c077d2156b5b323046c4dcc4c6b16845cbfec2 100644
--- a/indra/newview/llfloatersounddevices.cpp
+++ b/indra/newview/llfloatersounddevices.cpp
@@ -28,7 +28,6 @@
 
 #include "llfloatersounddevices.h"
 
-#include "llbottomtray.h"
 #include "lldraghandle.h"
 
 #include "llpanelvoicedevicesettings.h"
@@ -55,13 +54,7 @@ LLFloaterSoundDevices::~LLFloaterSoundDevices()
 BOOL LLFloaterSoundDevices::postBuild()
 {
 	LLTransientDockableFloater::postBuild();
-		
-	LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("flyout_btn");
-	setDockControl(new LLDockControl(anchor_panel, this, getDockTongue(), LLDockControl::TOP));
 
-	setIsChrome(TRUE);
-	if (mDragHandle)
-		mDragHandle->setTitleVisible(TRUE);
 	updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
 
 	LLPanelVoiceDeviceSettings* panel = findChild<LLPanelVoiceDeviceSettings>("device_settings_panel");
diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp
index 1008b4a6e4c3830534d8304c90cb56def84fb9dd..bd5b5f4eb0c38174fb2e5a10223a2045611f359f 100644
--- a/indra/newview/llfloatertools.cpp
+++ b/indra/newview/llfloatertools.cpp
@@ -529,7 +529,7 @@ void LLFloaterTools::refresh()
 	mPanelLandInfo->refresh();
 
 	// Refresh the advanced weights floater
-	LLFloaterObjectWeights* object_weights_floater = LLFloaterReg::getTypedInstance<LLFloaterObjectWeights>("object_weights");
+	LLFloaterObjectWeights* object_weights_floater = LLFloaterReg::findTypedInstance<LLFloaterObjectWeights>("object_weights");
 	if(object_weights_floater && object_weights_floater->getVisible())
 	{
 		object_weights_floater->refresh();
@@ -1409,9 +1409,7 @@ bool LLFloaterTools::deleteMediaConfirm(const LLSD& notification, const LLSD& re
 //
 void LLFloaterTools::clearMediaSettings()
 {
-	LLFloaterMediaSettings::getInstance();
 	LLFloaterMediaSettings::clearValues(false);
-
 }
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llfloatertoybox.cpp b/indra/newview/llfloatertoybox.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..324afe661fc1f510f9c447d0de7d3283dc2e0073
--- /dev/null
+++ b/indra/newview/llfloatertoybox.cpp
@@ -0,0 +1,191 @@
+/** 
+ * @file llfloatertoybox.cpp
+ * @brief The toybox for flexibilizing the UI.
+ *
+ * $LicenseInfo:firstyear=2002&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 "llviewerprecompiledheaders.h"
+
+#include "llfloatertoybox.h"
+
+#include "llbutton.h"
+#include "llcommandmanager.h"
+#include "llnotifications.h"
+#include "llnotificationsutil.h"
+#include "llpanel.h"
+#include "lltoolbar.h"
+#include "lltoolbarview.h"
+#include "lltrans.h"
+
+LLFloaterToybox::LLFloaterToybox(const LLSD& key)
+	: LLFloater(key)
+	, mToolBar(NULL)
+{
+	mCommitCallbackRegistrar.add("Toybox.RestoreDefaults", boost::bind(&LLFloaterToybox::onBtnRestoreDefaults, this));
+	mCommitCallbackRegistrar.add("Toybox.ClearAll", boost::bind(&LLFloaterToybox::onBtnClearAll, this));
+}
+
+LLFloaterToybox::~LLFloaterToybox()
+{
+}
+
+bool compare_localized_command_labels(LLCommand * cmd1, LLCommand * cmd2)
+{
+	std::string lab1 = LLTrans::getString(cmd1->labelRef());
+	std::string lab2 = LLTrans::getString(cmd2->labelRef());
+
+	return (lab1 < lab2);
+}
+
+BOOL LLFloaterToybox::postBuild()
+{	
+	mToolBar = getChild<LLToolBar>("toybox_toolbar");
+
+	mToolBar->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3));
+	mToolBar->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4));
+	mToolBar->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4));
+	mToolBar->setButtonEnterCallback(boost::bind(&LLFloaterToybox::onToolBarButtonEnter,this,_1));
+	
+	//
+	// Sort commands by localized labels so they will appear alphabetized in all languages
+	//
+
+	std::list<LLCommand *> alphabetized_commands;
+
+	LLCommandManager& cmdMgr = LLCommandManager::instance();
+	for (U32 i = 0; i < cmdMgr.commandCount(); i++)
+	{
+		LLCommand * command = cmdMgr.getCommand(i);
+
+		if (command->availableInToybox())
+		{
+			alphabetized_commands.push_back(command);
+		}
+	}
+
+	alphabetized_commands.sort(compare_localized_command_labels);
+
+	//
+	// Create Buttons
+	//
+
+	for (std::list<LLCommand *>::iterator it = alphabetized_commands.begin(); it != alphabetized_commands.end(); ++it)
+	{
+		mToolBar->addCommand((*it)->id());
+	}
+
+	return TRUE;
+}
+
+void LLFloaterToybox::draw()
+{
+	llassert(gToolBarView != NULL);
+
+	const command_id_list_t& command_list = mToolBar->getCommandsList();
+
+	for (command_id_list_t::const_iterator it = command_list.begin(); it != command_list.end(); ++it)
+	{
+		const LLCommandId& id = *it;
+
+		const bool command_not_present = (gToolBarView->hasCommand(id) == LLToolBarView::TOOLBAR_NONE);
+		mToolBar->enableCommand(id, command_not_present);
+	}
+
+	LLFloater::draw();
+}
+
+static bool finish_restore_toybox(const LLSD& notification, const LLSD& response)
+{
+	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+
+	if (option == 0)
+	{
+		LLToolBarView::loadDefaultToolbars();
+	}
+
+	return false;
+}
+
+static bool finish_clear_all_toybox(const LLSD& notification, const LLSD& response)
+{
+	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+
+	if (option == 0)
+	{
+		LLToolBarView::clearAllToolbars();
+	}
+
+	return false;
+}
+
+static LLNotificationFunctorRegistration finish_restore_toybox_reg("ConfirmRestoreToybox", finish_restore_toybox);
+static LLNotificationFunctorRegistration finish_clear_all_toybox_reg("ConfirmClearAllToybox", finish_clear_all_toybox);
+
+void LLFloaterToybox::onBtnRestoreDefaults()
+{
+	LLNotificationsUtil::add("ConfirmRestoreToybox");
+}
+
+void LLFloaterToybox::onBtnClearAll()
+{
+	LLNotificationsUtil::add("ConfirmClearAllToybox");
+}
+
+BOOL LLFloaterToybox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+	EDragAndDropType cargo_type,
+	void* cargo_data,
+	EAcceptance* accept,
+	std::string& tooltip_msg)
+{
+	S32 local_x = x - mToolBar->getRect().mLeft;
+	S32 local_y = y - mToolBar->getRect().mBottom;
+	return mToolBar->handleDragAndDrop(local_x, local_y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
+}
+
+void LLFloaterToybox::onToolBarButtonEnter(LLView* button)
+{
+	std::string suffix = "";
+
+	LLCommandId commandId(button->getName());
+	LLCommand* command = LLCommandManager::instance().getCommand(commandId);
+
+	if (command)
+	{
+		S32 command_loc = gToolBarView->hasCommand(commandId);
+
+		switch(command_loc)
+		{
+		case LLToolBarView::TOOLBAR_BOTTOM:	suffix = LLTrans::getString("Toolbar_Bottom_Tooltip");	break;
+		case LLToolBarView::TOOLBAR_LEFT:	suffix = LLTrans::getString("Toolbar_Left_Tooltip");	break;
+		case LLToolBarView::TOOLBAR_RIGHT:	suffix = LLTrans::getString("Toolbar_Right_Tooltip");	break;
+
+		default:
+			break;
+		}
+	}
+
+	mToolBar->setTooltipButtonSuffix(suffix);
+}
+
+
+// eof
diff --git a/indra/newview/llfloatertoybox.h b/indra/newview/llfloatertoybox.h
new file mode 100644
index 0000000000000000000000000000000000000000..10aee0e6f54d0985d4fcc871952a348124a8fb01
--- /dev/null
+++ b/indra/newview/llfloatertoybox.h
@@ -0,0 +1,62 @@
+/** 
+ * @file llfloatertoybox.h
+ * @brief The toybox for flexibilizing the UI.
+ *
+ * $LicenseInfo:firstyear=2002&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$
+ */
+
+#ifndef LL_LLFLOATERTOYBOX_H
+#define LL_LLFLOATERTOYBOX_H
+
+#include "llfloater.h"
+
+
+class LLButton;
+class LLToolBar;
+
+
+class LLFloaterToybox : public LLFloater
+{
+public:
+	LLFloaterToybox(const LLSD& key);
+	virtual ~LLFloaterToybox();
+
+	// virtuals
+	BOOL postBuild();
+	void draw();
+	/*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
+		EDragAndDropType cargo_type,
+		void* cargo_data,
+		EAcceptance* accept,
+		std::string& tooltip_msg);
+
+protected:
+	void onBtnClearAll();
+	void onBtnRestoreDefaults();
+
+	void onToolBarButtonEnter(LLView* button);
+
+public:
+	LLToolBar *	mToolBar;
+};
+
+#endif // LL_LLFLOATERTOYBOX_H
diff --git a/indra/newview/llfloatertranslationsettings.cpp b/indra/newview/llfloatertranslationsettings.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..428a02e9f05366e8f77eeb1c6300d0576cdf4fb6
--- /dev/null
+++ b/indra/newview/llfloatertranslationsettings.cpp
@@ -0,0 +1,298 @@
+/** 
+ * @file llfloatertranslationsettings.cpp
+ * @brief Machine translation settings for chat
+ *
+ * $LicenseInfo:firstyear=2011&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 "llviewerprecompiledheaders.h"
+
+#include "llfloatertranslationsettings.h"
+
+// Viewer includes
+#include "llnearbychatbar.h"
+#include "lltranslate.h"
+#include "llviewercontrol.h" // for gSavedSettings
+
+// Linden library includes
+#include "llbutton.h"
+#include "llcheckboxctrl.h"
+#include "llcombobox.h"
+#include "llfloaterreg.h"
+#include "lllineeditor.h"
+#include "llnotificationsutil.h"
+#include "llradiogroup.h"
+
+class EnteredKeyVerifier : public LLTranslate::KeyVerificationReceiver
+{
+public:
+	EnteredKeyVerifier(LLTranslate::EService service, bool alert)
+	:	LLTranslate::KeyVerificationReceiver(service)
+	,	mAlert(alert)
+	{
+	}
+
+private:
+	/*virtual*/ void setVerificationStatus(bool ok)
+	{
+		LLFloaterTranslationSettings* floater =
+			LLFloaterReg::getTypedInstance<LLFloaterTranslationSettings>("prefs_translation");
+
+		if (!floater)
+		{
+			llwarns << "Cannot find translation settings floater" << llendl;
+			return;
+		}
+
+		switch (getService())
+		{
+		case LLTranslate::SERVICE_BING:
+			floater->setBingVerified(ok, mAlert);
+			break;
+		case LLTranslate::SERVICE_GOOGLE:
+			floater->setGoogleVerified(ok, mAlert);
+			break;
+		}
+	}
+
+	bool mAlert;
+};
+
+LLFloaterTranslationSettings::LLFloaterTranslationSettings(const LLSD& key)
+:	LLFloater(key)
+,	mMachineTranslationCB(NULL)
+,	mLanguageCombo(NULL)
+,	mTranslationServiceRadioGroup(NULL)
+,	mBingAPIKeyEditor(NULL)
+,	mGoogleAPIKeyEditor(NULL)
+,	mBingVerifyBtn(NULL)
+,	mGoogleVerifyBtn(NULL)
+,	mOKBtn(NULL)
+,	mBingKeyVerified(false)
+,	mGoogleKeyVerified(false)
+{
+}
+
+// virtual
+BOOL LLFloaterTranslationSettings::postBuild()
+{
+	mMachineTranslationCB = getChild<LLCheckBoxCtrl>("translate_chat_checkbox");
+	mLanguageCombo = getChild<LLComboBox>("translate_language_combo");
+	mTranslationServiceRadioGroup = getChild<LLRadioGroup>("translation_service_rg");
+	mBingAPIKeyEditor = getChild<LLLineEditor>("bing_api_key");
+	mGoogleAPIKeyEditor = getChild<LLLineEditor>("google_api_key");
+	mBingVerifyBtn = getChild<LLButton>("verify_bing_api_key_btn");
+	mGoogleVerifyBtn = getChild<LLButton>("verify_google_api_key_btn");
+	mOKBtn = getChild<LLButton>("ok_btn");
+
+	mMachineTranslationCB->setCommitCallback(boost::bind(&LLFloaterTranslationSettings::updateControlsEnabledState, this));
+	mTranslationServiceRadioGroup->setCommitCallback(boost::bind(&LLFloaterTranslationSettings::updateControlsEnabledState, this));
+	mOKBtn->setClickedCallback(boost::bind(&LLFloaterTranslationSettings::onBtnOK, this));
+	getChild<LLButton>("cancel_btn")->setClickedCallback(boost::bind(&LLFloater::closeFloater, this, false));
+	mBingVerifyBtn->setClickedCallback(boost::bind(&LLFloaterTranslationSettings::onBtnBingVerify, this));
+	mGoogleVerifyBtn->setClickedCallback(boost::bind(&LLFloaterTranslationSettings::onBtnGoogleVerify, this));
+
+	mBingAPIKeyEditor->setFocusReceivedCallback(boost::bind(&LLFloaterTranslationSettings::onEditorFocused, this, _1));
+	mBingAPIKeyEditor->setKeystrokeCallback(boost::bind(&LLFloaterTranslationSettings::onBingKeyEdited, this), NULL);
+	mGoogleAPIKeyEditor->setFocusReceivedCallback(boost::bind(&LLFloaterTranslationSettings::onEditorFocused, this, _1));
+	mGoogleAPIKeyEditor->setKeystrokeCallback(boost::bind(&LLFloaterTranslationSettings::onGoogleKeyEdited, this), NULL);
+
+	center();
+	return TRUE;
+}
+
+// virtual
+void LLFloaterTranslationSettings::onOpen(const LLSD& key)
+{
+	mMachineTranslationCB->setValue(gSavedSettings.getBOOL("TranslateChat"));
+	mLanguageCombo->setSelectedByValue(gSavedSettings.getString("TranslateLanguage"), TRUE);
+	mTranslationServiceRadioGroup->setSelectedByValue(gSavedSettings.getString("TranslationService"), TRUE);
+
+	std::string bing_key = gSavedSettings.getString("BingTranslateAPIKey");
+	if (!bing_key.empty())
+	{
+		mBingAPIKeyEditor->setText(bing_key);
+		mBingAPIKeyEditor->setTentative(FALSE);
+		verifyKey(LLTranslate::SERVICE_BING, bing_key, false);
+	}
+	else
+	{
+		mBingAPIKeyEditor->setTentative(TRUE);
+		mBingKeyVerified = FALSE;
+	}
+
+	std::string google_key = gSavedSettings.getString("GoogleTranslateAPIKey");
+	if (!google_key.empty())
+	{
+		mGoogleAPIKeyEditor->setText(google_key);
+		mGoogleAPIKeyEditor->setTentative(FALSE);
+		verifyKey(LLTranslate::SERVICE_GOOGLE, google_key, false);
+	}
+	else
+	{
+		mGoogleAPIKeyEditor->setTentative(TRUE);
+		mGoogleKeyVerified = FALSE;
+	}
+
+	updateControlsEnabledState();
+}
+
+void LLFloaterTranslationSettings::setBingVerified(bool ok, bool alert)
+{
+	if (alert)
+	{
+		showAlert(ok ? "bing_api_key_verified" : "bing_api_key_not_verified");
+	}
+
+	mBingKeyVerified = ok;
+	updateControlsEnabledState();
+}
+
+void LLFloaterTranslationSettings::setGoogleVerified(bool ok, bool alert)
+{
+	if (alert)
+	{
+		showAlert(ok ? "google_api_key_verified" : "google_api_key_not_verified");
+	}
+
+	mGoogleKeyVerified = ok;
+	updateControlsEnabledState();
+}
+
+std::string LLFloaterTranslationSettings::getSelectedService() const
+{
+	return mTranslationServiceRadioGroup->getSelectedValue().asString();
+}
+
+std::string LLFloaterTranslationSettings::getEnteredBingKey() const
+{
+	return mBingAPIKeyEditor->getTentative() ? LLStringUtil::null : mBingAPIKeyEditor->getText();
+}
+
+std::string LLFloaterTranslationSettings::getEnteredGoogleKey() const
+{
+	return mGoogleAPIKeyEditor->getTentative() ? LLStringUtil::null : mGoogleAPIKeyEditor->getText();
+}
+
+void LLFloaterTranslationSettings::showAlert(const std::string& msg_name) const
+{
+	LLSD args;
+	args["MESSAGE"] = getString(msg_name);
+	LLNotificationsUtil::add("GenericAlert", args);
+}
+
+void LLFloaterTranslationSettings::updateControlsEnabledState()
+{
+	// Enable/disable controls based on the checkbox value.
+	bool on = mMachineTranslationCB->getValue().asBoolean();
+	std::string service = getSelectedService();
+	bool bing_selected = service == "bing";
+	bool google_selected = service == "google";
+
+	mTranslationServiceRadioGroup->setEnabled(on);
+	mLanguageCombo->setEnabled(on);
+
+	getChild<LLTextBox>("bing_api_key_label")->setEnabled(on);
+	mBingAPIKeyEditor->setEnabled(on);
+
+	getChild<LLTextBox>("google_api_key_label")->setEnabled(on);
+	mGoogleAPIKeyEditor->setEnabled(on);
+
+	mBingAPIKeyEditor->setEnabled(on && bing_selected);
+	mGoogleAPIKeyEditor->setEnabled(on && google_selected);
+
+	mBingVerifyBtn->setEnabled(on && bing_selected &&
+		!mBingKeyVerified && !getEnteredBingKey().empty());
+	mGoogleVerifyBtn->setEnabled(on && google_selected &&
+		!mGoogleKeyVerified && !getEnteredGoogleKey().empty());
+
+	mOKBtn->setEnabled(
+		!on || (
+		(bing_selected && mBingKeyVerified) ||
+		(google_selected && mGoogleKeyVerified)
+	));
+}
+
+void LLFloaterTranslationSettings::verifyKey(int service, const std::string& key, bool alert)
+{
+	LLTranslate::KeyVerificationReceiverPtr receiver =
+		new EnteredKeyVerifier((LLTranslate::EService) service, alert);
+	LLTranslate::verifyKey(receiver, key);
+}
+
+void LLFloaterTranslationSettings::onEditorFocused(LLFocusableElement* control)
+{
+	LLLineEditor* editor = dynamic_cast<LLLineEditor*>(control);
+	if (editor && editor->hasTabStop()) // if enabled. getEnabled() doesn't work
+	{
+		if (editor->getTentative())
+		{
+			editor->setText(LLStringUtil::null);
+			editor->setTentative(FALSE);
+		}
+	}
+}
+
+void LLFloaterTranslationSettings::onBingKeyEdited()
+{
+	if (mBingAPIKeyEditor->isDirty())
+	{
+		setBingVerified(false, false);
+	}
+}
+
+void LLFloaterTranslationSettings::onGoogleKeyEdited()
+{
+	if (mGoogleAPIKeyEditor->isDirty())
+	{
+		setGoogleVerified(false, false);
+	}
+}
+
+void LLFloaterTranslationSettings::onBtnBingVerify()
+{
+	std::string key = getEnteredBingKey();
+	if (!key.empty())
+	{
+		verifyKey(LLTranslate::SERVICE_BING, key);
+	}
+}
+
+void LLFloaterTranslationSettings::onBtnGoogleVerify()
+{
+	std::string key = getEnteredGoogleKey();
+	if (!key.empty())
+	{
+		verifyKey(LLTranslate::SERVICE_GOOGLE, key);
+	}
+}
+
+void LLFloaterTranslationSettings::onBtnOK()
+{
+	gSavedSettings.setBOOL("TranslateChat", mMachineTranslationCB->getValue().asBoolean());
+	gSavedSettings.setString("TranslateLanguage", mLanguageCombo->getSelectedValue().asString());
+	gSavedSettings.setString("TranslationService", getSelectedService());
+	gSavedSettings.setString("BingTranslateAPIKey", getEnteredBingKey());
+	gSavedSettings.setString("GoogleTranslateAPIKey", getEnteredGoogleKey());
+	LLNearbyChatBar::getInstance()->enableTranslationCheckbox(LLTranslate::isTranslationConfigured());
+	closeFloater(false);
+}
diff --git a/indra/newview/llfloatertranslationsettings.h b/indra/newview/llfloatertranslationsettings.h
new file mode 100644
index 0000000000000000000000000000000000000000..9b47ad72ed20bc16b7300c4c999bd982768f63fc
--- /dev/null
+++ b/indra/newview/llfloatertranslationsettings.h
@@ -0,0 +1,76 @@
+/** 
+ * @file llfloatertranslationsettings.h
+ * @brief Machine translation settings for chat
+ *
+ * $LicenseInfo:firstyear=2011&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$
+ */
+
+#ifndef LL_LLFLOATERTRANSLATIONSETTINGS_H
+#define LL_LLFLOATERTRANSLATIONSETTINGS_H
+
+#include "llfloater.h"
+
+class LLButton;
+class LLCheckBoxCtrl;
+class LLComboBox;
+class LLLineEditor;
+class LLRadioGroup;
+
+class LLFloaterTranslationSettings : public LLFloater
+{
+public:
+	LLFloaterTranslationSettings(const LLSD& key);
+	/*virtual*/ BOOL postBuild();
+	/*virtual*/ void onOpen(const LLSD& key);
+
+	void setBingVerified(bool ok, bool alert);
+	void setGoogleVerified(bool ok, bool alert);
+
+private:
+	std::string getSelectedService() const;
+	std::string getEnteredBingKey() const;
+	std::string getEnteredGoogleKey() const;
+	void showAlert(const std::string& msg_name) const;
+	void updateControlsEnabledState();
+	void verifyKey(int service, const std::string& key, bool alert = true);
+
+	void onEditorFocused(LLFocusableElement* control);
+	void onBingKeyEdited();
+	void onGoogleKeyEdited();
+	void onBtnBingVerify();
+	void onBtnGoogleVerify();
+	void onBtnOK();
+
+	LLCheckBoxCtrl* mMachineTranslationCB;
+	LLComboBox* mLanguageCombo;
+	LLLineEditor* mBingAPIKeyEditor;
+	LLLineEditor* mGoogleAPIKeyEditor;
+	LLRadioGroup* mTranslationServiceRadioGroup;
+	LLButton* mBingVerifyBtn;
+	LLButton* mGoogleVerifyBtn;
+	LLButton* mOKBtn;
+
+	bool mBingKeyVerified;
+	bool mGoogleKeyVerified;
+};
+
+#endif // LL_LLFLOATERTRANSLATIONSETTINGS_H
diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp
index 4c9c4cb154af0c9b515c6d9daac139888cd7750f..d741b5b1335c3a6f14926dae90a18829f16f478d 100644
--- a/indra/newview/llfloateruipreview.cpp
+++ b/indra/newview/llfloateruipreview.cpp
@@ -915,14 +915,16 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save)
 		{
 			panel->buildFromFile(path);										// build it
 			LLRect new_size = panel->getRect();								// get its rectangle
-			panel->setOrigin(0,0);											// reset its origin point so it's not offset by -left or other XUI attributes
+			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)
 			panel->updateBoundingRect();									// update bounding rect
 			LLRect bounding_rect = panel->getBoundingRect();				// get the bounding rect
 			LLRect new_rect = panel->getRect();								// get the panel's rect
 			new_rect.unionWith(bounding_rect);								// union them to make sure we get the biggest one possible
-			(*floaterp)->reshape(new_rect.getWidth(), new_rect.getHeight() + floater_header_size);	// reshape floater to match the union rect's dimensions
+			LLRect floater_rect = new_rect;
+			floater_rect.stretch(4, 4);
+			(*floaterp)->reshape(floater_rect.getWidth(), floater_rect.getHeight() + floater_header_size);	// reshape floater to match the union rect's dimensions
 			panel->reshape(new_rect.getWidth(), new_rect.getHeight());		// reshape panel to match the union rect's dimensions as well (both are needed)
 			(*floaterp)->addChild(panel);					// add panel as child
 			(*floaterp)->openFloater();						// open floater (needed?)
diff --git a/indra/newview/llfloaterwebcontent.cpp b/indra/newview/llfloaterwebcontent.cpp
index 2c9a736aff22f5e6120111aa0e40f78c1bb5fc04..3b5c3663fbc772bca84ba27a47d1ad1a70ac2a31 100644
--- a/indra/newview/llfloaterwebcontent.cpp
+++ b/indra/newview/llfloaterwebcontent.cpp
@@ -48,13 +48,24 @@ LLFloaterWebContent::_Params::_Params()
 	show_chrome("show_chrome", true),
 	allow_address_entry("allow_address_entry", true),
 	preferred_media_size("preferred_media_size"),
-	trusted_content("trusted_content", false)
+	trusted_content("trusted_content", false),
+	show_page_title("show_page_title", true)
 {}
 
 LLFloaterWebContent::LLFloaterWebContent( const Params& params )
 :	LLFloater( params ),
 	LLInstanceTracker<LLFloaterWebContent, std::string>(params.id()),
-	mUUID(params.id())
+	mWebBrowser(NULL),
+	mAddressCombo(NULL),
+	mSecureLockIcon(NULL),
+	mStatusBarText(NULL),
+	mStatusBarProgress(NULL),
+	mBtnBack(NULL),
+	mBtnForward(NULL),
+	mBtnReload(NULL),
+	mBtnStop(NULL),
+	mUUID(params.id()),
+	mShowPageTitle(params.show_page_title)
 {
 	mCommitCallbackRegistrar.add( "WebContent.Back", boost::bind( &LLFloaterWebContent::onClickBack, this ));
 	mCommitCallbackRegistrar.add( "WebContent.Forward", boost::bind( &LLFloaterWebContent::onClickForward, this ));
@@ -72,11 +83,16 @@ BOOL LLFloaterWebContent::postBuild()
 	mStatusBarText     = getChild< LLTextBox >( "statusbartext" );
 	mStatusBarProgress = getChild<LLProgressBar>("statusbarprogress" );
 
+	mBtnBack           = getChildView( "back" );
+	mBtnForward        = getChildView( "forward" );
+	mBtnReload         = getChildView( "reload" );
+	mBtnStop           = getChildView( "stop" );
+
 	// observe browser events
 	mWebBrowser->addObserver( this );
 
 	// these buttons are always enabled
-	getChildView("reload")->setEnabled( true );
+	mBtnReload->setEnabled( true );
 	getChildView("popexternal")->setEnabled( true );
 
 	// cache image for secure browsing
@@ -88,20 +104,6 @@ BOOL LLFloaterWebContent::postBuild()
 	return TRUE;
 }
 
-bool LLFloaterWebContent::matchesKey(const LLSD& key)
-{
-	LLUUID id = key["id"];
-	if (id.notNull())
-	{
-		return id == mKey["id"].asUUID();
-	}
-	else
-	{
-		return key["target"].asString() == mKey["target"].asString();
-	}
-}
-
-
 void LLFloaterWebContent::initializeURLHistory()
 {
 	// start with an empty list
@@ -123,56 +125,31 @@ void LLFloaterWebContent::initializeURLHistory()
 	}
 }
 
-//static
-LLFloater* LLFloaterWebContent::create( Params p)
+bool LLFloaterWebContent::matchesKey(const LLSD& key)
 {
-	lldebugs << "url = " << p.url() << ", target = " << p.target() << ", uuid = " << p.id() << llendl;
-
-	if (!p.id.isProvided())
+	Params p(mKey);
+	Params other_p(key);
+	if (!other_p.target().empty() && other_p.target() != "_blank")
 	{
-		p.id = LLUUID::generateNewID().asString();
+		return other_p.target() == p.target();
 	}
-
-	if(p.target().empty() || p.target() == "_blank")
-	{
-		p.target = p.id();
-	}
-
-	S32 browser_window_limit = gSavedSettings.getS32("WebContentWindowLimit");
-
-	LLSD sd;
-	sd["target"] = p.target;
-	if(LLFloaterReg::findInstance(p.window_class, sd) != NULL)
-	{
-		// There's already a web browser for this tag, so we won't be opening a new window.
-	}
-	else if(browser_window_limit != 0)
+	else
 	{
-		// showInstance will open a new window.  Figure out how many web browsers are already open,
-		// and close the least recently opened one if this will put us over the limit.
-
-		LLFloaterReg::const_instance_list_t &instances = LLFloaterReg::getFloaterList(p.window_class);
-		lldebugs << "total instance count is " << instances.size() << llendl;
-
-		for(LLFloaterReg::const_instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); iter++)
-		{
-			lldebugs << "    " << (*iter)->getKey()["target"] << llendl;
-		}
-
-		if(instances.size() >= (size_t)browser_window_limit)
-		{
-			// Destroy the least recently opened instance
-			(*instances.begin())->closeFloater();
-		}
+		return other_p.id() == p.id();
 	}
+}
 
-	return LLFloaterReg::showInstance(p.window_class, p);
+//static
+LLFloater* LLFloaterWebContent::create( Params p)
+{
+	preCreate(p);
+	return new LLFloaterWebContent(p);
 }
 
 //static
 void LLFloaterWebContent::closeRequest(const std::string &uuid)
 {
-	LLFloaterWebContent* floaterp = getInstance(uuid);
+	LLFloaterWebContent* floaterp = instance_tracker_t::getInstance(uuid);
 	if (floaterp)
 	{
 		floaterp->closeFloater(false);
@@ -182,7 +159,7 @@ void LLFloaterWebContent::closeRequest(const std::string &uuid)
 //static
 void LLFloaterWebContent::geometryChanged(const std::string &uuid, S32 x, S32 y, S32 width, S32 height)
 {
-	LLFloaterWebContent* floaterp = getInstance(uuid);
+	LLFloaterWebContent* floaterp = instance_tracker_t::getInstance(uuid);
 	if (floaterp)
 	{
 		floaterp->geometryChanged(x, y, width, height);
@@ -216,6 +193,43 @@ void LLFloaterWebContent::geometryChanged(S32 x, S32 y, S32 width, S32 height)
 	setShape(new_rect);	
 }
 
+// static
+void LLFloaterWebContent::preCreate(LLFloaterWebContent::Params& p)
+{
+	lldebugs << "url = " << p.url() << ", target = " << p.target() << ", uuid = " << p.id() << llendl;
+
+	if (!p.id.isProvided())
+	{
+		p.id = LLUUID::generateNewID().asString();
+	}
+
+	if(p.target().empty() || p.target() == "_blank")
+	{
+		p.target = p.id();
+	}
+
+	S32 browser_window_limit = gSavedSettings.getS32("WebContentWindowLimit");
+	if(browser_window_limit != 0)
+	{
+		// showInstance will open a new window.  Figure out how many web browsers are already open,
+		// and close the least recently opened one if this will put us over the limit.
+
+		LLFloaterReg::const_instance_list_t &instances = LLFloaterReg::getFloaterList(p.window_class);
+		lldebugs << "total instance count is " << instances.size() << llendl;
+
+		for(LLFloaterReg::const_instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); iter++)
+		{
+			lldebugs << "    " << (*iter)->getKey()["target"] << llendl;
+		}
+
+		if(instances.size() >= (size_t)browser_window_limit)
+		{
+			// Destroy the least recently opened instance
+			(*instances.begin())->closeFloater();
+		}
+	}
+}
+
 void LLFloaterWebContent::open_media(const Params& p)
 {
 	// Specifying a mime type of text/html here causes the plugin system to skip the MIME type probe and just open a browser plugin.
@@ -281,8 +295,8 @@ void LLFloaterWebContent::onClose(bool app_quitting)
 void LLFloaterWebContent::draw()
 {
 	// this is asynchronous so we need to keep checking
-	getChildView( "back" )->setEnabled( mWebBrowser->canNavigateBack() );
-	getChildView( "forward" )->setEnabled( mWebBrowser->canNavigateForward() );
+	mBtnBack->setEnabled( mWebBrowser->canNavigateBack() );
+	mBtnForward->setEnabled( mWebBrowser->canNavigateForward() );
 
 	LLFloater::draw();
 }
@@ -302,12 +316,12 @@ void LLFloaterWebContent::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent
 	else if(event == MEDIA_EVENT_NAVIGATE_BEGIN)
 	{
 		// flags are sent with this event
-		getChildView("back")->setEnabled( self->getHistoryBackAvailable() );
-		getChildView("forward")->setEnabled( self->getHistoryForwardAvailable() );
+		mBtnBack->setEnabled( self->getHistoryBackAvailable() );
+		mBtnForward->setEnabled( self->getHistoryForwardAvailable() );
 
 		// toggle visibility of these buttons based on browser state
-		getChildView("reload")->setVisible( false );
-		getChildView("stop")->setVisible( true );
+		mBtnReload->setVisible( false );
+		mBtnStop->setVisible( true );
 
 		// turn "on" progress bar now we're about to start loading
 		mStatusBarProgress->setVisible( true );
@@ -315,12 +329,12 @@ void LLFloaterWebContent::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent
 	else if(event == MEDIA_EVENT_NAVIGATE_COMPLETE)
 	{
 		// flags are sent with this event
-		getChildView("back")->setEnabled( self->getHistoryBackAvailable() );
-		getChildView("forward")->setEnabled( self->getHistoryForwardAvailable() );
+		mBtnBack->setEnabled( self->getHistoryBackAvailable() );
+		mBtnForward->setEnabled( self->getHistoryForwardAvailable() );
 
 		// toggle visibility of these buttons based on browser state
-		getChildView("reload")->setVisible( true );
-		getChildView("stop")->setVisible( false );
+		mBtnReload->setVisible( true );
+		mBtnStop->setVisible( false );
 
 		// turn "off" progress bar now we're loaded
 		mStatusBarProgress->setVisible( false );
@@ -366,10 +380,13 @@ void LLFloaterWebContent::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent
 	{
 		std::string page_title = self->getMediaName();
 		// simulate browser behavior - title is empty, use the current URL
-		if ( page_title.length() > 0 )
-			setTitle( page_title );
-		else
-			setTitle( mCurrentURL );
+		if (mShowPageTitle)
+		{
+			if ( page_title.length() > 0 )
+				setTitle( page_title );
+			else
+				setTitle( mCurrentURL );
+		}
 	}
 	else if(event == MEDIA_EVENT_LINK_HOVERED )
 	{
@@ -423,8 +440,8 @@ void LLFloaterWebContent::onClickStop()
 	// still should happen when we catch the navigate complete event
 	// but sometimes (don't know why) that event isn't sent from Qt
 	// and we ghetto a point where the stop button stays active.
-	getChildView("reload")->setVisible( true );
-	getChildView("stop")->setVisible( false );
+	mBtnReload->setVisible( true );
+	mBtnStop->setVisible( false );
 }
 
 void LLFloaterWebContent::onEnterAddress()
diff --git a/indra/newview/llfloaterwebcontent.h b/indra/newview/llfloaterwebcontent.h
index 36e214b7a98f58244bf6c742aefc326b9d9553c2..cfc87e90155fd91c248e366ddc03d935715c0bda 100644
--- a/indra/newview/llfloaterwebcontent.h
+++ b/indra/newview/llfloaterwebcontent.h
@@ -43,6 +43,7 @@ class LLFloaterWebContent :
 	public LLInstanceTracker<LLFloaterWebContent, std::string>
 {
 public:
+	typedef LLInstanceTracker<LLFloaterWebContent, std::string> instance_tracker_t;
     LOG_CLASS(LLFloaterWebContent);
 
 	struct _Params : public LLInitParam::Block<_Params>
@@ -53,7 +54,8 @@ class LLFloaterWebContent :
 								id;
 		Optional<bool>			show_chrome,
 								allow_address_entry,
-								trusted_content;
+								trusted_content,
+								show_page_title;
 		Optional<LLRect>		preferred_media_size;
 
 		_Params();
@@ -88,16 +90,24 @@ class LLFloaterWebContent :
 	void onEnterAddress();
 	void onPopExternal();
 
+	static void preCreate(Params& p);
 	void open_media(const Params& );
 	void set_current_url(const std::string& url);
 
-	LLMediaCtrl* mWebBrowser;
-	LLComboBox* mAddressCombo;
-	LLIconCtrl *mSecureLockIcon;
-	LLTextBox* mStatusBarText;
-	LLProgressBar* mStatusBarProgress;
-	std::string mCurrentURL;
-	std::string mUUID;
+	LLMediaCtrl*	mWebBrowser;
+	LLComboBox*		mAddressCombo;
+	LLIconCtrl*		mSecureLockIcon;
+	LLTextBox*		mStatusBarText;
+	LLProgressBar*	mStatusBarProgress;
+
+	LLView*			mBtnBack;
+	LLView*			mBtnForward;
+	LLView*			mBtnReload;
+	LLView*			mBtnStop;
+
+	std::string		mCurrentURL;
+	std::string		mUUID;
+	bool			mShowPageTitle;
 };
 
 #endif  // LL_LLFLOATERWEBCONTENT_H
diff --git a/indra/newview/llfloaterwebprofile.cpp b/indra/newview/llfloaterwebprofile.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c41f6f148f317b50cb55542b8aadcbd47dce976a
--- /dev/null
+++ b/indra/newview/llfloaterwebprofile.cpp
@@ -0,0 +1,79 @@
+/** 
+ * @file llfloaterwebprofile.cpp
+ * @brief Avatar profile floater.
+ *
+ * $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 "llfloaterwebprofile.h"
+
+#include "llviewercontrol.h"
+
+LLFloaterWebProfile::LLFloaterWebProfile(const Params& key) :
+	LLFloaterWebContent(key)
+{
+}
+
+void LLFloaterWebProfile::onOpen(const LLSD& key)
+{
+	Params p(key);
+	p.show_chrome(false).
+		window_class("profile");
+	LLFloaterWebContent::onOpen(p);
+	applyPreferredRect();
+}
+
+// virtual
+void LLFloaterWebProfile::handleReshape(const LLRect& new_rect, bool by_user)
+{
+	lldebugs << "handleReshape: " << new_rect << llendl;
+
+	if (by_user && !isMinimized())
+	{
+		lldebugs << "Storing new rect" << llendl;
+		gSavedSettings.setRect("WebProfileFloaterRect", new_rect);
+	}
+
+	LLFloaterWebContent::handleReshape(new_rect, by_user);
+}
+
+LLFloater* LLFloaterWebProfile::create(const LLSD& key)
+{
+	LLFloaterWebContent::Params p(key);
+	preCreate(p);
+	return new LLFloaterWebProfile(p);
+}
+
+void LLFloaterWebProfile::applyPreferredRect()
+{
+	const LLRect preferred_rect = gSavedSettings.getRect("WebProfileFloaterRect");
+	lldebugs << "Applying preferred rect: " << preferred_rect << llendl;
+
+	// Don't override position that may have been set by floater stacking code.
+	LLRect new_rect = getRect();
+	new_rect.setLeftTopAndSize(
+		new_rect.mLeft, new_rect.mTop,
+		preferred_rect.getWidth(), preferred_rect.getHeight());
+	setShape(new_rect);
+}
diff --git a/indra/newview/llfloaterwebprofile.h b/indra/newview/llfloaterwebprofile.h
new file mode 100644
index 0000000000000000000000000000000000000000..4c355e401b6d425f8b97fb4929a3e98fab837187
--- /dev/null
+++ b/indra/newview/llfloaterwebprofile.h
@@ -0,0 +1,59 @@
+/** 
+ * @file llfloaterwebprofile.h
+ * @brief Avatar profile floater.
+ *
+ * $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_LLFLOATERWEBPROFILE_H
+#define LL_LLFLOATERWEBPROFILE_H
+
+#include "llfloaterwebcontent.h"
+#include "llviewermediaobserver.h"
+
+#include <string>
+
+class LLMediaCtrl;
+
+/**
+ * Displays avatar profile web page.
+ */
+class LLFloaterWebProfile
+:	public LLFloaterWebContent
+{
+	LOG_CLASS(LLFloaterWebProfile);
+public:
+	typedef LLFloaterWebContent::Params Params;
+
+	LLFloaterWebProfile(const Params& key);
+
+	/*virtual*/ void onOpen(const LLSD& key);
+	/*virtual*/ void handleReshape(const LLRect& new_rect, bool by_user = false);
+
+	static LLFloater* create(const LLSD& key);
+
+private:
+	void applyPreferredRect();
+};
+
+#endif  // LL_LLFLOATERWEBPROFILE_H
+
diff --git a/indra/newview/llfloaterwindowsize.cpp b/indra/newview/llfloaterwindowsize.cpp
index a70f2af11a180c8bdeaf10ceaea6e356a0e6c272..ec161018b843a1933aeb8f61bda2729a60253b11 100644
--- a/indra/newview/llfloaterwindowsize.cpp
+++ b/indra/newview/llfloaterwindowsize.cpp
@@ -58,33 +58,12 @@ bool extractWindowSizeFromString(const std::string& instr, U32 *width, U32 *heig
 }
 
 
-///----------------------------------------------------------------------------
-/// Class LLFloaterWindowSize
-///----------------------------------------------------------------------------
-class LLFloaterWindowSize
-:	public LLFloater
-{
-	friend class LLFloaterReg;
-private:
-	LLFloaterWindowSize(const LLSD& key);
-	virtual ~LLFloaterWindowSize();
-
-public:
-	/*virtual*/ BOOL postBuild();
-	void initWindowSizeControls();
-	void onClickSet();
-	void onClickCancel();
-};
-
-
 LLFloaterWindowSize::LLFloaterWindowSize(const LLSD& key) 
 :	LLFloater(key)
-{
-}
+{}
 
 LLFloaterWindowSize::~LLFloaterWindowSize()
-{
-}
+{}
 
 BOOL LLFloaterWindowSize::postBuild()
 {
@@ -145,13 +124,3 @@ void LLFloaterWindowSize::onClickCancel()
 {
 	closeFloater();
 }
-
-///----------------------------------------------------------------------------
-/// LLFloaterWindowSizeUtil
-///----------------------------------------------------------------------------
-void LLFloaterWindowSizeUtil::registerFloater()
-{
-	LLFloaterReg::add("window_size", "floater_window_size.xml",
-		&LLFloaterReg::build<LLFloaterWindowSize>);
-
-}
diff --git a/indra/newview/llfloaterwindowsize.h b/indra/newview/llfloaterwindowsize.h
index 40f1a25bb3acfc38bd6ab8bde3ba23ac166820fb..a71e5e273c9252f77d03cc1b912f7196c2b4d3f0 100644
--- a/indra/newview/llfloaterwindowsize.h
+++ b/indra/newview/llfloaterwindowsize.h
@@ -26,10 +26,24 @@
 #ifndef LLFLOATERWINDOWSIZE_H
 #define LLFLOATERWINDOWSIZE_H
 
-// Allow user to set the window size for filming tutorials, machinima, etc
-namespace LLFloaterWindowSizeUtil
+#include "llfloater.h"
+
+///----------------------------------------------------------------------------
+/// Class LLFloaterWindowSize
+///----------------------------------------------------------------------------
+class LLFloaterWindowSize
+	:	public LLFloater
 {
-	void registerFloater();
-}
+	friend class LLFloaterReg;
+private:
+	LLFloaterWindowSize(const LLSD& key);
+	virtual ~LLFloaterWindowSize();
+
+public:
+	/*virtual*/ BOOL postBuild();
+	void initWindowSizeControls();
+	void onClickSet();
+	void onClickCancel();
+};
 
 #endif
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 8b72d838300b80db62295f3e27572c2fdd123285..e0d7d67f7d76e3e0489e4e8d9a54b93cfe0a1191 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -172,6 +172,7 @@ LLFolderView::Params::Params()
 	title("title"),
 	use_label_suffix("use_label_suffix"),
 	allow_multiselect("allow_multiselect", true),
+	show_empty_message("show_empty_message", true),
 	show_load_status("show_load_status", true),
 	use_ellipses("use_ellipses", false)
 {
@@ -185,6 +186,7 @@ LLFolderView::LLFolderView(const Params& p)
 	mScrollContainer( NULL ),
 	mPopupMenuHandle(),
 	mAllowMultiSelect(p.allow_multiselect),
+	mShowEmptyMessage(p.show_empty_message),
 	mShowFolderHierarchy(FALSE),
 	mSourceID(p.task_id),
 	mRenameItem( NULL ),
@@ -299,7 +301,7 @@ LLFolderView::~LLFolderView( void )
 	mAutoOpenItems.removeAllNodes();
 	gIdleCallbacks.deleteFunction(idle, this);
 
-	LLView::deleteViewByHandle(mPopupMenuHandle);
+	if (mPopupMenuHandle.get()) mPopupMenuHandle.get()->die();
 
 	mAutoOpenItems.removeAllNodes();
 	clearSelection();
@@ -349,10 +351,6 @@ BOOL LLFolderView::addFolder( LLFolderViewFolder* folder)
 	{
 		mFolders.insert(mFolders.begin(), folder);
 	}
-	if (folder->numSelected())
-	{
-		recursiveIncrementNumDescendantsSelected(folder->numSelected());
-	}
 	folder->setShowLoadStatus(mShowLoadStatus);
 	folder->setOrigin(0, 0);
 	folder->reshape(getRect().getWidth(), 0);
@@ -694,26 +692,6 @@ BOOL LLFolderView::changeSelection(LLFolderViewItem* selection, BOOL selected)
 	return rv;
 }
 
-void LLFolderView::extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items)
-{
-	// now store resulting selection
-	if (mAllowMultiSelect)
-	{
-		LLFolderViewItem *cur_selection = getCurSelectedItem();
-		LLFolderViewFolder::extendSelection(selection, cur_selection, items);
-		for (S32 i = 0; i < items.count(); i++)
-		{
-			addToSelectionList(items[i]);
-		}
-	}
-	else
-	{
-		setSelection(selection, FALSE, FALSE);
-	}
-
-	mSignalSelectCallback = SIGNAL_KEYBOARD_FOCUS;
-}
-
 static LLFastTimer::DeclareTimer FTM_SANITIZE_SELECTION("Sanitize Selection");
 void LLFolderView::sanitizeSelection()
 {
@@ -932,7 +910,7 @@ void LLFolderView::draw()
 		mStatusText.clear();
 		mStatusTextBox->setVisible( FALSE );
 	}
-	else
+	else if (mShowEmptyMessage)
 	{
 		if (LLInventoryModelBackgroundFetch::instance().backgroundFetchActive() || mCompletedFilterGeneration < mFilter->getMinRequiredGeneration())
 		{
@@ -966,7 +944,6 @@ void LLFolderView::draw()
 			// See EXT-7564, EXT-7047.
 			arrangeFromRoot();
 		}
-		
 	}
 
 	// skip over LLFolderViewFolder::draw since we don't want the folder icon, label, 
@@ -1058,7 +1035,7 @@ void LLFolderView::onItemsRemovalConfirmation(const LLSD& notification, const LL
 		for (item_it = mSelectedItems.begin(); item_it != mSelectedItems.end(); ++item_it)
 		{
 			item = *item_it;
-			if(item->isRemovable())
+			if (item && item->isRemovable())
 			{
 				items.push_back(item);
 			}
@@ -1222,7 +1199,9 @@ void LLFolderView::changeType(LLInventoryModel *model, LLFolderType::EType new_f
 
 void LLFolderView::autoOpenItem( LLFolderViewFolder* item )
 {
-	if (mAutoOpenItems.check() == item || mAutoOpenItems.getDepth() >= (U32)AUTO_OPEN_STACK_DEPTH)
+	if ((mAutoOpenItems.check() == item) || 
+		(mAutoOpenItems.getDepth() >= (U32)AUTO_OPEN_STACK_DEPTH) ||
+		item->isOpen())
 	{
 		return;
 	}
@@ -1723,7 +1702,7 @@ BOOL LLFolderView::handleUnicodeCharHere(llwchar uni_char)
 	}
 
 	BOOL handled = FALSE;
-	if (gFocusMgr.childHasKeyboardFocus(getRoot()))
+	if (mParentPanel->hasFocus())
 	{
 		// SL-51858: Key presses are not being passed to the Popup menu.
 		// A proper fix is non-trivial so instead just close the menu.
@@ -1945,9 +1924,9 @@ BOOL LLFolderView::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 	if (!handled)
 	{
 		if (getListener()->getUUID().notNull())
-	{
-		handled = LLFolderViewFolder::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
-	}
+		{
+			handled = LLFolderViewFolder::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
+		}
 		else
 		{
 			if (!mFolders.empty())
@@ -1969,7 +1948,7 @@ BOOL LLFolderView::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 void LLFolderView::deleteAllChildren()
 {
 	closeRenamer();
-	LLView::deleteViewByHandle(mPopupMenuHandle);
+	if (mPopupMenuHandle.get()) mPopupMenuHandle.get()->die();
 	mPopupMenuHandle = LLHandle<LLView>();
 	mScrollContainer = NULL;
 	mRenameItem = NULL;
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 8af01e9102b8667e386527a1e59ef207b9a59e7d..1d018b5e6a75f4d0516a61c56625d89cbc483702 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -75,6 +75,7 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler
 		Optional<std::string>   title;
 		Optional<bool>			use_label_suffix,
 								allow_multiselect,
+								show_empty_message,
 								show_load_status,
 								use_ellipses;
 
@@ -106,6 +107,8 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler
 	U32 getSortOrder() const;
 	BOOL isFilterModified();
 
+	bool getAllowMultiSelect() { return mAllowMultiSelect; }
+
 	// Close all folders in the view
 	void closeAllFolders();
 	void openTopLevelFolders();
@@ -141,8 +144,6 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler
 	// children, and keeps track of selected objects.
 	virtual BOOL changeSelection(LLFolderViewItem* selection, BOOL selected);
 
-	virtual void extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items);
-
 	virtual std::set<LLUUID> getSelectionList() const;
 
 	// make sure if ancestor is selected, descendents are not
@@ -156,7 +157,6 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler
 	void setDraggingOverItem(LLFolderViewItem* item) { mDraggingOverItem = item; }
 	LLFolderViewItem* getDraggingOverItem() { return mDraggingOverItem; }
 
-
 	// deletion functionality
  	void removeSelectedItems();
 
@@ -282,6 +282,7 @@ class LLFolderView : public LLFolderViewFolder, public LLEditMenuHandler
 	selected_items_t				mSelectedItems;
 	BOOL							mKeyboardSelection;
 	BOOL							mAllowMultiSelect;
+	BOOL							mShowEmptyMessage;
 	BOOL							mShowFolderHierarchy;
 	LLUUID							mSourceID;
 
diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index 622dcfe8ddbeab9cd6bba470b6cf9758844dddf0..8d6114c8873f2ced3f990bdbb8b43d49bd3c869c 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -386,13 +386,6 @@ void LLFolderViewItem::changeSelectionFromRoot(LLFolderViewItem* selection, BOOL
 	getRoot()->changeSelection(selection, selected);
 }
 
-void LLFolderViewItem::extendSelectionFromRoot(LLFolderViewItem* selection)
-{
-	LLDynamicArray<LLFolderViewItem*> selected_items;
-
-	getRoot()->extendSelection(selection, NULL, selected_items);
-}
-
 std::set<LLUUID> LLFolderViewItem::getSelectionList() const
 {
 	std::set<LLUUID> selection;
@@ -496,10 +489,6 @@ BOOL LLFolderViewItem::setSelection(LLFolderViewItem* selection, BOOL openitem,
 	if (selection == this && !mIsSelected)
 	{
 		selectItem();
-		if (mListener)
-		{
-			mListener->selectItem();
-		}
 	}
 	else if (mIsSelected)	// Deselect everything else.
 	{
@@ -510,7 +499,7 @@ BOOL LLFolderViewItem::setSelection(LLFolderViewItem* selection, BOOL openitem,
 
 BOOL LLFolderViewItem::changeSelection(LLFolderViewItem* selection, BOOL selected)
 {
-	if (selection == this && mIsSelected != selected)
+	if (selection == this)
 	{
 		if (mIsSelected)
 		{
@@ -520,10 +509,6 @@ BOOL LLFolderViewItem::changeSelection(LLFolderViewItem* selection, BOOL selecte
 		{
 			selectItem();
 		}
-		if (mListener)
-		{
-			mListener->selectItem();
-		}
 		return TRUE;
 	}
 	return FALSE;
@@ -531,29 +516,18 @@ BOOL LLFolderViewItem::changeSelection(LLFolderViewItem* selection, BOOL selecte
 
 void LLFolderViewItem::deselectItem(void)
 {
-	llassert(mIsSelected);
-
 	mIsSelected = FALSE;
-
-	// Update ancestors' count of selected descendents.
-	LLFolderViewFolder* parent_folder = getParentFolder();
-	if (parent_folder)
-	{
-		parent_folder->recursiveIncrementNumDescendantsSelected(-1);
-	}
 }
 
 void LLFolderViewItem::selectItem(void)
 {
-	llassert(!mIsSelected);
-
-	mIsSelected = TRUE;
-
-	// Update ancestors' count of selected descendents.
-	LLFolderViewFolder* parent_folder = getParentFolder();
-	if (parent_folder)
+	if (mIsSelected == FALSE)
 	{
-		parent_folder->recursiveIncrementNumDescendantsSelected(1);
+		if (mListener)
+		{
+			mListener->selectItem();
+		}
+		mIsSelected = TRUE;
 	}
 }
 
@@ -658,7 +632,7 @@ LLViewerInventoryItem * LLFolderViewItem::getInventoryItem(void)
 	return gInventory.getItem(getListener()->getUUID());
 }
 
-std::string LLFolderViewItem::getName( void ) const
+const std::string& LLFolderViewItem::getName( void ) const
 {
 	if(mListener)
 	{
@@ -697,7 +671,7 @@ BOOL LLFolderViewItem::handleMouseDown( S32 x, S32 y, MASK mask )
 		}
 		else if (mask & MASK_SHIFT)
 		{
-			extendSelectionFromRoot(this);
+			getParentFolder()->extendSelectionTo(this);
 		}
 		else
 		{
@@ -812,7 +786,7 @@ BOOL LLFolderViewItem::handleMouseUp( S32 x, S32 y, MASK mask )
 		}
 		else if (mask & MASK_SHIFT)
 		{
-			extendSelectionFromRoot(this);
+			getParentFolder()->extendSelectionTo(this);
 		}
 		else
 		{
@@ -1125,7 +1099,6 @@ void LLFolderViewItem::draw()
 
 LLFolderViewFolder::LLFolderViewFolder( const LLFolderViewItem::Params& p ): 
 	LLFolderViewItem( p ),	// 0 = no create time
-	mNumDescendantsSelected(0),
 	mIsOpen(FALSE),
 	mExpanderHighlighted(FALSE),
 	mCurHeight(0.f),
@@ -1173,8 +1146,8 @@ BOOL LLFolderViewFolder::addToFolder(LLFolderViewFolder* folder, LLFolderView* r
 	return folder->addFolder(this);
 }
 
-// Finds width and height of this object and it's children.  Also
-// makes sure that this view and it's children are the right size.
+// Finds width and height of this object and its children. Also
+// makes sure that this view and its children are the right size.
 S32 LLFolderViewFolder::arrange( S32* width, S32* height, S32 filter_generation)
 {
 	// sort before laying out contents
@@ -1572,21 +1545,6 @@ BOOL LLFolderViewFolder::hasFilteredDescendants()
 	return mMostFilteredDescendantGeneration >= getRoot()->getFilter()->getCurrentGeneration();
 }
 
-void LLFolderViewFolder::recursiveIncrementNumDescendantsSelected(S32 increment)
-{
-	LLFolderViewFolder* parent_folder = this;
-	do
-	{
-		parent_folder->mNumDescendantsSelected += increment;
-
-		// Make sure we don't have negative values.
-		llassert(parent_folder->mNumDescendantsSelected >= 0);
-
-		parent_folder = parent_folder->getParentFolder();
-	}
-	while(parent_folder);
-}
-
 // Passes selection information on to children and record selection
 // information if necessary.
 BOOL LLFolderViewFolder::setSelection(LLFolderViewItem* selection, BOOL openitem,
@@ -1599,10 +1557,6 @@ BOOL LLFolderViewFolder::setSelection(LLFolderViewItem* selection, BOOL openitem
 		{
 			selectItem();
 		}
-		if (mListener)
-		{
-			mListener->selectItem();
-		}
 		rv = TRUE;
 	}
 	else
@@ -1663,10 +1617,6 @@ BOOL LLFolderViewFolder::changeSelection(LLFolderViewItem* selection, BOOL selec
 				deselectItem();
 			}
 		}
-		if (mListener && selected)
-		{
-			mListener->selectItem();
-		}
 	}
 
 	for (folders_t::iterator iter = mFolders.begin();
@@ -1690,119 +1640,261 @@ BOOL LLFolderViewFolder::changeSelection(LLFolderViewItem* selection, BOOL selec
 	return rv;
 }
 
-void LLFolderViewFolder::extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& selected_items)
+LLFolderViewFolder* LLFolderViewFolder::getCommonAncestor(LLFolderViewItem* item_a, LLFolderViewItem* item_b, bool& reverse)
 {
-	// pass on to child folders first
-	for (folders_t::iterator iter = mFolders.begin();
-		iter != mFolders.end();)
+	if (!item_a->getParentFolder() || !item_b->getParentFolder()) return NULL;
+
+	std::deque<LLFolderViewFolder*> item_a_ancestors;
+
+	LLFolderViewFolder* parent = item_a->getParentFolder();
+	while(parent)
 	{
-		folders_t::iterator fit = iter++;
-		(*fit)->extendSelection(selection, last_selected, selected_items);
+		item_a_ancestors.push_back(parent);
+		parent = parent->getParentFolder();
 	}
 
-	// handle selection of our immediate children...
-	BOOL reverse_select = FALSE;
-	BOOL found_last_selected = FALSE;
-	BOOL found_selection = FALSE;
-	LLDynamicArray<LLFolderViewItem*> items_to_select;
-	LLFolderViewItem* item;
+	std::deque<LLFolderViewFolder*> item_b_ancestors;
+	
+	parent = item_b->getParentFolder();
+	while(parent)
+	{
+		item_b_ancestors.push_back(parent);
+		parent = parent->getParentFolder();
+	}
 
-	//...folders first...
-	for (folders_t::iterator iter = mFolders.begin();
-		iter != mFolders.end();)
+	LLFolderViewFolder* common_ancestor = item_a->getRoot();
+
+	while(item_a_ancestors.size() > item_b_ancestors.size())
 	{
-		folders_t::iterator fit = iter++;
-		item = (*fit);
-		if(item == selection)
-		{
-			found_selection = TRUE;
-		}
-		else if (item == last_selected)
+		item_a = item_a_ancestors.front();
+		item_a_ancestors.pop_front();
+	}
+
+	while(item_b_ancestors.size() > item_a_ancestors.size())
+	{
+		item_b = item_b_ancestors.front();
+		item_b_ancestors.pop_front();
+	}
+
+	while(item_a_ancestors.size())
+	{
+		common_ancestor = item_a_ancestors.front();
+
+		if (item_a_ancestors.front() == item_b_ancestors.front())
 		{
-			found_last_selected = TRUE;
-			if (found_selection)
+			// which came first, sibling a or sibling b?
+			for (folders_t::iterator it = common_ancestor->mFolders.begin(), end_it = common_ancestor->mFolders.end();
+				it != end_it;
+				++it)
 			{
-				reverse_select = TRUE;
+				LLFolderViewItem* item = *it;
+
+				if (item == item_a)
+				{
+					reverse = false;
+					return common_ancestor;
+				}
+				if (item == item_b)
+				{
+					reverse = true;
+					return common_ancestor;
+				}
 			}
-		}
 
-		if (found_selection || found_last_selected)
-		{
-			// deselect currently selected items so they can be pushed back on queue
-			if (item->isSelected())
+			for (items_t::iterator it = common_ancestor->mItems.begin(), end_it = common_ancestor->mItems.end();
+				it != end_it;
+				++it)
 			{
-				item->changeSelection(item, FALSE);
+				LLFolderViewItem* item = *it;
+
+				if (item == item_a)
+				{
+					reverse = false;
+					return common_ancestor;
+				}
+				if (item == item_b)
+				{
+					reverse = true;
+					return common_ancestor;
+				}
 			}
-			items_to_select.put(item);
+			break;
 		}
 
-		if (found_selection && found_last_selected)
-		{
-			break;
-		}		
+		item_a = item_a_ancestors.front();
+		item_a_ancestors.pop_front();
+		item_b = item_b_ancestors.front();
+		item_b_ancestors.pop_front();
 	}
 
-	if (!(found_selection && found_last_selected))
+	return NULL;
+}
+
+void LLFolderViewFolder::gatherChildRangeExclusive(LLFolderViewItem* start, LLFolderViewItem* end, bool reverse, std::vector<LLFolderViewItem*>& items)
+{
+	bool selecting = start == NULL;
+	if (reverse)
 	{
-		//,,,then items
-		for (items_t::iterator iter = mItems.begin();
-			iter != mItems.end();)
+		for (items_t::reverse_iterator it = mItems.rbegin(), end_it = mItems.rend();
+			it != end_it;
+			++it)
 		{
-			items_t::iterator iit = iter++;
-			item = (*iit);
-			if(item == selection)
+			if (*it == end)
 			{
-				found_selection = TRUE;
+				return;
 			}
-			else if (item == last_selected)
+			if (selecting)
 			{
-				found_last_selected = TRUE;
-				if (found_selection)
-				{
-					reverse_select = TRUE;
-				}
+				items.push_back(*it);
 			}
 
-			if (found_selection || found_last_selected)
+			if (*it == start)
 			{
-				// deselect currently selected items so they can be pushed back on queue
-				if (item->isSelected())
-				{
-					item->changeSelection(item, FALSE);
-				}
-				items_to_select.put(item);
+				selecting = true;
+			}
+		}
+		for (folders_t::reverse_iterator it = mFolders.rbegin(), end_it = mFolders.rend();
+			it != end_it;
+			++it)
+		{
+			if (*it == end)
+			{
+				return;
 			}
 
-			if (found_selection && found_last_selected)
+			if (selecting)
 			{
-				break;
+				items.push_back(*it);
+			}
+
+			if (*it == start)
+			{
+				selecting = true;
 			}
 		}
 	}
-
-	if (found_last_selected && found_selection)
+	else
 	{
-		// we have a complete selection inside this folder
-		for (S32 index = reverse_select ? items_to_select.getLength() - 1 : 0; 
-			reverse_select ? index >= 0 : index < items_to_select.getLength(); reverse_select ? index-- : index++)
+		for (folders_t::iterator it = mFolders.begin(), end_it = mFolders.end();
+			it != end_it;
+			++it)
 		{
-			LLFolderViewItem* item = items_to_select[index];
-			if (item->changeSelection(item, TRUE))
+			if (*it == end)
 			{
-				selected_items.put(item);
+				return;
+			}
+
+			if (selecting)
+			{
+				items.push_back(*it);
+			}
+
+			if (*it == start)
+			{
+				selecting = true;
+			}
+		}
+		for (items_t::iterator it = mItems.begin(), end_it = mItems.end();
+			it != end_it;
+			++it)
+		{
+			if (*it == end)
+			{
+				return;
+			}
+
+			if (selecting)
+			{
+				items.push_back(*it);
+			}
+
+			if (*it == start)
+			{
+				selecting = true;
 			}
 		}
 	}
-	else if (found_selection)
+}
+
+void LLFolderViewFolder::extendSelectionTo(LLFolderViewItem* new_selection)
+{
+	if (getRoot()->getAllowMultiSelect() == FALSE) return;
+
+	LLFolderViewItem* cur_selected_item = getRoot()->getCurSelectedItem();
+	if (cur_selected_item == NULL)
+	{
+		cur_selected_item = new_selection;
+	}
+
+
+	bool reverse = false;
+	LLFolderViewFolder* common_ancestor = getCommonAncestor(cur_selected_item, new_selection, reverse);
+	if (!common_ancestor) return;
+
+	LLFolderViewItem* last_selected_item_from_cur = cur_selected_item;
+	LLFolderViewFolder* cur_folder = cur_selected_item->getParentFolder();
+
+	std::vector<LLFolderViewItem*> items_to_select_forward;
+
+	while(cur_folder != common_ancestor)
+	{
+		cur_folder->gatherChildRangeExclusive(last_selected_item_from_cur, NULL, reverse, items_to_select_forward);
+			
+		last_selected_item_from_cur = cur_folder;
+		cur_folder = cur_folder->getParentFolder();
+	}
+
+	std::vector<LLFolderViewItem*> items_to_select_reverse;
+
+	LLFolderViewItem* last_selected_item_from_new = new_selection;
+	cur_folder = new_selection->getParentFolder();
+	while(cur_folder != common_ancestor)
+	{
+		cur_folder->gatherChildRangeExclusive(last_selected_item_from_new, NULL, !reverse, items_to_select_reverse);
+
+		last_selected_item_from_new = cur_folder;
+		cur_folder = cur_folder->getParentFolder();
+	}
+
+	common_ancestor->gatherChildRangeExclusive(last_selected_item_from_cur, last_selected_item_from_new, reverse, items_to_select_forward);
+
+	for (std::vector<LLFolderViewItem*>::reverse_iterator it = items_to_select_reverse.rbegin(), end_it = items_to_select_reverse.rend();
+		it != end_it;
+		++it)
+	{
+		items_to_select_forward.push_back(*it);
+	}
+
+	LLFolderView* root = getRoot();
+
+	for (std::vector<LLFolderViewItem*>::iterator it = items_to_select_forward.begin(), end_it = items_to_select_forward.end();
+		it != end_it;
+		++it)
 	{
-		// last selection was not in this folder....go ahead and select just the new item
-		if (selection->changeSelection(selection, TRUE))
+		LLFolderViewItem* item = *it;
+		if (item->isSelected())
+		{
+			root->removeFromSelectionList(item);
+		}
+		else
 		{
-			selected_items.put(selection);
+			item->selectItem();
 		}
+		root->addToSelectionList(item);
+	}
+
+	if (new_selection->isSelected())
+	{
+		root->removeFromSelectionList(new_selection);
 	}
+	else
+	{
+		new_selection->selectItem();
+	}
+	root->addToSelectionList(new_selection);
 }
 
+
 void LLFolderViewFolder::destroyView()
 {
 	for (items_t::iterator iter = mItems.begin();
@@ -1874,19 +1966,11 @@ void LLFolderViewFolder::extractItem( LLFolderViewItem* item )
 		ft = std::find(mFolders.begin(), mFolders.end(), f);
 		if (ft != mFolders.end())
 		{
-			if ((*ft)->numSelected())
-			{
-				recursiveIncrementNumDescendantsSelected(-(*ft)->numSelected());
-			}
 			mFolders.erase(ft);
 		}
 	}
 	else
 	{
-		if ((*it)->isSelected())
-		{
-			recursiveIncrementNumDescendantsSelected(-1);
-		}
 		mItems.erase(it);
 	}
 	//item has been removed, need to update filter
@@ -2055,11 +2139,6 @@ BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item)
 {
 	mItems.push_back(item);
 	
-	if (item->isSelected())
-	{
-		recursiveIncrementNumDescendantsSelected(1);
-	}
-	
 	item->setRect(LLRect(0, 0, getRect().getWidth(), 0));
 	item->setVisible(FALSE);
 	
@@ -2067,8 +2146,14 @@ BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item)
 	
 	item->dirtyFilter();
 
-	// Update the folder creation date if the child is newer than our current date
-	setCreationDate(llmax<time_t>(mCreationDate, item->getCreationDate()));
+	// Update the folder creation date if the folder has no creation date
+	bool setting_date = false;
+	const time_t item_creation_date = item->getCreationDate();
+	if ((item_creation_date > 0) && (mCreationDate == 0))
+	{
+		setCreationDate(item_creation_date);
+		setting_date = true;
+	}
 
 	// Handle sorting
 	requestArrange();
@@ -2078,8 +2163,11 @@ BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item)
 	LLFolderViewFolder* parentp = getParentFolder();
 	while (parentp)
 	{
-		// Update the folder creation date if the child is newer than our current date
-		parentp->setCreationDate(llmax<time_t>(parentp->mCreationDate, item->getCreationDate()));
+		// Update the parent folder creation date
+		if (setting_date && (parentp->mCreationDate == 0))
+		{
+			parentp->setCreationDate(item_creation_date);
+		}
 
 		if (parentp->mSortFunction.isByDate())
 		{
@@ -2097,10 +2185,6 @@ BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item)
 BOOL LLFolderViewFolder::addFolder(LLFolderViewFolder* folder)
 {
 	mFolders.push_back(folder);
-	if (folder->numSelected())
-	{
-		recursiveIncrementNumDescendantsSelected(folder->numSelected());
-	}
 	folder->setOrigin(0, 0);
 	folder->reshape(getRect().getWidth(), 0);
 	folder->setVisible(FALSE);
@@ -2276,33 +2360,16 @@ BOOL LLFolderViewFolder::handleDragAndDrop(S32 x, S32 y, MASK mask,
 										   EAcceptance* accept,
 										   std::string& tooltip_msg)
 {
-	LLFolderView* root_view = getRoot();
-
 	BOOL handled = FALSE;
-	if(mIsOpen)
+
+	if (mIsOpen)
 	{
-		handled = childrenHandleDragAndDrop(x, y, mask, drop, cargo_type,
-			cargo_data, accept, tooltip_msg) != NULL;
+		handled = (childrenHandleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg) != NULL);
 	}
 
 	if (!handled)
 	{
-		BOOL accepted = mListener && mListener->dragOrDrop(mask, drop,cargo_type,cargo_data, tooltip_msg);
-
-		if (accepted) 
-		{
-			mDragAndDropTarget = TRUE;
-			*accept = ACCEPT_YES_MULTI;
-		}
-		else 
-		{
-			*accept = ACCEPT_NO;
-		}
-
-		if (!drop && accepted)
-		{
-			root_view->autoOpenTest(this);
-		}
+		handleDragAndDropToThisFolder(mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
 
 		lldebugst(LLERR_USER_INPUT) << "dragAndDrop handled by LLFolderViewFolder" << llendl;
 	}
@@ -2310,6 +2377,33 @@ BOOL LLFolderViewFolder::handleDragAndDrop(S32 x, S32 y, MASK mask,
 	return TRUE;
 }
 
+BOOL LLFolderViewFolder::handleDragAndDropToThisFolder(MASK mask,
+													   BOOL drop,
+													   EDragAndDropType cargo_type,
+													   void* cargo_data,
+													   EAcceptance* accept,
+													   std::string& tooltip_msg)
+{
+	BOOL accepted = mListener && mListener->dragOrDrop(mask, drop, cargo_type, cargo_data, tooltip_msg);
+	
+	if (accepted) 
+	{
+		mDragAndDropTarget = TRUE;
+		*accept = ACCEPT_YES_MULTI;
+	}
+	else 
+	{
+		*accept = ACCEPT_NO;
+	}
+	
+	if (!drop && accepted)
+	{
+		getRoot()->autoOpenTest(this);
+	}
+	
+	return TRUE;
+}
+
 
 BOOL LLFolderViewFolder::handleRightMouseDown( S32 x, S32 y, MASK mask )
 {
diff --git a/indra/newview/llfolderviewitem.h b/indra/newview/llfolderviewitem.h
index 676eaf825dcb3260f45537bc8d5202fe407469c7..2fc79f576582fd926bd02ad67f5fd438a6e85bec 100644
--- a/indra/newview/llfolderviewitem.h
+++ b/indra/newview/llfolderviewitem.h
@@ -122,6 +122,8 @@ class LLFolderViewItem : public LLView
 
 	// Mostly for debugging printout purposes.
 	const std::string& getSearchableLabel() { return mSearchableLabel; }
+	
+	BOOL isLoading() const { return mIsLoading; }
 
 private:
 	BOOL						mIsSelected;
@@ -164,9 +166,6 @@ class LLFolderViewItem : public LLView
 	// helper function to change the selection from the root.
 	void changeSelectionFromRoot(LLFolderViewItem* selection, BOOL selected);
 
-	// helper function to change the selection from the root.
-	void extendSelectionFromRoot(LLFolderViewItem* selection);
-
 	// this is an internal method used for adding items to folders. A
 	// no-op at this level, but reimplemented in derived classes.
 	virtual BOOL addItem(LLFolderViewItem*) { return FALSE; }
@@ -224,9 +223,6 @@ class LLFolderViewItem : public LLView
 	// Returns TRUE if the selection state of this item was changed.
 	virtual BOOL changeSelection(LLFolderViewItem* selection, BOOL selected);
 
-	// this method is used to group select items
-	virtual void extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items) { }
-
 	// this method is used to deselect this element
 	void deselectItem();
 
@@ -267,7 +263,7 @@ class LLFolderViewItem : public LLView
 
 	// This method returns the actual name of the thing being
 	// viewed. This method will ask the viewed object itself.
-	std::string getName( void ) const;
+	const std::string& getName( void ) const;
 
 	const std::string& getSearchableLabel( void ) const;
 
@@ -373,13 +369,6 @@ class LLFolderViewFolder : public LLFolderViewItem
 	typedef std::list<LLFolderViewItem*> items_t;
 	typedef std::list<LLFolderViewFolder*> folders_t;
 
-private:
-	S32		mNumDescendantsSelected;
-
-public:		// Accessed needed by LLFolderViewItem
-	void recursiveIncrementNumDescendantsSelected(S32 increment);
-	S32 numSelected(void) const { return mNumDescendantsSelected + (isSelected() ? 1 : 0); }
-
 protected:
 	items_t mItems;
 	folders_t mFolders;
@@ -461,7 +450,7 @@ class LLFolderViewFolder : public LLFolderViewItem
 	virtual BOOL changeSelection(LLFolderViewItem* selection, BOOL selected);
 
 	// this method is used to group select items
-	virtual void extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items);
+	void extendSelectionTo(LLFolderViewItem* selection);
 
 	// Returns true is this object and all of its children can be removed.
 	virtual BOOL isRemovable();
@@ -547,15 +536,25 @@ class LLFolderViewFolder : public LLFolderViewItem
 		void* cargo_data,
 		EAcceptance* accept,
 		std::string& tooltip_msg);
+	BOOL handleDragAndDropToThisFolder(MASK mask, BOOL drop,
+									   EDragAndDropType cargo_type,
+									   void* cargo_data,
+									   EAcceptance* accept,
+									   std::string& tooltip_msg);
 	virtual void draw();
 
 	time_t getCreationDate() const;
 	bool isTrash() const;
-	S32 getNumSelectedDescendants(void) const { return mNumDescendantsSelected; }
 
 	folders_t::const_iterator getFoldersBegin() const { return mFolders.begin(); }
 	folders_t::const_iterator getFoldersEnd() const { return mFolders.end(); }
 	folders_t::size_type getFoldersCount() const { return mFolders.size(); }
+
+	items_t::const_iterator getItemsBegin() const { return mItems.begin(); }
+	items_t::const_iterator getItemsEnd() const { return mItems.end(); }
+	items_t::size_type getItemsCount() const { return mItems.size(); }
+	LLFolderViewFolder* getCommonAncestor(LLFolderViewItem* item_a, LLFolderViewItem* item_b, bool& reverse);
+	void gatherChildRangeExclusive(LLFolderViewItem* start, LLFolderViewItem* end, bool reverse,  std::vector<LLFolderViewItem*>& items);
 };
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp
index fa3f546157b17f35a8bdb7093c2ea9fb893b0911..1208c9378e9024f84582c879eed315a5b7f1c597 100644
--- a/indra/newview/llglsandbox.cpp
+++ b/indra/newview/llglsandbox.cpp
@@ -115,7 +115,7 @@ void LLToolSelectRect::handleRectangleSelection(S32 x, S32 y, MASK mask)
 	S32 center_y = (top + bottom) / 2;
 
 	// save drawing mode
-	glMatrixMode(GL_PROJECTION);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
 	gGL.pushMatrix();
 
 	BOOL limit_select_distance = gSavedSettings.getBOOL("LimitSelectDistance");
@@ -230,9 +230,9 @@ void LLToolSelectRect::handleRectangleSelection(S32 x, S32 y, MASK mask)
 	}
 
 	// restore drawing mode
-	glMatrixMode(GL_PROJECTION);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
 	gGL.popMatrix();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 	// restore camera
 	LLViewerCamera::getInstance()->setFar(old_far_plane);
@@ -240,7 +240,7 @@ void LLToolSelectRect::handleRectangleSelection(S32 x, S32 y, MASK mask)
 	gViewerWindow->setup3DRender();
 }
 
-const F32 WIND_ALTITUDE			= 180.f;
+const F32 WIND_RELATIVE_ALTITUDE			= 25.f;
 
 void LLWind::renderVectors()
 {
@@ -254,13 +254,13 @@ void LLWind::renderVectors()
 	gGL.pushMatrix();
 	LLVector3 origin_agent;
 	origin_agent = gAgent.getPosAgentFromGlobal(mOriginGlobal);
-	gGL.translatef(origin_agent.mV[VX], origin_agent.mV[VY], WIND_ALTITUDE);
+	gGL.translatef(origin_agent.mV[VX], origin_agent.mV[VY], gAgent.getPositionAgent().mV[VZ] + WIND_RELATIVE_ALTITUDE);
 	for (j = 0; j < mSize; j++)
 	{
 		for (i = 0; i < mSize; i++)
 		{
-			x = mCloudVelX[i + j*mSize] * WIND_SCALE_HACK;
-			y = mCloudVelY[i + j*mSize] * WIND_SCALE_HACK;
+			x = mVelX[i + j*mSize] * WIND_SCALE_HACK;
+			y = mVelY[i + j*mSize] * WIND_SCALE_HACK;
 			gGL.pushMatrix();
 			gGL.translatef((F32)i * region_width_meters/mSize, (F32)j * region_width_meters/mSize, 0.0);
 			gGL.color3f(0,1,0);
@@ -777,13 +777,17 @@ void LLViewerObjectList::renderObjectBeacons()
 
 	LLGLSUIDefault gls_ui;
 
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gUIProgram.bind();
+	}
+
 	{
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 
 		S32 last_line_width = -1;
 		// gGL.begin(LLRender::LINES); // Always happens in (line_width != last_line_width)
 		
-		BOOL flush = FALSE;
 		for (std::vector<LLDebugBeacon>::iterator iter = mDebugBeacons.begin(); iter != mDebugBeacons.end(); ++iter)
 		{
 			const LLDebugBeacon &debug_beacon = *iter;
@@ -792,18 +796,14 @@ void LLViewerObjectList::renderObjectBeacons()
 			S32 line_width = debug_beacon.mLineWidth;
 			if (line_width != last_line_width)
 			{
-				if (flush)
-				{
-					gGL.end();
-				}
-				flush = TRUE;
 				gGL.flush();
 				glLineWidth( (F32)line_width );
 				last_line_width = line_width;
-				gGL.begin(LLRender::LINES);
 			}
 
 			const LLVector3 &thisline = debug_beacon.mPositionAgent;
+		
+			gGL.begin(LLRender::LINES);
 			gGL.color4fv(color.mV);
 			gGL.vertex3f(thisline.mV[VX],thisline.mV[VY],thisline.mV[VZ] - 50.f);
 			gGL.vertex3f(thisline.mV[VX],thisline.mV[VY],thisline.mV[VZ] + 50.f);
@@ -813,8 +813,9 @@ void LLViewerObjectList::renderObjectBeacons()
 			gGL.vertex3f(thisline.mV[VX],thisline.mV[VY] + 2.f,thisline.mV[VZ]);
 
 			draw_line_cube(0.10f, thisline);
+			
+			gGL.end();
 		}
-		gGL.end();
 	}
 
 	{
@@ -824,7 +825,6 @@ void LLViewerObjectList::renderObjectBeacons()
 		S32 last_line_width = -1;
 		// gGL.begin(LLRender::LINES); // Always happens in (line_width != last_line_width)
 		
-		BOOL flush = FALSE;
 		for (std::vector<LLDebugBeacon>::iterator iter = mDebugBeacons.begin(); iter != mDebugBeacons.end(); ++iter)
 		{
 			const LLDebugBeacon &debug_beacon = *iter;
@@ -832,18 +832,13 @@ void LLViewerObjectList::renderObjectBeacons()
 			S32 line_width = debug_beacon.mLineWidth;
 			if (line_width != last_line_width)
 			{
-				if (flush)
-				{
-					gGL.end();
-				}
-				flush = TRUE;
 				gGL.flush();
 				glLineWidth( (F32)line_width );
 				last_line_width = line_width;
-				gGL.begin(LLRender::LINES);
 			}
 
 			const LLVector3 &thisline = debug_beacon.mPositionAgent;
+			gGL.begin(LLRender::LINES);
 			gGL.color4fv(debug_beacon.mColor.mV);
 			gGL.vertex3f(thisline.mV[VX],thisline.mV[VY],thisline.mV[VZ] - 0.5f);
 			gGL.vertex3f(thisline.mV[VX],thisline.mV[VY],thisline.mV[VZ] + 0.5f);
@@ -853,9 +848,10 @@ void LLViewerObjectList::renderObjectBeacons()
 			gGL.vertex3f(thisline.mV[VX],thisline.mV[VY] + 0.5f,thisline.mV[VZ]);
 
 			draw_line_cube(0.10f, thisline);
+
+			gGL.end();
 		}
 		
-		gGL.end();
 		gGL.flush();
 		glLineWidth(1.f);
 
diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index 97fa5514417c91f9f63974f33e3a942c58bcf777..623ebb76f2b557ac852ef642fa2dafd834dec47b 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -34,10 +34,10 @@
 #include "llagent.h"
 #include "llcommandhandler.h"
 #include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llgroupmgr.h"
 #include "llimview.h" // for gIMMgr
 #include "llnotificationsutil.h"
-#include "llsidetray.h"
 #include "llstatusbar.h"	// can_afford_transaction()
 #include "llimfloater.h"
 #include "groupchatlistener.h"
@@ -83,7 +83,7 @@ class LLGroupHandler : public LLCommandHandler
 			{
 				LLSD params;
 				params["people_panel_tab_name"] = "groups_panel";
-				LLSideTray::getInstance()->showPanel("panel_people", params);
+				LLFloaterSidePanelContainer::showPanel("people", "panel_people", params);
 				return true;
 			}
             return false;
@@ -243,7 +243,7 @@ static bool isGroupUIVisible()
 {
 	static LLPanel* panel = 0;
 	if(!panel)
-		panel = LLSideTray::getInstance()->getPanel("panel_group_info_sidetray");
+		panel = LLFloaterSidePanelContainer::getPanel("people", "panel_group_info_sidetray");
 	if(!panel)
 		return false;
 	return panel->isInVisibleChain();
@@ -265,7 +265,7 @@ void LLGroupActions::show(const LLUUID& group_id)
 	params["group_id"] = group_id;
 	params["open_tab_name"] = "panel_group_info_sidetray";
 
-	LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+	LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
 }
 
 void LLGroupActions::refresh_notices()
@@ -278,7 +278,7 @@ void LLGroupActions::refresh_notices()
 	params["open_tab_name"] = "panel_group_info_sidetray";
 	params["action"] = "refresh_notices";
 
-	LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+	LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
 }
 
 //static 
@@ -292,7 +292,7 @@ void LLGroupActions::refresh(const LLUUID& group_id)
 	params["open_tab_name"] = "panel_group_info_sidetray";
 	params["action"] = "refresh";
 
-	LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+	LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
 }
 
 //static 
@@ -303,7 +303,7 @@ void LLGroupActions::createGroup()
 	params["open_tab_name"] = "panel_group_info_sidetray";
 	params["action"] = "create";
 
-	LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+	LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
 
 }
 //static
@@ -317,7 +317,7 @@ void LLGroupActions::closeGroup(const LLUUID& group_id)
 	params["open_tab_name"] = "panel_group_info_sidetray";
 	params["action"] = "close";
 
-	LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+	LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
 }
 
 
diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp
index c3e6e1c2dca29c0fd9ea096a3110148559bc9b41..bbf66ca7503c5187d15ebeb74e4feb314b68b126 100644
--- a/indra/newview/llgrouplist.cpp
+++ b/indra/newview/llgrouplist.cpp
@@ -95,7 +95,7 @@ LLGroupList::LLGroupList(const Params& p)
 LLGroupList::~LLGroupList()
 {
 	gAgent.removeListener(this);
-	LLView::deleteViewByHandle(mContextMenuHandle);
+	if (mContextMenuHandle.get()) mContextMenuHandle.get()->die();
 }
 
 // virtual
diff --git a/indra/newview/llhudeffectbeam.cpp b/indra/newview/llhudeffectbeam.cpp
index 37b7b2e75dc6abe3b0139c1ed17f7878a0b7ded9..8abad3d292f41dd9d3f6e5967a0c3d369ba3b7e6 100644
--- a/indra/newview/llhudeffectbeam.cpp
+++ b/indra/newview/llhudeffectbeam.cpp
@@ -295,13 +295,13 @@ void LLHUDEffectBeam::render()
 		F32 alpha = mFadeInterp.getCurVal()*mColor.mV[3];
 		alpha *= mInterpFade[i].getCurVal();
 		coloru.mV[3] = (U8)alpha;
-		glColor4ubv(coloru.mV);
+		gGL.color4ubv(coloru.mV);
 
-		glPushMatrix();
-		glTranslatef(pos_agent.mV[0], pos_agent.mV[1], pos_agent.mV[2]);
-		glScalef(scale, scale, scale);
-		gSphere.render(0);
-		glPopMatrix();
+		gGL.pushMatrix();
+		gGL.translatef(pos_agent.mV[0], pos_agent.mV[1], pos_agent.mV[2]);
+		gGL.scalef(scale, scale, scale);
+		gSphere.render();
+		gGL.popMatrix();
 	}
 }
 
diff --git a/indra/newview/llhudeffectblob.cpp b/indra/newview/llhudeffectblob.cpp
index d8687eed8db022ba8267a0863b73c231d1d1b0db..c909551b51755d2725f62597e712e1e88932fce5 100644
--- a/indra/newview/llhudeffectblob.cpp
+++ b/indra/newview/llhudeffectblob.cpp
@@ -44,12 +44,20 @@ LLHUDEffectBlob::~LLHUDEffectBlob()
 {
 }
 
+void LLHUDEffectBlob::markDead()
+{
+	mImage = NULL;
+
+	LLHUDEffect::markDead();
+}
+
 void LLHUDEffectBlob::render()
 {
 	F32 time = mTimer.getElapsedTimeF32();
 	if (mDuration < time)
 	{
 		markDead();
+		return;
 	}
 
 	LLVector3 pos_agent = gAgent.getPosAgentFromGlobal(mPositionGlobal);
diff --git a/indra/newview/llhudeffectblob.h b/indra/newview/llhudeffectblob.h
index f4c1691108fded588d05c7c4335f275f0b28e32d..ce3e8500fc180d6b98d12c33769e0fdd95a3be91 100644
--- a/indra/newview/llhudeffectblob.h
+++ b/indra/newview/llhudeffectblob.h
@@ -35,6 +35,8 @@ class LLHUDEffectBlob : public LLHUDEffect
 public:
 	friend class LLHUDObject;
 
+	void markDead();
+
 	void setPixelSize(S32 pixels) { mPixelSize = pixels; }
 
 protected:
diff --git a/indra/newview/llhudeffectlookat.cpp b/indra/newview/llhudeffectlookat.cpp
index b380b3fe2020abe4edb2ae026099ee31a06d05e6..bc3b220dc098d9183782f865469c1e78251e6db0 100644
--- a/indra/newview/llhudeffectlookat.cpp
+++ b/indra/newview/llhudeffectlookat.cpp
@@ -498,10 +498,10 @@ void LLHUDEffectLookAt::render()
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 
 		LLVector3 target = mTargetPos + ((LLVOAvatar*)(LLViewerObject*)mSourceObject)->mHeadp->getWorldPosition();
-		glMatrixMode(GL_MODELVIEW);
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 		gGL.pushMatrix();
 		gGL.translatef(target.mV[VX], target.mV[VY], target.mV[VZ]);
-		glScalef(0.3f, 0.3f, 0.3f);
+		gGL.scalef(0.3f, 0.3f, 0.3f);
 		gGL.begin(LLRender::LINES);
 		{
 			LLColor3 color = (*mAttentions)[mTargetType].mColor;
diff --git a/indra/newview/llhudeffectpointat.cpp b/indra/newview/llhudeffectpointat.cpp
index 28fe8e1c015f4dee42efc991e007c7e454f39528..114a633821c93b9867061769aa33d36166ccff1f 100644
--- a/indra/newview/llhudeffectpointat.cpp
+++ b/indra/newview/llhudeffectpointat.cpp
@@ -327,7 +327,7 @@ void LLHUDEffectPointAt::render()
 		LLVector3 target = mTargetPos + mSourceObject->getRenderPosition();
 		gGL.pushMatrix();
 		gGL.translatef(target.mV[VX], target.mV[VY], target.mV[VZ]);
-		glScalef(0.3f, 0.3f, 0.3f);
+		gGL.scalef(0.3f, 0.3f, 0.3f);
 		gGL.begin(LLRender::LINES);
 		{
 			gGL.color3f(1.f, 0.f, 0.f);
diff --git a/indra/newview/llhudrender.cpp b/indra/newview/llhudrender.cpp
index 1156e764a17a548beab38508f6d446755c791673..122711a86d23f6c06959d598a846a2587648db61 100644
--- a/indra/newview/llhudrender.cpp
+++ b/indra/newview/llhudrender.cpp
@@ -107,14 +107,24 @@ void hud_render_text(const LLWString &wstr, const LLVector3 &pos_agent,
 	viewport[1] = world_view_rect.mBottom;
 	viewport[2] = world_view_rect.getWidth();
 	viewport[3] = world_view_rect.getHeight();
+
+	F64 mdlv[16];
+	F64 proj[16];
+
+	for (U32 i = 0; i < 16; i++)
+	{
+		mdlv[i] = (F64) gGLModelView[i];
+		proj[i] = (F64) gGLProjection[i];
+	}
+
 	gluProject(render_pos.mV[0], render_pos.mV[1], render_pos.mV[2],
-				gGLModelView, gGLProjection, (GLint*) viewport,
+				mdlv, proj, (GLint*) viewport,
 				&winX, &winY, &winZ);
 		
 	//fonts all render orthographically, set up projection``
-	glMatrixMode(GL_PROJECTION);
-	glPushMatrix();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.pushMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.pushMatrix();
 	LLUI::pushMatrix();
 		
@@ -124,7 +134,7 @@ void hud_render_text(const LLWString &wstr, const LLVector3 &pos_agent,
 	winX -= world_view_rect.mLeft;
 	winY -= world_view_rect.mBottom;
 	LLUI::loadIdentity();
-	glLoadIdentity();
+	gGL.loadIdentity();
 	LLUI::translate((F32) winX*1.0f/LLFontGL::sScaleX, (F32) winY*1.0f/(LLFontGL::sScaleY), -(((F32) winZ*2.f)-1.f));
 	F32 right_x;
 	
@@ -133,7 +143,7 @@ void hud_render_text(const LLWString &wstr, const LLVector3 &pos_agent,
 	LLUI::popMatrix();
 	gGL.popMatrix();
 
-	glMatrixMode(GL_PROJECTION);
-	glPopMatrix();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.popMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 }
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 50a9c56518a5b5ae4e937df26d0c596d6b8e9a6f..f67464078b20d085aa6331608f69d1af2a8d6f32 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -34,9 +34,9 @@
 #include "llappviewer.h"
 #include "llavatarnamecache.h"
 #include "llbutton.h"
-#include "llbottomtray.h"
 #include "llchannelmanager.h"
 #include "llchiclet.h"
+#include "llchicletbar.h"
 #include "llfloaterreg.h"
 #include "llimfloatercontainer.h" // to replace separate IM Floaters with multifloater container
 #include "llinventoryfunctions.h"
@@ -55,15 +55,9 @@
 #include "llinventorymodel.h"
 #include "llrootview.h"
 #include "llspeakers.h"
-#include "llsidetray.h"
 #include "llviewerchat.h"
 
 
-static const S32 RECT_PADDING_NOT_INIT = -1;
-static const S32 RECT_PADDING_NEED_RECALC = -2;
-
-S32 LLIMFloater::sAllowedRectRightPadding = RECT_PADDING_NOT_INIT;
-
 LLIMFloater::LLIMFloater(const LLUUID& session_id)
   : LLTransientDockableFloater(NULL, true, session_id),
 	mControlPanel(NULL),
@@ -123,14 +117,14 @@ void LLIMFloater::onFocusLost()
 {
 	LLIMModel::getInstance()->resetActiveSessionID();
 	
-	LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, false);
+	LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, false);
 }
 
 void LLIMFloater::onFocusReceived()
 {
 	LLIMModel::getInstance()->setActiveSessionID(mSessionID);
 
-	LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, true);
+	LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, true);
 
 	if (getVisible())
 	{
@@ -240,12 +234,6 @@ LLIMFloater::~LLIMFloater()
 //virtual
 BOOL LLIMFloater::postBuild()
 {
-	// User-resizable control panels in P2P sessions look ugly (EXT-3470).
-	if (mDialog == IM_NOTHING_SPECIAL || mDialog == IM_SESSION_P2P_INVITE)
-	{
-		getChild<LLLayoutStack>("im_panels")->setPanelUserResize("panel_im_control_panel", FALSE);
-	}
-
 	const LLUUID& other_party_id = LLIMModel::getInstance()->getOtherParticipantID(mSessionID);
 	if (other_party_id.notNull())
 	{
@@ -391,9 +379,6 @@ void LLIMFloater::onSlide()
 
 	getChild<LLButton>("slide_left_btn")->setVisible(mControlPanel->getParent()->getVisible());
 	getChild<LLButton>("slide_right_btn")->setVisible(!mControlPanel->getParent()->getVisible());
-
-	LLLayoutStack* stack = getChild<LLLayoutStack>("im_panels");
-	if (stack) stack->setAnimate(true);
 }
 
 //static
@@ -450,7 +435,7 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
 		if (floater->getDockControl() == NULL)
 		{
 			LLChiclet* chiclet =
-					LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(
+					LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(
 							session_id);
 			if (chiclet == NULL)
 			{
@@ -458,11 +443,11 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
 			}
 			else
 			{
-				LLBottomTray::getInstance()->getChicletPanel()->scrollToChiclet(chiclet);
+				LLChicletBar::getInstance()->getChicletPanel()->scrollToChiclet(chiclet);
 			}
 
 			floater->setDockControl(new LLDockControl(chiclet, floater, floater->getDockTongue(),
-					LLDockControl::TOP,  boost::bind(&LLIMFloater::getAllowedRect, floater, _1)));
+					LLDockControl::BOTTOM));
 		}
 
 		// window is positioned, now we can show it.
@@ -472,43 +457,6 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
 	return floater;
 }
 
-//static
-bool LLIMFloater::resetAllowedRectPadding()
-{
-	//reset allowed rect right padding if "SidebarCameraMovement" option 
-	//or sidebar state changed
-	sAllowedRectRightPadding = RECT_PADDING_NEED_RECALC ;
-	return true;
-}
-
-void LLIMFloater::getAllowedRect(LLRect& rect)
-{
-	if (sAllowedRectRightPadding == RECT_PADDING_NOT_INIT) //wasn't initialized
-	{
-		gSavedSettings.getControl("SidebarCameraMovement")->getSignal()->connect(boost::bind(&LLIMFloater::resetAllowedRectPadding));
-
-		LLSideTray*	side_bar = LLSideTray::getInstance();
-		side_bar->setVisibleWidthChangeCallback(boost::bind(&LLIMFloater::resetAllowedRectPadding));
-		sAllowedRectRightPadding = RECT_PADDING_NEED_RECALC;
-	}
-
-	rect = gViewerWindow->getWorldViewRectScaled();
-	if (sAllowedRectRightPadding == RECT_PADDING_NEED_RECALC) //recalc allowed rect right padding
-	{
-		LLPanel* side_bar_tabs =
-				gViewerWindow->getRootView()->getChild<LLPanel> (
-						"side_bar_tabs");
-		sAllowedRectRightPadding = side_bar_tabs->getRect().getWidth();
-		LLTransientFloaterMgr::getInstance()->addControlView(side_bar_tabs);
-
-		if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE)
-		{
-			sAllowedRectRightPadding += LLSideTray::getInstance()->getVisibleWidth();
-		}
-	}
-	rect.mRight -= sAllowedRectRightPadding;
-}
-
 void LLIMFloater::setDocked(bool docked, bool pop_on_undock)
 {
 	// update notification channel state
@@ -560,7 +508,7 @@ void LLIMFloater::setVisible(BOOL visible)
 
 	if(!visible)
 	{
-		LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(mSessionID);
+		LLIMChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(mSessionID);
 		if(chiclet)
 		{
 			chiclet->setToggleState(false);
diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h
index 5158f6c1f788d76243b28ada549d9f848d89f721..f7cd35b5eb28d79d85f17298880e204a84cfe7a5 100644
--- a/indra/newview/llimfloater.h
+++ b/indra/newview/llimfloater.h
@@ -145,8 +145,6 @@ class LLIMFloater : public LLTransientDockableFloater
 	static void*	createPanelIMControl(void* userdata);
 	static void*	createPanelGroupControl(void* userdata);
 	static void* 	createPanelAdHocControl(void* userdata);
-	// gets a rect that bounds possible positions for the LLIMFloater on a screen (EXT-1111)
-	void getAllowedRect(LLRect& rect);
 
 	// Add the "User is typing..." indicator.
 	void addTypingIndicator(const LLIMInfo* im_info);
@@ -156,10 +154,6 @@ class LLIMFloater : public LLTransientDockableFloater
 
 	static void closeHiddenIMToasts();
 
-	static bool resetAllowedRectPadding();
-	//need to keep this static for performance issues
-	static S32 sAllowedRectRightPadding;
-
 	static void confirmLeaveCallCallback(const LLSD& notification, const LLSD& response);
 
 	LLPanelChatControlPanel* mControlPanel;
diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp
index 33cb3a54a7cf69b772e7b4b7e6a0d43f8424a30a..c8e48b0d428f0980c44c181129c9f63268b4b3c1 100644
--- a/indra/newview/llimfloatercontainer.cpp
+++ b/indra/newview/llimfloatercontainer.cpp
@@ -47,12 +47,13 @@ LLIMFloaterContainer::LLIMFloaterContainer(const LLSD& seed)
 
 LLIMFloaterContainer::~LLIMFloaterContainer()
 {
+	mNewMessageConnection.disconnect();
 	LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::IM, this);
 }
 
 BOOL LLIMFloaterContainer::postBuild()
 {
-	LLIMModel::instance().mNewMsgSignal.connect(boost::bind(&LLIMFloaterContainer::onNewMessageReceived, this, _1));
+	mNewMessageConnection = LLIMModel::instance().mNewMsgSignal.connect(boost::bind(&LLIMFloaterContainer::onNewMessageReceived, this, _1));
 	// Do not call base postBuild to not connect to mCloseSignal to not close all floaters via Close button
 	// mTabContainer will be initialized in LLMultiFloater::addChild()
 	return TRUE;
diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h
index 53dfcd78ff1c7868a217f4b3ec4607828cc3b2c6..892ecef48d13ad5c07e64789b02a459612ebc7f5 100644
--- a/indra/newview/llimfloatercontainer.h
+++ b/indra/newview/llimfloatercontainer.h
@@ -62,7 +62,7 @@ class LLIMFloaterContainer : public LLMultiFloater
 private:
 	typedef std::map<LLUUID,LLFloater*> avatarID_panel_map_t;
 	avatarID_panel_map_t mSessions;
-
+	boost::signals2::connection mNewMessageConnection;
 
 	void onNewMessageReceived(const LLSD& data);
 };
diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp
index b3b0c93b9954c8389034eaf483c0d2fefa7cb528..0250af6a0efce2c8231f778d4e201b0beacc160b 100644
--- a/indra/newview/llimpanel.cpp
+++ b/indra/newview/llimpanel.cpp
@@ -41,7 +41,6 @@
 
 #include "llagent.h"
 #include "llbutton.h"
-#include "llbottomtray.h"
 #include "llcallingcard.h"
 #include "llchannelmanager.h"
 #include "llchat.h"
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 4de69765343f56bd2fcc1238bf4f23494e715358..a856bd0bdc67bc719de33db922238dd199241c29 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -46,7 +46,6 @@
 #include "llagentui.h"
 #include "llappviewer.h"
 #include "llavatariconctrl.h"
-#include "llbottomtray.h"
 #include "llcallingcard.h"
 #include "llchat.h"
 #include "llimfloater.h"
@@ -61,6 +60,7 @@
 #include "llnearbychat.h"
 #include "llspeakers.h" //for LLIMSpeakerMgr
 #include "lltextbox.h"
+#include "lltoolbarview.h"
 #include "llviewercontrol.h"
 #include "llviewerparcelmgr.h"
 
@@ -1675,27 +1675,48 @@ LLCallDialog::~LLCallDialog()
 	LLUI::removePopup(this);
 }
 
-void LLCallDialog::getAllowedRect(LLRect& rect)
+BOOL LLCallDialog::postBuild()
 {
-	rect = gViewerWindow->getWorldViewRectScaled();
+	if (!LLDockableFloater::postBuild() || !gToolBarView)
+		return FALSE;
+	
+	dockToToolbarButton("speak");
+	
+	return TRUE;
 }
 
-BOOL LLCallDialog::postBuild()
+void LLCallDialog::dockToToolbarButton(const std::string& toolbarButtonName)
 {
-	if (!LLDockableFloater::postBuild())
-		return FALSE;
+	LLDockControl::DocAt dock_pos = getDockControlPos(toolbarButtonName);
+	LLView *anchor_panel = gToolBarView->findChildView(toolbarButtonName);
 
-	// dock the dialog to the Speak Button, where other sys messages appear
-	LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("speak_panel");
+	setUseTongue(anchor_panel);
 
-	setDockControl(new LLDockControl(
-		anchor_panel, this,
-		getDockTongue(), LLDockControl::TOP,
-		boost::bind(&LLCallDialog::getAllowedRect, this, _1)));
+	setDockControl(new LLDockControl(anchor_panel, this, getDockTongue(dock_pos), dock_pos));
+}
 
-	return TRUE;
+LLDockControl::DocAt LLCallDialog::getDockControlPos(const std::string& toolbarButtonName)
+{
+	LLCommandId command_id(toolbarButtonName);
+	S32 toolbar_loc = gToolBarView->hasCommand(command_id);
+	
+	LLDockControl::DocAt doc_at = LLDockControl::TOP;
+	
+	switch (toolbar_loc)
+	{
+		case LLToolBarView::TOOLBAR_LEFT:
+			doc_at = LLDockControl::RIGHT;
+			break;
+			
+		case LLToolBarView::TOOLBAR_RIGHT:
+			doc_at = LLDockControl::LEFT;
+			break;
+	}
+	
+	return doc_at;
 }
 
+
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // Class LLOutgoingCallDialog
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -2382,15 +2403,6 @@ void LLIMMgr::addMessage(
 	bool link_name) // If this is true, then we insert the name and link it to a profile
 {
 	LLUUID other_participant_id = target_id;
-
-	// don't process muted IMs
-	if (LLMuteList::getInstance()->isMuted(
-			other_participant_id,
-			LLMute::flagTextChat) && !LLMuteList::getInstance()->isLinden(from))
-	{
-		return;
-	}
-
 	LLUUID new_session_id = session_id;
 	if (new_session_id.isNull())
 	{
@@ -2431,10 +2443,25 @@ void LLIMMgr::addMessage(
 			LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, bonus_info.str());
 		}
 
+		// Logically it would make more sense to reject the session sooner, in another area of the
+		// code, but the session has to be established inside the server before it can be left.
+		if (LLMuteList::getInstance()->isMuted(other_participant_id) && !LLMuteList::getInstance()->isLinden(from))
+		{
+			llwarns << "Leaving IM session from initiating muted resident " << from << llendl;
+			if(!gIMMgr->leaveSession(new_session_id))
+			{
+				llinfos << "Session " << new_session_id << " does not exist." << llendl;
+			}
+			return;
+		}
+
 		make_ui_sound("UISndNewIncomingIMSession");
 	}
 
-	LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg);
+	if (!LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat))
+	{
+		LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg);
+	}
 }
 
 void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& message_name, const LLSD& args)
@@ -2449,8 +2476,10 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess
 
 		LLChat chat(message);
 		chat.mSourceType = CHAT_SOURCE_SYSTEM;
+		
+		LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
+		LLNearbyChat* nearby_chat = chat_bar->findChild<LLNearbyChat>("nearby_chat");
 
-		LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
 		if(nearby_chat)
 		{
 			nearby_chat->addMessage(chat);
@@ -2638,18 +2667,15 @@ void LLIMMgr::inviteToSession(
 	const std::string& session_handle,
 	const std::string& session_uri)
 {
-	//ignore invites from muted residents
-	if (LLMuteList::getInstance()->isMuted(caller_id))
-	{
-		return;
-	}
-
 	std::string notify_box_type;
 	// 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);
+
+
 	if(type == IM_SESSION_P2P_INVITE)
 	{
 		//P2P is different...they only have voice invitations
@@ -2688,7 +2714,18 @@ void LLIMMgr::inviteToSession(
 	payload["session_uri"] = session_uri;
 	payload["notify_box_type"] = notify_box_type;
 	payload["question_type"] = question_type;
-	
+
+	//ignore invites from muted residents
+	if (LLMuteList::getInstance()->isMuted(caller_id) && !is_linden)
+	{
+		if (voice_invite && "VoiceInviteQuestionDefault" == question_type)
+		{
+			llinfos << "Rejecting voice call from initiating muted resident " << caller_name << llendl;
+			LLIncomingCallDialog::processCallResponse(1, payload);
+		}
+		return;
+	}
+
 	LLVoiceChannel* channelp = LLVoiceChannel::getChannelByID(session_id);
 	if (channelp && channelp->callStarted())
 	{
@@ -3211,7 +3248,7 @@ class LLViewerChatterBoxInvitation : public LLHTTPNode
 			chat.mFromID = from_id;
 			chat.mFromName = name;
 
-			if (!is_linden && (is_busy || is_muted))
+			if (!is_linden && is_busy)
 			{
 				return;
 			}
@@ -3243,6 +3280,11 @@ class LLViewerChatterBoxInvitation : public LLHTTPNode
 				ll_vector3_from_sd(message_params["position"]),
 				true);
 
+			if (LLMuteList::getInstance()->isMuted(from_id, name, LLMute::flagTextChat))
+			{
+				return;
+			}
+
 			//K now we want to accept the invitation
 			std::string url = gAgent.getRegion()->getCapability(
 				"ChatSessionRequest");
diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h
index 0ee56c8070488b5b6d22193bc1dce892ba7d55d0..b1be26a169ee962e80701cfed82cec74e1dd1e8e 100644
--- a/indra/newview/llimview.h
+++ b/indra/newview/llimview.h
@@ -491,14 +491,16 @@ class LLCallDialog : public LLDockableFloater
 {
 public:
 	LLCallDialog(const LLSD& payload);
-	~LLCallDialog();
+	virtual ~LLCallDialog();
 
 	virtual BOOL postBuild();
 
+	void dockToToolbarButton(const std::string& toolbarButtonName);
+	
 	// check timer state
 	/*virtual*/ void draw();
 	/*virtual*/ void onOpen(const LLSD& key);
-
+	
 protected:
 	// lifetime timer for a notification
 	LLTimer	mLifetimeTimer;
@@ -508,8 +510,6 @@ class LLCallDialog : public LLDockableFloater
 	virtual bool lifetimeHasExpired();
 	virtual void onLifetimeExpired();
 
-	virtual void getAllowedRect(LLRect& rect);
-
 	/**
 	 * Sets icon depend on session.
 	 *
@@ -521,6 +521,9 @@ class LLCallDialog : public LLDockableFloater
 	void setIcon(const LLSD& session_id, const LLSD& participant_id);
 
 	LLSD mPayload;
+
+private:
+	LLDockControl::DocAt getDockControlPos(const std::string& toolbarButtonName);
 };
 
 class LLIncomingCallDialog : public LLCallDialog
diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp
index ee076f68ea1fa4217beb2c986ff7ae64484e13d9..acc139c5690345d3f6f7dbd4b63cddf6dd74510c 100644
--- a/indra/newview/llinspectobject.cpp
+++ b/indra/newview/llinspectobject.cpp
@@ -28,6 +28,7 @@
 #include "llinspectobject.h"
 
 // Viewer
+#include "llfloatersidepanelcontainer.h"
 #include "llinspect.h"
 #include "llmediaentry.h"
 #include "llnotificationsutil.h"	// *TODO: Eliminate, add LLNotificationsUtil wrapper
@@ -45,7 +46,6 @@
 #include "llmenubutton.h"
 #include "llresmgr.h"			// getMonetaryString
 #include "llsafehandle.h"
-#include "llsidetray.h"
 #include "lltextbox.h"			// for description truncation
 #include "lltoggleablemenu.h"
 #include "lltrans.h"
@@ -640,7 +640,7 @@ void LLInspectObject::onClickMoreInfo()
 {
 	LLSD key;
 	key["task"] = "task";
-	LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);	
+	LLFloaterSidePanelContainer::showPanel("inventory", key);
 	closeFloater();
 }
 
diff --git a/indra/newview/llinspectremoteobject.cpp b/indra/newview/llinspectremoteobject.cpp
index bf6cf5229803ce02c32823e64e02e731dde3512a..a12ec390af477035e79523785c88b3b511d1ad58 100644
--- a/indra/newview/llinspectremoteobject.cpp
+++ b/indra/newview/llinspectremoteobject.cpp
@@ -60,12 +60,10 @@ class LLInspectRemoteObject : public LLInspect
 	
 private:
 	void update();
-	void onNameCache(const LLUUID& id, const std::string& name, bool is_group);
 	
 private:
 	LLUUID		 mObjectID;
 	LLUUID		 mOwnerID;
-	std::string  mOwnerLegacyName;
 	std::string  mSLurl;
 	std::string  mName;
 	bool         mGroupOwned;
@@ -75,7 +73,6 @@ LLInspectRemoteObject::LLInspectRemoteObject(const LLSD& sd) :
 	LLInspect(LLSD()),
 	mObjectID(NULL),
 	mOwnerID(NULL),
-	mOwnerLegacyName(),
 	mSLurl(""),
 	mName(""),
 	mGroupOwned(false)
@@ -111,14 +108,6 @@ void LLInspectRemoteObject::onOpen(const LLSD& data)
 	mGroupOwned = data["group_owned"].asBoolean();
 	mSLurl      = data["slurl"].asString();
 
-	// work out the owner's name
-	mOwnerLegacyName = "";
-	if (gCacheName)
-	{
-		gCacheName->get(mOwnerID, mGroupOwned,  // muting
-			boost::bind(&LLInspectRemoteObject::onNameCache, this, _1, _2, _3));
-	}
-
 	// update the inspector with the current object state
 	update();
 
@@ -144,8 +133,7 @@ void LLInspectRemoteObject::onClickMap()
 
 void LLInspectRemoteObject::onClickBlock()
 {
-	LLMute::EType mute_type = mGroupOwned ? LLMute::GROUP : LLMute::AGENT;
-	LLMute mute(mOwnerID, mOwnerLegacyName, mute_type);
+	LLMute mute(mObjectID, mName, LLMute::OBJECT);
 	LLMuteList::getInstance()->add(mute);
 	LLPanelBlockedList::showPanelAndSelect(mute.mID);
 	closeFloater();
@@ -156,12 +144,6 @@ void LLInspectRemoteObject::onClickClose()
 	closeFloater();
 }
 
-void LLInspectRemoteObject::onNameCache(const LLUUID& id, const std::string& name, bool is_group)
-{
-	mOwnerLegacyName = name;
-	update();
-}
-
 void LLInspectRemoteObject::update()
 {
 	// show the object name as the inspector's title
@@ -198,8 +180,8 @@ void LLInspectRemoteObject::update()
 	// disable the Map button if we don't have a SLurl
 	getChild<LLUICtrl>("map_btn")->setEnabled(! mSLurl.empty());
 
-	// disable the Block button if we don't have the owner ID
-	getChild<LLUICtrl>("block_btn")->setEnabled(! mOwnerID.isNull());
+	// disable the Block button if we don't have the object ID (will this ever happen?)
+	getChild<LLUICtrl>("block_btn")->setEnabled(! mObjectID.isNull());
 }
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index a36aa3dedf9ba5186d9961082d100cc773ad82ff..cebe93f04228de6d32b005fed0447e524cdfb033 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -39,6 +39,7 @@
 #include "llavataractions.h" 
 #include "llfloateropenobject.h"
 #include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfloaterworldmap.h"
 #include "llfolderview.h"
 #include "llfriendcard.h"
@@ -52,6 +53,7 @@
 #include "llinventorymodel.h"
 #include "llinventorymodelbackgroundfetch.h"
 #include "llinventorypanel.h"
+#include "llmarketplacefunctions.h"
 #include "llnotifications.h"
 #include "llnotificationsutil.h"
 #include "llpreviewanim.h"
@@ -59,7 +61,7 @@
 #include "llpreviewtexture.h"
 #include "llselectmgr.h"
 #include "llsidepanelappearance.h"
-#include "llsidetray.h"
+#include "lltooldraganddrop.h"
 #include "lltrans.h"
 #include "llviewerassettype.h"
 #include "llviewerfoldertype.h"
@@ -71,7 +73,9 @@
 #include "llwearablelist.h"
 
 // Marketplace outbox current disabled
-#define ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU	0	// keep in sync with ENABLE_INVENTORY_DISPLAY_OUTBOX, ENABLE_MERCHANT_OUTBOX_PANEL
+#define ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU	0
+#define ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU 0
+#define BLOCK_WORN_ITEMS_IN_OUTBOX 1
 
 typedef std::pair<LLUUID, LLUUID> two_uuids_t;
 typedef std::list<two_uuids_t> two_uuids_list_t;
@@ -127,6 +131,11 @@ bool isMarketplaceCopyAction(const std::string& action)
 	return (("copy_to_outbox" == action) || ("move_to_outbox" == action));
 }
 
+bool isMarketplaceSendAction(const std::string& action)
+{
+	return ("send_to_marketplace" == action);
+}
+
 // +=================================================+
 // |        LLInvFVBridge                            |
 // +=================================================+
@@ -462,14 +471,13 @@ BOOL LLInvFVBridge::isClipboardPasteableAsLink() const
 
 void hide_context_entries(LLMenuGL& menu, 
 						  const menuentry_vec_t &entries_to_show,
-						  const menuentry_vec_t &disabled_entries,
-						  BOOL append) // If append is TRUE, then new enabled entries 
+						  const menuentry_vec_t &disabled_entries)
 {
 	const LLView::child_list_t *list = menu.getChildList();
 
 	// For removing double separators or leading separator.  Start at true so that
 	// if the first element is a separator, it will not be shown.
-	BOOL is_previous_entry_separator = TRUE;
+	bool is_previous_entry_separator = true;
 
 	for (LLView::child_list_t::const_iterator itor = list->begin(); 
 		 itor != list->end(); 
@@ -485,7 +493,6 @@ void hide_context_entries(LLMenuGL& menu,
 			hide_context_entries(*branchp->getBranch(), entries_to_show, disabled_entries);
 		}
 
-
 		bool found = false;
 		menuentry_vec_t::const_iterator itor2;
 		for (itor2 = entries_to_show.begin(); itor2 != entries_to_show.end(); ++itor2)
@@ -493,6 +500,7 @@ void hide_context_entries(LLMenuGL& menu,
 			if (*itor2 == name)
 			{
 				found = true;
+				break;
 			}
 		}
 
@@ -500,9 +508,8 @@ void hide_context_entries(LLMenuGL& menu,
 		// between two separators).
 		if (found)
 		{
-			const BOOL is_entry_separator = (dynamic_cast<LLMenuItemSeparatorGL *>(menu_item) != NULL);
-			if (is_entry_separator && is_previous_entry_separator)
-				found = false;
+			const bool is_entry_separator = (dynamic_cast<LLMenuItemSeparatorGL *>(menu_item) != NULL);
+			found = !(is_entry_separator && is_previous_entry_separator);
 			is_previous_entry_separator = is_entry_separator;
 		}
 		
@@ -512,6 +519,7 @@ void hide_context_entries(LLMenuGL& menu,
 			{
 				menu_item->setVisible(FALSE);
 			}
+
 			menu_item->setEnabled(FALSE);
 		}
 		else
@@ -520,17 +528,14 @@ void hide_context_entries(LLMenuGL& menu,
 			// A bit of a hack so we can remember that some UI element explicitly set this to be visible
 			// so that some other UI element from multi-select doesn't later set this invisible.
 			menu_item->pushVisible(TRUE);
-			if (append)
-			{
-				menu_item->setEnabled(TRUE);
-			}
-			for (itor2 = disabled_entries.begin(); itor2 != disabled_entries.end(); ++itor2)
+
+			bool enabled = (menu_item->getEnabled() == TRUE);
+			for (itor2 = disabled_entries.begin(); enabled && (itor2 != disabled_entries.end()); ++itor2)
 			{
-				if (*itor2 == name)
-				{
-					menu_item->setEnabled(FALSE);
-				}
+				enabled &= (*itor2 != name);
 			}
+
+			menu_item->setEnabled(enabled);
 		}
 	}
 }
@@ -598,25 +603,16 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id,
 			{
 				items.push_back(std::string("Marketplace Separator"));
 
-				bool copyable = true;
-				LLViewerInventoryItem* inv_item = gInventory.getItem(mUUID);
-				if (inv_item)
-				{
-					copyable = inv_item->getPermissions().allowCopyBy(gAgent.getID());
-				}
-
-				const std::string merchant_action = ((copyable == true) ? "Merchant Copy" : "Merchant Move");
-				items.push_back(merchant_action);
-
+				items.push_back(std::string("Merchant Copy"));
 				if (!canListOnMarketplaceNow())
 				{
-					disabled_items.push_back(merchant_action);
+					disabled_items.push_back(std::string("Merchant Copy"));
 				}
 			}
 		}
 	}
 
-	// Don't allow items to be pasted directly into the COF or the inbox
+	// Don't allow items to be pasted directly into the COF or the inbox/outbox
 	if (!isCOFFolder() && !isInboxFolder() && !isOutboxFolder())
 	{
 		items.push_back(std::string("Paste"));
@@ -657,7 +653,7 @@ void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 	}	
 	else if(isOutboxFolder())
 	{
-		items.push_back(std::string("Delete"));
+		addOutboxContextMenuOptions(flags, items, disabled_items);
 	}
 	else
 	{
@@ -734,6 +730,32 @@ void LLInvFVBridge::addOpenRightClickMenuOption(menuentry_vec_t &items)
 		items.push_back(std::string("Open"));
 }
 
+void LLInvFVBridge::addOutboxContextMenuOptions(U32 flags,
+												menuentry_vec_t &items,
+												menuentry_vec_t &disabled_items)
+{
+	items.push_back(std::string("Rename"));
+	items.push_back(std::string("Delete"));
+	
+	if ((flags & FIRST_SELECTED_ITEM) == 0)
+	{
+		disabled_items.push_back(std::string("Rename"));
+	}
+	
+#if ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU
+	if (isOutboxFolderDirectParent())
+	{
+		items.push_back(std::string("Marketplace Separator"));
+		items.push_back(std::string("Marketplace Send"));
+		
+		if ((flags & FIRST_SELECTED_ITEM) == 0)
+		{
+			disabled_items.push_back(std::string("Marketplace Send"));
+		}
+	}
+#endif // ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU
+}
+
 // *TODO: remove this
 BOOL LLInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const
 {
@@ -854,6 +876,22 @@ BOOL LLInvFVBridge::isOutboxFolder() const
 	return gInventory.isObjectDescendentOf(mUUID, outbox_id);
 }
 
+BOOL LLInvFVBridge::isOutboxFolderDirectParent() const
+{
+	BOOL outbox_is_parent = FALSE;
+	
+	const LLInventoryCategory *cat = gInventory.getCategory(mUUID);
+
+	if (cat)
+	{
+		const LLUUID outbox_id = getOutboxFolder();
+		
+		outbox_is_parent = (outbox_id.notNull() && (outbox_id == cat->getParentUUID()));
+	}
+	
+	return outbox_is_parent;
+}
+
 const LLUUID LLInvFVBridge::getOutboxFolder() const
 {
 	const LLUUID outbox_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false, false);
@@ -1040,82 +1078,134 @@ void LLInvFVBridge::purgeItem(LLInventoryModel *model, const LLUUID &uuid)
 	}
 }
 
-BOOL LLInvFVBridge::canShare() const
+bool LLInvFVBridge::canShare() const
 {
-	if (!isAgentInventory()) return FALSE;
+	bool can_share = false;
 
-	const LLInventoryModel* model = getInventoryModel();
-	if (!model) return FALSE;
-
-	const LLViewerInventoryItem *item = model->getItem(mUUID);
-	if (item)
+	if (isAgentInventory())
 	{
-		if (!LLInventoryCollectFunctor::itemTransferCommonlyAllowed(item)) 
-			return FALSE;
-		return (BOOL)LLGiveInventory::isInventoryGiveAcceptable(item);
+		const LLInventoryModel* model = getInventoryModel();
+		if (model)
+		{
+			const LLViewerInventoryItem *item = model->getItem(mUUID);
+			if (item)
+			{
+				if (LLInventoryCollectFunctor::itemTransferCommonlyAllowed(item)) 
+				{
+					can_share = LLGiveInventory::isInventoryGiveAcceptable(item);
+				}
+			}
+			else
+			{
+				// Categories can be given.
+				can_share = (model->getCategory(mUUID) != NULL);
+			}
+		}
 	}
 
-	// Categories can be given.
-	if (model->getCategory(mUUID)) return TRUE;
-
-	return FALSE;
+	return can_share;
 }
 
-BOOL LLInvFVBridge::canListOnMarketplace() const
+bool LLInvFVBridge::canListOnMarketplace() const
 {
 #if ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU
+
 	LLInventoryModel * model = getInventoryModel();
+
 	const LLViewerInventoryCategory * cat = model->getCategory(mUUID);
 	if (cat && LLFolderType::lookupIsProtectedType(cat->getPreferredType()))
 	{
-		return FALSE;
+		return false;
 	}
 
 	if (!isAgentInventory())
 	{
-		return FALSE;
+		return false;
 	}
 	
 	if (getOutboxFolder().isNull())
 	{
-		return FALSE;
+		return false;
 	}
 
 	if (isInboxFolder() || isOutboxFolder())
 	{
-		return FALSE;
+		return false;
 	}
-
+	
 	LLViewerInventoryItem * item = model->getItem(mUUID);
-	if (item && !item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))
+	if (item)
 	{
-		return FALSE;
+		if (!item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID()))
+		{
+			return false;
+		}
+		
+		if (LLAssetType::AT_CALLINGCARD == item->getType())
+		{
+			return false;
+		}
 	}
 
-	return TRUE;
+	return true;
+
 #else
-	return FALSE;
+	return false;
 #endif
 }
 
-BOOL LLInvFVBridge::canListOnMarketplaceNow() const
+bool LLInvFVBridge::canListOnMarketplaceNow() const
 {
 #if ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU
-	if (get_is_item_worn(mUUID))
+	
+	bool can_list = true;
+
+	// Do not allow listing while import is in progress
+	if (LLMarketplaceInventoryImporter::instanceExists())
 	{
-		return FALSE;
+		can_list = !LLMarketplaceInventoryImporter::instance().isImportInProgress();
 	}
+	
+	const LLInventoryObject* obj = getInventoryObject();
+	can_list &= (obj != NULL);
 
-	// Loop through all items worn by avatar and check to see if they are descendants
-	// of the item we are trying to list on the marketplace
-	if (get_is_parent_to_worn_item(mUUID))
+	if (can_list)
 	{
-		return FALSE;
+		const LLUUID& object_id = obj->getLinkedUUID();
+		can_list = object_id.notNull();
+
+		if (can_list)
+		{
+			LLFolderViewFolder * object_folderp = mRoot->getFolderByID(object_id);
+			if (object_folderp)
+			{
+				can_list = !object_folderp->isLoading();
+			}
+		}
+		
+		if (can_list)
+		{
+			// Get outbox id
+			const LLUUID & outbox_id = getInventoryModel()->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false);
+			LLFolderViewItem * outbox_itemp = mRoot->getItemByID(outbox_id);
+
+			if (outbox_itemp)
+			{
+				MASK mask = 0x0;
+				BOOL drop = FALSE;
+				EDragAndDropType cargo_type = LLViewerAssetType::lookupDragAndDropType(obj->getActualType());
+				void * cargo_data = (void *) obj;
+				std::string tooltip_msg;
+				
+				can_list = outbox_itemp->getListener()->dragOrDrop(mask, drop, cargo_type, cargo_data, tooltip_msg);
+			}
+		}
 	}
+	
+	return can_list;
 
-	return TRUE;
 #else
-	return FALSE;
+	return false;
 #endif
 }
 
@@ -1185,7 +1275,7 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action)
 		std::string buffer;
 		asset_id.toString(buffer);
 
-		gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(buffer));
+		gViewerWindow->getWindow()->copyTextToClipboard(utf8str_to_wstring(buffer));
 		return;
 	}
 	else if ("copy" == action)
@@ -1225,7 +1315,7 @@ void LLItemBridge::performAction(LLInventoryModel* model, std::string action)
 		if (!itemp) return;
 
 		const LLUUID outbox_id = getInventoryModel()->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false, false);
-		copy_item_to_outbox(itemp, outbox_id, LLUUID::null);
+		copy_item_to_outbox(itemp, outbox_id, LLUUID::null, LLToolDragAndDrop::getOperationId());
 	}
 }
 
@@ -1235,6 +1325,7 @@ void LLItemBridge::selectItem()
 	if(item && !item->isFinished())
 	{
 		item->fetchFromServer();
+		//LLInventoryModelBackgroundFetch::instance().start(item->getUUID(), false);
 	}
 }
 
@@ -1376,16 +1467,17 @@ std::string LLItemBridge::getLabelSuffix() const
 	LLInventoryItem* item = getItem();
 	if(item)
 	{
-		// it's a bit confusing to put nocopy/nomod/etc on calling cards.
+		// Any type can have the link suffix...
+		BOOL broken_link = LLAssetType::lookupIsLinkType(item->getType());
+		if (broken_link) return BROKEN_LINK;
+
+		BOOL link = item->getIsLinkType();
+		if (link) return LINK;
+
+		// ...but it's a bit confusing to put nocopy/nomod/etc suffixes on calling cards.
 		if(LLAssetType::AT_CALLINGCARD != item->getType()
 		   && item->getPermissions().getOwner() == gAgent.getID())
 		{
-			BOOL broken_link = LLAssetType::lookupIsLinkType(item->getType());
-			if (broken_link) return BROKEN_LINK;
-
-			BOOL link = item->getIsLinkType();
-			if (link) return LINK;
-
 			BOOL copy = item->getPermissions().allowCopyBy(gAgent.getID());
 			if (!copy)
 			{
@@ -1563,11 +1655,7 @@ BOOL LLItemBridge::isItemCopyable() const
 			return FALSE;
 		}
 
-		// All items can be copied in god mode since you can
-		// at least paste-as-link the item, though you 
-		// still may not be able paste the item.
-		return TRUE;
-		// return (item->getPermissions().allowCopyBy(gAgent.getID()));
+		return item->getPermissions().allowCopyBy(gAgent.getID()) || gSavedSettings.getBOOL("InventoryLinking");
 	}
 	return FALSE;
 }
@@ -1680,12 +1768,8 @@ BOOL LLFolderBridge::isUpToDate() const
 
 BOOL LLFolderBridge::isItemCopyable() const
 {
-	if (gSavedSettings.getBOOL("InventoryLinking"))
-	{
-		// Can copy folders to paste-as-link, but not for straight paste.
-		return TRUE;
-	}
-	return FALSE;
+	// Can copy folders to paste-as-link, but not for straight paste.
+	return gSavedSettings.getBOOL("InventoryLinking");
 }
 
 BOOL LLFolderBridge::copyToClipboard() const
@@ -1786,30 +1870,41 @@ BOOL LLFolderBridge::isClipboardPasteableAsLink() const
 
 static BOOL can_move_to_outbox(LLInventoryItem* inv_item, std::string& tooltip_msg)
 {
-	bool worn = get_is_item_worn(inv_item->getUUID());
+	// Collapse links directly to items/folders
+	LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) inv_item;
+	LLViewerInventoryItem * linked_item = viewer_inv_item->getLinkedItem();
+	if (linked_item != NULL)
+	{
+		inv_item = linked_item;
+	}
+	
 	bool allow_transfer = inv_item->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID());
-
 	if (!allow_transfer)
 	{
 		tooltip_msg = LLTrans::getString("TooltipOutboxNoTransfer");
+		return false;
 	}
-	else if(worn)
+
+#if BLOCK_WORN_ITEMS_IN_OUTBOX
+	bool worn = get_is_item_worn(inv_item->getUUID());
+	if (worn)
 	{
 		tooltip_msg = LLTrans::getString("TooltipOutboxWorn");
+		return false;
+	}
+#endif
+	
+	bool calling_card = (LLAssetType::AT_CALLINGCARD == inv_item->getType());
+	if (calling_card)
+	{
+		tooltip_msg = LLTrans::getString("TooltipOutboxCallingCard");
+		return false;
 	}
 	
-	return !worn && allow_transfer;
-}
-
-
-
-void LLFolderBridge::dropFolderToOutbox(LLInventoryCategory* inv_cat)
-{
-	copy_folder_to_outbox(inv_cat, getInventoryModel()->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false), inv_cat->getUUID());	
+	return true;
 }
 
 
-
 int get_folder_levels(LLInventoryCategory* inv_cat)
 {
 	LLInventoryModel::cat_array_t* cats;
@@ -1864,54 +1959,78 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
 	if (!isAgentAvatarValid()) return FALSE;
 	if (!isAgentInventory()) return FALSE; // cannot drag categories into library
 
+	const LLUUID &cat_id = inv_cat->getUUID();
+	const LLUUID &current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false);
+	const LLUUID &outbox_id = model->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false);
+	
+	const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
+	const BOOL move_is_into_outbox = model->isObjectDescendentOf(mUUID, outbox_id); 
+	const BOOL move_is_from_outbox = model->isObjectDescendentOf(cat_id, outbox_id);
 
 	// check to make sure source is agent inventory, and is represented there.
 	LLToolDragAndDrop::ESource source = LLToolDragAndDrop::getInstance()->getSource();
-	const BOOL is_agent_inventory = (model->getCategory(inv_cat->getUUID()) != NULL)
+	const BOOL is_agent_inventory = (model->getCategory(cat_id) != NULL)
 		&& (LLToolDragAndDrop::SOURCE_AGENT == source);
 
-	const LLUUID &current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false);
-	const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id);
-
 	BOOL accept = FALSE;
 	if (is_agent_inventory)
 	{
-		const LLUUID &cat_id = inv_cat->getUUID();
 		const LLUUID &trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH, false);
 		const LLUUID &landmarks_id = model->findCategoryUUIDForType(LLFolderType::FT_LANDMARK, false);
-		const LLUUID &outbox_id = model->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false);
 
 		const BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id);
 		const BOOL move_is_into_outfit = getCategory() && (getCategory()->getPreferredType() == LLFolderType::FT_OUTFIT);
 		const BOOL move_is_into_landmarks = (mUUID == landmarks_id) || model->isObjectDescendentOf(mUUID, landmarks_id);
-		const BOOL move_is_into_outbox = model->isObjectDescendentOf(mUUID, outbox_id); 
-		const BOOL move_is_from_outbox = model->isObjectDescendentOf(inv_cat->getUUID(), outbox_id);
 
 		//--------------------------------------------------------------------------------
 		// Determine if folder can be moved.
 		//
 
 		BOOL is_movable = TRUE;
-		if (LLFolderType::lookupIsProtectedType(inv_cat->getPreferredType()))
+
+		if (is_movable && (mUUID == cat_id))
+		{
+			is_movable = FALSE;
+			tooltip_msg = LLTrans::getString("TooltipDragOntoSelf");
+		}
+		if (is_movable && (model->isObjectDescendentOf(mUUID, cat_id)))
+		{
+			is_movable = FALSE;
+			tooltip_msg = LLTrans::getString("TooltipDragOntoOwnChild");
+		}
+		if (is_movable && LLFolderType::lookupIsProtectedType(inv_cat->getPreferredType()))
+		{
 			is_movable = FALSE;
-		if (move_is_into_outfit)
+			// tooltip?
+		}
+		if (is_movable && move_is_into_outfit)
+		{
 			is_movable = FALSE;
-		if (mUUID == gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE))
+			// tooltip?
+		}
+		if (is_movable && (mUUID == model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE)))
+		{
 			is_movable = FALSE;
+			// tooltip?
+		}
+		
 		LLInventoryModel::cat_array_t descendent_categories;
 		LLInventoryModel::item_array_t descendent_items;
-		gInventory.collectDescendents(cat_id, descendent_categories, descendent_items, FALSE);
-		for (S32 i=0; i < descendent_categories.count(); ++i)
+		if (is_movable)
 		{
-			LLInventoryCategory* category = descendent_categories[i];
-			if(LLFolderType::lookupIsProtectedType(category->getPreferredType()))
+			model->collectDescendents(cat_id, descendent_categories, descendent_items, FALSE);
+			for (S32 i=0; i < descendent_categories.count(); ++i)
 			{
-				// Can't move "special folders" (e.g. Textures Folder).
-				is_movable = FALSE;
-				break;
+				LLInventoryCategory* category = descendent_categories[i];
+				if(LLFolderType::lookupIsProtectedType(category->getPreferredType()))
+				{
+					// Can't move "special folders" (e.g. Textures Folder).
+					is_movable = FALSE;
+					break;
+				}
 			}
 		}
-		if (move_is_into_trash)
+		if (is_movable && move_is_into_trash)
 		{
 			for (S32 i=0; i < descendent_items.count(); ++i)
 			{
@@ -1923,7 +2042,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
 				}
 			}
 		}
-		if (move_is_into_landmarks)
+		if (is_movable && move_is_into_landmarks)
 		{
 			for (S32 i=0; i < descendent_items.count(); ++i)
 			{
@@ -1938,35 +2057,100 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
 				}
 			}
 		}
-		if (move_is_into_outbox)
+		if (is_movable && move_is_into_outbox)
 		{
-			for (S32 i=0; i < descendent_items.count(); ++i)
+			const int nested_folder_levels = get_folder_path_length(outbox_id, mUUID) + get_folder_levels(inv_cat);
+			
+			if (nested_folder_levels > gSavedSettings.getU32("InventoryOutboxMaxFolderDepth"))
 			{
-				LLInventoryItem* item = descendent_items[i];
-				if (!can_move_to_outbox(item, tooltip_msg))
-				{
-					is_movable = FALSE;
-					break; 
-				}
+				tooltip_msg = LLTrans::getString("TooltipOutboxFolderLevels");
+				is_movable = FALSE;
 			}
+			else
+			{
+				int dragged_folder_count = descendent_categories.count();
+				int existing_item_count = 0;
+				int existing_folder_count = 0;
+				
+				const LLViewerInventoryCategory * master_folder = model->getFirstDescendantOf(outbox_id, mUUID);
+				
+				if (master_folder != NULL)
+				{
+					if (model->isObjectDescendentOf(cat_id, master_folder->getUUID()))
+					{
+						// Don't use count because we're already inside the same category anyway
+						dragged_folder_count = 0;
+					}
+					else
+					{
+						existing_folder_count = 1; // Include the master folder in the count!
 
-			int nested_folder_levels = get_folder_path_length(outbox_id, mUUID) + get_folder_levels(inv_cat);
+						// If we're in the drop operation as opposed to the drag without drop, we are doing a
+						// single category at a time so don't block based on the total amount of cargo data items
+						if (drop)
+						{
+							dragged_folder_count += 1;
+						}
+						else
+						{
+							// NOTE: The cargo id's count is a total of categories AND items but we err on the side of
+							//       prevention rather than letting too many folders into the hierarchy of the outbox,
+							//       when we're dragging the item to a new parent
+							dragged_folder_count += LLToolDragAndDrop::instance().getCargoIDsCount();
+						}
+					}
+					
+					// Tally the total number of categories and items inside the master folder
 
-			if (nested_folder_levels > 4)
-			{
-				tooltip_msg = LLTrans::getString("TooltipOutboxFolderLevels");
-				is_movable = FALSE;
+					LLInventoryModel::cat_array_t existing_categories;
+					LLInventoryModel::item_array_t existing_items;
+
+					model->collectDescendents(master_folder->getUUID(), existing_categories, existing_items, FALSE);
+					
+					existing_folder_count += existing_categories.count();
+					existing_item_count += existing_items.count();
+				}
+				else
+				{
+					// Assume a single category is being dragged to the outbox since we evaluate one at a time
+					// when not putting them under a parent item.
+					dragged_folder_count += 1;
+				}
+
+				const int nested_folder_count = existing_folder_count + dragged_folder_count;
+				const int nested_item_count = existing_item_count + descendent_items.count();
+				
+				if (nested_folder_count > gSavedSettings.getU32("InventoryOutboxMaxFolderCount"))
+				{
+					tooltip_msg = LLTrans::getString("TooltipOutboxTooManyFolders");
+					is_movable = FALSE;
+				}
+				else if (nested_item_count > gSavedSettings.getU32("InventoryOutboxMaxItemCount"))
+				{
+					tooltip_msg = LLTrans::getString("TooltipOutboxTooManyObjects");
+					is_movable = FALSE;
+				}
+				
+				if (is_movable == TRUE)
+				{
+					for (S32 i=0; i < descendent_items.count(); ++i)
+					{
+						LLInventoryItem* item = descendent_items[i];
+						if (!can_move_to_outbox(item, tooltip_msg))
+						{
+							is_movable = FALSE;
+							break; 
+						}
+					}
+				}
 			}
-			
 		}
 
 		// 
 		//--------------------------------------------------------------------------------
 
-		accept = is_movable
-			&& (mUUID != cat_id)								// Can't move a folder into itself
-			&& (mUUID != inv_cat->getParentUUID())				// Avoid moves that would change nothing
-			&& !(model->isObjectDescendentOf(mUUID, cat_id));	// Avoid circularity
+		accept = is_movable;
+
 		if (accept && drop)
 		{
 			// Look for any gestures and deactivate them
@@ -1998,7 +2182,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
 						// Recursively create links in target outfit.
 						LLInventoryModel::cat_array_t cats;
 						LLInventoryModel::item_array_t items;
-						gInventory.collectDescendents(inv_cat->getUUID(), cats, items, LLInventoryModel::EXCLUDE_TRASH);
+						model->collectDescendents(cat_id, cats, items, LLInventoryModel::EXCLUDE_TRASH);
 						LLAppearanceMgr::instance().linkAll(mUUID,items,NULL);
 					}
 				}
@@ -2016,7 +2200,7 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
 						const std::string empty_description = "";
 						link_inventory_item(
 							gAgent.getID(),
-							inv_cat->getUUID(),
+							cat_id,
 							mUUID,
 							inv_cat->getName(),
 							empty_description,
@@ -2026,15 +2210,15 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
 #endif
 				}
 			}
-			if (move_is_into_outbox && !move_is_from_outbox)
+			else if (move_is_into_outbox && !move_is_from_outbox)
 			{
-				dropFolderToOutbox(inv_cat);
+				copy_folder_to_outbox(inv_cat, mUUID, cat_id, LLToolDragAndDrop::getOperationId());
 			}
 			else
 			{
-				if (gInventory.isObjectDescendentOf(inv_cat->getUUID(), gInventory.findCategoryUUIDForType(LLFolderType::FT_INBOX, false, false)))
+				if (model->isObjectDescendentOf(cat_id, model->findCategoryUUIDForType(LLFolderType::FT_INBOX, false, false)))
 				{
-					set_dad_inbox_object(inv_cat->getUUID());
+					set_dad_inbox_object(cat_id);
 				}
 
 				// Reparent the folder and restamp children if it's moving
@@ -2049,15 +2233,28 @@ BOOL LLFolderBridge::dragCategoryIntoFolder(LLInventoryCategory* inv_cat,
 	}
 	else if (LLToolDragAndDrop::SOURCE_WORLD == source)
 	{
-		// content category has same ID as object itself
-		LLUUID object_id = inv_cat->getUUID();
-		LLUUID category_id = mUUID;
-		accept = move_inv_category_world_to_agent(object_id, category_id, drop);
+		if (move_is_into_outbox)
+		{
+			tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory");
+			accept = FALSE;
+		}
+		else
+		{
+			accept = move_inv_category_world_to_agent(cat_id, mUUID, drop);
+		}
 	}
 	else if (LLToolDragAndDrop::SOURCE_LIBRARY == source)
 	{
-		// Accept folders that contain complete outfits.
-		accept = move_is_into_current_outfit && LLAppearanceMgr::instance().getCanMakeFolderIntoOutfit(inv_cat->getUUID());
+		if (move_is_into_outbox)
+		{
+			tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory");
+			accept = FALSE;
+		}
+		else
+		{
+			// Accept folders that contain complete outfits.
+			accept = move_is_into_current_outfit && LLAppearanceMgr::instance().getCanMakeFolderIntoOutfit(cat_id);
+		}		
 
 		if (accept && drop)
 		{
@@ -2200,7 +2397,6 @@ class LLRightClickInventoryFetchObserver : public LLInventoryFetchItemsObserver
 		delete this;
 	}
 
-
 protected:
 	LLUUID mCatID;
 	bool mCopyItems;
@@ -2304,15 +2500,15 @@ void LLRightClickInventoryFetchDescendentsObserver::done()
 class LLInventoryCopyAndWearObserver : public LLInventoryObserver
 {
 public:
-	LLInventoryCopyAndWearObserver(const LLUUID& cat_id, int count) :
-		mCatID(cat_id), mContentsCount(count), mFolderAdded(FALSE) {}
+	LLInventoryCopyAndWearObserver(const LLUUID& cat_id, int count, bool folder_added=false) :
+		mCatID(cat_id), mContentsCount(count), mFolderAdded(folder_added) {}
 	virtual ~LLInventoryCopyAndWearObserver() {}
 	virtual void changed(U32 mask);
 
 protected:
 	LLUUID mCatID;
 	int    mContentsCount;
-	BOOL   mFolderAdded;
+	bool   mFolderAdded;
 };
 
 
@@ -2340,7 +2536,6 @@ void LLInventoryCopyAndWearObserver::changed(U32 mask)
 		if (mFolderAdded)
 		{
 			LLViewerInventoryCategory* category = gInventory.getCategory(mCatID);
-
 			if (NULL == category)
 			{
 				llwarns << "gInventory.getCategory(" << mCatID
@@ -2450,8 +2645,19 @@ void LLFolderBridge::performAction(LLInventoryModel* model, std::string action)
 		if (!cat) return;
 
 		const LLUUID outbox_id = getInventoryModel()->findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false, false);
-		copy_folder_to_outbox(cat, outbox_id, cat->getUUID());
+		copy_folder_to_outbox(cat, outbox_id, cat->getUUID(), LLToolDragAndDrop::getOperationId());
 	}
+#if ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU
+	else if (isMarketplaceSendAction(action))
+	{
+		llinfos << "Send to marketplace action!" << llendl;
+
+		LLInventoryCategory * cat = gInventory.getCategory(mUUID);
+		if (!cat) return;
+		
+		send_to_marketplace(cat);
+	}
+#endif // ENABLE_MERCHANT_SEND_TO_MARKETPLACE_CONTEXT_MENU
 }
 
 void LLFolderBridge::openItem()
@@ -2718,129 +2924,30 @@ void LLFolderBridge::pasteLinkFromClipboard()
 void LLFolderBridge::staticFolderOptionsMenu()
 {
 	LLFolderBridge* selfp = sSelf.get();
-	if (selfp)
+
+	if (selfp && selfp->mRoot)
 	{
-		selfp->folderOptionsMenu();
+		selfp->mRoot->updateMenu();
 	}
 }
 
-void LLFolderBridge::folderOptionsMenu()
+BOOL LLFolderBridge::checkFolderForContentsOfType(LLInventoryModel* model, LLInventoryCollectFunctor& is_type)
+{
+	LLInventoryModel::cat_array_t cat_array;
+	LLInventoryModel::item_array_t item_array;
+	model->collectDescendentsIf(mUUID,
+								cat_array,
+								item_array,
+								LLInventoryModel::EXCLUDE_TRASH,
+								is_type);
+	return ((item_array.count() > 0) ? TRUE : FALSE );
+}
+
+void LLFolderBridge::buildContextMenuBaseOptions(U32 flags)
 {
 	LLInventoryModel* model = getInventoryModel();
-	if(!model) return;
-
-	const LLInventoryCategory* category = model->getCategory(mUUID);
-	if(!category) return;
+	llassert(model != NULL);
 
-	const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
-	if (trash_id == mUUID) return;
-	if (isItemInTrash()) return;
-	if (!isAgentInventory()) return;
-	if (isOutboxFolder()) return;
-
-	LLFolderType::EType type = category->getPreferredType();
-	const bool is_system_folder = LLFolderType::lookupIsProtectedType(type);
-	// BAP change once we're no longer treating regular categories as ensembles.
-	const bool is_ensemble = (type == LLFolderType::FT_NONE ||
-							  LLFolderType::lookupIsEnsembleType(type));
-
-	// Only enable calling-card related options for non-system folders.
-	if (!is_system_folder)
-	{
-		LLIsType is_callingcard(LLAssetType::AT_CALLINGCARD);
-		if (mCallingCards || checkFolderForContentsOfType(model, is_callingcard))
-		{
-			mItems.push_back(std::string("Calling Card Separator"));
-			mItems.push_back(std::string("Conference Chat Folder"));
-			mItems.push_back(std::string("IM All Contacts In Folder"));
-		}
-	}
-
-	if (!isItemRemovable())
-	{
-		mDisabledItems.push_back(std::string("Delete"));
-	}
-
-#ifndef LL_RELEASE_FOR_DOWNLOAD
-	if (LLFolderType::lookupIsProtectedType(type))
-	{
-		mItems.push_back(std::string("Delete System Folder"));
-	}
-#endif
-
-	// wearables related functionality for folders.
-	//is_wearable
-	LLFindWearables is_wearable;
-	LLIsType is_object( LLAssetType::AT_OBJECT );
-	LLIsType is_gesture( LLAssetType::AT_GESTURE );
-
-	if (mWearables ||
-		checkFolderForContentsOfType(model, is_wearable)  ||
-		checkFolderForContentsOfType(model, is_object) ||
-		checkFolderForContentsOfType(model, is_gesture) )
-	{
-		mItems.push_back(std::string("Folder Wearables Separator"));
-
-		// Only enable add/replace outfit for non-system folders.
-		if (!is_system_folder)
-		{
-			// Adding an outfit onto another (versus replacing) doesn't make sense.
-			if (type != LLFolderType::FT_OUTFIT)
-			{
-				mItems.push_back(std::string("Add To Outfit"));
-			}
-
-			mItems.push_back(std::string("Replace Outfit"));
-		}
-		if (is_ensemble)
-		{
-			mItems.push_back(std::string("Wear As Ensemble"));
-		}
-		mItems.push_back(std::string("Remove From Outfit"));
-		if (!LLAppearanceMgr::getCanRemoveFromCOF(mUUID))
-		{
-			mDisabledItems.push_back(std::string("Remove From Outfit"));
-		}
-		if (!LLAppearanceMgr::instance().getCanReplaceCOF(mUUID))
-		{
-			mDisabledItems.push_back(std::string("Replace Outfit"));
-		}
-		mItems.push_back(std::string("Outfit Separator"));
-	}
-	LLMenuGL* menup = dynamic_cast<LLMenuGL*>(mMenu.get());
-	if (menup)
-	{
-		hide_context_entries(*menup, mItems, mDisabledItems, TRUE);
-
-		// Reposition the menu, in case we're adding items to an existing menu.
-		menup->needsArrange();
-		menup->arrangeAndClear();
-	}
-}
-
-BOOL LLFolderBridge::checkFolderForContentsOfType(LLInventoryModel* model, LLInventoryCollectFunctor& is_type)
-{
-	LLInventoryModel::cat_array_t cat_array;
-	LLInventoryModel::item_array_t item_array;
-	model->collectDescendentsIf(mUUID,
-								cat_array,
-								item_array,
-								LLInventoryModel::EXCLUDE_TRASH,
-								is_type);
-	return ((item_array.count() > 0) ? TRUE : FALSE );
-}
-
-// Flags unused
-void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
-{
-	mItems.clear();
-	mDisabledItems.clear();
-
-	lldebugs << "LLFolderBridge::buildContextMenu()" << llendl;
-
-//	menuentry_vec_t disabled_items;
-	LLInventoryModel* model = getInventoryModel();
-	if(!model) return;
 	const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
 	const LLUUID lost_and_found_id = model->findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND);
 
@@ -2857,10 +2964,6 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 		mDisabledItems.push_back(std::string("New Body Parts"));
 	}
 
-	// clear out old menu and folder pointers
-	mMenu.markDead();
-	sSelf.markDead();
-
 	if(trash_id == mUUID)
 	{
 		// This is the trash.
@@ -2874,20 +2977,23 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 	}
 	else if(isOutboxFolder())
 	{
-		mItems.push_back(std::string("Delete"));
+		addOutboxContextMenuOptions(flags, mItems, mDisabledItems);
 	}
 	else if(isAgentInventory()) // do not allow creating in library
 	{
-		LLViewerInventoryCategory *cat =  getCategory();
+		LLViewerInventoryCategory *cat = getCategory();
 		// BAP removed protected check to re-enable standard ops in untyped folders.
 		// Not sure what the right thing is to do here.
 		if (!isCOFFolder() && cat && (cat->getPreferredType() != LLFolderType::FT_OUTFIT))
 		{
-			if (!isInboxFolder() && !isOutboxFolder()) // don't allow creation in inbox
+			if (!isInboxFolder() && !isOutboxFolder()) // don't allow creation in inbox or outbox
 			{
 				// Do not allow to create 2-level subfolder in the Calling Card/Friends folder. EXT-694.
 				if (!LLFriendCardsManager::instance().isCategoryInFriendFolder(cat))
+				{
 					mItems.push_back(std::string("New Folder"));
+				}
+
 				mItems.push_back(std::string("New Script"));
 				mItems.push_back(std::string("New Note"));
 				mItems.push_back(std::string("New Gesture"));
@@ -2958,34 +3064,138 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 			mDisabledItems.push_back(std::string("Share"));
 		}
 	}
+}
 
-	hide_context_entries(menu, mItems, mDisabledItems);
+void LLFolderBridge::buildContextMenuFolderOptions(U32 flags)
+{
+	// Build folder specific options back up
+	LLInventoryModel* model = getInventoryModel();
+	if(!model) return;
 
-	// Add menu items that are dependent on the contents of the folder.
-	uuid_vec_t folders;
-	LLViewerInventoryCategory* category = (LLViewerInventoryCategory*)model->getCategory(mUUID);
-	if (category)
+	const LLInventoryCategory* category = model->getCategory(mUUID);
+	if(!category) return;
+
+	const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH);
+	if (trash_id == mUUID) return;
+	if (isItemInTrash()) return;
+	if (!isAgentInventory()) return;
+	if (isOutboxFolder()) return;
+
+	LLFolderType::EType type = category->getPreferredType();
+	const bool is_system_folder = LLFolderType::lookupIsProtectedType(type);
+	// BAP change once we're no longer treating regular categories as ensembles.
+	const bool is_ensemble = (type == LLFolderType::FT_NONE ||
+		LLFolderType::lookupIsEnsembleType(type));
+
+	// Only enable calling-card related options for non-system folders.
+	if (!is_system_folder)
 	{
-		folders.push_back(category->getUUID());
+		LLIsType is_callingcard(LLAssetType::AT_CALLINGCARD);
+		if (mCallingCards || checkFolderForContentsOfType(model, is_callingcard))
+		{
+			mItems.push_back(std::string("Calling Card Separator"));
+			mItems.push_back(std::string("Conference Chat Folder"));
+			mItems.push_back(std::string("IM All Contacts In Folder"));
+		}
 	}
 
-	mMenu = menu.getHandle();
-	sSelf = getHandle();
-	LLRightClickInventoryFetchDescendentsObserver* fetch = new LLRightClickInventoryFetchDescendentsObserver(folders, FALSE);
-	fetch->startFetch();
-	inc_busy_count();
-	if(fetch->isFinished())
+	if (!isItemRemovable())
 	{
-		// everything is already here - call done.
-		fetch->done();
+		mDisabledItems.push_back(std::string("Delete"));
 	}
-	else
+
+#ifndef LL_RELEASE_FOR_DOWNLOAD
+	if (LLFolderType::lookupIsProtectedType(type))
 	{
-		// it's all on its way - add an observer, and the inventory will call done for us when everything is here.
-		gInventory.addObserver(fetch);
+		mItems.push_back(std::string("Delete System Folder"));
+	}
+#endif
+
+	// wearables related functionality for folders.
+	//is_wearable
+	LLFindWearables is_wearable;
+	LLIsType is_object( LLAssetType::AT_OBJECT );
+	LLIsType is_gesture( LLAssetType::AT_GESTURE );
+
+	if (mWearables ||
+		checkFolderForContentsOfType(model, is_wearable)  ||
+		checkFolderForContentsOfType(model, is_object) ||
+		checkFolderForContentsOfType(model, is_gesture) )
+	{
+		mItems.push_back(std::string("Folder Wearables Separator"));
+
+		// Only enable add/replace outfit for non-system folders.
+		if (!is_system_folder)
+		{
+			// Adding an outfit onto another (versus replacing) doesn't make sense.
+			if (type != LLFolderType::FT_OUTFIT)
+			{
+				mItems.push_back(std::string("Add To Outfit"));
+			}
+
+			mItems.push_back(std::string("Replace Outfit"));
+		}
+		if (is_ensemble)
+		{
+			mItems.push_back(std::string("Wear As Ensemble"));
+		}
+		mItems.push_back(std::string("Remove From Outfit"));
+		if (!LLAppearanceMgr::getCanRemoveFromCOF(mUUID))
+		{
+			mDisabledItems.push_back(std::string("Remove From Outfit"));
+		}
+		if (!LLAppearanceMgr::instance().getCanReplaceCOF(mUUID))
+		{
+			mDisabledItems.push_back(std::string("Replace Outfit"));
+		}
+		mItems.push_back(std::string("Outfit Separator"));
 	}
 }
 
+// Flags unused
+void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
+{
+	sSelf.markDead();
+
+	mItems.clear();
+	mDisabledItems.clear();
+
+	lldebugs << "LLFolderBridge::buildContextMenu()" << llendl;
+
+	LLInventoryModel* model = getInventoryModel();
+	if(!model) return;
+
+	buildContextMenuBaseOptions(flags);
+
+	// Add menu items that are dependent on the contents of the folder.
+	LLViewerInventoryCategory* category = (LLViewerInventoryCategory *) model->getCategory(mUUID);
+	if (category)
+	{
+		uuid_vec_t folders;
+		folders.push_back(category->getUUID());
+
+		sSelf = getHandle();
+		LLRightClickInventoryFetchDescendentsObserver* fetch = new LLRightClickInventoryFetchDescendentsObserver(folders, FALSE);
+		fetch->startFetch();
+		inc_busy_count();
+		if (fetch->isFinished())
+		{
+			buildContextMenuFolderOptions(flags);
+		}
+		else
+		{
+			// it's all on its way - add an observer, and the inventory will call done for us when everything is here.
+			gInventory.addObserver(fetch);
+		}
+	}
+
+	hide_context_entries(menu, mItems, mDisabledItems);
+
+	// Reposition the menu, in case we're adding items to an existing menu.
+	menu.needsArrange();
+	menu.arrangeAndClear();
+}
+
 BOOL LLFolderBridge::hasChildren() const
 {
 	LLInventoryModel* model = getInventoryModel();
@@ -3187,13 +3397,13 @@ bool move_task_inventory_callback(const LLSD& notification, const LLSD& response
 
 	if(option == 0 && object)
 	{
-		if (cat_and_wear && cat_and_wear->mWear)
+		if (cat_and_wear && cat_and_wear->mWear) // && !cat_and_wear->mFolderResponded)
 		{
 			LLInventoryObject::object_list_t inventory_objects;
 			object->getInventoryContents(inventory_objects);
 			int contents_count = inventory_objects.size()-1; //subtract one for containing folder
-
-			LLInventoryCopyAndWearObserver* inventoryObserver = new LLInventoryCopyAndWearObserver(cat_and_wear->mCatID, contents_count);
+			LLInventoryCopyAndWearObserver* inventoryObserver = new LLInventoryCopyAndWearObserver(cat_and_wear->mCatID, contents_count, cat_and_wear->mFolderResponded);
+			
 			gInventory.addObserver(inventoryObserver);
 		}
 
@@ -3306,8 +3516,8 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 {
 	LLInventoryModel* model = getInventoryModel();
 
-	if(!model || !inv_item) return FALSE;
-	if(!isAgentInventory()) return FALSE; // cannot drag into library
+	if (!model || !inv_item) return FALSE;
+	if (!isAgentInventory()) return FALSE; // cannot drag into library
 	if (!isAgentAvatarValid()) return FALSE;
 
 	const LLUUID &current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false);
@@ -3375,10 +3585,14 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 		accept = TRUE;
 
 		if (!is_movable) 
+		{
 			accept = FALSE;
-		if ((mUUID == inv_item->getParentUUID()) && !move_is_into_favorites)
+		}
+		else if ((mUUID == inv_item->getParentUUID()) && !move_is_into_favorites)
+		{
 			accept = FALSE;
-		if (move_is_into_current_outfit || move_is_into_outfit)
+		}
+		else if (move_is_into_current_outfit || move_is_into_outfit)
 		{
 			accept = can_move_to_outfit(inv_item, move_is_into_current_outfit);
 		}
@@ -3389,9 +3603,32 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 		else if (move_is_into_outbox)
 		{
 			accept = can_move_to_outbox(inv_item, tooltip_msg);
+			
+			if (accept)
+			{
+				const LLViewerInventoryCategory * master_folder = model->getFirstDescendantOf(outbox_id, mUUID);
+				
+				int existing_item_count = LLToolDragAndDrop::instance().getCargoIDsCount();
+				
+				if (master_folder != NULL)
+				{
+					LLInventoryModel::cat_array_t existing_categories;
+					LLInventoryModel::item_array_t existing_items;
+					
+					gInventory.collectDescendents(master_folder->getUUID(), existing_categories, existing_items, FALSE);
+					
+					existing_item_count += existing_items.count();
+				}
+				
+				if (existing_item_count > gSavedSettings.getU32("InventoryOutboxMaxItemCount"))
+				{
+					tooltip_msg = LLTrans::getString("TooltipOutboxTooManyObjects");
+					accept = FALSE;
+				}
+			}
 		}
 
-		if(accept && drop)
+		if (accept && drop)
 		{
 			if (inv_item->getType() == LLAssetType::AT_GESTURE
 				&& LLGestureMgr::instance().isGestureActive(inv_item->getUUID()) && move_is_into_trash)
@@ -3440,9 +3677,16 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 			{
 				dropToOutfit(inv_item, move_is_into_current_outfit);
 			}
-			else if (move_is_into_outbox && !move_is_from_outbox)
+			else if (move_is_into_outbox)
 			{
-				copy_item_to_outbox(inv_item, outbox_id, LLUUID::null);
+				if (move_is_from_outbox)
+				{
+					move_item_within_outbox(inv_item, mUUID, LLToolDragAndDrop::getOperationId());
+				}
+				else
+				{
+					copy_item_to_outbox(inv_item, mUUID, LLUUID::null, LLToolDragAndDrop::getOperationId());
+				}
 			}
 			// NORMAL or TRASH folder
 			// (move the item, restamp if into trash)
@@ -3463,7 +3707,6 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 
 			// 
 			//--------------------------------------------------------------------------------
-
 		}
 	}
 	else if (LLToolDragAndDrop::SOURCE_WORLD == source)
@@ -3472,7 +3715,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 		// anonymous objects, it would be possible to bypass
 		// permissions.
 		object = gObjectList.findObject(inv_item->getParentUUID());
-		if(!object)
+		if (!object)
 		{
 			llinfos << "Object not found for drop." << llendl;
 			return FALSE;
@@ -3482,10 +3725,9 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 		// move/copy this item.
 		LLPermissions perm(inv_item->getPermissions());
 		BOOL is_move = FALSE;
-		if((perm.allowCopyBy(gAgent.getID(), gAgent.getGroupID())
+		if ((perm.allowCopyBy(gAgent.getID(), gAgent.getGroupID())
 			&& perm.allowTransferTo(gAgent.getID())))
 			// || gAgent.isGodlike())
-
 		{
 			accept = TRUE;
 		}
@@ -3501,7 +3743,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 		// Don't allow placing an original item into Current Outfit or an outfit folder
 		// because they must contain only links to wearable items.
 		// *TODO: Probably we should create a link to an item if it was dragged to outfit or COF.
-		if(move_is_into_current_outfit || move_is_into_outfit)
+		if (move_is_into_current_outfit || move_is_into_outfit)
 		{
 			accept = FALSE;
 		}
@@ -3512,8 +3754,13 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 		{
 			accept = FALSE;
 		}
-
-		if(drop && accept)
+		else if (move_is_into_outbox)
+		{
+			tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory");
+			accept = FALSE;
+		}
+		
+		if (accept && drop)
 		{
 			LLMoveInv* move_inv = new LLMoveInv;
 			move_inv->mObjectID = inv_item->getParentUUID();
@@ -3535,18 +3782,27 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 				LLNotifications::instance().forceResponse(params, 0);
 			}
 		}
-
 	}
 	else if(LLToolDragAndDrop::SOURCE_NOTECARD == source)
 	{
-		// Don't allow placing an original item from a notecard to Current Outfit or an outfit folder
-		// because they must contain only links to wearable items.
-		accept = !(move_is_into_current_outfit || move_is_into_outfit);
-
-		if(drop)
+		if (move_is_into_outbox)
 		{
-			copy_inventory_from_notecard(LLToolDragAndDrop::getInstance()->getObjectID(),
-										 LLToolDragAndDrop::getInstance()->getSourceID(), inv_item);
+			tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory");
+			accept = FALSE;
+		}
+		else
+		{
+			// Don't allow placing an original item from a notecard to Current Outfit or an outfit folder
+			// because they must contain only links to wearable items.
+			accept = !(move_is_into_current_outfit || move_is_into_outfit);
+		}
+		
+		if (accept && drop)
+		{
+			copy_inventory_from_notecard(mUUID,  // Drop to the chosen destination folder
+										 LLToolDragAndDrop::getInstance()->getObjectID(),
+										 LLToolDragAndDrop::getInstance()->getSourceID(),
+										 inv_item);
 		}
 	}
 	else if(LLToolDragAndDrop::SOURCE_LIBRARY == source)
@@ -3556,7 +3812,12 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
 		{
 			accept = TRUE;
 
-			if (move_is_into_current_outfit || move_is_into_outfit)
+			if (move_is_into_outbox)
+			{
+				tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory");
+				accept = FALSE;
+			}
+			else if (move_is_into_current_outfit || move_is_into_outfit)
 			{
 				accept = can_move_to_outfit(inv_item, move_is_into_current_outfit);
 			}
@@ -3647,7 +3908,7 @@ void LLTextureBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 	}	
 	else if(isOutboxFolder())
 	{
-		items.push_back(std::string("Delete"));
+		addOutboxContextMenuOptions(flags, items, disabled_items);
 	}
 	else
 	{
@@ -3721,29 +3982,29 @@ void LLSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 	menuentry_vec_t items;
 	menuentry_vec_t disabled_items;
 
-	if(isItemInTrash())
+	if (isOutboxFolder())
 	{
-		addTrashContextMenuOptions(items, disabled_items);
-	}	
-	else if(isOutboxFolder())
-	{
-		items.push_back(std::string("Delete"));
+		addOutboxContextMenuOptions(flags, items, disabled_items);
 	}
 	else
 	{
-		items.push_back(std::string("Share"));
-		if (!canShare())
+		if (isItemInTrash())
 		{
-			disabled_items.push_back(std::string("Share"));
-		}
-		items.push_back(std::string("Sound Open"));
-		items.push_back(std::string("Properties"));
+			addTrashContextMenuOptions(items, disabled_items);
+		}	
+		else
+		{
+			items.push_back(std::string("Share"));
+			if (!canShare())
+			{
+				disabled_items.push_back(std::string("Share"));
+			}
+			items.push_back(std::string("Sound Open"));
+			items.push_back(std::string("Properties"));
 
-		getClipboardEntries(true, items, disabled_items, flags);
-	}
+			getClipboardEntries(true, items, disabled_items, flags);
+		}
 
-	if (!isOutboxFolder())
-	{
 		items.push_back(std::string("Sound Separator"));
 		items.push_back(std::string("Sound Play"));
 	}
@@ -3779,29 +4040,29 @@ void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 	menuentry_vec_t disabled_items;
 
 	lldebugs << "LLLandmarkBridge::buildContextMenu()" << llendl;
-	if(isItemInTrash())
+	if(isOutboxFolder())
 	{
-		addTrashContextMenuOptions(items, disabled_items);
-	}	
-	else if(isOutboxFolder())
-	{
-		items.push_back(std::string("Delete"));
+		addOutboxContextMenuOptions(flags, items, disabled_items);
 	}
 	else
 	{
-		items.push_back(std::string("Share"));
-		if (!canShare())
+		if(isItemInTrash())
 		{
-			disabled_items.push_back(std::string("Share"));
-		}
-		items.push_back(std::string("Landmark Open"));
-		items.push_back(std::string("Properties"));
+			addTrashContextMenuOptions(items, disabled_items);
+		}	
+		else
+		{
+			items.push_back(std::string("Share"));
+			if (!canShare())
+			{
+				disabled_items.push_back(std::string("Share"));
+			}
+			items.push_back(std::string("Landmark Open"));
+			items.push_back(std::string("Properties"));
 
-		getClipboardEntries(true, items, disabled_items, flags);
-	}
+			getClipboardEntries(true, items, disabled_items, flags);
+		}
 
-	if (!isOutboxFolder())
-	{
 		items.push_back(std::string("Landmark Separator"));
 		items.push_back(std::string("About Landmark"));
 	}
@@ -3851,7 +4112,7 @@ void LLLandmarkBridge::performAction(LLInventoryModel* model, std::string action
 			key["type"] = "landmark";
 			key["id"] = item->getUUID();
 
-			LLSideTray::getInstance()->showPanel("panel_places", key);
+			LLFloaterSidePanelContainer::showPanel("places", key);
 		}
 	}
 	else
@@ -4334,36 +4595,35 @@ void LLAnimationBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 	menuentry_vec_t disabled_items;
 
 	lldebugs << "LLAnimationBridge::buildContextMenu()" << llendl;
-	if(isItemInTrash())
-	{
-		addTrashContextMenuOptions(items, disabled_items);
-	}	
-	else if(isOutboxFolder())
+	if(isOutboxFolder())
 	{
 		items.push_back(std::string("Delete"));
 	}
 	else
 	{
-		items.push_back(std::string("Share"));
-		if (!canShare())
+		if(isItemInTrash())
 		{
-			disabled_items.push_back(std::string("Share"));
-		}
-		items.push_back(std::string("Animation Open"));
-		items.push_back(std::string("Properties"));
+			addTrashContextMenuOptions(items, disabled_items);
+		}	
+		else
+		{
+			items.push_back(std::string("Share"));
+			if (!canShare())
+			{
+				disabled_items.push_back(std::string("Share"));
+			}
+			items.push_back(std::string("Animation Open"));
+			items.push_back(std::string("Properties"));
 
-		getClipboardEntries(true, items, disabled_items, flags);
-	}
+			getClipboardEntries(true, items, disabled_items, flags);
+		}
 
-	if (!isOutboxFolder())
-	{
 		items.push_back(std::string("Animation Separator"));
 		items.push_back(std::string("Animation Play"));
 		items.push_back(std::string("Animation Audition"));
 	}
 
 	hide_context_entries(menu, items, disabled_items);
-
 }
 
 // virtual
@@ -4780,7 +5040,7 @@ void remove_inventory_category_from_avatar( LLInventoryCategory* category )
 	if (gAgentCamera.cameraCustomizeAvatar())
 	{
 		// switching to outfit editor should automagically save any currently edited wearable
-		LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+		LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
 	}
 
 	remove_inventory_category_from_avatar_step2(TRUE, category->getUUID() );
@@ -5348,7 +5608,7 @@ void LLMeshBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 	}
 	else if(isOutboxFolder())
 	{
-		items.push_back(std::string("Delete"));
+		addOutboxContextMenuOptions(flags, items, disabled_items);
 	}
 	else
 	{
@@ -5357,7 +5617,6 @@ void LLMeshBridge::buildContextMenu(LLMenuGL& menu, U32 flags)
 		getClipboardEntries(true, items, disabled_items, flags);
 	}
 
-
 	hide_context_entries(menu, items, disabled_items);
 }
 
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index 2d625befb4cff555fb26f94ad01e3de584016aba..871657a58ae0afd808b59857d13168576f4e0593 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -69,9 +69,9 @@ class LLInvFVBridge : public LLFolderViewEventListener
 									   U32 flags = 0x00);
 	virtual ~LLInvFVBridge() {}
 
-	BOOL canShare() const;
-	BOOL canListOnMarketplace() const;
-	BOOL canListOnMarketplaceNow() const;
+	bool canShare() const;
+	bool canListOnMarketplace() const;
+	bool canListOnMarketplaceNow() const;
 
 	//--------------------------------------------------------------------
 	// LLInvFVBridge functionality
@@ -131,6 +131,9 @@ class LLInvFVBridge : public LLFolderViewEventListener
 	virtual void addDeleteContextMenuOptions(menuentry_vec_t &items,
 											 menuentry_vec_t &disabled_items);
 	virtual void addOpenRightClickMenuOption(menuentry_vec_t &items);
+	virtual void addOutboxContextMenuOptions(U32 flags,
+											 menuentry_vec_t &items,
+											 menuentry_vec_t &disabled_items);
 protected:
 	LLInvFVBridge(LLInventoryPanel* inventory, LLFolderView* root, const LLUUID& uuid);
 
@@ -144,6 +147,7 @@ class LLInvFVBridge : public LLFolderViewEventListener
 	BOOL isCOFFolder() const; // true if COF or descendent of
 	BOOL isInboxFolder() const; // true if COF or descendent of marketplace inbox
 	BOOL isOutboxFolder() const; // true if COF or descendent of marketplace outbox
+	BOOL isOutboxFolderDirectParent() const;
 	const LLUUID getOutboxFolder() const;
 
 	virtual BOOL isItemPermissive() const;
@@ -278,6 +282,9 @@ class LLFolderBridge : public LLInvFVBridge
 	LLHandle<LLFolderBridge> getHandle() { mHandle.bind(this); return mHandle; }
 
 protected:
+	void buildContextMenuBaseOptions(U32 flags);
+	void buildContextMenuFolderOptions(U32 flags);
+
 	//--------------------------------------------------------------------
 	// Menu callbacks
 	//--------------------------------------------------------------------
@@ -306,8 +313,6 @@ class LLFolderBridge : public LLInvFVBridge
 
 	void dropToFavorites(LLInventoryItem* inv_item);
 	void dropToOutfit(LLInventoryItem* inv_item, BOOL move_is_into_current_outfit);
-	void dropToOutbox(LLInventoryItem* inv_item);
-	void dropFolderToOutbox(LLInventoryCategory* inv_cat);
 
 	//--------------------------------------------------------------------
 	// Messy hacks for handling folder options
@@ -315,12 +320,10 @@ class LLFolderBridge : public LLInvFVBridge
 public:
 	static LLHandle<LLFolderBridge> sSelf;
 	static void staticFolderOptionsMenu();
-	void folderOptionsMenu();
 
 private:
 	BOOL				mCallingCards;
 	BOOL				mWearables;
-	LLHandle<LLView>	mMenu;
 	menuentry_vec_t		mItems;
 	menuentry_vec_t		mDisabledItems;
 	LLRootHandle<LLFolderBridge> mHandle;
@@ -650,7 +653,6 @@ BOOL move_inv_category_world_to_agent(const LLUUID& object_id,
 // are set as enabled.
 void hide_context_entries(LLMenuGL& menu, 
 						  const menuentry_vec_t &entries_to_show, 
-						  const menuentry_vec_t &disabled_entries,
-						  BOOL append = FALSE);
+						  const menuentry_vec_t &disabled_entries);
 
 #endif // LL_LLINVENTORYBRIDGE_H
diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp
index 516b47e616dfe7a7239d12ce75d2ff12d3daf542..d54bce4619d3fff2c82c59917ed74c2f7df170b9 100644
--- a/indra/newview/llinventoryfilter.cpp
+++ b/indra/newview/llinventoryfilter.cpp
@@ -36,6 +36,7 @@
 #include "llviewercontrol.h"
 #include "llfolderview.h"
 #include "llinventorybridge.h"
+#include "llviewerfoldertype.h"
 
 // linden library includes
 #include "lltrans.h"
@@ -117,7 +118,7 @@ bool LLInventoryFilter::checkFolder(const LLFolderViewFolder* folder)
 
 	const LLFolderViewEventListener* listener = folder->getListener();
 	const LLUUID folder_id = listener->getUUID();
-
+	
 	if (mFilterOps.mFilterTypes & FILTERTYPE_CATEGORY)
 	{
 		// Can only filter categories for items in your inventory
@@ -206,6 +207,23 @@ BOOL LLInventoryFilter::checkAgainstFilterType(const LLFolderViewItem* item) con
 		}
 	}
 
+	////////////////////////////////////////////////////////////////////////////////
+	// FILTERTYPE_EMPTYFOLDERS
+	// Pass if this item is a folder and is not a system folder that should be hidden
+	if (filterTypes & FILTERTYPE_EMPTYFOLDERS)
+	{
+		if (object_type == LLInventoryType::IT_CATEGORY)
+		{
+			bool is_hidden_if_empty = LLViewerFolderType::lookupIsHiddenIfEmpty(listener->getPreferredType());
+			if (is_hidden_if_empty)
+			{
+				// Force the fetching of those folders so they are hidden iff they really are empty...
+				gInventory.fetchDescendentsOf(object_id);
+				return FALSE;
+			}
+		}
+	}
+	
 	return TRUE;
 }
 
@@ -343,6 +361,11 @@ void LLInventoryFilter::setFilterWearableTypes(U64 types)
 	mFilterOps.mFilterTypes |= FILTERTYPE_WEARABLE;
 }
 
+void LLInventoryFilter::setFilterEmptySystemFolders()
+{
+	mFilterOps.mFilterTypes |= FILTERTYPE_EMPTYFOLDERS;
+}
+
 void LLInventoryFilter::setFilterUUID(const LLUUID& object_id)
 {
 	if (mFilterOps.mFilterUUID == LLUUID::null)
diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h
index f9460822f7d54c8ba5d80e9c442b72540d74cc09..bba24ac65290b9f9e12463af3061e54b7fd41c23 100644
--- a/indra/newview/llinventoryfilter.h
+++ b/indra/newview/llinventoryfilter.h
@@ -57,7 +57,8 @@ class LLInventoryFilter
 		FILTERTYPE_CATEGORY = 0x1 << 1,	// search by folder type
 		FILTERTYPE_UUID	= 0x1 << 2,		// find the object with UUID and any links to it
 		FILTERTYPE_DATE = 0x1 << 3,		// search by date range
-		FILTERTYPE_WEARABLE = 0x1 << 4	// search by wearable type
+		FILTERTYPE_WEARABLE = 0x1 << 4,	// search by wearable type
+		FILTERTYPE_EMPTYFOLDERS = 0x1 << 5	// pass if folder is not a system folder to be hidden if empty
 	};
 
 	enum EFilterLink
@@ -88,6 +89,7 @@ class LLInventoryFilter
 	void 				setFilterCategoryTypes(U64 types);
 	void 				setFilterUUID(const LLUUID &object_id);
 	void				setFilterWearableTypes(U64 types);
+	void				setFilterEmptySystemFolders();
 	void				updateFilterTypes(U64 types, U64& current_types);
 
 	void 				setFilterSubString(const std::string& string);
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 0af013fde5ec25d9c738d988a3cede632bdf9239..dd92188e9d2d0367d0eb8acfda16375249bac2bd 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -47,6 +47,7 @@
 #include "llappviewer.h"
 //#include "llfirstuse.h"
 #include "llfloaterinventory.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfocusmgr.h"
 #include "llfolderview.h"
 #include "llgesturemgr.h"
@@ -57,6 +58,7 @@
 #include "llinventorymodel.h"
 #include "llinventorypanel.h"
 #include "lllineeditor.h"
+#include "llmarketplacenotifications.h"
 #include "llmenugl.h"
 #include "llnotificationsutil.h"
 #include "llpanelmaininventory.h"
@@ -70,7 +72,6 @@
 #include "llscrollbar.h"
 #include "llscrollcontainer.h"
 #include "llselectmgr.h"
-#include "llsidetray.h"
 #include "llsidepanelinventory.h"
 #include "lltabcontainer.h"
 #include "lltooldraganddrop.h"
@@ -82,6 +83,8 @@
 #include "llvoavatarself.h"
 #include "llwearablelist.h"
 
+#include <boost/foreach.hpp>
+
 BOOL LLInventoryState::sWearNewClothing = FALSE;
 LLUUID LLInventoryState::sWearNewClothingTransactionID;
 
@@ -459,22 +462,28 @@ BOOL get_is_category_renameable(const LLInventoryModel* model, const LLUUID& id)
 
 void show_task_item_profile(const LLUUID& item_uuid, const LLUUID& object_id)
 {
-	LLSideTray::getInstance()->showPanel("sidepanel_inventory", LLSD().with("id", item_uuid).with("object", object_id));
+	LLFloaterSidePanelContainer::showPanel("inventory", LLSD().with("id", item_uuid).with("object", object_id));
 }
 
 void show_item_profile(const LLUUID& item_uuid)
 {
 	LLUUID linked_uuid = gInventory.getLinkedItemID(item_uuid);
-	LLSideTray::getInstance()->showPanel("sidepanel_inventory", LLSD().with("id", linked_uuid));
+	LLFloaterSidePanelContainer::showPanel("inventory", LLSD().with("id", linked_uuid));
 }
 
 void show_item_original(const LLUUID& item_uuid)
 {
+	LLFloater* floater_inventory = LLFloaterReg::getInstance("inventory");
+	if (!floater_inventory)
+	{
+		llwarns << "Could not find My Inventory floater" << llendl;
+		return;
+	}
+
 	//sidetray inventory panel
-	LLSidepanelInventory *sidepanel_inventory =
-		dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+	LLSidepanelInventory *sidepanel_inventory =	LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
 
-	bool reset_inventory_filter = !LLSideTray::getInstance()->isPanelActive("sidepanel_inventory");
+	bool reset_inventory_filter = !floater_inventory->isInVisibleChain();
 
 	LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel();
 	if (!active_panel) 
@@ -524,21 +533,37 @@ void show_item_original(const LLUUID& item_uuid)
 	}
 }
 
-void move_to_outbox_cb(const LLSD& notification, const LLSD& response)
+
+void open_outbox()
 {
-	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-	if (option != 0) return; // canceled
+	LLFloaterReg::showInstance("outbox");
+}
+
+LLUUID create_folder_in_outbox_for_item(LLInventoryItem* item, const LLUUID& destFolderId, S32 operation_id)
+{
+	llassert(item);
+	llassert(destFolderId.notNull());
+
+	LLUUID created_folder_id = gInventory.createNewCategory(destFolderId, LLFolderType::FT_NONE, item->getName());
+	gInventory.notifyObservers();
+
+	LLNotificationsUtil::add("OutboxFolderCreated");
 
-	LLViewerInventoryItem * viitem = gInventory.getItem(notification["payload"]["item_id"].asUUID());
-	LLUUID dest_folder_id = notification["payload"]["dest_folder_id"].asUUID();
+	return created_folder_id;
+}
+
+void move_to_outbox_cb_action(const LLSD& payload)
+{
+	LLViewerInventoryItem * viitem = gInventory.getItem(payload["item_id"].asUUID());
+	LLUUID dest_folder_id = payload["dest_folder_id"].asUUID();
 
 	if (viitem)
 	{	
 		// when moving item directly into outbox create folder with that name
 		if (dest_folder_id == gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false))
 		{
-			dest_folder_id = gInventory.createNewCategory(dest_folder_id,  LLFolderType::FT_NONE, viitem->getName());
-			gInventory.notifyObservers();
+			S32 operation_id = payload["operation_id"].asInteger();
+			dest_folder_id = create_folder_in_outbox_for_item(viitem, dest_folder_id, operation_id);
 		}
 
 		LLUUID parent = viitem->getParentUUID();
@@ -549,12 +574,12 @@ void move_to_outbox_cb(const LLSD& notification, const LLSD& response)
 			dest_folder_id,
 			false);
 
-		LLUUID top_level_folder = notification["payload"]["top_level_folder"].asUUID();
+		LLUUID top_level_folder = payload["top_level_folder"].asUUID();
 
 		if (top_level_folder != LLUUID::null)
 		{
 			LLViewerInventoryCategory* category;
-			
+
 			while (parent.notNull())
 			{
 				LLInventoryModel::cat_array_t* cat_array;
@@ -583,42 +608,75 @@ void move_to_outbox_cb(const LLSD& notification, const LLSD& response)
 			}
 		}
 
+		open_outbox();
 	}
 }
 
-
-void copy_item_to_outbox(LLInventoryItem* inv_item, LLUUID dest_folder, const LLUUID& top_level_folder)
+void copy_item_to_outbox(LLInventoryItem* inv_item, LLUUID dest_folder, const LLUUID& top_level_folder, S32 operation_id)
 {
-	if (inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID()))
+	// Collapse links directly to items/folders
+	LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) inv_item;
+	LLViewerInventoryCategory * linked_category = viewer_inv_item->getLinkedCategory();
+	if (linked_category != NULL)
 	{
-		// when moving item directly into outbox create folder with that name
-		if (dest_folder == gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false))
+		copy_folder_to_outbox(linked_category, dest_folder, top_level_folder, operation_id);
+	}
+	else
+	{
+		LLViewerInventoryItem * linked_item = viewer_inv_item->getLinkedItem();
+		if (linked_item != NULL)
 		{
-			dest_folder = gInventory.createNewCategory(dest_folder, LLFolderType::FT_NONE, inv_item->getName());
-			gInventory.notifyObservers();
+			inv_item = (LLInventoryItem *) linked_item;
+		}
+		
+		// Check for copy permissions
+		if (inv_item->getPermissions().allowOperationBy(PERM_COPY, gAgent.getID(), gAgent.getGroupID()))
+		{
+			// when moving item directly into outbox create folder with that name
+			if (dest_folder == gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false))
+			{
+				dest_folder = create_folder_in_outbox_for_item(inv_item, dest_folder, operation_id);
+			}
+			
+			copy_inventory_item(gAgent.getID(),
+								inv_item->getPermissions().getOwner(),
+								inv_item->getUUID(),
+								dest_folder,
+								inv_item->getName(),
+								LLPointer<LLInventoryCallback>(NULL));
+
+			open_outbox();
+		}
+		else
+		{
+			LLSD payload;
+			payload["item_id"] = inv_item->getUUID();
+			payload["dest_folder_id"] = dest_folder;
+			payload["top_level_folder"] = top_level_folder;
+			payload["operation_id"] = operation_id;
+			
+			LLMarketplaceInventoryNotifications::addNoCopyNotification(payload, move_to_outbox_cb_action);
 		}
-
-		copy_inventory_item(
-			gAgent.getID(),
-			inv_item->getPermissions().getOwner(),
-			inv_item->getUUID(),
-			dest_folder,
-			inv_item->getName(),
-			LLPointer<LLInventoryCallback>(NULL));
 	}
-	else
-	{	
-		LLSD args;
-		args["ITEM_NAME"] = inv_item->getName();
-		LLSD payload;
-		payload["item_id"] = inv_item->getUUID();
-		payload["dest_folder_id"] = dest_folder;
-		payload["top_level_folder"] = top_level_folder;
-		LLNotificationsUtil::add("ConfirmNoCopyToOutbox", args, payload, boost::bind(&move_to_outbox_cb, _1, _2));
+}
+
+void move_item_within_outbox(LLInventoryItem* inv_item, LLUUID dest_folder, S32 operation_id)
+{
+	// when moving item directly into outbox create folder with that name
+	if (dest_folder == gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false))
+	{
+		dest_folder = create_folder_in_outbox_for_item(inv_item, dest_folder, operation_id);
 	}
+	
+	LLViewerInventoryItem * viewer_inv_item = (LLViewerInventoryItem *) inv_item;
+
+	change_item_parent(&gInventory,
+					   viewer_inv_item,
+					   dest_folder,
+					   false);
 }
 
-void copy_folder_to_outbox(LLInventoryCategory* inv_cat, const LLUUID& dest_folder, const LLUUID& top_level_folder)
+void copy_folder_to_outbox(LLInventoryCategory* inv_cat, const LLUUID& dest_folder, const LLUUID& top_level_folder, S32 operation_id)
 {
 	LLUUID new_folder_id = gInventory.createNewCategory(dest_folder, LLFolderType::FT_NONE, inv_cat->getName());
 	gInventory.notifyObservers();
@@ -633,7 +691,7 @@ void copy_folder_to_outbox(LLInventoryCategory* inv_cat, const LLUUID& dest_fold
 	for (LLInventoryModel::item_array_t::iterator iter = item_array_copy.begin(); iter != item_array_copy.end(); iter++)
 	{
 		LLInventoryItem* item = *iter;
-		copy_item_to_outbox(item, new_folder_id, top_level_folder);
+		copy_item_to_outbox(item, new_folder_id, top_level_folder, operation_id);
 	}
 
 	LLInventoryModel::cat_array_t cat_array_copy = *cat_array;
@@ -641,14 +699,10 @@ void copy_folder_to_outbox(LLInventoryCategory* inv_cat, const LLUUID& dest_fold
 	for (LLInventoryModel::cat_array_t::iterator iter = cat_array_copy.begin(); iter != cat_array_copy.end(); iter++)
 	{
 		LLViewerInventoryCategory* category = *iter;
-		copy_folder_to_outbox(category, new_folder_id, top_level_folder);
+		copy_folder_to_outbox(category, new_folder_id, top_level_folder, operation_id);
 	}
 
-	// delete the folder if we have emptied it
-	//if (cat_array->empty() && item_array->empty())
-	//{
-	//	remove_category(inventory_model, inv_cat->getUUID());
-	//}
+	open_outbox();
 }
 
 ///----------------------------------------------------------------------------
diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h
index 7b452537f83b039ed4d898de95c9ddadd3c42e2d..ce2b89b22e67baaeb18d0444590a8cc3665a4e6e 100644
--- a/indra/newview/llinventoryfunctions.h
+++ b/indra/newview/llinventoryfunctions.h
@@ -74,9 +74,10 @@ void rename_category(LLInventoryModel* model, const LLUUID& cat_id, const std::s
 // Generates a string containing the path to the item specified by item_id.
 void append_path(const LLUUID& id, std::string& path);
 
-void copy_item_to_outbox(LLInventoryItem* inv_item, LLUUID dest_folder, const LLUUID& top_level_folder);
+void copy_item_to_outbox(LLInventoryItem* inv_item, LLUUID dest_folder, const LLUUID& top_level_folder, S32 operation_id);
+void move_item_within_outbox(LLInventoryItem* inv_item, LLUUID dest_folder, S32 operation_id);
 
-void copy_folder_to_outbox(LLInventoryCategory* inv_cat, const LLUUID& dest_folder, const LLUUID& top_level_folder);
+void copy_folder_to_outbox(LLInventoryCategory* inv_cat, const LLUUID& dest_folder, const LLUUID& top_level_folder, S32 operation_id);
 
 /**                    Miscellaneous global functions
  **                                                                            **
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index e86c427ae28630b7bf4768566f3cf144350146d4..a71b699fdd7cbef9c6cfa32552192bc453fd8bf8 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -217,6 +217,38 @@ const LLViewerInventoryCategory *LLInventoryModel::getFirstNondefaultParent(cons
 	return NULL;
 }
 
+//
+// Search up the parent chain until we get to the specified parent, then return the first child category under it
+//
+const LLViewerInventoryCategory* LLInventoryModel::getFirstDescendantOf(const LLUUID& master_parent_id, const LLUUID& obj_id) const
+{
+	if (master_parent_id == obj_id)
+	{
+		return NULL;
+	}
+
+	const LLViewerInventoryCategory* current_cat = getCategory(obj_id);
+
+	if (current_cat == NULL)
+	{
+		current_cat = getCategory(getObject(obj_id)->getParentUUID());
+	}
+	
+	while (current_cat != NULL)
+	{
+		const LLUUID& current_parent_id = current_cat->getParentUUID();
+		
+		if (current_parent_id == master_parent_id)
+		{
+			return current_cat;
+		}
+		
+		current_cat = getCategory(current_parent_id);
+	}
+
+	return NULL;
+}
+
 // Get the object by id. Returns NULL if not found.
 LLInventoryObject* LLInventoryModel::getObject(const LLUUID& id) const
 {
@@ -377,14 +409,67 @@ const LLUUID LLInventoryModel::findCategoryUUIDForType(LLFolderType::EType prefe
 	return rv;
 }
 
+class LLCreateInventoryCategoryResponder : public LLHTTPClient::Responder
+{
+public:
+	LLCreateInventoryCategoryResponder(LLInventoryModel* model, 
+									   void (*callback)(const LLSD&, void*),
+									   void* user_data) :
+										mModel(model),
+										mCallback(callback), 
+										mData(user_data) 
+	{
+	}
+	
+	virtual void error(U32 status, const std::string& reason)
+	{
+		LL_WARNS("InvAPI") << "CreateInventoryCategory failed.   status = " << status << ", reasion = \"" << reason << "\"" << LL_ENDL;
+	}
+	
+	virtual void result(const LLSD& content)
+	{
+		//Server has created folder.
+		
+		LLUUID category_id = content["folder_id"].asUUID();
+		
+		
+		// Add the category to the internal representation
+		LLPointer<LLViewerInventoryCategory> cat =
+		new LLViewerInventoryCategory( category_id, 
+									  content["parent_id"].asUUID(),
+									  (LLFolderType::EType)content["type"].asInteger(),
+									  content["name"].asString(), 
+									  gAgent.getID() );
+		cat->setVersion(LLViewerInventoryCategory::VERSION_INITIAL);
+		cat->setDescendentCount(0);
+		LLInventoryModel::LLCategoryUpdate update(cat->getParentUUID(), 1);
+		mModel->accountForUpdate(update);
+		mModel->updateCategory(cat);
+		
+		if (mCallback && mData)
+		{
+			mCallback(content, mData);
+		}
+		
+	}
+	
+private:
+	void (*mCallback)(const LLSD&, void*);
+	void* mData;
+	LLInventoryModel* mModel;
+};
+
 // Convenience function to create a new category. You could call
 // updateCategory() with a newly generated UUID category, but this
 // version will take care of details like what the name should be
 // based on preferred type. Returns the UUID of the new category.
 LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id,
 										   LLFolderType::EType preferred_type,
-										   const std::string& pname)
+										   const std::string& pname,
+										   void (*callback)(const LLSD&, void*),	//Default to NULL
+										   void* user_data)							//Default to NULL
 {
+	
 	LLUUID id;
 	if(!isInventoryUsable())
 	{
@@ -408,6 +493,35 @@ LLUUID LLInventoryModel::createNewCategory(const LLUUID& parent_id,
 	{
 		name.assign(LLViewerFolderType::lookupNewCategoryName(preferred_type));
 	}
+	
+	if ( callback && user_data )  //callback required for acked message.
+	{
+		LLViewerRegion* viewer_region = gAgent.getRegion();
+		std::string url;
+		if ( viewer_region )
+			url = viewer_region->getCapability("CreateInventoryCategory");
+		
+		if (!url.empty())
+		{
+			//Let's use the new capability.
+			
+			LLSD request, body;
+			body["folder_id"] = id;
+			body["parent_id"] = parent_id;
+			body["type"] = (LLSD::Integer) preferred_type;
+			body["name"] = name;
+			
+			request["message"] = "CreateInventoryCategory";
+			request["payload"] = body;
+			
+	//		viewer_region->getCapAPI().post(request);
+			LLHTTPClient::post(
+							   url,
+							   body,
+							   new LLCreateInventoryCategoryResponder(this, callback, user_data) );
+			return LLUUID::null;
+		}
+	}
 
 	// Add the category to the internal representation
 	LLPointer<LLViewerInventoryCategory> cat =
@@ -1087,7 +1201,6 @@ void LLInventoryModel::notifyObservers()
 		 iter != mObservers.end(); )
 	{
 		LLInventoryObserver* observer = *iter;
-		
 		observer->changed(mModifyMask);
 
 		// safe way to increment since changed may delete entries! (@!##%@!@&*!)
@@ -2528,9 +2641,9 @@ void LLInventoryModel::processBulkUpdateInventory(LLMessageSystem* msg, void**)
 	{
 		LLPointer<LLViewerInventoryCategory> tfolder = new LLViewerInventoryCategory(gAgent.getID());
 		tfolder->unpackMessage(msg, _PREHASH_FolderData, i);
-		//llinfos << "unpaked folder '" << tfolder->getName() << "' ("
-		//		<< tfolder->getUUID() << ") in " << tfolder->getParentUUID()
-		//		<< llendl;
+		llinfos << "unpacked folder '" << tfolder->getName() << "' ("
+				<< tfolder->getUUID() << ") in " << tfolder->getParentUUID()
+				<< llendl;
 		if(tfolder->getUUID().notNull())
 		{
 			folders.push_back(tfolder);
@@ -2570,11 +2683,11 @@ void LLInventoryModel::processBulkUpdateInventory(LLMessageSystem* msg, void**)
 	{
 		LLPointer<LLViewerInventoryItem> titem = new LLViewerInventoryItem;
 		titem->unpackMessage(msg, _PREHASH_ItemData, i);
-		//llinfos << "unpaked item '" << titem->getName() << "' in "
-		//		<< titem->getParentUUID() << llendl;
+		llinfos << "unpaked item '" << titem->getName() << "' in "
+				<< titem->getParentUUID() << llendl;
 		U32 callback_id;
 		msg->getU32Fast(_PREHASH_ItemData, _PREHASH_CallbackID, callback_id);
-		if(titem->getUUID().notNull())
+		if(titem->getUUID().notNull() ) // && callback_id.notNull() )
 		{
 			items.push_back(titem);
 			cblist.push_back(InventoryCallbackInfo(callback_id, titem->getUUID()));
@@ -2879,40 +2992,62 @@ BOOL LLInventoryModel::getIsFirstTimeInViewer2()
 	return sFirstTimeInViewer2;
 }
 
-static LLInventoryModel::item_array_t::iterator find_item_iter_by_uuid(LLInventoryModel::item_array_t& items, const LLUUID& id)
+LLInventoryModel::item_array_t::iterator LLInventoryModel::findItemIterByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id)
 {
-	LLInventoryModel::item_array_t::iterator result = items.end();
+	LLInventoryModel::item_array_t::iterator curr_item = items.begin();
 
-	for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i)
+	while (curr_item != items.end())
 	{
-		if ((*i)->getUUID() == id)
+		if ((*curr_item)->getUUID() == id)
 		{
-			result = i;
 			break;
 		}
+		++curr_item;
 	}
 
-	return result;
+	return curr_item;
 }
 
 // static
 // * @param[in, out] items - vector with items to be updated. It should be sorted in a right way
 // * before calling this method.
 // * @param src_item_id - LLUUID of inventory item to be moved in new position
-// * @param dest_item_id - LLUUID of inventory item before which source item should be placed.
-void LLInventoryModel::updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& src_item_id, const LLUUID& dest_item_id)
+// * @param dest_item_id - LLUUID of inventory item before (or after) which source item should 
+// * be placed.
+// * @param insert_before - bool indicating if src_item_id should be placed before or after 
+// * dest_item_id. Default is true.
+void LLInventoryModel::updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& src_item_id, const LLUUID& dest_item_id, bool insert_before)
 {
-	LLInventoryModel::item_array_t::iterator it_src = find_item_iter_by_uuid(items, src_item_id);
-	LLInventoryModel::item_array_t::iterator it_dest = find_item_iter_by_uuid(items, dest_item_id);
+	LLInventoryModel::item_array_t::iterator it_src = findItemIterByUUID(items, src_item_id);
+	LLInventoryModel::item_array_t::iterator it_dest = findItemIterByUUID(items, dest_item_id);
 
-	if (it_src == items.end() || it_dest == items.end()) return;
+	// If one of the passed UUID is not in the item list, bail out
+	if ((it_src == items.end()) || (it_dest == items.end())) 
+		return;
 
+	// Erase the source element from the list, keep a copy before erasing.
 	LLViewerInventoryItem* src_item = *it_src;
 	items.erase(it_src);
 	
-	// target iterator can not be valid because the container was changed, so update it.
-	it_dest = find_item_iter_by_uuid(items, dest_item_id);
-	items.insert(it_dest, src_item);
+	// Note: Target iterator is not valid anymore because the container was changed, so update it.
+	it_dest = findItemIterByUUID(items, dest_item_id);
+	
+	// Go to the next element if one wishes to insert after the dest element
+	if (!insert_before)
+	{
+		++it_dest;
+	}
+	
+	// Reinsert the source item in the right place
+	if (it_dest != items.end())
+	{
+		items.insert(it_dest, src_item);
+	}
+	else 
+	{
+		// Append to the list if it_dest reached the end
+		items.push_back(src_item);
+	}
 }
 
 //* @param[in] items vector of items in order to be saved.
diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h
index e0e81f10064adc4101230daf709abe659a5aa1c4..7cd85c4ab7bfd59aa1a0616136c9006f81a6f963 100644
--- a/indra/newview/llinventorymodel.h
+++ b/indra/newview/llinventorymodel.h
@@ -64,6 +64,7 @@ class LLInventoryCollectFunctor;
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 class LLInventoryModel
 {
+	LOG_CLASS(LLInventoryModel);
 public:
 	friend class LLInventoryModelFetchDescendentsResponder;
 
@@ -238,6 +239,9 @@ class LLInventoryModel
 	
 	// Get whatever special folder this object is a child of, if any.
 	const LLViewerInventoryCategory *getFirstNondefaultParent(const LLUUID& obj_id) const;
+	
+	// Get first descendant of the child object under the specified parent
+	const LLViewerInventoryCategory *getFirstDescendantOf(const LLUUID& master_parent_id, const LLUUID& obj_id) const;
 
 	// Get the object by id. Returns NULL if not found.
 	//   NOTE: Use the pointer returned for read operations - do
@@ -332,11 +336,16 @@ class LLInventoryModel
 	//--------------------------------------------------------------------
 public:
 	// Changes items order by insertion of the item identified by src_item_id
-	// before the item identified by dest_item_id. Both items must exist in items array.
-	// Sorting is stored after method is finished. Only src_item_id is moved before dest_item_id.
+	// before (or after) the item identified by dest_item_id. Both items must exist in items array.
+	// Sorting is stored after method is finished. Only src_item_id is moved before (or after) dest_item_id.
+	// The parameter "insert_before" controls on which side of dest_item_id src_item_id gets rensinserted.
 	static void updateItemsOrder(LLInventoryModel::item_array_t& items, 
 								 const LLUUID& src_item_id, 
-								 const LLUUID& dest_item_id);
+								 const LLUUID& dest_item_id,
+								 bool insert_before = true);
+	// Gets an iterator on an item vector knowing only the item UUID.
+	// Returns end() of the vector if not found.
+	static LLInventoryModel::item_array_t::iterator findItemIterByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id);
 
 	// Saves current order of the passed items using inventory item sort field.
 	// Resets 'items' sort fields and saves them on server.
@@ -355,7 +364,9 @@ class LLInventoryModel
 	// name based on type, pass in a NULL to the 'name' parameter.
 	LLUUID createNewCategory(const LLUUID& parent_id,
 							 LLFolderType::EType preferred_type,
-							 const std::string& name);
+							 const std::string& name,
+							 void (*callback)(const LLSD&, void*) = NULL,
+							 void* user_data = NULL );
 protected:
 	// Internal methods that add inventory and make sure that all of
 	// the internal data structures are consistent. These methods
@@ -406,7 +417,7 @@ class LLInventoryModel
 	// Return (yes/no/maybe) child status of category children.
 	EHasChildren categoryHasChildren(const LLUUID& cat_id) const;
 
-	// Returns true iff category version is known and theoretical
+	// Returns true if category version is known and theoretical
 	// descendents == actual descendents.
 	bool isCategoryComplete(const LLUUID& cat_id) const;
 	
diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp
index ceba4a019127624634d7489989f57acfcffb9455..9db175ec2e03b938e529c3926f29d8a7a76032a8 100644
--- a/indra/newview/llinventoryobserver.cpp
+++ b/indra/newview/llinventoryobserver.cpp
@@ -202,6 +202,7 @@ void LLInventoryFetchItemsObserver::changed(U32 mask)
 void fetch_items_from_llsd(const LLSD& items_llsd)
 {
 	if (!items_llsd.size() || gDisconnected) return;
+
 	LLSD body;
 	body[0]["cap_name"] = "FetchInventory2";
 	body[1]["cap_name"] = "FetchLib2";
@@ -212,7 +213,7 @@ void fetch_items_from_llsd(const LLSD& items_llsd)
 			body[0]["items"].append(items_llsd[i]);
 			continue;
 		}
-		if (items_llsd[i]["owner_id"].asString() == ALEXANDRIA_LINDEN_ID.asString())
+		else if (items_llsd[i]["owner_id"].asString() == ALEXANDRIA_LINDEN_ID.asString())
 		{
 			body[1]["items"].append(items_llsd[i]);
 			continue;
@@ -221,19 +222,23 @@ void fetch_items_from_llsd(const LLSD& items_llsd)
 		
 	for (S32 i=0; i<body.size(); i++)
 	{
-		if(!gAgent.getRegion())
+		if (!gAgent.getRegion())
 		{
-			llwarns<<"Agent's region is null"<<llendl;
+			llwarns << "Agent's region is null" << llendl;
 			break;
 		}
-		if (0 >= body[i].size()) continue;
-		std::string url = gAgent.getRegion()->getCapability(body[i]["cap_name"].asString());
 
+		if (0 == body[i]["items"].size()) {
+			lldebugs << "Skipping body with no items to fetch" << llendl;
+			continue;
+		}
+
+		std::string url = gAgent.getRegion()->getCapability(body[i]["cap_name"].asString());
 		if (!url.empty())
 		{
 			body[i]["agent_id"]	= gAgent.getID();
 			LLHTTPClient::post(url, body[i], new LLInventoryModel::fetchInventoryResponder(body[i]));
-			break;
+			continue;
 		}
 
 		LLMessageSystem* msg = gMessageSystem;
@@ -303,7 +308,7 @@ void LLInventoryFetchItemsObserver::startFetch()
 		// It's incomplete, so put it on the incomplete container, and
 		// pack this on the message.
 		mIncomplete.push_back(*it);
-		
+
 		// Prepare the data to fetch
 		LLSD item_entry;
 		item_entry["owner_id"] = owner_id;
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 615d3aefde7bb8d5ad90085393a202c140437819..382569fa3a34c40586a1b45cab908c3202302f28 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -35,6 +35,7 @@
 #include "llavataractions.h"
 #include "llfloaterinventory.h"
 #include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfolderview.h"
 #include "llimfloater.h"
 #include "llimview.h"
@@ -42,7 +43,6 @@
 #include "llinventoryfunctions.h"
 #include "llinventorymodelbackgroundfetch.h"
 #include "llsidepanelinventory.h"
-#include "llsidetray.h"
 #include "llviewerattachmenu.h"
 #include "llviewerfoldertype.h"
 #include "llvoavatarself.h"
@@ -132,6 +132,7 @@ LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) :
 	mAcceptsDragAndDrop(p.accepts_drag_and_drop),
 	mAllowMultiSelect(p.allow_multi_select),
 	mShowItemLinkOverlays(p.show_item_link_overlays),
+	mShowEmptyMessage(p.show_empty_message),
 	mShowLoadStatus(p.show_load_status),
 	mViewsInitialized(false),
 	mInvFVBridgeBuilder(NULL)
@@ -240,6 +241,12 @@ void LLInventoryPanel::initFromParams(const LLInventoryPanel::Params& params)
 	getFilter()->setFilterCategoryTypes(getFilter()->getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_INBOX));
 	getFilter()->setFilterCategoryTypes(getFilter()->getFilterCategoryTypes() & ~(1ULL << LLFolderType::FT_OUTBOX));
 
+	// set the filter for the empty folder if the debug setting is on
+	if (gSavedSettings.getBOOL("DebugHideEmptySystemFolders"))
+	{
+		getFilter()->setFilterEmptySystemFolders();
+	}
+	
 	// Initialize base class params.
 	LLPanel::initFromParams(params);
 }
@@ -611,6 +618,7 @@ LLFolderView * LLInventoryPanel::createFolderView(LLInvFVBridge * bridge, bool u
 	p.listener =  bridge;
 	p.use_label_suffix = useLabelSuffix;
 	p.allow_multiselect = mAllowMultiSelect;
+	p.show_empty_message = mShowEmptyMessage;
 	p.show_load_status = mShowLoadStatus;
 
 	return LLUICtrlFactory::create<LLFolderView>(p);
@@ -697,7 +705,10 @@ LLFolderViewItem* LLInventoryPanel::buildNewViews(const LLUUID& id)
   				if (new_listener)
   				{
 					LLFolderViewFolder* folderp = createFolderViewFolder(new_listener);
-  					folderp->setItemSortOrder(mFolderRoot->getSortOrder());
+					if (folderp)
+					{
+						folderp->setItemSortOrder(mFolderRoot->getSortOrder());
+					}
   					itemp = folderp;
   				}
   			}
@@ -1077,10 +1088,9 @@ void LLInventoryPanel::dumpSelectionInformation(void* user_data)
 
 BOOL is_inventorysp_active()
 {
-	if (!LLSideTray::getInstance()->isPanelActive("sidepanel_inventory")) return FALSE;
-	LLSidepanelInventory *inventorySP = dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-	if (!inventorySP) return FALSE; 
-	return inventorySP->isMainInventoryPanelActive();
+	LLSidepanelInventory *sidepanel_inventory =	LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+	if (!sidepanel_inventory || !sidepanel_inventory->isInVisibleChain()) return FALSE;
+	return sidepanel_inventory->isMainInventoryPanelActive();
 }
 
 // static
@@ -1090,47 +1100,30 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open)
 	LLInventoryPanel* res = NULL;
 	LLFloater* active_inv_floaterp = NULL;
 
-	// A. If the inventory side panel is open, use that preferably.
-	if (is_inventorysp_active())
-	{
-		LLSidepanelInventory *inventorySP = dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-		if (inventorySP)
-		{
-			return inventorySP->getActivePanel();
-		}
-	}
-	// or if it is in floater undocked from sidetray get it and remember z order of floater to later compare it
-	// with other inventory floaters order.
-	else if (!LLSideTray::getInstance()->isTabAttached("sidebar_inventory"))
+	LLFloater* floater_inventory = LLFloaterReg::getInstance("inventory");
+	if (!floater_inventory)
 	{
-		LLSidepanelInventory *inventorySP =
-			dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-		LLFloater* inv_floater = LLFloaterReg::findInstance("side_bar_tab", LLSD("sidebar_inventory"));
-		if (inventorySP && inv_floater)
-		{
-			res = inventorySP->getActivePanel();
-			z_min = gFloaterView->getZOrder(inv_floater);
-			active_inv_floaterp = inv_floater;
-		}
-		else
-		{
-			llwarns << "Inventory tab is detached from sidetray, but  either panel or floater were not found!" << llendl;
-		}
+		llwarns << "Could not find My Inventory floater" << llendl;
+		return FALSE;
 	}
-	
-	// B. Iterate through the inventory floaters and return whichever is on top.
+
+	LLSidepanelInventory *inventory_panel =	LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+
+	// Iterate through the inventory floaters and return whichever is on top.
 	LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory");
 	for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter)
 	{
-		LLFloaterInventory* iv = dynamic_cast<LLFloaterInventory*>(*iter);
-		if (iv && iv->getVisible())
+		LLFloaterSidePanelContainer* inventory_floater = dynamic_cast<LLFloaterSidePanelContainer*>(*iter);
+		inventory_panel = inventory_floater->findChild<LLSidepanelInventory>("main_panel");
+
+		if (inventory_floater && inventory_panel && inventory_floater->getVisible())
 		{
-			S32 z_order = gFloaterView->getZOrder(iv);
+			S32 z_order = gFloaterView->getZOrder(inventory_floater);
 			if (z_order < z_min)
 			{
-				res = iv->getPanel();
+				res = inventory_panel->getActivePanel();
 				z_min = z_order;
-				active_inv_floaterp = iv;
+				active_inv_floaterp = inventory_floater;
 			}
 		}
 	}
@@ -1139,24 +1132,71 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open)
 	{
 		// Make sure the floater is not minimized (STORM-438).
 		if (active_inv_floaterp && active_inv_floaterp->isMinimized())
+		{
 			active_inv_floaterp->setMinimized(FALSE);
+		}
+	}	
+	else if (auto_open)
+	{
+		floater_inventory->openFloater();
 
-		return res;
+		res = inventory_panel->getActivePanel();
 	}
-		
-	// C. If no panels are open and we don't want to force open a panel, then just abort out.
-	if (!auto_open) return NULL;
-	
-	// D. Open the inventory side panel and use that.
-    LLSD key;
-	LLSidepanelInventory *sidepanel_inventory =
-		dynamic_cast<LLSidepanelInventory *>(LLSideTray::getInstance()->showPanel("sidepanel_inventory", key));
-	if (sidepanel_inventory)
+
+	return res;
+}
+
+//static
+void LLInventoryPanel::openInventoryPanelAndSetSelection(BOOL auto_open, const LLUUID& obj_id)
+{
+	LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(auto_open);
+
+	if (active_panel)
 	{
-		return sidepanel_inventory->getActivePanel();
-	}
+		LL_DEBUGS("Messaging") << "Highlighting" << obj_id  << LL_ENDL;
+		
+		LLViewerInventoryItem * item = gInventory.getItem(obj_id);
+		LLViewerInventoryCategory * cat = gInventory.getCategory(obj_id);
+		
+		bool in_inbox = false;
+		
+		LLViewerInventoryCategory * parent_cat = NULL;
+		
+		if (item)
+		{
+			parent_cat = gInventory.getCategory(item->getParentUUID());
+		}
+		else if (cat)
+		{
+			parent_cat = gInventory.getCategory(cat->getParentUUID());
+		}
+		
+		if (parent_cat)
+		{
+			in_inbox = (LLFolderType::FT_INBOX == parent_cat->getPreferredType());
+		}
+		
+		if (in_inbox)
+		{
+			LLSidepanelInventory * sidepanel_inventory =	LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+			LLInventoryPanel * inventory_panel = NULL;
+			
+			if (in_inbox)
+			{
+				sidepanel_inventory->openInbox();
+				inventory_panel = sidepanel_inventory->getInboxPanel();
+			}
 
-	return NULL;
+			if (inventory_panel)
+			{
+				inventory_panel->setSelection(obj_id, TAKE_FOCUS_YES);
+			}
+		}
+		else
+		{
+			active_panel->setSelection(obj_id, TAKE_FOCUS_YES);
+		}
+	}
 }
 
 void LLInventoryPanel::addHideFolderType(LLFolderType::EType folder_type)
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 8635ebc5c8df831186148b7bfd5b9b9ba6b222cf..8279163762fbebca43820b499d445397500cbf36 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -84,6 +84,7 @@ class LLInventoryPanel : public LLPanel
 		Optional<Filter>					filter;
 		Optional<std::string>               start_folder;
 		Optional<bool>						use_label_suffix;
+		Optional<bool>						show_empty_message;
 		Optional<bool>						show_load_status;
 		Optional<LLScrollContainer::Params>	scroll;
 		Optional<bool>						accepts_drag_and_drop;
@@ -96,6 +97,7 @@ class LLInventoryPanel : public LLPanel
 			filter("filter"),
 			start_folder("start_folder"),
 			use_label_suffix("use_label_suffix", true),
+			show_empty_message("show_empty_message", true),
 			show_load_status("show_load_status"),
 			scroll("scroll"),
 			accepts_drag_and_drop("accepts_drag_and_drop")
@@ -175,6 +177,8 @@ class LLInventoryPanel : public LLPanel
 	// Find whichever inventory panel is active / on top.
 	// "Auto_open" determines if we open an inventory panel if none are open.
 	static LLInventoryPanel *getActiveInventoryPanel(BOOL auto_open = TRUE);
+	
+	static void openInventoryPanelAndSetSelection(BOOL auto_open, const LLUUID& obj_id);
 
 protected:
 	void openStartFolderOrMyInventory(); // open the first level of inventory
@@ -186,6 +190,7 @@ class LLInventoryPanel : public LLPanel
 	BOOL						mAcceptsDragAndDrop;
 	BOOL 						mAllowMultiSelect;
 	BOOL 						mShowItemLinkOverlays; // Shows link graphic over inventory item icons
+	BOOL						mShowEmptyMessage;
 	BOOL						mShowLoadStatus;
 
 	LLFolderView*				mFolderRoot;
diff --git a/indra/newview/lllandmarkactions.cpp b/indra/newview/lllandmarkactions.cpp
index f2aec20611a1e51407b6051bf73c046827cc3cba..6625a194fb7e1d0f4e0faf5ce5b12b8b3ee15d9f 100644
--- a/indra/newview/lllandmarkactions.cpp
+++ b/indra/newview/lllandmarkactions.cpp
@@ -413,7 +413,7 @@ void LLLandmarkActions::copySLURLtoClipboard(const LLUUID& landmarkInventoryItem
 
 void copy_slurl_to_clipboard_callback(const std::string& slurl)
 {
-	gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(slurl));
+	gViewerWindow->getWindow()->copyTextToClipboard(utf8str_to_wstring(slurl));
 	LLSD args;
 	args["SLURL"] = slurl;
 	LLNotificationsUtil::add("CopySLURL", args);
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index 1c8f6b6c9860469e1d12bc5235f909770ff1cf36..025181ead55cca5761c8983c89a38598e2f377a7 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -44,11 +44,11 @@
 
 // newview includes
 #include "llagent.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llinventoryobserver.h"
 #include "lllandmarkactions.h"
 #include "lllandmarklist.h"
 #include "llteleporthistory.h"
-#include "llsidetray.h"
 #include "llslurl.h"
 #include "llstatusbar.h"			// getHealth()
 #include "lltrans.h"
@@ -600,7 +600,7 @@ void LLLocationInputCtrl::reshape(S32 width, S32 height, BOOL called_from_parent
 
 void LLLocationInputCtrl::onInfoButtonClicked()
 {
-	LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "agent"));
+	LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "agent"));
 }
 
 void LLLocationInputCtrl::onForSaleButtonClicked()
@@ -618,11 +618,11 @@ void LLLocationInputCtrl::onAddLandmarkButtonClicked()
 		key["type"] = "landmark";
 		key["id"] = landmark->getUUID();
 
-		LLSideTray::getInstance()->showPanel("panel_places", key);
+		LLFloaterSidePanelContainer::showPanel("places", key);
 	}
 	else
 	{
-		LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark"));
+		LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
 	}
 }
 
@@ -1087,12 +1087,12 @@ void LLLocationInputCtrl::onLocationContextMenuItemClicked(const LLSD& userdata)
 		
 		if(!landmark)
 		{
-			LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark"));
+			LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
 		}
 		else
 		{
-			LLSideTray::getInstance()->showPanel("panel_places", 
-					LLSD().with("type", "landmark").with("id",landmark->getUUID()));
+			LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "landmark").with("id",landmark->getUUID()));
+
 		}
 	}
 	else if (item == "cut")
diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp
index f00d6087f9137e6afdd93fd616265e27c2a67b30..419641d23c032495d72d5927ad0ee65556cae70a 100644
--- a/indra/newview/lllogininstance.cpp
+++ b/indra/newview/lllogininstance.cpp
@@ -561,15 +561,7 @@ void LLLoginInstance::constructAuthParams(LLPointer<LLCredential> user_credentia
 
 	//send this info to login.cgi for stats gathering 
 	//since viewerstats isn't reliable enough
-	if (gSavedSettings.getString("SessionSettingsFile").empty())
-	{
-		requested_options.append("advanced-mode");
-	}
-	else
-	{
-		requested_options.append("basic-mode");
-		//requested_options.append("inventory-basic");
-	}
+	requested_options.append("advanced-mode");
 
 #endif
 	requested_options.append("max-agent-groups");	
diff --git a/indra/newview/llmainlooprepeater.cpp b/indra/newview/llmainlooprepeater.cpp
index d73048a28b101b9fdf6a0044f27c6f173ce400c7..5c020e6d982eb7060b857a800f36b4d050f87f25 100644
--- a/indra/newview/llmainlooprepeater.cpp
+++ b/indra/newview/llmainlooprepeater.cpp
@@ -46,7 +46,7 @@ void LLMainLoopRepeater::start(void)
 {
 	if(mQueue != 0) return;
 
-	mQueue = new LLThreadSafeQueue<LLSD>(1024);
+	mQueue = new LLThreadSafeQueue<LLSD>(gAPRPoolp, 1024);
 	mMainLoopConnection = LLEventPumps::instance().
 		obtain("mainloop").listen(LLEventPump::inventName(), boost::bind(&LLMainLoopRepeater::onMainLoop, this, _1));
 	mRepeaterConnection = LLEventPumps::instance().
diff --git a/indra/newview/llmanip.cpp b/indra/newview/llmanip.cpp
index 85e00436510ee64a187ef4cb69c6d1d6d97b3106..6e0f360cbc05174e8fde998bde64e2e8bec141e7 100644
--- a/indra/newview/llmanip.cpp
+++ b/indra/newview/llmanip.cpp
@@ -372,14 +372,14 @@ void LLManip::renderGuidelines(BOOL draw_x, BOOL draw_y, BOOL draw_z)
 	//LLVector3  center_agent  = LLSelectMgr::getInstance()->getBBoxOfSelection().getCenterAgent();
 	LLVector3  center_agent  = getPivotPoint();
 
-	glPushMatrix();
+	gGL.pushMatrix();
 	{
-		glTranslatef(center_agent.mV[VX], center_agent.mV[VY], center_agent.mV[VZ]);
+		gGL.translatef(center_agent.mV[VX], center_agent.mV[VY], center_agent.mV[VZ]);
 
 		F32 angle_radians, x, y, z;
 
 		grid_rot.getAngleAxis(&angle_radians, &x, &y, &z);
-		glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
+		gGL.rotatef(angle_radians * RAD_TO_DEG, x, y, z);
 
 		F32 region_size = LLWorld::getInstance()->getRegionWidthInMeters();
 
@@ -416,7 +416,7 @@ void LLManip::renderGuidelines(BOOL draw_x, BOOL draw_y, BOOL draw_z)
 		}
 		LLUI::setLineWidth(1.0f);
 	}
-	glPopMatrix();
+	gGL.popMatrix();
 }
 
 void LLManip::renderXYZ(const LLVector3 &vec) 
@@ -466,11 +466,11 @@ void LLManip::renderXYZ(const LLVector3 &vec)
 		feedback_string = llformat("X: %.3f", vec.mV[VX]);
 		hud_render_text(utf8str_to_wstring(feedback_string), camera_pos, *font, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -102.f, (F32)vertical_offset, LLColor4(1.f, 0.5f, 0.5f, 1.f), FALSE);
 
-		glColor3f(0.5f, 1.f, 0.5f);
+		gGL.diffuseColor3f(0.5f, 1.f, 0.5f);
 		feedback_string = llformat("Y: %.3f", vec.mV[VY]);
 		hud_render_text(utf8str_to_wstring(feedback_string), camera_pos, *font, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -27.f, (F32)vertical_offset, LLColor4(0.5f, 1.f, 0.5f, 1.f), FALSE);
 		
-		glColor3f(0.5f, 0.5f, 1.f);
+		gGL.diffuseColor3f(0.5f, 0.5f, 1.f);
 		feedback_string = llformat("Z: %.3f", vec.mV[VZ]);
 		hud_render_text(utf8str_to_wstring(feedback_string), camera_pos, *font, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, 48.f, (F32)vertical_offset, LLColor4(0.5f, 0.5f, 1.f, 1.f), FALSE);
 	}
@@ -481,8 +481,8 @@ void LLManip::renderTickText(const LLVector3& pos, const std::string& text, cons
 	const LLFontGL* big_fontp = LLFontGL::getFontSansSerif();
 
 	BOOL hud_selection = mObjectSelection->getSelectType() == SELECT_TYPE_HUD;
-	glMatrixMode(GL_MODELVIEW);
-	glPushMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.pushMatrix();
 	LLVector3 render_pos = pos;
 	if (hud_selection)
 	{
@@ -490,7 +490,7 @@ void LLManip::renderTickText(const LLVector3& pos, const std::string& text, cons
 		F32 inv_zoom_amt = 1.f / zoom_amt;
 		// scale text back up to counter-act zoom level
 		render_pos = pos * zoom_amt;
-		glScalef(inv_zoom_amt, inv_zoom_amt, inv_zoom_amt);
+		gGL.scalef(inv_zoom_amt, inv_zoom_amt, inv_zoom_amt);
 	}
 
 	// render shadow first
@@ -501,7 +501,7 @@ void LLManip::renderTickText(const LLVector3& pos, const std::string& text, cons
 	gViewerWindow->setup3DViewport();
 	hud_render_utf8text(text, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(text), 3.f, color, mObjectSelection->getSelectType() == SELECT_TYPE_HUD);
 
-	glPopMatrix();
+	gGL.popMatrix();
 }
 
 void LLManip::renderTickValue(const LLVector3& pos, F32 value, const std::string& suffix, const LLColor4 &color)
@@ -539,8 +539,8 @@ void LLManip::renderTickValue(const LLVector3& pos, F32 value, const std::string
 	}
 
 	BOOL hud_selection = mObjectSelection->getSelectType() == SELECT_TYPE_HUD;
-	glMatrixMode(GL_MODELVIEW);
-	glPushMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.pushMatrix();
 	LLVector3 render_pos = pos;
 	if (hud_selection)
 	{
@@ -548,7 +548,7 @@ void LLManip::renderTickValue(const LLVector3& pos, F32 value, const std::string
 		F32 inv_zoom_amt = 1.f / zoom_amt;
 		// scale text back up to counter-act zoom level
 		render_pos = pos * zoom_amt;
-		glScalef(inv_zoom_amt, inv_zoom_amt, inv_zoom_amt);
+		gGL.scalef(inv_zoom_amt, inv_zoom_amt, inv_zoom_amt);
 	}
 
 	LLColor4 shadow_color = LLColor4::black;
@@ -573,7 +573,7 @@ void LLManip::renderTickValue(const LLVector3& pos, F32 value, const std::string
 		gViewerWindow->setup3DViewport();
 		hud_render_utf8text(val_string, render_pos, *big_fontp, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, -0.5f * big_fontp->getWidthF32(val_string), 3.f, color, hud_selection);
 	}
-	glPopMatrix();
+	gGL.popMatrix();
 }
 
 LLColor4 LLManip::setupSnapGuideRenderPass(S32 pass)
diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp
index 6ee095475fb04fc73e69ee9fee82dc887229ef58..a8da94f75e2f1809e1d553bab8c57d3ceb3d6e2e 100644
--- a/indra/newview/llmaniprotate.cpp
+++ b/indra/newview/llmaniprotate.cpp
@@ -53,6 +53,7 @@
 #include "llviewercamera.h"
 #include "llviewerobject.h"
 #include "llviewerobject.h"
+#include "llviewershadermgr.h"
 #include "llviewerwindow.h"
 #include "llworld.h"
 #include "pipeline.h"
@@ -113,7 +114,7 @@ void LLManipRotate::handleSelect()
 void LLManipRotate::render()
 {
 	LLGLSUIDefault gls_ui;
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+	gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sWhiteImagep);
 	LLGLDepthTest gls_depth(GL_TRUE);
 	LLGLEnable gl_blend(GL_BLEND);
 	LLGLEnable gls_alpha_test(GL_ALPHA_TEST);
@@ -130,12 +131,12 @@ void LLManipRotate::render()
 		return;
 	}
 
-	glMatrixMode(GL_MODELVIEW);
-	glPushMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.pushMatrix();
 	if (mObjectSelection->getSelectType() == SELECT_TYPE_HUD)
 	{
 		F32 zoom = gAgentCamera.mHUDCurZoom;
-		glScalef(zoom, zoom, zoom);
+		gGL.scalef(zoom, zoom, zoom);
 	}
 
 
@@ -145,8 +146,9 @@ void LLManipRotate::render()
 	LLColor4 highlight_inside( 0.7f, 0.7f, 0.f, 0.5f );
 	F32 width_meters = WIDTH_PIXELS * mRadiusMeters / RADIUS_PIXELS;
 
-	glPushMatrix();
+	gGL.pushMatrix();
 	{
+		
 		// are we in the middle of a constrained drag?
 		if (mManipPart >= LL_ROT_X && mManipPart <= LL_ROT_Z)
 		{
@@ -154,13 +156,18 @@ void LLManipRotate::render()
 		}
 		else
 		{
+			if (LLGLSLShader::sNoFixedFunction)
+			{
+				gDebugProgram.bind();
+			}
+
 			LLGLEnable cull_face(GL_CULL_FACE);
 			LLGLDepthTest gls_depth(GL_FALSE);
-			glPushMatrix();
+			gGL.pushMatrix();
 			{
 				// Draw "sphere" (intersection of sphere with tangent cone that has apex at camera)
-				glTranslatef( mCenterToProfilePlane.mV[VX], mCenterToProfilePlane.mV[VY], mCenterToProfilePlane.mV[VZ] );
-				glTranslatef( center.mV[VX], center.mV[VY], center.mV[VZ] );
+				gGL.translatef( mCenterToProfilePlane.mV[VX], mCenterToProfilePlane.mV[VY], mCenterToProfilePlane.mV[VZ] );
+				gGL.translatef( center.mV[VX], center.mV[VY], center.mV[VZ] );
 
 				// Inverse change of basis vectors
 				LLVector3 forward = mCenterToCamNorm;
@@ -177,35 +184,41 @@ void LLManipRotate::render()
 				LLMatrix4 mat;
 				mat.initRows(a, b, c, LLVector4(0.f, 0.f, 0.f, 1.f));
 
-				glMultMatrixf( &mat.mMatrix[0][0] );
+				gGL.multMatrix( &mat.mMatrix[0][0] );
 
-				glRotatef( -90, 0.f, 1.f, 0.f);
+				gGL.rotatef( -90, 0.f, 1.f, 0.f);
 				LLColor4 color;
 				if (mManipPart == LL_ROT_ROLL || mHighlightedPart == LL_ROT_ROLL)
 				{
 					color.setVec(0.8f, 0.8f, 0.8f, 0.8f);
-					glScalef(mManipulatorScales.mV[VW], mManipulatorScales.mV[VW], mManipulatorScales.mV[VW]);
+					gGL.scalef(mManipulatorScales.mV[VW], mManipulatorScales.mV[VW], mManipulatorScales.mV[VW]);
 				}
 				else
 				{
 					color.setVec( 0.7f, 0.7f, 0.7f, 0.6f );
 				}
+				gGL.diffuseColor4fv(color.mV);
 				gl_washer_2d(mRadiusMeters + width_meters, mRadiusMeters, CIRCLE_STEPS, color, color);
 
 
 				if (mManipPart == LL_NO_PART)
 				{
 					gGL.color4f( 0.7f, 0.7f, 0.7f, 0.3f );
+					gGL.diffuseColor4f(0.7f, 0.7f, 0.7f, 0.3f);
 					gl_circle_2d( 0, 0,  mRadiusMeters, CIRCLE_STEPS, TRUE );
 				}
 				
-				GLdouble plane_eqn[] = { 0, 0, 1, 0 };
-				glClipPlane( GL_CLIP_PLANE0, plane_eqn );
+				gGL.flush();
 			}
-			glPopMatrix();
-		}
+			gGL.popMatrix();
 
-		glTranslatef( center.mV[VX], center.mV[VY], center.mV[VZ] );
+			if (LLGLSLShader::sNoFixedFunction)
+			{
+				gUIProgram.bind();
+			}
+		}
+		
+		gGL.translatef( center.mV[VX], center.mV[VY], center.mV[VZ] );
 
 		LLQuaternion rot;
 		F32 angle_radians, x, y, z;
@@ -217,41 +230,46 @@ void LLManipRotate::render()
 		LLSelectMgr::getInstance()->getGrid(grid_origin, grid_rotation, grid_scale);
 
 		grid_rotation.getAngleAxis(&angle_radians, &x, &y, &z);
-		glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
+		gGL.rotatef(angle_radians * RAD_TO_DEG, x, y, z);
 
 
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gDebugProgram.bind();
+		}
+
 		if (mManipPart == LL_ROT_Z)
 		{
 			mManipulatorScales = lerp(mManipulatorScales, LLVector4(1.f, 1.f, SELECTED_MANIPULATOR_SCALE, 1.f), LLCriticalDamp::getInterpolant(MANIPULATOR_SCALE_HALF_LIFE));
-			glPushMatrix();
+			gGL.pushMatrix();
 			{
 				// selected part
-				glScalef(mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ]);
+				gGL.scalef(mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ]);
 				renderActiveRing( mRadiusMeters, width_meters, LLColor4( 0.f, 0.f, 1.f, 1.f) , LLColor4( 0.f, 0.f, 1.f, 0.3f ));
 			}
-			glPopMatrix();
+			gGL.popMatrix();
 		}
 		else if (mManipPart == LL_ROT_Y)
 		{
 			mManipulatorScales = lerp(mManipulatorScales, LLVector4(1.f, SELECTED_MANIPULATOR_SCALE, 1.f, 1.f), LLCriticalDamp::getInterpolant(MANIPULATOR_SCALE_HALF_LIFE));
-			glPushMatrix();
+			gGL.pushMatrix();
 			{
-				glRotatef( 90.f, 1.f, 0.f, 0.f );
-				glScalef(mManipulatorScales.mV[VY], mManipulatorScales.mV[VY], mManipulatorScales.mV[VY]);
+				gGL.rotatef( 90.f, 1.f, 0.f, 0.f );
+				gGL.scalef(mManipulatorScales.mV[VY], mManipulatorScales.mV[VY], mManipulatorScales.mV[VY]);
 				renderActiveRing( mRadiusMeters, width_meters, LLColor4( 0.f, 1.f, 0.f, 1.f), LLColor4( 0.f, 1.f, 0.f, 0.3f));
 			}
-			glPopMatrix();
+			gGL.popMatrix();
 		}
 		else if (mManipPart == LL_ROT_X)
 		{
 			mManipulatorScales = lerp(mManipulatorScales, LLVector4(SELECTED_MANIPULATOR_SCALE, 1.f, 1.f, 1.f), LLCriticalDamp::getInterpolant(MANIPULATOR_SCALE_HALF_LIFE));
-			glPushMatrix();
+			gGL.pushMatrix();
 			{
-				glRotatef( 90.f, 0.f, 1.f, 0.f );
-				glScalef(mManipulatorScales.mV[VX], mManipulatorScales.mV[VX], mManipulatorScales.mV[VX]);
+				gGL.rotatef( 90.f, 0.f, 1.f, 0.f );
+				gGL.scalef(mManipulatorScales.mV[VX], mManipulatorScales.mV[VX], mManipulatorScales.mV[VX]);
 				renderActiveRing( mRadiusMeters, width_meters, LLColor4( 1.f, 0.f, 0.f, 1.f), LLColor4( 1.f, 0.f, 0.f, 0.3f));
 			}
-			glPopMatrix();
+			gGL.popMatrix();
 		}
 		else if (mManipPart == LL_ROT_ROLL)
 		{
@@ -271,12 +289,13 @@ void LLManipRotate::render()
 			// First pass: centers. Second pass: sides.
 			for( S32 i=0; i<2; i++ )
 			{
-				glPushMatrix();
+				
+				gGL.pushMatrix();
 				{
 					if (mHighlightedPart == LL_ROT_Z)
 					{
 						mManipulatorScales = lerp(mManipulatorScales, LLVector4(1.f, 1.f, SELECTED_MANIPULATOR_SCALE, 1.f), LLCriticalDamp::getInterpolant(MANIPULATOR_SCALE_HALF_LIFE));
-						glScalef(mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ]);
+						gGL.scalef(mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ], mManipulatorScales.mV[VZ]);
 						// hovering over part
 						gl_ring( mRadiusMeters, width_meters, LLColor4( 0.f, 0.f, 1.f, 1.f ), LLColor4( 0.f, 0.f, 1.f, 0.5f ), CIRCLE_STEPS, i);
 					}
@@ -286,15 +305,15 @@ void LLManipRotate::render()
 						gl_ring( mRadiusMeters, width_meters, LLColor4( 0.f, 0.f, 0.8f, 0.8f ), LLColor4( 0.f, 0.f, 0.8f, 0.4f ), CIRCLE_STEPS, i);
 					}
 				}
-				glPopMatrix();
-
-				glPushMatrix();
+				gGL.popMatrix();
+				
+				gGL.pushMatrix();
 				{
-					glRotatef( 90.f, 1.f, 0.f, 0.f );
+					gGL.rotatef( 90.f, 1.f, 0.f, 0.f );
 					if (mHighlightedPart == LL_ROT_Y)
 					{
 						mManipulatorScales = lerp(mManipulatorScales, LLVector4(1.f, SELECTED_MANIPULATOR_SCALE, 1.f, 1.f), LLCriticalDamp::getInterpolant(MANIPULATOR_SCALE_HALF_LIFE));
-						glScalef(mManipulatorScales.mV[VY], mManipulatorScales.mV[VY], mManipulatorScales.mV[VY]);
+						gGL.scalef(mManipulatorScales.mV[VY], mManipulatorScales.mV[VY], mManipulatorScales.mV[VY]);
 						// hovering over part
 						gl_ring( mRadiusMeters, width_meters, LLColor4( 0.f, 1.f, 0.f, 1.f ), LLColor4( 0.f, 1.f, 0.f, 0.5f ), CIRCLE_STEPS, i);
 					}
@@ -304,15 +323,15 @@ void LLManipRotate::render()
 						gl_ring( mRadiusMeters, width_meters, LLColor4( 0.f, 0.8f, 0.f, 0.8f ), LLColor4( 0.f, 0.8f, 0.f, 0.4f ), CIRCLE_STEPS, i);
 					}						
 				}
-				glPopMatrix();
+				gGL.popMatrix();
 
-				glPushMatrix();
+				gGL.pushMatrix();
 				{
-					glRotatef( 90.f, 0.f, 1.f, 0.f );
+					gGL.rotatef( 90.f, 0.f, 1.f, 0.f );
 					if (mHighlightedPart == LL_ROT_X)
 					{
 						mManipulatorScales = lerp(mManipulatorScales, LLVector4(SELECTED_MANIPULATOR_SCALE, 1.f, 1.f, 1.f), LLCriticalDamp::getInterpolant(MANIPULATOR_SCALE_HALF_LIFE));
-						glScalef(mManipulatorScales.mV[VX], mManipulatorScales.mV[VX], mManipulatorScales.mV[VX]);
+						gGL.scalef(mManipulatorScales.mV[VX], mManipulatorScales.mV[VX], mManipulatorScales.mV[VX]);
 	
 						// hovering over part
 						gl_ring( mRadiusMeters, width_meters, LLColor4( 1.f, 0.f, 0.f, 1.f ), LLColor4( 1.f, 0.f, 0.f, 0.5f ), CIRCLE_STEPS, i);
@@ -323,17 +342,26 @@ void LLManipRotate::render()
 						gl_ring( mRadiusMeters, width_meters, LLColor4( 0.8f, 0.f, 0.f, 0.8f ), LLColor4( 0.8f, 0.f, 0.f, 0.4f ), CIRCLE_STEPS, i);
 					}
 				}
-				glPopMatrix();
+				gGL.popMatrix();
 
 				if (mHighlightedPart == LL_ROT_ROLL)
 				{
 					mManipulatorScales = lerp(mManipulatorScales, LLVector4(1.f, 1.f, 1.f, SELECTED_MANIPULATOR_SCALE), LLCriticalDamp::getInterpolant(MANIPULATOR_SCALE_HALF_LIFE));
 				}
+				
 			}
+			
 		}
+
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gUIProgram.bind();
+		}
+		
 	}
-	glPopMatrix();
-	glPopMatrix();
+	gGL.popMatrix();
+	gGL.popMatrix();
+	
 
 	LLVector3 euler_angles;
 	LLQuaternion object_rot = first_object->getRotationEdit();
@@ -796,14 +824,14 @@ void LLManipRotate::renderSnapGuides()
 		for (S32 pass = 0; pass < 3; pass++)
 		{
 			// render snap guide ring
-			glPushMatrix();
+			gGL.pushMatrix();
 			
 			LLQuaternion snap_guide_rot;
 			F32 angle_radians, x, y, z;
 			snap_guide_rot.shortestArc(LLVector3::z_axis, getConstraintAxis());
 			snap_guide_rot.getAngleAxis(&angle_radians, &x, &y, &z);
-			glTranslatef(center.mV[VX], center.mV[VY], center.mV[VZ]);
-			glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
+			gGL.translatef(center.mV[VX], center.mV[VY], center.mV[VZ]);
+			gGL.rotatef(angle_radians * RAD_TO_DEG, x, y, z);
 
 			LLColor4 line_color = setupSnapGuideRenderPass(pass);
 
@@ -826,7 +854,7 @@ void LLManipRotate::renderSnapGuides()
 			{
 				gl_circle_2d(0.f, 0.f, mRadiusMeters * SNAP_GUIDE_INNER_RADIUS, CIRCLE_STEPS, FALSE);
 			}
-			glPopMatrix();
+			gGL.popMatrix();
 
 			for (S32 i = 0; i < 64; i++)
 			{
diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp
index 4eb94dfb8e805997665212b06761bd929675cc30..f6df4cdfbfe0c8530d5c3efa9eb56858e4d315d1 100644
--- a/indra/newview/llmanipscale.cpp
+++ b/indra/newview/llmanipscale.cpp
@@ -217,12 +217,12 @@ void LLManipScale::render()
 	
 	if( canAffectSelection() )
 	{
-		glMatrixMode(GL_MODELVIEW);
-		glPushMatrix();
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
+		gGL.pushMatrix();
 		if (mObjectSelection->getSelectType() == SELECT_TYPE_HUD)
 		{
 			F32 zoom = gAgentCamera.mHUDCurZoom;
-			glScalef(zoom, zoom, zoom);
+			gGL.scalef(zoom, zoom, zoom);
 		}
 
 		////////////////////////////////////////////////////////////////////////
@@ -274,14 +274,14 @@ void LLManipScale::render()
 		LLVector3 pos_agent = bbox.getPositionAgent();
 		LLQuaternion rot = bbox.getRotation();
 
-		glMatrixMode(GL_MODELVIEW);
-		glPushMatrix();
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
+		gGL.pushMatrix();
 		{
-			glTranslatef(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ]);
+			gGL.translatef(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ]);
 
 			F32 angle_radians, x, y, z;
 			rot.getAngleAxis(&angle_radians, &x, &y, &z);
-			glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
+			gGL.rotatef(angle_radians * RAD_TO_DEG, x, y, z);
 
 			
 			{
@@ -303,13 +303,13 @@ void LLManipScale::render()
 				glPolygonOffset( 0.f, 0.f);
 			}
 		}
-		glPopMatrix();
+		gGL.popMatrix();
 
 		if (mManipPart != LL_NO_PART)
 		{
 			renderSnapGuides(bbox);
 		}
-		glPopMatrix();
+		gGL.popMatrix();
 
 		renderXYZ(bbox.getExtentLocal());
 	}
@@ -719,17 +719,17 @@ void LLManipScale::renderEdges( const LLBBox& bbox )
 		LLVector3 direction = edgeToUnitVector( part );
 		LLVector3 center_to_edge = unitVectorToLocalBBoxExtent( direction, bbox );
 
-		glPushMatrix();
+		gGL.pushMatrix();
 		{
-			glTranslatef( center_to_edge.mV[0], center_to_edge.mV[1], center_to_edge.mV[2] );
+			gGL.translatef( center_to_edge.mV[0], center_to_edge.mV[1], center_to_edge.mV[2] );
 			conditionalHighlight( part );
-			glScalef( 
+			gGL.scalef( 
 				direction.mV[0] ? edge_width : extent.mV[VX],
 				direction.mV[1] ? edge_width : extent.mV[VY],
 				direction.mV[2] ? edge_width : extent.mV[VZ] );
 			gBox.render();
 		}
-		glPopMatrix();
+		gGL.popMatrix();
 	}
 }
 
@@ -766,13 +766,13 @@ void LLManipScale::renderBoxHandle( F32 x, F32 y, F32 z )
 	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 	LLGLDepthTest gls_depth(GL_FALSE);
 
-	glPushMatrix();
+	gGL.pushMatrix();
 	{
-		glTranslatef( x, y, z );
-		glScalef( mScaledBoxHandleSize, mScaledBoxHandleSize, mScaledBoxHandleSize );
+		gGL.translatef( x, y, z );
+		gGL.scalef( mScaledBoxHandleSize, mScaledBoxHandleSize, mScaledBoxHandleSize );
 		gBox.render();
 	}
-	glPopMatrix();
+	gGL.popMatrix();
 }
 
 
@@ -788,16 +788,16 @@ void LLManipScale::renderAxisHandle( const LLVector3& start, const LLVector3& en
 		LLVector3 delta = end - offset_start;
 		LLVector3 pos = offset_start + 0.5f * delta;
 
-		glPushMatrix();
+		gGL.pushMatrix();
 		{
-			glTranslatef( pos.mV[VX], pos.mV[VY], pos.mV[VZ] );
-			glScalef( 
+			gGL.translatef( pos.mV[VX], pos.mV[VY], pos.mV[VZ] );
+			gGL.scalef( 
 				mBoxHandleSize + llabs(delta.mV[VX]),
 				mBoxHandleSize + llabs(delta.mV[VY]),
 				mBoxHandleSize + llabs(delta.mV[VZ]));
 			gBox.render();
 		}
-		glPopMatrix();
+		gGL.popMatrix();
 	}
 	else
 	{
diff --git a/indra/newview/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp
index f871df0c36cc787abe6a9081f33961f4e16512e3..3a88fbd96deab76c4a0a8811d5f5497071cc6f43 100644
--- a/indra/newview/llmaniptranslate.cpp
+++ b/indra/newview/llmaniptranslate.cpp
@@ -1066,12 +1066,12 @@ BOOL LLManipTranslate::handleMouseUp(S32 x, S32 y, MASK mask)
 
 void LLManipTranslate::render()
 {
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.pushMatrix();
 	if (mObjectSelection->getSelectType() == SELECT_TYPE_HUD)
 	{
 		F32 zoom = gAgentCamera.mHUDCurZoom;
-		glScalef(zoom, zoom, zoom);
+		gGL.scalef(zoom, zoom, zoom);
 	}
 	{
 		LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE);
@@ -1515,11 +1515,12 @@ void LLManipTranslate::renderSnapGuides()
 		F32 x,y,z,angle_radians;
 		grid_rotation.getAngleAxis(&angle_radians, &x, &y, &z);
 		gGL.translatef(selection_center.mV[VX], selection_center.mV[VY], selection_center.mV[VZ]);
-		glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
+		gGL.rotatef(angle_radians * RAD_TO_DEG, x, y, z);
 		
 		F32 sz = mGridSizeMeters;
 		F32 tiles = sz;
-		glMatrixMode(GL_TEXTURE);
+
+		gGL.matrixMode(LLRender::MM_TEXTURE);
 		gGL.pushMatrix();
 		usc = 1.0f/usc;
 		vsc = 1.0f/vsc;
@@ -1533,7 +1534,7 @@ void LLManipTranslate::renderSnapGuides()
 			vsc *= 0.5f;
 		}
 
-		glScalef(usc, vsc, 1.0f);
+		gGL.scalef(usc, vsc, 1.0f);
 		gGL.translatef(u, v, 0);
 		
 		float a = line_alpha;
@@ -1566,7 +1567,7 @@ void LLManipTranslate::renderSnapGuides()
 					renderGrid(u,v,tiles,1,1,1,a);
 
 					gGL.popMatrix();
-					glMatrixMode(GL_MODELVIEW);
+					gGL.matrixMode(LLRender::MM_MODELVIEW);
 					gGL.popMatrix();
 				}
 
@@ -1665,7 +1666,7 @@ void LLManipTranslate::highlightIntersection(LLVector3 normal,
 		glStencilFunc(GL_ALWAYS, 0, stencil_mask);
 		gGL.setColorMask(false, false);
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-		glColor4f(1,1,1,1);
+		gGL.diffuseColor4f(1,1,1,1);
 
 		//setup clip plane
 		normal = normal * grid_rotation;
@@ -1723,7 +1724,7 @@ void LLManipTranslate::highlightIntersection(LLVector3 normal,
 	F32 x,y,z,angle_radians;
 	grid_rotation.getAngleAxis(&angle_radians, &x, &y, &z);
 	gGL.translatef(selection_center.mV[VX], selection_center.mV[VY], selection_center.mV[VZ]);
-	glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
+	gGL.rotatef(angle_radians * RAD_TO_DEG, x, y, z);
 	
 	F32 sz = mGridSizeMeters;
 	F32 tiles = sz;
@@ -1852,7 +1853,7 @@ void LLManipTranslate::renderTranslationHandles()
 	mGridSizeMeters = gSavedSettings.getF32("GridDrawSize");
 	mConeSize = mArrowLengthMeters / 4.f;
 
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.pushMatrix();
 	{
 		gGL.translatef(selection_center.mV[VX], selection_center.mV[VY], selection_center.mV[VZ]);
@@ -1860,7 +1861,7 @@ void LLManipTranslate::renderTranslationHandles()
 		F32 angle_radians, x, y, z;
 		grid_rotation.getAngleAxis(&angle_radians, &x, &y, &z);
 
-		glRotatef(angle_radians * RAD_TO_DEG, x, y, z);
+		gGL.rotatef(angle_radians * RAD_TO_DEG, x, y, z);
 
 		LLQuaternion invRotation = grid_rotation;
 		invRotation.conjQuat();
@@ -1908,9 +1909,9 @@ void LLManipTranslate::renderTranslationHandles()
 			{
 				// render YZ plane manipulator
 				gGL.pushMatrix();
-				glScalef(mPlaneManipPositions.mV[VX], mPlaneManipPositions.mV[VY], mPlaneManipPositions.mV[VZ]);
+				gGL.scalef(mPlaneManipPositions.mV[VX], mPlaneManipPositions.mV[VY], mPlaneManipPositions.mV[VZ]);
 				gGL.translatef(0.f, mPlaneManipOffsetMeters, mPlaneManipOffsetMeters);
-				glScalef(mPlaneScales.mV[VX], mPlaneScales.mV[VX], mPlaneScales.mV[VX]);
+				gGL.scalef(mPlaneScales.mV[VX], mPlaneScales.mV[VX], mPlaneScales.mV[VX]);
 				if (mHighlightedPart == LL_YZ_PLANE)
 				{
 					color1.setVec(0.f, 1.f, 0.f, 1.f);
@@ -1962,9 +1963,9 @@ void LLManipTranslate::renderTranslationHandles()
 			{
 				// render XZ plane manipulator
 				gGL.pushMatrix();
-				glScalef(mPlaneManipPositions.mV[VX], mPlaneManipPositions.mV[VY], mPlaneManipPositions.mV[VZ]);
+				gGL.scalef(mPlaneManipPositions.mV[VX], mPlaneManipPositions.mV[VY], mPlaneManipPositions.mV[VZ]);
 				gGL.translatef(mPlaneManipOffsetMeters, 0.f, mPlaneManipOffsetMeters);
-				glScalef(mPlaneScales.mV[VY], mPlaneScales.mV[VY], mPlaneScales.mV[VY]);
+				gGL.scalef(mPlaneScales.mV[VY], mPlaneScales.mV[VY], mPlaneScales.mV[VY]);
 				if (mHighlightedPart == LL_XZ_PLANE)
 				{
 					color1.setVec(0.f, 0.f, 1.f, 1.f);
@@ -2018,7 +2019,7 @@ void LLManipTranslate::renderTranslationHandles()
 			{
 				// render XY plane manipulator
 				gGL.pushMatrix();
-				glScalef(mPlaneManipPositions.mV[VX], mPlaneManipPositions.mV[VY], mPlaneManipPositions.mV[VZ]);
+				gGL.scalef(mPlaneManipPositions.mV[VX], mPlaneManipPositions.mV[VY], mPlaneManipPositions.mV[VZ]);
 				
 /*				 			  Y
 				 			  ^
@@ -2043,7 +2044,7 @@ void LLManipTranslate::renderTranslationHandles()
 					v2 = LLVector3(mPlaneManipOffsetMeters * ( PLANE_TICK_SIZE * 0.25f), mPlaneManipOffsetMeters * ( PLANE_TICK_SIZE * 0.25f), 0.f);
 					v3 = LLVector3(mPlaneManipOffsetMeters * (-PLANE_TICK_SIZE * 0.75f), mPlaneManipOffsetMeters * ( PLANE_TICK_SIZE * 0.25f), 0.f);
 #endif
-					glScalef(mPlaneScales.mV[VZ], mPlaneScales.mV[VZ], mPlaneScales.mV[VZ]);
+					gGL.scalef(mPlaneScales.mV[VZ], mPlaneScales.mV[VZ], mPlaneScales.mV[VZ]);
 					if (mHighlightedPart == LL_XY_PLANE)
 					{
 						color1.setVec(1.f, 0.f, 0.f, 1.f);
@@ -2215,7 +2216,7 @@ void LLManipTranslate::renderArrow(S32 which_arrow, S32 selected_arrow, F32 box_
 		}
 		
 		gGL.translatef(vec.mV[0], vec.mV[1], vec.mV[2]);
-		glScalef(handle_size, handle_size, handle_size);
+		gGL.scalef(handle_size, handle_size, handle_size);
 
 		F32 rot = 0.0f;
 		LLVector3 axis;
@@ -2239,11 +2240,11 @@ void LLManipTranslate::renderArrow(S32 which_arrow, S32 selected_arrow, F32 box_
 			break;
 		}
 
-		glColor4fv(color.mV);
-		glRotatef(rot, axis.mV[0], axis.mV[1], axis.mV[2]);
-		glScalef(mArrowScales.mV[index], mArrowScales.mV[index], mArrowScales.mV[index] * 1.5f);
+		gGL.diffuseColor4fv(color.mV);
+		gGL.rotatef(rot, axis.mV[0], axis.mV[1], axis.mV[2]);
+		gGL.scalef(mArrowScales.mV[index], mArrowScales.mV[index], mArrowScales.mV[index] * 1.5f);
 
-		gCone.render(CONE_LOD_HIGHEST);
+		gCone.render();
 
 		gGL.popMatrix();
 	}
diff --git a/indra/newview/llmarketplacefunctions.cpp b/indra/newview/llmarketplacefunctions.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a3f0a6062c8878712a5515a751653ed0cfb7dd8e
--- /dev/null
+++ b/indra/newview/llmarketplacefunctions.cpp
@@ -0,0 +1,463 @@
+/** 
+ * @file llmarketplacefunctions.cpp
+ * @brief Implementation of assorted functions related to the marketplace
+ *
+ * $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 "llviewerprecompiledheaders.h"
+
+#include "llmarketplacefunctions.h"
+
+#include "llagent.h"
+#include "llhttpclient.h"
+#include "lltrans.h"
+#include "llviewercontrol.h"
+#include "llviewermedia.h"
+#include "llviewernetwork.h"
+
+
+//
+// Helpers
+//
+
+static std::string getMarketplaceDomain()
+{
+	std::string domain = "secondlife.com";
+	
+	if (!LLGridManager::getInstance()->isInProductionGrid())
+	{
+		const std::string& grid_label = LLGridManager::getInstance()->getGridLabel();
+		const std::string& grid_label_lower = utf8str_tolower(grid_label);
+		
+		if (grid_label_lower == "damballah")
+		{
+			domain = "secondlife-staging.com";
+		}
+		else
+		{
+			domain = llformat("%s.lindenlab.com", grid_label_lower.c_str());
+		}
+	}
+	
+	return domain;
+}
+
+static std::string getMarketplaceURL(const std::string& urlStringName)
+{
+	LLStringUtil::format_map_t domain_arg;
+	domain_arg["[MARKETPLACE_DOMAIN_NAME]"] = getMarketplaceDomain();
+	
+	std::string marketplace_url = LLTrans::getString(urlStringName, domain_arg);
+	
+	return marketplace_url;
+}
+
+LLSD getMarketplaceStringSubstitutions()
+{
+	std::string marketplace_url = getMarketplaceURL("MarketplaceURL");
+	std::string marketplace_url_create = getMarketplaceURL("MarketplaceURL_CreateStore");
+	std::string marketplace_url_dashboard = getMarketplaceURL("MarketplaceURL_Dashboard");
+	std::string marketplace_url_imports = getMarketplaceURL("MarketplaceURL_Imports");
+	std::string marketplace_url_info = getMarketplaceURL("MarketplaceURL_LearnMore");
+	
+	LLSD marketplace_sub_map;
+
+	marketplace_sub_map["[MARKETPLACE_URL]"] = marketplace_url;
+	marketplace_sub_map["[MARKETPLACE_CREATE_STORE_URL]"] = marketplace_url_create;
+	marketplace_sub_map["[MARKETPLACE_LEARN_MORE_URL]"] = marketplace_url_info;
+	marketplace_sub_map["[MARKETPLACE_DASHBOARD_URL]"] = marketplace_url_dashboard;
+	marketplace_sub_map["[MARKETPLACE_IMPORTS_URL]"] = marketplace_url_imports;
+	
+	return marketplace_sub_map;
+}
+
+namespace LLMarketplaceImport
+{
+	// Basic interface for this namespace
+
+	bool hasSessionCookie();
+	bool inProgress();
+	bool resultPending();
+	U32 getResultStatus();
+	const LLSD& getResults();
+
+	bool establishMarketplaceSessionCookie();
+	bool pollStatus();
+	bool triggerImport();
+	
+	// Internal state variables
+
+	static std::string sMarketplaceCookie = "";
+	static LLSD sImportId = LLSD::emptyMap();
+	static bool sImportInProgress = false;
+	static bool sImportPostPending = false;
+	static bool sImportGetPending = false;
+	static U32 sImportResultStatus = 0;
+	static LLSD sImportResults = LLSD::emptyMap();
+
+	// Responders
+	
+	class LLImportPostResponder : public LLHTTPClient::Responder
+	{
+	public:
+		LLImportPostResponder() : LLCurl::Responder() {}
+		
+		void completed(U32 status, const std::string& reason, const LLSD& content)
+		{
+			if (gSavedSettings.getBOOL("InventoryOutboxLogging"))
+			{
+				llinfos << " SLM POST status: " << status << llendl;
+				llinfos << " SLM POST reason: " << reason << llendl;
+				llinfos << " SLM POST content: " << content.asString() << llendl;
+			}
+
+			if ((status == MarketplaceErrorCodes::IMPORT_REDIRECT) ||
+				(status == MarketplaceErrorCodes::IMPORT_AUTHENTICATION_ERROR) ||
+				(status == MarketplaceErrorCodes::IMPORT_JOB_TIMEOUT))
+			{
+				if (gSavedSettings.getBOOL("InventoryOutboxLogging"))
+				{
+					llinfos << " SLM POST clearing marketplace cookie due to authentication failure or timeout" << llendl;
+				}
+
+				sMarketplaceCookie.clear();
+			}
+
+			sImportInProgress = (status == MarketplaceErrorCodes::IMPORT_DONE);
+			sImportPostPending = false;
+			sImportResultStatus = status;
+			sImportId = content;
+		}
+	};
+	
+	class LLImportGetResponder : public LLHTTPClient::Responder
+	{
+	public:
+		LLImportGetResponder() : LLCurl::Responder() {}
+		
+		void completedHeader(U32 status, const std::string& reason, const LLSD& content)
+		{
+			const std::string& set_cookie_string = content["set-cookie"].asString();
+			
+			if (!set_cookie_string.empty())
+			{
+				sMarketplaceCookie = set_cookie_string;
+			}
+		}
+		
+		void completed(U32 status, const std::string& reason, const LLSD& content)
+		{
+			if (gSavedSettings.getBOOL("InventoryOutboxLogging"))
+			{
+				llinfos << " SLM GET status: " << status << llendl;
+				llinfos << " SLM GET reason: " << reason << llendl;
+				llinfos << " SLM GET content: " << content.asString() << llendl;
+			}
+			
+			if ((status == MarketplaceErrorCodes::IMPORT_AUTHENTICATION_ERROR) ||
+				(status == MarketplaceErrorCodes::IMPORT_JOB_TIMEOUT))
+			{
+				if (gSavedSettings.getBOOL("InventoryOutboxLogging"))
+				{
+					llinfos << " SLM GET clearing marketplace cookie due to authentication failure or timeout" << llendl;
+				}
+
+				sMarketplaceCookie.clear();
+			}
+
+			sImportInProgress = (status == MarketplaceErrorCodes::IMPORT_PROCESSING);
+			sImportGetPending = false;
+			sImportResultStatus = status;
+			sImportResults = content;
+		}
+	};
+
+	// Basic API
+
+	bool hasSessionCookie()
+	{
+		return !sMarketplaceCookie.empty();
+	}
+	
+	bool inProgress()
+	{
+		return sImportInProgress;
+	}
+	
+	bool resultPending()
+	{
+		return (sImportPostPending || sImportGetPending);
+	}
+	
+	U32 getResultStatus()
+	{
+		return sImportResultStatus;
+	}
+	
+	const LLSD& getResults()
+	{
+		return sImportResults;
+	}
+	
+	static std::string getInventoryImportURL()
+	{
+		std::string url = getMarketplaceURL("MarketplaceURL");
+		
+		url += "api/1/";
+		url += gAgent.getID().getString();
+		url += "/inventory/import/";
+		
+		return url;
+	}
+	
+	bool establishMarketplaceSessionCookie()
+	{
+		if (hasSessionCookie())
+		{
+			return false;
+		}
+
+		sImportInProgress = true;
+		sImportGetPending = true;
+		
+		std::string url = getInventoryImportURL();
+		
+		if (gSavedSettings.getBOOL("InventoryOutboxLogging"))
+		{
+			llinfos << " SLM GET: " << url << llendl;
+		}
+
+		LLHTTPClient::get(url, new LLImportGetResponder(), LLViewerMedia::getHeaders());
+		
+		return true;
+	}
+	
+	bool pollStatus()
+	{
+		if (!hasSessionCookie())
+		{
+			return false;
+		}
+		
+		sImportGetPending = true;
+
+		std::string url = getInventoryImportURL();
+
+		url += sImportId.asString();
+
+		// Make the headers for the post
+		LLSD headers = LLSD::emptyMap();
+		headers["Accept"] = "*/*";
+		headers["Cookie"] = sMarketplaceCookie;
+		headers["Content-Type"] = "application/llsd+xml";
+		headers["User-Agent"] = LLViewerMedia::getCurrentUserAgent();
+		
+		if (gSavedSettings.getBOOL("InventoryOutboxLogging"))
+		{
+			llinfos << " SLM GET: " << url << llendl;
+		}
+
+		LLHTTPClient::get(url, new LLImportGetResponder(), headers);
+		
+		return true;
+	}
+	
+	bool triggerImport()
+	{
+		if (!hasSessionCookie())
+		{
+			return false;
+		}
+
+		sImportId = LLSD::emptyMap();
+		sImportInProgress = true;
+		sImportPostPending = true;
+		sImportResultStatus = MarketplaceErrorCodes::IMPORT_PROCESSING;
+		sImportResults = LLSD::emptyMap();
+
+		std::string url = getInventoryImportURL();
+		
+		// Make the headers for the post
+		LLSD headers = LLSD::emptyMap();
+		headers["Accept"] = "*/*";
+		headers["Connection"] = "Keep-Alive";
+		headers["Cookie"] = sMarketplaceCookie;
+		headers["Content-Type"] = "application/xml";
+		headers["User-Agent"] = LLViewerMedia::getCurrentUserAgent();
+		
+		if (gSavedSettings.getBOOL("InventoryOutboxLogging"))
+		{
+			llinfos << " SLM POST: " << url << llendl;
+		}
+
+		LLHTTPClient::post(url, LLSD(), new LLImportPostResponder(), headers);
+		
+		return true;
+	}
+}
+
+
+//
+// Interface class
+//
+
+
+//static
+void LLMarketplaceInventoryImporter::update()
+{
+	if (instanceExists())
+	{
+		LLMarketplaceInventoryImporter::instance().updateImport();
+	}
+}
+
+LLMarketplaceInventoryImporter::LLMarketplaceInventoryImporter()
+	: mAutoTriggerImport(false)
+	, mImportInProgress(false)
+	, mInitialized(false)
+	, mErrorInitSignal(NULL)
+	, mStatusChangedSignal(NULL)
+	, mStatusReportSignal(NULL)
+{
+}
+
+boost::signals2::connection LLMarketplaceInventoryImporter::setInitializationErrorCallback(const status_report_signal_t::slot_type& cb)
+{
+	if (mErrorInitSignal == NULL)
+	{
+		mErrorInitSignal = new status_report_signal_t();
+	}
+	
+	return mErrorInitSignal->connect(cb);
+}
+
+boost::signals2::connection LLMarketplaceInventoryImporter::setStatusChangedCallback(const status_changed_signal_t::slot_type& cb)
+{
+	if (mStatusChangedSignal == NULL)
+	{
+		mStatusChangedSignal = new status_changed_signal_t();
+	}
+
+	return mStatusChangedSignal->connect(cb);
+}
+
+boost::signals2::connection LLMarketplaceInventoryImporter::setStatusReportCallback(const status_report_signal_t::slot_type& cb)
+{
+	if (mStatusReportSignal == NULL)
+	{
+		mStatusReportSignal = new status_report_signal_t();
+	}
+
+	return mStatusReportSignal->connect(cb);
+}
+
+void LLMarketplaceInventoryImporter::initialize()
+{
+	llassert(!mInitialized);
+
+	if (!LLMarketplaceImport::hasSessionCookie())
+	{
+		LLMarketplaceImport::establishMarketplaceSessionCookie();
+	}
+}
+
+void LLMarketplaceInventoryImporter::reinitializeAndTriggerImport()
+{
+	mInitialized = false;
+
+	initialize();
+
+	mAutoTriggerImport = true;
+}
+
+bool LLMarketplaceInventoryImporter::triggerImport()
+{
+	const bool import_triggered = LLMarketplaceImport::triggerImport();
+	
+	if (!import_triggered)
+	{
+		reinitializeAndTriggerImport();
+	}
+	
+	return import_triggered;
+}
+
+void LLMarketplaceInventoryImporter::updateImport()
+{
+	const bool in_progress = LLMarketplaceImport::inProgress();
+	
+	if (in_progress && !LLMarketplaceImport::resultPending())
+	{
+		const bool polling_status = LLMarketplaceImport::pollStatus();
+		
+		if (!polling_status)
+		{
+			reinitializeAndTriggerImport();
+		}
+	}	
+	
+	if (mImportInProgress != in_progress)
+	{
+		mImportInProgress = in_progress;
+
+		// If we are no longer in progress
+		if (!mImportInProgress)
+		{
+			if (mInitialized)
+			{
+				// Report results
+				if (mStatusReportSignal)
+				{
+					(*mStatusReportSignal)(LLMarketplaceImport::getResultStatus(), LLMarketplaceImport::getResults());
+				}
+			}
+			else
+			{
+				// Look for results success
+				mInitialized = LLMarketplaceImport::hasSessionCookie();
+				
+				if (mInitialized)
+				{
+					// Follow up with auto trigger of import
+					if (mAutoTriggerImport)
+					{
+						mAutoTriggerImport = false;
+
+						mImportInProgress = triggerImport();
+					}
+				}
+				else if (mErrorInitSignal)
+				{
+					(*mErrorInitSignal)(LLMarketplaceImport::getResultStatus(), LLMarketplaceImport::getResults());
+				}
+			}
+		}
+
+		// Make sure we trigger the status change with the final state (in case of auto trigger after initialize)
+		if (mStatusChangedSignal)
+		{
+			(*mStatusChangedSignal)(mImportInProgress);
+		}
+	}
+}
+
diff --git a/indra/newview/llmarketplacefunctions.h b/indra/newview/llmarketplacefunctions.h
new file mode 100644
index 0000000000000000000000000000000000000000..4b8f7a1ac77676b1422fea28d7f1e5cc24aa9d19
--- /dev/null
+++ b/indra/newview/llmarketplacefunctions.h
@@ -0,0 +1,94 @@
+/** 
+ * @file llmarketplacefunctions.h
+ * @brief Miscellaneous marketplace-related functions and classes
+ * class definition
+ *
+ * $LicenseInfo:firstyear=2001&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$
+ */
+
+#ifndef LL_LLMARKETPLACEFUNCTIONS_H
+#define LL_LLMARKETPLACEFUNCTIONS_H
+
+
+#include <llsd.h>
+#include <boost/function.hpp>
+#include <boost/signals2.hpp>
+
+#include "llsingleton.h"
+#include "llstring.h"
+
+
+LLSD getMarketplaceStringSubstitutions();
+
+
+namespace MarketplaceErrorCodes
+{
+	enum eCode
+	{
+		IMPORT_DONE = 200,
+		IMPORT_PROCESSING = 202,
+		IMPORT_REDIRECT = 302,
+		IMPORT_AUTHENTICATION_ERROR = 401,
+		IMPORT_DONE_WITH_ERRORS = 409,
+		IMPORT_JOB_FAILED = 410,
+		IMPORT_JOB_TIMEOUT = 499,
+	};
+}
+
+
+class LLMarketplaceInventoryImporter
+	: public LLSingleton<LLMarketplaceInventoryImporter>
+{
+public:
+	static void update();
+	
+	LLMarketplaceInventoryImporter();
+	
+	typedef boost::signals2::signal<void (bool)> status_changed_signal_t;
+	typedef boost::signals2::signal<void (U32, const LLSD&)> status_report_signal_t;
+
+	boost::signals2::connection setInitializationErrorCallback(const status_report_signal_t::slot_type& cb);
+	boost::signals2::connection setStatusChangedCallback(const status_changed_signal_t::slot_type& cb);
+	boost::signals2::connection setStatusReportCallback(const status_report_signal_t::slot_type& cb);
+	
+	void initialize();
+	bool triggerImport();
+	bool isImportInProgress() const { return mImportInProgress; }
+	
+protected:
+	void reinitializeAndTriggerImport();
+	void updateImport();
+	
+private:
+	bool mAutoTriggerImport;
+	bool mImportInProgress;
+	bool mInitialized;
+	
+	status_report_signal_t *	mErrorInitSignal;
+	status_changed_signal_t *	mStatusChangedSignal;
+	status_report_signal_t *	mStatusReportSignal;
+};
+
+
+
+#endif // LL_LLMARKETPLACEFUNCTIONS_H
+
diff --git a/indra/newview/llmarketplacenotifications.cpp b/indra/newview/llmarketplacenotifications.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..0886f9a99046605cef305496c0fc97c57ec072f9
--- /dev/null
+++ b/indra/newview/llmarketplacenotifications.cpp
@@ -0,0 +1,90 @@
+/** 
+ * @file llmarketplacenotifications.cpp
+ * @brief Handler for notifications related to marketplace file I/O
+ * class definition
+ *
+ * $LicenseInfo:firstyear=2001&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$
+ */
+
+// Precompiled header
+#include "llviewerprecompiledheaders.h"
+
+#include "llmarketplacenotifications.h"
+#include "llnotificationsutil.h"
+
+#include "llerror.h"
+
+#include <boost/foreach.hpp>
+#include <boost/signals2.hpp>
+
+
+namespace LLMarketplaceInventoryNotifications
+{
+	typedef boost::signals2::signal<void (const LLSD& param)>	no_copy_payload_cb_signal_t;
+
+	static no_copy_payload_cb_signal_t*	no_copy_cb_action = NULL;
+	static bool							no_copy_notify_active = false;
+	static std::list<LLSD>				no_copy_payloads;
+
+	void notifyNoCopyCallback(const LLSD& notification, const LLSD& response)
+	{
+		const S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+		
+		if (option == 0)
+		{
+			llassert(!no_copy_payloads.empty());
+			llassert(no_copy_cb_action != NULL);
+			
+			BOOST_FOREACH(const LLSD& payload, no_copy_payloads)
+			{
+				(*no_copy_cb_action)(payload);
+			}
+		}
+		
+		delete no_copy_cb_action;
+		no_copy_cb_action = NULL;
+		
+		no_copy_notify_active = false;
+		no_copy_payloads.clear();
+	}
+
+	void update()
+	{
+		if (!no_copy_notify_active && !no_copy_payloads.empty())
+		{
+			no_copy_notify_active = true;
+			
+			LLNotificationsUtil::add("ConfirmNoCopyToOutbox", LLSD(), LLSD(), boost::bind(&notifyNoCopyCallback, _1, _2));
+		}
+	}
+		
+	void addNoCopyNotification(const LLSD& payload, const NoCopyCallbackFunction& cb)
+	{
+		if (no_copy_cb_action == NULL)
+		{
+			no_copy_cb_action = new no_copy_payload_cb_signal_t;
+			no_copy_cb_action->connect(boost::bind(cb, _1));
+		}
+
+		no_copy_payloads.push_back(payload);
+	}
+}
diff --git a/indra/newview/llmarketplacenotifications.h b/indra/newview/llmarketplacenotifications.h
new file mode 100644
index 0000000000000000000000000000000000000000..83a4e163c7c5d9eb447376b425033c1ff736b46e
--- /dev/null
+++ b/indra/newview/llmarketplacenotifications.h
@@ -0,0 +1,57 @@
+/** 
+ * @file llmarketplacenotifications.h
+ * @brief Handler for notifications related to marketplace file I/O
+ * class definition
+ *
+ * $LicenseInfo:firstyear=2001&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$
+ */
+
+#ifndef LL_LLMARKETPLACENOTIFICATIONS_H
+#define LL_LLMARKETPLACENOTIFICATIONS_H
+
+
+#include <llsd.h>
+#include <boost/function.hpp>
+
+
+//
+// This is a set of helper functions to handle a unique notification with multiple
+// payloads, helpful when dragging and dropping items to the merchant outbox that
+// trigger notifications that can potentially interfere with the current drag and
+// drop operation.
+//
+// Notification payloads are cached locally when initiated, the notification itself
+// is triggered on the following frame during the call to "update" and then the
+// response is triggered once per payload.
+//
+
+namespace LLMarketplaceInventoryNotifications
+{
+	void update();
+
+	typedef boost::function<void (const LLSD&)> NoCopyCallbackFunction;
+	
+	void addNoCopyNotification(const LLSD& payload, const NoCopyCallbackFunction& cb);
+};
+
+
+#endif // LL_LLMARKETPLACENOTIFICATIONS_H
diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index 0bdeb114f54407d21bb36e7ec982fe2a4a7269b1..7650fe92296b825db8d8f873f38f198910d0227c 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -57,7 +57,6 @@
 #include "llcheckboxctrl.h"
 #include "llnotifications.h"
 #include "lllineeditor.h"
-#include "llfloatermediabrowser.h"
 #include "llfloaterwebcontent.h"
 #include "llwindowshade.h"
 
@@ -68,7 +67,6 @@ static LLDefaultChildRegistry::Register<LLMediaCtrl> r("web_browser");
 LLMediaCtrl::Params::Params()
 :	start_url("start_url"),
 	border_visible("border_visible", true),
-	ignore_ui_scale("ignore_ui_scale", true),
 	decouple_texture_size("decouple_texture_size", false),
 	texture_width("texture_width", 1024),
 	texture_height("texture_height", 1024),
@@ -89,7 +87,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
 	mFrequentUpdates( true ),
 	mForceUpdate( false ),
 	mHomePageUrl( "" ),
-	mIgnoreUIScale( true ),
 	mAlwaysRefresh( false ),
 	mMediaSource( 0 ),
 	mTakeFocusOnClick( p.focus_on_click ),
@@ -112,8 +109,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
 		setCaretColor( (unsigned int)color.mV[0], (unsigned int)color.mV[1], (unsigned int)color.mV[2] );
 	}
 
-	setIgnoreUIScale(p.ignore_ui_scale);
-	
 	setHomePageUrl(p.start_url, p.initial_mime_type);
 	
 	setBorderVisible(p.border_visible);
@@ -124,10 +119,8 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
 
 	if(!getDecoupleTextureSize())
 	{
-		S32 screen_width = mIgnoreUIScale ? 
-			llround((F32)getRect().getWidth() * LLUI::sGLScaleFactor.mV[VX]) : getRect().getWidth();
-		S32 screen_height = mIgnoreUIScale ? 
-			llround((F32)getRect().getHeight() * LLUI::sGLScaleFactor.mV[VY]) : getRect().getHeight();
+		S32 screen_width = llround((F32)getRect().getWidth() * LLUI::sGLScaleFactor.mV[VX]);
+		S32 screen_height = llround((F32)getRect().getHeight() * LLUI::sGLScaleFactor.mV[VY]);
 			
 		setTextureSize(screen_width, screen_height);
 	}
@@ -140,10 +133,15 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
 		navigateHome();
 	}
 		
-	// FIXME: How do we create a bevel now?
-//	LLRect border_rect( 0, getRect().getHeight() + 2, getRect().getWidth() + 2, 0 );
-//	mBorder = new LLViewBorder( std::string("web control border"), border_rect, LLViewBorder::BEVEL_IN );
-//	addChild( mBorder );
+	LLWindowShade::Params params;
+	params.name = "notification_shade";
+	params.rect = getLocalRect();
+	params.follows.flags = FOLLOWS_ALL;
+	params.modal = true;
+
+	mWindowShade = LLUICtrlFactory::create<LLWindowShade>(params);
+
+	addChild(mWindowShade);
 }
 
 LLMediaCtrl::~LLMediaCtrl()
@@ -471,8 +469,8 @@ void LLMediaCtrl::reshape( S32 width, S32 height, BOOL called_from_parent )
 {
 	if(!getDecoupleTextureSize())
 	{
-		S32 screen_width = mIgnoreUIScale ? llround((F32)width * LLUI::sGLScaleFactor.mV[VX]) : width;
-		S32 screen_height = mIgnoreUIScale ? llround((F32)height * LLUI::sGLScaleFactor.mV[VY]) : height;
+		S32 screen_width = llround((F32)width * LLUI::sGLScaleFactor.mV[VX]);
+		S32 screen_height = llround((F32)height * LLUI::sGLScaleFactor.mV[VY]);
 
 		// when floater is minimized, these sizes are negative
 		if ( screen_height > 0 && screen_width > 0 )
@@ -689,6 +687,8 @@ bool LLMediaCtrl::ensureMediaSourceExists()
 			mMediaSource->addObserver( this );
 			mMediaSource->setBackgroundColor( getBackgroundColor() );
 			mMediaSource->setTrustedBrowser(mTrusted);
+			mMediaSource->setPageZoomFactor( LLUI::sGLScaleFactor.mV[ VX ] );
+
 			if(mClearCache)
 			{
 				mMediaSource->clearCache();
@@ -770,15 +770,7 @@ void LLMediaCtrl::draw()
 	{
 		gGL.pushUIMatrix();
 		{
-			if (mIgnoreUIScale)
-			{
-				gGL.loadUIIdentity();
-				// font system stores true screen origin, need to scale this by UI scale factor
-				// to get render origin for this view (with unit scale)
-				gGL.translateUI(floorf(LLFontGL::sCurOrigin.mX * LLUI::sGLScaleFactor.mV[VX]), 
-							floorf(LLFontGL::sCurOrigin.mY * LLUI::sGLScaleFactor.mV[VY]), 
-							LLFontGL::sCurOrigin.mZ);
-			}
+			mMediaSource->setPageZoomFactor( LLUI::sGLScaleFactor.mV[ VX ] );
 
 			// scale texture to fit the space using texture coords
 			gGL.getTexUnit(0)->bind(media_texture);
@@ -826,14 +818,6 @@ void LLMediaCtrl::draw()
 			x_offset = (r.getWidth() - width) / 2;
 			y_offset = (r.getHeight() - height) / 2;		
 
-			if(mIgnoreUIScale)
-			{
-				x_offset = llround((F32)x_offset * LLUI::sGLScaleFactor.mV[VX]);
-				y_offset = llround((F32)y_offset * LLUI::sGLScaleFactor.mV[VY]);
-				width = llround((F32)width * LLUI::sGLScaleFactor.mV[VX]);
-				height = llround((F32)height * LLUI::sGLScaleFactor.mV[VY]);
-			}
-
 			// draw the browser
 			gGL.begin( LLRender::QUADS );
 			if (! media_plugin->getTextureCoordsOpenGL())
@@ -900,14 +884,14 @@ void LLMediaCtrl::convertInputCoords(S32& x, S32& y)
 		coords_opengl = mMediaSource->getMediaPlugin()->getTextureCoordsOpenGL();
 	}
 	
-	x = mIgnoreUIScale ? llround((F32)x * LLUI::sGLScaleFactor.mV[VX]) : x;
+	x = llround((F32)x * LLUI::sGLScaleFactor.mV[VX]);
 	if ( ! coords_opengl )
 	{
-		y = mIgnoreUIScale ? llround((F32)(y) * LLUI::sGLScaleFactor.mV[VY]) : y;
+		y = llround((F32)(y) * LLUI::sGLScaleFactor.mV[VY]);
 	}
 	else
 	{
-		y = mIgnoreUIScale ? llround((F32)(getRect().getHeight() - y) * LLUI::sGLScaleFactor.mV[VY]) : getRect().getHeight() - y;
+		y = llround((F32)(getRect().getHeight() - y) * LLUI::sGLScaleFactor.mV[VY]);
 	};
 }
 
@@ -1102,36 +1086,7 @@ void LLMediaCtrl::onPopup(const LLSD& notification, const LLSD& response)
 {
 	if (response["open"])
 	{
-		// name of default floater to open
-		std::string floater_name = "media_browser";
-
-		// look for parent floater name
-		if ( gFloaterView )
-		{
-			if ( gFloaterView->getParentFloater(this) )
-			{
-				floater_name = gFloaterView->getParentFloater(this)->getInstanceName();
-			}
-			else
-			{
-				lldebugs << "No gFloaterView->getParentFloater(this) for onPopuup()" << llendl;
-			};
-		}
-		else
-		{
-			lldebugs << "No gFloaterView for onPopuup()" << llendl;
-		};
-
-		// (for now) open web content floater if that's our parent, otherwise, open the current media floater
-		// (this will change soon)
-		if ( floater_name == "web_content" )
-		{
-			LLWeb::loadWebURL(notification["payload"]["url"], notification["payload"]["target"], notification["payload"]["uuid"]);
-		}
-		else
-		{
-			LLWeb::loadURL(notification["payload"]["url"], notification["payload"]["target"], notification["payload"]["uuid"]);
-		}
+		LLWeb::loadURL(notification["payload"]["url"], notification["payload"]["target"], notification["payload"]["uuid"]);
 	}
 	else
 	{
@@ -1142,39 +1097,28 @@ void LLMediaCtrl::onPopup(const LLSD& notification, const LLSD& response)
 
 void LLMediaCtrl::showNotification(LLNotificationPtr notify)
 {
-	delete mWindowShade;
+	LLWindowShade* shade = getChild<LLWindowShade>("notification_shade");
 
-	LLWindowShade::Params params;
-	params.name = "notification_shade";
-	params.rect = getLocalRect();
-	params.follows.flags = FOLLOWS_ALL;
-	params.notification = notify;
-	params.modal = true;
-	//HACK: don't hardcode this
 	if (notify->getIcon() == "Popup_Caution")
 	{
-		params.bg_image.name = "Yellow_Gradient";
-		params.text_color = LLColor4::black;
+		shade->setBackgroundImage(LLUI::getUIImage("Yellow_Gradient"));
+		shade->setTextColor(LLColor4::black);
+		shade->setCanClose(true);
 	}
-	else
-	//HACK: another one since XUI doesn't support what we need right now
-	if (notify->getName() == "AuthRequest")
+	else if (notify->getName() == "AuthRequest")
 	{
-		params.bg_image.name = "Yellow_Gradient";
-		params.text_color = LLColor4::black;
-		params.can_close = false;
+		shade->setBackgroundImage(LLUI::getUIImage("Yellow_Gradient"));
+		shade->setTextColor(LLColor4::black);
+		shade->setCanClose(false);
 	}
 	else
 	{
 		//HACK: make this a property of the notification itself, "cancellable"
-		params.can_close = false;
-		params.text_color.control = "LabelTextColor";
+		shade->setCanClose(false);
+		shade->setTextColor(LLUIColorTable::instance().getColor("LabelTextColor"));
 	}
 
-	mWindowShade = LLUICtrlFactory::create<LLWindowShade>(params);
-
-	addChild(mWindowShade);
-	mWindowShade->show();
+	mWindowShade->show(notify);
 }
 
 void LLMediaCtrl::hideNotification()
diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h
index 3c0436e27a45e336bef5590229c3650a41839777..7f2a5e164272c10d6cea1578f7dd1ebaef945e85 100644
--- a/indra/newview/llmediactrl.h
+++ b/indra/newview/llmediactrl.h
@@ -51,7 +51,6 @@ class LLMediaCtrl :
 		Optional<std::string>	start_url;
 		
 		Optional<bool>			border_visible,
-								ignore_ui_scale,
 								hide_loading,
 								decouple_texture_size,
 								trusted_content,
@@ -125,9 +124,6 @@ class LLMediaCtrl :
 		bool getFrequentUpdates() { return mFrequentUpdates; };
 		void setFrequentUpdates( bool frequentUpdatesIn ) {  mFrequentUpdates = frequentUpdatesIn; };
 
-		void setIgnoreUIScale(bool ignore) { mIgnoreUIScale = ignore; }
-		bool getIgnoreUIScale() { return mIgnoreUIScale; }
-
 		void setAlwaysRefresh(bool refresh) { mAlwaysRefresh = refresh; }
 		bool getAlwaysRefresh() { return mAlwaysRefresh; }
 		
@@ -181,28 +177,29 @@ class LLMediaCtrl :
 		const S32 mTextureDepthBytes;
 		LLUUID mMediaTextureID;
 		LLViewBorder* mBorder;
-		bool mFrequentUpdates;
-		bool mForceUpdate;
-		bool mTrusted;
-		std::string mHomePageUrl;
-		std::string mHomePageMimeType;
-		std::string mCurrentNavUrl;
-		std::string mErrorPageURL;
-		std::string mTarget;
-		bool mIgnoreUIScale;
-		bool mAlwaysRefresh;
+		bool	mFrequentUpdates,
+				mForceUpdate,
+				mTrusted,
+				mAlwaysRefresh,
+				mTakeFocusOnClick,
+				mStretchToFill,
+				mMaintainAspectRatio,
+				mHideLoading,
+				mHidingInitialLoad,
+				mClearCache,
+				mHoverTextChanged,
+				mDecoupleTextureSize;
+
+		std::string mHomePageUrl,
+					mHomePageMimeType,
+					mCurrentNavUrl,
+					mErrorPageURL,
+					mTarget;
 		viewer_media_t mMediaSource;
-		bool mTakeFocusOnClick;
-		bool mStretchToFill;
-		bool mMaintainAspectRatio;
-		bool mHideLoading;
-		bool mHidingInitialLoad;
-		bool mDecoupleTextureSize;
-		S32 mTextureWidth;
-		S32 mTextureHeight;
-		bool mClearCache;
+		S32 mTextureWidth,
+			mTextureHeight;
+
 		class LLWindowShade* mWindowShade;
-		bool mHoverTextChanged;
 		LLContextMenu* mContextMenu;
 };
 
diff --git a/indra/newview/llmenucommands.cpp b/indra/newview/llmenucommands.cpp
deleted file mode 100644
index 4b7f9432e304a5ac46c4024d2767a94b1cffdf4f..0000000000000000000000000000000000000000
--- a/indra/newview/llmenucommands.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/** 
- * @file llmenucommands.cpp
- * @brief Implementations of menu commands.
- *
- * $LicenseInfo:firstyear=2003&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 "llmenucommands.h"
-
-#include "imageids.h"
-#include "llfloaterreg.h"
-#include "llfontgl.h"
-#include "llrect.h"
-#include "llerror.h"
-#include "llstring.h"
-#include "message.h"
-
-#include "llagentcamera.h"
-#include "llcallingcard.h"
-#include "llviewercontrol.h"
-//#include "llfirstuse.h"
-#include "llfloaterworldmap.h"
-#include "lllineeditor.h"
-#include "llstatusbar.h"
-#include "llimview.h"
-#include "lltextbox.h"
-#include "llui.h"
-#include "llviewergesture.h"			// for triggering gestures
-#include "llviewermessage.h"
-#include "llviewerparceloverlay.h"
-#include "llviewerregion.h"
-#include "llviewerstats.h"
-#include "lluictrlfactory.h"
-#include "llviewerwindow.h"
-#include "llworld.h"
-#include "llworldmap.h"
-#include "llfocusmgr.h"
-#include "llnearbychatbar.h"
-
-void handle_mouselook(void*)
-{
-	gAgentCamera.changeCameraToMouselook();
-}
-
-
-void handle_chat(void*)
-{
-	// give focus to chatbar if it's open but not focused
-	if (gSavedSettings.getBOOL("ChatVisible") && 
-		gFocusMgr.childHasKeyboardFocus(LLNearbyChatBar::getInstance()->getChatBox()))
-	{
-		LLNearbyChatBar::stopChat();
-	}
-	else
-	{
-		LLNearbyChatBar::startChat(NULL);
-	}
-}
-
-void handle_slash_key(void*)
-{
-	// LLBottomTray::startChat("/");
-	//
-	// Don't do this, it results in a double-slash in the input field.
-	// Another "/" will be automatically typed for us, because the WM_KEYDOWN event
-	// that generated the menu accelerator call (and hence puts focus in
-	// the chat edtior) will be followed by a "/" WM_CHAR character message,
-	// which will type the slash.  Yes, it's weird.  It only matters for
-	// menu accelerators that put input focus into a field.   And Mac works
-	// the same way.  JC
-
-	LLNearbyChatBar::startChat(NULL);
-}
diff --git a/indra/newview/llmenucommands.h b/indra/newview/llmenucommands.h
deleted file mode 100644
index fa845c6f02a15d5b9386a766378441833458b43a..0000000000000000000000000000000000000000
--- a/indra/newview/llmenucommands.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/** 
- * @file llmenucommands.h
- * @brief Implementations of menu commands.
- *
- * $LicenseInfo:firstyear=2003&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_LLMENUCOMMANDS_H
-#define LL_LLMENUCOMMANDS_H
-
-class LLUUID;
-
-void handle_mouselook(void*);
-void handle_chat(void*);
-void handle_return_key(void*);
-void handle_slash_key(void*);
-
-#endif
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
old mode 100644
new mode 100755
index e12f14074771e52a008ddc9a28400534bda154e5..b02bf79a2882699b88103422f013a874e5f30c79
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -88,6 +88,9 @@ const S32 MAX_MESH_VERSION = 999;
 U32 LLMeshRepository::sBytesReceived = 0;
 U32 LLMeshRepository::sHTTPRequestCount = 0;
 U32 LLMeshRepository::sHTTPRetryCount = 0;
+U32 LLMeshRepository::sLODProcessing = 0;
+U32 LLMeshRepository::sLODPending = 0;
+
 U32 LLMeshRepository::sCacheBytesRead = 0;
 U32 LLMeshRepository::sCacheBytesWritten = 0;
 U32 LLMeshRepository::sPeakKbps = 0;
@@ -205,6 +208,12 @@ class LLMeshHeaderResponder : public LLCurl::Responder
 	LLMeshHeaderResponder(const LLVolumeParams& mesh_params)
 		: mMeshParams(mesh_params)
 	{
+		LLMeshRepoThread::sActiveHeaderRequests++;
+	}
+
+	~LLMeshHeaderResponder()
+	{
+		LLMeshRepoThread::sActiveHeaderRequests--;
 	}
 
 	virtual void completedRaw(U32 status, const std::string& reason,
@@ -224,6 +233,12 @@ class LLMeshLODResponder : public LLCurl::Responder
 	LLMeshLODResponder(const LLVolumeParams& mesh_params, S32 lod, U32 offset, U32 requested_bytes)
 		: mMeshParams(mesh_params), mLOD(lod), mOffset(offset), mRequestedBytes(requested_bytes)
 	{
+		LLMeshRepoThread::sActiveLODRequests++;
+	}
+
+	~LLMeshLODResponder()
+	{
+		LLMeshRepoThread::sActiveLODRequests--;
 	}
 
 	virtual void completedRaw(U32 status, const std::string& reason,
@@ -447,9 +462,9 @@ LLMeshRepoThread::LLMeshRepoThread()
 : LLThread("mesh repo") 
 { 
 	mWaiting = false;
-	mMutex = new LLMutex();
-	mHeaderMutex = new LLMutex();
-	mSignal = new LLCondition();
+	mMutex = new LLMutex(NULL);
+	mHeaderMutex = new LLMutex(NULL);
+	mSignal = new LLCondition(NULL);
 }
 
 LLMeshRepoThread::~LLMeshRepoThread()
@@ -497,10 +512,13 @@ void LLMeshRepoThread::run()
 					mMutex->lock();
 					LODRequest req = mLODReqQ.front();
 					mLODReqQ.pop();
+					LLMeshRepository::sLODProcessing--;
 					mMutex->unlock();
-					if (fetchMeshLOD(req.mMeshParams, req.mLOD))
+					if (!fetchMeshLOD(req.mMeshParams, req.mLOD, count))//failed, resubmit
 					{
-						count++;
+						mMutex->lock();
+						mLODReqQ.push(req) ; 
+						mMutex->unlock();
 					}
 				}
 			}
@@ -512,9 +530,11 @@ void LLMeshRepoThread::run()
 					HeaderRequest req = mHeaderReqQ.front();
 					mHeaderReqQ.pop();
 					mMutex->unlock();
-					if (fetchMeshHeader(req.mMeshParams))
+					if (!fetchMeshHeader(req.mMeshParams, count))//failed, resubmit
 					{
-						count++;
+						mMutex->lock();
+						mHeaderReqQ.push(req) ;
+						mMutex->unlock();
 					}
 				}
 			}
@@ -603,6 +623,7 @@ void LLMeshRepoThread::loadMeshLOD(const LLVolumeParams& mesh_params, S32 lod)
 		{
 			LLMutexLock lock(mMutex);
 			mLODReqQ.push(req);
+			LLMeshRepository::sLODProcessing++;
 		}
 	}
 	else
@@ -658,6 +679,7 @@ bool LLMeshRepoThread::fetchMeshSkinInfo(const LLUUID& mesh_id)
 		return false;
 	}
 
+	bool ret = true ;
 	U32 header_size = mMeshHeaderSize[mesh_id];
 	
 	if (header_size > 0)
@@ -673,7 +695,7 @@ bool LLMeshRepoThread::fetchMeshSkinInfo(const LLUUID& mesh_id)
 			//check VFS for mesh skin info
 			LLVFile file(gVFS, mesh_id, LLAssetType::AT_MESH);
 			if (file.getSize() >= offset+size)
-			{
+			{				
 				LLMeshRepository::sCacheBytesRead += size;
 				file.seek(offset);
 				U8* buffer = new U8[size];
@@ -689,7 +711,7 @@ bool LLMeshRepoThread::fetchMeshSkinInfo(const LLUUID& mesh_id)
 				if (!zero)
 				{ //attempt to parse
 					if (skinInfoReceived(mesh_id, buffer, size))
-					{
+					{						
 						delete[] buffer;
 						return true;
 					}
@@ -704,11 +726,13 @@ bool LLMeshRepoThread::fetchMeshSkinInfo(const LLUUID& mesh_id)
 
 			std::string http_url = constructUrl(mesh_id);
 			if (!http_url.empty())
-			{
-				++sActiveLODRequests;
-				LLMeshRepository::sHTTPRequestCount++;
-				mCurlRequest->getByteRange(constructUrl(mesh_id), headers, offset, size,
+			{				
+				ret = mCurlRequest->getByteRange(http_url, headers, offset, size,
 										   new LLMeshSkinInfoResponder(mesh_id, offset, size));
+				if(ret)
+				{
+					LLMeshRepository::sHTTPRequestCount++;
+				}
 			}
 		}
 	}
@@ -718,7 +742,7 @@ bool LLMeshRepoThread::fetchMeshSkinInfo(const LLUUID& mesh_id)
 	}
 
 	//early out was not hit, effectively fetched
-	return true;
+	return ret;
 }
 
 bool LLMeshRepoThread::fetchMeshDecomposition(const LLUUID& mesh_id)
@@ -732,7 +756,8 @@ bool LLMeshRepoThread::fetchMeshDecomposition(const LLUUID& mesh_id)
 	}
 
 	U32 header_size = mMeshHeaderSize[mesh_id];
-
+	bool ret = true ;
+	
 	if (header_size > 0)
 	{
 		S32 version = mMeshHeader[mesh_id]["version"].asInteger();
@@ -748,6 +773,7 @@ bool LLMeshRepoThread::fetchMeshDecomposition(const LLUUID& mesh_id)
 			if (file.getSize() >= offset+size)
 			{
 				LLMeshRepository::sCacheBytesRead += size;
+
 				file.seek(offset);
 				U8* buffer = new U8[size];
 				file.read(buffer, size);
@@ -777,11 +803,13 @@ bool LLMeshRepoThread::fetchMeshDecomposition(const LLUUID& mesh_id)
 
 			std::string http_url = constructUrl(mesh_id);
 			if (!http_url.empty())
-			{
-				++sActiveLODRequests;
-				LLMeshRepository::sHTTPRequestCount++;
-				mCurlRequest->getByteRange(http_url, headers, offset, size,
+			{				
+				ret = mCurlRequest->getByteRange(http_url, headers, offset, size,
 										   new LLMeshDecompositionResponder(mesh_id, offset, size));
+				if(ret)
+				{
+					LLMeshRepository::sHTTPRequestCount++;
+				}
 			}
 		}
 	}
@@ -791,7 +819,7 @@ bool LLMeshRepoThread::fetchMeshDecomposition(const LLUUID& mesh_id)
 	}
 
 	//early out was not hit, effectively fetched
-	return true;
+	return ret;
 }
 
 bool LLMeshRepoThread::fetchMeshPhysicsShape(const LLUUID& mesh_id)
@@ -805,6 +833,7 @@ bool LLMeshRepoThread::fetchMeshPhysicsShape(const LLUUID& mesh_id)
 	}
 
 	U32 header_size = mMeshHeaderSize[mesh_id];
+	bool ret = true ;
 
 	if (header_size > 0)
 	{
@@ -850,11 +879,14 @@ bool LLMeshRepoThread::fetchMeshPhysicsShape(const LLUUID& mesh_id)
 
 			std::string http_url = constructUrl(mesh_id);
 			if (!http_url.empty())
-			{
-				++sActiveLODRequests;
-				LLMeshRepository::sHTTPRequestCount++;
-				mCurlRequest->getByteRange(http_url, headers, offset, size,
+			{				
+				ret = mCurlRequest->getByteRange(http_url, headers, offset, size,
 										   new LLMeshPhysicsShapeResponder(mesh_id, offset, size));
+
+				if(ret)
+				{
+					LLMeshRepository::sHTTPRequestCount++;
+				}
 			}
 		}
 		else
@@ -868,13 +900,12 @@ bool LLMeshRepoThread::fetchMeshPhysicsShape(const LLUUID& mesh_id)
 	}
 
 	//early out was not hit, effectively fetched
-	return true;
+	return ret;
 }
 
-bool LLMeshRepoThread::fetchMeshHeader(const LLVolumeParams& mesh_params)
+//return false if failed to get header
+bool LLMeshRepoThread::fetchMeshHeader(const LLVolumeParams& mesh_params, U32& count)
 {
-	bool retval = false;
-
 	{
 		//look for mesh in asset in vfs
 		LLVFile file(gVFS, mesh_params.getSculptID(), LLAssetType::AT_MESH);
@@ -889,36 +920,39 @@ bool LLMeshRepoThread::fetchMeshHeader(const LLVolumeParams& mesh_params)
 			file.read(buffer, bytes);
 			if (headerReceived(mesh_params, buffer, bytes))
 			{ //did not do an HTTP request, return false
-				return false;
+				return true;
 			}
 		}
 	}
 
-	//either cache entry doesn't exist or is corrupt, request header from simulator
-
+	//either cache entry doesn't exist or is corrupt, request header from simulator	
+	bool retval = true ;
 	std::vector<std::string> headers;
 	headers.push_back("Accept: application/octet-stream");
 
 	std::string http_url = constructUrl(mesh_params.getSculptID());
 	if (!http_url.empty())
 	{
-		++sActiveHeaderRequests;
-		retval = true;
 		//grab first 4KB if we're going to bother with a fetch.  Cache will prevent future fetches if a full mesh fits
 		//within the first 4KB
-		//NOTE -- this will break of headers ever exceed 4KB
-		LLMeshRepository::sHTTPRequestCount++;
-		mCurlRequest->getByteRange(http_url, headers, 0, 4096, new LLMeshHeaderResponder(mesh_params));
+		//NOTE -- this will break of headers ever exceed 4KB		
+		retval = mCurlRequest->getByteRange(http_url, headers, 0, 4096, new LLMeshHeaderResponder(mesh_params));
+		if(retval)
+		{
+			LLMeshRepository::sHTTPRequestCount++;
+		}
+		count++;
 	}
 
 	return retval;
 }
 
-bool LLMeshRepoThread::fetchMeshLOD(const LLVolumeParams& mesh_params, S32 lod)
+//return false if failed to get mesh lod.
+bool LLMeshRepoThread::fetchMeshLOD(const LLVolumeParams& mesh_params, S32 lod, U32& count)
 { //protected by mMutex
 	mHeaderMutex->lock();
 
-	bool retval = false;
+	bool retval = true;
 
 	LLUUID mesh_id = mesh_params.getSculptID();
 	
@@ -955,7 +989,7 @@ bool LLMeshRepoThread::fetchMeshLOD(const LLVolumeParams& mesh_params, S32 lod)
 					if (lodReceived(mesh_params, lod, buffer, size))
 					{
 						delete[] buffer;
-						return false;
+						return true;
 					}
 				}
 
@@ -968,12 +1002,15 @@ bool LLMeshRepoThread::fetchMeshLOD(const LLVolumeParams& mesh_params, S32 lod)
 
 			std::string http_url = constructUrl(mesh_id);
 			if (!http_url.empty())
-			{
-				++sActiveLODRequests;
-				retval = true;
-				LLMeshRepository::sHTTPRequestCount++;
-				mCurlRequest->getByteRange(constructUrl(mesh_id), headers, offset, size,
+			{				
+				retval = mCurlRequest->getByteRange(constructUrl(mesh_id), headers, offset, size,
 										   new LLMeshLODResponder(mesh_params, lod, offset, size));
+
+				if(retval)
+				{
+					LLMeshRepository::sHTTPRequestCount++;
+				}
+				count++;
 			}
 			else
 			{
@@ -1045,6 +1082,7 @@ bool LLMeshRepoThread::headerReceived(const LLVolumeParams& mesh_params, U8* dat
 			{
 				LODRequest req(mesh_params, iter->second[i]);
 				mLODReqQ.push(req);
+				LLMeshRepository::sLODProcessing++;
 			}
 		}
 		mPendingLOD.erase(iter);
@@ -1198,7 +1236,7 @@ LLMeshUploadThread::LLMeshUploadThread(LLMeshUploadThread::instance_list& data,
 	mUploadTextures = upload_textures;
 	mUploadSkin = upload_skin;
 	mUploadJoints = upload_joints;
-	mMutex = new LLMutex();
+	mMutex = new LLMutex(NULL);
 	mCurlRequest = NULL;
 	mPendingUploads = 0;
 	mFinished = false;
@@ -1540,8 +1578,17 @@ void LLMeshUploadThread::doWholeModelUpload()
 		LLSD body = full_model_data["asset_resources"];
 		dump_llsd_to_file(body,make_dump_name("whole_model_body_",dump_num));
 		LLCurlRequest::headers_t headers;
-		mCurlRequest->post(mWholeModelUploadURL, headers, body,
-						   new LLWholeModelUploadResponder(this, full_model_data, mUploadObserverHandle), mMeshUploadTimeOut);
+
+		{
+			LLCurl::ResponderPtr responder = new LLWholeModelUploadResponder(this, full_model_data, mUploadObserverHandle) ;
+
+			while(!mCurlRequest->post(mWholeModelUploadURL, headers, body, responder, mMeshUploadTimeOut))
+			{
+				//sleep for 10ms to prevent eating a whole core
+				apr_sleep(10000);
+			}
+		}
+
 		do
 		{
 			mCurlRequest->process();
@@ -1571,8 +1618,15 @@ void LLMeshUploadThread::requestWholeModelFee()
 
 	mPendingUploads++;
 	LLCurlRequest::headers_t headers;
-	mCurlRequest->post(mWholeModelFeeCapability, headers, model_data,
-					   new LLWholeModelFeeResponder(this,model_data, mFeeObserverHandle), mMeshUploadTimeOut);
+
+	{
+		LLCurl::ResponderPtr responder = new LLWholeModelFeeResponder(this,model_data, mFeeObserverHandle) ;
+		while(!mCurlRequest->post(mWholeModelFeeCapability, headers, model_data, responder, mMeshUploadTimeOut))
+		{
+			//sleep for 10ms to prevent eating a whole core
+			apr_sleep(10000);
+		}
+	}
 
 	do
 	{
@@ -1712,7 +1766,6 @@ void LLMeshLODResponder::completedRaw(U32 status, const std::string& reason,
 							  const LLIOPipe::buffer_ptr_t& buffer)
 {
 
-	LLMeshRepoThread::sActiveLODRequests--;
 	S32 data_size = buffer->countAfter(channels.in(), NULL);
 
 	if (status < 200 || status > 400)
@@ -1929,7 +1982,6 @@ void LLMeshHeaderResponder::completedRaw(U32 status, const std::string& reason,
 							  const LLChannelDescriptors& channels,
 							  const LLIOPipe::buffer_ptr_t& buffer)
 {
-	LLMeshRepoThread::sActiveHeaderRequests--;
 	if (status < 200 || status > 400)
 	{
 		//llwarns
@@ -2043,7 +2095,7 @@ LLMeshRepository::LLMeshRepository()
 
 void LLMeshRepository::init()
 {
-	mMeshMutex = new LLMutex();
+	mMeshMutex = new LLMutex(NULL);
 	
 	LLConvexDecomposition::getInstance()->initSystem();
 
@@ -2147,6 +2199,7 @@ S32 LLMeshRepository::loadMesh(LLVOVolume* vobj, const LLVolumeParams& mesh_para
 			//first request for this mesh
 			mLoadingMeshes[detail][mesh_params].insert(vobj->getID());
 			mPendingRequests.push_back(LLMeshRepoThread::LODRequest(mesh_params, detail));
+			LLMeshRepository::sLODPending++;
 		}
 	}
 
@@ -2359,6 +2412,7 @@ void LLMeshRepository::notifyLoadedMeshes()
 			LLMeshRepoThread::LODRequest& request = mPendingRequests.front();
 			mThread->loadMeshLOD(request.mMeshParams, request.mLOD);
 			mPendingRequests.erase(mPendingRequests.begin());
+			LLMeshRepository::sLODPending--;
 			push_count--;
 		}
 	}
@@ -2866,8 +2920,8 @@ LLPhysicsDecomp::LLPhysicsDecomp()
 	mQuitting = false;
 	mDone = false;
 
-	mSignal = new LLCondition();
-	mMutex = new LLMutex();
+	mSignal = new LLCondition(NULL);
+	mMutex = new LLMutex(NULL);
 }
 
 LLPhysicsDecomp::~LLPhysicsDecomp()
diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h
index 31b84ea0d9f716290ce2a73ef8a8544a749b04cd..da81bb057bc5acb44e5382e3985eba8e8cb740f8 100644
--- a/indra/newview/llmeshrepository.h
+++ b/indra/newview/llmeshrepository.h
@@ -323,8 +323,8 @@ class LLMeshRepoThread : public LLThread
 	virtual void run();
 
 	void loadMeshLOD(const LLVolumeParams& mesh_params, S32 lod);
-	bool fetchMeshHeader(const LLVolumeParams& mesh_params);
-	bool fetchMeshLOD(const LLVolumeParams& mesh_params, S32 lod);
+	bool fetchMeshHeader(const LLVolumeParams& mesh_params, U32& count);
+	bool fetchMeshLOD(const LLVolumeParams& mesh_params, S32 lod, U32& count);
 	bool headerReceived(const LLVolumeParams& mesh_params, U8* data, S32 data_size);
 	bool lodReceived(const LLVolumeParams& mesh_params, S32 lod, U8* data, S32 data_size);
 	bool skinInfoReceived(const LLUUID& mesh_id, U8* data, S32 data_size);
@@ -441,6 +441,8 @@ class LLMeshRepository
 	static U32 sBytesReceived;
 	static U32 sHTTPRequestCount;
 	static U32 sHTTPRetryCount;
+	static U32 sLODPending;
+	static U32 sLODProcessing;
 	static U32 sCacheBytesRead;
 	static U32 sCacheBytesWritten;
 	static U32 sPeakKbps;
diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp
index 142ee40cc8a5cde68584b988ce5dea40753e8558..c3d8b91d67ae372bfdf4868470fe41b45cde16bf 100644
--- a/indra/newview/llmoveview.cpp
+++ b/indra/newview/llmoveview.cpp
@@ -37,7 +37,6 @@
 #include "llagent.h"
 #include "llagentcamera.h"
 #include "llvoavatarself.h" // to check gAgentAvatarp->isSitting()
-#include "llbottomtray.h"
 #include "llbutton.h"
 #include "llfirstuse.h"
 #include "llfloaterreg.h"
@@ -46,7 +45,8 @@
 #include "lluictrlfactory.h"
 #include "llviewerwindow.h"
 #include "llviewercontrol.h"
-#include "llselectmgr.h" 
+#include "llselectmgr.h"
+#include "lltoolbarview.h"
 #include "llviewerparcelmgr.h"
 #include "llviewerregion.h"
 #include "lltooltip.h"
@@ -59,15 +59,13 @@ const F32 MOVE_BUTTON_DELAY = 0.0f;
 const F32 YAW_NUDGE_RATE = 0.05f;	// fraction of normal speed
 const F32 NUDGE_TIME = 0.25f;		// in seconds
 
-const std::string BOTTOM_TRAY_BUTTON_NAME = "movement_btn";
-
 //
 // Member functions
 //
 
 // protected
 LLFloaterMove::LLFloaterMove(const LLSD& key)
-:	LLTransientDockableFloater(NULL, true, key),
+:	LLFloater(key),
 	mForwardButton(NULL),
 	mBackwardButton(NULL),
 	mTurnLeftButton(NULL), 
@@ -92,12 +90,8 @@ LLFloaterMove::~LLFloaterMove()
 // virtual
 BOOL LLFloaterMove::postBuild()
 {
-	setIsChrome(TRUE);
-	setTitleVisible(TRUE); // restore title visibility after chrome applying
 	updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
 	
-	LLDockableFloater::postBuild();
-	
 	// Code that implements floater buttons toggling when user moves via keyboard is located in LLAgent::propagate()
 
 	mForwardButton = getChild<LLJoystickAgentTurn>("forward btn"); 
@@ -155,10 +149,10 @@ BOOL LLFloaterMove::postBuild()
 // virtual
 void LLFloaterMove::setVisible(BOOL visible)
 {
-	// Do nothing with Stand/Stop Flying panel in excessive calls of this method (from LLTransientFloaterMgr?).
+	// Do nothing with Stand/Stop Flying panel in excessive calls of this method.
 	if (getVisible() == visible)
 	{
-		LLTransientDockableFloater::setVisible(visible);
+		LLFloater::setVisible(visible);
 		return;
 	}
 
@@ -177,7 +171,7 @@ void LLFloaterMove::setVisible(BOOL visible)
 		LLPanelStandStopFlying::getInstance()->reparent(NULL);
 	}
 
-	LLTransientDockableFloater::setVisible(visible);
+	LLFloater::setVisible(visible);
 }
 
 // static 
@@ -441,30 +435,6 @@ void LLFloaterMove::setModeTitle(const EMovementMode mode)
 	setTitle(title);
 }
 
-/**
- * Updates position of the floater to be center aligned with Move button.
- */
-void LLFloaterMove::updatePosition()
-{
-	LLBottomTray* tray = LLBottomTray::getInstance();
-	if (!tray) return;
-
-	LLButton* movement_btn = tray->findChild<LLButton>(BOTTOM_TRAY_BUTTON_NAME);
-
-	if (movement_btn)
-	{
-		//align centers of a button and a floater
-		S32 x = movement_btn->calcScreenRect().getCenterX() - getRect().getWidth()/2;
-
-		S32 y = 0;
-		if (!mModeActionsPanel->getVisible())
-		{
-			y = mModeActionsPanel->getRect().getHeight();
-		}
-		setOrigin(x, y);
-	}
-}
-
 //static
 void LLFloaterMove::sUpdateFlyingStatus()
 {
@@ -499,8 +469,6 @@ void LLFloaterMove::enableInstance(BOOL bEnable)
 
 void LLFloaterMove::onOpen(const LLSD& key)
 {
-	LLButton *anchor_panel = LLBottomTray::getInstance()->getChild<LLButton>("movement_btn");
-
 	if (gAgent.getFlying())
 	{
 		setFlyingMode(TRUE);
@@ -513,19 +481,9 @@ void LLFloaterMove::onOpen(const LLSD& key)
 		showModeButtons(FALSE);
 	}
 
-	setDockControl(new LLDockControl(
-		anchor_panel, this,
-		getDockTongue(), LLDockControl::TOP));
-
 	sUpdateFlyingStatus();
 }
 
-//virtual
-void LLFloaterMove::setDocked(bool docked, bool pop_on_undock/* = true*/)
-{
-	LLTransientDockableFloater::setDocked(docked, pop_on_undock);
-}
-
 void LLFloaterMove::setModeButtonToggleState(const EMovementMode mode)
 {
 	llassert_always(mModeControlButtonMap.end() != mModeControlButtonMap.find(mode));
@@ -736,23 +694,30 @@ void LLPanelStandStopFlying::onStopFlyingButtonClick()
  */
 void LLPanelStandStopFlying::updatePosition()
 {
-	LLBottomTray* tray = LLBottomTray::getInstance();
-	if (!tray || mAttached) return;
+	if (mAttached) return;
 
-	LLButton* movement_btn = tray->findChild<LLButton>(BOTTOM_TRAY_BUTTON_NAME);
+	S32 y_pos = 0;
+	S32 bottom_tb_center = 0;
+	if (LLToolBar* toolbar_bottom = gToolBarView->getChild<LLToolBar>("toolbar_bottom"))
+	{
+		y_pos = toolbar_bottom->getRect().getHeight();
+		bottom_tb_center = toolbar_bottom->getRect().getCenterX();
+	}
 
-	S32 x = 0;
-	if (movement_btn)
+	S32 left_tb_width = 0;
+	if (LLToolBar* toolbar_left = gToolBarView->getChild<LLToolBar>("toolbar_left"))
 	{
-		// Align centers of the button and the panel.
-		x = movement_btn->calcScreenRect().getCenterX() - getRect().getWidth()/2;
+		left_tb_width = toolbar_left->getRect().getWidth();
 	}
-	else
+
+	if(LLPanel* panel_ssf_container = getRootView()->getChild<LLPanel>("stand_stop_flying_container"))
 	{
-		x = tray->calcScreenRect().getCenterX() - getRect().getWidth()/2;
+		panel_ssf_container->setOrigin(0, y_pos);
 	}
-	setOrigin(x, 0);
-}
 
+	S32 x_pos = bottom_tb_center-getRect().getWidth()/2 - left_tb_width;
+
+	setOrigin( x_pos, 0);
+}
 
 // EOF
diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h
index 1b87864651ada2a80903dc7820d016dfdfb62f8b..744dd866d44a6d3f7f87a811ad6cd065e8f43569 100644
--- a/indra/newview/llmoveview.h
+++ b/indra/newview/llmoveview.h
@@ -28,7 +28,7 @@
 #define LL_LLMOVEVIEW_H
 
 // Library includes
-#include "lltransientdockablefloater.h"
+#include "llfloater.h"
 
 class LLButton;
 class LLJoystickAgentTurn;
@@ -38,7 +38,7 @@ class LLJoystickAgentSlide;
 // Classes
 //
 class LLFloaterMove
-:	public LLTransientDockableFloater
+:	public LLFloater
 {
 	LOG_CLASS(LLFloaterMove);
 	friend class LLFloaterReg;
@@ -58,7 +58,6 @@ class LLFloaterMove
 	static void setSittingMode(BOOL bSitting);
 	static void enableInstance(BOOL bEnable);
 	/*virtual*/ void onOpen(const LLSD& key);
-	/*virtual*/ void setDocked(bool docked, bool pop_on_undock = true);
 
 	static void sUpdateFlyingStatus();
 
@@ -87,7 +86,6 @@ class LLFloaterMove
 	void initModeButtonMap();
 	void setModeButtonToggleState(const EMovementMode mode);
 	void updateButtonsWithMovementMode(const EMovementMode newMode);
-	void updatePosition();
 	void showModeButtons(BOOL bShow);
 
 public:
diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h
index d64fdbe6a5aa2836193f6f119088f55296bf9f6a..ca9956dc5386332c586bd283888564bb58f1d42a 100644
--- a/indra/newview/llnamelistctrl.h
+++ b/indra/newview/llnamelistctrl.h
@@ -61,7 +61,7 @@ class LLNameListCtrl
 		{}
 	};
 
-	struct NameColumn : public LLInitParam::Choice<NameColumn>
+	struct NameColumn : public LLInitParam::ChoiceBlock<NameColumn>
 	{
 		Alternative<S32>				column_index;
 		Alternative<std::string>		column_name;
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index 9d54ad746310e4c6c17fcaeab95703b282aa1bc0..2a08cb184526b8cae2f3458ca142802e00cd91a0 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -45,7 +45,6 @@
 #include "llpaneltopinfobar.h"
 #include "llteleporthistory.h"
 #include "llsearchcombobox.h"
-#include "llsidetray.h"
 #include "llslurl.h"
 #include "llurlregistry.h"
 #include "llurldispatcher.h"
@@ -55,7 +54,6 @@
 #include "llworldmapmessage.h"
 #include "llappviewer.h"
 #include "llviewercontrol.h"
-#include "llfloatermediabrowser.h"
 #include "llweb.h"
 #include "llhints.h"
 
@@ -269,7 +267,6 @@ LLNavigationBar::LLNavigationBar()
 	mBtnForward(NULL),
 	mBtnHome(NULL),
 	mCmbLocation(NULL),
-	mSearchComboBox(NULL),
 	mPurgeTPHistoryItems(false),
 	mSaveToLocationHistory(false)
 {
@@ -291,10 +288,7 @@ BOOL LLNavigationBar::postBuild()
 	mBtnForward	= getChild<LLPullButton>("forward_btn");
 	mBtnHome	= getChild<LLButton>("home_btn");
 	
-	mCmbLocation= getChild<LLLocationInputCtrl>("location_combo"); 
-	mSearchComboBox	= getChild<LLSearchComboBox>("search_combo_box");
-
-	fillSearchComboBox();
+	mCmbLocation= getChild<LLLocationInputCtrl>("location_combo");
 
 	mBtnBack->setEnabled(FALSE);
 	mBtnBack->setClickedCallback(boost::bind(&LLNavigationBar::onBackButtonClicked, this));
@@ -309,8 +303,6 @@ BOOL LLNavigationBar::postBuild()
 	mBtnHome->setClickedCallback(boost::bind(&LLNavigationBar::onHomeButtonClicked, this));
 
 	mCmbLocation->setCommitCallback(boost::bind(&LLNavigationBar::onLocationSelection, this));
-	
-	mSearchComboBox->setCommitCallback(boost::bind(&LLNavigationBar::onSearchCommit, this));
 
 	mTeleportFinishConnection = LLViewerParcelMgr::getInstance()->
 		setTeleportFinishedCallback(boost::bind(&LLNavigationBar::onTeleportFinished, this, _1));
@@ -325,7 +317,7 @@ BOOL LLNavigationBar::postBuild()
 	LLTeleportHistory::getInstance()->setHistoryChangedCallback(
 			boost::bind(&LLNavigationBar::onTeleportHistoryChanged, this));
 
-	LLHints::registerHintTarget("nav_bar", LLView::getHandle());
+	LLHints::registerHintTarget("nav_bar", getHandle());
 
 	return TRUE;
 }
@@ -344,26 +336,6 @@ void LLNavigationBar::setVisible(BOOL visible)
 	}
 }
 
-
-void LLNavigationBar::fillSearchComboBox()
-{
-	if(!mSearchComboBox)
-	{
-		return;
-	}
-
-	LLSearchHistory::getInstance()->load();
-
-	LLSearchHistory::search_history_list_t search_list = 
-		LLSearchHistory::getInstance()->getSearchHistoryList();
-	LLSearchHistory::search_history_list_t::const_iterator it = search_list.begin();
-	for( ; search_list.end() != it; ++it)
-	{
-		LLSearchHistory::LLSearchHistoryItem item = *it;
-		mSearchComboBox->add(item.search_query);
-	}
-}
-
 void LLNavigationBar::draw()
 {
 	if(mPurgeTPHistoryItems)
@@ -416,16 +388,6 @@ void LLNavigationBar::onHomeButtonClicked()
 	gAgent.teleportHome();
 }
 
-void LLNavigationBar::onSearchCommit()
-{
-	std::string search_query = mSearchComboBox->getSimple();
-	if(!search_query.empty())
-	{
-		LLSearchHistory::getInstance()->addEntry(search_query);
-	}
-	invokeSearch(search_query);	
-}
-
 void LLNavigationBar::onTeleportHistoryMenuItemClicked(const LLSD& userdata)
 {
 	int idx = userdata.asInteger();
@@ -736,151 +698,3 @@ int LLNavigationBar::getDefFavBarHeight()
 {
 	return mDefaultFpRect.getHeight();
 }
-
-void LLNavigationBar::showNavigationPanel(BOOL visible)
-{
-	bool fpVisible = gSavedSettings.getBOOL("ShowNavbarFavoritesPanel");
-
-	LLFavoritesBarCtrl* fb = getChild<LLFavoritesBarCtrl>("favorite");
-	LLPanel* navPanel = getChild<LLPanel>("navigation_panel");
-
-	LLRect nbRect(getRect());
-	LLRect fbRect(fb->getRect());
-
-	navPanel->setVisible(visible);
-
-	if (visible)
-	{
-		if (fpVisible)
-		{
-			// Navigation Panel must be shown. Favorites Panel is visible.
-
-			nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), mDefaultNbRect.getHeight());
-			fbRect.setLeftTopAndSize(fbRect.mLeft, mDefaultFpRect.mTop, fbRect.getWidth(), fbRect.getHeight());
-
-			// this is duplicated in 'else' section because it should be called BEFORE fb->reshape
-			reshape(nbRect.getWidth(), nbRect.getHeight());
-			setRect(nbRect);
-			// propagate size to parent container
-			getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
-
-			fb->reshape(fbRect.getWidth(), fbRect.getHeight());
-			fb->setRect(fbRect);
-		}
-		else
-		{
-			// Navigation Panel must be shown. Favorites Panel is hidden.
-
-			S32 height = mDefaultNbRect.getHeight() - mDefaultFpRect.getHeight() - FAVBAR_TOP_PADDING;
-			nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), height);
-
-			reshape(nbRect.getWidth(), nbRect.getHeight());
-			setRect(nbRect);
-			getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
-		}
-	}
-	else
-	{
-		if (fpVisible)
-		{
-			// Navigation Panel must be hidden. Favorites Panel is visible.
-
-			S32 fpHeight = mDefaultFpRect.getHeight() + FAVBAR_TOP_PADDING;
-			S32 fpTop = fpHeight - (mDefaultFpRect.getHeight() / 2) + 1;
-
-			nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), fpHeight);
-			fbRect.setLeftTopAndSize(fbRect.mLeft, fpTop, fbRect.getWidth(), mDefaultFpRect.getHeight());
-
-			// this is duplicated in 'else' section because it should be called BEFORE fb->reshape
-			reshape(nbRect.getWidth(), nbRect.getHeight());
-			setRect(nbRect);
-			getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
-
-			fb->reshape(fbRect.getWidth(), fbRect.getHeight());
-			fb->setRect(fbRect);
-		}
-		else
-		{
-			// Navigation Panel must be hidden. Favorites Panel is hidden.
-
-			nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), 0);
-
-			reshape(nbRect.getWidth(), nbRect.getHeight());
-			setRect(nbRect);
-			getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
-		}
-	}
-
-	getChildView("bg_icon")->setVisible( visible && fpVisible);
-	getChildView("bg_icon_no_fav_bevel")->setVisible( visible && !fpVisible);
-	getChildView("bg_icon_no_nav_bevel")->setVisible( !visible && fpVisible);
-}
-
-void LLNavigationBar::showFavoritesPanel(BOOL visible)
-{
-	bool npVisible = gSavedSettings.getBOOL("ShowNavbarNavigationPanel");
-
-	LLFavoritesBarCtrl* fb = getChild<LLFavoritesBarCtrl>("favorite");
-
-	LLRect nbRect(getRect());
-	LLRect fbRect(fb->getRect());
-
-	if (visible)
-	{
-		if (npVisible)
-		{
-			// Favorites Panel must be shown. Navigation Panel is visible.
-
-			S32 fbHeight = fbRect.getHeight();
-			S32 newHeight = nbRect.getHeight() + fbHeight + FAVBAR_TOP_PADDING;
-
-			nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), newHeight);
-			fbRect.setLeftTopAndSize(mDefaultFpRect.mLeft, mDefaultFpRect.mTop, fbRect.getWidth(), fbRect.getHeight());
-		}
-		else
-		{
-			// Favorites Panel must be shown. Navigation Panel is hidden.
-
-			S32 fpHeight = mDefaultFpRect.getHeight() + FAVBAR_TOP_PADDING;
-			S32 fpTop = fpHeight - (mDefaultFpRect.getHeight() / 2) + 1;
-
-			nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), fpHeight);
-			fbRect.setLeftTopAndSize(fbRect.mLeft, fpTop, fbRect.getWidth(), mDefaultFpRect.getHeight());
-		}
-
-		reshape(nbRect.getWidth(), nbRect.getHeight());
-		setRect(nbRect);
-		getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
-
-		fb->reshape(fbRect.getWidth(), fbRect.getHeight());
-		fb->setRect(fbRect);
-	}
-	else
-	{
-		if (npVisible)
-		{
-			// Favorites Panel must be hidden. Navigation Panel is visible.
-
-			S32 fbHeight = fbRect.getHeight();
-			S32 newHeight = nbRect.getHeight() - fbHeight - FAVBAR_TOP_PADDING;
-
-			nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), newHeight);
-		}
-		else
-		{
-			// Favorites Panel must be hidden. Navigation Panel is hidden.
-
-			nbRect.setLeftTopAndSize(nbRect.mLeft, nbRect.mTop, nbRect.getWidth(), 0);
-		}
-
-		reshape(nbRect.getWidth(), nbRect.getHeight());
-		setRect(nbRect);
-		getParent()->reshape(nbRect.getWidth(), nbRect.getHeight());
-	}
-
-	getChildView("bg_icon")->setVisible( npVisible && visible);
-	getChildView("bg_icon_no_fav_bevel")->setVisible( npVisible && !visible);
-	getChildView("bg_icon_no_nav_bevel")->setVisible( !npVisible && visible);
-
-	fb->setVisible(visible);
-}
diff --git a/indra/newview/llnavigationbar.h b/indra/newview/llnavigationbar.h
index 3c9f8a762de95c63279e8fa032058022e97a3958..e4ce9e3998ef528fb1a3caa1753f338e14762e2d 100644
--- a/indra/newview/llnavigationbar.h
+++ b/indra/newview/llnavigationbar.h
@@ -98,9 +98,6 @@ class LLNavigationBar
 	void handleLoginComplete();
 	void clearHistoryCache();
 
-	void showNavigationPanel(BOOL visible);
-	void showFavoritesPanel(BOOL visible);
-
 	int getDefNavBarHeight();
 	int getDefFavBarHeight();
 	
@@ -121,7 +118,6 @@ class LLNavigationBar
 	void onHomeButtonClicked();
 	void onLocationSelection();
 	void onLocationPrearrange(const LLSD& data);
-	void onSearchCommit();
 	void onTeleportFinished(const LLVector3d& global_agent_pos);
 	void onTeleportFailed();
 	void onRegionNameResponse(
@@ -131,8 +127,6 @@ class LLNavigationBar
 			U64 region_handle, const std::string& url,
 			const LLUUID& snapshot_id, bool teleport);
 
-	void fillSearchComboBox();
-
 	static void destroyClass()
 	{
 		if (LLNavigationBar::instanceExists())
@@ -145,7 +139,6 @@ class LLNavigationBar
 	LLPullButton*				mBtnBack;
 	LLPullButton*				mBtnForward;
 	LLButton*					mBtnHome;
-	LLSearchComboBox*			mSearchComboBox;
 	LLLocationInputCtrl*		mCmbLocation;
 	LLRect						mDefaultNbRect;
 	LLRect						mDefaultFpRect;
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 03ebc344f17d4087c21a9b1e2051347cc048762b..a7303ad0352ceddcd1465a5c562d8d7004b92564 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -32,8 +32,9 @@
 #include "llrootview.h"
 //#include "llchatitemscontainerctrl.h"
 #include "lliconctrl.h"
-#include "llsidetray.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfocusmgr.h"
+#include "lllogchat.h"
 #include "llresizebar.h"
 #include "llresizehandle.h"
 #include "llmenugl.h"
@@ -50,21 +51,18 @@
 
 #include "lldraghandle.h"
 
-#include "llbottomtray.h"
 #include "llnearbychatbar.h"
 #include "llfloaterreg.h"
 #include "lltrans.h"
 
 static const S32 RESIZE_BAR_THICKNESS = 3;
 
-LLNearbyChat::LLNearbyChat(const LLSD& key) 
-	: LLDockableFloater(NULL, false, false, key)
-	,mChatHistory(NULL)
-{
-	
-}
 
-LLNearbyChat::~LLNearbyChat()
+static LLRegisterPanelClassWrapper<LLNearbyChat> t_panel_nearby_chat("panel_nearby_chat");
+
+LLNearbyChat::LLNearbyChat(const LLNearbyChat::Params& p) 
+:	LLPanel(p),
+	mChatHistory(NULL)
 {
 }
 
@@ -86,54 +84,12 @@ BOOL LLNearbyChat::postBuild()
 
 	mChatHistory = getChild<LLChatHistory>("chat_history");
 
-	if(!LLDockableFloater::postBuild())
+	if(!LLPanel::postBuild())
 		return false;
-
-	if (getDockControl() == NULL)
-	{
-		setDockControl(new LLDockControl(
-			LLBottomTray::getInstance()->getNearbyChatBar(), this,
-			getDockTongue(), LLDockControl::TOP, boost::bind(&LLNearbyChat::getAllowedRect, this, _1)));
-	}
-
-        //fix for EXT-4621 
-        //chrome="true" prevents floater from stilling capture
-        setIsChrome(true);
-	//chrome="true" hides floater caption 
-	if (mDragHandle)
-		mDragHandle->setTitleVisible(TRUE);
-
+	
 	return true;
 }
 
-
-void    LLNearbyChat::applySavedVariables()
-{
-	if (mRectControl.size() > 1)
-	{
-		const LLRect& rect = LLFloater::getControlGroup()->getRect(mRectControl);
-		if(!rect.isEmpty() && rect.isValid())
-		{
-			reshape(rect.getWidth(), rect.getHeight());
-			setRect(rect);
-		}
-	}
-
-
-	if(!LLFloater::getControlGroup()->controlExists(mDocStateControl))
-	{
-		setDocked(true);
-	}
-	else
-	{
-		if (mDocStateControl.size() > 1)
-		{
-			bool dockState = LLFloater::getControlGroup()->getBOOL(mDocStateControl);
-			setDocked(dockState);
-		}
-	}
-}
-
 std::string appendTime()
 {
 	time_t utc_time;
@@ -203,7 +159,7 @@ void LLNearbyChat::onNearbySpeakers()
 {
 	LLSD param;
 	param["people_panel_tab_name"] = "nearby_panel";
-	LLSideTray::getInstance()->showPanel("panel_people",param);
+	LLFloaterSidePanelContainer::showPanel("people", "panel_people", param);
 }
 
 
@@ -218,30 +174,26 @@ bool	LLNearbyChat::onNearbyChatCheckContextMenuItem(const LLSD& userdata)
 	return false;
 }
 
-void	LLNearbyChat::setVisible(BOOL visible)
+void LLNearbyChat::removeScreenChat()
 {
-	if(visible)
+	LLNotificationsUI::LLScreenChannelBase* chat_channel = LLNotificationsUI::LLChannelManager::getInstance()->findChannelByID(LLUUID(gSavedSettings.getString("NearByChatChannelUUID")));
+	if(chat_channel)
 	{
-		LLNotificationsUI::LLScreenChannelBase* chat_channel = LLNotificationsUI::LLChannelManager::getInstance()->findChannelByID(LLUUID(gSavedSettings.getString("NearByChatChannelUUID")));
-		if(chat_channel)
-		{
-			chat_channel->removeToastsFromChannel();
-		}
+		chat_channel->removeToastsFromChannel();
 	}
-
-	LLDockableFloater::setVisible(visible);
 }
 
-void	LLNearbyChat::onOpen(const LLSD& key )
+void	LLNearbyChat::setVisible(BOOL visible)
 {
-	LLDockableFloater::onOpen(key);
-}
+	if(visible)
+	{
+		removeScreenChat();
+	}
 
-void LLNearbyChat::setRect	(const LLRect &rect)
-{
-	LLDockableFloater::setRect(rect);
+	LLPanel::setVisible(visible);
 }
 
+
 void LLNearbyChat::getAllowedRect(LLRect& rect)
 {
 	rect = gViewerWindow->getWorldViewRectScaled();
@@ -263,7 +215,8 @@ void LLNearbyChat::updateChatHistoryStyle()
 //static 
 void LLNearbyChat::processChatHistoryStyleUpdate(const LLSD& newvalue)
 {
-	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+	LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
+	LLNearbyChat* nearby_chat = chat_bar->findChild<LLNearbyChat>("nearby_chat");
 	if(nearby_chat)
 		nearby_chat->updateChatHistoryStyle();
 }
@@ -339,7 +292,8 @@ void LLNearbyChat::loadHistory()
 //static
 LLNearbyChat* LLNearbyChat::getInstance()
 {
-	return LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+	LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
+	return chat_bar->findChild<LLNearbyChat>("nearby_chat");
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -367,7 +321,7 @@ BOOL	LLNearbyChat::handleMouseDown(S32 x, S32 y, MASK mask)
 	
 	if(mChatHistory)
 		mChatHistory->setFocus(TRUE);
-	return LLDockableFloater::handleMouseDown(x, y, mask);
+	return LLPanel::handleMouseDown(x, y, mask);
 }
 
 void LLNearbyChat::draw()
@@ -380,5 +334,5 @@ void LLNearbyChat::draw()
 		setTransparencyType(hasFocus() ? TT_ACTIVE : TT_INACTIVE);
 	}
 
-	LLDockableFloater::draw();
+	LLPanel::draw();
 }
diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h
index 2ea79797f8e338c32fc57b77b47f70cc039634f1..7c5975cbc5500546740a50fb09064ee9fcf5cc3e 100644
--- a/indra/newview/llnearbychat.h
+++ b/indra/newview/llnearbychat.h
@@ -1,4 +1,4 @@
-/** 
+ /** 
  * @file llnearbychat.h
  * @brief nearby chat history scrolling panel implementation
  *
@@ -27,18 +27,17 @@
 #ifndef LL_LLNEARBYCHAT_H_
 #define LL_LLNEARBYCHAT_H_
 
-#include "lldockablefloater.h"
 #include "llscrollbar.h"
 #include "llviewerchat.h"
+#include "llfloater.h"
 
 class LLResizeBar;
 class LLChatHistory;
 
-class LLNearbyChat: public LLDockableFloater
+class LLNearbyChat: public LLPanel
 {
 public:
-	LLNearbyChat(const LLSD& key);
-	~LLNearbyChat();
+	LLNearbyChat(const Params& p = LLPanel::getDefaultParams());
 
 	BOOL	postBuild			();
 
@@ -54,12 +53,8 @@ class LLNearbyChat: public LLDockableFloater
 	/*virtual*/ void	onFocusLost();
 	/*virtual*/ void	onFocusReceived();
 	
-	/*virtual*/ void	onOpen	(const LLSD& key);
-
 	/*virtual*/ void	setVisible(BOOL visible);
-
-	virtual void setRect		(const LLRect &rect);
-
+	
 	virtual void updateChatHistoryStyle();
 
 	static void processChatHistoryStyleUpdate(const LLSD& newvalue);
@@ -67,14 +62,14 @@ class LLNearbyChat: public LLDockableFloater
 	void loadHistory();
 
 	static LLNearbyChat* getInstance();
+	void removeScreenChat();
 
 private:
-	virtual void    applySavedVariables();
 
 	void	getAllowedRect		(LLRect& rect);
 
 	void	onNearbySpeakers	();
-	
+
 
 private:
 	LLHandle<LLView>	mPopupMenuHandle;
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index 4b961db5f9515f04c378533e3776aca06307695d..4512c14b7a85f2ffb145d355979739539139cd38 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -34,7 +34,6 @@
 
 #include "llfirstuse.h"
 #include "llnearbychatbar.h"
-#include "llbottomtray.h"
 #include "llagent.h"
 #include "llgesturemgr.h"
 #include "llmultigesture.h"
@@ -48,14 +47,20 @@
 #include "llviewerwindow.h"
 #include "llrootview.h"
 #include "llviewerchat.h"
+#include "llnearbychat.h"
+#include "lltranslate.h"
+
+#include "llresizehandle.h"
 
 S32 LLNearbyChatBar::sLastSpecialChatChannel = 0;
 
+const S32 EXPANDED_HEIGHT = 300;
+const S32 COLLAPSED_HEIGHT = 60;
+const S32 EXPANDED_MIN_HEIGHT = 150;
+
 // legacy callback glue
 void send_chat_from_viewer(const std::string& utf8_out_text, EChatType type, S32 channel);
 
-static LLDefaultChildRegistry::Register<LLGestureComboList> r("gesture_combo_list");
-
 struct LLChatTypeTrigger {
 	std::string name;
 	EChatType type;
@@ -66,353 +71,13 @@ static LLChatTypeTrigger sChatTypeTriggers[] = {
 	{ "/shout"	, CHAT_TYPE_SHOUT}
 };
 
-//ext-7367
-//Problem: gesture list control (actually LLScrollListCtrl) didn't actually process mouse wheel message. 
-// introduce new gesture list subclass to "eat" mouse wheel messages (and probably some other messages)
-class LLGestureScrollListCtrl: public LLScrollListCtrl
-{
-protected:
-	friend class LLUICtrlFactory;
-	LLGestureScrollListCtrl(const LLScrollListCtrl::Params& params)
-		:LLScrollListCtrl(params)
-	{
-	}
-public:
-	BOOL handleScrollWheel(S32 x, S32 y, S32 clicks)
-	{
-		LLScrollListCtrl::handleScrollWheel( x, y, clicks );
-		return TRUE;
-	}
-	//See EXT-6598
-	//Mouse hover over separator will result in not processing tooltip message
-	//So eat this message
-	BOOL handleToolTip(S32 x, S32 y, MASK mask)
-	{
-		LLScrollListCtrl::handleToolTip( x, y, mask );
-		return TRUE;
-	}
-};
-
-LLGestureComboList::Params::Params()
-:	combo_button("combo_button"),
-	combo_list("combo_list"),
-	get_more("get_more", true),
-	view_all("view_all", true)
-{
-}
-
-LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p)
-:	LLUICtrl(p),
-	mLabel(p.label),
-	mViewAllItemIndex(-1),
-	mGetMoreItemIndex(-1),
-	mShowViewAll(p.view_all),
-	mShowGetMore(p.get_more)
-{
-	LLBottomtrayButton::Params button_params = p.combo_button;
-	button_params.follows.flags(FOLLOWS_LEFT|FOLLOWS_BOTTOM|FOLLOWS_RIGHT);
-
-	mButton = LLUICtrlFactory::create<LLBottomtrayButton>(button_params);
-	mButton->reshape(getRect().getWidth(),getRect().getHeight());
-	mButton->setCommitCallback(boost::bind(&LLGestureComboList::onButtonCommit, this));
-
-	addChild(mButton);
-
-	LLGestureScrollListCtrl::Params params(p.combo_list);
-	
-	params.name("GestureComboList");
-	params.commit_callback.function(boost::bind(&LLGestureComboList::onItemSelected, this, _2));
-	params.visible(false);
-	params.commit_on_keyboard_movement(false);
-
-	mList = LLUICtrlFactory::create<LLGestureScrollListCtrl>(params);
-	addChild(mList);
-
-	//****************************Gesture Part********************************/
-
-	setCommitCallback(boost::bind(&LLGestureComboList::onCommitGesture, this));
-
-	// now register us as observer since we have a place to put the results
-	LLGestureMgr::instance().addObserver(this);
-
-	// refresh list from current active gestures
-	refreshGestures();
-
-	setFocusLostCallback(boost::bind(&LLGestureComboList::hideList, this));
-}
-
-BOOL LLGestureComboList::handleKeyHere(KEY key, MASK mask)
-{
-	BOOL handled = FALSE;
-	
-	if (key == KEY_ESCAPE && mask == MASK_NONE )
-	{
-		hideList();
-		handled = TRUE;
-	}
-	else
-	{
-		handled = mList->handleKeyHere(key, mask);
-	}
-
-	return handled; 		
-}
-
-void LLGestureComboList::draw()
-{
-	LLUICtrl::draw();
-
-	if(mButton->getToggleState())
-	{
-		showList();
-	}
-}
-
-void LLGestureComboList::showList()
-{
-	LLRect rect = mList->getRect();
-	LLRect button_rect = mButton->getRect();
-	
-	// Calculating amount of space between the navigation bar and gestures combo
-	LLNavigationBar* nb = LLNavigationBar::getInstance();
-
-	S32 x, nb_bottom;
-	nb->localPointToOtherView(0, 0, &x, &nb_bottom, this);
-
-	S32 max_height = nb_bottom - button_rect.mTop;
-	mList->calcColumnWidths();
-	rect.setOriginAndSize(button_rect.mLeft, button_rect.mTop, llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height);
-
-	mList->setRect(rect);
-	mList->fitContents( llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height);
-
-	gFocusMgr.setKeyboardFocus(this);
-
-	// Show the list and push the button down
-	mButton->setToggleState(TRUE);
-	mList->setVisible(TRUE);
-	sendChildToFront(mList);
-	LLUI::addPopup(mList);
-}
-
-void LLGestureComboList::onButtonCommit()
-{
-	if (!mList->getVisible())
-	{
-		// highlight the last selected item from the original selection before potentially selecting a new item
-		// as visual cue to original value of combo box
-		LLScrollListItem* last_selected_item = mList->getLastSelectedItem();
-		if (last_selected_item)
-		{
-			mList->mouseOverHighlightNthItem(mList->getItemIndex(last_selected_item));
-		}
-
-		if (mList->getItemCount() != 0)
-		{
-			showList();
-		}
-	}
-	else
-	{
-		hideList();
-	} 
-}
-
-void LLGestureComboList::hideList()
-{
-	if (mList->getVisible())
-	{
-		mButton->setToggleState(FALSE);
-		mList->setVisible(FALSE);
-		mList->mouseOverHighlightNthItem(-1);
-		LLUI::removePopup(mList);
-		gFocusMgr.setKeyboardFocus(NULL);
-	}
-}
-
-S32 LLGestureComboList::getCurrentIndex() const
-{
-	LLScrollListItem* item = mList->getFirstSelected();
-	if( item )
-	{
-		return mList->getItemIndex( item );
-	}
-	return -1;
-}
-
-void LLGestureComboList::onItemSelected(const LLSD& data)
-{
-	const std::string name = mList->getSelectedItemLabel();
-
-	S32 cur_id = getCurrentIndex();
-	mLastSelectedIndex = cur_id;
-	if (cur_id != mList->getItemCount()-1 && cur_id != -1)
-	{
-		mButton->setLabel(name);
-	}
-
-	// hiding the list reasserts the old value stored in the text editor/dropdown button
-	hideList();
-
-	// commit does the reverse, asserting the value in the list
-	onCommit();
-}
-
-void LLGestureComboList::sortByName(bool ascending)
-{
-	mList->sortOnce(0, ascending);
-}
-
-LLSD LLGestureComboList::getValue() const
-{
-	LLScrollListItem* item = mList->getFirstSelected();
-	if( item )
-	{
-		return item->getValue();
-	}
-	else
-	{
-		return LLSD();
-	}
-}
-
-void LLGestureComboList::refreshGestures()
-{
-	//store current selection so we can maintain it
-	LLSD cur_gesture = getValue();
-	
-	mList->selectFirstItem();
-	mList->clearRows();
-	mGestures.clear();
-
-	LLGestureMgr::item_map_t::const_iterator it;
-	const LLGestureMgr::item_map_t& active_gestures = LLGestureMgr::instance().getActiveGestures();
-	LLSD::Integer idx(0);
-	for (it = active_gestures.begin(); it != active_gestures.end(); ++it)
-	{
-		LLMultiGesture* gesture = (*it).second;
-		if (gesture)
-		{
-			mList->addSimpleElement(gesture->mName, ADD_BOTTOM, LLSD(idx));
-			mGestures.push_back(gesture);
-			idx++;
-		}
-	}
-
-	sortByName();
-
-	// store indices for Get More and View All items (idx is the index followed by the last added Gesture)
-	if (mShowGetMore)
-	{
-		mGetMoreItemIndex = idx;
-		mList->addSimpleElement(LLTrans::getString("GetMoreGestures"), ADD_BOTTOM, LLSD(mGetMoreItemIndex));
-	}
-	if (mShowViewAll)
-	{
-		mViewAllItemIndex = idx + 1;
-		mList->addSimpleElement(LLTrans::getString("ViewAllGestures"), ADD_BOTTOM, LLSD(mViewAllItemIndex));
-	}
-
-	// Insert label after sorting, at top, with separator below it
-	mList->addSeparator(ADD_TOP);	
-	mList->addSimpleElement(mLabel, ADD_TOP);
-
-	if (cur_gesture.isDefined())
-	{ 
-		mList->selectByValue(cur_gesture);
-
-	}
-	else
-	{
-		mList->selectFirstItem();
-	}
-
-	LLCtrlListInterface* gestures = getListInterface();
-	LLMultiGesture* gesture = NULL;
-	
-	if (gestures)
-	{
-		S32 sel_index = gestures->getFirstSelectedIndex();
-		if (sel_index != 0)
-		{
-			S32 index = gestures->getSelectedValue().asInteger();
-			if (index<0 || index >= (S32)mGestures.size())
-			{
-				llwarns << "out of range gesture access" << llendl;
-			}
-			else
-			{
-				gesture = mGestures.at(index);
-			}
-		}
-	}
-	
-	if(gesture && LLGestureMgr::instance().isGesturePlaying(gesture))
-	{
-		return;
-	}
-	
-	mButton->setLabel(mLabel);
-}
-
-void LLGestureComboList::onCommitGesture()
-{
-	LLCtrlListInterface* gestures = getListInterface();
-	if (gestures)
-	{
-		S32 sel_index = gestures->getFirstSelectedIndex();
-		if (sel_index == 0)
-		{
-			return;
-		}
-
-		S32 index = gestures->getSelectedValue().asInteger();
-
-		if (mViewAllItemIndex == index)
-		{
-			// The same behavior as Ctrl+G. EXT-823
-			LLFloaterReg::toggleInstance("gestures");
-			gestures->selectFirstItem();
-			return;
-		}
-
-		if (mGetMoreItemIndex == index)
-		{
-			LLWeb::loadURLExternal(gSavedSettings.getString("GesturesMarketplaceURL"));
-			return;
-		}
-
-		if (index<0 || index >= (S32)mGestures.size())
-		{
-			llwarns << "out of range gesture index" << llendl;
-		}
-		else
-		{
-			LLMultiGesture* gesture = mGestures.at(index);
-			if(gesture)
-			{
-				LLGestureMgr::instance().playGesture(gesture);
-				if(!gesture->mReplaceText.empty())
-				{
-					LLNearbyChatBar::sendChatFromViewer(gesture->mReplaceText, CHAT_TYPE_NORMAL, FALSE);
-				}
-			}
-		}
-	}
-}
-
-LLGestureComboList::~LLGestureComboList()
-{
-	LLGestureMgr::instance().removeObserver(this);
-}
-
-LLCtrlListInterface* LLGestureComboList::getListInterface()
-{
-	return mList;
-}
-
-LLNearbyChatBar::LLNearbyChatBar() 
-:	mChatBox(NULL)
+LLNearbyChatBar::LLNearbyChatBar(const LLSD& key)
+:	LLFloater(key),
+	mChatBox(NULL),
+	mNearbyChat(NULL),
+	mOutputMonitor(NULL),
+	mSpeakerMgr(NULL),
+	mExpandedHeight(COLLAPSED_HEIGHT + EXPANDED_HEIGHT)
 {
 	mSpeakerMgr = LLLocalSpeakerMgr::getInstance();
 }
@@ -436,15 +101,50 @@ BOOL LLNearbyChatBar::postBuild()
 	mChatBox->setEnableLineHistory(TRUE);
 	mChatBox->setFont(LLViewerChat::getChatFont());
 
+	mNearbyChat = getChildView("nearby_chat");
+
+	LLUICtrl* show_btn = getChild<LLUICtrl>("show_nearby_chat");
+	show_btn->setCommitCallback(boost::bind(&LLNearbyChatBar::onToggleNearbyChatPanel, this));
+
 	mOutputMonitor = getChild<LLOutputMonitorCtrl>("chat_zone_indicator");
 	mOutputMonitor->setVisible(FALSE);
 
+	gSavedSettings.declareBOOL("nearbychat_history_visibility", mNearbyChat->getVisible(), "Visibility state of nearby chat history", TRUE);
+
+	mNearbyChat->setVisible(gSavedSettings.getBOOL("nearbychat_history_visibility"));
+
 	// Register for font change notifications
 	LLViewerChat::setFontChangedCallback(boost::bind(&LLNearbyChatBar::onChatFontChange, this, _1));
 
+	enableResizeCtrls(true, true, false);
+
 	return TRUE;
 }
 
+// virtual
+void LLNearbyChatBar::onOpen(const LLSD& key)
+{
+	enableTranslationCheckbox(LLTranslate::isTranslationConfigured());
+}
+
+bool LLNearbyChatBar::applyRectControl()
+{
+	bool rect_controlled = LLFloater::applyRectControl();
+
+	if (!mNearbyChat->getVisible())
+	{
+		reshape(getRect().getWidth(), getMinHeight());
+		enableResizeCtrls(true, true, false);
+	}
+	else
+	{
+		enableResizeCtrls(true);
+		setResizeLimits(getMinWidth(), EXPANDED_MIN_HEIGHT);
+	}
+	
+	return rect_controlled;
+}
+
 void LLNearbyChatBar::onChatFontChange(LLFontGL* fontp)
 {
 	// Update things with the new font whohoo
@@ -457,19 +157,28 @@ void LLNearbyChatBar::onChatFontChange(LLFontGL* fontp)
 //static
 LLNearbyChatBar* LLNearbyChatBar::getInstance()
 {
-	return LLBottomTray::getInstance() ? LLBottomTray::getInstance()->getNearbyChatBar() : NULL;
+	return LLFloaterReg::getTypedInstance<LLNearbyChatBar>("chat_bar");
 }
 
-//static
-bool LLNearbyChatBar::instanceExists()
+void LLNearbyChatBar::showHistory()
 {
-	return LLBottomTray::instanceExists() && LLBottomTray::getInstance()->getNearbyChatBar() != NULL;
+	openFloater();
+
+	if (!getChildView("nearby_chat")->getVisible())
+	{
+		onToggleNearbyChatPanel();
+	}
+}
+
+void LLNearbyChatBar::enableTranslationCheckbox(BOOL enable)
+{
+	getChild<LLUICtrl>("translate_chat_checkbox")->setEnabled(enable);
 }
 
 void LLNearbyChatBar::draw()
 {
 	displaySpeakingIndicator();
-	LLPanel::draw();
+	LLFloater::draw();
 }
 
 std::string LLNearbyChatBar::getCurrentChat()
@@ -683,6 +392,46 @@ void LLNearbyChatBar::sendChat( EChatType type )
 	}
 }
 
+
+void LLNearbyChatBar::onToggleNearbyChatPanel()
+{
+	LLView* nearby_chat = getChildView("nearby_chat");
+
+	if (nearby_chat->getVisible())
+	{
+		if (!isMinimized())
+		{
+			mExpandedHeight = getRect().getHeight();
+		}
+		setResizeLimits(getMinWidth(), COLLAPSED_HEIGHT);
+		nearby_chat->setVisible(FALSE);
+		reshape(getRect().getWidth(), COLLAPSED_HEIGHT);
+		enableResizeCtrls(true, true, false);
+		storeRectControl();
+	}
+	else
+	{
+		nearby_chat->setVisible(TRUE);
+		setResizeLimits(getMinWidth(), EXPANDED_MIN_HEIGHT);
+		reshape(getRect().getWidth(), mExpandedHeight);
+		enableResizeCtrls(true);
+		storeRectControl();
+	}
+
+	gSavedSettings.setBOOL("nearbychat_history_visibility", mNearbyChat->getVisible());
+}
+
+void LLNearbyChatBar::setMinimized(BOOL b)
+{
+	LLNearbyChat* nearby_chat = getChild<LLNearbyChat>("nearby_chat");
+	// when unminimizing with nearby chat visible, go ahead and kill off screen chats
+	if (!b && nearby_chat->getVisible())
+	{
+		nearby_chat->removeScreenChat();
+	}
+		LLFloater::setMinimized(b);
+}
+
 void LLNearbyChatBar::onChatBoxCommit()
 {
 	if (mChatBox->getText().length() > 0)
@@ -780,17 +529,13 @@ void LLNearbyChatBar::sendChatFromViewer(const LLWString &wtext, EChatType type,
 // static 
 void LLNearbyChatBar::startChat(const char* line)
 {
-	LLBottomTray *bt = LLBottomTray::getInstance();
-
-	if (!bt)
-		return;
-
-	LLNearbyChatBar* cb = bt->getNearbyChatBar();
+	LLNearbyChatBar* cb = LLNearbyChatBar::getInstance();
 
 	if (!cb )
 		return;
 
-	bt->setVisible(TRUE);
+	cb->setVisible(TRUE);
+	cb->setFocus(TRUE);
 	cb->mChatBox->setFocus(TRUE);
 
 	if (line)
@@ -806,12 +551,7 @@ void LLNearbyChatBar::startChat(const char* line)
 // static
 void LLNearbyChatBar::stopChat()
 {
-	LLBottomTray *bt = LLBottomTray::getInstance();
-
-	if (!bt)
-		return;
-
-	LLNearbyChatBar* cb = bt->getNearbyChatBar();
+	LLNearbyChatBar* cb = LLNearbyChatBar::getInstance();
 
 	if (!cb)
 		return;
diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h
index efddec942fd49e3ba9bca4f1283391ebbe53da79..baf12a06ea07cecad402b904ff6631a2bcf9ac16 100644
--- a/indra/newview/llnearbychatbar.h
+++ b/indra/newview/llnearbychatbar.h
@@ -27,85 +27,26 @@
 #ifndef LL_LLNEARBYCHATBAR_H
 #define LL_LLNEARBYCHATBAR_H
 
-#include "llpanel.h"
+#include "llfloater.h"
 #include "llcombobox.h"
 #include "llgesturemgr.h"
 #include "llchat.h"
 #include "llvoiceclient.h"
 #include "lloutputmonitorctrl.h"
 #include "llspeakers.h"
-#include "llbottomtray.h"
 
-
-class LLGestureComboList
-	: public LLGestureManagerObserver
-	, public LLUICtrl
-{
-public:
-	struct Params :	public LLInitParam::Block<Params, LLUICtrl::Params>
-	{
-		Optional<LLBottomtrayButton::Params>			combo_button;
-		Optional<LLScrollListCtrl::Params>	combo_list;
-		Optional<bool>						get_more,
-											view_all;
-		
-		Params();
-	};
-
-protected:
-	
-	friend class LLUICtrlFactory;
-	LLGestureComboList(const Params&);
-	std::vector<LLMultiGesture*> mGestures;
-	std::string mLabel;
-	bool			mShowViewAll;
-	bool			mShowGetMore;
-	LLSD::Integer mViewAllItemIndex;
-	LLSD::Integer mGetMoreItemIndex;
-
-public:
-
-	~LLGestureComboList();
-
-	LLCtrlListInterface* getListInterface();
-	virtual void	showList();
-	virtual void	hideList();
-	virtual BOOL	handleKeyHere(KEY key, MASK mask);
-
-	virtual void	draw();
-
-	S32				getCurrentIndex() const;
-	void			onItemSelected(const LLSD& data);
-	void			sortByName(bool ascending = true);
-	void refreshGestures();
-	void onCommitGesture();
-	void onButtonCommit();
-	virtual LLSD	getValue() const;
-
-	// LLGestureManagerObserver trigger
-	virtual void changed() { refreshGestures(); }
-
-private:
-
-	LLButton*			mButton;
-	LLScrollListCtrl*	mList;
-	S32                 mLastSelectedIndex;
-};
-
-class LLNearbyChatBar
-:	public LLPanel
+class LLNearbyChatBar :	public LLFloater
 {
 public:
 	// constructor for inline chat-bars (e.g. hosted in chat history window)
-	LLNearbyChatBar();
+	LLNearbyChatBar(const LLSD& key);
 	~LLNearbyChatBar() {}
 
 	virtual BOOL postBuild();
+	/*virtual*/ void onOpen(const LLSD& key);
 
 	static LLNearbyChatBar* getInstance();
 
-	static bool instanceExists();
-
 	LLLineEditor* getChatBox() { return mChatBox; }
 
 	virtual void draw();
@@ -119,6 +60,10 @@ class LLNearbyChatBar
 	static void sendChatFromViewer(const std::string &utf8text, EChatType type, BOOL animate);
 	static void sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL animate);
 
+	void showHistory();
+	void enableTranslationCheckbox(BOOL enable);
+	/*virtual*/void setMinimized(BOOL b);
+
 protected:
 	static BOOL matchChatTypeTrigger(const std::string& in_str, std::string* out_str);
 	static void onChatBoxKeystroke(LLLineEditor* caller, void* userdata);
@@ -129,6 +74,10 @@ class LLNearbyChatBar
 	void onChatBoxCommit();
 	void onChatFontChange(LLFontGL* fontp);
 
+	/* virtual */ bool applyRectControl();
+
+	void onToggleNearbyChatPanel();
+
 	static LLWString stripChannelNumber(const LLWString &mesg, S32* channel);
 	EChatType processChatTypeTriggers(EChatType type, std::string &str);
 
@@ -137,9 +86,12 @@ class LLNearbyChatBar
 	// Which non-zero channel did we last chat on?
 	static S32 sLastSpecialChatChannel;
 
-	LLLineEditor*		mChatBox;
-	LLOutputMonitorCtrl* mOutputMonitor;
-	LLLocalSpeakerMgr*  mSpeakerMgr;
+	LLLineEditor*			mChatBox;
+	LLView*					mNearbyChat;
+	LLOutputMonitorCtrl*	mOutputMonitor;
+	LLLocalSpeakerMgr*		mSpeakerMgr;
+
+	S32 mExpandedHeight;
 };
 
 #endif
diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp
index 957b6d5f94fc6d8498fd6e4a4dcd441d36da9573..240a7c7a35cb95a6bd910539022218ddfb1cbdda 100644
--- a/indra/newview/llnearbychathandler.cpp
+++ b/indra/newview/llnearbychathandler.cpp
@@ -29,7 +29,6 @@
 #include "llagentdata.h" // for gAgentID
 #include "llnearbychathandler.h"
 
-#include "llbottomtray.h"
 #include "llchatitemscontainerctrl.h"
 #include "llfirstuse.h"
 #include "llfloaterscriptdebug.h"
@@ -41,6 +40,9 @@
 
 #include "llfloaterreg.h"//for LLFloaterReg::getTypedInstance
 #include "llviewerwindow.h"//for screen channel position
+#include "llnearbychatbar.h"
+#include "llrootview.h"
+#include "lllayoutstack.h"
 
 //add LLNearbyChatHandler to LLNotificationsUI namespace
 using namespace LLNotificationsUI;
@@ -61,7 +63,8 @@ class LLNearbyChatScreenChannel: public LLScreenChannelBase
 	typedef std::vector<LLHandle<LLToast> > toast_vec_t;
 	typedef std::list<LLHandle<LLToast> > toast_list_t;
 
-	LLNearbyChatScreenChannel(const LLUUID& id):LLScreenChannelBase(id) 
+	LLNearbyChatScreenChannel(const Params& p)
+		: LLScreenChannelBase(p)
 	{
 		mStopProcessing = false;
 
@@ -80,7 +83,6 @@ class LLNearbyChatScreenChannel: public LLScreenChannelBase
 
 	void addNotification	(LLSD& notification);
 	void arrangeToasts		();
-	void showToastsBottom	();
 	
 	typedef boost::function<LLToastPanelBase* (void )> create_toast_panel_callback_t;
 	void setCreatePanelCallback(create_toast_panel_callback_t value) { m_create_toast_panel_callback_t = value;}
@@ -88,8 +90,6 @@ class LLNearbyChatScreenChannel: public LLScreenChannelBase
 	void onToastDestroyed	(LLToast* toast, bool app_quitting);
 	void onToastFade		(LLToast* toast);
 
-	void reshape			(S32 width, S32 height, BOOL called_from_parent);
-
 	void redrawToasts()
 	{
 		arrangeToasts();
@@ -149,6 +149,7 @@ class LLNearbyChatScreenChannel: public LLScreenChannelBase
 	toast_list_t m_toast_pool;
 
 	bool	mStopProcessing;
+	bool	mChannelRect;
 };
 
 //-----------------------------------------------------------------------------------------------
@@ -351,27 +352,6 @@ void LLNearbyChatScreenChannel::addNotification(LLSD& notification)
 	arrangeToasts();
 }
 
-void LLNearbyChatScreenChannel::arrangeToasts()
-{
-	if(!isHovering())
-	{
-		showToastsBottom();
-	}
-
-	if (m_active_toasts.empty())
-	{
-		LLHints::registerHintTarget("incoming_chat", LLHandle<LLView>());
-	}
-	else
-	{
-		LLToast* toast = m_active_toasts.front().get();
-		if (toast)
-		{
-			LLHints::registerHintTarget("incoming_chat", m_active_toasts.front().get()->LLView::getHandle());
-		}
-	}
-}
-
 static bool sort_toasts_predicate(LLHandle<LLToast> first, LLHandle<LLToast> second)
 {
 	if (!first.get() || !second.get()) return false; // STORM-1352
@@ -381,16 +361,34 @@ static bool sort_toasts_predicate(LLHandle<LLToast> first, LLHandle<LLToast> sec
 	return v1 > v2;
 }
 
-void LLNearbyChatScreenChannel::showToastsBottom()
+void LLNearbyChatScreenChannel::arrangeToasts()
 {
-	if(mStopProcessing)
+	if(mStopProcessing || isHovering())
 		return;
 
+	if (mFloaterSnapRegion == NULL)
+	{
+		mFloaterSnapRegion = gViewerWindow->getRootView()->getChildView("floater_snap_region");
+	}
+	
+	if (!getParent())
+	{
+		// connect to floater snap region just to get resize events, we don't care about being a proper widget 
+		mFloaterSnapRegion->addChild(this);
+		setFollows(FOLLOWS_ALL);
+	}
+
 	LLRect	toast_rect;	
-	updateBottom();
-	S32 channel_bottom = getRect().mBottom;
+	updateRect();
+
+	LLRect channel_rect;
+	mFloaterSnapRegion->localRectToOtherView(mFloaterSnapRegion->getLocalRect(), &channel_rect, gFloaterView);
+	channel_rect.mLeft += 10;
+	channel_rect.mRight = channel_rect.mLeft + 300;
 
-	S32		bottom = channel_bottom;
+	S32 channel_bottom = channel_rect.mBottom;
+
+	S32		bottom = channel_bottom + 80;
 	S32		margin = gSavedSettings.getS32("ToastGap");
 
 	//sort active toasts
@@ -409,7 +407,7 @@ void LLNearbyChatScreenChannel::showToastsBottom()
 
 		S32 toast_top = bottom + toast->getRect().getHeight() + margin;
 
-		if(toast_top > gFloaterView->getRect().getHeight())
+		if(toast_top > channel_rect.getHeight())
 		{
 			while(it!=m_active_toasts.end())
 			{
@@ -420,7 +418,7 @@ void LLNearbyChatScreenChannel::showToastsBottom()
 		}
 
 		toast_rect = toast->getRect();
-		toast_rect.setLeftTopAndSize(getRect().mLeft , bottom + toast_rect.getHeight(), toast_rect.getWidth() ,toast_rect.getHeight());
+		toast_rect.setLeftTopAndSize(channel_rect.mLeft , bottom + toast_rect.getHeight(), toast_rect.getWidth() ,toast_rect.getHeight());
 
 		toast->setRect(toast_rect);
 		bottom += toast_rect.getHeight() - toast->getTopPad() + margin;
@@ -438,15 +436,10 @@ void LLNearbyChatScreenChannel::showToastsBottom()
 		}
 	}
 
-	}
-
-void LLNearbyChatScreenChannel::reshape			(S32 width, S32 height, BOOL called_from_parent)
-{
-	LLScreenChannelBase::reshape(width, height, called_from_parent);
-	arrangeToasts();
 }
 
 
+
 //-----------------------------------------------------------------------------------------------
 //LLNearbyChatHandler
 //-----------------------------------------------------------------------------------------------
@@ -457,7 +450,9 @@ LLNearbyChatHandler::LLNearbyChatHandler(e_notification_type type, const LLSD& i
 	mType = type;
 
 	// Getting a Channel for our notifications
-	LLNearbyChatScreenChannel* channel = new LLNearbyChatScreenChannel(LLUUID(gSavedSettings.getString("NearByChatChannelUUID")));
+	LLNearbyChatScreenChannel::Params p;
+	p.id = LLUUID(gSavedSettings.getString("NearByChatChannelUUID"));
+	LLNearbyChatScreenChannel* channel = new LLNearbyChatScreenChannel(p);
 	
 	LLNearbyChatScreenChannel::create_toast_panel_callback_t callback = createToastPanel;
 
@@ -473,15 +468,13 @@ LLNearbyChatHandler::~LLNearbyChatHandler()
 
 void LLNearbyChatHandler::initChannel()
 {
-	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
-	LLView* chat_box = LLBottomTray::getInstance()->getChildView("chat_box");
-	S32 channel_right_bound = nearby_chat->getRect().mRight;
-	mChannel->init(chat_box->getRect().mLeft, channel_right_bound);
+	//LLRect snap_rect = gFloaterView->getSnapRect();
+	//mChannel->init(snap_rect.mLeft, snap_rect.mLeft + 200);
 }
 
 
 
-void LLNearbyChatHandler::processChat(const LLChat& chat_msg,		// WARNING - not really const, see hack below changing chat_msg.mText
+void LLNearbyChatHandler::processChat(const LLChat& chat_msg,
 									  const LLSD &args)
 {
 	if(chat_msg.mMuted == TRUE)
@@ -490,24 +483,9 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg,		// WARNING - not
 	if(chat_msg.mText.empty())
 		return;//don't process empty messages
 
-	// Handle irc styled messages for toast panel
-	// HACK ALERT - changes mText, stripping out IRC style "/me" prefixes
-	LLChat& tmp_chat = const_cast<LLChat&>(chat_msg);
-	std::string original_message = tmp_chat.mText;			// Save un-modified version of chat text
-	if (tmp_chat.mChatStyle == CHAT_STYLE_IRC)
-	{
-		if(!tmp_chat.mFromName.empty())
-			tmp_chat.mText = tmp_chat.mFromName + tmp_chat.mText.substr(3);
-		else
-			tmp_chat.mText = tmp_chat.mText.substr(3);
-	}
+	LLFloater* chat_bar = LLFloaterReg::getInstance("chat_bar");
 
-	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
-	{
-		//sometimes its usefull to have no name at all...
-		//if(tmp_chat.mFromName.empty() && tmp_chat.mFromID!= LLUUID::null)
-		//	tmp_chat.mFromName = tmp_chat.mFromID.asString();
-	}
+	LLNearbyChat* nearby_chat = chat_bar->findChild<LLNearbyChat>("nearby_chat");
 
 	// Build notification data 
 	LLSD notification;
@@ -551,7 +529,7 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg,		// WARNING - not
 
 			LLViewerChat::getChatColor(chat_msg,txt_color);
 
-			LLFloaterScriptDebug::addScriptLine(original_message,		// Send full message with "/me" style prefix
+			LLFloaterScriptDebug::addScriptLine(chat_msg.mText,
 												chat_msg.mFromName,
 												txt_color,
 												chat_msg.mFromID);
@@ -576,7 +554,8 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg,		// WARNING - not
 	sChatWatcher->post(notification);
 
 
-	if( nearby_chat->getVisible()
+	if( !chat_bar->isMinimized()
+		&& nearby_chat->isInVisibleChain() 
 		|| ( chat_msg.mSourceType == CHAT_SOURCE_AGENT
 			&& gSavedSettings.getBOOL("UseChatBubbles") )
 		|| !mChannel->getShowToasts() ) // to prevent toasts in Busy mode
@@ -604,6 +583,21 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg,		// WARNING - not
 
 	if(channel)
 	{
+		// Handle IRC styled messages.
+		std::string toast_msg;
+		if (chat_msg.mChatStyle == CHAT_STYLE_IRC)
+		{
+			if (!chat_msg.mFromName.empty())
+			{
+				toast_msg += chat_msg.mFromName;
+			}
+			toast_msg += chat_msg.mText.substr(3);
+		}
+		else
+		{
+			toast_msg = chat_msg.mText;
+		}
+
 		// Add a nearby chat toast.
 		LLUUID id;
 		id.generate();
@@ -615,6 +609,7 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg,		// WARNING - not
 		notification["text_color"] = r_color_name;
 		notification["color_alpha"] = r_color_alpha;
 		notification["font_size"] = (S32)LLViewerChat::getChatFontSize() ;
+		notification["message"] = toast_msg;
 		channel->addNotification(notification);	
 	}
 }
diff --git a/indra/newview/llnetmap.cpp b/indra/newview/llnetmap.cpp
index 5fe5c9b1e8a4e03c0073cd053ee3599f8f1d3633..15d5d7c1628f8b43dd2da028ec299ea30fb825c1 100644
--- a/indra/newview/llnetmap.cpp
+++ b/indra/newview/llnetmap.cpp
@@ -172,10 +172,10 @@ void LLNetMap::draw()
 	LLVector3 offset = gGL.getUITranslation();
 	LLVector3 scale = gGL.getUIScale();
 
-	glLoadIdentity();
+	gGL.loadIdentity();
 	gGL.loadUIIdentity();
 
-	glScalef(scale.mV[0], scale.mV[1], scale.mV[2]);
+	gGL.scalef(scale.mV[0], scale.mV[1], scale.mV[2]);
 	gGL.translatef(offset.mV[0], offset.mV[1], offset.mV[2]);
 	
 	{
@@ -183,7 +183,7 @@ void LLNetMap::draw()
 		{
 			gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 
-			glMatrixMode(GL_MODELVIEW);
+			gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 			// Draw background rectangle
 			LLColor4 background_color = mBackgroundColor.get();
@@ -204,7 +204,7 @@ void LLNetMap::draw()
 		{
 			// rotate subsequent draws to agent rotation
 			rotation = atan2( LLViewerCamera::getInstance()->getAtAxis().mV[VX], LLViewerCamera::getInstance()->getAtAxis().mV[VY] );
-			glRotatef( rotation * RAD_TO_DEG, 0.f, 0.f, 1.f);
+			gGL.rotatef( rotation * RAD_TO_DEG, 0.f, 0.f, 1.f);
 		}
 
 		// figure out where agent is
@@ -492,7 +492,7 @@ void LLNetMap::draw()
 			// If we don't rotate the map, we have to rotate the frustum.
 			gGL.pushMatrix();
 				gGL.translatef( ctr_x, ctr_y, 0 );
-				glRotatef( atan2( LLViewerCamera::getInstance()->getAtAxis().mV[VX], LLViewerCamera::getInstance()->getAtAxis().mV[VY] ) * RAD_TO_DEG, 0.f, 0.f, -1.f);
+				gGL.rotatef( atan2( LLViewerCamera::getInstance()->getAtAxis().mV[VX], LLViewerCamera::getInstance()->getAtAxis().mV[VY] ) * RAD_TO_DEG, 0.f, 0.f, -1.f);
 				gGL.begin( LLRender::TRIANGLES  );
 					gGL.vertex2f( 0, 0 );
 					gGL.vertex2f( -half_width_pixels, far_clip_pixels );
diff --git a/indra/newview/llnotificationalerthandler.cpp b/indra/newview/llnotificationalerthandler.cpp
index 9d824dcd592f3cd5e5433a7fd1883217491c7384..cae7d02fedd3ddf46ca4d0ec00c14d382b742de2 100644
--- a/indra/newview/llnotificationalerthandler.cpp
+++ b/indra/newview/llnotificationalerthandler.cpp
@@ -44,7 +44,7 @@ LLAlertHandler::LLAlertHandler(e_notification_type type, const LLSD& id) : mIsMo
 {
 	mType = type;
 
-	LLChannelManager::Params p;
+	LLScreenChannelBase::Params p;
 	p.id = LLUUID(gSavedSettings.getString("AlertChannelUUID"));
 	p.display_toasts_always = true;
 	p.toast_align = NA_CENTRE;
@@ -114,7 +114,7 @@ bool LLAlertHandler::processNotification(const LLSD& notify)
 		// Show alert in middle of progress view (during teleport) (EXT-1093)
 		LLProgressView* progress = gViewerWindow->getProgressView();
 		LLRect rc = progress && progress->getVisible() ? progress->getRect() : gViewerWindow->getWorldViewRectScaled();
-		mChannel->updatePositionAndSize(rc, rc);
+		mChannel->updatePositionAndSize(rc);
 
 		LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel);
 		if(channel)
diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h
index 28a69f2373605ebdfd41407c5928348f74391361..23dbb6b047cafc611bb36fedfc63ec38b668ccf0 100644
--- a/indra/newview/llnotificationhandler.h
+++ b/indra/newview/llnotificationhandler.h
@@ -283,9 +283,17 @@ class LLBrowserNotification : public LLSingleton<LLBrowserNotification>
 {
 public:
 	virtual bool processNotification(const LLSD& notify);
+};
 	
+/**
+ * Handler for outbox notifications
+ */
+class LLOutboxNotification : public LLSingleton<LLOutboxNotification>
+{
+public:
+	virtual bool processNotification(const LLSD& notify);
 };
-
+	
 class LLHandlerUtil
 {
 public:
diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp
index de90023f3b8bd2bbcf95e605ef47bba7870dfddc..1b767e80d4232d00a4be3e04f6f1a8eb607298c1 100644
--- a/indra/newview/llnotificationhandlerutil.cpp
+++ b/indra/newview/llnotificationhandlerutil.cpp
@@ -385,7 +385,7 @@ void LLHandlerUtil::logGroupNoticeToIMGroup(
 // static
 void LLHandlerUtil::logToNearbyChat(const LLNotificationPtr& notification, EChatSourceType type)
 {
-	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+	LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
 	if(nearby_chat)
 	{
 		LLChat chat_msg(notification->getMessage());
diff --git a/indra/newview/llnotificationmanager.cpp b/indra/newview/llnotificationmanager.cpp
index 69882271282d6a6c295d1f837f00352443b296ff..6105eff8ea6e4352e979e08af664f794c6051040 100644
--- a/indra/newview/llnotificationmanager.cpp
+++ b/indra/newview/llnotificationmanager.cpp
@@ -62,6 +62,7 @@ void LLNotificationManager::init()
 	LLNotificationChannel::buildChannel("Offer", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "offer"));
 	LLNotificationChannel::buildChannel("Hints", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "hint"));
 	LLNotificationChannel::buildChannel("Browser", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "browser"));
+	LLNotificationChannel::buildChannel("Outbox", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "outbox"));
   
 	LLNotifications::instance().getChannel("Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
 	LLNotifications::instance().getChannel("NotificationTips")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
@@ -72,6 +73,7 @@ void LLNotificationManager::init()
 	LLNotifications::instance().getChannel("Offer")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
 	LLNotifications::instance().getChannel("Hints")->connectChanged(boost::bind(&LLHintHandler::processNotification, LLHintHandler::getInstance(), _1));
 	LLNotifications::instance().getChannel("Browser")->connectChanged(boost::bind(&LLBrowserNotification::processNotification, LLBrowserNotification::getInstance(), _1));
+	LLNotifications::instance().getChannel("Outbox")->connectChanged(boost::bind(&LLOutboxNotification::processNotification, LLOutboxNotification::getInstance(), _1));
 
 	mNotifyHandlers["notify"] = boost::shared_ptr<LLEventHandler>(new LLScriptHandler(NT_NOTIFY, LLSD()));
 	mNotifyHandlers["notifytip"] =  boost::shared_ptr<LLEventHandler>(new LLTipHandler(NT_NOTIFY, LLSD()));
diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp
index 02b217fc9430736d143477bac3c537d4d52e7195..fb0891c4c5a879dba0654311065a562ee045c8a7 100644
--- a/indra/newview/llnotificationtiphandler.cpp
+++ b/indra/newview/llnotificationtiphandler.cpp
@@ -29,6 +29,7 @@
 
 #include "llfloaterreg.h"
 #include "llnearbychat.h"
+#include "llnearbychatbar.h"
 #include "llnotificationhandler.h"
 #include "llnotifications.h"
 #include "lltoastnotifypanel.h"
@@ -92,9 +93,9 @@ bool LLTipHandler::processNotification(const LLSD& notify)
 			LLHandlerUtil::logToNearbyChat(notification, CHAT_SOURCE_SYSTEM);
 
 			// don't show toast if Nearby Chat is opened
-			LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<
-					LLNearbyChat>("nearby_chat", LLSD());
-			if (nearby_chat->getVisible())
+			LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
+			LLNearbyChatBar* nearby_chat_bar = LLNearbyChatBar::getInstance();
+			if (!nearby_chat_bar->isMinimized() && nearby_chat_bar->getVisible() && nearby_chat->getVisible())
 			{
 				return false;
 			}
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index 10887aa53aa5b4aa70d01d4bda1659eb6d32db99..1dc4d796ab20d1af7f6953f6b5ffffdf24e2f41d 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -35,13 +35,13 @@
 #include "llaccordionctrltab.h"
 #include "llagentwearables.h"
 #include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llinventoryfunctions.h"
 #include "llinventorymodel.h"
 #include "lllistcontextmenu.h"
 #include "llmenubutton.h"
 #include "llnotificationsutil.h"
 #include "lloutfitobserver.h"
-#include "llsidetray.h"
 #include "lltoggleablemenu.h"
 #include "lltransutil.h"
 #include "llviewermenu.h"
@@ -327,7 +327,7 @@ class LLOutfitContextMenu : public LLListContextMenu
 
 	static void editOutfit()
 	{
-		LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+		LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
 	}
 
 	static void renameOutfit(const LLUUID& outfit_cat_id)
diff --git a/indra/newview/lloverlaybar.cpp b/indra/newview/lloverlaybar.cpp
deleted file mode 100644
index c2bbec04700ed77ec65745199c7d76c6cb9033d9..0000000000000000000000000000000000000000
--- a/indra/newview/lloverlaybar.cpp
+++ /dev/null
@@ -1,378 +0,0 @@
-/** 
- * @file lloverlaybar.cpp
- * @brief LLOverlayBar class 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$
- */
-
-// Temporary buttons that appear at the bottom of the screen when you
-// are in a mode.
-
-#include "llviewerprecompiledheaders.h"
-
-#include "lloverlaybar.h"
-
-#include "llaudioengine.h"
-#include "llrender.h"
-#include "llagent.h"
-#include "llbutton.h"
-#include "llfocusmgr.h"
-#include "llimview.h"
-#include "llmediaremotectrl.h"
-#include "llparcel.h"
-#include "lltextbox.h"
-#include "llui.h"
-#include "llviewercontrol.h"
-#include "llviewertexturelist.h"
-#include "llviewerjoystick.h"
-#include "llviewermedia.h"
-#include "llviewermenu.h"	// handle_reset_view()
-#include "llviewermedia.h"
-#include "llviewerparcelmedia.h"
-#include "llviewerparcelmgr.h"
-#include "lluictrlfactory.h"
-#include "llviewerwindow.h"
-#include "llvoiceclient.h"
-#include "llvoavatarself.h"
-#include "llvoiceremotectrl.h"
-#include "llmediactrl.h"
-#include "llselectmgr.h"
-
-//
-// Globals
-//
-
-LLOverlayBar *gOverlayBar = NULL;
-
-extern S32 MENU_BAR_HEIGHT;
-
-//
-// Functions
-//
-
-
-
-void* LLOverlayBar::createMediaRemote(void* userdata)
-{
-	LLOverlayBar *self = (LLOverlayBar*)userdata;	
-	self->mMediaRemote =  new LLMediaRemoteCtrl ();
-	return self->mMediaRemote;
-}
-
-void* LLOverlayBar::createVoiceRemote(void* userdata)
-{
-	LLOverlayBar *self = (LLOverlayBar*)userdata;	
-	self->mVoiceRemote = new LLVoiceRemoteCtrl();
-	return self->mVoiceRemote;
-}
-
-LLOverlayBar::LLOverlayBar()
-	:	LLPanel(),
-		mMediaRemote(NULL),
-		mVoiceRemote(NULL),
-		mMusicState(STOPPED)
-{
-	setMouseOpaque(FALSE);
-	setIsChrome(TRUE);
-
-	mBuilt = false;
-
-	mFactoryMap["media_remote"] = LLCallbackMap(LLOverlayBar::createMediaRemote, this);
-	mFactoryMap["voice_remote"] = LLCallbackMap(LLOverlayBar::createVoiceRemote, this);
-	
-	LLUICtrlFactory::getInstance()->buildPanel(this, "panel_overlaybar.xml");
-}
-
-BOOL LLOverlayBar::postBuild()
-{
-	childSetAction("Set Not Busy",onClickSetNotBusy,this);
-	childSetAction("Mouselook",onClickMouselook,this);
-	childSetAction("Stand Up",onClickStandUp,this);
- 	childSetAction("Flycam",onClickFlycam,this);
-	childSetVisible("chat_bar", gSavedSettings.getBOOL("ChatVisible"));
-
-	mVoiceRemote->expandOrCollapse();
-	mMediaRemote->expandOrCollapse();
-
-	setFocusRoot(TRUE);
-	mBuilt = true;
-
-	layoutButtons();
-	return TRUE;
-}
-
-LLOverlayBar::~LLOverlayBar()
-{
-	// LLView destructor cleans up children
-}
-
-// virtual
-void LLOverlayBar::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
-	LLView::reshape(width, height, called_from_parent);
-
-	if (mBuilt) 
-	{
-		layoutButtons();
-	}
-}
-
-void LLOverlayBar::layoutButtons()
-{
-	LLView* state_buttons_panel = getChildView("state_buttons");
-
-	if (state_buttons_panel->getVisible())
-	{
-		LLViewQuery query;
-		LLWidgetTypeFilter<LLButton> widget_filter;
-		query.addPreFilter(LLEnabledFilter::getInstance());
-		query.addPreFilter(&widget_filter);
-
-		child_list_t button_list = query(state_buttons_panel);
-
-		const S32 MAX_BAR_WIDTH = 600;
-		S32 bar_width = llclamp(state_buttons_panel->getRect().getWidth(), 0, MAX_BAR_WIDTH);
-
-		// calculate button widths
-		const S32 MAX_BUTTON_WIDTH = 150;
-		const S32 STATUS_BAR_PAD = 10;
-		S32 segment_width = llclamp(lltrunc((F32)(bar_width) / (F32)button_list.size()), 0, MAX_BUTTON_WIDTH);
-		S32 btn_width = segment_width - STATUS_BAR_PAD;
-
-		// Evenly space all buttons, starting from left
-		S32 left = 0;
-		S32 bottom = 1;
-
-		for (child_list_reverse_iter_t child_iter = button_list.rbegin();
-			child_iter != button_list.rend(); ++child_iter)
-		{
-			LLView *view = *child_iter;
-			LLRect r = view->getRect();
-			r.setOriginAndSize(left, bottom, btn_width, r.getHeight());
-			view->setRect(r);
-			left += segment_width;
-		}
-	}
-}
-
-// Per-frame updates of visibility
-void LLOverlayBar::refresh()
-{
-	BOOL buttons_changed = FALSE;
-
-	BOOL im_received = gIMMgr->getIMReceived();
-	LLButton* button = getChild<LLButton>("IM Received");
-	if (button && button->getVisible() != im_received)
-	{
-		button->setVisible(im_received);
-		sendChildToFront(button);
-		moveChildToBackOfTabGroup(button);
-		buttons_changed = TRUE;
-	}
-
-	BOOL busy = gAgent.getBusy();
-	button = getChild<LLButton>("Set Not Busy");
-	if (button && button->getVisible() != busy)
-	{
-		button->setVisible(busy);
-		sendChildToFront(button);
-		moveChildToBackOfTabGroup(button);
-		buttons_changed = TRUE;
-	}
-
-	BOOL flycam = LLViewerJoystick::getInstance()->getOverrideCamera();
-	button = getChild<LLButton>("Flycam");
-	if (button && button->getVisible() != flycam)
-	{
-		button->setVisible(flycam);
-		sendChildToFront(button);
-		moveChildToBackOfTabGroup(button);
-		buttons_changed = TRUE;
-	}		
-
-	BOOL mouselook_grabbed;
-	mouselook_grabbed = gAgent.isControlGrabbed(CONTROL_ML_LBUTTON_DOWN_INDEX)
-		|| gAgent.isControlGrabbed(CONTROL_ML_LBUTTON_UP_INDEX);
-	button = getChild<LLButton>("Mouselook");
-
-	if (button && button->getVisible() != mouselook_grabbed)
-	{
-		button->setVisible(mouselook_grabbed);
-		sendChildToFront(button);
-		moveChildToBackOfTabGroup(button);
-		buttons_changed = TRUE;
-	}
-
-	BOOL sitting = FALSE;
-	if (gAgent.getAvatarObject())
-	{
-		sitting = gAgent.getAvatarObject()->isSitting();
-	}
-	button = getChild<LLButton>("Stand Up");
-
-	if (button && button->getVisible() != sitting)
-	{
-		button->setVisible(sitting);
-		sendChildToFront(button);
-		moveChildToBackOfTabGroup(button);
-		buttons_changed = TRUE;
-	}
-
-
-	moveChildToBackOfTabGroup(mMediaRemote);
-	moveChildToBackOfTabGroup(mVoiceRemote);
-
-	// turn off the whole bar in mouselook
-	if (gAgent.cameraMouselook())
-	{
-		childSetVisible("media_remote_container", FALSE);
-		childSetVisible("voice_remote_container", FALSE);
-		childSetVisible("state_buttons", FALSE);
-	}
-	else
-	{
-		// update "remotes"
-		childSetVisible("media_remote_container", TRUE);
-		childSetVisible("voice_remote_container", LLVoiceClient::getInstance()->voiceEnabled());
-		childSetVisible("state_buttons", TRUE);
-	}
-
-	// always let user toggle into and out of chatbar
-	childSetVisible("chat_bar", gSavedSettings.getBOOL("ChatVisible"));
-
-	if (buttons_changed)
-	{
-		layoutButtons();
-	}
-}
-
-//-----------------------------------------------------------------------
-// Static functions
-//-----------------------------------------------------------------------
-
-// static
-void LLOverlayBar::onClickSetNotBusy(void*)
-{
-	gAgent.clearBusy();
-}
-
-
-// static
-void LLOverlayBar::onClickFlycam(void*)
-{
-	LLViewerJoystick::getInstance()->toggleFlycam();
-}
-
-// static
-void LLOverlayBar::onClickResetView(void* data)
-{
-	handle_reset_view();
-}
-
-//static
-void LLOverlayBar::onClickMouselook(void*)
-{
-	gAgent.changeCameraToMouselook();
-}
-
-//static
-void LLOverlayBar::onClickStandUp(void*)
-{
-	LLSelectMgr::getInstance()->deselectAllForStandingUp();
-	gAgent.setControlFlags(AGENT_CONTROL_STAND_UP);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// static media helpers
-// *TODO: Move this into an audio manager abstraction
-//static
-void LLOverlayBar::mediaStop(void*)
-{
-	if (!gOverlayBar)
-	{
-		// return;
-	}
-	LLViewerParcelMedia::stop();
-}
-//static
-void LLOverlayBar::toggleMediaPlay(void*)
-{
-	if (!gOverlayBar)
-	{
-		// return;
-	}
-
-	
-	if (LLViewerParcelMedia::getStatus() == LLViewerMediaImpl::MEDIA_PAUSED)
-	{
-		LLViewerParcelMedia::start();
-	}
-	else if(LLViewerParcelMedia::getStatus() == LLViewerMediaImpl::MEDIA_PLAYING)
-	{
-		LLViewerParcelMedia::pause();
-	}
-	else
-	{
-		LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
-		if (parcel)
-		{
-			LLViewerParcelMedia::play(parcel);
-		}
-	}
-}
-
-//static
-void LLOverlayBar::toggleMusicPlay(void*)
-{
-	if (gAudiop->isInternetStreamPlaying() != 1)
-	{
-		if (gAudiop)
-		{
-			LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
-			if ( parcel )
-			{
-				// this doesn't work properly when crossing parcel boundaries - even when the 
-				// stream is stopped, it doesn't return the right thing - commenting out for now.
-	// 			if ( gAudiop->isInternetStreamPlaying() == 0 )
-				{
-					gAudiop->startInternetStream(parcel->getMusicURL());
-				}
-			}
-		}
-	}
-	//else
-	//{
-	//	gOverlayBar->mMusicState = PAUSED; // desired state
-	//	if (gAudiop)
-	//	{
-	//		gAudiop->pauseInternetStream(1);
-	//	}
-	//}
-	else
-	{
-		if (gAudiop)
-		{
-			gAudiop->stopInternetStream();
-		}
-	}
-}
-
diff --git a/indra/newview/lloverlaybar.h b/indra/newview/lloverlaybar.h
deleted file mode 100644
index b36f5ebb731cc756bb991667f715dca770946b33..0000000000000000000000000000000000000000
--- a/indra/newview/lloverlaybar.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/** 
- * @file lloverlaybar.h
- * @brief LLOverlayBar class definition
- *
- * $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_LLOVERLAYBAR_H
-#define LL_LLOVERLAYBAR_H
-
-#include "llpanel.h"
-
-// "Constants" loaded from settings.xml at start time
-extern S32 STATUS_BAR_HEIGHT;
-
-class LLButton;
-class LLLineEditor;
-class LLMediaRemoteCtrl;
-class LLMessageSystem;
-class LLTextBox;
-class LLTextEditor;
-class LLUICtrl;
-class LLUUID;
-class LLFrameTimer;
-class LLStatGraph;
-class LLSlider;
-class LLVoiceRemoteCtrl;
-
-class LLOverlayBar
-:	public LLPanel
-{
-public:
-	LLOverlayBar();
-	~LLOverlayBar();
-
-	/*virtual*/ void refresh();
-	/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
-	/*virtual*/ BOOL postBuild();
-
-	void layoutButtons();
-
-	// helpers for returning desired state
-	BOOL musicPlaying() { return mMusicState == PLAYING; }
-	
-	static void onClickSetNotBusy(void* data);
-	static void onClickMouselook(void* data);
-	static void onClickStandUp(void* data);
-	static void onClickResetView(void* data);
- 	static void onClickFlycam(void* data);
-
-	//static media helper functions
-	static void toggleMediaPlay(void*);
-	static void toggleMusicPlay(void*);
-	static void musicPause(void*);
-	static void musicStop(void*);
-	static void mediaStop(void*);
-
-	static void toggleAudioVolumeFloater(void*);
-
-protected:	
-	static void* createMediaRemote(void* userdata);
-	static void* createVoiceRemote(void* userdata);
-
-	void enableMediaButtons();
-
-protected:
-	LLMediaRemoteCtrl*	mMediaRemote;
-	LLVoiceRemoteCtrl*	mVoiceRemote;
-	bool mBuilt;	// dialog constructed yet?
-	enum { STOPPED=0, PLAYING=1, PAUSED=2 };
-	S32 mMusicState;
-};
-
-extern LLOverlayBar* gOverlayBar;
-
-#endif
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index 988e801b61a12ca5f775bf27b3d669e72467ef1e..679b1bdcda6ebbdeac2f9b44116ddfc14e47ee59 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -120,269 +120,6 @@ BOOL LLDropTarget::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
 
 static LLDefaultChildRegistry::Register<LLDropTarget> r("drop_target");
 
-static LLRegisterPanelClassWrapper<LLPanelAvatarProfile> t_panel_profile("panel_profile");
-static LLRegisterPanelClassWrapper<LLPanelMyProfile> t_panel_my_profile("panel_my_profile");
-static LLRegisterPanelClassWrapper<LLPanelAvatarNotes> t_panel_notes("panel_notes");
-
-//-----------------------------------------------------------------------------
-// LLPanelAvatarNotes()
-//-----------------------------------------------------------------------------
-LLPanelAvatarNotes::LLPanelAvatarNotes()
-: LLPanelProfileTab()
-{
-
-}
-
-void LLPanelAvatarNotes::updateData()
-{
-	LLAvatarPropertiesProcessor::getInstance()->
-		sendAvatarNotesRequest(getAvatarId());
-}
-
-BOOL LLPanelAvatarNotes::postBuild()
-{
-	childSetCommitCallback("status_check", boost::bind(&LLPanelAvatarNotes::onCommitRights, this), NULL);
-	childSetCommitCallback("map_check", boost::bind(&LLPanelAvatarNotes::onCommitRights, this), NULL);
-	childSetCommitCallback("objects_check", boost::bind(&LLPanelAvatarNotes::onCommitRights, this), NULL);
-
-	childSetCommitCallback("add_friend", boost::bind(&LLPanelAvatarNotes::onAddFriendButtonClick, this),NULL);
-	childSetCommitCallback("im", boost::bind(&LLPanelAvatarNotes::onIMButtonClick, this), NULL);
-	childSetCommitCallback("call", boost::bind(&LLPanelAvatarNotes::onCallButtonClick, this), NULL);
-	childSetCommitCallback("teleport", boost::bind(&LLPanelAvatarNotes::onTeleportButtonClick, this), NULL);
-	childSetCommitCallback("share", boost::bind(&LLPanelAvatarNotes::onShareButtonClick, this), NULL);
-	childSetCommitCallback("show_on_map_btn", (boost::bind(
-				&LLPanelAvatarNotes::onMapButtonClick, this)), NULL);
-
-	LLTextEditor* te = getChild<LLTextEditor>("notes_edit");
-	te->setCommitCallback(boost::bind(&LLPanelAvatarNotes::onCommitNotes,this));
-	te->setCommitOnFocusLost(TRUE);
-
-	resetControls();
-	resetData();
-
-	LLVoiceClient::getInstance()->addObserver((LLVoiceClientStatusObserver*)this);
-
-	return TRUE;
-}
-
-void LLPanelAvatarNotes::onOpen(const LLSD& key)
-{
-	LLPanelProfileTab::onOpen(key);
-
-	fillRightsData();
-
-	//Disable "Add Friend" button for friends.
-	getChildView("add_friend")->setEnabled(!LLAvatarActions::isFriend(getAvatarId()));
-}
-
-void LLPanelAvatarNotes::fillRightsData()
-{
-	getChild<LLUICtrl>("status_check")->setValue(FALSE);
-	getChild<LLUICtrl>("map_check")->setValue(FALSE);
-	getChild<LLUICtrl>("objects_check")->setValue(FALSE);
-
-	const LLRelationship* relation = LLAvatarTracker::instance().getBuddyInfo(getAvatarId());
-	// If true - we are viewing friend's profile, enable check boxes and set values.
-	if(relation)
-	{
-		S32 rights = relation->getRightsGrantedTo();
-
-		getChild<LLUICtrl>("status_check")->setValue(LLRelationship::GRANT_ONLINE_STATUS & rights ? TRUE : FALSE);
-		getChild<LLUICtrl>("map_check")->setValue(LLRelationship::GRANT_MAP_LOCATION & rights ? TRUE : FALSE);
-		getChild<LLUICtrl>("objects_check")->setValue(LLRelationship::GRANT_MODIFY_OBJECTS & rights ? TRUE : FALSE);
-
-	}
-
-	enableCheckboxes(NULL != relation);
-}
-
-void LLPanelAvatarNotes::onCommitNotes()
-{
-	std::string notes = getChild<LLUICtrl>("notes_edit")->getValue().asString();
-	LLAvatarPropertiesProcessor::getInstance()-> sendNotes(getAvatarId(),notes);
-}
-
-void LLPanelAvatarNotes::rightsConfirmationCallback(const LLSD& notification,
-		const LLSD& response, S32 rights)
-{
-	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-	if (option == 0)
-	{
-		LLAvatarPropertiesProcessor::getInstance()->sendFriendRights(
-				getAvatarId(), rights);
-	}
-	else
-	{
-		getChild<LLUICtrl>("objects_check")->setValue(
-				getChild<LLUICtrl>("objects_check")->getValue().asBoolean() ? FALSE : TRUE);
-	}
-}
-
-void LLPanelAvatarNotes::confirmModifyRights(bool grant, S32 rights)
-{
-	LLSD args;
-	args["NAME"] = LLSLURL("agent", getAvatarId(), "displayname").getSLURLString();
-
-	if (grant)
-	{
-		LLNotificationsUtil::add("GrantModifyRights", args, LLSD(),
-				boost::bind(&LLPanelAvatarNotes::rightsConfirmationCallback, this,
-						_1, _2, rights));
-	}
-	else
-	{
-		LLNotificationsUtil::add("RevokeModifyRights", args, LLSD(),
-				boost::bind(&LLPanelAvatarNotes::rightsConfirmationCallback, this,
-						_1, _2, rights));
-	}
-}
-
-void LLPanelAvatarNotes::onCommitRights()
-{
-	const LLRelationship* buddy_relationship =
-		LLAvatarTracker::instance().getBuddyInfo(getAvatarId());
-
-	if (NULL == buddy_relationship)
-	{
-		// Lets have a warning log message instead of having a crash. EXT-4947.
-		llwarns << "Trying to modify rights for non-friend avatar. Skipped." << llendl;
-		return;
-	}
-
-
-	S32 rights = 0;
-
-	if(getChild<LLUICtrl>("status_check")->getValue().asBoolean())
-		rights |= LLRelationship::GRANT_ONLINE_STATUS;
-	if(getChild<LLUICtrl>("map_check")->getValue().asBoolean())
-		rights |= LLRelationship::GRANT_MAP_LOCATION;
-	if(getChild<LLUICtrl>("objects_check")->getValue().asBoolean())
-		rights |= LLRelationship::GRANT_MODIFY_OBJECTS;
-
-	bool allow_modify_objects = getChild<LLUICtrl>("objects_check")->getValue().asBoolean();
-
-	// if modify objects checkbox clicked
-	if (buddy_relationship->isRightGrantedTo(
-			LLRelationship::GRANT_MODIFY_OBJECTS) != allow_modify_objects)
-	{
-		confirmModifyRights(allow_modify_objects, rights);
-	}
-	// only one checkbox can trigger commit, so store the rest of rights
-	else
-	{
-		LLAvatarPropertiesProcessor::getInstance()->sendFriendRights(
-						getAvatarId(), rights);
-	}
-}
-
-void LLPanelAvatarNotes::processProperties(void* data, EAvatarProcessorType type)
-{
-	if(APT_NOTES == type)
-	{
-		LLAvatarNotes* avatar_notes = static_cast<LLAvatarNotes*>(data);
-		if(avatar_notes && getAvatarId() == avatar_notes->target_id)
-		{
-			getChild<LLUICtrl>("notes_edit")->setValue(avatar_notes->notes);
-			getChildView("notes edit")->setEnabled(true);
-
-			LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this);
-		}
-	}
-}
-
-void LLPanelAvatarNotes::resetData()
-{
-	getChild<LLUICtrl>("notes_edit")->setValue(LLStringUtil::null);
-	// Default value is TRUE
-	getChild<LLUICtrl>("status_check")->setValue(TRUE);
-}
-
-void LLPanelAvatarNotes::resetControls()
-{
-	//Disable "Add Friend" button for friends.
-	getChildView("add_friend")->setEnabled(TRUE);
-
-	enableCheckboxes(false);
-}
-
-void LLPanelAvatarNotes::onAddFriendButtonClick()
-{
-	LLAvatarActions::requestFriendshipDialog(getAvatarId());
-}
-
-void LLPanelAvatarNotes::onIMButtonClick()
-{
-	LLAvatarActions::startIM(getAvatarId());
-}
-
-void LLPanelAvatarNotes::onTeleportButtonClick()
-{
-	LLAvatarActions::offerTeleport(getAvatarId());
-}
-
-void LLPanelAvatarNotes::onCallButtonClick()
-{
-	LLAvatarActions::startCall(getAvatarId());
-}
-
-void LLPanelAvatarNotes::onShareButtonClick()
-{
-	//*TODO not implemented.
-}
-
-void LLPanelAvatarNotes::enableCheckboxes(bool enable)
-{
-	getChildView("status_check")->setEnabled(enable);
-	getChildView("map_check")->setEnabled(enable);
-	getChildView("objects_check")->setEnabled(enable);
-}
-
-LLPanelAvatarNotes::~LLPanelAvatarNotes()
-{
-	if(getAvatarId().notNull())
-	{
-		LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
-	}
-
-	if(LLVoiceClient::instanceExists())
-	{
-		LLVoiceClient::getInstance()->removeObserver((LLVoiceClientStatusObserver*)this);
-	}
-}
-
-// virtual, called by LLAvatarTracker
-void LLPanelAvatarNotes::changed(U32 mask)
-{
-	getChildView("teleport")->setEnabled(LLAvatarTracker::instance().isBuddyOnline(getAvatarId()));
-
-	// update rights to avoid have checkboxes enabled when friendship is terminated. EXT-4947.
-	fillRightsData();
-}
-
-// virtual
-void LLPanelAvatarNotes::onChange(EStatusType status, const std::string &channelURI, bool proximal)
-{
-	if(status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL)
-	{
-		return;
-	}
-
-	getChildView("call")->setEnabled(LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking());
-}
-
-void LLPanelAvatarNotes::setAvatarId(const LLUUID& id)
-{
-	if(id.notNull())
-	{
-		if(getAvatarId().notNull())
-		{
-			LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
-		}
-		LLPanelProfileTab::setAvatarId(id);
-		LLAvatarTracker::instance().addParticularFriendObserver(getAvatarId(), this);
-	}
-}
-
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
@@ -461,449 +198,3 @@ void LLPanelProfileTab::updateButtons()
 		|| gAgent.isGodlike();
 	getChildView("show_on_map_btn")->setEnabled(enable_map_btn);
 }
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-bool enable_god()
-{
-	return gAgent.isGodlike();
-}
-
-LLPanelAvatarProfile::LLPanelAvatarProfile()
-: LLPanelProfileTab()
-{
-}
-
-BOOL LLPanelAvatarProfile::postBuild()
-{
-	childSetCommitCallback("see_profile_btn",(boost::bind(&LLPanelAvatarProfile::onSeeProfileBtnClick,this)),NULL);
-	childSetCommitCallback("add_friend",(boost::bind(&LLPanelAvatarProfile::onAddFriendButtonClick,this)),NULL);
-	childSetCommitCallback("im",(boost::bind(&LLPanelAvatarProfile::onIMButtonClick,this)),NULL);
-	childSetCommitCallback("call",(boost::bind(&LLPanelAvatarProfile::onCallButtonClick,this)),NULL);
-	childSetCommitCallback("teleport",(boost::bind(&LLPanelAvatarProfile::onTeleportButtonClick,this)),NULL);
-	childSetCommitCallback("share",(boost::bind(&LLPanelAvatarProfile::onShareButtonClick,this)),NULL);
-	childSetCommitCallback("show_on_map_btn", (boost::bind(
-			&LLPanelAvatarProfile::onMapButtonClick, this)), NULL);
-
-	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
-	registrar.add("Profile.ShowOnMap",  boost::bind(&LLPanelAvatarProfile::onMapButtonClick, this));
-	registrar.add("Profile.Pay",  boost::bind(&LLPanelAvatarProfile::pay, this));
-	registrar.add("Profile.Share", boost::bind(&LLPanelAvatarProfile::share, this));
-	registrar.add("Profile.BlockUnblock", boost::bind(&LLPanelAvatarProfile::toggleBlock, this));
-	registrar.add("Profile.Kick", boost::bind(&LLPanelAvatarProfile::kick, this));
-	registrar.add("Profile.Freeze", boost::bind(&LLPanelAvatarProfile::freeze, this));
-	registrar.add("Profile.Unfreeze", boost::bind(&LLPanelAvatarProfile::unfreeze, this));
-	registrar.add("Profile.CSR", boost::bind(&LLPanelAvatarProfile::csr, this));
-
-	LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable;
-	enable.add("Profile.EnableShowOnMap", boost::bind(&LLPanelAvatarProfile::enableShowOnMap, this));
-	enable.add("Profile.EnableGod", boost::bind(&enable_god));
-	enable.add("Profile.EnableBlock", boost::bind(&LLPanelAvatarProfile::enableBlock, this));
-	enable.add("Profile.EnableUnblock", boost::bind(&LLPanelAvatarProfile::enableUnblock, this));
-
-	LLToggleableMenu* profile_menu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_profile_overflow.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
-	getChild<LLMenuButton>("overflow_btn")->setMenu(profile_menu, LLMenuButton::MP_TOP_RIGHT);
-
-	LLVoiceClient::getInstance()->addObserver((LLVoiceClientStatusObserver*)this);
-
-	resetControls();
-	resetData();
-
-	return TRUE;
-}
-
-void LLPanelAvatarProfile::onOpen(const LLSD& key)
-{
-	LLPanelProfileTab::onOpen(key);
-
-	mGroups.clear();
-
-	//Disable "Add Friend" button for friends.
-	getChildView("add_friend")->setEnabled(!LLAvatarActions::isFriend(getAvatarId()));
-}
-
-void LLPanelAvatarProfile::updateData()
-{
-	if (getAvatarId().notNull())
-	{
-		LLAvatarPropertiesProcessor::getInstance()->
-			sendAvatarPropertiesRequest(getAvatarId());
-		LLAvatarPropertiesProcessor::getInstance()->
-			sendAvatarGroupsRequest(getAvatarId());
-	}
-}
-
-void LLPanelAvatarProfile::resetControls()
-{
-	getChildView("status_panel")->setVisible( true);
-	getChildView("profile_buttons_panel")->setVisible( true);
-	getChildView("title_groups_text")->setVisible( true);
-	getChildView("sl_groups")->setVisible( true);
-	getChildView("add_friend")->setEnabled(true);
-
-	getChildView("status_me_panel")->setVisible( false);
-	getChildView("profile_me_buttons_panel")->setVisible( false);
-	getChildView("account_actions_panel")->setVisible( false);
-}
-
-void LLPanelAvatarProfile::resetData()
-{
-	mGroups.clear();
-	getChild<LLUICtrl>("2nd_life_pic")->setValue(LLUUID::null);
-	getChild<LLUICtrl>("real_world_pic")->setValue(LLUUID::null);
-	getChild<LLUICtrl>("online_status")->setValue(LLStringUtil::null);
-	getChild<LLUICtrl>("status_message")->setValue(LLStringUtil::null);
-	getChild<LLUICtrl>("sl_description_edit")->setValue(LLStringUtil::null);
-	getChild<LLUICtrl>("fl_description_edit")->setValue(LLStringUtil::null);
-	getChild<LLUICtrl>("sl_groups")->setValue(LLStringUtil::null);
-	getChild<LLUICtrl>("homepage_edit")->setValue(LLStringUtil::null);
-	getChild<LLUICtrl>("register_date")->setValue(LLStringUtil::null);
-	getChild<LLUICtrl>("acc_status_text")->setValue(LLStringUtil::null);
-	getChild<LLUICtrl>("partner_text")->setValue(LLStringUtil::null);
-}
-
-void LLPanelAvatarProfile::processProperties(void* data, EAvatarProcessorType type)
-{
-	if(APT_PROPERTIES == type)
-	{
-		const LLAvatarData* avatar_data = static_cast<const LLAvatarData*>(data);
-		if(avatar_data && getAvatarId() == avatar_data->avatar_id)
-		{
-			processProfileProperties(avatar_data);
-		}
-	}
-	else if(APT_GROUPS == type)
-	{
-		LLAvatarGroups* avatar_groups = static_cast<LLAvatarGroups*>(data);
-		if(avatar_groups && getAvatarId() == avatar_groups->avatar_id)
-		{
-			processGroupProperties(avatar_groups);
-		}
-	}
-}
-
-void LLPanelAvatarProfile::processProfileProperties(const LLAvatarData* avatar_data)
-{
-	fillCommonData(avatar_data);
-
-	fillPartnerData(avatar_data);
-
-	fillAccountStatus(avatar_data);
-}
-
-void LLPanelAvatarProfile::processGroupProperties(const LLAvatarGroups* avatar_groups)
-{
-	// *NOTE dzaporozhan
-	// Group properties may arrive in two callbacks, we need to save them across
-	// different calls. We can't do that in textbox as textbox may change the text.
-
-	LLAvatarGroups::group_list_t::const_iterator it = avatar_groups->group_list.begin();
-	const LLAvatarGroups::group_list_t::const_iterator it_end = avatar_groups->group_list.end();
-
-	for(; it_end != it; ++it)
-	{
-		LLAvatarGroups::LLGroupData group_data = *it;
-		mGroups[group_data.group_name] = group_data.group_id;
-	}
-
-	// Creating string, containing group list
-	std::string groups = "";
-	for (group_map_t::iterator it = mGroups.begin(); it != mGroups.end(); ++it)
-	{
-		if (it != mGroups.begin())
-			groups += ", ";
-
-		std::string group_name = LLURI::escape(it->first);
-		std::string group_url= it->second.notNull()
-				? "[secondlife:///app/group/" + it->second.asString() + "/about " + group_name + "]"
-						: getString("no_group_text");
-
-		groups += group_url;
-	}
-
-	getChild<LLUICtrl>("sl_groups")->setValue(groups);
-}
-
-static void got_full_name_callback( LLHandle<LLPanel> profile_panel_handle, const std::string& full_name )
-{
-	if (profile_panel_handle.isDead() ) return;
-
-	LLPanelAvatarProfile* profile_panel = dynamic_cast<LLPanelAvatarProfile*>(profile_panel_handle.get());
-	if ( ! profile_panel ) return;
-
-	LLStringUtil::format_map_t args;
-
-	std::string name;
-	if (LLAvatarNameCache::useDisplayNames())
-	{
-		name = LLCacheName::buildUsername(full_name);
-	}
-	else
-	{
-		name = full_name;
-	}
-
-	args["[NAME]"] = name;
-
-	std::string linden_name = profile_panel->getString("name_text_args", args);
-	profile_panel->getChild<LLUICtrl>("name_descr_text")->setValue(linden_name);
-}
-
-void LLPanelAvatarProfile::onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
-{
-	LLStringUtil::format_map_t args;
-	args["[DISPLAY_NAME]"] = av_name.mDisplayName;
-
-	std::string display_name = getString("display_name_text_args", args);
-	getChild<LLUICtrl>("display_name_descr_text")->setValue(display_name);
-}
-
-void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)
-{
-	//remove avatar id from cache to get fresh info
-	LLAvatarIconIDCache::getInstance()->remove(avatar_data->avatar_id);
-
-	LLStringUtil::format_map_t args;
-	{
-		std::string birth_date = LLTrans::getString("AvatarBirthDateFormat");
-		LLStringUtil::format(birth_date, LLSD().with("datetime", (S32) avatar_data->born_on.secondsSinceEpoch()));
-		args["[REG_DATE]"] = birth_date;
-	}
-
-	// ask (asynchronously) for the avatar name
-	LLHandle<LLPanel> profile_panel_handle = getHandle();
-	std::string full_name;
-	if (gCacheName->getFullName(avatar_data->agent_id, full_name))
-	{
-		// name in cache, call callback directly
-		got_full_name_callback( profile_panel_handle, full_name );
-	}
-	else
-	{
-		// not in cache, lookup name 
-		gCacheName->get(avatar_data->agent_id, false, boost::bind( got_full_name_callback, profile_panel_handle, _2 ));
-	}
-
-	// get display name
-	LLAvatarNameCache::get(avatar_data->avatar_id,
-		boost::bind(&LLPanelAvatarProfile::onNameCache, this, _1, _2));
-
-	args["[AGE]"] = LLDateUtil::ageFromDate( avatar_data->born_on, LLDate::now());
-	std::string register_date = getString("RegisterDateFormat", args);
-	getChild<LLUICtrl>("register_date")->setValue(register_date );
-	getChild<LLUICtrl>("sl_description_edit")->setValue(avatar_data->about_text);
-	getChild<LLUICtrl>("fl_description_edit")->setValue(avatar_data->fl_about_text);
-	getChild<LLUICtrl>("2nd_life_pic")->setValue(avatar_data->image_id);
-	getChild<LLUICtrl>("real_world_pic")->setValue(avatar_data->fl_image_id);
-	getChild<LLUICtrl>("homepage_edit")->setValue(avatar_data->profile_url);
-
-	// Hide home page textbox if no page was set to fix "homepage URL appears clickable without URL - EXT-4734"
-	getChildView("homepage_edit")->setVisible( !avatar_data->profile_url.empty());
-}
-
-void LLPanelAvatarProfile::fillPartnerData(const LLAvatarData* avatar_data)
-{
-	LLTextBox* partner_text = getChild<LLTextBox>("partner_text");
-	if (avatar_data->partner_id.notNull())
-	{
-		partner_text->setText(LLSLURL("agent", avatar_data->partner_id, "inspect").getSLURLString());
-	}
-	else
-	{
-		partner_text->setText(getString("no_partner_text"));
-	}
-}
-
-void LLPanelAvatarProfile::fillAccountStatus(const LLAvatarData* avatar_data)
-{
-	LLStringUtil::format_map_t args;
-	args["[ACCTTYPE]"] = LLAvatarPropertiesProcessor::accountType(avatar_data);
-	args["[PAYMENTINFO]"] = LLAvatarPropertiesProcessor::paymentInfo(avatar_data);
-	// *NOTE: AVATAR_AGEVERIFIED not currently getting set in 
-	// dataserver/lldataavatar.cpp for privacy considerations
-	args["[AGEVERIFICATION]"] = "";
-	std::string caption_text = getString("CaptionTextAcctInfo", args);
-	getChild<LLUICtrl>("acc_status_text")->setValue(caption_text);
-}
-
-void LLPanelAvatarProfile::pay()
-{
-	LLAvatarActions::pay(getAvatarId());
-}
-
-void LLPanelAvatarProfile::share()
-{
-	LLAvatarActions::share(getAvatarId());
-}
-
-void LLPanelAvatarProfile::toggleBlock()
-{
-	LLAvatarActions::toggleBlock(getAvatarId());
-}
-
-bool LLPanelAvatarProfile::enableShowOnMap()
-{
-	bool is_buddy_online = LLAvatarTracker::instance().isBuddyOnline(getAvatarId());
-
-	bool enable_map_btn = (is_buddy_online && is_agent_mappable(getAvatarId()))
-		|| gAgent.isGodlike();
-	return enable_map_btn;
-}
-
-bool LLPanelAvatarProfile::enableBlock()
-{
-	return LLAvatarActions::canBlock(getAvatarId()) && !LLAvatarActions::isBlocked(getAvatarId());
-}
-
-bool LLPanelAvatarProfile::enableUnblock()
-{
-	return LLAvatarActions::isBlocked(getAvatarId());
-}
-
-void LLPanelAvatarProfile::kick()
-{
-	LLAvatarActions::kick(getAvatarId());
-}
-
-void LLPanelAvatarProfile::freeze()
-{
-	LLAvatarActions::freeze(getAvatarId());
-}
-
-void LLPanelAvatarProfile::unfreeze()
-{
-	LLAvatarActions::unfreeze(getAvatarId());
-}
-
-void LLPanelAvatarProfile::csr()
-{
-	std::string name;
-	gCacheName->getFullName(getAvatarId(), name);
-	LLAvatarActions::csr(getAvatarId(), name);
-}
-
-void LLPanelAvatarProfile::onAddFriendButtonClick()
-{
-	LLAvatarActions::requestFriendshipDialog(getAvatarId());
-}
-
-void LLPanelAvatarProfile::onSeeProfileBtnClick()
-{
-	LLAvatarActions::showProfile(getAvatarId());
-}
-
-void LLPanelAvatarProfile::onIMButtonClick()
-{
-	LLAvatarActions::startIM(getAvatarId());
-}
-
-void LLPanelAvatarProfile::onTeleportButtonClick()
-{
-	LLAvatarActions::offerTeleport(getAvatarId());
-}
-
-void LLPanelAvatarProfile::onCallButtonClick()
-{
-	LLAvatarActions::startCall(getAvatarId());
-}
-
-void LLPanelAvatarProfile::onShareButtonClick()
-{
-	//*TODO not implemented
-}
-
-LLPanelAvatarProfile::~LLPanelAvatarProfile()
-{
-	if(getAvatarId().notNull())
-	{
-		LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
-	}
-
-	if(LLVoiceClient::instanceExists())
-	{
-		LLVoiceClient::getInstance()->removeObserver((LLVoiceClientStatusObserver*)this);
-	}
-}
-
-// virtual, called by LLAvatarTracker
-void LLPanelAvatarProfile::changed(U32 mask)
-{
-	getChildView("teleport")->setEnabled(LLAvatarTracker::instance().isBuddyOnline(getAvatarId()));
-}
-
-// virtual
-void LLPanelAvatarProfile::onChange(EStatusType status, const std::string &channelURI, bool proximal)
-{
-	if(status == STATUS_JOINING || status == STATUS_LEFT_CHANNEL)
-	{
-		return;
-	}
-
-	getChildView("call")->setEnabled(LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking());
-}
-
-void LLPanelAvatarProfile::setAvatarId(const LLUUID& id)
-{
-	if(id.notNull())
-	{
-		if(getAvatarId().notNull())
-		{
-			LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this);
-		}
-		LLPanelProfileTab::setAvatarId(id);
-		LLAvatarTracker::instance().addParticularFriendObserver(getAvatarId(), this);
-	}
-}
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-LLPanelMyProfile::LLPanelMyProfile()
-: LLPanelAvatarProfile()
-{
-}
-
-BOOL LLPanelMyProfile::postBuild()
-{
-	LLPanelAvatarProfile::postBuild();
-
-	childSetCommitCallback("status_me_message_text", boost::bind(&LLPanelMyProfile::onStatusMessageChanged, this), NULL);
-
-	resetControls();
-	resetData();
-
-	return TRUE;
-}
-
-void LLPanelMyProfile::onOpen(const LLSD& key)
-{
-	LLPanelProfileTab::onOpen(key);
-}
-
-void LLPanelMyProfile::processProfileProperties(const LLAvatarData* avatar_data)
-{
-	fillCommonData(avatar_data);
-
-	fillPartnerData(avatar_data);
-
-	fillAccountStatus(avatar_data);
-}
-
-void LLPanelMyProfile::resetControls()
-{
-	getChildView("status_panel")->setVisible( false);
-	getChildView("profile_buttons_panel")->setVisible( false);
-	getChildView("title_groups_text")->setVisible( false);
-	getChildView("sl_groups")->setVisible( false);
-	getChildView("status_me_panel")->setVisible( true);
-	getChildView("profile_me_buttons_panel")->setVisible( true);
-}
-
-
-void LLPanelMyProfile::onStatusMessageChanged()
-{
-	updateData();
-}
diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h
index e95441cd581e2bbc071061904187ee18a55e0a94..e33a850cfa4a908926d7392b1e9faa58ede43bac 100644
--- a/indra/newview/llpanelavatar.h
+++ b/indra/newview/llpanelavatar.h
@@ -36,14 +36,8 @@
 class LLComboBox;
 class LLLineEditor;
 
-enum EOnlineStatus
-{
-	ONLINE_STATUS_NO      = 0,
-	ONLINE_STATUS_YES     = 1
-};
-
 /**
-* Base class for any Profile View or My Profile Panel.
+* Base class for any Profile View.
 */
 class LLPanelProfileTab
 	: public LLPanel
@@ -111,187 +105,4 @@ class LLPanelProfileTab
 	LLUUID mAvatarId;
 };
 
-/**
-* Panel for displaying Avatar's first and second life related info.
-*/
-class LLPanelAvatarProfile
-	: public LLPanelProfileTab
-	, public LLFriendObserver
-	, public LLVoiceClientStatusObserver
-{
-public:
-	LLPanelAvatarProfile();
-	/*virtual*/ ~LLPanelAvatarProfile();
-
-	/*virtual*/ void onOpen(const LLSD& key);
-
-	/**
-	 * LLFriendObserver trigger
-	 */
-	virtual void changed(U32 mask);
-
-	// Implements LLVoiceClientStatusObserver::onChange() to enable the call
-	// button when voice is available
-	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
-
-	/*virtual*/ void setAvatarId(const LLUUID& id);
-
-	/**
-	 * Processes data received from server.
-	 */
-	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
-
-	/*virtual*/ BOOL postBuild();
-
-	/*virtual*/ void updateData();
-
-	/*virtual*/ void resetControls();
-
-	/*virtual*/ void resetData();
-
-protected:
-
-	/**
-	 * Process profile related data received from server.
-	 */
-	virtual void processProfileProperties(const LLAvatarData* avatar_data);
-
-	/**
-	 * Processes group related data received from server.
-	 */
-	virtual void processGroupProperties(const LLAvatarGroups* avatar_groups);
-
-	/**
-	 * Fills common for Avatar profile and My Profile fields.
-	 */
-	virtual void fillCommonData(const LLAvatarData* avatar_data);
-
-	/**
-	 * Fills partner data.
-	 */
-	virtual void fillPartnerData(const LLAvatarData* avatar_data);
-
-	/**
-	 * Fills account status.
-	 */
-	virtual void fillAccountStatus(const LLAvatarData* avatar_data);
-
-	/**
-	 * Opens "Pay Resident" dialog.
-	 */
-	void pay();
-
-	/**
-	 * opens inventory and IM for sharing items
-	 */
-	void share();
-
-	/**
-	 * Add/remove resident to/from your block list.
-	 */
-	void toggleBlock();
-
-	void kick();
-	void freeze();
-	void unfreeze();
-	void csr();
-	
-	bool enableShowOnMap();
-	bool enableBlock();
-	bool enableUnblock();
-	bool enableGod();
-
-	void onSeeProfileBtnClick();
-	void onAddFriendButtonClick();
-	void onIMButtonClick();
-	void onCallButtonClick();
-	void onTeleportButtonClick();
-	void onShareButtonClick();
-
-private:
-	void onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
-
-	typedef std::map< std::string,LLUUID>	group_map_t;
-	group_map_t 			mGroups;
-};
-
-/**
- * Panel for displaying own first and second life related info.
- */
-class LLPanelMyProfile
-	: public LLPanelAvatarProfile
-{
-public:
-	LLPanelMyProfile();
-
-	/*virtual*/ BOOL postBuild();
-
-protected:
-
-	/*virtual*/ void onOpen(const LLSD& key);
-
-	/*virtual*/ void processProfileProperties(const LLAvatarData* avatar_data);
-
-	/*virtual*/ void resetControls();
-
-protected:
-	void onStatusMessageChanged();
-};
-
-/**
- * Panel for displaying Avatar's notes and modifying friend's rights.
- */
-class LLPanelAvatarNotes 
-	: public LLPanelProfileTab
-	, public LLFriendObserver
-	, public LLVoiceClientStatusObserver
-{
-public:
-	LLPanelAvatarNotes();
-	/*virtual*/ ~LLPanelAvatarNotes();
-
-	virtual void setAvatarId(const LLUUID& id);
-
-	/** 
-	 * LLFriendObserver trigger
-	 */
-	virtual void changed(U32 mask);
-
-	// Implements LLVoiceClientStatusObserver::onChange() to enable the call
-	// button when voice is available
-	/*virtual*/ void onChange(EStatusType status, const std::string &channelURI, bool proximal);
-
-	/*virtual*/ void onOpen(const LLSD& key);
-
-	/*virtual*/ BOOL postBuild();
-
-	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
-
-	/*virtual*/ void updateData();
-
-protected:
-
-	/*virtual*/ void resetControls();
-
-	/*virtual*/ void resetData();
-
-	/**
-	 * Fills rights data for friends.
-	 */
-	void fillRightsData();
-
-	void rightsConfirmationCallback(const LLSD& notification,
-			const LLSD& response, S32 rights);
-	void confirmModifyRights(bool grant, S32 rights);
-	void onCommitRights();
-	void onCommitNotes();
-
-	void onAddFriendButtonClick();
-	void onIMButtonClick();
-	void onCallButtonClick();
-	void onTeleportButtonClick();
-	void onShareButtonClick();
-	void enableCheckboxes(bool enable);
-};
-
 #endif // LL_LLPANELAVATAR_H
diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp
index 81e199d85b53eb2ebe8f118676452f1a6ea8058a..5c85ec438cb4e059a462a5b6944f480fb05d40f9 100644
--- a/indra/newview/llpanelblockedlist.cpp
+++ b/indra/newview/llpanelblockedlist.cpp
@@ -37,7 +37,7 @@
 
 // project include
 #include "llfloateravatarpicker.h"
-#include "llsidetray.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llsidetraypanelcontainer.h"
 
 static LLRegisterPanelClassWrapper<LLPanelBlockedList> t_panel_blocked_list("panel_block_list_sidetray");
@@ -99,7 +99,7 @@ void LLPanelBlockedList::selectBlocked(const LLUUID& mute_id)
 
 void LLPanelBlockedList::showPanelAndSelect(const LLUUID& idToSelect)
 {
-	LLSideTray::getInstance()->showPanel("panel_block_list_sidetray", LLSD().with(BLOCKED_PARAM_NAME, idToSelect));
+	LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD().with(BLOCKED_PARAM_NAME, idToSelect));
 }
 
 
diff --git a/indra/newview/llpaneleditwearable.cpp b/indra/newview/llpaneleditwearable.cpp
index b73d97e4c41f13d8fb639a65befb2fcc545eecc6..03404e816b11a2581e81707c1a39bf563787e36f 100644
--- a/indra/newview/llpaneleditwearable.cpp
+++ b/indra/newview/llpaneleditwearable.cpp
@@ -356,9 +356,9 @@ LLEditWearableDictionary::ColorSwatchCtrls::ColorSwatchCtrls()
 
 LLEditWearableDictionary::TextureCtrls::TextureCtrls()
 {
-        addEntry ( TEX_HEAD_BODYPAINT,  new PickerControlEntry (TEX_HEAD_BODYPAINT,  "Head Tattoos", LLUUID::null, TRUE ));
-        addEntry ( TEX_UPPER_BODYPAINT, new PickerControlEntry (TEX_UPPER_BODYPAINT, "Upper Tattoos", LLUUID::null, TRUE ));
-        addEntry ( TEX_LOWER_BODYPAINT, new PickerControlEntry (TEX_LOWER_BODYPAINT, "Lower Tattoos", LLUUID::null, TRUE ));
+        addEntry ( TEX_HEAD_BODYPAINT,  new PickerControlEntry (TEX_HEAD_BODYPAINT,  "Head", LLUUID::null, TRUE ));
+        addEntry ( TEX_UPPER_BODYPAINT, new PickerControlEntry (TEX_UPPER_BODYPAINT, "Upper Body", LLUUID::null, TRUE ));
+        addEntry ( TEX_LOWER_BODYPAINT, new PickerControlEntry (TEX_LOWER_BODYPAINT, "Lower Body", LLUUID::null, TRUE ));
         addEntry ( TEX_HAIR, new PickerControlEntry (TEX_HAIR, "Texture", LLUUID( gSavedSettings.getString( "UIImgDefaultHairUUID" ) ), FALSE ));
         addEntry ( TEX_EYES_IRIS, new PickerControlEntry (TEX_EYES_IRIS, "Iris", LLUUID( gSavedSettings.getString( "UIImgDefaultEyesUUID" ) ), FALSE ));
         addEntry ( TEX_UPPER_SHIRT, new PickerControlEntry (TEX_UPPER_SHIRT, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultShirtUUID" ) ), FALSE ));
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 76b85d5bec3ab46fb70a49505ae529374c97858c..ae217958f0e90fa111ce595f64c29637531b23b9 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -29,6 +29,7 @@
 
 // Library includes
 #include "llbutton.h"
+#include "llfloatersidepanelcontainer.h"
 #include "lltabcontainer.h"
 #include "lltextbox.h"
 #include "lluictrlfactory.h"
@@ -49,7 +50,6 @@
 #include "llpanelgroupnotices.h"
 #include "llpanelgroupgeneral.h"
 
-#include "llsidetray.h"
 #include "llaccordionctrltab.h"
 #include "llaccordionctrl.h"
 
@@ -597,7 +597,7 @@ void LLPanelGroup::showNotice(const std::string& subject,
 //static
 void LLPanelGroup::refreshCreatedGroup(const LLUUID& group_id)
 {
-	LLPanelGroup* panel = LLSideTray::getInstance()->getPanel<LLPanelGroup>("panel_group_info_sidetray");
+	LLPanelGroup* panel = LLFloaterSidePanelContainer::getPanel<LLPanelGroup>("people", "panel_group_info_sidetray");
 	if(!panel)
 		return;
 	panel->setGroupID(group_id);
@@ -612,7 +612,7 @@ void LLPanelGroup::showNotice(const std::string& subject,
 					   const std::string& inventory_name,
 					   LLOfferInfo* inventory_offer)
 {
-	LLPanelGroup* panel = LLSideTray::getInstance()->getPanel<LLPanelGroup>("panel_group_info_sidetray");
+	LLPanelGroup* panel = LLFloaterSidePanelContainer::getPanel<LLPanelGroup>("people", "panel_group_info_sidetray");
 	if(!panel)
 		return;
 
diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp
index eddd6e554dd0fe04fd230ea7fb415f8970427af0..363443646d567d5c51c6c97b3e40df4b78978efa 100644
--- a/indra/newview/llpanelgrouplandmoney.cpp
+++ b/indra/newview/llpanelgrouplandmoney.cpp
@@ -1062,7 +1062,7 @@ void LLGroupMoneyDetailsTabEventHandler::processReply(LLMessageSystem* msg,
 
 	// We don't do time zone corrections of the calculated number of seconds
 	// because we don't have a full time stamp, only a date.
-	substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%A %b %d, %Y", start_date);
+	substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%Y-%m-%d", start_date);
 	LLStringUtil::format (time_str, substitution);
 
 	if ( interval_days != mImplementationp->mIntervalLength || 
@@ -1217,7 +1217,7 @@ void LLGroupMoneySalesTabEventHandler::processReply(LLMessageSystem* msg,
 
 		// We don't do time zone corrections of the calculated number of seconds
 		// because we don't have a full time stamp, only a date.
-		substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%A %b %d, %Y", start_date);
+		substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%Y-%m-%d", start_date);
 		LLStringUtil::format (time_str, substitution);
 
 		text = time_str + "\n\n";
@@ -1431,22 +1431,23 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg,
 	LLSD substitution;
 	// We don't do time zone corrections of the calculated number of seconds
 	// because we don't have a full time stamp, only a date.
-	substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%m/%d/%Y", start_date);
+	substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%Y-%m-%d", start_date);
 	LLStringUtil::format (time_str, substitution);
 
 	text.append(time_str);
+	text.append(".  ");
 
 	if (current_interval == 0)
 	{
 		text.append(LLTrans::getString("NextStipendDay"));
 
 		time_str = date_format_str;
-		substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%m/%d/%Y", next_stipend_date);
+		substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%Y-%m-%d", next_stipend_date);
 		LLStringUtil::format (time_str, substitution);
 
 		text.append(time_str);
-		text.append("\n\n");
-		text.append(llformat("%-24sL$%6d\n", LLTrans::getString("GroupMoneyBalance").c_str(), balance ));
+		text.append(".\n\n");
+		text.append(llformat("%-23sL$%6d\n", LLTrans::getString("GroupMoneyBalance").c_str(), balance ));
 		text.append(1, '\n');
 	}
 
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index e370f2f622cdd387615bbde402028852222ee033..0295ad151f4b7f733bda7237a1be8703023578d0 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -40,7 +40,6 @@
 #include "llparticipantlist.h"
 #include "llimview.h"
 #include "llvoicechannel.h"
-#include "llsidetray.h"
 #include "llspeakers.h"
 #include "lltrans.h"
 
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index a9cc247d1b81ca7a728c0874c2ea9f3fff6091c0..c7454e85a91d82929c11adffd9256ff2c645a32d 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -42,6 +42,7 @@
 #include "llagentui.h"
 #include "llcallbacklist.h"
 #include "lldndbutton.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfloaterworldmap.h"
 #include "llfolderviewitem.h"
 #include "llinventorymodelbackgroundfetch.h"
@@ -51,7 +52,6 @@
 #include "llmenubutton.h"
 #include "llplacesinventorybridge.h"
 #include "llplacesinventorypanel.h"
-#include "llsidetray.h"
 #include "lltoggleablemenu.h"
 #include "llviewermenu.h"
 #include "llviewerregion.h"
@@ -367,7 +367,7 @@ void LLLandmarksPanel::onSelectorButtonClicked()
 		key["type"] = "landmark";
 		key["id"] = listenerp->getUUID();
 
-		LLSideTray::getInstance()->showPanel("panel_places", key);
+		LLFloaterSidePanelContainer::showPanel("places", key);
 	}
 }
 
@@ -786,7 +786,7 @@ void LLLandmarksPanel::onAddAction(const LLSD& userdata) const
 		}
 		else
 		{
-			LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark"));
+			LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
 		}
 	} 
 	else if ("category" == command_name)
@@ -1309,7 +1309,13 @@ void LLLandmarksPanel::doProcessParcelInfo(LLLandmark* landmark,
 	landmark->getGlobalPos(landmark_global_pos);
 
 	// let's toggle pick panel into  panel places
-	LLPanel* panel_places =  LLSideTray::getInstance()->getPanel("panel_places");//-> sidebar_places
+	LLPanel* panel_places = NULL;
+	LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>("places");
+	if (floaterp)
+	{
+		panel_places = floaterp->findChild<LLPanel>("main_panel");
+	}
+
 	if (!panel_places)
 	{
 		llassert(NULL != panel_places);
@@ -1393,10 +1399,6 @@ static void filter_list(LLPlacesInventoryPanel* inventory_list, const std::strin
 		inventory_list->restoreFolderState();
 	}
 
-	// Open the immediate children of the root folder, since those
-	// are invisible in the UI and thus must always be open.
-	inventory_list->getRootFolder()->openTopLevelFolders();
-
 	if (inventory_list->getFilterSubString().empty() && string.empty())
 	{
 		// current filter and new filter empty, do nothing
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index db7d836799c4d61d040437c2cfb217c185f82f4d..058d1ad6bc91433e9e8f656396438753f60bac9c 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -154,10 +154,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
 	}
 	updateLocationCombo(false);
 
-	LLUICtrl& mode_combo = getChildRef<LLUICtrl>("mode_combo");
-	mode_combo.setValue(gSavedSettings.getString("SessionSettingsFile"));
-	mode_combo.setCommitCallback(boost::bind(&LLPanelLogin::onModeChange, this, getChild<LLUICtrl>("mode_combo")->getValue(), _2));
-
 	LLComboBox* server_choice_combo = sInstance->getChild<LLComboBox>("server_combo");
 	server_choice_combo->setCommitCallback(onSelectServer, NULL);
 	server_choice_combo->setFocusLostCallback(boost::bind(onServerComboLostFocus, _1));
@@ -287,15 +283,15 @@ LLPanelLogin::~LLPanelLogin()
 // virtual
 void LLPanelLogin::draw()
 {
-	glPushMatrix();
+	gGL.pushMatrix();
 	{
 		F32 image_aspect = 1.333333f;
 		F32 view_aspect = (F32)getRect().getWidth() / (F32)getRect().getHeight();
 		// stretch image to maintain aspect ratio
 		if (image_aspect > view_aspect)
 		{
-			glTranslatef(-0.5f * (image_aspect / view_aspect - 1.f) * getRect().getWidth(), 0.f, 0.f);
-			glScalef(image_aspect / view_aspect, 1.f, 1.f);
+			gGL.translatef(-0.5f * (image_aspect / view_aspect - 1.f) * getRect().getWidth(), 0.f, 0.f);
+			gGL.scalef(image_aspect / view_aspect, 1.f, 1.f);
 		}
 
 		S32 width = getRect().getWidth();
@@ -310,7 +306,7 @@ void LLPanelLogin::draw()
 			mLogoImage->draw(0, -264, width + 8, mLogoImage->getHeight());
 		};
 	}
-	glPopMatrix();
+	gGL.popMatrix();
 
 	LLPanel::draw();
 }
@@ -1025,32 +1021,6 @@ void LLPanelLogin::updateLoginPanelLinks()
 	sInstance->getChildView("forgot_password_text")->setVisible( system_grid);
 }
 
-void LLPanelLogin::onModeChange(const LLSD& original_value, const LLSD& new_value)
-{
-	if (original_value.asString() != new_value.asString())
-	{
-		LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(&LLPanelLogin::onModeChangeConfirm, this, original_value, new_value, _1, _2));
-	}
-}
-
-void LLPanelLogin::onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response)
-{
-	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-	switch (option)
-	{
-	case 0:
-		gSavedSettings.getControl("SessionSettingsFile")->set(new_value);
-		LLAppViewer::instance()->requestQuit();
-		break;
-	case 1:
-		// revert to original value
-		getChild<LLUICtrl>("mode_combo")->setValue(original_value);
-		break;
-	default:
-		break;
-	}
-}
-
 std::string canonicalize_username(const std::string& name)
 {
 	std::string cname = name;
diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h
index be9de884d14b1cd0168c8051997a687470d465d8..a439c4ff6b8a3e95d9821d7644133151e1412dd2 100644
--- a/indra/newview/llpanellogin.h
+++ b/indra/newview/llpanellogin.h
@@ -87,8 +87,6 @@ class LLPanelLogin:
 	void reshapeBrowser();
 	void addFavoritesToStartLocation();
 	void addUsersWithFavoritesToUsername();
-	void onModeChange(const LLSD& original_value, const LLSD& new_value);
-	void onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response);
 	static void onClickConnect(void*);
 	static void onClickNewAccount(void*);
 	static void onClickVersion(void*);
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index 858f5cf57526345051feb79a79e27f528ac9790b..374afb90be48eb7f7776f3aad4fa7f72f14e329f 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -28,6 +28,7 @@
 #include "llpanelmaininventory.h"
 
 #include "llagent.h"
+#include "llagentcamera.h"
 #include "llavataractions.h"
 #include "lldndbutton.h"
 #include "lleconomy.h"
@@ -38,6 +39,7 @@
 #include "llinventorymodelbackgroundfetch.h"
 #include "llinventorypanel.h"
 #include "llfiltereditor.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfloaterreg.h"
 #include "llmenubutton.h"
 #include "lloutfitobserver.h"
@@ -51,7 +53,6 @@
 #include "llviewermenu.h"
 #include "llviewertexturelist.h"
 #include "llsidepanelinventory.h"
-#include "llsidetray.h"
 
 const std::string FILTERS_FILENAME("filters.xml");
 
@@ -111,7 +112,7 @@ LLPanelMainInventory::LLPanelMainInventory(const LLPanel::Params& p)
 	mCommitCallbackRegistrar.add("Inventory.EmptyTrash", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyTrash", LLFolderType::FT_TRASH));
 	mCommitCallbackRegistrar.add("Inventory.EmptyLostAndFound", boost::bind(&LLInventoryModel::emptyFolderType, &gInventory, "ConfirmEmptyLostAndFound", LLFolderType::FT_LOST_AND_FOUND));
 	mCommitCallbackRegistrar.add("Inventory.DoCreate", boost::bind(&LLPanelMainInventory::doCreate, this, _2));
- 	mCommitCallbackRegistrar.add("Inventory.NewWindow", boost::bind(&LLPanelMainInventory::newWindow, this));
+ 	//mCommitCallbackRegistrar.add("Inventory.NewWindow", boost::bind(&LLPanelMainInventory::newWindow, this));
 	mCommitCallbackRegistrar.add("Inventory.ShowFilters", boost::bind(&LLPanelMainInventory::toggleFindOptions, this));
 	mCommitCallbackRegistrar.add("Inventory.ResetFilters", boost::bind(&LLPanelMainInventory::resetFilters, this));
 	mCommitCallbackRegistrar.add("Inventory.SetSortBy", boost::bind(&LLPanelMainInventory::setSortBy, this, _2));
@@ -294,7 +295,13 @@ void LLPanelMainInventory::closeAllFolders()
 
 void LLPanelMainInventory::newWindow()
 {
-	LLFloaterInventory::showAgentInventory();
+	static S32 instance_num = 0;
+	instance_num = (instance_num + 1) % S32_MAX;
+
+	if (!gAgentCamera.cameraMouselook())
+	{
+		LLFloaterReg::showTypedInstance<LLFloaterSidePanelContainer>("inventory", LLSD(instance_num));
+	}
 }
 
 void LLPanelMainInventory::doCreate(const LLSD& userdata)
@@ -579,9 +586,14 @@ void LLPanelMainInventory::updateItemcountText()
 
 void LLPanelMainInventory::onFocusReceived()
 {
-	LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
-	
-	sidepanel_inventory->clearSelections(false, true, true);
+	LLSidepanelInventory *sidepanel_inventory =	LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+	if (!sidepanel_inventory)
+	{
+		llwarns << "Could not find Inventory Panel in My Inventory floater" << llendl;
+		return;
+	}
+
+	sidepanel_inventory->clearSelections(false, true);
 }
 
 void LLPanelMainInventory::setFilterTextFromFilter() 
@@ -1164,7 +1176,7 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)
 
 	if (command_name == "share")
 	{
-		LLSidepanelInventory* parent = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+		LLSidepanelInventory* parent = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
 		return parent ? parent->canShare() : FALSE;
 	}
 
diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp
index 0579ecbb90efd2ca1ed0c5122225cb0ead98aadf..66c9c323cb76ef6ba1456b1a39955f02e0b5c2a5 100644
--- a/indra/newview/llpanelmarketplaceinbox.cpp
+++ b/indra/newview/llpanelmarketplaceinbox.cpp
@@ -32,6 +32,7 @@
 #include "llappviewer.h"
 #include "llbutton.h"
 #include "llinventorypanel.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfolderview.h"
 #include "llsidepanelinventory.h"
 #include "llviewercontrol.h"
@@ -47,6 +48,8 @@ const LLPanelMarketplaceInbox::Params& LLPanelMarketplaceInbox::getDefaultParams
 // protected
 LLPanelMarketplaceInbox::LLPanelMarketplaceInbox(const Params& p)
 	: LLPanel(p)
+	, mFreshCountCtrl(NULL)
+	, mInboxButton(NULL)
 	, mInventoryPanel(NULL)
 {
 }
@@ -58,27 +61,22 @@ LLPanelMarketplaceInbox::~LLPanelMarketplaceInbox()
 // virtual
 BOOL LLPanelMarketplaceInbox::postBuild()
 {
-	LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLPanelMarketplaceInbox::handleLoginComplete, this));
-
 	LLFocusableElement::setFocusReceivedCallback(boost::bind(&LLPanelMarketplaceInbox::onFocusReceived, this));
+
+	mFreshCountCtrl = getChild<LLUICtrl>("inbox_fresh_new_count");
+	mInboxButton = getChild<LLButton>("inbox_btn");
 	
 	return TRUE;
 }
 
 void LLPanelMarketplaceInbox::onSelectionChange()
 {
-	LLSidepanelInventory* sidepanel_inventory = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
+	LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
 		
 	sidepanel_inventory->updateVerbs();
 }
 
 
-void LLPanelMarketplaceInbox::handleLoginComplete()
-{
-	// Set us up as the class to drive the badge value for the sidebar_inventory button
-	LLSideTray::getInstance()->setTabButtonBadgeDriver("sidebar_inventory", this);
-}
-
 LLInventoryPanel * LLPanelMarketplaceInbox::setupInventoryPanel()
 {
 	LLView * inbox_inventory_placeholder = getChild<LLView>("inbox_inventory_placeholder");
@@ -113,9 +111,11 @@ LLInventoryPanel * LLPanelMarketplaceInbox::setupInventoryPanel()
 
 void LLPanelMarketplaceInbox::onFocusReceived()
 {
-	LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
-
-	sidepanel_inventory->clearSelections(true, false, true);
+	LLSidepanelInventory *sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+	if (sidepanel_inventory)
+	{
+		sidepanel_inventory->clearSelections(true, false);
+	}
 
 	gSavedPerAccountSettings.setU32("LastInventoryInboxActivity", time_corrected());
 }
@@ -156,6 +156,20 @@ U32 LLPanelMarketplaceInbox::getFreshItemCount() const
 					fresh_item_count++;
 				}
 			}
+
+			LLFolderViewFolder::items_t::const_iterator items_it = inbox_folder->getItemsBegin();
+			LLFolderViewFolder::items_t::const_iterator items_end = inbox_folder->getItemsEnd();
+
+			for (; items_it != items_end; ++items_it)
+			{
+				const LLFolderViewItem * item_view = *items_it;
+				const LLInboxFolderViewItem * inbox_item_view = dynamic_cast<const LLInboxFolderViewItem*>(item_view);
+
+				if (inbox_item_view && inbox_item_view->isFresh())
+				{
+					fresh_item_count++;
+				}
+			}
 		}
 	}
 
@@ -176,6 +190,7 @@ U32 LLPanelMarketplaceInbox::getTotalItemCount() const
 		if (inbox_folder)
 		{
 			item_count += inbox_folder->getFoldersCount();
+			item_count += inbox_folder->getItemsCount();
 		}
 	}
 	
@@ -186,9 +201,10 @@ std::string LLPanelMarketplaceInbox::getBadgeString() const
 {
 	std::string item_count_str("");
 
+	LLPanel *inventory_panel = LLFloaterSidePanelContainer::getPanel("inventory");
+
 	// If the inbox is visible, and the side panel is collapsed or expanded and not the inventory panel
-	if (getParent()->getVisible() &&
-		(LLSideTray::getInstance()->getCollapsed() || !LLSideTray::getInstance()->isPanelActive("sidepanel_inventory")))
+	if (getParent()->getVisible() && inventory_panel && !inventory_panel->isInVisibleChain())
 	{
 		U32 item_count = getFreshItemCount();
 
@@ -205,7 +221,7 @@ void LLPanelMarketplaceInbox::draw()
 {
 	U32 item_count = getTotalItemCount();
 
-	LLView * fresh_new_count_view = getChildView("inbox_fresh_new_count");
+	llassert(mFreshCountCtrl != NULL);
 
 	if (item_count > 0)
 	{
@@ -213,26 +229,26 @@ void LLPanelMarketplaceInbox::draw()
 
 		LLStringUtil::format_map_t args;
 		args["[NUM]"] = item_count_str;
-		getChild<LLButton>("inbox_btn")->setLabel(getString("InboxLabelWithArg", args));
+		mInboxButton->setLabel(getString("InboxLabelWithArg", args));
 
 #if SUPPORTING_FRESH_ITEM_COUNT
 		// set green text to fresh item count
 		U32 fresh_item_count = getFreshItemCount();
-		fresh_new_count_view->setVisible((fresh_item_count > 0));
+		mFreshCountCtrl->setVisible((fresh_item_count > 0));
 
 		if (fresh_item_count > 0)
 		{
-			getChild<LLUICtrl>("inbox_fresh_new_count")->setTextArg("[NUM]", llformat("%d", fresh_item_count));
+			mFreshCountCtrl->setTextArg("[NUM]", llformat("%d", fresh_item_count));
 		}
 #else
-		fresh_new_count_view->setVisible(FALSE);
+		mFreshCountCtrl->setVisible(FALSE);
 #endif
 	}
 	else
 	{
-		getChild<LLButton>("inbox_btn")->setLabel(getString("InboxLabelNoArg"));
+		mInboxButton->setLabel(getString("InboxLabelNoArg"));
 
-		fresh_new_count_view->setVisible(FALSE);
+		mFreshCountCtrl->setVisible(FALSE);
 	}
 		
 	LLPanel::draw();
diff --git a/indra/newview/llpanelmarketplaceinbox.h b/indra/newview/llpanelmarketplaceinbox.h
index 705a095cf0109b2bb99532c05b8cbbeac56001df..9eb74581a2fd56de8f846949f0e5ab1435770959 100644
--- a/indra/newview/llpanelmarketplaceinbox.h
+++ b/indra/newview/llpanelmarketplaceinbox.h
@@ -28,11 +28,12 @@
 #define LL_LLPANELMARKETPLACEINBOX_H
 
 #include "llpanel.h"
-#include "llsidetray.h"
 
+class LLButton;
 class LLInventoryPanel;
+class LLUICtrl;
 
-class LLPanelMarketplaceInbox : public LLPanel, public LLSideTrayTabBadgeDriver
+class LLPanelMarketplaceInbox : public LLPanel
 {
 public:
 
@@ -61,16 +62,16 @@ class LLPanelMarketplaceInbox : public LLPanel, public LLSideTrayTabBadgeDriver
 	std::string getBadgeString() const;
 
 private:
-	void handleLoginComplete();
 
 	void onSelectionChange();
 
 	void onFocusReceived();
 
 private:
-	LLInventoryPanel* mInventoryPanel;
+	LLUICtrl *			mFreshCountCtrl;
+	LLButton *			mInboxButton;
+	LLInventoryPanel *	mInventoryPanel;
 };
 
 
 #endif //LL_LLPANELMARKETPLACEINBOX_H
-
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp
index faba6dc0cf19490970f5c87bbf07ea8abe090c81..678e4f28433bade734f6c66edd5434915cf69547 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.cpp
+++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp
@@ -45,6 +45,7 @@
 
 static LLDefaultChildRegistry::Register<LLInboxInventoryPanel> r1("inbox_inventory_panel");
 static LLDefaultChildRegistry::Register<LLInboxFolderViewFolder> r2("inbox_folder_view_folder");
+static LLDefaultChildRegistry::Register<LLInboxFolderViewItem> r3("inbox_folder_view_item");
 
 
 //
@@ -137,7 +138,7 @@ LLFolderViewFolder * LLInboxInventoryPanel::createFolderViewFolder(LLInvFVBridge
 
 LLFolderViewItem * LLInboxInventoryPanel::createFolderViewItem(LLInvFVBridge * bridge)
 {
-	LLFolderViewItem::Params params;
+	LLInboxFolderViewItem::Params params;
 
 	params.name = bridge->getDisplayName();
 	params.icon = bridge->getIcon();
@@ -171,10 +172,6 @@ LLInboxFolderViewFolder::LLInboxFolderViewFolder(const Params& p)
 #endif
 }
 
-LLInboxFolderViewFolder::~LLInboxFolderViewFolder()
-{
-}
-
 // virtual
 void LLInboxFolderViewFolder::draw()
 {
@@ -190,21 +187,32 @@ void LLInboxFolderViewFolder::draw()
 	LLFolderViewFolder::draw();
 }
 
+void LLInboxFolderViewFolder::selectItem()
+{
+	deFreshify();
+
+	LLFolderViewFolder::selectItem();
+}
+
+void LLInboxFolderViewFolder::toggleOpen()
+{
+	deFreshify();
+
+	LLFolderViewFolder::toggleOpen();
+}
+
 void LLInboxFolderViewFolder::computeFreshness()
 {
 	const U32 last_expansion_utc = gSavedPerAccountSettings.getU32("LastInventoryInboxActivity");
 
 	if (last_expansion_utc > 0)
 	{
-		const U32 time_offset_for_pdt = 7 * 60 * 60;
-		const U32 last_expansion = last_expansion_utc - time_offset_for_pdt;
-
-		mFresh = (mCreationDate > last_expansion);
+		mFresh = (mCreationDate > last_expansion_utc);
 
 #if DEBUGGING_FRESHNESS
 		if (mFresh)
 		{
-			llinfos << "Item is fresh! -- creation " << mCreationDate << ", saved_freshness_date " << last_expansion << llendl;
+			llinfos << "Item is fresh! -- creation " << mCreationDate << ", saved_freshness_date " << last_expansion_utc << llendl;
 		}
 #endif
 	}
@@ -221,20 +229,6 @@ void LLInboxFolderViewFolder::deFreshify()
 	gSavedPerAccountSettings.setU32("LastInventoryInboxActivity", time_corrected());
 }
 
-void LLInboxFolderViewFolder::selectItem()
-{
-	LLFolderViewFolder::selectItem();
-
-	deFreshify();
-}
-
-void LLInboxFolderViewFolder::toggleOpen()
-{
-	LLFolderViewFolder::toggleOpen();
-
-	deFreshify();
-}
-
 void LLInboxFolderViewFolder::setCreationDate(time_t creation_date_utc)
 { 
 	mCreationDate = creation_date_utc; 
@@ -249,9 +243,87 @@ void LLInboxFolderViewFolder::setCreationDate(time_t creation_date_utc)
 // LLInboxFolderViewItem Implementation
 //
 
+LLInboxFolderViewItem::LLInboxFolderViewItem(const Params& p)
+	: LLFolderViewItem(p)
+	, LLBadgeOwner(getHandle())
+	, mFresh(false)
+{
+#if SUPPORTING_FRESH_ITEM_COUNT
+	initBadgeParams(p.new_badge());
+#endif
+}
+
+BOOL LLInboxFolderViewItem::addToFolder(LLFolderViewFolder* folder, LLFolderView* root)
+{
+	BOOL retval = LLFolderViewItem::addToFolder(folder, root);
+
+#if SUPPORTING_FRESH_ITEM_COUNT
+	// Compute freshness if our parent is the root folder for the inbox
+	if (mParentFolder == mRoot)
+	{
+		computeFreshness();
+	}
+#endif
+	
+	return retval;
+}
+
 BOOL LLInboxFolderViewItem::handleDoubleClick(S32 x, S32 y, MASK mask)
 {
-	return TRUE;
+	deFreshify();
+	
+	return LLFolderViewItem::handleDoubleClick(x, y, mask);
+}
+
+// virtual
+void LLInboxFolderViewItem::draw()
+{
+#if SUPPORTING_FRESH_ITEM_COUNT
+	if (!badgeHasParent())
+	{
+		addBadgeToParentPanel();
+	}
+
+	setBadgeVisibility(mFresh);
+#endif
+
+	LLFolderViewItem::draw();
+}
+
+void LLInboxFolderViewItem::selectItem()
+{
+	deFreshify();
+
+	LLFolderViewItem::selectItem();
+}
+
+void LLInboxFolderViewItem::computeFreshness()
+{
+	const U32 last_expansion_utc = gSavedPerAccountSettings.getU32("LastInventoryInboxActivity");
+
+	if (last_expansion_utc > 0)
+	{
+		mFresh = (mCreationDate > last_expansion_utc);
+
+#if DEBUGGING_FRESHNESS
+		if (mFresh)
+		{
+			llinfos << "Item is fresh! -- creation " << mCreationDate << ", saved_freshness_date " << last_expansion_utc << llendl;
+		}
+#endif
+	}
+	else
+	{
+		mFresh = true;
+	}
+}
+
+void LLInboxFolderViewItem::deFreshify()
+{
+	mFresh = false;
+
+	gSavedPerAccountSettings.setU32("LastInventoryInboxActivity", time_corrected());
 }
 
+
 // eof
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.h b/indra/newview/llpanelmarketplaceinboxinventory.h
index 46eeb9ea7fa35e9955009ea493faf9fa6382034a..d6b827ee3ecde04a73fd747f093470eef49f6a26 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.h
+++ b/indra/newview/llpanelmarketplaceinboxinventory.h
@@ -69,16 +69,15 @@ class LLInboxFolderViewFolder : public LLFolderViewFolder, public LLBadgeOwner
 	};
 	
 	LLInboxFolderViewFolder(const Params& p);
-	~LLInboxFolderViewFolder();
-
+	
 	void draw();
 	
-	void computeFreshness();
-	void deFreshify();
-
 	void selectItem();
 	void toggleOpen();
 
+	void computeFreshness();
+	void deFreshify();
+
 	bool isFresh() const { return mFresh; }
 	
 protected:
@@ -88,15 +87,35 @@ class LLInboxFolderViewFolder : public LLFolderViewFolder, public LLBadgeOwner
 };
 
 
-class LLInboxFolderViewItem : public LLFolderViewItem
+class LLInboxFolderViewItem : public LLFolderViewItem, public LLBadgeOwner
 {
 public:
-	LLInboxFolderViewItem(const Params& p)
-		: LLFolderViewItem(p)
+	struct Params : public LLInitParam::Block<Params, LLFolderViewItem::Params>
 	{
-	}
+		Optional<LLBadge::Params>	new_badge;
+
+		Params()
+			: new_badge("new_badge")
+		{
+		}
+	};
 
+	LLInboxFolderViewItem(const Params& p);
+
+	BOOL addToFolder(LLFolderViewFolder* folder, LLFolderView* root);
 	BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
+
+	void draw();
+
+	void selectItem();
+
+	void computeFreshness();
+	void deFreshify();
+
+	bool isFresh() const { return mFresh; }
+
+protected:
+	bool mFresh;
 };
 
 #endif //LL_INBOXINVENTORYPANEL_H
diff --git a/indra/newview/llpanelmarketplaceoutbox.cpp b/indra/newview/llpanelmarketplaceoutbox.cpp
deleted file mode 100644
index 73fb92ff727c37d3208b29b6eb29eee2725c43fb..0000000000000000000000000000000000000000
--- a/indra/newview/llpanelmarketplaceoutbox.cpp
+++ /dev/null
@@ -1,359 +0,0 @@
-/** 
- * @file llpanelmarketplaceoutbox.cpp
- * @brief Panel for marketplace outbox
- *
-* $LicenseInfo:firstyear=2011&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 "llpanelmarketplaceoutbox.h"
-#include "llpanelmarketplaceoutboxinventory.h"
-
-#include "llappviewer.h"
-#include "llbutton.h"
-#include "llcoros.h"
-#include "lleventcoro.h"
-#include "llinventorypanel.h"
-#include "llloadingindicator.h"
-#include "llnotificationsutil.h"
-#include "llpanelmarketplaceinbox.h"
-#include "llsdutil.h"
-#include "llsidepanelinventory.h"
-#include "llsidetray.h"
-#include "lltimer.h"
-#include "llviewernetwork.h"
-#include "llagent.h"
-#include "llviewermedia.h"
-#include "llfolderview.h"
-#include "llinventoryfunctions.h"
-
-static LLRegisterPanelClassWrapper<LLPanelMarketplaceOutbox> t_panel_marketplace_outbox("panel_marketplace_outbox");
-
-const LLPanelMarketplaceOutbox::Params& LLPanelMarketplaceOutbox::getDefaultParams() 
-{ 
-	return LLUICtrlFactory::getDefaultParams<LLPanelMarketplaceOutbox>(); 
-}
-
-// protected
-LLPanelMarketplaceOutbox::LLPanelMarketplaceOutbox(const Params& p)
-	: LLPanel(p)
-	, mInventoryPanel(NULL)
-	, mSyncButton(NULL)
-	, mSyncIndicator(NULL)
-	, mSyncInProgress(false)
-{
-}
-
-LLPanelMarketplaceOutbox::~LLPanelMarketplaceOutbox()
-{
-}
-
-// virtual
-BOOL LLPanelMarketplaceOutbox::postBuild()
-{
-	LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLPanelMarketplaceOutbox::handleLoginComplete, this));
-	
-	LLFocusableElement::setFocusReceivedCallback(boost::bind(&LLPanelMarketplaceOutbox::onFocusReceived, this));
-
-	return TRUE;
-}
-
-void LLPanelMarketplaceOutbox::handleLoginComplete()
-{
-	mSyncButton = getChild<LLButton>("outbox_sync_btn");
-	mSyncButton->setCommitCallback(boost::bind(&LLPanelMarketplaceOutbox::onSyncButtonClicked, this));
-	mSyncButton->setEnabled(!isOutboxEmpty());
-	
-	mSyncIndicator = getChild<LLLoadingIndicator>("outbox_sync_indicator");
-}
-
-void LLPanelMarketplaceOutbox::onFocusReceived()
-{
-	LLSidepanelInventory * sidepanel_inventory = LLSideTray::getInstance()->getPanel<LLSidepanelInventory>("sidepanel_inventory");
-
-	sidepanel_inventory->clearSelections(true, true, false);
-}
-
-void LLPanelMarketplaceOutbox::onSelectionChange()
-{
-	LLSidepanelInventory* sidepanel_inventory = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-	
-	sidepanel_inventory->updateVerbs();
-}
-
-LLInventoryPanel * LLPanelMarketplaceOutbox::setupInventoryPanel()
-{
-	LLView * outbox_inventory_placeholder = getChild<LLView>("outbox_inventory_placeholder_panel");
-	LLView * outbox_inventory_parent = outbox_inventory_placeholder->getParent();
-	
-	mInventoryPanel = 
-		LLUICtrlFactory::createFromFile<LLInventoryPanel>("panel_outbox_inventory.xml",
-														  outbox_inventory_parent,
-														  LLInventoryPanel::child_registry_t::instance());
-	
-	llassert(mInventoryPanel);
-	
-	// Reshape the inventory to the proper size
-	LLRect inventory_placeholder_rect = outbox_inventory_placeholder->getRect();
-	mInventoryPanel->setShape(inventory_placeholder_rect);
-	
-	// Set the sort order newest to oldest
-	mInventoryPanel->setSortOrder(LLInventoryFilter::SO_DATE);	
-	mInventoryPanel->getFilter()->markDefault();
-
-	// Set selection callback for proper update of inventory status buttons
-	mInventoryPanel->setSelectCallback(boost::bind(&LLPanelMarketplaceOutbox::onSelectionChange, this));
-	
-	// Set up the note to display when the outbox is empty
-	mInventoryPanel->getFilter()->setEmptyLookupMessage("InventoryOutboxNoItems");
-	
-	// Hide the placeholder text
-	outbox_inventory_placeholder->setVisible(FALSE);
-	
-	return mInventoryPanel;
-}
-
-BOOL LLPanelMarketplaceOutbox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
-								   EDragAndDropType cargo_type,
-								   void* cargo_data,
-								   EAcceptance* accept,
-								   std::string& tooltip_msg)
-{
-	BOOL handled = LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
-
-	if (!handled && mInventoryPanel && mInventoryPanel->getRootFolder())
-	{
-		handled = mInventoryPanel->getRootFolder()->handleDragAndDropFromChild(mask,drop,cargo_type,cargo_data,accept,tooltip_msg);
-
-		if (handled)
-		{
-			mInventoryPanel->getRootFolder()->setDragAndDropThisFrame();
-		}
-	}
-
-	return handled;
-}
-
-bool LLPanelMarketplaceOutbox::isOutboxEmpty() const
-{
-	return (getTotalItemCount() == 0);
-}
-
-bool LLPanelMarketplaceOutbox::isSyncInProgress() const
-{
-	return mSyncInProgress;
-}
-
-
-std::string gTimeDelayDebugFunc = "";
-
-void timeDelay(LLCoros::self& self, LLPanelMarketplaceOutbox* outboxPanel)
-{
-	waitForEventOn(self, "mainloop");
-
-	LLTimer delayTimer;
-	delayTimer.reset();
-	delayTimer.setTimerExpirySec(5.0f);
-
-	while (!delayTimer.hasExpired())
-	{
-		waitForEventOn(self, "mainloop");
-	}
-
-	outboxPanel->onSyncComplete(true, LLSD::emptyMap());
-
-	gTimeDelayDebugFunc = "";
-}
-
-
-class LLInventorySyncResponder : public LLHTTPClient::Responder
-{
-public:
-	LLInventorySyncResponder(LLPanelMarketplaceOutbox * outboxPanel)
-		: LLCurl::Responder()
-		, mOutboxPanel(outboxPanel)
-	{
-	}
-
-	void completed(U32 status, const std::string& reason, const LLSD& content)
-	{
-		llinfos << "inventory_import complete status: " << status << ", reason: " << reason << llendl;
-
-		if (isGoodStatus(status))
-		{
-			// Complete success
-			llinfos << "success" << llendl;
-		}	
-		else
-		{
-			llwarns << "failed" << llendl;
-		}
-
-		mOutboxPanel->onSyncComplete(isGoodStatus(status), content);
-	}
-
-private:
-	LLPanelMarketplaceOutbox *	mOutboxPanel;
-};
-
-void LLPanelMarketplaceOutbox::onSyncButtonClicked()
-{
-	// Get the sync animation going
-	mSyncInProgress = true;
-	updateSyncButtonStatus();
-
-	// Make the url for the inventory import request
-	std::string url = "https://marketplace.secondlife.com/";
-
-	if (!LLGridManager::getInstance()->isInProductionGrid())
-	{
-		std::string gridLabel = LLGridManager::getInstance()->getGridLabel();
-		url = llformat("https://marketplace.%s.lindenlab.com/", utf8str_tolower(gridLabel).c_str());
-
-		// TEMP for Jim's pdp
-		//url = "http://pdp24.lindenlab.com:3000/";
-	}
-	
-	url += "api/1/users/";
-	url += gAgent.getID().getString();
-	url += "/inventory_import";
-
-	llinfos << "http get:  " << url << llendl;
-	LLHTTPClient::get(url, new LLInventorySyncResponder(this), LLViewerMedia::getHeaders());
-
-	// Set a timer (for testing only)
-    //gTimeDelayDebugFunc = LLCoros::instance().launch("LLPanelMarketplaceOutbox timeDelay", boost::bind(&timeDelay, _1, this));
-}
-
-void LLPanelMarketplaceOutbox::onSyncComplete(bool goodStatus, const LLSD& content)
-{
-	mSyncInProgress = false;
-	updateSyncButtonStatus();
-	
-	const LLSD& errors_list = content["errors"];
-
-	if (goodStatus && (errors_list.size() == 0))
-	{
-		LLNotificationsUtil::add("OutboxUploadComplete", LLSD::emptyMap(), LLSD::emptyMap());
-	}
-	else
-	{
-		LLNotificationsUtil::add("OutboxUploadHadErrors", LLSD::emptyMap(), LLSD::emptyMap());
-	}
-
-	llinfos << "Marketplace upload llsd:" << llendl;
-	llinfos << ll_pretty_print_sd(content) << llendl;
-	llinfos << llendl;
-
-	const LLSD& imported_list = content["imported"];
-	LLSD::array_const_iterator it = imported_list.beginArray();
-	for ( ; it != imported_list.endArray(); ++it)
-	{
-		LLUUID imported_folder = (*it).asUUID();
-		llinfos << "Successfully uploaded folder " << imported_folder.asString() << " to marketplace." << llendl;
-	}
-
-	for (it = errors_list.beginArray(); it != errors_list.endArray(); ++it)
-	{
-		const LLSD& item_error_map = (*it);
-
-		LLUUID error_folder = item_error_map["folder_id"].asUUID();
-		const std::string& error_string = item_error_map["identifier"].asString();
-		LLUUID error_item = item_error_map["item_id"].asUUID();
-		const std::string& error_item_name = item_error_map["item_name"].asString();
-		const std::string& error_message = item_error_map["message"].asString();
-
-		llinfos << "Error item " << error_folder.asString() << ", " << error_string << ", "
-				<< error_item.asString() << ", " << error_item_name << ", " << error_message << llendl;
-		
-		LLFolderViewFolder * item_folder = mInventoryPanel->getRootFolder()->getFolderByID(error_folder);
-		LLOutboxFolderViewFolder * outbox_item_folder = dynamic_cast<LLOutboxFolderViewFolder *>(item_folder);
-
-		llassert(outbox_item_folder);
-
-		outbox_item_folder->setErrorString(error_string);
-	}
-}
-
-void LLPanelMarketplaceOutbox::updateSyncButtonStatus()
-{
-	if (isSyncInProgress())
-	{
-		mSyncButton->setVisible(false);
-
-		mSyncIndicator->setVisible(true);
-		mSyncIndicator->reset();
-		mSyncIndicator->start();
-	}
-	else
-	{
-		mSyncIndicator->stop();
-		mSyncIndicator->setVisible(false);
-
-		mSyncButton->setVisible(true);
-		mSyncButton->setEnabled(!isOutboxEmpty());
-	}
-}
-
-U32 LLPanelMarketplaceOutbox::getTotalItemCount() const
-{
-	U32 item_count = 0;
-
-	if (mInventoryPanel)
-	{
-		const LLFolderViewFolder * outbox_folder = mInventoryPanel->getRootFolder();
-
-		if (outbox_folder)
-		{
-			item_count += outbox_folder->getFoldersCount();
-		}
-	}
-
-	return item_count;
-}
-
-void LLPanelMarketplaceOutbox::draw()
-{
-	const U32 item_count = getTotalItemCount();
-	const bool not_empty = (item_count > 0);
-
-	if (not_empty)
-	{
-		std::string item_count_str = llformat("%d", item_count);
-
-		LLStringUtil::format_map_t args;
-		args["[NUM]"] = item_count_str;
-		getChild<LLButton>("outbox_btn")->setLabel(getString("OutboxLabelWithArg", args));
-	}
-	else
-	{
-		getChild<LLButton>("outbox_btn")->setLabel(getString("OutboxLabelNoArg"));
-	}
-	
-	if (!isSyncInProgress())
-	{
-		mSyncButton->setEnabled(not_empty);
-	}
-	
-	LLPanel::draw();
-}
diff --git a/indra/newview/llpanelmarketplaceoutbox.h b/indra/newview/llpanelmarketplaceoutbox.h
deleted file mode 100644
index c6b4a5abe2f04dbad64cbfa47f02522247beed14..0000000000000000000000000000000000000000
--- a/indra/newview/llpanelmarketplaceoutbox.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/** 
- * @file llpanelmarketplaceoutbox.h
- * @brief Panel for marketplace outbox
- *
-* $LicenseInfo:firstyear=2011&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_LLPANELMARKETPLACEOUTBOX_H
-#define LL_LLPANELMARKETPLACEOUTBOX_H
-
-#include "llpanel.h"
-
-
-class LLButton;
-class LLInventoryPanel;
-class LLLoadingIndicator;
-
-
-class LLPanelMarketplaceOutbox : public LLPanel
-{
-public:
-	
-	struct Params :	public LLInitParam::Block<Params, LLPanel::Params>
-	{};
-	
-	LOG_CLASS(LLPanelMarketplaceOutbox);
-
-	// RN: for some reason you can't just use LLUICtrlFactory::getDefaultParams as a default argument in VC8
-	static const LLPanelMarketplaceOutbox::Params& getDefaultParams();
-	
-	LLPanelMarketplaceOutbox(const Params& p = getDefaultParams());
-	~LLPanelMarketplaceOutbox();
-
-	/*virtual*/ BOOL postBuild();
-
-	/*virtual*/ void draw();
-
-	LLInventoryPanel * setupInventoryPanel();
-
-	U32 getTotalItemCount() const;
-
-	bool isOutboxEmpty() const;
-	bool isSyncInProgress() const;
-
-	void onSyncComplete(bool goodStatus, const LLSD& content);
-
-	/*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
-								   EDragAndDropType cargo_type,
-								   void* cargo_data,
-								   EAcceptance* accept,
-								   std::string& tooltip_msg);
-
-protected:
-	void onSyncButtonClicked();
-	void updateSyncButtonStatus();
-
-	void handleLoginComplete();
-	void onFocusReceived();
-	void onSelectionChange();
-
-private:
-	LLInventoryPanel *		mInventoryPanel;
-
-	LLButton *				mSyncButton;
-	LLLoadingIndicator *	mSyncIndicator;
-	bool					mSyncInProgress;
-};
-
-
-#endif //LL_LLPANELMARKETPLACEOUTBOX_H
-
diff --git a/indra/newview/llpanelmarketplaceoutboxinventory.cpp b/indra/newview/llpanelmarketplaceoutboxinventory.cpp
index ed1206aec82eade5702da9a98e781e6470d67ba8..ff62cb23dbb18f6cc5b01fa6ff66d8e79e79136b 100644
--- a/indra/newview/llpanelmarketplaceoutboxinventory.cpp
+++ b/indra/newview/llpanelmarketplaceoutboxinventory.cpp
@@ -46,50 +46,6 @@ static LLDefaultChildRegistry::Register<LLOutboxInventoryPanel> r1("outbox_inven
 static LLDefaultChildRegistry::Register<LLOutboxFolderViewFolder> r2("outbox_folder_view_folder");
 
 
-//
-// Marketplace errors
-//
-
-enum
-{
-	MKTERR_NONE = 0,
-
-	MKTERR_NOT_MERCHANT,
-	MKTERR_FOLDER_EMPTY,
-	MKTERR_UNASSOCIATED_PRODUCTS,
-	MKTERR_OBJECT_LIMIT,
-	MKTERR_FOLDER_DEPTH,
-	MKTERR_UNSELLABLE_ITEM,
-	MKTERR_INTERNAL_IMPORT,
-
-	MKTERR_COUNT
-};
-
-static const std::string MARKETPLACE_ERROR_STRINGS[MKTERR_COUNT] =
-{
-	"NO_ERROR",
-	"NOT_MERCHANT_ERROR",
-	"FOLDER_EMPTY_ERROR",
-	"UNASSOCIATED_PRODUCTS_ERROR",
-	"OBJECT_LIMIT_ERROR",
-	"FOLDER_DEPTH_ERROR",
-	"UNSELLABLE_ITEM_FOUND",
-	"INTERNAL_IMPORT_ERROR",
-};
-
-static const std::string MARKETPLACE_ERROR_NAMES[MKTERR_COUNT] =
-{
-	"Marketplace Error None",
-	"Marketplace Error Not Merchant",
-	"Marketplace Error Empty Folder",
-	"Marketplace Error Unassociated Products",
-	"Marketplace Error Object Limit",
-	"Marketplace Error Folder Depth",
-	"Marketplace Error Unsellable Item",
-	"Marketplace Error Internal Import",
-};
-
-
 //
 // LLOutboxInventoryPanel Implementation
 //
@@ -111,37 +67,6 @@ void LLOutboxInventoryPanel::buildFolderView(const LLInventoryPanel::Params& par
 	
 	LLUUID root_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false, false);
 	
-	// leslie -- temporary HACK to work around sim not creating outbox with proper system folder type
-	if (root_id.isNull())
-	{
-		std::string start_folder_name(params.start_folder());
-		
-		LLInventoryModel::cat_array_t* cats;
-		LLInventoryModel::item_array_t* items;
-		
-		gInventory.getDirectDescendentsOf(gInventory.getRootFolderID(), cats, items);
-		
-		if (cats)
-		{
-			for (LLInventoryModel::cat_array_t::const_iterator cat_it = cats->begin(); cat_it != cats->end(); ++cat_it)
-			{
-				LLInventoryCategory* cat = *cat_it;
-				
-				if (cat->getName() == start_folder_name)
-				{
-					root_id = cat->getUUID();
-					break;
-				}
-			}
-		}
-		
-		if (root_id == LLUUID::null)
-		{
-			llwarns << "No category found that matches outbox inventory panel start_folder: " << start_folder_name << llendl;
-		}
-	}
-	// leslie -- end temporary HACK
-	
 	if (root_id == LLUUID::null)
 	{
 		llwarns << "Outbox inventory panel has no root folder!" << llendl;
@@ -206,66 +131,26 @@ LLFolderViewItem * LLOutboxInventoryPanel::createFolderViewItem(LLInvFVBridge *
 
 LLOutboxFolderViewFolder::LLOutboxFolderViewFolder(const Params& p)
 	: LLFolderViewFolder(p)
-	, LLBadgeOwner(getHandle())
-	, mError(0)
-{
-	initBadgeParams(p.error_badge());
-}
-
-LLOutboxFolderViewFolder::~LLOutboxFolderViewFolder()
 {
 }
 
-// virtual
-void LLOutboxFolderViewFolder::draw()
-{
-	if (!badgeHasParent())
-	{
-		addBadgeToParentPanel();
-	}
-	
-	setBadgeVisibility(hasError());
-
-	LLFolderViewFolder::draw();
-}
+//
+// LLOutboxFolderViewItem Implementation
+//
 
-void LLOutboxFolderViewFolder::setErrorString(const std::string& errorString)
+LLOutboxFolderViewItem::LLOutboxFolderViewItem(const Params& p)
+	: LLFolderViewItem(p)
 {
-	S32 error_code = MKTERR_NONE;
-
-	for (S32 i = 1; i < MKTERR_COUNT; ++i)
-	{
-		if (MARKETPLACE_ERROR_STRINGS[i] == errorString)
-		{
-			error_code = i;
-			break;
-		}
-	}
-
-	setError(error_code);
 }
 
-void LLOutboxFolderViewFolder::setError(S32 errorCode)
+BOOL LLOutboxFolderViewItem::handleDoubleClick(S32 x, S32 y, MASK mask)
 {
-	mError = errorCode;
-
-	if (hasError())
-	{
-		setToolTip(LLTrans::getString(MARKETPLACE_ERROR_NAMES[mError]));
-	}
-	else
-	{
-		setToolTip(LLStringExplicit(""));
-	}
+	return TRUE;
 }
 
-//
-// LLOutboxFolderViewItem Implementation
-//
-
-BOOL LLOutboxFolderViewItem::handleDoubleClick(S32 x, S32 y, MASK mask)
+void LLOutboxFolderViewItem::openItem()
 {
-	return TRUE;
+	// Intentionally do nothing to block attaching items from the outbox
 }
 
 // eof
diff --git a/indra/newview/llpanelmarketplaceoutboxinventory.h b/indra/newview/llpanelmarketplaceoutboxinventory.h
index 346680a79d9ab56d8c2966570bf1bfd6415d6829..a6c522b7c235401e411655856e1fa7a05a0c67e6 100644
--- a/indra/newview/llpanelmarketplaceoutboxinventory.h
+++ b/indra/newview/llpanelmarketplaceoutboxinventory.h
@@ -28,7 +28,6 @@
 #define LL_OUTBOXINVENTORYPANEL_H
 
 
-#include "llbadgeowner.h"
 #include "llinventorypanel.h"
 #include "llfolderviewitem.h"
 
@@ -53,44 +52,26 @@ class LLOutboxInventoryPanel : public LLInventoryPanel
 };
 
 
-class LLOutboxFolderViewFolder : public LLFolderViewFolder, public LLBadgeOwner
+class LLOutboxFolderViewFolder : public LLFolderViewFolder
 {
 public:
 	struct Params : public LLInitParam::Block<Params, LLFolderViewFolder::Params>
 	{
-		Optional<LLBadge::Params>	error_badge;
-		
-		Params()
-			: error_badge("error_badge")
-		{
-		}
+		Params() {}
 	};
 	
 	LLOutboxFolderViewFolder(const Params& p);
-	~LLOutboxFolderViewFolder();
-
-	void draw();
-
-	void setErrorString(const std::string& errorString);
-	void setError(S32 errorCode);
-	
-	bool hasError() const { return (mError != 0); }
-
-protected:
-	S32 mError;
 };
 
 
 class LLOutboxFolderViewItem : public LLFolderViewItem
 {
 public:
-	LLOutboxFolderViewItem(const Params& p)
-		: LLFolderViewItem(p)
-	{
-	}
+	LLOutboxFolderViewItem(const Params& p);
 
 	// virtual
 	BOOL handleDoubleClick(S32 x, S32 y, MASK mask);
+	void openItem();
 };
 
 
diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
index 1347a02a520703885558903a29c51eca3e5be023..a9af56f750b12a9bfbe43d876268136fbe44281d 100644
--- a/indra/newview/llpanelme.cpp
+++ b/indra/newview/llpanelme.cpp
@@ -37,7 +37,6 @@
 #include "llfirstuse.h"
 #include "llfloaterreg.h"
 #include "llhints.h"
-#include "llsidetray.h"
 #include "llviewercontrol.h"
 #include "llviewerdisplayname.h"
 
@@ -49,16 +48,10 @@
 #include "lltabcontainer.h"
 #include "lltexturectrl.h"
 
-#define PICKER_SECOND_LIFE "2nd_life_pic"
-#define PICKER_FIRST_LIFE "real_world_pic"
-#define PANEL_PROFILE "panel_profile"
-
-static LLRegisterPanelClassWrapper<LLPanelMyProfileEdit> t_panel_me_profile_edit("edit_profile_panel");
 static LLRegisterPanelClassWrapper<LLPanelMe> t_panel_me_profile("panel_me");
 
 LLPanelMe::LLPanelMe(void) 
  : LLPanelProfile()
- , mEditPanel(NULL)
 {
 	setAvatarId(gAgent.getID());
 }
@@ -73,342 +66,4 @@ BOOL LLPanelMe::postBuild()
 void LLPanelMe::onOpen(const LLSD& key)
 {
 	LLPanelProfile::onOpen(key);
-
-	// Removed this action as per SOCIAL-431 The first time a new resident opens the profile tab 
-	//                                       in the sidebar, they see the old profile editing panel
-	//
-	//// Force Edit My Profile if this is the first time when user is opening Me Panel (EXT-5068)
-	//bool opened = gSavedSettings.getBOOL("MePanelOpened");
-	//// In some cases Side Tray my call onOpen() twice, check getCollapsed() to be sure this
-	//// is the last time onOpen() is called
-	//if( !opened && !LLSideTray::getInstance()->getCollapsed() )
-	//{
-	//	buildEditPanel();
-	//	openPanel(mEditPanel, getAvatarId());
-	//	gSavedSettings.setBOOL("MePanelOpened", true);
-	//}
-}
-
-bool LLPanelMe::notifyChildren(const LLSD& info)
-{
-	if (info.has("task-panel-action") && info["task-panel-action"].asString() == "handle-tri-state")
-	{
-		// Implement task panel tri-state behavior.
-		//
-		// When the button of an active open task panel is clicked, side tray
-		// calls notifyChildren() on the panel, passing task-panel-action=>handle-tri-state as an argument.
-		// The task panel is supposed to handle this by reverting to the default view,
-		// i.e. closing any dependent panels like "pick info" or "profile edit".
-
-		bool on_default_view = true;
-
-		const LLRect& task_panel_rect = getRect();
-		for (LLView* child = getFirstChild(); child; child = findNextSibling(child))
-		{
-			LLPanel* panel = dynamic_cast<LLPanel*>(child);
-			if (!panel)
-				continue;
-
-			// *HACK: implement panel stack instead (e.g. me->pick_info->pick_edit).
-			if (panel->getRect().getWidth()  == task_panel_rect.getWidth()  &&
-				panel->getRect().getHeight() == task_panel_rect.getHeight() &&
-				panel->getVisible())
-			{
-				panel->setVisible(FALSE);
-				on_default_view = false;
-			}
-		}
-		
-		if (on_default_view)
-			LLSideTray::getInstance()->collapseSideBar();
-
-		return true; // this notification is only supposed to be handled by task panels 
-	}
-
-	return LLPanel::notifyChildren(info);
-}
-
-void LLPanelMe::buildEditPanel()
-{
-	if (NULL == mEditPanel)
-	{
-		mEditPanel = new LLPanelMyProfileEdit();
-
-		// Note: Remove support for editing profile through this method.
-		//       All profile editing should go through the web.
-		//mEditPanel->childSetAction("save_btn", boost::bind(&LLPanelMe::onSaveChangesClicked, this), this);
-
-		mEditPanel->childSetAction("cancel_btn", boost::bind(&LLPanelMe::onCancelClicked, this), this);
-	}
-}
-
-
-void LLPanelMe::onEditProfileClicked()
-{
-	buildEditPanel();
-	togglePanel(mEditPanel, getAvatarId()); // open
-}
-
-void LLPanelMe::onCancelClicked()
-{
-	togglePanel(mEditPanel); // close
-}
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-LLPanelMyProfileEdit::LLPanelMyProfileEdit() 
- : LLPanelMyProfile()
-{
-	buildFromFile( "panel_edit_profile.xml");
-
-	setAvatarId(gAgent.getID());
-
-	LLAvatarNameCache::addUseDisplayNamesCallback(boost::bind(&LLPanelMyProfileEdit::onAvatarNameChanged, this));
-}
-
-void LLPanelMyProfileEdit::onOpen(const LLSD& key)
-{
-	resetData();
-
-	// Disable editing until data is loaded, or edited fields will be overwritten when data
-	// is loaded.
-	enableEditing(false);
-
-	// force new avatar name fetch so we have latest update time
-	LLAvatarNameCache::fetch(gAgent.getID()); 
-	LLPanelMyProfile::onOpen(getAvatarId());
-	
-	LLAvatarName av_name;	
-	if (LLAvatarNameCache::useDisplayNames())
-	{
-		if (LLAvatarNameCache::get(gAgent.getID(), &av_name) && av_name.mIsDisplayNameDefault)  	
-		{
-			LLFirstUse::setDisplayName();
-		}
-		else
-		{
-			LLFirstUse::setDisplayName(false);
-		}
-	}
-
-	if (LLAvatarNameCache::useDisplayNames())
-	{
-		getChild<LLUICtrl>("user_label")->setVisible( true );
-		getChild<LLUICtrl>("user_slid")->setVisible( true );
-		getChild<LLUICtrl>("display_name_label")->setVisible( true );
-		getChild<LLUICtrl>("set_name")->setVisible( true );
-		getChild<LLUICtrl>("set_name")->setEnabled( true );
-		getChild<LLUICtrl>("solo_user_name")->setVisible( false );
-		getChild<LLUICtrl>("solo_username_label")->setVisible( false );
-	}
-	else
-	{
-		getChild<LLUICtrl>("user_label")->setVisible( false );
-		getChild<LLUICtrl>("user_slid")->setVisible( false );
-		getChild<LLUICtrl>("display_name_label")->setVisible( false );
-		getChild<LLUICtrl>("set_name")->setVisible( false );
-		getChild<LLUICtrl>("set_name")->setEnabled( false );
-		getChild<LLUICtrl>("solo_user_name")->setVisible( true );
-		getChild<LLUICtrl>("solo_username_label")->setVisible( true );
-	}
-}
-
-void LLPanelMyProfileEdit::onClose(const LLSD& key)
-{
-	if (LLAvatarNameCache::useDisplayNames())
-	{
-		LLFirstUse::setDisplayName(false);
-	}	
-}
-
-void LLPanelMyProfileEdit::processProperties(void* data, EAvatarProcessorType type)
-{
-	if(APT_PROPERTIES == type)
-	{
-		const LLAvatarData* avatar_data = static_cast<const LLAvatarData*>(data);
-		if(avatar_data && getAvatarId() == avatar_data->avatar_id)
-		{
-			// *TODO dzaporozhan
-			// Workaround for ticket EXT-1099, waiting for fix for ticket EXT-1128
-			enableEditing(true);
-			processProfileProperties(avatar_data);
-			LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this);
-		}
-	}
-}
-
-void LLPanelMyProfileEdit::processProfileProperties(const LLAvatarData* avatar_data)
-{
-	fillCommonData(avatar_data);
-
-	// 'Home page' was hidden in LLPanelAvatarProfile::fillCommonData() to fix  EXT-4734
-	// Show 'Home page' in Edit My Profile (EXT-4873)
-	getChildView("homepage_edit")->setVisible( true);
-
-	fillPartnerData(avatar_data);
-
-	fillAccountStatus(avatar_data);
-
-	getChild<LLUICtrl>("show_in_search_checkbox")->setValue((BOOL)(avatar_data->flags & AVATAR_ALLOW_PUBLISH));
-
-	LLAvatarNameCache::get(avatar_data->avatar_id,
-		boost::bind(&LLPanelMyProfileEdit::onNameCache, this, _1, _2));
-}
-
-void LLPanelMyProfileEdit::onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
-{
-	getChild<LLUICtrl>("user_name")->setValue( av_name.mDisplayName );
-	getChild<LLUICtrl>("user_slid")->setValue( av_name.mUsername );
-	getChild<LLUICtrl>("user_name_small")->setValue( av_name.mDisplayName );
-	getChild<LLUICtrl>("solo_user_name")->setValue( av_name.mDisplayName );
-
-
-	if (LLAvatarNameCache::useDisplayNames())
-	{
-		getChild<LLUICtrl>("user_label")->setVisible( true );
-		getChild<LLUICtrl>("user_slid")->setVisible( true );
-		getChild<LLUICtrl>("display_name_label")->setVisible( true );
-		getChild<LLUICtrl>("set_name")->setVisible( true );
-		getChild<LLUICtrl>("set_name")->setEnabled( true );
-
-		getChild<LLUICtrl>("solo_user_name")->setVisible( false );
-		getChild<LLUICtrl>("solo_username_label")->setVisible( false );
-
-		// show smaller display name if too long to display in regular size
-		if (getChild<LLTextBox>("user_name")->getTextPixelWidth() > getChild<LLTextBox>("user_name")->getRect().getWidth())
-		{
-			getChild<LLUICtrl>("user_name_small")->setVisible( true );
-			getChild<LLUICtrl>("user_name")->setVisible( false );
-		}
-		else
-		{
-			getChild<LLUICtrl>("user_name_small")->setVisible( false );
-			getChild<LLUICtrl>("user_name")->setVisible( true );
-		}
-	}
-	else
-	{
-		getChild<LLUICtrl>("user_label")->setVisible( false );
-		getChild<LLUICtrl>("user_slid")->setVisible( false );
-		getChild<LLUICtrl>("display_name_label")->setVisible( false );
-		getChild<LLUICtrl>("set_name")->setVisible( false );
-		getChild<LLUICtrl>("set_name")->setEnabled( false );
-		
-		getChild<LLUICtrl>("solo_user_name")->setVisible( true );
-		getChild<LLUICtrl>("user_name_small")->setVisible( false );
-		getChild<LLUICtrl>("user_name")->setVisible( false );
-		getChild<LLUICtrl>("solo_username_label")->setVisible( true );
-	}
-}
-
-
-void LLPanelMyProfileEdit::onAvatarNameChanged()
-{
-	LLAvatarNameCache::get(getAvatarId(),
-		boost::bind(&LLPanelMyProfileEdit::onNameCache, this, _1, _2));
-}
-
-BOOL LLPanelMyProfileEdit::postBuild()
-{
-	initTexturePickerMouseEvents();
-
-	getChild<LLUICtrl>("partner_edit_link")->setTextArg("[URL]", getString("partner_edit_link_url"));
-	getChild<LLUICtrl>("my_account_link")->setTextArg("[URL]", getString("my_account_link_url"));
-
-	getChild<LLUICtrl>("set_name")->setCommitCallback(
-		boost::bind(&LLPanelMyProfileEdit::onClickSetName, this));
-
-	LLHints::registerHintTarget("set_display_name", getChild<LLUICtrl>("set_name")->getHandle());
-	LLViewerDisplayName::addNameChangedCallback(boost::bind(&LLPanelMyProfileEdit::onAvatarNameChanged, this));
-	return LLPanelAvatarProfile::postBuild();
-}
-/**
- * Inits map with texture picker and appropriate edit icon.
- * Sets callbacks of Mouse Enter and Mouse Leave signals of Texture Pickers 
- */
-void LLPanelMyProfileEdit::initTexturePickerMouseEvents()
-{
-	LLTextureCtrl* text_pic = getChild<LLTextureCtrl>(PICKER_SECOND_LIFE);	
-	LLIconCtrl* text_icon = getChild<LLIconCtrl>("2nd_life_edit_icon");
-	mTextureEditIconMap[text_pic->getName()] = text_icon;
-	text_pic->setMouseEnterCallback(boost::bind(&LLPanelMyProfileEdit::onTexturePickerMouseEnter, this, _1));
-	text_pic->setMouseLeaveCallback(boost::bind(&LLPanelMyProfileEdit::onTexturePickerMouseLeave, this, _1));
-	text_icon->setVisible(FALSE);
-
-	text_pic = getChild<LLTextureCtrl>(PICKER_FIRST_LIFE);
-	text_icon = getChild<LLIconCtrl>("real_world_edit_icon");
-	mTextureEditIconMap[text_pic->getName()] = text_icon;
-	text_pic->setMouseEnterCallback(boost::bind(&LLPanelMyProfileEdit::onTexturePickerMouseEnter, this, _1));
-	text_pic->setMouseLeaveCallback(boost::bind(&LLPanelMyProfileEdit::onTexturePickerMouseLeave, this, _1));
-	text_icon->setVisible(FALSE);
-}
-
-void LLPanelMyProfileEdit::resetData()
-{
-	LLPanelMyProfile::resetData();
-
-	//childSetTextArg("name_text", "[FIRST]", LLStringUtil::null);
-	//childSetTextArg("name_text", "[LAST]", LLStringUtil::null);
-	getChild<LLUICtrl>("user_name")->setValue( LLSD() );
-	getChild<LLUICtrl>("user_slid")->setValue( LLSD() );
-	getChild<LLUICtrl>("solo_user_name")->setValue( LLSD() );
-	getChild<LLUICtrl>("user_name_small")->setValue( LLSD() );
-}
-
-void LLPanelMyProfileEdit::onTexturePickerMouseEnter(LLUICtrl* ctrl)
-{
-	mTextureEditIconMap[ctrl->getName()]->setVisible(TRUE);
-}
-void LLPanelMyProfileEdit::onTexturePickerMouseLeave(LLUICtrl* ctrl)
-{
-	mTextureEditIconMap[ctrl->getName()]->setVisible(FALSE);
-}
-
-void LLPanelMyProfileEdit::onClickSetName()
-{	
-	LLAvatarNameCache::get(getAvatarId(), 
-			boost::bind(&LLPanelMyProfileEdit::onAvatarNameCache,
-				this, _1, _2));	
-
-	LLFirstUse::setDisplayName(false);
-}
-
-void LLPanelMyProfileEdit::onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
-{
-	if (av_name.mDisplayName.empty())
-	{
-		// something is wrong, tell user to try again later
-		LLNotificationsUtil::add("SetDisplayNameFailedGeneric");
-		return;		
-	}
-
-	llinfos << "name-change now " << LLDate::now() << " next_update "
-		<< LLDate(av_name.mNextUpdate) << llendl;
-	F64 now_secs = LLDate::now().secondsSinceEpoch();
-
-	if (now_secs < av_name.mNextUpdate)
-	{
-		// if the update time is more than a year in the future, it means updates have been blocked
-		// show a more general message
-        const int YEAR = 60*60*24*365; 
-		if (now_secs + YEAR < av_name.mNextUpdate)
-		{
-			LLNotificationsUtil::add("SetDisplayNameBlocked");
-			return;
-		}
-	}
-	
-	LLFloaterReg::showInstance("display_name");
-}
-
-void LLPanelMyProfileEdit::enableEditing(bool enable)
-{
-	getChildView("2nd_life_pic")->setEnabled(enable);
-	getChildView("real_world_pic")->setEnabled(enable);
-	getChildView("sl_description_edit")->setEnabled(enable);
-	getChildView("fl_description_edit")->setEnabled(enable);
-	getChildView("homepage_edit")->setEnabled(enable);
-	getChildView("show_in_search_checkbox")->setEnabled(enable);
 }
diff --git a/indra/newview/llpanelme.h b/indra/newview/llpanelme.h
index f27f5a268e756b3315e1d6c82a3056235bb1f845..60e9d4317d8ee741993093ab6bf436c0177d1e54 100644
--- a/indra/newview/llpanelme.h
+++ b/indra/newview/llpanelme.h
@@ -30,15 +30,9 @@
 #include "llpanel.h"
 #include "llpanelprofile.h"
 
-class LLAvatarName;
-class LLPanelMyProfileEdit;
-class LLPanelProfile;
-class LLIconCtrl;
-
 /**
-* Panel for displaying Agent's profile, it consists of two sub panels - Profile
-* and Picks. 
-* LLPanelMe allows user to edit his profile and picks.
+* Panel for displaying Agent's Picks and Classifieds panel.
+* LLPanelMe allows user to edit his picks and classifieds.
 */
 class LLPanelMe : public LLPanelProfile
 {
@@ -49,64 +43,8 @@ class LLPanelMe : public LLPanelProfile
 	LLPanelMe();
 
 	/*virtual*/ void onOpen(const LLSD& key);
-	/*virtual*/ bool notifyChildren(const LLSD& info);
 
 	/*virtual*/ BOOL postBuild();
-
-private:
-
-	void buildEditPanel();
-
-	void onEditProfileClicked();
-	void onCancelClicked();
-
-	LLPanelMyProfileEdit *  mEditPanel;
-
-};
-
-class LLPanelMyProfileEdit : public LLPanelMyProfile
-{
-	LOG_CLASS(LLPanelMyProfileEdit);
-
-public:
-
-	LLPanelMyProfileEdit();
-
-	/*virtual*/void processProperties(void* data, EAvatarProcessorType type);
-	
-	/*virtual*/BOOL postBuild();
-
-	/*virtual*/ void onOpen(const LLSD& key);
-	/*virtual*/ void onClose(const LLSD& key);
-
-	void onAvatarNameChanged();
-
-protected:	
-
-	/*virtual*/void resetData();
-
-	void processProfileProperties(const LLAvatarData* avatar_data);
-	void onNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
-
-private:
-	void initTexturePickerMouseEvents();
-	void onTexturePickerMouseEnter(LLUICtrl* ctrl);
-	void onTexturePickerMouseLeave(LLUICtrl* ctrl);
-	void onClickSetName();
-	void onAvatarNameCache(const LLUUID& id, const LLAvatarName& av_name);
-
-	/**
-	 * Enabled/disables controls to prevent overwriting edited data upon receiving
-	 * current data from server.
-	 */
-	void enableEditing(bool enable);
-
-
-
-private:
-	// map TexturePicker name => Edit Icon pointer should be visible while hovering Texture Picker
-	typedef std::map<std::string, LLIconCtrl*> texture_edit_icon_map_t;
-	texture_edit_icon_map_t mTextureEditIconMap;
 };
 
 #endif // LL_LLPANELMEPROFILE_H
diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp
index 2bbd15ae1175eb31200dada6f5d3405865e33c0d..c01adc3c3562eb0c3deb2d9460c3ff51aa780ae8 100644
--- a/indra/newview/llpanelnearbymedia.cpp
+++ b/indra/newview/llpanelnearbymedia.cpp
@@ -52,6 +52,7 @@
 #include "llvovolume.h"
 #include "llstatusbar.h"
 #include "llsdutil.h"
+#include "llvieweraudio.h"
 
 #include "llfloaterreg.h"
 #include "llfloaterpreference.h" // for the gear icon
@@ -807,14 +808,26 @@ bool LLPanelNearByMedia::setDisabled(const LLUUID &row_id, bool disabled)
 {
 	if (row_id == PARCEL_AUDIO_LIST_ITEM_UUID)
 	{
-		if (disabled) onClickParcelAudioStop();
-		else onClickParcelAudioStart();
+		if (disabled)
+		{
+			onClickParcelAudioStop();
+		}
+		else
+		{
+			onClickParcelAudioPlay();
+		}
 		return true;
 	}
 	else if (row_id == PARCEL_MEDIA_LIST_ITEM_UUID)
 	{
-		if (disabled) onClickDisableParcelMedia();
-		else onClickEnableParcelMedia();
+		if (disabled)
+		{
+			onClickDisableParcelMedia();
+		}
+		else
+		{
+			onClickEnableParcelMedia();
+		}
 		return true;
 	}
 	else {
@@ -857,24 +870,11 @@ void LLPanelNearByMedia::onClickParcelMediaPause()
 	LLViewerParcelMedia::pause();
 }
 
-void LLPanelNearByMedia::onClickParcelAudioStart()
-{
-	// User *explicitly* started the internet stream, so keep the stream
-	// playing and updated as they cross to other parcels etc.
-	mParcelAudioAutoStart = true;
-		
-	if (!gAudiop)
-		return;
-	
-	gAudiop->startInternetStream(LLViewerMedia::getParcelAudioURL());
-}
-
 void LLPanelNearByMedia::onClickParcelAudioPlay()
 {
 	// User *explicitly* started the internet stream, so keep the stream
 	// playing and updated as they cross to other parcels etc.
 	mParcelAudioAutoStart = true;
-
 	if (!gAudiop)
 		return;
 
@@ -883,8 +883,9 @@ void LLPanelNearByMedia::onClickParcelAudioPlay()
 		// 'false' means unpause
 		gAudiop->pauseInternetStream(false);
 	}
-	else {
-		gAudiop->startInternetStream(LLViewerMedia::getParcelAudioURL());
+	else
+	{
+		LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(LLViewerMedia::getParcelAudioURL());
 	}
 }
 
@@ -894,11 +895,10 @@ void LLPanelNearByMedia::onClickParcelAudioStop()
 	// re-start audio when i.e. they move to another parcel, until
 	// they explicitly start it again.
 	mParcelAudioAutoStart = false;
-
 	if (!gAudiop)
 		return;
 
-	gAudiop->stopInternetStream();
+	LLViewerAudio::getInstance()->stopInternetStreamWithAutoFade();
 }
 
 void LLPanelNearByMedia::onClickParcelAudioPause()
diff --git a/indra/newview/llpanelnearbymedia.h b/indra/newview/llpanelnearbymedia.h
index be4d3137435fcc39b4b632e4fe3665da0c4182e5..c3634de9b47eec37311078efdd8db35377c372b6 100644
--- a/indra/newview/llpanelnearbymedia.h
+++ b/indra/newview/llpanelnearbymedia.h
@@ -115,7 +115,6 @@ class LLPanelNearByMedia : public LLPanel
 	void onClickParcelMediaPause();
 	void onClickParcelAudioPlay();
 	void onClickParcelAudioStop();
-	void onClickParcelAudioStart();
 	void onClickParcelAudioPause();
 	void onCheckAutoPlay();
 	void onAdvancedButtonClick();	
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 44364b5831d55a8d37c427076f230e9db546d4b6..98ea6805043ea1f69fb2f251e1553f0caed4a532 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -57,7 +57,6 @@
 #include "llpreviewtexture.h"
 #include "llscrollcontainer.h"
 #include "llselectmgr.h"
-#include "llsidetray.h"
 #include "llstatusbar.h"
 #include "lltooldraganddrop.h"
 #include "lltrans.h"
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index a90f864ae2700207b99e65cd0d869084b931a4eb..f90236f6f2890ac53dc1c9677f610063980cacbc 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -31,6 +31,7 @@
 #include "llnotificationsutil.h"
 #include "lltabcontainer.h"
 
+#include "llfloatersidepanelcontainer.h"
 #include "llinventoryfunctions.h"
 #include "llinventorymodelbackgroundfetch.h"
 #include "llagentwearables.h"
@@ -40,7 +41,6 @@
 #include "llpanelwearing.h"
 #include "llsaveoutfitcombobtn.h"
 #include "llsidepanelappearance.h"
-#include "llsidetray.h"
 #include "llviewerfoldertype.h"
 
 static const std::string OUTFITS_TAB_NAME = "outfitslist_tab";
@@ -222,7 +222,7 @@ void LLPanelOutfitsInventory::onSave()
 //static
 LLPanelOutfitsInventory* LLPanelOutfitsInventory::findInstance()
 {
-	return dynamic_cast<LLPanelOutfitsInventory*>(LLSideTray::getInstance()->getPanel("panel_outfits_inventory"));
+	return dynamic_cast<LLPanelOutfitsInventory*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfits_inventory"));
 }
 
 //////////////////////////////////////////////////////////////////////////////////
@@ -319,8 +319,7 @@ void LLPanelOutfitsInventory::onWearablesLoading()
 // static
 LLSidepanelAppearance* LLPanelOutfitsInventory::getAppearanceSP()
 {
-	static LLSidepanelAppearance* panel_appearance =
-		dynamic_cast<LLSidepanelAppearance*>
-		(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+	LLSidepanelAppearance* panel_appearance =
+		dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
 	return panel_appearance;
 }
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index e3a7b749ea6be37294d2204355fe42feb2988928..9c46f04abfd6399862aeb7d968e1e3a11e9f05ba 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -29,6 +29,7 @@
 // libs
 #include "llavatarname.h"
 #include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llmenubutton.h"
 #include "llmenugl.h"
 #include "llnotificationsutil.h"
@@ -56,7 +57,6 @@
 #include "llinventoryobserver.h"
 #include "llnetmap.h"
 #include "llpanelpeoplemenus.h"
-#include "llsidetray.h"
 #include "llsidetraypanelcontainer.h"
 #include "llrecentpeople.h"
 #include "llviewercontrol.h"		// for gSavedSettings
@@ -526,11 +526,11 @@ LLPanelPeople::~LLPanelPeople()
 		LLVoiceClient::getInstance()->removeObserver(this);
 	}
 
-	LLView::deleteViewByHandle(mGroupPlusMenuHandle);
-	LLView::deleteViewByHandle(mNearbyViewSortMenuHandle);
-	LLView::deleteViewByHandle(mFriendsViewSortMenuHandle);
-	LLView::deleteViewByHandle(mGroupsViewSortMenuHandle);
-	LLView::deleteViewByHandle(mRecentViewSortMenuHandle);
+	if (mGroupPlusMenuHandle.get()) mGroupPlusMenuHandle.get()->die();
+	if (mNearbyViewSortMenuHandle.get()) mNearbyViewSortMenuHandle.get()->die();
+	if (mNearbyViewSortMenuHandle.get()) mNearbyViewSortMenuHandle.get()->die();
+	if (mGroupsViewSortMenuHandle.get()) mGroupsViewSortMenuHandle.get()->die();
+	if (mRecentViewSortMenuHandle.get()) mRecentViewSortMenuHandle.get()->die();
 
 }
 
@@ -1283,6 +1283,10 @@ void LLPanelPeople::onFriendsViewSortMenuItemClicked(const LLSD& userdata)
 		mAllFriendList->showPermissions(show_permissions);
 		mOnlineFriendList->showPermissions(show_permissions);
 	}
+	else if (chosen_item == "panel_block_list_sidetray")
+	{
+		LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+	}
 }
 
 void LLPanelPeople::onGroupsViewSortMenuItemClicked(const LLSD& userdata)
@@ -1315,6 +1319,10 @@ void LLPanelPeople::onNearbyViewSortMenuItemClicked(const LLSD& userdata)
 	{
 		setSortOrder(mNearbyList, E_SORT_BY_DISTANCE);
 	}
+	else if (chosen_item == "panel_block_list_sidetray")
+	{
+		LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+	}
 }
 
 bool LLPanelPeople::onNearbyViewSortMenuItemCheck(const LLSD& userdata)
@@ -1348,6 +1356,10 @@ void LLPanelPeople::onRecentViewSortMenuItemClicked(const LLSD& userdata)
 	{
 		mRecentList->toggleIcons();
 	}
+	else if (chosen_item == "panel_block_list_sidetray")
+	{
+		LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+	}
 }
 
 bool LLPanelPeople::onFriendsViewSortMenuItemCheck(const LLSD& userdata) 
@@ -1439,7 +1451,7 @@ bool LLPanelPeople::notifyChildren(const LLSD& info)
 			container->onOpen(LLSD().with(LLSideTrayPanelContainer::PARAM_SUB_PANEL_NAME, getName()));
 		}
 		else
-			LLSideTray::getInstance()->collapseSideBar();
+			LLFloaterReg::hideInstance("people");
 
 		return true; // this notification is only supposed to be handled by task panels
 	}
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index ddce83c616dbd216191b8ecf26f6e3d74e9e4b1d..cfbc8f1a94de31af71f925184fb24c8ac0dd78e1 100755
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -35,6 +35,7 @@
 #include "lldispatcher.h"
 #include "llflatlistview.h"
 #include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfloaterworldmap.h"
 #include "llnotificationsutil.h"
 #include "lltexturectrl.h"
@@ -48,11 +49,11 @@
 #include "llaccordionctrl.h"
 #include "llaccordionctrltab.h"
 #include "llavatarpropertiesprocessor.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llpanelavatar.h"
 #include "llpanelprofile.h"
 #include "llpanelpick.h"
 #include "llpanelclassified.h"
-#include "llsidetray.h"
 
 static const std::string XML_BTN_NEW = "new_btn";
 static const std::string XML_BTN_DELETE = "trash_btn";
@@ -129,11 +130,14 @@ class LLPickHandler : public LLCommandHandler,
 
 	void createPick()
 	{
-		LLSD params;
-		params["id"] = gAgent.getID();
-		params["open_tab_name"] = "panel_picks";
-		params["show_tab_panel"] = "create_pick";
-		LLSideTray::getInstance()->showPanel("panel_me", params);
+		// open the new pick panel on the Picks floater
+		LLFloater* picks_floater = LLFloaterReg::showInstance("picks");
+
+		LLPanelPicks* picks = picks_floater->findChild<LLPanelPicks>("panel_picks");
+		if (picks)
+		{
+			picks->createNewPick();
+		}
 	}
 
 	void editPick(LLPickData* pick_info)
@@ -146,8 +150,7 @@ class LLPickHandler : public LLCommandHandler,
 		params["snapshot_id"] = pick_info->snapshot_id;
 		params["pick_name"] = pick_info->name;
 		params["pick_desc"] = pick_info->desc;
-		
-		LLSideTray::getInstance()->showPanel("panel_me", params);
+		LLFloaterSidePanelContainer::showPanel("picks", params);
 	}
 	
 	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type)
@@ -247,12 +250,14 @@ class LLClassifiedHandler :
 
 	void createClassified()
 	{
-		// open the new classified panel on the Me > Picks sidetray
-		LLSD params;
-		params["id"] = gAgent.getID();
-		params["open_tab_name"] = "panel_picks";
-		params["show_tab_panel"] = "create_classified";
-		LLSideTray::getInstance()->showPanel("panel_me", params);
+		// open the new classified panel on the Picks floater
+		LLFloater* picks_floater = LLFloaterReg::showInstance("picks");
+
+		LLPanelPicks* picks = picks_floater->findChild<LLPanelPicks>("panel_picks");
+		if (picks)
+		{
+			picks->createNewClassified();
+		}
 	}
 
 	void openClassified(LLAvatarClassifiedInfo* c_info)
@@ -270,7 +275,7 @@ class LLClassifiedHandler :
 			params["classified_name"] = c_info->name;
 			params["classified_desc"] = c_info->description;
 			params["from_search"] = true;
-			LLSideTray::getInstance()->showPanel("panel_profile_view", params);
+			LLFloaterSidePanelContainer::showPanel("picks", params);
 		}
 		else if (mRequestVerb == "edit")
 		{
@@ -283,7 +288,7 @@ class LLClassifiedHandler :
 				params["open_tab_name"] = "panel_picks";
 				params["show_tab_panel"] = "edit_classified";
 				params["classified_id"] = c_info->classified_id;
-				LLSideTray::getInstance()->showPanel("panel_me", params);
+				LLFloaterSidePanelContainer::showPanel("my_profile", params);
 			}
 			else
 			{
@@ -1043,13 +1048,10 @@ void LLPanelPicks::createPickInfoPanel()
 
 void LLPanelPicks::createClassifiedInfoPanel()
 {
-	if(!mPanelClassifiedInfo)
-	{
-		mPanelClassifiedInfo = LLPanelClassifiedInfo::create();
-		mPanelClassifiedInfo->setExitCallback(boost::bind(&LLPanelPicks::onPanelClassifiedClose, this, mPanelClassifiedInfo));
-		mPanelClassifiedInfo->setEditClassifiedCallback(boost::bind(&LLPanelPicks::onPanelClassifiedEdit, this));
-		mPanelClassifiedInfo->setVisible(FALSE);
-	}
+	mPanelClassifiedInfo = LLPanelClassifiedInfo::create();
+	mPanelClassifiedInfo->setExitCallback(boost::bind(&LLPanelPicks::onPanelClassifiedClose, this, mPanelClassifiedInfo));
+	mPanelClassifiedInfo->setEditClassifiedCallback(boost::bind(&LLPanelPicks::onPanelClassifiedEdit, this));
+	mPanelClassifiedInfo->setVisible(FALSE);
 }
 
 void LLPanelPicks::createClassifiedEditPanel(LLPanelClassifiedEdit** panel)
@@ -1067,14 +1069,11 @@ void LLPanelPicks::createClassifiedEditPanel(LLPanelClassifiedEdit** panel)
 
 void LLPanelPicks::createPickEditPanel()
 {
-	if(!mPanelPickEdit)
-	{
-		mPanelPickEdit = LLPanelPickEdit::create();
-		mPanelPickEdit->setExitCallback(boost::bind(&LLPanelPicks::onPanelPickClose, this, mPanelPickEdit));
-		mPanelPickEdit->setSaveCallback(boost::bind(&LLPanelPicks::onPanelPickSave, this, mPanelPickEdit));
-		mPanelPickEdit->setCancelCallback(boost::bind(&LLPanelPicks::onPanelPickClose, this, mPanelPickEdit));
-		mPanelPickEdit->setVisible(FALSE);
-	}
+	mPanelPickEdit = LLPanelPickEdit::create();
+	mPanelPickEdit->setExitCallback(boost::bind(&LLPanelPicks::onPanelPickClose, this, mPanelPickEdit));
+	mPanelPickEdit->setSaveCallback(boost::bind(&LLPanelPicks::onPanelPickSave, this, mPanelPickEdit));
+	mPanelPickEdit->setCancelCallback(boost::bind(&LLPanelPicks::onPanelPickClose, this, mPanelPickEdit));
+	mPanelPickEdit->setVisible(FALSE);
 }
 
 // void LLPanelPicks::openPickEditPanel(LLPickItem* pick)
diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h
index 29db1105233e8304ffe21927d2de447507789f55..3bb7413ac3c16874da8a259680c80466805d19fc 100755
--- a/indra/newview/llpanelpicks.h
+++ b/indra/newview/llpanelpicks.h
@@ -82,6 +82,9 @@ class LLPanelPicks
 	// parent panels failed to work (picks related code was in my profile panel)
 	void setProfilePanel(LLPanelProfile* profile_panel);
 
+	void createNewPick();
+	void createNewClassified();
+
 protected:
 	/*virtual*/void updateButtons();
 
@@ -115,9 +118,6 @@ class LLPanelPicks
 
 	bool onEnableMenuItem(const LLSD& user_data);
 
-	void createNewPick();
-	void createNewClassified();
-
 	void openPickInfo();
 	void openClassifiedInfo();
 	void openClassifiedInfo(const LLSD& params);
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 1e510a2d7b424bbe172e7e4c8a4a47726134f54a..6d321d4716cb1ed708215f4f8be9da6f9d3e5ccb 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -39,6 +39,7 @@
 #include "llfiltereditor.h"
 #include "llfirstuse.h"
 #include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llmenubutton.h"
 #include "llnotificationsutil.h"
 #include "lltabcontainer.h"
@@ -64,7 +65,6 @@
 #include "llpanelplaceprofile.h"
 #include "llpanelteleporthistory.h"
 #include "llremoteparcelrequest.h"
-#include "llsidetray.h"
 #include "llteleporthistorystorage.h"
 #include "lltoggleablemenu.h"
 #include "llviewerinventory.h"
@@ -82,6 +82,7 @@ static const std::string CREATE_LANDMARK_INFO_TYPE	= "create_landmark";
 static const std::string LANDMARK_INFO_TYPE			= "landmark";
 static const std::string REMOTE_PLACE_INFO_TYPE		= "remote_place";
 static const std::string TELEPORT_HISTORY_INFO_TYPE	= "teleport_history";
+static const std::string LANDMARK_TAB_INFO_TYPE     = "open_landmark_tab";
 
 // Support for secondlife:///app/parcel/{UUID}/about SLapps
 class LLParcelHandler : public LLCommandHandler
@@ -115,7 +116,7 @@ class LLParcelHandler : public LLCommandHandler
 				LLSD key;
 				key["type"] = "remote_place";
 				key["id"] = parcel_id;
-				LLSideTray::getInstance()->showPanel("panel_places", key);
+				LLFloaterSidePanelContainer::showPanel("places", key);
 				return true;
 			}
 		}
@@ -151,18 +152,16 @@ class LLPlacesInventoryObserver : public LLInventoryAddedObserver
 {
 public:
 	LLPlacesInventoryObserver(LLPanelPlaces* places_panel) :
-		mPlaces(places_panel),
-		mTabsCreated(false)
+		mPlaces(places_panel)
 	{}
 
 	/*virtual*/ void changed(U32 mask)
 	{
 		LLInventoryAddedObserver::changed(mask);
 
-		if (!mTabsCreated && mPlaces)
+		if (mPlaces && !mPlaces->tabsCreated())
 		{
 			mPlaces->createTabs();
-			mTabsCreated = true;
 		}
 	}
 
@@ -175,7 +174,6 @@ class LLPlacesInventoryObserver : public LLInventoryAddedObserver
 
 private:
 	LLPanelPlaces*		mPlaces;
-	bool				mTabsCreated;
 };
 
 class LLPlacesRemoteParcelInfoObserver : public LLRemoteParcelInfoObserver
@@ -244,7 +242,8 @@ LLPanelPlaces::LLPanelPlaces()
 		mPlaceMenu(NULL),
 		mLandmarkMenu(NULL),
 		mPosGlobal(),
-		isLandmarkEditModeOn(false)
+		isLandmarkEditModeOn(false),
+		mTabsCreated(false)
 {
 	mParcelObserver = new LLPlacesParcelObserver(this);
 	mInventoryObserver = new LLPlacesInventoryObserver(this);
@@ -252,7 +251,7 @@ LLPanelPlaces::LLPanelPlaces()
 
 	gInventory.addObserver(mInventoryObserver);
 
-	LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(
+	mAgentParcelChangedConnection = LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(
 			boost::bind(&LLPanelPlaces::updateVerbs, this));
 
 	//buildFromFile( "panel_places.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder()
@@ -268,6 +267,11 @@ LLPanelPlaces::~LLPanelPlaces()
 	delete mInventoryObserver;
 	delete mParcelObserver;
 	delete mRemoteParcelObserver;
+
+	if (mAgentParcelChangedConnection.connected())
+	{
+		mAgentParcelChangedConnection.disconnect();
+	}
 }
 
 BOOL LLPanelPlaces::postBuild()
@@ -349,6 +353,9 @@ BOOL LLPanelPlaces::postBuild()
 	LLComboBox* folder_combo = mLandmarkInfo->getChild<LLComboBox>("folder_combo");
 	folder_combo->setCommitCallback(boost::bind(&LLPanelPlaces::onEditButtonClicked, this));
 
+	createTabs();
+	updateVerbs();
+
 	return TRUE;
 }
 
@@ -359,83 +366,104 @@ void LLPanelPlaces::onOpen(const LLSD& key)
 
 	if (key.size() != 0)
 	{
-		mFilterEditor->clear();
-		onFilterEdit("", false);
-
-		mPlaceInfoType = key["type"].asString();
-		mPosGlobal.setZero();
-		mItem = NULL;
-		isLandmarkEditModeOn = false;
-		togglePlaceInfoPanel(TRUE);
-
-		if (mPlaceInfoType == AGENT_INFO_TYPE)
+		std::string key_type = key["type"].asString();
+		if (key_type == LANDMARK_TAB_INFO_TYPE)
 		{
-			mPlaceProfile->setInfoType(LLPanelPlaceInfo::AGENT);
+			// Small hack: We need to toggle twice. The first toggle moves from the Landmark 
+			// or Teleport History info panel to the Landmark or Teleport History list panel.
+			// For this first toggle, the mPlaceInfoType should be the one previously used so 
+			// that the state can be corretly set.
+			// The second toggle forces the list to be set to Landmark.
+			// This avoids extracting and duplicating all the state logic from togglePlaceInfoPanel() 
+			// here or some specific private method
+			togglePlaceInfoPanel(FALSE);
+			mPlaceInfoType = key_type;
+			togglePlaceInfoPanel(FALSE);
+			// Update the active tab
+			onTabSelected();
+			// Update the buttons at the bottom of the panel
+			updateVerbs();
 		}
-		else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE)
+		else
 		{
-			mLandmarkInfo->setInfoType(LLPanelPlaceInfo::CREATE_LANDMARK);
+			mFilterEditor->clear();
+			onFilterEdit("", false);
 
-			if (key.has("x") && key.has("y") && key.has("z"))
+			mPlaceInfoType = key_type;
+			mPosGlobal.setZero();
+			mItem = NULL;
+			isLandmarkEditModeOn = false;
+			togglePlaceInfoPanel(TRUE);
+
+			if (mPlaceInfoType == AGENT_INFO_TYPE)
 			{
-				mPosGlobal = LLVector3d(key["x"].asReal(),
-										key["y"].asReal(),
-										key["z"].asReal());
+				mPlaceProfile->setInfoType(LLPanelPlaceInfo::AGENT);
 			}
-			else
+			else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE)
 			{
-				mPosGlobal = gAgent.getPositionGlobal();
+				mLandmarkInfo->setInfoType(LLPanelPlaceInfo::CREATE_LANDMARK);
+
+				if (key.has("x") && key.has("y") && key.has("z"))
+				{
+					mPosGlobal = LLVector3d(key["x"].asReal(),
+											key["y"].asReal(),
+											key["z"].asReal());
+				}
+				else
+				{
+					mPosGlobal = gAgent.getPositionGlobal();
+				}
+
+				mLandmarkInfo->displayParcelInfo(LLUUID(), mPosGlobal);
+
+				mSaveBtn->setEnabled(FALSE);
 			}
-
-			mLandmarkInfo->displayParcelInfo(LLUUID(), mPosGlobal);
-
-			mSaveBtn->setEnabled(FALSE);
-		}
-		else if (mPlaceInfoType == LANDMARK_INFO_TYPE)
-		{
-			mLandmarkInfo->setInfoType(LLPanelPlaceInfo::LANDMARK);
-
-			LLInventoryItem* item = gInventory.getItem(key["id"].asUUID());
-			if (!item)
-				return;
-
-			setItem(item);
-		}
-		else if (mPlaceInfoType == REMOTE_PLACE_INFO_TYPE)
-		{
-			if (key.has("id"))
+			else if (mPlaceInfoType == LANDMARK_INFO_TYPE)
 			{
-				LLUUID parcel_id = key["id"].asUUID();
-				mPlaceProfile->setParcelID(parcel_id);
+				mLandmarkInfo->setInfoType(LLPanelPlaceInfo::LANDMARK);
 
-				// query the server to get the global 3D position of this
-				// parcel - we need this for teleport/mapping functions.
-				mRemoteParcelObserver->setParcelID(parcel_id);
+				LLInventoryItem* item = gInventory.getItem(key["id"].asUUID());
+				if (!item)
+					return;
+
+				setItem(item);
 			}
-			else
+			else if (mPlaceInfoType == REMOTE_PLACE_INFO_TYPE)
 			{
-				mPosGlobal = LLVector3d(key["x"].asReal(),
-										key["y"].asReal(),
-										key["z"].asReal());
-				mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal);
+				if (key.has("id"))
+				{
+					LLUUID parcel_id = key["id"].asUUID();
+					mPlaceProfile->setParcelID(parcel_id);
+
+					// query the server to get the global 3D position of this
+					// parcel - we need this for teleport/mapping functions.
+					mRemoteParcelObserver->setParcelID(parcel_id);
+				}
+				else
+				{
+					mPosGlobal = LLVector3d(key["x"].asReal(),
+											key["y"].asReal(),
+											key["z"].asReal());
+					mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal);
+				}
+
+				mPlaceProfile->setInfoType(LLPanelPlaceInfo::PLACE);
 			}
+			else if (mPlaceInfoType == TELEPORT_HISTORY_INFO_TYPE)
+			{
+				S32 index = key["id"].asInteger();
 
-			mPlaceProfile->setInfoType(LLPanelPlaceInfo::PLACE);
-		}
-		else if (mPlaceInfoType == TELEPORT_HISTORY_INFO_TYPE)
-		{
-			S32 index = key["id"].asInteger();
+				const LLTeleportHistoryStorage::slurl_list_t& hist_items =
+							LLTeleportHistoryStorage::getInstance()->getItems();
 
-			const LLTeleportHistoryStorage::slurl_list_t& hist_items =
-						LLTeleportHistoryStorage::getInstance()->getItems();
+				mPosGlobal = hist_items[index].mGlobalPos;
 
-			mPosGlobal = hist_items[index].mGlobalPos;
+				mPlaceProfile->setInfoType(LLPanelPlaceInfo::TELEPORT_HISTORY);
+				mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal);
+			}
 
-			mPlaceProfile->setInfoType(LLPanelPlaceInfo::TELEPORT_HISTORY);
-			mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal);
+			updateVerbs();
 		}
-
-		updateVerbs();
 	}
 
 	LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance();
@@ -936,7 +964,8 @@ void LLPanelPlaces::togglePlaceInfoPanel(BOOL visible)
 		}
 	}
 	else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE ||
-			 mPlaceInfoType == LANDMARK_INFO_TYPE)
+			 mPlaceInfoType == LANDMARK_INFO_TYPE ||
+			 mPlaceInfoType == LANDMARK_TAB_INFO_TYPE)
 	{
 		mLandmarkInfo->setVisible(visible);
 
@@ -954,13 +983,15 @@ void LLPanelPlaces::togglePlaceInfoPanel(BOOL visible)
 		{
 			LLLandmarksPanel* landmarks_panel =
 					dynamic_cast<LLLandmarksPanel*>(mTabContainer->getPanelByName("Landmarks"));
-			if (landmarks_panel && mItem.notNull())
+			if (landmarks_panel)
 			{
 				// If a landmark info is being closed we open the landmarks tab
 				// and set this landmark selected.
 				mTabContainer->selectTabPanel(landmarks_panel);
-
-				landmarks_panel->setItemSelected(mItem->getUUID(), TRUE);
+				if (mItem.notNull())
+				{
+					landmarks_panel->setItemSelected(mItem->getUUID(), TRUE);
+				}
 			}
 		}
 	}
@@ -1025,7 +1056,7 @@ void LLPanelPlaces::changedParcelSelection()
 
 void LLPanelPlaces::createTabs()
 {
-	if (!(gInventory.isInventoryUsable() && LLTeleportHistory::getInstance()))
+	if (!(gInventory.isInventoryUsable() && LLTeleportHistory::getInstance() && !mTabsCreated))
 		return;
 
 	LLLandmarksPanel* landmarks_panel = new LLLandmarksPanel();
@@ -1059,6 +1090,8 @@ void LLPanelPlaces::createTabs()
 	// Filter applied to show all items.
 	if (mActivePanel)
 		mActivePanel->onSearchEdit(mActivePanel->getFilterSubString());
+
+	mTabsCreated = true;
 }
 
 void LLPanelPlaces::changedGlobalPos(const LLVector3d &global_pos)
@@ -1155,7 +1188,8 @@ LLPanelPlaceInfo* LLPanelPlaces::getCurrentInfoPanel()
 		return mPlaceProfile;
 	}
 	else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE ||
-			 mPlaceInfoType == LANDMARK_INFO_TYPE)
+			 mPlaceInfoType == LANDMARK_INFO_TYPE ||
+			 mPlaceInfoType == LANDMARK_TAB_INFO_TYPE)
 	{
 		return mLandmarkInfo;
 	}
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index b335f88a48451c14598561443302b1e6b85000e3..85bdc2c4e1fcbc6b582efb506cbde868a37ffa91 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -77,6 +77,8 @@ class LLPanelPlaces : public LLPanel
 
 	std::string getPlaceInfoType() { return mPlaceInfoType; }
 
+	bool tabsCreated() { return mTabsCreated;}
+
 	/*virtual*/ S32 notifyParent(const LLSD& info);
 
 private:
@@ -146,7 +148,12 @@ class LLPanelPlaces : public LLPanel
 
 	bool						isLandmarkEditModeOn;
 
+	// Holds info whether "My Landmarks" and "Teleport History" tabs have been created.
+	bool						mTabsCreated;
+
 	LLSafeHandle<LLParcelSelection>	mParcel;
+
+	boost::signals2::connection mAgentParcelChangedConnection;
 };
 
 #endif //LL_LLPANELPLACES_H
diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp
index 933b40ec7914955cdb2a4bc42eb242ee557f338c..39c0628cbe00c04cc3aa65a0b2df88ffaa59ccbd 100644
--- a/indra/newview/llpanelprimmediacontrols.cpp
+++ b/indra/newview/llpanelprimmediacontrols.cpp
@@ -1351,7 +1351,6 @@ void LLPanelPrimMediaControls::showNotification(LLNotificationPtr notify)
 	LLWindowShade::Params params;
 	params.rect = mMediaRegion->getLocalRect();
 	params.follows.flags = FOLLOWS_ALL;
-	params.notification = notify;
 
 	//HACK: don't hardcode this
 	if (notify->getIcon() == "Popup_Caution")
@@ -1369,7 +1368,7 @@ void LLPanelPrimMediaControls::showNotification(LLNotificationPtr notify)
 	mWindowShade = LLUICtrlFactory::create<LLWindowShade>(params);
 
 	mMediaRegion->addChild(mWindowShade);
-	mWindowShade->show();
+	mWindowShade->show(notify);
 }
 
 void LLPanelPrimMediaControls::hideNotification()
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index fd5c3362bb7f5fd1c82a328fd77fff207a5fedd8..e2e70067737035f532ae343562829e84a3361e7d 100755
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -38,7 +38,6 @@
 #include "llviewernetwork.h"
 
 static const std::string PANEL_PICKS = "panel_picks";
-static const std::string PANEL_PROFILE = "panel_profile";
 
 std::string getProfileURL(const std::string& agent_name)
 {
@@ -72,7 +71,7 @@ class LLProfileHandler : public LLCommandHandler
 		std::string agent_name = params[0];
 		llinfos << "Profile, agent_name " << agent_name << llendl;
 		std::string url = getProfileURL(agent_name);
-		LLWeb::loadWebURLInternal(url);
+		LLWeb::loadURLInternal(url);
 
 		return true;
 	}
@@ -168,6 +167,23 @@ LLPanelProfile::ChildStack::ChildStack()
 {
 }
 
+LLPanelProfile::ChildStack::~ChildStack()
+{
+	while (mStack.size() != 0)
+	{
+		view_list_t& top = mStack.back();
+		for (view_list_t::const_iterator it = top.begin(); it != top.end(); ++it)
+		{
+			LLView* viewp = *it;
+			if (viewp)
+			{
+				viewp->die();
+			}
+		}
+		mStack.pop_back();
+	}
+}
+
 void LLPanelProfile::ChildStack::setParent(LLPanel* parent)
 {
 	llassert_always(parent != NULL);
@@ -261,7 +277,6 @@ void LLPanelProfile::ChildStack::dump()
 
 LLPanelProfile::LLPanelProfile()
  : LLPanel()
- , mTabCtrl(NULL)
  , mAvatarId(LLUUID::null)
 {
 	mChildStack.setParent(this);
@@ -269,15 +284,10 @@ LLPanelProfile::LLPanelProfile()
 
 BOOL LLPanelProfile::postBuild()
 {
-	mTabCtrl = getChild<LLTabContainer>("tabs");
-
-	getTabCtrl()->setCommitCallback(boost::bind(&LLPanelProfile::onTabSelected, this, _2));
-
 	LLPanelPicks* panel_picks = findChild<LLPanelPicks>(PANEL_PICKS);
 	panel_picks->setProfilePanel(this);
 
 	getTabContainer()[PANEL_PICKS] = panel_picks;
-	getTabContainer()[PANEL_PROFILE] = findChild<LLPanelAvatarProfile>(PANEL_PROFILE);
 
 	return TRUE;
 }
@@ -293,18 +303,7 @@ void LLPanelProfile::reshape(S32 width, S32 height, BOOL called_from_parent)
 
 void LLPanelProfile::onOpen(const LLSD& key)
 {
-	// open the desired panel
-	if (key.has("open_tab_name"))
-	{
-		getTabContainer()[PANEL_PICKS]->onClosePanel();
-
-		// onOpen from selected panel will be called from onTabSelected callback
-		getTabCtrl()->selectTabByName(key["open_tab_name"]);
-	}
-	else
-	{
-		getTabCtrl()->getCurrentPanel()->onOpen(getAvatarId());
-	}
+	getTabContainer()[PANEL_PICKS]->onOpen(getAvatarId());
 
 	// support commands to open further pieces of UI
 	if (key.has("show_tab_panel"))
@@ -362,23 +361,6 @@ void LLPanelProfile::onOpen(const LLSD& key)
 	}
 }
 
-void LLPanelProfile::togglePanel(LLPanel* panel, const LLSD& key)
-{
-	// TRUE - we need to open/expand "panel"
-	bool expand = getChildList()->front() != panel;  // mTabCtrl->getVisible();
-
-	if (expand)
-	{
-		openPanel(panel, key);
-	}
-	else 
-	{
-		closePanel(panel);
-
-		getTabCtrl()->getCurrentPanel()->onOpen(getAvatarId());
-	}
-}
-
 void LLPanelProfile::onTabSelected(const LLSD& param)
 {
 	std::string tab_name = param.asString();
diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h
index fca359f51e1295ef68583dbdd6546c9ffe501498..d97f60ed229ab16320932951e9a13c896e9b7177 100755
--- a/indra/newview/llpanelprofile.h
+++ b/indra/newview/llpanelprofile.h
@@ -46,8 +46,6 @@ class LLPanelProfile : public LLPanel
 	/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
 	/*virtual*/ void onOpen(const LLSD& key);
 
-	virtual void togglePanel(LLPanel*, const LLSD& key = LLSD());
-
 	virtual void openPanel(LLPanel* panel, const LLSD& params);
 
 	virtual void closePanel(LLPanel* panel);
@@ -60,8 +58,6 @@ class LLPanelProfile : public LLPanel
 
 	virtual void onTabSelected(const LLSD& param);
 
-	LLTabContainer* getTabCtrl() { return mTabCtrl; }
-
 	const LLUUID& getAvatarId() { return mAvatarId; }
 
 	void setAvatarId(const LLUUID& avatar_id) { mAvatarId = avatar_id; }
@@ -78,6 +74,7 @@ class LLPanelProfile : public LLPanel
 		LOG_CLASS(LLPanelProfile::ChildStack);
 	public:
 		ChildStack();
+		~ChildStack();
 		void setParent(LLPanel* parent);
 
 		bool push();
@@ -97,7 +94,6 @@ class LLPanelProfile : public LLPanel
 	};
 	//-- ChildStack ends ------------------------------------------------------
 
-	LLTabContainer* mTabCtrl;	
 	profile_tabs_t mTabContainer;
 	ChildStack		mChildStack;
 	LLUUID mAvatarId;
diff --git a/indra/newview/llpanelprofileview.cpp b/indra/newview/llpanelprofileview.cpp
deleted file mode 100644
index 7635aedf58483234a6c2baaf0a382333ceacc503..0000000000000000000000000000000000000000
--- a/indra/newview/llpanelprofileview.cpp
+++ /dev/null
@@ -1,247 +0,0 @@
-/** 
-* @file llpanelprofileview.cpp
-* @brief Side tray "Profile View" 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 "llpanelprofileview.h"
-
-#include "llavatarconstants.h"
-#include "llavatarnamecache.h"	// IDEVO
-#include "llclipboard.h"
-#include "lluserrelations.h"
-
-#include "llavatarpropertiesprocessor.h"
-#include "llcallingcard.h"
-#include "llpanelavatar.h"
-#include "llpanelpicks.h"
-#include "llpanelprofile.h"
-#include "llsidetraypanelcontainer.h"
-
-static LLRegisterPanelClassWrapper<LLPanelProfileView> t_panel_target_profile("panel_profile_view");
-
-static std::string PANEL_NOTES = "panel_notes";
-static const std::string PANEL_PROFILE = "panel_profile";
-static const std::string PANEL_PICKS = "panel_picks";
-
-
-class AvatarStatusObserver : public LLAvatarPropertiesObserver
-{
-public:
-	AvatarStatusObserver(LLPanelProfileView* profile_view)
-	{
-		mProfileView = profile_view;
-	}
-
-	void processProperties(void* data, EAvatarProcessorType type)
-	{
-		if(APT_PROPERTIES != type) return;
-		const LLAvatarData* avatar_data = static_cast<const LLAvatarData*>(data);
-		if(avatar_data && mProfileView->getAvatarId() == avatar_data->avatar_id)
-		{
-			mProfileView->processOnlineStatus(avatar_data->flags & AVATAR_ONLINE);
-			LLAvatarPropertiesProcessor::instance().removeObserver(mProfileView->getAvatarId(), this);
-		}
-	}
-
-	void subscribe()
-	{
-		LLAvatarPropertiesProcessor::instance().addObserver(mProfileView->getAvatarId(), this);
-	}
-
-private:
-	LLPanelProfileView* mProfileView;
-};
-
-LLPanelProfileView::LLPanelProfileView()
-:	LLPanelProfile()
-,	mStatusText(NULL)
-,	mAvatarStatusObserver(NULL)
-{
-	mAvatarStatusObserver = new AvatarStatusObserver(this);
-}
-
-LLPanelProfileView::~LLPanelProfileView(void)
-{
-	delete mAvatarStatusObserver;
-}
-
-/*virtual*/ 
-void LLPanelProfileView::onOpen(const LLSD& key)
-{
-	LLUUID id;
-	if(key.has("id"))
-	{
-		id = key["id"];
-	}
-
-	if(id.notNull() && getAvatarId() != id)
-	{
-		setAvatarId(id);
-
-		// clear name fields, which might have old data
-		getChild<LLUICtrl>("user_name")->setValue( LLSD() );
-		getChild<LLUICtrl>("user_slid")->setValue( LLSD() );
-	}
-
-	// Update the avatar name.
-	LLAvatarNameCache::get(getAvatarId(),
-		boost::bind(&LLPanelProfileView::onAvatarNameCache, this, _1, _2));
-
-	updateOnlineStatus();
-
-
-	LLPanelProfile::onOpen(key);
-}
-
-BOOL LLPanelProfileView::postBuild()
-{
-	LLPanelProfile::postBuild();
-
-	getTabContainer()[PANEL_NOTES] = findChild<LLPanelAvatarNotes>(PANEL_NOTES);
-	
-	//*TODO remove this, according to style guide we don't use status combobox
-	getTabContainer()[PANEL_PROFILE]->getChildView("online_me_status_text")->setVisible( FALSE);
-	getTabContainer()[PANEL_PROFILE]->getChildView("status_combo")->setVisible( FALSE);
-
-	mStatusText = getChild<LLTextBox>("status");
-	mStatusText->setVisible(false);
-
-	childSetCommitCallback("back",boost::bind(&LLPanelProfileView::onBackBtnClick,this),NULL);
-	childSetCommitCallback("copy_to_clipboard",boost::bind(&LLPanelProfileView::onCopyToClipboard,this),NULL);
-		
-	return TRUE;
-}
-
-
-//private
-
-void LLPanelProfileView::onBackBtnClick()
-{
-	// Set dummy value to make picks panel dirty, 
-	// This will make Picks reload on next open.
-	getTabContainer()[PANEL_PICKS]->setValue(LLSD());
-
-	LLSideTrayPanelContainer* parent = dynamic_cast<LLSideTrayPanelContainer*>(getParent());
-	if(parent)
-	{
-		parent->openPreviousPanel();
-	}
-}
-
-void LLPanelProfileView::onCopyToClipboard()
-{
-	std::string name = getChild<LLUICtrl>("user_name")->getValue().asString() + " (" + getChild<LLUICtrl>("user_slid")->getValue().asString() + ")";
-	gClipboard.copyFromString(utf8str_to_wstring(name));
-}
-
-bool LLPanelProfileView::isGrantedToSeeOnlineStatus()
-{
-	const LLRelationship* relationship = LLAvatarTracker::instance().getBuddyInfo(getAvatarId());
-	if (NULL == relationship)
-		return false;
-
-	// *NOTE: GRANT_ONLINE_STATUS is always set to false while changing any other status.
-	// When avatar disallow me to see her online status processOfflineNotification Message is received by the viewer
-	// see comments for ChangeUserRights template message. EXT-453.
-	// If GRANT_ONLINE_STATUS flag is changed it will be applied when viewer restarts. EXT-3880
-	return relationship->isRightGrantedFrom(LLRelationship::GRANT_ONLINE_STATUS);
-}
-
-// method was disabled according to EXT-2022. Re-enabled & improved according to EXT-3880
-void LLPanelProfileView::updateOnlineStatus()
-{
-	// set text box visible to show online status for non-friends who has not set in Preferences
-	// "Only Friends & Groups can see when I am online"
-	mStatusText->setVisible(TRUE);
-
-	const LLRelationship* relationship = LLAvatarTracker::instance().getBuddyInfo(getAvatarId());
-	if (NULL == relationship)
-	{
-		// this is non-friend avatar. Status will be updated from LLAvatarPropertiesProcessor.
-		// in LLPanelProfileView::processOnlineStatus()
-
-		// subscribe observer to get online status. Request will be sent by LLPanelAvatarProfile itself.
-		// do not subscribe for friend avatar because online status can be wrong overridden
-		// via LLAvatarData::flags if Preferences: "Only Friends & Groups can see when I am online" is set.
-		mAvatarStatusObserver->subscribe();
-		return;
-	}
-	// For friend let check if he allowed me to see his status
-
-	// status should only show if viewer has permission to view online/offline. EXT-453, EXT-3880
-	mStatusText->setVisible(isGrantedToSeeOnlineStatus());
-
-	bool online = relationship->isOnline();
-	processOnlineStatus(online);
-}
-
-void LLPanelProfileView::processOnlineStatus(bool online)
-{
-	std::string status = getString(online ? "status_online" : "status_offline");
-
-	mStatusText->setValue(status);
-}
-
-void LLPanelProfileView::onAvatarNameCache(const LLUUID& agent_id,
-										   const LLAvatarName& av_name)
-{
-	getChild<LLUICtrl>("user_name")->setValue( av_name.mDisplayName );
-	getChild<LLUICtrl>("user_name_small")->setValue( av_name.mDisplayName );
-	getChild<LLUICtrl>("user_slid")->setValue( av_name.mUsername );
-
-	// show smaller display name if too long to display in regular size
-	if (getChild<LLTextBox>("user_name")->getTextPixelWidth() > getChild<LLTextBox>("user_name")->getRect().getWidth())
-	{
-		getChild<LLUICtrl>("user_name_small")->setVisible( true );
-		getChild<LLUICtrl>("user_name")->setVisible( false );
-	}
-	else
-	{
-		getChild<LLUICtrl>("user_name_small")->setVisible( false );
-		getChild<LLUICtrl>("user_name")->setVisible( true );
-	}
-
-	if (LLAvatarNameCache::useDisplayNames())
-	{
-		getChild<LLUICtrl>("user_label")->setVisible( true );
-		getChild<LLUICtrl>("user_slid")->setVisible( true );
-		getChild<LLUICtrl>("display_name_label")->setVisible( true );
-		getChild<LLUICtrl>("copy_to_clipboard")->setVisible( true );
-		getChild<LLUICtrl>("copy_to_clipboard")->setEnabled( true );
-		getChild<LLUICtrl>("solo_username_label")->setVisible( false );
-	}
-	else
-	{
-		getChild<LLUICtrl>("user_label")->setVisible( false );
-		getChild<LLUICtrl>("user_slid")->setVisible( false );
-		getChild<LLUICtrl>("display_name_label")->setVisible( false );
-		getChild<LLUICtrl>("copy_to_clipboard")->setVisible( false );
-		getChild<LLUICtrl>("copy_to_clipboard")->setEnabled( false );
-		getChild<LLUICtrl>("solo_username_label")->setVisible( true );
-	}
-}
-
-// EOF
diff --git a/indra/newview/llpanelprofileview.h b/indra/newview/llpanelprofileview.h
deleted file mode 100644
index c6d921fdc40eeb37cc175b37148e56b56d68e78f..0000000000000000000000000000000000000000
--- a/indra/newview/llpanelprofileview.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/** 
-* @file llpanelprofileview.h
-* @brief Side tray "Profile View" 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$
-*/
-
-#ifndef LL_LLPANELPROFILEVIEW_H
-#define LL_LLPANELPROFILEVIEW_H
-
-#include "llpanel.h"
-#include "llpanelprofile.h"
-#include "llavatarpropertiesprocessor.h"
-#include "llagent.h"
-#include "lltooldraganddrop.h"
-
-class LLAvatarName;
-class LLPanelProfile;
-class LLPanelProfileTab;
-class LLTextBox;
-class AvatarStatusObserver;
-
-/**
-* Panel for displaying Avatar's profile. It consists of three sub panels - Profile,
-* Picks and Notes.
-*/
-class LLPanelProfileView : public LLPanelProfile
-{
-	LOG_CLASS(LLPanelProfileView);
-	friend class LLUICtrlFactory;
-	friend class AvatarStatusObserver;
-
-public:
-
-	LLPanelProfileView();
-
-	/*virtual*/ ~LLPanelProfileView();
-
-	/*virtual*/ void onOpen(const LLSD& key);
-	
-	/*virtual*/ BOOL postBuild();
-
-	BOOL handleDragAndDrop(S32 x, S32 y, MASK mask,
-						   BOOL drop, EDragAndDropType cargo_type,
-						   void *cargo_data, EAcceptance *accept,
-						   std::string& tooltip_msg)
-	{
-		LLToolDragAndDrop::handleGiveDragAndDrop(getAvatarId(), gAgent.getSessionID(), drop,
-				 cargo_type, cargo_data, accept);
-
-		return TRUE;
-	}
-
-
-protected:
-
-	void onBackBtnClick();
-	void onCopyToClipboard();
-	bool isGrantedToSeeOnlineStatus();
-
-	/**
-	 * Displays avatar's online status if possible.
-	 *
-	 * Requirements from EXT-3880:
-	 * For friends:
-	 * - Online when online and privacy settings allow to show
-	 * - Offline when offline and privacy settings allow to show
-	 * - Else: nothing
-	 * For other avatars:
-	 *  - Online when online and was not set in Preferences/"Only Friends & Groups can see when I am online"
-	 *  - Else: Offline
-	 */
-	void updateOnlineStatus();
-	void processOnlineStatus(bool online);
-
-private:
-	// LLCacheName will call this function when avatar name is loaded from server.
-	// This is required to display names that have not been cached yet.
-//	void onNameCache(
-//		const LLUUID& id, 
-//		const std::string& full_name,
-//		bool is_group);
-	void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
-
-	LLTextBox* mStatusText;
-	AvatarStatusObserver* mAvatarStatusObserver;
-};
-
-#endif //LL_LLPANELPROFILEVIEW_H
diff --git a/indra/newview/llpanelsnapshot.cpp b/indra/newview/llpanelsnapshot.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..2f29e758c6bb7aa676ee882ae4ed3794a5780447
--- /dev/null
+++ b/indra/newview/llpanelsnapshot.cpp
@@ -0,0 +1,201 @@
+/** 
+ * @file llpanelsnapshot.cpp
+ * @brief Snapshot panel base class
+ *
+ * $LicenseInfo:firstyear=2011&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 "llviewerprecompiledheaders.h"
+#include "llpanelsnapshot.h"
+
+// libs
+#include "llcombobox.h"
+#include "llsliderctrl.h"
+#include "llspinctrl.h"
+#include "lltrans.h"
+
+// newview
+#include "llsidetraypanelcontainer.h"
+#include "llviewercontrol.h" // gSavedSettings
+
+// virtual
+BOOL LLPanelSnapshot::postBuild()
+{
+	getChild<LLUICtrl>(getImageSizeComboName())->setCommitCallback(boost::bind(&LLPanelSnapshot::onResolutionComboCommit, this, _1));
+	getChild<LLUICtrl>(getWidthSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshot::onCustomResolutionCommit, this));
+	getChild<LLUICtrl>(getHeightSpinnerName())->setCommitCallback(boost::bind(&LLPanelSnapshot::onCustomResolutionCommit, this));
+	getChild<LLUICtrl>(getAspectRatioCBName())->setCommitCallback(boost::bind(&LLPanelSnapshot::onKeepAspectRatioCommit, this, _1));
+
+	updateControls(LLSD());
+	return TRUE;
+}
+
+// virtual
+void LLPanelSnapshot::onOpen(const LLSD& key)
+{
+	S32 old_format = gSavedSettings.getS32("SnapshotFormat");
+	S32 new_format = (S32) getImageFormat();
+
+	gSavedSettings.setS32("SnapshotFormat", new_format);
+	setCtrlsEnabled(true);
+
+	// Switching panels will likely change image format.
+	// Not updating preview right away may lead to errors,
+	// e.g. attempt to send a large BMP image by email.
+	if (old_format != new_format)
+	{
+		LLFloaterSnapshot::getInstance()->notify(LLSD().with("image-format-change", true));
+	}
+
+	updateCustomResControls();
+}
+
+LLFloaterSnapshot::ESnapshotFormat LLPanelSnapshot::getImageFormat() const
+{
+	return LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG;
+}
+
+void LLPanelSnapshot::enableControls(BOOL enable)
+{
+	setCtrlsEnabled(enable);
+	if (enable)
+	{
+		// Make sure only relevant controls are enabled/shown.
+		updateCustomResControls();
+	}
+}
+
+LLSpinCtrl* LLPanelSnapshot::getWidthSpinner()
+{
+	return getChild<LLSpinCtrl>(getWidthSpinnerName());
+}
+
+LLSpinCtrl* LLPanelSnapshot::getHeightSpinner()
+{
+	return getChild<LLSpinCtrl>(getHeightSpinnerName());
+}
+
+S32 LLPanelSnapshot::getTypedPreviewWidth() const
+{
+	return getChild<LLUICtrl>(getWidthSpinnerName())->getValue().asInteger();
+}
+
+S32 LLPanelSnapshot::getTypedPreviewHeight() const
+{
+	return getChild<LLUICtrl>(getHeightSpinnerName())->getValue().asInteger();
+}
+
+void LLPanelSnapshot::enableAspectRatioCheckbox(BOOL enable)
+{
+	getChild<LLUICtrl>(getAspectRatioCBName())->setEnabled(enable);
+}
+
+LLSideTrayPanelContainer* LLPanelSnapshot::getParentContainer()
+{
+	LLSideTrayPanelContainer* parent = dynamic_cast<LLSideTrayPanelContainer*>(getParent());
+	if (!parent)
+	{
+		llwarns << "Cannot find panel container" << llendl;
+		return NULL;
+	}
+
+	return parent;
+}
+
+// virtual
+void LLPanelSnapshot::updateCustomResControls()
+{
+	// Only show width/height spinners and the aspect ratio checkbox
+	// when a custom resolution is chosen.
+	LLComboBox* combo = getChild<LLComboBox>(getImageSizeComboName());
+	const bool show = combo->getFirstSelectedIndex() == (combo->getItemCount() - 1);
+	getChild<LLUICtrl>(getImageSizePanelName())->setVisible(show);
+}
+
+void LLPanelSnapshot::updateImageQualityLevel()
+{
+	LLSliderCtrl* quality_slider = getChild<LLSliderCtrl>("image_quality_slider");
+	S32 quality_val = llfloor((F32) quality_slider->getValue().asReal());
+
+	std::string quality_lvl;
+
+	if (quality_val < 20)
+	{
+		quality_lvl = LLTrans::getString("snapshot_quality_very_low");
+	}
+	else if (quality_val < 40)
+	{
+		quality_lvl = LLTrans::getString("snapshot_quality_low");
+	}
+	else if (quality_val < 60)
+	{
+		quality_lvl = LLTrans::getString("snapshot_quality_medium");
+	}
+	else if (quality_val < 80)
+	{
+		quality_lvl = LLTrans::getString("snapshot_quality_high");
+	}
+	else
+	{
+		quality_lvl = LLTrans::getString("snapshot_quality_very_high");
+	}
+
+	getChild<LLTextBox>("image_quality_level")->setTextArg("[QLVL]", quality_lvl);
+}
+
+void LLPanelSnapshot::goBack()
+{
+	LLSideTrayPanelContainer* parent = getParentContainer();
+	if (parent)
+	{
+		parent->openPreviousPanel();
+		parent->getCurrentPanel()->onOpen(LLSD());
+	}
+}
+
+void LLPanelSnapshot::cancel()
+{
+	goBack();
+	LLFloaterSnapshot::getInstance()->notify(LLSD().with("set-ready", true));
+}
+
+void LLPanelSnapshot::onCustomResolutionCommit()
+{
+	LLSD info;
+	info["w"] = getChild<LLUICtrl>(getWidthSpinnerName())->getValue().asInteger();
+	info["h"] = getChild<LLUICtrl>(getHeightSpinnerName())->getValue().asInteger();
+	LLFloaterSnapshot::getInstance()->notify(LLSD().with("custom-res-change", info));
+}
+
+void LLPanelSnapshot::onResolutionComboCommit(LLUICtrl* ctrl)
+{
+	updateCustomResControls();
+
+	LLSD info;
+	info["combo-res-change"]["control-name"] = ctrl->getName();
+	LLFloaterSnapshot::getInstance()->notify(info);
+}
+
+void LLPanelSnapshot::onKeepAspectRatioCommit(LLUICtrl* ctrl)
+{
+	LLFloaterSnapshot::getInstance()->notify(LLSD().with("keep-aspect-change", ctrl->getValue().asBoolean()));
+}
diff --git a/indra/newview/llpanelsnapshot.h b/indra/newview/llpanelsnapshot.h
new file mode 100644
index 0000000000000000000000000000000000000000..f3274cf5940988672b29067d44dc58ebf5f219cc
--- /dev/null
+++ b/indra/newview/llpanelsnapshot.h
@@ -0,0 +1,71 @@
+/** 
+ * @file llpanelsnapshot.h
+ * @brief Snapshot panel base class
+ *
+ * $LicenseInfo:firstyear=2011&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$
+ */
+
+#ifndef LL_LLPANELSNAPSHOT_H
+#define LL_LLPANELSNAPSHOT_H
+
+#include "llfloatersnapshot.h"
+
+class LLSideTrayPanelContainer;
+
+/**
+ * Snapshot panel base class.
+ */
+class LLPanelSnapshot: public LLPanel
+{
+public:
+	/*virtual*/ BOOL postBuild();
+	/*virtual*/ void onOpen(const LLSD& key);
+
+	virtual std::string getWidthSpinnerName() const = 0;
+	virtual std::string getHeightSpinnerName() const = 0;
+	virtual std::string getAspectRatioCBName() const = 0;
+	virtual std::string getImageSizeComboName() const = 0;
+	virtual std::string getImageSizePanelName() const = 0;
+
+	virtual S32 getTypedPreviewWidth() const;
+	virtual S32 getTypedPreviewHeight() const;
+	virtual LLSpinCtrl* getWidthSpinner();
+	virtual LLSpinCtrl* getHeightSpinner();
+	virtual void enableAspectRatioCheckbox(BOOL enable);
+	virtual LLFloaterSnapshot::ESnapshotFormat getImageFormat() const;
+	virtual void updateControls(const LLSD& info) = 0; ///< Update controls from saved settings
+	void enableControls(BOOL enable);
+
+protected:
+	LLSideTrayPanelContainer* getParentContainer();
+	virtual void updateCustomResControls();
+	void updateImageQualityLevel();
+	void goBack(); ///< Switch to the default (Snapshot Options) panel
+	void cancel();
+
+	// common UI callbacks
+	void onCustomResolutionCommit();
+	void onResolutionComboCommit(LLUICtrl* ctrl);
+	void onKeepAspectRatioCommit(LLUICtrl* ctrl);
+};
+
+#endif // LL_LLPANELSNAPSHOT_H
diff --git a/indra/newview/llpanelsnapshotinventory.cpp b/indra/newview/llpanelsnapshotinventory.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..381c11348d58084db53d1914060313dc1b020493
--- /dev/null
+++ b/indra/newview/llpanelsnapshotinventory.cpp
@@ -0,0 +1,109 @@
+/** 
+ * @file llpanelsnapshotinventory.cpp
+ * @brief The panel provides UI for saving snapshot as an inventory texture.
+ *
+ * $LicenseInfo:firstyear=2011&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 "llviewerprecompiledheaders.h"
+
+#include "llcombobox.h"
+#include "lleconomy.h"
+#include "llsidetraypanelcontainer.h"
+#include "llspinctrl.h"
+
+#include "llfloatersnapshot.h" // FIXME: replace with a snapshot storage model
+#include "llpanelsnapshot.h"
+#include "llviewercontrol.h" // gSavedSettings
+
+/**
+ * The panel provides UI for saving snapshot as an inventory texture.
+ */
+class LLPanelSnapshotInventory
+:	public LLPanelSnapshot
+{
+	LOG_CLASS(LLPanelSnapshotInventory);
+
+public:
+	LLPanelSnapshotInventory();
+	/*virtual*/ BOOL postBuild();
+	/*virtual*/ void onOpen(const LLSD& key);
+
+private:
+	/*virtual*/ void updateCustomResControls(); ///< Show/hide custom resolution controls (spinners and checkbox)
+	/*virtual*/ std::string getWidthSpinnerName() const		{ return "inventory_snapshot_width"; }
+	/*virtual*/ std::string getHeightSpinnerName() const	{ return "inventory_snapshot_height"; }
+	/*virtual*/ std::string getAspectRatioCBName() const	{ return "inventory_keep_aspect_check"; }
+	/*virtual*/ std::string getImageSizeComboName() const	{ return "texture_size_combo"; }
+	/*virtual*/ std::string getImageSizePanelName() const	{ return LLStringUtil::null; }
+	/*virtual*/ void updateControls(const LLSD& info);
+
+	void onSend();
+};
+
+static LLRegisterPanelClassWrapper<LLPanelSnapshotInventory> panel_class("llpanelsnapshotinventory");
+
+LLPanelSnapshotInventory::LLPanelSnapshotInventory()
+{
+	mCommitCallbackRegistrar.add("Inventory.Save",		boost::bind(&LLPanelSnapshotInventory::onSend,		this));
+	mCommitCallbackRegistrar.add("Inventory.Cancel",	boost::bind(&LLPanelSnapshotInventory::cancel,		this));
+}
+
+// virtual
+BOOL LLPanelSnapshotInventory::postBuild()
+{
+	getChild<LLSpinCtrl>(getWidthSpinnerName())->setAllowEdit(FALSE);
+	getChild<LLSpinCtrl>(getHeightSpinnerName())->setAllowEdit(FALSE);
+	getChild<LLUICtrl>(getAspectRatioCBName())->setVisible(FALSE); // we don't keep aspect ratio for inventory textures
+	return LLPanelSnapshot::postBuild();
+}
+
+// virtual
+void LLPanelSnapshotInventory::onOpen(const LLSD& key)
+{
+	getChild<LLUICtrl>("hint_lbl")->setTextArg("[UPLOAD_COST]", llformat("%d", LLGlobalEconomy::Singleton::getInstance()->getPriceUpload()));
+	LLPanelSnapshot::onOpen(key);
+}
+
+// virtual
+void LLPanelSnapshotInventory::updateCustomResControls()
+{
+	LLComboBox* combo = getChild<LLComboBox>(getImageSizeComboName());
+	S32 selected_idx = combo->getFirstSelectedIndex();
+	const bool show = selected_idx == (combo->getItemCount() - 1); // Custom selected
+
+	getChild<LLUICtrl>(getWidthSpinnerName())->setVisible(show);
+	getChild<LLUICtrl>(getHeightSpinnerName())->setVisible(show);
+}
+
+// virtual
+void LLPanelSnapshotInventory::updateControls(const LLSD& info)
+{
+	const bool have_snapshot = info.has("have-snapshot") ? info["have-snapshot"].asBoolean() : true;
+	getChild<LLUICtrl>("save_btn")->setEnabled(have_snapshot);
+}
+
+void LLPanelSnapshotInventory::onSend()
+{
+	LLFloaterSnapshot::saveTexture();
+	LLFloaterSnapshot::postSave();
+}
diff --git a/indra/newview/llpanelsnapshotlocal.cpp b/indra/newview/llpanelsnapshotlocal.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..d153ff598d0f16820a94fc0a1920f16af4c0c595
--- /dev/null
+++ b/indra/newview/llpanelsnapshotlocal.cpp
@@ -0,0 +1,168 @@
+/** 
+ * @file llpanelsnapshotlocal.cpp
+ * @brief The panel provides UI for saving snapshot to a local folder.
+ *
+ * $LicenseInfo:firstyear=2011&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 "llviewerprecompiledheaders.h"
+
+#include "llcombobox.h"
+#include "llsidetraypanelcontainer.h"
+#include "llsliderctrl.h"
+#include "llspinctrl.h"
+
+#include "llfloatersnapshot.h" // FIXME: replace with a snapshot storage model
+#include "llpanelsnapshot.h"
+#include "llviewercontrol.h" // gSavedSettings
+#include "llviewerwindow.h"
+
+/**
+ * The panel provides UI for saving snapshot to a local folder.
+ */
+class LLPanelSnapshotLocal
+:	public LLPanelSnapshot
+{
+	LOG_CLASS(LLPanelSnapshotLocal);
+
+public:
+	LLPanelSnapshotLocal();
+	/*virtual*/ BOOL postBuild();
+	/*virtual*/ void onOpen(const LLSD& key);
+
+private:
+	/*virtual*/ std::string getWidthSpinnerName() const		{ return "local_snapshot_width"; }
+	/*virtual*/ std::string getHeightSpinnerName() const	{ return "local_snapshot_height"; }
+	/*virtual*/ std::string getAspectRatioCBName() const	{ return "local_keep_aspect_check"; }
+	/*virtual*/ std::string getImageSizeComboName() const	{ return "local_size_combo"; }
+	/*virtual*/ std::string getImageSizePanelName() const	{ return "local_image_size_lp"; }
+	/*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const;
+	/*virtual*/ void updateControls(const LLSD& info);
+
+	void onFormatComboCommit(LLUICtrl* ctrl);
+	void onQualitySliderCommit(LLUICtrl* ctrl);
+	void onSaveFlyoutCommit(LLUICtrl* ctrl);
+};
+
+static LLRegisterPanelClassWrapper<LLPanelSnapshotLocal> panel_class("llpanelsnapshotlocal");
+
+LLPanelSnapshotLocal::LLPanelSnapshotLocal()
+{
+	mCommitCallbackRegistrar.add("Local.Cancel",	boost::bind(&LLPanelSnapshotLocal::cancel,		this));
+}
+
+// virtual
+BOOL LLPanelSnapshotLocal::postBuild()
+{
+	getChild<LLUICtrl>("image_quality_slider")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onQualitySliderCommit, this, _1));
+	getChild<LLUICtrl>("local_format_combo")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onFormatComboCommit, this, _1));
+	getChild<LLUICtrl>("save_btn")->setCommitCallback(boost::bind(&LLPanelSnapshotLocal::onSaveFlyoutCommit, this, _1));
+
+	return LLPanelSnapshot::postBuild();
+}
+
+// virtual
+void LLPanelSnapshotLocal::onOpen(const LLSD& key)
+{
+	LLPanelSnapshot::onOpen(key);
+}
+
+// virtual
+LLFloaterSnapshot::ESnapshotFormat LLPanelSnapshotLocal::getImageFormat() const
+{
+	LLFloaterSnapshot::ESnapshotFormat fmt = LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG;
+
+	LLComboBox* local_format_combo = getChild<LLComboBox>("local_format_combo");
+	const std::string id  = local_format_combo->getValue().asString();
+	if (id == "PNG")
+	{
+		fmt = LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG;
+	}
+	else if (id == "JPEG")
+	{
+		fmt = LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG;
+	}
+	else if (id == "BMP")
+	{
+		fmt = LLFloaterSnapshot::SNAPSHOT_FORMAT_BMP;
+	}
+
+	return fmt;
+}
+
+// virtual
+void LLPanelSnapshotLocal::updateControls(const LLSD& info)
+{
+	LLFloaterSnapshot::ESnapshotFormat fmt =
+		(LLFloaterSnapshot::ESnapshotFormat) gSavedSettings.getS32("SnapshotFormat");
+	getChild<LLComboBox>("local_format_combo")->selectNthItem((S32) fmt);
+
+	const bool show_quality_ctrls = (fmt == LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG);
+	getChild<LLUICtrl>("image_quality_slider")->setVisible(show_quality_ctrls);
+	getChild<LLUICtrl>("image_quality_level")->setVisible(show_quality_ctrls);
+
+	getChild<LLUICtrl>("image_quality_slider")->setValue(gSavedSettings.getS32("SnapshotQuality"));
+	updateImageQualityLevel();
+
+	const bool have_snapshot = info.has("have-snapshot") ? info["have-snapshot"].asBoolean() : true;
+	getChild<LLUICtrl>("save_btn")->setEnabled(have_snapshot);
+}
+
+void LLPanelSnapshotLocal::onFormatComboCommit(LLUICtrl* ctrl)
+{
+	// will call updateControls()
+	LLFloaterSnapshot::getInstance()->notify(LLSD().with("image-format-change", true));
+}
+
+void LLPanelSnapshotLocal::onQualitySliderCommit(LLUICtrl* ctrl)
+{
+	updateImageQualityLevel();
+
+	LLSliderCtrl* slider = (LLSliderCtrl*)ctrl;
+	S32 quality_val = llfloor((F32)slider->getValue().asReal());
+	LLSD info;
+	info["image-quality-change"] = quality_val;
+	LLFloaterSnapshot::getInstance()->notify(info);
+}
+
+void LLPanelSnapshotLocal::onSaveFlyoutCommit(LLUICtrl* ctrl)
+{
+	if (ctrl->getValue().asString() == "save as")
+	{
+		gViewerWindow->resetSnapshotLoc();
+	}
+
+	LLFloaterSnapshot* floater = LLFloaterSnapshot::getInstance();
+
+	floater->notify(LLSD().with("set-working", true));
+	BOOL saved = LLFloaterSnapshot::saveLocal();
+	if (saved)
+	{
+		LLFloaterSnapshot::postSave();
+		goBack();
+		floater->notify(LLSD().with("set-finished", LLSD().with("ok", true).with("msg", "local")));
+	}
+	else
+	{
+		cancel();
+	}
+}
diff --git a/indra/newview/llpanelsnapshotoptions.cpp b/indra/newview/llpanelsnapshotoptions.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..554fabe5b3d38f0cd9dded22f1b071b327c9e7cb
--- /dev/null
+++ b/indra/newview/llpanelsnapshotoptions.cpp
@@ -0,0 +1,120 @@
+/** 
+ * @file llpanelsnapshotoptions.cpp
+ * @brief Snapshot posting options panel.
+ *
+ * $LicenseInfo:firstyear=2011&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 "llviewerprecompiledheaders.h"
+
+#include "lleconomy.h"
+#include "llpanel.h"
+#include "llsidetraypanelcontainer.h"
+
+#include "llfloatersnapshot.h" // FIXME: create a snapshot model
+
+/**
+ * Provides several ways to save a snapshot.
+ */
+class LLPanelSnapshotOptions
+:	public LLPanel
+,	public LLEconomyObserver
+{
+	LOG_CLASS(LLPanelSnapshotOptions);
+
+public:
+	LLPanelSnapshotOptions();
+	~LLPanelSnapshotOptions();
+	/*virtual*/ void onOpen(const LLSD& key);
+	/*virtual*/ void onEconomyDataChange() { updateUploadCost(); }
+
+private:
+	void updateUploadCost();
+	void openPanel(const std::string& panel_name);
+	void onSaveToProfile();
+	void onSaveToEmail();
+	void onSaveToInventory();
+	void onSaveToComputer();
+};
+
+static LLRegisterPanelClassWrapper<LLPanelSnapshotOptions> panel_class("llpanelsnapshotoptions");
+
+LLPanelSnapshotOptions::LLPanelSnapshotOptions()
+{
+	mCommitCallbackRegistrar.add("Snapshot.SaveToProfile",		boost::bind(&LLPanelSnapshotOptions::onSaveToProfile,	this));
+	mCommitCallbackRegistrar.add("Snapshot.SaveToEmail",		boost::bind(&LLPanelSnapshotOptions::onSaveToEmail,		this));
+	mCommitCallbackRegistrar.add("Snapshot.SaveToInventory",	boost::bind(&LLPanelSnapshotOptions::onSaveToInventory,	this));
+	mCommitCallbackRegistrar.add("Snapshot.SaveToComputer",		boost::bind(&LLPanelSnapshotOptions::onSaveToComputer,	this));
+
+	LLGlobalEconomy::Singleton::getInstance()->addObserver(this);
+}
+
+LLPanelSnapshotOptions::~LLPanelSnapshotOptions()
+{
+	LLGlobalEconomy::Singleton::getInstance()->removeObserver(this);
+}
+
+// virtual
+void LLPanelSnapshotOptions::onOpen(const LLSD& key)
+{
+	updateUploadCost();
+}
+
+void LLPanelSnapshotOptions::updateUploadCost()
+{
+	S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
+	getChild<LLUICtrl>("save_to_inventory_btn")->setLabelArg("[AMOUNT]", llformat("%d", upload_cost));
+}
+
+void LLPanelSnapshotOptions::openPanel(const std::string& panel_name)
+{
+	LLSideTrayPanelContainer* parent = dynamic_cast<LLSideTrayPanelContainer*>(getParent());
+	if (!parent)
+	{
+		llwarns << "Cannot find panel container" << llendl;
+		return;
+	}
+
+	parent->openPanel(panel_name);
+	parent->getCurrentPanel()->onOpen(LLSD());
+	LLFloaterSnapshot::postPanelSwitch();
+}
+
+void LLPanelSnapshotOptions::onSaveToProfile()
+{
+	openPanel("panel_snapshot_profile");
+}
+
+void LLPanelSnapshotOptions::onSaveToEmail()
+{
+	openPanel("panel_snapshot_postcard");
+}
+
+void LLPanelSnapshotOptions::onSaveToInventory()
+{
+	openPanel("panel_snapshot_inventory");
+}
+
+void LLPanelSnapshotOptions::onSaveToComputer()
+{
+	openPanel("panel_snapshot_local");
+}
diff --git a/indra/newview/llpanelsnapshotpostcard.cpp b/indra/newview/llpanelsnapshotpostcard.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f2bb8f530bacde41a115b58965d7b304cfb21458
--- /dev/null
+++ b/indra/newview/llpanelsnapshotpostcard.cpp
@@ -0,0 +1,270 @@
+/** 
+ * @file llpanelsnapshotpostcard.cpp
+ * @brief Postcard sending panel.
+ *
+ * $LicenseInfo:firstyear=2011&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 "llviewerprecompiledheaders.h"
+
+#include "llcombobox.h"
+#include "llnotificationsutil.h"
+#include "llsidetraypanelcontainer.h"
+#include "llsliderctrl.h"
+#include "llspinctrl.h"
+#include "lltexteditor.h"
+
+#include "llagent.h"
+#include "llagentui.h"
+#include "llfloatersnapshot.h" // FIXME: replace with a snapshot storage model
+#include "llpanelsnapshot.h"
+#include "llpostcard.h"
+#include "llviewercontrol.h" // gSavedSettings
+#include "llviewerwindow.h"
+
+#include <boost/regex.hpp>
+
+/**
+ * Sends postcard via email.
+ */
+class LLPanelSnapshotPostcard
+:	public LLPanelSnapshot
+{
+	LOG_CLASS(LLPanelSnapshotPostcard);
+
+public:
+	LLPanelSnapshotPostcard();
+	/*virtual*/ BOOL postBuild();
+	/*virtual*/ void onOpen(const LLSD& key);
+	/*virtual*/ S32	notify(const LLSD& info);
+
+private:
+	/*virtual*/ std::string getWidthSpinnerName() const		{ return "postcard_snapshot_width"; }
+	/*virtual*/ std::string getHeightSpinnerName() const	{ return "postcard_snapshot_height"; }
+	/*virtual*/ std::string getAspectRatioCBName() const	{ return "postcard_keep_aspect_check"; }
+	/*virtual*/ std::string getImageSizeComboName() const	{ return "postcard_size_combo"; }
+	/*virtual*/ std::string getImageSizePanelName() const	{ return "postcard_image_size_lp"; }
+	/*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const { return LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG; }
+	/*virtual*/ void updateControls(const LLSD& info);
+
+	bool missingSubjMsgAlertCallback(const LLSD& notification, const LLSD& response);
+	void sendPostcard();
+
+	void onMsgFormFocusRecieved();
+	void onFormatComboCommit(LLUICtrl* ctrl);
+	void onQualitySliderCommit(LLUICtrl* ctrl);
+	void onTabButtonPress(S32 btn_idx);
+	void onSend();
+
+	bool mHasFirstMsgFocus;
+	std::string mAgentEmail;
+};
+
+static LLRegisterPanelClassWrapper<LLPanelSnapshotPostcard> panel_class("llpanelsnapshotpostcard");
+
+LLPanelSnapshotPostcard::LLPanelSnapshotPostcard()
+:	mHasFirstMsgFocus(false)
+{
+	mCommitCallbackRegistrar.add("Postcard.Send",		boost::bind(&LLPanelSnapshotPostcard::onSend,	this));
+	mCommitCallbackRegistrar.add("Postcard.Cancel",		boost::bind(&LLPanelSnapshotPostcard::cancel,	this));
+	mCommitCallbackRegistrar.add("Postcard.Message",	boost::bind(&LLPanelSnapshotPostcard::onTabButtonPress,	this, 0));
+	mCommitCallbackRegistrar.add("Postcard.Settings",	boost::bind(&LLPanelSnapshotPostcard::onTabButtonPress,	this, 1));
+
+}
+
+// virtual
+BOOL LLPanelSnapshotPostcard::postBuild()
+{
+	// pick up the user's up-to-date email address
+	gAgent.sendAgentUserInfoRequest();
+
+	std::string name_string;
+	LLAgentUI::buildFullname(name_string);
+	getChild<LLUICtrl>("name_form")->setValue(LLSD(name_string));
+
+	// For the first time a user focuses to .the msg box, all text will be selected.
+	getChild<LLUICtrl>("msg_form")->setFocusChangedCallback(boost::bind(&LLPanelSnapshotPostcard::onMsgFormFocusRecieved, this));
+
+	getChild<LLUICtrl>("to_form")->setFocus(TRUE);
+
+	getChild<LLUICtrl>("image_quality_slider")->setCommitCallback(boost::bind(&LLPanelSnapshotPostcard::onQualitySliderCommit, this, _1));
+
+	getChild<LLButton>("message_btn")->setToggleState(TRUE);
+
+	return LLPanelSnapshot::postBuild();
+}
+
+// virtual
+void LLPanelSnapshotPostcard::onOpen(const LLSD& key)
+{
+	LLPanelSnapshot::onOpen(key);
+}
+
+// virtual
+S32 LLPanelSnapshotPostcard::notify(const LLSD& info)
+{
+	if (!info.has("agent-email"))
+	{
+		llassert(info.has("agent-email"));
+		return 0;
+	}
+
+	if (mAgentEmail.empty())
+	{
+		mAgentEmail = info["agent-email"].asString();
+	}
+
+	return 1;
+}
+
+// virtual
+void LLPanelSnapshotPostcard::updateControls(const LLSD& info)
+{
+	getChild<LLUICtrl>("image_quality_slider")->setValue(gSavedSettings.getS32("SnapshotQuality"));
+	updateImageQualityLevel();
+
+	const bool have_snapshot = info.has("have-snapshot") ? info["have-snapshot"].asBoolean() : true;
+	getChild<LLUICtrl>("send_btn")->setEnabled(have_snapshot);
+}
+
+bool LLPanelSnapshotPostcard::missingSubjMsgAlertCallback(const LLSD& notification, const LLSD& response)
+{
+	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+	if(0 == option)
+	{
+		// User clicked OK
+		if((getChild<LLUICtrl>("subject_form")->getValue().asString()).empty())
+		{
+			// Stuff the subject back into the form.
+			getChild<LLUICtrl>("subject_form")->setValue(getString("default_subject"));
+		}
+
+		if (!mHasFirstMsgFocus)
+		{
+			// The user never switched focus to the message window.
+			// Using the default string.
+			getChild<LLUICtrl>("msg_form")->setValue(getString("default_message"));
+		}
+
+		sendPostcard();
+	}
+	return false;
+}
+
+
+void LLPanelSnapshotPostcard::sendPostcard()
+{
+	std::string to(getChild<LLUICtrl>("to_form")->getValue().asString());
+	std::string subject(getChild<LLUICtrl>("subject_form")->getValue().asString());
+
+	LLSD postcard = LLSD::emptyMap();
+	postcard["pos-global"] = LLFloaterSnapshot::getPosTakenGlobal().getValue();
+	postcard["to"] = to;
+	postcard["from"] = mAgentEmail;
+	postcard["name"] = getChild<LLUICtrl>("name_form")->getValue().asString();
+	postcard["subject"] = subject;
+	postcard["msg"] = getChild<LLUICtrl>("msg_form")->getValue().asString();
+	LLPostCard::send(LLFloaterSnapshot::getImageData(), postcard);
+
+	// Give user feedback of the event.
+	gViewerWindow->playSnapshotAnimAndSound();
+
+	LLFloaterSnapshot::postSave();
+}
+
+void LLPanelSnapshotPostcard::onMsgFormFocusRecieved()
+{
+	LLTextEditor* msg_form = getChild<LLTextEditor>("msg_form");
+	if (msg_form->hasFocus() && !mHasFirstMsgFocus)
+	{
+		mHasFirstMsgFocus = true;
+		msg_form->setText(LLStringUtil::null);
+	}
+}
+
+void LLPanelSnapshotPostcard::onFormatComboCommit(LLUICtrl* ctrl)
+{
+	// will call updateControls()
+	LLFloaterSnapshot::getInstance()->notify(LLSD().with("image-format-change", true));
+}
+
+void LLPanelSnapshotPostcard::onQualitySliderCommit(LLUICtrl* ctrl)
+{
+	updateImageQualityLevel();
+
+	LLSliderCtrl* slider = (LLSliderCtrl*)ctrl;
+	S32 quality_val = llfloor((F32)slider->getValue().asReal());
+	LLSD info;
+	info["image-quality-change"] = quality_val;
+	LLFloaterSnapshot::getInstance()->notify(info); // updates the "SnapshotQuality" setting
+}
+
+void LLPanelSnapshotPostcard::onTabButtonPress(S32 btn_idx)
+{
+	LLButton* buttons[2] = {
+			getChild<LLButton>("message_btn"),
+			getChild<LLButton>("settings_btn"),
+	};
+
+	// Switch between Message and Settings tabs.
+	LLButton* clicked_btn = buttons[btn_idx];
+	LLButton* other_btn = buttons[!btn_idx];
+	LLSideTrayPanelContainer* container =
+		getChild<LLSideTrayPanelContainer>("postcard_panel_container");
+
+	container->selectTab(clicked_btn->getToggleState() ? btn_idx : !btn_idx);
+	//clicked_btn->setEnabled(FALSE);
+	other_btn->toggleState();
+	//other_btn->setEnabled(TRUE);
+
+	lldebugs << "Button #" << btn_idx << " (" << clicked_btn->getName() << ") clicked" << llendl;
+}
+
+void LLPanelSnapshotPostcard::onSend()
+{
+	// Validate input.
+	std::string to(getChild<LLUICtrl>("to_form")->getValue().asString());
+
+	boost::regex email_format("[A-Za-z0-9.%+-_]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}(,[ \t]*[A-Za-z0-9.%+-_]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,})*");
+
+	if (to.empty() || !boost::regex_match(to, email_format))
+	{
+		LLNotificationsUtil::add("PromptRecipientEmail");
+		return;
+	}
+
+	if (mAgentEmail.empty() || !boost::regex_match(mAgentEmail, email_format))
+	{
+		LLNotificationsUtil::add("PromptSelfEmail");
+		return;
+	}
+
+	std::string subject(getChild<LLUICtrl>("subject_form")->getValue().asString());
+	if(subject.empty() || !mHasFirstMsgFocus)
+	{
+		LLNotificationsUtil::add("PromptMissingSubjMsg", LLSD(), LLSD(), boost::bind(&LLPanelSnapshotPostcard::missingSubjMsgAlertCallback, this, _1, _2));
+		return;
+	}
+
+	// Send postcard.
+	sendPostcard();
+}
diff --git a/indra/newview/llpanelsnapshotprofile.cpp b/indra/newview/llpanelsnapshotprofile.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a7063183692ba9aebe9fbebec93c6f9b92c8786e
--- /dev/null
+++ b/indra/newview/llpanelsnapshotprofile.cpp
@@ -0,0 +1,101 @@
+/** 
+ * @file llpanelsnapshotprofile.cpp
+ * @brief Posts a snapshot to My Profile feed.
+ *
+ * $LicenseInfo:firstyear=2011&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 "llviewerprecompiledheaders.h"
+
+// libs
+#include "llcombobox.h"
+#include "llfloaterreg.h"
+#include "llpanel.h"
+#include "llspinctrl.h"
+
+// newview
+#include "llfloatersnapshot.h"
+#include "llpanelsnapshot.h"
+#include "llsidetraypanelcontainer.h"
+#include "llwebprofile.h"
+
+/**
+ * Posts a snapshot to My Profile feed.
+ */
+class LLPanelSnapshotProfile
+:	public LLPanelSnapshot
+{
+	LOG_CLASS(LLPanelSnapshotProfile);
+
+public:
+	LLPanelSnapshotProfile();
+
+	/*virtual*/ BOOL postBuild();
+	/*virtual*/ void onOpen(const LLSD& key);
+
+private:
+	/*virtual*/ std::string getWidthSpinnerName() const		{ return "profile_snapshot_width"; }
+	/*virtual*/ std::string getHeightSpinnerName() const	{ return "profile_snapshot_height"; }
+	/*virtual*/ std::string getAspectRatioCBName() const	{ return "profile_keep_aspect_check"; }
+	/*virtual*/ std::string getImageSizeComboName() const	{ return "profile_size_combo"; }
+	/*virtual*/ std::string getImageSizePanelName() const	{ return "profile_image_size_lp"; }
+	/*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const { return LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG; }
+	/*virtual*/ void updateControls(const LLSD& info);
+
+	void onSend();
+};
+
+static LLRegisterPanelClassWrapper<LLPanelSnapshotProfile> panel_class("llpanelsnapshotprofile");
+
+LLPanelSnapshotProfile::LLPanelSnapshotProfile()
+{
+	mCommitCallbackRegistrar.add("PostToProfile.Send",		boost::bind(&LLPanelSnapshotProfile::onSend,		this));
+	mCommitCallbackRegistrar.add("PostToProfile.Cancel",	boost::bind(&LLPanelSnapshotProfile::cancel,		this));
+}
+
+// virtual
+BOOL LLPanelSnapshotProfile::postBuild()
+{
+	return LLPanelSnapshot::postBuild();
+}
+
+// virtual
+void LLPanelSnapshotProfile::onOpen(const LLSD& key)
+{
+	LLPanelSnapshot::onOpen(key);
+}
+
+// virtual
+void LLPanelSnapshotProfile::updateControls(const LLSD& info)
+{
+	const bool have_snapshot = info.has("have-snapshot") ? info["have-snapshot"].asBoolean() : true;
+	getChild<LLUICtrl>("post_btn")->setEnabled(have_snapshot);
+}
+
+void LLPanelSnapshotProfile::onSend()
+{
+	std::string caption = getChild<LLUICtrl>("caption")->getValue().asString();
+	bool add_location = getChild<LLUICtrl>("add_location_cb")->getValue().asBoolean();
+
+	LLWebProfile::uploadImage(LLFloaterSnapshot::getImageData(), caption, add_location);
+	LLFloaterSnapshot::postSave();
+}
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 9b35e78134a5d59faa992a703e7a97b00113ef48..1f1cccad856bc8890381f08c8af2c771e626b8e7 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -31,7 +31,6 @@
 
 #include "llfloaterworldmap.h"
 #include "llpanelteleporthistory.h"
-#include "llsidetray.h"
 #include "llworldmap.h"
 #include "llteleporthistorystorage.h"
 #include "lltextutil.h"
@@ -39,6 +38,7 @@
 #include "llaccordionctrl.h"
 #include "llaccordionctrltab.h"
 #include "llflatlistview.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llnotificationsutil.h"
 #include "lltextbox.h"
 #include "lltoggleablemenu.h"
@@ -221,7 +221,7 @@ void LLTeleportHistoryFlatItem::showPlaceInfoPanel(S32 index)
 	params["id"] = index;
 	params["type"] = "teleport_history";
 
-	LLSideTray::getInstance()->showPanel("panel_places", params);
+	LLFloaterSidePanelContainer::showPanel("places", params);
 }
 
 void LLTeleportHistoryFlatItem::onProfileBtnClick()
@@ -388,7 +388,8 @@ LLTeleportHistoryPanel::LLTeleportHistoryPanel()
 LLTeleportHistoryPanel::~LLTeleportHistoryPanel()
 {
 	LLTeleportHistoryFlatItemStorage::instance().purge();
-	LLView::deleteViewByHandle(mGearMenuHandle);
+	if (mGearMenuHandle.get()) mGearMenuHandle.get()->die();
+	mTeleportHistoryChangedConnection.disconnect();
 }
 
 BOOL LLTeleportHistoryPanel::postBuild()
@@ -396,7 +397,7 @@ BOOL LLTeleportHistoryPanel::postBuild()
 	mTeleportHistory = LLTeleportHistoryStorage::getInstance();
 	if (mTeleportHistory)
 	{
-		mTeleportHistory->setHistoryChangedCallback(boost::bind(&LLTeleportHistoryPanel::onTeleportHistoryChange, this, _1));
+		mTeleportHistoryChangedConnection = mTeleportHistory->setHistoryChangedCallback(boost::bind(&LLTeleportHistoryPanel::onTeleportHistoryChange, this, _1));
 	}
 
 	mHistoryAccordion = getChild<LLAccordionCtrl>("history_accordion");
@@ -679,29 +680,32 @@ void LLTeleportHistoryPanel::refresh()
 			// tab_boundary_date would be earliest possible date for this tab
 			S32 tab_idx = 0;
 			getNextTab(date, tab_idx, tab_boundary_date);
-
-			LLAccordionCtrlTab* tab = mItemContainers.get(mItemContainers.size() - 1 - tab_idx);
-			tab->setVisible(true);
-
-			// Expand all accordion tabs when filtering
-			if(!sFilterSubString.empty())
+			tab_idx = mItemContainers.size() - 1 - tab_idx;
+			if (tab_idx >= 0)
 			{
-				//store accordion tab state when filter is not empty
-				tab->notifyChildren(LLSD().with("action","store_state"));
-				
-				tab->setDisplayChildren(true);
-			}
-			// Restore each tab's expand state when not filtering
-			else
-			{
-				bool collapsed = isAccordionCollapsedByUser(tab);
-				tab->setDisplayChildren(!collapsed);
+				LLAccordionCtrlTab* tab = mItemContainers.get(tab_idx);
+				tab->setVisible(true);
+
+				// Expand all accordion tabs when filtering
+				if(!sFilterSubString.empty())
+				{
+					//store accordion tab state when filter is not empty
+					tab->notifyChildren(LLSD().with("action","store_state"));
 				
-				//restore accordion state after all those accodrion tabmanipulations
-				tab->notifyChildren(LLSD().with("action","restore_state"));
-			}
+					tab->setDisplayChildren(true);
+				}
+				// Restore each tab's expand state when not filtering
+				else
+				{
+					bool collapsed = isAccordionCollapsedByUser(tab);
+					tab->setDisplayChildren(!collapsed);
+			
+					//restore accordion state after all those accodrion tabmanipulations
+					tab->notifyChildren(LLSD().with("action","restore_state"));
+				}
 
-			curr_flat_view = getFlatListViewFromTab(tab);
+				curr_flat_view = getFlatListViewFromTab(tab);
+			}
 		}
 
 		if (curr_flat_view)
@@ -760,7 +764,12 @@ void LLTeleportHistoryPanel::onTeleportHistoryChange(S32 removed_index)
 void LLTeleportHistoryPanel::replaceItem(S32 removed_index)
 {
 	// Flat list for 'Today' (mItemContainers keeps accordion tabs in reverse order)
-	LLFlatListView* fv = getFlatListViewFromTab(mItemContainers[mItemContainers.size() - 1]);
+	LLFlatListView* fv = NULL;
+	
+	if (mItemContainers.size() > 0)
+	{
+		fv = getFlatListViewFromTab(mItemContainers[mItemContainers.size() - 1]);
+	}
 
 	// Empty flat list for 'Today' means that other flat lists are empty as well,
 	// so all items from teleport history should be added.
@@ -828,19 +837,27 @@ void LLTeleportHistoryPanel::showTeleportHistory()
 
 	// Starting to add items from last one, in reverse order,
 	// since TeleportHistory keeps most recent item at the end
+	if (!mTeleportHistory)
+	{
+		mTeleportHistory = LLTeleportHistoryStorage::getInstance();
+	}
+
 	mCurrentItem = mTeleportHistory->getItems().size() - 1;
 
 	for (S32 n = mItemContainers.size() - 1; n >= 0; --n)
 	{
 		LLAccordionCtrlTab* tab = mItemContainers.get(n);
-		tab->setVisible(false);
-
-		LLFlatListView* fv = getFlatListViewFromTab(tab);
-		if (fv)
+		if (tab)
 		{
-			// Detached panels are managed by LLTeleportHistoryFlatItemStorage
-			std::vector<LLPanel*> detached_items;
-			fv->detachItems(detached_items);
+			tab->setVisible(false);
+
+			LLFlatListView* fv = getFlatListViewFromTab(tab);
+			if (fv)
+			{
+				// Detached panels are managed by LLTeleportHistoryFlatItemStorage
+				std::vector<LLPanel*> detached_items;
+				fv->detachItems(detached_items);
+			}
 		}
 	}
 }
diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h
index 3d29454d1538cd84159aeaf27b722e5b62231830..47b607a2f46c27e89b6de42607d8edd1dcce8d9d 100644
--- a/indra/newview/llpanelteleporthistory.h
+++ b/indra/newview/llpanelteleporthistory.h
@@ -119,6 +119,8 @@ class LLTeleportHistoryPanel : public LLPanelPlacesTab
 	LLContextMenu*			mAccordionTabMenu;
 	LLHandle<LLView>		mGearMenuHandle;
 	LLMenuButton*			mMenuGearButton;
+
+	boost::signals2::connection mTeleportHistoryChangedConnection;
 };
 
 
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
index 7087541fc8078bf7abb23593ddf74981f4fe21a1..eb4c7572d43c0151119a4500926d437839154b42 100644
--- a/indra/newview/llpaneltopinfobar.cpp
+++ b/indra/newview/llpaneltopinfobar.cpp
@@ -31,11 +31,11 @@
 #include "llagent.h"
 #include "llagentui.h"
 #include "llclipboard.h"
+#include "llfloatersidepanelcontainer.h"
 #include "lllandmarkactions.h"
 #include "lllocationinputctrl.h"
 #include "llnotificationsutil.h"
 #include "llparcel.h"
-#include "llsidetray.h"
 #include "llslurl.h"
 #include "llstatusbar.h"
 #include "lltrans.h"
@@ -203,6 +203,11 @@ void LLPanelTopInfoBar::onVisibilityChange(const LLSD& show)
 	gFloaterView->setMinimizePositionVerticalOffset(minimize_pos_offset);
 }
 
+boost::signals2::connection LLPanelTopInfoBar::setResizeCallback( const resize_signal_t::slot_type& cb )
+{
+	return mResizeSignal.connect(cb);
+}
+
 void LLPanelTopInfoBar::draw()
 {
 	updateParcelInfoText();
@@ -224,6 +229,7 @@ void LLPanelTopInfoBar::buildLocationString(std::string& loc_str, bool show_coor
 
 void LLPanelTopInfoBar::setParcelInfoText(const std::string& new_text)
 {
+	LLRect old_rect = getRect();
 	const LLFontGL* font = mParcelInfoText->getDefaultFont();
 	S32 new_text_width = font->getWidth(new_text);
 
@@ -235,6 +241,11 @@ void LLPanelTopInfoBar::setParcelInfoText(const std::string& new_text)
 	mParcelInfoText->reshape(rect.getWidth(), rect.getHeight(), TRUE);
 	mParcelInfoText->setRect(rect);
 	layoutParcelIcons();
+
+	if (old_rect != getRect())
+	{
+		mResizeSignal();
+	}
 }
 
 void LLPanelTopInfoBar::update()
@@ -342,6 +353,8 @@ void LLPanelTopInfoBar::updateHealth()
 
 void LLPanelTopInfoBar::layoutParcelIcons()
 {
+	LLRect old_rect = getRect();
+
 	// TODO: remove hard-coded values and read them as xml parameters
 	static const int FIRST_ICON_HPAD = 32;
 	static const int LAST_ICON_HPAD = 11;
@@ -358,6 +371,11 @@ void LLPanelTopInfoBar::layoutParcelIcons()
 	LLRect rect = getRect();
 	rect.set(rect.mLeft, rect.mTop, left + LAST_ICON_HPAD, rect.mBottom);
 	setRect(rect);
+
+	if (old_rect != getRect())
+	{
+		mResizeSignal();
+	}
 }
 
 S32 LLPanelTopInfoBar::layoutWidget(LLUICtrl* ctrl, S32 left)
@@ -436,12 +454,11 @@ void LLPanelTopInfoBar::onContextMenuItemClicked(const LLSD::String& item)
 
 		if(landmark == NULL)
 		{
-			LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark"));
+			LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
 		}
 		else
 		{
-			LLSideTray::getInstance()->showPanel("panel_places",
-					LLSD().with("type", "landmark").with("id",landmark->getUUID()));
+			LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "landmark").with("id",landmark->getUUID()));
 		}
 	}
 	else if (item == "copy")
@@ -456,5 +473,5 @@ void LLPanelTopInfoBar::onContextMenuItemClicked(const LLSD::String& item)
 
 void LLPanelTopInfoBar::onInfoButtonClicked()
 {
-	LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "agent"));
+	LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "agent"));
 }
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index 583e91d15e09bddab3942836ea578444692c15d9..d58d95be900eca41553706369f8fa8de843880ab 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -41,6 +41,8 @@ class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>,
 	friend class LLDestroyClass<LLPanelTopInfoBar>;
 
 public:
+	typedef boost::signals2::signal<void ()> resize_signal_t;
+
 	LLPanelTopInfoBar();
 	~LLPanelTopInfoBar();
 
@@ -57,6 +59,8 @@ class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>,
 	 */
 	void onVisibilityChange(const LLSD& show);
 
+	boost::signals2::connection setResizeCallback( const resize_signal_t::slot_type& cb );
+
 private:
 	class LLParcelChangeObserver;
 
@@ -148,7 +152,7 @@ class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>,
 	void setParcelInfoText(const std::string& new_text);
 
 	/**
-	 *  Implementation of LLDestroyClass<LLSideTray>
+	 *  Implementation of LLDestroyClass<T>
 	 */
 	static void destroyClass()
 	{
@@ -167,6 +171,8 @@ class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>,
 	boost::signals2::connection	mParcelPropsCtrlConnection;
 	boost::signals2::connection	mShowCoordsCtrlConnection;
 	boost::signals2::connection	mParcelMgrConnection;
+
+	resize_signal_t mResizeSignal;
 };
 
 #endif /* LLPANELTOPINFOBAR_H_ */
diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
index f19b54c1d4d9350e7cd02aca0d5968a6fd328211..e2801c09bde095d5a28b6f26b8c1b9b87cf6518c 100644
--- a/indra/newview/llpanelwearing.cpp
+++ b/indra/newview/llpanelwearing.cpp
@@ -31,11 +31,11 @@
 #include "lltoggleablemenu.h"
 
 #include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llinventoryfunctions.h"
 #include "llinventorymodel.h"
 #include "llinventoryobserver.h"
 #include "llmenubutton.h"
-#include "llsidetray.h"
 #include "llviewermenu.h"
 #include "llwearableitemslist.h"
 #include "llsdserialize.h"
@@ -44,7 +44,7 @@
 // Context menu and Gear menu helper.
 static void edit_outfit()
 {
-	LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+	LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
 }
 
 //////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index fb1153980aa3dae6893ba454f693713832ac90bc..5c95e805ce9d9c3e7664b5810c56a849da86bcce 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -468,7 +468,7 @@ void LLParticipantList::setValidateSpeakerCallback(validate_speaker_callback_t c
 
 void LLParticipantList::updateRecentSpeakersOrder()
 {
-	if (E_SORT_BY_RECENT_SPEAKERS == getSortOrder())
+	if (E_SORT_BY_RECENT_SPEAKERS == getSortOrder() && !isHovered())
 	{
 		// Need to update speakers to sort list correctly
 		mSpeakerMgr->update(true);
@@ -477,6 +477,13 @@ void LLParticipantList::updateRecentSpeakersOrder()
 	}
 }
 
+bool LLParticipantList::isHovered()
+{
+	S32 x, y;
+	LLUI::getMousePositionScreen(&x, &y);
+	return mAvatarList->calcScreenRect().pointInRect(x, y);
+}
+
 bool LLParticipantList::onAddItemEvent(LLPointer<LLOldEvents::LLEvent> event, const LLSD& userdata)
 {
 	LLUUID uu_id = event->getValue().asUUID();
diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h
index e0b3d42c25d9229a21f44aa5e4e22323f9a7370a..a001d29b671553ec3666047d5461659f99df9eb4 100644
--- a/indra/newview/llparticipantlist.h
+++ b/indra/newview/llparticipantlist.h
@@ -251,6 +251,8 @@ class LLParticipantList
 	 */
 	void adjustParticipant(const LLUUID& speaker_id);
 
+	bool isHovered();
+
 	LLSpeakerMgr*		mSpeakerMgr;
 	LLAvatarList*		mAvatarList;
 
diff --git a/indra/newview/llpostcard.cpp b/indra/newview/llpostcard.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4f2d6da7e593be9494fb66b07e9139358e386b0e
--- /dev/null
+++ b/indra/newview/llpostcard.cpp
@@ -0,0 +1,155 @@
+/** 
+ * @file llpostcard.cpp
+ * @brief Sending postcards.
+ *
+ * $LicenseInfo:firstyear=2011&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 "llviewerprecompiledheaders.h"
+
+#include "llpostcard.h"
+
+#include "llvfile.h"
+#include "llvfs.h"
+#include "llviewerregion.h"
+
+#include "message.h"
+
+#include "llagent.h"
+#include "llassetuploadresponders.h"
+
+///////////////////////////////////////////////////////////////////////////////
+// misc
+
+static void postcard_upload_callback(const LLUUID& asset_id, void *user_data, S32 result, LLExtStat ext_status)
+{
+	LLSD* postcard_data = (LLSD*)user_data;
+
+	if (result)
+	{
+		// TODO: display the error messages in UI
+		llwarns << "Failed to send postcard: " << LLAssetStorage::getErrorString(result) << llendl;
+		LLPostCard::reportPostResult(false);
+	}
+	else
+	{
+		// only create the postcard once the upload succeeds
+
+		// request the postcard
+		const LLSD& data = *postcard_data;
+		LLMessageSystem* msg = gMessageSystem;
+		msg->newMessage("SendPostcard");
+		msg->nextBlock("AgentData");
+		msg->addUUID("AgentID",			gAgent.getID());
+		msg->addUUID("SessionID",		gAgent.getSessionID());
+		msg->addUUID("AssetID",			data["asset-id"].asUUID());
+		msg->addVector3d("PosGlobal",	LLVector3d(data["pos-global"]));
+		msg->addString("To",			data["to"]);
+		msg->addString("From",			data["from"]);
+		msg->addString("Name",			data["name"]);
+		msg->addString("Subject",		data["subject"]);
+		msg->addString("Msg",			data["msg"]);
+		msg->addBOOL("AllowPublish",	FALSE);
+		msg->addBOOL("MaturePublish",	FALSE);
+		gAgent.sendReliableMessage();
+
+		LLPostCard::reportPostResult(true);
+	}
+
+	delete postcard_data;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
+// LLPostcardSendResponder
+
+class LLPostcardSendResponder : public LLAssetUploadResponder
+{
+	LOG_CLASS(LLPostcardSendResponder);
+
+public:
+	LLPostcardSendResponder(const LLSD &post_data,
+							const LLUUID& vfile_id,
+							LLAssetType::EType asset_type):
+	    LLAssetUploadResponder(post_data, vfile_id, asset_type)
+	{
+	}
+
+	/*virtual*/ void uploadComplete(const LLSD& content)
+	{
+		llinfos << "Postcard sent" << llendl;
+		LL_DEBUGS("Snapshots") << "content: " << content << llendl;
+		LLPostCard::reportPostResult(true);
+	}
+
+	/*virtual*/ void uploadFailure(const LLSD& content)
+	{
+		llwarns << "Sending postcard failed: " << content << llendl;
+		LLPostCard::reportPostResult(false);
+	}
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// LLPostCard
+
+LLPostCard::result_callback_t LLPostCard::mResultCallback;
+
+// static
+void LLPostCard::send(LLPointer<LLImageFormatted> image, const LLSD& postcard_data)
+{
+	LLTransactionID transaction_id;
+	LLAssetID asset_id;
+
+	transaction_id.generate();
+	asset_id = transaction_id.makeAssetID(gAgent.getSecureSessionID());
+	LLVFile::writeFile(image->getData(), image->getDataSize(), gVFS, asset_id, LLAssetType::AT_IMAGE_JPEG);
+
+	// upload the image
+	std::string url = gAgent.getRegion()->getCapability("SendPostcard");
+	if (!url.empty())
+	{
+		llinfos << "Sending postcard via capability" << llendl;
+		// the capability already encodes: agent ID, region ID
+		LL_DEBUGS("Snapshots") << "url: " << url << llendl;
+		LL_DEBUGS("Snapshots") << "body: " << postcard_data << llendl;
+		LL_DEBUGS("Snapshots") << "data size: " << image->getDataSize() << llendl;
+		LLHTTPClient::post(url, postcard_data,
+			new LLPostcardSendResponder(postcard_data, asset_id, LLAssetType::AT_IMAGE_JPEG));
+	}
+	else
+	{
+		llinfos << "Sending postcard" << llendl;
+		LLSD* data = new LLSD(postcard_data);
+		(*data)["asset-id"] = asset_id;
+		gAssetStorage->storeAssetData(transaction_id, LLAssetType::AT_IMAGE_JPEG,
+			&postcard_upload_callback, (void *)data, FALSE);
+	}
+}
+
+// static
+void LLPostCard::reportPostResult(bool ok)
+{
+	if (mResultCallback)
+	{
+		mResultCallback(ok);
+	}
+}
diff --git a/indra/newview/llpostcard.h b/indra/newview/llpostcard.h
new file mode 100644
index 0000000000000000000000000000000000000000..0eb118b90625e757468f7162d79f4767dd9a7190
--- /dev/null
+++ b/indra/newview/llpostcard.h
@@ -0,0 +1,48 @@
+/** 
+ * @file llpostcard.h
+ * @brief Sending postcards.
+ *
+ * $LicenseInfo:firstyear=2011&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$
+ */
+
+#ifndef LL_LLPOSTCARD_H
+#define LL_LLPOSTCARD_H
+
+#include "llimage.h"
+#include "lluuid.h"
+
+class LLPostCard
+{
+	LOG_CLASS(LLPostCard);
+
+public:
+	typedef boost::function<void(bool ok)> result_callback_t;
+
+	static void send(LLPointer<LLImageFormatted> image, const LLSD& postcard_data);
+	static void setPostResultCallback(result_callback_t cb) { mResultCallback = cb; }
+	static void reportPostResult(bool ok);
+
+private:
+	static result_callback_t mResultCallback;
+};
+
+#endif // LL_LLPOSTCARD_H
diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp
index 119fc95cf068d4cc05ff2d59519940794ad849c0..18626e327307ba744c81029b0830233f590f11f2 100644
--- a/indra/newview/llpreview.cpp
+++ b/indra/newview/llpreview.cpp
@@ -363,8 +363,10 @@ void LLPreview::onBtnCopyToInv(void* userdata)
 		// Copy to inventory
 		if (self->mNotecardInventoryID.notNull())
 		{
-			copy_inventory_from_notecard(self->mNotecardObjectID,
-				self->mNotecardInventoryID, item);
+			copy_inventory_from_notecard(LLUUID::null,
+										 self->mNotecardObjectID,
+										 self->mNotecardInventoryID,
+										 item);
 		}
 		else
 		{
diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp
index b19bf5d234c36544e12aee92ac14709ccc038add..88727bf59b4fa58b46150072a5df4e4beb6188bf 100644
--- a/indra/newview/llpreviewscript.cpp
+++ b/indra/newview/llpreviewscript.cpp
@@ -35,6 +35,7 @@
 #include "llcombobox.h"
 #include "lldir.h"
 #include "llexternaleditor.h"
+#include "llfilepicker.h"
 #include "llfloaterreg.h"
 #include "llinventorydefines.h"
 #include "llinventorymodel.h"
@@ -503,6 +504,14 @@ void LLScriptEdCore::initMenu()
 
 	menuItem = getChild<LLMenuItemCallGL>("Keyword Help...");
 	menuItem->setClickCallback(boost::bind(&LLScriptEdCore::onBtnDynamicHelp, this));
+
+	menuItem = getChild<LLMenuItemCallGL>("LoadFromFile");
+	menuItem->setClickCallback(boost::bind(&LLScriptEdCore::onBtnLoadFromFile, this));
+	menuItem->setEnableCallback(boost::bind(&LLScriptEdCore::enableLoadFromFileMenu, this));
+
+	menuItem = getChild<LLMenuItemCallGL>("SaveToFile");
+	menuItem->setClickCallback(boost::bind(&LLScriptEdCore::onBtnSaveToFile, this));
+	menuItem->setEnableCallback(boost::bind(&LLScriptEdCore::enableSaveToFileMenu, this));
 }
 
 void LLScriptEdCore::setScriptText(const std::string& text, BOOL is_valid)
@@ -1096,6 +1105,88 @@ BOOL LLScriptEdCore::handleKeyHere(KEY key, MASK mask)
 	return FALSE;
 }
 
+void LLScriptEdCore::onBtnLoadFromFile( void* data )
+{
+	LLScriptEdCore* self = (LLScriptEdCore*) data;
+
+	// TODO Maybe add a dialogue warning here if the current file has unsaved changes.
+	LLFilePicker& file_picker = LLFilePicker::instance();
+	if( !file_picker.getOpenFile( LLFilePicker::FFLOAD_SCRIPT ) )
+	{
+		//File picking cancelled by user, so nothing to do.
+		return;
+	}
+
+	std::string filename = file_picker.getFirstFile();
+
+	std::ifstream fin(filename.c_str());
+
+	std::string line;
+	std::string text;
+	std::string linetotal;
+	while (!fin.eof())
+	{ 
+		getline(fin,line);
+		text += line;
+		if (!fin.eof())
+		{
+			text += "\n";
+		}
+	}
+	fin.close();
+
+	// Only replace the script if there is something to replace with.
+	if (text.length() > 0)
+	{
+		self->mEditor->selectAll();
+		LLWString script(utf8str_to_wstring(text));
+		self->mEditor->insertText(script);
+	}
+}
+
+void LLScriptEdCore::onBtnSaveToFile( void* userdata )
+{
+
+	LLViewerStats::getInstance()->incStat( LLViewerStats::ST_LSL_SAVE_COUNT );
+
+	LLScriptEdCore* self = (LLScriptEdCore*) userdata;
+
+	if( self->mSaveCallback )
+	{
+		LLFilePicker& file_picker = LLFilePicker::instance();
+		if( file_picker.getSaveFile( LLFilePicker::FFSAVE_SCRIPT ) )
+		{
+			std::string filename = file_picker.getFirstFile();
+			std::string scriptText=self->mEditor->getText();
+			std::ofstream fout(filename.c_str());
+			fout<<(scriptText);
+			fout.close();
+			self->mSaveCallback( self->mUserdata, FALSE );
+		}
+	}
+}
+
+bool LLScriptEdCore::canLoadOrSaveToFile( void* userdata )
+{
+	LLScriptEdCore* self = (LLScriptEdCore*) userdata;
+	return self->mEditor->canLoadOrSaveToFile();
+}
+
+// static
+bool LLScriptEdCore::enableSaveToFileMenu(void* userdata)
+{
+	LLScriptEdCore* self = (LLScriptEdCore*)userdata;
+	if (!self || !self->mEditor) return FALSE;
+	return self->mEditor->canLoadOrSaveToFile();
+}
+
+// static 
+bool LLScriptEdCore::enableLoadFromFileMenu(void* userdata)
+{
+	LLScriptEdCore* self = (LLScriptEdCore*)userdata;
+	return (self && self->mEditor) ? self->mEditor->canLoadOrSaveToFile() : FALSE;
+}
+
 /// ---------------------------------------------------------------------------
 /// LLScriptEdContainer
 /// ---------------------------------------------------------------------------
diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h
index f86be615c44ce396f69d295b7480ae545aeadf13..7563cecd9dba8b979f34e405d660d0a1e5500c95 100644
--- a/indra/newview/llpreviewscript.h
+++ b/indra/newview/llpreviewscript.h
@@ -79,6 +79,7 @@ class LLScriptEdCore : public LLPanel
 	/*virtual*/	BOOL	postBuild();
 	BOOL			canClose();
 	void			setEnableEditing(bool enable);
+	bool			canLoadOrSaveToFile( void* userdata );
 
 	void            setScriptText(const std::string& text, BOOL is_valid);
 	bool			loadScriptText(const std::string& filename);
@@ -98,6 +99,11 @@ class LLScriptEdCore : public LLPanel
 	static void		onClickForward(void* userdata);
 	static void		onBtnInsertSample(void*);
 	static void		onBtnInsertFunction(LLUICtrl*, void*);
+	static void		onBtnLoadFromFile(void*);
+	static void		onBtnSaveToFile(void*);
+
+	static bool		enableSaveToFileMenu(void* userdata);
+	static bool		enableLoadFromFileMenu(void* userdata);
 
 	virtual bool	hasAccelerators() const { return true; }
 
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index 18d6731fcb2c997b21773a04b32c371beb080c53..3ff5a05d81e7b7a3a12246b19d879a56307af28b 100644
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -169,7 +169,7 @@ void LLPreviewTexture::draw()
 				saveAs();
 			}
 			// Draw the texture
-			glColor3f( 1.f, 1.f, 1.f );
+			gGL.diffuseColor3f( 1.f, 1.f, 1.f );
 			gl_draw_scaled_image(interior.mLeft,
 								interior.mBottom,
 								interior.getWidth(),
diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp
index a1f38f185479e1e50f3242186786df891efe0d39..5d7a5b1c59b94e7e9462d20e9a84a9b9f9d19c12 100644
--- a/indra/newview/llprogressview.cpp
+++ b/indra/newview/llprogressview.cpp
@@ -187,7 +187,7 @@ void LLProgressView::setVisible(BOOL visible)
 
 void LLProgressView::drawStartTexture(F32 alpha)
 {
-	glPushMatrix();	
+	gGL.pushMatrix();	
 	if (gStartTexture)
 	{
 		LLGLSUIDefault gls_ui;
@@ -200,13 +200,13 @@ void LLProgressView::drawStartTexture(F32 alpha)
 		// stretch image to maintain aspect ratio
 		if (image_aspect > view_aspect)
 		{
-			glTranslatef(-0.5f * (image_aspect / view_aspect - 1.f) * width, 0.f, 0.f);
-			glScalef(image_aspect / view_aspect, 1.f, 1.f);
+			gGL.translatef(-0.5f * (image_aspect / view_aspect - 1.f) * width, 0.f, 0.f);
+			gGL.scalef(image_aspect / view_aspect, 1.f, 1.f);
 		}
 		else
 		{
-			glTranslatef(0.f, -0.5f * (view_aspect / image_aspect - 1.f) * height, 0.f);
-			glScalef(1.f, view_aspect / image_aspect, 1.f);
+			gGL.translatef(0.f, -0.5f * (view_aspect / image_aspect - 1.f) * height, 0.f);
+			gGL.scalef(1.f, view_aspect / image_aspect, 1.f);
 		}
 		gl_rect_2d_simple_tex( getRect().getWidth(), getRect().getHeight() );
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
@@ -217,7 +217,7 @@ void LLProgressView::drawStartTexture(F32 alpha)
 		gGL.color4f(0.f, 0.f, 0.f, 1.f);
 		gl_rect_2d(getRect());
 	}
-	glPopMatrix();
+	gGL.popMatrix();
 }
 
 
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index e3bc67a4147993880551d641918da4ee67d719eb..5301955964bfc5fac0e0db4d6d27fb47b4487d0b 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -41,7 +41,7 @@
 #include "llsyswellwindow.h"
 #include "llimfloater.h"
 #include "llscriptfloater.h"
-#include "llsidetray.h"
+#include "llrootview.h"
 
 #include <algorithm>
 
@@ -49,72 +49,101 @@ using namespace LLNotificationsUI;
 
 bool LLScreenChannel::mWasStartUpToastShown = false;
 
+LLFastTimer::DeclareTimer FTM_GET_CHANNEL_RECT("Calculate Notification Channel Region");
+LLRect LLScreenChannelBase::getChannelRect()
+{
+	LLFastTimer _(FTM_GET_CHANNEL_RECT);
+
+	if (mFloaterSnapRegion == NULL)
+	{
+		mFloaterSnapRegion = gViewerWindow->getRootView()->getChildView("floater_snap_region");
+	}
+	
+	if (mChicletRegion == NULL)
+	{
+		mChicletRegion = gViewerWindow->getRootView()->getChildView("chiclet_container");
+	}
+	
+	LLRect channel_rect;
+	LLRect chiclet_rect;
+
+	mFloaterSnapRegion->localRectToScreen(mFloaterSnapRegion->getLocalRect(), &channel_rect);
+	mChicletRegion->localRectToScreen(mChicletRegion->getLocalRect(), &chiclet_rect);
+
+	channel_rect.mTop = chiclet_rect.mBottom;
+	return channel_rect;
+}
+
+
 //--------------------------------------------------------------------------
 //////////////////////
 // LLScreenChannelBase
 //////////////////////
 
-LLScreenChannelBase::LLScreenChannelBase(const LLUUID& id) :
-												mToastAlignment(NA_BOTTOM)
-												,mCanStoreToasts(true)
-												,mHiddenToastsNum(0)
-												,mHoveredToast(NULL)
-												,mControlHovering(false)
-												,mShowToasts(true)
-{	
-	mID = id;
-	mWorldViewRectConnection = gViewerWindow->setOnWorldViewRectUpdated(boost::bind(&LLScreenChannelBase::updatePositionAndSize, this, _1, _2));
+LLScreenChannelBase::LLScreenChannelBase(const Params& p) 
+:	LLUICtrl(p),
+	mToastAlignment(p.toast_align),
+	mCanStoreToasts(true),
+	mHiddenToastsNum(0),
+	mHoveredToast(NULL),
+	mControlHovering(false),
+	mShowToasts(true),
+	mID(p.id),
+	mDisplayToastsAlways(p.display_toasts_always),
+	mChannelAlignment(p.channel_align),
+	mFloaterSnapRegion(NULL),
+	mChicletRegion(NULL)
+{
+	mID = p.id;
 
 	setMouseOpaque( false );
 	setVisible(FALSE);
 }
-LLScreenChannelBase::~LLScreenChannelBase()
-{
-	mWorldViewRectConnection.disconnect();
-}
 
-bool  LLScreenChannelBase::isHovering()
+BOOL LLScreenChannelBase::postBuild()
 {
-	if (!mHoveredToast)
+	if (mFloaterSnapRegion == NULL)
 	{
-		return false;
+		mFloaterSnapRegion = gViewerWindow->getRootView()->getChildView("floater_snap_region");
 	}
-
-	return mHoveredToast->isHovered();
+	
+	if (mChicletRegion == NULL)
+	{
+		mChicletRegion = gViewerWindow->getRootView()->getChildView("chiclet_container");
+	}
+	
+	return TRUE;
 }
 
-void LLScreenChannelBase::resetPositionAndSize()
+void LLScreenChannelBase::reshape(S32 width, S32 height, BOOL called_from_parent)
 {
-	LLRect rc = gViewerWindow->getWorldViewRectScaled();
-	updatePositionAndSize(rc, rc);
+	redrawToasts();
 }
 
-void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect)
+bool  LLScreenChannelBase::isHovering()
 {
-	/*
-	take sidetray into account - screenchannel should not overlap sidetray
-	*/
-	S32 world_rect_padding = 0;
-	if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE
-		&& LLSideTray::instanceCreated	())
+	if (!mHoveredToast)
 	{
-		world_rect_padding += LLSideTray::getInstance()->getVisibleWidth();
+		return false;
 	}
 
+	return mHoveredToast->isHovered();
+}
 
-	S32 top_delta = old_world_rect.mTop - new_world_rect.mTop;
+void LLScreenChannelBase::updatePositionAndSize(LLRect rect)
+{
 	LLRect this_rect = getRect();
 
-	this_rect.mTop -= top_delta;
+	this_rect.mTop = rect.mTop;
 	switch(mChannelAlignment)
 	{
 	case CA_LEFT :
 		break;
 	case CA_CENTRE :
-		this_rect.setCenterAndSize( (new_world_rect.getWidth() - world_rect_padding) / 2, new_world_rect.getHeight() / 2, this_rect.getWidth(), this_rect.getHeight());
+		this_rect.setCenterAndSize( (rect.getWidth()) / 2, rect.getHeight() / 2, this_rect.getWidth(), this_rect.getHeight());
 		break;
 	case CA_RIGHT :
-		this_rect.setLeftTopAndSize(new_world_rect.mRight - world_rect_padding - this_rect.getWidth(),
+		this_rect.setLeftTopAndSize(rect.mRight - this_rect.getWidth(),
 			this_rect.mTop,
 			this_rect.getWidth(),
 			this_rect.getHeight());
@@ -126,45 +155,38 @@ void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect ne
 
 void LLScreenChannelBase::init(S32 channel_left, S32 channel_right)
 {
-	if(LLSideTray::instanceCreated())
-	{
-		LLSideTray*	side_bar = LLSideTray::getInstance();
-		side_bar->setVisibleWidthChangeCallback(boost::bind(&LLScreenChannelBase::resetPositionAndSize, this));
-	}
-
-	// top and bottom set by updateBottom()
+	// top and bottom set by updateRect()
 	setRect(LLRect(channel_left, 0, channel_right, 0));
-	updateBottom();
+	updateRect();
 	setVisible(TRUE);
 }
 
-void	LLScreenChannelBase::updateBottom()
+void	LLScreenChannelBase::updateRect()
 {
-	S32 channel_top = gViewerWindow->getWorldViewRectScaled().getHeight();
-	S32 channel_bottom = gSavedSettings.getS32("ChannelBottomPanelMargin");
+	S32 channel_top = getChannelRect().mTop;
+	S32 channel_bottom = getChannelRect().mBottom + gSavedSettings.getS32("ChannelBottomPanelMargin");
 	S32 channel_left = getRect().mLeft;
 	S32 channel_right = getRect().mRight;
 	setRect(LLRect(channel_left, channel_top, channel_right, channel_bottom));
 }
 
-
 //--------------------------------------------------------------------------
 //////////////////////
 // LLScreenChannel
 //////////////////////
 //--------------------------------------------------------------------------
-LLScreenChannel::LLScreenChannel(LLUUID& id):	
-LLScreenChannelBase(id)
-,mStartUpToastPanel(NULL)
-{	
+LLScreenChannel::LLScreenChannel(const Params& p)
+:	LLScreenChannelBase(p),
+	mStartUpToastPanel(NULL)
+{
 }
 
 //--------------------------------------------------------------------------
 void LLScreenChannel::init(S32 channel_left, S32 channel_right)
 {
 	LLScreenChannelBase::init(channel_left, channel_right);
-	LLRect world_rect = gViewerWindow->getWorldViewRectScaled();
-	updatePositionAndSize(world_rect, world_rect);
+	LLRect channel_rect = getChannelRect();
+	updatePositionAndSize(channel_rect);
 }
 
 //--------------------------------------------------------------------------
@@ -201,19 +223,8 @@ std::list<LLToast*> LLScreenChannel::findToasts(const Matcher& matcher)
 }
 
 //--------------------------------------------------------------------------
-void LLScreenChannel::updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect)
+void LLScreenChannel::updatePositionAndSize(LLRect new_world_rect)
 {
-	/*
-	take sidetray into account - screenchannel should not overlap sidetray
-	*/
-	S32 world_rect_padding = 0;
-	if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE 
-		&& LLSideTray::instanceCreated	())
-	{
-		world_rect_padding += LLSideTray::getInstance()->getVisibleWidth();
-	}
-
-
 	LLRect this_rect = getRect();
 
 	switch(mChannelAlignment)
@@ -222,11 +233,11 @@ void LLScreenChannel::updatePositionAndSize(LLRect old_world_rect, LLRect new_wo
 		this_rect.mTop = (S32) (new_world_rect.getHeight() * getHeightRatio());
 		break;
 	case CA_CENTRE :
-		LLScreenChannelBase::updatePositionAndSize(old_world_rect, new_world_rect);
+		LLScreenChannelBase::updatePositionAndSize(new_world_rect);
 		return;
 	case CA_RIGHT :
 		this_rect.mTop = (S32) (new_world_rect.getHeight() * getHeightRatio());
-		this_rect.setLeftTopAndSize(new_world_rect.mRight - world_rect_padding - this_rect.getWidth(),
+		this_rect.setLeftTopAndSize(new_world_rect.mRight - this_rect.getWidth(),
 			this_rect.mTop,
 			this_rect.getWidth(),
 			this_rect.getHeight());
@@ -488,6 +499,13 @@ void LLScreenChannel::modifyToastByNotificationID(LLUUID id, LLPanel* panel)
 //--------------------------------------------------------------------------
 void LLScreenChannel::redrawToasts()
 {
+	if (!getParent())
+	{
+		// connect to floater snap region just to get resize events, we don't care about being a proper widget 
+		mFloaterSnapRegion->addChild(this);
+		setFollows(FOLLOWS_ALL);
+	}
+
 	if(mToastList.size() == 0)
 		return;
 
@@ -514,7 +532,7 @@ void LLScreenChannel::showToastsBottom()
 	S32		toast_margin = 0;
 	std::vector<ToastElem>::reverse_iterator it;
 
-	updateBottom();
+	updateRect();
 
 	LLDockableFloater* floater = dynamic_cast<LLDockableFloater*>(LLDockableFloater::getInstanceHandle().get());
 
@@ -546,9 +564,9 @@ void LLScreenChannel::showToastsBottom()
 				(*it).toast->translate(0, shift);
 			}
 
-			LLRect world_rect = gViewerWindow->getWorldViewRectScaled();
+			LLRect channel_rect = getChannelRect();
 			// don't show toasts if there is not enough space
-			if(toast_rect.mTop > world_rect.mTop)
+			if(toast_rect.mTop > channel_rect.mTop)
 			{
 				break;
 			}
@@ -619,11 +637,103 @@ void LLScreenChannel::showToastsCentre()
 //--------------------------------------------------------------------------
 void LLScreenChannel::showToastsTop()
 {
+	LLRect channel_rect = getChannelRect();
+
+	LLRect	toast_rect;	
+	S32		top = channel_rect.mTop;
+	S32		toast_margin = 0;
+	std::vector<ToastElem>::reverse_iterator it;
+
+	updateRect();
+
+	LLDockableFloater* floater = dynamic_cast<LLDockableFloater*>(LLDockableFloater::getInstanceHandle().get());
+
+	for(it = mToastList.rbegin(); it != mToastList.rend(); ++it)
+	{
+		if(it != mToastList.rbegin())
+		{
+			LLToast* toast = (*(it-1)).toast;
+			top = toast->getRect().mBottom - toast->getTopPad();
+			toast_margin = gSavedSettings.getS32("ToastGap");
+		}
+
+		toast_rect = (*it).toast->getRect();
+		toast_rect.setLeftTopAndSize(channel_rect.mRight - toast_rect.getWidth(),
+			top, toast_rect.getWidth(),
+			toast_rect.getHeight());
+		(*it).toast->setRect(toast_rect);
+
+		if(floater && floater->overlapsScreenChannel())
+		{
+			if(it == mToastList.rbegin())
+			{
+				// move first toast above docked floater
+				S32 shift = -floater->getRect().getHeight();
+				if(floater->getDockControl())
+				{
+					shift -= floater->getDockControl()->getTongueHeight();
+				}
+				(*it).toast->translate(0, shift);
+			}
+
+			LLRect channel_rect = getChannelRect();
+			// don't show toasts if there is not enough space
+			if(toast_rect.mBottom < channel_rect.mBottom)
+			{
+				break;
+			}
+		}
+
+		bool stop_showing_toasts = (*it).toast->getRect().mBottom < channel_rect.mBottom;
+
+		if(!stop_showing_toasts)
+		{
+			if( it != mToastList.rend()-1)
+			{
+				S32 toast_bottom = (*it).toast->getRect().mBottom - gSavedSettings.getS32("ToastGap");
+				stop_showing_toasts = toast_bottom < channel_rect.mBottom;
+			}
+		} 
+
+		// at least one toast should be visible
+		if(it == mToastList.rbegin())
+		{
+			stop_showing_toasts = false;
+		}
+
+		if(stop_showing_toasts)
+			break;
+
+		if( !(*it).toast->getVisible() )
+		{
+			// HACK
+			// EXT-2653: it is necessary to prevent overlapping for secondary showed toasts
+			(*it).toast->setVisible(TRUE);
+		}		
+		if(!(*it).toast->hasFocus())
+		{
+			// Fixing Z-order of toasts (EXT-4862)
+			// Next toast will be positioned under this one.
+			gFloaterView->sendChildToBack((*it).toast);
+		}
+	}
+
+	// Dismiss toasts we don't have space for (STORM-391).
+	if(it != mToastList.rend())
+	{
+		mHiddenToastsNum = 0;
+		for(; it != mToastList.rend(); it++)
+		{
+			(*it).toast->hide();
+		}
+	}
 }
 
 //--------------------------------------------------------------------------
 void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)
 {
+	LLScreenChannelBase::updateRect();
+
 	LLRect toast_rect;
 	LLToast::Params p;
 	p.lifetime_secs = timer;
@@ -646,13 +756,10 @@ void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)
 	text_box->setValue(text);
 	text_box->setVisible(TRUE);
 
-	S32 old_height = text_box->getRect().getHeight();
 	text_box->reshapeToFitText();
 	text_box->setOrigin(text_box->getRect().mLeft, (wrapper_panel->getRect().getHeight() - text_box->getRect().getHeight())/2);
-	S32 new_height = text_box->getRect().getHeight();
-	S32 height_delta = new_height - old_height;
 
-	toast_rect.setLeftTopAndSize(0, toast_rect.getHeight() + height_delta +gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_rect.getHeight());
+	toast_rect.setLeftTopAndSize(0, getRect().getHeight() - gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_rect.getHeight());
 	mStartUpToastPanel->setRect(toast_rect);
 
 	addChild(mStartUpToastPanel);
@@ -848,7 +955,7 @@ void LLScreenChannel::updateShowToastsState()
 		return;
 	}
 
-	updateBottom();
+	updateRect();
 }
 
 //--------------------------------------------------------------------------
diff --git a/indra/newview/llscreenchannel.h b/indra/newview/llscreenchannel.h
index d207d139819cc63242e3c490f12bac8b6a2c0097..c9f8855fe63c7a63fb719d8bb548e957a82e867b 100644
--- a/indra/newview/llscreenchannel.h
+++ b/indra/newview/llscreenchannel.h
@@ -53,22 +53,34 @@ class LLScreenChannelBase : public LLUICtrl
 {
 	friend class LLChannelManager;
 public:
-	LLScreenChannelBase(const LLUUID& id);
-	~LLScreenChannelBase();
+	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
+	{
+		Mandatory<LLUUID>			id;
+		Optional<bool>				display_toasts_always;
+		Optional<EToastAlignment>	toast_align;
+		Optional<EChannelAlignment>	channel_align;
+
+		Params()
+		:	id("id", LLUUID("")), 
+			display_toasts_always("display_toasts_always", false), 
+			toast_align("toast_align", NA_BOTTOM), 
+			channel_align("channel_align", CA_LEFT)
+		{}
+	};
+
+	LLScreenChannelBase(const Params&);
+	
+	BOOL postBuild();
+
+	void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
 
 	// Channel's outfit-functions
 	// update channel's size and position in the World View
-	virtual void		updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect);
-	void				resetPositionAndSize();
+	virtual void		updatePositionAndSize(LLRect rect);
 
 	// initialization of channel's shape and position
 	virtual void		init(S32 channel_left, S32 channel_right);
 
-
-	virtual void		setToastAlignment(EToastAlignment align) {mToastAlignment = align;}
-	
-	virtual void		setChannelAlignment(EChannelAlignment align) {mChannelAlignment = align;}
-
 	// kill or modify a toast by its ID
 	virtual void		killToastByNotificationID(LLUUID id) {};
 	virtual void		modifyToastNotificationByID(LLUUID id, LLSD data) {};
@@ -91,7 +103,6 @@ class LLScreenChannelBase : public LLUICtrl
 
 	void setCanStoreToasts(bool store) { mCanStoreToasts = store; }
 
-	void setDisplayToastsAlways(bool display_toasts) { mDisplayToastsAlways = display_toasts; }
 	bool getDisplayToastsAlways() { return mDisplayToastsAlways; }
 
 	// get number of hidden notifications from a channel
@@ -106,17 +117,20 @@ class LLScreenChannelBase : public LLUICtrl
 	
 	// get ID of a channel
 	LLUUID	getChannelID() { return mID; }
+	LLHandle<LLScreenChannelBase> getHandle() { mRootHandle.bind(this); return mRootHandle; }
 
 protected:
-	void	updateBottom();
+	void	updateRect();
+	LLRect	getChannelRect();
 
 	// Channel's flags
 	bool		mControlHovering;
-	LLToast*		mHoveredToast;
+	LLToast*	mHoveredToast;
 	bool		mCanStoreToasts;
 	bool		mDisplayToastsAlways;
 	// controls whether a channel shows toasts or not
 	bool		mShowToasts;
+	LLRootHandle<LLScreenChannelBase> mRootHandle;
 	// 
 	EToastAlignment		mToastAlignment;
 	EChannelAlignment	mChannelAlignment;
@@ -125,9 +139,9 @@ class LLScreenChannelBase : public LLUICtrl
 
 	// channel's ID
 	LLUUID	mID;
-
-	// store a connection to prevent futher crash that is caused by sending a signal to a destroyed channel
-	boost::signals2::connection mWorldViewRectConnection;
+	
+	LLView*	mFloaterSnapRegion;
+	LLView* mChicletRegion;
 };
 
 
@@ -138,7 +152,7 @@ class LLScreenChannel : public LLScreenChannelBase
 {
 	friend class LLChannelManager;
 public:
-	LLScreenChannel(LLUUID& id);
+	LLScreenChannel(const Params&);
 	virtual ~LLScreenChannel();
 
 	class Matcher
@@ -153,7 +167,7 @@ class LLScreenChannel : public LLScreenChannelBase
 
 	// Channel's outfit-functions
 	// update channel's size and position in the World View
-	void		updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect);
+	void		updatePositionAndSize(LLRect new_rect);
 	// initialization of channel's shape and position
 	void		init(S32 channel_left, S32 channel_right);
 	
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
index 170e23e4c5d98c1583162c8ee3466e942970defa..6f98be1cb8763f89d2fbb2c982ab2a7766da1586 100644
--- a/indra/newview/llscriptfloater.cpp
+++ b/indra/newview/llscriptfloater.cpp
@@ -28,9 +28,9 @@
 #include "llscriptfloater.h"
 #include "llagentcamera.h"
 
-#include "llbottomtray.h"
 #include "llchannelmanager.h"
 #include "llchiclet.h"
+#include "llchicletbar.h"
 #include "llfloaterreg.h"
 #include "lllslconstants.h"
 #include "llnotifications.h"
@@ -95,7 +95,7 @@ bool LLScriptFloater::toggle(const LLUUID& notification_id)
 		show(notification_id);
 	}
 
-	LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(notification_id, true);
+	LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(notification_id, true);
 	return true;
 }
 
@@ -131,11 +131,6 @@ void LLScriptFloater::setNotificationId(const LLUUID& id)
 	mObjectId = notification_id_to_object_id(id);
 }
 
-void LLScriptFloater::getAllowedRect(LLRect& rect)
-{
-	rect = gViewerWindow->getWorldViewRectScaled();
-}
-
 void LLScriptFloater::createForm(const LLUUID& notification_id)
 {
 	// delete old form
@@ -211,7 +206,7 @@ void LLScriptFloater::setVisible(BOOL visible)
 
 	if(!visible)
 	{
-		LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
+		LLIMChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
 		if(chiclet)
 		{
 			chiclet->setToggleState(false);
@@ -224,7 +219,7 @@ void LLScriptFloater::onMouseDown()
 	if(getNotificationId().notNull())
 	{
 		// Remove new message icon
-		LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
+		LLIMChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId());
 		if (chiclet == NULL)
 		{
 			llerror("Dock chiclet for LLScriptFloater doesn't exist", 0);
@@ -267,7 +262,7 @@ void LLScriptFloater::onFocusLost()
 {
 	if(getNotificationId().notNull())
 	{
-		LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), false);
+		LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), false);
 	}
 }
 
@@ -276,7 +271,7 @@ void LLScriptFloater::onFocusReceived()
 	// first focus will be received before setObjectId() call - don't toggle chiclet
 	if(getNotificationId().notNull())
 	{
-		LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), true);
+		LLChicletBar::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), true);
 	}
 }
 
@@ -284,7 +279,7 @@ void LLScriptFloater::dockToChiclet(bool dock)
 {
 	if (getDockControl() == NULL)
 	{
-		LLChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(getNotificationId());
+		LLChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(getNotificationId());
 		if (chiclet == NULL)
 		{
 			llwarns << "Dock chiclet for LLScriptFloater doesn't exist" << llendl;
@@ -292,7 +287,7 @@ void LLScriptFloater::dockToChiclet(bool dock)
 		}
 		else
 		{
-			LLBottomTray::getInstance()->getChicletPanel()->scrollToChiclet(chiclet);
+			LLChicletBar::getInstance()->getChicletPanel()->scrollToChiclet(chiclet);
 		}
 
 		// Stop saving position while we dock floater
@@ -300,7 +295,7 @@ void LLScriptFloater::dockToChiclet(bool dock)
 		setSavePosition(false);
 
 		setDockControl(new LLDockControl(chiclet, this, getDockTongue(),
-			LLDockControl::TOP,  boost::bind(&LLScriptFloater::getAllowedRect, this, _1)));
+			LLDockControl::BOTTOM));
 
 		setDocked(dock);
 
@@ -352,7 +347,7 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
 		script_notification_map_t::const_iterator it = findUsingObjectId(object_id);
 		if(it != mNotifications.end())
 		{
-			LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(it->first);
+			LLIMChiclet* chiclet = LLChicletBar::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(it->first);
 			if(chiclet)
 			{
 				// Pass the new_message icon state further.
@@ -375,11 +370,11 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
 	// Create inventory offer chiclet for offer type notifications
 	if( OBJ_GIVE_INVENTORY == obj_type )
 	{
-		LLBottomTray::instance().getChicletPanel()->createChiclet<LLInvOfferChiclet>(notification_id);
+		LLChicletBar::instance().getChicletPanel()->createChiclet<LLInvOfferChiclet>(notification_id);
 	}
 	else
 	{
-		LLBottomTray::getInstance()->getChicletPanel()->createChiclet<LLScriptChiclet>(notification_id);
+		LLChicletBar::getInstance()->getChicletPanel()->createChiclet<LLScriptChiclet>(notification_id);
 	}
 
 	LLIMWellWindow::getInstance()->addObjectRow(notification_id, set_new_message);
@@ -413,9 +408,16 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
 	}
 
 	// remove related chiclet
-	LLBottomTray::getInstance()->getChicletPanel()->removeChiclet(notification_id);
+	if (LLChicletBar::instanceExists())
+	{
+		LLChicletBar::getInstance()->getChicletPanel()->removeChiclet(notification_id);
+	}
 
-	LLIMWellWindow::getInstance()->removeObjectRow(notification_id);
+	LLIMWellWindow* im_well_window = LLIMWellWindow::findInstance();
+	if (im_well_window)
+	{
+		im_well_window->removeObjectRow(notification_id);
+	}
 
 	mNotifications.erase(notification_id);
 
diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h
index 8e959a3d0e22eb12c53d649e7d491252e7699a03..70451194b38bbde051a7f5c3a7b1a9193db1d5d8 100644
--- a/indra/newview/llscriptfloater.h
+++ b/indra/newview/llscriptfloater.h
@@ -185,8 +185,6 @@ class LLScriptFloater : public LLDockableFloater
 	 */
 	void createForm(const LLUUID& object_id);
 
-	/*virtual*/ void getAllowedRect(LLRect& rect);
-
 	/**
 	 * Hide all notification toasts.
 	 */
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 733902ad30d937923f8bfe093d9a0942b028f06c..6111255a6649397322f95b17da3150215a694d06 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -89,6 +89,7 @@
 #include "llvoavatarself.h"
 #include "llvovolume.h"
 #include "pipeline.h"
+#include "llviewershadermgr.h"
 
 #include "llglheaders.h"
 
@@ -4837,7 +4838,7 @@ void LLSelectMgr::processForceObjectSelect(LLMessageSystem* msg, void**)
 	LLSelectMgr::getInstance()->highlightObjectAndFamily(objects);
 }
 
-extern LLGLdouble	gGLModelView[16];
+extern F32	gGLModelView[16];
 
 void LLSelectMgr::updateSilhouettes()
 {
@@ -5133,20 +5134,20 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)
 		F32 cur_zoom = gAgentCamera.mHUDCurZoom;
 
 		// set up transform to encompass bounding box of HUD
-		glMatrixMode(GL_PROJECTION);
+		gGL.matrixMode(LLRender::MM_PROJECTION);
 		gGL.pushMatrix();
-		glLoadIdentity();
+		gGL.loadIdentity();
 		F32 depth = llmax(1.f, hud_bbox.getExtentLocal().mV[VX] * 1.1f);
-		glOrtho(-0.5f * LLViewerCamera::getInstance()->getAspect(), 0.5f * LLViewerCamera::getInstance()->getAspect(), -0.5f, 0.5f, 0.f, depth);
+		gGL.ortho(-0.5f * LLViewerCamera::getInstance()->getAspect(), 0.5f * LLViewerCamera::getInstance()->getAspect(), -0.5f, 0.5f, 0.f, depth);
 
-		glMatrixMode(GL_MODELVIEW);
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 		gGL.pushMatrix();
 		gGL.pushUIMatrix();
 		gGL.loadUIIdentity();
-		glLoadIdentity();
-		glLoadMatrixf(OGL_TO_CFR_ROTATION);		// Load Cory's favorite reference frame
-		glTranslatef(-hud_bbox.getCenterLocal().mV[VX] + (depth *0.5f), 0.f, 0.f);
-		glScalef(cur_zoom, cur_zoom, cur_zoom);
+		gGL.loadIdentity();
+		gGL.loadMatrix(OGL_TO_CFR_ROTATION);		// Load Cory's favorite reference frame
+		gGL.translatef(-hud_bbox.getCenterLocal().mV[VX] + (depth *0.5f), 0.f, 0.f);
+		gGL.scalef(cur_zoom, cur_zoom, cur_zoom);
 	}
 	if (mSelectedObjects->getNumNodes())
 	{
@@ -5239,10 +5240,10 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)
 
 	if (isAgentAvatarValid() && for_hud)
 	{
-		glMatrixMode(GL_PROJECTION);
+		gGL.matrixMode(LLRender::MM_PROJECTION);
 		gGL.popMatrix();
 
-		glMatrixMode(GL_MODELVIEW);
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 		gGL.popMatrix();
 		gGL.popUIMatrix();
 		stop_glerror();
@@ -5555,39 +5556,37 @@ BOOL LLSelectNode::allowOperationOnNode(PermissionBit op, U64 group_proxy_power)
 //helper function for pushing relevant vertices from drawable to GL
 void pushWireframe(LLDrawable* drawable)
 {
-	if (drawable->isState(LLDrawable::RIGGED))
-	{ //render straight from rigged volume if this is a rigged attachment
-		LLVOVolume* vobj = drawable->getVOVolume();
-		if (vobj)
+	LLVOVolume* vobj = drawable->getVOVolume();
+	if (vobj)
+	{
+		LLVertexBuffer::unbind();
+		gGL.pushMatrix();
+		gGL.multMatrix((F32*) vobj->getRelativeXform().mMatrix);
+
+		LLVolume* volume = NULL;
+
+		if (drawable->isState(LLDrawable::RIGGED))
 		{
-			vobj->updateRiggedVolume();
-			LLRiggedVolume* rigged_volume = vobj->getRiggedVolume();
-			if (rigged_volume)
-			{
-				LLVertexBuffer::unbind();
-				gGL.pushMatrix();
-				glMultMatrixf((F32*) vobj->getRelativeXform().mMatrix);
-				for (S32 i = 0; i < rigged_volume->getNumVolumeFaces(); ++i)
-				{
-					const LLVolumeFace& face = rigged_volume->getVolumeFace(i);
-					glVertexPointer(3, GL_FLOAT, 16, face.mPositions);
-					glDrawElements(GL_TRIANGLES, face.mNumIndices, GL_UNSIGNED_SHORT, face.mIndices);
-				}
-				gGL.popMatrix();
-			}
+				vobj->updateRiggedVolume();
+				volume = vobj->getRiggedVolume();
 		}
-	}
-	else
-	{
-		for (S32 i = 0; i < drawable->getNumFaces(); ++i)
+		else
 		{
-			LLFace* face = drawable->getFace(i);
-			if (face->verify())
+			volume = vobj->getVolume();
+		}
+
+		if (volume)
+		{
+			for (S32 i = 0; i < volume->getNumVolumeFaces(); ++i)
 			{
-				pushVerts(face, LLVertexBuffer::MAP_VERTEX);
+				const LLVolumeFace& face = volume->getVolumeFace(i);
+				LLVertexBuffer::drawElements(LLRender::TRIANGLES, face.mPositions, face.mTexCoords, face.mNumIndices, face.mIndices);
 			}
 		}
+
+		gGL.popMatrix();
 	}
+	
 }
 
 void LLSelectNode::renderOneWireframe(const LLColor4& color)
@@ -5604,22 +5603,29 @@ void LLSelectNode::renderOneWireframe(const LLColor4& color)
 		return;
 	}
 
-	glMatrixMode(GL_MODELVIEW);
+	LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+
+	if (shader)
+	{
+		gHighlightProgram.bind();
+	}
+
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.pushMatrix();
 	
 	BOOL is_hud_object = objectp->isHUDAttachment();
 
 	if (drawable->isActive())
 	{
-		glLoadMatrixd(gGLModelView);
-		glMultMatrixf((F32*) objectp->getRenderMatrix().mMatrix);
+		gGL.loadMatrix(gGLModelView);
+		gGL.multMatrix((F32*) objectp->getRenderMatrix().mMatrix);
 	}
 	else if (!is_hud_object)
 	{
-		glLoadIdentity();
-		glMultMatrixd(gGLModelView);
+		gGL.loadIdentity();
+		gGL.multMatrix(gGLModelView);
 		LLVector3 trans = objectp->getRegion()->getOriginAgent();		
-		glTranslatef(trans.mV[0], trans.mV[1], trans.mV[2]);		
+		gGL.translatef(trans.mV[0], trans.mV[1], trans.mV[2]);		
 	}
 	
 	glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
@@ -5627,26 +5633,35 @@ void LLSelectNode::renderOneWireframe(const LLColor4& color)
 	if (LLSelectMgr::sRenderHiddenSelections) // && gFloaterTools && gFloaterTools->getVisible())
 	{
 		gGL.blendFunc(LLRender::BF_SOURCE_COLOR, LLRender::BF_ONE);
-		LLGLEnable fog(GL_FOG);
-		glFogi(GL_FOG_MODE, GL_LINEAR);
-		float d = (LLViewerCamera::getInstance()->getPointOfInterest()-LLViewerCamera::getInstance()->getOrigin()).magVec();
-		LLColor4 fogCol = color * (F32)llclamp((LLSelectMgr::getInstance()->getSelectionCenterGlobal()-gAgentCamera.getCameraPositionGlobal()).magVec()/(LLSelectMgr::getInstance()->getBBoxOfSelection().getExtentLocal().magVec()*4), 0.0, 1.0);
-		glFogf(GL_FOG_START, d);
-		glFogf(GL_FOG_END, d*(1 + (LLViewerCamera::getInstance()->getView() / LLViewerCamera::getInstance()->getDefaultFOV())));
-		glFogfv(GL_FOG_COLOR, fogCol.mV);
-
 		LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE, GL_GEQUAL);
-		gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
+		if (shader)
 		{
-			glColor4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.4f);
+			gGL.diffuseColor4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.4f);
 			pushWireframe(drawable);
 		}
+		else
+		{
+			LLGLEnable fog(GL_FOG);
+			glFogi(GL_FOG_MODE, GL_LINEAR);
+			float d = (LLViewerCamera::getInstance()->getPointOfInterest()-LLViewerCamera::getInstance()->getOrigin()).magVec();
+			LLColor4 fogCol = color * (F32)llclamp((LLSelectMgr::getInstance()->getSelectionCenterGlobal()-gAgentCamera.getCameraPositionGlobal()).magVec()/(LLSelectMgr::getInstance()->getBBoxOfSelection().getExtentLocal().magVec()*4), 0.0, 1.0);
+			glFogf(GL_FOG_START, d);
+			glFogf(GL_FOG_END, d*(1 + (LLViewerCamera::getInstance()->getView() / LLViewerCamera::getInstance()->getDefaultFOV())));
+			glFogfv(GL_FOG_COLOR, fogCol.mV);
+
+			gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
+			{
+				gGL.diffuseColor4f(color.mV[VRED], color.mV[VGREEN], color.mV[VBLUE], 0.4f);
+				pushWireframe(drawable);
+			}
+		}
 	}
 
 	gGL.flush();
 	gGL.setSceneBlendType(LLRender::BT_ALPHA);
 
-	glColor4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha*2);
+	gGL.diffuseColor4f(color.mV[VRED]*2, color.mV[VGREEN]*2, color.mV[VBLUE]*2, LLSelectMgr::sHighlightAlpha*2);
+	
 	LLGLEnable offset(GL_POLYGON_OFFSET_LINE);
 	glPolygonOffset(3.f, 3.f);
 	glLineWidth(3.f);
@@ -5654,6 +5669,11 @@ void LLSelectNode::renderOneWireframe(const LLColor4& color)
 	glLineWidth(1.f);
 	glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 	gGL.popMatrix();
+
+	if (shader)
+	{
+		shader->bind();
+	}
 }
 
 //-----------------------------------------------------------------------------
@@ -5692,21 +5712,29 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)
 		return;
 	}
 
-	glMatrixMode(GL_MODELVIEW);
+
+	LLGLSLShader* shader = LLGLSLShader::sCurBoundShaderPtr;
+
+	if (shader)
+	{ //switch to "solid color" program for SH-2690 -- works around driver bug causing bad triangles when rendering silhouettes
+		gSolidColorProgram.bind();
+	}
+
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.pushMatrix();
 	gGL.pushUIMatrix();
 	gGL.loadUIIdentity();
 
 	if (!is_hud_object)
 	{
-		glLoadIdentity();
-		glMultMatrixd(gGLModelView);
+		gGL.loadIdentity();
+		gGL.multMatrix(gGLModelView);
 	}
 	
 	
 	if (drawable->isActive())
 	{
-		glMultMatrixf((F32*) objectp->getRenderMatrix().mMatrix);
+		gGL.multMatrix((F32*) objectp->getRenderMatrix().mMatrix);
 	}
 
 	LLVolume *volume = objectp->getVolume();
@@ -5814,6 +5842,11 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)
 	}
 	gGL.popMatrix();
 	gGL.popUIMatrix();
+
+	if (shader)
+	{
+		shader->bind();
+	}
 }
 
 //
@@ -6503,7 +6536,7 @@ F32 LLObjectSelection::getSelectedObjectStreamingCost(S32* total_bytes, S32* vis
 	return cost;
 }
 
-U32 LLObjectSelection::getSelectedObjectTriangleCount()
+U32 LLObjectSelection::getSelectedObjectTriangleCount(S32* vcount)
 {
 	U32 count = 0;
 	for (list_t::iterator iter = mList.begin(); iter != mList.end(); ++iter)
@@ -6513,7 +6546,7 @@ U32 LLObjectSelection::getSelectedObjectTriangleCount()
 		
 		if (object)
 		{
-			count += object->getTriangleCount();
+			count += object->getTriangleCount(vcount);
 		}
 	}
 
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index 166616e13e03e96ee1716ae54bcead366b0bca1e..87ada5ac6b6cbe3acc9535519a0356343e2a1f4d 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -286,7 +286,7 @@ class LLObjectSelection : public LLRefCount
 	S32 getSelectedObjectRenderCost();
 	
 	F32 getSelectedObjectStreamingCost(S32* total_bytes = NULL, S32* visible_bytes = NULL);
-	U32 getSelectedObjectTriangleCount();
+	U32 getSelectedObjectTriangleCount(S32* vcount = NULL);
 
 	S32 getTECount();
 	S32 getRootObjectCount();
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index 28ec11d1c7b99361ae3d888e8bf9c70c4f40b062..853656905c9dc3b90c585064e65aa475e13eed23 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -32,6 +32,7 @@
 #include "llagentcamera.h"
 #include "llagentwearables.h"
 #include "llappearancemgr.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfolderview.h"
 #include "llinventorypanel.h"
 #include "llfiltereditor.h"
@@ -41,7 +42,6 @@
 #include "lloutfitobserver.h"
 #include "llpaneleditwearable.h"
 #include "llpaneloutfitsinventory.h"
-#include "llsidetray.h"
 #include "lltextbox.h"
 #include "lluictrlfactory.h"
 #include "llviewercontrol.h"
@@ -163,7 +163,6 @@ void LLSidepanelAppearance::onOpen(const LLSD& key)
 	else
 	{
 		// Switch to the requested panel.
-		// *TODO: replace this crap with LLSideTrayPanelContainer
 		std::string type = key["type"].asString();
 		if (type == "my_outfits")
 		{
@@ -456,7 +455,7 @@ void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name)
 //static
 void LLSidepanelAppearance::editWearable(LLWearable *wearable, LLView *data, BOOL disable_camera_switch)
 {
-	LLSideTray::getInstance()->showPanel("sidepanel_appearance");
+	LLFloaterSidePanelContainer::showPanel("appearance", LLSD());
 
 	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(data);
 	if (panel)
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index bd62b5c101af064e6dcebc001462e7e09ff149f7..038b18afbdc0fcf0331e8e3af4e9b34db4baeb2c 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -34,6 +34,7 @@
 #include "llbutton.h"
 #include "lldate.h"
 #include "llfirstuse.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfoldertype.h"
 #include "llhttpclient.h"
 #include "llinventorybridge.h"
@@ -46,7 +47,6 @@
 #include "lloutfitobserver.h"
 #include "llpanelmaininventory.h"
 #include "llpanelmarketplaceinbox.h"
-#include "llpanelmarketplaceoutbox.h"
 #include "llselectmgr.h"
 #include "llsidepaneliteminfo.h"
 #include "llsidepaneltaskinfo.h"
@@ -67,35 +67,22 @@ static LLRegisterPanelClassWrapper<LLSidepanelInventory> t_inventory("sidepanel_
 // No longer want the inbox panel to auto-expand since it creates issues with the "new" tag time stamp
 #define AUTO_EXPAND_INBOX	0
 
-// Temporarily disabling the outbox until we straighten out the API
-#define ENABLE_MERCHANT_OUTBOX_PANEL		0	// keep in sync with ENABLE_INVENTORY_DISPLAY_OUTBOX, ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU
-
 static const char * const INBOX_BUTTON_NAME = "inbox_btn";
-static const char * const OUTBOX_BUTTON_NAME = "outbox_btn";
-
 static const char * const INBOX_LAYOUT_PANEL_NAME = "inbox_layout_panel";
-static const char * const OUTBOX_LAYOUT_PANEL_NAME = "outbox_layout_panel";
-
-static const char * const INBOX_OUTBOX_LAYOUT_PANEL_NAME = "inbox_outbox_layout_panel";
 static const char * const MAIN_INVENTORY_LAYOUT_PANEL_NAME = "main_inventory_layout_panel";
 
-static const char * const INBOX_INVENTORY_PANEL = "inventory_inbox";
-static const char * const OUTBOX_INVENTORY_PANEL = "inventory_outbox";
-
-static const char * const INBOX_OUTBOX_LAYOUT_STACK_NAME = "inbox_outbox_layout_stack";
 static const char * const INVENTORY_LAYOUT_STACK_NAME = "inventory_layout_stack";
 
 static const char * const MARKETPLACE_INBOX_PANEL = "marketplace_inbox";
-static const char * const MARKETPLACE_OUTBOX_PANEL = "marketplace_outbox";
 
 //
 // Helpers
 //
 
-class LLInboxOutboxAddedObserver : public LLInventoryCategoryAddedObserver
+class LLInboxAddedObserver : public LLInventoryCategoryAddedObserver
 {
 public:
-	LLInboxOutboxAddedObserver(LLSidepanelInventory * sidepanelInventory)
+	LLInboxAddedObserver(LLSidepanelInventory * sidepanelInventory)
 		: LLInventoryCategoryAddedObserver()
 		, mSidepanelInventory(sidepanelInventory)
 	{
@@ -112,21 +99,9 @@ class LLInboxOutboxAddedObserver : public LLInventoryCategoryAddedObserver
 			switch (added_category_type)
 			{
 				case LLFolderType::FT_INBOX:
+					mSidepanelInventory->enableInbox(true);
 					mSidepanelInventory->observeInboxModifications(added_category->getUUID());
 					break;
-				case LLFolderType::FT_OUTBOX:
-					mSidepanelInventory->observeOutboxModifications(added_category->getUUID());
-					break;
-				case LLFolderType::FT_NONE:
-					// HACK until sim update to properly create folder with system type
-					if (added_category->getName() == "Received Items")
-					{
-						mSidepanelInventory->observeInboxModifications(added_category->getUUID());
-					}
-					else if (added_category->getName() == "Merchant Outbox")
-					{
-						mSidepanelInventory->observeOutboxModifications(added_category->getUUID());
-					}
 				default:
 					break;
 			}
@@ -145,12 +120,10 @@ LLSidepanelInventory::LLSidepanelInventory()
 	: LLPanel()
 	, mItemPanel(NULL)
 	, mInventoryPanelInbox(NULL)
-	, mInventoryPanelOutbox(NULL)
 	, mPanelMainInventory(NULL)
 	, mInboxEnabled(false)
-	, mOutboxEnabled(false)
 	, mCategoriesObserver(NULL)
-	, mInboxOutboxAddedObserver(NULL)
+	, mInboxAddedObserver(NULL)
 {
 	//buildFromFile( "panel_inventory.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder()
 }
@@ -163,25 +136,20 @@ LLSidepanelInventory::~LLSidepanelInventory()
 	}
 	delete mCategoriesObserver;
 	
-	if (mInboxOutboxAddedObserver && gInventory.containsObserver(mInboxOutboxAddedObserver))
+	if (mInboxAddedObserver && gInventory.containsObserver(mInboxAddedObserver))
 	{
-		gInventory.removeObserver(mInboxOutboxAddedObserver);
+		gInventory.removeObserver(mInboxAddedObserver);
 	}
-	delete mInboxOutboxAddedObserver;
+	delete mInboxAddedObserver;
 }
 
 void handleInventoryDisplayInboxChanged()
 {
-	LLSidepanelInventory* sidepanel_inventory = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-
-	sidepanel_inventory->enableInbox(gSavedSettings.getBOOL("InventoryDisplayInbox"));
-}
-
-void handleInventoryDisplayOutboxChanged()
-{
-	LLSidepanelInventory* sidepanel_inventory = dynamic_cast<LLSidepanelInventory*>(LLSideTray::getInstance()->getPanel("sidepanel_inventory"));
-
-	sidepanel_inventory->enableOutbox(gSavedSettings.getBOOL("InventoryDisplayOutbox"));
+	LLSidepanelInventory* sidepanel_inventory = LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory");
+	if (sidepanel_inventory)
+	{
+		sidepanel_inventory->enableInbox(gSavedSettings.getBOOL("InventoryDisplayInbox"));
+	}
 }
 
 BOOL LLSidepanelInventory::postBuild()
@@ -245,208 +213,132 @@ BOOL LLSidepanelInventory::postBuild()
 		}
 	}
 	
-	// Marketplace inbox/outbox setup
+	// Received items inbox setup
 	{
 		LLLayoutStack* inv_stack = getChild<LLLayoutStack>(INVENTORY_LAYOUT_STACK_NAME);
 
-		// Disable user_resize on main inventory panel by default
-		inv_stack->setPanelUserResize(MAIN_INVENTORY_LAYOUT_PANEL_NAME, false);
-		inv_stack->setPanelUserResize(INBOX_OUTBOX_LAYOUT_PANEL_NAME, false);
-
-		// Collapse marketplace panel by default
-		inv_stack->collapsePanel(getChild<LLLayoutPanel>(INBOX_OUTBOX_LAYOUT_PANEL_NAME), true);
-		
-		LLLayoutStack* inout_stack = getChild<LLLayoutStack>(INBOX_OUTBOX_LAYOUT_STACK_NAME);
-
-		// Collapse both inbox and outbox panels
-		inout_stack->collapsePanel(getChild<LLLayoutPanel>(INBOX_LAYOUT_PANEL_NAME), true);
-		inout_stack->collapsePanel(getChild<LLLayoutPanel>(OUTBOX_LAYOUT_PANEL_NAME), true);
+		// Collapse inbox panel
+		inv_stack->collapsePanel(getChild<LLLayoutPanel>(INBOX_LAYOUT_PANEL_NAME), true);
 		
 		// Set up button states and callbacks
 		LLButton * inbox_button = getChild<LLButton>(INBOX_BUTTON_NAME);
-		LLButton * outbox_button = getChild<LLButton>(OUTBOX_BUTTON_NAME);
 
 		inbox_button->setToggleState(false);
-		outbox_button->setToggleState(false);
-
 		inbox_button->setCommitCallback(boost::bind(&LLSidepanelInventory::onToggleInboxBtn, this));
-		outbox_button->setCommitCallback(boost::bind(&LLSidepanelInventory::onToggleOutboxBtn, this));
 
-		// Set the inbox and outbox visible based on debug settings (final setting comes from http request below)
+		// Set the inbox visible based on debug settings (final setting comes from http request below)
 		enableInbox(gSavedSettings.getBOOL("InventoryDisplayInbox"));
-		enableOutbox(gSavedSettings.getBOOL("InventoryDisplayOutbox"));
 
-		// Trigger callback for after login so we can setup to track inbox and outbox changes after initial inventory load
-		LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSidepanelInventory::handleLoginComplete, this));
+		// Trigger callback for after login so we can setup to track inbox changes after initial inventory load
+		LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSidepanelInventory::updateInbox, this));
 	}
 
 	gSavedSettings.getControl("InventoryDisplayInbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayInboxChanged));
-	gSavedSettings.getControl("InventoryDisplayOutbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayOutboxChanged));
+
+	// Update the verbs buttons state.
+	updateVerbs();
 
 	return TRUE;
 }
 
-void LLSidepanelInventory::handleLoginComplete()
+void LLSidepanelInventory::updateInbox()
 {
 	//
-	// Track inbox and outbox folder changes
+	// Track inbox folder changes
 	//
 
 	const bool do_not_create_folder = false;
 	const bool do_not_find_in_library = false;
 
 	const LLUUID inbox_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_INBOX, do_not_create_folder, do_not_find_in_library);
-	const LLUUID outbox_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, do_not_create_folder, do_not_find_in_library);
 	
-	// Set up observer to listen for creation of inbox and outbox if at least one of them doesn't exist
-	if (inbox_id.isNull() || outbox_id.isNull())
+	// Set up observer to listen for creation of inbox if at least one of them doesn't exist
+	if (inbox_id.isNull())
 	{
-		observeInboxOutboxCreation();
+		observeInboxCreation();
 	}
-
 	// Set up observer for inbox changes, if we have an inbox already
-	if (!inbox_id.isNull())
+	else 
 	{
-		observeInboxModifications(inbox_id);
-
 		// Enable the display of the inbox if it exists
 		enableInbox(true);
-	}
-	
-#if ENABLE_MERCHANT_OUTBOX_PANEL
-	// Set up observer for outbox changes, if we have an outbox already
-	if (!outbox_id.isNull())
-	{
-		observeOutboxModifications(outbox_id);
 
-		// Enable the display of the outbox if it exists
-		enableOutbox(true);
+		observeInboxModifications(inbox_id);
 	}
-#endif
 }
 
-void LLSidepanelInventory::observeInboxOutboxCreation()
+void LLSidepanelInventory::observeInboxCreation()
 {
 	//
-	// Set up observer to track inbox and outbox folder creation
+	// Set up observer to track inbox folder creation
 	//
 	
-	if (mInboxOutboxAddedObserver == NULL)
+	if (mInboxAddedObserver == NULL)
 	{
-		mInboxOutboxAddedObserver = new LLInboxOutboxAddedObserver(this);
+		mInboxAddedObserver = new LLInboxAddedObserver(this);
 		
-		gInventory.addObserver(mInboxOutboxAddedObserver);
+		gInventory.addObserver(mInboxAddedObserver);
 	}
 }
 
 void LLSidepanelInventory::observeInboxModifications(const LLUUID& inboxID)
 {
 	//
-	// Track inbox and outbox folder changes
+	// Silently do nothing if we already have an inbox inventory panel set up
+	// (this can happen multiple times on the initial session that creates the inbox)
 	//
-	
+
+	if (mInventoryPanelInbox != NULL)
+	{
+		return;
+	}
+
+	//
+	// Track inbox folder changes
+	//
+
 	if (inboxID.isNull())
 	{
-		llwarns << "Attempting to track modifications to non-existant inbox" << llendl;
+		llwarns << "Attempting to track modifications to non-existent inbox" << llendl;
 		return;
 	}
-	
+
 	if (mCategoriesObserver == NULL)
 	{
 		mCategoriesObserver = new LLInventoryCategoriesObserver();
 		gInventory.addObserver(mCategoriesObserver);
 	}
-	
+
 	mCategoriesObserver->addCategory(inboxID, boost::bind(&LLSidepanelInventory::onInboxChanged, this, inboxID));
-	
+
 	//
 	// Trigger a load for the entire contents of the Inbox
 	//
-	
+
 	LLInventoryModelBackgroundFetch::instance().start(inboxID);
-	
+
 	//
 	// Set up the inbox inventory view
 	//
-	
+
 	LLPanelMarketplaceInbox * inbox = getChild<LLPanelMarketplaceInbox>(MARKETPLACE_INBOX_PANEL);
 	mInventoryPanelInbox = inbox->setupInventoryPanel();
 }
 
-
-void LLSidepanelInventory::observeOutboxModifications(const LLUUID& outboxID)
-{
-	//
-	// Track outbox folder changes
-	//
-	
-	if (outboxID.isNull())
-	{
-		llwarns << "Attempting to track modifications to non-existant outbox" << llendl;
-		return;
-	}
-	
-	if (mCategoriesObserver == NULL)
-	{
-		mCategoriesObserver = new LLInventoryCategoriesObserver();
-		gInventory.addObserver(mCategoriesObserver);
-	}
-	
-	mCategoriesObserver->addCategory(outboxID, boost::bind(&LLSidepanelInventory::onOutboxChanged, this, outboxID));
-	
-	//
-	// Set up the outbox inventory view
-	//
-	
-	LLPanelMarketplaceOutbox * outbox = getChild<LLPanelMarketplaceOutbox>(MARKETPLACE_OUTBOX_PANEL);
-	mInventoryPanelOutbox = outbox->setupInventoryPanel();
-}
-
 void LLSidepanelInventory::enableInbox(bool enabled)
 {
 	mInboxEnabled = enabled;
 	
 	LLLayoutPanel * inbox_layout_panel = getChild<LLLayoutPanel>(INBOX_LAYOUT_PANEL_NAME);
 	inbox_layout_panel->setVisible(enabled);
-
-	if (mInboxEnabled)
-	{
-		LLLayoutPanel * inout_layout_panel = getChild<LLLayoutPanel>(INBOX_OUTBOX_LAYOUT_PANEL_NAME);
-
-		inout_layout_panel->setVisible(TRUE);
-		
-		if (mOutboxEnabled)
-		{
-			S32 inbox_min_dim = inbox_layout_panel->getMinDim();
-			S32 outbox_min_dim = getChild<LLLayoutPanel>(OUTBOX_LAYOUT_PANEL_NAME)->getMinDim();
-			
-			inout_layout_panel->setMinDim(inbox_min_dim + outbox_min_dim);
-		}
-	}
 }
 
-void LLSidepanelInventory::enableOutbox(bool enabled)
+void LLSidepanelInventory::openInbox()
 {
-	mOutboxEnabled = enabled;
-	
-	LLLayoutPanel * outbox_layout_panel = getChild<LLLayoutPanel>(OUTBOX_LAYOUT_PANEL_NAME);
-	outbox_layout_panel->setVisible(enabled);
-
-	if (mOutboxEnabled)
+	if (mInboxEnabled)
 	{
-		LLLayoutPanel * inout_layout_panel = getChild<LLLayoutPanel>(INBOX_OUTBOX_LAYOUT_PANEL_NAME);
-		
-		inout_layout_panel->setVisible(TRUE);
-		
-		if (mInboxEnabled)
-		{
-			S32 inbox_min_dim = getChild<LLLayoutPanel>(INBOX_LAYOUT_PANEL_NAME)->getMinDim();
-			S32 outbox_min_dim = outbox_layout_panel->getMinDim();
-			
-			inout_layout_panel->setMinDim(inbox_min_dim + outbox_min_dim);
-		}
-		
-		updateOutboxUserStatus();
+		getChild<LLButton>(INBOX_BUTTON_NAME)->setToggleState(true);
+		onToggleInboxBtn();
 	}
 }
 
@@ -456,16 +348,7 @@ void LLSidepanelInventory::onInboxChanged(const LLUUID& inbox_id)
 	LLInventoryModelBackgroundFetch::instance().start(inbox_id);
 
 #if AUTO_EXPAND_INBOX
-	// If the outbox is expanded, don't auto-expand the inbox
-	if (mOutboxEnabled)
-	{
-		if (getChild<LLButton>(OUTBOX_BUTTON_NAME)->getToggleState())
-		{
-			return;
-		}
-	}
-
-	// Expand the inbox since we have fresh items and the outbox is not expanded
+	// Expand the inbox since we have fresh items
 	if (mInboxEnabled)
 	{
 		getChild<LLButton>(INBOX_BUTTON_NAME)->setToggleState(true);
@@ -474,68 +357,16 @@ void LLSidepanelInventory::onInboxChanged(const LLUUID& inbox_id)
 #endif
 }
 
-void LLSidepanelInventory::onOutboxChanged(const LLUUID& outbox_id)
-{
-	// Expand the outbox since we have new items in it
-	if (mOutboxEnabled)
-	{
-		getChild<LLButton>(OUTBOX_BUTTON_NAME)->setToggleState(true);
-		onToggleOutboxBtn();
-	}	
-}
-
-bool LLSidepanelInventory::manageInboxOutboxPanels(LLButton * pressedButton, LLLayoutPanel * pressedPanel,
-							 LLButton * otherButton, LLLayoutPanel * otherPanel)
-{
-	bool expand = pressedButton->getToggleState();
-	bool otherExpanded = otherButton->getToggleState();
-
-	LLLayoutStack* inv_stack = getChild<LLLayoutStack>(INVENTORY_LAYOUT_STACK_NAME);
-	LLLayoutStack* inout_stack = getChild<LLLayoutStack>(INBOX_OUTBOX_LAYOUT_STACK_NAME);
-	LLLayoutPanel* inout_panel = getChild<LLLayoutPanel>(INBOX_OUTBOX_LAYOUT_PANEL_NAME);
-
-	// Enable user_resize on main inventory panel only when a marketplace box is expanded
-	inv_stack->setPanelUserResize(MAIN_INVENTORY_LAYOUT_PANEL_NAME, expand);
-	inv_stack->collapsePanel(inout_panel, !expand);
-
-	// Collapse other marketplace panel if it is expanded
-	if (expand && otherExpanded)
-	{
-		// Reshape pressedPanel to the otherPanel's height so we preserve the marketplace panel size
-		pressedPanel->reshape(pressedPanel->getRect().getWidth(), otherPanel->getRect().getHeight());
-
-		inout_stack->collapsePanel(otherPanel, true);
-		otherButton->setToggleState(false);
-	}
-	else
-	{
-		// NOTE: This is an attempt to reshape the inventory panel to the proper size but it doesn't seem to propagate
-		// properly to the child panels.
-
-		S32 new_height = inout_panel->getRect().getHeight();
-
-		if (otherPanel->getVisible())
-		{
-			new_height -= otherPanel->getMinDim();
-		}
-
-		pressedPanel->reshape(pressedPanel->getRect().getWidth(), new_height);
-	}
-
-	// Expand/collapse the indicated panel
-	inout_stack->collapsePanel(pressedPanel, !expand);
-
-	return expand;
-}
-
 void LLSidepanelInventory::onToggleInboxBtn()
 {
 	LLButton* inboxButton = getChild<LLButton>(INBOX_BUTTON_NAME);
 	LLLayoutPanel* inboxPanel = getChild<LLLayoutPanel>(INBOX_LAYOUT_PANEL_NAME);
-	LLButton* outboxButton = getChild<LLButton>(OUTBOX_BUTTON_NAME);
-	LLLayoutPanel* outboxPanel = getChild<LLLayoutPanel>(OUTBOX_LAYOUT_PANEL_NAME);
-
-	const bool inbox_expanded = manageInboxOutboxPanels(inboxButton, inboxPanel, outboxButton, outboxPanel);
+	LLLayoutStack* inv_stack = getChild<LLLayoutStack>(INVENTORY_LAYOUT_STACK_NAME);
+	
+	const bool inbox_expanded = inboxButton->getToggleState();
+	
+	// Expand/collapse the indicated panel
+	inv_stack->collapsePanel(inboxPanel, !inbox_expanded);
 
 	if (inbox_expanded && inboxPanel->isInVisibleChain())
 	{
@@ -543,16 +374,6 @@ void LLSidepanelInventory::onToggleInboxBtn()
 	}
 }
 
-void LLSidepanelInventory::onToggleOutboxBtn()
-{
-	LLButton* inboxButton = getChild<LLButton>(INBOX_BUTTON_NAME);
-	LLLayoutPanel* inboxPanel = getChild<LLLayoutPanel>(INBOX_LAYOUT_PANEL_NAME);
-	LLButton* outboxButton = getChild<LLButton>(OUTBOX_BUTTON_NAME);
-	LLLayoutPanel* outboxPanel = getChild<LLLayoutPanel>(OUTBOX_LAYOUT_PANEL_NAME);
-
-	manageInboxOutboxPanels(outboxButton, outboxPanel, inboxButton, inboxPanel);
-}
-
 void LLSidepanelInventory::onOpen(const LLSD& key)
 {
 	LLFirstUse::newInventory(false);
@@ -722,77 +543,6 @@ void LLSidepanelInventory::showInventoryPanel()
 	updateVerbs();
 }
 
-void LLSidepanelInventory::updateOutboxUserStatus()
-{
-	const bool isMerchant = (gSavedSettings.getString("InventoryMarketplaceUserStatus") == "merchant");
-	const bool hasOutbox = !gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false, false).isNull();
-	
-	LLView * outbox_placeholder = getChild<LLView>("outbox_inventory_placeholder_panel");
-	LLView * outbox_placeholder_parent = outbox_placeholder->getParent();
-	
-	LLTextBox * outbox_title_box = outbox_placeholder->getChild<LLTextBox>("outbox_inventory_placeholder_title");
-	LLTextBox * outbox_text_box = outbox_placeholder->getChild<LLTextBox>("outbox_inventory_placeholder_text");
-
-	std::string outbox_text;
-	std::string outbox_title;
-	std::string outbox_tooltip;
-
-	if (isMerchant)
-	{
-		if (hasOutbox)
-		{
-			outbox_text = LLTrans::getString("InventoryOutboxNoItems");
-			outbox_title = LLTrans::getString("InventoryOutboxNoItemsTitle");
-			outbox_tooltip = LLTrans::getString("InventoryOutboxNoItemsTooltip");
-		}
-		else
-		{
-			outbox_text = LLTrans::getString("InventoryOutboxCreationError");
-			outbox_title = LLTrans::getString("InventoryOutboxCreationErrorTitle");
-			outbox_tooltip = LLTrans::getString("InventoryOutboxCreationErrorTooltip");
-		}
-	}
-	else
-	{
-		//
-		// The string to become a merchant contains 3 URL's which need the domain name patched in.
-		//
-		
-		std::string domain = "secondlife.com";
-		
-		if (!LLGridManager::getInstance()->isInProductionGrid())
-		{
-			std::string gridLabel = LLGridManager::getInstance()->getGridLabel();
-			domain = llformat("%s.lindenlab.com", utf8str_tolower(gridLabel).c_str());
-		}
-		
-		LLStringUtil::format_map_t domain_arg;
-		domain_arg["[DOMAIN_NAME]"] = domain;
-
-		std::string marketplace_url = LLTrans::getString("MarketplaceURL", domain_arg);
-		std::string marketplace_url_create = LLTrans::getString("MarketplaceURL_CreateStore", domain_arg);
-		std::string marketplace_url_info = LLTrans::getString("MarketplaceURL_LearnMore", domain_arg);
-		
-		LLStringUtil::format_map_t args1, args2, args3;
-		args1["[MARKETPLACE_URL]"] = marketplace_url;
-		args2["[LEARN_MORE_URL]"] = marketplace_url_info;
-		args3["[CREATE_STORE_URL]"] = marketplace_url_create;
-		
-		// NOTE: This is dumb, ridiculous and very finicky.  The order of these is very important
-		//       to have these three string substitutions work properly.
-		outbox_text = LLTrans::getString("InventoryOutboxNotMerchant", args1);
-		LLStringUtil::format(outbox_text, args2);
-		LLStringUtil::format(outbox_text, args3);
-
-		outbox_title = LLTrans::getString("InventoryOutboxNotMerchantTitle");
-		outbox_tooltip = LLTrans::getString("InventoryOutboxNotMerchantTooltip");
-	}
-	
-	outbox_text_box->setValue(outbox_text);
-	outbox_title_box->setValue(outbox_title);
-	outbox_placeholder_parent->setToolTip(outbox_tooltip);
-}
-
 void LLSidepanelInventory::updateVerbs()
 {
 	mInfoBtn->setEnabled(FALSE);
@@ -908,13 +658,6 @@ U32 LLSidepanelInventory::getSelectedCount()
 	{
 		selection_list = mInventoryPanelInbox->getRootFolder()->getSelectionList();
 
-	count += selection_list.size();
-	}
-
-	if ((count == 0) && mOutboxEnabled && (mInventoryPanelOutbox != NULL))
-	{
-		selection_list = mInventoryPanelOutbox->getRootFolder()->getSelectionList();
-		
 		count += selection_list.size();
 	}
 
@@ -939,7 +682,7 @@ BOOL LLSidepanelInventory::isMainInventoryPanelActive() const
 	return mInventoryPanel->getVisible();
 }
 
-void LLSidepanelInventory::clearSelections(bool clearMain, bool clearInbox, bool clearOutbox)
+void LLSidepanelInventory::clearSelections(bool clearMain, bool clearInbox)
 {
 	if (clearMain)
 	{
@@ -956,15 +699,10 @@ void LLSidepanelInventory::clearSelections(bool clearMain, bool clearInbox, bool
 		mInventoryPanelInbox->clearSelection();
 	}
 	
-	if (clearOutbox && mOutboxEnabled && (mInventoryPanelOutbox != NULL))
-	{
-		mInventoryPanelOutbox->clearSelection();
-	}
-	
 	updateVerbs();
 }
 
-std::set<LLUUID> LLSidepanelInventory::getInboxOrOutboxSelectionList()
+std::set<LLUUID> LLSidepanelInventory::getInboxSelectionList()
 {
 	std::set<LLUUID> inventory_selected_uuids;
 	
@@ -973,10 +711,5 @@ std::set<LLUUID> LLSidepanelInventory::getInboxOrOutboxSelectionList()
 		inventory_selected_uuids = mInventoryPanelInbox->getRootFolder()->getSelectionList();
 	}
 	
-	if (inventory_selected_uuids.empty() && mOutboxEnabled && (mInventoryPanelOutbox != NULL))
-	{
-		inventory_selected_uuids = mInventoryPanelOutbox->getRootFolder()->getSelectionList();
-	}
-	
 	return inventory_selected_uuids;
 }
diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h
index b7d11f7f9b98705fcc4894f4ed8b3ee63503174c..a33607f50d8a76177b133d0259118f325fad4ac6 100644
--- a/indra/newview/llsidepanelinventory.h
+++ b/indra/newview/llsidepanelinventory.h
@@ -31,7 +31,7 @@
 
 class LLButton;
 class LLFolderViewItem;
-class LLInboxOutboxAddedObserver;
+class LLInboxAddedObserver;
 class LLInventoryCategoriesObserver;
 class LLInventoryItem;
 class LLInventoryPanel;
@@ -47,22 +47,23 @@ class LLSidepanelInventory : public LLPanel
 	virtual ~LLSidepanelInventory();
 
 private:
-	void handleLoginComplete();
+	void updateInbox();
 	
 public:
-	void observeInboxOutboxCreation();
+	void observeInboxCreation();
 	void observeInboxModifications(const LLUUID& inboxID);
-	void observeOutboxModifications(const LLUUID& outboxID);
 
 	/*virtual*/ BOOL postBuild();
 	/*virtual*/ void onOpen(const LLSD& key);
 
 	LLInventoryPanel* getActivePanel(); // Returns an active inventory panel, if any.
+	LLInventoryPanel* getInboxPanel() const { return mInventoryPanelInbox; }
+
 	LLPanelMainInventory* getMainInventoryPanel() const { return mPanelMainInventory; }
 	BOOL isMainInventoryPanelActive() const;
 
-	void clearSelections(bool clearMain, bool clearInbox, bool clearOutbox);
-	std::set<LLUUID> getInboxOrOutboxSelectionList();
+	void clearSelections(bool clearMain, bool clearInbox);
+	std::set<LLUUID> getInboxSelectionList();
 
 	void showItemInfoPanel();
 	void showTaskInfoPanel();
@@ -72,15 +73,13 @@ class LLSidepanelInventory : public LLPanel
 	bool canShare();
 
 	void onToggleInboxBtn();
-	void onToggleOutboxBtn();
 
 	void enableInbox(bool enabled);
-	void enableOutbox(bool enabled);
+	
+	void openInbox();
 	
 	bool isInboxEnabled() const { return mInboxEnabled; }
-	bool isOutboxEnabled() const { return mOutboxEnabled; }
 
-	void updateOutboxUserStatus();
 	void updateVerbs();
 
 protected:
@@ -94,9 +93,6 @@ class LLSidepanelInventory : public LLPanel
 	bool canWearSelected(); // check whether selected items can be worn
 
 	void onInboxChanged(const LLUUID& inbox_id);
-	void onOutboxChanged(const LLUUID& outbox_id);
-
-	bool manageInboxOutboxPanels(LLButton * pressedButton, LLLayoutPanel * pressedPanel, LLButton * otherButton, LLLayoutPanel * otherPanel);
 
 	//
 	// UI Elements
@@ -104,7 +100,6 @@ class LLSidepanelInventory : public LLPanel
 private:
 	LLPanel*					mInventoryPanel; // Main inventory view
 	LLInventoryPanel*			mInventoryPanelInbox;
-	LLInventoryPanel*			mInventoryPanelOutbox;
 	LLSidepanelItemInfo*		mItemPanel; // Individual item view
 	LLSidepanelTaskInfo*		mTaskPanel; // Individual in-world object view
 	LLPanelMainInventory*		mPanelMainInventory;
@@ -129,10 +124,9 @@ class LLSidepanelInventory : public LLPanel
 	LLButton*					mShopBtn;
 
 	bool						mInboxEnabled;
-	bool						mOutboxEnabled;
 
-	LLInventoryCategoriesObserver* 			mCategoriesObserver;
-	LLInboxOutboxAddedObserver*				mInboxOutboxAddedObserver;
+	LLInventoryCategoriesObserver* 	mCategoriesObserver;
+	LLInboxAddedObserver*			mInboxAddedObserver;
 };
 
 #endif //LL_LLSIDEPANELINVENTORY_H
diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp
index 8774482acdfd261da04de871b3faf603fe1ba4c8..24cb559fd058249cf163064d2161cd3cae6e9099 100644
--- a/indra/newview/llsidepaneltaskinfo.cpp
+++ b/indra/newview/llsidepaneltaskinfo.cpp
@@ -117,6 +117,42 @@ BOOL LLSidepanelTaskInfo::postBuild()
 	childSetCommitCallback("checkbox next owner can transfer",	&LLSidepanelTaskInfo::onCommitNextOwnerTransfer,this);
 	childSetCommitCallback("clickaction",						&LLSidepanelTaskInfo::onCommitClickAction,this);
 	childSetCommitCallback("search_check",						&LLSidepanelTaskInfo::onCommitIncludeInSearch,this);
+	
+	mDAPermModify = getChild<LLUICtrl>("perm_modify");
+	mDACreator = getChildView("Creator:");
+	mDACreatorName = getChild<LLUICtrl>("Creator Name");
+	mDAOwner = getChildView("Owner:");
+	mDAOwnerName = getChild<LLUICtrl>("Owner Name");
+	mDAGroup = getChildView("Group:");
+	mDAGroupName = getChild<LLUICtrl>("Group Name");
+	mDAButtonSetGroup = getChildView("button set group");
+	mDAObjectName = getChild<LLUICtrl>("Object Name");
+	mDAName = getChildView("Name:");
+	mDADescription = getChildView("Description:");
+	mDAObjectDescription = getChild<LLUICtrl>("Object Description");
+	mDAPermissions = getChildView("Permissions:");
+	mDACheckboxShareWithGroup = getChild<LLUICtrl>("checkbox share with group");
+	mDAButtonDeed = getChildView("button deed");
+	mDACheckboxAllowEveryoneMove = getChild<LLUICtrl>("checkbox allow everyone move");
+	mDACheckboxAllowEveryoneCopy = getChild<LLUICtrl>("checkbox allow everyone copy");
+	mDANextOwnerCan = getChildView("Next owner can:");
+	mDACheckboxNextOwnerCanModify = getChild<LLUICtrl>("checkbox next owner can modify");
+	mDACheckboxNextOwnerCanCopy = getChild<LLUICtrl>("checkbox next owner can copy");
+	mDACheckboxNextOwnerCanTransfer = getChild<LLUICtrl>("checkbox next owner can transfer");
+	mDACheckboxForSale = getChild<LLUICtrl>("checkbox for sale");
+	mDASearchCheck = getChild<LLUICtrl>("search_check");
+	mDAComboSaleType = getChild<LLComboBox>("sale type");
+	mDACost = getChild<LLUICtrl>("Cost");
+	mDAEditCost = getChild<LLUICtrl>("Edit Cost");
+	mDALabelClickAction = getChildView("label click action");
+	mDAComboClickAction = getChild<LLComboBox>("clickaction");
+	mDAB = getChildView("B:");
+	mDAO = getChildView("O:");
+	mDAG = getChildView("G:");
+	mDAE = getChildView("E:");
+	mDAN = getChildView("N:");
+	mDAF = getChildView("F:");
+	
 	return TRUE;
 }
 
@@ -138,81 +174,80 @@ BOOL LLSidepanelTaskInfo::postBuild()
 
 void LLSidepanelTaskInfo::disableAll()
 {
-	getChildView("perm_modify")->setEnabled(FALSE);
-	getChild<LLUICtrl>("perm_modify")->setValue(LLStringUtil::null);
-
-	getChildView("Creator:")->setEnabled(FALSE);
-	getChild<LLUICtrl>("Creator Name")->setValue(LLStringUtil::null);
-	getChildView("Creator Name")->setEnabled(FALSE);
-
-	getChildView("Owner:")->setEnabled(FALSE);
-	getChild<LLUICtrl>("Owner Name")->setValue(LLStringUtil::null);
-	getChildView("Owner Name")->setEnabled(FALSE);
-
-	getChildView("Group:")->setEnabled(FALSE);
-	getChild<LLUICtrl>("Group Name")->setValue(LLStringUtil::null);
-	getChildView("Group Name")->setEnabled(FALSE);
-	getChildView("button set group")->setEnabled(FALSE);
-
-	getChild<LLUICtrl>("Object Name")->setValue(LLStringUtil::null);
-	getChildView("Object Name")->setEnabled(FALSE);
-	getChildView("Name:")->setEnabled(FALSE);
-	getChild<LLUICtrl>("Group Name")->setValue(LLStringUtil::null);
-	getChildView("Group Name")->setEnabled(FALSE);
-	getChildView("Description:")->setEnabled(FALSE);
-	getChild<LLUICtrl>("Object Description")->setValue(LLStringUtil::null);
-	getChildView("Object Description")->setEnabled(FALSE);
-
-	getChildView("Permissions:")->setEnabled(FALSE);
+	mDAPermModify->setEnabled(FALSE);
+	mDAPermModify->setValue(LLStringUtil::null);
+
+	mDACreator->setEnabled(FALSE);
+	mDACreatorName->setValue(LLStringUtil::null);
+	mDACreatorName->setEnabled(FALSE);
+
+	mDAOwner->setEnabled(FALSE);
+	mDAOwnerName->setValue(LLStringUtil::null);
+	mDAOwnerName->setEnabled(FALSE);
+
+	mDAGroup->setEnabled(FALSE);
+	mDAGroupName->setValue(LLStringUtil::null);
+	mDAGroupName->setEnabled(FALSE);
+	mDAButtonSetGroup->setEnabled(FALSE);
+
+	mDAObjectName->setValue(LLStringUtil::null);
+	mDAObjectName->setEnabled(FALSE);
+	mDAName->setEnabled(FALSE);
+	mDAGroupName->setValue(LLStringUtil::null);
+	mDAGroupName->setEnabled(FALSE);
+	mDADescription->setEnabled(FALSE);
+	mDAObjectDescription->setValue(LLStringUtil::null);
+	mDAObjectDescription->setEnabled(FALSE);
+
+	mDAPermissions->setEnabled(FALSE);
 		
-	getChild<LLUICtrl>("checkbox share with group")->setValue(FALSE);
-	getChildView("checkbox share with group")->setEnabled(FALSE);
-	getChildView("button deed")->setEnabled(FALSE);
+	mDACheckboxShareWithGroup->setValue(FALSE);
+	mDACheckboxShareWithGroup->setEnabled(FALSE);
+	mDAButtonDeed->setEnabled(FALSE);
 
-	getChild<LLUICtrl>("checkbox allow everyone move")->setValue(FALSE);
-	getChildView("checkbox allow everyone move")->setEnabled(FALSE);
-	getChild<LLUICtrl>("checkbox allow everyone copy")->setValue(FALSE);
-	getChildView("checkbox allow everyone copy")->setEnabled(FALSE);
+	mDACheckboxAllowEveryoneMove->setValue(FALSE);
+	mDACheckboxAllowEveryoneMove->setEnabled(FALSE);
+	mDACheckboxAllowEveryoneCopy->setValue(FALSE);
+	mDACheckboxAllowEveryoneCopy->setEnabled(FALSE);
 
 	//Next owner can:
-	getChildView("Next owner can:")->setEnabled(FALSE);
-	getChild<LLUICtrl>("checkbox next owner can modify")->setValue(FALSE);
-	getChildView("checkbox next owner can modify")->setEnabled(FALSE);
-	getChild<LLUICtrl>("checkbox next owner can copy")->setValue(FALSE);
-	getChildView("checkbox next owner can copy")->setEnabled(FALSE);
-	getChild<LLUICtrl>("checkbox next owner can transfer")->setValue(FALSE);
-	getChildView("checkbox next owner can transfer")->setEnabled(FALSE);
+	mDANextOwnerCan->setEnabled(FALSE);
+	mDACheckboxNextOwnerCanModify->setValue(FALSE);
+	mDACheckboxNextOwnerCanModify->setEnabled(FALSE);
+	mDACheckboxNextOwnerCanCopy->setValue(FALSE);
+	mDACheckboxNextOwnerCanCopy->setEnabled(FALSE);
+	mDACheckboxNextOwnerCanTransfer->setValue(FALSE);
+	mDACheckboxNextOwnerCanTransfer->setEnabled(FALSE);
 
 	//checkbox for sale
-	getChild<LLUICtrl>("checkbox for sale")->setValue(FALSE);
-	getChildView("checkbox for sale")->setEnabled(FALSE);
+	mDACheckboxForSale->setValue(FALSE);
+	mDACheckboxForSale->setEnabled(FALSE);
 
 	//checkbox include in search
-	getChild<LLUICtrl>("search_check")->setValue(FALSE);
-	getChildView("search_check")->setEnabled(FALSE);
+	mDASearchCheck->setValue(FALSE);
+	mDASearchCheck->setEnabled(FALSE);
 		
-	LLComboBox*	combo_sale_type = getChild<LLComboBox>("sale type");
-	combo_sale_type->setValue(LLSaleInfo::FS_COPY);
-	combo_sale_type->setEnabled(FALSE);
+	mDAComboSaleType->setValue(LLSaleInfo::FS_COPY);
+	mDAComboSaleType->setEnabled(FALSE);
 		
-	getChildView("Cost")->setEnabled(FALSE);
-	getChild<LLUICtrl>("Cost")->setValue(getString("Cost Default"));
-	getChild<LLUICtrl>("Edit Cost")->setValue(LLStringUtil::null);
-	getChildView("Edit Cost")->setEnabled(FALSE);
+	mDACost->setEnabled(FALSE);
+	mDACost->setValue(getString("Cost Default"));
+	mDAEditCost->setValue(LLStringUtil::null);
+	mDAEditCost->setEnabled(FALSE);
 		
-	getChildView("label click action")->setEnabled(FALSE);
-	LLComboBox*	combo_click_action = getChild<LLComboBox>("clickaction");
-	if (combo_click_action)
+	mDALabelClickAction->setEnabled(FALSE);
+	if (mDAComboClickAction)
 	{
-		combo_click_action->setEnabled(FALSE);
-		combo_click_action->clear();
+		mDAComboClickAction->setEnabled(FALSE);
+		mDAComboClickAction->clear();
 	}
-	getChildView("B:")->setVisible(								FALSE);
-	getChildView("O:")->setVisible(								FALSE);
-	getChildView("G:")->setVisible(								FALSE);
-	getChildView("E:")->setVisible(								FALSE);
-	getChildView("N:")->setVisible(								FALSE);
-	getChildView("F:")->setVisible(								FALSE);
+
+	mDAB->setVisible(FALSE);
+	mDAO->setVisible(FALSE);
+	mDAG->setVisible(FALSE);
+	mDAE->setVisible(FALSE);
+	mDAN->setVisible(FALSE);
+	mDAF->setVisible(FALSE);
 	
 	mOpenBtn->setEnabled(FALSE);
 	mPayBtn->setEnabled(FALSE);
diff --git a/indra/newview/llsidepaneltaskinfo.h b/indra/newview/llsidepaneltaskinfo.h
index 384bc479d6b64621dd3980a3110185fd3dfa6a1b..be0fee212727bc2bcd4b6969760b7bffbc30f038 100644
--- a/indra/newview/llsidepaneltaskinfo.h
+++ b/indra/newview/llsidepaneltaskinfo.h
@@ -37,8 +37,9 @@
 // Panel for permissions of an object.
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-class LLNameBox;
 class LLCheckBoxCtrl;
+class LLComboBox;
+class LLNameBox;
 class LLViewerObject;
 
 class LLSidepanelTaskInfo : public LLSidepanelInventorySubpanel
@@ -118,6 +119,43 @@ class LLSidepanelTaskInfo : public LLSidepanelInventorySubpanel
 	LLPointer<LLViewerObject>	mObject;
 	LLObjectSelectionHandle		mObjectSelection;
 	static LLSidepanelTaskInfo* sActivePanel;
+	
+private:
+	// Pointers cached here to speed up the "disableAll" function which gets called on idle
+	LLUICtrl*	mDAPermModify;
+	LLView*		mDACreator;
+	LLUICtrl*	mDACreatorName;
+	LLView*		mDAOwner;
+	LLUICtrl*	mDAOwnerName;
+	LLView*		mDAGroup;
+	LLUICtrl*	mDAGroupName;
+	LLView*		mDAButtonSetGroup;
+	LLUICtrl*	mDAObjectName;
+	LLView*		mDAName;
+	LLView*		mDADescription;
+	LLUICtrl*	mDAObjectDescription;
+	LLView*		mDAPermissions;
+	LLUICtrl*	mDACheckboxShareWithGroup;
+	LLView*		mDAButtonDeed;
+	LLUICtrl*	mDACheckboxAllowEveryoneMove;
+	LLUICtrl*	mDACheckboxAllowEveryoneCopy;
+	LLView*		mDANextOwnerCan;
+	LLUICtrl*	mDACheckboxNextOwnerCanModify;
+	LLUICtrl*	mDACheckboxNextOwnerCanCopy;
+	LLUICtrl*	mDACheckboxNextOwnerCanTransfer;
+	LLUICtrl*	mDACheckboxForSale;
+	LLUICtrl*	mDASearchCheck;
+	LLComboBox*	mDAComboSaleType;
+	LLUICtrl*	mDACost;
+	LLUICtrl*	mDAEditCost;
+	LLView*		mDALabelClickAction;
+	LLComboBox*	mDAComboClickAction;
+	LLView*		mDAB;
+	LLView*		mDAO;
+	LLView*		mDAG;
+	LLView*		mDAE;
+	LLView*		mDAN;
+	LLView*		mDAF;
 };
 
 
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
deleted file mode 100644
index 50ecad92dd8be43201a994766e96441641af6544..0000000000000000000000000000000000000000
--- a/indra/newview/llsidetray.cpp
+++ /dev/null
@@ -1,1488 +0,0 @@
-/** 
- * @file llsidetray.cpp
- * @brief SideBar 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 "llviewerprecompiledheaders.h"
-
-#include "lltextbox.h"
-
-#include "llagentcamera.h"
-#include "llappviewer.h"
-#include "llbadge.h"
-#include "llbottomtray.h"
-#include "llfloaterreg.h"
-#include "llfirstuse.h"
-#include "llhints.h"
-#include "llsidetray.h"
-#include "llviewerwindow.h"
-#include "llaccordionctrl.h"
-#include "llfocusmgr.h"
-#include "llrootview.h"
-#include "llnavigationbar.h"
-#include "llpanelmarketplaceinbox.h"
-
-#include "llaccordionctrltab.h"
-
-#include "llfloater.h" //for gFloaterView
-#include "lliconctrl.h"//for OpenClose tab icon
-#include "llsidetraypanelcontainer.h"
-#include "llscreenchannel.h"
-#include "llchannelmanager.h"
-#include "llwindow.h"//for SetCursor
-#include "lltransientfloatermgr.h"
-
-#include "llsidepanelappearance.h"
-
-#include "llsidetraylistener.h"
-
-//#include "llscrollcontainer.h"
-
-using namespace std;
-using namespace LLNotificationsUI;
-
-class LLSideTrayButton;
-
-static LLRootViewRegistry::Register<LLSideTray>	t1("side_tray");
-static LLDefaultChildRegistry::Register<LLSideTrayTab>	t2("sidetray_tab");
-
-static const S32 BOTTOM_BAR_PAD = 5;
-
-static const std::string COLLAPSED_NAME = "<<";
-static const std::string EXPANDED_NAME  = ">>";
-
-static const std::string TAB_PANEL_CAPTION_NAME = "sidetray_tab_panel";
-static const std::string TAB_PANEL_CAPTION_TITLE_BOX = "sidetray_tab_title";
-
-LLSideTray* LLSideTray::sInstance = 0;
-
-static LLSideTrayListener sSideTrayListener(LLSideTray::getInstance);
-
-// static
-LLSideTray* LLSideTray::getInstance()
-{
-	if (!sInstance)
-	{
-		sInstance = LLUICtrlFactory::createFromFile<LLSideTray>("panel_side_tray.xml",NULL, LLRootView::child_registry_t::instance());
-		sInstance->setXMLFilename("panel_side_tray.xml");
-	}
-
-	return sInstance;
-}
-
-// static
-bool	LLSideTray::instanceCreated	()
-{
-	return sInstance!=0;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// LLSideTrayTab
-// Represents a single tab in the side tray, only used by LLSideTray
-//////////////////////////////////////////////////////////////////////////////
-
-class LLSideTrayTab: public LLPanel
-{
-	LOG_CLASS(LLSideTrayTab);
-	friend class LLUICtrlFactory;
-	friend class LLSideTray;
-public:
-	
-	struct Params 
-	:	public LLInitParam::Block<Params, LLPanel::Params>
-	{
-		// image name
-		Optional<std::string>		image;
-		Optional<std::string>		image_selected;
-		Optional<std::string>		tab_title;
-		Optional<std::string>		description;
-		Optional<LLBadge::Params>	badge;
-		
-		Params()
-		:	image("image"),
-			image_selected("image_selected"),
-			tab_title("tab_title","no title"),
-			description("description","no description"),
-			badge("badge")
-		{};
-	};
-protected:
-	LLSideTrayTab(const Params& params);
-	
-	void			dock(LLFloater* floater_tab);
-	void			undock(LLFloater* floater_tab);
-
-	LLSideTray*		getSideTray();
-	
-public:
-	virtual ~LLSideTrayTab();
-	
-    /*virtual*/ BOOL	postBuild	();
-	/*virtual*/ bool	addChild	(LLView* view, S32 tab_group);
-	
-	
-	void			reshape		(S32 width, S32 height, BOOL called_from_parent = TRUE);
-	
-	static LLSideTrayTab*  createInstance	();
-	
-	const std::string& getDescription () const { return mDescription;}
-	
-	void			onOpen		(const LLSD& key);
-	
-	void			toggleTabDocked(bool toggle_floater = true);
-	void			setDocked(bool dock);
-	bool			isDocked() const;
-
-	BOOL			handleScrollWheel(S32 x, S32 y, S32 clicks);
-
-	LLPanel*		getPanel();
-
-	LLButton*		createButton(bool allowTearOff, LLUICtrl::commit_callback_t callback);
-
-private:
-	std::string mTabTitle;
-	std::string mImage;
-	std::string mImageSelected;
-	std::string	mDescription;
-	
-	LLView*	mMainPanel;
-
-	bool			mHasBadge;
-	LLBadge::Params	mBadgeParams;
-	LLSideTrayButton*	mSideTrayButton;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// LLSideTrayButton
-// Side Tray tab button with "tear off" handling.
-//////////////////////////////////////////////////////////////////////////////
-
-class LLSideTrayButton : public LLButton
-{
-public:
-	/*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask)
-	{
-		// Route future Mouse messages here preemptively.  (Release on mouse up.)
-		// No handler needed for focus lost since this class has no state that depends on it.
-		gFocusMgr.setMouseCapture(this);
-
-		localPointToScreen(x, y, &mDragLastScreenX, &mDragLastScreenY);
-
-		// Note: don't pass on to children
-		return TRUE;
-	}
-
-	/*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask)
-	{
-		// We only handle the click if the click both started and ended within us
-		if( !hasMouseCapture() ) return FALSE;
-
-		S32 screen_x;
-		S32 screen_y;
-		localPointToScreen(x, y, &screen_x, &screen_y);
-
-		S32 delta_x = screen_x - mDragLastScreenX;
-		S32 delta_y = screen_y - mDragLastScreenY;
-
-		LLSideTray* side_tray = LLSideTray::getInstance();
-
-		// Check if the tab we are dragging is docked.
-		if (!side_tray->isTabAttached(mTabName)) return FALSE;
-
-		// Same value is hardcoded in LLDragHandle::handleHover().
-		const S32 undock_threshold = 12;
-
-		// Detach a tab if it has been pulled further than undock_threshold.
-		if (delta_x <= -undock_threshold ||	delta_x >= undock_threshold	||
-			delta_y <= -undock_threshold ||	delta_y >= undock_threshold)
-		{
-			LLSideTrayTab* tab = side_tray->getTab(mTabName);
-			if (!tab) return FALSE;
-
-			tab->setDocked(false);
-
-			LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab->getName());
-			if (!floater_tab) return FALSE;
-
-			LLRect original_rect = floater_tab->getRect();
-			S32 header_snap_y = floater_tab->getHeaderHeight() / 2;
-			S32 snap_x = screen_x - original_rect.mLeft - original_rect.getWidth() / 2;
-			S32 snap_y = screen_y - original_rect.mTop + header_snap_y;
-
-			// Move the floater to appear "under" the mouse pointer.
-			floater_tab->setRect(original_rect.translate(snap_x, snap_y));
-
-			// Snap the mouse pointer to the center of the floater header
-			// and call 'mouse down' event handler to begin dragging.
-			floater_tab->handleMouseDown(original_rect.getWidth() / 2,
-				original_rect.getHeight() - header_snap_y,
-				mask);
-
-			return TRUE;
-		}
-
-		return FALSE;
-	}
-
-	void setBadgeDriver(LLSideTrayTabBadgeDriver* driver)
-	{
-		mBadgeDriver = driver;
-	}
-
-	void setVisible(BOOL visible)
-	{
-		setBadgeVisibility(visible);
-
-		LLButton::setVisible(visible);
-	}
-
-protected:
-	LLSideTrayButton(const LLButton::Params& p)
-		: LLButton(p)
-		, mDragLastScreenX(0)
-		, mDragLastScreenY(0)
-		, mBadgeDriver(NULL)
-	{
-		// Find out the tab name to use in handleHover().
-		size_t pos = getName().find("_button");
-		llassert(pos != std::string::npos);
-		mTabName = getName().substr(0, pos);
-	}
-
-	friend class LLUICtrlFactory;
-
-	void draw()
-	{
-		if (mBadgeDriver)
-		{
-			setBadgeLabel(mBadgeDriver->getBadgeString());
-		}
-
-		LLButton::draw();
-	}
-
-private:
-	S32		mDragLastScreenX;
-	S32		mDragLastScreenY;
-
-	std::string					mTabName;
-	LLSideTrayTabBadgeDriver*	mBadgeDriver;
-};
-
-
-////////////////////////////////////////////////////
-// LLSideTrayTab implementation
-////////////////////////////////////////////////////
-
-LLSideTrayTab::LLSideTrayTab(const Params& p)
-:	LLPanel(),
-	mTabTitle(p.tab_title),
-	mImage(p.image),
-	mImageSelected(p.image_selected),
-	mDescription(p.description),
-	mMainPanel(NULL),
-	mBadgeParams(p.badge),
-	mSideTrayButton(NULL)
-{
-	mHasBadge = p.badge.isProvided();
-}
-
-LLSideTrayTab::~LLSideTrayTab()
-{
-}
-
-bool LLSideTrayTab::addChild(LLView* view, S32 tab_group)
-{
-	if(mMainPanel == 0 && TAB_PANEL_CAPTION_NAME != view->getName())//skip our caption panel
-		mMainPanel = view;
-	return LLPanel::addChild(view,tab_group);
-	//return res;
-}
-
-//virtual 
-BOOL LLSideTrayTab::postBuild()
-{
-	LLPanel* title_panel = LLUICtrlFactory::getInstance()->createFromFile<LLPanel>("panel_side_tray_tab_caption.xml",this, child_registry_t::instance());
-	string name = title_panel->getName();
-	LLPanel::addChild(title_panel);
-	
-	title_panel->getChild<LLTextBox>(TAB_PANEL_CAPTION_TITLE_BOX)->setValue(mTabTitle);
-
-	getChild<LLButton>("undock")->setCommitCallback(boost::bind(&LLSideTrayTab::setDocked, this, false));
-	getChild<LLButton>("dock")->setCommitCallback(boost::bind(&LLSideTrayTab::setDocked, this, true));
-
-	return LLPanel::postBuild();
-}
-
-static const S32 splitter_margin = 1;
-
-void LLSideTrayTab::reshape		(S32 width, S32 height, BOOL called_from_parent )
-{
-	LLPanel::reshape(width, height, called_from_parent);
-	LLView* title_panel = findChildView(TAB_PANEL_CAPTION_NAME, true);
-	if (!title_panel)
-	{
-		// not fully constructed yet
-		return;
-	}
-
-	S32 title_height = title_panel->getRect().getHeight();
-	title_panel->setOrigin( 0, height - title_height );
-	title_panel->reshape(width,title_height);
-
-	LLRect sRect;
-	sRect.setLeftTopAndSize( splitter_margin, height - title_height - splitter_margin, 
-							width - 2*splitter_margin, height - title_height - 2*splitter_margin);
-	mMainPanel->setShape(sRect);
-}
-
-void	LLSideTrayTab::onOpen		(const LLSD& key)
-{
-	LLPanel *panel = getPanel();
-	if(panel)
-		panel->onOpen(key);
-}
-
-// Attempts to get the existing side tray instance.
-// Needed to avoid recursive calls of LLSideTray::getInstance().
-LLSideTray* LLSideTrayTab::getSideTray()
-{
-	// First, check if the side tray is our parent (i.e. we're attached).
-	LLSideTray* side_tray = dynamic_cast<LLSideTray*>(getParent());
-	if (!side_tray)
-	{
-		// Detached? Ok, check if the instance exists at all/
-		if (LLSideTray::instanceCreated())
-		{
-			side_tray = LLSideTray::getInstance();
-		}
-		else
-		{
-			llerrs << "No safe way to get the side tray instance" << llendl;
-		}
-	}
-
-	return side_tray;
-}
-
-void LLSideTrayTab::toggleTabDocked(bool toggle_floater /* = true */)
-{
-	// *FIX: Calling this method twice per frame would crash the viewer.
-
-	std::string tab_name = getName();
-
-	LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab_name);
-	if (!floater_tab) return;
-
-	bool docking = !isDocked();
-
-	if (mSideTrayButton)
-	{
-		mSideTrayButton->setVisible(docking);
-	}
-
-	// Hide the "Tear Off" button when a tab gets undocked
-	// and show "Dock" button instead.
-	getChild<LLButton>("undock")->setVisible(docking);
-	getChild<LLButton>("dock")->setVisible(!docking);
-
-	if (docking)
-	{
-		dock(floater_tab);
-	}
-	else
-	{
-		undock(floater_tab);
-	}
-
-	// Open/close the floater *after* we reparent the tab panel,
-	// so that it doesn't receive redundant visibility change notifications.
-	if (toggle_floater)
-	{
-		LLFloaterReg::toggleInstance("side_bar_tab", tab_name);
-	}
-}
-
-// Same as toggleTabDocked() apart from making sure that we do exactly what we want.
-void LLSideTrayTab::setDocked(bool dock)
-{
-	if (isDocked() == dock)
-	{
-		llwarns << "Tab " << getName() << " is already " << (dock ? "docked" : "undocked") << llendl;
-		return;
-	}
-
-	toggleTabDocked();
-}
-
-bool LLSideTrayTab::isDocked() const
-{
-	return dynamic_cast<LLSideTray*>(getParent()) != NULL;
-}
-
-BOOL LLSideTrayTab::handleScrollWheel(S32 x, S32 y, S32 clicks)
-{
-	// Let children handle the event
-	LLUICtrl::handleScrollWheel(x, y, clicks);
-
-	// and then eat it to prevent in-world scrolling (STORM-351).
-	return TRUE;
-}
-
-void LLSideTrayTab::dock(LLFloater* floater_tab)
-{
-	LLSideTray* side_tray = getSideTray();
-	if (!side_tray) return;
-
-	// Before docking the tab, reset its (and its children's) transparency to default (STORM-688).
-	floater_tab->updateTransparency(TT_DEFAULT);
-
-	if (!side_tray->addTab(this))
-	{
-		llwarns << "Failed to add tab " << getName() << " to side tray" << llendl;
-		return;
-	}
-
-	setRect(side_tray->getLocalRect());
-	reshape(getRect().getWidth(), getRect().getHeight());
-
-	// Select the re-docked tab.
-	side_tray->selectTabByName(getName());
-
-	if (side_tray->getCollapsed())
-	{
-		side_tray->expandSideBar(false);
-	}
-}
-
-static void on_minimize(LLSidepanelAppearance* panel, LLSD minimized)
-{
-	if (!panel) return;
-	bool visible = !minimized.asBoolean();
-	LLSD visibility;
-	visibility["visible"] = visible;
-	// Do not reset accordion state on minimize (STORM-375)
-	visibility["reset_accordion"] = false;
-	panel->updateToVisibility(visibility);
-}
-
-void LLSideTrayTab::undock(LLFloater* floater_tab)
-{
-	LLSideTray* side_tray = getSideTray();
-	if (!side_tray) return;
-
-	// Remember whether the tab have been active before detaching
-	// because removeTab() will change active tab.
-	bool was_active = side_tray->getActiveTab() == this;
-
-	// Remove the tab from Side Tray's tabs list.
-	// We have to do it despite removing the tab from Side Tray's child view tree
-	// by addChild(). Otherwise the tab could be accessed by the pointer in LLSideTray::mTabs.
-	if (!side_tray->removeTab(this))
-	{
-		llwarns << "Failed to remove tab " << getName() << " from side tray" << llendl;
-		return;
-	}
-
-	// If we're undocking while side tray is collapsed we need to explicitly show the panel.
-	if (!getVisible())
-	{
-		setVisible(true);
-	}
-
-	floater_tab->addChild(this);
-	floater_tab->setTitle(mTabTitle);
-	floater_tab->setName(getName());
-
-	// Resize handles get obscured by added panel so move them to front.
-	floater_tab->moveResizeHandlesToFront();
-
-	// Reshape the floater if needed.
-	LLRect floater_rect;
-	if (floater_tab->hasSavedRect())
-	{
-		// We've got saved rect for the floater, hence no need to reshape it.
-		floater_rect = floater_tab->getLocalRect();
-	}
-	else
-	{
-		// Detaching for the first time. Reshape the floater.
-		floater_rect = side_tray->getLocalRect();
-
-		// Reduce detached floater height by small BOTTOM_BAR_PAD not to make it flush with the bottom bar.
-		floater_rect.mBottom += LLBottomTray::getInstance()->getRect().getHeight() + BOTTOM_BAR_PAD;
-		floater_rect.makeValid();
-		floater_tab->reshape(floater_rect.getWidth(), floater_rect.getHeight());
-	}
-
-	// Reshape the panel.
-	{
-		LLRect panel_rect = floater_tab->getLocalRect();
-		panel_rect.mTop -= floater_tab->getHeaderHeight();
-		panel_rect.makeValid();
-		setRect(panel_rect);
-		reshape(panel_rect.getWidth(), panel_rect.getHeight());
-	}
-
-	// Set FOLLOWS_ALL flag for the tab to follow floater dimensions upon resizing.
-	setFollowsAll();
-
-	// Camera view may need to be changed for appearance panel(STORM-301) on minimize of floater,
-	// so setting callback here. 
-	if (getName() == "sidebar_appearance")
-	{
-		LLSidepanelAppearance* panel_appearance = dynamic_cast<LLSidepanelAppearance*>(getPanel());
-		if(panel_appearance)
-		{
-			floater_tab->setMinimizeCallback(boost::bind(&on_minimize, panel_appearance, _2));
-		}
-	}
-
-	if (!side_tray->getCollapsed())
-	{
-		side_tray->collapseSideBar();
-	}
-
-	if (!was_active)
-	{
-		// When a tab other then current active tab is detached from Side Tray
-		// onOpen() should be called as tab visibility is changed.
-		onOpen(LLSD());
-	}
-}
-
-LLPanel*	LLSideTrayTab::getPanel()
-{
-	LLPanel* panel = dynamic_cast<LLPanel*>(mMainPanel);
-	return panel;
-}
-
-LLSideTrayTab*  LLSideTrayTab::createInstance	()
-{
-	LLSideTrayTab::Params tab_params; 
-	tab_params.tab_title("openclose");
-
-	LLSideTrayTab* tab = LLUICtrlFactory::create<LLSideTrayTab>(tab_params);
-	return tab;
-}
-
-// Now that we know the definition of LLSideTrayTab, we can implement
-// tab_cast.
-template <>
-LLPanel* tab_cast<LLPanel*>(LLSideTrayTab* tab) { return tab; }
-
-//////////////////////////////////////////////////////////////////////////////
-// LLSideTray
-//////////////////////////////////////////////////////////////////////////////
-
-LLSideTray::Params::Params()
-:	collapsed("collapsed",false),
-	tab_btn_image_normal("tab_btn_image",LLUI::getUIImage("taskpanel/TaskPanel_Tab_Off.png")),
-	tab_btn_image_selected("tab_btn_image_selected",LLUI::getUIImage("taskpanel/TaskPanel_Tab_Selected.png")),
-	default_button_width("tab_btn_width",32),
-	default_button_height("tab_btn_height",32),
-	default_button_margin("tab_btn_margin",0)
-{}
-
-//virtual 
-LLSideTray::LLSideTray(const Params& params)
-	   : LLPanel(params)
-	    ,mActiveTab(0)
-		,mCollapsed(false)
-		,mCollapseButton(0)
-{
-	mCollapsed=params.collapsed;
-
-	LLUICtrl::CommitCallbackRegistry::Registrar& commit = LLUICtrl::CommitCallbackRegistry::currentRegistrar();
-
-	// register handler function to process data from the xml. 
-	// panel_name should be specified via "parameter" attribute.
-	commit.add("SideTray.ShowPanel", boost::bind(&LLSideTray::showPanel, this, _2, LLUUID::null));
-	commit.add("SideTray.Toggle", boost::bind(&LLSideTray::onToggleCollapse, this));
-	commit.add("SideTray.Collapse", boost::bind(&LLSideTray::collapseSideBar, this));
-	LLTransientFloaterMgr::getInstance()->addControlView(this);
-	LLView* side_bar_tabs  = gViewerWindow->getRootView()->getChildView("side_bar_tabs");
-	if (side_bar_tabs != NULL)
-	{
-		LLTransientFloaterMgr::getInstance()->addControlView(side_bar_tabs);
-	}
-
-	LLPanel::Params p;
-	p.name = "buttons_panel";
-	p.mouse_opaque = false;
-	mButtonsPanel = LLUICtrlFactory::create<LLPanel>(p);
-}
-
-
-BOOL LLSideTray::postBuild()
-{
-	createButtons();
-
-	arrange();
-	selectTabByName("sidebar_home");
-
-	if(mCollapsed)
-		collapseSideBar();
-
-	setMouseOpaque(false);
-
-	LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSideTray::handleLoginComplete, this));
-
-	// Remember original tabs order, so that we can restore it if user detaches and then re-attaches a tab.
-	for (child_vector_const_iter_t it = mTabs.begin(); it != mTabs.end(); ++it)
-	{
-		std::string tab_name = (*it)->getName();
-		mOriginalTabOrder.push_back(tab_name);
-	}
-
-	//EXT-8045
-	//connect all already created channels to reflect sidetray collapse/expand
-	std::vector<LLChannelManager::ChannelElem>& channels = LLChannelManager::getInstance()->getChannelList();
-	for(std::vector<LLChannelManager::ChannelElem>::iterator it = channels.begin();it!=channels.end();++it)
-	{
-		if ((*it).channel)
-		{
-			setVisibleWidthChangeCallback(boost::bind(&LLScreenChannelBase::resetPositionAndSize, (*it).channel));
-		}
-	}
-
-	return true;
-}
-
-void LLSideTray::setTabButtonBadgeDriver(std::string tabName, LLSideTrayTabBadgeDriver* driver)
-{
-	mTabButtonBadgeDrivers[tabName] = driver;
-}
-
-void LLSideTray::handleLoginComplete()
-{
-	//reset tab to "home" tab if it was changesd during login process
-	selectTabByName("sidebar_home");
-
-	for (badge_map_t::iterator it = mTabButtonBadgeDrivers.begin(); it != mTabButtonBadgeDrivers.end(); ++it)
-	{
-		LLButton* button = mTabButtons[it->first];
-		LLSideTrayButton* side_button = dynamic_cast<LLSideTrayButton*>(button);
-
-		if (side_button)
-		{
-			side_button->setBadgeDriver(it->second);
-		}
-		else
-		{
-			llwarns << "Unable to find button " << it->first << " to set the badge driver. " << llendl;
-		}
-	}
-
-	detachTabs();
-}
-
-LLSideTrayTab* LLSideTray::getTab(const std::string& name)
-{
-	return findChild<LLSideTrayTab>(name,false);
-}
-
-bool LLSideTray::isTabAttached(const std::string& name)
-{
-	LLSideTrayTab* tab = getTab(name);
-	if (!tab) return false;
-
-	return std::find(mTabs.begin(), mTabs.end(), tab) != mTabs.end();
-}
-
-bool LLSideTray::hasTabs()
-{
-	// The open/close tab doesn't count.
-	return mTabs.size() > 1;
-}
-
-void LLSideTray::toggleTabButton(LLSideTrayTab* tab)
-{
-	if(tab == NULL)
-		return;
-	std::string name = tab->getName();
-	std::map<std::string,LLButton*>::iterator it = mTabButtons.find(name);
-	if(it != mTabButtons.end())
-	{
-		LLButton* btn = it->second;
-		bool new_state = !btn->getToggleState();
-		btn->setToggleState(new_state); 
-		// Only highlight the tab if side tray is expanded (STORM-157).
-		btn->setImageOverlay( new_state && !getCollapsed() ? tab->mImageSelected : tab->mImage );
-	}
-}
-
-LLPanel* LLSideTray::openChildPanel(LLSideTrayTab* tab, const std::string& panel_name, const LLSD& params)
-{
-	LLView* view = tab->findChildView(panel_name, true);
-	if (!view) return NULL;
-
-	std::string tab_name = tab->getName();
-
-	bool tab_attached = isTabAttached(tab_name);
-
-	if (tab_attached && LLUI::sSettingGroups["config"]->getBOOL("OpenSidePanelsInFloaters"))
-	{
-		tab->setDocked(false);
-		tab_attached = false;
-	}
-
-	// Select tab and expand Side Tray only when a tab is attached.
-	if (tab_attached)
-	{
-		selectTabByName(tab_name);
-		if (mCollapsed)
-			expandSideBar();
-	}
-	else
-	{
-		LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab_name);
-		if (!floater_tab) return NULL;
-
-		floater_tab->openFloater(tab_name);
-	}
-
-	LLSideTrayPanelContainer* container = dynamic_cast<LLSideTrayPanelContainer*>(view->getParent());
-	if (container)
-	{
-		LLSD new_params = params;
-		new_params[LLSideTrayPanelContainer::PARAM_SUB_PANEL_NAME] = panel_name;
-		container->onOpen(new_params);
-
-		return container->getCurrentPanel();
-	}
-
-	LLPanel* panel = dynamic_cast<LLPanel*>(view);
-	if (panel)
-	{
-		panel->onOpen(params);
-	}
-
-	return panel;
-}
-
-bool LLSideTray::selectTabByIndex(size_t index)
-{
-	if(index>=mTabs.size())
-		return false;
-
-	LLSideTrayTab* sidebar_tab = mTabs[index];
-	return selectTabByName(sidebar_tab->getName());
-}
-
-bool LLSideTray::selectTabByName(const std::string& name, bool keep_prev_visible)
-{
-	LLSideTrayTab* tab_to_keep_visible = NULL;
-	LLSideTrayTab* new_tab = getTab(name);
-	if (!new_tab) return false;
-
-	// Bail out if already selected.
-	if (new_tab == mActiveTab)
-		return false;
-
-	//deselect old tab
-	if (mActiveTab)
-	{
-		// Keep previously active tab visible if requested.
-		if (keep_prev_visible) tab_to_keep_visible = mActiveTab;
-		toggleTabButton(mActiveTab);
-	}
-
-	//select new tab
-	mActiveTab = new_tab;
-
-	if (mActiveTab)
-	{
-		toggleTabButton(mActiveTab);
-		LLSD key;//empty
-		mActiveTab->onOpen(key);
-	}
-
-	//arrange();
-	
-	//hide all tabs - show active tab
-	child_vector_const_iter_t child_it;
-	for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
-	{
-		LLSideTrayTab* sidebar_tab = *child_it;
-
-		bool vis = sidebar_tab == mActiveTab;
-
-		// Force keeping the tab visible if requested.
-		vis |= sidebar_tab == tab_to_keep_visible;
-
-		// When the last tab gets detached, for a short moment the "Toggle Sidebar" pseudo-tab
-		// is shown. So, to avoid the flicker we make sure it never gets visible.
-		vis &= (*child_it)->getName() != "sidebar_openclose";
-
-		sidebar_tab->setVisible(vis);
-	}
-	return true;
-}
-
-bool LLSideTray::addChild(LLView* view, S32 tab_group)
-{
-	LLSideTrayTab* tab_panel = dynamic_cast<LLSideTrayTab*>(view);
-
-	if (tab_panel)
-	{
-		mTabs.push_back(tab_panel);
-	}
-	
-	return LLUICtrl::addChild(view, tab_group);
-}
-
-bool LLSideTray::removeTab(LLSideTrayTab* tab)
-{
-	if (!tab) return false;
-	std::string tab_name = tab->getName();
-
-	// Look up the tab in the list of known tabs.
-	child_vector_iter_t tab_it = std::find(mTabs.begin(), mTabs.end(), tab);
-	if (tab_it == mTabs.end())
-	{
-		llwarns << "Cannot find tab named " << tab_name << llendl;
-		return false;
-	}
-
-	// Find the button corresponding to the tab.
-	button_map_t::iterator btn_it = mTabButtons.find(tab_name);
-	if (btn_it == mTabButtons.end())
-	{
-		llwarns << "Cannot find button for tab named " << tab_name << llendl;
-		return false;
-	}
-	LLButton* btn = btn_it->second;
-
-	// Deselect the tab.
-	if (mActiveTab == tab)
-	{
-		// Select the next tab (or first one, if we're removing the last tab),
-		// skipping the fake open/close tab (STORM-155).
-		child_vector_iter_t next_tab_it = tab_it;
-		do
-		{
-			next_tab_it = (next_tab_it < (mTabs.end() - 1)) ? next_tab_it + 1 : mTabs.begin();
-		}
-		while ((*next_tab_it)->getName() == "sidebar_openclose");
-
-		selectTabByName((*next_tab_it)->getName(), true); // Don't hide the tab being removed.
-	}
-
-	// Remove the tab.
-	removeChild(tab);
-	mTabs.erase(tab_it);
-
-	// Add the tab to detached tabs list.
-	mDetachedTabs.push_back(tab);
-
-	// Remove the button from the buttons panel so that it isn't drawn anymore.
-	mButtonsPanel->removeChild(btn);
-
-	// Re-arrange remaining tabs.
-	arrange();
-
-	return true;
-}
-
-bool LLSideTray::addTab(LLSideTrayTab* tab)
-{
-	if (tab == NULL) return false;
-
-	std::string tab_name = tab->getName();
-
-	// Make sure the tab isn't already in the list.
-	if (std::find(mTabs.begin(), mTabs.end(), tab) != mTabs.end())
-	{
-		llwarns << "Attempt to re-add existing tab " << tab_name << llendl;
-		return false;
-	}
-
-	// Look up the corresponding button.
-	button_map_t::const_iterator btn_it = mTabButtons.find(tab_name);
-	if (btn_it == mTabButtons.end())
-	{
-		llwarns << "Tab " << tab_name << " has no associated button" << llendl;
-		return false;
-	}
-	LLButton* btn = btn_it->second;
-
-	// Insert the tab at its original position.
-	LLUICtrl::addChild(tab);
-	{
-		tab_order_vector_const_iter_t new_tab_orig_pos =
-			std::find(mOriginalTabOrder.begin(), mOriginalTabOrder.end(), tab_name);
-		llassert(new_tab_orig_pos != mOriginalTabOrder.end());
-		child_vector_iter_t insert_pos = mTabs.end();
-
-		for (child_vector_iter_t tab_it = mTabs.begin(); tab_it != mTabs.end(); ++tab_it)
-		{
-			tab_order_vector_const_iter_t cur_tab_orig_pos =
-				std::find(mOriginalTabOrder.begin(), mOriginalTabOrder.end(), (*tab_it)->getName());
-			llassert(cur_tab_orig_pos != mOriginalTabOrder.end());
-
-			if (new_tab_orig_pos < cur_tab_orig_pos)
-			{
-				insert_pos = tab_it;
-				break;
-			}
-		}
-
-		mTabs.insert(insert_pos, tab);
-	}
-
-	// Add the button to the buttons panel so that it's drawn again.
-	mButtonsPanel->addChildInBack(btn);
-
-	// Arrange tabs after inserting a new one.
-	arrange();
-
-	// Remove the tab from the list of detached tabs.
-	child_vector_iter_t tab_it = std::find(mDetachedTabs.begin(), mDetachedTabs.end(), tab);
-	if (tab_it != mDetachedTabs.end())
-	{
-		mDetachedTabs.erase(tab_it);
-	}
-
-	return true;
-}
-
-LLButton* LLSideTrayTab::createButton(bool allowTearOff, LLUICtrl::commit_callback_t callback)
-{
-	static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());	
-
-	LLRect rect;
-	rect.setOriginAndSize(0, 0, sidetray_params.default_button_width, sidetray_params.default_button_height); 
-
-	LLButton::Params bparams;
-
-	// Append "_button" to the side tray tab name
-	std::string button_name = getName() + "_button";
-	bparams.name(button_name);
-	bparams.follows.flags (FOLLOWS_LEFT | FOLLOWS_TOP);
-	bparams.rect (rect);
-	bparams.tab_stop(false);
-	bparams.image_unselected(sidetray_params.tab_btn_image_normal);
-	bparams.image_selected(sidetray_params.tab_btn_image_selected);
-	bparams.image_disabled(sidetray_params.tab_btn_image_normal);
-	bparams.image_disabled_selected(sidetray_params.tab_btn_image_selected);
-
-	if (mHasBadge)
-	{
-		bparams.badge = mBadgeParams;
-	}
-
-	LLButton* button;
-	if (allowTearOff)
-	{
-		mSideTrayButton = LLUICtrlFactory::create<LLSideTrayButton>(bparams);
-
-		button = mSideTrayButton;
-	}
-	else
-	{
-		// "Open/Close" button shouldn't allow "tear off"
-		// hence it is created as LLButton instance.
-		button = LLUICtrlFactory::create<LLButton>(bparams);
-	}
-
-	button->setClickedCallback(callback);
-
-	button->setToolTip(mTabTitle);
-
-	if(mImage.length())
-	{
-		button->setImageOverlay(mImage);
-	}
-
-	return button;
-}
-
-void LLSideTray::createButtons()
-{
-	//create buttons for tabs
-	child_vector_const_iter_t child_it = mTabs.begin();
-	for ( ; child_it != mTabs.end(); ++child_it)
-	{
-		LLSideTrayTab* sidebar_tab = *child_it;
-
-		std::string name = sidebar_tab->getName();
-		
-		// The "OpenClose" button will open/close the whole panel
-		if (name == "sidebar_openclose")
-		{
-			mCollapseButton = sidebar_tab->createButton(false, boost::bind(&LLSideTray::onToggleCollapse, this));
-
-			mButtonsPanel->addChildInBack(mCollapseButton);
-
-			LLHints::registerHintTarget("side_panel_btn", mCollapseButton->getHandle());
-		}
-		else
-		{
-			LLButton* button = sidebar_tab->createButton(true, boost::bind(&LLSideTray::onTabButtonClick, this, name));
-
-			mButtonsPanel->addChildInBack(button);
-
-			mTabButtons[name] = button;
-		}
-	}
-
-	LLHints::registerHintTarget("inventory_btn", mTabButtons["sidebar_inventory"]->getHandle());
-}
-
-void		LLSideTray::processTriState ()
-{
-	if(mCollapsed)
-		expandSideBar();
-	else
-	{
-#if 0 // *TODO: EXT-2092
-		
-		// Tell the active task panel to switch to its default view
-		// or collapse side tray if already on the default view.
-		LLSD info;
-		info["task-panel-action"] = "handle-tri-state";
-		mActiveTab->notifyChildren(info);
-#else
-		collapseSideBar();
-#endif
-	}
-}
-
-void		LLSideTray::onTabButtonClick(string name)
-{
-	LLSideTrayTab* tab = getTab(name);
-	if (!tab) return;
-
-	if(tab == mActiveTab)
-	{
-		processTriState ();
-		return;
-	}
-	selectTabByName	(name);
-	if(mCollapsed)
-		expandSideBar();
-}
-
-void		LLSideTray::onToggleCollapse()
-{
-	LLFirstUse::notUsingSidePanel(false);
-	if(mCollapsed)
-	{
-		expandSideBar();
-		//selectTabByName("sidebar_openclose");
-	}
-	else
-		collapseSideBar();
-}
-
-
-void LLSideTray::reflectCollapseChange()
-{
-	updateSidetrayVisibility();
-
-	setFocus(!mCollapsed);
-
-	gFloaterView->refresh();
-}
-
-void LLSideTray::arrange()
-{
-	static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());	
-
-	updateSidetrayVisibility();
-	
-	LLRect ctrl_rect;
-	ctrl_rect.setLeftTopAndSize(0,
-								mButtonsPanel->getRect().getHeight() - sidetray_params.default_button_width,
-								sidetray_params.default_button_width,
-								sidetray_params.default_button_height);
-
-	mCollapseButton->setRect(ctrl_rect);
-
-	//arrange tab buttons
-	//arrange tab buttons
-	child_vector_const_iter_t child_it;
-	int offset = (sidetray_params.default_button_height+sidetray_params.default_button_margin)*2;
-	for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)	
-	{
-		LLSideTrayTab* sidebar_tab = *child_it;
-		
-		ctrl_rect.setLeftTopAndSize(0,
-									mButtonsPanel->getRect().getHeight()-offset,
-									sidetray_params.default_button_width,
-									sidetray_params.default_button_height);
-
-		if(mTabButtons.find(sidebar_tab->getName()) == mTabButtons.end())
-			continue;
-
-		LLButton* btn = mTabButtons[sidebar_tab->getName()];
-
-		btn->setRect(ctrl_rect);
-		offset+=sidetray_params.default_button_height;
-		offset+=sidetray_params.default_button_margin;
-
-		btn->setVisible(ctrl_rect.mBottom > 0);
-	}
-
-	//arrange tabs
-	for ( child_vector_t::iterator child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
-	{
-		LLSideTrayTab* sidebar_tab = *child_it;
-		sidebar_tab->setShape(getLocalRect());
-	}
-
-	// The tab buttons should be shown only if there is at least one non-detached tab.
-	// Also hide them in mouse-look mode.
-	mButtonsPanel->setVisible(hasTabs() && !gAgentCamera.cameraMouselook());
-}
-
-// Detach those tabs that were detached when the viewer exited last time.
-void LLSideTray::detachTabs()
-{
-	// copy mTabs because LLSideTray::toggleTabDocked() modifies it.
-	child_vector_t tabs = mTabs;
-
-	for (child_vector_const_iter_t it = tabs.begin(); it != tabs.end(); ++it)
-	{
-		LLSideTrayTab* tab = *it;
-
-		std::string floater_ctrl_name = LLFloater::getControlName("side_bar_tab", LLSD(tab->getName()));
-		std::string vis_ctrl_name = LLFloaterReg::getVisibilityControlName(floater_ctrl_name);
-		if (!LLFloater::getControlGroup()->controlExists(vis_ctrl_name)) continue;
-
-		bool is_visible = LLFloater::getControlGroup()->getBOOL(vis_ctrl_name);
-		if (!is_visible) continue;
-
-		llassert(isTabAttached(tab->getName()));
-		tab->setDocked(false);
-	}
-}
-
-void LLSideTray::collapseSideBar()
-{
-	mCollapsed = true;
-	// Reset all overlay images, because there is no "selected" tab when the
-	// whole side tray is hidden.
-	child_vector_const_iter_t it = mTabs.begin();
-	for ( ; it != mTabs.end(); ++it )
-	{
-		LLSideTrayTab* tab = *it;
-		std::string name = tab->getName();
-		std::map<std::string,LLButton*>::const_iterator btn_it =
-			mTabButtons.find(name);
-		if (btn_it != mTabButtons.end())
-		{
-			LLButton* btn = btn_it->second;
-			btn->setImageOverlay( tab->mImage );
-		}
-	}
-		
-	// OpenClose tab doesn't put its button in mTabButtons
-	LLSideTrayTab* openclose_tab = getTab("sidebar_openclose");
-	if (openclose_tab)
-	{
-		mCollapseButton->setImageOverlay( openclose_tab->mImage );
-	}
-	//mActiveTab->setVisible(FALSE);
-	reflectCollapseChange();
-	setFocus( FALSE );
-}
-
-void LLSideTray::expandSideBar(bool open_active)
-{
-	mCollapsed = false;
-	LLSideTrayTab* openclose_tab = getTab("sidebar_openclose");
-	if (openclose_tab)
-	{
-		mCollapseButton->setImageOverlay( openclose_tab->mImageSelected );
-	}
-
-	if (open_active)
-	{
-		mActiveTab->onOpen(LLSD());
-	}
-
-	reflectCollapseChange();
-
-
-	std::string name = mActiveTab->getName();
-	std::map<std::string,LLButton*>::const_iterator btn_it =
-		mTabButtons.find(name);
-	if (btn_it != mTabButtons.end())
-	{
-		LLButton* btn = btn_it->second;
-		btn->setImageOverlay( mActiveTab->mImageSelected  );
-	}
-}
-
-void LLSideTray::highlightFocused()
-{
-	/* uncomment in case something change
-	if(!mActiveTab)
-		return;
-	BOOL dependent_has_focus = gFocusMgr.childHasKeyboardFocus(this);
-	setBackgroundOpaque( dependent_has_focus ); 
-	mActiveTab->setBackgroundOpaque( dependent_has_focus ); 
-	*/
-}
-
-//virtual
-BOOL		LLSideTray::handleMouseDown	(S32 x, S32 y, MASK mask)
-{
-	BOOL ret = LLPanel::handleMouseDown(x,y,mask);
-	if(ret)
-		setFocus(true);	
-	return ret;
-}
-
-void LLSideTray::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
-	LLPanel::reshape(width, height, called_from_parent);
-	if(!mActiveTab)
-		return;
-	
-	arrange();
-}
-
-// This is just LLView::findChildView specialized to restrict the search to LLPanels.
-// Optimization for EXT-4068 to avoid searching down to the individual item level
-// when inventories are large.
-LLPanel *findChildPanel(LLPanel *panel, const std::string& name, bool recurse)
-{
-	for (LLView::child_list_const_iter_t child_it = panel->beginChild();
-		 child_it != panel->endChild(); ++child_it)
-	{
-		LLPanel *child_panel = dynamic_cast<LLPanel*>(*child_it);
-		if (!child_panel)
-			continue;
-		if (child_panel->getName() == name)
-			return child_panel;
-	}
-	if (recurse)
-	{
-		for (LLView::child_list_const_iter_t child_it = panel->beginChild();
-			 child_it != panel->endChild(); ++child_it)
-		{
-			LLPanel *child_panel = dynamic_cast<LLPanel*>(*child_it);
-			if (!child_panel)
-				continue;
-			LLPanel *found_panel = findChildPanel(child_panel,name,recurse);
-			if (found_panel)
-			{
-				return found_panel;
-			}
-		}
-	}
-	return NULL;
-}
-
-/**
- * Activate tab with "panel_name" panel
- * if no such tab - return false, otherwise true.
- * TODO* In some cases a pointer to a panel of
- * a specific class may be needed so this method
- * would need to use templates.
- */
-LLPanel*	LLSideTray::showPanel		(const std::string& panel_name, const LLSD& params)
-{
-	LLPanel* new_panel = NULL;
-
-	// Look up the tab in the list of detached tabs.
-	child_vector_const_iter_t child_it;
-	for ( child_it = mDetachedTabs.begin(); child_it != mDetachedTabs.end(); ++child_it)
-	{
-		new_panel = openChildPanel(*child_it, panel_name, params);
-		if (new_panel) break;
-	}
-
-	// Look up the tab in the list of attached tabs.
-	for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
-	{
-		new_panel = openChildPanel(*child_it, panel_name, params);
-		if (new_panel) break;
-	}
-
-	return new_panel;
-}
-
-bool LLSideTray::hidePanel(const std::string& panel_name)
-{
-	bool panelHidden = false;
-	
-	LLPanel* panelp = getPanel(panel_name);
-
-	if (panelp)
-	{
-		LLView* parentp = panelp->getParent();
-		
-		// Collapse the side bar if the panel or the panel's parent is an attached tab
-		if (isTabAttached(panel_name) || (parentp && isTabAttached(parentp->getName())))
-		{
-			collapseSideBar();
-			panelHidden = true;
-		}
-		else
-		{
-			panelHidden = LLFloaterReg::hideInstance("side_bar_tab", panel_name);
-			
-			if (!panelHidden)
-			{
-				// Look up the panel in the list of detached tabs.
-				for (child_vector_const_iter_t child_it = mDetachedTabs.begin(); child_it != mDetachedTabs.end(); ++child_it)
-				{
-					LLPanel *detached_panel = dynamic_cast<LLPanel*>(*child_it);
-					
-					if (detached_panel)
-					{
-						// Hide this detached panel if it is a parent of our panel
-						if (findChildPanel(detached_panel, panel_name, true) != NULL)
-						{
-							panelHidden = LLFloaterReg::hideInstance("side_bar_tab", detached_panel->getName());
-							break;
-						}
-					}
-				}
-			}
-		}
-	}
-	
-	return panelHidden;
-}
-
-void LLSideTray::togglePanel(LLPanel* &sub_panel, const std::string& panel_name, const LLSD& params)
-{
-	if(!sub_panel)
-		return;
-
-	// If a panel is visible and attached to Side Tray (has LLSideTray among its ancestors)
-	// it should be toggled off by collapsing Side Tray.
-	if (sub_panel->isInVisibleChain() && sub_panel->hasAncestor(this))
-	{
-		LLSideTray::getInstance()->collapseSideBar();
-	}
-	else
-	{
-		LLSideTray::getInstance()->showPanel(panel_name, params);
-	}
-}
-
-LLPanel* LLSideTray::getPanel(const std::string& panel_name)
-{
-	// Look up the panel in the list of detached tabs.
-	for ( child_vector_const_iter_t child_it = mDetachedTabs.begin(); child_it != mDetachedTabs.end(); ++child_it)
-	{
-		LLPanel *panel = findChildPanel(*child_it,panel_name,true);
-		if(panel)
-		{
-			return panel;
-		}
-	}
-
-	// Look up the panel in the list of attached tabs.
-	for ( child_vector_const_iter_t child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
-	{
-		LLPanel *panel = findChildPanel(*child_it,panel_name,true);
-		if(panel)
-		{
-			return panel;
-		}
-	}
-	return NULL;
-}
-
-LLPanel*	LLSideTray::getActivePanel()
-{
-	if (mActiveTab && !mCollapsed)
-	{
-		return mActiveTab->getPanel();
-	}
-	return NULL;
-}
-
-bool		LLSideTray::isPanelActive(const std::string& panel_name)
-{
-	LLPanel *panel = getActivePanel();
-	if (!panel) return false;
-	return (panel->getName() == panel_name);
-}
-
-void LLSideTray::setTabDocked(const std::string& tab_name, bool dock, bool toggle_floater /* = true*/)
-{
-	// Lookup tab by name.
-	LLSideTrayTab* tab = getTab(tab_name);
-	if (!tab)
-	{	// not a docked tab, look through detached tabs
-		for(child_vector_iter_t tab_it = mDetachedTabs.begin(), tab_end_it = mDetachedTabs.end();
-			tab_it != tab_end_it;
-			++tab_it)
-		{
-			if ((*tab_it)->getName() == tab_name)
-			{
-				tab = *tab_it;
-				break;
-			}
-		}
-
-	}
-
-	llassert(tab != NULL);
-
-	// Toggle its dock state.
-	if (tab && tab->isDocked() != dock)
-	{
-		tab->toggleTabDocked(toggle_floater);
-	}
-}
-
-
-void	LLSideTray::updateSidetrayVisibility()
-{
-	// set visibility of parent container based on collapsed state
-	LLView* parent = getParent();
-	if (parent)
-	{
-		bool old_visibility = parent->getVisible();
-		bool new_visibility = !mCollapsed && !gAgentCamera.cameraMouselook();
-
-		if (old_visibility != new_visibility)
-		{
-			parent->setVisible(new_visibility);
-
-			// Signal change of visible width.
-			//llinfos << "Visible: " << new_visibility << llendl;
-			mVisibleWidthChangeSignal(this, new_visibility);
-		}
-	}
-}
-
-S32 LLSideTray::getVisibleWidth()
-{
-	return (isInVisibleChain() && !mCollapsed) ? getRect().getWidth() : 0;
-}
-
-void LLSideTray::setVisibleWidthChangeCallback(const commit_signal_t::slot_type& cb)
-{
-	mVisibleWidthChangeSignal.connect(cb);
-}
diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h
deleted file mode 100644
index 17158329dcf9990454182528e036c0ff3e611c29..0000000000000000000000000000000000000000
--- a/indra/newview/llsidetray.h
+++ /dev/null
@@ -1,260 +0,0 @@
-/** 
- * @file LLSideTray.h
- * @brief SideBar header file
- *
- * $LicenseInfo:firstyear=2004&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_LLSIDETRAY_H_
-#define LL_LLSIDETRAY_H_
-
-#include "llpanel.h"
-#include "string"
-
-class LLAccordionCtrl;
-class LLSideTrayTab;
-
-// Define an interface for side tab button badge values
-class LLSideTrayTabBadgeDriver
-{
-public:
-	virtual std::string getBadgeString() const = 0;
-};
-
-// Deal with LLSideTrayTab being opaque. Generic do-nothing cast...
-template <class T>
-T tab_cast(LLSideTrayTab* tab) { return tab; }
-// specialized for implementation in presence of LLSideTrayTab definition
-template <>
-LLPanel* tab_cast<LLPanel*>(LLSideTrayTab* tab);
-
-// added inheritance from LLDestroyClass<LLSideTray> to enable Side Tray perform necessary actions 
-// while disconnecting viewer in LLAppViewer::disconnectViewer().
-// LLDestroyClassList::instance().fireCallbacks() calls destroyClass method. See EXT-245.
-class LLSideTray : public LLPanel, private LLDestroyClass<LLSideTray>
-{
-	friend class LLUICtrlFactory;
-	friend class LLDestroyClass<LLSideTray>;
-	friend class LLSideTrayTab;
-	friend class LLSideTrayButton;
-public:
-
-	LOG_CLASS(LLSideTray);
-
-	struct Params 
-	:	public LLInitParam::Block<Params, LLPanel::Params>
-	{
-		// initial state
-		Optional<bool>				collapsed;
-		Optional<LLUIImage*>		tab_btn_image_normal,
-									tab_btn_image_selected;
-		
-		Optional<S32>				default_button_width,
-									default_button_height,
-									default_button_margin;
-		
-		Params();
-	};
-
-	static LLSideTray*	getInstance		();
-	static bool			instanceCreated	();
-protected:
-	LLSideTray(const Params& params);
-	typedef std::vector<LLSideTrayTab*> child_vector_t;
-	typedef child_vector_t::iterator					child_vector_iter_t;
-	typedef child_vector_t::const_iterator  			child_vector_const_iter_t;
-	typedef child_vector_t::reverse_iterator 			child_vector_reverse_iter_t;
-	typedef child_vector_t::const_reverse_iterator 		child_vector_const_reverse_iter_t;
-	typedef std::vector<std::string>					tab_order_vector_t;
-	typedef tab_order_vector_t::const_iterator			tab_order_vector_const_iter_t;
-
-public:
-
-	// interface functions
-	    
-	/**
-	 * Select tab with specific name and set it active
-	 *
-	 * @param name				Tab to switch to.
-	 * @param keep_prev_visible	Whether to keep the previously selected tab visible.
-	 */
-	bool 		selectTabByName	(const std::string& name, bool keep_prev_visible = false);
-	
-	/**
-     * Select tab with specific index and set it active    
-     */
-	bool		selectTabByIndex(size_t index);
-
-	/**
-	 * Activate tab with "panel_name" panel
-	 * if no such tab - return NULL, otherwise a pointer to the panel
-	 * Pass params as array, or they may be overwritten(example - params["name"]="nearby")
-	 */
-	LLPanel*	showPanel		(const std::string& panel_name, const LLSD& params = LLSD());
-
-	bool		hidePanel		(const std::string& panel_name);
-
-	/**
-	 * Toggling Side Tray tab which contains "sub_panel" child of "panel_name" panel.
-	 * If "sub_panel" is not visible Side Tray is opened to display it,
-	 * otherwise Side Tray is collapsed.
-	 * params are passed to "panel_name" panel onOpen().
-	 */
-	void		togglePanel		(LLPanel* &sub_panel, const std::string& panel_name, const LLSD& params = LLSD());
-
-	/*
-	 * get the panel (don't show it or do anything else with it)
-	 */
-    LLPanel*	getPanel		(const std::string& panel_name);
-    LLPanel*	getActivePanel	();
-    bool		isPanelActive	(const std::string& panel_name);
-
-	void		setTabDocked(const std::string& tab_name, bool dock, bool toggle_floater = true);
-
-	/*
-	 * get the panel of given type T (don't show it or do anything else with it)
-	 */
-	template <typename T>
-	T* getPanel(const std::string& panel_name)
-	{
-		T* panel = dynamic_cast<T*>(getPanel(panel_name));
-		if (!panel)
-		{
-			llwarns << "Child named \"" << panel_name << "\" of type " << typeid(T*).name() << " not found" << llendl;
-			return NULL;
-		}
-		return panel;
-	}
-
-	/*
-     * collapse SideBar, hiding visible tab and moving tab buttons
-     * to the right corner of the screen
-     */
-	void		collapseSideBar	();
-    
-	/*
-     * expand SideBar
-     *
-     * @param open_active Whether to call onOpen() for the active tab.
-     */
-	void		expandSideBar(bool open_active = true);
-
-
-	/**
-	 *hightlight if focused. manly copypaste from highlightFocusedFloater
-	 */
-	void		highlightFocused();
-
-	void		setVisible(BOOL visible)
-	{
-		if (getParent()) getParent()->setVisible(visible);
-	}
-
-	LLPanel*	getButtonsPanel() { return mButtonsPanel; }
-
-	bool		getCollapsed() { return mCollapsed; }
-
-	void		setTabButtonBadgeDriver(std::string tabName, LLSideTrayTabBadgeDriver* driver);
-
-public:
-	virtual ~LLSideTray(){};
-
-    virtual BOOL postBuild();
-
-	BOOL		handleMouseDown	(S32 x, S32 y, MASK mask);
-	
-	void		reshape			(S32 width, S32 height, BOOL called_from_parent = TRUE);
-
-
-	/**
-	 * @return side tray width if it's visible and expanded, 0 otherwise.
-	 *
-	 * Not that width of the tab buttons is not included.
-	 *
-	 * @see setVisibleWidthChangeCallback()
-	 */
-	S32			getVisibleWidth();
-
-	void		setVisibleWidthChangeCallback(const commit_signal_t::slot_type& cb);
-
-	void		updateSidetrayVisibility();
-
-	void		handleLoginComplete();
-
-	bool 		isTabAttached	(const std::string& name);
-
-protected:
-	bool		addChild		(LLView* view, S32 tab_group);
-	bool		removeTab		(LLSideTrayTab* tab); // Used to detach tabs temporarily
-	bool		addTab			(LLSideTrayTab* tab); // Used to re-attach tabs
-	bool		hasTabs			();
-
-	const LLSideTrayTab*	getActiveTab() const { return mActiveTab; }
-	LLSideTrayTab* 			getTab(const std::string& name);
-
-	void		createButtons	();
-
-	void		arrange			();
-	void		detachTabs		();
-	void		reflectCollapseChange();
-	void		processTriState ();
-
-	void		toggleTabButton	(LLSideTrayTab* tab);
-
-	LLPanel*	openChildPanel	(LLSideTrayTab* tab, const std::string& panel_name, const LLSD& params);
-
-	void		onTabButtonClick(std::string name);
-	void		onToggleCollapse();
-
-private:
-	// Implementation of LLDestroyClass<LLSideTray>
-	static void destroyClass()
-	{
-		// Disable SideTray to avoid crashes. EXT-245
-		if (LLSideTray::instanceCreated())
-			LLSideTray::getInstance()->setEnabled(FALSE);
-	}
-
-private:
-	// Since we provide no public way to query mTabs and mDetachedTabs, give
-	// LLSideTrayListener friend access.
-	friend class LLSideTrayListener;
-	LLPanel*						mButtonsPanel;
-	typedef std::map<std::string,LLButton*> button_map_t;
-	button_map_t					mTabButtons;
-	typedef std::map<std::string,LLSideTrayTabBadgeDriver*> badge_map_t;
-	badge_map_t						mTabButtonBadgeDrivers;
-	child_vector_t					mTabs;
-	child_vector_t					mDetachedTabs;
-	tab_order_vector_t				mOriginalTabOrder;
-	LLSideTrayTab*					mActiveTab;	
-	
-	commit_signal_t					mVisibleWidthChangeSignal;
-
-	LLButton*						mCollapseButton;
-	bool							mCollapsed;
-	
-	static LLSideTray*				sInstance;
-};
-
-#endif
-
diff --git a/indra/newview/llsidetraylistener.cpp b/indra/newview/llsidetraylistener.cpp
deleted file mode 100644
index cd6fa28948f54ad4cc00b8048be6fb99eee0b649..0000000000000000000000000000000000000000
--- a/indra/newview/llsidetraylistener.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-/**
- * @file   llsidetraylistener.cpp
- * @author Nat Goodspeed
- * @date   2011-02-15
- * @brief  Implementation for llsidetraylistener.
- * 
- * $LicenseInfo:firstyear=2011&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$
- */
-
-// Precompiled header
-#include "llviewerprecompiledheaders.h"
-// associated header
-#include "llsidetraylistener.h"
-// STL headers
-// std headers
-// external library headers
-// other Linden headers
-#include "llsidetray.h"
-#include "llsdutil.h"
-
-LLSideTrayListener::LLSideTrayListener(const Getter& getter):
-    LLEventAPI("LLSideTray",
-               "Operations on side tray (e.g. query state, query tabs)"),
-    mGetter(getter)
-{
-    add("getCollapsed", "Send on [\"reply\"] an [\"open\"] Boolean",
-        &LLSideTrayListener::getCollapsed, LLSDMap("reply", LLSD()));
-    add("getTabs",
-        "Send on [\"reply\"] a map of tab names and info about them",
-        &LLSideTrayListener::getTabs, LLSDMap("reply", LLSD()));
-    add("getPanels",
-        "Send on [\"reply\"] data about panels available with SideTray.ShowPanel",
-        &LLSideTrayListener::getPanels, LLSDMap("reply", LLSD()));
-}
-
-void LLSideTrayListener::getCollapsed(const LLSD& event) const
-{
-    sendReply(LLSDMap("open", ! mGetter()->getCollapsed()), event);
-}
-
-void LLSideTrayListener::getTabs(const LLSD& event) const
-{
-    LLSD reply;
-
-    LLSideTray* tray = mGetter();
-    LLSD::Integer ord(0);
-    for (LLSideTray::child_list_const_iter_t chi(tray->beginChild()), chend(tray->endChild());
-         chi != chend; ++chi, ++ord)
-    {
-        LLView* child = *chi;
-        // How much info is important? Toss in as much as seems reasonable for
-        // each tab. But to me, at least for the moment, the most important
-        // item is the tab name.
-        LLSD info;
-        // I like the idea of returning a map keyed by tab name. But as
-        // compared to an array of maps, that loses sequence information.
-        // Address that by indicating the original order in each map entry.
-        info["ord"] = ord;
-        info["visible"] = bool(child->getVisible());
-        info["enabled"] = bool(child->getEnabled());
-        info["available"] = child->isAvailable();
-        reply[child->getName()] = info;
-    }
-
-    sendReply(reply, event);
-}
-
-static LLSD getTabInfo(LLPanel* tab)
-{
-    LLSD panels;
-    for (LLPanel::tree_iterator_t ti(tab->beginTreeDFS()), tend(tab->endTreeDFS());
-         ti != tend; ++ti)
-    {
-        // *ti is actually an LLView*, which had better not be NULL
-        LLView* view(*ti);
-        if (! view)
-        {
-            LL_ERRS("LLSideTrayListener") << "LLSideTrayTab '" << tab->getName()
-                                          << "' has a NULL child LLView*" << LL_ENDL;
-        }
-
-        // The logic we use to decide what "panel" names to return is heavily
-        // based on LLSideTray::showPanel(): the function that actually
-        // implements the "SideTray.ShowPanel" operation. showPanel(), in
-        // turn, depends on LLSideTray::openChildPanel(): when
-        // openChildPanel() returns non-NULL, showPanel() stops searching
-        // attached and detached LLSideTrayTab tabs.
-
-        // For each LLSideTrayTab, openChildPanel() first calls
-        // findChildView(panel_name, true). In other words, panel_name need
-        // not be a direct LLSideTrayTab child, it's sought recursively.
-        // That's why we use (begin|end)TreeDFS() in this loop.
-
-        // But this tree_iterator_t loop will actually traverse every widget
-        // in every panel. Returning all those names will not help our caller:
-        // passing most such names to openChildPanel() would not do what we
-        // want. Even though the code suggests that passing ANY valid
-        // side-panel widget name to openChildPanel() will open the tab
-        // containing that widget, results could get confusing since followup
-        // (onOpen()) logic wouldn't be invoked, and showPanel() wouldn't stop
-        // searching because openChildPanel() would return NULL.
-
-        // We must filter these LLView items, using logic that (sigh!) mirrors
-        // openChildPanel()'s own.
-
-        // openChildPanel() returns a non-NULL LLPanel* when either:
-        // - the LLView is a direct child of an LLSideTrayPanelContainer
-        // - the LLView is itself an LLPanel.
-        // But as LLSideTrayPanelContainer can directly contain LLView items
-        // that are NOT themselves LLPanels (e.g. "sidebar_me" contains an
-        // LLButton called "Jump Right Arrow"), we'd better focus only on
-        // LLSideTrayPanelContainer children that are themselves LLPanel
-        // items. Which means that the second test completely subsumes the
-        // first.
-        LLPanel* panel(dynamic_cast<LLPanel*>(view));
-        if (panel)
-        {
-            // Maybe it's overkill to construct an LLSD::Map for each panel, but
-            // the possibility remains that we might want to deliver more info
-            // about each panel than just its name.
-            panels.append(LLSDMap("name", panel->getName()));
-        }
-    }
-
-    return LLSDMap("panels", panels);
-}
-
-void LLSideTrayListener::getPanels(const LLSD& event) const
-{
-    LLSD reply;
-
-    LLSideTray* tray = mGetter();
-    // Iterate through the attached tabs.
-    LLSD::Integer ord(0);
-    for (LLSideTray::child_vector_t::const_iterator
-             ati(tray->mTabs.begin()), atend(tray->mTabs.end());
-         ati != atend; ++ati)
-    {
-        // We don't have access to LLSideTrayTab: the class definition is
-        // hidden in llsidetray.cpp. But as LLSideTrayTab isa LLPanel, use the
-        // LLPanel API. Unfortunately, without the LLSideTrayTab definition,
-        // the compiler doesn't even know this LLSideTrayTab* is an LLPanel*.
-        // Persuade it.
-        LLPanel* tab(tab_cast<LLPanel*>(*ati));
-        reply[tab->getName()] = getTabInfo(tab).with("attached", true).with("ord", ord);
-    }
-
-    // Now iterate over the detached tabs. These can also be opened via
-    // SideTray.ShowPanel.
-    ord = 0;
-    for (LLSideTray::child_vector_t::const_iterator
-             dti(tray->mDetachedTabs.begin()), dtend(tray->mDetachedTabs.end());
-         dti != dtend; ++dti)
-    {
-        LLPanel* tab(tab_cast<LLPanel*>(*dti));
-        reply[tab->getName()] = getTabInfo(tab).with("attached", false).with("ord", ord);
-    }
-
-    sendReply(reply, event);
-}
diff --git a/indra/newview/llsidetraylistener.h b/indra/newview/llsidetraylistener.h
deleted file mode 100644
index 51e2137762ddcf479712463d721049a6d8f81637..0000000000000000000000000000000000000000
--- a/indra/newview/llsidetraylistener.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * @file   llsidetraylistener.h
- * @author Nat Goodspeed
- * @date   2011-02-15
- * @brief  
- * 
- * $LicenseInfo:firstyear=2011&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$
- */
-
-#if ! defined(LL_LLSIDETRAYLISTENER_H)
-#define LL_LLSIDETRAYLISTENER_H
-
-#include "lleventapi.h"
-#include <boost/function.hpp>
-
-class LLSideTray;
-class LLSD;
-
-class LLSideTrayListener: public LLEventAPI
-{
-    typedef boost::function<LLSideTray*()> Getter;
-
-public:
-    LLSideTrayListener(const Getter& getter);
-
-private:
-    void getCollapsed(const LLSD& event) const;
-    void getTabs(const LLSD& event) const;
-    void getPanels(const LLSD& event) const;
-
-    Getter mGetter;
-};
-
-#endif /* ! defined(LL_LLSIDETRAYLISTENER_H) */
diff --git a/indra/newview/llsidetraypanelcontainer.cpp b/indra/newview/llsidetraypanelcontainer.cpp
index 95a12c7c233e738c4e9167a731eeb8b35495679d..e340333c2c46694eb0ea6f96b59b5df5c3ad9260 100644
--- a/indra/newview/llsidetraypanelcontainer.cpp
+++ b/indra/newview/llsidetraypanelcontainer.cpp
@@ -62,6 +62,13 @@ void LLSideTrayPanelContainer::onOpen(const LLSD& key)
 	getCurrentPanel()->onOpen(key);
 }
 
+void LLSideTrayPanelContainer::openPanel(const std::string& panel_name, const LLSD& key)
+{
+	LLSD combined_key = key;
+	combined_key[PARAM_SUB_PANEL_NAME] = panel_name;
+	onOpen(combined_key);
+}
+
 void LLSideTrayPanelContainer::openPreviousPanel()
 {
 	if(!mDefaultPanelName.empty())
diff --git a/indra/newview/llsidetraypanelcontainer.h b/indra/newview/llsidetraypanelcontainer.h
index 14269b002be2cb3f0bc43283a26a5ed873e4a92e..93a85ed3745589e360e14392f656b8663d775e98 100644
--- a/indra/newview/llsidetraypanelcontainer.h
+++ b/indra/newview/llsidetraypanelcontainer.h
@@ -56,6 +56,11 @@ class LLSideTrayPanelContainer : public LLTabContainer
 	*/
 	/*virtual*/ void onOpen(const LLSD& key);
 
+	/**
+	 * Opens given subpanel.
+	 */
+	void openPanel(const std::string& panel_name, const LLSD& key = LLSD::emptyMap());
+
 	/**
 	* Opens previous panel from panel navigation history.
 	*/
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index 6c2b71dd0a0c539b1bb3755808dd3018f1389ad2..5d196a465f6bc3a9f4f5c2284ce95aa9752305f0 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -28,6 +28,10 @@
 
 #include "llspatialpartition.h"
 
+#include "llappviewer.h"
+#include "lltexturecache.h"
+#include "lltexturefetch.h"
+#include "llimageworker.h"
 #include "llviewerwindow.h"
 #include "llviewerobjectlist.h"
 #include "llvovolume.h"
@@ -48,6 +52,7 @@
 #include "llvolumemgr.h"
 #include "lltextureatlas.h"
 #include "llglslshader.h"
+#include "llviewershadermgr.h"
 
 static LLFastTimer::DeclareTimer FTM_FRUSTUM_CULL("Frustum Culling");
 static LLFastTimer::DeclareTimer FTM_CULL_REBOUND("Cull Rebound");
@@ -214,7 +219,7 @@ typedef enum
 //contact Runitai Linden for a copy of the SL object used to write this table
 //basically, you give the table a bitmask of the look-at vector to a node and it
 //gives you a triangle fan index array
-static U8 sOcclusionIndices[] =
+static U16 sOcclusionIndices[] =
 {
 	 //000
 		b111, b110, b010, b011, b001, b101, b100, b110,
@@ -251,7 +256,7 @@ U8* get_box_fan_indices_ptr(LLCamera* camera, const LLVector4a& center)
 
 	S32 cypher = center.greaterThan(origin).getGatheredBits() & 0x7;
 	
-	return sOcclusionIndices+cypher*8;
+	return (U8*) (sOcclusionIndices+cypher*8);
 }
 
 
@@ -259,9 +264,8 @@ static LLFastTimer::DeclareTimer FTM_BUILD_OCCLUSION("Build Occlusion");
 
 void LLSpatialGroup::buildOcclusion()
 {
-	if (mOcclusionVerts.isNull())
+	//if (mOcclusionVerts.isNull())
 	{
-
 		mOcclusionVerts = new LLVertexBuffer(LLVertexBuffer::MAP_VERTEX, 
 			LLVertexBuffer::sUseStreamDraw ? mBufferUsage : 0); //if GL has a hard time with VBOs, don't use them for occlusion culling.
 		mOcclusionVerts->allocateBuffer(8, 64, true);
@@ -321,7 +325,8 @@ void LLSpatialGroup::buildOcclusion()
 	}
 	
 	{
-		mOcclusionVerts->setBuffer(0);
+		mOcclusionVerts->flush();
+		LLVertexBuffer::unbind();
 	}
 
 	clearState(LLSpatialGroup::OCCLUSION_DIRTY);
@@ -721,7 +726,9 @@ void LLSpatialPartition::rebuildGeom(LLSpatialGroup* group)
 	if (vertex_count > 0 && index_count > 0)
 	{ //create vertex buffer containing volume geometry for this node
 		group->mBuilt = 1.f;
-		if (group->mVertexBuffer.isNull() || (group->mBufferUsage != group->mVertexBuffer->getUsage() && LLVertexBuffer::sEnableVBOs))
+		if (group->mVertexBuffer.isNull() ||
+			!group->mVertexBuffer->isWriteable() ||
+			(group->mBufferUsage != group->mVertexBuffer->getUsage() && LLVertexBuffer::sEnableVBOs))
 		{
 			group->mVertexBuffer = createVertexBuffer(mVertexDataMask, group->mBufferUsage);
 			group->mVertexBuffer->allocateBuffer(vertex_count, index_count, true);
@@ -1180,6 +1187,8 @@ void LLSpatialGroup::clearOcclusionState(U32 state, S32 mode)
 
 LLSpatialGroup::LLSpatialGroup(OctreeNode* node, LLSpatialPartition* part) :
 	mState(0),
+	mGeometryBytes(0),
+	mSurfaceArea(0.f),
 	mBuilt(0.f),
 	mOctreeNode(node),
 	mSpatialPartition(part),
@@ -1220,6 +1229,7 @@ LLSpatialGroup::LLSpatialGroup(OctreeNode* node, LLSpatialPartition* part) :
 	for (U32 i = 0; i < LLViewerCamera::NUM_CAMERAS; i++)
 	{
 		mOcclusionQuery[i] = 0;
+		mOcclusionIssued[i] = 0;
 		mOcclusionState[i] = parent ? SG_STATE_INHERIT_MASK & parent->mOcclusionState[i] : 0;
 		mVisible[i] = 0;
 	}
@@ -1404,6 +1414,17 @@ void LLSpatialGroup::handleDestruction(const TreeNode* node)
 		}
 	}
 	
+	//clean up avatar attachment stats
+	LLSpatialBridge* bridge = mSpatialPartition->asBridge();
+	if (bridge)
+	{
+		if (bridge->mAvatar.notNull())
+		{
+			bridge->mAvatar->mAttachmentGeometryBytes -= mGeometryBytes;
+			bridge->mAvatar->mAttachmentSurfaceArea -= mSurfaceArea;
+		}
+	}
+
 	clearDrawMap();
 	mVertexBuffer = NULL;
 	mBufferMap.clear();
@@ -1542,6 +1563,8 @@ BOOL LLSpatialGroup::rebound()
 }
 
 static LLFastTimer::DeclareTimer FTM_OCCLUSION_READBACK("Readback Occlusion");
+static LLFastTimer::DeclareTimer FTM_OCCLUSION_WAIT("Wait");
+
 void LLSpatialGroup::checkOcclusion()
 {
 	if (LLPipeline::sUseOcclusion > 1)
@@ -1559,6 +1582,22 @@ void LLSpatialGroup::checkOcclusion()
 			if (mOcclusionQuery[LLViewerCamera::sCurCameraID])
 			{
 				glGetQueryObjectuivARB(mOcclusionQuery[LLViewerCamera::sCurCameraID], GL_QUERY_RESULT_AVAILABLE_ARB, &available);
+
+				if (mOcclusionIssued[LLViewerCamera::sCurCameraID] < gFrameCount)
+				{ //query was issued last frame, wait until it's available
+					S32 max_loop = 1024;
+					LLFastTimer t(FTM_OCCLUSION_WAIT);
+					while (!available && max_loop-- > 0)
+					{
+						F32 max_time = llmin(gFrameIntervalSeconds*10.f, 1.f);
+						//do some usefu work while we wait
+						LLAppViewer::getTextureCache()->update(max_time); // unpauses the texture cache thread
+						LLAppViewer::getImageDecodeThread()->update(max_time); // unpauses the image thread
+						LLAppViewer::getTextureFetch()->update(max_time); // unpauses the texture fetch thread
+						
+						glGetQueryObjectuivARB(mOcclusionQuery[LLViewerCamera::sCurCameraID], GL_QUERY_RESULT_AVAILABLE_ARB, &available);
+					}
+				}
 			}
 			else
 			{
@@ -1614,6 +1653,15 @@ void LLSpatialGroup::checkOcclusion()
 static LLFastTimer::DeclareTimer FTM_PUSH_OCCLUSION_VERTS("Push Occlusion");
 static LLFastTimer::DeclareTimer FTM_SET_OCCLUSION_STATE("Occlusion State");
 static LLFastTimer::DeclareTimer FTM_OCCLUSION_EARLY_FAIL("Occlusion Early Fail");
+static LLFastTimer::DeclareTimer FTM_OCCLUSION_ALLOCATE("Allocate");
+static LLFastTimer::DeclareTimer FTM_OCCLUSION_BUILD("Build");
+static LLFastTimer::DeclareTimer FTM_OCCLUSION_BEGIN_QUERY("Begin Query");
+static LLFastTimer::DeclareTimer FTM_OCCLUSION_END_QUERY("End Query");
+static LLFastTimer::DeclareTimer FTM_OCCLUSION_SET_BUFFER("Set Buffer");
+static LLFastTimer::DeclareTimer FTM_OCCLUSION_DRAW_WATER("Draw Water");
+static LLFastTimer::DeclareTimer FTM_OCCLUSION_DRAW("Draw");
+
+
 
 void LLSpatialGroup::doOcclusion(LLCamera* camera)
 {
@@ -1637,11 +1685,13 @@ void LLSpatialGroup::doOcclusion(LLCamera* camera)
 
 					if (!mOcclusionQuery[LLViewerCamera::sCurCameraID])
 					{
+						LLFastTimer t(FTM_OCCLUSION_ALLOCATE);
 						mOcclusionQuery[LLViewerCamera::sCurCameraID] = sQueryPool.allocate();
 					}
 
 					if (mOcclusionVerts.isNull() || isState(LLSpatialGroup::OCCLUSION_DIRTY))
 					{
+						LLFastTimer t(FTM_OCCLUSION_BUILD);
 						buildOcclusion();
 					}
 					
@@ -1666,12 +1716,24 @@ void LLSpatialGroup::doOcclusion(LLCamera* camera)
 
 					{
 						LLFastTimer t(FTM_PUSH_OCCLUSION_VERTS);
-						glBeginQueryARB(mode, mOcclusionQuery[LLViewerCamera::sCurCameraID]);					
+						
+						//store which frame this query was issued on
+						mOcclusionIssued[LLViewerCamera::sCurCameraID] = gFrameCount;
+
+						{
+							LLFastTimer t(FTM_OCCLUSION_BEGIN_QUERY);
+							glBeginQueryARB(mode, mOcclusionQuery[LLViewerCamera::sCurCameraID]);					
+						}
 					
-						mOcclusionVerts->setBuffer(LLVertexBuffer::MAP_VERTEX);
+						{
+							LLFastTimer t(FTM_OCCLUSION_SET_BUFFER);
+							mOcclusionVerts->setBuffer(LLVertexBuffer::MAP_VERTEX);
+						}
 
 						if (!use_depth_clamp && mSpatialPartition->mDrawableType == LLDrawPool::POOL_VOIDWATER)
 						{
+							LLFastTimer t(FTM_OCCLUSION_DRAW_WATER);
+
 							LLGLSquashToFarClip squash(glh_get_current_projection(), 1);
 							if (camera->getOrigin().isExactlyZero())
 							{ //origin is invalid, draw entire box
@@ -1685,6 +1747,7 @@ void LLSpatialGroup::doOcclusion(LLCamera* camera)
 						}
 						else
 						{
+							LLFastTimer t(FTM_OCCLUSION_DRAW);
 							if (camera->getOrigin().isExactlyZero())
 							{ //origin is invalid, draw entire box
 								mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, 0);
@@ -1696,7 +1759,11 @@ void LLSpatialGroup::doOcclusion(LLCamera* camera)
 							}
 						}
 
-						glEndQueryARB(mode);
+
+						{
+							LLFastTimer t(FTM_OCCLUSION_END_QUERY);
+							glEndQueryARB(mode);
+						}
 					}
 				}
 
@@ -1713,7 +1780,7 @@ void LLSpatialGroup::doOcclusion(LLCamera* camera)
 //==============================================
 
 LLSpatialPartition::LLSpatialPartition(U32 data_mask, BOOL render_by_group, U32 buffer_usage)
-: mRenderByGroup(render_by_group)
+: mRenderByGroup(render_by_group), mBridge(NULL)
 {
 	LLMemType mt(LLMemType::MTYPE_SPACE_PARTITION);
 	mOcclusionEnabled = TRUE;
@@ -2416,7 +2483,7 @@ void pushVerts(LLFace* face, U32 mask)
 
 	LLVertexBuffer* buffer = face->getVertexBuffer();
 
-	if (buffer)
+	if (buffer && (face->getGeomCount() >= 3))
 	{
 		buffer->setBuffer(mask);
 		U16 start = face->getGeomStart();
@@ -2441,8 +2508,7 @@ void pushVerts(LLVolume* volume)
 	for (S32 i = 0; i < volume->getNumVolumeFaces(); ++i)
 	{
 		const LLVolumeFace& face = volume->getVolumeFace(i);
-		glVertexPointer(3, GL_FLOAT, 16, face.mPositions);
-		glDrawElements(GL_TRIANGLES, face.mNumIndices, GL_UNSIGNED_SHORT, face.mIndices);
+		LLVertexBuffer::drawElements(LLRender::TRIANGLES, face.mPositions, NULL, face.mNumIndices, face.mIndices);
 	}
 }
 
@@ -2451,7 +2517,7 @@ void pushBufferVerts(LLVertexBuffer* buffer, U32 mask)
 	if (buffer)
 	{
 		buffer->setBuffer(mask);
-		buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getRequestedVerts()-1, buffer->getRequestedIndices(), 0);
+		buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts()-1, buffer->getNumIndices(), 0);
 	}
 }
 
@@ -2508,7 +2574,7 @@ void pushVertsColorCoded(LLSpatialGroup* group, U32 mask)
 		{
 			params = *j;
 			LLRenderPass::applyModelMatrix(*params);
-			glColor4f(colors[col].mV[0], colors[col].mV[1], colors[col].mV[2], 0.5f);
+			gGL.diffuseColor4f(colors[col].mV[0], colors[col].mV[1], colors[col].mV[2], 0.5f);
 			params->mVertexBuffer->setBuffer(mask);
 			params->mVertexBuffer->drawRange(params->mParticle ? LLRender::POINTS : LLRender::TRIANGLES,
 				params->mStart, params->mEnd, params->mCount, params->mOffset);
@@ -2523,7 +2589,7 @@ void renderOctree(LLSpatialGroup* group)
 	//coded by buffer usage and activity
 	gGL.setSceneBlendType(LLRender::BT_ADD_WITH_ALPHA);
 	LLVector4 col;
-	/*if (group->mBuilt > 0.f)
+	if (group->mBuilt > 0.f)
 	{
 		group->mBuilt -= 2.f * gFrameIntervalSeconds;
 		if (group->mBufferUsage == GL_STATIC_DRAW_ARB)
@@ -2541,7 +2607,7 @@ void renderOctree(LLSpatialGroup* group)
 			LLGLDepthTest gl_depth(FALSE, FALSE);
 			glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 
-			gGL.color4f(1,0,0,group->mBuilt);
+			gGL.diffuseColor4f(1,0,0,group->mBuilt);
 			gGL.flush();
 			glLineWidth(5.f);
 			drawBoxOutline(group->mObjectBounds[0], group->mObjectBounds[1]);
@@ -2553,9 +2619,9 @@ void renderOctree(LLSpatialGroup* group)
 				LLDrawable* drawable = *i;
 				if (!group->mSpatialPartition->isBridge())
 				{
-					glPushMatrix();
+					gGL.pushMatrix();
 					LLVector3 trans = drawable->getRegion()->getOriginAgent();
-					glTranslatef(trans.mV[0], trans.mV[1], trans.mV[2]);
+					gGL.translatef(trans.mV[0], trans.mV[1], trans.mV[2]);
 				}
 				
 				for (S32 j = 0; j < drawable->getNumFaces(); j++)
@@ -2565,11 +2631,11 @@ void renderOctree(LLSpatialGroup* group)
 					{
 						if (gFrameTimeSeconds - face->mLastUpdateTime < 0.5f)
 						{
-							glColor4f(0, 1, 0, group->mBuilt);
+							gGL.diffuseColor4f(0, 1, 0, group->mBuilt);
 						}
 						else if (gFrameTimeSeconds - face->mLastMoveTime < 0.5f)
 						{
-							glColor4f(1, 0, 0, group->mBuilt);
+							gGL.diffuseColor4f(1, 0, 0, group->mBuilt);
 						}
 						else
 						{
@@ -2585,14 +2651,14 @@ void renderOctree(LLSpatialGroup* group)
 
 				if (!group->mSpatialPartition->isBridge())
 				{
-					glPopMatrix();
+					gGL.popMatrix();
 				}
 			}
 			glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
-			gGL.color4f(1,1,1,1);
+			gGL.diffuseColor4f(1,1,1,1);
 		}
 	}
-	else*/
+	else
 	{
 		if (group->mBufferUsage == GL_STATIC_DRAW_ARB && !group->getData().empty() 
 			&& group->mSpatialPartition->mRenderByGroup)
@@ -2605,7 +2671,7 @@ void renderOctree(LLSpatialGroup* group)
 		}
 	}
 
-	gGL.color4fv(col.mV);
+	gGL.diffuseColor4fv(col.mV);
 	LLVector4a fudge;
 	fudge.splat(0.001f);
 	LLVector4a size = group->mObjectBounds[1];
@@ -2622,16 +2688,16 @@ void renderOctree(LLSpatialGroup* group)
 	//if (group->mBuilt <= 0.f)
 	{
 		//draw opaque outline
-		//gGL.color4f(col.mV[0], col.mV[1], col.mV[2], 1.f);
+		//gGL.diffuseColor4f(col.mV[0], col.mV[1], col.mV[2], 1.f);
 		//drawBoxOutline(group->mObjectBounds[0], group->mObjectBounds[1]);
 
-		gGL.color4f(0,1,1,1);
+		gGL.diffuseColor4f(0,1,1,1);
 		drawBoxOutline(group->mBounds[0],group->mBounds[1]);
 		
 		//draw bounding box for draw info
 		/*if (group->mSpatialPartition->mRenderByGroup)
 		{
-			gGL.color4f(1.0f, 0.75f, 0.25f, 0.6f);
+			gGL.diffuseColor4f(1.0f, 0.75f, 0.25f, 0.6f);
 			for (LLSpatialGroup::draw_map_t::iterator i = group->mDrawMap.begin(); i != group->mDrawMap.end(); ++i)
 			{
 				for (LLSpatialGroup::drawmap_elem_t::iterator j = i->second.begin(); j != i->second.end(); ++j)
@@ -2650,7 +2716,7 @@ void renderOctree(LLSpatialGroup* group)
 	}
 	
 //	LLSpatialGroup::OctreeNode* node = group->mOctreeNode;
-//	gGL.color4f(0,1,0,1);
+//	gGL.diffuseColor4f(0,1,0,1);
 //	drawBoxOutline(LLVector3(node->getCenter()), LLVector3(node->getSize()));
 }
 
@@ -2663,11 +2729,12 @@ void renderVisibility(LLSpatialGroup* group, LLCamera* camera)
 
 	BOOL render_objects = (!LLPipeline::sUseOcclusion || !group->isOcclusionState(LLSpatialGroup::OCCLUDED)) && group->isVisible() &&
 							!group->getData().empty();
+
 	if (render_objects)
 	{
 		LLGLDepthTest depth_under(GL_TRUE, GL_FALSE, GL_GREATER);
-		glColor4f(0, 0.5f, 0, 0.5f);
-		gGL.color4f(0, 0.5f, 0, 0.5f);
+		gGL.diffuseColor4f(0, 0.5f, 0, 0.5f);
+		gGL.diffuseColor4f(0, 0.5f, 0, 0.5f);
 		pushBufferVerts(group, LLVertexBuffer::MAP_VERTEX);
 	}
 
@@ -2676,8 +2743,8 @@ void renderVisibility(LLSpatialGroup* group, LLCamera* camera)
 
 		if (render_objects)
 		{
-			glColor4f(0.f, 0.5f, 0.f,1.f);
-			gGL.color4f(0.f, 0.5f, 0.f, 1.f);
+			gGL.diffuseColor4f(0.f, 0.5f, 0.f,1.f);
+			gGL.diffuseColor4f(0.f, 0.5f, 0.f, 1.f);
 			pushBufferVerts(group, LLVertexBuffer::MAP_VERTEX);
 		}
 
@@ -2685,8 +2752,8 @@ void renderVisibility(LLSpatialGroup* group, LLCamera* camera)
 
 		if (render_objects)
 		{
-			glColor4f(0.f, 0.75f, 0.f,0.5f);
-			gGL.color4f(0.f, 0.75f, 0.f, 0.5f);
+			gGL.diffuseColor4f(0.f, 0.75f, 0.f,0.5f);
+			gGL.diffuseColor4f(0.f, 0.75f, 0.f, 0.5f);
 			pushBufferVerts(group, LLVertexBuffer::MAP_VERTEX);
 		}
 		/*else if (camera && group->mOcclusionVerts.notNull())
@@ -2694,11 +2761,11 @@ void renderVisibility(LLSpatialGroup* group, LLCamera* camera)
 			LLVertexBuffer::unbind();
 			group->mOcclusionVerts->setBuffer(LLVertexBuffer::MAP_VERTEX);
 			
-			glColor4f(1.0f, 0.f, 0.f, 0.5f);
+			gGL.diffuseColor4f(1.0f, 0.f, 0.f, 0.5f);
 			group->mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, get_box_fan_indices(camera, group->mBounds[0]));
 			glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 			
-			glColor4f(1.0f, 1.f, 1.f, 1.0f);
+			gGL.diffuseColor4f(1.0f, 1.f, 1.f, 1.0f);
 			group->mOcclusionVerts->drawRange(LLRender::TRIANGLE_FAN, 0, 7, 8, get_box_fan_indices(camera, group->mBounds[0]));
 			glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 		}*/
@@ -2707,7 +2774,7 @@ void renderVisibility(LLSpatialGroup* group, LLCamera* camera)
 
 void renderCrossHairs(LLVector3 position, F32 size, LLColor4 color)
 {
-	gGL.color4fv(color.mV);
+	gGL.diffuseColor4fv(color.mV);
 	gGL.begin(LLRender::LINES);
 	{
 		gGL.vertex3fv((position - LLVector3(size, 0.f, 0.f)).mV);
@@ -2731,23 +2798,23 @@ void renderUpdateType(LLDrawable* drawablep)
 	switch (vobj->getLastUpdateType())
 	{
 	case OUT_FULL:
-		glColor4f(0,1,0,0.5f);
+		gGL.diffuseColor4f(0,1,0,0.5f);
 		break;
 	case OUT_TERSE_IMPROVED:
-		glColor4f(0,1,1,0.5f);
+		gGL.diffuseColor4f(0,1,1,0.5f);
 		break;
 	case OUT_FULL_COMPRESSED:
 		if (vobj->getLastUpdateCached())
 		{
-			glColor4f(1,0,0,0.5f);
+			gGL.diffuseColor4f(1,0,0,0.5f);
 		}
 		else
 		{
-			glColor4f(1,1,0,0.5f);
+			gGL.diffuseColor4f(1,1,0,0.5f);
 		}
 		break;
 	case OUT_FULL_CACHED:
-		glColor4f(0,0,1,0.5f);
+		gGL.diffuseColor4f(0,0,1,0.5f);
 		break;
 	default:
 		llwarns << "Unknown update_type " << vobj->getLastUpdateType() << llendl;
@@ -2879,17 +2946,17 @@ void renderBoundingBox(LLDrawable* drawable, BOOL set_color = TRUE)
 	{
 		if (drawable->isSpatialBridge())
 		{
-			gGL.color4f(1,0.5f,0,1);
+			gGL.diffuseColor4f(1,0.5f,0,1);
 		}
 		else if (drawable->getVOVolume())
 		{
 			if (drawable->isRoot())
 			{
-				gGL.color4f(1,1,0,1);
+				gGL.diffuseColor4f(1,1,0,1);
 			}
 			else
 			{
-				gGL.color4f(0,1,0,1);
+				gGL.diffuseColor4f(0,1,0,1);
 			}
 		}
 		else if (drawable->getVObj())
@@ -2897,30 +2964,30 @@ void renderBoundingBox(LLDrawable* drawable, BOOL set_color = TRUE)
 			switch (drawable->getVObj()->getPCode())
 			{
 				case LLViewerObject::LL_VO_SURFACE_PATCH:
-						gGL.color4f(0,1,1,1);
+						gGL.diffuseColor4f(0,1,1,1);
 						break;
 				case LLViewerObject::LL_VO_CLOUDS:
 						// no longer used
 						break;
 				case LLViewerObject::LL_VO_PART_GROUP:
 				case LLViewerObject::LL_VO_HUD_PART_GROUP:
-						gGL.color4f(0,0,1,1);
+						gGL.diffuseColor4f(0,0,1,1);
 						break;
 				case LLViewerObject::LL_VO_VOID_WATER:
 				case LLViewerObject::LL_VO_WATER:
-						gGL.color4f(0,0.5f,1,1);
+						gGL.diffuseColor4f(0,0.5f,1,1);
 						break;
 				case LL_PCODE_LEGACY_TREE:
-						gGL.color4f(0,0.5f,0,1);
+						gGL.diffuseColor4f(0,0.5f,0,1);
 						break;
 				default:
-						gGL.color4f(1,0,1,1);
+						gGL.diffuseColor4f(1,0,1,1);
 						break;
 			}
 		}
 		else 
 		{
-			gGL.color4f(1,0,0,1);
+			gGL.diffuseColor4f(1,0,0,1);
 		}
 	}
 
@@ -2976,7 +3043,7 @@ void renderNormals(LLDrawable* drawablep)
 	{
 		LLVolume* volume = vol->getVolume();
 		gGL.pushMatrix();
-		glMultMatrixf((F32*) vol->getRelativeXform().mMatrix);
+		gGL.multMatrix((F32*) vol->getRelativeXform().mMatrix);
 		
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 
@@ -2986,16 +3053,15 @@ void renderNormals(LLDrawable* drawablep)
 		{
 			const LLVolumeFace& face = volume->getVolumeFace(i);
 
-			gGL.begin(LLRender::LINES);
-			
 			for (S32 j = 0; j < face.mNumVertices; ++j)
 			{
+				gGL.begin(LLRender::LINES);
 				LLVector4a n,p;
 				
 				n.setMul(face.mNormals[j], scale);
 				p.setAdd(face.mPositions[j], n);
 				
-				gGL.color4f(1,1,1,1);
+				gGL.diffuseColor4f(1,1,1,1);
 				gGL.vertex3fv(face.mPositions[j].getF32ptr());
 				gGL.vertex3fv(p.getF32ptr());
 				
@@ -3004,13 +3070,12 @@ void renderNormals(LLDrawable* drawablep)
 					n.setMul(face.mBinormals[j], scale);
 					p.setAdd(face.mPositions[j], n);
 				
-					gGL.color4f(0,1,1,1);
+					gGL.diffuseColor4f(0,1,1,1);
 					gGL.vertex3fv(face.mPositions[j].getF32ptr());
 					gGL.vertex3fv(p.getF32ptr());
 				}	
+				gGL.end();
 			}
-
-			gGL.end();
 		}
 
 		gGL.popMatrix();
@@ -3050,33 +3115,33 @@ void renderMeshBaseHull(LLVOVolume* volume, U32 data_mask, LLColor4& color, LLCo
 	{		
 		if (!decomp->mBaseHullMesh.empty())
 		{
-			glColor4fv(color.mV);
+			gGL.diffuseColor4fv(color.mV);
 			LLVertexBuffer::drawArrays(LLRender::TRIANGLES, decomp->mBaseHullMesh.mPositions, decomp->mBaseHullMesh.mNormals);
 		}
 		else
 		{
 			gMeshRepo.buildPhysicsMesh(*decomp);
-			gGL.color3f(0,1,1);
+			gGL.diffuseColor4f(0,1,1,1);
 			drawBoxOutline(center, size);
 		}
 
 	}
 	else
 	{
-		gGL.color3f(1,0,1);
+		gGL.diffuseColor3f(1,0,1);
 		drawBoxOutline(center, size);
 	}
 }
 
 void render_hull(LLModel::PhysicsMesh& mesh, const LLColor4& color, const LLColor4& line_color)
 {
-	glColor4fv(color.mV);
+	gGL.diffuseColor4fv(color.mV);
 	LLVertexBuffer::drawArrays(LLRender::TRIANGLES, mesh.mPositions, mesh.mNormals);
 	LLGLEnable offset(GL_POLYGON_OFFSET_LINE);
 	glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 	glPolygonOffset(3.f, 3.f);
 	glLineWidth(3.f);
-	glColor4fv(line_color.mV);
+	gGL.diffuseColor4fv(line_color.mV);
 	LLVertexBuffer::drawArrays(LLRender::TRIANGLES, mesh.mPositions, mesh.mNormals);
 	glLineWidth(1.f);
 	glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
@@ -3130,7 +3195,7 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
 	LLVector3 size(0.25f,0.25f,0.25f);
 
 	gGL.pushMatrix();
-	glMultMatrixf((F32*) volume->getRelativeXform().mMatrix);
+	gGL.multMatrix((F32*) volume->getRelativeXform().mMatrix);
 		
 	if (type == LLPhysicsShapeBuilderUtil::PhysicsShapeSpecification::USER_MESH)
 	{
@@ -3158,11 +3223,11 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
 			else if (!decomp->mPhysicsShapeMesh.empty())
 			{ 
 				//decomp has physics mesh, render that mesh
-				glColor4fv(color.mV);
+				gGL.diffuseColor4fv(color.mV);
 				LLVertexBuffer::drawArrays(LLRender::TRIANGLES, decomp->mPhysicsShapeMesh.mPositions, decomp->mPhysicsShapeMesh.mNormals);
 								
 				glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
-				glColor4fv(line_color.mV);
+				gGL.diffuseColor4fv(line_color.mV);
 				LLVertexBuffer::drawArrays(LLRender::TRIANGLES, decomp->mPhysicsShapeMesh.mPositions, decomp->mPhysicsShapeMesh.mNormals);
 				glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 			}
@@ -3179,7 +3244,7 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
 		}
 		else
 		{	
-			gGL.color3f(1,1,0);
+			gGL.diffuseColor3f(1,1,0);
 			drawBoxOutline(center, size);
 		}
 	}
@@ -3190,7 +3255,6 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
 		{
 			renderMeshBaseHull(volume, data_mask, color, line_color);
 		}
-#if LL_WINDOWS 
 		else
 		{
 			LLVolumeParams volume_params = volume->getVolume()->getParams();
@@ -3288,27 +3352,26 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
 			
 				glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 				
-				glColor4fv(line_color.mV);
+				gGL.diffuseColor4fv(line_color.mV);
 				LLVertexBuffer::unbind();
 
 				llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShader != 0);
-
-				glVertexPointer(3, GL_FLOAT, 16, phys_volume->mHullPoints);
-				glDrawElements(GL_TRIANGLES, phys_volume->mNumHullIndices, GL_UNSIGNED_SHORT, phys_volume->mHullIndices);
+							
+				LLVertexBuffer::drawElements(LLRender::TRIANGLES, phys_volume->mHullPoints, NULL, phys_volume->mNumHullIndices, phys_volume->mHullIndices);
 				
-				glColor4fv(color.mV);
+				gGL.diffuseColor4fv(color.mV);
 				glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
-				glDrawElements(GL_TRIANGLES, phys_volume->mNumHullIndices, GL_UNSIGNED_SHORT, phys_volume->mHullIndices);
+				LLVertexBuffer::drawElements(LLRender::TRIANGLES, phys_volume->mHullPoints, NULL, phys_volume->mNumHullIndices, phys_volume->mHullIndices);
+				
 			}
 			else
 			{
-				gGL.color3f(1,0,1);
+				gGL.diffuseColor4f(1,0,1,1);
 				drawBoxOutline(center, size);
 			}
 
 			LLPrimitive::sVolumeManager->unrefVolume(phys_volume);
 		}
-#endif //LL_WINDOWS			
 	}
 	else if (type == LLPhysicsShapeBuilderUtil::PhysicsShapeSpecification::BOX)
 	{
@@ -3317,12 +3380,12 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
 		LLVector3 vscale = volume->getScale()*2.f;
 		scale.set(scale[0]/vscale[0], scale[1]/vscale[1], scale[2]/vscale[2]);
 		
-		gGL.color4fv(color.mV);
+		gGL.diffuseColor4fv(color.mV);
 		drawBox(center, scale);
 	}
 	else if	(type == LLPhysicsShapeBuilderUtil::PhysicsShapeSpecification::SPHERE)
 	{
-		LLVolumeParams volume_params;
+		/*LLVolumeParams volume_params;
 		volume_params.setType( LL_PCODE_PROFILE_CIRCLE_HALF, LL_PCODE_PATH_CIRCLE );
 		volume_params.setBeginAndEndS( 0.f, 1.f );
 		volume_params.setBeginAndEndT( 0.f, 1.f );
@@ -3330,9 +3393,9 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
 		volume_params.setShear	( 0, 0 );
 		LLVolume* sphere = LLPrimitive::sVolumeManager->refVolume(volume_params, 3);
 		
-		glColor4fv(color.mV);
+		gGL.diffuseColor4fv(color.mV);
 		pushVerts(sphere);
-		LLPrimitive::sVolumeManager->unrefVolume(sphere);
+		LLPrimitive::sVolumeManager->unrefVolume(sphere);*/
 	}
 	else if (type == LLPhysicsShapeBuilderUtil::PhysicsShapeSpecification::CYLINDER)
 	{
@@ -3344,7 +3407,7 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
 		volume_params.setShear	( 0, 0 );
 		LLVolume* cylinder = LLPrimitive::sVolumeManager->refVolume(volume_params, 3);
 		
-		glColor4fv(color.mV);
+		gGL.diffuseColor4fv(color.mV);
 		pushVerts(cylinder);
 		LLPrimitive::sVolumeManager->unrefVolume(cylinder);
 	}
@@ -3356,10 +3419,10 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
 		LLVolume* phys_volume = LLPrimitive::sVolumeManager->refVolume(volume_params, detail);
 		glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 		
-		glColor4fv(line_color.mV);
+		gGL.diffuseColor4fv(line_color.mV);
 		pushVerts(phys_volume);
 		
-		glColor4fv(color.mV);
+		gGL.diffuseColor4fv(color.mV);
 		glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 		pushVerts(phys_volume);
 		LLPrimitive::sVolumeManager->unrefVolume(phys_volume);
@@ -3377,16 +3440,17 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
 			llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShader != 0);
 			LLVertexBuffer::unbind();
 			glVertexPointer(3, GL_FLOAT, 16, phys_volume->mHullPoints);
-			glColor4fv(line_color.mV);
+			gGL.diffuseColor4fv(line_color.mV);
+			gGL.syncMatrices();
 			glDrawElements(GL_TRIANGLES, phys_volume->mNumHullIndices, GL_UNSIGNED_SHORT, phys_volume->mHullIndices);
 			
-			glColor4fv(color.mV);
+			gGL.diffuseColor4fv(color.mV);
 			glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 			glDrawElements(GL_TRIANGLES, phys_volume->mNumHullIndices, GL_UNSIGNED_SHORT, phys_volume->mHullIndices);			
 		}
 		else
 		{
-			gGL.color3f(1,0,1);
+			gGL.diffuseColor3f(1,0,1);
 			drawBoxOutline(center, size);
 			gMeshRepo.buildHull(volume_params, detail);
 		}
@@ -3402,15 +3466,6 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume)
 	}
 
 	gGL.popMatrix();
-
-	/*{ //analytical shape, just push visual rep.
-		glColor3fv(color.mV);
-		glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
-		pushVerts(drawable, data_mask);
-		glColor4fv(color.mV);
-		glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
-		pushVerts(drawable, data_mask);
-	}*/
 }
 
 void renderPhysicsShapes(LLSpatialGroup* group)
@@ -3425,7 +3480,7 @@ void renderPhysicsShapes(LLSpatialGroup* group)
 			{
 				gGL.pushMatrix();
 				LLVector3 trans = drawable->getRegion()->getOriginAgent();
-				glTranslatef(trans.mV[0], trans.mV[1], trans.mV[2]);
+				gGL.translatef(trans.mV[0], trans.mV[1], trans.mV[2]);
 				renderPhysicsShape(drawable, volume);
 				gGL.popMatrix();
 			}
@@ -3449,12 +3504,12 @@ void renderPhysicsShapes(LLSpatialGroup* group)
 						glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 
 						buff->setBuffer(LLVertexBuffer::MAP_VERTEX);
-						glColor3f(0.2f, 0.5f, 0.3f);
-						buff->draw(LLRender::TRIANGLES, buff->getRequestedIndices(), 0);
+						gGL.diffuseColor3f(0.2f, 0.5f, 0.3f);
+						buff->draw(LLRender::TRIANGLES, buff->getNumIndices(), 0);
 									
-						glColor3f(0.2f, 1.f, 0.3f);
+						gGL.diffuseColor3f(0.2f, 1.f, 0.3f);
 						glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
-						buff->draw(LLRender::TRIANGLES, buff->getRequestedIndices(), 0);
+						buff->draw(LLRender::TRIANGLES, buff->getNumIndices(), 0);
 					}
 				}
 			}
@@ -3491,11 +3546,11 @@ void renderTexturePriority(LLDrawable* drawable)
 			F32 t = vsize/sLastMaxTexPriority;
 			
 			LLVector4 col = lerp(cold, hot, t);
-			gGL.color4fv(col.mV);
+			gGL.diffuseColor4fv(col.mV);
 		}
 		//else
 		//{
-		//	gGL.color4f(1,0,1,1);
+		//	gGL.diffuseColor4f(1,0,1,1);
 		//}
 		
 		LLVector4a center;
@@ -3514,7 +3569,7 @@ void renderTexturePriority(LLDrawable* drawable)
 			LLVector4 col = lerp(boost_cold, boost_hot, t);
 			LLGLEnable blend_on(GL_BLEND);
 			gGL.blendFunc(GL_SRC_ALPHA, GL_ONE);
-			gGL.color4fv(col.mV);
+			gGL.diffuseColor4fv(col.mV);
 			drawBox(center, size);
 			gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 		}*/
@@ -3527,7 +3582,7 @@ void renderPoints(LLDrawable* drawablep)
 	if (drawablep->getNumFaces())
 	{
 		gGL.begin(LLRender::POINTS);
-		gGL.color3f(1,1,1);
+		gGL.diffuseColor3f(1,1,1);
 		for (S32 i = 0; i < drawablep->getNumFaces(); i++)
 		{
 			gGL.vertex3fv(drawablep->getFace(i)->mCenterLocal.mV);
@@ -3544,7 +3599,7 @@ void renderTextureAnim(LLDrawInfo* params)
 	}
 	
 	LLGLEnable blend(GL_BLEND);
-	glColor4f(1,1,0,0.5f);
+	gGL.diffuseColor4f(1,1,0,0.5f);
 	pushVerts(params, LLVertexBuffer::MAP_VERTEX);
 }
 
@@ -3552,7 +3607,7 @@ void renderBatchSize(LLDrawInfo* params)
 {
 	LLGLEnable offset(GL_POLYGON_OFFSET_FILL);
 	glPolygonOffset(-1.f, 1.f);
-	glColor3ubv((GLubyte*) &(params->mDebugColor));
+	gGL.diffuseColor4ubv((GLubyte*) &(params->mDebugColor));
 	pushVerts(params, LLVertexBuffer::MAP_VERTEX);
 }
 
@@ -3570,22 +3625,22 @@ void renderShadowFrusta(LLDrawInfo* params)
 
 	if (gPipeline.mShadowCamera[4].AABBInFrustum(center, size))
 	{
-		glColor3f(1,0,0);
+		gGL.diffuseColor3f(1,0,0);
 		pushVerts(params, LLVertexBuffer::MAP_VERTEX);
 	}
 	if (gPipeline.mShadowCamera[5].AABBInFrustum(center, size))
 	{
-		glColor3f(0,1,0);
+		gGL.diffuseColor3f(0,1,0);
 		pushVerts(params, LLVertexBuffer::MAP_VERTEX);
 	}
 	if (gPipeline.mShadowCamera[6].AABBInFrustum(center, size))
 	{
-		glColor3f(0,0,1);
+		gGL.diffuseColor3f(0,0,1);
 		pushVerts(params, LLVertexBuffer::MAP_VERTEX);
 	}
 	if (gPipeline.mShadowCamera[7].AABBInFrustum(center, size))
 	{
-		glColor3f(1,0,1);
+		gGL.diffuseColor3f(1,0,1);
 		pushVerts(params, LLVertexBuffer::MAP_VERTEX);
 	}
 
@@ -3603,7 +3658,7 @@ void renderLights(LLDrawable* drawablep)
 	if (drawablep->getNumFaces())
 	{
 		LLGLEnable blend(GL_BLEND);
-		glColor4f(0,1,1,0.5f);
+		gGL.diffuseColor4f(0,1,1,0.5f);
 
 		for (S32 i = 0; i < drawablep->getNumFaces(); i++)
 		{
@@ -3621,11 +3676,11 @@ void renderLights(LLDrawable* drawablep)
 
 		{
 			LLGLDepthTest depth(GL_FALSE, GL_TRUE);
-			gGL.color4f(1,1,1,1);
+			gGL.diffuseColor4f(1,1,1,1);
 			drawBoxOutline(pos, size);
 		}
 
-		gGL.color4f(1,1,0,1);
+		gGL.diffuseColor4f(1,1,0,1);
 		F32 rad = drawablep->getVOVolume()->getLightRadius();
 		drawBoxOutline(pos, LLVector4a(rad));
 	}
@@ -3650,13 +3705,13 @@ class LLRenderOctreeRaycast : public LLOctreeTriangleRayIntersect
 		
 		if (branch->getData().empty())
 		{
-			gGL.color3f(1.f,0.2f,0.f);
+			gGL.diffuseColor3f(1.f,0.2f,0.f);
 			center.set(branch->getCenter().getF32ptr());
 			size.set(branch->getSize().getF32ptr());
 		}
 		else
 		{
-			gGL.color3f(0.75f, 1.f, 0.f);
+			gGL.diffuseColor3f(0.75f, 1.f, 0.f);
 			center.set(vl->mBounds[0].getF32ptr());
 			size.set(vl->mBounds[1].getF32ptr());
 		}
@@ -3669,11 +3724,11 @@ class LLRenderOctreeRaycast : public LLOctreeTriangleRayIntersect
 
 			if (i == 1)
 			{
-				gGL.color4f(0,1,1,0.5f);
+				gGL.diffuseColor4f(0,1,1,0.5f);
 			}
 			else
 			{
-				gGL.color4f(0,0.5f,0.5f, 0.25f);
+				gGL.diffuseColor4f(0,0.5f,0.5f, 0.25f);
 				drawBoxOutline(center, size);
 			}
 			
@@ -3710,7 +3765,7 @@ void renderRaycast(LLDrawable* drawablep)
 	if (drawablep->getNumFaces())
 	{
 		LLGLEnable blend(GL_BLEND);
-		gGL.color4f(0,1,1,0.5f);
+		gGL.diffuseColor4f(0,1,1,0.5f);
 
 		if (drawablep->getVOVolume())
 		{
@@ -3735,14 +3790,10 @@ void renderRaycast(LLDrawable* drawablep)
 				for (S32 i = 0; i < volume->getNumVolumeFaces(); ++i)
 				{
 					const LLVolumeFace& face = volume->getVolumeFace(i);
-					if (!face.mOctree)
-					{
-						((LLVolumeFace*) &face)->createOctree(); 
-					}
-
+					
 					gGL.pushMatrix();
-					glTranslatef(trans.mV[0], trans.mV[1], trans.mV[2]);					
-					glMultMatrixf((F32*) vobj->getRelativeXform().mMatrix);
+					gGL.translatef(trans.mV[0], trans.mV[1], trans.mV[2]);					
+					gGL.multMatrix((F32*) vobj->getRelativeXform().mMatrix);
 
 					LLVector3 start, end;
 					if (transform)
@@ -3762,21 +3813,32 @@ void renderRaycast(LLDrawable* drawablep)
 					LLVector4a dir;
 					dir.setSub(enda, starta);
 
-					F32 t = 1.f;
-
-					LLRenderOctreeRaycast render(starta, dir, &t);
 					gGL.flush();
 					glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);				
 
 					{
 						//render face positions
 						LLVertexBuffer::unbind();
-						glColor4f(0,1,1,0.5f);
+						gGL.diffuseColor4f(0,1,1,0.5f);
 						glVertexPointer(3, GL_FLOAT, sizeof(LLVector4a), face.mPositions);
+						gGL.syncMatrices();
 						glDrawElements(GL_TRIANGLES, face.mNumIndices, GL_UNSIGNED_SHORT, face.mIndices);
 					}
-						
-					render.traverse(face.mOctree);
+					
+					if (!volume->isUnique())
+					{
+						F32 t = 1.f;
+
+						if (!face.mOctree)
+						{
+							((LLVolumeFace*) &face)->createOctree(); 
+						}
+
+						LLRenderOctreeRaycast render(starta, dir, &t);
+					
+						render.traverse(face.mOctree);
+					}
+
 					gGL.popMatrix();		
 					glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 				}
@@ -3795,23 +3857,23 @@ void renderRaycast(LLDrawable* drawablep)
 		if (drawablep->getVObj() == gDebugRaycastObject)
 		{
 			// draw intersection point
-			glPushMatrix();
-			glLoadMatrixd(gGLModelView);
+			gGL.pushMatrix();
+			gGL.loadMatrix(gGLModelView);
 			LLVector3 translate = gDebugRaycastIntersection;
-			glTranslatef(translate.mV[0], translate.mV[1], translate.mV[2]);
+			gGL.translatef(translate.mV[0], translate.mV[1], translate.mV[2]);
 			LLCoordFrame orient;
 			orient.lookDir(gDebugRaycastNormal, gDebugRaycastBinormal);
 			LLMatrix4 rotation;
 			orient.getRotMatrixToParent(rotation);
-			glMultMatrixf((float*)rotation.mMatrix);
+			gGL.multMatrix((float*)rotation.mMatrix);
 			
-			gGL.color4f(1,0,0,0.5f);
+			gGL.diffuseColor4f(1,0,0,0.5f);
 			drawBox(LLVector3(0, 0, 0), LLVector3(0.1f, 0.022f, 0.022f));
-			gGL.color4f(0,1,0,0.5f);
+			gGL.diffuseColor4f(0,1,0,0.5f);
 			drawBox(LLVector3(0, 0, 0), LLVector3(0.021f, 0.1f, 0.021f));
-			gGL.color4f(0,0,1,0.5f);
+			gGL.diffuseColor4f(0,0,1,0.5f);
 			drawBox(LLVector3(0, 0, 0), LLVector3(0.02f, 0.02f, 0.1f));
-			glPopMatrix();
+			gGL.popMatrix();
 
 			// draw bounding box of prim
 			const LLVector4a* ext = drawablep->getSpatialExtents();
@@ -3824,7 +3886,7 @@ void renderRaycast(LLDrawable* drawablep)
 			size.mul(0.5f);
 
 			LLGLDepthTest depth(GL_FALSE, GL_TRUE);
-			gGL.color4f(0,0.5f,0.5f,1);
+			gGL.diffuseColor4f(0,0.5f,0.5f,1);
 			drawBoxOutline(pos, size);		
 		}
 	}
@@ -3886,14 +3948,14 @@ class LLOctreeRenderNonOccluded : public LLOctreeTraveler<LLDrawable>
 				group->rebuildMesh();
 
 				gGL.flush();
-				glPushMatrix();
+				gGL.pushMatrix();
 				gGLLastMatrix = NULL;
-				glLoadMatrixd(gGLModelView);
+				gGL.loadMatrix(gGLModelView);
 				renderVisibility(group, mCamera);
 				stop_glerror();
 				gGLLastMatrix = NULL;
-				glPopMatrix();
-				gGL.color4f(1,1,1,1);
+				gGL.popMatrix();
+				gGL.diffuseColor4f(1,1,1,1);
 			}
 		}
 	}
@@ -3917,7 +3979,7 @@ class LLOctreeRenderNonOccluded : public LLOctreeTraveler<LLDrawable>
 		{
 			if (!group->getData().empty())
 			{
-				gGL.color3f(0,0,1);
+				gGL.diffuseColor3f(0,0,1);
 				drawBoxOutline(group->mObjectBounds[0],
 								group->mObjectBounds[1]);
 			}
@@ -3926,7 +3988,7 @@ class LLOctreeRenderNonOccluded : public LLOctreeTraveler<LLDrawable>
 		for (LLSpatialGroup::OctreeNode::const_element_iter i = branch->getData().begin(); i != branch->getData().end(); ++i)
 		{
 			LLDrawable* drawable = *i;
-						
+					
 			if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_BBOXES))
 			{
 				renderBoundingBox(drawable);			
@@ -3941,7 +4003,7 @@ class LLOctreeRenderNonOccluded : public LLOctreeTraveler<LLDrawable>
 			{
 				if (drawable->isState(LLDrawable::IN_REBUILD_Q2))
 				{
-					gGL.color4f(0.6f, 0.6f, 0.1f, 1.f);
+					gGL.diffuseColor4f(0.6f, 0.6f, 0.1f, 1.f);
 					const LLVector4a* ext = drawable->getSpatialExtents();
 					LLVector4a center;
 					center.setAdd(ext[0], ext[1]);
@@ -4234,6 +4296,11 @@ void LLSpatialPartition::renderDebug()
 		return;
 	}
 	
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gDebugProgram.bind();
+	}
+
 	if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_TEXTURE_PRIORITY))
 	{
 		//sLastMaxTexPriority = lerp(sLastMaxTexPriority, sCurMaxTexPriority, gFrameIntervalSeconds);
@@ -4262,11 +4329,16 @@ void LLSpatialPartition::renderDebug()
 
 	LLOctreeRenderNonOccluded render_debug(camera);
 	render_debug.traverse(mOctree);
+
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gDebugProgram.unbind();
+	}
 }
 
 void LLSpatialGroup::drawObjectBox(LLColor4 col)
 {
-	gGL.color4fv(col.mV);
+	gGL.diffuseColor4fv(col.mV);
 	LLVector4a size;
 	size = mObjectBounds[1];
 	size.mul(1.01f);
@@ -4371,7 +4443,7 @@ class LLOctreeIntersect : public LLSpatialGroup::OctreeTraveler
 		LLVector3 local_start = mStart;
 		LLVector3 local_end = mEnd;
 
-		if (!gPipeline.hasRenderType(drawable->getRenderType()) || !drawable->isVisible())
+		if (!drawable || !gPipeline.hasRenderType(drawable->getRenderType()) || !drawable->isVisible())
 		{
 			return false;
 		}
diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h
index 11955540c62a870493bac0d2db70743db5cb31bc..6c14ecf4521ec5a1597d105e008533583e3bd7fc 100644
--- a/indra/newview/llspatialpartition.h
+++ b/indra/newview/llspatialpartition.h
@@ -93,7 +93,6 @@ class LLDrawInfo : public LLRefCount
 	LLPointer<LLViewerTexture>     mTexture;
 	std::vector<LLPointer<LLViewerTexture> > mTextureList;
 
-	LLColor4U mGlowColor;
 	S32 mDebugColor;
 	const LLMatrix4* mTextureMatrix;
 	const LLMatrix4* mModelMatrix;
@@ -397,6 +396,8 @@ class LLSpatialGroup : public LLOctreeListener<LLDrawable>
 
 	U32 mState;
 	U32 mOcclusionState[LLViewerCamera::NUM_CAMERAS];
+	U32 mOcclusionIssued[LLViewerCamera::NUM_CAMERAS];
+
 	S32 mLODHash;
 	static S32 sLODSeed;
 
@@ -404,6 +405,9 @@ class LLSpatialGroup : public LLOctreeListener<LLDrawable>
 	bridge_list_t mBridgeList;
 	buffer_map_t mBufferMap; //used by volume buffers to attempt to reuse vertex buffers
 
+	U32 mGeometryBytes; //used by volumes to track how many bytes of geometry data are in this node
+	F32 mSurfaceArea; //used by volumes to track estimated surface area of geometry in this node
+
 	F32 mBuilt;
 	OctreeNode* mOctreeNode;
 	LLSpatialPartition* mSpatialPartition;
@@ -473,8 +477,8 @@ class LLSpatialPartition: public LLGeometryManager
 	BOOL isVisible(const LLVector3& v);
 	bool isHUDPartition() ;
 	
-	virtual LLSpatialBridge* asBridge() { return NULL; }
-	virtual BOOL isBridge() { return asBridge() != NULL; }
+	LLSpatialBridge* asBridge() { return mBridge; }
+	BOOL isBridge() { return asBridge() != NULL; }
 
 	void renderPhysicsShapes();
 	void renderDebug();
@@ -486,6 +490,9 @@ class LLSpatialPartition: public LLGeometryManager
 
 public:
 	LLSpatialGroup::OctreeNode* mOctree;
+	LLSpatialBridge* mBridge; // NULL for non-LLSpatialBridge instances, otherwise, mBridge == this
+							// use a pointer instead of making "isBridge" and "asBridge" virtual so it's safe
+							// to call asBridge() from the destructor
 	BOOL mOcclusionEnabled; // if TRUE, occlusion culling is performed
 	BOOL mInfiniteFarClip; // if TRUE, frustum culling ignores far clip plane
 	U32 mBufferUsage;
@@ -510,8 +517,9 @@ class LLSpatialBridge : public LLDrawable, public LLSpatialPartition
 	
 	LLSpatialBridge(LLDrawable* root, BOOL render_by_group, U32 data_mask);
 	
-	virtual BOOL isSpatialBridge() const		{ return TRUE; }
+	void destroyTree();
 
+	virtual BOOL isSpatialBridge() const		{ return TRUE; }
 	virtual void updateSpatialExtents();
 	virtual void updateBinRadius();
 	virtual void setVisible(LLCamera& camera_in, std::vector<LLDrawable*>* results = NULL, BOOL for_select = FALSE);
@@ -522,11 +530,12 @@ class LLSpatialBridge : public LLDrawable, public LLSpatialPartition
 	virtual void shiftPos(const LLVector4a& vec);
 	virtual void cleanupReferences();
 	virtual LLSpatialPartition* asPartition()		{ return this; }
-	virtual LLSpatialBridge* asBridge()				{ return this; }
-	
+		
 	virtual LLCamera transformCamera(LLCamera& camera);
 	
 	LLDrawable* mDrawable;
+	LLPointer<LLVOAvatar> mAvatar;
+
 };
 
 class LLCullResult 
diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp
deleted file mode 100644
index bbe573c546e9764579184c2d511943271b7989af..0000000000000000000000000000000000000000
--- a/indra/newview/llspeakbutton.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/** 
-* @file llspeakbutton.cpp
-* @brief LLSpeakButton class 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 "llviewerprecompiledheaders.h" // must be first include
-
-#include "llbutton.h"
-#include "llfloaterreg.h"
-
-#include "llagent.h"
-#include "llbottomtray.h"
-#include "llcallfloater.h"
-#include "lloutputmonitorctrl.h"
-#include "lltransientfloatermgr.h"
-
-#include "llspeakbutton.h"
-
-#include "llbottomtray.h"
-#include "llfirstuse.h"
-
-static LLDefaultChildRegistry::Register<LLSpeakButton> t1("talk_button");
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-LLSpeakButton::Params::Params()
-:	speak_button("speak_button"),
-	show_button("show_button"),
-	monitor("monitor")
-{}
-
-LLSpeakButton::LLSpeakButton(const Params& p)
-: LLUICtrl(p)
-, mOutputMonitor(NULL)
-, mSpeakBtn(NULL)
-, mShowBtn(NULL)
-{
-	LLRect rect = p.rect();
-	LLRect speak_rect(0, rect.getHeight(), rect.getWidth(), 0);
-	LLRect show_rect = p.show_button.rect();
-	show_rect.set(0, rect.getHeight(), show_rect.getWidth(), 0);
-
-	speak_rect.mRight -= show_rect.getWidth();
-	show_rect.mLeft = speak_rect.getWidth();
-	show_rect.mRight = rect.getWidth();
-
-	LLButton::Params speak_params = p.speak_button;
-	speak_params.rect(speak_rect);
-	mSpeakBtn = LLUICtrlFactory::create<LLButton>(speak_params);
-	addChild(mSpeakBtn);
-	LLTransientFloaterMgr::getInstance()->addControlView(mSpeakBtn);
-
-	mSpeakBtn->setMouseDownCallback(boost::bind(&LLSpeakButton::onMouseDown_SpeakBtn, this));
-	mSpeakBtn->setMouseUpCallback(boost::bind(&LLSpeakButton::onMouseUp_SpeakBtn, this));
-	mSpeakBtn->setToggleState(FALSE);
-
-	LLBottomtrayButton::Params show_params = p.show_button;
-	show_params.rect(show_rect);
-	mShowBtn = LLUICtrlFactory::create<LLBottomtrayButton>(show_params);
-	addChild(mShowBtn);
-	LLTransientFloaterMgr::getInstance()->addControlView(mShowBtn);
-
-// 	mShowBtn->setClickedCallback(boost::bind(&LLSpeakButton::onClick_ShowBtn, this));
-// 	mShowBtn->setToggleState(FALSE);
-
-	static const S32 MONITOR_RIGHT_PAD = 2;
-
-	LLRect monitor_rect = p.monitor.rect();
-	S32 monitor_height = monitor_rect.getHeight();
-	monitor_rect.mLeft = speak_rect.getWidth() - monitor_rect.getWidth() - MONITOR_RIGHT_PAD;
-	monitor_rect.mRight = speak_rect.getWidth() - MONITOR_RIGHT_PAD;
-	monitor_rect.mBottom = (rect.getHeight() / 2) - (monitor_height / 2);
-	monitor_rect.mTop = monitor_rect.mBottom + monitor_height;
-
-	LLOutputMonitorCtrl::Params monitor_params = p.monitor;
-	monitor_params.draw_border(false);
-	monitor_params.rect(monitor_rect);
-	monitor_params.auto_update(true);
-	monitor_params.speaker_id(gAgentID);
-	mOutputMonitor = LLUICtrlFactory::create<LLOutputMonitorCtrl>(monitor_params);
-	mSpeakBtn->addChild(mOutputMonitor);
-
-	// never show "muted" because you can't mute yourself
-	mOutputMonitor->setIsMuted(false);
-	mOutputMonitor->setIsAgentControl(true);
-
-	//*TODO find a better place to do that
-	LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLCallFloater::sOnCurrentChannelChanged, _1), true);
-}
-
-LLSpeakButton::~LLSpeakButton()
-{
-	if(LLTransientFloaterMgr::instanceExists())
-	{
-		LLTransientFloaterMgr::getInstance()->removeControlView(mSpeakBtn);
-		LLTransientFloaterMgr::getInstance()->removeControlView(mShowBtn);
-	}
-}
-
-void LLSpeakButton::setSpeakToolTip(const std::string& msg)
-{
-	mSpeakBtn->setToolTip(msg);
-}
-
-void LLSpeakButton::setShowToolTip(const std::string& msg)
-{
-	mShowBtn->setToolTip(msg);
-}
-
-void LLSpeakButton::setLabelVisible(bool visible)
-{
-	static std::string label_selected = mSpeakBtn->getLabelSelected();
-	static std::string label_unselected = mSpeakBtn->getLabelUnselected();
-
-	if (visible)
-	{
-		mSpeakBtn->setLabelSelected(label_selected);
-		mSpeakBtn->setLabelUnselected(label_unselected);
-	}
-	else
-	{
-		static LLStringExplicit empty_string("");
-		mSpeakBtn->setLabelSelected(empty_string);
-		mSpeakBtn->setLabelUnselected(empty_string);
-	}
-}
-
-//////////////////////////////////////////////////////////////////////////
-/// PROTECTED SECTION
-//////////////////////////////////////////////////////////////////////////
-void LLSpeakButton::onMouseDown_SpeakBtn()
-{
-	bool down = true;
-	LLVoiceClient::getInstance()->inputUserControlState(down); // this method knows/care about whether this translates into a toggle-to-talk or down-to-talk
-	LLFirstUse::speak(false);
-}
-void LLSpeakButton::onMouseUp_SpeakBtn()
-{
-	bool down = false;
-	LLVoiceClient::getInstance()->inputUserControlState(down);
-}
-
diff --git a/indra/newview/llspeakbutton.h b/indra/newview/llspeakbutton.h
deleted file mode 100644
index 7db01112ef09dedc435f4c703680f26c2e694494..0000000000000000000000000000000000000000
--- a/indra/newview/llspeakbutton.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/** 
-* @file llspeakbutton.h
-* @brief LLSpeakButton class header file
-*
-* $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_LLSPEAKBUTTON_H
-#define LL_LLSPEAKBUTTON_H
-
-#include "llinitparam.h"
-#include "lluictrl.h"
-
-class LLCallFloater;
-class LLButton;
-class LLOutputMonitorCtrl;
-class LLBottomtrayButton;
-
-/*
- * Button displaying voice chat status. Displays voice chat options when
- * clicked.
-*/
-class LLSpeakButton : public LLUICtrl
-{
-public:
-
-	struct Params :	public LLInitParam::Block<Params, LLUICtrl::Params>
-	{
-		Optional<LLButton::Params> speak_button;
-		Optional<LLBottomtrayButton::Params> show_button;
-		Optional<LLOutputMonitorCtrl::Params> monitor;
-
-		Params();
-	};
-
-	/*virtual*/ ~LLSpeakButton();
-	
-	// *HACK: Need to put tooltips in a translatable location,
-	// the panel that contains this button.
-	void setSpeakToolTip(const std::string& msg);
-	void setShowToolTip(const std::string& msg);
-
-	/**
-	 * Sets visibility of speak button's label according to passed parameter.
-	 *
-	 * It removes label/selected label if "visible" is false and restores otherwise.
-	 *
-	 * @param visible if true - show label and selected label.
-	 * 
-	 * @see mSpeakBtn
-	 * @see LLBottomTray::processShrinkButtons()
-	 */
-	void setLabelVisible(bool visible);
-
-protected:
-	friend class LLUICtrlFactory;
-	LLSpeakButton(const Params& p);
-
-	void onMouseDown_SpeakBtn();
-	void onMouseUp_SpeakBtn();
-
-private:
-	LLButton*	mSpeakBtn;
-	LLBottomtrayButton*	mShowBtn;
-	LLHandle<LLFloater> mPrivateCallPanel;
-	LLOutputMonitorCtrl* mOutputMonitor;
-};
-
-#endif // LL_LLSPEAKBUTTON_H
diff --git a/indra/newview/llsprite.cpp b/indra/newview/llsprite.cpp
index 4bde2dfcab55160ec92b88633588ae6dec55c6f5..c3eb70f850c2a7622d5a2423b7e32908a2a850a9 100644
--- a/indra/newview/llsprite.cpp
+++ b/indra/newview/llsprite.cpp
@@ -243,7 +243,7 @@ void LLSprite::updateFace(LLFace &face)
 		*indicesp++ = 3 + index_offset;
 	}
 
-	face.getVertexBuffer()->setBuffer(0);
+	face.getVertexBuffer()->flush();
 	face.mCenterAgent = mPosition;
 }
 
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 749acea6c106bc0bb50913af983298865a99ddd3..3923b4510a7b8b1e74401af8545a8baf2e801542 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -131,7 +131,6 @@
 #include "llsecondlifeurls.h"
 #include "llselectmgr.h"
 #include "llsky.h"
-#include "llsidetray.h"
 #include "llstatview.h"
 #include "llstatusbar.h"		// sendMoneyBalanceRequest(), owns L$ balance
 #include "llsurface.h"
@@ -191,6 +190,7 @@
 #include "lllogin.h"
 #include "llevents.h"
 #include "llstartuplistener.h"
+#include "lltoolbarview.h"
 
 #if LL_WINDOWS
 #include "lldxhardware.h"
@@ -367,7 +367,9 @@ bool idle_startup()
 		//
 		// Initialize stuff that doesn't need data from simulators
 		//
-
+		std::string lastGPU = gSavedSettings.getString("LastGPUString");
+		std::string thisGPU = LLFeatureManager::getInstance()->getGPUString();
+		
 		if (LLFeatureManager::getInstance()->isSafe())
 		{
 			LLNotificationsUtil::add("DisplaySetToSafe");
@@ -375,12 +377,14 @@ bool idle_startup()
 		else if ((gSavedSettings.getS32("LastFeatureVersion") < LLFeatureManager::getInstance()->getVersion()) &&
 				 (gSavedSettings.getS32("LastFeatureVersion") != 0))
 		{
-			LLNotificationsUtil::add("DisplaySetToRecommended");
+			LLNotificationsUtil::add("DisplaySetToRecommendedFeatureChange");
 		}
-		else if ((gSavedSettings.getS32("LastGPUClass") != LLFeatureManager::getInstance()->getGPUClass()) &&
-				 (gSavedSettings.getS32("LastGPUClass") != -1))
+		else if ( ! lastGPU.empty() && (lastGPU != thisGPU))
 		{
-			LLNotificationsUtil::add("DisplaySetToRecommended");
+			LLSD subs;
+			subs["LAST_GPU"] = lastGPU;
+			subs["THIS_GPU"] = thisGPU;
+			LLNotificationsUtil::add("DisplaySetToRecommendedGPUChange", subs);
 		}
 		else if (!gViewerWindow->getInitAlert().empty())
 		{
@@ -396,7 +400,7 @@ bool idle_startup()
 		LLStartUp::startLLProxy();
 
 		gSavedSettings.setS32("LastFeatureVersion", LLFeatureManager::getInstance()->getVersion());
-		gSavedSettings.setS32("LastGPUClass", LLFeatureManager::getInstance()->getGPUClass());
+		gSavedSettings.setString("LastGPUString", thisGPU);
 
 		// load dynamic GPU/feature tables from website (S3)
 		LLFeatureManager::getInstance()->fetchHTTPTables();
@@ -733,8 +737,11 @@ bool idle_startup()
 		// this startup phase more than once.
 		if (gLoginMenuBarView == NULL)
 		{
-		initialize_edit_menu();
+			display_startup();
+			initialize_edit_menu();
+			display_startup();
 			init_menus();
+			display_startup();
 		}
 
 		if (show_connect_box)
@@ -743,23 +750,28 @@ bool idle_startup()
 			// NOTE: Hits "Attempted getFields with no login view shown" warning, since we don't
 			// show the login view until login_show() is called below.  
 			if (gUserCredential.isNull())                                                                          
-			{                                                                                                      
+			{                                                  
+				display_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);
-
+			display_startup();
 			// Show the login dialog
 			login_show();
+			display_startup();
 			// connect dialog is already shown, so fill in the names
 			if (gUserCredential.notNull())                                                                         
 			{                                                                                                      
 				LLPanelLogin::setFields( gUserCredential, gRememberPassword);                                  
 			}     
+			display_startup();
 			LLPanelLogin::giveFocus();
 
 			LLStartUp::setStartupState( STATE_LOGIN_WAIT );		// Wait for user input
@@ -770,14 +782,19 @@ bool idle_startup()
 			LLStartUp::setStartupState( STATE_LOGIN_CLEANUP );
 		}
 
+		display_startup();
 		gViewerWindow->setNormalControlsVisible( FALSE );	
+		display_startup();
 		gLoginMenuBarView->setVisible( TRUE );
+		display_startup();
 		gLoginMenuBarView->setEnabled( TRUE );
+		display_startup();
 		show_debug_menus();
+		display_startup();
 
 		// Hide the splash screen
 		LLSplashScreen::hide();
-
+		display_startup();
 		// Push our window frontmost
 		gViewerWindow->getWindow()->show();
 		display_startup();
@@ -786,7 +803,9 @@ bool idle_startup()
 		// first made visible.
 #ifdef _WIN32
 		MSG msg;
-		while( PeekMessage( &msg, /*All hWnds owned by this thread */ NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE ) );
+		while( PeekMessage( &msg, /*All hWnds owned by this thread */ NULL, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE ) )
+		{ }
+		display_startup();
 #endif
 		timeout.reset();
 		return FALSE;
@@ -801,7 +820,7 @@ bool idle_startup()
 
 		// Don't do anything.  Wait for the login view to call the login_callback,
 		// which will push us to the next state.
-
+		display_startup();
 		// Sleep so we don't spin the CPU
 		ms_sleep(1);
 		return FALSE;
@@ -1169,37 +1188,51 @@ bool idle_startup()
 
 		// Finish agent initialization.  (Requires gSavedSettings, builds camera)
 		gAgent.init();
+		display_startup();
 		gAgentCamera.init();
+		display_startup();
 		set_underclothes_menu_options();
+		display_startup();
 
 		// Since we connected, save off the settings so the user doesn't have to
 		// type the name/password again if we crash.
 		gSavedSettings.saveToFile(gSavedSettings.getString("ClientSettingsFile"), TRUE);
 		LLUIColorTable::instance().saveUserSettings();
 
+		display_startup();
+
 		//
 		// Initialize classes w/graphics stuff.
 		//
 		gTextureList.doPrefetchImages();		
+		display_startup();
+
 		LLSurface::initClasses();
+		display_startup();
+
 
 		LLFace::initClass();
+		display_startup();
 
 		LLDrawable::initClass();
+		display_startup();
 
 		// init the shader managers
 		LLPostProcess::initClass();
+		display_startup();
 
 		LLViewerObject::initVOClasses();
+		display_startup();
 
 		// Initialize all our tools.  Must be done after saved settings loaded.
 		// NOTE: This also is where gToolMgr used to be instantiated before being turned into a singleton.
 		LLToolMgr::getInstance()->initTools();
+		display_startup();
 
 		// Pre-load floaters, like the world map, that are slow to spawn
 		// due to XML complexity.
 		gViewerWindow->initWorldUI();
-
+		
 		display_startup();
 
 		// This is where we used to initialize gWorldp. Original comment said:
@@ -1207,24 +1240,26 @@ bool idle_startup()
 
 		// User might have overridden far clip
 		LLWorld::getInstance()->setLandFarClip(gAgentCamera.mDrawDistance);
-
+		display_startup();
 		// Before we create the first region, we need to set the agent's mOriginGlobal
 		// This is necessary because creating objects before this is set will result in a
 		// bad mPositionAgent cache.
 
 		gAgent.initOriginGlobal(from_region_handle(gFirstSimHandle));
+		display_startup();
 
 		LLWorld::getInstance()->addRegion(gFirstSimHandle, gFirstSim);
+		display_startup();
 
 		LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(gFirstSimHandle);
 		LL_INFOS("AppInit") << "Adding initial simulator " << regionp->getOriginGlobal() << LL_ENDL;
 		
 		regionp->setSeedCapability(gFirstSimSeedCap);
 		LL_DEBUGS("AppInit") << "Waiting for seed grant ...." << LL_ENDL;
-		
+		display_startup();
 		// Set agent's initial region to be the one we just created.
 		gAgent.setRegion(regionp);
-
+		display_startup();
 		// Set agent's initial position, which will be read by LLVOAvatar when the avatar
 		// object is created.  I think this must be done after setting the region.  JC
 		gAgent.setPositionAgent(agent_start_position_region);
@@ -1244,6 +1279,7 @@ bool idle_startup()
 	{
 		LLStartUp::multimediaInit();
 		LLStartUp::setStartupState( STATE_FONT_INIT );
+		display_startup();
 		return FALSE;
 	}
 
@@ -1252,6 +1288,7 @@ bool idle_startup()
 	{
 		LLStartUp::fontInit();
 		LLStartUp::setStartupState( STATE_SEED_GRANTED_WAIT );
+		display_startup();
 		return FALSE;
 	}
 
@@ -1279,6 +1316,7 @@ bool idle_startup()
 				set_startup_status(0.4f, LLTrans::getString("LoginRequestSeedCapGrant"), gAgent.mMOTD);
 			}
 		}
+		display_startup();
 		return FALSE;
 	}
 
@@ -1289,7 +1327,9 @@ bool idle_startup()
 	//---------------------------------------------------------------------
 	if (STATE_SEED_CAP_GRANTED == LLStartUp::getStartupState())
 	{
+		display_startup();
 		update_texture_fetch();
+		display_startup();
 
 		if ( gViewerWindow != NULL)
 		{	// This isn't the first logon attempt, so show the UI
@@ -1297,12 +1337,15 @@ bool idle_startup()
 		}	
 		gLoginMenuBarView->setVisible( FALSE );
 		gLoginMenuBarView->setEnabled( FALSE );
+		display_startup();
 
 		// direct logging to the debug console's line buffer
 		LLError::logToFixedBuffer(gDebugView->mDebugConsolep);
+		display_startup();
 		
 		// set initial visibility of debug console
 		gDebugView->mDebugConsolep->setVisible(gSavedSettings.getBOOL("ShowDebugConsole"));
+		display_startup();
 
 		//
 		// Set message handlers
@@ -1311,22 +1354,28 @@ bool idle_startup()
 
 		// register callbacks for messages. . . do this after initial handshake to make sure that we don't catch any unwanted
 		register_viewer_callbacks(gMessageSystem);
+		display_startup();
 
 		// Debugging info parameters
 		gMessageSystem->setMaxMessageTime( 0.5f );			// Spam if decoding all msgs takes more than 500 ms
+		display_startup();
 
 		#ifndef	LL_RELEASE_FOR_DOWNLOAD
 			gMessageSystem->setTimeDecodes( TRUE );				// Time the decode of each msg
 			gMessageSystem->setTimeDecodesSpamThreshold( 0.05f );  // Spam if a single msg takes over 50ms to decode
 		#endif
+		display_startup();
 
 		gXferManager->registerCallbacks(gMessageSystem);
+		display_startup();
 
 		LLStartUp::initNameCache();
+		display_startup();
 
 		// update the voice settings *after* gCacheName initialization
 		// so that we can construct voice UI that relies on the name cache
 		LLVoiceClient::getInstance()->updateSettings();
+		display_startup();
 
 		//gCacheName is required for nearby chat history loading
 		//so I just moved nearby history loading a few states further
@@ -1335,12 +1384,14 @@ bool idle_startup()
 			LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
 			if (nearby_chat) nearby_chat->loadHistory();
 		}
+		display_startup();
 
 		// *Note: this is where gWorldMap used to be initialized.
 
 		// register null callbacks for audio until the audio system is initialized
 		gMessageSystem->setHandlerFuncFast(_PREHASH_SoundTrigger, null_message_callback, NULL);
 		gMessageSystem->setHandlerFuncFast(_PREHASH_AttachedSound, null_message_callback, NULL);
+		display_startup();
 
 		//reset statistics
 		LLViewerStats::getInstance()->resetStats();
@@ -1370,6 +1421,7 @@ bool idle_startup()
 		LLViewerCamera::getInstance()->setAspect(gViewerWindow->getWorldViewAspectRatio());
 		// Initialize FOV
 		LLViewerCamera::getInstance()->setDefaultFOV(gSavedSettings.getF32("CameraAngle")); 
+		display_startup();
 
 		// Move agent to starting location. The position handed to us by
 		// the space server is in global coordinates, but the agent frame
@@ -1380,6 +1432,7 @@ bool idle_startup()
 		gAgent.resetAxes(gAgentStartLookAt);
 		gAgentCamera.stopCameraAnimation();
 		gAgentCamera.resetCamera();
+		display_startup();
 
 		// Initialize global class data needed for surfaces (i.e. textures)
 		LL_DEBUGS("AppInit") << "Initializing sky..." << LL_ENDL;
@@ -1392,6 +1445,8 @@ bool idle_startup()
 		LLGLState::checkStates();
 		LLGLState::checkTextureChannels();
 
+		display_startup();
+
 		LL_DEBUGS("AppInit") << "Decoding images..." << LL_ENDL;
 		// For all images pre-loaded into viewer cache, decode them.
 		// Need to do this AFTER we init the sky
@@ -1405,6 +1460,8 @@ bool idle_startup()
 		}
 		LLStartUp::setStartupState( STATE_WORLD_WAIT );
 
+		display_startup();
+
 		// JC - Do this as late as possible to increase likelihood Purify
 		// will run.
 		LLMessageSystem* msg = gMessageSystem;
@@ -1432,6 +1489,7 @@ bool idle_startup()
 			NULL);
 
 		timeout.reset();
+		display_startup();
 
 		return FALSE;
 	}
@@ -1450,8 +1508,10 @@ bool idle_startup()
 		LLMessageSystem* msg = gMessageSystem;
 		while (msg->checkAllMessages(gFrameCount, gServicePump))
 		{
+			display_startup();
 		}
 		msg->processAcks();
+		display_startup();
 		return FALSE;
 	}
 
@@ -1462,6 +1522,7 @@ bool idle_startup()
 	{
 		LL_DEBUGS("AppInit") << "Connecting to region..." << LL_ENDL;
 		set_startup_status(0.60f, LLTrans::getString("LoginConnectingToRegion"), gAgent.mMOTD);
+		display_startup();
 		// register with the message system so it knows we're
 		// expecting this message
 		LLMessageSystem* msg = gMessageSystem;
@@ -1477,6 +1538,7 @@ bool idle_startup()
 			msg->newMessageFast(_PREHASH_EconomyDataRequest);
 			gAgent.sendReliableMessage();
 		}
+		display_startup();
 
 		// Create login effect
 		// But not on first login, because you can't see your avatar then
@@ -1491,6 +1553,7 @@ bool idle_startup()
 		LLStartUp::setStartupState( STATE_AGENT_WAIT );		// Go to STATE_AGENT_WAIT
 
 		timeout.reset();
+		display_startup();
 		return FALSE;
 	}
 
@@ -1515,14 +1578,17 @@ bool idle_startup()
 				LL_DEBUGS("AppInit") << "Awaiting AvatarInitComplete, got "
 				<< msg->getMessageName() << LL_ENDL;
 			}
+			display_startup();
 		}
 		msg->processAcks();
 
+		display_startup();
+
 		if (gAgentMovementCompleted)
 		{
 			LLStartUp::setStartupState( STATE_INVENTORY_SEND );
 		}
-
+		display_startup();
 		return FALSE;
 	}
 
@@ -1531,9 +1597,10 @@ bool idle_startup()
 	//---------------------------------------------------------------------
 	if (STATE_INVENTORY_SEND == LLStartUp::getStartupState())
 	{
+		display_startup();
 		// Inform simulator of our language preference
 		LLAgentLanguage::update();
-
+		display_startup();
 		// unpack thin inventory
 		LLSD response = LLLoginInstance::getInstance()->getResponse();
 		//bool dump_buffer = false;
@@ -1548,6 +1615,7 @@ bool idle_startup()
 				gInventory.setLibraryRootFolderID(id.asUUID());
 			}
 		}
+		display_startup();
  		
 		LLSD inv_lib_owner = response["inventory-lib-owner"];
 		if(inv_lib_owner.isDefined())
@@ -1559,6 +1627,7 @@ bool idle_startup()
 				gInventory.setLibraryOwnerID( LLUUID(id.asUUID()));
 			}
 		}
+		display_startup();
 
 		LLSD inv_skel_lib = response["inventory-skel-lib"];
  		if(inv_skel_lib.isDefined() && gInventory.getLibraryOwnerID().notNull())
@@ -1568,6 +1637,7 @@ bool idle_startup()
  				LL_WARNS("AppInit") << "Problem loading inventory-skel-lib" << LL_ENDL;
  			}
  		}
+		display_startup();
 
 		LLSD inv_skeleton = response["inventory-skeleton"];
  		if(inv_skeleton.isDefined())
@@ -1577,6 +1647,7 @@ bool idle_startup()
  				LL_WARNS("AppInit") << "Problem loading inventory-skel-targets" << LL_ENDL;
  			}
  		}
+		display_startup();
 
 		LLSD inv_basic = response["inventory-basic"];
  		if(inv_basic.isDefined())
@@ -1614,6 +1685,7 @@ bool idle_startup()
 				list[agent_id] = new LLRelationship(given_rights, has_rights, false);
 			}
 			LLAvatarTracker::instance().addBuddyList(list);
+			display_startup();
  		}
 
 		bool show_hud = false;
@@ -1641,6 +1713,8 @@ bool idle_startup()
 				//}
 			}
 		}
+		display_startup();
+
 		// Either we want to show tutorial because this is the first login
 		// to a Linden Help Island or the user quit with the tutorial
 		// visible.  JC
@@ -1648,22 +1722,26 @@ bool idle_startup()
 		{
 			LLFloaterReg::showInstance("hud", LLSD(), FALSE);
 		}
+		display_startup();
 
 		LLSD event_notifications = response["event_notifications"];
 		if(event_notifications.isDefined())
 		{
 			gEventNotifier.load(event_notifications);
 		}
+		display_startup();
 
 		LLSD classified_categories = response["classified_categories"];
 		if(classified_categories.isDefined())
 		{
 			LLClassifiedInfo::loadCategories(classified_categories);
 		}
+		display_startup();
 
 		// This method MUST be called before gInventory.findCategoryUUIDForType because of 
 		// gInventory.mIsAgentInvUsable is set to true in the gInventory.buildParentChildMap.
 		gInventory.buildParentChildMap();
+		display_startup();
 
 		//all categories loaded. lets create "My Favorites" category
 		gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE,true);
@@ -1677,24 +1755,26 @@ bool idle_startup()
 		LLAvatarTracker::instance().registerCallbacks(msg);
 		llinfos << " Landmark" << llendl;
 		LLLandmark::registerCallbacks(msg);
+		display_startup();
 
 		// request mute list
 		llinfos << "Requesting Mute List" << llendl;
 		LLMuteList::getInstance()->requestFromServer(gAgent.getID());
-
+		display_startup();
 		// Get L$ and ownership credit information
 		llinfos << "Requesting Money Balance" << llendl;
 		LLStatusBar::sendMoneyBalanceRequest();
-
+		display_startup();
 		// request all group information
 		llinfos << "Requesting Agent Data" << llendl;
 		gAgent.sendAgentDataUpdateRequest();
-
+		display_startup();
 		// Create the inventory views
 		llinfos << "Creating Inventory Views" << llendl;
 		LLFloaterReg::getInstance("inventory");
-
+		display_startup();
 		LLStartUp::setStartupState( STATE_MISC );
+		display_startup();
 		return FALSE;
 	}
 
@@ -1743,17 +1823,23 @@ bool idle_startup()
 			gSavedSettings.setBOOL("ShowStartLocation", TRUE);
 		}
 
+		display_startup();
+
 		if (gSavedSettings.getBOOL("HelpFloaterOpen"))
 		{
 			// show default topic
 			LLViewerHelp::instance().showTopic("");
 		}
 
+		display_startup();
+
 		// We're successfully logged in.
 		gSavedSettings.setBOOL("FirstLoginThisInstall", FALSE);
 
 		LLFloaterReg::showInitialVisibleInstances();
 
+		display_startup();
+
 		// based on the comments, we've successfully logged in so we can delete the 'forced'
 		// URL that the updater set in settings.ini (in a mostly paranoid fashion)
 		std::string nextLoginLocation = gSavedSettings.getString( "NextLoginLocation" );
@@ -1767,8 +1853,10 @@ bool idle_startup()
 			LLUIColorTable::instance().saveUserSettings();
 		};
 
+		display_startup();
 		// JC: Initializing audio requests many sounds for download.
 		init_audio();
+		display_startup();
 
 		// JC: Initialize "active" gestures.  This may also trigger
 		// many gesture downloads, if this is the user's first
@@ -1806,6 +1894,7 @@ bool idle_startup()
 			LLGestureMgr::instance().startFetch();
 		}
 		gDisplaySwapBuffers = TRUE;
+		display_startup();
 
 		LLMessageSystem* msg = gMessageSystem;
 		msg->setHandlerFuncFast(_PREHASH_SoundTrigger,				process_sound_trigger);
@@ -1880,8 +1969,10 @@ bool idle_startup()
 			}
 		}
 
+		display_startup();
         //DEV-17797.  get null folder.  Any items found here moved to Lost and Found
         LLInventoryModelBackgroundFetch::instance().findLostItems();
+		display_startup();
 
 		LLStartUp::setStartupState( STATE_PRECACHE );
 		timeout.reset();
@@ -1890,6 +1981,7 @@ bool idle_startup()
 
 	if (STATE_PRECACHE == LLStartUp::getStartupState())
 	{
+		display_startup();
 		F32 timeout_frac = timeout.getElapsedTimeF32()/PRECACHING_DELAY;
 
 		// We now have an inventory skeleton, so if this is a user's first
@@ -1906,6 +1998,8 @@ bool idle_startup()
 			LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender );
 		}
 
+		display_startup();
+
 		// wait precache-delay and for agent's avatar or a lot longer.
 		if(((timeout_frac > 1.f) && isAgentAvatarValid())
 		   || (timeout_frac > 3.f))
@@ -1919,11 +2013,6 @@ bool idle_startup()
 				LLTrans::getString("LoginPrecaching"),
 					gAgent.mMOTD);
 			display_startup();
-			if (!LLViewerShaderMgr::sInitialized)
-			{
-				LLViewerShaderMgr::sInitialized = TRUE;
-				LLViewerShaderMgr::instance()->setShaders();
-			}
 		}
 		
 		return TRUE;
@@ -1936,7 +2025,7 @@ bool idle_startup()
 		const F32 wearables_time = wearables_timer.getElapsedTimeF32();
 		const F32 MAX_WEARABLES_TIME = 10.f;
 
-		if (!gAgent.isGenderChosen())
+		if (!gAgent.isGenderChosen() && isAgentAvatarValid())
 		{
 			// No point in waiting for clothing, we don't even
 			// know what gender we are.  Pop a dialog to ask and
@@ -1952,6 +2041,8 @@ bool idle_startup()
 			return TRUE;
 		}
 		
+		display_startup();
+
 		if (wearables_time > MAX_WEARABLES_TIME)
 		{
 			LLNotificationsUtil::add("ClothingLoading");
@@ -1983,16 +2074,20 @@ bool idle_startup()
 			}
 		}
 
+		display_startup();
 		update_texture_fetch();
+		display_startup();
 		set_startup_status(0.9f + 0.1f * wearables_time / MAX_WEARABLES_TIME,
 						 LLTrans::getString("LoginDownloadingClothing").c_str(),
 						 gAgent.mMOTD.c_str());
+		display_startup();
 		return TRUE;
 	}
 
 	if (STATE_CLEANUP == LLStartUp::getStartupState())
 	{
 		set_startup_status(1.0, "", "");
+		display_startup();
 
 		// Let the map know about the inventory.
 		LLFloaterWorldMap* floater_world_map = LLFloaterWorldMap::getInstance();
@@ -2008,6 +2103,7 @@ bool idle_startup()
 		//gViewerWindow->revealIntroPanel();
 		gViewerWindow->setStartupComplete(); 
 		gViewerWindow->setProgressCancelButtonVisible(FALSE);
+		display_startup();
 
 		// We're not away from keyboard, even though login might have taken
 		// a while. JC
@@ -2030,7 +2126,7 @@ bool idle_startup()
 		show_debug_menus(); // Debug menu visiblity and First Use trigger
 		
 		// If we've got a startup URL, dispatch it
-		LLStartUp::dispatchURL();
+		//LLStartUp::dispatchURL();
 
 		// Retrieve information about the land data
 		// (just accessing this the first time will fetch it,
@@ -2043,6 +2139,7 @@ bool idle_startup()
 		// LLUserAuth::getInstance()->reset();
 
 		LLStartUp::setStartupState( STATE_STARTED );
+		display_startup();
 
 		// Unmute audio if desired and setup volumes.
 		// Unmute audio if desired and setup volumes.
@@ -2067,6 +2164,7 @@ bool idle_startup()
 		LLAgentPicksInfo::getInstance()->requestNumberOfPicks();
 
 		LLIMFloater::initIMFloater();
+		display_startup();
 
 		return TRUE;
 	}
@@ -2088,7 +2186,12 @@ void login_show()
 #else
 	BOOL bUseDebugLogin = TRUE;
 #endif
-
+	// Hide the toolbars: may happen to come back here if login fails after login agent but before login in region
+	if (gToolBarView)
+	{
+		gToolBarView->setVisible(FALSE);
+	}
+	
 	LLPanelLogin::show(	gViewerWindow->getWindowRectScaled(),
 						bUseDebugLogin || gSavedSettings.getBOOL("SecondLifeEnterprise"),
 						login_callback, NULL );
@@ -2387,13 +2490,6 @@ void asset_callback_nothing(LLVFS*, const LLUUID&, LLAssetType::EType, void*, S3
 	// nothing
 }
 
-// *HACK: Must match name in Library or agent inventory
-const std::string ROOT_GESTURES_FOLDER = "Gestures";
-const std::string COMMON_GESTURES_FOLDER = "Common Gestures";
-const std::string MALE_GESTURES_FOLDER = "Male Gestures";
-const std::string FEMALE_GESTURES_FOLDER = "Female Gestures";
-const std::string SPEECH_GESTURES_FOLDER = "Speech Gestures";
-const std::string OTHER_GESTURES_FOLDER = "Other Gestures";
 const S32 OPT_CLOSED_WINDOW = -1;
 const S32 OPT_MALE = 0;
 const S32 OPT_FEMALE = 1;
@@ -2422,84 +2518,36 @@ bool callback_choose_gender(const LLSD& notification, const LLSD& response)
 	return false;
 }
 
-void LLStartUp::copyLibraryGestures(const std::string& same_gender_gestures)
-{
-	llinfos << "Copying library gestures" << llendl;
-
-	// Copy gestures
-	LLUUID lib_gesture_cat_id =
-		gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE,false,true);
-	if (lib_gesture_cat_id.isNull())
-	{
-		llwarns << "Unable to copy gestures, source category not found" << llendl;
-	}
-	LLUUID dst_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE);
-
-	std::vector<std::string> gesture_folders_to_copy;
-	gesture_folders_to_copy.push_back(MALE_GESTURES_FOLDER);
-	gesture_folders_to_copy.push_back(FEMALE_GESTURES_FOLDER);
-	gesture_folders_to_copy.push_back(COMMON_GESTURES_FOLDER);
-	gesture_folders_to_copy.push_back(SPEECH_GESTURES_FOLDER);
-	gesture_folders_to_copy.push_back(OTHER_GESTURES_FOLDER);
-
-	for(std::vector<std::string>::iterator it = gesture_folders_to_copy.begin();
-		it != gesture_folders_to_copy.end();
-		++it)
-	{
-		std::string& folder_name = *it;
-
-		LLPointer<LLInventoryCallback> cb(NULL);
-
-		if (folder_name == same_gender_gestures ||
-			folder_name == COMMON_GESTURES_FOLDER ||
-			folder_name == OTHER_GESTURES_FOLDER)
-		{
-			cb = new ActivateGestureCallback;
-		}
-
-
-		LLUUID cat_id = findDescendentCategoryIDByName(lib_gesture_cat_id,folder_name);
-		if (cat_id.isNull())
-		{
-			llwarns << "failed to find gesture folder for " << folder_name << llendl;
-		}
-		else
-		{
-			llinfos << "initiating fetch and copy for " << folder_name << " cat_id " << cat_id << llendl;
-			LLAppearanceMgr* app_mgr = LLAppearanceMgr::getInstance();
-			callAfterCategoryFetch(cat_id,
-								   boost::bind(&LLAppearanceMgr::shallowCopyCategory,
-											   app_mgr,
-											   cat_id,
-											   dst_id,
-											   cb));
-		}
-	}
-}
-
 void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 								   const std::string& gender_name )
 {
-	llinfos << "starting" << llendl;
+	lldebugs << "starting" << llendl;
 
 	// Not going through the processAgentInitialWearables path, so need to set this here.
 	LLAppearanceMgr::instance().setAttachmentInvLinkEnable(true);
 	// Initiate creation of COF, since we're also bypassing that.
 	gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT);
 	
-	S32 gender = 0;
-	std::string same_gender_gestures;
+	ESex gender;
 	if (gender_name == "male")
 	{
-		gender = OPT_MALE;
-		same_gender_gestures = MALE_GESTURES_FOLDER;
+		lldebugs << "male" << llendl;
+		gender = SEX_MALE;
 	}
 	else
 	{
-		gender = OPT_FEMALE;
-		same_gender_gestures = FEMALE_GESTURES_FOLDER;
+		lldebugs << "female" << llendl;
+		gender = SEX_FEMALE;
 	}
 
+	if (!isAgentAvatarValid())
+	{
+		llwarns << "Trying to load an initial outfit for an invalid agent avatar" << llendl;
+		return;
+	}
+
+	gAgentAvatarp->setSex(gender);
+
 	// try to find the outfit - if not there, create some default
 	// wearables.
 	LLUUID cat_id = findDescendentCategoryIDByName(
@@ -2507,7 +2555,8 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 		outfit_folder_name);
 	if (cat_id.isNull())
 	{
-		gAgentWearables.createStandardWearables(gender);
+		lldebugs << "standard wearables" << llendl;
+		gAgentWearables.createStandardWearables();
 	}
 	else
 	{
@@ -2517,26 +2566,28 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name,
 		bool do_append = false;
 		LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id);
 		LLAppearanceMgr::instance().wearInventoryCategory(cat, do_copy, do_append);
+		lldebugs << "initial outfit category id: " << cat_id << llendl;
 	}
 
-	// Copy gestures
-	copyLibraryGestures(same_gender_gestures);
-	
 	// This is really misnamed -- it means we have started loading
 	// an outfit/shape that will give the avatar a gender eventually. JC
 	gAgent.setGenderChosen(TRUE);
-
 }
 
 //static
 void LLStartUp::saveInitialOutfit()
 {
-	if (sInitialOutfit.empty()) return;
+	if (sInitialOutfit.empty()) {
+		lldebugs << "sInitialOutfit is empty" << llendl;
+		return;
+	}
 	
 	if (sWearablesLoadedCon.connected())
 	{
+		lldebugs << "sWearablesLoadedCon is connected, disconnecting" << llendl;
 		sWearablesLoadedCon.disconnect();
 	}
+	lldebugs << "calling makeNewOutfitLinks( \"" << sInitialOutfit << "\" )" << llendl;
 	LLAppearanceMgr::getInstance()->makeNewOutfitLinks(sInitialOutfit,false);
 }
 
@@ -2743,12 +2794,12 @@ void LLStartUp::cleanupNameCache()
 bool LLStartUp::dispatchURL()
 {
 	// ok, if we've gotten this far and have a startup URL
-        if (!getStartSLURL().isValid())
+    if (!getStartSLURL().isValid())
 	{
 	  return false;
 	}
-        if(getStartSLURL().getType() != LLSLURL::APP)
-	  {
+    if(getStartSLURL().getType() != LLSLURL::APP)
+	{
 	    
 		// If we started with a location, but we're already
 		// at that location, don't pop dialogs open.
@@ -3340,8 +3391,6 @@ bool process_login_success_response()
 	}
 	
 	// Initial outfit for the user.
-	// QUESTION: Why can't we simply simply set the users outfit directly
-	// from a web page into the user info on the server? - Roxie
 	LLSD initial_outfit = response["initial-outfit"][0];
 	if(initial_outfit.size())
 	{
diff --git a/indra/newview/llstartup.h b/indra/newview/llstartup.h
index 99a644eb9cfa275ba49cf49cc1ec2497380cd70f..0a18ef1b2d140389e32f8db302669e9f89ca9782 100644
--- a/indra/newview/llstartup.h
+++ b/indra/newview/llstartup.h
@@ -90,8 +90,6 @@ class LLStartUp
 
 	static void initNameCache();
 	
-	static void copyLibraryGestures(const std::string& same_gender_gestures);
-
 	static void cleanupNameCache();
 
 	// outfit_folder_name can be a folder anywhere in your inventory, 
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 0a008858437b210df76862dc477e863ac48db98f..89240c982f57d28bad29551c72809a17fa60c02f 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -114,6 +114,7 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
 	mTextTime(NULL),
 	mSGBandwidth(NULL),
 	mSGPacketLoss(NULL),
+	mBtnStats(NULL),
 	mBtnVolume(NULL),
 	mBoxBalance(NULL),
 	mBalance(0),
@@ -162,8 +163,6 @@ BOOL LLStatusBar::handleRightMouseDown(S32 x, S32 y, MASK mask)
 
 BOOL LLStatusBar::postBuild()
 {
-	LLControlVariablePtr mode_control = gSavedSettings.getControl("SessionSettingsFile");
-
 	gMenuBarView->setRightMouseDownCallback(boost::bind(&show_navbar_context_menu, _1, _2, _3));
 
 	mTextTime = getChild<LLTextBox>("TimeText" );
@@ -171,8 +170,12 @@ BOOL LLStatusBar::postBuild()
 	getChild<LLUICtrl>("buyL")->setCommitCallback(
 		boost::bind(&LLStatusBar::onClickBuyCurrency, this));
 
+	getChild<LLUICtrl>("goShop")->setCommitCallback(boost::bind(&LLWeb::loadURLExternal, gSavedSettings.getString("MarketplaceURL")));
+
 	mBoxBalance = getChild<LLTextBox>("balance");
 	mBoxBalance->setClickedCallback( &LLStatusBar::onClickBalance, this );
+	
+	mBtnStats = getChildView("stat_btn");
 
 	mBtnVolume = getChild<LLButton>( "volume_btn" );
 	mBtnVolume->setClickedCallback( onClickVolume, this );
@@ -235,40 +238,9 @@ BOOL LLStatusBar::postBuild()
 
 	mScriptOut = getChildView("scriptout");
 
-	LLUICtrl& mode_combo = getChildRef<LLUICtrl>("mode_combo");
-	mode_combo.setValue(gSavedSettings.getString("SessionSettingsFile"));
-	mode_combo.setCommitCallback(boost::bind(&LLStatusBar::onModeChange, this, getChild<LLUICtrl>("mode_combo")->getValue(), _2));
-
-
 	return TRUE;
 }
 
-void LLStatusBar::onModeChange(const LLSD& original_value, const LLSD& new_value)
-{
-	if (original_value.asString() != new_value.asString())
-	{
-		LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(&LLStatusBar::onModeChangeConfirm, this, original_value, new_value, _1, _2));
-	}
-}
-
-void LLStatusBar::onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response)
-{
-	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-	switch (option)
-	{
-	case 0:
-		gSavedSettings.getControl("SessionSettingsFile")->set(new_value);
-		LLAppViewer::instance()->requestQuit();
-		break;
-	case 1:
-		// revert to original value
-		getChild<LLUICtrl>("mode_combo")->setValue(original_value);
-		break;
-	default:
-		break;
-	}
-}
-
 // Per-frame updates of visibility
 void LLStatusBar::refresh()
 {
@@ -319,7 +291,7 @@ void LLStatusBar::refresh()
 
 	mSGBandwidth->setVisible(net_stats_visible);
 	mSGPacketLoss->setVisible(net_stats_visible);
-	getChildView("stat_btn")->setEnabled(net_stats_visible);
+	mBtnStats->setEnabled(net_stats_visible);
 
 	// update the master volume button state
 	bool mute_audio = LLAppViewer::instance()->getMasterSystemAudioMute();
@@ -378,9 +350,10 @@ void LLStatusBar::setBalance(S32 balance)
 		const S32 HPAD = 24;
 		LLRect balance_rect = mBoxBalance->getTextBoundingRect();
 		LLRect buy_rect = getChildView("buyL")->getRect();
+		LLRect shop_rect = getChildView("goShop")->getRect();
 		LLView* balance_bg_view = getChildView("balance_bg");
 		LLRect balance_bg_rect = balance_bg_view->getRect();
-		balance_bg_rect.mLeft = balance_bg_rect.mRight - (buy_rect.getWidth() + balance_rect.getWidth() + HPAD);
+		balance_bg_rect.mLeft = balance_bg_rect.mRight - (buy_rect.getWidth() + shop_rect.getWidth() + balance_rect.getWidth() + HPAD);
 		balance_bg_view->setShape(balance_bg_rect);
 	}
 
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index 6feeab393b2972717de79c7e10797fa8acfdc6a7..9d28e6c2bc581273fc5fb95fde6a3785e756ef0b 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -92,8 +92,6 @@ class LLStatusBar
 	void onMouseEnterVolume();
 	void onMouseEnterNearbyMedia();
 	void onClickScreen(S32 x, S32 y);
-	void onModeChange(const LLSD& original_value, const LLSD& new_value);
-	void onModeChangeConfirm(const LLSD& original_value, const LLSD& new_value, const LLSD& notification, const LLSD& response);
 
 	static void onClickMediaToggle(void* data);
 	static void onClickBalance(void* data);
@@ -104,10 +102,11 @@ class LLStatusBar
 	LLStatGraph *mSGBandwidth;
 	LLStatGraph *mSGPacketLoss;
 
+	LLView		*mBtnStats;
 	LLButton	*mBtnVolume;
 	LLTextBox	*mBoxBalance;
 	LLButton	*mMediaToggle;
-	LLView*		mScriptOut;
+	LLView		*mScriptOut;
 	LLFrameTimer	mClockUpdateTimer;
 
 	S32				mBalance;
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
index cb49976e5f5be5c940bb026e8ef281f0c469330a..0cb6c850122e88091e7d9f5047217b48e6a46dd5 100644
--- a/indra/newview/llsyswellwindow.cpp
+++ b/indra/newview/llsyswellwindow.cpp
@@ -35,16 +35,17 @@
 #include "llfloaterreg.h"
 #include "llnotifications.h"
 
-#include "llbottomtray.h"
 #include "llscriptfloater.h"
 #include "llviewercontrol.h"
 #include "llviewerwindow.h"
 
 #include "llchiclet.h"
+#include "llchicletbar.h"
 #include "lltoastpanel.h"
 #include "llnotificationmanager.h"
 #include "llnotificationsutil.h"
 #include "llspeakers.h"
+#include "lltoolbarview.h"
 
 //---------------------------------------------------------------------------------
 LLSysWellWindow::LLSysWellWindow(const LLSD& key) : LLTransientDockableFloater(NULL, true,  key),
@@ -139,15 +140,6 @@ void LLSysWellWindow::initChannel()
 	}
 }
 
-//---------------------------------------------------------------------------------
-void LLSysWellWindow::getAllowedRect(LLRect& rect)
-{
-	rect = gViewerWindow->getWorldViewRectScaled();
-}
-
-//---------------------------------------------------------------------------------
-
-
 //---------------------------------------------------------------------------------
 void LLSysWellWindow::setVisible(BOOL visible)
 {
@@ -156,8 +148,8 @@ void LLSysWellWindow::setVisible(BOOL visible)
 		if (NULL == getDockControl() && getDockTongue().notNull())
 		{
 			setDockControl(new LLDockControl(
-				LLBottomTray::getInstance()->getChild<LLView>(getAnchorViewName()), this,
-				getDockTongue(), LLDockControl::TOP, boost::bind(&LLSysWellWindow::getAllowedRect, this, _1)));
+				LLChicletBar::getInstance()->getChild<LLView>(getAnchorViewName()), this,
+				getDockTongue(), LLDockControl::BOTTOM));
 		}
 	}
 
@@ -167,6 +159,7 @@ void LLSysWellWindow::setVisible(BOOL visible)
 	LLTransientDockableFloater::setVisible(visible);
 
 	// update notification channel state	
+	initChannel(); // make sure the channel still exists
 	if(mChannel)
 	{
 		mChannel->updateShowToastsState();
@@ -211,10 +204,9 @@ void LLSysWellWindow::reshapeWindow()
 		{
 			new_window_height = MAX_WINDOW_HEIGHT;
 		}
-		S32 newY = curRect.mTop + new_window_height - curRect.getHeight();
-		S32 newWidth = curRect.getWidth() < MIN_WINDOW_WIDTH ? MIN_WINDOW_WIDTH
-			: curRect.getWidth();
-		curRect.setLeftTopAndSize(curRect.mLeft, newY, newWidth, new_window_height);
+		S32 newWidth = curRect.getWidth() < MIN_WINDOW_WIDTH ? MIN_WINDOW_WIDTH	: curRect.getWidth();
+
+		curRect.setLeftTopAndSize(curRect.mLeft, curRect.mTop, newWidth, new_window_height);
 		reshape(curRect.getWidth(), curRect.getHeight(), TRUE);
 		setRect(curRect);
 	}
@@ -607,6 +599,13 @@ LLIMWellWindow* LLIMWellWindow::getInstance(const LLSD& key /*= LLSD()*/)
 	return LLFloaterReg::getTypedInstance<LLIMWellWindow>("im_well_window", key);
 }
 
+
+// static
+LLIMWellWindow* LLIMWellWindow::findInstance(const LLSD& key /*= LLSD()*/)
+{
+	return LLFloaterReg::findTypedInstance<LLIMWellWindow>("im_well_window", key);
+}
+
 BOOL LLIMWellWindow::postBuild()
 {
 	BOOL rv = LLSysWellWindow::postBuild();
@@ -760,7 +759,10 @@ void LLIMWellWindow::removeObjectRow(const LLUUID& notification_id)
 {
 	if (mMessageList->removeItemByValue(notification_id))
 	{
-		mSysWellChiclet->updateWidget(isWindowEmpty());
+		if (mSysWellChiclet)
+		{
+			mSysWellChiclet->updateWidget(isWindowEmpty());
+		}
 	}
 	else
 	{
diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h
index 9f8ab0181088186d780f615782e01bfda607ba24..272e9cfcb1248044eb9282a3d6dc41863fae7151 100644
--- a/indra/newview/llsyswellwindow.h
+++ b/indra/newview/llsyswellwindow.h
@@ -76,11 +76,6 @@ class LLSysWellWindow : public LLTransientDockableFloater
 	static const S32 MIN_WINDOW_WIDTH		= 318;
 
 protected:
-
-	// gets a rect that bounds possible positions for the SysWellWindow on a screen (EXT-1111)
-	void getAllowedRect(LLRect& rect);
-
-
 	// init Window's channel
 	virtual void initChannel();
 
@@ -158,6 +153,7 @@ class LLIMWellWindow : public LLSysWellWindow, LLIMSessionObserver, LLInitClass<
 	~LLIMWellWindow();
 
 	static LLIMWellWindow* getInstance(const LLSD& key = LLSD());
+	static LLIMWellWindow* findInstance(const LLSD& key = LLSD());
 	static void initClass() { getInstance(); }
 
 	/*virtual*/ BOOL postBuild();
diff --git a/indra/newview/llteleporthistory.cpp b/indra/newview/llteleporthistory.cpp
index 0d8b45db1fe52111b4f3729690ebd4231945ef54..50a088b79979c260f6bfaff291ef8c9b9296ae49 100644
--- a/indra/newview/llteleporthistory.cpp
+++ b/indra/newview/llteleporthistory.cpp
@@ -56,7 +56,8 @@ const std::string& LLTeleportHistoryItem::getTitle() const
 LLTeleportHistory::LLTeleportHistory():
 	mCurrentItem(-1),
 	mRequestedItem(-1),
-	mGotInitialUpdate(false)
+	mGotInitialUpdate(false),
+	mTeleportHistoryStorage(NULL)
 {
 	mTeleportFinishedConn = LLViewerParcelMgr::getInstance()->
 		setTeleportFinishedCallback(boost::bind(&LLTeleportHistory::updateCurrentLocation, this, _1));
@@ -115,6 +116,10 @@ void LLTeleportHistory::handleLoginComplete()
 
 void LLTeleportHistory::updateCurrentLocation(const LLVector3d& new_pos)
 {
+	if (!mTeleportHistoryStorage)
+	{
+		mTeleportHistoryStorage = LLTeleportHistoryStorage::getInstance();
+	}
 	if (mRequestedItem != -1) // teleport within the history in progress?
 	{
 		mCurrentItem = mRequestedItem;
@@ -152,7 +157,7 @@ void LLTeleportHistory::updateCurrentLocation(const LLVector3d& new_pos)
 		if (mCurrentItem < 0 || mCurrentItem >= (int) mItems.size()) // sanity check
 		{
 			llwarns << "Invalid current item. (this should not happen)" << llendl;
-			llassert(!"Invalid current teleport histiry item");
+			llassert(!"Invalid current teleport history item");
 			return;
 		}
 		LLVector3 new_pos_local = gAgent.getPosAgentFromGlobal(new_pos);
diff --git a/indra/newview/llteleporthistory.h b/indra/newview/llteleporthistory.h
index e45dc28f9b4bc42fa695f24f39502427174ab246..e9c29c39bf3e945d91a57f4260d8ad705919f56d 100644
--- a/indra/newview/llteleporthistory.h
+++ b/indra/newview/llteleporthistory.h
@@ -33,6 +33,7 @@
 #include <string>
 #include <boost/function.hpp>
 #include <boost/signals2.hpp>
+#include "llteleporthistorystorage.h"
 
 
 /**
@@ -210,6 +211,8 @@ class LLTeleportHistory: public LLSingleton<LLTeleportHistory>
 	 */
 	bool					mGotInitialUpdate;
 	
+	LLTeleportHistoryStorage*	mTeleportHistoryStorage;
+
 	/**
 	 * Signal emitted when the history gets changed.
 	 * 
diff --git a/indra/newview/llteleporthistorystorage.cpp b/indra/newview/llteleporthistorystorage.cpp
index 0ba455e7d5b5de3b90c0844ce1eabf3f6eeff2c6..af5a047da4d974c4d77f5e0e78fcefc37977b4fa 100644
--- a/indra/newview/llteleporthistorystorage.cpp
+++ b/indra/newview/llteleporthistorystorage.cpp
@@ -66,6 +66,7 @@ struct LLSortItemsByDate
 LLTeleportHistoryStorage::LLTeleportHistoryStorage() :
 	mFilename("teleport_history.txt")
 {
+	mItems.clear();
 	LLTeleportHistory *th = LLTeleportHistory::getInstance();
 	if (th)
 		th->setHistoryChangedCallback(boost::bind(&LLTeleportHistoryStorage::onTeleportHistoryChange, this));	
diff --git a/indra/newview/llteleporthistorystorage.h b/indra/newview/llteleporthistorystorage.h
index 6cae0a345477ebbfeb69e988923a4ac3f91fce1a..cf4c85a9910106a91c9f69be4cfe62dea049cb0a 100644
--- a/indra/newview/llteleporthistorystorage.h
+++ b/indra/newview/llteleporthistorystorage.h
@@ -93,9 +93,6 @@ class LLTeleportHistoryStorage: public LLSingleton<LLTeleportHistoryStorage>
 	void removeItem(S32 idx);
 
 	void save();
-	void load();
-
-	void dump() const;
 
 	/**
 	 * Set a callback to be called upon history changes.
@@ -113,6 +110,9 @@ class LLTeleportHistoryStorage: public LLSingleton<LLTeleportHistoryStorage>
 
 private:
 
+	void load();
+	void dump() const;
+	
 	void onTeleportHistoryChange();
 	bool compareByTitleAndGlobalPos(const LLTeleportHistoryPersistentItem& a, const LLTeleportHistoryPersistentItem& b);
 
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index e8abee2fb76c07d55ef61f92ca5642f3792d6010..6f6d5dbf122ea787f6d24f4065209104015ada5d 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -216,22 +216,22 @@ void LLTexLayerSetBuffer::cancelUpload()
 
 void LLTexLayerSetBuffer::pushProjection() const
 {
-	glMatrixMode(GL_PROJECTION);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
 	gGL.pushMatrix();
-	glLoadIdentity();
-	glOrtho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
+	gGL.loadIdentity();
+	gGL.ortho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
 
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.pushMatrix();
-	glLoadIdentity();
+	gGL.loadIdentity();
 }
 
 void LLTexLayerSetBuffer::popProjection() const
 {
-	glMatrixMode(GL_PROJECTION);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
 	gGL.popMatrix();
 
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.popMatrix();
 }
 
@@ -294,18 +294,22 @@ BOOL LLTexLayerSetBuffer::render()
 	const BOOL update_now = mNeedsUpdate && isReadyToUpdate();
 	
 	BOOL success = TRUE;
-
-	//hack to use fixed function when updating tex layer sets
-	bool no_ff = LLGLSLShader::sNoFixedFunction;
-	LLGLSLShader::sNoFixedFunction = false;
 	
+	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();
 
-	LLGLSLShader::sNoFixedFunction = no_ff;
-	
 	if(upload_now)
 	{
 		if (!success)
@@ -335,6 +339,13 @@ BOOL LLTexLayerSetBuffer::render()
 		doUpdate();
 	}
 
+	if (use_shaders)
+	{
+		gAlphaMaskProgram.unbind();
+	}
+
+	LLVertexBuffer::unbind();
+	
 	// reset GL state
 	gGL.setColorMask(true, true);
 	gGL.setSceneBlendType(LLRender::BT_ALPHA);
@@ -924,6 +935,8 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 		}
 	}
 
+	bool use_shaders = LLGLSLShader::sNoFixedFunction;
+
 	LLGLSUIDefault gls_ui;
 	LLGLDepthTest gls_depth(GL_FALSE, GL_FALSE);
 	gGL.setColorMask(true, true);
@@ -932,12 +945,20 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 	{
 		gGL.flush();
 		LLGLDisable no_alpha(GL_ALPHA_TEST);
+		if (use_shaders)
+		{
+			gAlphaMaskProgram.setMinimumAlpha(0.0f);
+		}
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 		gGL.color4f( 0.f, 0.f, 0.f, 1.f );
 
 		gl_rect_2d_simple( width, height );
 
 		gGL.flush();
+		if (use_shaders)
+		{
+			gAlphaMaskProgram.setMinimumAlpha(0.004f);
+		}
 	}
 
 	if (mIsVisible)
@@ -964,6 +985,11 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 
 		gGL.setSceneBlendType(LLRender::BT_REPLACE);
 		LLGLDisable no_alpha(GL_ALPHA_TEST);
+		if (use_shaders)
+		{
+			gAlphaMaskProgram.setMinimumAlpha(0.f);
+		}
+
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 		gGL.color4f( 0.f, 0.f, 0.f, 0.f );
 
@@ -971,7 +997,10 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
 		gGL.setSceneBlendType(LLRender::BT_ALPHA);
 
 		gGL.flush();
-
+		if (use_shaders)
+		{
+			gAlphaMaskProgram.setMinimumAlpha(0.004f);
+		}
 	}
 
 	return success;
@@ -1078,13 +1107,14 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
 {
 	const LLTexLayerSetInfo *info = getInfo();
 	
+	bool use_shaders = LLGLSLShader::sNoFixedFunction;
+
 	gGL.setColorMask(false, true);
 	gGL.setSceneBlendType(LLRender::BT_REPLACE);
 	
 	// (Optionally) replace alpha with a single component image from a tga file.
 	if (!info->mStaticAlphaFileName.empty())
 	{
-		LLGLSNoAlphaTest gls_no_alpha_test;
 		gGL.flush();
 		{
 			LLViewerTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture(info->mStaticAlphaFileName, TRUE);
@@ -1103,12 +1133,20 @@ void LLTexLayerSet::renderAlphaMaskTextures(S32 x, S32 y, S32 width, S32 height,
 		// Set the alpha channel to one (clean up after previous blending)
 		gGL.flush();
 		LLGLDisable no_alpha(GL_ALPHA_TEST);
+		if (use_shaders)
+		{
+			gAlphaMaskProgram.setMinimumAlpha(0.f);
+		}
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 		gGL.color4f( 0.f, 0.f, 0.f, 1.f );
 		
 		gl_rect_2d_simple( width, height );
 		
 		gGL.flush();
+		if (use_shaders)
+		{
+			gAlphaMaskProgram.setMinimumAlpha(0.004f);
+		}
 	}
 	
 	// (Optional) Mask out part of the baked texture with alpha masks
@@ -1593,6 +1631,8 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 	LLGLEnable color_mat(GL_COLOR_MATERIAL);
 	gPipeline.disableLights();
 
+	bool use_shaders = LLGLSLShader::sNoFixedFunction;
+
 	LLColor4 net_color;
 	BOOL color_specified = findNetColor(&net_color);
 	
@@ -1673,8 +1713,13 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 			{
 				if( tex )
 				{
-					LLGLDisable alpha_test(getInfo()->mWriteAllChannels ? GL_ALPHA_TEST : 0);
-
+					bool no_alpha_test = getInfo()->mWriteAllChannels;
+					LLGLDisable alpha_test(no_alpha_test ? GL_ALPHA_TEST : 0);
+					if (use_shaders && no_alpha_test)
+					{
+						gAlphaMaskProgram.setMinimumAlpha(0.f);
+					}
+					
 					LLTexUnit::eTextureAddressMode old_mode = tex->getAddressMode();
 					
 					gGL.getTexUnit(0)->bind(tex, TRUE);
@@ -1684,6 +1729,11 @@ 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)
+					{
+						gAlphaMaskProgram.setMinimumAlpha(0.004f);
+					}
+					
 				}
 			}
 //			else
@@ -1716,9 +1766,17 @@ BOOL LLTexLayer::render(S32 x, S32 y, S32 width, S32 height)
 		color_specified )
 	{
 		LLGLDisable no_alpha(GL_ALPHA_TEST);
+		if (use_shaders)
+		{
+			gAlphaMaskProgram.setMinimumAlpha(0.f);
+		}
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 		gGL.color4fv( net_color.mV );
 		gl_rect_2d_simple( width, height );
+		if (use_shaders)
+		{
+			gAlphaMaskProgram.setMinimumAlpha(0.004f);
+		}
 	}
 
 	if( alpha_mask_specified || getInfo()->mWriteAllChannels )
@@ -1806,15 +1864,25 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 
 	gGL.flush();
 	
+	bool use_shaders = LLGLSLShader::sNoFixedFunction;
+
 	if( !getInfo()->mStaticImageFileName.empty() )
 	{
 		LLViewerTexture* tex = LLTexLayerStaticImageList::getInstance()->getTexture( getInfo()->mStaticImageFileName, getInfo()->mStaticImageIsMask );
 		if( tex )
 		{
 			LLGLSNoAlphaTest gls_no_alpha_test;
+			if (use_shaders)
+			{
+				gAlphaMaskProgram.setMinimumAlpha(0.f);
+			}
 			gGL.getTexUnit(0)->bind(tex, TRUE);
 			gl_rect_2d_simple_tex( width, height );
 			gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+			if (use_shaders)
+			{
+				gAlphaMaskProgram.setMinimumAlpha(0.004f);
+			}
 		}
 		else
 		{
@@ -1829,10 +1897,18 @@ BOOL LLTexLayer::blendAlphaTexture(S32 x, S32 y, S32 width, S32 height)
 			if (tex)
 			{
 				LLGLSNoAlphaTest gls_no_alpha_test;
+				if (use_shaders)
+				{
+					gAlphaMaskProgram.setMinimumAlpha(0.f);
+				}
 				gGL.getTexUnit(0)->bind(tex);
 				gl_rect_2d_simple_tex( width, height );
 				gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 				success = TRUE;
+				if (use_shaders)
+				{
+					gAlphaMaskProgram.setMinimumAlpha(0.004f);
+				}
 			}
 		}
 	}
@@ -1851,6 +1927,13 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 
 	llassert( !mParamAlphaList.empty() );
 
+	bool use_shaders = LLGLSLShader::sNoFixedFunction;
+
+	if (use_shaders)
+	{
+		gAlphaMaskProgram.setMinimumAlpha(0.f);
+	}
+
 	gGL.setColorMask(false, true);
 
 	LLTexLayerParamAlpha* first_param = *mParamAlphaList.begin();
@@ -1888,7 +1971,6 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 		if( tex && (tex->getComponents() == 4) )
 		{
 			LLGLSNoAlphaTest gls_no_alpha_test;
-
 			LLTexUnit::eTextureAddressMode old_mode = tex->getAddressMode();
 			
 			gGL.getTexUnit(0)->bind(tex, TRUE);
@@ -1927,6 +2009,10 @@ BOOL LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
 		gl_rect_2d_simple( width, height );
 	}
 
+	if (use_shaders)
+	{
+		gAlphaMaskProgram.setMinimumAlpha(0.004f);
+	}
 
 	LLGLSUIDefault gls_ui;
 
diff --git a/indra/newview/lltexlayer.h b/indra/newview/lltexlayer.h
index 85dadb213c55d777bdb2e329d677a43830d34f8d..4f43547dae5034117610fe9bd6274de7b1cc9a67 100644
--- a/indra/newview/lltexlayer.h
+++ b/indra/newview/lltexlayer.h
@@ -261,6 +261,8 @@ class LLTexLayerSetInfo
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 class LLTexLayerSetBuffer : public LLViewerDynamicTexture
 {
+	LOG_CLASS(LLTexLayerSetBuffer);
+
 public:
 	LLTexLayerSetBuffer(LLTexLayerSet* const owner, S32 width, S32 height);
 	virtual ~LLTexLayerSetBuffer();
diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp
index 87b6304f9ddf250efdd5ac7a1a7b82f6290279f0..8632890bbbdc7ad0c2aaac46fd38f0c888d566e0 100644
--- a/indra/newview/lltexturecache.cpp
+++ b/indra/newview/lltexturecache.cpp
@@ -36,6 +36,7 @@
 
 // Included to allow LLTextureCache::purgeTextures() to pause watchdog timeout
 #include "llappviewer.h" 
+#include "llmemory.h"
 
 // Cache organization:
 // cache/texture.entries
@@ -176,7 +177,7 @@ class LLTextureCacheLocalFileWorker : public LLTextureCacheWorker
 
 bool LLTextureCacheLocalFileWorker::doRead()
 {
-	S32 local_size = LLAPRFile::size(mFileName);
+	S32 local_size = LLAPRFile::size(mFileName, mCache->getLocalAPRFilePool());
 
 	if (local_size > 0 && mFileName.size() > 4)
 	{
@@ -250,7 +251,7 @@ bool LLTextureCacheLocalFileWorker::doRead()
 	}
 	mReadData = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), mDataSize);
 	
-	S32 bytes_read = LLAPRFile::readEx(mFileName, mReadData, mOffset, mDataSize);
+	S32 bytes_read = LLAPRFile::readEx(mFileName, mReadData, mOffset, mDataSize, mCache->getLocalAPRFilePool());	
 
 	if (bytes_read != mDataSize)
 	{
@@ -331,7 +332,7 @@ bool LLTextureCacheRemoteWorker::doRead()
 		// Is it a JPEG2000 file? 
 		{
 			local_filename = filename + ".j2c";
-			local_size = LLAPRFile::size(local_filename);
+			local_size = LLAPRFile::size(local_filename, mCache->getLocalAPRFilePool());
 			if (local_size > 0)
 			{
 				mImageFormat = IMG_CODEC_J2C;
@@ -341,7 +342,7 @@ bool LLTextureCacheRemoteWorker::doRead()
 		if (local_size == 0)
 		{
 			local_filename = filename + ".jpg";
-			local_size = LLAPRFile::size(local_filename);
+			local_size = LLAPRFile::size(local_filename, mCache->getLocalAPRFilePool());
 			if (local_size > 0)
 			{
 				mImageFormat = IMG_CODEC_JPEG;
@@ -352,7 +353,7 @@ bool LLTextureCacheRemoteWorker::doRead()
 		if (local_size == 0)
 		{
 			local_filename = filename + ".tga";
-			local_size = LLAPRFile::size(local_filename);
+			local_size = LLAPRFile::size(local_filename, mCache->getLocalAPRFilePool());
 			if (local_size > 0)
 			{
 				mImageFormat = IMG_CODEC_TGA;
@@ -378,7 +379,8 @@ bool LLTextureCacheRemoteWorker::doRead()
 		}
 		// Allocate read buffer
 		mReadData = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), mDataSize);
-		S32 bytes_read = LLAPRFile::readEx(local_filename, mReadData, mOffset, mDataSize);
+		S32 bytes_read = LLAPRFile::readEx(local_filename, 
+											 mReadData, mOffset, mDataSize, mCache->getLocalAPRFilePool());
 		if (bytes_read != mDataSize)
 		{
  			llwarns << "Error reading file from local cache: " << local_filename
@@ -429,7 +431,8 @@ bool LLTextureCacheRemoteWorker::doRead()
 		size = llmin(size, mDataSize);
 		// Allocate the read buffer
 		mReadData = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), size);
-		S32 bytes_read = LLAPRFile::readEx(mCache->mHeaderDataFileName, mReadData, offset, size);
+		S32 bytes_read = LLAPRFile::readEx(mCache->mHeaderDataFileName, 
+											 mReadData, offset, size, mCache->getLocalAPRFilePool());
 		if (bytes_read != size)
 		{
 			llwarns << "LLTextureCacheWorker: "  << mID
@@ -455,7 +458,7 @@ bool LLTextureCacheRemoteWorker::doRead()
 	if (!done && (mState == BODY))
 	{
 		std::string filename = mCache->getTextureFileName(mID);
-		S32 filesize = LLAPRFile::size(filename);
+		S32 filesize = LLAPRFile::size(filename, mCache->getLocalAPRFilePool());
 
 		if (filesize && (filesize + TEXTURE_CACHE_ENTRY_SIZE) > mOffset)
 		{
@@ -497,7 +500,8 @@ bool LLTextureCacheRemoteWorker::doRead()
 			// Read the data at last
 			S32 bytes_read = LLAPRFile::readEx(filename, 
 											 mReadData + data_offset,
-											 file_offset, file_size);
+											 file_offset, file_size,
+											 mCache->getLocalAPRFilePool());
 			if (bytes_read != file_size)
 			{
 				llwarns << "LLTextureCacheWorker: "  << mID
@@ -598,13 +602,13 @@ bool LLTextureCacheRemoteWorker::doWrite()
 			U8* padBuffer = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), TEXTURE_CACHE_ENTRY_SIZE);
 			memset(padBuffer, 0, TEXTURE_CACHE_ENTRY_SIZE);		// Init with zeros
 			memcpy(padBuffer, mWriteData, mDataSize);			// Copy the write buffer
-			bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, padBuffer, offset, size);
+			bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, padBuffer, offset, size, mCache->getLocalAPRFilePool());
 			FREE_MEM(LLImageBase::getPrivatePool(), padBuffer);
 		}
 		else
 		{
 			// Write the header record (== first TEXTURE_CACHE_ENTRY_SIZE bytes of the raw file) in the header file
-			bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, mWriteData, offset, size);
+			bytes_written = LLAPRFile::writeEx(mCache->mHeaderDataFileName, mWriteData, offset, size, mCache->getLocalAPRFilePool());
 		}
 
 		if (bytes_written <= 0)
@@ -639,7 +643,8 @@ bool LLTextureCacheRemoteWorker::doWrite()
 // 			llinfos << "Writing Body: " << filename << " Bytes: " << file_offset+file_size << llendl;
 			S32 bytes_written = LLAPRFile::writeEx(	filename, 
 													mWriteData + TEXTURE_CACHE_ENTRY_SIZE,
-													0, file_size);
+													0, file_size,
+													mCache->getLocalAPRFilePool());
 			if (bytes_written <= 0)
 			{
 				llwarns << "LLTextureCacheWorker: "  << mID
@@ -736,6 +741,9 @@ void LLTextureCacheWorker::endWork(S32 param, bool aborted)
 
 LLTextureCache::LLTextureCache(bool threaded)
 	: LLWorkerThread("TextureCache", threaded),
+	  mWorkersMutex(NULL),
+	  mHeaderMutex(NULL),
+	  mListMutex(NULL),
 	  mHeaderAPRFile(NULL),
 	  mReadOnly(TRUE), //do not allow to change the texture cache until setReadOnly() is called.
 	  mTexturesSizeTotal(0),
@@ -752,7 +760,7 @@ LLTextureCache::~LLTextureCache()
 //////////////////////////////////////////////////////////////////////////////
 
 //virtual
-S32 LLTextureCache::update(U32 max_time_ms)
+S32 LLTextureCache::update(F32 max_time_ms)
 {
 	static LLFrameTimer timer ;
 	static const F32 MAX_TIME_INTERVAL = 300.f ; //seconds.
@@ -839,7 +847,7 @@ BOOL LLTextureCache::isInLocal(const LLUUID& id)
 	// Is it a JPEG2000 file? 
 	{
 		local_filename = filename + ".j2c";
-		local_size = LLAPRFile::size(local_filename);
+		local_size = LLAPRFile::size(local_filename, getLocalAPRFilePool());
 		if (local_size > 0)
 		{
 			return TRUE ;
@@ -849,7 +857,7 @@ BOOL LLTextureCache::isInLocal(const LLUUID& id)
 	// If not, is it a jpeg file?		
 	{
 		local_filename = filename + ".jpg";
-		local_size = LLAPRFile::size(local_filename);
+		local_size = LLAPRFile::size(local_filename, getLocalAPRFilePool());
 		if (local_size > 0)
 		{
 			return TRUE ;
@@ -859,7 +867,7 @@ BOOL LLTextureCache::isInLocal(const LLUUID& id)
 	// Hmm... What about a targa file? (used for UI texture mostly)		
 	{
 		local_filename = filename + ".tga";
-		local_size = LLAPRFile::size(local_filename);
+		local_size = LLAPRFile::size(local_filename, getLocalAPRFilePool());
 		if (local_size > 0)
 		{
 			return TRUE ;
@@ -905,10 +913,10 @@ void LLTextureCache::purgeCache(ELLPath location)
 		if(LLFile::isdir(mTexturesDirName))
 		{
 			std::string file_name = gDirUtilp->getExpandedFilename(location, entries_filename);
-			LLAPRFile::remove(file_name);
+			LLAPRFile::remove(file_name, getLocalAPRFilePool());
 
 			file_name = gDirUtilp->getExpandedFilename(location, cache_filename);
-			LLAPRFile::remove(file_name);
+			LLAPRFile::remove(file_name, getLocalAPRFilePool());
 
 			purgeAllTextures(true);
 		}
@@ -984,9 +992,7 @@ LLAPRFile* LLTextureCache::openHeaderEntriesFile(bool readonly, S32 offset)
 {
 	llassert_always(mHeaderAPRFile == NULL);
 	apr_int32_t flags = readonly ? APR_READ|APR_BINARY : APR_READ|APR_WRITE|APR_BINARY;
-	// All code calling openHeaderEntriesFile, immediately calls closeHeaderEntriesFile,
-	// so this file is very short-lived.
-	mHeaderAPRFile = new LLAPRFile(mHeaderEntriesFileName, flags);
+	mHeaderAPRFile = new LLAPRFile(mHeaderEntriesFileName, flags, getLocalAPRFilePool());
 	if(offset > 0)
 	{
 		mHeaderAPRFile->seek(APR_SET, offset);
@@ -1009,9 +1015,10 @@ void LLTextureCache::readEntriesHeader()
 {
 	// mHeaderEntriesInfo initializes to default values so safe not to read it
 	llassert_always(mHeaderAPRFile == NULL);
-	if (LLAPRFile::isExist(mHeaderEntriesFileName))
+	if (LLAPRFile::isExist(mHeaderEntriesFileName, getLocalAPRFilePool()))
 	{
-		LLAPRFile::readEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo));
+		LLAPRFile::readEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo),
+						  getLocalAPRFilePool());
 	}
 	else //create an empty entries header.
 	{
@@ -1026,7 +1033,8 @@ void LLTextureCache::writeEntriesHeader()
 	llassert_always(mHeaderAPRFile == NULL);
 	if (!mReadOnly)
 	{
-		LLAPRFile::writeEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo));
+		LLAPRFile::writeEx(mHeaderEntriesFileName, (U8*)&mHeaderEntriesInfo, 0, sizeof(EntriesInfo),
+						   getLocalAPRFilePool());
 	}
 }
 
@@ -1615,7 +1623,7 @@ void LLTextureCache::purgeTextures(bool validate)
 			if (uuididx == validate_idx)
 			{
  				LL_DEBUGS("TextureCache") << "Validating: " << filename << "Size: " << entries[idx].mBodySize << LL_ENDL;
-				S32 bodysize = LLAPRFile::size(filename);
+				S32 bodysize = LLAPRFile::size(filename, getLocalAPRFilePool());
 				if (bodysize != entries[idx].mBodySize)
 				{
 					LL_WARNS("TextureCache") << "TEXTURE CACHE BODY HAS BAD SIZE: " << bodysize << " != " << entries[idx].mBodySize
@@ -1633,8 +1641,8 @@ void LLTextureCache::purgeTextures(bool validate)
 		{
 			purge_count++;
 	 		LL_DEBUGS("TextureCache") << "PURGING: " << filename << LL_ENDL;
-			removeEntry(idx, entries[idx], filename) ;
 			cache_size -= entries[idx].mBodySize;
+			removeEntry(idx, entries[idx], filename) ;			
 		}
 	}
 
@@ -1850,7 +1858,7 @@ void LLTextureCache::removeCachedTexture(const LLUUID& id)
 		mTexturesSizeMap.erase(id);
 	}
 	mHeaderIDMap.erase(id);
-	LLAPRFile::remove(getTextureFileName(id));		
+	LLAPRFile::remove(getTextureFileName(id), getLocalAPRFilePool());		
 }
 
 //called after mHeaderMutex is locked.
@@ -1862,7 +1870,7 @@ void LLTextureCache::removeEntry(S32 idx, Entry& entry, std::string& filename)
 	{
 		if (entry.mBodySize == 0)	// Always attempt to remove when mBodySize > 0.
 		{
-		  if (LLAPRFile::isExist(filename))		// Sanity check. Shouldn't exist when body size is 0.
+		  if (LLAPRFile::isExist(filename, getLocalAPRFilePool()))		// Sanity check. Shouldn't exist when body size is 0.
 		  {
 			  LL_WARNS("TextureCache") << "Entry has body size of zero but file " << filename << " exists. Deleting this file, too." << LL_ENDL;
 		  }
@@ -1871,19 +1879,18 @@ void LLTextureCache::removeEntry(S32 idx, Entry& entry, std::string& filename)
 			  file_maybe_exists = false;
 		  }
 		}
+		mTexturesSizeTotal -= entry.mBodySize;
 
 		entry.mImageSize = -1;
 		entry.mBodySize = 0;
 		mHeaderIDMap.erase(entry.mID);
-		mTexturesSizeMap.erase(entry.mID);
-
-		mTexturesSizeTotal -= entry.mBodySize;
+		mTexturesSizeMap.erase(entry.mID);		
 		mFreeList.insert(idx);	
 	}
 
 	if (file_maybe_exists)
 	{
-		LLAPRFile::remove(filename);
+		LLAPRFile::remove(filename, getLocalAPRFilePool());		
 	}
 }
 
diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h
index 79f5ba58358329f1231efdfd732751c4a5e4bf59..dd0cc9b4bd6147b519ab416ed3180508b22a7c95 100644
--- a/indra/newview/lltexturecache.h
+++ b/indra/newview/lltexturecache.h
@@ -101,7 +101,7 @@ class LLTextureCache : public LLWorkerThread
 	LLTextureCache(bool threaded);
 	~LLTextureCache();
 
-	/*virtual*/ S32 update(U32 max_time_ms);	
+	/*virtual*/ S32 update(F32 max_time_ms);	
 	
 	void purgeCache(ELLPath location);
 	void setReadOnly(BOOL read_only) ;
@@ -142,6 +142,9 @@ class LLTextureCache : public LLWorkerThread
 	std::string getTextureFileName(const LLUUID& id);
 	void addCompleted(Responder* responder, bool success);
 	
+protected:
+	//void setFileAPRPool(apr_pool_t* pool) { mFileAPRPool = pool ; }
+
 private:
 	void setDirNames(ELLPath location);
 	void readHeaderCache();
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index e9be45ffd0cfef841ddf5d2c5232a6cae60226a3..f18aa8b4e61b05cefaf821af67165f368855ec08 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -674,6 +674,7 @@ LLTextureFetchWorker::LLTextureFetchWorker(LLTextureFetch* fetcher,
 	  mRetryAttempt(0),
 	  mActiveCount(0),
 	  mGetStatus(0),
+	  mWorkMutex(NULL),
 	  mFirstPacket(0),
 	  mLastPacket(-1),
 	  mTotalPackets(0),
@@ -1810,11 +1811,13 @@ bool LLTextureFetchWorker::writeToCacheComplete()
 // public
 
 LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* imagedecodethread, bool threaded, bool qa_mode)
-	: LLWorkerThread("TextureFetch", threaded),
+	: LLWorkerThread("TextureFetch", threaded, true),
 	  mDebugCount(0),
 	  mDebugPause(FALSE),
 	  mPacketCount(0),
 	  mBadPacketCount(0),
+	  mQueueMutex(getAPRPool()),
+	  mNetworkQueueMutex(getAPRPool()),
 	  mTextureCache(cache),
 	  mImageDecodeThread(imagedecodethread),
 	  mTextureBandwidth(0),
@@ -2201,7 +2204,7 @@ void LLTextureFetch::commonUpdate()
 
 // MAIN THREAD
 //virtual
-S32 LLTextureFetch::update(U32 max_time_ms)
+S32 LLTextureFetch::update(F32 max_time_ms)
 {
 	static LLCachedControl<F32> band_width(gSavedSettings,"ThrottleBandwidthKBPS");
 
diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h
index d101da1f4be1697e6221825a3c6cd72d8a7ca150..35df7d816f20b91e28b319c40c9767e1a428c7b6 100644
--- a/indra/newview/lltexturefetch.h
+++ b/indra/newview/lltexturefetch.h
@@ -55,7 +55,7 @@ class LLTextureFetch : public LLWorkerThread
 
 	class TFRequest;
 	
-	/*virtual*/ S32 update(U32 max_time_ms);	
+	/*virtual*/ S32 update(F32 max_time_ms);	
 	void shutDownTextureCacheThread() ; //called in the main thread after the TextureCacheThread shuts down.
 	void shutDownImageDecodeThread() ;  //called in the main thread after the ImageDecodeThread shuts down.
 
diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp
index 6547154bc481e879817ab4b02adfa2b45161a6e2..1c89766b2672b61d5a0bf446c5154d83c04b5d78 100644
--- a/indra/newview/lltextureview.cpp
+++ b/indra/newview/lltextureview.cpp
@@ -527,11 +527,12 @@ void LLGLTexMemBar::draw()
 	LLFontGL::getFontMonospace()->renderUTF8(text, 0, 0, v_offset + line_height*6,
 											 text_color, LLFontGL::LEFT, LLFontGL::TOP);
 
-	text = llformat("GL Tot: %d/%d MB Bound: %d/%d MB Raw Tot: %d MB Bias: %.2f Cache: %.1f/%.1f MB Net Tot Tex: %.1f MB Tot Obj: %.1f MB Tot Htp: %d",
+	text = llformat("GL Tot: %d/%d MB Bound: %d/%d MB FBO: %d MB Raw Tot: %d MB Bias: %.2f Cache: %.1f/%.1f MB Net Tot Tex: %.1f MB Tot Obj: %.1f MB Tot Htp: %d",
 					total_mem,
 					max_total_mem,
 					bound_mem,
 					max_bound_mem,
+					LLRenderTarget::sBytesAllocated/(1024*1024),
 					LLImageRaw::sGlobalRawMemory >> 20,	discard_bias,
 					cache_usage, cache_max_usage, total_texture_downloaded, total_object_downloaded, total_http_requests);
 	//, cache_entries, cache_max_entries
@@ -571,7 +572,7 @@ void LLGLTexMemBar::draw()
 	color = (total_mem < llfloor(max_total_mem * texmem_lower_bound_scale)) ? LLColor4::green :
 		  	(total_mem < max_total_mem) ? LLColor4::yellow : LLColor4::red;
 	color[VALPHA] = .75f;
-	glColor4fv(color.mV);
+	gGL.diffuseColor4fv(color.mV);
 	
 	gl_rect_2d(left, top, right, bottom); // red/yellow/green
 
@@ -594,7 +595,7 @@ void LLGLTexMemBar::draw()
 	color = (bound_mem < llfloor(max_bound_mem * texmem_lower_bound_scale)) ? LLColor4::green :
 		  	(bound_mem < max_bound_mem) ? LLColor4::yellow : LLColor4::red;
 	color[VALPHA] = .75f;
-	glColor4fv(color.mV);
+	gGL.diffuseColor4fv(color.mV);
 
 	gl_rect_2d(left, top, right, bottom);
 #else
diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp
index e0b07ed408e9ab051656e9202effe2a9af3d3979..da691a2d0c3a2071b1ec47986c0e3ddba9164e2c 100644
--- a/indra/newview/lltoast.cpp
+++ b/indra/newview/lltoast.cpp
@@ -113,7 +113,8 @@ LLToast::LLToast(const LLToast::Params& p)
 	mHideBtnPressed(false),
 	mIsTip(p.is_tip),
 	mWrapperPanel(NULL),
-	mIsFading(false)
+	mIsFading(false),
+	mIsHovered(false)
 {
 	mTimer.reset(new LLToastLifeTimer(this, p.lifetime_secs));
 
@@ -122,8 +123,6 @@ LLToast::LLToast(const LLToast::Params& p)
 	setCanDrag(FALSE);
 
 	mWrapperPanel = getChild<LLPanel>("wrapper_panel");
-	mWrapperPanel->setMouseEnterCallback(boost::bind(&LLToast::onToastMouseEnter, this));
-	mWrapperPanel->setMouseLeaveCallback(boost::bind(&LLToast::onToastMouseLeave, this));
 
 	setBackgroundOpaque(TRUE); // *TODO: obsolete
 	updateTransparency();
@@ -137,13 +136,13 @@ LLToast::LLToast(const LLToast::Params& p)
 	{
 		mHideBtn = getChild<LLButton>("hide_btn");
 		mHideBtn->setClickedCallback(boost::bind(&LLToast::hide,this));
-		mHideBtn->setMouseEnterCallback(boost::bind(&LLToast::onToastMouseEnter, this));
-		mHideBtn->setMouseLeaveCallback(boost::bind(&LLToast::onToastMouseLeave, this));
 	}
 
 	// init callbacks if present
 	if(!p.on_delete_toast().empty())
+	{
 		mOnDeleteToastSignal.connect(p.on_delete_toast());
+	}
 }
 
 void LLToast::reshape(S32 width, S32 height, BOOL called_from_parent)
@@ -239,7 +238,9 @@ void LLToast::setCanFade(bool can_fade)
 { 
 	mCanFade = can_fade; 
 	if(!mCanFade)
+	{
 		mTimer->stop();
+	}
 }
 
 //--------------------------------------------------------------------------
@@ -378,8 +379,11 @@ void LLToast::setVisible(BOOL show)
 	}
 }
 
-void LLToast::onToastMouseEnter()
+void LLToast::updateHoveredState()
 {
+	S32 x, y;
+	LLUI::getMousePositionScreen(&x, &y);
+
 	LLRect panel_rc = mWrapperPanel->calcScreenRect();
 	LLRect button_rc;
 	if(mHideBtn)
@@ -387,56 +391,83 @@ void LLToast::onToastMouseEnter()
 		button_rc = mHideBtn->calcScreenRect();
 	}
 
-	S32 x, y;
-	LLUI::getMousePositionScreen(&x, &y);
-
-	if(panel_rc.pointInRect(x, y) || button_rc.pointInRect(x, y))
+	if (!panel_rc.pointInRect(x, y) && !button_rc.pointInRect(x, y))
 	{
-		mOnToastHoverSignal(this, MOUSE_ENTER);
-
-		updateTransparency();
+		// mouse is not over this toast
+		mIsHovered = false;
+	}
+	else
+	{
+		bool is_overlapped_by_other_floater = false;
 
-		//toasts fading is management by Screen Channel
+		const child_list_t* child_list = gFloaterView->getChildList();
 
-		sendChildToFront(mHideBtn);
-		if(mHideBtn && mHideBtn->getEnabled())
+		// find this toast in gFloaterView child list to check whether any floater
+		// with higher Z-order is visible under the mouse pointer overlapping this toast
+		child_list_const_reverse_iter_t r_iter = std::find(child_list->rbegin(), child_list->rend(), this);
+		if (r_iter != child_list->rend())
 		{
-			mHideBtn->setVisible(TRUE);
+			// skip this toast and proceed to views above in Z-order
+			for (++r_iter; r_iter != child_list->rend(); ++r_iter)
+			{
+				LLView* view = *r_iter;
+				is_overlapped_by_other_floater = view->isInVisibleChain() && view->calcScreenRect().pointInRect(x, y);
+				if (is_overlapped_by_other_floater)
+				{
+					break;
+				}
+			}
 		}
-		mToastMouseEnterSignal(this, getValue());
-	}
-}
 
-void LLToast::onToastMouseLeave()
-{
-	LLRect panel_rc = mWrapperPanel->calcScreenRect();
-	LLRect button_rc;
-	if(mHideBtn)
-	{
-		button_rc = mHideBtn->calcScreenRect();
+		mIsHovered = !is_overlapped_by_other_floater;
 	}
 
-	S32 x, y;
-	LLUI::getMousePositionScreen(&x, &y);
-
-	if( !panel_rc.pointInRect(x, y) && !button_rc.pointInRect(x, y))
-	{
-		mOnToastHoverSignal(this, MOUSE_LEAVE);
-
-		updateTransparency();
-
-		//toasts fading is management by Screen Channel
-
-		if(mHideBtn && mHideBtn->getEnabled())
+	LLToastLifeTimer* timer = getTimer();
+	
+	if (timer)
+	{	
+		// Started timer means the mouse had left the toast previously.
+		// If toast is hovered in the current frame we should handle
+		// a mouse enter event.
+		if(timer->getStarted() && mIsHovered)
+		{
+			mOnToastHoverSignal(this, MOUSE_ENTER);
+			
+			updateTransparency();
+			
+			//toasts fading is management by Screen Channel
+			
+			sendChildToFront(mHideBtn);
+			if(mHideBtn && mHideBtn->getEnabled())
+			{
+				mHideBtn->setVisible(TRUE);
+			}
+			
+			mToastMouseEnterSignal(this, getValue());
+		}
+		// Stopped timer means the mouse had entered the toast previously.
+		// If the toast is not hovered in the current frame we should handle
+		// a mouse leave event.
+		else if(!timer->getStarted() && !mIsHovered)
 		{
-			if( mHideBtnPressed )
+			mOnToastHoverSignal(this, MOUSE_LEAVE);
+			
+			updateTransparency();
+			
+			//toasts fading is management by Screen Channel
+			
+			if(mHideBtn && mHideBtn->getEnabled())
 			{
-				mHideBtnPressed = false;
-				return;
+				if( mHideBtnPressed )
+				{
+					mHideBtnPressed = false;
+					return;
+				}
+				mHideBtn->setVisible(FALSE);
 			}
-			mHideBtn->setVisible(FALSE);		
+			
+			mToastMouseLeaveSignal(this, getValue());
 		}
-		mToastMouseLeaveSignal(this, getValue());
 	}
 }
 
@@ -495,13 +526,6 @@ void LLNotificationsUI::LLToast::startTimer()
 	}
 }
 
-bool LLToast::isHovered()
-{
-	S32 x, y;
-	LLUI::getMousePositionScreen(&x, &y);
-	return mWrapperPanel->calcScreenRect().pointInRect(x, y);
-}
-
 //--------------------------------------------------------------------------
 
 BOOL LLToast::handleMouseDown(S32 x, S32 y, MASK mask)
@@ -536,3 +560,14 @@ S32	LLToast::notifyParent(const LLSD& info)
 
 	return LLModalDialog::notifyParent(info);
 }
+
+//static
+void LLToast::updateClass()
+{
+	for (LLInstanceTracker<LLToast>::instance_iter iter = LLInstanceTracker<LLToast>::beginInstances(); iter != LLInstanceTracker<LLToast>::endInstances(); ) 
+	{
+		LLToast& toast = *iter++;
+		
+		toast.updateHoveredState();
+	}
+}
diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h
index 242f786bf2e9dfbbd34d49111e7e93304adbaac4..0b067289350f55976ec5ed58578e6293279e14ef 100644
--- a/indra/newview/lltoast.h
+++ b/indra/newview/lltoast.h
@@ -27,7 +27,7 @@
 #ifndef LL_LLTOAST_H
 #define LL_LLTOAST_H
 
-
+#include "llinstancetracker.h"
 #include "llpanel.h"
 #include "llmodaldialog.h"
 #include "lleventtimer.h"
@@ -69,7 +69,7 @@ private :
  * Represents toast pop-up.
  * This is a parent view for all toast panels.
  */
-class LLToast : public LLModalDialog
+class LLToast : public LLModalDialog, public LLInstanceTracker<LLToast>
 {
 	friend class LLToastLifeTimer;
 public:
@@ -102,6 +102,8 @@ class LLToast : public LLModalDialog
 
 		Params();
 	};
+	
+	static void updateClass();
 
 	LLToast(const LLToast::Params& p);
 	virtual ~LLToast();
@@ -120,7 +122,7 @@ class LLToast : public LLModalDialog
 	/** Start lifetime/fading timer */
 	virtual void startTimer();
 
-	bool isHovered();
+	bool isHovered() { return mIsHovered; }
 
 	// Operating with toasts
 	// insert a panel to a toast
@@ -196,16 +198,13 @@ class LLToast : public LLModalDialog
 
 	virtual S32	notifyParent(const LLSD& info);
 
-	LLHandle<LLToast> getHandle() { mHandle.bind(this); return mHandle; }
+	LLHandle<LLToast> getHandle() const { return getDerivedHandle<LLToast>(); }
 
 protected:
 	void updateTransparency();
 
 private:
-
-	void onToastMouseEnter();
-
-	void onToastMouseLeave();
+	void updateHoveredState();
 
 	void expire();
 
@@ -215,7 +214,7 @@ class LLToast : public LLModalDialog
 	LLUUID				mSessionID;
 	LLNotificationPtr	mNotification;
 
-	LLRootHandle<LLToast>	mHandle;
+	//LLRootHandle<LLToast>	mHandle;
 		
 	LLPanel* mWrapperPanel;
 
@@ -224,7 +223,7 @@ class LLToast : public LLModalDialog
 
 	F32			mToastLifetime; // in seconds
 	F32			mToastFadingTime; // in seconds
-
+	
 	LLPanel*		mPanel;
 	LLButton*		mHideBtn;
 
@@ -236,6 +235,7 @@ class LLToast : public LLModalDialog
 	bool		mIsHidden;  // this flag is TRUE when a toast has faded or was hidden with (x) button (EXT-1849)
 	bool		mIsTip;
 	bool		mIsFading;
+	bool		mIsHovered;
 
 	commit_signal_t mToastMouseEnterSignal;
 	commit_signal_t mToastMouseLeaveSignal;
diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp
index 6873cf058aed7179d46003050fe7fcbc4f111e1d..de305bf3d9d3de96586d68e4c8fb7845509577c4 100644
--- a/indra/newview/lltoastnotifypanel.cpp
+++ b/indra/newview/lltoastnotifypanel.cpp
@@ -91,8 +91,6 @@ mCloseNotificationOnDestroy(true)
 		sFont = LLFontGL::getFontSansSerif();
 		sFontSmall = LLFontGL::getFontSansSerifSmall();
 	}
-	// clicking on a button does not steal current focus
-	setIsChrome(TRUE);
 	// initialize
 	setFocusRoot(!mIsTip);
 	// get a form for the notification
diff --git a/indra/newview/lltool.h b/indra/newview/lltool.h
index d3edabb48669c3f00888ce19f5195837f6f2364a..ecc435d84413e9373b27f16e9c0ca0c4c6753d65 100644
--- a/indra/newview/lltool.h
+++ b/indra/newview/lltool.h
@@ -68,7 +68,7 @@ class LLTool
 	virtual void	localPointToScreen(S32 local_x, S32 local_y, S32* screen_x, S32* screen_y) const
 							{ *screen_x = local_x; *screen_y = local_y;	}
 
-	virtual std::string getName() const	{ return mName; }
+	virtual const std::string& getName() const	{ return mName; }
 
 	// New virtual functions
 	virtual LLViewerObject*	getEditingObject()		{ return NULL; }
diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp
deleted file mode 100644
index c4f599561df396184fa6f4ad1204074050578ed8..0000000000000000000000000000000000000000
--- a/indra/newview/lltoolbar.cpp
+++ /dev/null
@@ -1,365 +0,0 @@
-/** 
- * @file lltoolbar.cpp
- * @author James Cook, Richard Nelson
- * @brief Large friendly buttons at bottom of screen.
- *
- * $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 "llviewerprecompiledheaders.h"
-
-#include "lltoolbar.h"
-
-#include "imageids.h"
-#include "llfloaterreg.h"
-#include "llfontgl.h"
-#include "llflyoutbutton.h"
-#include "llrect.h"
-#include "llparcel.h"
-
-#include "llagent.h"
-#include "llagentwearables.h"
-#include "llbutton.h"
-#include "llfocusmgr.h"
-#include "llviewercontrol.h"
-#include "llmenucommands.h"
-#include "llimview.h"
-#include "lluiconstants.h"
-#include "llvoavatarself.h"
-#include "lltooldraganddrop.h"
-#include "llfloaterinventory.h"
-#include "llfloaterchatterbox.h"
-#include "llfloatersnapshot.h"
-#include "llinventorypanel.h"
-#include "lltoolmgr.h"
-#include "llui.h"
-#include "llviewermenu.h"
-//#include "llfirstuse.h"
-#include "llpanelblockedlist.h"
-#include "llscrolllistctrl.h"
-#include "llscrolllistitem.h"
-#include "llscrolllistcell.h"
-#include "llviewerparcelmgr.h"
-#include "lluictrlfactory.h"
-#include "llviewerwindow.h"
-#include "lltoolgrab.h"
-#include "llcombobox.h"
-#include "lllayoutstack.h"
-
-#if LL_DARWIN
-
-	#include "llresizehandle.h"
-
-#endif // LL_DARWIN
-
-//
-// Globals
-//
-
-LLToolBar *gToolBar = NULL;
-
-//
-// Statics
-//
-F32	LLToolBar::sInventoryAutoOpenTime = 1.f;
-
-//
-// Functions
-//
-
-LLToolBar::LLToolBar()
-	: LLPanel(),
-
-	mInventoryAutoOpen(FALSE),
-	mNumUnreadIMs(0)	
-#if LL_DARWIN
-	, mResizeHandle(NULL)
-#endif // LL_DARWIN
-{
-	setIsChrome(TRUE);
-	setFocusRoot(TRUE);
-	
-	mCommitCallbackRegistrar.add("HandleCommunicate", &LLToolBar::onClickCommunicate);
-}
-
-
-BOOL LLToolBar::postBuild()
-{
-	for (child_list_const_iter_t child_iter = getChildList()->begin();
-		 child_iter != getChildList()->end(); ++child_iter)
-	{
-		LLView *view = *child_iter;
-		LLButton* buttonp = dynamic_cast<LLButton*>(view);
-		if(buttonp)
-		{
-			buttonp->setSoundFlags(LLView::SILENT);
-		}
-	}
-
-#if LL_DARWIN
-	if(mResizeHandle == NULL)
-	{
-		LLRect rect(0, 0, RESIZE_HANDLE_WIDTH, RESIZE_HANDLE_HEIGHT);
-		LLResizeHandle::Params p;
-		p.name("");
-		p.rect(rect);
-		p.min_width(RESIZE_HANDLE_WIDTH);
-		p.min_height(RESIZE_HANDLE_HEIGHT);
-		p.enabled(false);
-		mResizeHandle = LLUICtrlFactory::create<LLResizeHandle>(p);
-		addChildInBack(mResizeHandle);
-		LLLayoutStack* toolbar_stack = getChild<LLLayoutStack>("toolbar_stack");
-		toolbar_stack->reshape(toolbar_stack->getRect().getWidth() - RESIZE_HANDLE_WIDTH, toolbar_stack->getRect().getHeight());
-	}
-#endif // LL_DARWIN
-
-	layoutButtons();
-
-	return TRUE;
-}
-
-LLToolBar::~LLToolBar()
-{
-	// LLView destructor cleans up children
-}
-
-
-BOOL LLToolBar::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
-									 EDragAndDropType cargo_type,
-									 void* cargo_data,
-									 EAcceptance* accept,
-									 std::string& tooltip_msg)
-{
-	LLButton* inventory_btn = getChild<LLButton>("inventory_btn");
-	if (!inventory_btn) return FALSE;
-
-	LLRect button_screen_rect;
-	inventory_btn->localRectToScreen(inventory_btn->getRect(),&button_screen_rect);
-	
-	const LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel();
-	if(active_panel)
-	{
-		mInventoryAutoOpen = FALSE;
-	}
-	else if (button_screen_rect.pointInRect(x, y))
-	{
-		if (mInventoryAutoOpen)
-		{
-			if (!active_panel && 
-				mInventoryAutoOpenTimer.getElapsedTimeF32() > sInventoryAutoOpenTime)
-			{
-				LLFloaterInventory::showAgentInventory();
-			}
-		}
-		else
-		{
-			mInventoryAutoOpen = TRUE;
-			mInventoryAutoOpenTimer.reset();
-		}
-	}
-
-	return LLPanel::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, accept, tooltip_msg);
-}
-
-// static
-void LLToolBar::toggle(void*)
-{
-	BOOL show = gSavedSettings.getBOOL("ShowToolBar");                      
-	gSavedSettings.setBOOL("ShowToolBar", !show);                           
-	gToolBar->setVisible(!show);
-}
-
-
-// static
-BOOL LLToolBar::visible(void*)
-{
-	return gToolBar->getVisible();
-}
-
-
-void LLToolBar::layoutButtons()
-{
-#if LL_DARWIN
-	const S32 FUDGE_WIDTH_OF_SCREEN = 4;                                    
-	S32 width = gViewerWindow->getWindowWidthScaled() + FUDGE_WIDTH_OF_SCREEN;   
-	S32 pad = 2;
-
-	// this function may be called before postBuild(), in which case mResizeHandle won't have been set up yet.
-	if(mResizeHandle != NULL)
-	{
-		// Only when running in windowed mode on the Mac, leave room for a resize widget on the right edge of the bar.
-		width -= RESIZE_HANDLE_WIDTH;
-
-		LLRect r;
-		r.mLeft = width - pad;
-		r.mBottom = 0;
-		r.mRight = r.mLeft + RESIZE_HANDLE_WIDTH;
-		r.mTop = r.mBottom + RESIZE_HANDLE_HEIGHT;
-		mResizeHandle->setRect(r);
-		mResizeHandle->setVisible(TRUE);
-	}
-#endif // LL_DARWIN
-}
-
-
-// virtual
-void LLToolBar::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
-	LLPanel::reshape(width, height, called_from_parent);
-
-	layoutButtons();
-}
-
-
-// Per-frame updates of visibility
-void LLToolBar::refresh()
-{
-	BOOL show = gSavedSettings.getBOOL("ShowToolBar");
-	BOOL mouselook = gAgent.cameraMouselook();
-	setVisible(show && !mouselook);
-
-	if (isInVisibleChain())
-	{
-		updateCommunicateList();
-	}
-}
-
-void LLToolBar::updateCommunicateList()
-{
-	LLFlyoutButton* communicate_button = getChild<LLFlyoutButton>("communicate_btn");
-	LLSD selected = communicate_button->getValue();
-
-	communicate_button->removeall();
-
-	//LLFloater* frontmost_floater = LLFloaterChatterBox::getInstance()->getActiveFloater();
-	LLScrollListItem* itemp = NULL;
-
-	LLSD contact_sd;
-	contact_sd["value"] = "contacts";
-	/*contact_sd["columns"][0]["value"] = LLFloaterMyFriends::getInstance()->getShortTitle(); 
-	if (LLFloaterMyFriends::getInstance() == frontmost_floater)
-	{
-		contact_sd["columns"][0]["font"]["name"] = "SANSSERIF_SMALL"; 
-		contact_sd["columns"][0]["font"]["style"] = "BOLD"; 
-		// make sure current tab is selected in list
-		if (selected.isUndefined())
-		{
-			selected = "contacts";
-		}
-	}*/
-	itemp = communicate_button->addElement(contact_sd, ADD_TOP);
-
-	communicate_button->addSeparator(ADD_TOP);
-	communicate_button->add(getString("Redock Windows"), LLSD("redock"), ADD_TOP);
-	communicate_button->addSeparator(ADD_TOP);
-	communicate_button->add(getString("Blocked List"), LLSD("mute list"), ADD_TOP);
-
-	std::set<LLHandle<LLFloater> >::const_iterator floater_handle_it;
-
-	/*if (gIMMgr->getIMFloaterHandles().size() > 0)
-	{
-		communicate_button->addSeparator(ADD_TOP);
-	}
-
-	for(floater_handle_it = gIMMgr->getIMFloaterHandles().begin(); floater_handle_it != gIMMgr->getIMFloaterHandles().end(); ++floater_handle_it)
-	{
-		LLFloaterIMPanel* im_floaterp = (LLFloaterIMPanel*)floater_handle_it->get();
-		if (im_floaterp)
-		{
-			std::string floater_title = im_floaterp->getNumUnreadMessages() > 0 ? "*" : "";
-			floater_title.append(im_floaterp->getShortTitle());
-			LLSD im_sd;
-			im_sd["value"] = im_floaterp->getSessionID();
-			im_sd["columns"][0]["value"] = floater_title;
-			if (im_floaterp  == frontmost_floater)
-			{
-				im_sd["columns"][0]["font"]["name"] = "SANSSERIF_SMALL";
-				im_sd["columns"][0]["font"]["style"] = "BOLD";
-				if (selected.isUndefined())
-				{
-					selected = im_floaterp->getSessionID();
-				}
-			}
-			itemp = communicate_button->addElement(im_sd, ADD_TOP);
-		}
-	}*/
-
-	communicate_button->setValue(selected);
-}
-
-
-// static
-void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data)
-{
-	LLFlyoutButton* communicate_button = dynamic_cast<LLFlyoutButton*>(ctrl);
-	llassert_always(communicate_button);
-	
-	LLSD selected_option = communicate_button->getValue();
-    
-	if (selected_option.asString() == "contacts")
-	{
-		LLFloaterReg::showInstance("contacts", "friends");
-	}
-	else if (selected_option.asString() == "local chat")
-	{
-		LLFloaterReg::showInstance("communicate", "local");
-	}
-	else if (selected_option.asString() == "redock")
-	{
-		/*LLFloaterChatterBox* chatterbox_instance = LLFloaterChatterBox::getInstance();
-		if(chatterbox_instance)
-		{
-			chatterbox_instance->addFloater(LLFloaterMyFriends::getInstance(), FALSE);
-			
-			LLUUID session_to_show;
-		
-			std::set<LLHandle<LLFloater> >::const_iterator floater_handle_it;
-			for(floater_handle_it = gIMMgr->getIMFloaterHandles().begin(); floater_handle_it != gIMMgr->getIMFloaterHandles().end(); ++floater_handle_it)
-			{
-				LLFloater* im_floaterp = floater_handle_it->get();
-				if (im_floaterp)
-				{
-					if (im_floaterp->isFrontmost())
-					{
-						session_to_show = ((LLFloaterIMPanel*)im_floaterp)->getSessionID();
-					}
-					chatterbox_instance->addFloater(im_floaterp, FALSE);
-				}
-			}
-			LLFloaterReg::showInstance("communicate", session_to_show);
-		}*/
-	}
-	else if (selected_option.asString() == "mute list")
-	{
-		LLPanelBlockedList::showPanelAndSelect(LLUUID::null);
-	}
-	else if (selected_option.isUndefined()) // user just clicked the communicate button, treat as toggle
-	{
-		/*LLFloaterReg::toggleInstance("communicate");*/
-		}
-	else // otherwise selection_option is undifined or a specific IM session id
-	{
-		/*LLFloaterReg::showInstance("communicate", selected_option);*/
-	}
-}
-
-
diff --git a/indra/newview/lltoolbar.h b/indra/newview/lltoolbar.h
deleted file mode 100644
index 217b3c0ac80c84c2458b64c1a01a2944c88aceac..0000000000000000000000000000000000000000
--- a/indra/newview/lltoolbar.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/** 
- * @file lltoolbar.h
- * @brief Large friendly buttons at bottom of screen.
- *
- * $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_LLTOOLBAR_H
-#define LL_LLTOOLBAR_H
-
-#include "llpanel.h"
-
-#include "llframetimer.h"
-
-class LLResizeHandle;
-
-class LLToolBar
-:	public LLPanel
-{
-public:
-	LLToolBar();
-	~LLToolBar();
-
-	/*virtual*/ BOOL postBuild();
-
-	/*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
-									 EDragAndDropType cargo_type,
-									 void* cargo_data,
-									 EAcceptance* accept,
-									 std::string& tooltip_msg);
-
-	/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
-
-	static void toggle(void*);
-	static BOOL visible(void*);
-
-	// Move buttons to appropriate locations based on rect.
-	void layoutButtons();
-
-	// Per-frame refresh call
-	void refresh();
-
-	// callbacks
-	static void onClickCommunicate(LLUICtrl*, const LLSD&);
-
-	static F32 sInventoryAutoOpenTime;
-
-private:
-	void updateCommunicateList();
-
-
-private:
-	BOOL		mInventoryAutoOpen;
-	LLFrameTimer mInventoryAutoOpenTimer;
-	S32			mNumUnreadIMs;
-#if LL_DARWIN
-	LLResizeHandle *mResizeHandle;
-#endif // LL_DARWIN
-};
-
-extern LLToolBar *gToolBar;
-
-#endif
diff --git a/indra/newview/lltoolbarview.cpp b/indra/newview/lltoolbarview.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..eccb2cf2f15900301f90b63e3e101fcbe66e9fee
--- /dev/null
+++ b/indra/newview/lltoolbarview.cpp
@@ -0,0 +1,697 @@
+/** 
+ * @file lltoolbarview.cpp
+ * @author Merov Linden
+ * @brief User customizable toolbar class
+ *
+ * $LicenseInfo:firstyear=2011&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 "llviewerprecompiledheaders.h"
+
+#include "lltoolbarview.h"
+
+#include "llappviewer.h"
+#include "llbutton.h"
+#include "llclipboard.h"
+#include "lldir.h"
+#include "lldockablefloater.h"
+#include "lldockcontrol.h"
+#include "llimview.h"
+#include "lltransientfloatermgr.h"
+#include "lltoolbar.h"
+#include "lltooldraganddrop.h"
+#include "llxmlnode.h"
+
+#include "llagent.h"  // HACK for destinations guide on startup
+#include "llfloaterreg.h"  // HACK for destinations guide on startup
+#include "llviewercontrol.h"  // HACK for destinations guide on startup
+
+#include <boost/foreach.hpp>
+
+LLToolBarView* gToolBarView = NULL;
+
+static LLDefaultChildRegistry::Register<LLToolBarView> r("toolbar_view");
+
+void handleLoginToolbarSetup();
+
+bool isToolDragged()
+{
+	return (LLToolDragAndDrop::getInstance()->getSource() == LLToolDragAndDrop::SOURCE_VIEWER);
+}
+
+LLToolBarView::Toolbar::Toolbar()
+:	button_display_mode("button_display_mode"),
+	commands("command")
+{}
+
+LLToolBarView::ToolbarSet::ToolbarSet()
+:	left_toolbar("left_toolbar"),
+	right_toolbar("right_toolbar"),
+	bottom_toolbar("bottom_toolbar")
+{}
+
+
+LLToolBarView::LLToolBarView(const LLToolBarView::Params& p)
+:	LLUICtrl(p),
+	mDragStarted(false),
+	mShowToolbars(true),
+	mDragToolbarButton(NULL),
+	mToolbarsLoaded(false)
+{
+	for (S32 i = 0; i < TOOLBAR_COUNT; i++)
+	{
+		mToolbars[i] = NULL;
+	}
+}
+
+void LLToolBarView::initFromParams(const LLToolBarView::Params& p)
+{
+	// Initialize the base object
+	LLUICtrl::initFromParams(p);
+}
+
+LLToolBarView::~LLToolBarView()
+{
+	saveToolbars();
+}
+
+BOOL LLToolBarView::postBuild()
+{
+	mToolbars[TOOLBAR_LEFT]   = getChild<LLToolBar>("toolbar_left");
+	mToolbars[TOOLBAR_RIGHT]  = getChild<LLToolBar>("toolbar_right");
+	mToolbars[TOOLBAR_BOTTOM] = getChild<LLToolBar>("toolbar_bottom");
+
+	for (int i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+	{
+		mToolbars[i]->setStartDragCallback(boost::bind(LLToolBarView::startDragTool,_1,_2,_3));
+		mToolbars[i]->setHandleDragCallback(boost::bind(LLToolBarView::handleDragTool,_1,_2,_3,_4));
+		mToolbars[i]->setHandleDropCallback(boost::bind(LLToolBarView::handleDropTool,_1,_2,_3,_4));
+		mToolbars[i]->setButtonAddCallback(boost::bind(LLToolBarView::onToolBarButtonAdded,_1));
+		mToolbars[i]->setButtonRemoveCallback(boost::bind(LLToolBarView::onToolBarButtonRemoved,_1));
+	}
+
+	LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&handleLoginToolbarSetup));
+	
+	return TRUE;
+}
+
+S32 LLToolBarView::hasCommand(const LLCommandId& commandId) const
+{
+	S32 command_location = TOOLBAR_NONE;
+
+	for (S32 loc = TOOLBAR_FIRST; loc <= TOOLBAR_LAST; loc++)
+	{
+		if (mToolbars[loc]->hasCommand(commandId))
+		{
+			command_location = loc;
+			break;
+		}
+	}
+
+	return command_location;
+}
+
+S32 LLToolBarView::addCommand(const LLCommandId& commandId, EToolBarLocation toolbar, int rank)
+{
+	int old_rank;
+	removeCommand(commandId, old_rank);
+
+	S32 command_location = mToolbars[toolbar]->addCommand(commandId, rank);
+
+	return command_location;
+}
+
+S32 LLToolBarView::removeCommand(const LLCommandId& commandId, int& rank)
+{
+	S32 command_location = hasCommand(commandId);
+	rank = LLToolBar::RANK_NONE;
+
+	if (command_location != TOOLBAR_NONE)
+	{
+		rank = mToolbars[command_location]->removeCommand(commandId);
+	}
+
+	return command_location;
+}
+
+S32 LLToolBarView::enableCommand(const LLCommandId& commandId, bool enabled)
+{
+	S32 command_location = hasCommand(commandId);
+
+	if (command_location != TOOLBAR_NONE)
+	{
+		mToolbars[command_location]->enableCommand(commandId, enabled);
+	}
+
+	return command_location;
+}
+
+S32 LLToolBarView::stopCommandInProgress(const LLCommandId& commandId)
+{
+	S32 command_location = hasCommand(commandId);
+
+	if (command_location != TOOLBAR_NONE)
+	{
+		mToolbars[command_location]->stopCommandInProgress(commandId);
+	}
+
+	return command_location;
+}
+
+S32 LLToolBarView::flashCommand(const LLCommandId& commandId, bool flash)
+{
+	S32 command_location = hasCommand(commandId);
+
+	if (command_location != TOOLBAR_NONE)
+	{
+		mToolbars[command_location]->flashCommand(commandId, flash);
+	}
+
+	return command_location;
+}
+
+bool LLToolBarView::addCommandInternal(const LLCommandId& command, LLToolBar* toolbar)
+{
+	LLCommandManager& mgr = LLCommandManager::instance();
+	if (mgr.getCommand(command))
+	{
+		toolbar->addCommand(command);
+	}
+	else 
+	{
+		llwarns	<< "Toolbars creation : the command with id " << command.uuid().asString() << " cannot be found in the command manager" << llendl;
+		return false;
+	}
+	return true;
+}
+
+bool LLToolBarView::loadToolbars(bool force_default)
+{
+	LLToolBarView::ToolbarSet toolbar_set;
+	bool err = false;
+	
+	// Load the toolbars.xml file
+	std::string toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "toolbars.xml");
+	if (force_default)
+	{
+		toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "toolbars.xml");
+	}
+	else if (!gDirUtilp->fileExists(toolbar_file)) 
+	{
+		llwarns << "User toolbars def not found -> use default" << llendl;
+		toolbar_file = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "toolbars.xml");
+	}
+	
+	LLXMLNodePtr root;
+	if(!LLXMLNode::parseFile(toolbar_file, root, NULL))
+	{
+		llwarns << "Unable to load toolbars from file: " << toolbar_file << llendl;
+		err = true;
+	}
+	
+	if (!err && !root->hasName("toolbars"))
+	{
+		llwarns << toolbar_file << " is not a valid toolbars definition file" << llendl;
+		err = true;
+	}
+	
+	// Parse the toolbar settings
+	LLXUIParser parser;
+	if (!err)
+	{
+	parser.readXUI(root, toolbar_set, toolbar_file);
+	}
+	if (!err && !toolbar_set.validateBlock())
+	{
+		llwarns << "Unable to validate toolbars from file: " << toolbar_file << llendl;
+		err = true;
+	}
+	
+	if (err)
+	{
+		if (force_default)
+		{
+			llerrs << "Unable to load toolbars from default file : " << toolbar_file << llendl;
+		return false;
+	}
+		// Try to load the default toolbars
+		return loadToolbars(true);
+	}
+	
+	// Clear the toolbars now before adding the loaded commands and settings
+	for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+	{
+		if (mToolbars[i])
+		{
+			mToolbars[i]->clearCommandsList();
+		}
+	}
+	
+	// Add commands to each toolbar
+	if (toolbar_set.left_toolbar.isProvided() && mToolbars[TOOLBAR_LEFT])
+	{
+		if (toolbar_set.left_toolbar.button_display_mode.isProvided())
+		{
+			LLToolBarEnums::ButtonType button_type = toolbar_set.left_toolbar.button_display_mode;
+			mToolbars[TOOLBAR_LEFT]->setButtonType(button_type);
+		}
+		BOOST_FOREACH(const LLCommandId::Params& command_params, toolbar_set.left_toolbar.commands)
+		{
+			if (addCommandInternal(LLCommandId(command_params), mToolbars[TOOLBAR_LEFT]))
+			{
+				llwarns << "Error adding command '" << command_params.name() << "' to left toolbar." << llendl;
+			}
+		}
+	}
+	if (toolbar_set.right_toolbar.isProvided() && mToolbars[TOOLBAR_RIGHT])
+	{
+		if (toolbar_set.right_toolbar.button_display_mode.isProvided())
+		{
+			LLToolBarEnums::ButtonType button_type = toolbar_set.right_toolbar.button_display_mode;
+			mToolbars[TOOLBAR_RIGHT]->setButtonType(button_type);
+		}
+		BOOST_FOREACH(const LLCommandId::Params& command_params, toolbar_set.right_toolbar.commands)
+		{
+			if (addCommandInternal(LLCommandId(command_params), mToolbars[TOOLBAR_RIGHT]))
+			{
+				llwarns << "Error adding command '" << command_params.name() << "' to right toolbar." << llendl;
+			}
+		}
+	}
+	if (toolbar_set.bottom_toolbar.isProvided() && mToolbars[TOOLBAR_BOTTOM])
+	{
+		if (toolbar_set.bottom_toolbar.button_display_mode.isProvided())
+		{
+			LLToolBarEnums::ButtonType button_type = toolbar_set.bottom_toolbar.button_display_mode;
+			mToolbars[TOOLBAR_BOTTOM]->setButtonType(button_type);
+		}
+		BOOST_FOREACH(const LLCommandId::Params& command_params, toolbar_set.bottom_toolbar.commands)
+		{
+			if (addCommandInternal(LLCommandId(command_params), mToolbars[TOOLBAR_BOTTOM]))
+			{
+				llwarns << "Error adding command '" << command_params.name() << "' to bottom toolbar." << llendl;
+			}
+		}
+	}
+	mToolbarsLoaded = true;
+	return true;
+}
+
+bool LLToolBarView::clearToolbars()
+{
+	for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+	{
+		if (mToolbars[i])
+		{
+			mToolbars[i]->clearCommandsList();
+		}
+	}
+
+	return true;
+}
+
+//static
+bool LLToolBarView::loadDefaultToolbars()
+{
+	bool retval = false;
+
+	if (gToolBarView)
+	{
+		retval = gToolBarView->loadToolbars(true);
+		if (retval)
+		{
+			gToolBarView->saveToolbars();
+		}
+	}
+
+	return retval;
+}
+
+//static
+bool LLToolBarView::clearAllToolbars()
+{
+	bool retval = false;
+
+	if (gToolBarView)
+	{
+		retval = gToolBarView->clearToolbars();
+		if (retval)
+		{
+			gToolBarView->saveToolbars();
+		}
+	}
+
+	return retval;
+}
+
+void LLToolBarView::saveToolbars() const
+{
+	if (!mToolbarsLoaded)
+		return;
+	
+	// Build the parameter tree from the toolbar data
+	LLToolBarView::ToolbarSet toolbar_set;
+	if (mToolbars[TOOLBAR_LEFT])
+	{
+		toolbar_set.left_toolbar.button_display_mode = mToolbars[TOOLBAR_LEFT]->getButtonType();
+		addToToolset(mToolbars[TOOLBAR_LEFT]->getCommandsList(), toolbar_set.left_toolbar);
+	}
+	if (mToolbars[TOOLBAR_RIGHT])
+	{
+		toolbar_set.right_toolbar.button_display_mode = mToolbars[TOOLBAR_RIGHT]->getButtonType();
+		addToToolset(mToolbars[TOOLBAR_RIGHT]->getCommandsList(), toolbar_set.right_toolbar);
+	}
+	if (mToolbars[TOOLBAR_BOTTOM])
+	{
+		toolbar_set.bottom_toolbar.button_display_mode = mToolbars[TOOLBAR_BOTTOM]->getButtonType();
+		addToToolset(mToolbars[TOOLBAR_BOTTOM]->getCommandsList(), toolbar_set.bottom_toolbar);
+	}
+	
+	// Serialize the parameter tree
+	LLXMLNodePtr output_node = new LLXMLNode("toolbars", false);
+	LLXUIParser parser;
+	parser.writeXUI(output_node, toolbar_set);
+	
+	// Write the resulting XML to file
+	if(!output_node->isNull())
+	{
+		const std::string& filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "toolbars.xml");
+		LLFILE *fp = LLFile::fopen(filename, "w");
+		if (fp != NULL)
+		{
+			LLXMLNode::writeHeaderToFile(fp);
+			output_node->writeToFile(fp);
+			fclose(fp);
+		}
+	}
+}
+
+// Enumerate the commands in command_list and add them as Params to the toolbar
+void LLToolBarView::addToToolset(command_id_list_t& command_list, Toolbar& toolbar) const
+{
+	LLCommandManager& mgr = LLCommandManager::instance();
+
+	for (command_id_list_t::const_iterator it = command_list.begin();
+		 it != command_list.end();
+		 ++it)
+	{
+		LLCommand* command = mgr.getCommand(*it);
+		if (command)
+		{
+			LLCommandId::Params command_name_param;
+			command_name_param.name = command->name();
+			toolbar.commands.add(command_name_param);
+		}
+	}
+}
+
+void LLToolBarView::onToolBarButtonAdded(LLView* button)
+{
+	llassert(button);
+	
+	if (button->getName() == "speak")
+	{
+		// Add the "Speak" button as a control view in LLTransientFloaterMgr
+		// to prevent hiding the transient IM floater upon pressing "Speak".
+		LLTransientFloaterMgr::getInstance()->addControlView(button);
+		
+		// Redock incoming and/or outgoing call windows, if applicable
+		
+		LLFloater* incoming_floater = LLFloaterReg::getLastFloaterInGroup("incoming_call");
+		LLFloater* outgoing_floater = LLFloaterReg::getLastFloaterInGroup("outgoing_call");
+		
+		if (incoming_floater && incoming_floater->isShown())
+		{
+			LLCallDialog* incoming = dynamic_cast<LLCallDialog *>(incoming_floater);
+			llassert(incoming);
+			
+			LLDockControl* dock_control = incoming->getDockControl();
+			if (dock_control->getDock() == NULL)
+			{
+				incoming->dockToToolbarButton("speak");
+			}
+		}
+		
+		if (outgoing_floater && outgoing_floater->isShown())
+		{
+			LLCallDialog* outgoing = dynamic_cast<LLCallDialog *>(outgoing_floater);
+			llassert(outgoing);
+			
+			LLDockControl* dock_control = outgoing->getDockControl();
+			if (dock_control->getDock() == NULL)
+			{
+				outgoing->dockToToolbarButton("speak");
+			}
+		}
+	}
+	else if (button->getName() == "voice")
+	{
+		// Add the "Voice controls" button as a control view in LLTransientFloaterMgr
+		// to prevent hiding the transient IM floater upon pressing "Voice controls".
+		LLTransientFloaterMgr::getInstance()->addControlView(button);
+	}
+}
+
+void LLToolBarView::onToolBarButtonRemoved(LLView* button)
+{
+	llassert(button);
+
+	if (button->getName() == "speak")
+	{
+		LLTransientFloaterMgr::getInstance()->removeControlView(button);
+		
+		// Undock incoming and/or outgoing call windows
+		
+		LLFloater* incoming_floater = LLFloaterReg::getLastFloaterInGroup("incoming_call");
+		LLFloater* outgoing_floater = LLFloaterReg::getLastFloaterInGroup("outgoing_call");
+		
+		if (incoming_floater && incoming_floater->isShown())
+		{
+			LLDockableFloater* incoming = dynamic_cast<LLDockableFloater *>(incoming_floater);
+			llassert(incoming);
+
+			LLDockControl* dock_control = incoming->getDockControl();
+			dock_control->setDock(NULL);
+		}
+		
+		if (outgoing_floater && outgoing_floater->isShown())
+		{
+			LLDockableFloater* outgoing = dynamic_cast<LLDockableFloater *>(outgoing_floater);
+			llassert(outgoing);
+
+			LLDockControl* dock_control = outgoing->getDockControl();
+			dock_control->setDock(NULL);
+		}
+	}
+	else if (button->getName() == "voice")
+	{
+		LLTransientFloaterMgr::getInstance()->removeControlView(button);
+	}
+}
+
+void LLToolBarView::draw()
+{
+	LLRect toolbar_rects[TOOLBAR_COUNT];
+	
+	for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+	{
+		if (mToolbars[i])
+		{
+			LLLayoutStack::ELayoutOrientation orientation = LLToolBarEnums::getOrientation(mToolbars[i]->getSideType());
+
+			if (orientation == LLLayoutStack::HORIZONTAL)
+			{
+				mToolbars[i]->getParent()->reshape(mToolbars[i]->getParent()->getRect().getWidth(), mToolbars[i]->getRect().getHeight());
+			}
+			else
+			{
+				mToolbars[i]->getParent()->reshape(mToolbars[i]->getRect().getWidth(), mToolbars[i]->getParent()->getRect().getHeight());
+			}
+
+			mToolbars[i]->localRectToOtherView(mToolbars[i]->getLocalRect(), &toolbar_rects[i], this);
+		}
+	}
+	
+	for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+	{
+		mToolbars[i]->getParent()->setVisible(mShowToolbars 
+											&& (mToolbars[i]->hasButtons() 
+											|| isToolDragged()));
+	}
+
+	// Draw drop zones if drop of a tool is active
+	if (isToolDragged())
+	{
+		LLColor4 drop_color = LLUIColorTable::instance().getColor( "ToolbarDropZoneColor" );
+
+		for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+		{
+			gl_rect_2d(toolbar_rects[i], drop_color, TRUE);
+		}
+	}
+	
+	LLUICtrl::draw();
+}
+
+
+// ----------------------------------------
+// Drag and Drop Handling
+// ----------------------------------------
+
+
+void LLToolBarView::startDragTool(S32 x, S32 y, LLToolBarButton* toolbarButton)
+{
+	resetDragTool(toolbarButton);
+
+	// Flag the tool dragging but don't start it yet
+	LLToolDragAndDrop::getInstance()->setDragStart( x, y );
+}
+
+BOOL LLToolBarView::handleDragTool( S32 x, S32 y, const LLUUID& uuid, LLAssetType::EType type)
+{
+	if (LLToolDragAndDrop::getInstance()->isOverThreshold( x, y ))
+	{
+		if (!gToolBarView->mDragStarted)
+		{
+			// Start the tool dragging:
+			
+			// First, create the global drag and drop object
+			std::vector<EDragAndDropType> types;
+			uuid_vec_t cargo_ids;
+			types.push_back(DAD_WIDGET);
+			cargo_ids.push_back(uuid);
+			gClipboard.setSourceObject(uuid,LLAssetType::AT_WIDGET);
+			LLToolDragAndDrop::ESource src = LLToolDragAndDrop::SOURCE_VIEWER;
+			LLUUID srcID;
+			LLToolDragAndDrop::getInstance()->beginMultiDrag(types, cargo_ids, src, srcID);
+
+			// Second, stop the command if it is in progress and requires stopping!
+			LLCommandId command_id = LLCommandId(uuid);
+			gToolBarView->stopCommandInProgress(command_id);
+
+			gToolBarView->mDragStarted = true;
+			return TRUE;
+		}
+		else
+		{
+			MASK mask = 0;
+			return LLToolDragAndDrop::getInstance()->handleHover( x, y, mask );
+		}
+	}
+	return FALSE;
+}
+
+BOOL LLToolBarView::handleDropTool( void* cargo_data, S32 x, S32 y, LLToolBar* toolbar)
+{
+	BOOL handled = FALSE;
+	LLInventoryItem* inv_item = (LLInventoryItem*)cargo_data;
+	
+	LLAssetType::EType type = inv_item->getType();
+	if (type == LLAssetType::AT_WIDGET)
+	{
+		handled = TRUE;
+		// Get the command from its uuid
+		LLCommandManager& mgr = LLCommandManager::instance();
+		LLCommandId command_id(inv_item->getUUID());
+		LLCommand* command = mgr.getCommand(command_id);
+		if (command)
+		{
+			// Suppress the command from the toolbars (including the one it's dropped in, 
+			// this will handle move position).
+			S32 old_toolbar_loc = gToolBarView->hasCommand(command_id);
+			LLToolBar* old_toolbar = NULL;
+
+			if (old_toolbar_loc != TOOLBAR_NONE)
+			{
+				llassert(gToolBarView->mDragToolbarButton);
+				old_toolbar = gToolBarView->mDragToolbarButton->getParentByType<LLToolBar>();
+				if (old_toolbar->isReadOnly() && toolbar->isReadOnly())
+				{
+					// do nothing
+				}
+				else
+				{
+					int old_rank = LLToolBar::RANK_NONE;
+					gToolBarView->removeCommand(command_id, old_rank);
+				}
+			}
+
+			// Convert the (x,y) position in rank in toolbar
+			if (!toolbar->isReadOnly())
+			{
+				int new_rank = toolbar->getRankFromPosition(x,y);
+				toolbar->addCommand(command_id, new_rank);
+			}
+			
+			// Save the new toolbars configuration
+			gToolBarView->saveToolbars();
+		}
+		else
+		{
+			llwarns << "Command couldn't be found in command manager" << llendl;
+		}
+	}
+
+	resetDragTool(NULL);
+	return handled;
+}
+
+void LLToolBarView::resetDragTool(LLToolBarButton* toolbarButton)
+{
+	// Clear the saved command, toolbar and rank
+	gToolBarView->mDragStarted = false;
+	gToolBarView->mDragToolbarButton = toolbarButton;
+}
+
+void LLToolBarView::setToolBarsVisible(bool visible)
+{
+	mShowToolbars = visible;
+}
+
+bool LLToolBarView::isModified() const
+{
+	bool modified = false;
+
+	for (S32 i = TOOLBAR_FIRST; i <= TOOLBAR_LAST; i++)
+	{
+		modified |= mToolbars[i]->isModified();
+	}
+
+	return modified;
+}
+
+
+//
+// HACK to bring up destinations guide at startup
+//
+
+void handleLoginToolbarSetup()
+{
+	// Open the destinations guide by default on first login, per Rhett
+	if (gSavedPerAccountSettings.getBOOL("DisplayDestinationsOnInitialRun") || gAgent.isFirstLogin())
+	{
+		LLFloaterReg::showInstance("destinations");
+
+		gSavedPerAccountSettings.setBOOL("DisplayDestinationsOnInitialRun", FALSE);
+	}
+}
+
diff --git a/indra/newview/lltoolbarview.h b/indra/newview/lltoolbarview.h
new file mode 100644
index 0000000000000000000000000000000000000000..be66bcae3614feb779a67a2f62e3597c44af3932
--- /dev/null
+++ b/indra/newview/lltoolbarview.h
@@ -0,0 +1,137 @@
+/** 
+ * @file lltoolbarview.h
+ * @author Merov Linden
+ * @brief User customizable toolbar class
+ *
+ * $LicenseInfo:firstyear=2011&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$
+ */
+
+#ifndef LL_LLTOOLBARVIEW_H
+#define LL_LLTOOLBARVIEW_H
+
+#include "lluictrl.h"
+#include "lltoolbar.h"
+#include "llcommandmanager.h"
+
+class LLUICtrlFactory;
+
+// Parent of all LLToolBar
+
+class LLToolBarView : public LLUICtrl
+{
+public:
+	typedef enum
+	{
+		TOOLBAR_NONE = 0,
+		TOOLBAR_LEFT,
+		TOOLBAR_RIGHT,
+		TOOLBAR_BOTTOM,
+
+		TOOLBAR_COUNT,
+
+		TOOLBAR_FIRST = TOOLBAR_LEFT,
+		TOOLBAR_LAST = TOOLBAR_BOTTOM,
+	} EToolBarLocation;
+
+	// Xui structure of the toolbar panel
+	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> {};
+
+	// Note: valid children for LLToolBarView are stored in this registry
+	typedef LLDefaultChildRegistry child_registry_t;
+	
+	// Xml structure of the toolbars.xml setting
+	// Those live in a toolbars.xml found in app_settings (for the default) and in
+	// the user folder for the user specific (saved) settings
+	struct Toolbar : public LLInitParam::Block<Toolbar>
+	{
+		Mandatory<LLToolBarEnums::ButtonType>	button_display_mode;
+		Multiple<LLCommandId::Params>	commands;
+
+		Toolbar();
+	};
+	struct ToolbarSet : public LLInitParam::Block<ToolbarSet>
+	{
+		Optional<Toolbar>	left_toolbar,
+							right_toolbar,
+							bottom_toolbar;
+
+		ToolbarSet();
+	};
+
+	// Derived methods
+	virtual ~LLToolBarView();
+	virtual BOOL postBuild();
+	virtual void draw();
+
+	// Toolbar view interface with the rest of the world
+	// Checks if the commandId is being used somewhere in one of the toolbars, returns EToolBarLocation
+	S32 hasCommand(const LLCommandId& commandId) const;
+	S32 addCommand(const LLCommandId& commandId, EToolBarLocation toolbar, int rank = LLToolBar::RANK_NONE);
+	S32 removeCommand(const LLCommandId& commandId, int& rank);	// Sets the rank the removed command was at, RANK_NONE if not found
+	S32 enableCommand(const LLCommandId& commandId, bool enabled);
+	S32 stopCommandInProgress(const LLCommandId& commandId);
+	S32 flashCommand(const LLCommandId& commandId, bool flash);
+
+	// Loads the toolbars from the existing user or default settings
+	bool loadToolbars(bool force_default = false);	// return false if load fails
+	
+	// Clears all buttons off the toolbars
+	bool clearToolbars();
+	
+	void setToolBarsVisible(bool visible);
+
+	static bool loadDefaultToolbars();
+	static bool clearAllToolbars();
+	
+	static void startDragTool(S32 x, S32 y, LLToolBarButton* toolbarButton);
+	static BOOL handleDragTool(S32 x, S32 y, const LLUUID& uuid, LLAssetType::EType type);
+	static BOOL handleDropTool(void* cargo_data, S32 x, S32 y, LLToolBar* toolbar);
+	static void resetDragTool(LLToolBarButton* toolbarButton);
+
+	bool isModified() const;
+	
+protected:
+	friend class LLUICtrlFactory;
+	LLToolBarView(const Params&);
+
+	void initFromParams(const Params&);
+
+private:
+	void	saveToolbars() const;
+	bool	addCommandInternal(const LLCommandId& commandId, LLToolBar*	toolbar);
+	void	addToToolset(command_id_list_t& command_list, Toolbar& toolbar) const;
+
+	static void	onToolBarButtonAdded(LLView* button);
+	static void onToolBarButtonRemoved(LLView* button);
+
+	// Pointers to the toolbars handled by the toolbar view
+	LLToolBar*  mToolbars[TOOLBAR_COUNT];
+	bool		mToolbarsLoaded;
+	
+	bool				mDragStarted;
+	LLToolBarButton*	mDragToolbarButton;
+	bool				mShowToolbars;
+};
+
+extern LLToolBarView* gToolBarView;
+
+#endif  // LL_LLTOOLBARVIEW_H
diff --git a/indra/newview/lltoolbrush.cpp b/indra/newview/lltoolbrush.cpp
index 9782b90cf1b3f2233cf75c3072d4004c5491ea9a..aba43a971534def7c0b709438c1104522f0dd09c 100644
--- a/indra/newview/lltoolbrush.cpp
+++ b/indra/newview/lltoolbrush.cpp
@@ -507,12 +507,12 @@ void LLToolBrushLand::render()
 void LLToolBrushLand::renderOverlay(LLSurface& land, const LLVector3& pos_region,
 									const LLVector3& pos_world)
 {
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 	LLGLDepthTest mDepthTest(GL_TRUE);
-	glPushMatrix();
+	gGL.pushMatrix();
 	gGL.color4fv(OVERLAY_COLOR.mV);
-	glTranslatef(0.0f, 0.0f, 1.0f);
+	gGL.translatef(0.0f, 0.0f, 1.0f);
 	
 	S32 i = (S32) pos_region.mV[VX];
 	S32 j = (S32) pos_region.mV[VY];
@@ -566,7 +566,7 @@ void LLToolBrushLand::renderOverlay(LLSurface& land, const LLVector3& pos_region
 	}
 	gGL.end();
 
-	glPopMatrix();
+	gGL.popMatrix();
 }
 
 void LLToolBrushLand::determineAffectedRegions(region_list_t& regions,
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index 3e5ce427a80dfbe2551c8a51593ace4ad7fe85a8..8c32dfcb4de424dcc7881e8ebc49c703df0aa072 100644
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -57,6 +57,7 @@
 #include "llviewerwindow.h"
 #include "llvoavatarself.h"
 #include "llworld.h"
+#include "llclipboard.h"
 
 // syntactic sugar
 #define callMemberFunction(object,ptrToMember)  ((object).*(ptrToMember))
@@ -281,6 +282,8 @@ void LLCategoryDropDescendentsObserver::done()
 }
 */
 
+S32 LLToolDragAndDrop::sOperationId = 0;
+
 LLToolDragAndDrop::DragAndDropEntry::DragAndDropEntry(dragOrDrop3dImpl f_none,
 													  dragOrDrop3dImpl f_self,
 													  dragOrDrop3dImpl f_avatar,
@@ -625,6 +628,8 @@ BOOL LLToolDragAndDrop::handleToolTip(S32 x, S32 y, MASK mask)
 void LLToolDragAndDrop::handleDeselect()
 {
 	mToolTipMsg.clear();
+
+	LLToolTipMgr::instance().blockToolTips();
 }
 
 // protected
@@ -641,6 +646,12 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop,
 
 	mToolTipMsg.clear();
 
+	// Increment the operation id for every drop
+	if (drop)
+	{
+		sOperationId++;
+	}
+
 	if (top_view)
 	{
 		handled = TRUE;
@@ -766,6 +777,21 @@ void LLToolDragAndDrop::dragOrDrop( S32 x, S32 y, MASK mask, BOOL drop,
 
 	if (!handled)
 	{
+		// Disallow drag and drop to 3D from the outbox
+		const LLUUID outbox_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX, false, false);
+		if (outbox_id.notNull())
+		{
+			for (S32 item_index = 0; item_index < (S32)mCargoIDs.size(); item_index++)
+			{
+				if (gInventory.isObjectDescendentOf(mCargoIDs[item_index], outbox_id))
+				{
+					*acceptance = ACCEPT_NO;
+					mToolTipMsg = LLTrans::getString("TooltipOutboxDragToWorld");
+					return;
+				}
+			}
+		}
+		
 		dragOrDrop3D( x, y, mask, drop, acceptance );
 	}
 }
@@ -802,7 +828,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)
 
 	LLViewerObject* hit_obj = pick_info.getObject();
 	LLSelectMgr::getInstance()->unhighlightAll();
-
+	bool highlight_object = false;
 	// Treat attachments as part of the avatar they are attached to.
 	if (hit_obj != NULL)
 	{
@@ -844,16 +870,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)
 		{
 			target = DT_OBJECT;
 			hit_face = pick_info.mObjectFace;
-			// if any item being dragged will be applied to the object under our cursor
-			// highlight that object
-			for (S32 i = 0; i < (S32)mCargoIDs.size(); i++)
-			{
-				if (mCargoTypes[i] != DAD_OBJECT || (pick_info.mKeyMask & MASK_CONTROL))
-				{
-					LLSelectMgr::getInstance()->highlightObjectAndFamily(hit_obj);
-					break;
-				}
-			}
+			highlight_object = true;
 		}
 	}
 	else if (pick_info.mPickType == LLPickInfo::PICK_LAND)
@@ -873,7 +890,7 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)
 			(U32)mLastAccept,
 			(U32)callMemberFunction(*this, 
 									LLDragAndDropDictionary::instance().get(dad_type, target))
-			(hit_obj, hit_face, pick_info.mKeyMask, FALSE));
+				(hit_obj, hit_face, pick_info.mKeyMask, FALSE));
 	}
 
 	if (mDrop && ((U32)mLastAccept >= ACCEPT_YES_COPY_SINGLE))
@@ -899,6 +916,19 @@ void LLToolDragAndDrop::pick(const LLPickInfo& pick_info)
 		}
 	}
 
+	if (highlight_object && mLastAccept > ACCEPT_NO_LOCKED)
+	{
+		// if any item being dragged will be applied to the object under our cursor
+		// highlight that object
+		for (S32 i = 0; i < (S32)mCargoIDs.size(); i++)
+		{
+			if (mCargoTypes[i] != DAD_OBJECT || (pick_info.mKeyMask & MASK_CONTROL))
+			{
+				LLSelectMgr::getInstance()->highlightObjectAndFamily(hit_obj);
+				break;
+			}
+		}
+	}
 	ECursorType cursor = acceptanceToCursor( mLastAccept );
 	gViewerWindow->getWindow()->setCursor( cursor );
 
@@ -2495,6 +2525,10 @@ LLInventoryObject* LLToolDragAndDrop::locateInventory(
 			item = (LLViewerInventoryItem*)preview->getDragItem();
 		}
 	}
+	else if(mSource == SOURCE_VIEWER)
+	{
+		item = (LLViewerInventoryItem*)gClipboard.getSourceObject();
+	}
 	if(item) return item;
 	if(cat) return cat;
 	return NULL;
diff --git a/indra/newview/lltooldraganddrop.h b/indra/newview/lltooldraganddrop.h
index 7b8cce3dc7f0c6e7fbbc2fd30f40e0bd77311724..188d36cd1b907b5f65da81fb15f8764e9883f32c 100644
--- a/indra/newview/lltooldraganddrop.h
+++ b/indra/newview/lltooldraganddrop.h
@@ -66,7 +66,8 @@ class LLToolDragAndDrop : public LLTool, public LLSingleton<LLToolDragAndDrop>
 		SOURCE_AGENT,
 		SOURCE_WORLD,
 		SOURCE_NOTECARD,
-		SOURCE_LIBRARY
+		SOURCE_LIBRARY,
+		SOURCE_VIEWER
 	};
 
 	void beginDrag(EDragAndDropType type,
@@ -85,6 +86,9 @@ class LLToolDragAndDrop : public LLTool, public LLSingleton<LLToolDragAndDrop>
 	EAcceptance getLastAccept() { return mLastAccept; }
 
 	boost::signals2::connection setEndDragCallback( const enddrag_signal_t::slot_type& cb ) { return mEndDragSignal.connect(cb); }
+	
+	uuid_vec_t::size_type getCargoIDsCount() const { return mCargoIDs.size(); }
+	static S32 getOperationId() { return sOperationId; }
 
 protected:
 	enum EDropTarget
@@ -124,6 +128,8 @@ class LLToolDragAndDrop : public LLTool, public LLSingleton<LLToolDragAndDrop>
 	LLUUID mSourceID;
 	LLUUID mObjectID;
 
+	static S32		sOperationId;
+
 	LLVector3d		mLastCameraPos;
 	LLVector3d		mLastHitPos;
 
diff --git a/indra/newview/lltoolgun.cpp b/indra/newview/lltoolgun.cpp
index 68af3d73d27faaa8562c6e6b1cbc25a158b14279..857d1053618a44fab58f872a52639f00efa86103 100644
--- a/indra/newview/lltoolgun.cpp
+++ b/indra/newview/lltoolgun.cpp
@@ -56,7 +56,7 @@ void LLToolGun::handleSelect()
 {
 	gViewerWindow->hideCursor();
 	gViewerWindow->moveCursorToCenter();
-	gViewerWindow->mWindow->setMouseClipping(TRUE);
+	gViewerWindow->getWindow()->setMouseClipping(TRUE);
 	mIsSelected = TRUE;
 }
 
@@ -64,7 +64,7 @@ void LLToolGun::handleDeselect()
 {
 	gViewerWindow->moveCursorToCenter();
 	gViewerWindow->showCursor();
-	gViewerWindow->mWindow->setMouseClipping(FALSE);
+	gViewerWindow->getWindow()->setMouseClipping(FALSE);
 	mIsSelected = FALSE;
 }
 
diff --git a/indra/newview/lltoolmgr.cpp b/indra/newview/lltoolmgr.cpp
index 51c0e2eeed31cbd433c9c740fc7f6aed93172942..6bc7c6de11b8b22e58ab605d5a79a3d4bbd76028 100644
--- a/indra/newview/lltoolmgr.cpp
+++ b/indra/newview/lltoolmgr.cpp
@@ -247,24 +247,10 @@ bool LLToolMgr::canEdit()
 
 void LLToolMgr::toggleBuildMode()
 {
-	if (inBuildMode())
-	{
-		if (gSavedSettings.getBOOL("EditCameraMovement"))
-		{
-			// just reset the view, will pull us out of edit mode
-			handle_reset_view();
-		}
-		else
-		{
-			// manually disable edit mode, but do not affect the camera
-			gAgentCamera.resetView(false);
-			LLFloaterReg::hideInstance("build");
-			gViewerWindow->showCursor();			
-		}
-		// avoid spurious avatar movements pulling out of edit mode
-		LLViewerJoystick::getInstance()->setNeedsReset();
-	}
-	else
+	LLFloaterReg::toggleInstanceOrBringToFront("build");
+
+	bool build_visible = LLFloaterReg::instanceVisible("build");
+	if (build_visible)
 	{
 		ECameraMode camMode = gAgentCamera.getCameraMode();
 		if (CAMERA_MODE_MOUSELOOK == camMode ||	CAMERA_MODE_CUSTOMIZE_AVATAR == camMode)
@@ -291,7 +277,7 @@ void LLToolMgr::toggleBuildMode()
 			}
 		}
 
-		
+
 		setCurrentToolset(gBasicToolset);
 		getCurrentToolset()->selectTool( LLToolCompCreate::getInstance() );
 
@@ -304,6 +290,24 @@ void LLToolMgr::toggleBuildMode()
 		LLViewerJoystick::getInstance()->setNeedsReset();
 
 	}
+	else
+	{
+		if (gSavedSettings.getBOOL("EditCameraMovement"))
+		{
+			// just reset the view, will pull us out of edit mode
+			handle_reset_view();
+		}
+		else
+		{
+			// manually disable edit mode, but do not affect the camera
+			gAgentCamera.resetView(false);
+			LLFloaterReg::hideInstance("build");
+			gViewerWindow->showCursor();			
+		}
+		// avoid spurious avatar movements pulling out of edit mode
+		LLViewerJoystick::getInstance()->setNeedsReset();
+	}
+
 }
 
 bool LLToolMgr::inBuildMode()
diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp
index 964b17d3a665b1bc1f3cadc4d12cb86a30db15d8..718201e381ad43dbea301b0618632dbb76da10ee 100644
--- a/indra/newview/lltoolmorph.cpp
+++ b/indra/newview/lltoolmorph.cpp
@@ -169,23 +169,28 @@ BOOL LLVisualParamHint::render()
 	gGL.pushUIMatrix();
 	gGL.loadUIIdentity();
 
-	glMatrixMode(GL_PROJECTION);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
 	gGL.pushMatrix();
-	glLoadIdentity();
-	glOrtho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
+	gGL.loadIdentity();
+	gGL.ortho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f);
 
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.pushMatrix();
-	glLoadIdentity();
+	gGL.loadIdentity();
+
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gUIProgram.bind();
+	}
 
 	LLGLSUIDefault gls_ui;
 	//LLGLState::verify(TRUE);
 	mBackgroundp->draw(0, 0, mFullWidth, mFullHeight);
 
-	glMatrixMode(GL_PROJECTION);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
 	gGL.popMatrix();
 
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.popMatrix();
 
 	mNeedsUpdate = FALSE;
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index c38c8bad809b298974309697d40cb0f0d85185ca..b0d9bd5d707138e55b7d6f323447e6e049350408 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -35,7 +35,6 @@
 #include "llagent.h"
 #include "llagentcamera.h"
 #include "llavatarnamecache.h"
-#include "llviewercontrol.h"
 #include "llfocusmgr.h"
 #include "llfirstuse.h"
 #include "llfloaterland.h"
@@ -57,6 +56,7 @@
 #include "lltrans.h"
 #include "llviewercamera.h"
 #include "llviewerparcelmedia.h"
+#include "llviewercontrol.h"
 #include "llviewermenu.h"
 #include "llviewerobjectlist.h"
 #include "llviewerobject.h"
@@ -76,7 +76,6 @@ static void handle_click_action_play();
 static void handle_click_action_open_media(LLPointer<LLViewerObject> objectp);
 static ECursorType cursor_from_parcel_media(U8 click_action);
 
-
 LLToolPie::LLToolPie()
 :	LLTool(std::string("Pie")),
 	mMouseButtonDown( false ),
@@ -479,6 +478,18 @@ void LLToolPie::resetSelection()
 	mClickAction = 0;
 }
 
+void LLToolPie::walkToClickedLocation()
+{
+	if(mAutoPilotDestination) { mAutoPilotDestination->markDead(); }
+	mAutoPilotDestination = (LLHUDEffectBlob *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BLOB, FALSE);
+	mAutoPilotDestination->setPositionGlobal(mPick.mPosGlobal);
+	mAutoPilotDestination->setPixelSize(5);
+	mAutoPilotDestination->setColor(LLColor4U(170, 210, 190));
+	mAutoPilotDestination->setDuration(3.f);
+
+	handle_go_to();
+}
+
 // When we get object properties after left-clicking on an object
 // with left-click = buy, if it's the same object, do the buy.
 
@@ -662,18 +673,9 @@ BOOL LLToolPie::handleMouseUp(S32 x, S32 y, MASK mask)
 			mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE;
 		}
 		gAgentCamera.setFocusOnAvatar(TRUE, TRUE);
-		if(mAutoPilotDestination) { mAutoPilotDestination->markDead(); }
-		mAutoPilotDestination = (LLHUDEffectBlob *)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_BLOB, FALSE);
-		mAutoPilotDestination->setPositionGlobal(mPick.mPosGlobal);
-		mAutoPilotDestination->setPixelSize(5);
-		mAutoPilotDestination->setColor(LLColor4U(170, 210, 190));
-		mAutoPilotDestination->setDuration(3.f);
-
-		handle_go_to();
+		walkToClickedLocation();
 		LLFirstUse::notMoving(false);
 
-		mBlockClickToWalk = false;
-
 		return TRUE;
 	}
 	gViewerWindow->setCursor(UI_CURSOR_ARROW);
@@ -708,16 +710,10 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask)
 
 	if (gSavedSettings.getBOOL("DoubleClickAutoPilot"))
 	{
-		if (mPick.mPickType == LLPickInfo::PICK_LAND
-			&& !mPick.mPosGlobal.isExactlyZero())
-		{
-			handle_go_to();
-			return TRUE;
-		}
-		else if (mPick.mObjectID.notNull()
-				 && !mPick.mPosGlobal.isExactlyZero())
+		if ((mPick.mPickType == LLPickInfo::PICK_LAND && !mPick.mPosGlobal.isExactlyZero()) ||
+			(mPick.mObjectID.notNull()  && !mPick.mPosGlobal.isExactlyZero()))
 		{
-			handle_go_to();
+			walkToClickedLocation();
 			return TRUE;
 		}
 	}
diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h
index d7c79ee223425fd9cc16c69ae29ae73ceb5a4392..68fe8bc4a5586d8c9371be629e1a669d3c4dd58c 100644
--- a/indra/newview/lltoolpie.h
+++ b/indra/newview/lltoolpie.h
@@ -66,6 +66,7 @@ class LLToolPie : public LLTool, public LLSingleton<LLToolPie>
 	LLViewerObject*		getClickActionObject() { return mClickActionObject; }
 	LLObjectSelection*	getLeftClickSelection() { return (LLObjectSelection*)mLeftClickSelection; }
 	void 				resetSelection();
+	void				walkToClickedLocation();
 	void				blockClickToWalk() { mBlockClickToWalk = true; }
 	void				stopClickToWalk();
 	
diff --git a/indra/newview/lltracker.cpp b/indra/newview/lltracker.cpp
index 983108391f8fa904156fbd018a8e08576be79d3c..bf1f8808a7028a43658683c8a195f8ede6aae07d 100644
--- a/indra/newview/lltracker.cpp
+++ b/indra/newview/lltracker.cpp
@@ -53,10 +53,12 @@
 #include "llinventorymodel.h"
 #include "llinventoryobserver.h"
 #include "lllandmarklist.h"
+#include "llprogressview.h"
 #include "llsky.h"
 #include "llui.h"
 #include "llviewercamera.h"
 #include "llviewerinventory.h"
+#include "llviewerwindow.h"
 #include "llworld.h"
 #include "llworldmapview.h"
 #include "llviewercontrol.h"
@@ -111,6 +113,8 @@ void LLTracker::drawHUDArrow()
 {
 	if (!gSavedSettings.getBOOL("RenderTrackerBeacon")) return;
 
+	if (gViewerWindow->getProgressView()->getVisible()) return;
+
 	static LLUIColor map_track_color = LLUIColorTable::instance().getColor("MapTrackColor", LLColor4::white);
 	
 	/* tracking autopilot destination has been disabled 
@@ -505,9 +509,10 @@ void LLTracker::renderBeacon(LLVector3d pos_global,
 	LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE);
 	
 	
-	glMatrixMode(GL_MODELVIEW);
-	glPushMatrix();
-		glTranslatef(pos_agent.mV[0], pos_agent.mV[1], pos_agent.mV[2]);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.pushMatrix();
+	{
+		gGL.translatef(pos_agent.mV[0], pos_agent.mV[1], pos_agent.mV[2]);
 		
 		draw_shockwave(1024.f, gRenderStartTime.getElapsedTimeF32(), 32, fogged_color);
 
@@ -559,9 +564,8 @@ void LLTracker::renderBeacon(LLVector3d pos_global,
 			
 			gGL.end();
 		}
-							
-		//gCylinder.render(1000);
-	glPopMatrix();
+	}
+	gGL.popMatrix();
 
 	std::string text;
 	text = llformat( "%.0f m", to_vec.magVec());
diff --git a/indra/newview/lltransientfloatermgr.cpp b/indra/newview/lltransientfloatermgr.cpp
index c648a6a28adc892ced97913667ebcf0cb61c36b3..3d68c104894f5f59815221ed7655116948beb52d 100644
--- a/indra/newview/lltransientfloatermgr.cpp
+++ b/indra/newview/lltransientfloatermgr.cpp
@@ -42,9 +42,9 @@ LLTransientFloaterMgr::LLTransientFloaterMgr()
 			&LLTransientFloaterMgr::leftMouseClickCallback, this, _2, _3, _4));
 	}
 
-	mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(GLOBAL, std::set<LLView*>()));
-	mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(DOCKED, std::set<LLView*>()));
-	mGroupControls.insert(std::pair<ETransientGroup, std::set<LLView*> >(IM, std::set<LLView*>()));
+	mGroupControls.insert(std::pair<ETransientGroup, controls_set_t >(GLOBAL, controls_set_t()));
+	mGroupControls.insert(std::pair<ETransientGroup, controls_set_t >(DOCKED, controls_set_t()));
+	mGroupControls.insert(std::pair<ETransientGroup, controls_set_t >(IM, controls_set_t()));
 }
 
 void LLTransientFloaterMgr::registerTransientFloater(LLTransientFloater* floater)
@@ -59,12 +59,16 @@ void LLTransientFloaterMgr::unregisterTransientFloater(LLTransientFloater* float
 
 void LLTransientFloaterMgr::addControlView(ETransientGroup group, LLView* view)
 {
-	mGroupControls.find(group)->second.insert(view);
+	if (!view) return;
+
+	mGroupControls.find(group)->second.insert(view->getHandle());
 }
 
 void LLTransientFloaterMgr::removeControlView(ETransientGroup group, LLView* view)
 {
-	mGroupControls.find(group)->second.erase(view);
+	if (!view) return;
+
+	mGroupControls.find(group)->second.erase(view->getHandle());
 }
 
 void LLTransientFloaterMgr::addControlView(LLView* view)
@@ -89,7 +93,7 @@ void LLTransientFloaterMgr::hideTransientFloaters(S32 x, S32 y)
 		{
 			ETransientGroup group = floater->getGroup();
 
-			bool hide = isControlClicked(mGroupControls.find(group)->second, x, y);
+			bool hide = isControlClicked(group, mGroupControls.find(group)->second, x, y);
 			if (hide)
 			{
 				floater->setTransientVisible(FALSE);
@@ -98,13 +102,25 @@ void LLTransientFloaterMgr::hideTransientFloaters(S32 x, S32 y)
 	}
 }
 
-bool LLTransientFloaterMgr::isControlClicked(std::set<LLView*>& set, S32 x, S32 y)
+bool LLTransientFloaterMgr::isControlClicked(ETransientGroup group, controls_set_t& set, S32 x, S32 y)
 {
+	std::list< LLHandle<LLView> > dead_handles;
+	
 	bool res = true;
 	for (controls_set_t::iterator it = set.begin(); it
 			!= set.end(); it++)
 	{
-		LLView* control_view = *it;
+		LLView* control_view = NULL;
+
+		LLHandle<LLView> handle = *it;
+		if (handle.isDead())
+		{
+			dead_handles.push_back(handle);
+			continue;
+		}
+
+		control_view = handle.get();
+
 		if (!control_view->getVisible())
 		{
 			continue;
@@ -118,6 +134,13 @@ bool LLTransientFloaterMgr::isControlClicked(std::set<LLView*>& set, S32 x, S32
 			break;
 		}
 	}
+
+	for (std::list< LLHandle<LLView> >::iterator it = dead_handles.begin(); it != dead_handles.end(); ++it)
+	{
+		LLHandle<LLView> handle = *it;
+		mGroupControls.find(group)->second.erase(handle);
+	}
+	
 	return res;
 }
 
@@ -130,8 +153,8 @@ void LLTransientFloaterMgr::leftMouseClickCallback(S32 x, S32 y,
 		return;
 	}
 
-	bool hide = isControlClicked(mGroupControls.find(DOCKED)->second, x, y)
-			&& isControlClicked(mGroupControls.find(GLOBAL)->second, x, y);
+	bool hide = isControlClicked(DOCKED, mGroupControls.find(DOCKED)->second, x, y)
+			&& isControlClicked(GLOBAL, mGroupControls.find(GLOBAL)->second, x, y);
 	if (hide)
 	{
 		hideTransientFloaters(x, y);
diff --git a/indra/newview/lltransientfloatermgr.h b/indra/newview/lltransientfloatermgr.h
index 2919244121bdbe80dd0979a8f18d76344f42ecae..b4611c8c87bb4d2954938fba16110e08d9c72a06 100644
--- a/indra/newview/lltransientfloatermgr.h
+++ b/indra/newview/lltransientfloatermgr.h
@@ -56,14 +56,15 @@ class LLTransientFloaterMgr: public LLSingleton<LLTransientFloaterMgr>
 	void removeControlView(LLView* view);
 
 private:
+	typedef std::set<LLHandle<LLView> > controls_set_t;
+	typedef std::map<ETransientGroup, controls_set_t > group_controls_t;
+
 	void hideTransientFloaters(S32 x, S32 y);
 	void leftMouseClickCallback(S32 x, S32 y, MASK mask);
-	bool isControlClicked(std::set<LLView*>& set, S32 x, S32 y);
-private:
+	bool isControlClicked(ETransientGroup group, controls_set_t& set, S32 x, S32 y);
+
 	std::set<LLTransientFloater*> mTransSet;
 
-	typedef std::set<LLView*> controls_set_t;
-	typedef std::map<ETransientGroup, std::set<LLView*> > group_controls_t;
 	group_controls_t mGroupControls;
 };
 
diff --git a/indra/newview/lltranslate.cpp b/indra/newview/lltranslate.cpp
old mode 100644
new mode 100755
index 2f60b6b90b4aa9c18fb91fbcf299fa7927337393..c1cc9c7bc4ea08c294777e64af1b5bc8517fa503
--- a/indra/newview/lltranslate.cpp
+++ b/indra/newview/lltranslate.cpp
@@ -31,82 +31,306 @@
 #include <curl/curl.h>
 
 #include "llbufferstream.h"
+#include "lltrans.h"
 #include "llui.h"
 #include "llversioninfo.h"
 #include "llviewercontrol.h"
 
 #include "reader.h"
 
-// These two are concatenated with the language specifiers to form a complete Google Translate URL
-const char* LLTranslate::m_GoogleURL = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=";
-const char* LLTranslate::m_GoogleLangSpec = "&langpair=";
-float LLTranslate::m_GoogleTimeout = 5;
+// virtual
+void LLGoogleTranslationHandler::getTranslateURL(
+	std::string &url,
+	const std::string &from_lang,
+	const std::string &to_lang,
+	const std::string &text) const
+{
+	url = std::string("https://www.googleapis.com/language/translate/v2?key=")
+		+ getAPIKey() + "&q=" + LLURI::escape(text) + "&target=" + to_lang;
+	if (!from_lang.empty())
+	{
+		url += "&source=" + from_lang;
+	}
+}
 
-LLSD LLTranslate::m_Header;
-// These constants are for the GET header.
-const char* LLTranslate::m_AcceptHeader = "Accept";
-const char* LLTranslate::m_AcceptType = "text/plain";
-const char* LLTranslate::m_AgentHeader = "User-Agent";
+// virtual
+void LLGoogleTranslationHandler::getKeyVerificationURL(
+	std::string& url,
+	const std::string& key) const
+{
+	url = std::string("https://www.googleapis.com/language/translate/v2/languages?key=")
+		+ key + "&target=en";
+}
+
+// virtual
+bool LLGoogleTranslationHandler::parseResponse(
+	int& status,
+	const std::string& body,
+	std::string& translation,
+	std::string& detected_lang,
+	std::string& err_msg) const
+{
+	Json::Value root;
+	Json::Reader reader;
 
-// These constants are in the JSON returned from Google
-const char* LLTranslate::m_GoogleData = "responseData";
-const char* LLTranslate::m_GoogleTranslation = "translatedText";
-const char* LLTranslate::m_GoogleLanguage = "detectedSourceLanguage";
+	if (!reader.parse(body, root))
+	{
+		err_msg = reader.getFormatedErrorMessages();
+		return false;
+	}
 
-//static
-void LLTranslate::translateMessage(LLHTTPClient::ResponderPtr &result, const std::string &from_lang, const std::string &to_lang, const std::string &mesg)
+	if (!root.isObject()) // empty response? should not happen
+	{
+		return false;
+	}
+
+	if (status != STATUS_OK)
+	{
+		// Request failed. Extract error message from the response.
+		parseErrorResponse(root, status, err_msg);
+		return false;
+	}
+
+	// Request succeeded, extract translation from the response.
+	return parseTranslation(root, translation, detected_lang);
+}
+
+// virtual
+bool LLGoogleTranslationHandler::isConfigured() const
 {
-	std::string url;
-	getTranslateUrl(url, from_lang, to_lang, mesg);
+	return !getAPIKey().empty();
+}
+
+// static
+void LLGoogleTranslationHandler::parseErrorResponse(
+	const Json::Value& root,
+	int& status,
+	std::string& err_msg)
+{
+	const Json::Value& error = root.get("error", 0);
+	if (!error.isObject() || !error.isMember("message") || !error.isMember("code"))
+	{
+		return;
+	}
+
+	err_msg = error["message"].asString();
+	status = error["code"].asInt();
+}
+
+// static
+bool LLGoogleTranslationHandler::parseTranslation(
+	const Json::Value& root,
+	std::string& translation,
+	std::string& detected_lang)
+{
+	// JsonCpp is prone to aborting the program on failed assertions,
+	// so be super-careful and verify the response format.
+	const Json::Value& data = root.get("data", 0);
+	if (!data.isObject() || !data.isMember("translations"))
+	{
+		return false;
+	}
 
-    std::string user_agent = llformat("%s %d.%d.%d (%d)",
-		LLVersionInfo::getChannel().c_str(),
-		LLVersionInfo::getMajor(),
-		LLVersionInfo::getMinor(),
-		LLVersionInfo::getPatch(),
-		LLVersionInfo::getBuild());
+	const Json::Value& translations = data["translations"];
+	if (!translations.isArray() || translations.size() == 0)
+	{
+		return false;
+	}
 
-	if (!m_Header.size())
+	const Json::Value& first = translations[0U];
+	if (!first.isObject() || !first.isMember("translatedText"))
 	{
-		m_Header.insert(m_AcceptHeader, LLSD(m_AcceptType));
-		m_Header.insert(m_AgentHeader, LLSD(user_agent));
+		return false;
 	}
 
-	LLHTTPClient::get(url, result, m_Header, m_GoogleTimeout);
+	translation = first["translatedText"].asString();
+	detected_lang = first.get("detectedSourceLanguage", "").asString();
+	return true;
 }
 
-//static
-void LLTranslate::getTranslateUrl(std::string &translate_url, const std::string &from_lang, const std::string &to_lang, const std::string &mesg)
+// static
+std::string LLGoogleTranslationHandler::getAPIKey()
 {
-	char * curl_str = curl_escape(mesg.c_str(), mesg.size());
-	std::string const escaped_mesg(curl_str);
-	curl_free(curl_str);
+	return gSavedSettings.getString("GoogleTranslateAPIKey");
+}
 
-	translate_url = m_GoogleURL
-		+ escaped_mesg + m_GoogleLangSpec
-		+ from_lang // 'from' language; empty string for auto
-		+ "%7C" // |
-		+ to_lang; // 'to' language
+// virtual
+void LLBingTranslationHandler::getTranslateURL(
+	std::string &url,
+	const std::string &from_lang,
+	const std::string &to_lang,
+	const std::string &text) const
+{
+	url = std::string("http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=")
+		+ getAPIKey() + "&text=" + LLURI::escape(text) + "&to=" + to_lang;
+	if (!from_lang.empty())
+	{
+		url += "&from=" + from_lang;
+	}
 }
 
-//static
-bool LLTranslate::parseGoogleTranslate(const std::string& body, std::string &translation, std::string &detected_language)
+// virtual
+void LLBingTranslationHandler::getKeyVerificationURL(
+	std::string& url,
+	const std::string& key) const
 {
-	Json::Value root;
-	Json::Reader reader;
-	
-	bool success = reader.parse(body, root);
-	if (!success)
+	url = std::string("http://api.microsofttranslator.com/v2/Http.svc/GetLanguagesForTranslate?appId=")
+		+ key;
+}
+
+// virtual
+bool LLBingTranslationHandler::parseResponse(
+	int& status,
+	const std::string& body,
+	std::string& translation,
+	std::string& detected_lang,
+	std::string& err_msg) const
+{
+	if (status != STATUS_OK)
 	{
-		LL_WARNS("Translate") << "Non valid response from Google Translate API: '" << reader.getFormatedErrorMessages() << "'" << LL_ENDL;
+		static const std::string MSG_BEGIN_MARKER = "Message: ";
+		size_t begin = body.find(MSG_BEGIN_MARKER);
+		if (begin != std::string::npos)
+		{
+			begin += MSG_BEGIN_MARKER.size();
+		}
+		else
+		{
+			begin = 0;
+			err_msg.clear();
+		}
+		size_t end = body.find("</p>", begin);
+		err_msg = body.substr(begin, end-begin);
+		LLStringUtil::replaceString(err_msg, "&#xD;", ""); // strip CR
 		return false;
 	}
-	
-	translation = 			root[m_GoogleData].get(m_GoogleTranslation, "").asString();
-	detected_language = 	root[m_GoogleData].get(m_GoogleLanguage, "").asString();
+
+	// Sample response: <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Hola</string>
+	size_t begin = body.find(">");
+	if (begin == std::string::npos || begin >= (body.size() - 1))
+	{
+		begin = 0;
+	}
+	else
+	{
+		++begin;
+	}
+
+	size_t end = body.find("</string>", begin);
+
+	detected_lang = ""; // unsupported by this API
+	translation = body.substr(begin, end-begin);
+	LLStringUtil::replaceString(translation, "&#xD;", ""); // strip CR
 	return true;
 }
 
+// virtual
+bool LLBingTranslationHandler::isConfigured() const
+{
+	return !getAPIKey().empty();
+}
+
+// static
+std::string LLBingTranslationHandler::getAPIKey()
+{
+	return gSavedSettings.getString("BingTranslateAPIKey");
+}
+
+LLTranslate::TranslationReceiver::TranslationReceiver(const std::string& from_lang, const std::string& to_lang)
+:	mFromLang(from_lang)
+,	mToLang(to_lang)
+,	mHandler(LLTranslate::getPreferredHandler())
+{
+}
+
+// virtual
+void LLTranslate::TranslationReceiver::completedRaw(
+	U32 http_status,
+	const std::string& reason,
+	const LLChannelDescriptors& channels,
+	const LLIOPipe::buffer_ptr_t& buffer)
+{
+	LLBufferStream istr(channels, buffer.get());
+	std::stringstream strstrm;
+	strstrm << istr.rdbuf();
+
+	const std::string body = strstrm.str();
+	std::string translation, detected_lang, err_msg;
+	int status = http_status;
+	LL_DEBUGS("Translate") << "HTTP status: " << status << " " << reason << LL_ENDL;
+	LL_DEBUGS("Translate") << "Response body: " << body << LL_ENDL;
+	if (mHandler.parseResponse(status, body, translation, detected_lang, err_msg))
+	{
+		// Fix up the response
+		LLStringUtil::replaceString(translation, "&lt;", "<");
+		LLStringUtil::replaceString(translation, "&gt;",">");
+		LLStringUtil::replaceString(translation, "&quot;","\"");
+		LLStringUtil::replaceString(translation, "&#39;","'");
+		LLStringUtil::replaceString(translation, "&amp;","&");
+		LLStringUtil::replaceString(translation, "&apos;","'");
+
+		handleResponse(translation, detected_lang);
+	}
+	else
+	{
+		if (err_msg.empty())
+		{
+			err_msg = LLTrans::getString("TranslationResponseParseError");
+		}
+
+		llwarns << "Translation request failed: " << err_msg << llendl;
+		handleFailure(status, err_msg);
+	}
+}
+
+LLTranslate::KeyVerificationReceiver::KeyVerificationReceiver(EService service)
+:	mService(service)
+{
+}
+
+LLTranslate::EService LLTranslate::KeyVerificationReceiver::getService() const
+{
+	return mService;
+}
+
+// virtual
+void LLTranslate::KeyVerificationReceiver::completedRaw(
+	U32 http_status,
+	const std::string& reason,
+	const LLChannelDescriptors& channels,
+	const LLIOPipe::buffer_ptr_t& buffer)
+{
+	bool ok = (http_status == 200);
+	setVerificationStatus(ok);
+}
+
+//static
+void LLTranslate::translateMessage(
+	TranslationReceiverPtr &receiver,
+	const std::string &from_lang,
+	const std::string &to_lang,
+	const std::string &mesg)
+{
+	std::string url;
+	receiver->mHandler.getTranslateURL(url, from_lang, to_lang, mesg);
+
+	LL_DEBUGS("Translate") << "Sending translation request: " << url << LL_ENDL;
+	sendRequest(url, receiver);
+}
+
+// static
+void LLTranslate::verifyKey(
+	KeyVerificationReceiverPtr& receiver,
+	const std::string& key)
+{
+	std::string url;
+	const LLTranslationAPIHandler& handler = getHandler(receiver->getService());
+	handler.getKeyVerificationURL(url, key);
+
+	LL_DEBUGS("Translate") << "Sending key verification request: " << url << LL_ENDL;
+	sendRequest(url, receiver);
+}
+
 //static
 std::string LLTranslate::getTranslateLanguage()
 {
@@ -119,3 +343,58 @@ std::string LLTranslate::getTranslateLanguage()
 	return language;
 }
 
+// static
+bool LLTranslate::isTranslationConfigured()
+{
+	return getPreferredHandler().isConfigured();
+}
+
+// static
+const LLTranslationAPIHandler& LLTranslate::getPreferredHandler()
+{
+	EService service = SERVICE_BING;
+
+	std::string service_str = gSavedSettings.getString("TranslationService");
+	if (service_str == "google")
+	{
+		service = SERVICE_GOOGLE;
+	}
+
+	return getHandler(service);
+}
+
+// static
+const LLTranslationAPIHandler& LLTranslate::getHandler(EService service)
+{
+	static LLGoogleTranslationHandler google;
+	static LLBingTranslationHandler bing;
+
+	if (service == SERVICE_GOOGLE)
+	{
+		return google;
+	}
+
+	return bing;
+}
+
+// static
+void LLTranslate::sendRequest(const std::string& url, LLHTTPClient::ResponderPtr responder)
+{
+	static const float REQUEST_TIMEOUT = 5;
+	static LLSD sHeader;
+
+	if (!sHeader.size())
+	{
+	    std::string user_agent = llformat("%s %d.%d.%d (%d)",
+			LLVersionInfo::getChannel().c_str(),
+			LLVersionInfo::getMajor(),
+			LLVersionInfo::getMinor(),
+			LLVersionInfo::getPatch(),
+			LLVersionInfo::getBuild());
+
+		sHeader.insert("Accept", "text/plain");
+		sHeader.insert("User-Agent", user_agent);
+	}
+
+	LLHTTPClient::get(url, responder, sHeader, REQUEST_TIMEOUT);
+}
diff --git a/indra/newview/lltranslate.h b/indra/newview/lltranslate.h
old mode 100644
new mode 100755
index e85a42e878d3116206c0cfc278d7497a8bc9904e..424bc14587f3bdb3dc1a622bb448bdb2a6bbbfa6
--- a/indra/newview/lltranslate.h
+++ b/indra/newview/lltranslate.h
@@ -30,89 +30,273 @@
 #include "llhttpclient.h"
 #include "llbufferstream.h"
 
+namespace Json
+{
+    class Value;
+}
+
+/**
+ * Handler of an HTTP machine translation service.
+ *
+ * Derived classes know the service URL
+ * and how to parse the translation result.
+ */
+class LLTranslationAPIHandler
+{
+public:
+	/**
+	 * Get URL for translation of the given string.
+	 *
+	 * Sending HTTP GET request to the URL will initiate translation.
+	 *
+	 * @param[out] url        Place holder for the result.
+	 * @param      from_lang  Source language. Leave empty for auto-detection.
+	 * @param      to_lang    Target language.
+	 * @param      text       Text to translate.
+	 */
+	virtual void getTranslateURL(
+		std::string &url,
+		const std::string &from_lang,
+		const std::string &to_lang,
+		const std::string &text) const = 0;
+
+	/**
+	 * Get URL to verify the given API key.
+	 *
+	 * Sending request to the URL verifies the key.
+	 * Positive HTTP response (code 200) means that the key is valid.
+	 *
+	 * @param[out] url  Place holder for the URL.
+	 * @param[in]  key  Key to verify.
+	 */
+	virtual void getKeyVerificationURL(
+		std::string &url,
+		const std::string &key) const = 0;
+
+	/**
+	 * Parse translation response.
+	 *
+	 * @param[in,out] status        HTTP status. May be modified while parsing.
+	 * @param         body          Response text.
+	 * @param[out]    translation   Translated text.
+	 * @param[out]    detected_lang Detected source language. May be empty.
+	 * @param[out]    err_msg       Error message (in case of error).
+	 */
+	virtual bool parseResponse(
+		int& status,
+		const std::string& body,
+		std::string& translation,
+		std::string& detected_lang,
+		std::string& err_msg) const = 0;
+
+	/**
+	 * @return if the handler is configured to function properly
+	 */
+	virtual bool isConfigured() const = 0;
+
+	virtual ~LLTranslationAPIHandler() {}
+
+protected:
+	static const int STATUS_OK = 200;
+};
+
+/// Google Translate v2 API handler.
+class LLGoogleTranslationHandler : public LLTranslationAPIHandler
+{
+	LOG_CLASS(LLGoogleTranslationHandler);
+
+public:
+	/*virtual*/ void getTranslateURL(
+		std::string &url,
+		const std::string &from_lang,
+		const std::string &to_lang,
+		const std::string &text) const;
+	/*virtual*/ void getKeyVerificationURL(
+		std::string &url,
+		const std::string &key) const;
+	/*virtual*/ bool parseResponse(
+		int& status,
+		const std::string& body,
+		std::string& translation,
+		std::string& detected_lang,
+		std::string& err_msg) const;
+	/*virtual*/ bool isConfigured() const;
+
+private:
+	static void parseErrorResponse(
+		const Json::Value& root,
+		int& status,
+		std::string& err_msg);
+	static bool parseTranslation(
+		const Json::Value& root,
+		std::string& translation,
+		std::string& detected_lang);
+	static std::string getAPIKey();
+};
+
+/// Microsoft Translator v2 API handler.
+class LLBingTranslationHandler : public LLTranslationAPIHandler
+{
+	LOG_CLASS(LLBingTranslationHandler);
+
+public:
+	/*virtual*/ void getTranslateURL(
+		std::string &url,
+		const std::string &from_lang,
+		const std::string &to_lang,
+		const std::string &text) const;
+	/*virtual*/ void getKeyVerificationURL(
+		std::string &url,
+		const std::string &key) const;
+	/*virtual*/ bool parseResponse(
+		int& status,
+		const std::string& body,
+		std::string& translation,
+		std::string& detected_lang,
+		std::string& err_msg) const;
+	/*virtual*/ bool isConfigured() const;
+private:
+	static std::string getAPIKey();
+};
+
+/**
+ * Entry point for machine translation services.
+ *
+ * Basically, to translate a string, we need to know the URL
+ * of a translation service, have a valid API for the service
+ * and be given the target language.
+ *
+ * Callers specify the string to translate and the target language,
+ * LLTranslate takes care of the rest.
+ *
+ * API keys for translation are taken from saved settings.
+ */
 class LLTranslate
 {
 	LOG_CLASS(LLTranslate);
+
 public :
+
+	typedef enum e_service {
+		SERVICE_BING,
+		SERVICE_GOOGLE,
+	} EService;
+
+	/**
+	 * Subclasses are supposed to handle translation results (e.g. show them in chat)
+	 */
 	class TranslationReceiver: public LLHTTPClient::Responder
 	{
+	public:
+
+		/**
+		 * Using mHandler, parse incoming response.
+		 *
+		 * Calls either handleResponse() or handleFailure()
+		 * depending on the HTTP status code and parsing success.
+		 *
+		 * @see handleResponse()
+		 * @see handleFailure()
+		 * @see mHandler
+		 */
+		/*virtual*/ void completedRaw(
+			U32 http_status,
+			const std::string& reason,
+			const LLChannelDescriptors& channels,
+			const LLIOPipe::buffer_ptr_t& buffer);
+
 	protected:
-		TranslationReceiver(const std::string &from_lang, const std::string &to_lang)
-			: m_fromLang(from_lang),
-			m_toLang(to_lang)
-		{
-		}
+		friend class LLTranslate;
+
+		/// Remember source and target languages for subclasses to be able to filter inappropriate results.
+		TranslationReceiver(const std::string& from_lang, const std::string& to_lang);
+
+		/// Override point to handle successful translation.
+		virtual void handleResponse(const std::string &translation, const std::string &recognized_lang) = 0;
 
-		virtual void handleResponse(const std::string &translation, const std::string &recognized_lang) {};
-		virtual void handleFailure() {};
+		/// Override point to handle unsuccessful translation.
+		virtual void handleFailure(int status, const std::string& err_msg) = 0;
 
+		std::string mFromLang;
+		std::string mToLang;
+		const LLTranslationAPIHandler& mHandler;
+	};
+
+	/**
+	 * Subclasses are supposed to handle API key verification result.
+	 */
+	class KeyVerificationReceiver: public LLHTTPClient::Responder
+	{
 	public:
-		~TranslationReceiver()
-		{
-		}
-
-		virtual void completedRaw(	U32 status,
-									const std::string& reason,
-									const LLChannelDescriptors& channels,
-									const LLIOPipe::buffer_ptr_t& buffer)
-		{
-			if (200 <= status && status < 300)
-			{
-				LLBufferStream istr(channels, buffer.get());
-				std::stringstream strstrm;
-				strstrm << istr.rdbuf();
-
-				const std::string result = strstrm.str();
-				std::string translation;
-				std::string detected_language;
-
-				if (!parseGoogleTranslate(result, translation, detected_language))
-				{
-					handleFailure();
-					return;
-				}
-				
-				// Fix up the response
-				LLStringUtil::replaceString(translation, "&lt;", "<");
-				LLStringUtil::replaceString(translation, "&gt;",">");
-				LLStringUtil::replaceString(translation, "&quot;","\"");
-				LLStringUtil::replaceString(translation, "&#39;","'");
-				LLStringUtil::replaceString(translation, "&amp;","&");
-				LLStringUtil::replaceString(translation, "&apos;","'");
-
-				handleResponse(translation, detected_language);
-			}
-			else
-			{
-				LL_WARNS("Translate") << "HTTP request for Google Translate failed with status " << status << ", reason: " << reason << LL_ENDL;
-				handleFailure();
-			}
-		}
+		EService getService() const;
 
 	protected:
-		const std::string m_toLang;
-		const std::string m_fromLang;
+		/**
+		 * Save the translation service the key belongs to.
+		 *
+		 * Subclasses need to know it.
+		 *
+		 * @see getService()
+		 */
+		KeyVerificationReceiver(EService service);
+
+		/**
+		 * Parse verification response.
+		 *
+		 * Calls setVerificationStatus() with the verification status,
+		 * which is true if HTTP status code is 200.
+		 *
+		 * @see setVerificationStatus()
+		 */
+		/*virtual*/ void completedRaw(
+			U32 http_status,
+			const std::string& reason,
+			const LLChannelDescriptors& channels,
+			const LLIOPipe::buffer_ptr_t& buffer);
+
+		/**
+		 * Override point for subclasses to handle key verification status.
+		 */
+		virtual void setVerificationStatus(bool ok) = 0;
+
+		EService mService;
 	};
 
-	static void translateMessage(LLHTTPClient::ResponderPtr &result, const std::string &from_lang, const std::string &to_lang, const std::string &mesg);
-	static float m_GoogleTimeout;
+	typedef boost::intrusive_ptr<TranslationReceiver> TranslationReceiverPtr;
+	typedef boost::intrusive_ptr<KeyVerificationReceiver> KeyVerificationReceiverPtr;
+
+	/**
+	 * Translate given text.
+	 *
+	 * @param receiver   Object to pass translation result to.
+	 * @param from_lang  Source language. Leave empty for auto-detection.
+	 * @param to_lang    Target language.
+	 * @param mesg       Text to translate.
+	 */
+	static void translateMessage(TranslationReceiverPtr &receiver, const std::string &from_lang, const std::string &to_lang, const std::string &mesg);
+
+	/**
+	 * Verify given API key of a translation service.
+	 *
+	 * @param receiver  Object to pass verification result to.
+	 * @param key       Key to verify.
+	 */
+	static void verifyKey(KeyVerificationReceiverPtr& receiver, const std::string& key);
+
+	/**
+	 * @return translation target language
+	 */
 	static std::string getTranslateLanguage();
 
+	/**
+	 * @return true if translation is configured properly.
+	 */
+	static bool isTranslationConfigured();
+
 private:
-	static void getTranslateUrl(std::string &translate_url, const std::string &from_lang, const std::string &to_lang, const std::string &text);
-	static bool parseGoogleTranslate(const std::string& body, std::string &translation, std::string &detected_language);
-
-	static LLSD m_Header;
-	static const char* m_GoogleURL;
-	static const char* m_GoogleLangSpec;
-	static const char* m_AcceptHeader;
-	static const char* m_AcceptType;
-	static const char* m_AgentHeader;
-	static const char* m_UserAgent;
-
-	static const char* m_GoogleData;
-	static const char* m_GoogleTranslation;
-	static const char* m_GoogleLanguage;
+	static const LLTranslationAPIHandler& getPreferredHandler();
+	static const LLTranslationAPIHandler& getHandler(EService service);
+	static void sendRequest(const std::string& url, LLHTTPClient::ResponderPtr responder);
 };
 
 #endif
diff --git a/indra/newview/llurldispatcher.cpp b/indra/newview/llurldispatcher.cpp
index ed4d278e90656aec1ffa3025f16dd74ba84ea54d..4240a38326369a61f1cbd17ab6c8583f837f92fe 100644
--- a/indra/newview/llurldispatcher.cpp
+++ b/indra/newview/llurldispatcher.cpp
@@ -32,10 +32,10 @@
 #include "llcommandhandler.h"
 #include "llfloaterhelpbrowser.h"
 #include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfloaterworldmap.h"
 #include "llpanellogin.h"
 #include "llregionhandle.h"
-#include "llsidetray.h"
 #include "llslurl.h"
 #include "llstartup.h"			// gStartupState
 #include "llweb.h"
@@ -167,9 +167,9 @@ bool LLURLDispatcherImpl::dispatchApp(const LLSLURL& slurl,
 // static
 bool LLURLDispatcherImpl::dispatchRegion(const LLSLURL& slurl, const std::string& nav_type, bool right_mouse)
 {
-  if(slurl.getType() != LLSLURL::LOCATION)
+	if(slurl.getType() != LLSLURL::LOCATION)
     {
-      return false;
+		return false;
     }
 	// Before we're logged in, need to update the startup screen
 	// to tell the user where they are going.
@@ -246,7 +246,7 @@ void LLURLDispatcherImpl::regionHandleCallback(U64 region_handle, const LLSLURL&
 		key["y"] = global_pos.mdV[VY];
 		key["z"] = global_pos.mdV[VZ];
 
-		LLSideTray::getInstance()->showPanel("panel_places", key);
+		LLFloaterSidePanelContainer::showPanel("places", key);
 	}
 }
 
diff --git a/indra/newview/llviewerassetstorage.cpp b/indra/newview/llviewerassetstorage.cpp
index 36c8b42a5223eab5369e9d4b2bca9728da8bc03f..d042f6283086783baa01118b6f0a44ae69c3cb47 100644
--- a/indra/newview/llviewerassetstorage.cpp
+++ b/indra/newview/llviewerassetstorage.cpp
@@ -116,7 +116,7 @@ void LLViewerAssetStorage::storeAssetData(
 	F64 timeout)
 {
 	LLAssetID asset_id = tid.makeAssetID(gAgent.getSecureSessionID());
-	llinfos << "LLViewerAssetStorage::storeAssetData (legacy) " << tid << ":" << LLAssetType::lookup(asset_type)
+	LL_DEBUGS("AssetStorage") << "LLViewerAssetStorage::storeAssetData (legacy) " << tid << ":" << LLAssetType::lookup(asset_type)
 			<< " ASSET_ID: " << asset_id << llendl;
 	
 	if (mUpstreamHost.isOk())
@@ -248,9 +248,9 @@ void LLViewerAssetStorage::storeAssetData(
 	}
 	
 	LLAssetID asset_id = tid.makeAssetID(gAgent.getSecureSessionID());
-	llinfos << "LLViewerAssetStorage::storeAssetData (legacy)" << asset_id << ":" << LLAssetType::lookup(asset_type) << llendl;
+	LL_DEBUGS("AssetStorage") << "LLViewerAssetStorage::storeAssetData (legacy)" << asset_id << ":" << LLAssetType::lookup(asset_type) << llendl;
 
-	llinfos << "ASSET_ID: " << asset_id << llendl;
+	LL_DEBUGS("AssetStorage") << "ASSET_ID: " << asset_id << llendl;
 
 	S32 size = 0;
 	LLFILE* fp = LLFile::fopen(filename, "rb");
@@ -369,7 +369,7 @@ void LLViewerAssetStorage::_queueDataRequest(
 			tpvf.setAsset(uuid, atype);
 			tpvf.setCallback(downloadCompleteCallback, req);
 
-			llinfos << "Starting transfer for " << uuid << llendl;
+			LL_DEBUGS("AssetStorage") << "Starting transfer for " << uuid << llendl;
 			LLTransferTargetChannel *ttcp = gTransferManager.getTargetChannel(mUpstreamHost, LLTCT_ASSET);
 			ttcp->requestTransfer(spa, tpvf, 100.f + (is_priority ? 1.f : 0.f));
 
diff --git a/indra/newview/llviewerassettype.cpp b/indra/newview/llviewerassettype.cpp
index b103f115976cd1943e4fa39323737d7f143d59bf..a4b1c2155ffe63359ecb49ad45cd15b910890860 100644
--- a/indra/newview/llviewerassettype.cpp
+++ b/indra/newview/llviewerassettype.cpp
@@ -80,7 +80,9 @@ LLViewerAssetDictionary::LLViewerAssetDictionary()
 	addEntry(LLViewerAssetType::AT_LINK_FOLDER, 		new ViewerAssetEntry(DAD_LINK));
 
 	addEntry(LLViewerAssetType::AT_MESH, 				new ViewerAssetEntry(DAD_MESH));
-
+	
+	addEntry(LLViewerAssetType::AT_WIDGET, 				new ViewerAssetEntry(DAD_WIDGET));
+	
 	addEntry(LLViewerAssetType::AT_NONE, 				new ViewerAssetEntry(DAD_NONE));
 };
 
diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp
index f7fa5690d69989061bdb8207fc5e9bd04822317a..2447f5dea8da6928d025839d4ca183a53321af3f 100644
--- a/indra/newview/llvieweraudio.cpp
+++ b/indra/newview/llvieweraudio.cpp
@@ -37,9 +37,226 @@
 #include "llvoiceclient.h"
 #include "llviewermedia.h"
 #include "llprogressview.h"
+#include "llcallbacklist.h"
+#include "llstartup.h"
+#include "llviewerparcelmgr.h"
+#include "llparcel.h"
 
 /////////////////////////////////////////////////////////
 
+LLViewerAudio::LLViewerAudio() :
+	mDone(true),
+	mFadeState(FADE_IDLE),
+	mFadeTime(),
+    mIdleListnerActive(false),
+	mForcedTeleportFade(false)
+{
+	mTeleportFailedConnection = LLViewerParcelMgr::getInstance()->
+		setTeleportFailedCallback(boost::bind(&LLViewerAudio::onTeleportFailed, this));
+}
+
+LLViewerAudio::~LLViewerAudio()
+{
+	mTeleportFailedConnection.disconnect();
+}
+
+void LLViewerAudio::registerIdleListener()
+{
+	if(mIdleListnerActive==false)
+	{
+		mIdleListnerActive = true;
+		doOnIdleRepeating(boost::bind(boost::bind(&LLViewerAudio::onIdleUpdate, this)));
+	}
+
+}
+
+void LLViewerAudio::startInternetStreamWithAutoFade(std::string streamURI)
+{
+	// Old and new stream are identical
+	if (mNextStreamURI == streamURI)
+	{
+		return;
+	}
+
+	// Record the URI we are going to be switching to	
+	mNextStreamURI = streamURI;
+
+	switch (mFadeState)
+	{
+		case FADE_IDLE:
+		// If a stream is playing fade it out first
+		if (!gAudiop->getInternetStreamURL().empty())
+		{
+			// The order of these tests is important, state FADE_OUT will be processed below
+			mFadeState = FADE_OUT;
+		}
+		// Otherwise the new stream can be faded in
+		else
+		{
+			mFadeState = FADE_IN;
+			gAudiop->startInternetStream(mNextStreamURI);
+			startFading();
+			registerIdleListener();
+			break;
+		}
+
+		case FADE_OUT:
+			startFading();
+			registerIdleListener();
+			break;
+
+		case FADE_IN:
+			registerIdleListener();
+			break;
+
+		default:
+			llwarns << "Unknown fading state: " << mFadeState << llendl;
+			break;
+	}
+}
+
+// A return of false from onIdleUpdate means it will be called again next idle update.
+// A return of true means we have finished with it and the callback will be deleted.
+bool LLViewerAudio::onIdleUpdate()
+{
+	bool fadeIsFinished = false;
+
+	// There is a delay in the login sequence between when the parcel information has
+	// arrived and the music stream is started and when the audio system is called to set
+	// initial volume levels.  This code extends the fade time so you hear a full fade in.
+	if ((LLStartUp::getStartupState() < STATE_STARTED))
+	{
+		stream_fade_timer.reset();
+		stream_fade_timer.setTimerExpirySec(mFadeTime);
+	}
+
+	if (mDone)
+	{
+		//  This should be a rare or never occurring state.
+		if (mFadeState == FADE_IDLE)
+		{
+			deregisterIdleListener();
+			fadeIsFinished = true; // Stop calling onIdleUpdate
+		}
+
+		// we have finished the current fade operation
+		if (mFadeState == FADE_OUT)
+		{
+			// Clear URI
+			gAudiop->startInternetStream(LLStringUtil::null);
+			gAudiop->stopInternetStream();
+				
+			if (!mNextStreamURI.empty())
+			{
+				mFadeState = FADE_IN;
+				gAudiop->startInternetStream(mNextStreamURI);
+				startFading();
+			}
+			else
+			{
+				mFadeState = FADE_IDLE;
+				deregisterIdleListener();
+				fadeIsFinished = true; // Stop calling onIdleUpdate
+			}
+		}
+		else if (mFadeState == FADE_IN)
+		{
+			if (mNextStreamURI != gAudiop->getInternetStreamURL())
+			{
+				mFadeState = FADE_OUT;
+				startFading();
+			}
+			else
+			{
+				mFadeState = FADE_IDLE;
+				deregisterIdleListener();
+				fadeIsFinished = true; // Stop calling onIdleUpdate
+			}
+		}
+	}
+
+	return fadeIsFinished;
+}
+
+void LLViewerAudio::stopInternetStreamWithAutoFade()
+{
+	mFadeState = FADE_IDLE;
+	mNextStreamURI = LLStringUtil::null;
+	mDone = true;
+
+	gAudiop->startInternetStream(LLStringUtil::null);
+	gAudiop->stopInternetStream();
+}
+
+void LLViewerAudio::startFading()
+{
+	const F32 AUDIO_MUSIC_FADE_IN_TIME = 3.0f;
+	const F32 AUDIO_MUSIC_FADE_OUT_TIME = 2.0f;
+	// This minimum fade time prevents divide by zero and negative times
+	const F32 AUDIO_MUSIC_MINIMUM_FADE_TIME = 0.01f;
+
+	if(mDone)
+	{
+		// The fade state here should only be one of FADE_IN or FADE_OUT, but, in case it is not,
+		// rather than check for both states assume a fade in and check for the fade out case.
+		mFadeTime = AUDIO_MUSIC_FADE_IN_TIME;
+		if (LLViewerAudio::getInstance()->getFadeState() == LLViewerAudio::FADE_OUT)
+		{
+			mFadeTime = AUDIO_MUSIC_FADE_OUT_TIME;
+		}
+
+		// Prevent invalid fade time
+		mFadeTime = llmax(mFadeTime, AUDIO_MUSIC_MINIMUM_FADE_TIME);
+
+		stream_fade_timer.reset();
+		stream_fade_timer.setTimerExpirySec(mFadeTime);
+		mDone = false;
+	}
+}
+
+F32 LLViewerAudio::getFadeVolume()
+{
+	F32 fade_volume = 1.0f;
+
+	if (stream_fade_timer.hasExpired())
+	{
+		mDone = true;
+		// If we have been fading out set volume to 0 until the next fade state occurs to prevent
+		// an audio transient.
+		if (LLViewerAudio::getInstance()->getFadeState() == LLViewerAudio::FADE_OUT)
+		{
+			fade_volume = 0.0f;
+		}
+	}
+
+	if (!mDone)
+	{
+		// Calculate how far we are into the fade time
+		fade_volume = stream_fade_timer.getElapsedTimeF32() / mFadeTime;
+		
+		if (LLViewerAudio::getInstance()->getFadeState() == LLViewerAudio::FADE_OUT)
+		{
+			// If we are not fading in then we are fading out, so invert the fade
+			// direction; start loud and move towards zero volume.
+			fade_volume = 1.0f - fade_volume;
+		}
+	}
+
+	return fade_volume;
+}
+
+void LLViewerAudio::onTeleportFailed()
+{
+	if (gAudiop)
+	{
+		LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
+		if (parcel)
+		{
+			mNextStreamURI = parcel->getMusicURL();
+		}
+	}
+}
+
 void init_audio() 
 {
 	if (!gAudiop) 
@@ -142,12 +359,25 @@ void audio_update_volume(bool force_update)
 
 	// Streaming Music
 	if (gAudiop) 
-	{		
+	{
+		if (progress_view_visible  && !LLViewerAudio::getInstance()->getForcedTeleportFade())
+		{
+			LLViewerAudio::getInstance()->setForcedTeleportFade(true);
+			LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(LLStringUtil::null);
+			LLViewerAudio::getInstance()->setNextStreamURI(LLStringUtil::null);
+		}
+
+		if (!progress_view_visible && LLViewerAudio::getInstance()->getForcedTeleportFade() == true)
+		{
+			LLViewerAudio::getInstance()->setForcedTeleportFade(false);
+		}
+
 		F32 music_volume = gSavedSettings.getF32("AudioLevelMusic");
 		BOOL music_muted = gSavedSettings.getBOOL("MuteMusic");
-		music_volume = mute_volume * master_volume * music_volume;
-		gAudiop->setInternetStreamGain ( music_muted || progress_view_visible ? 0.f : music_volume );
-	
+		F32 fade_volume = LLViewerAudio::getInstance()->getFadeVolume();
+
+		music_volume = mute_volume * master_volume * music_volume * fade_volume;
+		gAudiop->setInternetStreamGain (music_muted ? 0.f : music_volume);
 	}
 
 	// Streaming Media
diff --git a/indra/newview/llvieweraudio.h b/indra/newview/llvieweraudio.h
index e5916285fba26684ed391bd8c8507bee3e9fcc29..a3da9fc6b8c12844d0df7995ba0ab696f3d2f187 100644
--- a/indra/newview/llvieweraudio.h
+++ b/indra/newview/llvieweraudio.h
@@ -27,6 +27,9 @@
 #ifndef LL_VIEWERAUDIO_H
 #define LL_VIEWERAUDIO_H
 
+#include "llframetimer.h"
+#include "llsingleton.h"
+
 // comment out to turn off wind
 #define kAUDIO_ENABLE_WIND 
 //#define kAUDIO_ENABLE_WATER 1	// comment out to turn off water
@@ -38,4 +41,48 @@ void audio_update_volume(bool force_update = true);
 void audio_update_listener();
 void audio_update_wind(bool force_update = true);
 
+class LLViewerAudio : public LLSingleton<LLViewerAudio>
+{
+public:
+
+	enum EFadeState
+	{
+		FADE_IDLE,
+		FADE_IN,
+		FADE_OUT,
+	};
+
+	LLViewerAudio();
+	virtual ~LLViewerAudio();
+	
+	void startInternetStreamWithAutoFade(std::string streamURI);
+	void stopInternetStreamWithAutoFade();
+	
+	bool onIdleUpdate();
+
+	EFadeState getFadeState() { return mFadeState; }
+	bool isDone() { return mDone; };
+	F32 getFadeVolume();
+	bool getForcedTeleportFade() { return mForcedTeleportFade; };
+	void setForcedTeleportFade(bool fade) { mForcedTeleportFade = fade;} ;
+	void setNextStreamURI(std::string stream) { mNextStreamURI = stream; } ;
+
+private:
+
+	bool mDone;
+	F32 mFadeTime;
+	std::string mNextStreamURI;
+	EFadeState mFadeState;
+	LLFrameTimer stream_fade_timer;
+	bool mIdleListnerActive;
+	bool mForcedTeleportFade;
+	boost::signals2::connection	mTeleportFailedConnection;
+
+	void registerIdleListener();
+	void deregisterIdleListener() { mIdleListnerActive = false; };
+	void startFading();
+	void onTeleportFailed();
+
+};
+
 #endif //LL_VIEWER_H
diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp
index 7f7366dd3d9ec50b2cf857c28c80e2c05e0938e3..a437a8b3b53624fbfc657507db888792291a474e 100644
--- a/indra/newview/llviewercamera.cpp
+++ b/indra/newview/llviewercamera.cpp
@@ -218,8 +218,15 @@ void LLViewerCamera::calcProjection(const F32 far_distance) const
 void LLViewerCamera::updateFrustumPlanes(LLCamera& camera, BOOL ortho, BOOL zflip, BOOL no_hacks)
 {
 	GLint* viewport = (GLint*) gGLViewport;
-	GLdouble* model = gGLModelView;
-	GLdouble* proj = gGLProjection;
+	F64 model[16];
+	F64 proj[16];
+
+	for (U32 i = 0; i < 16; i++)
+	{
+		model[i] = (F64) gGLModelView[i];
+		proj[i] = (F64) gGLProjection[i];
+	}
+
 	GLdouble objX,objY,objZ;
 
 	LLVector3 frust[8];
@@ -325,8 +332,8 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
 	aspect = getAspect();
 
 	// Load camera view matrix
-	glMatrixMode( GL_PROJECTION );
-	glLoadIdentity();
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.loadIdentity();
 
 	glh::matrix4f proj_mat;
 
@@ -385,14 +392,14 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
 
 	proj_mat *= gl_perspective(fov_y,aspect,z_near,z_far);
 
-	glLoadMatrixf(proj_mat.m);
+	gGL.loadMatrix(proj_mat.m);
 
 	for (U32 i = 0; i < 16; i++)
 	{
 		gGLProjection[i] = proj_mat.m[i];
 	}
 
-	glMatrixMode( GL_MODELVIEW );
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 	glh::matrix4f modelview((GLfloat*) OGL_TO_CFR_ROTATION);
 
@@ -402,7 +409,7 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
 
 	modelview *= glh::matrix4f(ogl_matrix);
 	
-	glLoadMatrixf(modelview.m);
+	gGL.loadMatrix(modelview.m);
 	
 	if (for_selection && (width > 1 || height > 1))
 	{
@@ -420,7 +427,6 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
 	if (!for_selection && mZoomFactor == 1.f)
 	{
 		// Save GL matrices for access elsewhere in code, especially project_world_to_screen
-		//glGetDoublev(GL_MODELVIEW_MATRIX, gGLModelView);
 		for (U32 i = 0; i < 16; i++)
 		{
 			gGLModelView[i] = modelview.m[i];
@@ -428,14 +434,6 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
 	}
 
 	updateFrustumPlanes(*this);
-
-	/*if (gSavedSettings.getBOOL("CameraOffset"))
-	{
-		glMatrixMode(GL_PROJECTION);
-		glTranslatef(0,0,-50);
-		glRotatef(20.0,1,0,0);
-		glMatrixMode(GL_MODELVIEW);
-	}*/
 }
 
 
@@ -443,11 +441,20 @@ void LLViewerCamera::setPerspective(BOOL for_selection,
 // screen coordinates to the agent's region.
 void LLViewerCamera::projectScreenToPosAgent(const S32 screen_x, const S32 screen_y, LLVector3* pos_agent) const
 {
-
 	GLdouble x, y, z;
+
+	F64 mdlv[16];
+	F64 proj[16];
+
+	for (U32 i = 0; i < 16; i++)
+	{
+		mdlv[i] = (F64) gGLModelView[i];
+		proj[i] = (F64) gGLProjection[i];
+	}
+
 	gluUnProject(
 		GLdouble(screen_x), GLdouble(screen_y), 0.0,
-		gGLModelView, gGLProjection, (GLint*)gGLViewport,
+		mdlv, proj, (GLint*)gGLViewport,
 		&x,
 		&y,
 		&z );
@@ -484,8 +491,17 @@ BOOL LLViewerCamera::projectPosAgentToScreen(const LLVector3 &pos_agent, LLCoord
 	viewport[2] = world_view_rect.getWidth();
 	viewport[3] = world_view_rect.getHeight();
 
+	F64 mdlv[16];
+	F64 proj[16];
+
+	for (U32 i = 0; i < 16; i++)
+	{
+		mdlv[i] = (F64) gGLModelView[i];
+		proj[i] = (F64) gGLProjection[i];
+	}
+
 	if (GL_TRUE == gluProject(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ],
-								gGLModelView, gGLProjection, (GLint*)viewport,
+								mdlv, proj, (GLint*)viewport,
 								&x, &y, &z))
 	{
 		// convert screen coordinates to virtual UI coordinates
@@ -587,9 +603,19 @@ BOOL LLViewerCamera::projectPosAgentToScreenEdge(const LLVector3 &pos_agent,
 	viewport[2] = world_view_rect.getWidth();
 	viewport[3] = world_view_rect.getHeight();
 	GLdouble	x, y, z;			// object's window coords, GL-style
+
+	F64 mdlv[16];
+	F64 proj[16];
+
+	for (U32 i = 0; i < 16; i++)
+	{
+		mdlv[i] = (F64) gGLModelView[i];
+		proj[i] = (F64) gGLProjection[i];
+	}
+
 	if (GL_TRUE == gluProject(pos_agent.mV[VX], pos_agent.mV[VY],
-							  pos_agent.mV[VZ], gGLModelView,
-							  gGLProjection, (GLint*)viewport,
+							  pos_agent.mV[VZ], mdlv,
+							  proj, (GLint*)viewport,
 							  &x, &y, &z))
 	{
 		x /= gViewerWindow->getDisplayScale().mV[VX];
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 0f0b7d7e7815101a8c67c4949f462788a9232e29..093b84413a03cd4555d90178374df2a74e7d6e6d 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -118,12 +118,6 @@ static bool handleSetShaderChanged(const LLSD& newvalue)
 	gBumpImageList.destroyGL();
 	gBumpImageList.restoreGL();
 
-	// Changing shader also changes the terrain detail to high, reflect that change here
-	if (newvalue.asBoolean())
-	{
-		// shaders enabled, set terrain detail to high
-		gSavedSettings.setS32("RenderTerrainDetail", 1);
-	}
 	// else, leave terrain detail as is
 	LLViewerShaderMgr::instance()->setShaders();
 	return true;
@@ -187,21 +181,6 @@ static bool handleReleaseGLBufferChanged(const LLSD& newvalue)
 	return true;
 }
 
-static bool handleFSAASamplesChanged(const LLSD& newvalue)
-{
-	if (gPipeline.isInit())
-	{
-		gPipeline.releaseGLBuffers();
-		gPipeline.createGLBuffers();
-
-		if (LLPipeline::sRenderDeferred)
-		{
-			LLViewerShaderMgr::instance()->setShaders();
-		}
-	}
-	return true;
-}
-
 static bool handleAnisotropicChanged(const LLSD& newvalue)
 {
 	LLImageGL::sGlobalUseAnisotropic = newvalue.asBoolean();
@@ -403,6 +382,7 @@ static bool handleRenderDeferredChanged(const LLSD& newvalue)
 	LLRenderTarget::sUseFBO = newvalue.asBoolean();
 	if (gPipeline.isInit())
 	{
+		LLPipeline::refreshCachedSettings();
 		gPipeline.updateRenderDeferred();
 		gPipeline.releaseGLBuffers();
 		gPipeline.createGLBuffers();
@@ -472,12 +452,6 @@ bool handleEffectColorChanged(const LLSD& newvalue)
 	return true;
 }
 
-bool handleVectorizeChanged(const LLSD& newvalue)
-{
-	LLViewerJointMesh::updateVectorize();
-	return true;
-}
-
 bool handleHighResSnapshotChanged(const LLSD& newvalue)
 {
 	// High Res Snapshot active, must uncheck RenderUIInSnapshot
@@ -541,18 +515,12 @@ bool toggle_show_navigation_panel(const LLSD& newvalue)
 {
 	bool value = newvalue.asBoolean();
 
-	LLNavigationBar::getInstance()->showNavigationPanel(value);
+	LLNavigationBar::getInstance()->setVisible(value);
 	gSavedSettings.setBOOL("ShowMiniLocationPanel", !value);
 
 	return true;
 }
 
-bool toggle_show_favorites_panel(const LLSD& newvalue)
-{
-	LLNavigationBar::getInstance()->showFavoritesPanel(newvalue.asBoolean());
-	return true;
-}
-
 bool toggle_show_mini_location_panel(const LLSD& newvalue)
 {
 	bool value = newvalue.asBoolean();
@@ -594,21 +562,20 @@ void settings_setup_listeners()
 	gSavedSettings.getControl("OctreeMaxNodeCapacity")->getSignal()->connect(boost::bind(&handleRepartition, _2));
 	gSavedSettings.getControl("OctreeAlphaDistanceFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2));
 	gSavedSettings.getControl("OctreeAttachmentSizeFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2));
-	gSavedSettings.getControl("RenderMaxTextureIndex")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
+	gSavedSettings.getControl("RenderMaxTextureIndex")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
 	gSavedSettings.getControl("RenderUseTriStrips")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
-	gSavedSettings.getControl("RenderAnimateTrees")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
 	gSavedSettings.getControl("RenderAvatarVP")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
 	gSavedSettings.getControl("VertexShaderEnable")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
 	gSavedSettings.getControl("RenderUIBuffer")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
+	gSavedSettings.getControl("RenderDepthOfField")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
+	gSavedSettings.getControl("RenderFSAASamples")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
 	gSavedSettings.getControl("RenderSpecularResX")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
 	gSavedSettings.getControl("RenderSpecularResY")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
 	gSavedSettings.getControl("RenderSpecularExponent")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
-	gSavedSettings.getControl("RenderFSAASamples")->getSignal()->connect(boost::bind(&handleFSAASamplesChanged, _2));
 	gSavedSettings.getControl("RenderAnisotropic")->getSignal()->connect(boost::bind(&handleAnisotropicChanged, _2));
 	gSavedSettings.getControl("RenderShadowResolutionScale")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
 	gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
 	gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
-	gSavedSettings.getControl("EnableRippleWater")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
 	gSavedSettings.getControl("RenderGlowResolutionPow")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
 	gSavedSettings.getControl("RenderAvatarCloth")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
 	gSavedSettings.getControl("WindLightUseAtmosShaders")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
@@ -639,7 +606,6 @@ void settings_setup_listeners()
 	gSavedSettings.getControl("RenderDeferred")->getSignal()->connect(boost::bind(&handleRenderDeferredChanged, _2));
 	gSavedSettings.getControl("RenderShadowDetail")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
 	gSavedSettings.getControl("RenderDeferredSSAO")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
-	gSavedSettings.getControl("RenderDeferredGI")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));
 	gSavedSettings.getControl("RenderPerformanceTest")->getSignal()->connect(boost::bind(&handleRenderPerfTestChanged, _2));
 	gSavedSettings.getControl("TextureMemory")->getSignal()->connect(boost::bind(&handleVideoMemoryChanged, _2));
 	gSavedSettings.getControl("AuditTexture")->getSignal()->connect(boost::bind(&handleAuditTextureChanged, _2));
@@ -664,6 +630,7 @@ void settings_setup_listeners()
 	gSavedSettings.getControl("MuteAmbient")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
 	gSavedSettings.getControl("MuteUI")->getSignal()->connect(boost::bind(&handleAudioVolumeChanged, _2));
 	gSavedSettings.getControl("RenderVBOEnable")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
+	gSavedSettings.getControl("RenderUseVAO")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
 	gSavedSettings.getControl("RenderVBOMappingDisable")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
 	gSavedSettings.getControl("RenderUseStreamVBO")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
 	gSavedSettings.getControl("RenderPreferStreamDraw")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2));
@@ -718,10 +685,6 @@ void settings_setup_listeners()
 	gSavedSettings.getControl("UserLogFile")->getSignal()->connect(boost::bind(&handleLogFileChanged, _2));
 	gSavedSettings.getControl("RenderHideGroupTitle")->getSignal()->connect(boost::bind(handleHideGroupTitleChanged, _2));
 	gSavedSettings.getControl("HighResSnapshot")->getSignal()->connect(boost::bind(handleHighResSnapshotChanged, _2));
-	gSavedSettings.getControl("VectorizePerfTest")->getSignal()->connect(boost::bind(&handleVectorizeChanged, _2));
-	gSavedSettings.getControl("VectorizeEnable")->getSignal()->connect(boost::bind(&handleVectorizeChanged, _2));
-	gSavedSettings.getControl("VectorizeProcessor")->getSignal()->connect(boost::bind(&handleVectorizeChanged, _2));
-	gSavedSettings.getControl("VectorizeSkin")->getSignal()->connect(boost::bind(&handleVectorizeChanged, _2));
 	gSavedSettings.getControl("EnableVoiceChat")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _2));
 	gSavedSettings.getControl("PTTCurrentlyEnabled")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _2));
 	gSavedSettings.getControl("PushToTalkButton")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _2));
@@ -736,7 +699,6 @@ void settings_setup_listeners()
 	gSavedSettings.getControl("UseDebugMenus")->getSignal()->connect(boost::bind(&show_debug_menus));
 	gSavedSettings.getControl("AgentPause")->getSignal()->connect(boost::bind(&toggle_agent_pause, _2));
 	gSavedSettings.getControl("ShowNavbarNavigationPanel")->getSignal()->connect(boost::bind(&toggle_show_navigation_panel, _2));
-	gSavedSettings.getControl("ShowNavbarFavoritesPanel")->getSignal()->connect(boost::bind(&toggle_show_favorites_panel, _2));
 	gSavedSettings.getControl("ShowMiniLocationPanel")->getSignal()->connect(boost::bind(&toggle_show_mini_location_panel, _2));
 	gSavedSettings.getControl("ShowObjectRenderingCost")->getSignal()->connect(boost::bind(&toggle_show_object_render_cost, _2));
 	gSavedSettings.getControl("UpdaterServiceSetting")->getSignal()->connect(boost::bind(&toggle_updater_service_active, _2));
diff --git a/indra/newview/llviewercontrollistener.cpp b/indra/newview/llviewercontrollistener.cpp
index 8bc25fa28176404d79f5ea9d02c20e4152d0656a..361b96221ca893904744aebfe4dd7f2ab5a6df04 100644
--- a/indra/newview/llviewercontrollistener.cpp
+++ b/indra/newview/llviewercontrollistener.cpp
@@ -31,99 +31,196 @@
 #include "llviewercontrollistener.h"
 
 #include "llviewercontrol.h"
+#include "llcontrol.h"
+#include "llerror.h"
+#include "llsdutil.h"
+#include "stringize.h"
+#include <sstream>
 
-LLViewerControlListener gSavedSettingsListener;
+namespace {
+
+LLViewerControlListener sSavedSettingsListener;
+
+} // unnamed namespace
 
 LLViewerControlListener::LLViewerControlListener()
 	: LLEventAPI("LLViewerControl",
-                 "LLViewerControl listener: set, toggle or set default for various controls",
-                 "group")
+				 "LLViewerControl listener: set, toggle or set default for various controls")
 {
-	add("Global",
-        "Set gSavedSettings control [\"key\"] to value [\"value\"]",
-        boost::bind(&LLViewerControlListener::set, &gSavedSettings, _1));
-	add("PerAccount",
-        "Set gSavedPerAccountSettings control [\"key\"] to value [\"value\"]",
-        boost::bind(&LLViewerControlListener::set, &gSavedPerAccountSettings, _1));
-	add("Warning",
-        "Set gWarningSettings control [\"key\"] to value [\"value\"]",
-        boost::bind(&LLViewerControlListener::set, &gWarningSettings, _1));
-	add("Crash",
-        "Set gCrashSettings control [\"key\"] to value [\"value\"]",
-        boost::bind(&LLViewerControlListener::set, &gCrashSettings, _1));
-
-#if 0
-	add(/*"toggleControl",*/ "Global", boost::bind(&LLViewerControlListener::toggleControl, &gSavedSettings, _1));
-	add(/*"toggleControl",*/ "PerAccount", boost::bind(&LLViewerControlListener::toggleControl, &gSavedPerAccountSettings, _1));
-	add(/*"toggleControl",*/ "Warning", boost::bind(&LLViewerControlListener::toggleControl, &gWarningSettings, _1));
-	add(/*"toggleControl",*/ "Crash", boost::bind(&LLViewerControlListener::toggleControl, &gCrashSettings, _1));
-
-	add(/*"setDefault",*/ "Global", boost::bind(&LLViewerControlListener::setDefault, &gSavedSettings, _1));
-	add(/*"setDefault",*/ "PerAccount", boost::bind(&LLViewerControlListener::setDefault, &gSavedPerAccountSettings, _1));
-	add(/*"setDefault",*/ "Warning", boost::bind(&LLViewerControlListener::setDefault, &gWarningSettings, _1));
-	add(/*"setDefault",*/ "Crash", boost::bind(&LLViewerControlListener::setDefault, &gCrashSettings, _1));
-#endif // 0
+	std::ostringstream groupnames;
+	groupnames << "[\"group\"] is one of ";
+	const char* delim = "";
+	for (LLControlGroup::key_iter cgki(LLControlGroup::beginKeys()),
+								  cgkend(LLControlGroup::endKeys());
+		 cgki != cgkend; ++cgki)
+	{
+		groupnames << delim << '"' << *cgki << '"';
+		delim = ", ";
+	}
+	groupnames << '\n';
+	std::string grouphelp(groupnames.str());
+	std::string replyhelp("If [\"reply\"] requested, send new [\"value\"] on specified LLEventPump\n");
+
+	add("set",
+		std::string("Set [\"group\"] control [\"key\"] to optional value [\"value\"]\n"
+					"If [\"value\"] omitted, set to control's defined default value\n") +
+		grouphelp + replyhelp,
+		&LLViewerControlListener::set,
+		LLSDMap("group", LLSD())("key", LLSD()));
+	add("toggle",
+		std::string("Toggle [\"group\"] control [\"key\"], if boolean\n") + grouphelp + replyhelp,
+		&LLViewerControlListener::toggle,
+		LLSDMap("group", LLSD())("key", LLSD()));
+	add("get",
+		std::string("Query [\"group\"] control [\"key\"], replying on LLEventPump [\"reply\"]\n") +
+		grouphelp,
+		&LLViewerControlListener::get,
+		LLSDMap("group", LLSD())("key", LLSD())("reply", LLSD()));
+	add("groups",
+		"Send on LLEventPump [\"reply\"] an array [\"groups\"] of valid group names",
+		&LLViewerControlListener::groups,
+		LLSDMap("reply", LLSD()));
+	add("vars",
+		std::string("For [\"group\"], send on LLEventPump [\"reply\"] an array [\"vars\"],\n"
+					"each of whose entries looks like:\n"
+					"  [\"name\"], [\"type\"], [\"value\"], [\"comment\"]\n") + grouphelp,
+		&LLViewerControlListener::vars,
+		LLSDMap("group", LLSD())("reply", LLSD()));
 }
 
-//static
-void LLViewerControlListener::set(LLControlGroup * controls, LLSD const & event_data)
+struct Info
 {
-	if(event_data.has("key"))
+	Info(const LLSD& request):
+		response(LLSD(), request),
+		groupname(request["group"]),
+		group(LLControlGroup::getInstance(groupname)),
+		key(request["key"]),
+		control(NULL)
 	{
-		std::string key(event_data["key"]);
+		if (! group)
+		{
+			response.error(STRINGIZE("Unrecognized group '" << groupname << "'"));
+			return;
+		}
 
-		if(controls->controlExists(key))
+		control = group->getControl(key);
+		if (! control)
 		{
-			controls->setUntypedValue(key, event_data["value"]);
+			response.error(STRINGIZE("In group '" << groupname
+									 << "', unrecognized control key '" << key << "'"));
 		}
-		else
+	}
+
+	~Info()
+	{
+		// If in fact the request passed to our constructor names a valid
+		// group and key, grab the final value of the indicated control and
+		// stuff it in our response. Since this outer destructor runs before
+		// the contained Response destructor, this data will go into the
+		// response we send.
+		if (control)
 		{
-			llwarns << "requested unknown control: \"" << key << '\"' << llendl;
+			response["name"]	= control->getName();
+			response["type"]	= group->typeEnumToString(control->type());
+			response["value"]	= control->get();
+			response["comment"] = control->getComment();
 		}
 	}
+
+	LLEventAPI::Response response;
+	std::string groupname;
+	LLControlGroup* group;
+	std::string key;
+	LLControlVariable* control;
+};
+
+//static
+void LLViewerControlListener::set(LLSD const & request)
+{
+	Info info(request);
+	if (! info.control)
+		return;
+
+	if (request.has("value"))
+	{
+		info.control->setValue(request["value"]);
+	}
+	else
+	{
+		info.control->resetToDefault();
+	}
 }
 
 //static
-void LLViewerControlListener::toggleControl(LLControlGroup * controls, LLSD const & event_data)
+void LLViewerControlListener::toggle(LLSD const & request)
 {
-	if(event_data.has("key"))
+	Info info(request);
+	if (! info.control)
+		return;
+
+	if (info.control->isType(TYPE_BOOLEAN))
+	{
+		info.control->set(! info.control->get().asBoolean());
+	}
+	else
 	{
-		std::string key(event_data["key"]);
+		info.response.error(STRINGIZE("toggle of non-boolean '" << info.groupname
+									  << "' control '" << info.key
+									  << "', type is "
+									  << info.group->typeEnumToString(info.control->type())));
+	}
+}
 
-		if(controls->controlExists(key))
-		{
-			LLControlVariable * control = controls->getControl(key);
-			if(control->isType(TYPE_BOOLEAN))
-			{
-				control->set(!control->get().asBoolean());
-			}
-			else
-			{
-				llwarns << "requested toggle of non-boolean control: \"" << key << "\", type is " << control->type() << llendl;
-			}
-		}
-		else
-		{
-			llwarns << "requested unknown control: \"" << key << '\"' << llendl;
-		}
+void LLViewerControlListener::get(LLSD const & request)
+{
+	// The Info constructor and destructor actually do all the work here.
+	Info info(request);
+}
+
+void LLViewerControlListener::groups(LLSD const & request)
+{
+	// No Info, we're not looking up either a group or a control name.
+	Response response(LLSD(), request);
+	for (LLControlGroup::key_iter cgki(LLControlGroup::beginKeys()),
+								  cgkend(LLControlGroup::endKeys());
+		 cgki != cgkend; ++cgki)
+	{
+		response["groups"].append(*cgki);
 	}
 }
 
-//static
-void LLViewerControlListener::setDefault(LLControlGroup * controls, LLSD const & event_data)
+struct CollectVars: public LLControlGroup::ApplyFunctor
 {
-	if(event_data.has("key"))
+	CollectVars(LLControlGroup* g):
+		mGroup(g)
+	{}
+
+	virtual void apply(const std::string& name, LLControlVariable* control)
 	{
-		std::string key(event_data["key"]);
+		vars.append(LLSDMap
+					("name", name)
+					("type", mGroup->typeEnumToString(control->type()))
+					("value", control->get())
+					("comment", control->getComment()));
+	}
 
-		if(controls->controlExists(key))
-		{
-			LLControlVariable * control = controls->getControl(key);
-			control->resetToDefault();
-		}
-		else
-		{
-			llwarns << "requested unknown control: \"" << key << '\"' << llendl;
-		}
+	LLControlGroup* mGroup;
+	LLSD vars;
+};
+
+void LLViewerControlListener::vars(LLSD const & request)
+{
+	// This method doesn't use Info, because we're not looking up a specific
+	// control name.
+	Response response(LLSD(), request);
+	std::string groupname(request["group"]);
+	LLControlGroup* group(LLControlGroup::getInstance(groupname));
+	if (! group)
+	{
+		return response.error(STRINGIZE("Unrecognized group '" << groupname << "'"));
 	}
+
+	CollectVars collector(group);
+	group->applyToAll(&collector);
+	response["vars"] = collector.vars;
 }
diff --git a/indra/newview/llviewercontrollistener.h b/indra/newview/llviewercontrollistener.h
index fd211b97af7280dbd1fe14f0e3a09097356e0feb..2e72046924cd8fa5638078b0a3ecfe74708d207e 100644
--- a/indra/newview/llviewercontrollistener.h
+++ b/indra/newview/llviewercontrollistener.h
@@ -40,11 +40,11 @@ class  LLViewerControlListener : public LLEventAPI
 	LLViewerControlListener();
 
 private:
-	static void set(LLControlGroup *controls, LLSD const & event_data);
-	static void toggleControl(LLControlGroup *controls, LLSD const & event_data);
-	static void setDefault(LLControlGroup *controls, LLSD const & event_data);
+	static void set(LLSD const & event_data);
+	static void toggle(LLSD const & event_data);
+	static void get(LLSD const & event_data);
+	static void groups(LLSD const & event_data);
+	static void vars(LLSD const & event_data);
 };
 
-extern LLViewerControlListener gSavedSettingsListener;
-
 #endif // LL_LLVIEWERCONTROLLISTENER_H
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 6142ee0dd661edc04998e9769d670c03d8d1c402..cb40af7061298b4ee4886c417e16e21657db84ed 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -114,8 +114,8 @@ void render_disconnected_background();
 void display_startup()
 {
 	if (   !gViewerWindow->getActive()
-		|| !gViewerWindow->mWindow->getVisible() 
-		|| gViewerWindow->mWindow->getMinimized() )
+		|| !gViewerWindow->getWindow()->getVisible() 
+		|| gViewerWindow->getWindow()->getMinimized() )
 	{
 		return; 
 	}
@@ -124,7 +124,8 @@ void display_startup()
 
 	// Update images?
 	//gImageList.updateImages(0.01f);
-	
+	LLTexUnit::sWhiteTexture = LLViewerFetchedTexture::sWhiteImagep->getTexName();
+
 	LLGLSDefault gls_default;
 
 	// Required for HTML update in login screen
@@ -157,7 +158,7 @@ void display_startup()
 	LLGLState::checkStates();
 	LLGLState::checkTextureChannels();
 
-	gViewerWindow->mWindow->swapBuffers();
+	gViewerWindow->getWindow()->swapBuffers();
 	glClear(GL_DEPTH_BUFFER_BIT);
 }
 
@@ -202,7 +203,7 @@ void display_stats()
 		gMemoryAllocated = LLMemory::getCurrentRSS();
 		U32 memory = (U32)(gMemoryAllocated / (1024*1024));
 		llinfos << llformat("MEMORY: %d MB", memory) << llendl;
-		LLMemory::logMemoryInfo() ;
+		LLMemory::logMemoryInfo(TRUE) ;
 		gRecentMemoryTime.reset();
 	}
 }
@@ -212,6 +213,10 @@ static LLFastTimer::DeclareTimer FTM_RENDER("Render", true);
 static LLFastTimer::DeclareTimer FTM_UPDATE_SKY("Update Sky");
 static LLFastTimer::DeclareTimer FTM_UPDATE_TEXTURES("Update Textures");
 static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE("Update Images");
+static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE_CLASS("Class");
+static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE_BUMP("Bump");
+static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE_LIST("List");
+static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE_DELETE("Delete");
 
 // Paint the display!
 void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
@@ -223,7 +228,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 	{ //skip render on frames where window has been resized
 		gGL.flush();
 		glClear(GL_COLOR_BUFFER_BIT);
-		gViewerWindow->mWindow->swapBuffers();
+		gViewerWindow->getWindow()->swapBuffers();
+		LLPipeline::refreshCachedSettings();
 		gPipeline.resizeScreenTexture();
 		gResizeScreenTexture = FALSE;
 		gWindowResized = FALSE;
@@ -260,8 +266,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 	// In fact, must explicitly check the minimized state before drawing.
 	// Attempting to draw into a minimized window causes a GL error. JC
 	if (   !gViewerWindow->getActive()
-		|| !gViewerWindow->mWindow->getVisible() 
-		|| gViewerWindow->mWindow->getMinimized() )
+		|| !gViewerWindow->getWindow()->getVisible() 
+		|| gViewerWindow->getWindow()->getMinimized() )
 	{
 		// Clean up memory the pools may have allocated
 		if (rebuild)
@@ -523,10 +529,9 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 	// Note that these are not the same as GL defaults...
 
 	stop_glerror();
-	F32 one[4] =	{1.f, 1.f, 1.f, 1.f};
-	glLightModelfv (GL_LIGHT_MODEL_AMBIENT,one);
+	gGL.setAmbientLightColor(LLColor4::white);
 	stop_glerror();
-		
+			
 	/////////////////////////////////////
 	//
 	// Render
@@ -612,11 +617,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 		LLDrawable::incrementVisible();
 
 		LLSpatialGroup::sNoDelete = TRUE;
-		LLPipeline::sUseOcclusion = 
-				(!gUseWireframe
-				&& LLFeatureManager::getInstance()->isFeatureAvailable("UseOcclusion") 
-				&& gSavedSettings.getBOOL("UseOcclusion") 
-				&& gGLManager.mHasOcclusionQuery) ? 2 : 0;
 		LLTexUnit::sWhiteTexture = LLViewerFetchedTexture::sWhiteImagep->getTexName();
 
 		/*if (LLPipeline::sUseOcclusion && LLPipeline::sRenderDeferred)
@@ -624,12 +624,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 			LLPipeline::sUseOcclusion = 3;
 		}*/
 
-		LLPipeline::sAutoMaskAlphaDeferred = gSavedSettings.getBOOL("RenderAutoMaskAlphaDeferred");
-		LLPipeline::sAutoMaskAlphaNonDeferred = gSavedSettings.getBOOL("RenderAutoMaskAlphaNonDeferred");
-		LLPipeline::sUseFarClip = gSavedSettings.getBOOL("RenderUseFarClip");
-		LLVOAvatar::sMaxVisible = (U32)gSavedSettings.getS32("RenderAvatarMaxVisible");
-		LLPipeline::sDelayVBUpdate = gSavedSettings.getBOOL("RenderDelayVBUpdate");
-
 		S32 occlusion = LLPipeline::sUseOcclusion;
 		if (gDepthDirty)
 		{ //depth buffer is invalid, don't overwrite occlusion state
@@ -657,10 +651,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 		
 		{ 
 			LLMemType mt_ds(LLMemType::MTYPE_DISPLAY_SWAP);
-			{
- 				LLFastTimer ftm(FTM_CLIENT_COPY);
-				LLVertexBuffer::clientCopy(0.016);
-			}
 
 			if (gResizeScreenTexture)
 			{
@@ -701,10 +691,10 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 
 				glh_set_current_projection(proj);
 				glh_set_current_modelview(mod);
-				glMatrixMode(GL_PROJECTION);
-				glLoadMatrixf(proj.m);
-				glMatrixMode(GL_MODELVIEW);
-				glLoadMatrixf(mod.m);
+				gGL.matrixMode(LLRender::MM_PROJECTION);
+				gGL.loadMatrix(proj.m);
+				gGL.matrixMode(LLRender::MM_MODELVIEW);
+				gGL.loadMatrix(mod.m);
 				gViewerWindow->setup3DViewport();
 
 				LLGLState::checkStates();
@@ -724,6 +714,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 			LLAppViewer::instance()->pingMainloopTimeout("Display:Imagery");
 			gPipeline.generateWaterReflection(*LLViewerCamera::getInstance());
 			gPipeline.generateHighlight(*LLViewerCamera::getInstance());
+			gPipeline.renderPhysicsDisplay();
 		}
 
 		LLGLState::checkStates();
@@ -742,18 +733,31 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 			LLMemType mt_iu(LLMemType::MTYPE_DISPLAY_IMAGE_UPDATE);
 			LLFastTimer t(FTM_IMAGE_UPDATE);
 			
-			LLViewerTexture::updateClass(LLViewerCamera::getInstance()->getVelocityStat()->getMean(),
-										LLViewerCamera::getInstance()->getAngularVelocityStat()->getMean());
+			{
+				LLFastTimer t(FTM_IMAGE_UPDATE_CLASS);
+				LLViewerTexture::updateClass(LLViewerCamera::getInstance()->getVelocityStat()->getMean(),
+											LLViewerCamera::getInstance()->getAngularVelocityStat()->getMean());
+			}
 
-			gBumpImageList.updateImages();  // must be called before gTextureList version so that it's textures are thrown out first.
+			
+			{
+				LLFastTimer t(FTM_IMAGE_UPDATE_BUMP);
+				gBumpImageList.updateImages();  // must be called before gTextureList version so that it's textures are thrown out first.
+			}
 
-			F32 max_image_decode_time = 0.050f*gFrameIntervalSeconds; // 50 ms/second decode time
-			max_image_decode_time = llclamp(max_image_decode_time, 0.002f, 0.005f ); // min 2ms/frame, max 5ms/frame)
-			gTextureList.updateImages(max_image_decode_time);
+			{
+				LLFastTimer t(FTM_IMAGE_UPDATE_LIST);
+				F32 max_image_decode_time = 0.050f*gFrameIntervalSeconds; // 50 ms/second decode time
+				max_image_decode_time = llclamp(max_image_decode_time, 0.002f, 0.005f ); // min 2ms/frame, max 5ms/frame)
+				gTextureList.updateImages(max_image_decode_time);
+			}
 
-			//remove dead textures from GL
-			LLImageGL::deleteDeadTextures();
-			stop_glerror();
+			{
+				LLFastTimer t(FTM_IMAGE_UPDATE_DELETE);
+				//remove dead textures from GL
+				LLImageGL::deleteDeadTextures();
+				stop_glerror();
+			}
 		}
 
 		LLGLState::checkStates();
@@ -812,13 +816,13 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 		//// assumes frontmost floater with focus is opaque
 		//if (frontmost_floaterp && gFocusMgr.childHasKeyboardFocus(frontmost_floaterp))
 		//{
-		//	glMatrixMode(GL_MODELVIEW);
-		//	glPushMatrix();
+		//	gGL.matrixMode(LLRender::MM_MODELVIEW);
+		//	gGL.pushMatrix();
 		//	{
 		//		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 
 		//		glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE);
-		//		glLoadIdentity();
+		//		gGL.loadIdentity();
 
 		//		LLRect floater_rect = frontmost_floaterp->calcScreenRect();
 		//		// deflate by one pixel so rounding errors don't occlude outside of floater extents
@@ -828,8 +832,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 		//								(F32)floater_rect.mRight / (F32)gViewerWindow->getWindowWidthScaled(),
 		//								(F32)floater_rect.mBottom / (F32)gViewerWindow->getWindowHeightScaled());
 		//		floater_3d_rect.translate(-0.5f, -0.5f);
-		//		glTranslatef(0.f, 0.f, -LLViewerCamera::getInstance()->getNear());
-		//		glScalef(LLViewerCamera::getInstance()->getNear() * LLViewerCamera::getInstance()->getAspect() / sinf(LLViewerCamera::getInstance()->getView()), LLViewerCamera::getInstance()->getNear() / sinf(LLViewerCamera::getInstance()->getView()), 1.f);
+		//		gGL.translatef(0.f, 0.f, -LLViewerCamera::getInstance()->getNear());
+		//		gGL.scalef(LLViewerCamera::getInstance()->getNear() * LLViewerCamera::getInstance()->getAspect() / sinf(LLViewerCamera::getInstance()->getView()), LLViewerCamera::getInstance()->getNear() / sinf(LLViewerCamera::getInstance()->getView()), 1.f);
 		//		gGL.color4fv(LLColor4::white.mV);
 		//		gGL.begin(LLVertexBuffer::QUADS);
 		//		{
@@ -841,11 +845,10 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 		//		gGL.end();
 		//		glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
 		//	}
-		//	glPopMatrix();
+		//	gGL.popMatrix();
 		//}
 
 		LLPipeline::sUnderWaterRender = LLViewerCamera::getInstance()->cameraUnderWater() ? TRUE : FALSE;
-		LLPipeline::refreshRenderDeferred();
 		
 		LLGLState::checkStates();
 		LLGLState::checkClientArrays();
@@ -865,6 +868,11 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 			else
 			{
 				gPipeline.mScreen.bindTarget();
+				if (LLPipeline::sUnderWaterRender && !gPipeline.canUseWindLightShaders())
+				{
+					const LLColor4 &col = LLDrawPoolWater::sWaterFogColor;
+					glClearColor(col.mV[0], col.mV[1], col.mV[2], 0.f);
+				}
 				gPipeline.mScreen.clear();
 			}
 			
@@ -978,10 +986,10 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 void render_hud_attachments()
 {
 	LLMemType mt_ra(LLMemType::MTYPE_DISPLAY_RENDER_ATTACHMENTS);
-	glMatrixMode(GL_PROJECTION);
-	glPushMatrix();
-	glMatrixMode(GL_MODELVIEW);
-	glPushMatrix();
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.pushMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.pushMatrix();
 		
 	glh::matrix4f current_proj = glh_get_current_projection();
 	glh::matrix4f current_mod = glh_get_current_modelview();
@@ -1067,10 +1075,10 @@ void render_hud_attachments()
 		}
 		LLPipeline::sUseOcclusion = use_occlusion;
 	}
-	glMatrixMode(GL_PROJECTION);
-	glPopMatrix();
-	glMatrixMode(GL_MODELVIEW);
-	glPopMatrix();
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.popMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.popMatrix();
 	
 	glh_set_current_projection(current_proj);
 	glh_set_current_modelview(current_mod);
@@ -1153,12 +1161,12 @@ BOOL setup_hud_matrices(const LLRect& screen_region)
 	if (!result) return result;
 	
 	// set up transform to keep HUD objects in front of camera
-	glMatrixMode(GL_PROJECTION);
-	glLoadMatrixf(proj.m);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.loadMatrix(proj.m);
 	glh_set_current_projection(proj);
 	
-	glMatrixMode(GL_MODELVIEW);
-	glLoadMatrixf(model.m);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.loadMatrix(model.m);
 	glh_set_current_modelview(model);
 	return TRUE;
 }
@@ -1174,8 +1182,8 @@ void render_ui(F32 zoom_factor, int subfield)
 
 	if (!gSnapshot)
 	{
-		glPushMatrix();
-		glLoadMatrixd(gGLLastModelView);
+		gGL.pushMatrix();
+		gGL.loadMatrix(gGLLastModelView);
 		glh_set_current_modelview(glh_copy_matrix(gGLLastModelView));
 	}
 	
@@ -1231,13 +1239,13 @@ void render_ui(F32 zoom_factor, int subfield)
 	if (!gSnapshot)
 	{
 		glh_set_current_modelview(saved_view);
-		glPopMatrix();
+		gGL.popMatrix();
 	}
 
 	if (gDisplaySwapBuffers)
 	{
 		LLFastTimer t(FTM_SWAP);
-		gViewerWindow->mWindow->swapBuffers();
+		gViewerWindow->getWindow()->swapBuffers();
 	}
 	gDisplaySwapBuffers = TRUE;
 }
@@ -1304,10 +1312,10 @@ void draw_axes()
 		gGL.vertex3f(0.0f, 0.0f, 40.0f);
 	gGL.end();
 	// Some coordinate axes
-	glPushMatrix();
-		glTranslatef( v.mV[VX], v.mV[VY], v.mV[VZ] );
+	gGL.pushMatrix();
+		gGL.translatef( v.mV[VX], v.mV[VY], v.mV[VZ] );
 		renderCoordinateAxes();
-	glPopMatrix();
+	gGL.popMatrix();
 }
 
 void render_ui_3d()
@@ -1329,14 +1337,19 @@ void render_ui_3d()
 
 	// Debugging stuff goes before the UI.
 
+	stop_glerror();
+	
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gUIProgram.bind();
+	}
+
 	// Coordinate axes
 	if (gSavedSettings.getBOOL("ShowAxes"))
 	{
 		draw_axes();
 	}
 
-	stop_glerror();
-		
 	gViewerWindow->renderSelections(FALSE, FALSE, TRUE); // Non HUD call in render_hud_elements
 	stop_glerror();
 }
@@ -1377,10 +1390,10 @@ void render_ui_2d()
 		gGL.pushMatrix();
 		S32 half_width = (gViewerWindow->getWorldViewWidthScaled() / 2);
 		S32 half_height = (gViewerWindow->getWorldViewHeightScaled() / 2);
-		glScalef(LLUI::sGLScaleFactor.mV[0], LLUI::sGLScaleFactor.mV[1], 1.f);
-		glTranslatef((F32)half_width, (F32)half_height, 0.f);
+		gGL.scalef(LLUI::sGLScaleFactor.mV[0], LLUI::sGLScaleFactor.mV[1], 1.f);
+		gGL.translatef((F32)half_width, (F32)half_height, 0.f);
 		F32 zoom = gAgentCamera.mHUDCurZoom;
-		glScalef(zoom,zoom,1.f);
+		gGL.scalef(zoom,zoom,1.f);
 		gGL.color4fv(LLColor4::white.mV);
 		gl_rect_2d(-half_width, half_height, half_width, -half_height, FALSE);
 		gGL.popMatrix();
@@ -1459,6 +1472,11 @@ void render_ui_2d()
 
 void render_disconnected_background()
 {
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gUIProgram.bind();
+	}
+
 	gGL.color4f(1,1,1,1);
 	if (!gDisconnectedImagep && gDisconnected)
 	{
@@ -1512,22 +1530,28 @@ void render_disconnected_background()
 	{
 		LLGLSUIDefault gls_ui;
 		gViewerWindow->setup2DRender();
-		glPushMatrix();
+		gGL.pushMatrix();
 		{
 			// scale ui to reflect UIScaleFactor
 			// this can't be done in setup2DRender because it requires a
 			// pushMatrix/popMatrix pair
 			const LLVector2& display_scale = gViewerWindow->getDisplayScale();
-			glScalef(display_scale.mV[VX], display_scale.mV[VY], 1.f);
+			gGL.scalef(display_scale.mV[VX], display_scale.mV[VY], 1.f);
 
 			gGL.getTexUnit(0)->bind(gDisconnectedImagep);
 			gGL.color4f(1.f, 1.f, 1.f, 1.f);
 			gl_rect_2d_simple_tex(width, height);
 			gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 		}
-		glPopMatrix();
+		gGL.popMatrix();
 	}
 	gGL.flush();
+
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gUIProgram.unbind();
+	}
+
 }
 
 void display_cleanup()
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 8e2240981b43f6eed48fa08f1f19e075334b995b..bb870f76514344f395740ad5e6ef6c38c32df97d 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -37,6 +37,7 @@
 #include "llfloaterabout.h"
 #include "llfloateranimpreview.h"
 #include "llfloaterauction.h"
+#include "llfloateravatar.h"
 #include "llfloateravatarpicker.h"
 #include "llfloateravatartextures.h"
 #include "llfloaterbeacons.h"
@@ -56,15 +57,15 @@
 #include "llfloatereditwater.h"
 #include "llfloaterenvironmentsettings.h"
 #include "llfloaterevent.h"
-#include "llfloatersearch.h"
+#include "llfloaterdestinations.h"
 #include "llfloaterfonttest.h"
 #include "llfloatergesture.h"
 #include "llfloatergodtools.h"
 #include "llfloatergroups.h"
 #include "llfloaterhardwaresettings.h"
 #include "llfloaterhelpbrowser.h"
-#include "llfloatermediabrowser.h"
 #include "llfloaterwebcontent.h"
+#include "llfloaterwebprofile.h"
 #include "llfloatermediasettings.h"
 #include "llfloaterhud.h"
 #include "llfloaterimagepreview.h"
@@ -82,9 +83,9 @@
 #include "llfloaternotificationsconsole.h"
 #include "llfloaterobjectweights.h"
 #include "llfloateropenobject.h"
+#include "llfloateroutbox.h"
 #include "llfloaterpay.h"
 #include "llfloaterperms.h"
-#include "llfloaterpostcard.h"
 #include "llfloaterpostprocess.h"
 #include "llfloaterpreference.h"
 #include "llfloaterproperties.h"
@@ -93,9 +94,10 @@
 #include "llfloaterreporter.h"
 #include "llfloaterscriptdebug.h"
 #include "llfloaterscriptlimits.h"
+#include "llfloatersearch.h"
 #include "llfloatersellland.h"
 #include "llfloatersettingsdebug.h"
-#include "llfloatersidetraytab.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfloatersnapshot.h"
 #include "llfloatersounddevices.h"
 #include "llfloatertelehub.h"
@@ -104,6 +106,8 @@
 #include "llfloatertools.h"
 #include "llfloatertos.h"
 #include "llfloatertopobjects.h"
+#include "llfloatertoybox.h"
+#include "llfloatertranslationsettings.h"
 #include "llfloateruipreview.h"
 #include "llfloatervoiceeffect.h"
 #include "llfloaterwhitelistentry.h"
@@ -129,6 +133,7 @@
 #include "llscriptfloater.h"
 #include "llfloatermodelpreview.h"
 #include "llcommandhandler.h"
+#include "llnearbychatbar.h"
 
 // *NOTE: Please add files in alphabetical order to keep merges easy.
 
@@ -163,7 +168,9 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterAboutUtil::registerFloater();
 	LLFloaterReg::add("fast_timers", "floater_fast_timers.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFastTimerView>);
 	LLFloaterReg::add("about_land", "floater_about_land.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLand>);
+	LLFloaterReg::add("appearance", "floater_my_appearance.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
 	LLFloaterReg::add("auction", "floater_auction.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAuction>);
+	LLFloaterReg::add("avatar", "floater_avatar.xml",  (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatar>);
 	LLFloaterReg::add("avatar_picker", "floater_avatar_picker.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarPicker>);
 	LLFloaterReg::add("avatar_textures", "floater_avatar_textures.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarTextures>);
 
@@ -179,10 +186,12 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("bumps", "floater_bumps.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBump>);
 
 	LLFloaterReg::add("camera", "floater_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCamera>);
-	LLFloaterReg::add("nearby_chat", "floater_nearby_chat.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChat>);
+	LLFloaterReg::add("chat_bar", "floater_chat_bar.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNearbyChatBar>);
 
 	LLFloaterReg::add("compile_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCompileQueue>);
 
+	LLFloaterReg::add("destinations", "floater_destinations.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDestinations>);
+
 	LLFloaterReg::add("env_post_process", "floater_post_process.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPostProcess>);
 	LLFloaterReg::add("env_settings", "floater_environment_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEnvironmentSettings>);
 	LLFloaterReg::add("env_delete_preset", "floater_delete_env_preset.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterDeleteEnvPreset>);
@@ -205,7 +214,7 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("im_container", "floater_im_container.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMFloaterContainer>);
 	LLFloaterReg::add("im_well_window", "floater_sys_well.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMWellWindow>);
 	LLFloaterReg::add("incoming_call", "floater_incoming_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIncomingCallDialog>);
-	LLFloaterReg::add("inventory", "floater_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterInventory>);
+	LLFloaterReg::add("inventory", "floater_my_inventory.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
 	LLFloaterReg::add("inspect", "floater_inspect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterInspect>);
 	LLInspectAvatarUtil::registerFloater();
 	LLInspectGroupUtil::registerFloater();
@@ -218,7 +227,6 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("land_holdings", "floater_land_holdings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLandHoldings>);
 	
 	LLFloaterReg::add("mem_leaking", "floater_mem_leaking.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMemLeak>);
-	LLFloaterReg::add("media_browser", "floater_media_browser.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMediaBrowser>);	
 	LLFloaterReg::add("media_settings", "floater_media_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMediaSettings>);	
 	LLFloaterReg::add("message_critical", "floater_critical.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTOS>);
 	LLFloaterReg::add("message_tos", "floater_tos.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTOS>);
@@ -231,14 +239,18 @@ void LLViewerFloaterReg::registerFloaters()
 
 	LLFloaterReg::add("object_weights", "floater_object_weights.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterObjectWeights>);
 	LLFloaterReg::add("openobject", "floater_openobject.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterOpenObject>);
+	LLFloaterReg::add("outbox", "floater_merchant_outbox.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterOutbox>);
 	LLFloaterReg::add("outgoing_call", "floater_outgoing_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutgoingCallDialog>);
 	LLFloaterPayUtil::registerFloater();
 
-	LLFloaterReg::add("postcard", "floater_postcard.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPostcard>);
+	LLFloaterReg::add("people", "floater_people.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
+	LLFloaterReg::add("places", "floater_places.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
 	LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>);
 	LLFloaterReg::add("prefs_proxy", "floater_preferences_proxy.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreferenceProxy>);
 	LLFloaterReg::add("prefs_hardware_settings", "floater_hardware_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterHardwareSettings>);
+	LLFloaterReg::add("prefs_translation", "floater_translation_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTranslationSettings>);
 	LLFloaterReg::add("perm_prefs", "floater_perm_prefs.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPerms>);
+	LLFloaterReg::add("picks", "floater_picks.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
 	LLFloaterReg::add("pref_joystick", "floater_joystick.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterJoystick>);
 	LLFloaterReg::add("preview_anim", "floater_preview_animation.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewAnim>, "preview");
 	LLFloaterReg::add("preview_gesture", "floater_preview_gesture.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewGesture>, "preview");
@@ -257,6 +269,7 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("test_text_editor", "floater_test_text_editor.xml", &LLFloaterReg::build<LLFloater>);
 	LLFloaterReg::add("test_widgets", "floater_test_widgets.xml", &LLFloaterReg::build<LLFloater>);
 	LLFloaterReg::add("top_objects", "floater_top_objects.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTopObjects>);
+	LLFloaterReg::add("toybox", "floater_toybox.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterToybox>);
 	
 	LLFloaterReg::add("reporter", "floater_report_abuse.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterReporter>);
 	LLFloaterReg::add("reset_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterResetQueue>);
@@ -269,29 +282,31 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("script_limits", "floater_script_limits.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptLimits>);
 	LLFloaterReg::add("sell_land", "floater_sell_land.xml", &LLFloaterSellLand::buildFloater);
 	LLFloaterReg::add("settings_debug", "floater_settings_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsDebug>);
-	LLFloaterReg::add("side_bar_tab", "floater_side_bar_tab.xml", &LLFloaterReg::build<LLFloaterSideTrayTab>);
 	LLFloaterReg::add("sound_devices", "floater_sound_devices.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundDevices>);
 	LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater>);
 	LLFloaterReg::add("start_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRunQueue>);
 	LLFloaterReg::add("stop_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotRunQueue>);
 	LLFloaterReg::add("snapshot", "floater_snapshot.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSnapshot>);
 	LLFloaterReg::add("search", "floater_search.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSearch>);
-	LLFloaterReg::add("profile", "floater_web_content.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWebContent>);	
+	LLFloaterReg::add("my_profile", "floater_my_web_profile.xml", (LLFloaterBuildFunc)&LLFloaterWebProfile::create);
+	LLFloaterReg::add("profile", "floater_web_profile.xml", (LLFloaterBuildFunc)&LLFloaterWebProfile::create);
+	LLFloaterReg::add("how_to", "floater_how_to.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create);	
 
 	
 	LLFloaterUIPreviewUtil::registerFloater();
 	LLFloaterReg::add("upload_anim", "floater_animation_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAnimPreview>, "upload");
 	LLFloaterReg::add("upload_image", "floater_image_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterImagePreview>, "upload");
-	LLFloaterReg::add("upload_sound", "floater_sound_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundPreview>, "upload");
 	LLFloaterReg::add("upload_model", "floater_model_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterModelPreview>, "upload");
 	LLFloaterReg::add("upload_model_wizard", "floater_model_wizard.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterModelWizard>);
+	LLFloaterReg::add("upload_script", "floater_script_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptPreview>, "upload");
+	LLFloaterReg::add("upload_sound", "floater_sound_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundPreview>, "upload");
 
 	LLFloaterReg::add("voice_controls", "floater_voice_controls.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallFloater>);
 	LLFloaterReg::add("voice_effect", "floater_voice_effect.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterVoiceEffect>);
 
-	LLFloaterReg::add("web_content", "floater_web_content.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWebContent>);
+	LLFloaterReg::add("web_content", "floater_web_content.xml", (LLFloaterBuildFunc)&LLFloaterWebContent::create);	
 	LLFloaterReg::add("whitelist_entry", "floater_whitelist_entry.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWhiteListEntry>);	
-	LLFloaterWindowSizeUtil::registerFloater();
+	LLFloaterReg::add("window_size", "floater_window_size.xml", &LLFloaterReg::build<LLFloaterWindowSize>);
 	LLFloaterReg::add("world_map", "floater_world_map.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWorldMap>);	
 
 	// *NOTE: Please keep these alphabetized for easier merges
diff --git a/indra/newview/llviewerfoldertype.cpp b/indra/newview/llviewerfoldertype.cpp
index 91012223930cf21e251179a94d5f9b393882f4d6..a179b61cffc78c7c61ade5cd39935c2ffa079588 100644
--- a/indra/newview/llviewerfoldertype.cpp
+++ b/indra/newview/llviewerfoldertype.cpp
@@ -40,6 +40,7 @@ struct ViewerFolderEntry : public LLDictionaryEntry
 					  const std::string &icon_name_open,	// name of the folder icon
 					  const std::string &icon_name_closed,
 					  BOOL is_quiet,						// folder doesn't need a UI update when changed
+					  bool hide_if_empty,					// folder not shown if empty
 					  const std::string &dictionary_name = empty_string // no reverse lookup needed on non-ensembles, so in most cases just leave this blank
 		) 
 		:
@@ -47,7 +48,8 @@ struct ViewerFolderEntry : public LLDictionaryEntry
 		mNewCategoryName(new_category_name),
 		mIconNameOpen(icon_name_open),
 		mIconNameClosed(icon_name_closed),
-		mIsQuiet(is_quiet)
+		mIsQuiet(is_quiet),
+		mHideIfEmpty(hide_if_empty)
 	{
 		mAllowedNames.clear();
 	}
@@ -66,7 +68,8 @@ struct ViewerFolderEntry : public LLDictionaryEntry
 		*/
 		mIconNameOpen("Inv_FolderOpen"), mIconNameClosed("Inv_FolderClosed"),
 		mNewCategoryName(new_category_name),
-		mIsQuiet(FALSE)
+		mIsQuiet(FALSE),
+		mHideIfEmpty(false)
 	{
 		const std::string delims (",");
 		LLStringUtilBase<char>::getTokens(allowed_names, mAllowedNames, delims);
@@ -91,6 +94,7 @@ struct ViewerFolderEntry : public LLDictionaryEntry
 	typedef std::vector<std::string> name_vec_t;
 	name_vec_t mAllowedNames;
 	BOOL mIsQuiet;
+	bool mHideIfEmpty;
 };
 
 class LLViewerFolderDictionary : public LLSingleton<LLViewerFolderDictionary>,
@@ -104,43 +108,43 @@ class LLViewerFolderDictionary : public LLSingleton<LLViewerFolderDictionary>,
 
 LLViewerFolderDictionary::LLViewerFolderDictionary()
 {
-	//       													    	  NEW CATEGORY NAME         FOLDER OPEN             FOLDER CLOSED          QUIET?
-	//      												  		     |-------------------------|-----------------------|----------------------|-----------|
-	addEntry(LLFolderType::FT_TEXTURE, 				new ViewerFolderEntry("Textures",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
-	addEntry(LLFolderType::FT_SOUND, 				new ViewerFolderEntry("Sounds",					"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
-	addEntry(LLFolderType::FT_CALLINGCARD, 			new ViewerFolderEntry("Calling Cards",			"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
-	addEntry(LLFolderType::FT_LANDMARK, 			new ViewerFolderEntry("Landmarks",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
-	addEntry(LLFolderType::FT_CLOTHING, 			new ViewerFolderEntry("Clothing",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
-	addEntry(LLFolderType::FT_OBJECT, 				new ViewerFolderEntry("Objects",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
-	addEntry(LLFolderType::FT_NOTECARD, 			new ViewerFolderEntry("Notecards",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
-	addEntry(LLFolderType::FT_ROOT_INVENTORY, 		new ViewerFolderEntry("My Inventory",			"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
-	addEntry(LLFolderType::FT_LSL_TEXT, 			new ViewerFolderEntry("Scripts",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
-	addEntry(LLFolderType::FT_BODYPART, 			new ViewerFolderEntry("Body Parts",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
-	addEntry(LLFolderType::FT_TRASH, 				new ViewerFolderEntry("Trash",					"Inv_TrashOpen",		"Inv_TrashClosed",		TRUE));
-	addEntry(LLFolderType::FT_SNAPSHOT_CATEGORY, 	new ViewerFolderEntry("Photo Album",			"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
-	addEntry(LLFolderType::FT_LOST_AND_FOUND, 		new ViewerFolderEntry("Lost And Found",	   		"Inv_LostOpen",			"Inv_LostClosed",		TRUE));
-	addEntry(LLFolderType::FT_ANIMATION, 			new ViewerFolderEntry("Animations",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
-	addEntry(LLFolderType::FT_GESTURE, 				new ViewerFolderEntry("Gestures",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
-	addEntry(LLFolderType::FT_FAVORITE, 			new ViewerFolderEntry("Favorites",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
+	//       													    	  NEW CATEGORY NAME         FOLDER OPEN             FOLDER CLOSED          QUIET?      HIDE IF EMPTY?
+	//      												  		     |-------------------------|-----------------------|----------------------|-----------|--------------|
+	addEntry(LLFolderType::FT_TEXTURE, 				new ViewerFolderEntry("Textures",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
+	addEntry(LLFolderType::FT_SOUND, 				new ViewerFolderEntry("Sounds",					"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
+	addEntry(LLFolderType::FT_CALLINGCARD, 			new ViewerFolderEntry("Calling Cards",			"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
+	addEntry(LLFolderType::FT_LANDMARK, 			new ViewerFolderEntry("Landmarks",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
+	addEntry(LLFolderType::FT_CLOTHING, 			new ViewerFolderEntry("Clothing",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
+	addEntry(LLFolderType::FT_OBJECT, 				new ViewerFolderEntry("Objects",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
+	addEntry(LLFolderType::FT_NOTECARD, 			new ViewerFolderEntry("Notecards",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
+	addEntry(LLFolderType::FT_ROOT_INVENTORY, 		new ViewerFolderEntry("My Inventory",			"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     false));
+	addEntry(LLFolderType::FT_LSL_TEXT, 			new ViewerFolderEntry("Scripts",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
+	addEntry(LLFolderType::FT_BODYPART, 			new ViewerFolderEntry("Body Parts",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
+	addEntry(LLFolderType::FT_TRASH, 				new ViewerFolderEntry("Trash",					"Inv_TrashOpen",		"Inv_TrashClosed",		TRUE,      false));
+	addEntry(LLFolderType::FT_SNAPSHOT_CATEGORY, 	new ViewerFolderEntry("Photo Album",			"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
+	addEntry(LLFolderType::FT_LOST_AND_FOUND, 		new ViewerFolderEntry("Lost And Found",	   		"Inv_LostOpen",			"Inv_LostClosed",		TRUE,      true));
+	addEntry(LLFolderType::FT_ANIMATION, 			new ViewerFolderEntry("Animations",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
+	addEntry(LLFolderType::FT_GESTURE, 				new ViewerFolderEntry("Gestures",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
+	addEntry(LLFolderType::FT_FAVORITE, 			new ViewerFolderEntry("Favorites",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
 
-	addEntry(LLFolderType::FT_CURRENT_OUTFIT, 		new ViewerFolderEntry("Current Outfit",			"Inv_SysOpen",			"Inv_SysClosed",		TRUE));
-	addEntry(LLFolderType::FT_OUTFIT, 				new ViewerFolderEntry("New Outfit",				"Inv_LookFolderOpen",	"Inv_LookFolderClosed",	TRUE));
-	addEntry(LLFolderType::FT_MY_OUTFITS, 			new ViewerFolderEntry("My Outfits",				"Inv_SysOpen",			"Inv_SysClosed",		TRUE));
-	addEntry(LLFolderType::FT_MESH, 				new ViewerFolderEntry("Meshes",					"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
+	addEntry(LLFolderType::FT_CURRENT_OUTFIT, 		new ViewerFolderEntry("Current Outfit",			"Inv_SysOpen",			"Inv_SysClosed",		TRUE,      false));
+	addEntry(LLFolderType::FT_OUTFIT, 				new ViewerFolderEntry("New Outfit",				"Inv_LookFolderOpen",	"Inv_LookFolderClosed",	TRUE,      true));
+	addEntry(LLFolderType::FT_MY_OUTFITS, 			new ViewerFolderEntry("My Outfits",				"Inv_SysOpen",			"Inv_SysClosed",		TRUE,      true));
+	addEntry(LLFolderType::FT_MESH, 				new ViewerFolderEntry("Meshes",					"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
 	
-	addEntry(LLFolderType::FT_INBOX, 				new ViewerFolderEntry("Inbox",					"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
-	addEntry(LLFolderType::FT_OUTBOX, 				new ViewerFolderEntry("Outbox",					"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
+	addEntry(LLFolderType::FT_INBOX, 				new ViewerFolderEntry("Inbox",					"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
+	addEntry(LLFolderType::FT_OUTBOX, 				new ViewerFolderEntry("Outbox",					"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
 
-	addEntry(LLFolderType::FT_BASIC_ROOT, 			new ViewerFolderEntry("Basic Root",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE));
+	addEntry(LLFolderType::FT_BASIC_ROOT, 			new ViewerFolderEntry("Basic Root",				"Inv_SysOpen",			"Inv_SysClosed",		FALSE,     true));
 		 
-	addEntry(LLFolderType::FT_NONE, 				new ViewerFolderEntry("New Folder",				"Inv_FolderOpen",		"Inv_FolderClosed",		FALSE, "default"));
+	addEntry(LLFolderType::FT_NONE, 				new ViewerFolderEntry("New Folder",				"Inv_FolderOpen",		"Inv_FolderClosed",		FALSE,     false, "default"));
 
 #if SUPPORT_ENSEMBLES
 	initEnsemblesFromFile();
 #else
 	for (U32 type = (U32)LLFolderType::FT_ENSEMBLE_START; type <= (U32)LLFolderType::FT_ENSEMBLE_END; ++type)
 	{
-		addEntry((LLFolderType::EType)type, 		new ViewerFolderEntry("New Folder",				"Inv_FolderOpen",		"Inv_FolderClosed",		FALSE));
+		addEntry((LLFolderType::EType)type, 		new ViewerFolderEntry("New Folder",				"Inv_FolderOpen",		"Inv_FolderClosed",		FALSE,     false));
 	}	
 #endif
 }
@@ -259,6 +263,15 @@ BOOL LLViewerFolderType::lookupIsQuietType(LLFolderType::EType folder_type)
 	return FALSE;
 }
 
+bool LLViewerFolderType::lookupIsHiddenIfEmpty(LLFolderType::EType folder_type)
+{
+	const ViewerFolderEntry *entry = LLViewerFolderDictionary::getInstance()->lookup(folder_type);
+	if (entry)
+	{
+		return entry->mHideIfEmpty;
+	}
+	return false;
+}
 
 const std::string &LLViewerFolderType::lookupNewCategoryName(LLFolderType::EType folder_type)
 {
diff --git a/indra/newview/llviewerfoldertype.h b/indra/newview/llviewerfoldertype.h
index f5938de619b3e70ebf2537ad7ad98fbd2e40835b..13d5a8fbbdf192cf67d8116de88a011c1057c384 100644
--- a/indra/newview/llviewerfoldertype.h
+++ b/indra/newview/llviewerfoldertype.h
@@ -40,6 +40,7 @@ class LLViewerFolderType : public LLFolderType
 
 	static const std::string&   lookupIconName(EType folder_type, BOOL is_open = FALSE); // folder icon name
 	static BOOL					lookupIsQuietType(EType folder_type); // folder doesn't require UI update when changes have occured
+	static bool					lookupIsHiddenIfEmpty(EType folder_type); // folder is not displayed if empty
 	static const std::string&	lookupNewCategoryName(EType folder_type); // default name when creating new category
 	static LLFolderType::EType	lookupTypeFromNewCategoryName(const std::string& name); // default name when creating new category
 
diff --git a/indra/newview/llviewerhelp.cpp b/indra/newview/llviewerhelp.cpp
index 3a3d4f3881a696b0c8e9d0025f930a0be303ffed..a8a918f259b62a54d66e09e79a3dd1a20ae15652 100644
--- a/indra/newview/llviewerhelp.cpp
+++ b/indra/newview/llviewerhelp.cpp
@@ -69,15 +69,12 @@ LLHelpHandler gHelpHandler;
 //////////////////////////////
 // implement LLHelp interface
 
-void LLViewerHelp::showTopic(const std::string &topic)
+std::string LLViewerHelp::getURL(const std::string &topic)
 {
 	// allow overriding the help server with a local help file
 	if( gSavedSettings.getBOOL("HelpUseLocal") )
 	{
-		showHelp();
-		LLFloaterHelpBrowser* helpbrowser = dynamic_cast<LLFloaterHelpBrowser*>(LLFloaterReg::getInstance("help_browser"));
-		helpbrowser->navigateToLocalPage( "help-offline" , "index.html" );
-		return;
+		return "__local";
 	}
 
 	// if the help topic is empty, use the default topic
@@ -99,11 +96,12 @@ void LLViewerHelp::showTopic(const std::string &topic)
 		}
 	}
 
-	// work out the URL for this topic and display it 
-	showHelp();
-	
-	std::string helpURL = LLViewerHelpUtil::buildHelpURL( help_topic );
-	setRawURL(helpURL);
+	return LLViewerHelpUtil::buildHelpURL( help_topic );
+}
+
+void LLViewerHelp::showTopic(const std::string& topic)
+{
+	LLFloaterReg::showInstance("help_browser", topic);
 }
 
 std::string LLViewerHelp::defaultTopic()
@@ -146,23 +144,3 @@ std::string LLViewerHelp::getTopicFromFocus()
 	return defaultTopic();
 }
 
-// static 
-void LLViewerHelp::showHelp()
-{
-	LLFloaterReg::showInstance("help_browser");
-}
-
-// static
-void LLViewerHelp::setRawURL(std::string url)
-{
-	LLFloaterHelpBrowser* helpbrowser = dynamic_cast<LLFloaterHelpBrowser*>(LLFloaterReg::getInstance("help_browser"));
-	if (helpbrowser)
-	{
-		helpbrowser->openMedia(url);	
-	}
-	else
-	{
-		llwarns << "Eep, help_browser floater not found" << llendl;
-	}
-}
-
diff --git a/indra/newview/llviewerhelp.h b/indra/newview/llviewerhelp.h
index 7612986227bc3c5e710f4c1a98e13cc48c8d4be2..a983012e2ee4ca9025b8a39c0d6896a33f6a2bfc 100644
--- a/indra/newview/llviewerhelp.h
+++ b/indra/newview/llviewerhelp.h
@@ -45,6 +45,8 @@ class LLViewerHelp : public LLHelp, public LLSingleton<LLViewerHelp>
 	/// display the specified help topic in the help viewer
 	/*virtual*/ void showTopic(const std::string &topic);
 
+	std::string getURL(const std::string& topic);
+
 	// return topic derived from viewer UI focus, else default topic
 	std::string getTopicFromFocus();
 
@@ -56,10 +58,6 @@ class LLViewerHelp : public LLHelp, public LLSingleton<LLViewerHelp>
 
 	// return topic to use for the top-level help, invoked by F1
 	/*virtual*/ std::string f1HelpTopic();
-
- private:
-	static void showHelp(); // make sure help UI is visible & raised
-	static void setRawURL(std::string url); // send URL to help UI
 };
 
 #endif // header guard
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index ad65a8846c6cc2529af071e44730e0e439438058..163581ea7fe7a0bed135b968919293f45f762d39 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -34,7 +34,9 @@
 #include "llagent.h"
 #include "llagentcamera.h"
 #include "llagentwearables.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llviewerfoldertype.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfolderview.h"
 #include "llviewercontrol.h"
 #include "llconsole.h"
@@ -43,7 +45,6 @@
 #include "llinventorymodel.h"
 #include "llinventorymodelbackgroundfetch.h"
 #include "llgesturemgr.h"
-#include "llsidetray.h"
 
 #include "llinventorybridge.h"
 #include "llinventorypanel.h"
@@ -141,7 +142,7 @@ class LLLocalizedInventoryItemsDictionary : public LLSingleton<LLLocalizedInvent
 		mInventoryItemsDict["Female - Wow"]				= LLTrans::getString("Female - Wow");
 
 		//common
-		mInventoryItemsDict["/bow1"]					= LLTrans::getString("/bow1");
+		mInventoryItemsDict["/bow"]						= LLTrans::getString("/bow");
 		mInventoryItemsDict["/clap"]					= LLTrans::getString("/clap");
 		mInventoryItemsDict["/count"]					= LLTrans::getString("/count");
 		mInventoryItemsDict["/extinguish"]				= LLTrans::getString("/extinguish");
@@ -220,7 +221,7 @@ class LLInventoryHandler : public LLCommandHandler
 		// support secondlife:///app/inventory/show
 		if (params[0].asString() == "show")
 		{
-			LLSideTray::getInstance()->showPanel("sidepanel_inventory", LLSD());
+			LLFloaterSidePanelContainer::showPanel("inventory", LLSD());
 			return true;
 		}
 
@@ -976,7 +977,7 @@ void ModifiedCOFCallback::fire(const LLUUID& inv_item)
 	if( gAgentCamera.cameraCustomizeAvatar() )
 	{
 		// If we're in appearance editing mode, the current tab may need to be refreshed
-		LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+		LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
 		if (panel)
 		{
 			panel->showDefaultSubpart();
@@ -1208,7 +1209,23 @@ void move_inventory_item(
 	gAgent.sendReliableMessage();
 }
 
-void copy_inventory_from_notecard(const LLUUID& object_id, const LLUUID& notecard_inv_id, const LLInventoryItem *src, U32 callback_id)
+const LLUUID get_folder_by_itemtype(const LLInventoryItem *src)
+{
+	LLUUID retval = LLUUID::null;
+	
+	if (src)
+	{
+		retval = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(src->getType()));
+	}
+	
+	return retval;
+}
+
+void copy_inventory_from_notecard(const LLUUID& destination_id,
+								  const LLUUID& object_id,
+								  const LLUUID& notecard_inv_id,
+								  const LLInventoryItem *src,
+								  U32 callback_id)
 {
 	if (NULL == src)
 	{
@@ -1254,7 +1271,7 @@ void copy_inventory_from_notecard(const LLUUID& object_id, const LLUUID& notecar
     body["notecard-id"] = notecard_inv_id;
     body["object-id"] = object_id;
     body["item-id"] = src->getUUID();
-	body["folder-id"] = gInventory.findCategoryUUIDForType(LLFolderType::assetTypeToFolderType(src->getType()));
+	body["folder-id"] = destination_id;
     body["callback-id"] = (LLSD::Integer)callback_id;
 
     request["message"] = "CopyInventoryFromNotecard";
diff --git a/indra/newview/llviewerinventory.h b/indra/newview/llviewerinventory.h
index 41542a4e0ff9a20bd51043a8a1f9052ccc8835cc..7822ef4da6548d688f39fd5c9bd2ec188467eabc 100644
--- a/indra/newview/llviewerinventory.h
+++ b/indra/newview/llviewerinventory.h
@@ -363,7 +363,10 @@ void move_inventory_item(
 	const std::string& new_name,
 	LLPointer<LLInventoryCallback> cb);
 
-void copy_inventory_from_notecard(const LLUUID& object_id,
+const LLUUID get_folder_by_itemtype(const LLInventoryItem *src);
+
+void copy_inventory_from_notecard(const LLUUID& destination_id,
+								  const LLUUID& object_id,
 								  const LLUUID& notecard_inv_id,
 								  const LLInventoryItem *src,
 								  U32 callback_id = 0);
diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp
index baf85d68848ea60cce2fa8cbbaad3a32a30123bf..a907f102f87f55a4680224c1d522b024b0577158 100644
--- a/indra/newview/llviewerjoint.cpp
+++ b/indra/newview/llviewerjoint.cpp
@@ -126,7 +126,7 @@ void LLViewerJoint::setValid( BOOL valid, BOOL recursive )
 // 	//----------------------------------------------------------------
 // 	// push matrix stack
 // 	//----------------------------------------------------------------
-// 	glPushMatrix();
+// 	gGL.pushMatrix();
 
 // 	//----------------------------------------------------------------
 // 	// render the bone to my parent
@@ -140,8 +140,8 @@ void LLViewerJoint::setValid( BOOL valid, BOOL recursive )
 // 	// offset to joint position and 
 // 	// rotate to our orientation
 // 	//----------------------------------------------------------------
-// 	glLoadIdentity();
-// 	glMultMatrixf( &getWorldMatrix().mMatrix[0][0] );
+// 	gGL.loadIdentity();
+// 	gGL.multMatrix( &getWorldMatrix().mMatrix[0][0] );
 
 // 	//----------------------------------------------------------------
 // 	// render joint axes
@@ -233,7 +233,7 @@ void LLViewerJoint::setValid( BOOL valid, BOOL recursive )
 // 	//----------------------------------------------------------------
 // 	// pop matrix stack
 // 	//----------------------------------------------------------------
-// 	glPopMatrix();
+// 	gGL.popMatrix();
 // }
 
 
@@ -346,7 +346,7 @@ U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass, BOOL is_dummy )
 // 	F32 boneSize = 0.02f;
 
 // 	// rotate to point to child (bone direction)
-// 	glPushMatrix();
+// 	gGL.pushMatrix();
 
 // 	LLVector3 boneX = getPosition();
 // 	F32 length = boneX.normVec();
@@ -362,7 +362,7 @@ U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass, BOOL is_dummy )
 // 	rotateMat.setFwdRow( boneX );
 // 	rotateMat.setLeftRow( boneY );
 // 	rotateMat.setUpRow( boneZ );
-// 	glMultMatrixf( &rotateMat.mMatrix[0][0] );
+// 	gGL.multMatrix( &rotateMat.mMatrix[0][0] );
 
 // 	// render the bone
 // 	gGL.color3f( 0.5f, 0.5f, 0.0f );
@@ -388,7 +388,7 @@ U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass, BOOL is_dummy )
 // 	gGL.end();
 
 // 	// restore matrix
-// 	glPopMatrix();
+// 	gGL.popMatrix();
 // }
 
 //--------------------------------------------------------------------
@@ -541,9 +541,9 @@ void LLViewerJointCollisionVolume::renderCollision()
 	updateWorldMatrix();
 	
 	gGL.pushMatrix();
-	glMultMatrixf( &mXform.getWorldMatrix().mMatrix[0][0] );
+	gGL.multMatrix( &mXform.getWorldMatrix().mMatrix[0][0] );
 
-	gGL.color3f( 0.f, 0.f, 1.f );
+	gGL.diffuseColor3f( 0.f, 0.f, 1.f );
 	
 	gGL.begin(LLRender::LINES);
 	
diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
index 77c8bb032949d7bd9b9f0bd94252b0e2e0ba3f8a..76f4e18c27c7e68b9b3ee54202ad1c09a4afd971 100644
--- a/indra/newview/llviewerjointmesh.cpp
+++ b/indra/newview/llviewerjointmesh.cpp
@@ -459,7 +459,10 @@ void LLViewerJointMesh::uploadJointMatrices()
 			}
 		}
 		stop_glerror();
-		glUniform4fvARB(gAvatarMatrixParam, 45, mat);
+		if (LLGLSLShader::sCurBoundShaderPtr)
+		{
+			LLGLSLShader::sCurBoundShaderPtr->uniform4fv(LLViewerShaderMgr::AVATAR_MATRIX, 45, mat);
+		}
 		stop_glerror();
 	}
 	else
@@ -512,7 +515,8 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
 {
 	if (!mValid || !mMesh || !mFace || !mVisible || 
 		!mFace->getVertexBuffer() ||
-		mMesh->getNumFaces() == 0) 
+		mMesh->getNumFaces() == 0 ||
+		(LLGLSLShader::sNoFixedFunction && LLGLSLShader::sCurBoundShaderPtr == NULL))
 	{
 		return 0;
 	}
@@ -527,13 +531,13 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
 	// setup current color
 	//----------------------------------------------------------------
 	if (is_dummy)
-		glColor4fv(LLVOAvatar::getDummyColor().mV);
+		gGL.diffuseColor4fv(LLVOAvatar::getDummyColor().mV);
 	else
-		glColor4fv(mColor.mV);
+		gGL.diffuseColor4fv(mColor.mV);
 
 	stop_glerror();
 	
-	LLGLSSpecular specular(LLColor4(1.f,1.f,1.f,1.f), mFace->getPool()->getVertexShaderLevel() > 0 ? 0.f : mShiny);
+	LLGLSSpecular specular(LLColor4(1.f,1.f,1.f,1.f), (mFace->getPool()->getVertexShaderLevel() > 0 || LLGLSLShader::sNoFixedFunction) ? 0.f : mShiny);
 
 	//----------------------------------------------------------------
 	// setup current texture
@@ -547,11 +551,11 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
 
 		if (mIsTransparent)
 		{
-			glColor4f(1.f, 1.f, 1.f, 1.f);
+			gGL.diffuseColor4f(1.f, 1.f, 1.f, 1.f);
 		}
 		else
 		{
-			glColor4f(0.7f, 0.6f, 0.3f, 1.f);
+			gGL.diffuseColor4f(0.7f, 0.6f, 0.3f, 1.f);
 			gGL.getTexUnit(diffuse_channel)->setTextureColorBlend(LLTexUnit::TBO_LERP_TEX_ALPHA, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_PREV_COLOR);
 		}
 	}
@@ -582,13 +586,16 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
 		gGL.getTexUnit(diffuse_channel)->bind(LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT));
 	}
 	
-	mFace->getVertexBuffer()->setBuffer(sRenderMask);
+	
+	U32 mask = sRenderMask;
 
 	U32 start = mMesh->mFaceVertexOffset;
 	U32 end = start + mMesh->mFaceVertexCount - 1;
 	U32 count = mMesh->mFaceIndexCount;
 	U32 offset = mMesh->mFaceIndexOffset;
 
+	LLVertexBuffer* buff = mFace->getVertexBuffer();
+
 	if (mMesh->hasWeights())
 	{
 		if ((mFace->getPool()->getVertexShaderLevel() > 0))
@@ -597,17 +604,24 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy)
 			{
 				uploadJointMatrices();
 			}
+			mask = mask | LLVertexBuffer::MAP_WEIGHT;
+			if (mFace->getPool()->getVertexShaderLevel() > 1)
+			{
+				mask = mask | LLVertexBuffer::MAP_CLOTHWEIGHT;
+			}
 		}
 		
-		mFace->getVertexBuffer()->drawRange(LLRender::TRIANGLES, start, end, count, offset);
+		buff->setBuffer(mask);
+		buff->drawRange(LLRender::TRIANGLES, start, end, count, offset);
 	}
 	else
 	{
-		glPushMatrix();
+		gGL.pushMatrix();
 		LLMatrix4 jointToWorld = getWorldMatrix();
-		glMultMatrixf((GLfloat*)jointToWorld.mMatrix);
-		mFace->getVertexBuffer()->drawRange(LLRender::TRIANGLES, start, end, count, offset);
-		glPopMatrix();
+		gGL.multMatrix((GLfloat*)jointToWorld.mMatrix);
+		buff->setBuffer(mask);
+		buff->drawRange(LLRender::TRIANGLES, start, end, count, offset);
+		gGL.popMatrix();
 	}
 	gPipeline.addTrianglesDrawn(count);
 
@@ -692,9 +706,9 @@ void LLViewerJointMesh::updateFaceData(LLFace *face, F32 pixel_area, BOOL damp_w
 
 		if (num_verts)
 		{
-			face->getGeometryAvatar(verticesp, normalsp, tex_coordsp, vertex_weightsp, clothing_weightsp);
 			face->getVertexBuffer()->getIndexStrider(indicesp);
-
+			face->getGeometryAvatar(verticesp, normalsp, tex_coordsp, vertex_weightsp, clothing_weightsp);
+			
 			verticesp += mMesh->mFaceVertexOffset;
 			normalsp += mMesh->mFaceVertexOffset;
 			
@@ -752,7 +766,7 @@ BOOL LLViewerJointMesh::updateLOD(F32 pixel_area, BOOL activate)
 }
 
 // static
-void LLViewerJointMesh::updateGeometryOriginal(LLFace *mFace, LLPolyMesh *mMesh)
+void LLViewerJointMesh::updateGeometry(LLFace *mFace, LLPolyMesh *mMesh)
 {
 	LLStrider<LLVector3> o_vertices;
 	LLStrider<LLVector3> o_normals;
@@ -803,64 +817,7 @@ void LLViewerJointMesh::updateGeometryOriginal(LLFace *mFace, LLPolyMesh *mMesh)
 		}
 	}
 
-	buffer->setBuffer(0);
-}
-
-const U32 UPDATE_GEOMETRY_CALL_MASK			= 0x1FFF; // 8K samples before overflow
-const U32 UPDATE_GEOMETRY_CALL_OVERFLOW		= ~UPDATE_GEOMETRY_CALL_MASK;
-static bool sUpdateGeometryCallPointer		= false;
-static F64 sUpdateGeometryGlobalTime		= 0.0 ;
-static F64 sUpdateGeometryElapsedTime		= 0.0 ;
-static F64 sUpdateGeometryElapsedTimeOff	= 0.0 ;
-static F64 sUpdateGeometryElapsedTimeOn		= 0.0 ;
-static F64 sUpdateGeometryRunAvgOff[10];
-static F64 sUpdateGeometryRunAvgOn[10];
-static U32 sUpdateGeometryRunCount			= 0 ;
-static U32 sUpdateGeometryCalls				= 0 ;
-static U32 sUpdateGeometryLastProcessor		= 0 ;
-static BOOL sVectorizePerfTest 				= FALSE;
-static U32 sVectorizeProcessor 				= 0;
-
-//static
-void (*LLViewerJointMesh::sUpdateGeometryFunc)(LLFace* face, LLPolyMesh* mesh);
-
-//static
-void LLViewerJointMesh::updateVectorize()
-{
-	sVectorizePerfTest = gSavedSettings.getBOOL("VectorizePerfTest");
-	sVectorizeProcessor = gSavedSettings.getU32("VectorizeProcessor");
-	BOOL vectorizeEnable = gSavedSettings.getBOOL("VectorizeEnable");
-	BOOL vectorizeSkin = gSavedSettings.getBOOL("VectorizeSkin");
-
-	std::string vp;
-	switch(sVectorizeProcessor)
-	{
-		case 2: vp = "SSE2"; break;					// *TODO: replace the magic #s
-		case 1: vp = "SSE"; break;
-		default: vp = "COMPILER DEFAULT"; break;
-	}
-	LL_INFOS("AppInit") << "Vectorization         : " << ( vectorizeEnable ? "ENABLED" : "DISABLED" ) << LL_ENDL ;
-	LL_INFOS("AppInit") << "Vector Processor      : " << vp << LL_ENDL ;
-	LL_INFOS("AppInit") << "Vectorized Skinning   : " << ( vectorizeSkin ? "ENABLED" : "DISABLED" ) << LL_ENDL ;
-	if(vectorizeEnable && vectorizeSkin)
-	{
-		switch(sVectorizeProcessor)
-		{
-			case 2:
-				sUpdateGeometryFunc = &updateGeometrySSE2;
-				break;
-			case 1:
-				sUpdateGeometryFunc = &updateGeometrySSE;
-				break;
-			default:
-				sUpdateGeometryFunc = &updateGeometryVectorized;
-				break;
-		}
-	}
-	else
-	{
-		sUpdateGeometryFunc = &updateGeometryOriginal;
-	}
+	buffer->flush();
 }
 
 void LLViewerJointMesh::updateJointGeometry()
@@ -875,129 +832,8 @@ void LLViewerJointMesh::updateJointGeometry()
 		return;
 	}
 
-	if (!sVectorizePerfTest)
-	{
-		// Once we've measured performance, just run the specified
-		// code version.
-		if(sUpdateGeometryFunc == updateGeometryOriginal)
-			uploadJointMatrices();
-		sUpdateGeometryFunc(mFace, mMesh);
-	}
-	else
-	{
-		// At startup, measure the amount of time in skinning and choose
-		// the fastest one.
-		LLTimer ug_timer ;
-		
-		if (sUpdateGeometryCallPointer)
-		{
-			if(sUpdateGeometryFunc == updateGeometryOriginal)
-				uploadJointMatrices();
-			// call accelerated version for this processor
-			sUpdateGeometryFunc(mFace, mMesh);
-		}
-		else
-		{
-			uploadJointMatrices();
-			updateGeometryOriginal(mFace, mMesh);
-		}
-	
-		sUpdateGeometryElapsedTime += ug_timer.getElapsedTimeF64();
-		++sUpdateGeometryCalls;
-		if(0 != (sUpdateGeometryCalls & UPDATE_GEOMETRY_CALL_OVERFLOW))
-		{
-			F64 time_since_app_start = ug_timer.getElapsedSeconds();
-			if(sUpdateGeometryGlobalTime == 0.0 
-				|| sUpdateGeometryLastProcessor != sVectorizeProcessor)
-			{
-				sUpdateGeometryGlobalTime		= time_since_app_start;
-				sUpdateGeometryElapsedTime		= 0;
-				sUpdateGeometryCalls			= 0;
-				sUpdateGeometryRunCount			= 0;
-				sUpdateGeometryLastProcessor	= sVectorizeProcessor;
-				sUpdateGeometryCallPointer		= false;
-				return;
-			}
-			F64 percent_time_in_function = 
-				( sUpdateGeometryElapsedTime * 100.0 ) / ( time_since_app_start - sUpdateGeometryGlobalTime ) ;
-			sUpdateGeometryGlobalTime = time_since_app_start;
-			if (!sUpdateGeometryCallPointer)
-			{
-				// First set of run data is with vectorization off.
-				sUpdateGeometryCallPointer = true;
-				llinfos << "profile (avg of " << sUpdateGeometryCalls << " samples) = "
-					<< "vectorize off " << percent_time_in_function
-					<< "% of time with "
-					<< (sUpdateGeometryElapsedTime / (F64)sUpdateGeometryCalls)
-					<< " seconds per call "
-					<< llendl;
-				sUpdateGeometryRunAvgOff[sUpdateGeometryRunCount] = percent_time_in_function;
-				sUpdateGeometryElapsedTimeOff += sUpdateGeometryElapsedTime;
-				sUpdateGeometryCalls = 0;
-			}
-			else
-			{
-				// Second set of run data is with vectorization on.
-				sUpdateGeometryCallPointer = false;
-				llinfos << "profile (avg of " << sUpdateGeometryCalls << " samples) = "
-					<< "VEC on " << percent_time_in_function
-					<< "% of time with "
-					<< (sUpdateGeometryElapsedTime / (F64)sUpdateGeometryCalls)
-					<< " seconds per call "
-					<< llendl;
-				sUpdateGeometryRunAvgOn[sUpdateGeometryRunCount] = percent_time_in_function ;
-				sUpdateGeometryElapsedTimeOn += sUpdateGeometryElapsedTime;
-
-				sUpdateGeometryCalls = 0;
-				sUpdateGeometryRunCount++;
-				F64 a = 0.0, b = 0.0;
-				for(U32 i = 0; i<sUpdateGeometryRunCount; i++)
-				{
-					a += sUpdateGeometryRunAvgOff[i];
-					b += sUpdateGeometryRunAvgOn[i];
-				}
-				a /= sUpdateGeometryRunCount;
-				b /= sUpdateGeometryRunCount;
-				F64 perf_boost = ( sUpdateGeometryElapsedTimeOff - sUpdateGeometryElapsedTimeOn ) / sUpdateGeometryElapsedTimeOn;
-				llinfos << "run averages (" << (F64)sUpdateGeometryRunCount
-					<< "/10) vectorize off " << a
-					<< "% : vectorize type " << sVectorizeProcessor
-					<< " " << b
-					<< "% : performance boost " 
-					<< perf_boost * 100.0
-					<< "%"
-					<< llendl ;
-				if(sUpdateGeometryRunCount == 10)
-				{
-					// In case user runs test again, force reset of data on
-					// next run.
-					sUpdateGeometryGlobalTime = 0.0;
-
-					// We have data now on which version is faster.  Switch to that
-					// code and save the data for next run.
-					gSavedSettings.setBOOL("VectorizePerfTest", FALSE);
-
-					if (perf_boost > 0.0)
-					{
-						llinfos << "Vectorization improves avatar skinning performance, "
-							<< "keeping on for future runs."
-							<< llendl;
-						gSavedSettings.setBOOL("VectorizeSkin", TRUE);
-					}
-					else
-					{
-						// SIMD decreases performance, fall back to original code
-						llinfos << "Vectorization decreases avatar skinning performance, "
-							<< "switching back to original code."
-							<< llendl;
-
-						gSavedSettings.setBOOL("VectorizeSkin", FALSE);
-					}
-				}
-			}
-			sUpdateGeometryElapsedTime = 0.0f;
-		}
-	}
+	uploadJointMatrices();
+	updateGeometry(mFace, mMesh);
 }
 
 void LLViewerJointMesh::dump()
diff --git a/indra/newview/llviewerjointmesh.h b/indra/newview/llviewerjointmesh.h
index cab1205d61803c63081ac5eec61956ca90a4eb1f..0191f0cae8f8a6b06719f6ad6dab44746cd39157 100644
--- a/indra/newview/llviewerjointmesh.h
+++ b/indra/newview/llviewerjointmesh.h
@@ -143,23 +143,10 @@ class LLViewerJointMesh : public LLViewerJoint
 
 	/*virtual*/ BOOL isAnimatable() const { return FALSE; }
 	
-	static void updateVectorize(); // Update globals when settings variables change
-	
 private:
-	// Avatar vertex skinning is a significant performance issue on computers
-	// with avatar vertex programs turned off (for example, most Macs).  We
-	// therefore have custom versions that use SIMD instructions.
-	//
-	// These functions require compiler options for SSE2, SSE, or neither, and
-	// hence are contained in separate individual .cpp files.  JC
-	static void updateGeometryOriginal(LLFace* face, LLPolyMesh* mesh);
-	// generic vector code, used for Altivec
-	static void updateGeometryVectorized(LLFace* face, LLPolyMesh* mesh);
-	static void updateGeometrySSE(LLFace* face, LLPolyMesh* mesh);
-	static void updateGeometrySSE2(LLFace* face, LLPolyMesh* mesh);
-
-	// Use a fuction pointer to indicate which version we are running.
-	static void (*sUpdateGeometryFunc)(LLFace* face, LLPolyMesh* mesh);
+
+	//copy mesh into given face's vertex buffer, applying current animation pose
+	static void updateGeometry(LLFace* face, LLPolyMesh* mesh);
 
 private:
 	// Allocate skin data
diff --git a/indra/newview/llviewerjointmesh_sse.cpp b/indra/newview/llviewerjointmesh_sse.cpp
deleted file mode 100644
index 400b49d04602a58cba668a69362d5dc3cb9c1da1..0000000000000000000000000000000000000000
--- a/indra/newview/llviewerjointmesh_sse.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-/** 
- * @file llviewerjointmesh_sse.cpp
- * @brief SSE vectorized joint skinning code, only used when video card does
- * not support avatar vertex programs.
- *
- * *NOTE: Disabled on Windows builds. See llv4math.h for details.
- *
- * $LicenseInfo:firstyear=2007&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 "llviewerjointmesh.h"
-
-// project includes
-#include "llface.h"
-#include "llpolymesh.h"
-
-// library includes
-#include "lldarray.h"
-#include "llv4math.h"		// for LL_VECTORIZE
-#include "llv4matrix3.h"
-#include "llv4matrix4.h"
-#include "v3math.h"
-
-
-#if LL_VECTORIZE
-
-inline void matrix_translate(LLV4Matrix4& m, const LLMatrix4* w, const LLVector3& j)
-{
-	m.mV[VX] = _mm_loadu_ps(w->mMatrix[VX]);
-	m.mV[VY] = _mm_loadu_ps(w->mMatrix[VY]);
-	m.mV[VZ] = _mm_loadu_ps(w->mMatrix[VZ]);
-	m.mV[VW] = _mm_loadu_ps(w->mMatrix[VW]);
-	m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VX]), m.mV[VX])); // ( ax * vx ) + vw
-	m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VY]), m.mV[VY]));
-	m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VZ]), m.mV[VZ]));
-}
-
-// static
-void LLViewerJointMesh::updateGeometrySSE(LLFace *face, LLPolyMesh *mesh)
-{
-	// This cannot be a file-level static because it will be initialized
-	// before main() using SSE code, which will crash on non-SSE processors.
-	static LLV4Matrix4	sJointMat[32];
-	LLDynamicArray<LLJointRenderData*>& joint_data = mesh->getReferenceMesh()->mJointRenderData;
-
-	//upload joint pivots/matrices
-	for(S32 j = 0, jend = joint_data.count(); j < jend ; ++j )
-	{
-		matrix_translate(sJointMat[j], joint_data[j]->mWorldMatrix,
-			joint_data[j]->mSkinJoint ?
-				joint_data[j]->mSkinJoint->mRootToJointSkinOffset
-				: joint_data[j+1]->mSkinJoint->mRootToParentJointSkinOffset);
-	}
-
-	F32					weight		= F32_MAX;
-	LLV4Matrix4			blend_mat;
-
-	LLStrider<LLVector3> o_vertices;
-	LLStrider<LLVector3> o_normals;
-
-	LLVertexBuffer *buffer = face->getVertexBuffer();
-	buffer->getVertexStrider(o_vertices,  mesh->mFaceVertexOffset);
-	buffer->getNormalStrider(o_normals,   mesh->mFaceVertexOffset);
-
-	const F32*			weights			= mesh->getWeights();
-	const LLVector3*	coords			= (const LLVector3*)mesh->getCoords();
-	const LLVector3*	normals			= (const LLVector3*)mesh->getNormals();
-	for (U32 index = 0, index_end = mesh->getNumVertices(); index < index_end; ++index)
-	{
-		if( weight != weights[index])
-		{
-			S32 joint = llfloor(weight = weights[index]);
-			blend_mat.lerp(sJointMat[joint], sJointMat[joint+1], weight - joint);
-		}
-		blend_mat.multiply(coords[index], o_vertices[index]);
-		((LLV4Matrix3)blend_mat).multiply(normals[index], o_normals[index]);
-	}
-
-	buffer->setBuffer(0);
-}
-
-#else
-
-void LLViewerJointMesh::updateGeometrySSE(LLFace *face, LLPolyMesh *mesh)
-{
-	LLViewerJointMesh::updateGeometryVectorized(face, mesh);
-}
-
-#endif
diff --git a/indra/newview/llviewerjointmesh_sse2.cpp b/indra/newview/llviewerjointmesh_sse2.cpp
deleted file mode 100644
index c2296dd56964dd52ac06e3035c6c552a9969a0f7..0000000000000000000000000000000000000000
--- a/indra/newview/llviewerjointmesh_sse2.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-/** 
- * @file llviewerjointmesh_sse2.cpp
- * @brief SSE vectorized joint skinning code, only used when video card does
- * not support avatar vertex programs.
- *
- * *NOTE: Disabled on Windows builds. See llv4math.h for details.
- *
- * $LicenseInfo:firstyear=2007&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$
- */
-
-// Visual Studio required settings for this file:
-// Precompiled Headers OFF
-// Code Generation: SSE2
-
-//-----------------------------------------------------------------------------
-// Header Files
-//-----------------------------------------------------------------------------
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llviewerjointmesh.h"
-
-// project includes
-#include "llface.h"
-#include "llpolymesh.h"
-
-// library includes
-#include "lldarray.h"
-#include "llstrider.h"
-#include "llv4math.h"		// for LL_VECTORIZE
-#include "llv4matrix3.h"
-#include "llv4matrix4.h"
-#include "m4math.h"
-#include "v3math.h"
-
-
-#if LL_VECTORIZE
-
-
-inline void matrix_translate(LLV4Matrix4& m, const LLMatrix4* w, const LLVector3& j)
-{
-	m.mV[VX] = _mm_loadu_ps(w->mMatrix[VX]);
-	m.mV[VY] = _mm_loadu_ps(w->mMatrix[VY]);
-	m.mV[VZ] = _mm_loadu_ps(w->mMatrix[VZ]);
-	m.mV[VW] = _mm_loadu_ps(w->mMatrix[VW]);
-	m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VX]), m.mV[VX])); // ( ax * vx ) + vw
-	m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VY]), m.mV[VY]));
-	m.mV[VW] = _mm_add_ps(m.mV[VW], _mm_mul_ps(_mm_set1_ps(j.mV[VZ]), m.mV[VZ]));
-}
-
-// static
-void LLViewerJointMesh::updateGeometrySSE2(LLFace *face, LLPolyMesh *mesh)
-{
-	// This cannot be a file-level static because it will be initialized
-	// before main() using SSE code, which will crash on non-SSE processors.
-	static LLV4Matrix4	sJointMat[32];
-	LLDynamicArray<LLJointRenderData*>& joint_data = mesh->getReferenceMesh()->mJointRenderData;
-
-	//upload joint pivots/matrices
-	for(S32 j = 0, jend = joint_data.count(); j < jend ; ++j )
-	{
-		matrix_translate(sJointMat[j], joint_data[j]->mWorldMatrix,
-			joint_data[j]->mSkinJoint ?
-				joint_data[j]->mSkinJoint->mRootToJointSkinOffset
-				: joint_data[j+1]->mSkinJoint->mRootToParentJointSkinOffset);
-	}
-
-	F32					weight		= F32_MAX;
-	LLV4Matrix4			blend_mat;
-
-	LLStrider<LLVector3> o_vertices;
-	LLStrider<LLVector3> o_normals;
-
-	LLVertexBuffer *buffer = face->getVertexBuffer();
-	buffer->getVertexStrider(o_vertices,  mesh->mFaceVertexOffset);
-	buffer->getNormalStrider(o_normals,   mesh->mFaceVertexOffset);
-
-	const F32*			weights			= mesh->getWeights();
-	const LLVector3*	coords			= (const LLVector3*)mesh->getCoords();
-	const LLVector3*	normals			= (const LLVector3*)mesh->getNormals();
-	for (U32 index = 0, index_end = mesh->getNumVertices(); index < index_end; ++index)
-	{
-		if( weight != weights[index])
-		{
-			S32 joint = llfloor(weight = weights[index]);
-			blend_mat.lerp(sJointMat[joint], sJointMat[joint+1], weight - joint);
-		}
-		blend_mat.multiply(coords[index], o_vertices[index]);
-		((LLV4Matrix3)blend_mat).multiply(normals[index], o_normals[index]);
-	}
-	
-	//setBuffer(0) called in LLVOAvatar::renderSkinned
-}
-
-#else
-
-void LLViewerJointMesh::updateGeometrySSE2(LLFace *face, LLPolyMesh *mesh)
-{
-	LLViewerJointMesh::updateGeometryVectorized(face, mesh);
-}
-
-#endif
diff --git a/indra/newview/llviewerjointmesh_vec.cpp b/indra/newview/llviewerjointmesh_vec.cpp
deleted file mode 100644
index 6600d01d171072cc52b5b8b626cae8f2d35f2036..0000000000000000000000000000000000000000
--- a/indra/newview/llviewerjointmesh_vec.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-/** 
- * @file llviewerjointmesh_vec.cpp
- * @brief Compiler-generated vectorized joint skinning code, works well on
- * Altivec processors (PowerPC Mac)
- *
- * *NOTE: See llv4math.h for notes on SSE/Altivec vector code.
- *
- * $LicenseInfo:firstyear=2007&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 "llviewerjointmesh.h"
-
-#include "llface.h"
-#include "llpolymesh.h"
-#include "llv4math.h"
-#include "llv4matrix3.h"
-#include "llv4matrix4.h"
-
-// Generic vectorized code, uses compiler defaults, works well for Altivec
-// on PowerPC.
-
-// static
-void LLViewerJointMesh::updateGeometryVectorized(LLFace *face, LLPolyMesh *mesh)
-{
-#if 0
-	static LLV4Matrix4	sJointMat[32];
-	LLDynamicArray<LLJointRenderData*>& joint_data = mesh->getReferenceMesh()->mJointRenderData;
-	S32 j, joint_num, joint_end = joint_data.count();
-	LLV4Vector3 pivot;
-
-	//upload joint pivots/matrices
-	for(j = joint_num = 0; joint_num < joint_end ; ++joint_num )
-	{
-		LLSkinJoint *sj;
-		const LLMatrix4 *	wm = joint_data[joint_num]->mWorldMatrix;
-		if (NULL == (sj = joint_data[joint_num]->mSkinJoint))
-		{
-				sj = joint_data[++joint_num]->mSkinJoint;
-				((LLV4Matrix3)(sJointMat[j] = *wm)).multiply(sj->mRootToParentJointSkinOffset, pivot);
-				sJointMat[j++].translate(pivot);
-				wm = joint_data[joint_num]->mWorldMatrix;
-		}
-		((LLV4Matrix3)(sJointMat[j] = *wm)).multiply(sj->mRootToJointSkinOffset, pivot);
-		sJointMat[j++].translate(pivot);
-	}
-
-	F32					weight		= F32_MAX;
-	LLV4Matrix4			blend_mat;
-
-	LLStrider<LLVector3> o_vertices;
-	LLStrider<LLVector3> o_normals;
-
-	LLVertexBuffer *buffer = face->mVertexBuffer;
-	buffer->getVertexStrider(o_vertices,  mesh->mFaceVertexOffset);
-	buffer->getNormalStrider(o_normals,   mesh->mFaceVertexOffset);
-
-	const F32*			weights			= mesh->getWeights();
-	const LLVector3*	coords			= mesh->getCoords();
-	const LLVector3*	normals			= mesh->getNormals();
-	for (U32 index = 0, index_end = mesh->getNumVertices(); index < index_end; ++index)
-	{
-		if( weight != weights[index])
-		{
-			S32 joint = llfloor(weight = weights[index]);
-			blend_mat.lerp(sJointMat[joint], sJointMat[joint+1], weight - joint);
-		}
-		blend_mat.multiply(coords[index], o_vertices[index]);
-		((LLV4Matrix3)blend_mat).multiply(normals[index], o_normals[index]);
-	}
-
-	buffer->setBuffer(0);
-#endif
-}
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 13dbc5e38637bd3962224a0c03470c02909b651e..046360e9e9ae428842bb1a9e6962ada571779f33 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -26,49 +26,51 @@
 
 #include "llviewerprecompiledheaders.h"
 
+#include "llviewermedia.h"
+
 #include "llagent.h"
 #include "llagentcamera.h"
-#include "llviewermedia.h"
-#include "llviewermediafocus.h"
-#include "llmimetypes.h"
+#include "llappviewer.h"
+#include "llaudioengine.h"  // for gAudiop
+#include "llcallbacklist.h"
+#include "lldir.h"
+#include "lldiriterator.h"
+#include "llevent.h"		// LLSimpleListener
+#include "llfilepicker.h"
+#include "llfloaterwebcontent.h"	// for handling window close requests and geometry change requests in media browser windows.
+#include "llfocusmgr.h"
+#include "llkeyboard.h"
+#include "lllogininstance.h"
+#include "llmarketplacefunctions.h"
 #include "llmediaentry.h"
+#include "llmimetypes.h"
+#include "llmutelist.h"
+#include "llnotifications.h"
+#include "llnotificationsutil.h"
+#include "llpanelprofile.h"
+#include "llparcel.h"
+#include "llpluginclassmedia.h"
+#include "llplugincookiestore.h"
+#include "llurldispatcher.h"
+#include "lluuid.h"
 #include "llversioninfo.h"
+#include "llviewermediafocus.h"
 #include "llviewercontrol.h"
-#include "llviewertexture.h"
+#include "llviewernetwork.h"
 #include "llviewerparcelmedia.h"
 #include "llviewerparcelmgr.h"
+#include "llviewerregion.h"
+#include "llviewertexture.h"
 #include "llviewertexturelist.h"
-#include "llvovolume.h"
-#include "llpluginclassmedia.h"
-#include "llplugincookiestore.h"
 #include "llviewerwindow.h"
-#include "llfocusmgr.h"
-#include "llcallbacklist.h"
-#include "llparcel.h"
-#include "llaudioengine.h"  // for gAudiop
-#include "llurldispatcher.h"
 #include "llvoavatar.h"
 #include "llvoavatarself.h"
-#include "llviewerregion.h"
+#include "llvovolume.h"
+#include "llwebprofile.h"
 #include "llwebsharing.h"	// For LLWebSharing::setOpenIDCookie(), *TODO: find a better way to do this!
-#include "llfilepicker.h"
-#include "llnotifications.h"
-#include "lldir.h"
-#include "lldiriterator.h"
-#include "llevent.h"		// LLSimpleListener
-#include "llnotificationsutil.h"
-#include "lluuid.h"
-#include "llkeyboard.h"
-#include "llmutelist.h"
-#include "llpanelprofile.h"
-#include "llappviewer.h"
-#include "lllogininstance.h" 
-//#include "llfirstuse.h"
-#include "llviewernetwork.h"
 #include "llwindow.h"
+#include "llvieweraudio.h"
 
-
-#include "llfloatermediabrowser.h"	// for handling window close requests and geometry change requests in media browser windows.
 #include "llfloaterwebcontent.h"	// for handling window close requests and geometry change requests in media browser windows.
 
 #include <boost/bind.hpp>	// for SkinFolder listener
@@ -319,6 +321,10 @@ LOG_CLASS(LLViewerMediaWebProfileResponder);
 		std::string cookie = content["set-cookie"].asString();
 
 		LLViewerMedia::getCookieStore()->setCookiesFromHost(cookie, mHost);
+
+		// Set cookie for snapshot publishing.
+		std::string auth_cookie = cookie.substr(0, cookie.find(";")); // strip path
+		LLWebProfile::setAuthCookie(auth_cookie);
 	}
 
 	 void completedRaw(
@@ -782,6 +788,12 @@ static bool proximity_comparitor(const LLViewerMediaImpl* i1, const LLViewerMedi
 }
 
 static LLFastTimer::DeclareTimer FTM_MEDIA_UPDATE("Update Media");
+static LLFastTimer::DeclareTimer FTM_MEDIA_SPARE_IDLE("Spare Idle");
+static LLFastTimer::DeclareTimer FTM_MEDIA_UPDATE_INTEREST("Update/Interest");
+static LLFastTimer::DeclareTimer FTM_MEDIA_SORT("Sort");
+static LLFastTimer::DeclareTimer FTM_MEDIA_SORT2("Sort 2");
+static LLFastTimer::DeclareTimer FTM_MEDIA_MISC("Misc");
+
 
 //////////////////////////////////////////////////////////////////////////////////////////
 // static
@@ -806,21 +818,28 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
 	impl_list::iterator iter = sViewerMediaImplList.begin();
 	impl_list::iterator end = sViewerMediaImplList.end();
 
-	for(; iter != end;)
 	{
-		LLViewerMediaImpl* pimpl = *iter++;
-		pimpl->update();
-		pimpl->calculateInterest();
+		LLFastTimer t(FTM_MEDIA_UPDATE_INTEREST);
+		for(; iter != end;)
+		{
+			LLViewerMediaImpl* pimpl = *iter++;
+			pimpl->update();
+			pimpl->calculateInterest();
+		}
 	}
 	
 	// Let the spare media source actually launch
 	if(sSpareBrowserMediaSource)
 	{
+		LLFastTimer t(FTM_MEDIA_SPARE_IDLE);
 		sSpareBrowserMediaSource->idle();
 	}
 		
-	// Sort the static instance list using our interest criteria
-	sViewerMediaImplList.sort(priorityComparitor);
+	{
+		LLFastTimer t(FTM_MEDIA_SORT);
+		// Sort the static instance list using our interest criteria
+		sViewerMediaImplList.sort(priorityComparitor);
+	}
 
 	// Go through the list again and adjust according to priority.
 	iter = sViewerMediaImplList.begin();
@@ -848,147 +867,150 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
 	// max_instances must be set high enough to allow the various instances used in the UI (for the help browser, search, etc.) to be loaded.
 	// If max_normal + max_low is less than max_instances, things will tend to get unloaded instead of being set to slideshow.
 	
-	for(; iter != end; iter++)
 	{
-		LLViewerMediaImpl* pimpl = *iter;
+		LLFastTimer t(FTM_MEDIA_MISC);
+		for(; iter != end; iter++)
+		{
+			LLViewerMediaImpl* pimpl = *iter;
 		
-		LLPluginClassMedia::EPriority new_priority = LLPluginClassMedia::PRIORITY_NORMAL;
+			LLPluginClassMedia::EPriority new_priority = LLPluginClassMedia::PRIORITY_NORMAL;
 
-		if(pimpl->isForcedUnloaded() || (impl_count_total >= (int)max_instances))
-		{
-			// Never load muted or failed impls.
-			// Hard limit on the number of instances that will be loaded at one time
-			new_priority = LLPluginClassMedia::PRIORITY_UNLOADED;
-		}
-		else if(!pimpl->getVisible())
-		{
-			new_priority = LLPluginClassMedia::PRIORITY_HIDDEN;
-		}
-		else if(pimpl->hasFocus())
-		{
-			new_priority = LLPluginClassMedia::PRIORITY_HIGH;
-			impl_count_interest_normal++;	// count this against the count of "normal" instances for priority purposes
-		}
-		else if(pimpl->getUsedInUI())
-		{
-			new_priority = LLPluginClassMedia::PRIORITY_NORMAL;
-			impl_count_interest_normal++;
-		}
-		else if(pimpl->isParcelMedia())
-		{
-			new_priority = LLPluginClassMedia::PRIORITY_NORMAL;
-			impl_count_interest_normal++;
-		}
-		else
-		{
-			// Look at interest and CPU usage for instances that aren't in any of the above states.
-			
-			// Heuristic -- if the media texture's approximate screen area is less than 1/4 of the native area of the texture,
-			// turn it down to low instead of normal.  This may downsample for plugins that support it.
-			bool media_is_small = false;
-			F64 approximate_interest = pimpl->getApproximateTextureInterest();
-			if(approximate_interest == 0.0f)
+			if(pimpl->isForcedUnloaded() || (impl_count_total >= (int)max_instances))
 			{
-				// this media has no current size, which probably means it's not loaded.
-				media_is_small = true;
+				// Never load muted or failed impls.
+				// Hard limit on the number of instances that will be loaded at one time
+				new_priority = LLPluginClassMedia::PRIORITY_UNLOADED;
 			}
-			else if(pimpl->getInterest() < (approximate_interest / 4))
+			else if(!pimpl->getVisible())
 			{
-				media_is_small = true;
+				new_priority = LLPluginClassMedia::PRIORITY_HIDDEN;
 			}
-			
-			if(pimpl->getInterest() == 0.0f)
+			else if(pimpl->hasFocus())
 			{
-				// This media is completely invisible, due to being outside the view frustrum or out of range.
-				new_priority = LLPluginClassMedia::PRIORITY_HIDDEN;
+				new_priority = LLPluginClassMedia::PRIORITY_HIGH;
+				impl_count_interest_normal++;	// count this against the count of "normal" instances for priority purposes
 			}
-			else if(check_cpu_usage && (total_cpu > max_cpu))
+			else if(pimpl->getUsedInUI())
 			{
-				// Higher priority plugins have already used up the CPU budget.  Set remaining ones to slideshow priority.
-				new_priority = LLPluginClassMedia::PRIORITY_SLIDESHOW;
+				new_priority = LLPluginClassMedia::PRIORITY_NORMAL;
+				impl_count_interest_normal++;
 			}
-			else if((impl_count_interest_normal < (int)max_normal) && !media_is_small)
+			else if(pimpl->isParcelMedia())
 			{
-				// Up to max_normal inworld get normal priority
 				new_priority = LLPluginClassMedia::PRIORITY_NORMAL;
 				impl_count_interest_normal++;
 			}
-			else if (impl_count_interest_low + impl_count_interest_normal < (int)max_low + (int)max_normal)
+			else
 			{
-				// The next max_low inworld get turned down
-				new_priority = LLPluginClassMedia::PRIORITY_LOW;
-				impl_count_interest_low++;
-				
-				// Set the low priority size for downsampling to approximately the size the texture is displayed at.
+				// Look at interest and CPU usage for instances that aren't in any of the above states.
+			
+				// Heuristic -- if the media texture's approximate screen area is less than 1/4 of the native area of the texture,
+				// turn it down to low instead of normal.  This may downsample for plugins that support it.
+				bool media_is_small = false;
+				F64 approximate_interest = pimpl->getApproximateTextureInterest();
+				if(approximate_interest == 0.0f)
+				{
+					// this media has no current size, which probably means it's not loaded.
+					media_is_small = true;
+				}
+				else if(pimpl->getInterest() < (approximate_interest / 4))
+				{
+					media_is_small = true;
+				}
+			
+				if(pimpl->getInterest() == 0.0f)
 				{
-					F32 approximate_interest_dimension = (F32) sqrt(pimpl->getInterest());
+					// This media is completely invisible, due to being outside the view frustrum or out of range.
+					new_priority = LLPluginClassMedia::PRIORITY_HIDDEN;
+				}
+				else if(check_cpu_usage && (total_cpu > max_cpu))
+				{
+					// Higher priority plugins have already used up the CPU budget.  Set remaining ones to slideshow priority.
+					new_priority = LLPluginClassMedia::PRIORITY_SLIDESHOW;
+				}
+				else if((impl_count_interest_normal < (int)max_normal) && !media_is_small)
+				{
+					// Up to max_normal inworld get normal priority
+					new_priority = LLPluginClassMedia::PRIORITY_NORMAL;
+					impl_count_interest_normal++;
+				}
+				else if (impl_count_interest_low + impl_count_interest_normal < (int)max_low + (int)max_normal)
+				{
+					// The next max_low inworld get turned down
+					new_priority = LLPluginClassMedia::PRIORITY_LOW;
+					impl_count_interest_low++;
+				
+					// Set the low priority size for downsampling to approximately the size the texture is displayed at.
+					{
+						F32 approximate_interest_dimension = (F32) sqrt(pimpl->getInterest());
 					
-					pimpl->setLowPrioritySizeLimit(llround(approximate_interest_dimension));
+						pimpl->setLowPrioritySizeLimit(llround(approximate_interest_dimension));
+					}
+				}
+				else
+				{
+					// Any additional impls (up to max_instances) get very infrequent time
+					new_priority = LLPluginClassMedia::PRIORITY_SLIDESHOW;
 				}
 			}
-			else
-			{
-				// Any additional impls (up to max_instances) get very infrequent time
-				new_priority = LLPluginClassMedia::PRIORITY_SLIDESHOW;
-			}
-		}
 		
-		if(!pimpl->getUsedInUI() && (new_priority != LLPluginClassMedia::PRIORITY_UNLOADED))
-		{
-			// This is a loadable inworld impl -- the last one in the list in this class defines the lowest loadable interest.
-			lowest_interest_loadable = pimpl;
+			if(!pimpl->getUsedInUI() && (new_priority != LLPluginClassMedia::PRIORITY_UNLOADED))
+			{
+				// This is a loadable inworld impl -- the last one in the list in this class defines the lowest loadable interest.
+				lowest_interest_loadable = pimpl;
 			
-			impl_count_total++;
-		}
+				impl_count_total++;
+			}
 
-		// Overrides if the window is minimized or we lost focus (taking care
-		// not to accidentally "raise" the priority either)
-		if (!gViewerWindow->getActive() /* viewer window minimized? */ 
-			&& new_priority > LLPluginClassMedia::PRIORITY_HIDDEN)
-		{
-			new_priority = LLPluginClassMedia::PRIORITY_HIDDEN;
-		}
-		else if (!gFocusMgr.getAppHasFocus() /* viewer window lost focus? */
-				 && new_priority > LLPluginClassMedia::PRIORITY_LOW)
-		{
-			new_priority = LLPluginClassMedia::PRIORITY_LOW;
-		}
+			// Overrides if the window is minimized or we lost focus (taking care
+			// not to accidentally "raise" the priority either)
+			if (!gViewerWindow->getActive() /* viewer window minimized? */ 
+				&& new_priority > LLPluginClassMedia::PRIORITY_HIDDEN)
+			{
+				new_priority = LLPluginClassMedia::PRIORITY_HIDDEN;
+			}
+			else if (!gFocusMgr.getAppHasFocus() /* viewer window lost focus? */
+					 && new_priority > LLPluginClassMedia::PRIORITY_LOW)
+			{
+				new_priority = LLPluginClassMedia::PRIORITY_LOW;
+			}
 		
-		if(!inworld_media_enabled)
-		{
-			// If inworld media is locked out, force all inworld media to stay unloaded.
-			if(!pimpl->getUsedInUI())
+			if(!inworld_media_enabled)
 			{
-				new_priority = LLPluginClassMedia::PRIORITY_UNLOADED;
+				// If inworld media is locked out, force all inworld media to stay unloaded.
+				if(!pimpl->getUsedInUI())
+				{
+					new_priority = LLPluginClassMedia::PRIORITY_UNLOADED;
+				}
 			}
-		}
-		// update the audio stream here as well
-		if( !inworld_audio_enabled)
-		{
-			if(LLViewerMedia::isParcelAudioPlaying() && gAudiop && LLViewerMedia::hasParcelAudio())
+			// update the audio stream here as well
+			if( !inworld_audio_enabled)
 			{
-				gAudiop->stopInternetStream();
+				if(LLViewerMedia::isParcelAudioPlaying() && gAudiop && LLViewerMedia::hasParcelAudio())
+				{
+					LLViewerAudio::getInstance()->stopInternetStreamWithAutoFade();
+				}
 			}
-		}
-		pimpl->setPriority(new_priority);
+			pimpl->setPriority(new_priority);
 		
-		if(pimpl->getUsedInUI())
-		{
-			// Any impls used in the UI should not be in the proximity list.
-			pimpl->mProximity = -1;
-		}
-		else
-		{
-			proximity_order.push_back(pimpl);
-		}
+			if(pimpl->getUsedInUI())
+			{
+				// Any impls used in the UI should not be in the proximity list.
+				pimpl->mProximity = -1;
+			}
+			else
+			{
+				proximity_order.push_back(pimpl);
+			}
 
-		total_cpu += pimpl->getCPUUsage();
+			total_cpu += pimpl->getCPUUsage();
 		
-		if (!pimpl->getUsedInUI() && pimpl->hasMedia())
-		{
-			sAnyMediaShowing = true;
-		}
+			if (!pimpl->getUsedInUI() && pimpl->hasMedia())
+			{
+				sAnyMediaShowing = true;
+			}
 
+		}
 	}
 
 	// Re-calculate this every time.
@@ -1014,6 +1036,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg)
 	}
 	else
 	{
+		LLFastTimer t(FTM_MEDIA_SORT2);
 		// Use a distance-based sort for proximity values.  
 		std::stable_sort(proximity_order.begin(), proximity_order.end(), proximity_comparitor);
 	}
@@ -1069,13 +1092,24 @@ void LLViewerMedia::setAllMediaEnabled(bool val)
 			gAudiop && 
 			LLViewerMedia::hasParcelAudio())
 		{
-			gAudiop->startInternetStream(LLViewerMedia::getParcelAudioURL());
+			if (LLAudioEngine::AUDIO_PAUSED == gAudiop->isInternetStreamPlaying())
+			{
+				// 'false' means unpause
+				gAudiop->pauseInternetStream(false);
+			}
+			else
+			{
+				LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(LLViewerMedia::getParcelAudioURL());
+			}
 		}
 	}
 	else {
 		// This actually unloads the impl, as opposed to "stop"ping the media
 		LLViewerParcelMedia::stop();
-		if (gAudiop) gAudiop->stopInternetStream();
+		if (gAudiop)
+		{
+			LLViewerAudio::getInstance()->stopInternetStreamWithAutoFade();
+		}
 	}
 }
 
@@ -1366,75 +1400,11 @@ void LLViewerMedia::removeCookie(const std::string &name, const std::string &dom
 }
 
 
-// This is defined in two files but I don't want to create a dependence between this and llsidepanelinventory
-// just to be able to temporarily disable the outbox.
-#define ENABLE_INVENTORY_DISPLAY_OUTBOX		0	// keep in sync with ENABLE_MERCHANT_OUTBOX_PANEL, ENABLE_MERCHANT_OUTBOX_CONTEXT_MENU
-
-class LLInventoryUserStatusResponder : public LLHTTPClient::Responder
-{
-public:
-	LLInventoryUserStatusResponder()
-		: LLCurl::Responder()
-	{
-	}
-
-	void completed(U32 status, const std::string& reason, const LLSD& content)
-	{
-		if (isGoodStatus(status))
-		{
-			std::string merchantStatus = content[gAgent.getID().getString()].asString();
-			llinfos << "Marketplace merchant status: " << merchantStatus << llendl;
-
-			// Save the merchant status before turning on the display
-			gSavedSettings.setString("InventoryMarketplaceUserStatus", merchantStatus);
-
-			// Complete success
-			gSavedSettings.setBOOL("InventoryDisplayInbox", true);
-
-#if ENABLE_INVENTORY_DISPLAY_OUTBOX
-			gSavedSettings.setBOOL("InventoryDisplayOutbox", true);
-#endif
-		}
-		else if (status == 401)
-		{
-			// API is available for use but OpenID authorization failed
-			gSavedSettings.setBOOL("InventoryDisplayInbox", true);
-		}
-		else
-		{
-			// API in unavailable
-			llinfos << "Marketplace API is unavailable -- Inbox may be disabled, status = " << status << ", reason = " << reason << llendl;
-		}
-	}
-};
-
-
-void doOnetimeEarlyHTTPRequests()
-{
-	std::string url = "https://marketplace.secondlife.com/";
-
-	if (!LLGridManager::getInstance()->isInProductionGrid())
-	{
-		std::string gridLabel = LLGridManager::getInstance()->getGridLabel();
-		url = llformat("https://marketplace.%s.lindenlab.com/", utf8str_tolower(gridLabel).c_str());
-
-		// TEMP for Jim's pdp
-		//url = "http://pdp24.lindenlab.com:3000/";
-	}
-	
-	url += "api/1/users/";
-	url += gAgent.getID().getString();
-	url += "/user_status";
-
-	llinfos << "http get: " << url << llendl;
-	LLHTTPClient::get(url, new LLInventoryUserStatusResponder(), LLViewerMedia::getHeaders());
-}
-
-
 LLSD LLViewerMedia::getHeaders()
 {
 	LLSD headers = LLSD::emptyMap();
 	headers["Accept"] = "*/*";
+	headers["Content-Type"] = "application/xml";
 	headers["Cookie"] = sOpenIDCookie;
 	headers["User-Agent"] = getCurrentUserAgent();
 
@@ -1484,11 +1454,11 @@ void LLViewerMedia::setOpenIDCookie()
 		std::string profile_url = getProfileURL("");
 		LLURL raw_profile_url( profile_url.c_str() );
 
+		LL_DEBUGS("MediaAuth") << "Requesting " << profile_url << llendl;
+		LL_DEBUGS("MediaAuth") << "sOpenIDCookie = [" << sOpenIDCookie << "]" << llendl;
 		LLHTTPClient::get(profile_url,  
 			new LLViewerMediaWebProfileResponder(raw_profile_url.getAuthority()),
 			headers);
-
-		doOnetimeEarlyHTTPRequests();
 	}
 }
 
@@ -1715,7 +1685,8 @@ LLViewerMediaImpl::LLViewerMediaImpl(	  const LLUUID& texture_id,
 	mNavigateSuspended(false),
 	mNavigateSuspendedDeferred(false),
 	mIsUpdated(false),
-	mTrustedBrowser(false)
+	mTrustedBrowser(false),
+	mZoomFactor(1.0)
 { 
 
 	// Set up the mute list observer if it hasn't been set up already.
@@ -1861,7 +1832,7 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
 	
 	if(plugin_basename.empty())
 	{
-		LL_WARNS("Media") << "Couldn't find plugin for media type " << media_type << LL_ENDL;
+		LL_WARNS_ONCE("Media") << "Couldn't find plugin for media type " << media_type << LL_ENDL;
 	}
 	else
 	{
@@ -1887,11 +1858,11 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
 		llstat s;
 		if(LLFile::stat(launcher_name, &s))
 		{
-			LL_WARNS("Media") << "Couldn't find launcher at " << launcher_name << LL_ENDL;
+			LL_WARNS_ONCE("Media") << "Couldn't find launcher at " << launcher_name << LL_ENDL;
 		}
 		else if(LLFile::stat(plugin_name, &s))
 		{
-			LL_WARNS("Media") << "Couldn't find plugin at " << plugin_name << LL_ENDL;
+			LL_WARNS_ONCE("Media") << "Couldn't find plugin at " << plugin_name << LL_ENDL;
 		}
 		else
 		{
@@ -1930,7 +1901,7 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
 		}
 	}
 	
-	LL_WARNS("Plugin") << "plugin intialization failed for mime type: " << media_type << LL_ENDL;
+	LL_WARNS_ONCE("Plugin") << "plugin intialization failed for mime type: " << media_type << LL_ENDL;
 	LLSD args;
 	args["MIME_TYPE"] = media_type;
 	LLNotificationsUtil::add("NoPlugin", args);
@@ -2301,6 +2272,17 @@ void LLViewerMediaImpl::clearCache()
 	}
 }
 
+
+//////////////////////////////////////////////////////////////////////////////////////////
+void LLViewerMediaImpl::setPageZoomFactor( double factor )
+{
+	if(mMediaSource && factor != mZoomFactor)
+	{
+		mZoomFactor = factor;
+		mMediaSource->set_page_zoom_factor( factor );
+	}
+}
+
 //////////////////////////////////////////////////////////////////////////////////////////
 void LLViewerMediaImpl::mouseDown(S32 x, S32 y, MASK mask, S32 button)
 {
@@ -2449,44 +2431,58 @@ BOOL LLViewerMediaImpl::handleMouseUp(S32 x, S32 y, MASK mask)
 //////////////////////////////////////////////////////////////////////////////////////////
 void LLViewerMediaImpl::updateJavascriptObject()
 {
+	static LLFrameTimer timer ;
+
 	if ( mMediaSource )
 	{
 		// flag to expose this information to internal browser or not.
 		bool enable = gSavedSettings.getBOOL("BrowserEnableJSObject");
+
+		if(!enable)
+		{
+			return ; //no need to go further.
+		}
+
+		if(timer.getElapsedTimeF32() < 1.0f)
+		{
+			return ; //do not update more than once per second.
+		}
+		timer.reset() ;
+
 		mMediaSource->jsEnableObject( enable );
 
 		// these values are only menaingful after login so don't set them before
 		bool logged_in = LLLoginInstance::getInstance()->authSuccess();
 		if ( logged_in )
 		{
-		// current location within a region
-		LLVector3 agent_pos = gAgent.getPositionAgent();
-		double x = agent_pos.mV[ VX ];
-		double y = agent_pos.mV[ VY ];
-		double z = agent_pos.mV[ VZ ];
-		mMediaSource->jsAgentLocationEvent( x, y, z );
-
-		// current location within the grid
-		LLVector3d agent_pos_global = gAgent.getLastPositionGlobal();
-		double global_x = agent_pos_global.mdV[ VX ];
-		double global_y = agent_pos_global.mdV[ VY ];
-		double global_z = agent_pos_global.mdV[ VZ ];
-		mMediaSource->jsAgentGlobalLocationEvent( global_x, global_y, global_z );
-
-		// current agent orientation
-		double rotation = atan2( gAgent.getAtAxis().mV[VX], gAgent.getAtAxis().mV[VY] );
-		double angle = rotation * RAD_TO_DEG;
-		if ( angle < 0.0f ) angle = 360.0f + angle;	// TODO: has to be a better way to get orientation!
-		mMediaSource->jsAgentOrientationEvent( angle );
-
-		// current region agent is in
-		std::string region_name("");
-		LLViewerRegion* region = gAgent.getRegion();
-		if ( region )
-		{
-			region_name = region->getName();
-		};
-		mMediaSource->jsAgentRegionEvent( region_name );
+			// current location within a region
+			LLVector3 agent_pos = gAgent.getPositionAgent();
+			double x = agent_pos.mV[ VX ];
+			double y = agent_pos.mV[ VY ];
+			double z = agent_pos.mV[ VZ ];
+			mMediaSource->jsAgentLocationEvent( x, y, z );
+
+			// current location within the grid
+			LLVector3d agent_pos_global = gAgent.getLastPositionGlobal();
+			double global_x = agent_pos_global.mdV[ VX ];
+			double global_y = agent_pos_global.mdV[ VY ];
+			double global_z = agent_pos_global.mdV[ VZ ];
+			mMediaSource->jsAgentGlobalLocationEvent( global_x, global_y, global_z );
+
+			// current agent orientation
+			double rotation = atan2( gAgent.getAtAxis().mV[VX], gAgent.getAtAxis().mV[VY] );
+			double angle = rotation * RAD_TO_DEG;
+			if ( angle < 0.0f ) angle = 360.0f + angle;	// TODO: has to be a better way to get orientation!
+			mMediaSource->jsAgentOrientationEvent( angle );
+
+			// current region agent is in
+			std::string region_name("");
+			LLViewerRegion* region = gAgent.getRegion();
+			if ( region )
+			{
+				region_name = region->getName();
+			};
+			mMediaSource->jsAgentRegionEvent( region_name );
 		}
 
 		// language code the viewer is set to
@@ -2505,7 +2501,7 @@ void LLViewerMediaImpl::updateJavascriptObject()
 }
 
 //////////////////////////////////////////////////////////////////////////////////////////
-std::string LLViewerMediaImpl::getName() const 
+const std::string& LLViewerMediaImpl::getName() const 
 { 
 	if (mMediaSource)
 	{
@@ -2767,8 +2763,14 @@ bool LLViewerMediaImpl::canNavigateBack()
 }
 
 //////////////////////////////////////////////////////////////////////////////////////////
+static LLFastTimer::DeclareTimer FTM_MEDIA_DO_UPDATE("Do Update");
+static LLFastTimer::DeclareTimer FTM_MEDIA_GET_DATA("Get Data");
+static LLFastTimer::DeclareTimer FTM_MEDIA_SET_SUBIMAGE("Set Subimage");
+
+
 void LLViewerMediaImpl::update()
 {
+	LLFastTimer t(FTM_MEDIA_DO_UPDATE);
 	if(mMediaSource == NULL)
 	{
 		if(mPriority == LLPluginClassMedia::PRIORITY_UNLOADED)
@@ -2868,20 +2870,27 @@ void LLViewerMediaImpl::update()
 			if(width > 0 && height > 0)
 			{
 
-				U8* data = mMediaSource->getBitsData();
+				U8* data = NULL;
+				{
+					LLFastTimer t(FTM_MEDIA_GET_DATA);
+					data = mMediaSource->getBitsData();
+				}
 
 				// Offset the pixels pointer to match x_pos and y_pos
 				data += ( x_pos * mMediaSource->getTextureDepth() * mMediaSource->getBitsWidth() );
 				data += ( y_pos * mMediaSource->getTextureDepth() );
 				
-				placeholder_image->setSubImage(
-						data, 
-						mMediaSource->getBitsWidth(), 
-						mMediaSource->getBitsHeight(),
-						x_pos, 
-						y_pos, 
-						width, 
-						height);
+				{
+					LLFastTimer t(FTM_MEDIA_SET_SUBIMAGE);
+					placeholder_image->setSubImage(
+							data, 
+							mMediaSource->getBitsWidth(), 
+							mMediaSource->getBitsHeight(),
+							x_pos, 
+							y_pos, 
+							width, 
+							height);
+				}
 
 			}
 			
@@ -3340,7 +3349,6 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla
 			{
 				// This close request is directed at another instance
 				pass_through = false;
-				LLFloaterMediaBrowser::closeRequest(uuid);
 				LLFloaterWebContent::closeRequest(uuid);
 			}
 		}
@@ -3360,7 +3368,6 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla
 			{
 				// This request is directed at another instance
 				pass_through = false;
-				LLFloaterMediaBrowser::geometryChanged(uuid, plugin->getGeometryX(), plugin->getGeometryY(), plugin->getGeometryWidth(), plugin->getGeometryHeight());
 				LLFloaterWebContent::geometryChanged(uuid, plugin->getGeometryX(), plugin->getGeometryY(), plugin->getGeometryWidth(), plugin->getGeometryHeight());
 			}
 		}
@@ -3454,8 +3461,11 @@ BOOL LLViewerMediaImpl::isUpdated()
 	return mIsUpdated ;
 }
 
+static LLFastTimer::DeclareTimer FTM_MEDIA_CALCULATE_INTEREST("Calculate Interest");
+
 void LLViewerMediaImpl::calculateInterest()
 {
+	LLFastTimer t(FTM_MEDIA_CALCULATE_INTEREST);
 	LLViewerMediaTexture* texture = LLViewerTextureManager::findMediaTexture( mTextureId );
 	
 	if(texture != NULL)
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index 0b69b8f0c1c0664fa5af23a1c7c9af07b0f4a13b..15dcda59cfbd4017a0c40dc86af217ca0c3819cd 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -250,6 +250,7 @@ class LLViewerMediaImpl
 	std::string getMediaEntryURL() { return mMediaEntryURL; }
 	void setHomeURL(const std::string& home_url, const std::string& mime_type = LLStringUtil::null) { mHomeURL = home_url; mHomeMimeType = mime_type;};
 	void clearCache();
+	void setPageZoomFactor( double factor );
 	std::string getMimeType() { return mMimeType; }
 	void scaleMouse(S32 *mouse_x, S32 *mouse_y);
 	void scaleTextureCoords(const LLVector2& texture_coords, S32 *x, S32 *y);
@@ -317,7 +318,7 @@ class LLViewerMediaImpl
 	/*virtual*/ BOOL	handleToolTip(S32 x, S32 y, MASK mask) { return FALSE; };
 	/*virtual*/ BOOL	handleMiddleMouseDown(S32 x, S32 y, MASK mask) { return FALSE; };
 	/*virtual*/ BOOL	handleMiddleMouseUp(S32 x, S32 y, MASK mask) {return FALSE; };
-	/*virtual*/ std::string getName() const;
+	/*virtual*/ const std::string& getName() const;
 
 	/*virtual*/ void	screenPointToLocal(S32 screen_x, S32 screen_y, S32* local_x, S32* local_y) const {};
 	/*virtual*/ void	localPointToScreen(S32 local_x, S32 local_y, S32* screen_x, S32* screen_y) const {};
@@ -416,6 +417,7 @@ class LLViewerMediaImpl
 private:
 	// a single media url with some data and an impl.
 	LLPluginClassMedia* mMediaSource;
+	F64		mZoomFactor;
 	LLUUID mTextureId;
 	bool  mMovieImageHasMips;
 	std::string mMediaURL;			// The last media url set with NavigateTo
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 754731b290dfd409cc3182b4600c3d0307fcdc17..99540ccce918dc8d0e6f24280ce25bc9880e08d3 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -30,6 +30,7 @@
 // linden library includes
 #include "llavatarnamecache.h"	// IDEVO
 #include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llcombobox.h"
 #include "llinventorypanel.h"
 #include "llnotifications.h"
@@ -41,7 +42,6 @@
 #include "llagentcamera.h"
 #include "llagentwearables.h"
 #include "llagentpilot.h"
-#include "llbottomtray.h"
 #include "llcompilequeue.h"
 #include "llconsole.h"
 #include "lldaycyclemanager.h"
@@ -76,13 +76,11 @@
 #include "llinventoryfunctions.h"
 #include "llpanellogin.h"
 #include "llpanelblockedlist.h"
-#include "llmenucommands.h"
 #include "llmoveview.h"
 #include "llparcel.h"
 #include "llrootview.h"
 #include "llsceneview.h"
 #include "llselectmgr.h"
-#include "llsidetray.h"
 #include "llstatusbar.h"
 #include "lltextureview.h"
 #include "lltoolcomp.h"
@@ -373,8 +371,6 @@ void set_underclothes_menu_options()
 
 void init_menus()
 {
-	S32 top = gViewerWindow->getRootView()->getRect().getHeight();
-
 	// Initialize actions
 	initialize_menus();
 
@@ -446,11 +442,13 @@ void init_menus()
 	{
 		color = LLUIColorTable::instance().getColor( "MenuNonProductionBgColor" );
 	}
+
+	LLView* menu_bar_holder = gViewerWindow->getRootView()->getChildView("menu_bar_holder");
+
 	gMenuBarView = LLUICtrlFactory::getInstance()->createFromFile<LLMenuBarGL>("menu_viewer.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
-	gMenuBarView->setRect(LLRect(0, top, 0, top - MENU_BAR_HEIGHT));
+	gMenuBarView->setRect(LLRect(0, menu_bar_holder->getRect().mTop, 0, menu_bar_holder->getRect().mTop - MENU_BAR_HEIGHT));
 	gMenuBarView->setBackgroundColor( color );
 
-	LLView* menu_bar_holder = gViewerWindow->getRootView()->getChildView("menu_bar_holder");
 	menu_bar_holder->addChild(gMenuBarView);
   
     gViewerWindow->setMenuBackgroundColor(false, 
@@ -863,51 +861,6 @@ class LLAdvancedCheckFeature : public view_listener_t
 }
 };
 
-void toggle_destination_and_avatar_picker(const LLSD& show)
-{
-	S32 panel_idx = show.isDefined() ? show.asInteger() : -1;
-	LLView* container = gViewerWindow->getRootView()->findChildView("avatar_picker_and_destination_guide_container");
-	if (!container) return;
-
-	LLMediaCtrl* destinations = container->findChild<LLMediaCtrl>("destination_guide_contents");
-	LLMediaCtrl* avatar_picker = container->findChild<LLMediaCtrl>("avatar_picker_contents");
-	if (!destinations || !avatar_picker) return;
-
-	LLButton* avatar_btn = gViewerWindow->getRootView()->getChildView("bottom_tray")->getChild<LLButton>("avatar_btn");
-	LLButton* destination_btn = gViewerWindow->getRootView()->getChildView("bottom_tray")->getChild<LLButton>("destination_btn");
-
-	if (panel_idx == 0
-		&& !destinations->getVisible())
-	{	// opening destinations guide
-		container->setVisible(true);
-		destinations->setVisible(true);
-		avatar_picker->setVisible(false);
-		LLFirstUse::notUsingDestinationGuide(false);
-		avatar_btn->setToggleState(false);
-		destination_btn->setToggleState(true);
-		gSavedSettings.setS32("DestinationsAndAvatarsVisibility", 0);
-	}
-	else if (panel_idx == 1 
-		&& !avatar_picker->getVisible())
-	{	// opening avatar picker
-		container->setVisible(true);
-		destinations->setVisible(false);
-		avatar_picker->setVisible(true);
-		avatar_btn->setToggleState(true);
-		destination_btn->setToggleState(false);
-		gSavedSettings.setS32("DestinationsAndAvatarsVisibility", 1);
-	}
-	else
-	{	// toggling off dest guide or avatar picker
-		container->setVisible(false);
-		destinations->setVisible(false);
-		avatar_picker->setVisible(false);
-		avatar_btn->setToggleState(false);
-		destination_btn->setToggleState(false);
-		gSavedSettings.setS32("DestinationsAndAvatarsVisibility", -1);
-	}
-};
-
 
 //////////////////
 // INFO DISPLAY //
@@ -994,6 +947,10 @@ U32 info_display_from_string(std::string info_display)
 	{
 		return LLPipeline::RENDER_DEBUG_COMPOSITION;
 	}
+	else if ("attachment bytes" == info_display)
+	{
+		return LLPipeline::RENDER_DEBUG_ATTACHMENT_BYTES;
+	}
 	else if ("glow" == info_display)
 	{
 		return LLPipeline::RENDER_DEBUG_GLOW;
@@ -1014,6 +971,10 @@ U32 info_display_from_string(std::string info_display)
 	{
 		return LLPipeline::RENDER_DEBUG_SCULPTED;
 	}
+	else if ("wind vectors" == info_display)
+	{
+		return LLPipeline::RENDER_DEBUG_WIND_VECTORS;
+	}
 	else
 	{
 		return 0;
@@ -1026,6 +987,8 @@ class LLAdvancedToggleInfoDisplay : public view_listener_t
 	{
 		U32 info_display = info_display_from_string( userdata.asString() );
 
+		LL_INFOS("ViewerMenu") << "toggle " << userdata.asString() << LL_ENDL;
+		
 		if ( info_display != 0 )
 		{
 			LLPipeline::toggleRenderDebug( (void*)info_display );
@@ -1043,6 +1006,8 @@ class LLAdvancedCheckInfoDisplay : public view_listener_t
 		U32 info_display = info_display_from_string( userdata.asString() );
 		bool new_value = false;
 
+		LL_INFOS("ViewerMenu") << "check " << userdata.asString() << LL_ENDL;
+
 		if ( info_display != 0 )
 		{
 			new_value = LLPipeline::toggleRenderDebugControl( (void*)info_display );
@@ -1076,26 +1041,6 @@ class LLAdvancedCheckRandomizeFramerate : public view_listener_t
 	}
 };
 
-void run_vectorize_perf_test(void *)
-{
-	gSavedSettings.setBOOL("VectorizePerfTest", TRUE);
-}
-
-
-////////////////////////////////
-// RUN Vectorized Perform Test//
-////////////////////////////////
-
-
-class LLAdvancedVectorizePerfTest : public view_listener_t
-{
-	bool handleEvent(const LLSD& userdata)
-	{
-		run_vectorize_perf_test(NULL);
-		return true;
-	}
-};
-
 ///////////////////////////
 //// PERIODIC SLOW FRAME //
 ///////////////////////////
@@ -2262,6 +2207,30 @@ class LLAdvancedEnableToggleHackedGodmode : public view_listener_t
 //// Advanced menu
 ////-------------------------------------------------------------------
 
+
+//////////////////
+// DEVELOP MENU //
+//////////////////
+
+class LLDevelopCheckLoggingLevel : public view_listener_t
+{
+	bool handleEvent(const LLSD& userdata)
+	{
+		U32 level = userdata.asInteger();
+		return (static_cast<LLError::ELevel>(level) == LLError::getDefaultLevel());
+	}
+};
+
+class LLDevelopSetLoggingLevel : public view_listener_t
+{
+	bool handleEvent(const LLSD& userdata)
+	{
+		U32 level = userdata.asInteger();
+		LLError::setDefaultLevel(static_cast<LLError::ELevel>(level));
+		return true;
+	}
+};
+
 //////////////////
 // ADMIN MENU   //
 //////////////////
@@ -2633,7 +2602,7 @@ void handle_object_inspect()
 	{
 		LLSD key;
 		key["task"] = "task";
-		LLSideTray::getInstance()->showPanel("sidepanel_inventory", key);
+		LLFloaterSidePanelContainer::showPanel("inventory", key);
 	}
 	
 	/*
@@ -2821,8 +2790,31 @@ bool enable_object_mute()
 	else
 	{
 		// Just a regular object
-		return LLSelectMgr::getInstance()->getSelection()->
-			contains( object, SELECT_ALL_TES );
+		return LLSelectMgr::getInstance()->getSelection()->contains( object, SELECT_ALL_TES ) &&
+			   !LLMuteList::getInstance()->isMuted(object->getID());
+	}
+}
+
+bool enable_object_unmute()
+{
+	LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
+	if (!object) return false;
+
+	LLVOAvatar* avatar = find_avatar_from_object(object); 
+	if (avatar)
+	{
+		// It's an avatar
+		LLNameValue *lastname = avatar->getNVPair("LastName");
+		bool is_linden =
+			lastname && !LLStringUtil::compareStrings(lastname->getString(), "Linden");
+		bool is_self = avatar->isSelf();
+		return !is_linden && !is_self;
+	}
+	else
+	{
+		// Just a regular object
+		return LLSelectMgr::getInstance()->getSelection()->contains( object, SELECT_ALL_TES ) &&
+			   LLMuteList::getInstance()->isMuted(object->getID());;
 	}
 }
 
@@ -3158,6 +3150,12 @@ void handle_avatar_eject(const LLSD& avatar_id)
 		}
 }
 
+bool my_profile_visible()
+{
+	LLFloater* floaterp = LLAvatarActions::getProfileFloater(gAgentID);
+	return floaterp && floaterp->isInVisibleChain();
+}
+
 bool enable_freeze_eject(const LLSD& avatar_id)
 {
 	// Use avatar_id if available, otherwise default to right-click avatar
@@ -3392,15 +3390,6 @@ bool enable_sitdown_self()
     return isAgentAvatarValid() && !gAgentAvatarp->isSitting() && !gAgent.getFlying();
 }
 
-// Used from the login screen to aid in UI work on side tray
-void handle_show_side_tray()
-{
-	LLSideTray* side_tray = LLSideTray::getInstance();
-	LLView* root = gViewerWindow->getRootView();
-	// automatically removes and re-adds if there already
-	root->addChild(side_tray);
-}
-
 // Toggle one of "People" panel tabs in side tray.
 class LLTogglePanelPeopleTab : public view_listener_t
 {
@@ -3411,21 +3400,11 @@ class LLTogglePanelPeopleTab : public view_listener_t
 		LLSD param;
 		param["people_panel_tab_name"] = panel_name;
 
-		static LLPanel* friends_panel = NULL;
-		static LLPanel* groups_panel = NULL;
-		static LLPanel* nearby_panel = NULL;
-
-		if (panel_name == "friends_panel")
-		{
-			return togglePeoplePanel(friends_panel, panel_name, param);
-		}
-		else if (panel_name == "groups_panel")
+		if (   panel_name == "friends_panel"
+			|| panel_name == "groups_panel"
+			|| panel_name == "nearby_panel")
 		{
-			return togglePeoplePanel(groups_panel, panel_name, param);
-		}
-		else if (panel_name == "nearby_panel")
-		{
-			return togglePeoplePanel(nearby_panel, panel_name, param);
+			return togglePeoplePanel(panel_name, param);
 		}
 		else
 		{
@@ -3433,16 +3412,20 @@ class LLTogglePanelPeopleTab : public view_listener_t
 		}
 	}
 
-	static bool togglePeoplePanel(LLPanel* &panel, const std::string& panel_name, const LLSD& param)
+	static bool togglePeoplePanel(const std::string& panel_name, const LLSD& param)
 	{
+		LLPanel	*panel = LLFloaterSidePanelContainer::getPanel("people", panel_name);
 		if(!panel)
+			return false;
+
+		if (panel->isInVisibleChain())
 		{
-			panel = LLSideTray::getInstance()->getPanel(panel_name);
-			if(!panel)
-				return false;
+			LLFloaterReg::hideInstance("people");
+		}
+		else
+		{
+			LLFloaterSidePanelContainer::showPanel("people", "panel_people", param) ;
 		}
-
-		LLSideTray::getInstance()->togglePanel(panel, "panel_people", param);
 
 		return true;
 	}
@@ -3757,7 +3740,7 @@ void handle_reset_view()
 	if (gAgentCamera.cameraCustomizeAvatar())
 	{
 		// switching to outfit selector should automagically save any currently edited wearable
-		LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "my_outfits"));
+		LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "my_outfits"));
 	}
 
 	gAgentCamera.switchCameraPreset(CAMERA_PRESET_REAR_VIEW);
@@ -3822,6 +3805,43 @@ class LLViewDefaultUISize : public view_listener_t
 	}
 };
 
+class LLViewToggleUI : public view_listener_t
+{
+	bool handleEvent(const LLSD& userdata)
+	{
+		LLNotification::Params params("ConfirmHideUI");
+		params.functor.function(boost::bind(&LLViewToggleUI::confirm, this, _1, _2));
+		LLSD substitutions;
+#if LL_DARWIN
+		substitutions["SHORTCUT"] = "Cmd+Shift+U";
+#else
+		substitutions["SHORTCUT"] = "Ctrl+Shift+U";
+#endif
+		params.substitutions = substitutions;
+		if (gViewerWindow->getUIVisibility())
+		{
+			// hiding, so show notification
+			LLNotifications::instance().add(params);
+		}
+		else
+		{
+			LLNotifications::instance().forceResponse(params, 0);
+		}
+
+		return true;
+	}
+
+	void confirm(const LLSD& notification, const LLSD& response)
+	{
+		S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+
+		if (option == 0) // OK
+		{
+			gViewerWindow->setUIVisibility(!gViewerWindow->getUIVisibility());
+		}
+	}
+};
+
 class LLEditDuplicate : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
@@ -4539,6 +4559,13 @@ bool tools_visible_take_object()
 	return !is_selection_buy_not_take();
 }
 
+bool enable_how_to_visible(const LLSD& param)
+{
+	LLFloaterWebContent::Params p;
+	p.target = "__help_how_to";
+	return LLFloaterReg::instanceVisible("how_to", p);
+}
+
 class LLToolsEnableBuyOrTake : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
@@ -5324,7 +5351,7 @@ class LLWorldCreateLandmark : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
 	{
-		LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "create_landmark"));
+		LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "create_landmark"));
 
 		return true;
 	}
@@ -5334,7 +5361,7 @@ class LLWorldPlaceProfile : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
 	{
-		LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "agent"));
+		LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "agent"));
 
 		return true;
 	}
@@ -5430,6 +5457,34 @@ class LLAvatarAddFriend : public view_listener_t
 	}
 };
 
+
+class LLAvatarToggleMyProfile : public view_listener_t
+{
+	bool handleEvent(const LLSD& userdata)
+	{
+		LLFloater* instance = LLAvatarActions::getProfileFloater(gAgent.getID());
+		if (LLFloater::isMinimized(instance))
+		{
+			instance->setMinimized(FALSE);
+			instance->setFocus(TRUE);
+		}
+		else if (!LLFloater::isShown(instance))
+		{
+			LLAvatarActions::showProfile(gAgent.getID());
+		}
+		else if (!instance->hasFocus() && !instance->getIsChrome())
+		{
+			instance->setFocus(TRUE);
+		}
+		else
+		{
+			instance->closeFloater();
+		}
+		return true;
+	}
+};
+
+
 class LLAvatarAddContact : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
@@ -5575,22 +5630,22 @@ void handle_viewer_disable_message_log(void*)
 
 void handle_customize_avatar()
 {
-	LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "my_outfits"));
+	LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "my_outfits"));
 }
 
 void handle_edit_outfit()
 {
-	LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+	LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
 }
 
 void handle_edit_shape()
 {
-	LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_shape"));
+	LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_shape"));
 }
 
 void handle_edit_physics()
 {
-	LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_physics"));
+	LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_physics"));
 }
 
 void handle_report_abuse()
@@ -5660,18 +5715,18 @@ class LLShowSidetrayPanel : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
 	{
-		std::string panel_name = userdata.asString();
+		std::string floater_name = userdata.asString();
 
-		LLPanel* panel = LLSideTray::getInstance()->getPanel(panel_name);
+		LLPanel* panel = LLFloaterSidePanelContainer::getPanel(floater_name);
 		if (panel)
 		{
 			if (panel->isInVisibleChain())
 			{
-				LLSideTray::getInstance()->hidePanel(panel_name);
+				LLFloaterReg::getInstance(floater_name)->closeFloater();
 			}
 			else
 			{
-				LLSideTray::getInstance()->showPanel(panel_name);
+				LLFloaterReg::getInstance(floater_name)->openFloater();
 			}
 		}
 		return true;
@@ -5682,9 +5737,9 @@ class LLSidetrayPanelVisible : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
 	{
-		std::string panel_name = userdata.asString();
+		std::string floater_name = userdata.asString();
 		// Toggle the panel
-		if (LLSideTray::getInstance()->isPanelActive(panel_name))
+		if (LLFloaterReg::getInstance(floater_name)->isInVisibleChain())
 		{
 			return true;
 		}
@@ -6870,6 +6925,22 @@ class LLToolsEnableSaveToObjectInventory : public view_listener_t
 	}
 };
 
+class LLToggleHowTo : public view_listener_t
+{
+	bool handleEvent(const LLSD& userdata)
+	{
+		LLFloaterWebContent::Params p;
+		std::string url = gSavedSettings.getString("HowToHelpURL");
+		p.url = LLWeb::expandURLSubstitutions(url, LLSD());
+		p.show_chrome = false;
+		p.target = "__help_how_to";
+		p.show_page_title = false;
+		p.preferred_media_size = LLRect(0, 460, 335, 0);
+
+		LLFloaterReg::toggleInstanceOrBringToFront("how_to", p);
+		return true;
+	}
+};
 
 class LLViewEnableMouselook : public view_listener_t
 {
@@ -7289,7 +7360,7 @@ void handle_web_browser_test(const LLSD& param)
 void handle_web_content_test(const LLSD& param)
 {
 	std::string url = param.asString();
-	LLWeb::loadWebURLInternal(url);
+	LLWeb::loadURLInternal(url);
 }
 
 void handle_buy_currency_test(void*)
@@ -7660,7 +7731,14 @@ class LLWorldEnvSettings : public view_listener_t
 		}
 		else
 		{
-			LLEnvManagerNew::instance().setUseDayCycle(LLEnvManagerNew::instance().getDayCycleName());
+			LLEnvManagerNew &envmgr = LLEnvManagerNew::instance();
+			// reset all environmental settings to track the region defaults, make this reset 'sticky' like the other sun settings.
+			bool use_fixed_sky = false;
+			bool use_region_settings = true;
+			envmgr.setUserPrefs(envmgr.getWaterPresetName(),
+					    envmgr.getSkyPresetName(),
+					    envmgr.getDayCycleName(),
+					    use_fixed_sky, use_region_settings);
 		}
 
 		return true;
@@ -7762,24 +7840,6 @@ class LLWorldPostProcess : public view_listener_t
 	}
 };
 
-class LLWorldToggleMovementControls : public view_listener_t
-{
-	bool handleEvent(const LLSD& userdata)
-	{
-		LLBottomTray::getInstance()->toggleMovementControls();
-		return true;
-	}
-};
-
-class LLWorldToggleCameraControls : public view_listener_t
-{
-	bool handleEvent(const LLSD& userdata)
-	{
-		LLBottomTray::getInstance()->toggleCameraControls();
-		return true;
-	}
-};
-
 void handle_flush_name_caches()
 {
 	// Toggle display names on and off to flush
@@ -7823,55 +7883,6 @@ class LLToggleUIHints : public view_listener_t
 	}
 };
 
-class LLCheckSessionsSettings : public view_listener_t
-{
-	bool handleEvent(const LLSD& userdata)
-	{
-		std::string expected = userdata.asString();
-		return gSavedSettings.getString("SessionSettingsFile") == expected;
-	}
-};
-
-class LLChangeMode : public view_listener_t
-{
-	bool handleEvent(const LLSD& userdata)
-	{
-		std::string mode = userdata.asString();
-		if (mode == "basic")
-		{
-			if (gSavedSettings.getString("SessionSettingsFile") != "settings_minimal.xml")
-			{
-				LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(onModeChangeConfirm, "settings_minimal.xml", _1, _2));
-			}
-			return true;
-		}
-		else if (mode == "advanced")
-		{
-			if (gSavedSettings.getString("SessionSettingsFile") != "")
-			{
-				LLNotificationsUtil::add("ModeChange", LLSD(), LLSD(), boost::bind(onModeChangeConfirm, "", _1, _2));
-			}
-			return true;
-		}
-		return false;
-	}	
-	
-	static void onModeChangeConfirm(const std::string& new_session_settings_file, const LLSD& notification, const LLSD& response)
-	{
-		S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
-		switch (option)
-		{
-		case 0:
-			gSavedSettings.getControl("SessionSettingsFile")->set(new_session_settings_file);
-			LLAppViewer::instance()->requestQuit();
-			break;
-		case 1:
-		default:
-			break;
-		}
-	}
-};
-
 void LLUploadCostCalculator::calculateCost()
 {
 	S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload();
@@ -7978,9 +7989,17 @@ void initialize_menus()
 
 	view_listener_t::addEnable(new LLUploadCostCalculator(), "Upload.CalculateCosts");
 
+
+	commit.add("Inventory.NewWindow", boost::bind(&LLFloaterInventory::showAgentInventory));
+
 	// Agent
 	commit.add("Agent.toggleFlying", boost::bind(&LLAgent::toggleFlying));
 	enable.add("Agent.enableFlying", boost::bind(&LLAgent::enableFlying));
+	commit.add("Agent.PressMicrophone", boost::bind(&LLAgent::pressMicrophone, _2));
+	commit.add("Agent.ReleaseMicrophone", boost::bind(&LLAgent::releaseMicrophone, _2));
+	commit.add("Agent.ToggleMicrophone", boost::bind(&LLAgent::toggleMicrophone, _2));
+	enable.add("Agent.IsMicrophoneOn", boost::bind(&LLAgent::isMicrophoneOn, _2));
+	enable.add("Agent.IsActionAllowed", boost::bind(&LLAgent::isActionAllowed, _2));
 
 	// File menu
 	init_menu_file();
@@ -8007,6 +8026,7 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLZoomer(1/1.2f), "View.ZoomIn");
 	view_listener_t::addMenu(new LLZoomer(DEFAULT_FIELD_OF_VIEW, false), "View.ZoomDefault");
 	view_listener_t::addMenu(new LLViewDefaultUISize(), "View.DefaultUISize");
+	view_listener_t::addMenu(new LLViewToggleUI(), "View.ToggleUI");
 
 	view_listener_t::addMenu(new LLViewEnableMouselook(), "View.EnableMouselook");
 	view_listener_t::addMenu(new LLViewEnableJoystickFlycam(), "View.EnableJoystickFlycam");
@@ -8022,7 +8042,6 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLAdvancedAgentFlyingInfo(), "Agent.getFlying");
 	
 	// World menu
-	commit.add("World.Chat", boost::bind(&handle_chat, (void*)NULL));
 	view_listener_t::addMenu(new LLWorldAlwaysRun(), "World.AlwaysRun");
 	view_listener_t::addMenu(new LLWorldCreateLandmark(), "World.CreateLandmark");
 	view_listener_t::addMenu(new LLWorldPlaceProfile(), "World.PlaceProfile");
@@ -8043,9 +8062,6 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLWorldEnableEnvPreset(), "World.EnableEnvPreset");
 	view_listener_t::addMenu(new LLWorldPostProcess(), "World.PostProcess");
 
-	view_listener_t::addMenu(new LLWorldToggleMovementControls(), "World.Toggle.MovementControls");
-	view_listener_t::addMenu(new LLWorldToggleCameraControls(), "World.Toggle.CameraControls");
-
 	// Tools menu
 	view_listener_t::addMenu(new LLToolsSelectTool(), "Tools.SelectTool");
 	view_listener_t::addMenu(new LLToolsSelectOnlyMyObjects(), "Tools.SelectOnlyMyObjects");
@@ -8082,6 +8098,8 @@ void initialize_menus()
 
 	// Help menu
 	// most items use the ShowFloater method
+	view_listener_t::addMenu(new LLToggleHowTo(), "Help.ToggleHowTo");
+	enable.add("Help.HowToVisible", boost::bind(&enable_how_to_visible, _2));
 
 	// Advanced menu
 	view_listener_t::addMenu(new LLAdvancedToggleConsole(), "Advanced.ToggleConsole");
@@ -8119,7 +8137,6 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLAdvancedCheckRandomizeFramerate(), "Advanced.CheckRandomizeFramerate");
 	view_listener_t::addMenu(new LLAdvancedTogglePeriodicSlowFrame(), "Advanced.TogglePeriodicSlowFrame");
 	view_listener_t::addMenu(new LLAdvancedCheckPeriodicSlowFrame(), "Advanced.CheckPeriodicSlowFrame");
-	view_listener_t::addMenu(new LLAdvancedVectorizePerfTest(), "Advanced.VectorizePerfTest");
 	view_listener_t::addMenu(new LLAdvancedToggleFrameTest(), "Advanced.ToggleFrameTest");
 	view_listener_t::addMenu(new LLAdvancedCheckFrameTest(), "Advanced.CheckFrameTest");
 	view_listener_t::addMenu(new LLAdvancedHandleAttachedLightParticles(), "Advanced.HandleAttachedLightParticles");
@@ -8160,7 +8177,6 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLAdvancedCheckDebugKeys(), "Advanced.CheckDebugKeys");
 	view_listener_t::addMenu(new LLAdvancedToggleDebugWindowProc(), "Advanced.ToggleDebugWindowProc");
 	view_listener_t::addMenu(new LLAdvancedCheckDebugWindowProc(), "Advanced.CheckDebugWindowProc");
-	commit.add("Advanced.ShowSideTray", boost::bind(&handle_show_side_tray));
 
 	// Advanced > XUI
 	commit.add("Advanced.ReloadColorSettings", boost::bind(&LLUIColorTable::loadFromSettings, LLUIColorTable::getInstance()));
@@ -8230,6 +8246,9 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLAdvancedRequestAdminStatus(), "Advanced.RequestAdminStatus");
 	view_listener_t::addMenu(new LLAdvancedLeaveAdminStatus(), "Advanced.LeaveAdminStatus");
 
+	// Develop >Set logging level
+	view_listener_t::addMenu(new LLDevelopCheckLoggingLevel(), "Develop.CheckLoggingLevel");
+	view_listener_t::addMenu(new LLDevelopSetLoggingLevel(), "Develop.SetLoggingLevel");
 
 	// Admin >Object
 	view_listener_t::addMenu(new LLAdminForceTakeCopy(), "Admin.ForceTakeCopy");
@@ -8275,6 +8294,10 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLAvatarCall(), "Avatar.Call");
 	enable.add("Avatar.EnableCall", boost::bind(&LLAvatarActions::canCall));
 	view_listener_t::addMenu(new LLAvatarReportAbuse(), "Avatar.ReportAbuse");
+	view_listener_t::addMenu(new LLAvatarToggleMyProfile(), "Avatar.ToggleMyProfile");
+	enable.add("Avatar.IsMyProfileOpen", boost::bind(&my_profile_visible));
+
+	commit.add("Avatar.OpenMarketplace", boost::bind(&LLWeb::loadURLExternal, gSavedSettings.getString("MarketplaceURL")));
 	
 	view_listener_t::addMenu(new LLAvatarEnableAddFriend(), "Avatar.EnableAddFriend");
 	enable.add("Avatar.EnableFreezeEject", boost::bind(&enable_freeze_eject, _2));
@@ -8312,6 +8335,7 @@ void initialize_menus()
 
 	enable.add("Avatar.EnableMute", boost::bind(&enable_object_mute));
 	enable.add("Object.EnableMute", boost::bind(&enable_object_mute));
+	enable.add("Object.EnableUnmute", boost::bind(&enable_object_unmute));
 	enable.add("Object.EnableBuy", boost::bind(&enable_buy_object));
 	commit.add("Object.ZoomIn", boost::bind(&handle_look_at_selection, "zoom"));
 
@@ -8347,6 +8371,8 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLGoToObject(), "GoToObject");
 	commit.add("PayObject", boost::bind(&handle_give_money_dialog));
 
+	commit.add("Inventory.NewWindow", boost::bind(&LLFloaterInventory::showAgentInventory));
+
 	enable.add("EnablePayObject", boost::bind(&enable_pay_object));
 	enable.add("EnablePayAvatar", boost::bind(&enable_pay_avatar));
 	enable.add("EnableEdit", boost::bind(&enable_object_edit));
@@ -8359,11 +8385,5 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLSomethingSelectedNoHUD(), "SomethingSelectedNoHUD");
 	view_listener_t::addMenu(new LLEditableSelected(), "EditableSelected");
 	view_listener_t::addMenu(new LLEditableSelectedMono(), "EditableSelectedMono");
-
 	view_listener_t::addMenu(new LLToggleUIHints(), "ToggleUIHints");
-	view_listener_t::addMenu(new LLCheckSessionsSettings(), "CheckSessionSettings");
-	view_listener_t::addMenu(new LLChangeMode(), "ChangeMode");
-
-	commit.add("Destination.show", boost::bind(&toggle_destination_and_avatar_picker, 0));
-	commit.add("Avatar.show", boost::bind(&toggle_destination_and_avatar_picker, 1));
 }
diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h
index b4e239b0cd76daf17ae398dac083aafbf6df0f25..87cb4efbc44fd2411f550bd76b320d8af6518773 100644
--- a/indra/newview/llviewermenu.h
+++ b/indra/newview/llviewermenu.h
@@ -126,8 +126,6 @@ bool enable_pay_object();
 bool enable_buy_object();
 bool handle_go_to();
 
-void toggle_destination_and_avatar_picker(const LLSD& show);
-
 // Export to XML or Collada
 void handle_export_selected( void * );
 
diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp
index 8139f7deda420d6d63ee616d306b634a5164409c..7e830e14bf2b0d8ea5d4b9ea10003dc58e334478 100644
--- a/indra/newview/llviewermenufile.cpp
+++ b/indra/newview/llviewermenufile.cpp
@@ -149,7 +149,7 @@ void LLFilePickerThread::run()
 //static
 void LLFilePickerThread::initClass()
 {
-	sMutex = new LLMutex();
+	sMutex = new LLMutex(NULL);
 }
 
 //static
@@ -528,23 +528,7 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
 		{
 			gViewerWindow->playSnapshotAnimAndSound();
 			
-			LLPointer<LLImageFormatted> formatted;
-			switch(LLFloaterSnapshot::ESnapshotFormat(gSavedSettings.getS32("SnapshotFormat")))
-			{
-			  case LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG:
-				formatted = new LLImageJPEG(gSavedSettings.getS32("SnapshotQuality"));
-				break;
-			  case LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG:
-				formatted = new LLImagePNG;
-				break;
-			  case LLFloaterSnapshot::SNAPSHOT_FORMAT_BMP: 
-				formatted = new LLImageBMP;
-				break;
-			  default: 
-				llwarns << "Unknown Local Snapshot format" << llendl;
-				return true;
-			}
-
+			LLPointer<LLImageFormatted> formatted = new LLImagePNG;
 			formatted->enableOverSize() ;
 			formatted->encode(raw, 0);
 			formatted->disableOverSize() ;
@@ -816,7 +800,8 @@ LLUUID upload_new_resource(
 		uuid = tid.makeAssetID(gAgent.getSecureSessionID());
 		// copy this file into the vfs for upload
 		S32 file_size;
-		LLAPRFile infile(filename, LL_APR_RB, &file_size);
+		LLAPRFile infile ;
+		infile.open(filename, LL_APR_RB, NULL, &file_size);
 		if (infile.getFileHandle())
 		{
 			LLVFile file(gVFS, uuid, asset_type, LLVFile::WRITE);
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
old mode 100644
new mode 100755
index 6435904feed196fcf3b30f98e38bb95f9f7d878c..3c6770df43fd84747e6f904f473b4ae7cce1b9e6
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -59,8 +59,9 @@
 #include "llfloaterland.h"
 #include "llfloaterregioninfo.h"
 #include "llfloaterlandholdings.h"
-#include "llfloaterpostcard.h"
 #include "llfloaterpreference.h"
+#include "llfloatersidepanelcontainer.h"
+#include "llfloatersnapshot.h"
 #include "llhudeffecttrail.h"
 #include "llhudmanager.h"
 #include "llinventoryfunctions.h"
@@ -73,7 +74,6 @@
 #include "llrecentpeople.h"
 #include "llscriptfloater.h"
 #include "llselectmgr.h"
-#include "llsidetray.h"
 #include "llstartup.h"
 #include "llsky.h"
 #include "llslurl.h"
@@ -1192,9 +1192,7 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam
 						LLInventoryCategory* parent_folder = gInventory.getCategory(item->getParentUUID());
 						if ("inventory_handler" == from_name)
 						{
-							//we have to filter inventory_handler messages to avoid notification displaying
-							LLSideTray::getInstance()->showPanel("panel_places",
-																 LLSD().with("type", "landmark").with("id", item->getUUID()));
+							LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "landmark").with("id", item->getUUID()));
 						}
 						else if("group_offer" == from_name)
 						{
@@ -1203,7 +1201,7 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam
 							LLSD args;
 							args["type"] = "landmark";
 							args["id"] = obj_id;
-							LLSideTray::getInstance()->showPanel("panel_places", args);
+							LLFloaterSidePanelContainer::showPanel("places", args);
 
 							continue;
 						}
@@ -1258,14 +1256,7 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam
 		const BOOL auto_open = 
 			gSavedSettings.getBOOL("ShowInInventory") && // don't open if showininventory is false
 			!from_name.empty(); // don't open if it's not from anyone.
-		LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(auto_open);
-		if(active_panel)
-		{
-			LL_DEBUGS("Messaging") << "Highlighting" << obj_id  << LL_ENDL;
-			LLFocusableElement* focus_ctrl = gFocusMgr.getKeyboardFocus();
-			active_panel->setSelection(obj_id, TAKE_FOCUS_NO);
-			gFocusMgr.setKeyboardFocus(focus_ctrl);
-		}
+		LLInventoryPanel::openInventoryPanelAndSetSelection(auto_open, obj_id);
 	}
 }
 
@@ -1809,8 +1800,11 @@ void LLOfferInfo::initRespondFunctionMap()
 
 void inventory_offer_handler(LLOfferInfo* info)
 {
-	//If muted, don't even go through the messaging stuff.  Just curtail the offer here.
-	if (LLMuteList::getInstance()->isMuted(info->mFromID, info->mFromName))
+	// If muted, don't even go through the messaging stuff.  Just curtail the offer here.
+	// Passing in a null UUID handles the case of where you have muted one of your own objects by_name.
+	// The solution for STORM-1297 seems to handle the cases where the object is owned by someone else.
+	if (LLMuteList::getInstance()->isMuted(info->mFromID, info->mFromName) ||
+		LLMuteList::getInstance()->isMuted(LLUUID::null, info->mFromName))
 	{
 		info->forceResponse(IOR_MUTE);
 		return;
@@ -2190,7 +2184,7 @@ void god_message_name_cb(const LLAvatarName& av_name, LLChat chat, std::string m
 	// Treat like a system message and put in chat history.
 	chat.mText = av_name.getCompleteName() + ": " + message;
 
-	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+	LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
 	if(nearby_chat)
 	{
 		nearby_chat->addMessage(chat);
@@ -2241,6 +2235,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 	{
         name = LLTrans::getString("Unnamed");
 	}
+
+	// Preserve the unaltered name for use in group notice mute checking.
+	std::string original_name = name;
+
 	// IDEVO convert new-style "Resident" names for display
 	name = clean_name_from_im(name, dialog);
 
@@ -2447,6 +2445,26 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 				break;
 			}
 
+			// The group notice packet does not have an AgentID.  Obtain one from the name cache.
+			// If last name is "Resident" strip it out so the cache name lookup works.
+			U32 index = original_name.find(" Resident");
+			if (index != std::string::npos)
+			{
+				original_name = original_name.substr(0, index);
+			}
+			std::string legacy_name = gCacheName->buildLegacyName(original_name);
+			LLUUID agent_id;
+			gCacheName->getUUID(legacy_name, agent_id);
+
+			if (agent_id.isNull())
+			{
+				LL_WARNS("Messaging") << "buildLegacyName returned null while processing " << original_name << LL_ENDL;
+			}
+			else if (LLMuteList::getInstance()->isMuted(agent_id))
+			{
+				break;
+			}
+
 			notice_bin_bucket = (struct notice_bucket_full_t*) &binary_bucket[0];
 			U8 has_inventory = notice_bin_bucket->header.has_inventory;
 			U8 asset_type = notice_bin_bucket->header.asset_type;
@@ -2752,7 +2770,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 
 			// Note: lie to Nearby Chat, pretending that this is NOT an IM, because
 			// IMs from obejcts don't open IM sessions.
-			LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());
+			LLNearbyChat* nearby_chat = LLNearbyChat::getInstance();
 			if(SYSTEM_FROM != name && nearby_chat)
 			{
 				chat.mOwnerID = from_id;
@@ -2836,8 +2854,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
 			else
 			{
 				LLVector3 pos, look_at;
-				U64 region_handle;
-				U8 region_access;
+				U64 region_handle(0);
+				U8 region_access(0);
 				std::string region_info = ll_safe_string((char*)binary_bucket, binary_bucket_size);
 				std::string region_access_str = LLStringUtil::null;
 				std::string region_access_icn = LLStringUtil::null;
@@ -3120,7 +3138,7 @@ public :
 	{
 		// filter out non-interesting responeses
 		if ( !translation.empty()
-			&& (m_toLang != detected_language)
+			&& (mToLang != detected_language)
 			&& (LLStringUtil::compareInsensitive(translation, m_origMesg) != 0) )
 		{
 			m_chat.mText += " (" + translation + ")";
@@ -3129,10 +3147,13 @@ public :
 		LLNotificationsUI::LLNotificationManager::instance().onChat(m_chat, m_toastArgs);
 	}
 
-	void handleFailure()
+	void handleFailure(int status, const std::string& err_msg)
 	{
-		LLTranslate::TranslationReceiver::handleFailure();
-		m_chat.mText += " (?)";
+		llwarns << "Translation failed for mesg " << m_origMesg << " toLang " << mToLang << " fromLang " << mFromLang << llendl;
+
+		std::string msg = LLTrans::getString("TranslationFailed", LLSD().with("[REASON]", err_msg));
+		LLStringUtil::replaceString(msg, "\n", " "); // we want one-line error messages
+		m_chat.mText += " (" + msg + ")";
 
 		LLNotificationsUI::LLNotificationManager::instance().onChat(m_chat, m_toastArgs);
 	}
@@ -3370,7 +3391,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
 			const std::string from_lang = ""; // leave empty to trigger autodetect
 			const std::string to_lang = LLTranslate::getTranslateLanguage();
 
-			LLHTTPClient::ResponderPtr result = ChatTranslationReceiver::build(from_lang, to_lang, mesg, chat, args);
+			LLTranslate::TranslationReceiverPtr result = ChatTranslationReceiver::build(from_lang, to_lang, mesg, chat, args);
 			LLTranslate::translateMessage(result, from_lang, to_lang, mesg);
 		}
 		else
@@ -3641,6 +3662,9 @@ void process_teleport_finish(LLMessageSystem* msg, void**)
 	gCacheName->setUpstream(sim);
 */
 
+	// Make sure we're standing
+	gAgent.standUp();
+
 	// now, use the circuit info to tell simulator about us!
 	LL_INFOS("Messaging") << "process_teleport_finish() Enabling "
 			<< sim_host << " with code " << msg->mOurCircuitCode << LL_ENDL;
@@ -5206,6 +5230,7 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg)
 	BOOL is_dest_group = FALSE;
     S32 amount = 0;
     std::string item_description;
+	BOOL success = FALSE;
 
     msg->getS32("TransactionInfo", "TransactionType", transaction_type);
     msg->getUUID("TransactionInfo", "SourceID", source_id);
@@ -5214,6 +5239,7 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg)
 	msg->getBOOL("TransactionInfo", "IsDestGroup", is_dest_group);
     msg->getS32("TransactionInfo", "Amount", amount);
     msg->getString("TransactionInfo", "ItemDescription", item_description);
+	msg->getBOOL("MoneyData", "TransactionSuccess", success);
     LL_INFOS("Money") << "MoneyBalanceReply source " << source_id 
 		<< " dest " << dest_id
 		<< " type " << transaction_type
@@ -5275,28 +5301,32 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg)
 		{
 			if (dest_id.notNull())
 			{
-				message = LLTrans::getString("you_paid_ldollars", args);
+				message = success ? LLTrans::getString("you_paid_ldollars", args) :
+									LLTrans::getString("you_paid_failure_ldollars", args);
 			}
 			else
 			{
 				// transaction fee to the system, eg, to create a group
-				message = LLTrans::getString("you_paid_ldollars_no_name", args);
+				message = success ? LLTrans::getString("you_paid_ldollars_no_name", args) :
+									LLTrans::getString("you_paid_failure_ldollars_no_name", args);
 			}
 		}
 		else
 		{
 			if (dest_id.notNull())
 			{
-				message = LLTrans::getString("you_paid_ldollars_no_reason", args);
+				message = success ? LLTrans::getString("you_paid_ldollars_no_reason", args) :
+									LLTrans::getString("you_paid_failure_ldollars_no_reason", args);
 			}
 			else
 			{
 				// no target, no reason, you just paid money
-				message = LLTrans::getString("you_paid_ldollars_no_info", args);
+				message = success ? LLTrans::getString("you_paid_ldollars_no_info", args) :
+									LLTrans::getString("you_paid_failure_ldollars_no_info", args);
 			}
 		}
 		final_args["MESSAGE"] = message;
-		notification = "PaymentSent";
+		notification = success ? "PaymentSent" : "PaymentFailure";
 	}
 	else {
 		// ...someone paid you
@@ -6466,7 +6496,7 @@ void process_user_info_reply(LLMessageSystem* msg, void**)
 	msg->getString( "UserData", "DirectoryVisibility", dir_visibility);
 
 	LLFloaterPreference::updateUserInfo(dir_visibility, im_via_email, email);
-	LLFloaterPostcard::updateUserInfo(email);
+	LLFloaterSnapshot::setAgentEmail(email);
 }
 
 
@@ -6801,7 +6831,7 @@ void process_covenant_reply(LLMessageSystem* msg, void**)
 	LLPanelLandCovenant::updateEstateOwnerName(owner_name);
 	LLFloaterBuyLand::updateEstateOwnerName(owner_name);
 
-	LLPanelPlaceProfile* panel = LLSideTray::getInstance()->getPanel<LLPanelPlaceProfile>("panel_place_profile");
+	LLPanelPlaceProfile* panel = LLFloaterSidePanelContainer::getPanel<LLPanelPlaceProfile>("places", "panel_place_profile");
 	if (panel)
 	{
 		panel->updateEstateName(estate_name);
@@ -6935,7 +6965,7 @@ void onCovenantLoadComplete(LLVFS *vfs,
 	LLPanelLandCovenant::updateCovenantText(covenant_text);
 	LLFloaterBuyLand::updateCovenantText(covenant_text, asset_uuid);
 
-	LLPanelPlaceProfile* panel = LLSideTray::getInstance()->getPanel<LLPanelPlaceProfile>("panel_place_profile");
+	LLPanelPlaceProfile* panel = LLFloaterSidePanelContainer::getPanel<LLPanelPlaceProfile>("places", "panel_place_profile");
 	if (panel)
 	{
 		panel->updateCovenantText(covenant_text);
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
old mode 100755
new mode 100644
index d81e67bfe24c5759e40aca409b94eda7e9b099d1..37fb77a10acd799066aec52e2c4b8709e5ddac5a
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -3219,12 +3219,12 @@ F32 LLViewerObject::getLinksetPhysicsCost()
 	return mLinksetPhysicsCost;
 }
 
-F32 LLViewerObject::getStreamingCost(S32* bytes, S32* visible_bytes)
+F32 LLViewerObject::getStreamingCost(S32* bytes, S32* visible_bytes, F32* unscaled_value) const
 {
 	return 0.f;
 }
 
-U32 LLViewerObject::getTriangleCount()
+U32 LLViewerObject::getTriangleCount(S32* vcount) const
 {
 	return 0;
 }
@@ -5520,11 +5520,12 @@ void LLViewerObject::dirtyMesh()
 {
 	if (mDrawable)
 	{
-		LLSpatialGroup* group = mDrawable->getSpatialGroup();
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL);
+		/*LLSpatialGroup* group = mDrawable->getSpatialGroup();
 		if (group)
 		{
 			group->dirtyMesh();
-		}
+		}*/
 	}
 }
 
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index 53e951e483f0fa05a90bc7cce55b67ad1d947ac7..c8152e1539db7e447b8c5664e7d2f349802f733d 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -1,4 +1,4 @@
-/** 
+/**
  * @file llviewerobject.h
  * @brief Description of LLViewerObject class, which is the base class for most objects in the viewer.
  *
@@ -340,8 +340,8 @@ class LLViewerObject : public LLPrimitive, public LLRefCount, public LLGLUpdate
 	
 	virtual void setScale(const LLVector3 &scale, BOOL damped = FALSE);
 
-	virtual F32 getStreamingCost(S32* bytes = NULL, S32* visible_bytes = NULL);
-	virtual U32 getTriangleCount();
+	virtual F32 getStreamingCost(S32* bytes = NULL, S32* visible_bytes = NULL, F32* unscaled_value = NULL) const;
+	virtual U32 getTriangleCount(S32* vcount = NULL) const;
 	virtual U32 getHighLODTriangleCount();
 
 	void setObjectCost(F32 cost);
@@ -811,7 +811,7 @@ class LLAlphaObject : public LLViewerObject
 
 	virtual F32 getPartSize(S32 idx);
 	virtual void getGeometry(S32 idx,
-								LLStrider<LLVector3>& verticesp,
+								LLStrider<LLVector4a>& verticesp,
 								LLStrider<LLVector3>& normalsp, 
 								LLStrider<LLVector2>& texcoordsp,
 								LLStrider<LLColor4U>& colorsp, 
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 8db72da1eec547b45f9374dd77ff49900ccdf340..9db784101d9c3dd8e0aabd8fb927d8f435a0418d 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -67,6 +67,7 @@
 #include "llworld.h"
 #include "roles_constants.h"
 #include "llweb.h"
+#include "llvieweraudio.h"
 
 const F32 PARCEL_COLLISION_DRAW_SECS = 1.f;
 
@@ -113,7 +114,7 @@ LLViewerParcelMgr::LLViewerParcelMgr()
 	mRequestResult(0),
 	mWestSouth(),
 	mEastNorth(),
-	mSelectedDwell(0.f),
+	mSelectedDwell(DWELL_NAN),
 	mAgentParcelSequenceID(-1),
 	mHoverRequestResult(0),
 	mHoverWestSouth(),
@@ -233,7 +234,7 @@ void LLViewerParcelMgr::getDisplayInfo(S32* area_out, S32* claim_out,
 	S32 price = 0;
 	S32 rent = 0;
 	BOOL for_sale = FALSE;
-	F32 dwell = 0.f;
+	F32 dwell = DWELL_NAN;
 
 	if (mSelected)
 	{
@@ -579,7 +580,7 @@ void LLViewerParcelMgr::deselectLand()
 		mCurrentParcel->mBanList.clear();
 		//mCurrentParcel->mRenterList.reset();
 
-		mSelectedDwell = 0.f;
+		mSelectedDwell = DWELL_NAN;
 
 		// invalidate parcel selection so that existing users of this selection can clean up
 		mCurrentParcelSelection->setParcel(NULL);
@@ -1457,6 +1458,8 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
 
 	S32		other_clean_time = 0;
 
+	LLViewerParcelMgr& parcel_mgr = LLViewerParcelMgr::instance();
+
 	msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_RequestResult, request_result );
 	msg->getS32Fast(_PREHASH_ParcelData, _PREHASH_SequenceID, sequence_id );
 
@@ -1472,31 +1475,31 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
 	if (sequence_id == SELECTED_PARCEL_SEQ_ID)
 	{
 		// ...selected parcels report this sequence id
-		LLViewerParcelMgr::getInstance()->mRequestResult = PARCEL_RESULT_SUCCESS;
-		parcel = LLViewerParcelMgr::getInstance()->mCurrentParcel;
+		parcel_mgr.mRequestResult = PARCEL_RESULT_SUCCESS;
+		parcel = parcel_mgr.mCurrentParcel;
 	}
 	else if (sequence_id == HOVERED_PARCEL_SEQ_ID)
 	{
-		LLViewerParcelMgr::getInstance()->mHoverRequestResult = PARCEL_RESULT_SUCCESS;
-		parcel = LLViewerParcelMgr::getInstance()->mHoverParcel;
+		parcel_mgr.mHoverRequestResult = PARCEL_RESULT_SUCCESS;
+		parcel = parcel_mgr.mHoverParcel;
 	}
 	else if (sequence_id == COLLISION_NOT_IN_GROUP_PARCEL_SEQ_ID ||
 			 sequence_id == COLLISION_NOT_ON_LIST_PARCEL_SEQ_ID ||
 			 sequence_id == COLLISION_BANNED_PARCEL_SEQ_ID)
 	{
-		LLViewerParcelMgr::getInstance()->mHoverRequestResult = PARCEL_RESULT_SUCCESS;
-		parcel = LLViewerParcelMgr::getInstance()->mCollisionParcel;
+		parcel_mgr.mHoverRequestResult = PARCEL_RESULT_SUCCESS;
+		parcel = parcel_mgr.mCollisionParcel;
 	}
-	else if (sequence_id == 0 || sequence_id > LLViewerParcelMgr::getInstance()->mAgentParcelSequenceID)
+	else if (sequence_id == 0 || sequence_id > parcel_mgr.mAgentParcelSequenceID)
 	{
 		// new agent parcel
-		LLViewerParcelMgr::getInstance()->mAgentParcelSequenceID = sequence_id;
-		parcel = LLViewerParcelMgr::getInstance()->mAgentParcel;
+		parcel_mgr.mAgentParcelSequenceID = sequence_id;
+		parcel = parcel_mgr.mAgentParcel;
 	}
 	else
 	{
 		llinfos << "out of order agent parcel sequence id " << sequence_id
-			<< " last good " << LLViewerParcelMgr::getInstance()->mAgentParcelSequenceID
+			<< " last good " << parcel_mgr.mAgentParcelSequenceID
 			<< llendl;
 		return;
 	}
@@ -1567,15 +1570,15 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
 		parcel->setRegionDenyAgeUnverifiedOverride(region_deny_age_unverified_override);
 		parcel->unpackMessage(msg);
 
-		if (parcel == LLViewerParcelMgr::getInstance()->mAgentParcel)
+		if (parcel == parcel_mgr.mAgentParcel)
 		{
-			S32 bitmap_size =	LLViewerParcelMgr::getInstance()->mParcelsPerEdge
-								* LLViewerParcelMgr::getInstance()->mParcelsPerEdge
+			S32 bitmap_size =	parcel_mgr.mParcelsPerEdge
+								* parcel_mgr.mParcelsPerEdge
 								/ 8;
 			U8* bitmap = new U8[ bitmap_size ];
 			msg->getBinaryDataFast(_PREHASH_ParcelData, _PREHASH_Bitmap, bitmap, bitmap_size);
 
-			LLViewerParcelMgr::getInstance()->writeAgentParcelFromBitmap(bitmap);
+			parcel_mgr.writeAgentParcelFromBitmap(bitmap);
 			delete[] bitmap;
 
 			// Let interesting parties know about agent parcel change.
@@ -1595,11 +1598,11 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
 	if (sequence_id == SELECTED_PARCEL_SEQ_ID)
 	{
 		// Update selected counts
-		LLViewerParcelMgr::getInstance()->mCurrentParcelSelection->mSelectedSelfCount = self_count;
-		LLViewerParcelMgr::getInstance()->mCurrentParcelSelection->mSelectedOtherCount = other_count;
-		LLViewerParcelMgr::getInstance()->mCurrentParcelSelection->mSelectedPublicCount = public_count;
+		parcel_mgr.mCurrentParcelSelection->mSelectedSelfCount = self_count;
+		parcel_mgr.mCurrentParcelSelection->mSelectedOtherCount = other_count;
+		parcel_mgr.mCurrentParcelSelection->mSelectedPublicCount = public_count;
 
-		LLViewerParcelMgr::getInstance()->mCurrentParcelSelection->mSelectedMultipleOwners =
+		parcel_mgr.mCurrentParcelSelection->mSelectedMultipleOwners =
 							(request_result == PARCEL_RESULT_MULTIPLE);
 
 		// Select the whole parcel
@@ -1610,67 +1613,67 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
 			{
 				// don't muck with the westsouth and eastnorth.
 				// just highlight it
-				LLVector3 west_south = region->getPosRegionFromGlobal(LLViewerParcelMgr::getInstance()->mWestSouth);
-				LLVector3 east_north = region->getPosRegionFromGlobal(LLViewerParcelMgr::getInstance()->mEastNorth);
+				LLVector3 west_south = region->getPosRegionFromGlobal(parcel_mgr.mWestSouth);
+				LLVector3 east_north = region->getPosRegionFromGlobal(parcel_mgr.mEastNorth);
 
-				LLViewerParcelMgr::getInstance()->resetSegments(LLViewerParcelMgr::getInstance()->mHighlightSegments);
-				LLViewerParcelMgr::getInstance()->writeHighlightSegments(
+				parcel_mgr.resetSegments(parcel_mgr.mHighlightSegments);
+				parcel_mgr.writeHighlightSegments(
 								west_south.mV[VX],
 								west_south.mV[VY],
 								east_north.mV[VX],
 								east_north.mV[VY] );
-				LLViewerParcelMgr::getInstance()->mCurrentParcelSelection->mWholeParcelSelected = FALSE;
+				parcel_mgr.mCurrentParcelSelection->mWholeParcelSelected = FALSE;
 			}
 			else if (0 == local_id)
 			{
 				// this is public land, just highlight the selection
-				LLViewerParcelMgr::getInstance()->mWestSouth = region->getPosGlobalFromRegion( aabb_min );
-				LLViewerParcelMgr::getInstance()->mEastNorth = region->getPosGlobalFromRegion( aabb_max );
+				parcel_mgr.mWestSouth = region->getPosGlobalFromRegion( aabb_min );
+				parcel_mgr.mEastNorth = region->getPosGlobalFromRegion( aabb_max );
 
-				LLViewerParcelMgr::getInstance()->resetSegments(LLViewerParcelMgr::getInstance()->mHighlightSegments);
-				LLViewerParcelMgr::getInstance()->writeHighlightSegments(
+				parcel_mgr.resetSegments(parcel_mgr.mHighlightSegments);
+				parcel_mgr.writeHighlightSegments(
 								aabb_min.mV[VX],
 								aabb_min.mV[VY],
 								aabb_max.mV[VX],
 								aabb_max.mV[VY] );
-				LLViewerParcelMgr::getInstance()->mCurrentParcelSelection->mWholeParcelSelected = TRUE;
+				parcel_mgr.mCurrentParcelSelection->mWholeParcelSelected = TRUE;
 			}
 			else
 			{
-				LLViewerParcelMgr::getInstance()->mWestSouth = region->getPosGlobalFromRegion( aabb_min );
-				LLViewerParcelMgr::getInstance()->mEastNorth = region->getPosGlobalFromRegion( aabb_max );
+				parcel_mgr.mWestSouth = region->getPosGlobalFromRegion( aabb_min );
+				parcel_mgr.mEastNorth = region->getPosGlobalFromRegion( aabb_max );
 
 				// Owned land, highlight the boundaries
-				S32 bitmap_size =	LLViewerParcelMgr::getInstance()->mParcelsPerEdge
-									* LLViewerParcelMgr::getInstance()->mParcelsPerEdge
+				S32 bitmap_size =	parcel_mgr.mParcelsPerEdge
+									* parcel_mgr.mParcelsPerEdge
 									/ 8;
 				U8* bitmap = new U8[ bitmap_size ];
 				msg->getBinaryDataFast(_PREHASH_ParcelData, _PREHASH_Bitmap, bitmap, bitmap_size);
 
-				LLViewerParcelMgr::getInstance()->resetSegments(LLViewerParcelMgr::getInstance()->mHighlightSegments);
-				LLViewerParcelMgr::getInstance()->writeSegmentsFromBitmap( bitmap, LLViewerParcelMgr::getInstance()->mHighlightSegments );
+				parcel_mgr.resetSegments(parcel_mgr.mHighlightSegments);
+				parcel_mgr.writeSegmentsFromBitmap( bitmap, parcel_mgr.mHighlightSegments );
 
 				delete[] bitmap;
 				bitmap = NULL;
 
-				LLViewerParcelMgr::getInstance()->mCurrentParcelSelection->mWholeParcelSelected = TRUE;
+				parcel_mgr.mCurrentParcelSelection->mWholeParcelSelected = TRUE;
 			}
 
 			// Request access list information for this land
-			LLViewerParcelMgr::getInstance()->sendParcelAccessListRequest(AL_ACCESS | AL_BAN);
+			parcel_mgr.sendParcelAccessListRequest(AL_ACCESS | AL_BAN);
 
 			// Request the media url filter list for this land
-			LLViewerParcelMgr::getInstance()->requestParcelMediaURLFilter();
+			parcel_mgr.requestParcelMediaURLFilter();
 
 			// Request dwell for this land, if it's not public land.
-			LLViewerParcelMgr::getInstance()->mSelectedDwell = 0.f;
+			parcel_mgr.mSelectedDwell = DWELL_NAN;
 			if (0 != local_id)
 			{
-				LLViewerParcelMgr::getInstance()->sendParcelDwellRequest();
+				parcel_mgr.sendParcelDwellRequest();
 			}
 
-			LLViewerParcelMgr::getInstance()->mSelected = TRUE;
-			LLViewerParcelMgr::getInstance()->notifyObservers();
+			parcel_mgr.mSelected = TRUE;
+			parcel_mgr.notifyObservers();
 		}
 	}
 	else if (sequence_id == COLLISION_NOT_IN_GROUP_PARCEL_SEQ_ID ||
@@ -1678,32 +1681,32 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
 			 sequence_id == COLLISION_BANNED_PARCEL_SEQ_ID)
 	{
 		// We're about to collide with this parcel
-		LLViewerParcelMgr::getInstance()->mRenderCollision = TRUE;
-		LLViewerParcelMgr::getInstance()->mCollisionTimer.reset();
+		parcel_mgr.mRenderCollision = TRUE;
+		parcel_mgr.mCollisionTimer.reset();
 
 		// Differentiate this parcel if we are banned from it.
 		if (sequence_id == COLLISION_BANNED_PARCEL_SEQ_ID)
 		{
-			LLViewerParcelMgr::getInstance()->mCollisionBanned = BA_BANNED;
+			parcel_mgr.mCollisionBanned = BA_BANNED;
 		}
 		else if (sequence_id == COLLISION_NOT_IN_GROUP_PARCEL_SEQ_ID)
 		{
-			LLViewerParcelMgr::getInstance()->mCollisionBanned = BA_NOT_IN_GROUP;
+			parcel_mgr.mCollisionBanned = BA_NOT_IN_GROUP;
 		}
 		else 
 		{
-			LLViewerParcelMgr::getInstance()->mCollisionBanned = BA_NOT_ON_LIST;
+			parcel_mgr.mCollisionBanned = BA_NOT_ON_LIST;
 
 		}
 
-		S32 bitmap_size =	LLViewerParcelMgr::getInstance()->mParcelsPerEdge
-							* LLViewerParcelMgr::getInstance()->mParcelsPerEdge
+		S32 bitmap_size =	parcel_mgr.mParcelsPerEdge
+							* parcel_mgr.mParcelsPerEdge
 							/ 8;
 		U8* bitmap = new U8[ bitmap_size ];
 		msg->getBinaryDataFast(_PREHASH_ParcelData, _PREHASH_Bitmap, bitmap, bitmap_size);
 
-		LLViewerParcelMgr::getInstance()->resetSegments(LLViewerParcelMgr::getInstance()->mCollisionSegments);
-		LLViewerParcelMgr::getInstance()->writeSegmentsFromBitmap( bitmap, LLViewerParcelMgr::getInstance()->mCollisionSegments );
+		parcel_mgr.resetSegments(parcel_mgr.mCollisionSegments);
+		parcel_mgr.writeSegmentsFromBitmap( bitmap, parcel_mgr.mCollisionSegments );
 
 		delete[] bitmap;
 		bitmap = NULL;
@@ -1714,18 +1717,21 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
 		LLViewerRegion *region = LLWorld::getInstance()->getRegion( msg->getSender() );
 		if (region)
 		{
-			LLViewerParcelMgr::getInstance()->mHoverWestSouth = region->getPosGlobalFromRegion( aabb_min );
-			LLViewerParcelMgr::getInstance()->mHoverEastNorth = region->getPosGlobalFromRegion( aabb_max );
+			parcel_mgr.mHoverWestSouth = region->getPosGlobalFromRegion( aabb_min );
+			parcel_mgr.mHoverEastNorth = region->getPosGlobalFromRegion( aabb_max );
 		}
 		else
 		{
-			LLViewerParcelMgr::getInstance()->mHoverWestSouth.clearVec();
-			LLViewerParcelMgr::getInstance()->mHoverEastNorth.clearVec();
+			parcel_mgr.mHoverWestSouth.clearVec();
+			parcel_mgr.mHoverEastNorth.clearVec();
 		}
 	}
 	else
 	{
-		// look for music.
+		// Check for video
+		LLViewerParcelMedia::update(parcel);
+
+		// Then check for music
 		if (gAudiop)
 		{
 			if (parcel)
@@ -1736,46 +1742,34 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
 				std::string music_url = music_url_raw;
 				LLStringUtil::trim(music_url);
 
-				// On entering a new parcel, stop the last stream if the
-				// new parcel has a different music url.  (Empty URL counts
-				// as different.)
-				const std::string& stream_url = gAudiop->getInternetStreamURL();
-
-				if (music_url.empty() || music_url != stream_url)
+				// If there is a new music URL and it's valid, play it.
+				if (music_url.size() > 12)
 				{
-					// URL is different from one currently playing.
-					gAudiop->stopInternetStream();
-
-					// If there is a new music URL and it's valid, play it.
-					if (music_url.size() > 12)
+					if (music_url.substr(0,7) == "http://")
 					{
-						if (music_url.substr(0,7) == "http://")
-						{
-							optionally_start_music(music_url);
-						}
-						else
-						{
-							llinfos << "Stopping parcel music (invalid audio stream URL)" << llendl;
-							// clears the URL 
-							gAudiop->startInternetStream(LLStringUtil::null); 
-						}
+						optionally_start_music(music_url);
 					}
-					else if (!gAudiop->getInternetStreamURL().empty())
+					else
 					{
-						llinfos << "Stopping parcel music (parcel stream URL is empty)" << llendl;
-						gAudiop->startInternetStream(LLStringUtil::null);
+						llinfos << "Stopping parcel music (invalid audio stream URL)" << llendl;
+						// clears the URL 
+						// null value causes fade out
+						LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(LLStringUtil::null);
 					}
 				}
+				else if (!gAudiop->getInternetStreamURL().empty())
+				{
+					llinfos << "Stopping parcel music (parcel stream URL is empty)" << llendl;
+					// null value causes fade out
+					LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(LLStringUtil::null);
+				}
 			}
 			else
 			{
 				// Public land has no music
-				gAudiop->stopInternetStream();
+				LLViewerAudio::getInstance()->stopInternetStreamWithAutoFade();
 			}
 		}//if gAudiop
-
-		// now check for video
-		LLViewerParcelMedia::update( parcel );
 	};
 }
 
@@ -1794,7 +1788,11 @@ void optionally_start_music(const std::string& music_url)
 			 gSavedSettings.getBOOL("MediaTentativeAutoPlay")))
 		{
 			llinfos << "Starting parcel music " << music_url << llendl;
-			gAudiop->startInternetStream(music_url);
+			LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(music_url);
+		}
+		else
+		{
+			LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(LLStringUtil::null);
 		}
 	}
 }
diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h
index 68d8978ea846862d61a3db7d0e371d153006d3b8..cac8d8391cfac364cd59a707112c952a3d6eda7a 100644
--- a/indra/newview/llviewerparcelmgr.h
+++ b/indra/newview/llviewerparcelmgr.h
@@ -43,6 +43,8 @@ class LLParcel;
 class LLViewerTexture;
 class LLViewerRegion;
 
+const F32 DWELL_NAN = -1.0f;	// A dwell having this value will be displayed as Loading...
+
 // Constants for sendLandOwner
 //const U32 NO_NEIGHBOR_JOIN = 0x0;
 //const U32 ALL_NEIGHBOR_JOIN = U32(  NORTH_MASK 
diff --git a/indra/newview/llviewerparceloverlay.cpp b/indra/newview/llviewerparceloverlay.cpp
index e619b89f9b98216ff956fd57b2b03222a83cd545..a0cf2fc803634023f0a9f33dc989a8fa9195b210 100644
--- a/indra/newview/llviewerparceloverlay.cpp
+++ b/indra/newview/llviewerparceloverlay.cpp
@@ -884,14 +884,14 @@ S32 LLViewerParcelOverlay::renderPropertyLines	()
 	// Always fudge a little vertically.
 	pull_toward_camera.mV[VZ] += 0.01f;
 
-	glMatrixMode( GL_MODELVIEW );
-	glPushMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.pushMatrix();
 
 	// Move to appropriate region coords
 	LLVector3 origin = mRegion->getOriginAgent();
-	glTranslatef( origin.mV[VX], origin.mV[VY], origin.mV[VZ] );
+	gGL.translatef( origin.mV[VX], origin.mV[VY], origin.mV[VZ] );
 
-	glTranslatef(pull_toward_camera.mV[VX], pull_toward_camera.mV[VY],
+	gGL.translatef(pull_toward_camera.mV[VX], pull_toward_camera.mV[VY],
 		pull_toward_camera.mV[VZ]);
 
 	// Include +1 because vertices are fenceposts.
@@ -990,7 +990,7 @@ S32 LLViewerParcelOverlay::renderPropertyLines	()
 		
 	}
 
-	glPopMatrix();
+	gGL.popMatrix();
 
 	return drawn;
 }
diff --git a/indra/newview/llviewerprecompiledheaders.h b/indra/newview/llviewerprecompiledheaders.h
index 12f6a0dd1c663cf2079a469a7733ea4c903dd1bd..f738b84bb9a140c058b313891be86b9a17fe55a5 100644
--- a/indra/newview/llviewerprecompiledheaders.h
+++ b/indra/newview/llviewerprecompiledheaders.h
@@ -124,4 +124,7 @@
 // Library includes from llmessage project
 #include "llcachename.h"
 
+// Library includes from llxuixml
+#include "llinitparam.h"
+
 #endif
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index ed943964f9ae61df12cbe58424b05a6c7b5632e1..e3cb985ddb3a35bab24412d0d2a6f5d20f9613b0 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1493,6 +1493,7 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
 	capabilityNames.append("AvatarPickerSearch");
 	capabilityNames.append("ChatSessionRequest");
 	capabilityNames.append("CopyInventoryFromNotecard");
+	capabilityNames.append("CreateInventoryCategory");
 	capabilityNames.append("DispatchRegionInfo");
 	capabilityNames.append("EstateChangeInfo");
 	capabilityNames.append("EventQueueGet");
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 36106752a260338bcfc3c651cd161465152f7279..5de363e03ccf373b87c091cd0b2f69858993c25c 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -32,6 +32,7 @@
 
 #include "llfile.h"
 #include "llviewerwindow.h"
+#include "llwindow.h"
 #include "llviewercontrol.h"
 #include "pipeline.h"
 #include "llworld.h"
@@ -58,6 +59,7 @@ using std::make_pair;
 using std::string;
 
 BOOL				LLViewerShaderMgr::sInitialized = FALSE;
+bool				LLViewerShaderMgr::sSkipReload = false;
 
 LLVector4			gShinyOrigin;
 
@@ -65,15 +67,23 @@ LLVector4			gShinyOrigin;
 LLGLSLShader	gOcclusionProgram;
 LLGLSLShader	gCustomAlphaProgram;
 LLGLSLShader	gGlowCombineProgram;
+LLGLSLShader	gSplatTextureRectProgram;
+LLGLSLShader	gGlowCombineFXAAProgram;
 LLGLSLShader	gTwoTextureAddProgram;
+LLGLSLShader	gOneTextureNoColorProgram;
+LLGLSLShader	gDebugProgram;
+LLGLSLShader	gAlphaMaskProgram;
 
 //object shaders
 LLGLSLShader		gObjectSimpleProgram;
+LLGLSLShader		gObjectPreviewProgram;
 LLGLSLShader		gObjectSimpleWaterProgram;
 LLGLSLShader		gObjectSimpleAlphaMaskProgram;
 LLGLSLShader		gObjectSimpleWaterAlphaMaskProgram;
 LLGLSLShader		gObjectFullbrightProgram;
 LLGLSLShader		gObjectFullbrightWaterProgram;
+LLGLSLShader		gObjectEmissiveProgram;
+LLGLSLShader		gObjectEmissiveWaterProgram;
 LLGLSLShader		gObjectFullbrightAlphaMaskProgram;
 LLGLSLShader		gObjectFullbrightWaterAlphaMaskProgram;
 LLGLSLShader		gObjectFullbrightShinyProgram;
@@ -81,13 +91,23 @@ LLGLSLShader		gObjectFullbrightShinyWaterProgram;
 LLGLSLShader		gObjectShinyProgram;
 LLGLSLShader		gObjectShinyWaterProgram;
 LLGLSLShader		gObjectBumpProgram;
+LLGLSLShader		gTreeProgram;
+LLGLSLShader		gTreeWaterProgram;
+LLGLSLShader		gObjectFullbrightNoColorProgram;
+LLGLSLShader		gObjectFullbrightNoColorWaterProgram;
 
 LLGLSLShader		gObjectSimpleNonIndexedProgram;
+LLGLSLShader		gObjectSimpleNonIndexedTexGenProgram;
+LLGLSLShader		gObjectSimpleNonIndexedTexGenWaterProgram;
 LLGLSLShader		gObjectSimpleNonIndexedWaterProgram;
 LLGLSLShader		gObjectAlphaMaskNonIndexedProgram;
 LLGLSLShader		gObjectAlphaMaskNonIndexedWaterProgram;
+LLGLSLShader		gObjectAlphaMaskNoColorProgram;
+LLGLSLShader		gObjectAlphaMaskNoColorWaterProgram;
 LLGLSLShader		gObjectFullbrightNonIndexedProgram;
 LLGLSLShader		gObjectFullbrightNonIndexedWaterProgram;
+LLGLSLShader		gObjectEmissiveNonIndexedProgram;
+LLGLSLShader		gObjectEmissiveNonIndexedWaterProgram;
 LLGLSLShader		gObjectFullbrightShinyNonIndexedProgram;
 LLGLSLShader		gObjectFullbrightShinyNonIndexedWaterProgram;
 LLGLSLShader		gObjectShinyNonIndexedProgram;
@@ -96,11 +116,13 @@ LLGLSLShader		gObjectShinyNonIndexedWaterProgram;
 //object hardware skinning shaders
 LLGLSLShader		gSkinnedObjectSimpleProgram;
 LLGLSLShader		gSkinnedObjectFullbrightProgram;
+LLGLSLShader		gSkinnedObjectEmissiveProgram;
 LLGLSLShader		gSkinnedObjectFullbrightShinyProgram;
 LLGLSLShader		gSkinnedObjectShinySimpleProgram;
 
 LLGLSLShader		gSkinnedObjectSimpleWaterProgram;
 LLGLSLShader		gSkinnedObjectFullbrightWaterProgram;
+LLGLSLShader		gSkinnedObjectEmissiveWaterProgram;
 LLGLSLShader		gSkinnedObjectFullbrightShinyWaterProgram;
 LLGLSLShader		gSkinnedObjectShinySimpleWaterProgram;
 
@@ -124,6 +146,7 @@ LLGLSLShader		gImpostorProgram;
 LLGLSLShader			gWLSkyProgram;
 LLGLSLShader			gWLCloudProgram;
 
+
 // Effects Shaders
 LLGLSLShader			gGlowProgram;
 LLGLSLShader			gGlowExtractProgram;
@@ -132,18 +155,19 @@ LLGLSLShader			gPostNightVisionProgram;
 
 // Deferred rendering shaders
 LLGLSLShader			gDeferredImpostorProgram;
-LLGLSLShader			gDeferredEdgeProgram;
 LLGLSLShader			gDeferredWaterProgram;
 LLGLSLShader			gDeferredDiffuseProgram;
 LLGLSLShader			gDeferredDiffuseAlphaMaskProgram;
 LLGLSLShader			gDeferredNonIndexedDiffuseProgram;
 LLGLSLShader			gDeferredNonIndexedDiffuseAlphaMaskProgram;
+LLGLSLShader			gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram;
 LLGLSLShader			gDeferredSkinnedDiffuseProgram;
 LLGLSLShader			gDeferredSkinnedBumpProgram;
 LLGLSLShader			gDeferredSkinnedAlphaProgram;
 LLGLSLShader			gDeferredBumpProgram;
 LLGLSLShader			gDeferredTerrainProgram;
 LLGLSLShader			gDeferredTreeProgram;
+LLGLSLShader			gDeferredTreeShadowProgram;
 LLGLSLShader			gDeferredAvatarProgram;
 LLGLSLShader			gDeferredAvatarAlphaProgram;
 LLGLSLShader			gDeferredLightProgram;
@@ -160,25 +184,23 @@ LLGLSLShader			gDeferredAttachmentShadowProgram;
 LLGLSLShader			gDeferredAlphaProgram;
 LLGLSLShader			gDeferredAvatarEyesProgram;
 LLGLSLShader			gDeferredFullbrightProgram;
-LLGLSLShader			gDeferredGIProgram;
-LLGLSLShader			gDeferredGIFinalProgram;
-LLGLSLShader			gDeferredPostGIProgram;
+LLGLSLShader			gDeferredEmissiveProgram;
 LLGLSLShader			gDeferredPostProgram;
+LLGLSLShader			gDeferredCoFProgram;
+LLGLSLShader			gDeferredDoFCombineProgram;
+LLGLSLShader			gFXAAProgram;
 LLGLSLShader			gDeferredPostNoDoFProgram;
 LLGLSLShader			gDeferredWLSkyProgram;
 LLGLSLShader			gDeferredWLCloudProgram;
 LLGLSLShader			gDeferredStarProgram;
-LLGLSLShader			gLuminanceGatherProgram;
-
-
-//current avatar shader parameter pointer
-GLint				gAvatarMatrixParam;
+LLGLSLShader			gNormalMapGenProgram;
 
 LLViewerShaderMgr::LLViewerShaderMgr() :
 	mVertexShaderLevel(SHADER_COUNT, 0),
 	mMaxAvatarShaderLevel(0)
 {	
 	/// Make sure WL Sky is the first program
+	//ONLY shaders that need WL Param management should be added here
 	mShaderList.push_back(&gWLSkyProgram);
 	mShaderList.push_back(&gWLCloudProgram);
 	mShaderList.push_back(&gAvatarProgram);
@@ -187,33 +209,42 @@ LLViewerShaderMgr::LLViewerShaderMgr() :
 	mShaderList.push_back(&gWaterProgram);
 	mShaderList.push_back(&gAvatarEyeballProgram); 
 	mShaderList.push_back(&gObjectSimpleProgram);
+	mShaderList.push_back(&gObjectPreviewProgram);
 	mShaderList.push_back(&gImpostorProgram);
+	mShaderList.push_back(&gObjectFullbrightNoColorProgram);
+	mShaderList.push_back(&gObjectFullbrightNoColorWaterProgram);
 	mShaderList.push_back(&gObjectSimpleAlphaMaskProgram);
 	mShaderList.push_back(&gObjectBumpProgram);
-	mShaderList.push_back(&gUIProgram);
-	mShaderList.push_back(&gCustomAlphaProgram);
-	mShaderList.push_back(&gGlowCombineProgram);
-	mShaderList.push_back(&gTwoTextureAddProgram);
-	mShaderList.push_back(&gSolidColorProgram);
-	mShaderList.push_back(&gOcclusionProgram);
+	mShaderList.push_back(&gObjectEmissiveProgram);
+	mShaderList.push_back(&gObjectEmissiveWaterProgram);
 	mShaderList.push_back(&gObjectFullbrightProgram);
 	mShaderList.push_back(&gObjectFullbrightAlphaMaskProgram);
 	mShaderList.push_back(&gObjectFullbrightShinyProgram);
 	mShaderList.push_back(&gObjectFullbrightShinyWaterProgram);
 	mShaderList.push_back(&gObjectSimpleNonIndexedProgram);
+	mShaderList.push_back(&gObjectSimpleNonIndexedTexGenProgram);
+	mShaderList.push_back(&gObjectSimpleNonIndexedTexGenWaterProgram);
 	mShaderList.push_back(&gObjectSimpleNonIndexedWaterProgram);
 	mShaderList.push_back(&gObjectAlphaMaskNonIndexedProgram);
 	mShaderList.push_back(&gObjectAlphaMaskNonIndexedWaterProgram);
+	mShaderList.push_back(&gObjectAlphaMaskNoColorProgram);
+	mShaderList.push_back(&gObjectAlphaMaskNoColorWaterProgram);
+	mShaderList.push_back(&gTreeProgram);
+	mShaderList.push_back(&gTreeWaterProgram);
 	mShaderList.push_back(&gObjectFullbrightNonIndexedProgram);
 	mShaderList.push_back(&gObjectFullbrightNonIndexedWaterProgram);
+	mShaderList.push_back(&gObjectEmissiveNonIndexedProgram);
+	mShaderList.push_back(&gObjectEmissiveNonIndexedWaterProgram);
 	mShaderList.push_back(&gObjectFullbrightShinyNonIndexedProgram);
 	mShaderList.push_back(&gObjectFullbrightShinyNonIndexedWaterProgram);
 	mShaderList.push_back(&gSkinnedObjectSimpleProgram);
 	mShaderList.push_back(&gSkinnedObjectFullbrightProgram);
+	mShaderList.push_back(&gSkinnedObjectEmissiveProgram);
 	mShaderList.push_back(&gSkinnedObjectFullbrightShinyProgram);
 	mShaderList.push_back(&gSkinnedObjectShinySimpleProgram);
 	mShaderList.push_back(&gSkinnedObjectSimpleWaterProgram);
 	mShaderList.push_back(&gSkinnedObjectFullbrightWaterProgram);
+	mShaderList.push_back(&gSkinnedObjectEmissiveWaterProgram);
 	mShaderList.push_back(&gSkinnedObjectFullbrightShinyWaterProgram);
 	mShaderList.push_back(&gSkinnedObjectShinySimpleWaterProgram);
 	mShaderList.push_back(&gTerrainProgram);
@@ -227,24 +258,16 @@ LLViewerShaderMgr::LLViewerShaderMgr() :
 	mShaderList.push_back(&gObjectShinyNonIndexedWaterProgram);
 	mShaderList.push_back(&gUnderWaterProgram);
 	mShaderList.push_back(&gDeferredSunProgram);
-	mShaderList.push_back(&gDeferredBlurLightProgram);
 	mShaderList.push_back(&gDeferredSoftenProgram);
-	mShaderList.push_back(&gDeferredLightProgram);
-	mShaderList.push_back(&gDeferredMultiLightProgram);
 	mShaderList.push_back(&gDeferredAlphaProgram);
 	mShaderList.push_back(&gDeferredSkinnedAlphaProgram);
 	mShaderList.push_back(&gDeferredFullbrightProgram);
+	mShaderList.push_back(&gDeferredEmissiveProgram);
 	mShaderList.push_back(&gDeferredAvatarEyesProgram);
-	mShaderList.push_back(&gDeferredPostGIProgram);
-	mShaderList.push_back(&gDeferredEdgeProgram);
-	mShaderList.push_back(&gDeferredPostProgram);
-	mShaderList.push_back(&gDeferredGIProgram);
-	mShaderList.push_back(&gDeferredGIFinalProgram);
 	mShaderList.push_back(&gDeferredWaterProgram);
 	mShaderList.push_back(&gDeferredAvatarAlphaProgram);
 	mShaderList.push_back(&gDeferredWLSkyProgram);
 	mShaderList.push_back(&gDeferredWLCloudProgram);
-	mShaderList.push_back(&gDeferredStarProgram);
 }
 
 LLViewerShaderMgr::~LLViewerShaderMgr()
@@ -268,80 +291,13 @@ void LLViewerShaderMgr::initAttribsAndUniforms(void)
 {
 	if (mReservedAttribs.empty())
 	{
-		mReservedAttribs.push_back("materialColor");
-		mReservedAttribs.push_back("specularColor");
-		mReservedAttribs.push_back("binormal");
-		mReservedAttribs.push_back("object_weight");
-
-		mAvatarAttribs.reserve(5);
-		mAvatarAttribs.push_back("weight");
-		mAvatarAttribs.push_back("clothing");
-		mAvatarAttribs.push_back("gWindDir");
-		mAvatarAttribs.push_back("gSinWaveParams");
-		mAvatarAttribs.push_back("gGravity");
+		LLShaderMgr::initAttribsAndUniforms();
 
 		mAvatarUniforms.push_back("matrixPalette");
+		mAvatarUniforms.push_back("gWindDir");
+		mAvatarUniforms.push_back("gSinWaveParams");
+		mAvatarUniforms.push_back("gGravity");
 
-		mReservedUniforms.reserve(24);
-		mReservedUniforms.push_back("diffuseMap");
-		mReservedUniforms.push_back("specularMap");
-		mReservedUniforms.push_back("bumpMap");
-		mReservedUniforms.push_back("environmentMap");
-		mReservedUniforms.push_back("cloude_noise_texture");
-		mReservedUniforms.push_back("fullbright");
-		mReservedUniforms.push_back("lightnorm");
-		mReservedUniforms.push_back("sunlight_color");
-		mReservedUniforms.push_back("ambient");
-		mReservedUniforms.push_back("blue_horizon");
-		mReservedUniforms.push_back("blue_density");
-		mReservedUniforms.push_back("haze_horizon");
-		mReservedUniforms.push_back("haze_density");
-		mReservedUniforms.push_back("cloud_shadow");
-		mReservedUniforms.push_back("density_multiplier");
-		mReservedUniforms.push_back("distance_multiplier");
-		mReservedUniforms.push_back("max_y");
-		mReservedUniforms.push_back("glow");
-		mReservedUniforms.push_back("cloud_color");
-		mReservedUniforms.push_back("cloud_pos_density1");
-		mReservedUniforms.push_back("cloud_pos_density2");
-		mReservedUniforms.push_back("cloud_scale");
-		mReservedUniforms.push_back("gamma");
-		mReservedUniforms.push_back("scene_light_strength");
-
-		mReservedUniforms.push_back("depthMap");
-		mReservedUniforms.push_back("shadowMap0");
-		mReservedUniforms.push_back("shadowMap1");
-		mReservedUniforms.push_back("shadowMap2");
-		mReservedUniforms.push_back("shadowMap3");
-		mReservedUniforms.push_back("shadowMap4");
-		mReservedUniforms.push_back("shadowMap5");
-
-		mReservedUniforms.push_back("normalMap");
-		mReservedUniforms.push_back("positionMap");
-		mReservedUniforms.push_back("diffuseRect");
-		mReservedUniforms.push_back("specularRect");
-		mReservedUniforms.push_back("noiseMap");
-		mReservedUniforms.push_back("lightFunc");
-		mReservedUniforms.push_back("lightMap");
-		mReservedUniforms.push_back("luminanceMap");
-		mReservedUniforms.push_back("giLightMap");
-		mReservedUniforms.push_back("giMip");
-		mReservedUniforms.push_back("edgeMap");
-		mReservedUniforms.push_back("bloomMap");
-		mReservedUniforms.push_back("sunLightMap");
-		mReservedUniforms.push_back("localLightMap");
-		mReservedUniforms.push_back("projectionMap");
-		mReservedUniforms.push_back("diffuseGIMap");
-		mReservedUniforms.push_back("specularGIMap");
-		mReservedUniforms.push_back("normalGIMap");
-		mReservedUniforms.push_back("minpGIMap");
-		mReservedUniforms.push_back("maxpGIMap");
-		mReservedUniforms.push_back("depthGIMap");
-		mReservedUniforms.push_back("lastDiffuseGIMap");
-		mReservedUniforms.push_back("lastNormalGIMap");
-		mReservedUniforms.push_back("lastMinpGIMap");
-		mReservedUniforms.push_back("lastMaxpGIMap");
-					
 		mWLUniforms.push_back("camPosLocal");
 
 		mTerrainUniforms.reserve(5);
@@ -397,17 +353,29 @@ void LLViewerShaderMgr::setShaders()
 	//setShaders might be called redundantly by gSavedSettings, so return on reentrance
 	static bool reentrance = false;
 	
-	if (!gPipeline.mInitialized || !sInitialized || reentrance)
+	if (!gPipeline.mInitialized || !sInitialized || reentrance || sSkipReload)
 	{
 		return;
 	}
 
-	//setup preprocessor definitions
-	LLShaderMgr::instance()->mDefinitions["samples"] = llformat("%d", gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples")));
-	LLShaderMgr::instance()->mDefinitions["NUM_TEX_UNITS"] = llformat("%d", gGLManager.mNumTextureImageUnits);
+	LLGLSLShader::sIndexedTextureChannels = llmax(llmin(gGLManager.mNumTextureImageUnits, (S32) gSavedSettings.getU32("RenderMaxTextureIndex")), 1);
+
+	//NEVER use more than 16 texture channels (work around for prevalent driver bug)
+	LLGLSLShader::sIndexedTextureChannels = llmin(LLGLSLShader::sIndexedTextureChannels, 16);
 
 	reentrance = true;
 
+	if (LLRender::sGLCoreProfile)
+	{  
+		if (!gSavedSettings.getBOOL("VertexShaderEnable"))
+		{ //vertex shaders MUST be enabled to use core profile
+			gSavedSettings.setBOOL("VertexShaderEnable", 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();
 	
@@ -446,6 +414,7 @@ void LLViewerShaderMgr::setShaders()
 	mMaxAvatarShaderLevel = 0;
 
 	LLGLSLShader::sNoFixedFunction = false;
+	LLVertexBuffer::unbind();
 	if (LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable") 
 		&& gSavedSettings.getBOOL("VertexShaderEnable"))
 	{
@@ -466,15 +435,8 @@ void LLViewerShaderMgr::setShaders()
 			gSavedSettings.getBOOL("WindLightUseAtmosShaders"))
 		{
 			if (gSavedSettings.getS32("RenderShadowDetail") > 0)
-			{
-				if (gSavedSettings.getBOOL("RenderDeferredGI"))
-				{ //shadows + gi
-					deferred_class = 3;
-				}
-				else
-				{ //shadows
-					deferred_class = 2;
-				}
+			{ //shadows
+				deferred_class = 2;
 			}
 			else
 			{ //no shadows
@@ -497,11 +459,7 @@ void LLViewerShaderMgr::setShaders()
 			wl_class = 1;
 		}
 
-		if(!gSavedSettings.getBOOL("EnableRippleWater"))
-		{
-			water_class = 0;
-		}
-
+		
 		// Trigger a full rebuild of the fallback skybox / cubemap if we've toggled windlight shaders
 		if (mVertexShaderLevel[SHADER_WINDLIGHT] != wl_class && gSky.mVOSkyp.notNull())
 		{
@@ -633,13 +591,21 @@ void LLViewerShaderMgr::setShaders()
 void LLViewerShaderMgr::unloadShaders()
 {
 	gOcclusionProgram.unload();
+	gDebugProgram.unload();
+	gAlphaMaskProgram.unload();
 	gUIProgram.unload();
 	gCustomAlphaProgram.unload();
 	gGlowCombineProgram.unload();
+	gSplatTextureRectProgram.unload();
+	gGlowCombineFXAAProgram.unload();
 	gTwoTextureAddProgram.unload();
+	gOneTextureNoColorProgram.unload();
 	gSolidColorProgram.unload();
 
+	gObjectFullbrightNoColorProgram.unload();
+	gObjectFullbrightNoColorWaterProgram.unload();
 	gObjectSimpleProgram.unload();
+	gObjectPreviewProgram.unload();
 	gImpostorProgram.unload();
 	gObjectSimpleAlphaMaskProgram.unload();
 	gObjectBumpProgram.unload();
@@ -647,6 +613,8 @@ void LLViewerShaderMgr::unloadShaders()
 	gObjectSimpleWaterAlphaMaskProgram.unload();
 	gObjectFullbrightProgram.unload();
 	gObjectFullbrightWaterProgram.unload();
+	gObjectEmissiveProgram.unload();
+	gObjectEmissiveWaterProgram.unload();
 	gObjectFullbrightAlphaMaskProgram.unload();
 	gObjectFullbrightWaterAlphaMaskProgram.unload();
 
@@ -656,11 +624,19 @@ void LLViewerShaderMgr::unloadShaders()
 	gObjectShinyWaterProgram.unload();
 
 	gObjectSimpleNonIndexedProgram.unload();
+	gObjectSimpleNonIndexedTexGenProgram.unload();
+	gObjectSimpleNonIndexedTexGenWaterProgram.unload();
 	gObjectSimpleNonIndexedWaterProgram.unload();
 	gObjectAlphaMaskNonIndexedProgram.unload();
 	gObjectAlphaMaskNonIndexedWaterProgram.unload();
+	gObjectAlphaMaskNoColorProgram.unload();
+	gObjectAlphaMaskNoColorWaterProgram.unload();
 	gObjectFullbrightNonIndexedProgram.unload();
 	gObjectFullbrightNonIndexedWaterProgram.unload();
+	gObjectEmissiveNonIndexedProgram.unload();
+	gObjectEmissiveNonIndexedWaterProgram.unload();
+	gTreeProgram.unload();
+	gTreeWaterProgram.unload();
 
 	gObjectShinyNonIndexedProgram.unload();
 	gObjectFullbrightShinyNonIndexedProgram.unload();
@@ -669,11 +645,13 @@ void LLViewerShaderMgr::unloadShaders()
 
 	gSkinnedObjectSimpleProgram.unload();
 	gSkinnedObjectFullbrightProgram.unload();
+	gSkinnedObjectEmissiveProgram.unload();
 	gSkinnedObjectFullbrightShinyProgram.unload();
 	gSkinnedObjectShinySimpleProgram.unload();
 	
 	gSkinnedObjectSimpleWaterProgram.unload();
 	gSkinnedObjectFullbrightWaterProgram.unload();
+	gSkinnedObjectEmissiveWaterProgram.unload();
 	gSkinnedObjectFullbrightShinyWaterProgram.unload();
 	gSkinnedObjectShinySimpleWaterProgram.unload();
 	
@@ -699,6 +677,7 @@ void LLViewerShaderMgr::unloadShaders()
 	gDeferredDiffuseProgram.unload();
 	gDeferredDiffuseAlphaMaskProgram.unload();
 	gDeferredNonIndexedDiffuseAlphaMaskProgram.unload();
+	gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.unload();
 	gDeferredNonIndexedDiffuseProgram.unload();
 	gDeferredSkinnedDiffuseProgram.unload();
 	gDeferredSkinnedBumpProgram.unload();
@@ -750,8 +729,8 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
 	// (in order of shader function call depth for reference purposes, deepest level first)
 
 	vector< pair<string, S32> > shaders;
-	shaders.reserve(10);
 	shaders.push_back( make_pair( "windlight/atmosphericsVarsV.glsl",		mVertexShaderLevel[SHADER_WINDLIGHT] ) );
+	shaders.push_back( make_pair( "windlight/atmosphericsVarsWaterV.glsl",		mVertexShaderLevel[SHADER_WINDLIGHT] ) );
 	shaders.push_back( make_pair( "windlight/atmosphericsHelpersV.glsl",	mVertexShaderLevel[SHADER_WINDLIGHT] ) );
 	shaders.push_back( make_pair( "lighting/lightFuncV.glsl",				mVertexShaderLevel[SHADER_LIGHTING] ) );
 	shaders.push_back( make_pair( "lighting/sumLightsV.glsl",				sum_lights_class ) );
@@ -762,6 +741,8 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
 	shaders.push_back( make_pair( "windlight/atmosphericsV.glsl",			mVertexShaderLevel[SHADER_WINDLIGHT] ) );
 	shaders.push_back( make_pair( "avatar/avatarSkinV.glsl",				1 ) );
 	shaders.push_back( make_pair( "avatar/objectSkinV.glsl",				1 ) );
+	shaders.push_back( make_pair( "objects/indexedTextureV.glsl",			1 ) );
+	shaders.push_back( make_pair( "objects/nonindexedTextureV.glsl",		1 ) );
 
 	// We no longer have to bind the shaders to global glhandles, they are automatically added to a map now.
 	for (U32 i = 0; i < shaders.size(); i++)
@@ -777,8 +758,7 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
 	// (in order of shader function call depth for reference purposes, deepest level first)
 
 	shaders.clear();
-	shaders.reserve(13);
-	S32 ch = gGLManager.mNumTextureImageUnits-1;
+	S32 ch = llmax(LLGLSLShader::sIndexedTextureChannels-1, 1);
 
 	if (gGLManager.mGLVersion < 3.1f)
 	{ //force to 1 texture index channel for old drivers
@@ -787,6 +767,7 @@ BOOL LLViewerShaderMgr::loadBasicShaders()
 
 	std::vector<S32> index_channels;
 	index_channels.push_back(-1);	 shaders.push_back( make_pair( "windlight/atmosphericsVarsF.glsl",		mVertexShaderLevel[SHADER_WINDLIGHT] ) );
+	index_channels.push_back(-1);	 shaders.push_back( make_pair( "windlight/atmosphericsVarsWaterF.glsl",		mVertexShaderLevel[SHADER_WINDLIGHT] ) );
 	index_channels.push_back(-1);	 shaders.push_back( make_pair( "windlight/gammaF.glsl",					mVertexShaderLevel[SHADER_WINDLIGHT]) );
 	index_channels.push_back(-1);	 shaders.push_back( make_pair( "windlight/atmosphericsF.glsl",			mVertexShaderLevel[SHADER_WINDLIGHT] ) );
 	index_channels.push_back(-1);	 shaders.push_back( make_pair( "windlight/transportF.glsl",				mVertexShaderLevel[SHADER_WINDLIGHT] ) );	
@@ -844,6 +825,8 @@ BOOL LLViewerShaderMgr::loadShadersEnvironment()
 		gTerrainProgram.mFeatures.calculatesLighting = true;
 		gTerrainProgram.mFeatures.calculatesAtmospherics = true;
 		gTerrainProgram.mFeatures.hasAtmospherics = true;
+		gTerrainProgram.mFeatures.mIndexedTextureChannels = 0;
+		gTerrainProgram.mFeatures.disableTextureIndex = true;
 		gTerrainProgram.mFeatures.hasGamma = true;
 		gTerrainProgram.mShaderFiles.clear();
 		gTerrainProgram.mShaderFiles.push_back(make_pair("environment/terrainV.glsl", GL_VERTEX_SHADER_ARB));
@@ -912,6 +895,8 @@ BOOL LLViewerShaderMgr::loadShadersWater()
 		gTerrainWaterProgram.mFeatures.calculatesAtmospherics = true;
 		gTerrainWaterProgram.mFeatures.hasAtmospherics = true;
 		gTerrainWaterProgram.mFeatures.hasWaterFog = true;
+		gTerrainWaterProgram.mFeatures.mIndexedTextureChannels = 0;
+		gTerrainWaterProgram.mFeatures.disableTextureIndex = true;
 		gTerrainWaterProgram.mShaderFiles.clear();
 		gTerrainWaterProgram.mShaderFiles.push_back(make_pair("environment/terrainV.glsl", GL_VERTEX_SHADER_ARB));
 		gTerrainWaterProgram.mShaderFiles.push_back(make_pair("environment/terrainWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
@@ -950,9 +935,6 @@ BOOL LLViewerShaderMgr::loadShadersEffects()
 {
 	BOOL success = TRUE;
 
-	U32 samples = gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples"));
-	bool multisample = samples > 1 && LLPipeline::sRenderDeferred && gGLManager.mHasTextureMultisample;
-
 	if (mVertexShaderLevel[SHADER_EFFECT] == 0)
 	{
 		gGlowProgram.unload();
@@ -978,21 +960,10 @@ BOOL LLViewerShaderMgr::loadShadersEffects()
 	
 	if (success)
 	{
-		std::string fragment;
-
-		if (multisample)
-		{
-			fragment = "effects/glowExtractMSF.glsl";
-		}
-		else
-		{
-			fragment = "effects/glowExtractF.glsl";
-		}
-
 		gGlowExtractProgram.mName = "Glow Extract Shader (Post)";
 		gGlowExtractProgram.mShaderFiles.clear();
 		gGlowExtractProgram.mShaderFiles.push_back(make_pair("effects/glowExtractV.glsl", GL_VERTEX_SHADER_ARB));
-		gGlowExtractProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+		gGlowExtractProgram.mShaderFiles.push_back(make_pair("effects/glowExtractF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gGlowExtractProgram.mShaderLevel = mVertexShaderLevel[SHADER_EFFECT];
 		success = gGlowExtractProgram.createShader(NULL, &mGlowExtractUniforms);
 		if (!success)
@@ -1001,51 +972,6 @@ BOOL LLViewerShaderMgr::loadShadersEffects()
 		}
 	}
 	
-#if 0
-	// disabling loading of postprocess shaders until we fix
-	// ATI sampler2DRect compatibility.
-	
-	//load Color Filter Shader
-	if (success)
-	{
-		vector<string> shaderUniforms;
-		shaderUniforms.reserve(7);
-		shaderUniforms.push_back("RenderTexture");
-		shaderUniforms.push_back("gamma");
-		shaderUniforms.push_back("brightness");
-		shaderUniforms.push_back("contrast");
-		shaderUniforms.push_back("contrastBase");
-		shaderUniforms.push_back("saturation");
-		shaderUniforms.push_back("lumWeights");
-
-		gPostColorFilterProgram.mName = "Color Filter Shader (Post)";
-		gPostColorFilterProgram.mShaderFiles.clear();
-		gPostColorFilterProgram.mShaderFiles.push_back(make_pair("effects/colorFilterF.glsl", GL_FRAGMENT_SHADER_ARB));
-		gPostColorFilterProgram.mShaderFiles.push_back(make_pair("effects/drawQuadV.glsl", GL_VERTEX_SHADER_ARB));
-		gPostColorFilterProgram.mShaderLevel = mVertexShaderLevel[SHADER_EFFECT];
-		success = gPostColorFilterProgram.createShader(NULL, &shaderUniforms);
-	}
-
-	//load Night Vision Shader
-	if (success)
-	{
-		vector<string> shaderUniforms;
-		shaderUniforms.reserve(5);
-		shaderUniforms.push_back("RenderTexture");
-		shaderUniforms.push_back("NoiseTexture");
-		shaderUniforms.push_back("brightMult");
-		shaderUniforms.push_back("noiseStrength");
-		shaderUniforms.push_back("lumWeights");
-
-		gPostNightVisionProgram.mName = "Night Vision Shader (Post)";
-		gPostNightVisionProgram.mShaderFiles.clear();
-		gPostNightVisionProgram.mShaderFiles.push_back(make_pair("effects/nightVisionF.glsl", GL_FRAGMENT_SHADER_ARB));
-		gPostNightVisionProgram.mShaderFiles.push_back(make_pair("effects/drawQuadV.glsl", GL_VERTEX_SHADER_ARB));
-		gPostNightVisionProgram.mShaderLevel = mVertexShaderLevel[SHADER_EFFECT];
-		success = gPostNightVisionProgram.createShader(NULL, &shaderUniforms);
-	}
-	#endif
-
 	return success;
 
 }
@@ -1055,9 +981,11 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 	if (mVertexShaderLevel[SHADER_DEFERRED] == 0)
 	{
 		gDeferredTreeProgram.unload();
+		gDeferredTreeShadowProgram.unload();
 		gDeferredDiffuseProgram.unload();
 		gDeferredDiffuseAlphaMaskProgram.unload();
 		gDeferredNonIndexedDiffuseAlphaMaskProgram.unload();
+		gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.unload();
 		gDeferredNonIndexedDiffuseProgram.unload();
 		gDeferredSkinnedDiffuseProgram.unload();
 		gDeferredSkinnedBumpProgram.unload();
@@ -1080,34 +1008,29 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		gDeferredAvatarAlphaProgram.unload();
 		gDeferredAlphaProgram.unload();
 		gDeferredFullbrightProgram.unload();
+		gDeferredEmissiveProgram.unload();
 		gDeferredAvatarEyesProgram.unload();
-		gDeferredPostGIProgram.unload();		
-		gDeferredEdgeProgram.unload();		
 		gDeferredPostProgram.unload();		
-		gLuminanceGatherProgram.unload();
-		gDeferredGIProgram.unload();
-		gDeferredGIFinalProgram.unload();
+		gDeferredCoFProgram.unload();		
+		gDeferredDoFCombineProgram.unload();
+		gFXAAProgram.unload();
 		gDeferredWaterProgram.unload();
 		gDeferredWLSkyProgram.unload();
 		gDeferredWLCloudProgram.unload();
 		gDeferredStarProgram.unload();
+		gNormalMapGenProgram.unload();
 		return TRUE;
 	}
 
-	mVertexShaderLevel[SHADER_AVATAR] = 1;
-
 	BOOL success = TRUE;
 
-	U32 samples = gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples"));
-	bool multisample = samples > 1 && gGLManager.mHasTextureMultisample;
-
 	if (success)
 	{
 		gDeferredDiffuseProgram.mName = "Deferred Diffuse Shader";
 		gDeferredDiffuseProgram.mShaderFiles.clear();
 		gDeferredDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER_ARB));
 		gDeferredDiffuseProgram.mShaderFiles.push_back(make_pair("deferred/diffuseIndexedF.glsl", GL_FRAGMENT_SHADER_ARB));
-		gDeferredDiffuseProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits;
+		gDeferredDiffuseProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
 		gDeferredDiffuseProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
 		success = gDeferredDiffuseProgram.createShader(NULL, NULL);
 	}
@@ -1118,7 +1041,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		gDeferredDiffuseAlphaMaskProgram.mShaderFiles.clear();
 		gDeferredDiffuseAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/diffuseV.glsl", GL_VERTEX_SHADER_ARB));
 		gDeferredDiffuseAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/diffuseAlphaMaskIndexedF.glsl", GL_FRAGMENT_SHADER_ARB));
-		gDeferredDiffuseAlphaMaskProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits;
+		gDeferredDiffuseAlphaMaskProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
 		gDeferredDiffuseAlphaMaskProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
 		success = gDeferredDiffuseAlphaMaskProgram.createShader(NULL, NULL);
 	}
@@ -1132,6 +1055,16 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		gDeferredNonIndexedDiffuseAlphaMaskProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
 		success = gDeferredNonIndexedDiffuseAlphaMaskProgram.createShader(NULL, NULL);
 	}
+	
+	if (success)
+	{
+		gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mName = "Deferred Diffuse Non-Indexed Alpha Mask Shader";
+		gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mShaderFiles.clear();
+		gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("deferred/diffuseNoColorV.glsl", GL_VERTEX_SHADER_ARB));
+		gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("deferred/diffuseAlphaMaskNoColorF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
+		success = gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram.createShader(NULL, NULL);
+	}
 
 	if (success)
 	{
@@ -1170,11 +1103,12 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 	{
 		gDeferredSkinnedAlphaProgram.mName = "Deferred Skinned Alpha Shader";
 		gDeferredSkinnedAlphaProgram.mFeatures.hasObjectSkinning = true;
-		gDeferredSkinnedAlphaProgram.mFeatures.calculatesLighting = true;
 		gDeferredSkinnedAlphaProgram.mFeatures.calculatesAtmospherics = true;
 		gDeferredSkinnedAlphaProgram.mFeatures.hasGamma = true;
 		gDeferredSkinnedAlphaProgram.mFeatures.hasAtmospherics = true;
+		gDeferredSkinnedAlphaProgram.mFeatures.calculatesLighting = true;
 		gDeferredSkinnedAlphaProgram.mFeatures.hasLighting = true;
+		gDeferredSkinnedAlphaProgram.mFeatures.isAlphaLighting = true;
 		gDeferredSkinnedAlphaProgram.mFeatures.disableTextureIndex = true;
 		gDeferredSkinnedAlphaProgram.mShaderFiles.clear();
 		gDeferredSkinnedAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaSkinnedV.glsl", GL_VERTEX_SHADER_ARB));
@@ -1203,6 +1137,16 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		success = gDeferredTreeProgram.createShader(NULL, NULL);
 	}
 
+	if (success)
+	{
+		gDeferredTreeShadowProgram.mName = "Deferred Tree Shadow Shader";
+		gDeferredTreeShadowProgram.mShaderFiles.clear();
+		gDeferredTreeShadowProgram.mShaderFiles.push_back(make_pair("deferred/treeShadowV.glsl", GL_VERTEX_SHADER_ARB));
+		gDeferredTreeShadowProgram.mShaderFiles.push_back(make_pair("deferred/treeShadowF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gDeferredTreeShadowProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
+		success = gDeferredTreeShadowProgram.createShader(NULL, NULL);
+	}
+
 	if (success)
 	{
 		gDeferredImpostorProgram.mName = "Deferred Impostor Shader";
@@ -1214,84 +1158,41 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 	}
 
 	if (success)
-	{
-		std::string fragment;
-
-		if (multisample)
-		{
-			fragment = "deferred/pointLightMSF.glsl";
-		}
-		else
-		{
-			fragment = "deferred/pointLightF.glsl";
-		}
-
+	{		
 		gDeferredLightProgram.mName = "Deferred Light Shader";
 		gDeferredLightProgram.mShaderFiles.clear();
 		gDeferredLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightV.glsl", GL_VERTEX_SHADER_ARB));
-		gDeferredLightProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+		gDeferredLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gDeferredLightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
 		success = gDeferredLightProgram.createShader(NULL, NULL);
 	}
 
 	if (success)
 	{
-		std::string fragment;
-		if (multisample)
-		{
-			fragment = "deferred/multiPointLightMSF.glsl";
-		}
-		else
-		{
-			fragment = "deferred/multiPointLightF.glsl";
-		}
-
 		gDeferredMultiLightProgram.mName = "Deferred MultiLight Shader";
 		gDeferredMultiLightProgram.mShaderFiles.clear();
 		gDeferredMultiLightProgram.mShaderFiles.push_back(make_pair("deferred/multiPointLightV.glsl", GL_VERTEX_SHADER_ARB));
-		gDeferredMultiLightProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+		gDeferredMultiLightProgram.mShaderFiles.push_back(make_pair("deferred/multiPointLightF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gDeferredMultiLightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
 		success = gDeferredMultiLightProgram.createShader(NULL, NULL);
 	}
 
 	if (success)
 	{
-		std::string fragment;
-
-		if (multisample)
-		{
-			fragment = "deferred/spotLightMSF.glsl";
-		}
-		else
-		{
-			fragment = "deferred/multiSpotLightF.glsl";
-		}
-
 		gDeferredSpotLightProgram.mName = "Deferred SpotLight Shader";
 		gDeferredSpotLightProgram.mShaderFiles.clear();
 		gDeferredSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightV.glsl", GL_VERTEX_SHADER_ARB));
-		gDeferredSpotLightProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+		gDeferredSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/multiSpotLightF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gDeferredSpotLightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
 		success = gDeferredSpotLightProgram.createShader(NULL, NULL);
 	}
 
 	if (success)
 	{
-		std::string fragment;
-
-		if (multisample)
-		{
-			fragment = "deferred/multiSpotLightMSF.glsl";
-		}
-		else
-		{
-			fragment = "deferred/multiSpotLightF.glsl";
-		}
-
 		gDeferredMultiSpotLightProgram.mName = "Deferred MultiSpotLight Shader";
 		gDeferredMultiSpotLightProgram.mShaderFiles.clear();
 		gDeferredMultiSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/pointLightV.glsl", GL_VERTEX_SHADER_ARB));
-		gDeferredMultiSpotLightProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+		gDeferredMultiSpotLightProgram.mShaderFiles.push_back(make_pair("deferred/multiSpotLightF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gDeferredMultiSpotLightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
 		success = gDeferredMultiSpotLightProgram.createShader(NULL, NULL);
 	}
@@ -1302,25 +1203,11 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 
 		if (gSavedSettings.getBOOL("RenderDeferredSSAO"))
 		{
-			if (multisample)
-			{
-				fragment = "deferred/sunLightSSAOMSF.glsl";
-			}
-			else
-			{
-				fragment = "deferred/sunLightSSAOF.glsl";
-			}
+			fragment = "deferred/sunLightSSAOF.glsl";
 		}
 		else
 		{
-			if (multisample)
-			{
-				fragment = "deferred/sunLightMSF.glsl";
-			}
-			else
-			{
-				fragment = "deferred/sunLightF.glsl";
-			}
+			fragment = "deferred/sunLightF.glsl";
 		}
 
 		gDeferredSunProgram.mName = "Deferred Sun Shader";
@@ -1333,21 +1220,10 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 
 	if (success)
 	{
-		std::string fragment;
-
-		if (multisample)
-		{
-			fragment = "deferred/blurLightMSF.glsl";
-		}
-		else
-		{
-			fragment = "deferred/blurLightF.glsl";
-		}
-
 		gDeferredBlurLightProgram.mName = "Deferred Blur Light Shader";
 		gDeferredBlurLightProgram.mShaderFiles.clear();
 		gDeferredBlurLightProgram.mShaderFiles.push_back(make_pair("deferred/blurLightV.glsl", GL_VERTEX_SHADER_ARB));
-		gDeferredBlurLightProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+		gDeferredBlurLightProgram.mShaderFiles.push_back(make_pair("deferred/blurLightF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gDeferredBlurLightProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
 		success = gDeferredBlurLightProgram.createShader(NULL, NULL);
 	}
@@ -1360,14 +1236,15 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		gDeferredAlphaProgram.mFeatures.hasGamma = true;
 		gDeferredAlphaProgram.mFeatures.hasAtmospherics = true;
 		gDeferredAlphaProgram.mFeatures.hasLighting = true;
+		gDeferredAlphaProgram.mFeatures.isAlphaLighting = true;
 		gDeferredAlphaProgram.mFeatures.disableTextureIndex = true; //hack to disable auto-setup of texture channels
 		if (mVertexShaderLevel[SHADER_DEFERRED] < 1)
 		{
-			gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits;
+			gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
 		}
 		else
 		{ //shave off some texture units for shadow maps
-			gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits - 6;
+			gDeferredAlphaProgram.mFeatures.mIndexedTextureChannels = llmax(LLGLSLShader::sIndexedTextureChannels - 6, 1);
 		}
 			
 		gDeferredAlphaProgram.mShaderFiles.clear();
@@ -1397,7 +1274,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		gDeferredFullbrightProgram.mFeatures.calculatesAtmospherics = true;
 		gDeferredFullbrightProgram.mFeatures.hasGamma = true;
 		gDeferredFullbrightProgram.mFeatures.hasTransport = true;
-		gDeferredFullbrightProgram.mFeatures.mIndexedTextureChannels = gGLManager.mNumTextureImageUnits;
+		gDeferredFullbrightProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
 		gDeferredFullbrightProgram.mShaderFiles.clear();
 		gDeferredFullbrightProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightV.glsl", GL_VERTEX_SHADER_ARB));
 		gDeferredFullbrightProgram.mShaderFiles.push_back(make_pair("deferred/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB));
@@ -1405,6 +1282,20 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		success = gDeferredFullbrightProgram.createShader(NULL, NULL);
 	}
 
+	if (success)
+	{
+		gDeferredEmissiveProgram.mName = "Deferred Emissive Shader";
+		gDeferredEmissiveProgram.mFeatures.calculatesAtmospherics = true;
+		gDeferredEmissiveProgram.mFeatures.hasGamma = true;
+		gDeferredEmissiveProgram.mFeatures.hasTransport = true;
+		gDeferredEmissiveProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
+		gDeferredEmissiveProgram.mShaderFiles.clear();
+		gDeferredEmissiveProgram.mShaderFiles.push_back(make_pair("deferred/emissiveV.glsl", GL_VERTEX_SHADER_ARB));
+		gDeferredEmissiveProgram.mShaderFiles.push_back(make_pair("deferred/emissiveF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gDeferredEmissiveProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
+		success = gDeferredEmissiveProgram.createShader(NULL, NULL);
+	}
+
 	if (success)
 	{
 		// load water shader
@@ -1421,21 +1312,10 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 
 	if (success)
 	{
-		std::string fragment;
-
-		if (multisample)
-		{
-			fragment = "deferred/softenLightMSF.glsl";
-		}
-		else
-		{
-			fragment = "deferred/softenLightF.glsl";
-		}
-
 		gDeferredSoftenProgram.mName = "Deferred Soften Shader";
 		gDeferredSoftenProgram.mShaderFiles.clear();
 		gDeferredSoftenProgram.mShaderFiles.push_back(make_pair("deferred/softenLightV.glsl", GL_VERTEX_SHADER_ARB));
-		gDeferredSoftenProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+		gDeferredSoftenProgram.mShaderFiles.push_back(make_pair("deferred/softenLightF.glsl", GL_FRAGMENT_SHADER_ARB));
 
 		gDeferredSoftenProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
 
@@ -1460,6 +1340,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 	if (success)
 	{
 		gDeferredShadowAlphaMaskProgram.mName = "Deferred Shadow Alpha Mask Shader";
+		gDeferredShadowAlphaMaskProgram.mFeatures.mIndexedTextureChannels = LLGLSLShader::sIndexedTextureChannels;
 		gDeferredShadowAlphaMaskProgram.mShaderFiles.clear();
 		gDeferredShadowAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskV.glsl", GL_VERTEX_SHADER_ARB));
 		gDeferredShadowAlphaMaskProgram.mShaderFiles.push_back(make_pair("deferred/shadowAlphaMaskF.glsl", GL_FRAGMENT_SHADER_ARB));
@@ -1475,7 +1356,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		gDeferredAvatarShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarShadowV.glsl", GL_VERTEX_SHADER_ARB));
 		gDeferredAvatarShadowProgram.mShaderFiles.push_back(make_pair("deferred/avatarShadowF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gDeferredAvatarShadowProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
-		success = gDeferredAvatarShadowProgram.createShader(&mAvatarAttribs, &mAvatarUniforms);
+		success = gDeferredAvatarShadowProgram.createShader(NULL, &mAvatarUniforms);
 	}
 
 	if (success)
@@ -1507,7 +1388,7 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		gDeferredAvatarProgram.mShaderFiles.push_back(make_pair("deferred/avatarV.glsl", GL_VERTEX_SHADER_ARB));
 		gDeferredAvatarProgram.mShaderFiles.push_back(make_pair("deferred/avatarF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gDeferredAvatarProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
-		success = gDeferredAvatarProgram.createShader(&mAvatarAttribs, &mAvatarUniforms);
+		success = gDeferredAvatarProgram.createShader(NULL, &mAvatarUniforms);
 	}
 
 	if (success)
@@ -1519,50 +1400,61 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		gDeferredAvatarAlphaProgram.mFeatures.hasGamma = true;
 		gDeferredAvatarAlphaProgram.mFeatures.hasAtmospherics = true;
 		gDeferredAvatarAlphaProgram.mFeatures.hasLighting = true;
+		gDeferredAvatarAlphaProgram.mFeatures.isAlphaLighting = true;
 		gDeferredAvatarAlphaProgram.mFeatures.disableTextureIndex = true;
 		gDeferredAvatarAlphaProgram.mShaderFiles.clear();
 		gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/avatarAlphaV.glsl", GL_VERTEX_SHADER_ARB));
-		gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaNonIndexedF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gDeferredAvatarAlphaProgram.mShaderFiles.push_back(make_pair("deferred/alphaNonIndexedNoColorF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gDeferredAvatarAlphaProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
-		success = gDeferredAvatarAlphaProgram.createShader(&mAvatarAttribs, &mAvatarUniforms);
+		success = gDeferredAvatarAlphaProgram.createShader(NULL, &mAvatarUniforms);
 	}
 
 	if (success)
 	{
-		std::string fragment;
-		if (multisample)
-		{
-			fragment = "deferred/postDeferredMSF.glsl";
-		}
-		else
-		{
-			fragment = "deferred/postDeferredF.glsl";
-		}
+		gFXAAProgram.mName = "FXAA Shader";
+		gFXAAProgram.mShaderFiles.clear();
+		gFXAAProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB));
+		gFXAAProgram.mShaderFiles.push_back(make_pair("deferred/fxaaF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gFXAAProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
+		success = gFXAAProgram.createShader(NULL, NULL);
+	}
 
+	if (success)
+	{
 		gDeferredPostProgram.mName = "Deferred Post Shader";
 		gDeferredPostProgram.mShaderFiles.clear();
 		gDeferredPostProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB));
-		gDeferredPostProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+		gDeferredPostProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gDeferredPostProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
 		success = gDeferredPostProgram.createShader(NULL, NULL);
 	}
 
 	if (success)
 	{
-		std::string fragment;
-		if (multisample)
-		{
-			fragment = "deferred/postDeferredNoDoFMSF.glsl";
-		}
-		else
-		{
-			fragment = "deferred/postDeferredNoDoFF.glsl";
-		}
+		gDeferredCoFProgram.mName = "Deferred CoF Shader";
+		gDeferredCoFProgram.mShaderFiles.clear();
+		gDeferredCoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB));
+		gDeferredCoFProgram.mShaderFiles.push_back(make_pair("deferred/cofF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gDeferredCoFProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
+		success = gDeferredCoFProgram.createShader(NULL, NULL);
+	}
 
+	if (success)
+	{
+		gDeferredDoFCombineProgram.mName = "Deferred DoFCombine Shader";
+		gDeferredDoFCombineProgram.mShaderFiles.clear();
+		gDeferredDoFCombineProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB));
+		gDeferredDoFCombineProgram.mShaderFiles.push_back(make_pair("deferred/dofCombineF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gDeferredDoFCombineProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
+		success = gDeferredDoFCombineProgram.createShader(NULL, NULL);
+	}
+
+	if (success)
+	{
 		gDeferredPostNoDoFProgram.mName = "Deferred Post Shader";
 		gDeferredPostNoDoFProgram.mShaderFiles.clear();
 		gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredV.glsl", GL_VERTEX_SHADER_ARB));
-		gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
+		gDeferredPostNoDoFProgram.mShaderFiles.push_back(make_pair("deferred/postDeferredNoDoFF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gDeferredPostNoDoFProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
 		success = gDeferredPostNoDoFProgram.createShader(NULL, NULL);
 	}
@@ -1601,70 +1493,15 @@ BOOL LLViewerShaderMgr::loadShadersDeferred()
 		success = gDeferredStarProgram.createShader(NULL, &mWLUniforms);
 	}
 
-	if (mVertexShaderLevel[SHADER_DEFERRED] > 1)
+	if (success)
 	{
-		if (success)
-		{
-			std::string fragment;
-			if (multisample)
-			{
-				fragment = "deferred/edgeMSF.glsl";
-			}
-			else
-			{
-				fragment = "deferred/edgeF.glsl";
-			}
-
-			gDeferredEdgeProgram.mName = "Deferred Edge Shader";
-			gDeferredEdgeProgram.mShaderFiles.clear();
-			gDeferredEdgeProgram.mShaderFiles.push_back(make_pair("deferred/edgeV.glsl", GL_VERTEX_SHADER_ARB));
-			gDeferredEdgeProgram.mShaderFiles.push_back(make_pair(fragment, GL_FRAGMENT_SHADER_ARB));
-			gDeferredEdgeProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
-			success = gDeferredEdgeProgram.createShader(NULL, NULL);
-		}
-	}
-
-	if (mVertexShaderLevel[SHADER_DEFERRED] > 2)
-	{
-		if (success)
-		{
-			gDeferredPostGIProgram.mName = "Deferred Post GI Shader";
-			gDeferredPostGIProgram.mShaderFiles.clear();
-			gDeferredPostGIProgram.mShaderFiles.push_back(make_pair("deferred/postgiV.glsl", GL_VERTEX_SHADER_ARB));
-			gDeferredPostGIProgram.mShaderFiles.push_back(make_pair("deferred/postgiF.glsl", GL_FRAGMENT_SHADER_ARB));
-			gDeferredPostGIProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
-			success = gDeferredPostGIProgram.createShader(NULL, NULL);
-		}
-
-		if (success)
-		{
-			gDeferredGIProgram.mName = "Deferred GI Shader";
-			gDeferredGIProgram.mShaderFiles.clear();
-			gDeferredGIProgram.mShaderFiles.push_back(make_pair("deferred/giV.glsl", GL_VERTEX_SHADER_ARB));
-			gDeferredGIProgram.mShaderFiles.push_back(make_pair("deferred/giF.glsl", GL_FRAGMENT_SHADER_ARB));
-			gDeferredGIProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
-			success = gDeferredGIProgram.createShader(NULL, NULL);
-		}
-
-		if (success)
-		{
-			gDeferredGIFinalProgram.mName = "Deferred GI Final Shader";
-			gDeferredGIFinalProgram.mShaderFiles.clear();
-			gDeferredGIFinalProgram.mShaderFiles.push_back(make_pair("deferred/giFinalV.glsl", GL_VERTEX_SHADER_ARB));
-			gDeferredGIFinalProgram.mShaderFiles.push_back(make_pair("deferred/giFinalF.glsl", GL_FRAGMENT_SHADER_ARB));
-			gDeferredGIFinalProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
-			success = gDeferredGIFinalProgram.createShader(NULL, NULL);
-		}
-
-		if (success)
-		{
-			gLuminanceGatherProgram.mName = "Luminance Gather Shader";
-			gLuminanceGatherProgram.mShaderFiles.clear();
-			gLuminanceGatherProgram.mShaderFiles.push_back(make_pair("deferred/luminanceV.glsl", GL_VERTEX_SHADER_ARB));
-			gLuminanceGatherProgram.mShaderFiles.push_back(make_pair("deferred/luminanceF.glsl", GL_FRAGMENT_SHADER_ARB));
-			gLuminanceGatherProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
-			success = gLuminanceGatherProgram.createShader(NULL, NULL);
-		}
+		gNormalMapGenProgram.mName = "Normal Map Generation Program";
+		gNormalMapGenProgram.mShaderFiles.clear();
+		gNormalMapGenProgram.mShaderFiles.push_back(make_pair("deferred/normgenV.glsl", GL_VERTEX_SHADER_ARB));
+		gNormalMapGenProgram.mShaderFiles.push_back(make_pair("deferred/normgenF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gNormalMapGenProgram.mShaderLevel = mVertexShaderLevel[SHADER_DEFERRED];
+		gNormalMapGenProgram.mShaderGroup = LLGLSLShader::SG_SKY;
+		success = gNormalMapGenProgram.createShader(NULL, NULL);
 	}
 
 	return success;
@@ -1680,12 +1517,17 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 		gObjectFullbrightShinyProgram.unload();
 		gObjectFullbrightShinyWaterProgram.unload();
 		gObjectShinyWaterProgram.unload();
+		gObjectFullbrightNoColorProgram.unload();
+		gObjectFullbrightNoColorWaterProgram.unload();
 		gObjectSimpleProgram.unload();
+		gObjectPreviewProgram.unload();
 		gImpostorProgram.unload();
 		gObjectSimpleAlphaMaskProgram.unload();
 		gObjectBumpProgram.unload();
 		gObjectSimpleWaterProgram.unload();
 		gObjectSimpleWaterAlphaMaskProgram.unload();
+		gObjectEmissiveProgram.unload();
+		gObjectEmissiveWaterProgram.unload();
 		gObjectFullbrightProgram.unload();
 		gObjectFullbrightAlphaMaskProgram.unload();
 		gObjectFullbrightWaterProgram.unload();
@@ -1694,20 +1536,29 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 		gObjectFullbrightShinyNonIndexedProgram.unload();
 		gObjectFullbrightShinyNonIndexedWaterProgram.unload();
 		gObjectShinyNonIndexedWaterProgram.unload();
-		gObjectSimpleNonIndexedProgram.unload();
+		gObjectSimpleNonIndexedTexGenProgram.unload();
+		gObjectSimpleNonIndexedTexGenWaterProgram.unload();
 		gObjectSimpleNonIndexedWaterProgram.unload();
 		gObjectAlphaMaskNonIndexedProgram.unload();
 		gObjectAlphaMaskNonIndexedWaterProgram.unload();
+		gObjectAlphaMaskNoColorProgram.unload();
+		gObjectAlphaMaskNoColorWaterProgram.unload();
 		gObjectFullbrightNonIndexedProgram.unload();
 		gObjectFullbrightNonIndexedWaterProgram.unload();
+		gObjectEmissiveNonIndexedProgram.unload();
+		gObjectEmissiveNonIndexedWaterProgram.unload();
 		gSkinnedObjectSimpleProgram.unload();
 		gSkinnedObjectFullbrightProgram.unload();
+		gSkinnedObjectEmissiveProgram.unload();
 		gSkinnedObjectFullbrightShinyProgram.unload();
 		gSkinnedObjectShinySimpleProgram.unload();
 		gSkinnedObjectSimpleWaterProgram.unload();
 		gSkinnedObjectFullbrightWaterProgram.unload();
+		gSkinnedObjectEmissiveWaterProgram.unload();
 		gSkinnedObjectFullbrightShinyWaterProgram.unload();
 		gSkinnedObjectShinySimpleWaterProgram.unload();
+		gTreeProgram.unload();
+		gTreeWaterProgram.unload();
 	
 		return TRUE;
 	}
@@ -1728,6 +1579,23 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 		success = gObjectSimpleNonIndexedProgram.createShader(NULL, NULL);
 	}
 	
+	if (success)
+	{
+		gObjectSimpleNonIndexedTexGenProgram.mName = "Non indexed tex-gen Shader";
+		gObjectSimpleNonIndexedTexGenProgram.mFeatures.calculatesLighting = true;
+		gObjectSimpleNonIndexedTexGenProgram.mFeatures.calculatesAtmospherics = true;
+		gObjectSimpleNonIndexedTexGenProgram.mFeatures.hasGamma = true;
+		gObjectSimpleNonIndexedTexGenProgram.mFeatures.hasAtmospherics = true;
+		gObjectSimpleNonIndexedTexGenProgram.mFeatures.hasLighting = true;
+		gObjectSimpleNonIndexedTexGenProgram.mFeatures.disableTextureIndex = true;
+		gObjectSimpleNonIndexedTexGenProgram.mShaderFiles.clear();
+		gObjectSimpleNonIndexedTexGenProgram.mShaderFiles.push_back(make_pair("objects/simpleTexGenV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectSimpleNonIndexedTexGenProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gObjectSimpleNonIndexedTexGenProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		success = gObjectSimpleNonIndexedTexGenProgram.createShader(NULL, NULL);
+	}
+	
+
 	if (success)
 	{
 		gObjectSimpleNonIndexedWaterProgram.mName = "Non indexed Water Shader";
@@ -1745,6 +1613,23 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 		success = gObjectSimpleNonIndexedWaterProgram.createShader(NULL, NULL);
 	}
 
+	if (success)
+	{
+		gObjectSimpleNonIndexedTexGenWaterProgram.mName = "Non indexed tex-gen Water Shader";
+		gObjectSimpleNonIndexedTexGenWaterProgram.mFeatures.calculatesLighting = true;
+		gObjectSimpleNonIndexedTexGenWaterProgram.mFeatures.calculatesAtmospherics = true;
+		gObjectSimpleNonIndexedTexGenWaterProgram.mFeatures.hasWaterFog = true;
+		gObjectSimpleNonIndexedTexGenWaterProgram.mFeatures.hasAtmospherics = true;
+		gObjectSimpleNonIndexedTexGenWaterProgram.mFeatures.hasLighting = true;
+		gObjectSimpleNonIndexedTexGenWaterProgram.mFeatures.disableTextureIndex = true;
+		gObjectSimpleNonIndexedTexGenWaterProgram.mShaderFiles.clear();
+		gObjectSimpleNonIndexedTexGenWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleTexGenV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectSimpleNonIndexedTexGenWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gObjectSimpleNonIndexedTexGenWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		gObjectSimpleNonIndexedTexGenWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
+		success = gObjectSimpleNonIndexedTexGenWaterProgram.createShader(NULL, NULL);
+	}
+
 	if (success)
 	{
 		gObjectAlphaMaskNonIndexedProgram.mName = "Non indexed alpha mask Shader";
@@ -1756,7 +1641,7 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 		gObjectAlphaMaskNonIndexedProgram.mFeatures.disableTextureIndex = true;
 		gObjectAlphaMaskNonIndexedProgram.mFeatures.hasAlphaMask = true;
 		gObjectAlphaMaskNonIndexedProgram.mShaderFiles.clear();
-		gObjectAlphaMaskNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectAlphaMaskNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/simpleNonIndexedV.glsl", GL_VERTEX_SHADER_ARB));
 		gObjectAlphaMaskNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gObjectAlphaMaskNonIndexedProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
 		success = gObjectAlphaMaskNonIndexedProgram.createShader(NULL, NULL);
@@ -1773,13 +1658,83 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 		gObjectAlphaMaskNonIndexedWaterProgram.mFeatures.disableTextureIndex = true;
 		gObjectAlphaMaskNonIndexedWaterProgram.mFeatures.hasAlphaMask = true;
 		gObjectAlphaMaskNonIndexedWaterProgram.mShaderFiles.clear();
-		gObjectAlphaMaskNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectAlphaMaskNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleNonIndexedV.glsl", GL_VERTEX_SHADER_ARB));
 		gObjectAlphaMaskNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gObjectAlphaMaskNonIndexedWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
 		gObjectAlphaMaskNonIndexedWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
 		success = gObjectAlphaMaskNonIndexedWaterProgram.createShader(NULL, NULL);
 	}
 
+	if (success)
+	{
+		gObjectAlphaMaskNoColorProgram.mName = "No color alpha mask Shader";
+		gObjectAlphaMaskNoColorProgram.mFeatures.calculatesLighting = true;
+		gObjectAlphaMaskNoColorProgram.mFeatures.calculatesAtmospherics = true;
+		gObjectAlphaMaskNoColorProgram.mFeatures.hasGamma = true;
+		gObjectAlphaMaskNoColorProgram.mFeatures.hasAtmospherics = true;
+		gObjectAlphaMaskNoColorProgram.mFeatures.hasLighting = true;
+		gObjectAlphaMaskNoColorProgram.mFeatures.disableTextureIndex = true;
+		gObjectAlphaMaskNoColorProgram.mFeatures.hasAlphaMask = true;
+		gObjectAlphaMaskNoColorProgram.mShaderFiles.clear();
+		gObjectAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("objects/simpleNoColorV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectAlphaMaskNoColorProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gObjectAlphaMaskNoColorProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		success = gObjectAlphaMaskNoColorProgram.createShader(NULL, NULL);
+	}
+	
+	if (success)
+	{
+		gObjectAlphaMaskNoColorWaterProgram.mName = "No color alpha mask Water Shader";
+		gObjectAlphaMaskNoColorWaterProgram.mFeatures.calculatesLighting = true;
+		gObjectAlphaMaskNoColorWaterProgram.mFeatures.calculatesAtmospherics = true;
+		gObjectAlphaMaskNoColorWaterProgram.mFeatures.hasWaterFog = true;
+		gObjectAlphaMaskNoColorWaterProgram.mFeatures.hasAtmospherics = true;
+		gObjectAlphaMaskNoColorWaterProgram.mFeatures.hasLighting = true;
+		gObjectAlphaMaskNoColorWaterProgram.mFeatures.disableTextureIndex = true;
+		gObjectAlphaMaskNoColorWaterProgram.mFeatures.hasAlphaMask = true;
+		gObjectAlphaMaskNoColorWaterProgram.mShaderFiles.clear();
+		gObjectAlphaMaskNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleNoColorV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectAlphaMaskNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gObjectAlphaMaskNoColorWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		gObjectAlphaMaskNoColorWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
+		success = gObjectAlphaMaskNoColorWaterProgram.createShader(NULL, NULL);
+	}
+
+	if (success)
+	{
+		gTreeProgram.mName = "Tree Shader";
+		gTreeProgram.mFeatures.calculatesLighting = true;
+		gTreeProgram.mFeatures.calculatesAtmospherics = true;
+		gTreeProgram.mFeatures.hasGamma = true;
+		gTreeProgram.mFeatures.hasAtmospherics = true;
+		gTreeProgram.mFeatures.hasLighting = true;
+		gTreeProgram.mFeatures.disableTextureIndex = true;
+		gTreeProgram.mFeatures.hasAlphaMask = true;
+		gTreeProgram.mShaderFiles.clear();
+		gTreeProgram.mShaderFiles.push_back(make_pair("objects/treeV.glsl", GL_VERTEX_SHADER_ARB));
+		gTreeProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gTreeProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		success = gTreeProgram.createShader(NULL, NULL);
+	}
+	
+	if (success)
+	{
+		gTreeWaterProgram.mName = "Tree Water Shader";
+		gTreeWaterProgram.mFeatures.calculatesLighting = true;
+		gTreeWaterProgram.mFeatures.calculatesAtmospherics = true;
+		gTreeWaterProgram.mFeatures.hasWaterFog = true;
+		gTreeWaterProgram.mFeatures.hasAtmospherics = true;
+		gTreeWaterProgram.mFeatures.hasLighting = true;
+		gTreeWaterProgram.mFeatures.disableTextureIndex = true;
+		gTreeWaterProgram.mFeatures.hasAlphaMask = true;
+		gTreeWaterProgram.mShaderFiles.clear();
+		gTreeWaterProgram.mShaderFiles.push_back(make_pair("objects/treeV.glsl", GL_VERTEX_SHADER_ARB));
+		gTreeWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gTreeWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		gTreeWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
+		success = gTreeWaterProgram.createShader(NULL, NULL);
+	}
+
 	if (success)
 	{
 		gObjectFullbrightNonIndexedProgram.mName = "Non Indexed Fullbright Shader";
@@ -1811,6 +1766,68 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 		success = gObjectFullbrightNonIndexedWaterProgram.createShader(NULL, NULL);
 	}
 
+	if (success)
+	{
+		gObjectEmissiveNonIndexedProgram.mName = "Non Indexed Emissive Shader";
+		gObjectEmissiveNonIndexedProgram.mFeatures.calculatesAtmospherics = true;
+		gObjectEmissiveNonIndexedProgram.mFeatures.hasGamma = true;
+		gObjectEmissiveNonIndexedProgram.mFeatures.hasTransport = true;
+		gObjectEmissiveNonIndexedProgram.mFeatures.isFullbright = true;
+		gObjectEmissiveNonIndexedProgram.mFeatures.disableTextureIndex = true;
+		gObjectEmissiveNonIndexedProgram.mShaderFiles.clear();
+		gObjectEmissiveNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/emissiveV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectEmissiveNonIndexedProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gObjectEmissiveNonIndexedProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		success = gObjectEmissiveNonIndexedProgram.createShader(NULL, NULL);
+	}
+
+	if (success)
+	{
+		gObjectEmissiveNonIndexedWaterProgram.mName = "Non Indexed Emissive Water Shader";
+		gObjectEmissiveNonIndexedWaterProgram.mFeatures.calculatesAtmospherics = true;
+		gObjectEmissiveNonIndexedWaterProgram.mFeatures.isFullbright = true;
+		gObjectEmissiveNonIndexedWaterProgram.mFeatures.hasWaterFog = true;		
+		gObjectEmissiveNonIndexedWaterProgram.mFeatures.hasTransport = true;
+		gObjectEmissiveNonIndexedWaterProgram.mFeatures.disableTextureIndex = true;
+		gObjectEmissiveNonIndexedWaterProgram.mShaderFiles.clear();
+		gObjectEmissiveNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/emissiveV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectEmissiveNonIndexedWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gObjectEmissiveNonIndexedWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		gObjectEmissiveNonIndexedWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
+		success = gObjectEmissiveNonIndexedWaterProgram.createShader(NULL, NULL);
+	}
+
+	if (success)
+	{
+		gObjectFullbrightNoColorProgram.mName = "Non Indexed no color Fullbright Shader";
+		gObjectFullbrightNoColorProgram.mFeatures.calculatesAtmospherics = true;
+		gObjectFullbrightNoColorProgram.mFeatures.hasGamma = true;
+		gObjectFullbrightNoColorProgram.mFeatures.hasTransport = true;
+		gObjectFullbrightNoColorProgram.mFeatures.isFullbright = true;
+		gObjectFullbrightNoColorProgram.mFeatures.disableTextureIndex = true;
+		gObjectFullbrightNoColorProgram.mShaderFiles.clear();
+		gObjectFullbrightNoColorProgram.mShaderFiles.push_back(make_pair("objects/fullbrightNoColorV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectFullbrightNoColorProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gObjectFullbrightNoColorProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		success = gObjectFullbrightNoColorProgram.createShader(NULL, NULL);
+	}
+
+	if (success)
+	{
+		gObjectFullbrightNoColorWaterProgram.mName = "Non Indexed no color Fullbright Water Shader";
+		gObjectFullbrightNoColorWaterProgram.mFeatures.calculatesAtmospherics = true;
+		gObjectFullbrightNoColorWaterProgram.mFeatures.isFullbright = true;
+		gObjectFullbrightNoColorWaterProgram.mFeatures.hasWaterFog = true;		
+		gObjectFullbrightNoColorWaterProgram.mFeatures.hasTransport = true;
+		gObjectFullbrightNoColorWaterProgram.mFeatures.disableTextureIndex = true;
+		gObjectFullbrightNoColorWaterProgram.mShaderFiles.clear();
+		gObjectFullbrightNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightNoColorV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectFullbrightNoColorWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gObjectFullbrightNoColorWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		gObjectFullbrightNoColorWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
+		success = gObjectFullbrightNoColorWaterProgram.createShader(NULL, NULL);
+	}
+
 	if (success)
 	{
 		gObjectShinyNonIndexedProgram.mName = "Non Indexed Shiny Shader";
@@ -1889,6 +1906,23 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 		success = gImpostorProgram.createShader(NULL, NULL);
 	}
 
+	if (success)
+	{
+		gObjectPreviewProgram.mName = "Simple Shader";
+		gObjectPreviewProgram.mFeatures.calculatesLighting = true;
+		gObjectPreviewProgram.mFeatures.calculatesAtmospherics = true;
+		gObjectPreviewProgram.mFeatures.hasGamma = true;
+		gObjectPreviewProgram.mFeatures.hasAtmospherics = true;
+		gObjectPreviewProgram.mFeatures.hasLighting = true;
+		gObjectPreviewProgram.mFeatures.mIndexedTextureChannels = 0;
+		gObjectPreviewProgram.mFeatures.disableTextureIndex = true;
+		gObjectPreviewProgram.mShaderFiles.clear();
+		gObjectPreviewProgram.mShaderFiles.push_back(make_pair("objects/previewV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectPreviewProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gObjectPreviewProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		success = gObjectPreviewProgram.createShader(NULL, NULL);
+	}
+
 	if (success)
 	{
 		gObjectSimpleProgram.mName = "Simple Shader";
@@ -1907,19 +1941,19 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 
 	if (success)
 	{
-		gObjectSimpleAlphaMaskProgram.mName = "Simple Alpha Mask Shader";
-		gObjectSimpleAlphaMaskProgram.mFeatures.calculatesLighting = true;
-		gObjectSimpleAlphaMaskProgram.mFeatures.calculatesAtmospherics = true;
-		gObjectSimpleAlphaMaskProgram.mFeatures.hasGamma = true;
-		gObjectSimpleAlphaMaskProgram.mFeatures.hasAtmospherics = true;
-		gObjectSimpleAlphaMaskProgram.mFeatures.hasLighting = true;
-		gObjectSimpleAlphaMaskProgram.mFeatures.hasAlphaMask = true;
-		gObjectSimpleAlphaMaskProgram.mFeatures.mIndexedTextureChannels = 0;
-		gObjectSimpleAlphaMaskProgram.mShaderFiles.clear();
-		gObjectSimpleAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB));
-		gObjectSimpleAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
-		gObjectSimpleAlphaMaskProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
-		success = gObjectSimpleAlphaMaskProgram.createShader(NULL, NULL);
+		gObjectSimpleWaterProgram.mName = "Simple Water Shader";
+		gObjectSimpleWaterProgram.mFeatures.calculatesLighting = true;
+		gObjectSimpleWaterProgram.mFeatures.calculatesAtmospherics = true;
+		gObjectSimpleWaterProgram.mFeatures.hasWaterFog = true;
+		gObjectSimpleWaterProgram.mFeatures.hasAtmospherics = true;
+		gObjectSimpleWaterProgram.mFeatures.hasLighting = true;
+		gObjectSimpleWaterProgram.mFeatures.mIndexedTextureChannels = 0;
+		gObjectSimpleWaterProgram.mShaderFiles.clear();
+		gObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gObjectSimpleWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		gObjectSimpleWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
+		success = gObjectSimpleWaterProgram.createShader(NULL, NULL);
 	}
 	
 	if (success)
@@ -1936,25 +1970,34 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 		gObjectBumpProgram.mShaderFiles.push_back(make_pair("objects/bumpF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gObjectBumpProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
 		success = gObjectBumpProgram.createShader(NULL, NULL);
+
+		if (success)
+		{ //lldrawpoolbump assumes "texture0" has channel 0 and "texture1" has channel 1
+			gObjectBumpProgram.bind();
+			gObjectBumpProgram.uniform1i("texture0", 0);
+			gObjectBumpProgram.uniform1i("texture1", 1);
+			gObjectBumpProgram.unbind();
+		}
 	}
 	
+	
 	if (success)
 	{
-		gObjectSimpleWaterProgram.mName = "Simple Water Shader";
-		gObjectSimpleWaterProgram.mFeatures.calculatesLighting = true;
-		gObjectSimpleWaterProgram.mFeatures.calculatesAtmospherics = true;
-		gObjectSimpleWaterProgram.mFeatures.hasWaterFog = true;
-		gObjectSimpleWaterProgram.mFeatures.hasAtmospherics = true;
-		gObjectSimpleWaterProgram.mFeatures.hasLighting = true;
-		gObjectSimpleWaterProgram.mFeatures.mIndexedTextureChannels = 0;
-		gObjectSimpleWaterProgram.mShaderFiles.clear();
-		gObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB));
-		gObjectSimpleWaterProgram.mShaderFiles.push_back(make_pair("objects/simpleWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
-		gObjectSimpleWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
-		gObjectSimpleWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
-		success = gObjectSimpleWaterProgram.createShader(NULL, NULL);
+		gObjectSimpleAlphaMaskProgram.mName = "Simple Alpha Mask Shader";
+		gObjectSimpleAlphaMaskProgram.mFeatures.calculatesLighting = true;
+		gObjectSimpleAlphaMaskProgram.mFeatures.calculatesAtmospherics = true;
+		gObjectSimpleAlphaMaskProgram.mFeatures.hasGamma = true;
+		gObjectSimpleAlphaMaskProgram.mFeatures.hasAtmospherics = true;
+		gObjectSimpleAlphaMaskProgram.mFeatures.hasLighting = true;
+		gObjectSimpleAlphaMaskProgram.mFeatures.hasAlphaMask = true;
+		gObjectSimpleAlphaMaskProgram.mFeatures.mIndexedTextureChannels = 0;
+		gObjectSimpleAlphaMaskProgram.mShaderFiles.clear();
+		gObjectSimpleAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectSimpleAlphaMaskProgram.mShaderFiles.push_back(make_pair("objects/simpleF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gObjectSimpleAlphaMaskProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		success = gObjectSimpleAlphaMaskProgram.createShader(NULL, NULL);
 	}
-	
+
 	if (success)
 	{
 		gObjectSimpleWaterAlphaMaskProgram.mName = "Simple Water Alpha Mask Shader";
@@ -2004,6 +2047,37 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 		success = gObjectFullbrightWaterProgram.createShader(NULL, NULL);
 	}
 
+	if (success)
+	{
+		gObjectEmissiveProgram.mName = "Emissive Shader";
+		gObjectEmissiveProgram.mFeatures.calculatesAtmospherics = true;
+		gObjectEmissiveProgram.mFeatures.hasGamma = true;
+		gObjectEmissiveProgram.mFeatures.hasTransport = true;
+		gObjectEmissiveProgram.mFeatures.isFullbright = true;
+		gObjectEmissiveProgram.mFeatures.mIndexedTextureChannels = 0;
+		gObjectEmissiveProgram.mShaderFiles.clear();
+		gObjectEmissiveProgram.mShaderFiles.push_back(make_pair("objects/emissiveV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectEmissiveProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gObjectEmissiveProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		success = gObjectEmissiveProgram.createShader(NULL, NULL);
+	}
+
+	if (success)
+	{
+		gObjectEmissiveWaterProgram.mName = "Emissive Water Shader";
+		gObjectEmissiveWaterProgram.mFeatures.calculatesAtmospherics = true;
+		gObjectEmissiveWaterProgram.mFeatures.isFullbright = true;
+		gObjectEmissiveWaterProgram.mFeatures.hasWaterFog = true;		
+		gObjectEmissiveWaterProgram.mFeatures.hasTransport = true;
+		gObjectEmissiveWaterProgram.mFeatures.mIndexedTextureChannels = 0;
+		gObjectEmissiveWaterProgram.mShaderFiles.clear();
+		gObjectEmissiveWaterProgram.mShaderFiles.push_back(make_pair("objects/emissiveV.glsl", GL_VERTEX_SHADER_ARB));
+		gObjectEmissiveWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gObjectEmissiveWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+		gObjectEmissiveWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;
+		success = gObjectEmissiveWaterProgram.createShader(NULL, NULL);
+	}
+
 	if (success)
 	{
 		gObjectFullbrightAlphaMaskProgram.mName = "Fullbright Alpha Mask Shader";
@@ -2139,6 +2213,39 @@ BOOL LLViewerShaderMgr::loadShadersObject()
 			success = gSkinnedObjectFullbrightProgram.createShader(NULL, NULL);
 		}
 
+		if (success)
+		{
+			gSkinnedObjectEmissiveProgram.mName = "Skinned Emissive Shader";
+			gSkinnedObjectEmissiveProgram.mFeatures.calculatesAtmospherics = true;
+			gSkinnedObjectEmissiveProgram.mFeatures.hasGamma = true;
+			gSkinnedObjectEmissiveProgram.mFeatures.hasTransport = true;
+			gSkinnedObjectEmissiveProgram.mFeatures.isFullbright = true;
+			gSkinnedObjectEmissiveProgram.mFeatures.hasObjectSkinning = true;
+			gSkinnedObjectEmissiveProgram.mFeatures.disableTextureIndex = true;
+			gSkinnedObjectEmissiveProgram.mShaderFiles.clear();
+			gSkinnedObjectEmissiveProgram.mShaderFiles.push_back(make_pair("objects/emissiveSkinnedV.glsl", GL_VERTEX_SHADER_ARB));
+			gSkinnedObjectEmissiveProgram.mShaderFiles.push_back(make_pair("objects/fullbrightF.glsl", GL_FRAGMENT_SHADER_ARB));
+			gSkinnedObjectEmissiveProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+			success = gSkinnedObjectEmissiveProgram.createShader(NULL, NULL);
+		}
+
+		if (success)
+		{
+			gSkinnedObjectEmissiveWaterProgram.mName = "Skinned Emissive Water Shader";
+			gSkinnedObjectEmissiveWaterProgram.mFeatures.calculatesAtmospherics = true;
+			gSkinnedObjectEmissiveWaterProgram.mFeatures.hasGamma = true;
+			gSkinnedObjectEmissiveWaterProgram.mFeatures.hasTransport = true;
+			gSkinnedObjectEmissiveWaterProgram.mFeatures.isFullbright = true;
+			gSkinnedObjectEmissiveWaterProgram.mFeatures.hasObjectSkinning = true;
+			gSkinnedObjectEmissiveWaterProgram.mFeatures.disableTextureIndex = true;
+			gSkinnedObjectEmissiveWaterProgram.mFeatures.hasWaterFog = true;
+			gSkinnedObjectEmissiveWaterProgram.mShaderFiles.clear();
+			gSkinnedObjectEmissiveWaterProgram.mShaderFiles.push_back(make_pair("objects/emissiveSkinnedV.glsl", GL_VERTEX_SHADER_ARB));
+			gSkinnedObjectEmissiveWaterProgram.mShaderFiles.push_back(make_pair("objects/fullbrightWaterF.glsl", GL_FRAGMENT_SHADER_ARB));
+			gSkinnedObjectEmissiveWaterProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT];
+			success = gSkinnedObjectEmissiveWaterProgram.createShader(NULL, NULL);
+		}
+
 		if (success)
 		{
 			gSkinnedObjectFullbrightShinyProgram.mName = "Skinned Fullbright Shiny Shader";
@@ -2287,7 +2394,7 @@ BOOL LLViewerShaderMgr::loadShadersAvatar()
 		gAvatarProgram.mShaderFiles.push_back(make_pair("avatar/avatarV.glsl", GL_VERTEX_SHADER_ARB));
 		gAvatarProgram.mShaderFiles.push_back(make_pair("avatar/avatarF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gAvatarProgram.mShaderLevel = mVertexShaderLevel[SHADER_AVATAR];
-		success = gAvatarProgram.createShader(&mAvatarAttribs, &mAvatarUniforms);
+		success = gAvatarProgram.createShader(NULL, &mAvatarUniforms);
 			
 		if (success)
 		{
@@ -2306,7 +2413,7 @@ BOOL LLViewerShaderMgr::loadShadersAvatar()
 			// Note: no cloth under water:
 			gAvatarWaterProgram.mShaderLevel = llmin(mVertexShaderLevel[SHADER_AVATAR], 1);	
 			gAvatarWaterProgram.mShaderGroup = LLGLSLShader::SG_WATER;				
-			success = gAvatarWaterProgram.createShader(&mAvatarAttribs, &mAvatarUniforms);
+			success = gAvatarWaterProgram.createShader(NULL, &mAvatarUniforms);
 		}
 
 		/// Keep track of avatar levels
@@ -2325,7 +2432,7 @@ BOOL LLViewerShaderMgr::loadShadersAvatar()
 		gAvatarPickProgram.mShaderFiles.push_back(make_pair("avatar/pickAvatarV.glsl", GL_VERTEX_SHADER_ARB));
 		gAvatarPickProgram.mShaderFiles.push_back(make_pair("avatar/pickAvatarF.glsl", GL_FRAGMENT_SHADER_ARB));
 		gAvatarPickProgram.mShaderLevel = mVertexShaderLevel[SHADER_AVATAR];
-		success = gAvatarPickProgram.createShader(&mAvatarAttribs, &mAvatarUniforms);
+		success = gAvatarPickProgram.createShader(NULL, &mAvatarUniforms);
 	}
 
 	if (success)
@@ -2396,6 +2503,22 @@ BOOL LLViewerShaderMgr::loadShadersInterface()
 		success = gCustomAlphaProgram.createShader(NULL, NULL);
 	}
 
+	if (success)
+	{
+		gSplatTextureRectProgram.mName = "Splat Texture Rect Shader";
+		gSplatTextureRectProgram.mShaderFiles.clear();
+		gSplatTextureRectProgram.mShaderFiles.push_back(make_pair("interface/splattexturerectV.glsl", GL_VERTEX_SHADER_ARB));
+		gSplatTextureRectProgram.mShaderFiles.push_back(make_pair("interface/splattexturerectF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gSplatTextureRectProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+		success = gSplatTextureRectProgram.createShader(NULL, NULL);
+		if (success)
+		{
+			gSplatTextureRectProgram.bind();
+			gSplatTextureRectProgram.uniform1i("screenMap", 0);
+			gSplatTextureRectProgram.unbind();
+		}
+	}
+
 	if (success)
 	{
 		gGlowCombineProgram.mName = "Glow Combine Shader";
@@ -2413,6 +2536,24 @@ BOOL LLViewerShaderMgr::loadShadersInterface()
 		}
 	}
 
+	if (success)
+	{
+		gGlowCombineFXAAProgram.mName = "Glow CombineFXAA Shader";
+		gGlowCombineFXAAProgram.mShaderFiles.clear();
+		gGlowCombineFXAAProgram.mShaderFiles.push_back(make_pair("interface/glowcombineFXAAV.glsl", GL_VERTEX_SHADER_ARB));
+		gGlowCombineFXAAProgram.mShaderFiles.push_back(make_pair("interface/glowcombineFXAAF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gGlowCombineFXAAProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+		success = gGlowCombineFXAAProgram.createShader(NULL, NULL);
+		if (success)
+		{
+			gGlowCombineFXAAProgram.bind();
+			gGlowCombineFXAAProgram.uniform1i("glowMap", 0);
+			gGlowCombineFXAAProgram.uniform1i("screenMap", 1);
+			gGlowCombineFXAAProgram.unbind();
+		}
+	}
+
+
 	if (success)
 	{
 		gTwoTextureAddProgram.mName = "Two Texture Add Shader";
@@ -2429,6 +2570,21 @@ BOOL LLViewerShaderMgr::loadShadersInterface()
 		}
 	}
 
+	if (success)
+	{
+		gOneTextureNoColorProgram.mName = "One Texture No Color Shader";
+		gOneTextureNoColorProgram.mShaderFiles.clear();
+		gOneTextureNoColorProgram.mShaderFiles.push_back(make_pair("interface/onetexturenocolorV.glsl", GL_VERTEX_SHADER_ARB));
+		gOneTextureNoColorProgram.mShaderFiles.push_back(make_pair("interface/onetexturenocolorF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gOneTextureNoColorProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+		success = gOneTextureNoColorProgram.createShader(NULL, NULL);
+		if (success)
+		{
+			gOneTextureNoColorProgram.bind();
+			gOneTextureNoColorProgram.uniform1i("tex0", 0);
+		}
+	}
+
 	if (success)
 	{
 		gSolidColorProgram.mName = "Solid Color Shader";
@@ -2455,6 +2611,26 @@ BOOL LLViewerShaderMgr::loadShadersInterface()
 		success = gOcclusionProgram.createShader(NULL, NULL);
 	}
 
+	if (success)
+	{
+		gDebugProgram.mName = "Debug Shader";
+		gDebugProgram.mShaderFiles.clear();
+		gDebugProgram.mShaderFiles.push_back(make_pair("interface/debugV.glsl", GL_VERTEX_SHADER_ARB));
+		gDebugProgram.mShaderFiles.push_back(make_pair("interface/debugF.glsl", GL_FRAGMENT_SHADER_ARB));
+		gDebugProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE];
+		success = gDebugProgram.createShader(NULL, NULL);
+	}
+
+	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;
diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h
index d4040f11e1ffcf7344213ff0353309f3618bb626..95eb551bf1ba6837f1c8e98762ae3863f41a99ec 100644
--- a/indra/newview/llviewershadermgr.h
+++ b/indra/newview/llviewershadermgr.h
@@ -33,6 +33,7 @@ class LLViewerShaderMgr: public LLShaderMgr
 {
 public:
 	static BOOL sInitialized;
+	static bool sSkipReload;
 
 	LLViewerShaderMgr();
 	/* virtual */ ~LLViewerShaderMgr();
@@ -71,76 +72,6 @@ class LLViewerShaderMgr: public LLShaderMgr
 		SHADER_COUNT
 	};
 
-	typedef enum 
-	{
-		MATERIAL_COLOR = 0,
-		SPECULAR_COLOR,
-		BINORMAL,
-		OBJECT_WEIGHT,
-		END_RESERVED_ATTRIBS
-	} eGLSLReservedAttribs;
-	
-	typedef enum
-	{
-		DIFFUSE_MAP = 0,
-		SPECULAR_MAP,
-		BUMP_MAP,
-		ENVIRONMENT_MAP,
-		CLOUD_NOISE_MAP,
-		FULLBRIGHT,
-		LIGHTNORM,
-		SUNLIGHT_COLOR,
-		AMBIENT,
-		BLUE_HORIZON,
-		BLUE_DENSITY,
-		HAZE_HORIZON,
-		HAZE_DENSITY,
-		CLOUD_SHADOW,
-		DENSITY_MULTIPLIER,
-		DISTANCE_MULTIPLIER,
-		MAX_Y,
-		GLOW,
-		CLOUD_COLOR,
-		CLOUD_POS_DENSITY1,
-		CLOUD_POS_DENSITY2,
-		CLOUD_SCALE,
-		GAMMA,
-		SCENE_LIGHT_STRENGTH,
-		DEFERRED_DEPTH,
-		DEFERRED_SHADOW0,
-		DEFERRED_SHADOW1,
-		DEFERRED_SHADOW2,
-		DEFERRED_SHADOW3,
-		DEFERRED_SHADOW4,
-		DEFERRED_SHADOW5,
-		DEFERRED_NORMAL,
-		DEFERRED_POSITION,
-		DEFERRED_DIFFUSE,
-		DEFERRED_SPECULAR,
-		DEFERRED_NOISE,
-		DEFERRED_LIGHTFUNC,
-		DEFERRED_LIGHT,
-		DEFERRED_LUMINANCE,
-		DEFERRED_GI_LIGHT,
-		DEFERRED_GI_MIP,
-		DEFERRED_EDGE,
-		DEFERRED_BLOOM,
-		DEFERRED_SUN_LIGHT,
-		DEFERRED_LOCAL_LIGHT,
-		DEFERRED_PROJECTION,
-		DEFERRED_GI_DIFFUSE,
-		DEFERRED_GI_SPECULAR,
-		DEFERRED_GI_NORMAL,
-		DEFERRED_GI_MIN_POS,
-		DEFERRED_GI_MAX_POS,
-		DEFERRED_GI_DEPTH,
-		DEFERRED_GI_LAST_DIFFUSE,
-		DEFERRED_GI_LAST_NORMAL,
-		DEFERRED_GI_LAST_MIN_POS,
-		DEFERRED_GI_LAST_MAX_POS,
-		END_RESERVED_UNIFORMS
-	} eGLSLReservedUniforms;
-
 	typedef enum
 	{
 		SHINY_ORIGIN = END_RESERVED_UNIFORMS
@@ -186,16 +117,10 @@ class LLViewerShaderMgr: public LLShaderMgr
 
 	typedef enum
 	{
-		AVATAR_WEIGHT = END_RESERVED_ATTRIBS,
-		AVATAR_CLOTHING,
+		AVATAR_MATRIX = END_RESERVED_UNIFORMS,
 		AVATAR_WIND,
 		AVATAR_SINWAVE,
-		AVATAR_GRAVITY
-	} eAvatarAttribs;
-
-	typedef enum
-	{
-		AVATAR_MATRIX = END_RESERVED_UNIFORMS
+		AVATAR_GRAVITY,
 	} eAvatarUniforms;
 
 	// simple model of forward iterator
@@ -265,9 +190,6 @@ class LLViewerShaderMgr: public LLShaderMgr
 
 	std::vector<std::string> mGlowExtractUniforms;
 
-	//avatar shader parameter tables
-	std::vector<std::string> mAvatarAttribs;
-
 	std::vector<std::string> mAvatarUniforms;
 
 	// the list of shaders we need to propagate parameters to.
@@ -291,26 +213,45 @@ extern LLVector4			gShinyOrigin;
 extern LLGLSLShader			gOcclusionProgram;
 extern LLGLSLShader			gCustomAlphaProgram;
 extern LLGLSLShader			gGlowCombineProgram;
+extern LLGLSLShader			gSplatTextureRectProgram;
+extern LLGLSLShader			gGlowCombineFXAAProgram;
+extern LLGLSLShader			gDebugProgram;
+extern LLGLSLShader			gAlphaMaskProgram;
 
 //output tex0[tc0] + tex1[tc1]
 extern LLGLSLShader			gTwoTextureAddProgram;
-								
+						
+extern LLGLSLShader			gOneTextureNoColorProgram;
+
 //object shaders
 extern LLGLSLShader			gObjectSimpleProgram;
+extern LLGLSLShader			gObjectPreviewProgram;
 extern LLGLSLShader			gObjectSimpleAlphaMaskProgram;
 extern LLGLSLShader			gObjectSimpleWaterProgram;
 extern LLGLSLShader			gObjectSimpleWaterAlphaMaskProgram;
 extern LLGLSLShader			gObjectSimpleNonIndexedProgram;
+extern LLGLSLShader			gObjectSimpleNonIndexedTexGenProgram;
+extern LLGLSLShader			gObjectSimpleNonIndexedTexGenWaterProgram;
 extern LLGLSLShader			gObjectSimpleNonIndexedWaterProgram;
 extern LLGLSLShader			gObjectAlphaMaskNonIndexedProgram;
 extern LLGLSLShader			gObjectAlphaMaskNonIndexedWaterProgram;
+extern LLGLSLShader			gObjectAlphaMaskNoColorProgram;
+extern LLGLSLShader			gObjectAlphaMaskNoColorWaterProgram;
 extern LLGLSLShader			gObjectFullbrightProgram;
 extern LLGLSLShader			gObjectFullbrightWaterProgram;
+extern LLGLSLShader			gObjectFullbrightNoColorProgram;
+extern LLGLSLShader			gObjectFullbrightNoColorWaterProgram;
+extern LLGLSLShader			gObjectEmissiveProgram;
+extern LLGLSLShader			gObjectEmissiveWaterProgram;
 extern LLGLSLShader			gObjectFullbrightAlphaMaskProgram;
 extern LLGLSLShader			gObjectFullbrightWaterAlphaMaskProgram;
 extern LLGLSLShader			gObjectFullbrightNonIndexedProgram;
 extern LLGLSLShader			gObjectFullbrightNonIndexedWaterProgram;
+extern LLGLSLShader			gObjectEmissiveNonIndexedProgram;
+extern LLGLSLShader			gObjectEmissiveNonIndexedWaterProgram;
 extern LLGLSLShader			gObjectBumpProgram;
+extern LLGLSLShader			gTreeProgram;
+extern LLGLSLShader			gTreeWaterProgram;
 
 extern LLGLSLShader			gObjectSimpleLODProgram;
 extern LLGLSLShader			gObjectFullbrightLODProgram;
@@ -327,11 +268,13 @@ extern LLGLSLShader			gObjectShinyNonIndexedWaterProgram;
 
 extern LLGLSLShader			gSkinnedObjectSimpleProgram;
 extern LLGLSLShader			gSkinnedObjectFullbrightProgram;
+extern LLGLSLShader			gSkinnedObjectEmissiveProgram;
 extern LLGLSLShader			gSkinnedObjectFullbrightShinyProgram;
 extern LLGLSLShader			gSkinnedObjectShinySimpleProgram;
 
 extern LLGLSLShader			gSkinnedObjectSimpleWaterProgram;
 extern LLGLSLShader			gSkinnedObjectFullbrightWaterProgram;
+extern LLGLSLShader			gSkinnedObjectEmissiveWaterProgram;
 extern LLGLSLShader			gSkinnedObjectFullbrightShinyWaterProgram;
 extern LLGLSLShader			gSkinnedObjectShinySimpleWaterProgram;
 
@@ -363,11 +306,11 @@ extern LLGLSLShader			gPostNightVisionProgram;
 
 // Deferred rendering shaders
 extern LLGLSLShader			gDeferredImpostorProgram;
-extern LLGLSLShader			gDeferredEdgeProgram;
 extern LLGLSLShader			gDeferredWaterProgram;
 extern LLGLSLShader			gDeferredDiffuseProgram;
 extern LLGLSLShader			gDeferredDiffuseAlphaMaskProgram;
 extern LLGLSLShader			gDeferredNonIndexedDiffuseAlphaMaskProgram;
+extern LLGLSLShader			gDeferredNonIndexedDiffuseAlphaMaskNoColorProgram;
 extern LLGLSLShader			gDeferredNonIndexedDiffuseProgram;
 extern LLGLSLShader			gDeferredSkinnedDiffuseProgram;
 extern LLGLSLShader			gDeferredSkinnedBumpProgram;
@@ -375,34 +318,32 @@ extern LLGLSLShader			gDeferredSkinnedAlphaProgram;
 extern LLGLSLShader			gDeferredBumpProgram;
 extern LLGLSLShader			gDeferredTerrainProgram;
 extern LLGLSLShader			gDeferredTreeProgram;
+extern LLGLSLShader			gDeferredTreeShadowProgram;
 extern LLGLSLShader			gDeferredLightProgram;
 extern LLGLSLShader			gDeferredMultiLightProgram;
 extern LLGLSLShader			gDeferredSpotLightProgram;
 extern LLGLSLShader			gDeferredMultiSpotLightProgram;
 extern LLGLSLShader			gDeferredSunProgram;
-extern LLGLSLShader			gDeferredGIProgram;
-extern LLGLSLShader			gDeferredGIFinalProgram;
 extern LLGLSLShader			gDeferredBlurLightProgram;
 extern LLGLSLShader			gDeferredAvatarProgram;
 extern LLGLSLShader			gDeferredSoftenProgram;
 extern LLGLSLShader			gDeferredShadowProgram;
 extern LLGLSLShader			gDeferredShadowAlphaMaskProgram;
-extern LLGLSLShader			gDeferredPostGIProgram;
 extern LLGLSLShader			gDeferredPostProgram;
+extern LLGLSLShader			gDeferredCoFProgram;
+extern LLGLSLShader			gDeferredDoFCombineProgram;
+extern LLGLSLShader			gFXAAProgram;
 extern LLGLSLShader			gDeferredPostNoDoFProgram;
 extern LLGLSLShader			gDeferredAvatarShadowProgram;
 extern LLGLSLShader			gDeferredAttachmentShadowProgram;
 extern LLGLSLShader			gDeferredAlphaProgram;
 extern LLGLSLShader			gDeferredFullbrightProgram;
+extern LLGLSLShader			gDeferredEmissiveProgram;
 extern LLGLSLShader			gDeferredAvatarEyesProgram;
 extern LLGLSLShader			gDeferredAvatarAlphaProgram;
 extern LLGLSLShader			gDeferredWLSkyProgram;
 extern LLGLSLShader			gDeferredWLCloudProgram;
 extern LLGLSLShader			gDeferredStarProgram;
-extern LLGLSLShader			gLuminanceGatherProgram;
-
-//current avatar shader parameter pointer
-extern GLint				gAvatarMatrixParam;
-
+extern LLGLSLShader			gNormalMapGenProgram;
 
 #endif
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index 0fb94bc44bc9f52fc352dbf98427932ea286a4cf..c88122f22c9078efd0a46fc00a388cb5444e59cf 100644
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -854,7 +854,7 @@ void send_stats()
 	body["DisplayNamesEnabled"] = gSavedSettings.getBOOL("UseDisplayNames");
 	body["DisplayNamesShowUsername"] = gSavedSettings.getBOOL("NameTagShowUsernames");
 	
-	body["MinimalSkin"] = !gSavedSettings.getString("SessionSettingsFile").empty();
+	body["MinimalSkin"] = false;
 	
 	LLViewerStats::getInstance()->addToMessage(body);
 	LLHTTPClient::post(url, body, new ViewerStatsResponder());
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index 4798bb536f1d4fe2824245ac56c789b7961be4f0..b41ed00f17c6da7bf62053b6476878c16ebdff2c 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -32,6 +32,7 @@
 #include "llaudioengine.h"
 #include "llavataractions.h"
 #include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
 #include "llfloaterworldmap.h"
 #include "llfocusmgr.h"
 #include "llinventorybridge.h"
@@ -50,7 +51,6 @@
 #include "llpreviewtexture.h"
 #include "llscrollbar.h"
 #include "llscrollcontainer.h"
-#include "llsidetray.h"
 #include "lltooldraganddrop.h"
 #include "lltooltip.h"
 #include "lltrans.h"
@@ -80,7 +80,7 @@ class LLEmbeddedLandmarkCopied: public LLInventoryCallback
 		LLSD key;
 		key["type"] = "landmark";
 		key["id"] = landmark_inv_id;
-		LLSideTray::getInstance()->showPanel("panel_places", key);
+		LLFloaterSidePanelContainer::showPanel("places", key);
 	}
 	static void processForeignLandmark(LLLandmark* landmark,
 			const LLUUID& object_id, const LLUUID& notecard_inventory_id,
@@ -88,12 +88,12 @@ class LLEmbeddedLandmarkCopied: public LLInventoryCallback
 	{
 		LLVector3d global_pos;
 		landmark->getGlobalPos(global_pos);
-		LLViewerInventoryItem* agent_lanmark =
+		LLViewerInventoryItem* agent_landmark =
 				LLLandmarkActions::findLandmarkForGlobalPos(global_pos);
 
-		if (agent_lanmark)
+		if (agent_landmark)
 		{
-			showInfo(agent_lanmark->getUUID());
+			showInfo(agent_landmark->getUUID());
 		}
 		else
 		{
@@ -104,8 +104,13 @@ class LLEmbeddedLandmarkCopied: public LLInventoryCallback
 			}
 			else
 			{
+				LLInventoryItem* item = item_ptr.get();
 				LLPointer<LLEmbeddedLandmarkCopied> cb = new LLEmbeddedLandmarkCopied();
-				copy_inventory_from_notecard(object_id, notecard_inventory_id, item_ptr.get(), gInventoryCallbacks.registerCB(cb));
+				copy_inventory_from_notecard(get_folder_by_itemtype(item),
+											 object_id,
+											 notecard_inventory_id,
+											 item,
+											 gInventoryCallbacks.registerCB(cb));
 			}
 		}
 	}
@@ -1266,9 +1271,11 @@ bool LLViewerTextEditor::importStream(std::istream& str)
 
 void LLViewerTextEditor::copyInventory(const LLInventoryItem* item, U32 callback_id)
 {
-	copy_inventory_from_notecard(mObjectID,
+	copy_inventory_from_notecard(LLUUID::null,  // Don't specify a destination -- let the sim do that
+								 mObjectID,
 								 mNotecardInventoryID,
-								 item, callback_id);
+								 item,
+								 callback_id);
 }
 
 bool LLViewerTextEditor::hasEmbeddedInventory()
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 280337be0f73086905810f72437f5abd62039613..61236edc86e0e46ed4ef4c7ca2ebc0484c760a32 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -417,6 +417,64 @@ const S32 min_non_tex_system_mem = (128<<20); // 128 MB
 F32 texmem_lower_bound_scale = 0.85f;
 F32 texmem_middle_bound_scale = 0.925f;
 
+static LLFastTimer::DeclareTimer FTM_TEXTURE_MEMORY_CHECK("Memory Check");
+
+//static 
+bool LLViewerTexture::isMemoryForTextureLow()
+{
+	const F32 WAIT_TIME = 1.0f ; //second
+	static LLFrameTimer timer ;
+
+	if(timer.getElapsedTimeF32() < WAIT_TIME) //call this once per second.
+	{
+		return false;
+	}
+	timer.reset() ;
+
+	LLFastTimer t(FTM_TEXTURE_MEMORY_CHECK);
+
+	const S32 MIN_FREE_TEXTURE_MEMORY = 5 ; //MB
+	const S32 MIN_FREE_MAIN_MEMORy = 100 ; //MB	
+
+	bool low_mem = false ;
+	if (gGLManager.mHasATIMemInfo)
+	{
+		S32 meminfo[4];
+		glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI, meminfo);
+
+		if(meminfo[0] / 1024 < MIN_FREE_TEXTURE_MEMORY)
+		{
+			low_mem = true ;
+		}
+
+		if(!low_mem) //check main memory, only works for windows.
+		{
+			LLMemory::updateMemoryInfo() ;
+			if(LLMemory::getAvailableMemKB() / 1024 < MIN_FREE_MAIN_MEMORy)
+			{
+				low_mem = true ;
+			}
+		}
+	}
+#if 0  //ignore nVidia cards
+	else if (gGLManager.mHasNVXMemInfo)
+	{
+		S32 free_memory;
+		glGetIntegerv(GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, &free_memory);
+		
+		if(free_memory / 1024 < MIN_FREE_TEXTURE_MEMORY)
+		{
+			low_mem = true ;
+		}
+	}
+#endif	
+
+	return low_mem ;
+}
+
+static LLFastTimer::DeclareTimer FTM_TEXTURE_UPDATE_MEDIA("Media");
+static LLFastTimer::DeclareTimer FTM_TEXTURE_UPDATE_TEST("Test");
+
 //static
 void LLViewerTexture::updateClass(const F32 velocity, const F32 angular_velocity)
 {
@@ -425,9 +483,14 @@ void LLViewerTexture::updateClass(const F32 velocity, const F32 angular_velocity
 	LLTexturePipelineTester* tester = (LLTexturePipelineTester*)LLMetricPerformanceTesterBasic::getTester(sTesterName);
 	if (tester)
 	{
+		LLFastTimer t(FTM_TEXTURE_UPDATE_TEST);
 		tester->update() ;
 	}
-	LLViewerMediaTexture::updateClass() ;
+
+	{
+		LLFastTimer t(FTM_TEXTURE_UPDATE_MEDIA);
+		LLViewerMediaTexture::updateClass() ;
+	}
 
 	sBoundTextureMemoryInBytes = LLImageGL::sBoundTextureMemoryInBytes;//in bytes
 	sTotalTextureMemoryInBytes = LLImageGL::sGlobalTextureMemoryInBytes;//in bytes
@@ -449,6 +512,11 @@ void LLViewerTexture::updateClass(const F32 velocity, const F32 angular_velocity
 			sEvaluationTimer.reset();
 		}
 	}
+	else if(sEvaluationTimer.getElapsedTimeF32() > discard_delta_time && isMemoryForTextureLow())
+	{
+		sDesiredDiscardBias += discard_bias_delta;
+		sEvaluationTimer.reset();
+	}
 	else if (sDesiredDiscardBias > 0.0f &&
 			 BYTES_TO_MEGA_BYTES(sBoundTextureMemoryInBytes) < sMaxBoundTextureMemInMegaBytes * texmem_lower_bound_scale &&
 			 BYTES_TO_MEGA_BYTES(sTotalTextureMemoryInBytes) < sMaxTotalTextureMemInMegaBytes * texmem_lower_bound_scale)
@@ -2222,6 +2290,7 @@ void LLViewerFetchedTexture::unpauseLoadedCallbacks(const LLLoadedCallbackEntry:
 		}
 	}
 	mPauseLoadedCallBacks = FALSE ;
+	mLastCallBackActiveTime = sCurrentTime ;
 	if(need_raw)
 	{
 		mSaveRawImage = TRUE ;
@@ -2261,13 +2330,18 @@ void LLViewerFetchedTexture::pauseLoadedCallbacks(const LLLoadedCallbackEntry::s
 
 bool LLViewerFetchedTexture::doLoadedCallbacks()
 {
-	static const F32 MAX_INACTIVE_TIME = 120.f ; //seconds
+	static const F32 MAX_INACTIVE_TIME = 900.f ; //seconds
 
 	if (mNeedsCreateTexture)
 	{
 		return false;
 	}
-	if(sCurrentTime - mLastCallBackActiveTime > MAX_INACTIVE_TIME)
+	if(mPauseLoadedCallBacks)
+	{
+		destroyRawImage();
+		return false; //paused
+	}	
+	if(sCurrentTime - mLastCallBackActiveTime > MAX_INACTIVE_TIME && !mIsFetching)
 	{
 		clearCallbackEntryList() ; //remove all callbacks.
 		return false ;
@@ -2290,12 +2364,8 @@ bool LLViewerFetchedTexture::doLoadedCallbacks()
 
 		// Remove ourself from the global list of textures with callbacks
 		gTextureList.mCallbackList.erase(this);
-	}
-	if(mPauseLoadedCallBacks)
-	{
-		destroyRawImage();
-		return res; //paused
-	}
+		return false ;
+	}	
 
 	S32 gl_discard = getDiscardLevel();
 
@@ -2557,7 +2627,11 @@ bool LLViewerFetchedTexture::needsToSaveRawImage()
 
 void LLViewerFetchedTexture::destroyRawImage()
 {	
-	if (mAuxRawImage.notNull()) sAuxCount--;
+	if (mAuxRawImage.notNull())
+	{
+		sAuxCount--;
+		mAuxRawImage = NULL;
+	}
 
 	if (mRawImage.notNull()) 
 	{
@@ -2571,12 +2645,12 @@ void LLViewerFetchedTexture::destroyRawImage()
 			}		
 			setCachedRawImage() ;
 		}
+		
+		mRawImage = NULL;
+	
+		mIsRawImageValid = FALSE;
+		mRawDiscardLevel = INVALID_DISCARD_LEVEL;
 	}
-
-	mRawImage = NULL;
-	mAuxRawImage = NULL;
-	mIsRawImageValid = FALSE;
-	mRawDiscardLevel = INVALID_DISCARD_LEVEL;
 }
 
 //use the mCachedRawImage to (re)generate the gl texture.
@@ -3089,8 +3163,13 @@ void LLViewerLODTexture::processTextureStats()
 		S32 current_discard = getDiscardLevel();
 		if (sDesiredDiscardBias > 0.0f && mBoostLevel < LLViewerTexture::BOOST_SCULPTED && current_discard >= 0)
 		{
+			if(desired_discard_bias_max <= sDesiredDiscardBias && !mForceToSaveRawImage)
+			{
+				//needs to release texture memory urgently
+				scaleDown() ;
+			}
 			// Limit the amount of GL memory bound each frame
-			if ( BYTES_TO_MEGA_BYTES(sBoundTextureMemoryInBytes) > sMaxBoundTextureMemInMegaBytes * texmem_middle_bound_scale &&
+			else if ( BYTES_TO_MEGA_BYTES(sBoundTextureMemoryInBytes) > sMaxBoundTextureMemInMegaBytes * texmem_middle_bound_scale &&
 				(!getBoundRecently() || mDesiredDiscardLevel >= mCachedRawDiscardLevel))
 			{
 				scaleDown() ;
diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h
index a4a5ae0a5b7364a3ecfda4cd299812a5ba597a75..b96441127dc5f9c49ccd62255230956e465b972a 100644
--- a/indra/newview/llviewertexture.h
+++ b/indra/newview/llviewertexture.h
@@ -267,6 +267,7 @@ class LLViewerTexture : public LLTexture
 	/*virtual*/ LLImageGL* getGLTexture() const ;
 	virtual void switchToCachedImage();
 	
+	static bool isMemoryForTextureLow() ;
 protected:
 	LLUUID mID;
 	S32 mBoostLevel;				// enum describing priority level
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 30ef8b8a292b23b3a89022e68b425e93e8847d24..089f45ca899ae58eea2c7f36a0b4f81bd8d351ed 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -530,9 +530,12 @@ void LLViewerTextureList::removeImageFromList(LLViewerFetchedTexture *image)
 		}
 		llerrs << "LLViewerTextureList::removeImageFromList - Image not in list" << llendl;
 	}
-	if(mImageList.erase(image) != 1) 
+
+	S32 count = mImageList.erase(image) ;
+	if(count != 1) 
 	{
-		llerrs << "Error happens when remove image from mImageList!" << llendl ;
+		llinfos << image->getID() << llendl ;
+		llerrs << "Error happens when remove image from mImageList: " << count << llendl ;
 	}
       
 	image->setInImageList(FALSE) ;
@@ -586,6 +589,11 @@ void LLViewerTextureList::dirtyImage(LLViewerFetchedTexture *image)
 
 ////////////////////////////////////////////////////////////////////////////
 static LLFastTimer::DeclareTimer FTM_IMAGE_MARK_DIRTY("Dirty Images");
+static LLFastTimer::DeclareTimer FTM_IMAGE_UPDATE_PRIORITIES("Prioritize");
+static LLFastTimer::DeclareTimer FTM_IMAGE_CALLBACKS("Callbacks");
+static LLFastTimer::DeclareTimer FTM_IMAGE_FETCH("Fetch");
+static LLFastTimer::DeclareTimer FTM_IMAGE_CREATE("Create");
+static LLFastTimer::DeclareTimer FTM_IMAGE_STATS("Stats");
 
 void LLViewerTextureList::updateImages(F32 max_time)
 {
@@ -597,14 +605,25 @@ void LLViewerTextureList::updateImages(F32 max_time)
 	LLViewerStats::getInstance()->mGLBoundMemStat.addValue((F32)BYTES_TO_MEGA_BYTES(LLImageGL::sBoundTextureMemoryInBytes));
 	LLViewerStats::getInstance()->mRawMemStat.addValue((F32)BYTES_TO_MEGA_BYTES(LLImageRaw::sGlobalRawMemory));
 	LLViewerStats::getInstance()->mFormattedMemStat.addValue((F32)BYTES_TO_MEGA_BYTES(LLImageFormatted::sGlobalFormattedMemory));
-	
-	updateImagesDecodePriorities();
+
+
+	{
+		LLFastTimer t(FTM_IMAGE_UPDATE_PRIORITIES);
+		updateImagesDecodePriorities();
+	}
 
 	F32 total_max_time = max_time;
-	max_time -= updateImagesFetchTextures(max_time);
+
+	{
+		LLFastTimer t(FTM_IMAGE_FETCH);
+		max_time -= updateImagesFetchTextures(max_time);
+	}
 	
-	max_time = llmax(max_time, total_max_time*.50f); // at least 50% of max_time
-	max_time -= updateImagesCreateTextures(max_time);
+	{
+		LLFastTimer t(FTM_IMAGE_CREATE);
+		max_time = llmax(max_time, total_max_time*.50f); // at least 50% of max_time
+		max_time -= updateImagesCreateTextures(max_time);
+	}
 	
 	if (!mDirtyTextureList.empty())
 	{
@@ -612,24 +631,32 @@ void LLViewerTextureList::updateImages(F32 max_time)
 		gPipeline.dirtyPoolObjectTextures(mDirtyTextureList);
 		mDirtyTextureList.clear();
 	}
-	bool didone = false;
-	for (image_list_t::iterator iter = mCallbackList.begin();
-		iter != mCallbackList.end(); )
+
 	{
-		//trigger loaded callbacks on local textures immediately
-		LLViewerFetchedTexture* image = *iter++;
-		if (!image->getUrl().empty())
+		LLFastTimer t(FTM_IMAGE_CALLBACKS);
+		bool didone = false;
+		for (image_list_t::iterator iter = mCallbackList.begin();
+			iter != mCallbackList.end(); )
 		{
-			// Do stuff to handle callbacks, update priorities, etc.
-			didone = image->doLoadedCallbacks();
-		}
-		else if (!didone)
-		{
-			// Do stuff to handle callbacks, update priorities, etc.
-			didone = image->doLoadedCallbacks();
+			//trigger loaded callbacks on local textures immediately
+			LLViewerFetchedTexture* image = *iter++;
+			if (!image->getUrl().empty())
+			{
+				// Do stuff to handle callbacks, update priorities, etc.
+				didone = image->doLoadedCallbacks();
+			}
+			else if (!didone)
+			{
+				// Do stuff to handle callbacks, update priorities, etc.
+				didone = image->doLoadedCallbacks();
+			}
 		}
 	}
-	updateImagesUpdateStats();
+
+	{
+		LLFastTimer t(FTM_IMAGE_STATS);
+		updateImagesUpdateStats();
+	}
 }
 
 void LLViewerTextureList::updateImagesDecodePriorities()
@@ -747,7 +774,6 @@ void LLViewerTextureList::updateImagesDecodePriorities()
  return type_from_host;
  }
  */
-static LLFastTimer::DeclareTimer FTM_IMAGE_CREATE("Create Images");
 
 F32 LLViewerTextureList::updateImagesCreateTextures(F32 max_time)
 {
@@ -757,8 +783,7 @@ F32 LLViewerTextureList::updateImagesCreateTextures(F32 max_time)
 	// Create GL textures for all textures that need them (images which have been
 	// decoded, but haven't been pushed into GL).
 	//
-	LLFastTimer t(FTM_IMAGE_CREATE);
-	
+		
 	LLTimer create_timer;
 	image_list_t::iterator enditer = mCreateTextureList.begin();
 	for (image_list_t::iterator iter = mCreateTextureList.begin();
@@ -895,6 +920,8 @@ void LLViewerTextureList::decodeAllImages(F32 max_time)
 		image_list.push_back(imagep);
 		imagep->setInImageList(FALSE) ;
 	}
+
+	llassert_always(image_list.size() == mImageList.size()) ;
 	mImageList.clear();
 	for (std::vector<LLPointer<LLViewerFetchedTexture> >::iterator iter = image_list.begin();
 		 iter != image_list.end(); ++iter)
@@ -1053,6 +1080,13 @@ S32 LLViewerTextureList::getMaxVideoRamSetting(bool get_recommended)
 		// Treat any card with < 32 MB (shudder) as having 32 MB
 		//  - it's going to be swapping constantly regardless
 		S32 max_vram = gGLManager.mVRAM;
+
+		if(gGLManager.mIsATI)
+		{
+			//shrink the availabe vram for ATI cards because some of them do not handel texture swapping well.
+			max_vram = (S32)(max_vram * 0.75f);  
+		}
+
 		max_vram = llmax(max_vram, getMinVideoRamSetting());
 		max_texmem = max_vram;
 		if (!get_recommended)
@@ -1060,10 +1094,19 @@ S32 LLViewerTextureList::getMaxVideoRamSetting(bool get_recommended)
 	}
 	else
 	{
-		if (get_recommended)
-			max_texmem = 128;
-		else
+		if (!get_recommended)
+		{
+			max_texmem = 512;
+		}
+		else if (gSavedSettings.getBOOL("NoHardwareProbe")) //did not do hardware detection at startup
+		{
 			max_texmem = 512;
+		}
+		else
+		{
+			max_texmem = 128;
+		}
+
 		llwarns << "VRAM amount not detected, defaulting to " << max_texmem << " MB" << llendl;
 	}
 
@@ -1342,7 +1385,8 @@ LLUIImagePtr LLUIImageList::getUIImageByID(const LLUUID& image_id, S32 priority)
 
 	const BOOL use_mips = FALSE;
 	const LLRect scale_rect = LLRect::null;
-	return loadUIImageByID(image_id, use_mips, scale_rect, (LLViewerTexture::EBoostLevel)priority);
+	const LLRect clip_rect = LLRect::null;
+	return loadUIImageByID(image_id, use_mips, scale_rect, clip_rect, (LLViewerTexture::EBoostLevel)priority);
 }
 
 LLUIImagePtr LLUIImageList::getUIImage(const std::string& image_name, S32 priority)
@@ -1356,32 +1400,33 @@ LLUIImagePtr LLUIImageList::getUIImage(const std::string& image_name, S32 priori
 
 	const BOOL use_mips = FALSE;
 	const LLRect scale_rect = LLRect::null;
-	return loadUIImageByName(image_name, image_name, use_mips, scale_rect, (LLViewerTexture::EBoostLevel)priority);
+	const LLRect clip_rect = LLRect::null;
+	return loadUIImageByName(image_name, image_name, use_mips, scale_rect, clip_rect, (LLViewerTexture::EBoostLevel)priority);
 }
 
 LLUIImagePtr LLUIImageList::loadUIImageByName(const std::string& name, const std::string& filename,
-											  BOOL use_mips, const LLRect& scale_rect, LLViewerTexture::EBoostLevel boost_priority )
+											  BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority )
 {
 	if (boost_priority == LLViewerTexture::BOOST_NONE)
 	{
 		boost_priority = LLViewerTexture::BOOST_UI;
 	}
 	LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTextureFromFile(filename, MIPMAP_NO, boost_priority);
-	return loadUIImage(imagep, name, use_mips, scale_rect);
+	return loadUIImage(imagep, name, use_mips, scale_rect, clip_rect);
 }
 
 LLUIImagePtr LLUIImageList::loadUIImageByID(const LLUUID& id,
-											BOOL use_mips, const LLRect& scale_rect, LLViewerTexture::EBoostLevel boost_priority)
+											BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority)
 {
 	if (boost_priority == LLViewerTexture::BOOST_NONE)
 	{
 		boost_priority = LLViewerTexture::BOOST_UI;
 	}
 	LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTexture(id, MIPMAP_NO, boost_priority);
-	return loadUIImage(imagep, id.asString(), use_mips, scale_rect);
+	return loadUIImage(imagep, id.asString(), use_mips, scale_rect, clip_rect);
 }
 
-LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips, const LLRect& scale_rect)
+LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect)
 {
 	if (!imagep) return NULL;
 
@@ -1402,13 +1447,14 @@ LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const st
 		LLUIImageLoadData* datap = new LLUIImageLoadData;
 		datap->mImageName = name;
 		datap->mImageScaleRegion = scale_rect;
+		datap->mImageClipRegion = clip_rect;
 
 		imagep->setLoadedCallback(onUIImageLoaded, 0, FALSE, FALSE, datap, NULL);
 	}
 	return new_imagep;
 }
 
-LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect)
+LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect)
 {
 	// look for existing image
 	uuid_ui_image_map_t::iterator found_it = mUIImages.find(name);
@@ -1418,7 +1464,7 @@ LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::s
 		llerrs << "UI Image " << name << " already loaded." << llendl;
 	}
 
-	return loadUIImageByName(name, filename, use_mips, scale_rect);
+	return loadUIImageByName(name, filename, use_mips, scale_rect, clip_rect);
 }
 
 //static 
@@ -1432,6 +1478,7 @@ void LLUIImageList::onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_v
 	LLUIImageLoadData* image_datap = (LLUIImageLoadData*)user_data;
 	std::string ui_image_name = image_datap->mImageName;
 	LLRect scale_rect = image_datap->mImageScaleRegion;
+	LLRect clip_rect = image_datap->mImageClipRegion;
 	if (final)
 	{
 		delete image_datap;
@@ -1448,9 +1495,21 @@ void LLUIImageList::onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_v
 		// from power-of-2 gl image
 		if (success && imagep.notNull() && src_vi && (src_vi->getUrl().compare(0, 7, "file://")==0))
 		{
-			F32 clip_x = (F32)src_vi->getOriginalWidth() / (F32)src_vi->getFullWidth();
-			F32 clip_y = (F32)src_vi->getOriginalHeight() / (F32)src_vi->getFullHeight();
-			imagep->setClipRegion(LLRectf(0.f, clip_y, clip_x, 0.f));
+			F32 full_width = (F32)src_vi->getFullWidth();
+			F32 full_height = (F32)src_vi->getFullHeight();
+			F32 clip_x = (F32)src_vi->getOriginalWidth() / full_width;
+			F32 clip_y = (F32)src_vi->getOriginalHeight() / full_height;
+			if (clip_rect != LLRect::null)
+			{
+				imagep->setClipRegion(LLRectf(llclamp((F32)clip_rect.mLeft / full_width, 0.f, 1.f),
+											llclamp((F32)clip_rect.mTop / full_height, 0.f, 1.f),
+											llclamp((F32)clip_rect.mRight / full_width, 0.f, 1.f),
+											llclamp((F32)clip_rect.mBottom / full_height, 0.f, 1.f)));
+			}
+			else
+			{
+				imagep->setClipRegion(LLRectf(0.f, clip_y, clip_x, 0.f));
+			}
 			if (scale_rect != LLRect::null)
 			{
 				imagep->setScaleRegion(
@@ -1471,6 +1530,7 @@ struct UIImageDeclaration : public LLInitParam::Block<UIImageDeclaration>
 	Optional<std::string>	file_name;
 	Optional<bool>			preload;
 	Optional<LLRect>		scale;
+	Optional<LLRect>		clip;
 	Optional<bool>			use_mips;
 
 	UIImageDeclaration()
@@ -1478,6 +1538,7 @@ struct UIImageDeclaration : public LLInitParam::Block<UIImageDeclaration>
 		file_name("file_name"),
 		preload("preload", false),
 		scale("scale"),
+		clip("clip"),
 		use_mips("use_mips", false)
 	{}
 };
@@ -1572,7 +1633,7 @@ bool LLUIImageList::initFromFile()
 			{
 				continue;
 			}
-			preloadUIImage(image.name, file_name, image.use_mips, image.scale);
+			preloadUIImage(image.name, file_name, image.use_mips, image.scale, image.clip);
 		}
 
 		if (cur_pass == PASS_DECODE_NOW && !gSavedSettings.getBOOL("NoPreload"))
diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h
index 7f4dd0ae8898bf00d40bef251bb4376c079e2eaf..e0a362596d196a8f33c60f09a9259df7daaabbf2 100644
--- a/indra/newview/llviewertexturelist.h
+++ b/indra/newview/llviewertexturelist.h
@@ -220,24 +220,27 @@ class LLUIImageList : public LLImageProviderInterface, public LLSingleton<LLUIIm
 
 	bool initFromFile();
 
-	LLPointer<LLUIImage> preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect);
+	LLPointer<LLUIImage> preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect);
 	
 	static void onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata );
 private:
 	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);
 	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);
 
-	LLPointer<LLUIImage> loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null);
+	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);
 
 
 	struct LLUIImageLoadData
 	{
 		std::string mImageName;
 		LLRect mImageScaleRegion;
+		LLRect mImageClipRegion;
 	};
 
 	typedef std::map< std::string, LLPointer<LLUIImage> > uuid_ui_image_map_t;
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index a7f4209e696ac5e84886979a11fc886befa27712..8a713ae22cbaa6f32e76c1ad06eca6fb76099e48 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -36,6 +36,7 @@
 #include <iostream>
 #include <fstream>
 #include <algorithm>
+#include <boost/lambda/core.hpp>
 
 #include "llagent.h"
 #include "llagentcamera.h"
@@ -84,6 +85,7 @@
 // newview includes
 #include "llagent.h"
 #include "llbox.h"
+#include "llchicletbar.h"
 #include "llconsole.h"
 #include "llviewercontrol.h"
 #include "llcylinder.h"
@@ -128,11 +130,11 @@
 #include "llmorphview.h"
 #include "llmoveview.h"
 #include "llnavigationbar.h"
+#include "llpaneltopinfobar.h"
 #include "llpopupview.h"
 #include "llpreviewtexture.h"
 #include "llprogressview.h"
 #include "llresmgr.h"
-#include "llsidetray.h"
 #include "llselectmgr.h"
 #include "llrootview.h"
 #include "llrendersphere.h"
@@ -147,6 +149,7 @@
 #include "lltexturefetch.h"
 #include "lltextureview.h"
 #include "lltool.h"
+#include "lltoolbarview.h"
 #include "lltoolcomp.h"
 #include "lltooldraganddrop.h"
 #include "lltoolface.h"
@@ -186,7 +189,6 @@
 #include "llviewerjoystick.h"
 #include "llviewernetwork.h"
 #include "llpostprocess.h"
-#include "llbottomtray.h"
 #include "llnearbychatbar.h"
 #include "llagentui.h"
 #include "llwearablelist.h"
@@ -198,6 +200,7 @@
 #include "llfloaternotificationsconsole.h"
 
 #include "llnearbychat.h"
+#include "llwindowlistener.h"
 #include "llviewerwindowlistener.h"
 #include "llpaneltopinfobar.h"
 
@@ -487,6 +490,7 @@ class LLDebugText
 			{
 				F32 cost = 0.f;
 				S32 count = 0;
+				S32 vcount = 0;
 				S32 object_count = 0;
 				S32 total_bytes = 0;
 				S32 visible_bytes = 0;
@@ -508,7 +512,9 @@ class LLDebugText
 								S32 bytes = 0;	
 								S32 visible = 0;
 								cost += object->getStreamingCost(&bytes, &visible);
-								count += object->getTriangleCount();
+								S32 vt = 0;
+								count += object->getTriangleCount(&vt);
+								vcount += vt;
 								total_bytes += bytes;
 								visible_bytes += visible;
 							}
@@ -519,20 +525,20 @@ class LLDebugText
 				{
 					label = "Selection";
 					cost = LLSelectMgr::getInstance()->getSelection()->getSelectedObjectStreamingCost(&total_bytes, &visible_bytes);
-					count = LLSelectMgr::getInstance()->getSelection()->getSelectedObjectTriangleCount();
+					count = LLSelectMgr::getInstance()->getSelection()->getSelectedObjectTriangleCount(&vcount);
 					object_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount();
 				}
 					
 				addText(xpos,ypos, llformat("%s streaming cost: %.1f", label, cost));
 				ypos += y_inc;
 
-				addText(xpos, ypos, llformat("    %.3f KTris, %.1f/%.1f KB, %d objects",
-										count/1000.f, visible_bytes/1024.f, total_bytes/1024.f, object_count));
+				addText(xpos, ypos, llformat("    %.3f KTris, %.3f KVerts, %.1f/%.1f KB, %d objects",
+										count/1000.f, vcount/1000.f, visible_bytes/1024.f, total_bytes/1024.f, object_count));
 				ypos += y_inc;
 			
 			}
 
-			addText(xpos, ypos, llformat("%d MB Vertex Data", LLVertexBuffer::sAllocatedBytes/(1024*1024)));
+			addText(xpos, ypos, llformat("%d MB Vertex Data (%d MB Pooled)", LLVertexBuffer::sAllocatedBytes/(1024*1024), LLVBOPool::sBytesPooled/(1024*1024)));
 			ypos += y_inc;
 
 			addText(xpos, ypos, llformat("%d Vertex Buffers", LLVertexBuffer::sGLCount));
@@ -607,7 +613,9 @@ class LLDebugText
 				
 				addText(xpos, ypos, llformat("%d/%d Mesh HTTP Requests/Retries", LLMeshRepository::sHTTPRequestCount,
 					LLMeshRepository::sHTTPRetryCount));
-				
+				ypos += y_inc;
+
+				addText(xpos, ypos, llformat("%d/%d Mesh LOD Pending/Processing", LLMeshRepository::sLODPending, LLMeshRepository::sLODProcessing));
 				ypos += y_inc;
 
 				addText(xpos, ypos, llformat("%.3f/%.3f MB Mesh Cache Read/Write ", LLMeshRepository::sCacheBytesRead/(1024.f*1024.f), LLMeshRepository::sCacheBytesWritten/(1024.f*1024.f)));
@@ -735,37 +743,6 @@ class LLDebugText
 			}
 		}				
 
-		//temporary hack to give feedback on mesh upload progress
-		if (!gMeshRepo.mUploads.empty())
-		{
-			for (std::vector<LLMeshUploadThread*>::iterator iter = gMeshRepo.mUploads.begin(); 
-				iter != gMeshRepo.mUploads.end(); ++iter)
-			{
-				LLMeshUploadThread* thread = *iter;
-
-				addText(xpos, ypos, llformat("Mesh Uploads: %d", 
-								thread->mPendingUploads));
-				ypos += y_inc;
-			}
-		}
-
-		if (!gMeshRepo.mPendingRequests.empty() ||
-			!gMeshRepo.mThread->mHeaderReqQ.empty() ||
-			!gMeshRepo.mThread->mLODReqQ.empty())
-		{
-			LLMutexLock lock(gMeshRepo.mThread->mMutex);
-			S32 pending = (S32) gMeshRepo.mPendingRequests.size();
-			S32 header = (S32) gMeshRepo.mThread->mHeaderReqQ.size();
-			S32 lod = (S32) gMeshRepo.mThread->mLODReqQ.size();
-
-			addText(xpos, ypos, llformat ("Mesh Queue - %d pending (%d:%d header | %d:%d LOD)", 
-												pending,
-												LLMeshRepoThread::sActiveHeaderRequests, header,
-												LLMeshRepoThread::sActiveLODRequests, lod));
-
-			ypos += y_inc;
-		}
-		
 		if (gSavedSettings.getBOOL("DebugShowTextureInfo"))
 		{
 			LLViewerObject* objectp = NULL ;
@@ -836,6 +813,20 @@ void LLViewerWindow::updateDebugText()
 // LLViewerWindow
 //
 
+LLViewerWindow::Params::Params()
+:	title("title"),
+	name("name"),
+	x("x"),
+	y("y"),
+	width("width"),
+	height("height"),
+	min_width("min_width"),
+	min_height("min_height"),
+	fullscreen("fullscreen", false),
+	ignore_pixel_depth("ignore_pixel_depth", false)
+{}
+
+
 BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window,  LLCoordGL pos, MASK mask, LLMouseHandler::EClickType clicktype, BOOL down)
 {
 	const char* buttonname = "";
@@ -938,6 +929,11 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window,  LLCoordGL pos, MASK
 		//	}
 		//}
 
+		// Mark the click as handled and return if we aren't within the root view to avoid spurious bugs
+		if( !mRootView->pointInView(x, y) )
+		{
+			return TRUE;
+		}
 		// Give the UI views a chance to process the click
 		if( mRootView->handleAnyMouseClick(x, y, mask, clicktype, down) )
 		{
@@ -1212,7 +1208,8 @@ void LLViewerWindow::handleMouseMove(LLWindow *window,  LLCoordGL pos, MASK mask
 
 	mWindow->showCursorFromMouseMove();
 
-	if (gAwayTimer.getElapsedTimeF32() > LLAgent::MIN_AFK_TIME)
+	if (gAwayTimer.getElapsedTimeF32() > LLAgent::MIN_AFK_TIME
+		&& !gDisconnected)
 	{
 		gAgent.clearAFK();
 	}
@@ -1339,7 +1336,7 @@ BOOL LLViewerWindow::handleActivate(LLWindow *window, BOOL activated)
 {
 	if (activated)
 	{
-		mActive = TRUE;
+		mActive = true;
 		send_agent_resume();
 		gAgent.clearAFK();
 		
@@ -1348,7 +1345,7 @@ BOOL LLViewerWindow::handleActivate(LLWindow *window, BOOL activated)
 	}
 	else
 	{
-		mActive = FALSE;
+		mActive = false;
 				
 		// if the user has chosen to go Away automatically after some time, then go Away when minimizing
 		if (gSavedSettings.getS32("AFKTimeout"))
@@ -1524,17 +1521,13 @@ std::string LLViewerWindow::translateString(const char* tag,
 //
 // Classes
 //
-LLViewerWindow::LLViewerWindow(
-	const std::string& title, const std::string& name,
-	S32 x, S32 y,
-	S32 width, S32 height,
-	BOOL fullscreen, BOOL ignore_pixel_depth) // fullscreen is no longer used
-	:
-	mWindow(NULL),
-	mActive(TRUE),
-	mWindowRectRaw(0, height, width, 0),
-	mWindowRectScaled(0, height, width, 0),
-	mWorldViewRectRaw(0, height, width, 0),
+LLViewerWindow::LLViewerWindow(const Params& p)
+:	mWindow(NULL),
+	mActive(true),
+	mUIVisible(true),
+	mWindowRectRaw(0, p.height, p.width, 0),
+	mWindowRectScaled(0, p.height, p.width, 0),
+	mWorldViewRectRaw(0, p.height, p.width, 0),
 	mLeftMouseDown(FALSE),
 	mMiddleMouseDown(FALSE),
 	mRightMouseDown(FALSE),
@@ -1547,7 +1540,12 @@ LLViewerWindow::LLViewerWindow(
 	mResDirty(false),
 	mStatesDirty(false),
 	mCurrResolutionIndex(0),
-    mViewerWindowListener(new LLViewerWindowListener(this)),
+	// gKeyboard is still NULL, so it doesn't do LLWindowListener any good to
+	// pass its value right now. Instead, pass it a nullary function that
+	// will, when we later need it, return the value of gKeyboard.
+	// boost::lambda::var() constructs such a functor on the fly.
+	mWindowListener(new LLWindowListener(this, boost::lambda::var(gKeyboard))),
+	mViewerWindowListener(new LLViewerWindowListener(this)),
 	mProgressView(NULL)
 {
 	LLNotificationChannel::buildChannel("VW_alerts", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "alert"));
@@ -1565,14 +1563,20 @@ LLViewerWindow::LLViewerWindow(
 
 	// create window
 	mWindow = LLWindowManager::createWindow(this,
-		title, name, x, y, width, height, 0,
-		fullscreen, 
+		p.title, p.name, p.x, p.y, p.width, p.height, 0,
+		p.fullscreen, 
 		gHeadlessClient,
 		gSavedSettings.getBOOL("DisableVerticalSync"),
 		!gHeadlessClient,
-		ignore_pixel_depth,
+		p.ignore_pixel_depth,
 		gSavedSettings.getBOOL("RenderDeferred") ? 0 : gSavedSettings.getU32("RenderFSAASamples")); //don't use window level anti-aliasing if FBOs are enabled
 
+	if (!LLViewerShaderMgr::sInitialized)
+	{ //immediately initialize shaders
+		LLViewerShaderMgr::sInitialized = TRUE;
+		LLViewerShaderMgr::instance()->setShaders();
+	}
+
 	if (NULL == mWindow)
 	{
 		LLSplashScreen::update(LLTrans::getString("StartupRequireDriverUpdate"));
@@ -1597,10 +1601,12 @@ LLViewerWindow::LLViewerWindow(
 		LL_WARNS("Window") << " Someone took over my signal/exception handler (post createWindow)!" << LL_ENDL;
 	}
 
+	const bool do_not_enforce = false;
+	mWindow->setMinSize(p.min_width, p.min_height, do_not_enforce);  // root view not set 
 	LLCoordScreen scr;
     mWindow->getSize(&scr);
 
-    if(fullscreen && ( scr.mX!=width || scr.mY!=height))
+    if(p.fullscreen && ( scr.mX!=p.width || scr.mY!=p.height))
     {
 		llwarns << "Fullscreen has forced us in to a different resolution now using "<<scr.mX<<" x "<<scr.mY<<llendl;
 		gSavedSettings.setS32("FullScreenWidth",scr.mX);
@@ -1644,7 +1650,7 @@ LLViewerWindow::LLViewerWindow(
 
 	if (LLFeatureManager::getInstance()->isSafe()
 		|| (gSavedSettings.getS32("LastFeatureVersion") != LLFeatureManager::getInstance()->getVersion())
-		|| (gSavedSettings.getS32("LastGPUClass") != LLFeatureManager::getInstance()->getGPUClass())
+		|| (gSavedSettings.getString("LastGPUString") != LLFeatureManager::getInstance()->getGPUString())
 		|| (gSavedSettings.getBOOL("ProbeHardwareOnStartup")))
 	{
 		LLFeatureManager::getInstance()->applyRecommendedSettings();
@@ -1709,32 +1715,30 @@ LLViewerWindow::LLViewerWindow(
 void LLViewerWindow::initGLDefaults()
 {
 	gGL.setSceneBlendType(LLRender::BT_ALPHA);
-	glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE );
 
-	F32 ambient[4] = {0.f,0.f,0.f,0.f };
-	F32 diffuse[4] = {1.f,1.f,1.f,1.f };
-	glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,ambient);
-	glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,diffuse);
-	
-	glPixelStorei(GL_PACK_ALIGNMENT,1);
-	glPixelStorei(GL_UNPACK_ALIGNMENT,1);
+	if (!LLGLSLShader::sNoFixedFunction)
+	{ //initialize fixed function state
+		glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE );
 
-	gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE);
+		glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,LLColor4::black.mV);
+		glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,LLColor4::white.mV);
 
-	// lights for objects
-	glShadeModel( GL_SMOOTH );
+		// lights for objects
+		glShadeModel( GL_SMOOTH );
 
-	glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);
-	
-	gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+		gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE);
+		gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
+	}
+
+	glPixelStorei(GL_PACK_ALIGNMENT,1);
+	glPixelStorei(GL_UNPACK_ALIGNMENT,1);
 
+	gGL.setAmbientLightColor(LLColor4::black);
+		
 	glCullFace(GL_BACK);
 
 	// RN: Need this for translation and stretch manip.
-	gCone.prerender();
 	gBox.prerender();
-	gSphere.prerender();
-	gCylinder.prerender();
 }
 
 struct MainPanel : public LLPanel
@@ -1771,12 +1775,19 @@ void LLViewerWindow::initBase()
 
 	// placeholder widget that controls where "world" is rendered
 	mWorldViewPlaceholder = main_view->getChildView("world_view_rect")->getHandle();
-	mNonSideTrayView = main_view->getChildView("non_side_tray_view")->getHandle();
-	mFloaterViewHolder = main_view->getChildView("floater_view_holder")->getHandle();
 	mPopupView = main_view->getChild<LLPopupView>("popup_holder");
 	mHintHolder = main_view->getChild<LLView>("hint_holder")->getHandle();
 	mLoginPanelHolder = main_view->getChild<LLView>("login_panel_holder")->getHandle();
 
+	// Create the toolbar view
+	// Get a pointer to the toolbar view holder
+	LLPanel* panel_holder = main_view->getChild<LLPanel>("toolbar_view_holder");
+	// Load the toolbar view from file 
+	gToolBarView = LLUICtrlFactory::getInstance()->createFromFile<LLToolBarView>("panel_toolbar_view.xml", panel_holder, LLDefaultChildRegistry::instance());
+	gToolBarView->setShape(panel_holder->getLocalRect());
+	// Hide the toolbars for the moment: we'll make them visible after logging in world (see LLViewerWindow::initWorldUI())
+	gToolBarView->setVisible(FALSE);
+
 	// Constrain floaters to inside the menu and status bar regions.
 	gFloaterView = main_view->getChild<LLFloaterView>("Floater View");
 	gFloaterView->setFloaterSnapView(main_view->getChild<LLView>("floater_snap_region")->getHandle());
@@ -1836,13 +1847,12 @@ void LLViewerWindow::initWorldUI()
 	//getRootView()->sendChildToFront(gFloaterView);
 	//getRootView()->sendChildToFront(gSnapshotFloaterView);
 
-	// new bottom panel
-	LLPanel* bottom_tray_container = getRootView()->getChild<LLPanel>("bottom_tray_container");
-	LLBottomTray* bottom_tray = LLBottomTray::getInstance();
-	bottom_tray->setShape(bottom_tray_container->getLocalRect());
-	bottom_tray->setFollowsAll();
-	bottom_tray_container->addChild(bottom_tray);
-	bottom_tray_container->setVisible(TRUE);
+	LLPanel* chiclet_container = getRootView()->getChild<LLPanel>("chiclet_container");
+	LLChicletBar* chiclet_bar = LLChicletBar::getInstance();
+	chiclet_bar->setShape(chiclet_container->getLocalRect());
+	chiclet_bar->setFollowsAll();
+	chiclet_container->addChild(chiclet_bar);
+	chiclet_container->setVisible(TRUE);
 
 	LLRect morph_view_rect = full_window;
 	morph_view_rect.stretch( -STATUS_BAR_HEIGHT );
@@ -1870,7 +1880,7 @@ void LLViewerWindow::initWorldUI()
 	gStatusBar->setShape(status_bar_container->getLocalRect());
 	// sync bg color with menu bar
 	gStatusBar->setBackgroundColor( gMenuBarView->getBackgroundColor().get() );
-	status_bar_container->addChild(gStatusBar);
+	status_bar_container->addChildInBack(gStatusBar);
 	status_bar_container->setVisible(TRUE);
 
 	// Navigation bar
@@ -1884,12 +1894,7 @@ void LLViewerWindow::initWorldUI()
 	
 	if (!gSavedSettings.getBOOL("ShowNavbarNavigationPanel"))
 	{
-		navbar->showNavigationPanel(FALSE);
-	}
-
-	if (!gSavedSettings.getBOOL("ShowNavbarFavoritesPanel"))
-	{
-		navbar->showFavoritesPanel(FALSE);
+		navbar->setVisible(FALSE);
 	}
 
 	// Top Info bar
@@ -1915,8 +1920,7 @@ void LLViewerWindow::initWorldUI()
 			hud_rect.mTop -= gMenuBarView->getRect().getHeight();
 		}
 		gHUDView = new LLHUDView(hud_rect);
-		// put behind everything else in the UI
-		getRootView()->addChildInBack(gHUDView);
+		getRootView()->addChild(gHUDView);
 	}
 
 	LLPanel* panel_ssf_container = getRootView()->getChild<LLPanel>("stand_stop_flying_container");
@@ -1924,40 +1928,30 @@ void LLViewerWindow::initWorldUI()
 	panel_ssf_container->addChild(panel_stand_stop_flying);
 	panel_ssf_container->setVisible(TRUE);
 
-	// put sidetray in container
-	LLPanel* side_tray_container = getRootView()->getChild<LLPanel>("side_tray_container");
-	LLSideTray* sidetrayp = LLSideTray::getInstance();
-	sidetrayp->setShape(side_tray_container->getLocalRect());
-	// don't follow right edge to avoid spurious resizes, since we are using a fixed width layout
-	sidetrayp->setFollows(FOLLOWS_LEFT|FOLLOWS_TOP|FOLLOWS_BOTTOM);
-	side_tray_container->addChild(sidetrayp);
-	side_tray_container->setVisible(FALSE);
-	
-	// put sidetray buttons in their own panel
-	LLPanel* buttons_panel = sidetrayp->getButtonsPanel();
-	LLPanel* buttons_panel_container = getRootView()->getChild<LLPanel>("side_bar_tabs");
-	buttons_panel->setShape(buttons_panel_container->getLocalRect());
-	buttons_panel->setFollowsAll();
-	buttons_panel_container->addChild(buttons_panel);
-
-	LLView* avatar_picker_destination_guide_container = gViewerWindow->getRootView()->getChild<LLView>("avatar_picker_and_destination_guide_container");
-	avatar_picker_destination_guide_container->getChild<LLButton>("close")->setCommitCallback(boost::bind(toggle_destination_and_avatar_picker, LLSD()));
-	LLMediaCtrl* destinations = avatar_picker_destination_guide_container->findChild<LLMediaCtrl>("destination_guide_contents");
-	LLMediaCtrl* avatar_picker = avatar_picker_destination_guide_container->findChild<LLMediaCtrl>("avatar_picker_contents");
+	// Load and make the toolbars visible
+	// Note: we need to load the toolbars only *after* the user is logged in and IW
+	if (gToolBarView)
+	{
+		gToolBarView->loadToolbars();
+		gToolBarView->setVisible(TRUE);
+	}
+
+	LLMediaCtrl* destinations = LLFloaterReg::getInstance("destinations")->getChild<LLMediaCtrl>("destination_guide_contents");
 	if (destinations)
 	{
 		destinations->setErrorPageURL(gSavedSettings.getString("GenericErrorPageURL"));
-		destinations->navigateTo(gSavedSettings.getString("DestinationGuideURL"), "text/html");
+		std::string url = gSavedSettings.getString("DestinationGuideURL");
+		url = LLWeb::expandURLSubstitutions(url, LLSD());
+		destinations->navigateTo(url, "text/html");
 	}
-
+	LLMediaCtrl* avatar_picker = LLFloaterReg::getInstance("avatar")->findChild<LLMediaCtrl>("avatar_picker_contents");
 	if (avatar_picker)
 	{
 		avatar_picker->setErrorPageURL(gSavedSettings.getString("GenericErrorPageURL"));
-		avatar_picker->navigateTo(gSavedSettings.getString("AvatarPickerURL"), "text/html");
+		std::string url = gSavedSettings.getString("AvatarPickerURL");
+		url = LLWeb::expandURLSubstitutions(url, LLSD());
+		avatar_picker->navigateTo(url, "text/html");
 	}
-
-	// show destinations by default
-	toggle_destination_and_avatar_picker(gSavedSettings.getS32("DestinationsAndAvatarsVisibility"));
 }
 
 // Destroy the UI
@@ -1966,39 +1960,49 @@ void LLViewerWindow::shutdownViews()
 	// clean up warning logger
 	LLError::removeRecorder(RecordToChatConsole::getInstance());
 
+	llinfos << "Warning logger is cleaned." << llendl ;
+
 	delete mDebugText;
 	mDebugText = NULL;
 	
+	llinfos << "DebugText deleted." << llendl ;
+
 	// Cleanup global views
 	if (gMorphView)
 	{
 		gMorphView->setVisible(FALSE);
 	}
-
+	llinfos << "Global views cleaned." << llendl ;
+	
 	// DEV-40930: Clear sModalStack. Otherwise, any LLModalDialog left open
 	// will crump with LL_ERRS.
 	LLModalDialog::shutdownModals();
-	
+	llinfos << "LLModalDialog shut down." << llendl; 
+
 	// destroy the nav bar, not currently part of gViewerWindow
 	// *TODO: Make LLNavigationBar part of gViewerWindow
 	if (LLNavigationBar::instanceExists())
 	{
-	delete LLNavigationBar::getInstance();
+		delete LLNavigationBar::getInstance();
 	}
-
+	llinfos << "LLNavigationBar destroyed." << llendl ;
+	
 	// destroy menus after instantiating navbar above, as it needs
 	// access to gMenuHolder
 	cleanup_menus();
-
+	llinfos << "menus destroyed." << llendl ;
+	
 	// Delete all child views.
 	delete mRootView;
 	mRootView = NULL;
-
+	llinfos << "RootView deleted." << llendl ;
+	
 	// Automatically deleted as children of mRootView.  Fix the globals.
 	gStatusBar = NULL;
 	gIMMgr = NULL;
 	gToolTipView = NULL;
 
+	gToolBarView = NULL;
 	gFloaterView = NULL;
 	gMorphView = NULL;
 
@@ -2149,16 +2153,19 @@ void LLViewerWindow::reshape(S32 width, S32 height)
 		sendShapeToSim();
 
 		// store new settings for the mode we are in, regardless
-		// Only save size if not maximized
 		BOOL maximized = mWindow->getMaximized();
 		gSavedSettings.setBOOL("WindowMaximized", maximized);
 
-		LLCoordScreen window_size;
-		if (!maximized
-			&& mWindow->getSize(&window_size))
+		if (!maximized)
 		{
-			gSavedSettings.setS32("WindowWidth", window_size.mX);
-			gSavedSettings.setS32("WindowHeight", window_size.mY);
+			U32 min_window_width=gSavedSettings.getU32("MinWindowWidth");
+			U32 min_window_height=gSavedSettings.getU32("MinWindowHeight");
+			// tell the OS specific window code about min window size
+			mWindow->setMinSize(min_window_width, min_window_height);
+
+			// Only save size if not maximized
+			gSavedSettings.setU32("WindowWidth", mWindowRectRaw.getWidth());
+			gSavedSettings.setU32("WindowHeight", mWindowRectRaw.getHeight());
 		}
 
 		LLViewerStats::getInstance()->setStat(LLViewerStats::ST_WINDOW_WIDTH, (F64)width);
@@ -2170,10 +2177,10 @@ void LLViewerWindow::reshape(S32 width, S32 height)
 // Hide normal UI when a logon fails
 void LLViewerWindow::setNormalControlsVisible( BOOL visible )
 {
-	if(LLBottomTray::instanceExists())
+	if(LLChicletBar::instanceExists())
 	{
-		LLBottomTray::getInstance()->setVisible(visible);
-		LLBottomTray::getInstance()->setEnabled(visible);
+		LLChicletBar::getInstance()->setVisible(visible);
+		LLChicletBar::getInstance()->setEnabled(visible);
 	}
 
 	if ( gMenuBarView )
@@ -2195,7 +2202,9 @@ void LLViewerWindow::setNormalControlsVisible( BOOL visible )
 	LLNavigationBar* navbarp = LLUI::getRootView()->findChild<LLNavigationBar>("navigation_bar");
 	if (navbarp)
 	{
-		navbarp->setVisible( visible );
+		// when it's time to show navigation bar we need to ensure that the user wants to see it
+		// i.e. ShowNavbarNavigationPanel option is true
+		navbarp->setVisible( visible && gSavedSettings.getBOOL("ShowNavbarNavigationPanel") );
 	}
 }
 
@@ -2246,6 +2255,10 @@ void LLViewerWindow::drawDebugText()
 	gGL.color4f(1,1,1,1);
 	gGL.pushMatrix();
 	gGL.pushUIMatrix();
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gUIProgram.bind();
+	}
 	{
 		// scale view by UI global scale factor and aspect ratio correction factor
 		gGL.scaleUI(mDisplayScale.mV[VX], mDisplayScale.mV[VY], 1.f);
@@ -2255,6 +2268,10 @@ void LLViewerWindow::drawDebugText()
 	gGL.popMatrix();
 
 	gGL.flush();
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gUIProgram.unbind();
+	}
 }
 
 void LLViewerWindow::draw()
@@ -2269,9 +2286,9 @@ void LLViewerWindow::draw()
 
 	LLUI::setLineWidth(1.f);
 	// Reset any left-over transforms
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	
-	glLoadIdentity();
+	gGL.loadIdentity();
 
 	//S32 screen_x, screen_y;
 
@@ -2286,7 +2303,7 @@ void LLViewerWindow::draw()
 		// draw timecode block
 		std::string text;
 
-		glLoadIdentity();
+		gGL.loadIdentity();
 
 		microsecondsToTimecodeString(gFrameTime,text);
 		const LLFontGL* font = LLFontGL::getFontSansSerif();
@@ -2322,10 +2339,10 @@ void LLViewerWindow::draw()
 			int pos_y = sub_region / llceil(zoom_factor);
 			int pos_x = sub_region - (pos_y*llceil(zoom_factor));
 			// offset for this tile
-			glTranslatef((F32)getWindowWidthScaled() * -(F32)pos_x, 
+			gGL.translatef((F32)getWindowWidthScaled() * -(F32)pos_x, 
 						(F32)getWindowHeightScaled() * -(F32)pos_y, 
 						0.f);
-			glScalef(zoom_factor, zoom_factor, 1.f);
+			gGL.scalef(zoom_factor, zoom_factor, 1.f);
 			LLUI::sGLScaleFactor *= zoom_factor;
 		}
 
@@ -2354,7 +2371,7 @@ void LLViewerWindow::draw()
 			S32 screen_x, screen_y;
 			top_ctrl->localPointToScreen(0, 0, &screen_x, &screen_y);
 
-			glMatrixMode(GL_MODELVIEW);
+			gGL.matrixMode(LLRender::MM_MODELVIEW);
 			LLUI::pushMatrix();
 			LLUI::translate( (F32) screen_x, (F32) screen_y, 0.f);
 			top_ctrl->draw();	
@@ -2466,7 +2483,12 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
 	// Traverses up the hierarchy
 	if( keyboard_focus )
 	{
-		LLLineEditor* chat_editor = LLBottomTray::instanceExists() ? LLBottomTray::getInstance()->getNearbyChatBar()->getChatBox() : NULL;
+		LLNearbyChatBar* nearby_chat = LLFloaterReg::findTypedInstance<LLNearbyChatBar>("chat_bar");
+
+		if (nearby_chat)
+		{
+			LLLineEditor* chat_editor = nearby_chat->getChatBox();
+		
 		// arrow keys move avatar while chatting hack
 		if (chat_editor && chat_editor->hasFocus())
 		{
@@ -2497,7 +2519,7 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
 				}
 			}
 		}
-
+		}
 		if (keyboard_focus->handleKey(key, mask, FALSE))
 		{
 			return TRUE;
@@ -2528,11 +2550,11 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask)
 	if ( gSavedSettings.getS32("LetterKeysFocusChatBar") && !gAgentCamera.cameraMouselook() && 
 		!keyboard_focus && key < 0x80 && (mask == MASK_NONE || mask == MASK_SHIFT) )
 	{
-		LLLineEditor* chat_editor = LLBottomTray::instanceExists() ? LLBottomTray::getInstance()->getNearbyChatBar()->getChatBox() : NULL;
+		LLLineEditor* chat_editor = LLFloaterReg::getTypedInstance<LLNearbyChatBar>("chat_bar")->getChatBox();
 		if (chat_editor)
 		{
 			// passing NULL here, character will be added later when it is handled by character handler.
-			LLBottomTray::getInstance()->getNearbyChatBar()->startChat(NULL);
+			LLNearbyChatBar::getInstance()->startChat(NULL);
 			return TRUE;
 		}
 	}
@@ -3159,7 +3181,7 @@ void LLViewerWindow::updateLayout()
 		//gMenuBarView->setItemVisible("BuildTools", gFloaterTools->getVisible());
 	}
 
-	LLFloaterBuildOptions* build_options_floater = LLFloaterReg::getTypedInstance<LLFloaterBuildOptions>("build_options");
+	LLFloaterBuildOptions* build_options_floater = LLFloaterReg::findTypedInstance<LLFloaterBuildOptions>("build_options");
 	if (build_options_floater && build_options_floater->getVisible())
 	{
 		build_options_floater->updateGridMode();
@@ -3303,9 +3325,6 @@ void LLViewerWindow::updateKeyboardFocus()
 		// make sure floater visible order is in sync with tab order
 		gFloaterView->syncFloaterTabOrder();
 	}
-
-	if(LLSideTray::instanceCreated())//just getInstance will create sidetray. we don't want this
-		LLSideTray::getInstance()->highlightFocused();
 }
 
 static LLFastTimer::DeclareTimer FTM_UPDATE_WORLD_VIEW("Update World View");
@@ -3329,12 +3348,6 @@ void LLViewerWindow::updateWorldViewRect(bool use_full_window)
 		new_world_rect.mTop = llround((F32)new_world_rect.mTop * mDisplayScale.mV[VY]);
 	}
 
-	if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE)
-	{
-		// use right edge of window, ignoring sidebar
-		new_world_rect.mRight = mWindowRectRaw.mRight;
-	}
-
 	if (mWorldViewRectRaw != new_world_rect)
 	{
 		mWorldViewRectRaw = new_world_rect;
@@ -3418,17 +3431,17 @@ void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls,
 			LLBBox hud_bbox = gAgentAvatarp->getHUDBBox();
 
 			// set up transform to encompass bounding box of HUD
-			glMatrixMode(GL_PROJECTION);
-			glPushMatrix();
-			glLoadIdentity();
+			gGL.matrixMode(LLRender::MM_PROJECTION);
+			gGL.pushMatrix();
+			gGL.loadIdentity();
 			F32 depth = llmax(1.f, hud_bbox.getExtentLocal().mV[VX] * 1.1f);
-			glOrtho(-0.5f * LLViewerCamera::getInstance()->getAspect(), 0.5f * LLViewerCamera::getInstance()->getAspect(), -0.5f, 0.5f, 0.f, depth);
+			gGL.ortho(-0.5f * LLViewerCamera::getInstance()->getAspect(), 0.5f * LLViewerCamera::getInstance()->getAspect(), -0.5f, 0.5f, 0.f, depth);
 			
-			glMatrixMode(GL_MODELVIEW);
-			glPushMatrix();
-			glLoadIdentity();
-			glLoadMatrixf(OGL_TO_CFR_ROTATION);		// Load Cory's favorite reference frame
-			glTranslatef(-hud_bbox.getCenterLocal().mV[VX] + (depth *0.5f), 0.f, 0.f);
+			gGL.matrixMode(LLRender::MM_MODELVIEW);
+			gGL.pushMatrix();
+			gGL.loadIdentity();
+			gGL.loadMatrix(OGL_TO_CFR_ROTATION);		// Load Cory's favorite reference frame
+			gGL.translatef(-hud_bbox.getCenterLocal().mV[VX] + (depth *0.5f), 0.f, 0.f);
 		}
 
 		// Render light for editing
@@ -3438,12 +3451,12 @@ void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls,
 			LLGLEnable gls_blend(GL_BLEND);
 			LLGLEnable gls_cull(GL_CULL_FACE);
 			LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE);
-			glMatrixMode(GL_MODELVIEW);
-			glPushMatrix();
+			gGL.matrixMode(LLRender::MM_MODELVIEW);
+			gGL.pushMatrix();
 			if (selection->getSelectType() == SELECT_TYPE_HUD)
 			{
 				F32 zoom = gAgentCamera.mHUDCurZoom;
-				glScalef(zoom, zoom, zoom);
+				gGL.scalef(zoom, zoom, zoom);
 			}
 
 			struct f : public LLSelectedObjectFunctor
@@ -3454,33 +3467,33 @@ void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls,
 					if (drawable && drawable->isLight())
 					{
 						LLVOVolume* vovolume = drawable->getVOVolume();
-						glPushMatrix();
+						gGL.pushMatrix();
 
 						LLVector3 center = drawable->getPositionAgent();
-						glTranslatef(center[0], center[1], center[2]);
+						gGL.translatef(center[0], center[1], center[2]);
 						F32 scale = vovolume->getLightRadius();
-						glScalef(scale, scale, scale);
+						gGL.scalef(scale, scale, scale);
 
 						LLColor4 color(vovolume->getLightColor(), .5f);
-						glColor4fv(color.mV);
+						gGL.color4fv(color.mV);
 					
-						F32 pixel_area = 100000.f;
+						//F32 pixel_area = 100000.f;
 						// Render Outside
-						gSphere.render(pixel_area);
+						gSphere.render();
 
 						// Render Inside
 						glCullFace(GL_FRONT);
-						gSphere.render(pixel_area);
+						gSphere.render();
 						glCullFace(GL_BACK);
 					
-						glPopMatrix();
+						gGL.popMatrix();
 					}
 					return true;
 				}
 			} func;
 			LLSelectMgr::getInstance()->getSelection()->applyToObjects(&func);
 			
-			glPopMatrix();
+			gGL.popMatrix();
 		}				
 		
 		// NOTE: The average position for the axis arrows of the selected objects should
@@ -3543,11 +3556,11 @@ void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls,
 			}
 			if (selection->getSelectType() == SELECT_TYPE_HUD && selection->getObjectCount())
 			{
-				glMatrixMode(GL_PROJECTION);
-				glPopMatrix();
+				gGL.matrixMode(LLRender::MM_PROJECTION);
+				gGL.popMatrix();
 
-				glMatrixMode(GL_MODELVIEW);
-				glPopMatrix();
+				gGL.matrixMode(LLRender::MM_MODELVIEW);
+				gGL.popMatrix();
 				stop_glerror();
 			}
 		}
@@ -4014,10 +4027,11 @@ BOOL LLViewerWindow::mousePointOnLandGlobal(const S32 x, const S32 y, LLVector3d
 }
 
 // Saves an image to the harddrive as "SnapshotX" where X >= 1.
-BOOL LLViewerWindow::saveImageNumbered(LLImageFormatted *image)
+BOOL LLViewerWindow::saveImageNumbered(LLImageFormatted *image, bool force_picker)
 {
 	if (!image)
 	{
+		llwarns << "No image to save" << llendl;
 		return FALSE;
 	}
 
@@ -4037,7 +4051,7 @@ BOOL LLViewerWindow::saveImageNumbered(LLImageFormatted *image)
 		pick_type = LLFilePicker::FFSAVE_ALL; // ???
 	
 	// Get a base file location if needed.
-	if ( ! isSnapshotLocSet())		
+	if (force_picker || !isSnapshotLocSet())
 	{
 		std::string proposed_name( sSnapshotBaseName );
 
@@ -4077,6 +4091,7 @@ BOOL LLViewerWindow::saveImageNumbered(LLImageFormatted *image)
 	}
 	while( -1 != err );  // search until the file is not found (i.e., stat() gives an error).
 
+	llinfos << "Saving snapshot to " << filepath << llendl;
 	return image->save(filepath);
 }
 
@@ -4085,25 +4100,18 @@ void LLViewerWindow::resetSnapshotLoc()
 	sSnapshotDir.clear();
 }
 
-static S32 BORDERHEIGHT = 0;
-static S32 BORDERWIDTH = 0;
-
 // static
 void LLViewerWindow::movieSize(S32 new_width, S32 new_height)
 {
-	LLCoordScreen size;
-	gViewerWindow->mWindow->getSize(&size);
-	if (  (size.mX != new_width + BORDERWIDTH)
-		||(size.mY != new_height + BORDERHEIGHT))
+	LLCoordWindow size;
+	gViewerWindow->getWindow()->getSize(&size);
+	if ( size.mX != new_width
+		|| size.mY != new_height)
 	{
-		// use actual display dimensions, not virtual UI dimensions
-		S32 x = gViewerWindow->getWindowWidthRaw();
-		S32 y = gViewerWindow->getWindowHeightRaw();
-		BORDERWIDTH = size.mX - x;
-		BORDERHEIGHT = size.mY- y;
-		LLCoordScreen new_size(new_width + BORDERWIDTH, 
-							   new_height + BORDERHEIGHT);
-		gViewerWindow->mWindow->setSize(new_size);
+		LLCoordWindow new_size(new_width, new_height);
+		LLCoordScreen screen_size;
+		gViewerWindow->getWindow()->convertCoords(new_size, &screen_size);
+		gViewerWindow->getWindow()->setSize(screen_size);
 	}
 }
 
@@ -4661,10 +4669,7 @@ void LLViewerWindow::stopGL(BOOL save_state)
 			gPipeline.destroyGL();
 		}
 		
-		gCone.cleanupGL();
 		gBox.cleanupGL();
-		gSphere.cleanupGL();
-		gCylinder.cleanupGL();
 		
 		if(gPostProcess)
 		{
@@ -4738,6 +4743,9 @@ void LLViewerWindow::initFonts(F32 zoom_factor)
 {
 	LLFontGL::destroyAllGL();
 	// Initialize with possibly different zoom factor
+
+	LLFontManager::initClass();
+
 	LLFontGL::initClass( gSavedSettings.getF32("FontScreenDPI"),
 								mDisplayScale.mV[VX] * zoom_factor,
 								mDisplayScale.mV[VY] * zoom_factor,
@@ -4930,8 +4938,8 @@ S32 LLViewerWindow::getChatConsoleBottomPad()
 {
 	S32 offset = 0;
 
-	if(LLBottomTray::instanceExists())
-		offset += LLBottomTray::getInstance()->getRect().getHeight();
+	if(gToolBarView)
+		offset += gToolBarView->getChild<LLView>("bottom_toolbar_panel")->getRect().getHeight();
 
 	return offset;
 }
@@ -4987,6 +4995,35 @@ bool LLViewerWindow::onAlert(const LLSD& notify)
 	return false;
 }
 
+void LLViewerWindow::setUIVisibility(bool visible)
+{
+	mUIVisible = visible;
+
+	if (!visible)
+	{
+		gAgentCamera.changeCameraToThirdPerson(FALSE);
+		gFloaterView->hideAllFloaters();
+	}
+	else
+	{
+		gFloaterView->showHiddenFloaters();
+	}
+
+	if (gToolBarView)
+	{
+		gToolBarView->setToolBarsVisible(visible);
+	}
+
+	LLNavigationBar::getInstance()->setVisible(visible ? gSavedSettings.getBOOL("ShowNavbarNavigationPanel") : FALSE);
+	LLPanelTopInfoBar::getInstance()->setVisible(visible? gSavedSettings.getBOOL("ShowMiniLocationPanel") : FALSE);
+	mRootView->getChildView("status_bar_container")->setVisible(visible);
+}
+
+bool LLViewerWindow::getUIVisibility()
+{
+	return mUIVisible;
+}
+
 ////////////////////////////////////////////////////////////////////////////
 //
 // LLPickInfo
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index edd241a742aeae6c6e9cf5379c916b98a7a1762d..6efcaeaf18add8c01ba20c0d8912547e4c8edb0d 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -44,6 +44,7 @@
 #include "llstat.h"
 #include "llmousehandler.h"
 #include "llhandle.h"
+#include "llinitparam.h"
 
 #include <boost/function.hpp>
 #include <boost/signals2.hpp>
@@ -62,6 +63,7 @@ class LLImageFormatted;
 class LLHUDIcon;
 class LLWindow;
 class LLRootView;
+class LLWindowListener;
 class LLViewerWindowListener;
 class LLPopupView;
 
@@ -132,7 +134,23 @@ class LLViewerWindow : public LLWindowCallbacks
 	//
 	// CREATORS
 	//
-	LLViewerWindow(const std::string& title, const std::string& name, S32 x, S32 y, S32 width, S32 height, BOOL fullscreen, BOOL ignore_pixel_depth);
+	struct Params : public LLInitParam::Block<Params>
+	{
+		Mandatory<std::string>		title,
+									name;
+		Mandatory<S32>				x,
+									y,
+									width,
+									height,
+									min_width,
+									min_height;
+		Optional<bool>				fullscreen,
+									ignore_pixel_depth;
+
+		Params();
+	};
+
+	LLViewerWindow(const Params& p);
 	virtual ~LLViewerWindow();
 
 	void			shutdownViews();
@@ -143,6 +161,8 @@ class LLViewerWindow : public LLWindowCallbacks
 	void			adjustRectanglesForFirstUse(const LLRect& window);
 	void            adjustControlRectanglesForFirstUse(const LLRect& window);
 	void			initWorldUI();
+	void			setUIVisibility(bool);
+	bool			getUIVisibility();
 
 	BOOL handleAnyMouseClick(LLWindow *window,  LLCoordGL pos, MASK mask, LLMouseHandler::EClickType clicktype, BOOL down);
 
@@ -282,8 +302,7 @@ class LLViewerWindow : public LLWindowCallbacks
 	void				updateKeyboardFocus();		
 
 	void			updateWorldViewRect(bool use_full_window=false);
-	LLView*			getNonSideTrayView() { return mNonSideTrayView.get(); }
-	LLView*			getFloaterViewHolder() { return mFloaterViewHolder.get(); }
+	LLView*			getToolBarHolder() { return mToolBarHolder.get(); }
 	LLView*			getHintHolder() { return mHintHolder.get(); }
 	LLView*			getLoginPanelHolder() { return mLoginPanelHolder.get(); }
 	BOOL			handleKey(KEY key, MASK mask);
@@ -322,7 +341,7 @@ class LLViewerWindow : public LLWindowCallbacks
 	BOOL			thumbnailSnapshot(LLImageRaw *raw, S32 preview_width, S32 preview_height, BOOL show_ui, BOOL do_rebuild, ESnapshotType type) ;
 	BOOL			isSnapshotLocSet() const { return ! sSnapshotDir.empty(); }
 	void			resetSnapshotLoc() const { sSnapshotDir.clear(); }
-	BOOL		    saveImageNumbered(LLImageFormatted *image);
+	BOOL		    saveImageNumbered(LLImageFormatted *image, bool force_picker = false);
 
 	// Reset the directory where snapshots are saved.
 	// Client will open directory picker on next snapshot save.
@@ -394,11 +413,10 @@ class LLViewerWindow : public LLWindowCallbacks
 	S32				getChatConsoleBottomPad(); // Vertical padding for child console rect, varied by bottom clutter
 	LLRect			getChatConsoleRect(); // Get optimal cosole rect.
 
-public:
+private:
 	LLWindow*		mWindow;						// graphical window object
-
-protected:
-	BOOL			mActive;
+	bool			mActive;
+	bool			mUIVisible;
 
 	LLRect			mWindowRectRaw;				// whole window, including UI
 	LLRect			mWindowRectScaled;			// whole window, scaled by UI size
@@ -444,8 +462,7 @@ class LLViewerWindow : public LLWindowCallbacks
 	std::string		mInitAlert;			// Window / GL initialization requires an alert
 
 	LLHandle<LLView> mWorldViewPlaceholder;	// widget that spans the portion of screen dedicated to rendering the 3d world
-	LLHandle<LLView> mNonSideTrayView;		// parent of world view + bottom bar, etc...everything but the side tray
-	LLHandle<LLView> mFloaterViewHolder;	// container for floater_view
+	LLHandle<LLView> mToolBarHolder;		// container for toolbars
 	LLHandle<LLView> mHintHolder;			// container for hints
 	LLHandle<LLView> mLoginPanelHolder;		// container for login panel
 	LLPopupView*	mPopupView;			// container for transient popups
@@ -456,15 +473,14 @@ class LLViewerWindow : public LLWindowCallbacks
 	bool			mStatesDirty;
 	U32			mCurrResolutionIndex;
 
-    boost::scoped_ptr<LLViewerWindowListener> mViewerWindowListener;
+	boost::scoped_ptr<LLWindowListener> mWindowListener;
+	boost::scoped_ptr<LLViewerWindowListener> mViewerWindowListener;
 
-protected:
 	static std::string sSnapshotBaseName;
 	static std::string sSnapshotDir;
 
 	static std::string sMovieBaseName;
 	
-private:
 	// Object temporarily hovered over while dragging
 	LLPointer<LLViewerObject>	mDragHoveredObject;
 };
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index e457cc3e70305e56a5e83e38aa4858249c598cbb..bc7f5a9744a326d68fa051757296eedb1f4e1d32 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -651,6 +651,8 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 	LLViewerObject(id, pcode, regionp),
 	mIsDummy(FALSE),
 	mSpecialRenderMode(0),
+	mAttachmentGeometryBytes(0),
+	mAttachmentSurfaceArea(0.f),
 	mTurning(FALSE),
 	mPelvisToFoot(0.f),
 	mLastSkeletonSerialNum( 0 ),
@@ -690,7 +692,8 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 	mFullyLoadedInitialized(FALSE),
 	mSupportsAlphaLayers(FALSE),
 	mLoadedCallbacksPaused(FALSE),
-	mHasPelvisOffset( FALSE )
+	mHasPelvisOffset( FALSE ),
+	mRenderUnloadedAvatar(LLCachedControl<bool>(gSavedSettings, "RenderUnloadedAvatar"))
 {
 	LLMemType mt(LLMemType::MTYPE_AVATAR);
 	//VTResume();  // VTune
@@ -2117,8 +2120,8 @@ void LLVOAvatar::updateMeshData()
 			}
 			else
 			{
-				if (buff->getRequestedIndices() == num_indices &&
-					buff->getRequestedVerts() == num_vertices)
+				if (buff->getNumIndices() == num_indices &&
+					buff->getNumVerts() == num_vertices)
 				{
 					terse_update = true;
 				}
@@ -2138,11 +2141,19 @@ void LLVOAvatar::updateMeshData()
 
 			for(S32 k = j ; k < part_index ; k++)
 			{
-				mMeshLOD[k]->updateFaceData(facep, mAdjustedPixelArea, k == MESH_ID_HAIR, terse_update);
+				bool rigid = false;
+				if (k == MESH_ID_EYEBALL_LEFT ||
+					k == MESH_ID_EYEBALL_RIGHT)
+				{ //eyeballs can't have terse updates since they're never rendered with
+					//the hardware skinning shader
+					rigid = true;
+				}
+				
+				mMeshLOD[k]->updateFaceData(facep, mAdjustedPixelArea, k == MESH_ID_HAIR, terse_update && !rigid);
 			}
 
 			stop_glerror();
-			buff->setBuffer(0);
+			buff->flush();
 
 			if(!f_num)
 			{
@@ -3354,6 +3365,16 @@ void LLVOAvatar::slamPosition()
 	mRoot.updateWorldMatrixChildren();
 }
 
+bool LLVOAvatar::isVisuallyMuted()
+{
+	static LLCachedControl<U32> max_attachment_bytes(gSavedSettings, "RenderAutoMuteByteLimit");
+	static LLCachedControl<F32> max_attachment_area(gSavedSettings, "RenderAutoMuteSurfaceAreaLimit");
+	
+	return LLMuteList::getInstance()->isMuted(getID()) ||
+			(mAttachmentGeometryBytes > max_attachment_bytes && max_attachment_bytes > 0) ||
+			(mAttachmentSurfaceArea > max_attachment_area && max_attachment_area > 0.f);
+}
+
 //------------------------------------------------------------------------
 // updateCharacter()
 // called on both your avatar and other avatars
@@ -3420,8 +3441,9 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		size.setSub(ext[1],ext[0]);
 		F32 mag = size.getLength3().getF32()*0.5f;
 
+		
 		F32 impostor_area = 256.f*512.f*(8.125f - LLVOAvatar::sLODFactor*8.f);
-		if (LLMuteList::getInstance()->isMuted(getID()))
+		if (isVisuallyMuted())
 		{ // muted avatars update at 16 hz
 			mUpdatePeriod = 16;
 		}
@@ -4135,7 +4157,7 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
 			LLVertexBuffer* vb = mDrawable->getFace(0)->getVertexBuffer();
 			if (vb)
 			{
-				vb->setBuffer(0);
+				vb->flush();
 			}
 		}
 	}
@@ -5405,18 +5427,6 @@ BOOL LLVOAvatar::loadAvatar()
 		}
 	}
 
-	// Uncomment to enable avatar_lad.xml debugging. 
-	std::ofstream file;
-	file.open("avatar_lad.log");
-	for( LLViewerVisualParam* param = (LLViewerVisualParam*) getFirstVisualParam(); 
-	param;
-	param = (LLViewerVisualParam*) getNextVisualParam() )
-	{
-		param->getInfo()->toStream(file);
-		file << std::endl;
-	}
-
-	file.close();
 	
 	return TRUE;
 }
@@ -6485,10 +6495,7 @@ BOOL LLVOAvatar::processFullyLoadedChange(bool loading)
 
 BOOL LLVOAvatar::isFullyLoaded() const
 {
-	if (gSavedSettings.getBOOL("RenderUnloadedAvatar"))
-		return TRUE;
-	else
-		return mFullyLoaded;
+	return (mRenderUnloadedAvatar || mFullyLoaded);
 }
 
 bool LLVOAvatar::isTooComplex() const
@@ -7524,7 +7531,8 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id )
 // static
 void LLVOAvatar::dumpArchetypeXML( void* )
 {
-	LLAPRFile outfile(gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER, "new archetype.xml"), LL_APR_WB);
+	LLAPRFile outfile;
+	outfile.open(gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,"new archetype.xml"), LL_APR_WB );
 	apr_file_t* file = outfile.getFileHandle() ;
 	if (!file)
 	{
@@ -8334,10 +8342,15 @@ void LLVOAvatar::getImpostorValues(LLVector4a* extents, LLVector3& angle, F32& d
 void LLVOAvatar::idleUpdateRenderCost()
 {
 	static const U32 ARC_BODY_PART_COST = 200;
-	static const U32 ARC_LIMIT = 2048;
+	static const U32 ARC_LIMIT = 20000;
 
 	static std::set<LLUUID> all_textures;
 
+	if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_ATTACHMENT_BYTES))
+	{ //set debug text to attachment geometry bytes here so render cost will override
+		setDebugText(llformat("%.1f KB, %.2f m^2", mAttachmentGeometryBytes/1024.f, mAttachmentSurfaceArea));
+	}
+
 	if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHAME))
 	{
 		return;
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index e53b8e3f4bf731ce9adc47621c106519a56b694e..dd0317f555d4072093658aae464f2b4e933b4a9c 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -40,6 +40,7 @@
 #include "lldrawpoolalpha.h"
 #include "llviewerobject.h"
 #include "llcharacter.h"
+#include "llcontrol.h"
 #include "llviewerjointmesh.h"
 #include "llviewerjointattachment.h"
 #include "llrendertarget.h"
@@ -77,6 +78,8 @@ class LLVOAvatar :
 	public LLCharacter,
 	public boost::signals2::trackable
 {
+	LOG_CLASS(LLVOAvatar);
+
 public:
 	friend class LLVOAvatarSelf;
 protected:
@@ -379,6 +382,8 @@ class LLVOAvatar :
 
 public:
 	U32 		renderImpostor(LLColor4U color = LLColor4U(255,255,255,255), S32 diffuse_channel = 0);
+	bool		isVisuallyMuted();
+
 	U32 		renderRigid();
 	U32 		renderSkinned(EAvatarRenderPass pass);
 	F32			getLastSkinTime() { return mLastSkinTime; }
@@ -390,6 +395,9 @@ class LLVOAvatar :
 	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
+
 private:
 	bool		shouldAlphaMask();
 
@@ -450,6 +458,8 @@ class LLVOAvatar :
 	F32			mImpostorDistance;
 	F32			mImpostorPixelArea;
 	LLVector3	mLastAnimExtents[2];  
+	
+	LLCachedControl<bool> mRenderUnloadedAvatar;
 
 	//--------------------------------------------------------------------
 	// Wind rippling in clothes
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 59883e0bb19be9867331c0a0c9194a5603d2dd10..f1df67494f73459e30543527eaf9b057f6e32350 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1574,7 +1574,7 @@ void LLVOAvatarSelf::invalidateAll()
 	{
 		invalidateComposite(mBakedTextureDatas[i].mTexLayerSet, TRUE);
 	}
-	mDebugSelfLoadTimer.reset();
+	//mDebugSelfLoadTimer.reset();
 }
 
 //-----------------------------------------------------------------------------
@@ -1896,11 +1896,13 @@ BOOL LLVOAvatarSelf::getIsCloud()
 		gAgentWearables.getWearableCount(LLWearableType::WT_EYES) == 0 ||
 		gAgentWearables.getWearableCount(LLWearableType::WT_SKIN) == 0)	
 	{
+		lldebugs << "No body parts" << llendl;
 		return TRUE;
 	}
 
 	if (!isTextureDefined(TEX_HAIR, 0))
 	{
+		lldebugs << "No hair texture" << llendl;
 		return TRUE;
 	}
 
@@ -1909,12 +1911,14 @@ BOOL LLVOAvatarSelf::getIsCloud()
 		if (!isLocalTextureDataAvailable(mBakedTextureDatas[BAKED_LOWER].mTexLayerSet) &&
 			(!isTextureDefined(TEX_LOWER_BAKED, 0)))
 		{
+			lldebugs << "Lower textures not baked" << llendl;
 			return TRUE;
 		}
 
 		if (!isLocalTextureDataAvailable(mBakedTextureDatas[BAKED_UPPER].mTexLayerSet) &&
 			(!isTextureDefined(TEX_UPPER_BAKED, 0)))
 		{
+			lldebugs << "Upper textures not baked" << llendl;
 			return TRUE;
 		}
 
@@ -1931,10 +1935,12 @@ BOOL LLVOAvatarSelf::getIsCloud()
 			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;
 				return TRUE;
 			}
 		}
 
+		lldebugs << "Avatar de-clouded" << llendl;
 	}
 	return FALSE;
 }
@@ -2258,6 +2264,7 @@ void LLVOAvatarSelf::setNewBakedTexture( ETextureIndex te, const LLUUID& uuid )
 	}
 }
 
+// FIXME: This is never called. Something may be broken.
 void LLVOAvatarSelf::outputRezDiagnostics() const
 {
 	if(!gSavedSettings.getBOOL("DebugAvatarLocalTexLoadedTime"))
@@ -2315,6 +2322,18 @@ void LLVOAvatarSelf::outputRezDiagnostics() const
 	}
 }
 
+void LLVOAvatarSelf::outputRezTiming(const std::string& msg) const
+{
+	LL_DEBUGS("Avatar Rez")
+		<< llformat("%s. Time from avatar creation: %.2f", msg.c_str(), mDebugSelfLoadTimer.getElapsedTimeF32())
+		<< llendl;
+}
+
+void LLVOAvatarSelf::reportAvatarRezTime() const
+{
+	// TODO: report mDebugSelfLoadTimer.getElapsedTimeF32() somehow.
+}
+
 //-----------------------------------------------------------------------------
 // setCachedBakedTexture()
 // A baked texture id was received from a cache query, make it active
@@ -2558,7 +2577,7 @@ void LLVOAvatarSelf::deleteScratchTextures()
 			LLImageGL::decTextureCounter(tex_size, 1, LLViewerTexture::AVATAR_SCRATCH_TEX) ;
 			total_tex_size -= tex_size ;
 		}
-		if( sScratchTexNames.checkData( GL_LUMINANCE_ALPHA ) )
+		if( sScratchTexNames.checkData( LLRender::sGLCoreProfile ? GL_RG : GL_LUMINANCE_ALPHA ) )
 		{
 			LLImageGL::decTextureCounter(tex_size, 2, LLViewerTexture::AVATAR_SCRATCH_TEX) ;
 			total_tex_size -= 2 * tex_size ;
@@ -2600,89 +2619,6 @@ void LLVOAvatarSelf::deleteScratchTextures()
 	}
 }
 
-BOOL LLVOAvatarSelf::bindScratchTexture( LLGLenum format )
-{
-	U32 texture_bytes = 0;
-	S32 components = 0; 
-	GLuint gl_name = getScratchTexName( format, components, &texture_bytes );
-	if( gl_name )
-	{
-		gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, gl_name);
-		stop_glerror();
-
-		F32* last_bind_time = sScratchTexLastBindTime.getIfThere( format );
-		if( last_bind_time )
-		{
-			if( *last_bind_time != LLImageGL::sLastFrameTime )
-			{
-				*last_bind_time = LLImageGL::sLastFrameTime;
-				LLImageGL::updateBoundTexMem(texture_bytes, components, LLViewerTexture::AVATAR_SCRATCH_TEX) ;
-			}
-		}
-		else
-		{
-			LLImageGL::updateBoundTexMem(texture_bytes, components, LLViewerTexture::AVATAR_SCRATCH_TEX) ;
-			sScratchTexLastBindTime.addData( format, new F32(LLImageGL::sLastFrameTime) );
-		}
-		return TRUE;
-	}
-	return FALSE;
-}
-
-LLGLuint LLVOAvatarSelf::getScratchTexName( LLGLenum format, S32& components, U32* texture_bytes )
-{	
-	GLenum internal_format;
-	switch( format )
-	{
-		case GL_LUMINANCE:			components = 1; internal_format = GL_LUMINANCE8;		break;
-		case GL_ALPHA:				components = 1; internal_format = GL_ALPHA8;			break;
-		case GL_LUMINANCE_ALPHA:	components = 2; internal_format = GL_LUMINANCE8_ALPHA8;	break;
-		case GL_RGB:				components = 3; internal_format = GL_RGB8;				break;
-		case GL_RGBA:				components = 4; internal_format = GL_RGBA8;				break;
-		default:	llassert(0);	components = 4; internal_format = GL_RGBA8;				break;
-	}
-
-	*texture_bytes = components * SCRATCH_TEX_WIDTH * SCRATCH_TEX_HEIGHT;
-	
-	if( sScratchTexNames.checkData( format ) )
-	{
-		return *( sScratchTexNames.getData( format ) );
-	}
-
-	LLGLSUIDefault gls_ui;
-
-	U32 name = 0;
-	LLImageGL::generateTextures(1, &name );
-	stop_glerror();
-
-	gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, name);
-	stop_glerror();
-
-	LLImageGL::setManualImage(
-		GL_TEXTURE_2D, 0, internal_format, 
-		SCRATCH_TEX_WIDTH, SCRATCH_TEX_HEIGHT,
-		format, GL_UNSIGNED_BYTE, NULL );
-	stop_glerror();
-
-	gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
-	gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
-	stop_glerror();
-
-	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-	stop_glerror();
-
-	sScratchTexNames.addData( format, new LLGLuint( name ) );
-
-	sScratchTexBytes += *texture_bytes;
-	LLImageGL::sGlobalTextureMemoryInBytes += *texture_bytes;
-
-	if(gAuditTexture)
-	{
-		LLImageGL::incTextureCounter(SCRATCH_TEX_WIDTH * SCRATCH_TEX_HEIGHT, components, LLViewerTexture::AVATAR_SCRATCH_TEX) ;
-	}
-	return name;
-}
-
 // static 
 void LLVOAvatarSelf::dumpScratchTextureByteCount()
 {
diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h
index 51f06dee5f5246e3572e1e434c6b8baecaeb14f5..54dbe81993770c35f79e55a533ca776c0aae6be7 100644
--- a/indra/newview/llvoavatarself.h
+++ b/indra/newview/llvoavatarself.h
@@ -41,6 +41,7 @@ struct LocalTextureData;
 class LLVOAvatarSelf :
 	public LLVOAvatar
 {
+	LOG_CLASS(LLVOAvatarSelf);
 
 /********************************************************************************
  **                                                                            **
@@ -249,10 +250,7 @@ class LLVOAvatarSelf :
 	// Scratch textures (used for compositing)
 	//--------------------------------------------------------------------
 public:
-	BOOL			bindScratchTexture(LLGLenum format);
 	static void		deleteScratchTextures();
-protected:
-	LLGLuint		getScratchTexName(LLGLenum format, S32& components, U32* texture_bytes);
 private:
 	static S32 		sScratchTexBytes;
 	static LLMap< LLGLenum, LLGLuint*> sScratchTexNames;
@@ -361,6 +359,8 @@ class LLVOAvatarSelf :
 	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);
 	static void				debugOnTimingLocalTexLoaded(BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* aux_src, S32 discard_level, BOOL final, void* userdata);
 
diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp
index baf01ec06617478425e448ac2ed3acf92c4c5475..7db19c5c1b0d6a230af6c160c983ad0a7242258a 100644
--- a/indra/newview/llvocache.cpp
+++ b/indra/newview/llvocache.cpp
@@ -268,6 +268,7 @@ LLVOCache::LLVOCache():
 	mCacheSize(1)
 {
 	mEnabled = gSavedSettings.getBOOL("ObjectCacheEnabled");
+	mLocalAPRFilePoolp = new LLVolatileAPRPool() ;
 }
 
 LLVOCache::~LLVOCache()
@@ -277,6 +278,7 @@ LLVOCache::~LLVOCache()
 		writeCacheHeader();
 		clearCacheInMemory();
 	}
+	delete mLocalAPRFilePoolp;
 }
 
 void LLVOCache::setDirNames(ELLPath location)
@@ -433,7 +435,7 @@ void LLVOCache::removeFromCache(HeaderEntryInfo* entry)
 
 	std::string filename;
 	getObjectCacheFilename(entry->mHandle, filename);
-	LLAPRFile::remove(filename);
+	LLAPRFile::remove(filename, mLocalAPRFilePoolp);
 	entry->mTime = INVALID_TIME ;
 	updateEntry(entry) ; //update the head file.
 }
@@ -450,9 +452,9 @@ void LLVOCache::readCacheHeader()
 	clearCacheInMemory();	
 
 	bool success = true ;
-	if (LLAPRFile::isExist(mHeaderFileName))
+	if (LLAPRFile::isExist(mHeaderFileName, mLocalAPRFilePoolp))
 	{
-		LLAPRFile apr_file(mHeaderFileName, APR_READ|APR_BINARY);		
+		LLAPRFile apr_file(mHeaderFileName, APR_READ|APR_BINARY, mLocalAPRFilePoolp);		
 		
 		//read the meta element
 		success = check_read(&apr_file, &mMetaInfo, sizeof(HeaderMetaInfo)) ;
@@ -537,7 +539,7 @@ void LLVOCache::writeCacheHeader()
 
 	bool success = true ;
 	{
-		LLAPRFile apr_file(mHeaderFileName, APR_CREATE|APR_WRITE|APR_BINARY);
+		LLAPRFile apr_file(mHeaderFileName, APR_CREATE|APR_WRITE|APR_BINARY, mLocalAPRFilePoolp);
 
 		//write the meta element
 		success = check_write(&apr_file, &mMetaInfo, sizeof(HeaderMetaInfo)) ;
@@ -575,7 +577,7 @@ void LLVOCache::writeCacheHeader()
 
 BOOL LLVOCache::updateEntry(const HeaderEntryInfo* entry)
 {
-	LLAPRFile apr_file(mHeaderFileName, APR_WRITE|APR_BINARY);
+	LLAPRFile apr_file(mHeaderFileName, APR_WRITE|APR_BINARY, mLocalAPRFilePoolp);
 	apr_file.seek(APR_SET, entry->mIndex * sizeof(HeaderEntryInfo) + sizeof(HeaderMetaInfo)) ;
 
 	return check_write(&apr_file, (void*)entry, sizeof(HeaderEntryInfo)) ;
@@ -601,7 +603,7 @@ void LLVOCache::readFromCache(U64 handle, const LLUUID& id, LLVOCacheEntry::voca
 	{
 		std::string filename;
 		getObjectCacheFilename(handle, filename);
-		LLAPRFile apr_file(filename, APR_READ|APR_BINARY);
+		LLAPRFile apr_file(filename, APR_READ|APR_BINARY, mLocalAPRFilePoolp);
 	
 		LLUUID cache_id ;
 		success = check_read(&apr_file, cache_id.mData, UUID_BYTES) ;
@@ -724,7 +726,7 @@ void LLVOCache::writeToCache(U64 handle, const LLUUID& id, const LLVOCacheEntry:
 	{
 		std::string filename;
 		getObjectCacheFilename(handle, filename);
-		LLAPRFile apr_file(filename, APR_CREATE|APR_WRITE|APR_BINARY);
+		LLAPRFile apr_file(filename, APR_CREATE|APR_WRITE|APR_BINARY, mLocalAPRFilePoolp);
 	
 		success = check_write(&apr_file, (void*)id.mData, UUID_BYTES) ;
 
diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h
index 13651c67799c1591ef01c9f36cc61932ba76bad5..14e3b4c79355a94b23827c9b29be224c13a085e7 100644
--- a/indra/newview/llvocache.h
+++ b/indra/newview/llvocache.h
@@ -142,6 +142,7 @@ class LLVOCache
 	U32                  mNumEntries;
 	std::string          mHeaderFileName ;
 	std::string          mObjectCacheDirName;
+	LLVolatileAPRPool*   mLocalAPRFilePoolp ; 	
 	header_entry_queue_t mHeaderEntryQueue;
 	handle_entry_map_t   mHandleEntryMap;	
 
diff --git a/indra/newview/llvograss.cpp b/indra/newview/llvograss.cpp
index 32822e11816fe67772964bcefa5451c33d835e18..8a79d564d3a3dfd7dfdbe65958e0559c51713804 100644
--- a/indra/newview/llvograss.cpp
+++ b/indra/newview/llvograss.cpp
@@ -464,7 +464,7 @@ void LLVOGrass::plantBlades()
 }
 
 void LLVOGrass::getGeometry(S32 idx,
-								LLStrider<LLVector3>& verticesp,
+								LLStrider<LLVector4a>& verticesp,
 								LLStrider<LLVector3>& normalsp, 
 								LLStrider<LLVector2>& texcoordsp,
 								LLStrider<LLColor4U>& colorsp, 
@@ -516,21 +516,24 @@ void LLVOGrass::getGeometry(S32 idx,
 		position.mV[0]  = mPosition.mV[VX] + x + xf;
 		position.mV[1]  = mPosition.mV[VY] + y + yf;
 		position.mV[2]  = mRegionp->getLand().resolveHeightRegion(position);
-		*verticesp++    = v1 = position + mRegionp->getOriginAgent();
-		*verticesp++    = v1;
+		v1 = position + mRegionp->getOriginAgent();
+		(*verticesp++).load3(v1.mV);
+		(*verticesp++).load3(v1.mV);
 
 
 		position.mV[0] += dzx;
 		position.mV[1] += dzy;
 		position.mV[2] += blade_height;
-		*verticesp++    = v2 = position + mRegionp->getOriginAgent();
-		*verticesp++    = v2;
+		v2 = position + mRegionp->getOriginAgent();
+		(*verticesp++).load3(v2.mV);
+		(*verticesp++).load3(v2.mV);
 
 		position.mV[0]  = mPosition.mV[VX] + x - xf;
 		position.mV[1]  = mPosition.mV[VY] + y - xf;
 		position.mV[2]  = mRegionp->getLand().resolveHeightRegion(position);
-		*verticesp++    = v3 = position + mRegionp->getOriginAgent();
-		*verticesp++    = v3;
+		v3 = position + mRegionp->getOriginAgent();
+		(*verticesp++).load3(v3.mV);
+		(*verticesp++).load3(v3.mV);
 
 		LLVector3 normal1 = (v1-v2) % (v2-v3);
 		normal1.mV[VZ] = 0.75f;
@@ -541,8 +544,9 @@ void LLVOGrass::getGeometry(S32 idx,
 		position.mV[0] += dzx;
 		position.mV[1] += dzy;
 		position.mV[2] += blade_height;
-		*verticesp++    = v1 = position + mRegionp->getOriginAgent();
-		*verticesp++    = v1;
+		v1 = position + mRegionp->getOriginAgent();
+		(*verticesp++).load3(v1.mV);
+		(*verticesp++).load3(v1.mV);
 
 		*(normalsp++)   = normal1;
 		*(normalsp++)   = normal2;
diff --git a/indra/newview/llvograss.h b/indra/newview/llvograss.h
index c262fdcc798ccc922f3cb3903485b7d4fa10d65b..00a59facf742658131024510d544e499c6fa362e 100644
--- a/indra/newview/llvograss.h
+++ b/indra/newview/llvograss.h
@@ -59,7 +59,7 @@ class LLVOGrass : public LLAlphaObject
 	/*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline);
 	/*virtual*/ BOOL		updateGeometry(LLDrawable *drawable);
 	/*virtual*/ void		getGeometry(S32 idx,
-								LLStrider<LLVector3>& verticesp,
+								LLStrider<LLVector4a>& verticesp,
 								LLStrider<LLVector3>& normalsp, 
 								LLStrider<LLVector2>& texcoordsp,
 								LLStrider<LLColor4U>& colorsp, 
diff --git a/indra/newview/llvoground.cpp b/indra/newview/llvoground.cpp
index ce256fdedf47371272a636bd6a931441f6f88b2b..0060f81ab5043f5235b6b1fd0ae03e868c9a515a 100644
--- a/indra/newview/llvoground.cpp
+++ b/indra/newview/llvoground.cpp
@@ -162,7 +162,7 @@ BOOL LLVOGround::updateGeometry(LLDrawable *drawable)
 	*(texCoordsp++) = LLVector2(0.f, 1.f);
 	*(texCoordsp++) = LLVector2(0.5f, 0.5f);
 	
-	face->getVertexBuffer()->setBuffer(0);
+	face->getVertexBuffer()->flush();
 	LLPipeline::sCompiles++;
 	return TRUE;
 }
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index 90a05cd9e5bc9a4ab459424821a34a4b9ad025c4..df1d3f2955730da098c2eb413ce31ac898aa2822 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -55,13 +55,12 @@
 #include "llimview.h" // for LLIMMgr
 #include "llparcel.h"
 #include "llviewerparcelmgr.h"
-//#include "llfirstuse.h"
+#include "llfirstuse.h"
 #include "llspeakers.h"
 #include "lltrans.h"
 #include "llviewerwindow.h"
 #include "llviewercamera.h"
 
-#include "llfloaterfriends.h"  //VIVOX, inorder to refresh communicate panel
 #include "llviewernetwork.h"
 #include "llnotificationsutil.h"
 
@@ -942,7 +941,7 @@ void LLVivoxVoiceClient::stateMachine()
 
 				if(!mSocket)
 				{
-					mSocket = LLSocket::create(LLSocket::STREAM_TCP);	
+					mSocket = LLSocket::create(gAPRPoolp, LLSocket::STREAM_TCP);	
 				}
 				
 				mConnected = mSocket->blockingConnect(mDaemonHost);
@@ -6258,6 +6257,19 @@ void LLVivoxVoiceClient::notifyStatusObservers(LLVoiceClientStatusObserver::ESta
 		it = mStatusObservers.upper_bound(observer);
 	}
 
+	// skipped to avoid speak button blinking
+	if (   status != LLVoiceClientStatusObserver::STATUS_JOINING
+		&& status != LLVoiceClientStatusObserver::STATUS_LEFT_CHANNEL)
+	{
+		bool voice_status = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking();
+
+		gAgent.setVoiceConnected(voice_status);
+
+		if (voice_status)
+		{
+			LLFirstUse::speak(true);
+		}
+	}
 }
 
 void LLVivoxVoiceClient::addObserver(LLFriendObserver* observer)
@@ -7007,7 +7019,6 @@ void LLVivoxVoiceClient::captureBufferPlayStopSendMessage()
 
 LLVivoxProtocolParser::LLVivoxProtocolParser()
 {
-	parser = NULL;
 	parser = XML_ParserCreate(NULL);
 	
 	reset();
diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp
index a4b0910c926c0abb839fcc7f4d097e43077cfccf..5c10a80b07380af65c80c7e7f57bd713261d0972 100644
--- a/indra/newview/llvopartgroup.cpp
+++ b/indra/newview/llvopartgroup.cpp
@@ -274,7 +274,7 @@ BOOL LLVOPartGroup::updateGeometry(LLDrawable *drawable)
 }
 
 void LLVOPartGroup::getGeometry(S32 idx,
-								LLStrider<LLVector3>& verticesp,
+								LLStrider<LLVector4a>& verticesp,
 								LLStrider<LLVector3>& normalsp, 
 								LLStrider<LLVector2>& texcoordsp,
 								LLStrider<LLColor4U>& colorsp, 
@@ -290,37 +290,54 @@ void LLVOPartGroup::getGeometry(S32 idx,
 	U32 vert_offset = mDrawable->getFace(idx)->getGeomIndex();
 
 	
-	LLVector3 part_pos_agent(part.mPosAgent);
-	LLVector3 camera_agent = getCameraPosition(); 
-	LLVector3 at = part_pos_agent - camera_agent;
-	LLVector3 up;
-	LLVector3 right;
-
-	right = at % LLVector3(0.f, 0.f, 1.f);
-	right.normalize();
-	up = right % at;
-	up.normalize();
+	LLVector4a part_pos_agent;
+	part_pos_agent.load3(part.mPosAgent.mV);
+	LLVector4a camera_agent;
+	camera_agent.load3(getCameraPosition().mV); 
+	LLVector4a at;
+	at.setSub(part_pos_agent, camera_agent);
+	LLVector4a up(0, 0, 1);
+	LLVector4a right;
+
+	right.setCross3(at, up);
+	right.normalize3fast();
+	up.setCross3(right, at);
+	up.normalize3fast();
 
 	if (part.mFlags & LLPartData::LL_PART_FOLLOW_VELOCITY_MASK)
 	{
-		LLVector3 normvel = part.mVelocity;
-		normvel.normalize();
+		LLVector4a normvel;
+		normvel.load3(part.mVelocity.mV);
+		normvel.normalize3fast();
 		LLVector2 up_fracs;
-		up_fracs.mV[0] = normvel*right;
-		up_fracs.mV[1] = normvel*up;
+		up_fracs.mV[0] = normvel.dot3(right).getF32();
+		up_fracs.mV[1] = normvel.dot3(up).getF32();
 		up_fracs.normalize();
-		LLVector3 new_up;
-		LLVector3 new_right;
-		new_up = up_fracs.mV[0] * right + up_fracs.mV[1]*up;
-		new_right = up_fracs.mV[1] * right - up_fracs.mV[0]*up;
+		LLVector4a new_up;
+		LLVector4a new_right;
+
+		//new_up = up_fracs.mV[0] * right + up_fracs.mV[1]*up;
+		LLVector4a t = right;
+		t.mul(up_fracs.mV[0]);
+		new_up = up;
+		new_up.mul(up_fracs.mV[1]);
+		new_up.add(t);
+
+		//new_right = up_fracs.mV[1] * right - up_fracs.mV[0]*up;
+		t = right;
+		t.mul(up_fracs.mV[1]);
+		new_right = up;
+		new_right.mul(up_fracs.mV[0]);
+		t.sub(new_right);
+
 		up = new_up;
-		right = new_right;
-		up.normalize();
-		right.normalize();
+		right = t;
+		up.normalize3fast();
+		right.normalize3fast();
 	}
 
-	right *= 0.5f*part.mScale.mV[0];
-	up *= 0.5f*part.mScale.mV[1];
+	right.mul(0.5f*part.mScale.mV[0]);
+	up.mul(0.5f*part.mScale.mV[1]);
 
 
 	LLVector3 normal = -LLViewerCamera::getInstance()->getXAxis();
@@ -329,14 +346,25 @@ void LLVOPartGroup::getGeometry(S32 idx,
 	// this works because there is actually a 4th float stored after the vertex position which is used as a texture index
 	// also, somebody please VECTORIZE THIS
 
-	verticesp->mV[3] = 0.f;
-	*verticesp++ = part_pos_agent + up - right;
-	verticesp->mV[3] = 0.f;
-	*verticesp++ = part_pos_agent - up - right;
-	verticesp->mV[3] = 0.f;
-	*verticesp++ = part_pos_agent + up + right;
-	verticesp->mV[3] = 0.f;
-	*verticesp++ = part_pos_agent - up + right;
+	LLVector4a ppapu;
+	LLVector4a ppamu;
+
+	ppapu.setAdd(part_pos_agent, up);
+	ppamu.setSub(part_pos_agent, up);
+
+	verticesp->setSub(ppapu, right);
+	(*verticesp++).getF32ptr()[3] = 0.f;
+	verticesp->setSub(ppamu, right);
+	(*verticesp++).getF32ptr()[3] = 0.f;
+	verticesp->setAdd(ppapu, right);
+	(*verticesp++).getF32ptr()[3] = 0.f;
+	verticesp->setAdd(ppamu, right);
+	(*verticesp++).getF32ptr()[3] = 0.f;
+
+	//*verticesp++ = part_pos_agent + up - right;
+	//*verticesp++ = part_pos_agent - up - right;
+	//*verticesp++ = part_pos_agent + up + right;
+	//*verticesp++ = part_pos_agent - up + right;
 
 	*colorsp++ = part.mColor;
 	*colorsp++ = part.mColor;
@@ -453,7 +481,7 @@ void LLParticlePartition::getGeometry(LLSpatialGroup* group)
 	LLVertexBuffer* buffer = group->mVertexBuffer;
 
 	LLStrider<U16> indicesp;
-	LLStrider<LLVector3> verticesp;
+	LLStrider<LLVector4a> verticesp;
 	LLStrider<LLVector3> normalsp;
 	LLStrider<LLVector2> texcoordsp;
 	LLStrider<LLColor4U> colorsp;
@@ -513,7 +541,7 @@ void LLParticlePartition::getGeometry(LLSpatialGroup* group)
 		}
 	}
 
-	buffer->setBuffer(0);
+	buffer->flush();
 	mFaceList.clear();
 }
 
diff --git a/indra/newview/llvopartgroup.h b/indra/newview/llvopartgroup.h
index 4db893b4ef7f47580409446876fd30d386ebf5b6..e58fed86d969ff10d55bf800d3d3bdc1ee306ac4 100644
--- a/indra/newview/llvopartgroup.h
+++ b/indra/newview/llvopartgroup.h
@@ -60,7 +60,7 @@ class LLVOPartGroup : public LLAlphaObject
 	/*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline);
 	/*virtual*/ BOOL        updateGeometry(LLDrawable *drawable);
 				void		getGeometry(S32 idx,
-								LLStrider<LLVector3>& verticesp,
+								LLStrider<LLVector4a>& verticesp,
 								LLStrider<LLVector3>& normalsp, 
 								LLStrider<LLVector2>& texcoordsp,
 								LLStrider<LLColor4U>& colorsp, 
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index ef21e7373e48a0e51890ef919a12d9a56183182a..e9db37821b1895ee29c0cccb0877da2be45f33b9 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -1267,7 +1267,7 @@ void LLVOSky::updateDummyVertexBuffer()
 	LLStrider<LLVector3> vertices ;
 	mFace[FACE_DUMMY]->getVertexBuffer()->getVertexStrider(vertices,  0);
 	*vertices = mCameraPosAgent ;
-	mFace[FACE_DUMMY]->getVertexBuffer()->setBuffer(0) ;
+	mFace[FACE_DUMMY]->getVertexBuffer()->flush();
 }
 //----------------------------------
 //end of fake vertex buffer updating
@@ -1351,7 +1351,7 @@ BOOL LLVOSky::updateGeometry(LLDrawable *drawable)
 			*indicesp++ = index_offset + 3;
 			*indicesp++ = index_offset + 2;
 
-			buff->setBuffer(0);
+			buff->flush();
 		}
 	}
 
@@ -1516,7 +1516,7 @@ BOOL LLVOSky::updateHeavenlyBodyGeometry(LLDrawable *drawable, const S32 f, cons
 	*indicesp++ = index_offset + 2;
 	*indicesp++ = index_offset + 3;
 
-	facep->getVertexBuffer()->setBuffer(0);
+	facep->getVertexBuffer()->flush();
 
 	if (is_sun)
 	{
@@ -2030,7 +2030,7 @@ void LLVOSky::updateReflectionGeometry(LLDrawable *drawable, F32 H,
 		}
 	}
 
-	face->getVertexBuffer()->setBuffer(0);
+	face->getVertexBuffer()->flush();
 }
 
 
@@ -2040,9 +2040,12 @@ void LLVOSky::updateFog(const F32 distance)
 {
 	if (!gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_FOG))
 	{
-		glFogf(GL_FOG_DENSITY, 0);
-		glFogfv(GL_FOG_COLOR, (F32 *) &LLColor4::white.mV);
-		glFogf(GL_FOG_END, 1000000.f);
+		if (!LLGLSLShader::sNoFixedFunction)
+		{
+			glFogf(GL_FOG_DENSITY, 0);
+			glFogfv(GL_FOG_COLOR, (F32 *) &LLColor4::white.mV);
+			glFogf(GL_FOG_END, 1000000.f);
+		}
 		return;
 	}
 
@@ -2112,7 +2115,10 @@ void LLVOSky::updateFog(const F32 distance)
 	if (camera_height > water_height)
 	{
 		LLColor4 fog(render_fog_color);
-		glFogfv(GL_FOG_COLOR, fog.mV);
+		if (!LLGLSLShader::sNoFixedFunction)
+		{
+			glFogfv(GL_FOG_COLOR, fog.mV);
+		}
 		mGLFogCol = fog;
 
 		if (hide_clip_plane)
@@ -2120,13 +2126,19 @@ void LLVOSky::updateFog(const F32 distance)
 			// For now, set the density to extend to the cull distance.
 			const F32 f_log = 2.14596602628934723963618357029f; // sqrt(fabs(log(0.01f)))
 			fog_density = f_log/fog_distance;
-			glFogi(GL_FOG_MODE, GL_EXP2);
+			if (!LLGLSLShader::sNoFixedFunction)
+			{
+				glFogi(GL_FOG_MODE, GL_EXP2);
+			}
 		}
 		else
 		{
 			const F32 f_log = 4.6051701859880913680359829093687f; // fabs(log(0.01f))
 			fog_density = (f_log)/fog_distance;
-			glFogi(GL_FOG_MODE, GL_EXP);
+			if (!LLGLSLShader::sNoFixedFunction)
+			{
+				glFogi(GL_FOG_MODE, GL_EXP);
+			}
 		}
 	}
 	else
@@ -2146,23 +2158,29 @@ void LLVOSky::updateFog(const F32 distance)
 		fogCol.setAlpha(1);
 
 		// set the gl fog color
-		glFogfv(GL_FOG_COLOR, (F32 *) &fogCol.mV);
 		mGLFogCol = fogCol;
 
 		// set the density based on what the shaders use
 		fog_density = water_fog_density * gSavedSettings.getF32("WaterGLFogDensityScale");
-		glFogi(GL_FOG_MODE, GL_EXP2);
+
+		if (!LLGLSLShader::sNoFixedFunction)
+		{
+			glFogfv(GL_FOG_COLOR, (F32 *) &fogCol.mV);
+			glFogi(GL_FOG_MODE, GL_EXP2);
+		}
 	}
 
 	mFogColor = sky_fog_color;
 	mFogColor.setAlpha(1);
-	LLGLSFog gls_fog;
+	LLDrawPoolWater::sWaterFogEnd = fog_distance*2.2f;
 
-	glFogf(GL_FOG_END, fog_distance*2.2f);
-
-	glFogf(GL_FOG_DENSITY, fog_density);
-
-	glHint(GL_FOG_HINT, GL_NICEST);
+	if (!LLGLSLShader::sNoFixedFunction)
+	{
+		LLGLSFog gls_fog;
+		glFogf(GL_FOG_END, fog_distance*2.2f);
+		glFogf(GL_FOG_DENSITY, fog_density);
+		glHint(GL_FOG_HINT, GL_NICEST);
+	}
 	stop_glerror();
 }
 
diff --git a/indra/newview/llvosurfacepatch.cpp b/indra/newview/llvosurfacepatch.cpp
index 510525259f4c9a6f64fee619aafb1785880adf12..bf6158eeafff8ade246ff261820a1806bcfc62cd 100644
--- a/indra/newview/llvosurfacepatch.cpp
+++ b/indra/newview/llvosurfacepatch.cpp
@@ -57,9 +57,15 @@ class LLVertexBufferTerrain : public LLVertexBuffer
 	};
 
 	// virtual
-	void setupVertexBuffer(U32 data_mask) const
+	void setupVertexBuffer(U32 data_mask)
 	{	
-		U8* base = useVBOs() ? (U8*) mAlignedOffset : mMappedData;
+		if (LLGLSLShader::sNoFixedFunction)
+		{ //just use default if shaders are in play
+			LLVertexBuffer::setupVertexBuffer(data_mask & ~(MAP_TEXCOORD2 | MAP_TEXCOORD3));
+			return;
+		}
+
+		volatile U8* base = useVBOs() ? (U8*) mAlignedOffset : mMappedData;
 
 		//assume tex coords 2 and 3 are present
 		U32 type_mask = mTypeMask | MAP_TEXCOORD2 | MAP_TEXCOORD3;
@@ -106,20 +112,6 @@ class LLVertexBufferTerrain : public LLVertexBuffer
 			glColorPointer(4, GL_UNSIGNED_BYTE, LLVertexBuffer::sTypeSize[TYPE_COLOR], (void*)(base + mOffsets[TYPE_COLOR]));
 		}
 		
-		if (data_mask & MAP_WEIGHT)
-		{
-			glVertexAttribPointerARB(1, 1, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT], (void*)(base + mOffsets[TYPE_WEIGHT]));
-		}
-
-		if (data_mask & MAP_WEIGHT4 && sWeight4Loc != -1)
-		{
-			glVertexAttribPointerARB(sWeight4Loc, 4, GL_FLOAT, FALSE, LLVertexBuffer::sTypeSize[TYPE_WEIGHT4], (void*)(base+mOffsets[TYPE_WEIGHT4]));
-		}
-
-		if (data_mask & MAP_CLOTHWEIGHT)
-		{
-			glVertexAttribPointerARB(4, 4, GL_FLOAT, TRUE,  LLVertexBuffer::sTypeSize[TYPE_CLOTHWEIGHT], (void*)(base + mOffsets[TYPE_CLOTHWEIGHT]));
-		}
 		if (data_mask & MAP_VERTEX)
 		{
 			glVertexPointer(3,GL_FLOAT, LLVertexBuffer::sTypeSize[TYPE_VERTEX], (void*)(base + 0));
@@ -325,7 +317,6 @@ BOOL LLVOSurfacePatch::updateLOD()
 
 void LLVOSurfacePatch::getGeometry(LLStrider<LLVector3> &verticesp,
 								LLStrider<LLVector3> &normalsp,
-								LLStrider<LLColor4U> &colorsp,
 								LLStrider<LLVector2> &texCoords0p,
 								LLStrider<LLVector2> &texCoords1p,
 								LLStrider<U16> &indicesp)
@@ -337,7 +328,6 @@ void LLVOSurfacePatch::getGeometry(LLStrider<LLVector3> &verticesp,
 	updateMainGeometry(facep, 
 					verticesp,
 					normalsp,
-					colorsp,
 					texCoords0p,
 					texCoords1p,
 					indicesp,
@@ -345,7 +335,6 @@ void LLVOSurfacePatch::getGeometry(LLStrider<LLVector3> &verticesp,
 	updateNorthGeometry(facep, 
 						verticesp,
 						normalsp,
-						colorsp,
 						texCoords0p,
 						texCoords1p,
 						indicesp,
@@ -353,7 +342,6 @@ void LLVOSurfacePatch::getGeometry(LLStrider<LLVector3> &verticesp,
 	updateEastGeometry(facep, 
 						verticesp,
 						normalsp,
-						colorsp,
 						texCoords0p,
 						texCoords1p,
 						indicesp,
@@ -363,7 +351,6 @@ void LLVOSurfacePatch::getGeometry(LLStrider<LLVector3> &verticesp,
 void LLVOSurfacePatch::updateMainGeometry(LLFace *facep,
 										LLStrider<LLVector3> &verticesp,
 										LLStrider<LLVector3> &normalsp,
-										LLStrider<LLColor4U> &colorsp,
 										LLStrider<LLVector2> &texCoords0p,
 										LLStrider<LLVector2> &texCoords1p,
 										LLStrider<U16> &indicesp,
@@ -404,7 +391,6 @@ void LLVOSurfacePatch::updateMainGeometry(LLFace *facep,
 				x = i * render_stride;
 				y = j * render_stride;
 				mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
-				*colorsp++ = LLColor4U::white;
 				verticesp++;
 				normalsp++;
 				texCoords0p++;
@@ -469,7 +455,6 @@ void LLVOSurfacePatch::updateMainGeometry(LLFace *facep,
 void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 										LLStrider<LLVector3> &verticesp,
 										LLStrider<LLVector3> &normalsp,
-										LLStrider<LLColor4U> &colorsp,
 										LLStrider<LLVector2> &texCoords0p,
 										LLStrider<LLVector2> &texCoords1p,
 										LLStrider<U16> &indicesp,
@@ -507,7 +492,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 			y = 16 - render_stride;
 
 			mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
-			*colorsp++ = LLColor4U::white;
 			verticesp++;
 			normalsp++;
 			texCoords0p++;
@@ -523,7 +507,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 			mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
 			verticesp++;
 			normalsp++;
-			*colorsp++ = LLColor4U::white;
 			texCoords0p++;
 			texCoords1p++;
 			vertex_count++;
@@ -562,7 +545,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 			mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
 			verticesp++;
 			normalsp++;
-			*colorsp++ = LLColor4U::white;
 			texCoords0p++;
 			texCoords1p++;
 			vertex_count++;
@@ -577,7 +559,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 			mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
 			verticesp++;
 			normalsp++;
-			*colorsp++ = LLColor4U::white;
 			texCoords0p++;
 			texCoords1p++;
 			vertex_count++;
@@ -621,7 +602,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 			y = 16 - render_stride;
 
 			mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
-			*colorsp++ = LLColor4U::white;
 			verticesp++;
 			normalsp++;
 			texCoords0p++;
@@ -638,7 +618,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 			mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
 			verticesp++;
 			normalsp++;
-			*colorsp++ = LLColor4U::white;
 			texCoords0p++;
 			texCoords1p++;
 			vertex_count++;
@@ -676,7 +655,6 @@ void LLVOSurfacePatch::updateNorthGeometry(LLFace *facep,
 void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
 										  LLStrider<LLVector3> &verticesp,
 										  LLStrider<LLVector3> &normalsp,
-										  LLStrider<LLColor4U> &colorsp,
 										  LLStrider<LLVector2> &texCoords0p,
 										  LLStrider<LLVector2> &texCoords1p,
 										  LLStrider<U16> &indicesp,
@@ -710,7 +688,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
 			mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
 			verticesp++;
 			normalsp++;
-			*colorsp++ = LLColor4U::white;
 			texCoords0p++;
 			texCoords1p++;
 		}
@@ -723,7 +700,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
 			mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
 			verticesp++;
 			normalsp++;
-			*colorsp++ = LLColor4U::white;
 			texCoords0p++;
 			texCoords1p++;
 		}
@@ -761,7 +737,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
 			mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
 			verticesp++;
 			normalsp++;
-			*colorsp++ = LLColor4U::white;
 			texCoords0p++;
 			texCoords1p++;
 		}
@@ -774,7 +749,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
 			mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
 			verticesp++;
 			normalsp++;
-			*colorsp++ = LLColor4U::white;
 			texCoords0p++;
 			texCoords1p++;
 		}
@@ -818,7 +792,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
 			mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
 			verticesp++;
 			normalsp++;
-			*colorsp++ = LLColor4U::white;
 			texCoords0p++;
 			texCoords1p++;
 		}
@@ -831,7 +804,6 @@ void LLVOSurfacePatch::updateEastGeometry(LLFace *facep,
 			mPatchp->eval(x, y, render_stride, verticesp.get(), normalsp.get(), texCoords0p.get(), texCoords1p.get());
 			verticesp++;
 			normalsp++;
-			*colorsp++ = LLColor4U::white;
 			texCoords0p++;
 			texCoords1p++;
 		}
@@ -1063,6 +1035,8 @@ void LLVOSurfacePatch::updateSpatialExtents(LLVector4a& newMin, LLVector4a &newM
 {
 	LLVector3 posAgent = getPositionAgent();
 	LLVector3 scale = getScale();
+	//make z-axis scale at least 1 to avoid shadow artifacts on totally flat land
+	scale.mV[VZ] = llmax(scale.mV[VZ], 1.f);
 	newMin.load3( (posAgent-scale*0.5f).mV); // Changing to 2.f makes the culling a -little- better, but still wrong
 	newMax.load3( (posAgent+scale*0.5f).mV);
 	LLVector4a pos;
@@ -1102,14 +1076,12 @@ void LLTerrainPartition::getGeometry(LLSpatialGroup* group)
 	LLStrider<LLVector3> normals;
 	LLStrider<LLVector2> texcoords2;
 	LLStrider<LLVector2> texcoords;
-	LLStrider<LLColor4U> colors;
 	LLStrider<U16> indices;
 
 	llassert_always(buffer->getVertexStrider(vertices));
 	llassert_always(buffer->getNormalStrider(normals));
 	llassert_always(buffer->getTexCoord0Strider(texcoords));
 	llassert_always(buffer->getTexCoord1Strider(texcoords2));
-	llassert_always(buffer->getColorStrider(colors));
 	llassert_always(buffer->getIndexStrider(indices));
 
 	U32 indices_index = 0;
@@ -1124,13 +1096,13 @@ void LLTerrainPartition::getGeometry(LLSpatialGroup* group)
 		facep->setVertexBuffer(buffer);
 
 		LLVOSurfacePatch* patchp = (LLVOSurfacePatch*) facep->getViewerObject();
-		patchp->getGeometry(vertices, normals, colors, texcoords, texcoords2, indices);
+		patchp->getGeometry(vertices, normals, texcoords, texcoords2, indices);
 
 		indices_index += facep->getIndicesCount();
 		index_offset += facep->getGeomCount();
 	}
 
-	buffer->setBuffer(0);
+	buffer->flush();
 	mFaceList.clear();
 }
 
diff --git a/indra/newview/llvosurfacepatch.h b/indra/newview/llvosurfacepatch.h
index 8e75ff2e6e8be6b1c692b130ea171e6f97b64f15..a15878368e4c515ede7f3ed1c90f9a1c3b2680cd 100644
--- a/indra/newview/llvosurfacepatch.h
+++ b/indra/newview/llvosurfacepatch.h
@@ -44,8 +44,7 @@ class LLVOSurfacePatch : public LLStaticViewerObject
 		VERTEX_DATA_MASK =	(1 << LLVertexBuffer::TYPE_VERTEX) |
 							(1 << LLVertexBuffer::TYPE_NORMAL) |
 							(1 << LLVertexBuffer::TYPE_TEXCOORD0) |
-							(1 << LLVertexBuffer::TYPE_TEXCOORD1) |
-							(1 << LLVertexBuffer::TYPE_COLOR) 
+							(1 << LLVertexBuffer::TYPE_TEXCOORD1)
 	};
 
 	LLVOSurfacePatch(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);
@@ -64,7 +63,6 @@ class LLVOSurfacePatch : public LLStaticViewerObject
 	/*virtual*/ void		updateFaceSize(S32 idx);
 	void getGeometry(LLStrider<LLVector3> &verticesp,
 								LLStrider<LLVector3> &normalsp,
-								LLStrider<LLColor4U> &colorsp,
 								LLStrider<LLVector2> &texCoords0p,
 								LLStrider<LLVector2> &texCoords1p,
 								LLStrider<U16> &indicesp);
@@ -116,7 +114,6 @@ class LLVOSurfacePatch : public LLStaticViewerObject
 	void updateMainGeometry(LLFace *facep,
 					   LLStrider<LLVector3> &verticesp,
 					   LLStrider<LLVector3> &normalsp,
-					   LLStrider<LLColor4U> &colorsp,
 					   LLStrider<LLVector2> &texCoords0p,
 					   LLStrider<LLVector2> &texCoords1p,
 					   LLStrider<U16> &indicesp,
@@ -124,7 +121,6 @@ class LLVOSurfacePatch : public LLStaticViewerObject
 	void updateNorthGeometry(LLFace *facep,
 					   LLStrider<LLVector3> &verticesp,
 					   LLStrider<LLVector3> &normalsp,
-					   LLStrider<LLColor4U> &colorsp,
 					   LLStrider<LLVector2> &texCoords0p,
 					   LLStrider<LLVector2> &texCoords1p,
 					   LLStrider<U16> &indicesp,
@@ -132,7 +128,6 @@ class LLVOSurfacePatch : public LLStaticViewerObject
 	void updateEastGeometry(LLFace *facep,
 					   LLStrider<LLVector3> &verticesp,
 					   LLStrider<LLVector3> &normalsp,
-					   LLStrider<LLColor4U> &colorsp,
 					   LLStrider<LLVector2> &texCoords0p,
 					   LLStrider<LLVector2> &texCoords1p,
 					   LLStrider<U16> &indicesp,
diff --git a/indra/newview/llvotextbubble.cpp b/indra/newview/llvotextbubble.cpp
deleted file mode 100644
index a92172fe2306ee662a233490a7533d21a6e0628f..0000000000000000000000000000000000000000
--- a/indra/newview/llvotextbubble.cpp
+++ /dev/null
@@ -1,272 +0,0 @@
-/** 
- * @file llvotextbubble.cpp
- * @brief Viewer-object text bubble.
- *
- * $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 "llviewerprecompiledheaders.h"
-
-#include "llvotextbubble.h"
-
-#include "imageids.h"
-#include "llviewercontrol.h"
-#include "llprimitive.h"
-#include "llrendersphere.h"
-
-#include "llbox.h"
-#include "lldrawable.h"
-#include "llface.h"
-#include "llviewertexturelist.h"
-#include "llvolume.h"
-#include "pipeline.h"
-#include "llvector4a.h"
-#include "llviewerregion.h"
-
-LLVOTextBubble::LLVOTextBubble(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp)
-:	LLAlphaObject(id, pcode, regionp)
-{
-	setScale(LLVector3(1.5f, 1.5f, 0.25f));
-	mbCanSelect = FALSE;
-	mLOD = MIN_LOD;
-	mVolumeChanged = TRUE;
-	setVelocity(LLVector3(0.f, 0.f, 0.75f));
-	LLVolumeParams volume_params;
-	volume_params.setType(LL_PCODE_PROFILE_CIRCLE, LL_PCODE_PATH_LINE);
-	volume_params.setBeginAndEndS(0.f, 1.f);
-	volume_params.setBeginAndEndT(0.f, 1.f);
-	volume_params.setRatio(0.25f, 0.25f);
-	volume_params.setShear(0.f, 0.f);
-	setVolume(volume_params, 0);
-	mColor = LLColor4(1.0f, 0.0f, 0.0f, 1.f);
-	S32 i;
-	for (i = 0; i < getNumTEs(); i++)
-	{
-		setTEColor(i, mColor);
-		setTETexture(i, LLUUID(IMG_DEFAULT));
-	}
-}
-
-
-LLVOTextBubble::~LLVOTextBubble()
-{
-}
-
-
-BOOL LLVOTextBubble::isActive() const
-{
-	return TRUE;
-}
-
-BOOL LLVOTextBubble::idleUpdate(LLAgent &agent, LLWorld	&world, const F64 &time)
-{
-	static LLFastTimer::DeclareTimer ftm("Text Bubble");
-	LLFastTimer t(ftm);
-
-	F32 dt = mUpdateTimer.getElapsedTimeF32();
-	// Die after a few seconds.
-	if (dt > 1.5f)
-	{
-		return FALSE;
-	}
-
-	LLViewerObject::idleUpdate(agent, world, time);
-
-	setScale(0.5f * (1.f+dt) * LLVector3(1.5f, 1.5f, 0.5f));
-
-	F32 alpha = 0.35f*dt;
-
-	LLColor4 color = mColor;
-	color.mV[VALPHA] -= alpha;
-	if (color.mV[VALPHA] <= 0.05f)
-	{
-		return FALSE;
-	}
-	S32 i;
-	for (i = 0; i < getNumTEs(); i++)
-	{
-		setTEColor(i, color);
-		setTEFullbright(i, TRUE);
-	}
-
-	gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, TRUE);
-	return TRUE;
-}
-
-
-void LLVOTextBubble::updateTextures()
-{
-	// Update the image levels of all textures...
-
-	for (U32 i = 0; i < getNumTEs(); i++)
-	{
-		const LLTextureEntry *te = getTE(i);
-		F32 texel_area_ratio = fabs(te->mScaleS * te->mScaleT);
-		texel_area_ratio = llclamp(texel_area_ratio, .125f, 16.f);
-		LLViewerTexture *imagep = getTEImage(i);
-		if (imagep)
-		{
-			imagep->addTextureStats(mPixelArea / texel_area_ratio);
-		}
-	}
-}
-
-
-LLDrawable *LLVOTextBubble::createDrawable(LLPipeline *pipeline)
-{
-	pipeline->allocDrawable(this);
-	mDrawable->setLit(FALSE);
-	mDrawable->setRenderType(LLPipeline::RENDER_TYPE_VOLUME);
-	
-	for (U32 i = 0; i < getNumTEs(); i++)
-	{
-		LLViewerTexture *imagep;
-		const LLTextureEntry *texture_entry = getTE(i);
-		imagep = LLViewerTextureManager::getFetchedTexture(texture_entry->getID());
-
-		mDrawable->addFace((LLFacePool*) NULL, imagep);
-	}
-
-	return mDrawable;
-}
-
-// virtual
-BOOL LLVOTextBubble::setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume)
-{
-	if (LLPrimitive::setVolume(volume_params, mLOD))
-	{
-		if (mDrawable)
-		{
-			gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, TRUE);
-			mVolumeChanged = TRUE;
-		}
-		return TRUE;
-	}
-	return FALSE;
-}
-
-
-BOOL LLVOTextBubble::updateLOD()
-{
-	return FALSE;
-}
-
-BOOL LLVOTextBubble::updateGeometry(LLDrawable *drawable)
-{
- 	if (!(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_VOLUME)))
-		return TRUE;
-	
-	if (mVolumeChanged)
-	{
-		LLVolumeParams volume_params = getVolume()->getParams();
-		setVolume(volume_params, 0);
-
-		LLPipeline::sCompiles++;
-
-		drawable->setNumFaces(getVolume()->getNumFaces(), drawable->getFace(0)->getPool(), getTEImage(0));
-	}
-
-	LLMatrix4 identity4;
-	LLMatrix3 identity3;
-	for (S32 i = 0; i < drawable->getNumFaces(); i++)
-	{
-		LLFace *face = drawable->getFace(i);
-		face->setTEOffset(i);
-		face->setTexture(LLViewerFetchedTexture::sSmokeImagep);
-		face->setState(LLFace::FULLBRIGHT);
-	}
-
-	mVolumeChanged = FALSE;
-
-	mDrawable->movePartition();
-	return TRUE;
-}
-
-void LLVOTextBubble::updateFaceSize(S32 idx)
-{
-	LLFace* face = mDrawable->getFace(idx);
-	
-	if (idx == 0 || idx == 2)
-	{
-		face->setSize(0,0);
-	}
-	else
-	{
-		const LLVolumeFace& vol_face = getVolume()->getVolumeFace(idx);
-		face->setSize(vol_face.mNumVertices, vol_face.mNumIndices);
-	}
-}
-
-void LLVOTextBubble::getGeometry(S32 idx,
-								LLStrider<LLVector3>& verticesp,
-								LLStrider<LLVector3>& normalsp, 
-								LLStrider<LLVector2>& texcoordsp,
-								LLStrider<LLColor4U>& colorsp, 
-								LLStrider<U16>& indicesp) 
-{
-	if (idx == 0 || idx == 2)
-	{
-		return;
-	}
-
-	const LLVolumeFace& face = getVolume()->getVolumeFace(idx);
-	
-	LLVector4a pos;
-	pos.load3(getPositionAgent().mV);
-
-	LLVector4a scale;
-	scale.load3(getScale().mV);
-
-	LLColor4U color = LLColor4U(getTE(idx)->getColor());
-	U32 offset = mDrawable->getFace(idx)->getGeomIndex();
-	
-	LLVector4a* dst_pos = (LLVector4a*) verticesp.get();
-	LLVector4a* src_pos = (LLVector4a*) face.mPositions;
-	
-	LLVector4a* dst_norm = (LLVector4a*) normalsp.get();
-	LLVector4a* src_norm  = (LLVector4a*) face.mNormals;
-	
-	LLVector2* dst_tc = (LLVector2*) texcoordsp.get();
-	LLVector2* src_tc = (LLVector2*) face.mTexCoords;
-
-	LLVector4a::memcpyNonAliased16((F32*) dst_norm, (F32*) src_norm, face.mNumVertices*4*sizeof(F32));
-	LLVector4a::memcpyNonAliased16((F32*) dst_tc, (F32*) src_tc, face.mNumVertices*2*sizeof(F32));
-	
-	
-	for (U32 i = 0; i < face.mNumVertices; i++)
-	{
-		LLVector4a t;
-		t.setMul(src_pos[i], scale);
-		dst_pos[i].setAdd(t, pos);
-		*colorsp++ = color;
-	}
-	
-	for (U32 i = 0; i < face.mNumIndices; i++)
-	{
-		*indicesp++ = face.mIndices[i] + offset;
-	}
-}
-
-U32 LLVOTextBubble::getPartitionType() const
-{ 
-	return LLViewerRegion::PARTITION_PARTICLE; 
-}
diff --git a/indra/newview/llvotextbubble.h b/indra/newview/llvotextbubble.h
deleted file mode 100644
index 9c39929711b1275e1c91eb90fc38faa05cbe4996..0000000000000000000000000000000000000000
--- a/indra/newview/llvotextbubble.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/** 
- * @file llvotextbubble.h
- * @brief Description of LLVORock class, which a derivation of LLViewerObject
- *
- * $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_LLVOTEXTBUBBLE_H
-#define LL_LLVOTEXTBUBBLE_H
-
-#include "llviewerobject.h"
-#include "llframetimer.h"
-
-class LLVOTextBubble : public LLAlphaObject
-{
-public:
-	LLVOTextBubble(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp);
-
-	/*virtual*/ BOOL    isActive() const; // Whether this object needs to do an idleUpdate.
-	/*virtual*/ BOOL idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time);
-
-	/*virtual*/ void updateTextures();
-	/*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline);
-	/*virtual*/ BOOL		updateGeometry(LLDrawable *drawable);
-	/*virtual*/ BOOL		updateLOD();
-	/*virtual*/ void		updateFaceSize(S32 idx);
-	
-	/*virtual*/ void		getGeometry(S32 idx,
-								LLStrider<LLVector3>& verticesp,
-								LLStrider<LLVector3>& normalsp, 
-								LLStrider<LLVector2>& texcoordsp,
-								LLStrider<LLColor4U>& colorsp, 
-								LLStrider<U16>& indicesp);
-
-	virtual U32 getPartitionType() const;
-
-	LLColor4 mColor;
-	S32 mLOD;
-	BOOL mVolumeChanged;
-
-protected:
-	~LLVOTextBubble();
-	BOOL setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume = false);
-	LLFrameTimer mUpdateTimer;
-};
-
-#endif // LL_VO_TEXT_BUBBLE
diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp
index 890861df71fa2bfe79afc48848dc47bf7ea0d822..4564207da4d4d2becc4b82aedb3e82e82a7acf47 100644
--- a/indra/newview/llvotree.cpp
+++ b/indra/newview/llvotree.cpp
@@ -341,45 +341,11 @@ U32 LLVOTree::processUpdateMessage(LLMessageSystem *mesgsys,
 
 BOOL LLVOTree::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
 {
-	const U16 FRAMES_PER_WIND_UPDATE = 20;				//  How many frames between wind update per tree
-	const F32 TREE_WIND_SENSITIVITY = 0.005f;
-	const F32 TREE_TRUNK_STIFFNESS = 0.1f;
-
  	if (mDead || !(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_TREE)))
 	{
 		return TRUE;
 	}
 	
-	if (gSavedSettings.getBOOL("RenderAnimateTrees"))
-	{
-		F32 mass_inv; 
-
-		//  For all tree objects, update the trunk bending with the current wind 
-		//  Walk sprite list in order away from viewer 
-		if (!(mFrameCount % FRAMES_PER_WIND_UPDATE)) 
-		{
-			//  If needed, Get latest wind for this tree
-			mWind = mRegionp->mWind.getVelocity(getPositionRegion());
-		}
-		mFrameCount++;
-
-		mass_inv = 1.f/(5.f + mDepth*mBranches*0.2f);
-		mTrunkVel += (mWind * mass_inv * TREE_WIND_SENSITIVITY);		//  Pull in direction of wind
-		mTrunkVel -= (mTrunkBend * mass_inv * TREE_TRUNK_STIFFNESS);		//  Restoring force in direction of trunk 	
-		mTrunkBend += mTrunkVel;
-		mTrunkVel *= 0.99f;									//  Add damping
-
-		if (mTrunkBend.length() > 1.f)
-		{
-			mTrunkBend.normalize();
-		}
-
-		if (mTrunkVel.length() > 1.f)
-		{
-			mTrunkVel.normalize();
-		}
-	}
-
 	S32 trunk_LOD = sMAX_NUM_TREE_LOD_LEVELS ;
 	F32 app_angle = getAppAngle()*LLVOTree::sTreeFactor;
 
@@ -392,39 +358,36 @@ BOOL LLVOTree::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
 		}
 	} 
 
-	if (!gSavedSettings.getBOOL("RenderAnimateTrees"))
+	if (mReferenceBuffer.isNull())
 	{
-		if (mReferenceBuffer.isNull())
-		{
-			gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, TRUE);
-		}
-		else if (trunk_LOD != mTrunkLOD)
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, TRUE);
+	}
+	else if (trunk_LOD != mTrunkLOD)
+	{
+		gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, FALSE);
+	}
+	else
+	{
+		// we're not animating but we may *still* need to
+		// regenerate the mesh if we moved, since position
+		// and rotation are baked into the mesh.
+		// *TODO: I don't know what's so special about trees
+		// that they don't get REBUILD_POSITION automatically
+		// at a higher level.
+		const LLVector3 &this_position = getPositionAgent();
+		if (this_position != mLastPosition)
 		{
-			gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_ALL, FALSE);
+			gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_POSITION);
+			mLastPosition = this_position;
 		}
 		else
 		{
-			// we're not animating but we may *still* need to
-			// regenerate the mesh if we moved, since position
-			// and rotation are baked into the mesh.
-			// *TODO: I don't know what's so special about trees
-			// that they don't get REBUILD_POSITION automatically
-			// at a higher level.
-			const LLVector3 &this_position = getPositionAgent();
-			if (this_position != mLastPosition)
+			const LLQuaternion &this_rotation = getRotation();
+			
+			if (this_rotation != mLastRotation)
 			{
 				gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_POSITION);
-				mLastPosition = this_position;
-			}
-			else
-			{
-				const LLQuaternion &this_rotation = getRotation();
-				
-				if (this_rotation != mLastRotation)
-				{
-					gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_POSITION);
-					mLastRotation = this_rotation;
-				}
+				mLastRotation = this_rotation;
 			}
 		}
 	}
@@ -559,7 +522,7 @@ BOOL LLVOTree::updateGeometry(LLDrawable *drawable)
 			max_vertices += sLODVertexCount[lod];
 		}
 
-		mReferenceBuffer = new LLVertexBuffer(LLDrawPoolTree::VERTEX_DATA_MASK, gSavedSettings.getBOOL("RenderAnimateTrees") ? GL_STATIC_DRAW_ARB : 0);
+		mReferenceBuffer = new LLVertexBuffer(LLDrawPoolTree::VERTEX_DATA_MASK, 0);
 		mReferenceBuffer->allocateBuffer(max_vertices, max_indices, TRUE);
 
 		LLStrider<LLVector3> vertices;
@@ -858,20 +821,13 @@ BOOL LLVOTree::updateGeometry(LLDrawable *drawable)
 			slices /= 2; 
 		}
 
-		mReferenceBuffer->setBuffer(0);
+		mReferenceBuffer->flush();
 		llassert(vertex_count == max_vertices);
 		llassert(index_count == max_indices);
 	}
 
-	if (gSavedSettings.getBOOL("RenderAnimateTrees"))
-	{
-		mDrawable->getFace(0)->setVertexBuffer(mReferenceBuffer);
-	}
-	else
-	{
-		//generate tree mesh
-		updateMesh();
-	}
+	//generate tree mesh
+	updateMesh();
 	
 	return TRUE;
 }
@@ -882,7 +838,7 @@ void LLVOTree::updateMesh()
 	
 	// Translate to tree base  HACK - adjustment in Z plants tree underground
 	const LLVector3 &pos_agent = getPositionAgent();
-	//glTranslatef(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ] - 0.1f);
+	//gGL.translatef(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ] - 0.1f);
 	LLMatrix4 trans_mat;
 	trans_mat.setTranslation(pos_agent.mV[VX], pos_agent.mV[VY], pos_agent.mV[VZ] - 0.1f);
 	trans_mat *= matrix;
@@ -940,8 +896,8 @@ void LLVOTree::updateMesh()
 
 	genBranchPipeline(vertices, normals, tex_coords, indices, idx_offset, scale_mat, mTrunkLOD, stop_depth, mDepth, mTrunkDepth, 1.0, mTwist, droop, mBranches, alpha);
 	
-	mReferenceBuffer->setBuffer(0);
-	buff->setBuffer(0);
+	mReferenceBuffer->flush();
+	buff->flush();
 }
 
 void LLVOTree::appendMesh(LLStrider<LLVector3>& vertices, 
@@ -1158,7 +1114,8 @@ U32 LLVOTree::drawBranchPipeline(LLMatrix4& matrix, U16* indicesp, S32 trunk_LOD
 				scale_mat.mMatrix[2][2] = scale*length;
 				scale_mat *= matrix;
 
-				glLoadMatrixf((F32*) scale_mat.mMatrix);
+				gGL.loadMatrix((F32*) scale_mat.mMatrix);
+				gGL.syncMatrices();
  				glDrawElements(GL_TRIANGLES, sLODIndexCount[trunk_LOD], GL_UNSIGNED_SHORT, indicesp + sLODIndexOffset[trunk_LOD]);
 				gPipeline.addTrianglesDrawn(LEAF_INDICES);
 				stop_glerror();
@@ -1208,7 +1165,8 @@ U32 LLVOTree::drawBranchPipeline(LLMatrix4& matrix, U16* indicesp, S32 trunk_LOD
 				scale_mat *= matrix;
 
 			
-				glLoadMatrixf((F32*) scale_mat.mMatrix);
+				gGL.loadMatrix((F32*) scale_mat.mMatrix);
+				gGL.syncMatrices();
 				glDrawElements(GL_TRIANGLES, LEAF_INDICES, GL_UNSIGNED_SHORT, indicesp);
 				gPipeline.addTrianglesDrawn(LEAF_INDICES);							
 				stop_glerror();
@@ -1229,19 +1187,20 @@ U32 LLVOTree::drawBranchPipeline(LLMatrix4& matrix, U16* indicesp, S32 trunk_LOD
 
 		scale_mat *= matrix;
 	
-		glMatrixMode(GL_TEXTURE);
-		glTranslatef(0.0, -0.5, 0.0);
-		glMatrixMode(GL_MODELVIEW);
+		gGL.matrixMode(LLRender::MM_TEXTURE);
+		gGL.translatef(0.0, -0.5, 0.0);
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 					
-		glLoadMatrixf((F32*) scale_mat.mMatrix);
+		gGL.loadMatrix((F32*) scale_mat.mMatrix);
+		gGL.syncMatrices();
 		glDrawElements(GL_TRIANGLES, LEAF_INDICES, GL_UNSIGNED_SHORT, indicesp);
 		gPipeline.addTrianglesDrawn(LEAF_INDICES);
 		stop_glerror();
 		ret += LEAF_INDICES;
 
-		glMatrixMode(GL_TEXTURE);
-		glLoadIdentity();
-		glMatrixMode(GL_MODELVIEW);
+		gGL.matrixMode(LLRender::MM_TEXTURE);
+		gGL.loadIdentity();
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 	}
 
 	return ret;
diff --git a/indra/newview/llvotree.h b/indra/newview/llvotree.h
index 1e1deede2640e7cfabe9b576e3aec396de680e17..0554935539e6fb078f032c1630f4d9d29923a096 100644
--- a/indra/newview/llvotree.h
+++ b/indra/newview/llvotree.h
@@ -152,7 +152,6 @@ class LLVOTree : public LLViewerObject
 	friend class LLDrawPoolTree;
 protected:
 	LLVector3		mTrunkBend;		// Accumulated wind (used for blowing trees)
-	LLVector3		mTrunkVel;		// 
 	LLVector3		mWind;
 
 	LLPointer<LLVertexBuffer> mReferenceBuffer; //reference geometry for generating tree mesh
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
old mode 100755
new mode 100644
index 380d63c77b977ce713c188cb315628383e219fa1..7492a0678448f6718ffab57689a365eb98c798f3
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -3266,13 +3266,13 @@ void LLVOVolume::updateRenderComplexity()
 	mRenderComplexity_current = 0;
 }
 
-U32 LLVOVolume::getTriangleCount() const
+U32 LLVOVolume::getTriangleCount(S32* vcount) const
 {
 	U32 count = 0;
 	LLVolume* volume = getVolume();
 	if (volume)
 	{
-		count = volume->getNumTriangles();
+		count = volume->getNumTriangles(vcount);
 	}
 
 	return count;
@@ -3976,8 +3976,6 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
 		}
 	}
 	
-	U8 glow = (U8) (facep->getTextureEntry()->getGlow() * 255);
-
 	if (idx >= 0 && 
 		draw_vec[idx]->mVertexBuffer == facep->getVertexBuffer() &&
 		draw_vec[idx]->mEnd == facep->getGeomIndex()-1 &&
@@ -3986,7 +3984,6 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
 		draw_vec[idx]->mEnd - draw_vec[idx]->mStart + facep->getGeomCount() <= (U32) gGLManager.mGLMaxVertexRange &&
 		draw_vec[idx]->mCount + facep->getIndicesCount() <= (U32) gGLManager.mGLMaxIndexRange &&
 #endif
-		draw_vec[idx]->mGlowColor.mV[3] == glow &&
 		draw_vec[idx]->mFullbright == fullbright &&
 		draw_vec[idx]->mBump == bump &&
 		draw_vec[idx]->mTextureMatrix == tex_mat &&
@@ -4018,7 +4015,6 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep,
 		draw_vec.push_back(draw_info);
 		draw_info->mTextureMatrix = tex_mat;
 		draw_info->mModelMatrix = model_mat;
-		draw_info->mGlowColor.setVec(0,0,0,glow);
 		if (type == LLRenderPass::PASS_ALPHA)
 		{ //for alpha sorting
 			facep->setDrawInfo(draw_info);
@@ -4101,6 +4097,32 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 
 	LLFastTimer ftm2(FTM_REBUILD_VOLUME_VB);
 
+	LLVOAvatar* pAvatarVO = NULL;
+
+	LLSpatialBridge* bridge = group->mSpatialPartition->asBridge();
+	if (bridge)
+	{
+		if (bridge->mAvatar.isNull())
+		{
+			LLViewerObject* vobj = bridge->mDrawable->getVObj();
+			if (vobj)
+			{
+				bridge->mAvatar = vobj->getAvatar();
+			}
+		}
+
+		pAvatarVO = bridge->mAvatar;
+	}
+
+	if (pAvatarVO)
+	{
+		pAvatarVO->mAttachmentGeometryBytes -= group->mGeometryBytes;
+		pAvatarVO->mAttachmentSurfaceArea -= group->mSurfaceArea;
+	}
+
+	group->mGeometryBytes = 0;
+	group->mSurfaceArea = 0;
+	
 	group->clearDrawMap();
 
 	mFaceList.clear();
@@ -4118,6 +4140,8 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 
 	U32 cur_total = 0;
 
+	bool emissive = false;
+
 	//get all the faces into a list
 	for (LLSpatialGroup::element_iter drawable_iter = group->getData().begin(); drawable_iter != group->getData().end(); ++drawable_iter)
 	{
@@ -4135,12 +4159,24 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 
 		LLVOVolume* vobj = drawablep->getVOVolume();
 
+		if (!vobj)
+		{
+			continue;
+		}
+
 		if (vobj->isMesh() &&
 			(vobj->getVolume() && !vobj->getVolume()->isMeshAssetLoaded() || !gMeshRepo.meshRezEnabled()))
 		{
 			continue;
 		}
 
+		LLVolume* volume = vobj->getVolume();
+		if (volume)
+		{
+			const LLVector3& scale = vobj->getScale();
+			group->mSurfaceArea += volume->getSurfaceArea() * llmax(llmax(scale.mV[0], scale.mV[1]), scale.mV[2]);
+		}
+
 		llassert_always(vobj);
 		vobj->updateTextureVirtualSize(true);
 		vobj->preRebuild();
@@ -4185,7 +4221,6 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 				//Determine if we've received skininfo that contains an
 				//alternate bind matrix - if it does then apply the translational component
 				//to the joints of the avatar.
-				LLVOAvatar* pAvatarVO = vobj->getAvatar();
 				bool pelvisGotSet = false;
 
 				if ( pAvatarVO )
@@ -4255,13 +4290,16 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 
 					if (type == LLDrawPool::POOL_ALPHA)
 					{
-						if (te->getFullbright())
+						if (te->getColor().mV[3] > 0.f)
 						{
-							pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_FULLBRIGHT_ALPHA);
-						}
-						else
-						{
-							pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_ALPHA);
+							if (te->getFullbright())
+							{
+								pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_FULLBRIGHT_ALPHA);
+							}
+							else
+							{
+								pool->addRiggedFace(facep, LLDrawPoolAvatar::RIGGED_ALPHA);
+							}
 						}
 					}
 					else if (te->getShiny())
@@ -4330,6 +4368,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 				}
 			}
 
+
 			if (cur_total > max_total || facep->getIndicesCount() <= 0 || facep->getGeomCount() <= 0)
 			{
 				facep->clearVertexBuffer();
@@ -4343,6 +4382,11 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 				const LLTextureEntry* te = facep->getTextureEntry();
 				LLViewerTexture* tex = facep->getTexture();
 
+				if (te->getGlow() >= 1.f/255.f)
+				{
+					emissive = true;
+				}
+
 				if (facep->isState(LLFace::TEXTURE_ANIM))
 				{
 					if (!vobj->mTexAnimMode)
@@ -4388,8 +4432,11 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 					}
 					else
 					{
-						drawablep->setState(LLDrawable::HAS_ALPHA);
-						alpha_faces.push_back(facep);
+						if (te->getColor().mV[3] > 0.f)
+						{
+							drawablep->setState(LLDrawable::HAS_ALPHA);
+							alpha_faces.push_back(facep);
+						}
 					}
 				}
 				else
@@ -4459,6 +4506,14 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 	U32 bump_mask = LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_TEXCOORD1 | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_COLOR;
 	U32 fullbright_mask = LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_COLOR;
 
+	if (emissive)
+	{ //emissive faces are present, include emissive byte to preserve batching
+		simple_mask = simple_mask | LLVertexBuffer::MAP_EMISSIVE;
+		alpha_mask = alpha_mask | LLVertexBuffer::MAP_EMISSIVE;
+		bump_mask = bump_mask | LLVertexBuffer::MAP_EMISSIVE;
+		fullbright_mask = fullbright_mask | LLVertexBuffer::MAP_EMISSIVE;
+	}
+
 	bool batch_textures = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 1;
 
 	if (batch_textures)
@@ -4498,6 +4553,12 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group)
 	}
 
 	mFaceList.clear();
+
+	if (pAvatarVO)
+	{
+		pAvatarVO->mAttachmentGeometryBytes += group->mGeometryBytes;
+		pAvatarVO->mAttachmentSurfaceArea += group->mSurfaceArea;
+	}
 }
 
 static LLFastTimer::DeclareTimer FTM_VOLUME_GEOM("Volume Geometry");
@@ -4551,7 +4612,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
 		
 		for (std::set<LLVertexBuffer*>::iterator iter = mapped_buffers.begin(); iter != mapped_buffers.end(); ++iter)
 		{
-			(*iter)->setBuffer(0);
+			(*iter)->flush();
 		}
 
 		// don't forget alpha
@@ -4559,7 +4620,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
 		   !group->mVertexBuffer.isNull() && 
 		   group->mVertexBuffer->isLocked())
 		{
-			group->mVertexBuffer->setBuffer(0);
+			group->mVertexBuffer->flush();
 		}
 
 		//if not all buffers are unmapped
@@ -4575,7 +4636,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group)
 					LLVertexBuffer* buff = face->getVertexBuffer();
 					if (face && buff && buff->isLocked())
 					{
-						buff->setBuffer(0) ;
+						buff->flush();
 					}
 				}
 			} 
@@ -4602,10 +4663,6 @@ struct CompareBatchBreakerModified
 		{
 			return lte->getFullbright() < rte->getFullbright();
 		}
-		else  if (lte->getGlow() != rte->getGlow())
-		{
-			return lte->getGlow() < rte->getGlow();
-		}
 		else
 		{
 			return lhs->getTexture() < rhs->getTexture();
@@ -4616,6 +4673,19 @@ struct CompareBatchBreakerModified
 
 void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::vector<LLFace*>& faces, BOOL distance_sort, BOOL batch_textures)
 {
+	U32 buffer_usage = group->mBufferUsage;
+	
+#if LL_DARWIN
+	// HACK from Leslie:
+	// Disable VBO usage for alpha on Mac OS X because it kills the framerate
+	// due to implicit calls to glTexSubImage that are beyond our control.
+	// (this works because the only calls here that sort by distance are alpha)
+	if (distance_sort)
+	{
+		buffer_usage = 0x0;
+	}
+#endif
+	
 	//calculate maximum number of vertices to store in a single buffer
 	U32 max_vertices = (gSavedSettings.getS32("RenderMaxVBOSize")*1024)/LLVertexBuffer::calcVertexSize(group->mSpatialPartition->mVertexDataMask);
 	max_vertices = llmin(max_vertices, (U32) 65535);
@@ -4644,7 +4714,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
 		buffer_index = -1;
 	}
 
-	S32 texture_index_channels = gGLManager.mNumTextureImageUnits-1; //always reserve one for shiny for now just for simplicity
+	S32 texture_index_channels = LLGLSLShader::sIndexedTextureChannels-1; //always reserve one for shiny for now just for simplicity
 	
 	if (gGLManager.mGLVersion < 3.1f)
 	{
@@ -4658,6 +4728,8 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
 
 	texture_index_channels = llmin(texture_index_channels, (S32) gSavedSettings.getU32("RenderMaxTextureIndex"));
 	
+	//NEVER use more than 16 texture index channels (workaround for prevalent driver bug)
+	texture_index_channels = llmin(texture_index_channels, 16);
 
 	while (face_iter != faces.end())
 	{
@@ -4783,29 +4855,30 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
 	
 		//create/delete/resize vertex buffer if needed
 		LLVertexBuffer* buffer = NULL;
-		LLSpatialGroup::buffer_texture_map_t::iterator found_iter = group->mBufferMap[mask].find(*face_iter);
+
+		{ //try to find a buffer to reuse
+			LLSpatialGroup::buffer_texture_map_t::iterator found_iter = group->mBufferMap[mask].find(*face_iter);
 		
-		if (found_iter != group->mBufferMap[mask].end())
-		{
-			if ((U32) buffer_index < found_iter->second.size())
+			if (found_iter != group->mBufferMap[mask].end())
 			{
-				buffer = found_iter->second[buffer_index];
+				if ((U32) buffer_index < found_iter->second.size())
+				{
+					buffer = found_iter->second[buffer_index];
+				}
 			}
 		}
 						
-		if (!buffer)
+		if (!buffer || !buffer->isWriteable())
 		{ //create new buffer if needed
-			buffer = createVertexBuffer(mask, 
-											group->mBufferUsage);
+			buffer = createVertexBuffer(mask, buffer_usage);
 			buffer->allocateBuffer(geom_count, index_count, TRUE);
 		}
 		else 
 		{ //resize pre-existing buffer
-			if (LLVertexBuffer::sEnableVBOs && buffer->getUsage() != group->mBufferUsage ||
+			if (LLVertexBuffer::sEnableVBOs && buffer->getUsage() != buffer_usage ||
 				buffer->getTypeMask() != mask)
 			{
-				buffer = createVertexBuffer(mask, 
-											group->mBufferUsage);
+				buffer = createVertexBuffer(mask, buffer_usage);
 				buffer->allocateBuffer(geom_count, index_count, TRUE);
 			}
 			else
@@ -4814,6 +4887,9 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
 			}
 		}
 
+		group->mGeometryBytes += buffer->getSize() + buffer->getIndicesSize();
+
+
 		buffer_map[mask][*face_iter].push_back(buffer);
 
 		//add face geometry
@@ -4886,11 +4962,6 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
 				{
 					registerFace(group, facep, LLRenderPass::PASS_ALPHA);
 				}
-
-				if (LLPipeline::sRenderDeferred)
-				{
-					registerFace(group, facep, LLRenderPass::PASS_ALPHA_SHADOW);
-				}
 			}
 			else if (gPipeline.canUseVertexShaders()
 				&& group->mSpatialPartition->mPartitionType != LLViewerRegion::PARTITION_HUD 
@@ -4985,7 +5056,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std::
 			++face_iter;
 		}
 
-		buffer->setBuffer(0);
+		buffer->flush();
 	}
 
 	group->mBufferMap[mask].clear();
diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h
index b6347526eeed3659c7544ad697e3a1f05f440467..3cf434dc260a917e7a1db1f7225a4ab86157331d 100644
--- a/indra/newview/llvovolume.h
+++ b/indra/newview/llvovolume.h
@@ -131,9 +131,10 @@ class LLVOVolume : public LLViewerObject
 	/*virtual*/	const LLMatrix4	getRenderMatrix() const;
 				typedef std::map<LLUUID, S32> texture_cost_t;
 				U32 	getRenderCost(texture_cost_t &textures) const;
-	/*virtual*/	F32		getStreamingCost(S32* bytes = NULL, S32* visible_bytes = NULL, F32* unscaled_value = NULL) const;
+				F32		getStreamingCost(S32* bytes, S32* visible_bytes, F32* unscaled_value) const;
+	/*virtual*/	F32		getStreamingCost(S32* bytes = NULL, S32* visible_bytes = NULL) { return getStreamingCost(bytes, visible_bytes, NULL); }
 
-	/*virtual*/ U32		getTriangleCount() const;
+	/*virtual*/ U32		getTriangleCount(S32* vcount = NULL) const;
 	/*virtual*/ U32		getHighLODTriangleCount();
 	/*virtual*/ BOOL lineSegmentIntersect(const LLVector3& start, const LLVector3& end, 
 										  S32 face = -1,                        // which face to check, -1 = ALL_SIDES
diff --git a/indra/newview/llvowater.cpp b/indra/newview/llvowater.cpp
index e70ac0a2e747600e753a26b59617e02cd6b0886a..315616e8a5c9f4652334a9ae13710f86419c8b88 100644
--- a/indra/newview/llvowater.cpp
+++ b/indra/newview/llvowater.cpp
@@ -160,14 +160,14 @@ BOOL LLVOWater::updateGeometry(LLDrawable *drawable)
 	static const unsigned int vertices_per_quad = 4;
 	static const unsigned int indices_per_quad = 6;
 
-	const S32 size = gSavedSettings.getBOOL("RenderTransparentWater") ? 16 : 1;
+	const S32 size = gSavedSettings.getBOOL("RenderTransparentWater") && !LLGLSLShader::sNoFixedFunction ? 16 : 1;
 
 	const S32 num_quads = size * size;
 	face->setSize(vertices_per_quad * num_quads,
 				  indices_per_quad * num_quads);
 	
 	LLVertexBuffer* buff = face->getVertexBuffer();
-	if (!buff)
+	if (!buff || !buff->isWriteable())
 	{
 		buff = new LLVertexBuffer(LLDrawPoolWater::VERTEX_DATA_MASK, GL_DYNAMIC_DRAW_ARB);
 		buff->allocateBuffer(face->getGeomCount(), face->getIndicesCount(), TRUE);
@@ -231,7 +231,7 @@ BOOL LLVOWater::updateGeometry(LLDrawable *drawable)
 		}
 	}
 	
-	buff->setBuffer(0);
+	buff->flush();
 
 	mDrawable->movePartition();
 	LLPipeline::sCompiles++;
diff --git a/indra/newview/llvowlsky.cpp b/indra/newview/llvowlsky.cpp
index 7b1c7254832b74fc911713ed8d69b52a5d677822..afd902201bcfbfc1ff20c2579fd9ca1e547e30e0 100644
--- a/indra/newview/llvowlsky.cpp
+++ b/indra/newview/llvowlsky.cpp
@@ -326,7 +326,7 @@ BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable)
 
 		buildFanBuffer(vertices, texCoords, indices);
 
-		mFanVerts->setBuffer(0);
+		mFanVerts->flush();
 	}
 
 	{
@@ -349,6 +349,9 @@ BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable)
 
 		mStripsVerts.resize(strips_segments, NULL);
 
+		LLTimer timer;
+		timer.start();
+
 		for (U32 i = 0; i < strips_segments ;++i)
 		{
 			LLVertexBuffer * segment = new LLVertexBuffer(LLDrawPoolWLSky::SKY_VERTEX_DATA_MASK, GL_STATIC_DRAW_ARB);
@@ -388,8 +391,10 @@ BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable)
 			buildStripsBuffer(begin_stack, end_stack,  vertices, texCoords, indices);
 
 			// and unlock the buffer
-			segment->setBuffer(0);
+			segment->flush();
 		}
+	
+		llinfos << "completed in " << llformat("%.2f", timer.getElapsedTimeF32()) << "seconds" << llendl;
 	}
 #else
 	mStripsVerts = new LLVertexBuffer(LLDrawPoolWLSky::SKY_VERTEX_DATA_MASK, GL_STATIC_DRAW_ARB);
@@ -468,7 +473,7 @@ BOOL LLVOWLSky::updateGeometry(LLDrawable * drawable)
 		}
 	}
 
-	mStripsVerts->setBuffer(0);
+	mStripsVerts->flush();
 #endif
 
 	updateStarColors();
@@ -485,7 +490,7 @@ void LLVOWLSky::drawStars(void)
 	if (mStarsVerts.notNull())
 	{
 		mStarsVerts->setBuffer(LLDrawPoolWLSky::STAR_VERTEX_DATA_MASK);
-		mStarsVerts->drawArrays(LLRender::QUADS, 0, getStarsNumVerts()*4);
+		mStarsVerts->drawArrays(LLRender::TRIANGLES, 0, getStarsNumVerts()*4);
 	}
 }
 
@@ -511,13 +516,14 @@ void LLVOWLSky::drawDome(void)
 
 		strips_segment->drawRange(
 			LLRender::TRIANGLE_STRIP, 
-			0, strips_segment->getRequestedVerts()-1, strips_segment->getRequestedIndices(), 
+			0, strips_segment->getNumVerts()-1, strips_segment->getNumIndices(), 
 			0);
-		gPipeline.addTrianglesDrawn(strips_segment->getRequestedIndices(), LLRender::TRIANGLE_STRIP);
+		gPipeline.addTrianglesDrawn(strips_segment->getNumIndices(), LLRender::TRIANGLE_STRIP);
 	}
 
 #else
 	mStripsVerts->setBuffer(data_mask);
+	gGL.syncMatrices();
 	glDrawRangeElements(
 		GL_TRIANGLES,
 		0, mStripsVerts->getNumVerts()-1, mStripsVerts->getNumIndices(),
@@ -768,10 +774,10 @@ BOOL LLVOWLSky::updateStarGeometry(LLDrawable *drawable)
 	LLStrider<LLColor4U> colorsp;
 	LLStrider<LLVector2> texcoordsp;
 
-	if (mStarsVerts.isNull())
+	if (mStarsVerts.isNull() || !mStarsVerts->isWriteable())
 	{
 		mStarsVerts = new LLVertexBuffer(LLDrawPoolWLSky::STAR_VERTEX_DATA_MASK, GL_DYNAMIC_DRAW);
-		mStarsVerts->allocateBuffer(getStarsNumVerts()*4, 0, TRUE);
+		mStarsVerts->allocateBuffer(getStarsNumVerts()*6, 0, TRUE);
 	}
  
 	BOOL success = mStarsVerts->getVertexStrider(verticesp)
@@ -806,19 +812,25 @@ BOOL LLVOWLSky::updateStarGeometry(LLDrawable *drawable)
 		*(verticesp++)  = mStarVertices[vtx];
 		*(verticesp++) = mStarVertices[vtx]+left;
 		*(verticesp++) = mStarVertices[vtx]+left+up;
+		*(verticesp++) = mStarVertices[vtx]+left;
+		*(verticesp++) = mStarVertices[vtx]+left+up;
 		*(verticesp++) = mStarVertices[vtx]+up;
 
 		*(texcoordsp++) = LLVector2(0,0);
 		*(texcoordsp++) = LLVector2(0,1);
 		*(texcoordsp++) = LLVector2(1,1);
+		*(texcoordsp++) = LLVector2(0,1);
+		*(texcoordsp++) = LLVector2(1,1);
 		*(texcoordsp++) = LLVector2(1,0);
 
 		*(colorsp++)    = LLColor4U(mStarColors[vtx]);
 		*(colorsp++)    = LLColor4U(mStarColors[vtx]);
 		*(colorsp++)    = LLColor4U(mStarColors[vtx]);
 		*(colorsp++)    = LLColor4U(mStarColors[vtx]);
+		*(colorsp++)    = LLColor4U(mStarColors[vtx]);
+		*(colorsp++)    = LLColor4U(mStarColors[vtx]);
 	}
 
-	mStarsVerts->setBuffer(0);
+	mStarsVerts->flush();
 	return TRUE;
 }
diff --git a/indra/newview/llwatchdog.cpp b/indra/newview/llwatchdog.cpp
index 64ca94b5678779c7ff37d6272e635fe1e19cba08..4f582fc2dbd7d6f534cba1d3256ba42a4640730c 100644
--- a/indra/newview/llwatchdog.cpp
+++ b/indra/newview/llwatchdog.cpp
@@ -178,8 +178,8 @@ void LLWatchdog::init(killer_event_callback func)
 	mKillerCallback = func;
 	if(!mSuspectsAccessMutex && !mTimer)
 	{
-		mSuspectsAccessMutex = new LLMutex;
-		mTimer = new LLWatchdogTimerThread;
+		mSuspectsAccessMutex = new LLMutex(NULL);
+		mTimer = new LLWatchdogTimerThread();
 		mTimer->setSleepTime(WATCHDOG_SLEEP_TIME_USEC / 1000);
 		mLastClockCount = LLTimer::getTotalTime();
 
diff --git a/indra/newview/llwaterparammanager.cpp b/indra/newview/llwaterparammanager.cpp
index 1a98d4c6c25e6043e947ae43758a60f688b9a3e6..20b34637b8cb1ad4beb2b925c2aca7437b813d32 100644
--- a/indra/newview/llwaterparammanager.cpp
+++ b/indra/newview/llwaterparammanager.cpp
@@ -190,6 +190,7 @@ void LLWaterParamManager::updateShaderUniforms(LLGLSLShader * shader)
 		shader->uniform4fv(LLViewerShaderMgr::LIGHTNORM, 1, LLWLParamManager::getInstance()->getRotatedLightDir().mV);
 		shader->uniform3fv("camPosLocal", 1, LLViewerCamera::getInstance()->getOrigin().mV);
 		shader->uniform4fv("waterFogColor", 1, LLDrawPoolWater::sWaterFogColor.mV);
+		shader->uniform1f("waterFogEnd", LLDrawPoolWater::sWaterFogEnd);
 		shader->uniform4fv("waterPlane", 1, mWaterPlane.mV);
 		shader->uniform1f("waterFogDensity", getFogDensity());
 		shader->uniform1f("waterFogKS", mWaterFogKS);
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index d1c0990f90d42089c8bde46ad51764a654ae305e..d8aa0b7d5c6aadfa33dba63f17fb590bb3c2b6db 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -30,13 +30,13 @@
 #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 "llsidetray.h"
 #include "lltexlayer.h"
 #include "lltexglobalcolor.h"
 #include "lltrans.h"
@@ -697,7 +697,7 @@ void LLWearable::removeFromAvatar( LLWearableType::EType type, BOOL upload_bake
 
 	if(gAgentCamera.cameraCustomizeAvatar())
 	{
-		LLSideTray::getInstance()->showPanel("sidepanel_appearance", LLSD().with("type", "edit_outfit"));
+		LLFloaterSidePanelContainer::showPanel("appearance", LLSD().with("type", "edit_outfit"));
 	}
 
 	gAgentAvatarp->updateVisualParams();
@@ -967,7 +967,7 @@ void LLWearable::revertValues()
 	syncImages(mSavedTEMap, mTEMap);
 
 
-	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
 	if( panel )
 	{
 		panel->updateScrollingPanelList();
@@ -1008,7 +1008,7 @@ void LLWearable::saveValues()
 	syncImages(mTEMap, mSavedTEMap);
 
 
-	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLSideTray::getInstance()->getPanel("sidepanel_appearance"));
+	LLSidepanelAppearance *panel = dynamic_cast<LLSidepanelAppearance*>(LLFloaterSidePanelContainer::getPanel("appearance"));
 	if( panel )
 	{
 		panel->updateScrollingPanelList();
diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp
index ddbcdfc3f7a2d35f4182f0208b20a0a681091621..6f6411ce3cc5337a841b7ba573cef9da803ae76d 100644
--- a/indra/newview/llwearablelist.cpp
+++ b/indra/newview/llwearablelist.cpp
@@ -63,7 +63,7 @@ struct LLWearableArrivedData
 
 LLWearableList::~LLWearableList()
 {
-	llassert_always(mList.empty()) ;
+	cleanup();
 }
 
 void LLWearableList::cleanup() 
diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp
index 6f7115ff6dbac656e753f8c5ca06f50303964a32..d2d48dc68fac33321199b62d91bfc3111dffe9a5 100644
--- a/indra/newview/llweb.cpp
+++ b/indra/newview/llweb.cpp
@@ -34,7 +34,6 @@
 
 #include "llagent.h"
 #include "llappviewer.h"
-#include "llfloatermediabrowser.h"
 #include "llfloaterwebcontent.h"
 #include "llfloaterreg.h"
 #include "lllogininstance.h"
@@ -78,32 +77,15 @@ void LLWeb::initClass()
 }
 
 
-// static
-void LLWeb::loadURL(const std::string& url, const std::string& target, const std::string& uuid)
-{
-	loadWebURL(url, target, uuid);
-	//if(target == "_internal")
-	//{
-	//	// Force load in the internal browser, as if with a blank target.
-	//	loadURLInternal(url, "", uuid);
-	//}
-	//else if (gSavedSettings.getBOOL("UseExternalBrowser") || (target == "_external"))
-	//{
-	//	loadURLExternal(url);
-	//}
-	//else
-	//{
-	//	loadURLInternal(url, target, uuid);
-	//}
-}
+
 
 // static
-void LLWeb::loadWebURL(const std::string& url, const std::string& target, const std::string& uuid)
+void LLWeb::loadURL(const std::string& url, const std::string& target, const std::string& uuid)
 {
 	if(target == "_internal")
 	{
 		// Force load in the internal browser, as if with a blank target.
-		loadWebURLInternal(url, "", uuid);
+		loadURLInternal(url, "", uuid);
 	}
 	else if (gSavedSettings.getBOOL("UseExternalBrowser") || (target == "_external"))
 	{
@@ -111,21 +93,17 @@ void LLWeb::loadWebURL(const std::string& url, const std::string& target, const
 	}
 	else
 	{
-		loadWebURLInternal(url, target, uuid);
+		loadURLInternal(url, target, uuid);
 	}
 }
 
-// static
-void LLWeb::loadURLInternal(const std::string &url, const std::string& target, const std::string& uuid)
-{
-	LLFloaterMediaBrowser::create(url, target, uuid);
-}
-
 // static
 // Explicitly open a Web URL using the Web content floater
-void LLWeb::loadWebURLInternal(const std::string &url, const std::string& target, const std::string& uuid)
+void LLWeb::loadURLInternal(const std::string &url, const std::string& target, const std::string& uuid)
 {
-	LLFloaterWebContent::create(LLFloaterWebContent::Params().url(url).target(target).id(uuid));
+	LLFloaterWebContent::Params p;
+	p.url(url).target(target).id(uuid);
+	LLFloaterReg::showInstance("web_content", p);
 }
 
 // static
@@ -208,6 +186,7 @@ std::string LLWeb::expandURLSubstitutions(const std::string &url,
 	substitution["VERSION_BUILD"] = LLVersionInfo::getBuild();
 	substitution["CHANNEL"] = LLVersionInfo::getChannel();
 	substitution["GRID"] = LLGridManager::getInstance()->getGridLabel();
+	substitution["GRID_LOWERCASE"] = utf8str_tolower(LLGridManager::getInstance()->getGridLabel());
 	substitution["OS"] = LLAppViewer::instance()->getOSInfo().getOSStringSimple();
 	substitution["SESSION_ID"] = gAgent.getSessionID();
 	substitution["FIRST_LOGIN"] = gAgent.isFirstLogin();
diff --git a/indra/newview/llweb.h b/indra/newview/llweb.h
index dc5958e57fb26cfdedc7e7fc38ec5489471ec0e7..0b95f664d681f0ec510c5ddfd1296658f5590ee0 100644
--- a/indra/newview/llweb.h
+++ b/indra/newview/llweb.h
@@ -42,25 +42,15 @@ class LLWeb
 public:
 	static void initClass();
 	
-	/// Load the given url in the user's preferred web browser
-	static void loadURL(const std::string& url, const std::string& target, const std::string& uuid = LLStringUtil::null);
-	static void loadURL(const std::string& url) { loadURL(url, LLStringUtil::null); }
-	/// Load the given url in the user's preferred web browser	
-	static void loadURL(const char* url, const std::string& target) { loadURL( ll_safe_string(url), target); }
-	static void loadURL(const char* url) { loadURL( ll_safe_string(url), LLStringUtil::null ); }
-	/// Load the given url in the Second Life internal web browser
-	static void loadURLInternal(const std::string &url, const std::string& target, const std::string& uuid = LLStringUtil::null);
-	static void loadURLInternal(const std::string &url) { loadURLInternal(url, LLStringUtil::null); }
 	/// Load the given url in the operating system's web browser, async if we want to return immediately
 	/// before browser has spawned
-	static void loadURLExternal(const std::string& url) { loadURLExternal(url,  LLStringUtil::null); };
+	static void loadURLExternal(const std::string& url) {loadURLExternal(url, LLStringUtil::null);}
 	static void loadURLExternal(const std::string& url, const std::string& uuid);
 	static void loadURLExternal(const std::string& url, bool async, const std::string& uuid = LLStringUtil::null);
 
-	// Explicitly open a Web URL using the Web content floater vs. the more general media browser
-	static void loadWebURL(const std::string& url, const std::string& target, const std::string& uuid);
-	static void loadWebURLInternal(const std::string &url, const std::string& target, const std::string& uuid);
-	static void loadWebURLInternal(const std::string &url) { loadWebURLInternal(url, LLStringUtil::null, LLStringUtil::null); }
+	static void loadURL(const std::string& url, const std::string& target = LLStringUtil::null, const std::string& uuid = LLStringUtil::null);
+	// load content using built-in browser
+	static void loadURLInternal(const std::string &url, const std::string& target = LLStringUtil::null, const std::string& uuid = LLStringUtil::null);
 
 	/// Returns escaped url (eg, " " to "%20") - used by all loadURL methods
 	static std::string escapeURL(const std::string& url);
diff --git a/indra/newview/llwebprofile.cpp b/indra/newview/llwebprofile.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..641f338f2c6be343f352a010a6d0ca3849310dbd
--- /dev/null
+++ b/indra/newview/llwebprofile.cpp
@@ -0,0 +1,305 @@
+/** 
+ * @file llwebprofile.cpp
+ * @brief Web profile access.
+ *
+ * $LicenseInfo:firstyear=2011&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 "llviewerprecompiledheaders.h"
+
+#include "llwebprofile.h"
+
+// libs
+#include "llbufferstream.h"
+#include "llhttpclient.h"
+#include "llimagepng.h"
+#include "llplugincookiestore.h"
+
+// newview
+#include "llpanelprofile.h" // for getProfileURL(). FIXME: move the method to LLAvatarActions
+#include "llviewermedia.h" // FIXME: don't use LLViewerMedia internals
+
+// third-party
+#include "reader.h" // JSON
+
+/*
+ * Workflow:
+ * 1. LLViewerMedia::setOpenIDCookie()
+ *    -> GET https://my-demo.secondlife.com/ via LLViewerMediaWebProfileResponder
+ *    -> LLWebProfile::setAuthCookie()
+ * 2. LLWebProfile::uploadImage()
+ *    -> GET "https://my-demo.secondlife.com/snapshots/s3_upload_config" via ConfigResponder
+ * 3. LLWebProfile::post()
+ *    -> POST <config_url> via PostImageResponder
+ *    -> redirect
+ *    -> GET <redirect_url> via PostImageRedirectResponder
+ */
+
+///////////////////////////////////////////////////////////////////////////////
+// LLWebProfileResponders::ConfigResponder
+
+class LLWebProfileResponders::ConfigResponder : public LLHTTPClient::Responder
+{
+	LOG_CLASS(LLWebProfileResponders::ConfigResponder);
+
+public:
+	ConfigResponder(LLPointer<LLImageFormatted> imagep)
+	:	mImagep(imagep)
+	{
+	}
+
+	/*virtual*/ void completedRaw(
+		U32 status,
+		const std::string& reason,
+		const LLChannelDescriptors& channels,
+		const LLIOPipe::buffer_ptr_t& buffer)
+	{
+		LLBufferStream istr(channels, buffer.get());
+		std::stringstream strstrm;
+		strstrm << istr.rdbuf();
+		const std::string body = strstrm.str();
+
+		if (status != 200)
+		{
+			llwarns << "Failed to get upload config (" << status << ")" << llendl;
+			LLWebProfile::reportImageUploadStatus(false);
+			return;
+		}
+
+		Json::Value root;
+		Json::Reader reader;
+		if (!reader.parse(body, root))
+		{
+			llwarns << "Failed to parse upload config: " << reader.getFormatedErrorMessages() << llendl;
+			LLWebProfile::reportImageUploadStatus(false);
+			return;
+		}
+
+		// *TODO: 404 = not supported by the grid
+		// *TODO: increase timeout or handle 499 Expired
+
+		// Convert config to LLSD.
+		const Json::Value data = root["data"];
+		const std::string upload_url = root["url"].asString();
+		LLSD config;
+		config["acl"]						= data["acl"].asString();
+		config["AWSAccessKeyId"]			= data["AWSAccessKeyId"].asString();
+		config["Content-Type"]				= data["Content-Type"].asString();
+		config["key"]						= data["key"].asString();
+		config["policy"]					= data["policy"].asString();
+		config["success_action_redirect"]	= data["success_action_redirect"].asString();
+		config["signature"]					= data["signature"].asString();
+		config["add_loc"]					= data.get("add_loc", "0").asString();
+		config["caption"]					= data.get("caption", "").asString();
+
+		// Do the actual image upload using the configuration.
+		LL_DEBUGS("Snapshots") << "Got upload config, POSTing image to " << upload_url << ", config=[" << config << "]" << llendl;
+		LLWebProfile::post(mImagep, config, upload_url);
+	}
+
+private:
+	LLPointer<LLImageFormatted> mImagep;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// LLWebProfilePostImageRedirectResponder
+class LLWebProfileResponders::PostImageRedirectResponder : public LLHTTPClient::Responder
+{
+	LOG_CLASS(LLWebProfileResponders::PostImageRedirectResponder);
+
+public:
+	/*virtual*/ void completedRaw(
+		U32 status,
+		const std::string& reason,
+		const LLChannelDescriptors& channels,
+		const LLIOPipe::buffer_ptr_t& buffer)
+	{
+		if (status != 200)
+		{
+			llwarns << "Failed to upload image: " << status << " " << reason << llendl;
+			LLWebProfile::reportImageUploadStatus(false);
+			return;
+		}
+
+		LLBufferStream istr(channels, buffer.get());
+		std::stringstream strstrm;
+		strstrm << istr.rdbuf();
+		const std::string body = strstrm.str();
+		llinfos << "Image uploaded." << llendl;
+		LL_DEBUGS("Snapshots") << "Uploading image succeeded. Response: [" << body << "]" << llendl;
+		LLWebProfile::reportImageUploadStatus(true);
+	}
+
+private:
+	LLPointer<LLImageFormatted> mImagep;
+};
+
+
+///////////////////////////////////////////////////////////////////////////////
+// LLWebProfileResponders::PostImageResponder
+class LLWebProfileResponders::PostImageResponder : public LLHTTPClient::Responder
+{
+	LOG_CLASS(LLWebProfileResponders::PostImageResponder);
+
+public:
+	/*virtual*/ void completedHeader(U32 status, const std::string& reason, const LLSD& content)
+	{
+		// Viewer seems to fail to follow a 303 redirect on POST request
+		// (URLRequest Error: 65, Send failed since rewinding of the data stream failed).
+		// Handle it manually.
+		if (status == 303)
+		{
+			LLSD headers = LLViewerMedia::getHeaders();
+			headers["Cookie"] = LLWebProfile::getAuthCookie();
+			const std::string& redir_url = content["location"];
+			LL_DEBUGS("Snapshots") << "Got redirection URL: " << redir_url << llendl;
+			LLHTTPClient::get(redir_url, new LLWebProfileResponders::PostImageRedirectResponder, headers);
+		}
+		else
+		{
+			llwarns << "Unexpected POST status: " << status << " " << reason << llendl;
+			LL_DEBUGS("Snapshots") << "headers: [" << content << "]" << llendl;
+			LLWebProfile::reportImageUploadStatus(false);
+		}
+	}
+
+	// Override just to suppress warnings.
+	/*virtual*/ void completedRaw(U32 status, const std::string& reason,
+							  const LLChannelDescriptors& channels,
+							  const LLIOPipe::buffer_ptr_t& buffer)
+	{
+	}
+};
+
+///////////////////////////////////////////////////////////////////////////////
+// LLWebProfile
+
+std::string LLWebProfile::sAuthCookie;
+LLWebProfile::status_callback_t LLWebProfile::mStatusCallback;
+
+// static
+void LLWebProfile::uploadImage(LLPointer<LLImageFormatted> image, const std::string& caption, bool add_location)
+{
+	// Get upload configuration data.
+	std::string config_url(getProfileURL(LLStringUtil::null) + "snapshots/s3_upload_config");
+	config_url += "?caption=" + LLURI::escape(caption);
+	config_url += "&add_loc=" + std::string(add_location ? "1" : "0");
+
+	LL_DEBUGS("Snapshots") << "Requesting " << config_url << llendl;
+	LLSD headers = LLViewerMedia::getHeaders();
+	headers["Cookie"] = getAuthCookie();
+	LLHTTPClient::get(config_url, new LLWebProfileResponders::ConfigResponder(image), headers);
+}
+
+// static
+void LLWebProfile::setAuthCookie(const std::string& cookie)
+{
+	LL_DEBUGS("Snapshots") << "Setting auth cookie: " << cookie << llendl;
+	sAuthCookie = cookie;
+}
+
+// static
+void LLWebProfile::post(LLPointer<LLImageFormatted> image, const LLSD& config, const std::string& url)
+{
+	if (dynamic_cast<LLImagePNG*>(image.get()) == 0)
+	{
+		llwarns << "Image to upload is not a PNG" << llendl;
+		llassert(dynamic_cast<LLImagePNG*>(image.get()) != 0);
+		return;
+	}
+
+	const std::string boundary = "----------------------------0123abcdefab";
+
+	LLSD headers = LLViewerMedia::getHeaders();
+	headers["Cookie"] = getAuthCookie();
+	headers["Content-Type"] = "multipart/form-data; boundary=" + boundary;
+
+	std::ostringstream body;
+
+	// *NOTE: The order seems to matter.
+	body	<< "--" << boundary << "\r\n"
+			<< "Content-Disposition: form-data; name=\"key\"\r\n\r\n"
+			<< config["key"].asString() << "\r\n";
+
+	body	<< "--" << boundary << "\r\n"
+			<< "Content-Disposition: form-data; name=\"AWSAccessKeyId\"\r\n\r\n"
+			<< config["AWSAccessKeyId"].asString() << "\r\n";
+
+	body	<< "--" << boundary << "\r\n"
+			<< "Content-Disposition: form-data; name=\"acl\"\r\n\r\n"
+			<< config["acl"].asString() << "\r\n";
+
+	body	<< "--" << boundary << "\r\n"
+			<< "Content-Disposition: form-data; name=\"Content-Type\"\r\n\r\n"
+			<< config["Content-Type"].asString() << "\r\n";
+
+	body	<< "--" << boundary << "\r\n"
+			<< "Content-Disposition: form-data; name=\"policy\"\r\n\r\n"
+			<< config["policy"].asString() << "\r\n";
+
+	body	<< "--" << boundary << "\r\n"
+			<< "Content-Disposition: form-data; name=\"signature\"\r\n\r\n"
+			<< config["signature"].asString() << "\r\n";
+
+	body	<< "--" << boundary << "\r\n"
+			<< "Content-Disposition: form-data; name=\"success_action_redirect\"\r\n\r\n"
+			<< config["success_action_redirect"].asString() << "\r\n";
+
+	body	<< "--" << boundary << "\r\n"
+			<< "Content-Disposition: form-data; name=\"file\"; filename=\"snapshot.png\"\r\n"
+			<< "Content-Type: image/png\r\n\r\n";
+
+	// Insert the image data.
+	// *FIX: Treating this as a string will probably screw it up ...
+	U8* image_data = image->getData();
+	for (S32 i = 0; i < image->getDataSize(); ++i)
+	{
+		body << image_data[i];
+	}
+
+	body <<	"\r\n--" << boundary << "--\r\n";
+
+	// postRaw() takes ownership of the buffer and releases it later.
+	size_t size = body.str().size();
+	U8 *data = new U8[size];
+	memcpy(data, body.str().data(), size);
+
+	// Send request, successful upload will trigger posting metadata.
+	LLHTTPClient::postRaw(url, data, size, new LLWebProfileResponders::PostImageResponder(), headers);
+}
+
+// static
+void LLWebProfile::reportImageUploadStatus(bool ok)
+{
+	if (mStatusCallback)
+	{
+		mStatusCallback(ok);
+	}
+}
+
+// static
+std::string LLWebProfile::getAuthCookie()
+{
+	// This is needed to test image uploads on Linux viewer built with OpenSSL 1.0.0 (0.9.8 works fine).
+	const char* debug_cookie = getenv("LL_SNAPSHOT_COOKIE");
+	return debug_cookie ? debug_cookie : sAuthCookie;
+}
diff --git a/indra/newview/llwebprofile.h b/indra/newview/llwebprofile.h
new file mode 100644
index 0000000000000000000000000000000000000000..10279bffaccfe3c225c59bf81de225d39f0101c2
--- /dev/null
+++ b/indra/newview/llwebprofile.h
@@ -0,0 +1,69 @@
+/** 
+ * @file llwebprofile.h
+ * @brief Web profile access.
+ *
+ * $LicenseInfo:firstyear=2011&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$
+ */
+
+#ifndef LL_LLWEBPROFILE_H
+#define LL_LLWEBPROFILE_H
+
+#include "llimage.h"
+
+namespace LLWebProfileResponders
+{
+    class ConfigResponder;
+    class PostImageResponder;
+    class PostImageRedirectResponder;
+};
+
+/**
+ * @class LLWebProfile
+ *
+ * Manages interaction with, a web service allowing the upload of snapshot images
+ * taken within the viewer.
+ */
+class LLWebProfile
+{
+	LOG_CLASS(LLWebProfile);
+
+public:
+	typedef boost::function<void(bool ok)> status_callback_t;
+
+	static void uploadImage(LLPointer<LLImageFormatted> image, const std::string& caption, bool add_location);
+	static void setAuthCookie(const std::string& cookie);
+	static void setImageUploadResultCallback(status_callback_t cb) { mStatusCallback = cb; }
+
+private:
+	friend class LLWebProfileResponders::ConfigResponder;
+	friend class LLWebProfileResponders::PostImageResponder;
+	friend class LLWebProfileResponders::PostImageRedirectResponder;
+
+	static void post(LLPointer<LLImageFormatted> image, const LLSD& config, const std::string& url);
+	static void reportImageUploadStatus(bool ok);
+	static std::string getAuthCookie();
+
+	static std::string sAuthCookie;
+	static status_callback_t mStatusCallback;
+};
+
+#endif // LL_LLWEBPROFILE_H
diff --git a/indra/newview/llwind.cpp b/indra/newview/llwind.cpp
index 69d309044296bdbfca9c6ec5c8bb1fa44d2db54c..4c39fb5b749f304bdbff03dd844ea2ec5d9672f0 100644
--- a/indra/newview/llwind.cpp
+++ b/indra/newview/llwind.cpp
@@ -46,16 +46,12 @@
 #include "llworld.h"
 
 
-const F32 CLOUD_DIVERGENCE_COEF = 0.5f; 
-
-
 //////////////////////////////////////////////////////////////////////
 // Construction/Destruction
 //////////////////////////////////////////////////////////////////////
 
 LLWind::LLWind()
-:	mSize(16),
-	mCloudDensityp(NULL)
+:	mSize(16)
 {
 	init();
 }
@@ -65,8 +61,6 @@ LLWind::~LLWind()
 {
 	delete [] mVelX;
 	delete [] mVelY;
-	delete [] mCloudVelX;
-	delete [] mCloudVelY;
 }
 
 
@@ -77,31 +71,23 @@ LLWind::~LLWind()
 
 void LLWind::init()
 {
+	LL_DEBUGS("Wind") << "initializing wind size: "<< mSize << LL_ENDL;
+	
 	// Initialize vector data
 	mVelX = new F32[mSize*mSize];
 	mVelY = new F32[mSize*mSize];
 
-	mCloudVelX = new F32[mSize*mSize];
-	mCloudVelY = new F32[mSize*mSize];
-
 	S32 i;
 	for (i = 0; i < mSize*mSize; i++)
 	{
 		mVelX[i] = 0.5f;
 		mVelY[i] = 0.5f;
-		mCloudVelX[i] = 0.0f;
-		mCloudVelY[i] = 0.0f;
 	}
 }
 
 
 void LLWind::decompress(LLBitPack &bitpack, LLGroupHeader *group_headerp)
 {
-	if (!mCloudDensityp)
-	{
-		return;
-	}
-
 	LLPatchHeader  patch_header;
 	S32 buffer[16*16];
 
@@ -122,22 +108,15 @@ void LLWind::decompress(LLBitPack &bitpack, LLGroupHeader *group_headerp)
 	decode_patch(bitpack, buffer);
 	decompress_patch(mVelY, buffer, &patch_header);
 
-
-
 	S32 i, j, k;
-	// HACK -- mCloudVelXY is the same as mVelXY, except we add a divergence
-	// that is proportional to the gradient of the cloud density 
-	// ==> this helps to clump clouds together
-	// NOTE ASSUMPTION: cloud density has the same dimensions as the wind field
-	// This needs to be fixed... causes discrepency at region boundaries
 
 	for (j=1; j<mSize-1; j++)
 	{
 		for (i=1; i<mSize-1; i++)
 		{
 			k = i + j * mSize;
-			*(mCloudVelX + k) = *(mVelX + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + 1) - *(mCloudDensityp + k - 1));
-			*(mCloudVelY + k) = *(mVelY + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + mSize) - *(mCloudDensityp + k - mSize));
+			*(mVelX + k) = *(mVelX + k);
+			*(mVelY + k) = *(mVelY + k);
 		}
 	}
 
@@ -145,29 +124,29 @@ void LLWind::decompress(LLBitPack &bitpack, LLGroupHeader *group_headerp)
 	for (j=1; j<mSize-1; j++)
 	{
 		k = i + j * mSize;
-		*(mCloudVelX + k) = *(mVelX + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k) - *(mCloudDensityp + k - 2));
-		*(mCloudVelY + k) = *(mVelY + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + mSize) - *(mCloudDensityp + k - mSize));
+		*(mVelX + k) = *(mVelX + k);
+		*(mVelY + k) = *(mVelY + k);
 	}
 	i = 0;
 	for (j=1; j<mSize-1; j++)
 	{
 		k = i + j * mSize;
-		*(mCloudVelX + k) = *(mVelX + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + 2) - *(mCloudDensityp + k));
-		*(mCloudVelY + k) = *(mVelY + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + mSize) - *(mCloudDensityp + k + mSize));
+		*(mVelX + k) = *(mVelX + k);
+		*(mVelY + k) = *(mVelY + k);
 	}
 	j = mSize - 1;
 	for (i=1; i<mSize-1; i++)
 	{
 		k = i + j * mSize;
-		*(mCloudVelX + k) = *(mVelX + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + 1) - *(mCloudDensityp + k - 1));
-		*(mCloudVelY + k) = *(mVelY + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k) - *(mCloudDensityp + k - 2*mSize));
+		*(mVelX + k) = *(mVelX + k);
+		*(mVelY + k) = *(mVelY + k);
 	}
 	j = 0;
 	for (i=1; i<mSize-1; i++)
 	{
 		k = i + j * mSize;
-		*(mCloudVelX + k) = *(mVelX + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + 1) - *(mCloudDensityp + k -1));
-		*(mCloudVelY + k) = *(mVelY + k) + CLOUD_DIVERGENCE_COEF * (*(mCloudDensityp + k + 2*mSize) - *(mCloudDensityp + k));
+		*(mVelX + k) = *(mVelX + k);
+		*(mVelY + k) = *(mVelY + k);
 	}
 }
 
@@ -280,74 +259,6 @@ LLVector3 LLWind::getVelocity(const LLVector3 &pos_region)
 	return r_val * WIND_SCALE_HACK;
 }
 
-
-LLVector3 LLWind::getCloudVelocity(const LLVector3 &pos_region)
-{
-	llassert(mSize == 16);
-	// Resolves value of wind at a location relative to SW corner of region
-	//  
-	// Returns wind magnitude in X,Y components of vector3
-	LLVector3 r_val;
-	F32 dx,dy;
-	S32 k;
-
-	LLVector3 pos_clamped_region(pos_region);
-	
-	F32 region_width_meters = LLWorld::getInstance()->getRegionWidthInMeters();
-
-	if (pos_clamped_region.mV[VX] < 0.f)
-	{
-		pos_clamped_region.mV[VX] = 0.f;
-	}
-	else if (pos_clamped_region.mV[VX] >= region_width_meters)
-	{
-		pos_clamped_region.mV[VX] = (F32) fmod(pos_clamped_region.mV[VX], region_width_meters);
-	}
-
-	if (pos_clamped_region.mV[VY] < 0.f)
-	{
-		pos_clamped_region.mV[VY] = 0.f;
-	}
-	else if (pos_clamped_region.mV[VY] >= region_width_meters)
-	{
-		pos_clamped_region.mV[VY] = (F32) fmod(pos_clamped_region.mV[VY], region_width_meters);
-	}
-	
-	
-	S32 i = llfloor(pos_clamped_region.mV[VX] * mSize / region_width_meters);
-	S32 j = llfloor(pos_clamped_region.mV[VY] * mSize / region_width_meters);
-	k = i + j*mSize;
-	dx = ((pos_clamped_region.mV[VX] * mSize / region_width_meters) - (F32) i);
-	dy = ((pos_clamped_region.mV[VY] * mSize / region_width_meters) - (F32) j);
-
-	if ((i < mSize-1) && (j < mSize-1))
-	{
-		//  Interior points, no edges
-		r_val.mV[VX] =  mCloudVelX[k]*(1.0f - dx)*(1.0f - dy) + 
-						mCloudVelX[k + 1]*dx*(1.0f - dy) + 
-						mCloudVelX[k + mSize]*dy*(1.0f - dx) + 
-						mCloudVelX[k + mSize + 1]*dx*dy;
-		r_val.mV[VY] =  mCloudVelY[k]*(1.0f - dx)*(1.0f - dy) + 
-						mCloudVelY[k + 1]*dx*(1.0f - dy) + 
-						mCloudVelY[k + mSize]*dy*(1.0f - dx) + 
-						mCloudVelY[k + mSize + 1]*dx*dy;
-	}
-	else 
-	{
-		r_val.mV[VX] = mCloudVelX[k];
-		r_val.mV[VY] = mCloudVelY[k];
-	}
-
-	r_val.mV[VZ] = 0.f;
-	return r_val * WIND_SCALE_HACK;
-}
-
-
-void LLWind::setCloudDensityPointer(F32 *densityp)
-{
-	mCloudDensityp = densityp;
-}
-
 void LLWind::setOriginGlobal(const LLVector3d &origin_global)
 {
 	mOriginGlobal = origin_global;
diff --git a/indra/newview/llwind.h b/indra/newview/llwind.h
index 925cb6d6428c79bfb2cda780af9e560a93affd9f..3b57f07124d2ad0563c046e8324028b969b56daa 100644
--- a/indra/newview/llwind.h
+++ b/indra/newview/llwind.h
@@ -27,7 +27,6 @@
 #ifndef LL_LLWIND_H
 #define LL_LLWIND_H
 
-//#include "vmath.h"
 #include "llmath.h"
 #include "v3math.h"
 #include "v3dmath.h"
@@ -44,25 +43,21 @@ class LLWind
 	~LLWind();
 	void renderVectors();
 	LLVector3 getVelocity(const LLVector3 &location); // "location" is region-local
-	LLVector3 getCloudVelocity(const LLVector3 &location); // "location" is region-local
 	LLVector3 getVelocityNoisy(const LLVector3 &location, const F32 dim);	// "location" is region-local
 
 	void decompress(LLBitPack &bitpack, LLGroupHeader *group_headerp);
 	LLVector3 getAverage();
-	void setCloudDensityPointer(F32 *densityp);
 
 	void setOriginGlobal(const LLVector3d &origin_global);
 private:
 	S32 mSize;
 	F32 * mVelX;
 	F32 * mVelY;
-	F32 * mCloudVelX;
-	F32 * mCloudVelY;
-	F32 * mCloudDensityp;
 
 	LLVector3d mOriginGlobal;
 	void init();
 
+	LOG_CLASS(LLWind);
 };
 
 #endif
diff --git a/indra/newview/llwindowlistener.cpp b/indra/newview/llwindowlistener.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..28f959eb7190eda9641da4cd38b3c71ec72691f3
--- /dev/null
+++ b/indra/newview/llwindowlistener.cpp
@@ -0,0 +1,505 @@
+/** 
+ * @file llwindowlistener.cpp
+ * @brief EventAPI interface for injecting input into LLWindow
+ *
+ * $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 "llviewerprecompiledheaders.h"
+#include "linden_common.h"
+
+#include "llwindowlistener.h"
+
+#include "llcoord.h"
+#include "llfocusmgr.h"
+#include "llkeyboard.h"
+#include "llwindowcallbacks.h"
+#include "llui.h"
+#include "llview.h"
+#include "llviewinject.h"
+#include "llviewerwindow.h"
+#include "llviewerkeyboard.h"
+#include "llrootview.h"
+#include "llsdutil.h"
+#include "stringize.h"
+#include <typeinfo>
+#include <map>
+#include <boost/scoped_ptr.hpp>
+#include <boost/lambda/core.hpp>
+#include <boost/lambda/bind.hpp>
+
+namespace bll = boost::lambda;
+
+LLWindowListener::LLWindowListener(LLViewerWindow *window, const KeyboardGetter& kbgetter)
+	: LLEventAPI("LLWindow", "Inject input events into the LLWindow instance"),
+	  mWindow(window),
+	  mKbGetter(kbgetter)
+{
+	std::string keySomething =
+		"Given [\"keysym\"], [\"keycode\"] or [\"char\"], inject the specified ";
+	std::string keyExplain =
+		"(integer keycode values, or keysym string from any addKeyName() call in\n"
+		"http://hg.secondlife.com/viewer-development/src/tip/indra/llwindow/llkeyboard.cpp )\n";
+	std::string mask =
+		"Specify optional [\"mask\"] as an array containing any of \"CTL\", \"ALT\",\n"
+		"\"SHIFT\" or \"MAC_CONTROL\"; the corresponding modifier bits will be combined\n"
+		"to form the mask used with the event.";
+
+	std::string given = "Given ";
+	std::string mouseParams =
+		"optional [\"path\"], optional [\"x\"] and [\"y\"], inject the requested mouse ";
+	std::string buttonParams =
+		std::string("[\"button\"], ") + mouseParams;
+	std::string buttonExplain =
+		"(button values \"LEFT\", \"MIDDLE\", \"RIGHT\")\n";
+	std::string paramsExplain =
+		"[\"path\"] is as for LLUI::resolvePath(), described in\n"
+		"http://hg.secondlife.com/viewer-development/src/tip/indra/llui/llui.h\n"
+		"If you omit [\"path\"], you must specify both [\"x\"] and [\"y\"].\n"
+		"If you specify [\"path\"] without both [\"x\"] and [\"y\"], will synthesize (x, y)\n"
+		"in the center of the LLView selected by [\"path\"].\n"
+		"You may specify [\"path\"] with both [\"x\"] and [\"y\"], will use your (x, y).\n"
+		"This may cause the LLView selected by [\"path\"] to reject the event.\n"
+		"Optional [\"reply\"] requests a reply event on the named LLEventPump.\n"
+		"reply[\"error\"] isUndefined (None) on success, else an explanatory message.\n";
+
+	add("getInfo",
+		"Get information about the ui element specified by [\"path\"]",
+		&LLWindowListener::getInfo,
+		LLSDMap("reply", LLSD()));
+	add("getPaths",
+		"Send on [\"reply\"] an event in which [\"paths\"] is an array of valid LLView\n"
+		"pathnames. Optional [\"under\"] pathname specifies the base node under which\n"
+		"to list; all nodes from root if no [\"under\"].",
+		&LLWindowListener::getPaths,
+		LLSDMap("reply", LLSD()));
+	add("keyDown",
+		keySomething + "keypress event.\n" + keyExplain + mask,
+		&LLWindowListener::keyDown);
+	add("keyUp",
+		keySomething + "key release event.\n" + keyExplain + mask,
+		&LLWindowListener::keyUp);
+	add("mouseDown",
+		given + buttonParams + "click event.\n" + buttonExplain + paramsExplain + mask,
+		&LLWindowListener::mouseDown);
+	add("mouseUp",
+		given + buttonParams + "release event.\n" + buttonExplain + paramsExplain + mask,
+		&LLWindowListener::mouseUp);
+	add("mouseMove",
+		given + mouseParams + "movement event.\n" + paramsExplain + mask,
+		&LLWindowListener::mouseMove);
+	add("mouseScroll",
+		"Given an integer number of [\"clicks\"], inject the requested mouse scroll event.\n"
+		"(positive clicks moves downward through typical content)",
+		&LLWindowListener::mouseScroll);
+}
+
+template <typename MAPPED>
+class StringLookup
+{
+private:
+	std::string mDesc;
+	typedef std::map<std::string, MAPPED> Map;
+	Map mMap;
+
+public:
+	StringLookup(const std::string& desc): mDesc(desc) {}
+
+	MAPPED lookup(const typename Map::key_type& key) const
+	{
+		typename Map::const_iterator found = mMap.find(key);
+		if (found == mMap.end())
+		{
+			LL_WARNS("LLWindowListener") << "Unknown " << mDesc << " '" << key << "'" << LL_ENDL;
+			return MAPPED();
+		}
+		return found->second;
+	}
+
+protected:
+	void add(const typename Map::key_type& key, const typename Map::mapped_type& value)
+	{
+		mMap.insert(typename Map::value_type(key, value));
+	}
+};
+
+namespace {
+
+// helper for getMask()
+MASK lookupMask_(const std::string& maskname)
+{
+	// It's unclear to me whether MASK_MAC_CONTROL is important, but it's not
+	// supported by maskFromString(). Handle that specially.
+	if (maskname == "MAC_CONTROL")
+	{
+		return MASK_MAC_CONTROL;
+	}
+	else
+	{
+		// In case of lookup failure, return MASK_NONE, which won't affect our
+		// caller's OR.
+		MASK mask(MASK_NONE);
+		LLKeyboard::maskFromString(maskname, &mask);
+		return mask;
+	}
+}
+
+MASK getMask(const LLSD& event)
+{
+	LLSD masknames(event["mask"]);
+	if (! masknames.isArray())
+	{
+		// If event["mask"] is a single string, perform normal lookup on it.
+		return lookupMask_(masknames);
+	}
+
+	// Here event["mask"] is an array of mask-name strings. OR together their
+	// corresponding bits.
+	MASK mask(MASK_NONE);
+	for (LLSD::array_const_iterator ai(masknames.beginArray()), aend(masknames.endArray());
+		 ai != aend; ++ai)
+	{
+		mask |= lookupMask_(*ai);
+	}
+	return mask;
+}
+
+KEY getKEY(const LLSD& event)
+{
+    if (event.has("keysym"))
+	{
+		// Initialize to KEY_NONE; that way we can ignore the bool return from
+		// keyFromString() and, in the lookup-fail case, simply return KEY_NONE.
+		KEY key(KEY_NONE);
+		LLKeyboard::keyFromString(event["keysym"], &key);
+		return key;
+	}
+	else if (event.has("keycode"))
+	{
+		return KEY(event["keycode"].asInteger());
+	}
+	else
+	{
+		return KEY(event["char"].asString()[0]);
+	}
+}
+
+} // namespace
+
+void LLWindowListener::getInfo(LLSD const & evt)
+{
+	Response response(LLSD(), evt);
+	
+	if (evt.has("path"))
+	{
+		std::string path(evt["path"]);
+		LLView * target_view = LLUI::resolvePath(LLUI::getRootView(), path);
+		if (target_view != 0)
+		{
+			response.setResponse(target_view->getInfo());
+		}
+		else 
+		{
+			response.error(STRINGIZE(evt["op"].asString() << " request "
+											"specified invalid \"path\": '" << path << "'"));
+		}
+	}
+	else 
+	{
+		response.error(
+			STRINGIZE(evt["op"].asString() << "request did not provide a path" ));
+	}
+}
+
+void LLWindowListener::getPaths(LLSD const & request)
+{
+	Response response(LLSD(), request);
+	LLView *root(LLUI::getRootView()), *base(NULL);
+	// Capturing request["under"] as string means we conflate the case in
+	// which there is no ["under"] key with the case in which its value is the
+	// empty string. That seems to make sense to me.
+	std::string under(request["under"]);
+
+	// Deal with optional "under" parameter
+	if (under.empty())
+	{
+		base = root;
+	}
+	else
+	{
+		base = LLUI::resolvePath(root, under);
+		if (! base)
+		{
+			return response.error(STRINGIZE(request["op"].asString() << " request "
+											"specified invalid \"under\" path: '" << under << "'"));
+		}
+	}
+
+	// Traverse the entire subtree under 'base', collecting pathnames
+	for (LLView::tree_iterator_t ti(base->beginTreeDFS()), tend(base->endTreeDFS());
+		 ti != tend; ++ti)
+	{
+		response["paths"].append((*ti)->getPathname());
+	}
+}
+
+void LLWindowListener::keyDown(LLSD const & evt)
+{
+	Response response(LLSD(), evt);
+	
+	if (evt.has("path"))
+	{
+		std::string path(evt["path"]);
+		LLView * target_view = LLUI::resolvePath(LLUI::getRootView(), path);
+		if (target_view == 0) 
+		{
+			response.error(STRINGIZE(evt["op"].asString() << " request "
+											"specified invalid \"path\": '" << path << "'"));
+		}
+		else if(target_view->isAvailable())
+		{
+			response.setResponse(target_view->getInfo());
+			
+			gFocusMgr.setKeyboardFocus(target_view);
+			KEY key = getKEY(evt);
+			MASK mask = getMask(evt);
+			gViewerKeyboard.handleKey(key, mask, false);
+			if(key < 0x80) mWindow->handleUnicodeChar(key, mask);
+		}
+		else 
+		{
+			response.error(STRINGIZE(evt["op"].asString() << " request "
+											"element specified by \"path\": '" << path << "'" 
+											<< " is not visible"));
+		}
+	}
+	else 
+	{
+		mKbGetter()->handleTranslatedKeyDown(getKEY(evt), getMask(evt));
+	}
+}
+
+void LLWindowListener::keyUp(LLSD const & evt)
+{
+	Response response(LLSD(), evt);
+
+	if (evt.has("path"))
+	{
+		std::string path(evt["path"]);
+		LLView * target_view = LLUI::resolvePath(LLUI::getRootView(), path);
+		if (target_view == 0 )
+		{
+			response.error(STRINGIZE(evt["op"].asString() << " request "
+											"specified invalid \"path\": '" << path << "'"));
+		}
+		else if (target_view->isAvailable())
+		{
+			response.setResponse(target_view->getInfo());
+
+			gFocusMgr.setKeyboardFocus(target_view);
+			mKbGetter()->handleTranslatedKeyUp(getKEY(evt), getMask(evt));
+		}
+		else 
+		{
+			response.error(STRINGIZE(evt["op"].asString() << " request "
+											"element specified byt \"path\": '" << path << "'" 
+											<< " is not visible"));
+		}
+	}
+	else 
+	{
+		mKbGetter()->handleTranslatedKeyUp(getKEY(evt), getMask(evt));
+	}
+}
+
+// for WhichButton
+typedef BOOL (LLWindowCallbacks::*MouseMethod)(LLWindow *, LLCoordGL, MASK);
+struct Actions
+{
+	Actions(const MouseMethod& d, const MouseMethod& u): down(d), up(u), valid(true) {}
+	Actions(): valid(false) {}
+	MouseMethod down, up;
+	bool valid;
+};
+
+struct WhichButton: public StringLookup<Actions>
+{
+	WhichButton(): StringLookup<Actions>("mouse button")
+	{
+		add("LEFT",		Actions(&LLWindowCallbacks::handleMouseDown,
+								&LLWindowCallbacks::handleMouseUp));
+		add("RIGHT",	Actions(&LLWindowCallbacks::handleRightMouseDown,
+								&LLWindowCallbacks::handleRightMouseUp));
+		add("MIDDLE",	Actions(&LLWindowCallbacks::handleMiddleMouseDown,
+								&LLWindowCallbacks::handleMiddleMouseUp));
+	}
+};
+static WhichButton buttons;
+
+typedef boost::function<bool(LLCoordGL, MASK)> MouseFunc;
+
+static void mouseEvent(const MouseFunc& func, const LLSD& request)
+{
+	// Ensure we send response
+	LLEventAPI::Response response(LLSD(), request);
+	// We haven't yet established whether the incoming request has "x" and "y",
+	// but capture this anyway, with 0 for omitted values.
+	LLCoordGL pos(request["x"].asInteger(), request["y"].asInteger());
+	bool has_pos(request.has("x") && request.has("y"));
+
+	boost::scoped_ptr<LLView::TemporaryDrilldownFunc> tempfunc;
+
+	// Documentation for mouseDown(), mouseUp() and mouseMove() claims you
+	// must either specify ["path"], or both of ["x"] and ["y"]. You MAY
+	// specify all. Let's say that passing "path" as an empty string is
+	// equivalent to not passing it at all.
+	std::string path(request["path"]);
+	if (path.empty())
+	{
+		// Without "path", you must specify both "x" and "y".
+		if (! has_pos)
+		{
+			return response.error(STRINGIZE(request["op"].asString() << " request "
+											"without \"path\" must specify both \"x\" and \"y\": "
+											<< request));
+		}
+	}
+	else // ! path.empty()
+	{
+		LLView* root   = LLUI::getRootView();
+		LLView* target = LLUI::resolvePath(root, path);
+		if (! target)
+		{
+			return response.error(STRINGIZE(request["op"].asString() << " request "
+											"specified invalid \"path\": '" << path << "'"));
+		}
+
+		response.setResponse(target->getInfo());
+
+		// The intent of this test is to prevent trying to drill down to a
+		// widget in a hidden floater, or on a tab that's not current, etc.
+		if (! target->isInVisibleChain())
+		{
+			return response.error(STRINGIZE(request["op"].asString() << " request "
+											"specified \"path\" not currently visible: '"
+											<< path << "'"));
+		}
+
+		// This test isn't folded in with the above error case since you can
+		// (e.g.) pop up a tooltip even for a disabled widget.
+		if (! target->isInEnabledChain())
+		{
+			response.warn(STRINGIZE(request["op"].asString() << " request "
+									"specified \"path\" not currently enabled: '"
+									<< path << "'"));
+		}
+
+		if (! has_pos)
+		{
+			LLRect rect(target->calcScreenRect());
+			pos.set(rect.getCenterX(), rect.getCenterY());
+			// nonstandard warning tactic: probably usual case; we want event
+			// sender to know synthesized (x, y), but maybe don't need to log?
+			response["warnings"].append(STRINGIZE("using center point ("
+												  << pos.mX << ", " << pos.mY << ")"));
+		}
+
+/*==========================================================================*|
+		// NEVER MIND: the LLView tree defines priority handler layers in
+		// front of the normal widget set, so this has never yet produced
+		// anything but spam warnings. (sigh)
+
+		// recursive childFromPoint() should give us the frontmost, leafmost
+		// widget at the specified (x, y).
+		LLView* frontmost = root->childFromPoint(pos.mX, pos.mY, true);
+		if (frontmost != target)
+		{
+			response.warn(STRINGIZE(request["op"].asString() << " request "
+									"specified \"path\" = '" << path
+									<< "', but frontmost LLView at (" << pos.mX << ", " << pos.mY
+									<< ") is '" << LLView::getPathname(frontmost) << "'"));
+		}
+|*==========================================================================*/
+
+		// Instantiate a TemporaryDrilldownFunc to route incoming mouse events
+		// to the target LLView*. But put it on the heap since "path" is
+		// optional. Nonetheless, manage it with a boost::scoped_ptr so it
+		// will be destroyed when we leave.
+		tempfunc.reset(new LLView::TemporaryDrilldownFunc(llview::TargetEvent(target)));
+	}
+
+	// The question of whether the requested LLView actually handled the
+	// specified event is important enough, and its handling unclear enough,
+	// to warrant a separate response attribute. Instead of deciding here to
+	// make it a warning, or an error, let caller decide.
+	response["handled"] = func(pos, getMask(request));
+
+	// On exiting this scope, response will send, tempfunc will restore the
+	// normal pointInView(x, y) containment logic, etc.
+}
+
+void LLWindowListener::mouseDown(LLSD const & request)
+{
+	Actions actions(buttons.lookup(request["button"]));
+	if (actions.valid)
+	{
+		// Normally you can pass NULL to an LLWindow* without compiler
+		// complaint, but going through boost::lambda::bind() evidently
+		// bypasses that special case: it only knows you're trying to pass an
+		// int to a pointer. Explicitly cast NULL to the desired pointer type.
+		mouseEvent(bll::bind(actions.down, mWindow,
+							 static_cast<LLWindow*>(NULL), bll::_1, bll::_2),
+				   request);
+	}
+}
+
+void LLWindowListener::mouseUp(LLSD const & request)
+{
+	Actions actions(buttons.lookup(request["button"]));
+	if (actions.valid)
+	{
+		mouseEvent(bll::bind(actions.up, mWindow,
+							 static_cast<LLWindow*>(NULL), bll::_1, bll::_2),
+				   request);
+	}
+}
+
+void LLWindowListener::mouseMove(LLSD const & request)
+{
+	// We want to call the same central mouseEvent() routine for
+	// handleMouseMove() as for button clicks. But handleMouseMove() returns
+	// void, whereas mouseEvent() accepts a function returning bool -- and
+	// uses that bool return. Use (void-lambda-expression, true) to construct
+	// a callable that returns bool anyway. Pass 'true' because we expect that
+	// our caller will usually treat 'false' as a problem.
+	mouseEvent((bll::bind(&LLWindowCallbacks::handleMouseMove, mWindow,
+						  static_cast<LLWindow*>(NULL), bll::_1, bll::_2),
+				true),
+			   request);
+}
+
+void LLWindowListener::mouseScroll(LLSD const & request)
+{
+	S32 clicks = request["clicks"].asInteger();
+
+	mWindow->handleScrollWheel(NULL, clicks);
+}
diff --git a/indra/llwindow/llwindowlistener.h b/indra/newview/llwindowlistener.h
similarity index 89%
rename from indra/llwindow/llwindowlistener.h
rename to indra/newview/llwindowlistener.h
index 74e577ff93a5ac3145108b91cced5707dce9c2e5..7af5ab3b9f07363a81deda7c5da85bd87ead0a74 100644
--- a/indra/llwindow/llwindowlistener.h
+++ b/indra/newview/llwindowlistener.h
@@ -31,14 +31,16 @@
 #include <boost/function.hpp>
 
 class LLKeyboard;
-class LLWindowCallbacks;
+class LLViewerWindow;
 
 class LLWindowListener : public LLEventAPI
 {
 public:
 	typedef boost::function<LLKeyboard*()> KeyboardGetter;
-	LLWindowListener(LLWindowCallbacks * window, const KeyboardGetter& kbgetter);
+	LLWindowListener(LLViewerWindow * window, const KeyboardGetter& kbgetter);
 
+	void getInfo(LLSD const & evt);
+	void getPaths(LLSD const & evt);
 	void keyDown(LLSD const & evt);
 	void keyUp(LLSD const & evt);
 	void mouseDown(LLSD const & evt);
@@ -47,7 +49,7 @@ class LLWindowListener : public LLEventAPI
 	void mouseScroll(LLSD const & evt);
 
 private:
-	LLWindowCallbacks * mWindow;
+	LLViewerWindow * mWindow;
 	KeyboardGetter mKbGetter;
 };
 
diff --git a/indra/newview/llwlparamset.cpp b/indra/newview/llwlparamset.cpp
index 02d914a8124f5c06b0667deea1b54ba5813e9da9..5bb702503102ecf40259348dc364617dacab301d 100644
--- a/indra/newview/llwlparamset.cpp
+++ b/indra/newview/llwlparamset.cpp
@@ -69,12 +69,18 @@ LLWLParamSet::LLWLParamSet(void) :
 */
 }
 
+static LLFastTimer::DeclareTimer FTM_WL_PARAM_UPDATE("WL Param Update");
+
 void LLWLParamSet::update(LLGLSLShader * shader) const 
 {	
+	LLFastTimer t(FTM_WL_PARAM_UPDATE);
+
 	for(LLSD::map_const_iterator i = mParamValues.beginMap();
 		i != mParamValues.endMap();
 		++i)
 	{
+		
+
 		const std::string& param = i->first;
 		
 		if(	param == "star_brightness" || param == "preset_num" || param == "sun_angle" ||
@@ -91,8 +97,9 @@ void LLWLParamSet::update(LLGLSLShader * shader) const
 			val.mV[1] = F32(i->second[1].asReal()) + mCloudScrollYOffset;
 			val.mV[2] = (F32) i->second[2].asReal();
 			val.mV[3] = (F32) i->second[3].asReal();
-			
-			shader->uniform4fv(param, 1, val.mV);	
+			stop_glerror();
+			shader->uniform4fv(param, 1, val.mV);
+			stop_glerror();
 		} 
 		else // param is the uniform name
 		{
@@ -118,8 +125,9 @@ void LLWLParamSet::update(LLGLSLShader * shader) const
 			{
 				val.mV[0] = i->second.asBoolean();
 			}
-			
+			stop_glerror();
 			shader->uniform4fv(param, 1, val.mV);
+			stop_glerror();
 		}
 	}
 }
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index a7ae456f3ce76923d8da794595e505afd7b462f3..676287c0addbfe4f62f96a69549d8bafcdab6808 100644
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -589,22 +589,22 @@ void LLWorld::updateVisibilities()
 {
 	F32 cur_far_clip = LLViewerCamera::getInstance()->getFar();
 
-	LLViewerCamera::getInstance()->setFar(mLandFarClip);
-
-	F32 diagonal_squared = F_SQRT2 * F_SQRT2 * mWidth * mWidth;
-	// Go through the culled list and check for visible regions
+	// Go through the culled list and check for visible regions (region is visible if land is visible)
 	for (region_list_t::iterator iter = mCulledRegionList.begin();
 		 iter != mCulledRegionList.end(); )
 	{
 		region_list_t::iterator curiter = iter++;
 		LLViewerRegion* regionp = *curiter;
-		F32 height = regionp->getLand().getMaxZ() - regionp->getLand().getMinZ();
-		F32 radius = 0.5f*(F32) sqrt(height * height + diagonal_squared);
-		if (!regionp->getLand().hasZData()
-			|| LLViewerCamera::getInstance()->sphereInFrustum(regionp->getCenterAgent(), radius))
+		
+		LLSpatialPartition* part = regionp->getSpatialPartition(LLViewerRegion::PARTITION_TERRAIN);
+		if (part)
 		{
-			mCulledRegionList.erase(curiter);
-			mVisibleRegionList.push_back(regionp);
+			LLSpatialGroup* group = (LLSpatialGroup*) part->mOctree->getListener(0);
+			if (LLViewerCamera::getInstance()->AABBInFrustum(group->mBounds[0], group->mBounds[1]))
+			{
+				mCulledRegionList.erase(curiter);
+				mVisibleRegionList.push_back(regionp);
+			}
 		}
 	}
 	
@@ -619,17 +619,20 @@ void LLWorld::updateVisibilities()
 			continue;
 		}
 
-		F32 height = regionp->getLand().getMaxZ() - regionp->getLand().getMinZ();
-		F32 radius = 0.5f*(F32) sqrt(height * height + diagonal_squared);
-		if (LLViewerCamera::getInstance()->sphereInFrustum(regionp->getCenterAgent(), radius))
-		{
-			regionp->calculateCameraDistance();
-			regionp->getLand().updatePatchVisibilities(gAgent);
-		}
-		else
+		LLSpatialPartition* part = regionp->getSpatialPartition(LLViewerRegion::PARTITION_TERRAIN);
+		if (part)
 		{
-			mVisibleRegionList.erase(curiter);
-			mCulledRegionList.push_back(regionp);
+			LLSpatialGroup* group = (LLSpatialGroup*) part->mOctree->getListener(0);
+			if (LLViewerCamera::getInstance()->AABBInFrustum(group->mBounds[0], group->mBounds[1]))
+			{
+				regionp->calculateCameraDistance();
+				regionp->getLand().updatePatchVisibilities(gAgent);
+			}
+			else
+			{
+				mVisibleRegionList.erase(curiter);
+				mCulledRegionList.push_back(regionp);
+			}
 		}
 	}
 
@@ -815,14 +818,11 @@ void LLWorld::updateWaterObjects()
 	max_x = (S32)region_x + range;
 	max_y = (S32)region_y + range;
 
-	F32 height = 0.f;
-	
 	for (region_list_t::iterator iter = mRegionList.begin();
 		 iter != mRegionList.end(); ++iter)
 	{
 		LLViewerRegion* regionp = *iter;
 		LLVOWater* waterp = regionp->getLand().getWaterObj();
-		height += regionp->getWaterHeight();
 		if (waterp)
 		{
 			gObjectList.updateActive(waterp);
@@ -839,6 +839,7 @@ void LLWorld::updateWaterObjects()
 
 	// Now, get a list of the holes
 	S32 x, y;
+	F32 water_height = gAgent.getRegion()->getWaterHeight() + 256.f;
 	for (x = min_x; x <= max_x; x += rwidth)
 	{
 		for (y = min_y; y <= max_y; y += rwidth)
@@ -850,7 +851,7 @@ void LLWorld::updateWaterObjects()
 				waterp->setUseTexture(FALSE);
 				waterp->setPositionGlobal(LLVector3d(x + rwidth/2,
 													 y + rwidth/2,
-													 256.f+DEFAULT_WATER_HEIGHT));
+													 water_height));
 				waterp->setScale(LLVector3((F32)rwidth, (F32)rwidth, 512.f));
 				gPipeline.createObject(waterp);
 				mHoleWaterObjects.push_back(waterp);
@@ -907,8 +908,7 @@ void LLWorld::updateWaterObjects()
 		}
 
 		waterp->setRegion(gAgent.getRegion());
-		LLVector3d water_pos(water_center_x, water_center_y, 
-			DEFAULT_WATER_HEIGHT+256.f);
+		LLVector3d water_pos(water_center_x, water_center_y, water_height) ;
 		LLVector3 water_scale((F32) dim[0], (F32) dim[1], 512.f);
 
 		//stretch out to horizon
diff --git a/indra/newview/llworldmapmessage.cpp b/indra/newview/llworldmapmessage.cpp
index 66d0d698ba490218beb4466c57fda20ce9a4ed26..8307d323362b8348026a7fbbafb21f0af216b0c6 100644
--- a/indra/newview/llworldmapmessage.cpp
+++ b/indra/newview/llworldmapmessage.cpp
@@ -210,15 +210,14 @@ void LLWorldMapMessage::processMapBlockReply(LLMessageSystem* msg, void**)
 		}
 
 		// Handle the SLURL callback if any
-		if(LLWorldMapMessage::getInstance()->mSLURLCallback != NULL)
+		url_callback_t callback = LLWorldMapMessage::getInstance()->mSLURLCallback;
+		if(callback != NULL)
 		{
 			U64 handle = to_region_handle(x_world, y_world);
 			// Check if we reached the requested region
 			if ((LLStringUtil::compareInsensitive(LLWorldMapMessage::getInstance()->mSLURLRegionName, name)==0)
 				|| (LLWorldMapMessage::getInstance()->mSLURLRegionHandle == handle))
 			{
-				url_callback_t callback = LLWorldMapMessage::getInstance()->mSLURLCallback;
-
 				LLWorldMapMessage::getInstance()->mSLURLCallback = NULL;
 				LLWorldMapMessage::getInstance()->mSLURLRegionName.clear();
 				LLWorldMapMessage::getInstance()->mSLURLRegionHandle = 0;
diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp
index 265d5dc801b51798531e18e8cdb9881e6c0eba23..e50851b8e76488dbdf8ac4659876700301d38cda 100644
--- a/indra/newview/llworldmapview.cpp
+++ b/indra/newview/llworldmapview.cpp
@@ -314,7 +314,7 @@ void LLWorldMapView::draw()
 	{
 		gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
 
-		glMatrixMode(GL_MODELVIEW);
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 		// Clear the background alpha to 0
 		gGL.flush();
@@ -422,7 +422,7 @@ void LLWorldMapView::draw()
 				// Draw something whenever we have enough info
 				if (overlayimage->hasGLTexture())
 				{
-					gGL.blendFunc(LLRender::BF_DEST_ALPHA, LLRender::BF_ZERO);
+					gGL.blendFunc(LLRender::BF_SOURCE_ALPHA, LLRender::BF_ONE_MINUS_SOURCE_ALPHA);	
 					gGL.getTexUnit(0)->bind(overlayimage);
 					gGL.color4f(1.f, 1.f, 1.f, 1.f);
 					gGL.begin(LLRender::QUADS);
@@ -1307,7 +1307,7 @@ void LLWorldMapView::drawTrackingCircle( const LLRect& rect, S32 x, S32 y, const
 		end_theta -= angle_adjust_y;
 	}
 
-	glMatrixMode(GL_MODELVIEW);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 	gGL.pushMatrix();
 	gGL.translatef((F32)x, (F32)y, 0.f);
 	gl_washer_segment_2d(inner_radius, outer_radius, start_theta, end_theta, 40, color, color);
diff --git a/indra/newview/llworldview.cpp b/indra/newview/llworldview.cpp
deleted file mode 100644
index f5dc2a5290df2717f11626c7e06509368da85644..0000000000000000000000000000000000000000
--- a/indra/newview/llworldview.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/** 
- * @file llworldview.cpp
- * @brief LLWorldView class implementation
- *
- * $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 "llviewerprecompiledheaders.h"
-
-#include "llworldview.h"
-
-#include "llviewercontrol.h"
-#include "llsidetray.h"
-/////////////////////////////////////////////////////
-// LLFloaterView
-
-static LLDefaultChildRegistry::Register<LLWorldView> r("world_view");
-
-LLWorldView::LLWorldView(const Params& p)
-:	LLUICtrl (p)
-{
-	gSavedSettings.getControl("SidebarCameraMovement")->getSignal()->connect(boost::bind(&LLWorldView::toggleSidebarCameraMovement, this, _2));
-}
-
-void LLWorldView::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
-	//if (FALSE == gSavedSettings.getBOOL("SidebarCameraMovement") )
-	//{
-	//	LLView* main_view = LLUI::getRootView()->findChild<LLView>("main_view");
-	//	if(main_view)
-	//	{
-	//		width = main_view->getRect().getWidth();
-	//	}
-	//}
-	
-	LLUICtrl::reshape(width, height, called_from_parent);
-}
-void LLWorldView::toggleSidebarCameraMovement(const LLSD::Boolean& new_visibility)
-{
-	reshape(getParent()->getRect().getWidth(),getRect().getHeight());
-}
-
diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp
index f483ba5af8d5089c6d0ee3127dd30da9d64f0b48..0da70d398b06ca0b35e50a7c40cc737b3efa1491 100644
--- a/indra/newview/llxmlrpctransaction.cpp
+++ b/indra/newview/llxmlrpctransaction.cpp
@@ -305,6 +305,15 @@ void LLXMLRPCTransaction::Impl::init(XMLRPC_REQUEST request, bool useGzip)
 	{
 		mCurlRequest = new LLCurlEasyRequest();
 	}
+	if(!mCurlRequest->isValid())
+	{
+		llwarns << "mCurlRequest is invalid." << llendl ;
+
+		delete mCurlRequest ;
+		mCurlRequest = NULL ;
+		return ;
+	}
+
 	mErrorCert = NULL;
 
 //	mCurlRequest->setopt(CURLOPT_VERBOSE, 1); // useful for debugging
@@ -357,10 +366,20 @@ LLXMLRPCTransaction::Impl::~Impl()
 	}
 	
 	delete mCurlRequest;
+	mCurlRequest = NULL ;
 }
 
 bool LLXMLRPCTransaction::Impl::process()
 {
+	if(!mCurlRequest || !mCurlRequest->isValid())
+	{
+		llwarns << "transaction failed." << llendl ;
+
+		delete mCurlRequest ;
+		mCurlRequest = NULL ;
+		return true ; //failed, quit.
+	}
+
 	switch(mStatus)
 	{
 		case LLXMLRPCTransaction::StatusComplete:
@@ -382,19 +401,11 @@ bool LLXMLRPCTransaction::Impl::process()
 			// continue onward
 		}
 	}
-	
-	//const F32 MAX_PROCESSING_TIME = 0.05f;
-	//LLTimer timer;
-
-	mCurlRequest->perform();
-
-	/*while (mCurlRequest->perform() > 0)
+		
+	if(!mCurlRequest->wait())
 	{
-		if (timer.getElapsedTimeF32() >= MAX_PROCESSING_TIME)
-		{
-			return false;
-		}
-	}*/
+		return false ;
+	}
 
 	while(1)
 	{
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index a50f66f2829d46690f2475c5a562f0d8a3ec224c..c523a78b221e0fd88453ab05613c65092e4fc9cc 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -106,26 +106,6 @@
 #include "llnotifications.h"
 
 
-void check_stack_depth(S32 stack_depth)
-{
-	if (gDebugGL || gDebugSession)
-	{
-		GLint depth;
-		glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &depth);
-		if (depth != stack_depth)
-		{
-			if (gDebugSession)
-			{
-				ll_fail("GL matrix stack corrupted.");
-			}
-			else
-			{
-				llerrs << "GL matrix stack corrupted!" << llendl;
-			}
-		}
-	}
-}
-	
 #ifdef _DEBUG
 // Debug indices is disabled for now for debug performance - djs 4/24/02
 //#define DEBUG_INDICES
@@ -133,13 +113,88 @@ void check_stack_depth(S32 stack_depth)
 //#define DEBUG_INDICES
 #endif
 
+//cached settings
+BOOL LLPipeline::RenderAvatarVP;
+BOOL LLPipeline::VertexShaderEnable;
+BOOL LLPipeline::WindLightUseAtmosShaders;
+BOOL LLPipeline::RenderDeferred;
+F32 LLPipeline::RenderDeferredSunWash;
+U32 LLPipeline::RenderFSAASamples;
+U32 LLPipeline::RenderResolutionDivisor;
+BOOL LLPipeline::RenderUIBuffer;
+S32 LLPipeline::RenderShadowDetail;
+BOOL LLPipeline::RenderDeferredSSAO;
+F32 LLPipeline::RenderShadowResolutionScale;
+BOOL LLPipeline::RenderLocalLights;
+BOOL LLPipeline::RenderDelayCreation;
+BOOL LLPipeline::RenderAnimateRes;
+BOOL LLPipeline::FreezeTime;
+S32 LLPipeline::DebugBeaconLineWidth;
+F32 LLPipeline::RenderHighlightBrightness;
+LLColor4 LLPipeline::RenderHighlightColor;
+F32 LLPipeline::RenderHighlightThickness;
+BOOL LLPipeline::RenderSpotLightsInNondeferred;
+LLColor4 LLPipeline::PreviewAmbientColor;
+LLColor4 LLPipeline::PreviewDiffuse0;
+LLColor4 LLPipeline::PreviewSpecular0;
+LLColor4 LLPipeline::PreviewDiffuse1;
+LLColor4 LLPipeline::PreviewSpecular1;
+LLColor4 LLPipeline::PreviewDiffuse2;
+LLColor4 LLPipeline::PreviewSpecular2;
+LLVector3 LLPipeline::PreviewDirection0;
+LLVector3 LLPipeline::PreviewDirection1;
+LLVector3 LLPipeline::PreviewDirection2;
+F32 LLPipeline::RenderGlowMinLuminance;
+F32 LLPipeline::RenderGlowMaxExtractAlpha;
+F32 LLPipeline::RenderGlowWarmthAmount;
+LLVector3 LLPipeline::RenderGlowLumWeights;
+LLVector3 LLPipeline::RenderGlowWarmthWeights;
+S32 LLPipeline::RenderGlowResolutionPow;
+S32 LLPipeline::RenderGlowIterations;
+F32 LLPipeline::RenderGlowWidth;
+F32 LLPipeline::RenderGlowStrength;
+BOOL LLPipeline::RenderDepthOfField;
+F32 LLPipeline::CameraFocusTransitionTime;
+F32 LLPipeline::CameraFNumber;
+F32 LLPipeline::CameraFocalLength;
+F32 LLPipeline::CameraFieldOfView;
+F32 LLPipeline::RenderShadowNoise;
+F32 LLPipeline::RenderShadowBlurSize;
+F32 LLPipeline::RenderSSAOScale;
+U32 LLPipeline::RenderSSAOMaxScale;
+F32 LLPipeline::RenderSSAOFactor;
+LLVector3 LLPipeline::RenderSSAOEffect;
+F32 LLPipeline::RenderShadowOffsetError;
+F32 LLPipeline::RenderShadowBiasError;
+F32 LLPipeline::RenderShadowOffset;
+F32 LLPipeline::RenderShadowBias;
+F32 LLPipeline::RenderSpotShadowOffset;
+F32 LLPipeline::RenderSpotShadowBias;
+F32 LLPipeline::RenderEdgeDepthCutoff;
+F32 LLPipeline::RenderEdgeNormCutoff;
+LLVector3 LLPipeline::RenderShadowGaussian;
+F32 LLPipeline::RenderShadowBlurDistFactor;
+BOOL LLPipeline::RenderDeferredAtmospheric;
+S32 LLPipeline::RenderReflectionDetail;
+F32 LLPipeline::RenderHighlightFadeTime;
+LLVector3 LLPipeline::RenderShadowClipPlanes;
+LLVector3 LLPipeline::RenderShadowOrthoClipPlanes;
+LLVector3 LLPipeline::RenderShadowNearDist;
+F32 LLPipeline::RenderFarClip;
+LLVector3 LLPipeline::RenderShadowSplitExponent;
+F32 LLPipeline::RenderShadowErrorCutoff;
+F32 LLPipeline::RenderShadowFOVCutoff;
+BOOL LLPipeline::CameraOffset;
+F32 LLPipeline::CameraMaxCoF;
+F32 LLPipeline::CameraDoFResScale;
+
 const F32 BACKLIGHT_DAY_MAGNITUDE_AVATAR = 0.2f;
 const F32 BACKLIGHT_NIGHT_MAGNITUDE_AVATAR = 0.1f;
 const F32 BACKLIGHT_DAY_MAGNITUDE_OBJECT = 0.1f;
 const F32 BACKLIGHT_NIGHT_MAGNITUDE_OBJECT = 0.08f;
 const S32 MAX_OFFSCREEN_GEOMETRY_CHANGES_PER_FRAME = 10;
 const U32 REFLECTION_MAP_RES = 128;
-
+const U32 DEFERRED_VB_MASK = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_TEXCOORD1;
 // Max number of occluders to search for. JC
 const S32 MAX_OCCLUDER_COUNT = 2;
 
@@ -211,23 +266,12 @@ std::string gPoolNames[] =
 
 void drawBox(const LLVector3& c, const LLVector3& r);
 void drawBoxOutline(const LLVector3& pos, const LLVector3& size);
+U32 nhpo2(U32 v);
 
-U32 nhpo2(U32 v) 
-{
-	U32 r = 1;
-	while (r < v) {
-		r *= 2;
-	}
-	return r;
-}
-
-glh::matrix4f glh_copy_matrix(GLdouble* src)
+glh::matrix4f glh_copy_matrix(F32* src)
 {
 	glh::matrix4f ret;
-	for (U32 i = 0; i < 16; i++)
-	{
-		ret.m[i] = (F32) src[i];
-	}
+	ret.set_value(src);
 	return ret;
 }
 
@@ -251,7 +295,7 @@ glh::matrix4f glh_get_last_projection()
 	return glh_copy_matrix(gGLLastProjection);
 }
 
-void glh_copy_matrix(const glh::matrix4f& src, GLdouble* dst)
+void glh_copy_matrix(const glh::matrix4f& src, F32* dst)
 {
 	for (U32 i = 0; i < 16; i++)
 	{
@@ -394,11 +438,14 @@ void LLPipeline::init()
 {
 	LLMemType mt(LLMemType::MTYPE_PIPELINE_INIT);
 
+	refreshCachedSettings();
+
 	gOctreeMaxCapacity = gSavedSettings.getU32("OctreeMaxNodeCapacity");
 	sDynamicLOD = gSavedSettings.getBOOL("RenderDynamicLOD");
 	sRenderBump = gSavedSettings.getBOOL("RenderObjectBump");
 	sUseTriStrips = gSavedSettings.getBOOL("RenderUseTriStrips");
 	LLVertexBuffer::sUseStreamDraw = gSavedSettings.getBOOL("RenderUseStreamVBO");
+	LLVertexBuffer::sUseVAO = gSavedSettings.getBOOL("RenderUseVAO");
 	LLVertexBuffer::sPreferStreamDraw = gSavedSettings.getBOOL("RenderPreferStreamDraw");
 	sRenderAttachedLights = gSavedSettings.getBOOL("RenderAttachedLights");
 	sRenderAttachedParticles = gSavedSettings.getBOOL("RenderAttachedParticles");
@@ -459,7 +506,95 @@ void LLPipeline::init()
 		mSpotLightFade[i] = 1.f;
 	}
 
+	mDeferredVB = new LLVertexBuffer(DEFERRED_VB_MASK, 0);
+	mDeferredVB->allocateBuffer(8, 0, true);
 	setLightingDetail(-1);
+	
+	//
+	// Update all settings to trigger a cached settings refresh
+	//
+
+	gSavedSettings.getControl("RenderAutoMaskAlphaDeferred")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderAutoMaskAlphaNonDeferred")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderUseFarClip")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderAvatarMaxVisible")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderDelayVBUpdate")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	
+	gSavedSettings.getControl("UseOcclusion")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	
+	gSavedSettings.getControl("VertexShaderEnable")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderAvatarVP")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("WindLightUseAtmosShaders")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderDeferred")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderDeferredSunWash")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderFSAASamples")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderResolutionDivisor")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderUIBuffer")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowDetail")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderDeferredSSAO")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowResolutionScale")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderLocalLights")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderDelayCreation")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderAnimateRes")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("FreezeTime")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("DebugBeaconLineWidth")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderHighlightBrightness")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderHighlightColor")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderHighlightThickness")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderSpotLightsInNondeferred")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("PreviewAmbientColor")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("PreviewDiffuse0")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("PreviewSpecular0")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("PreviewDiffuse1")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("PreviewSpecular1")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("PreviewDiffuse2")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("PreviewSpecular2")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("PreviewDirection0")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("PreviewDirection1")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("PreviewDirection2")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderGlowMinLuminance")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderGlowMaxExtractAlpha")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderGlowWarmthAmount")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderGlowLumWeights")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderGlowWarmthWeights")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderGlowResolutionPow")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderGlowIterations")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderGlowWidth")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderGlowStrength")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderDepthOfField")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("CameraFocusTransitionTime")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("CameraFNumber")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("CameraFocalLength")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("CameraFieldOfView")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowNoise")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowBlurSize")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderSSAOScale")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderSSAOMaxScale")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderSSAOFactor")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderSSAOEffect")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowOffsetError")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowBiasError")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowOffset")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowBias")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderSpotShadowOffset")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderSpotShadowBias")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderEdgeDepthCutoff")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderEdgeNormCutoff")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowGaussian")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowBlurDistFactor")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderDeferredAtmospheric")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderReflectionDetail")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderHighlightFadeTime")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowClipPlanes")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowOrthoClipPlanes")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowNearDist")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderFarClip")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowSplitExponent")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowErrorCutoff")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("RenderShadowFOVCutoff")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("CameraOffset")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("CameraMaxCoF")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
+	gSavedSettings.getControl("CameraDoFResScale")->getCommitSignal()->connect(boost::bind(&LLPipeline::refreshCachedSettings));
 }
 
 LLPipeline::~LLPipeline()
@@ -537,6 +672,8 @@ void LLPipeline::cleanup()
 	mMovedBridge.clear();
 
 	mInitialized = FALSE;
+
+	mDeferredVB = NULL;
 }
 
 //============================================================================
@@ -606,12 +743,8 @@ void LLPipeline::allocatePhysicsBuffer()
 
 void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
 {
-	U32 samples = gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples"));
-
-	if (gGLManager.mIsATI)
-	{ //ATI doesn't like the way we use multisample texture
-		samples = 0;
-	}
+	refreshCachedSettings();
+	U32 samples = RenderFSAASamples;
 
 	//try to allocate screen buffers at requested resolution and samples
 	// - on failure, shrink number of samples and try again
@@ -632,6 +765,8 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
 			releaseScreenBuffers();
 		}
 
+		samples = 0;
+
 		//reduce resolution
 		while (resY > 0 && resX > 0)
 		{
@@ -657,11 +792,13 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
 
 bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
 {
+	refreshCachedSettings();
+
 	// remember these dimensions
 	mScreenWidth = resX;
 	mScreenHeight = resY;
 	
-	U32 res_mod = gSavedSettings.getU32("RenderResolutionDivisor");
+	U32 res_mod = RenderResolutionDivisor;
 
 	if (res_mod > 1 && res_mod < resX && res_mod < resY)
 	{
@@ -669,7 +806,7 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
 		resY /= res_mod;
 	}
 
-	if (gSavedSettings.getBOOL("RenderUIBuffer"))
+	if (RenderUIBuffer)
 	{
 		if (!mUIScreen.allocate(resX,resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE))
 		{
@@ -679,79 +816,40 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
 
 	if (LLPipeline::sRenderDeferred)
 	{
-		S32 shadow_detail = gSavedSettings.getS32("RenderShadowDetail");
-		BOOL ssao = gSavedSettings.getBOOL("RenderDeferredSSAO");
-		bool gi = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED);
-
+		S32 shadow_detail = RenderShadowDetail;
+		BOOL ssao = RenderDeferredSSAO;
+		
 		//allocate deferred rendering color buffers
 		if (!mDeferredScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
 		if (!mDeferredDepth.allocate(resX, resY, 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
 		if (!addDeferredAttachments(mDeferredScreen)) return false;
 	
 		if (!mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
-		
-#if LL_DARWIN
-		// As of OS X 10.6.7, Apple doesn't support multiple color formats in a single FBO
-		if (!mEdgeMap.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;
-#else
-		if (!mEdgeMap.allocate(resX, resY, GL_ALPHA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;
-#endif
-
-		if (shadow_detail > 0 || ssao)
-		{ //only need mDeferredLight[0] for shadows OR ssao
-			if (!mDeferredLight[0].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;
-		}
-		else
+		if (samples > 0)
 		{
-			mDeferredLight[0].release();
-		}
-
-		if (ssao)
-		{ //only need mDeferredLight[1] for ssao
-			if (!mDeferredLight[1].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false)) return false;
+			if (!mFXAABuffer.allocate(nhpo2(resX), nhpo2(resY), GL_RGBA, FALSE, FALSE, LLTexUnit::TT_TEXTURE, FALSE, samples)) return false;
 		}
 		else
 		{
-			mDeferredLight[1].release();
+			mFXAABuffer.release();
 		}
-
-		if (gi)
-		{ //only need mDeferredLight[2] and mGIMapPost for gi
-			if (!mDeferredLight[2].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false)) return false;
-			for (U32 i = 0; i < 2; i++)
-			{
-#if LL_DARWIN
-				// As of OS X 10.6.7, Apple doesn't support multiple color formats in a single FBO
-				if (!mGIMapPost[i].allocate(resX,resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE)) return false;
-#else
-				if (!mGIMapPost[i].allocate(resX,resY, GL_RGB, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE)) return false;
-#endif
-			}
+		
+		if (shadow_detail > 0 || ssao || RenderDepthOfField || samples > 0)
+		{ //only need mDeferredLight for shadows OR ssao OR dof OR fxaa
+			if (!mDeferredLight.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;
 		}
 		else
 		{
-			mDeferredLight[2].release();
-		
-			for (U32 i = 0; i < 2; i++)
-			{
-				mGIMapPost[i].release();
-			}
+			mDeferredLight.release();
 		}
 
-		F32 scale = gSavedSettings.getF32("RenderShadowResolutionScale");
-
-#if LL_DARWIN
-		U32 shadow_fmt = 0;
-#else
-		//HACK: make alpha masking work on ATI depth shadows (work around for ATI driver bug)
-		U32 shadow_fmt = gGLManager.mIsATI ? GL_ALPHA : 0;
-#endif
+		F32 scale = RenderShadowResolutionScale;
 
 		if (shadow_detail > 0)
 		{ //allocate 4 sun shadow maps
 			for (U32 i = 0; i < 4; i++)
 			{
-				if (!mShadow[i].allocate(U32(resX*scale),U32(resY*scale), shadow_fmt, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE)) return false;
+				if (!mShadow[i].allocate(U32(resX*scale),U32(resY*scale), 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE)) return false;
 			}
 		}
 		else
@@ -769,7 +867,7 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
 		{ //allocate two spot shadow maps
 			for (U32 i = 4; i < 6; i++)
 			{
-				if (!mShadow[i].allocate(width, height, shadow_fmt, TRUE, FALSE)) return false;
+				if (!mShadow[i].allocate(width, height, 0, TRUE, FALSE)) return false;
 			}
 		}
 		else
@@ -779,31 +877,20 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
 				mShadow[i].release();
 			}
 		}
-
-		width = nhpo2(resX)/2;
-		height = nhpo2(resY)/2;
-		if (!mLuminanceMap.allocate(width,height, GL_RGBA, FALSE, FALSE)) return false;
 	}
 	else
 	{
-		for (U32 i = 0; i < 3; i++)
-		{ 
-			mDeferredLight[i].release();
-		}
-		for (U32 i = 0; i < 2; i++)
-		{
-			mGIMapPost[i].release();
-		}
+		mDeferredLight.release();
+				
 		for (U32 i = 0; i < 6; i++)
 		{
 			mShadow[i].release();
 		}
+		mFXAABuffer.release();
 		mScreen.release();
 		mDeferredScreen.release(); //make sure to release any render targets that share a depth buffer with mDeferredScreen first
 		mDeferredDepth.release();
-		mEdgeMap.release();
-		mLuminanceMap.release();
-		
+						
 		if (!mScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false;		
 	}
 	
@@ -822,12 +909,12 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
 //static
 void LLPipeline::updateRenderDeferred()
 {
-	BOOL deferred = ((gSavedSettings.getBOOL("RenderDeferred") && 
+	BOOL deferred = ((RenderDeferred && 
 					 LLRenderTarget::sUseFBO &&
-					 LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&
-					 gSavedSettings.getBOOL("VertexShaderEnable") && 
-					 gSavedSettings.getBOOL("RenderAvatarVP") &&
-					 gSavedSettings.getBOOL("WindLightUseAtmosShaders")) ? TRUE : FALSE) &&
+					 LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred") &&	 
+					 VertexShaderEnable && 
+					 RenderAvatarVP &&
+					 WindLightUseAtmosShaders) ? TRUE : FALSE) &&
 					!gUseWireframe;
 
 	sRenderDeferred = deferred;	
@@ -838,8 +925,94 @@ void LLPipeline::updateRenderDeferred()
 }
 
 //static
-void LLPipeline::refreshRenderDeferred()
-{
+void LLPipeline::refreshCachedSettings()
+{
+	LLPipeline::sAutoMaskAlphaDeferred = gSavedSettings.getBOOL("RenderAutoMaskAlphaDeferred");
+	LLPipeline::sAutoMaskAlphaNonDeferred = gSavedSettings.getBOOL("RenderAutoMaskAlphaNonDeferred");
+	LLPipeline::sUseFarClip = gSavedSettings.getBOOL("RenderUseFarClip");
+	LLVOAvatar::sMaxVisible = (U32)gSavedSettings.getS32("RenderAvatarMaxVisible");
+	LLPipeline::sDelayVBUpdate = gSavedSettings.getBOOL("RenderDelayVBUpdate");
+
+	LLPipeline::sUseOcclusion = 
+			(!gUseWireframe
+			&& LLFeatureManager::getInstance()->isFeatureAvailable("UseOcclusion") 
+			&& gSavedSettings.getBOOL("UseOcclusion") 
+			&& gGLManager.mHasOcclusionQuery) ? 2 : 0;
+	
+	VertexShaderEnable = gSavedSettings.getBOOL("VertexShaderEnable");
+	RenderAvatarVP = gSavedSettings.getBOOL("RenderAvatarVP");
+	WindLightUseAtmosShaders = gSavedSettings.getBOOL("WindLightUseAtmosShaders");
+	RenderDeferred = gSavedSettings.getBOOL("RenderDeferred");
+	RenderDeferredSunWash = gSavedSettings.getF32("RenderDeferredSunWash");
+	RenderFSAASamples = gSavedSettings.getU32("RenderFSAASamples");
+	RenderResolutionDivisor = gSavedSettings.getU32("RenderResolutionDivisor");
+	RenderUIBuffer = gSavedSettings.getBOOL("RenderUIBuffer");
+	RenderShadowDetail = gSavedSettings.getS32("RenderShadowDetail");
+	RenderDeferredSSAO = gSavedSettings.getBOOL("RenderDeferredSSAO");
+	RenderShadowResolutionScale = gSavedSettings.getF32("RenderShadowResolutionScale");
+	RenderLocalLights = gSavedSettings.getBOOL("RenderLocalLights");
+	RenderDelayCreation = gSavedSettings.getBOOL("RenderDelayCreation");
+	RenderAnimateRes = gSavedSettings.getBOOL("RenderAnimateRes");
+	FreezeTime = gSavedSettings.getBOOL("FreezeTime");
+	DebugBeaconLineWidth = gSavedSettings.getS32("DebugBeaconLineWidth");
+	RenderHighlightBrightness = gSavedSettings.getF32("RenderHighlightBrightness");
+	RenderHighlightColor = gSavedSettings.getColor4("RenderHighlightColor");
+	RenderHighlightThickness = gSavedSettings.getF32("RenderHighlightThickness");
+	RenderSpotLightsInNondeferred = gSavedSettings.getBOOL("RenderSpotLightsInNondeferred");
+	PreviewAmbientColor = gSavedSettings.getColor4("PreviewAmbientColor");
+	PreviewDiffuse0 = gSavedSettings.getColor4("PreviewDiffuse0");
+	PreviewSpecular0 = gSavedSettings.getColor4("PreviewSpecular0");
+	PreviewDiffuse1 = gSavedSettings.getColor4("PreviewDiffuse1");
+	PreviewSpecular1 = gSavedSettings.getColor4("PreviewSpecular1");
+	PreviewDiffuse2 = gSavedSettings.getColor4("PreviewDiffuse2");
+	PreviewSpecular2 = gSavedSettings.getColor4("PreviewSpecular2");
+	PreviewDirection0 = gSavedSettings.getVector3("PreviewDirection0");
+	PreviewDirection1 = gSavedSettings.getVector3("PreviewDirection1");
+	PreviewDirection2 = gSavedSettings.getVector3("PreviewDirection2");
+	RenderGlowMinLuminance = gSavedSettings.getF32("RenderGlowMinLuminance");
+	RenderGlowMaxExtractAlpha = gSavedSettings.getF32("RenderGlowMaxExtractAlpha");
+	RenderGlowWarmthAmount = gSavedSettings.getF32("RenderGlowWarmthAmount");
+	RenderGlowLumWeights = gSavedSettings.getVector3("RenderGlowLumWeights");
+	RenderGlowWarmthWeights = gSavedSettings.getVector3("RenderGlowWarmthWeights");
+	RenderGlowResolutionPow = gSavedSettings.getS32("RenderGlowResolutionPow");
+	RenderGlowIterations = gSavedSettings.getS32("RenderGlowIterations");
+	RenderGlowWidth = gSavedSettings.getF32("RenderGlowWidth");
+	RenderGlowStrength = gSavedSettings.getF32("RenderGlowStrength");
+	RenderDepthOfField = gSavedSettings.getBOOL("RenderDepthOfField");
+	CameraFocusTransitionTime = gSavedSettings.getF32("CameraFocusTransitionTime");
+	CameraFNumber = gSavedSettings.getF32("CameraFNumber");
+	CameraFocalLength = gSavedSettings.getF32("CameraFocalLength");
+	CameraFieldOfView = gSavedSettings.getF32("CameraFieldOfView");
+	RenderShadowNoise = gSavedSettings.getF32("RenderShadowNoise");
+	RenderShadowBlurSize = gSavedSettings.getF32("RenderShadowBlurSize");
+	RenderSSAOScale = gSavedSettings.getF32("RenderSSAOScale");
+	RenderSSAOMaxScale = gSavedSettings.getU32("RenderSSAOMaxScale");
+	RenderSSAOFactor = gSavedSettings.getF32("RenderSSAOFactor");
+	RenderSSAOEffect = gSavedSettings.getVector3("RenderSSAOEffect");
+	RenderShadowOffsetError = gSavedSettings.getF32("RenderShadowOffsetError");
+	RenderShadowBiasError = gSavedSettings.getF32("RenderShadowBiasError");
+	RenderShadowOffset = gSavedSettings.getF32("RenderShadowOffset");
+	RenderShadowBias = gSavedSettings.getF32("RenderShadowBias");
+	RenderSpotShadowOffset = gSavedSettings.getF32("RenderSpotShadowOffset");
+	RenderSpotShadowBias = gSavedSettings.getF32("RenderSpotShadowBias");
+	RenderEdgeDepthCutoff = gSavedSettings.getF32("RenderEdgeDepthCutoff");
+	RenderEdgeNormCutoff = gSavedSettings.getF32("RenderEdgeNormCutoff");
+	RenderShadowGaussian = gSavedSettings.getVector3("RenderShadowGaussian");
+	RenderShadowBlurDistFactor = gSavedSettings.getF32("RenderShadowBlurDistFactor");
+	RenderDeferredAtmospheric = gSavedSettings.getBOOL("RenderDeferredAtmospheric");
+	RenderReflectionDetail = gSavedSettings.getS32("RenderReflectionDetail");
+	RenderHighlightFadeTime = gSavedSettings.getF32("RenderHighlightFadeTime");
+	RenderShadowClipPlanes = gSavedSettings.getVector3("RenderShadowClipPlanes");
+	RenderShadowOrthoClipPlanes = gSavedSettings.getVector3("RenderShadowOrthoClipPlanes");
+	RenderShadowNearDist = gSavedSettings.getVector3("RenderShadowNearDist");
+	RenderFarClip = gSavedSettings.getF32("RenderFarClip");
+	RenderShadowSplitExponent = gSavedSettings.getVector3("RenderShadowSplitExponent");
+	RenderShadowErrorCutoff = gSavedSettings.getF32("RenderShadowErrorCutoff");
+	RenderShadowFOVCutoff = gSavedSettings.getF32("RenderShadowFOVCutoff");
+	CameraOffset = gSavedSettings.getBOOL("CameraOffset");
+	CameraMaxCoF = gSavedSettings.getF32("CameraMaxCoF");
+	CameraDoFResScale = gSavedSettings.getF32("CameraDoFResScale");
+	
 	updateRenderDeferred();
 }
 
@@ -883,21 +1056,14 @@ void LLPipeline::releaseScreenBuffers()
 {
 	mUIScreen.release();
 	mScreen.release();
+	mFXAABuffer.release();
 	mPhysicsDisplay.release();
 	mDeferredScreen.release();
 	mDeferredDepth.release();
-	for (U32 i = 0; i < 3; i++)
-	{
-		mDeferredLight[i].release();
-	}
-
-	mEdgeMap.release();
-	mGIMap.release();
-	mGIMapPost[0].release();
-	mGIMapPost[1].release();
-	mHighlight.release();
-	mLuminanceMap.release();
+	mDeferredLight.release();
 	
+	mHighlight.release();
+		
 	for (U32 i = 0; i < 6; i++)
 	{
 		mShadow[i].release();
@@ -907,6 +1073,7 @@ void LLPipeline::releaseScreenBuffers()
 
 void LLPipeline::createGLBuffers()
 {
+	stop_glerror();
 	LLMemType mt_cb(LLMemType::MTYPE_PIPELINE_CREATE_BUFFERS);
 	assertInitialized();
 
@@ -1011,18 +1178,12 @@ void LLPipeline::createGLBuffers()
 
 			LLImageGL::generateTextures(1, &mLightFunc);
 			gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mLightFunc);
-			LLImageGL::setManualImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, GL_ALPHA, lightResX, lightResY, GL_ALPHA, GL_UNSIGNED_BYTE, lg);
+			LLImageGL::setManualImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, GL_R8, lightResX, lightResY, GL_RED, GL_UNSIGNED_BYTE, lg);
 			gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
 			gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_TRILINEAR);
 
 			delete [] lg;
 		}
-
-		if (gSavedSettings.getBOOL("RenderDeferredGI"))
-		{
-			mGIMap.allocate(512,512,GL_RGBA, TRUE, FALSE);
-			addDeferredAttachments(mGIMap);
-		}
 	}
 
 	gBumpImageList.restoreGL();
@@ -1056,10 +1217,12 @@ void LLPipeline::restoreGL()
 
 BOOL LLPipeline::canUseVertexShaders()
 {
+	static const std::string vertex_shader_enable_feature_string = "VertexShaderEnable";
+
 	if (sDisableShaders ||
 		!gGLManager.mHasVertexShader ||
 		!gGLManager.mHasFragmentShader ||
-		!LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable") ||
+		!LLFeatureManager::getInstance()->isFeatureAvailable(vertex_shader_enable_feature_string) ||
 		(assertInitialized() && mVertexShadersLoaded != 1) )
 	{
 		return FALSE;
@@ -1123,10 +1286,11 @@ S32 LLPipeline::getMaxLightingDetail() const
 S32 LLPipeline::setLightingDetail(S32 level)
 {
 	LLMemType mt_ld(LLMemType::MTYPE_PIPELINE_LIGHTING_DETAIL);
+	refreshCachedSettings();
 
 	if (level < 0)
 	{
-		if (gSavedSettings.getBOOL("RenderLocalLights"))
+		if (RenderLocalLights)
 		{
 			level = 1;
 		}
@@ -1447,7 +1611,7 @@ U32 LLPipeline::addObject(LLViewerObject *vobj)
 {
 	LLMemType mt_ao(LLMemType::MTYPE_PIPELINE_ADD_OBJECT);
 
-	if (gSavedSettings.getBOOL("RenderDelayCreation"))
+	if (RenderDelayCreation)
 	{
 		mCreateQ.push_back(vobj);
 	}
@@ -1510,7 +1674,7 @@ void LLPipeline::createObject(LLViewerObject* vobj)
 
 	markRebuild(drawablep, LLDrawable::REBUILD_ALL, TRUE);
 
-	if (drawablep->getVOVolume() && gSavedSettings.getBOOL("RenderAnimateRes"))
+	if (drawablep->getVOVolume() && RenderAnimateRes)
 	{
 		// fun animated res
 		drawablep->updateXform(TRUE);
@@ -1549,7 +1713,7 @@ void LLPipeline::resetFrameStats()
 //external functions for asynchronous updating
 void LLPipeline::updateMoveDampedAsync(LLDrawable* drawablep)
 {
-	if (gSavedSettings.getBOOL("FreezeTime"))
+	if (FreezeTime)
 	{
 		return;
 	}
@@ -1579,7 +1743,7 @@ void LLPipeline::updateMoveDampedAsync(LLDrawable* drawablep)
 
 void LLPipeline::updateMoveNormalAsync(LLDrawable* drawablep)
 {
-	if (gSavedSettings.getBOOL("FreezeTime"))
+	if (FreezeTime)
 	{
 		return;
 	}
@@ -1636,7 +1800,7 @@ void LLPipeline::updateMove()
 	LLFastTimer t(FTM_UPDATE_MOVE);
 	LLMemType mt_um(LLMemType::MTYPE_PIPELINE_UPDATE_MOVE);
 
-	if (gSavedSettings.getBOOL("FreezeTime"))
+	if (FreezeTime)
 	{
 		return;
 	}
@@ -2009,13 +2173,13 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl
 		gGL.setColorMask(false, false);
 	}
 
-	glMatrixMode(GL_PROJECTION);
-	glPushMatrix();
-	glLoadMatrixd(gGLLastProjection);
-	glMatrixMode(GL_MODELVIEW);
-	glPushMatrix();
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.pushMatrix();
+	gGL.loadMatrix(gGLLastProjection);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.pushMatrix();
 	gGLLastMatrix = NULL;
-	glLoadMatrixd(gGLLastModelView);
+	gGL.loadMatrix(gGLLastModelView);
 
 
 	LLVertexBuffer::unbind();
@@ -2120,10 +2284,10 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl
 	}
 	
 	
-	glMatrixMode(GL_PROJECTION);
-	glPopMatrix();
-	glMatrixMode(GL_MODELVIEW);
-	glPopMatrix();
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.popMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.popMatrix();
 
 	if (sUseOcclusion > 1)
 	{
@@ -2761,6 +2925,11 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
 			{
 				markVisible(*i, camera);
 			}
+
+			if (!sDelayVBUpdate)
+			{ //rebuild mesh as soon as we know it's visible
+				group->rebuildMesh();
+			}
 		}
 	}
 
@@ -2811,6 +2980,11 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
 		{
 			group->setVisible();
 			stateSort(group, camera);
+
+			if (!sDelayVBUpdate)
+			{ //rebuild mesh as soon as we know it's visible
+				group->rebuildMesh();
+			}
 		}
 	}
 	
@@ -2826,11 +3000,7 @@ void LLPipeline::stateSort(LLCamera& camera, LLCullResult &result)
 			}
 		}
 	}
-	{
-		LLFastTimer ftm(FTM_CLIENT_COPY);
-		LLVertexBuffer::clientCopy();
-	}
-	
+		
 	postSort(camera);	
 }
 
@@ -2986,7 +3156,7 @@ void renderScriptedBeacons(LLDrawable* drawablep)
 	{
 		if (gPipeline.sRenderBeacons)
 		{
-			gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(1.f, 0.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), gSavedSettings.getS32("DebugBeaconLineWidth"));
+			gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(1.f, 0.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), LLPipeline::DebugBeaconLineWidth);
 		}
 
 		if (gPipeline.sRenderHighlight)
@@ -3012,7 +3182,7 @@ void renderScriptedTouchBeacons(LLDrawable* drawablep)
 	{
 		if (gPipeline.sRenderBeacons)
 		{
-			gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(1.f, 0.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), gSavedSettings.getS32("DebugBeaconLineWidth"));
+			gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(1.f, 0.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), LLPipeline::DebugBeaconLineWidth);
 		}
 
 		if (gPipeline.sRenderHighlight)
@@ -3037,7 +3207,7 @@ void renderPhysicalBeacons(LLDrawable* drawablep)
 	{
 		if (gPipeline.sRenderBeacons)
 		{
-			gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(0.f, 1.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), gSavedSettings.getS32("DebugBeaconLineWidth"));
+			gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(0.f, 1.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), LLPipeline::DebugBeaconLineWidth);
 		}
 
 		if (gPipeline.sRenderHighlight)
@@ -3073,7 +3243,7 @@ void renderMOAPBeacons(LLDrawable* drawablep)
 	{
 		if (gPipeline.sRenderBeacons)
 		{
-			gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(1.f, 1.f, 1.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), gSavedSettings.getS32("DebugBeaconLineWidth"));
+			gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(1.f, 1.f, 1.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), LLPipeline::DebugBeaconLineWidth);
 		}
 
 		if (gPipeline.sRenderHighlight)
@@ -3098,7 +3268,7 @@ void renderParticleBeacons(LLDrawable* drawablep)
 		if (gPipeline.sRenderBeacons)
 		{
 			LLColor4 light_blue(0.5f, 0.5f, 1.f, 0.5f);
-			gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", light_blue, LLColor4(1.f, 1.f, 1.f, 0.5f), gSavedSettings.getS32("DebugBeaconLineWidth"));
+			gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", light_blue, LLColor4(1.f, 1.f, 1.f, 0.5f), LLPipeline::DebugBeaconLineWidth);
 		}
 
 		if (gPipeline.sRenderHighlight)
@@ -3243,19 +3413,6 @@ void LLPipeline::postSort(LLCamera& camera)
 		
 	if (!sShadowRender)
 	{
-		//sort by texture or bump map
-		for (U32 i = 0; i < LLRenderPass::NUM_RENDER_TYPES; ++i)
-		{
-			if (i == LLRenderPass::PASS_BUMP)
-			{
-				std::sort(sCull->beginRenderMap(i), sCull->endRenderMap(i), LLDrawInfo::CompareBump());
-			}
-			else 
-			{
-				std::sort(sCull->beginRenderMap(i), sCull->endRenderMap(i), LLDrawInfo::CompareTexturePtrMatrix());
-			}	
-		}
-
 		std::sort(sCull->beginAlphaGroups(), sCull->endAlphaGroups(), LLSpatialGroup::CompareDepthGreater());
 	}
 	llpushcallstacks ;
@@ -3304,7 +3461,7 @@ void LLPipeline::postSort(LLCamera& camera)
 				if (gPipeline.sRenderBeacons)
 				{
 					//pos += LLVector3(0.f, 0.f, 0.2f);
-					gObjectList.addDebugBeacon(pos, "", LLColor4(1.f, 1.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), gSavedSettings.getS32("DebugBeaconLineWidth"));
+					gObjectList.addDebugBeacon(pos, "", LLColor4(1.f, 1.f, 0.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), DebugBeaconLineWidth);
 				}
 			}
 			// now deal with highlights for all those seeable sound sources
@@ -3369,7 +3526,7 @@ void render_hud_elements()
 
 	if (!LLPipeline::sReflectionRender && gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
 	{
-		LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0);
+		LLGLEnable multisample(LLPipeline::RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0);
 		gViewerWindow->renderSelections(FALSE, FALSE, FALSE); // For HUD version in render_ui_3d()
 	
 		// Draw the tracking overlays
@@ -3441,10 +3598,10 @@ void LLPipeline::renderHighlights()
 		//gGL.setSceneBlendType(LLRender::BT_ADD_WITH_ALPHA);
 
 		gGL.pushMatrix();
-		glLoadIdentity();
-		glMatrixMode(GL_PROJECTION);
+		gGL.loadIdentity();
+		gGL.matrixMode(LLRender::MM_PROJECTION);
 		gGL.pushMatrix();
-		glLoadIdentity();
+		gGL.loadIdentity();
 
 		gGL.getTexUnit(0)->bind(&mHighlight);
 
@@ -3456,9 +3613,9 @@ void LLPipeline::renderHighlights()
 
 		gGL.begin(LLRender::TRIANGLES);
 				
-		F32 scale = gSavedSettings.getF32("RenderHighlightBrightness");
-		LLColor4 color = gSavedSettings.getColor4("RenderHighlightColor");
-		F32 thickness = gSavedSettings.getF32("RenderHighlightThickness");
+		F32 scale = RenderHighlightBrightness;
+		LLColor4 color = RenderHighlightColor;
+		F32 thickness = RenderHighlightThickness;
 
 		for (S32 pass = 0; pass < 2; ++pass)
 		{
@@ -3504,7 +3661,7 @@ void LLPipeline::renderHighlights()
 		gGL.end();
 
 		gGL.popMatrix();
-		glMatrixMode(GL_MODELVIEW);
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 		gGL.popMatrix();
 		
 		//gGL.setSceneBlendType(LLRender::BT_ALPHA);
@@ -3513,7 +3670,7 @@ void LLPipeline::renderHighlights()
 	if ((LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_INTERFACE) > 0))
 	{
 		gHighlightProgram.bind();
-		gHighlightProgram.vertexAttrib4f(LLViewerShaderMgr::MATERIAL_COLOR,1,1,1,0.5f);
+		gGL.diffuseColor4f(1,1,1,0.5f);
 	}
 	
 	if (hasRenderDebugFeatureMask(RENDER_DEBUG_FEATURE_SELECTED))
@@ -3543,10 +3700,7 @@ void LLPipeline::renderHighlights()
 	{
 		// Paint 'em red!
 		color.setVec(1.f, 0.f, 0.f, 0.5f);
-		if ((LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_INTERFACE) > 0))
-		{
-			gHighlightProgram.vertexAttrib4f(LLViewerShaderMgr::MATERIAL_COLOR,1,0,0,0.5f);
-		}
+		
 		int count = mHighlightFaces.size();
 		for (S32 i = 0; i < count; i++)
 		{
@@ -3575,8 +3729,8 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
 
 	assertInitialized();
 
-	F64 saved_modelview[16];
-	F64 saved_projection[16];
+	F32 saved_modelview[16];
+	F32 saved_projection[16];
 
 	//HACK: preserve/restore matrices around HUD render
 	if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD))
@@ -3588,13 +3742,6 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
 		}
 	}
 
-	S32 stack_depth = 0;
-
-	if (gDebugGL)
-	{
-		glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &stack_depth);
-	}
-
 	///////////////////////////////////////////
 	//
 	// Sync and verify GL state
@@ -3620,12 +3767,13 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
 	LLAppViewer::instance()->pingMainloopTimeout("Pipeline:ForceVBO");
 	
 	// Initialize lots of GL state to "safe" values
-	glMatrixMode(GL_TEXTURE);
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
+	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+	gGL.matrixMode(LLRender::MM_TEXTURE);
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
 
 	LLGLSPipeline gls_pipeline;
-	LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0);
+	LLGLEnable multisample(RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0);
 
 	LLGLState gls_color_material(GL_COLOR_MATERIAL, mLightingDetail < 2);
 				
@@ -3691,7 +3839,7 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
 			{
 				occlude = FALSE;
 				gGLLastMatrix = NULL;
-				glLoadMatrixd(gGLModelView);
+				gGL.loadMatrix(gGLModelView);
 				LLGLSLShader::bindNoShader();
 				doOcclusion(camera);
 			}
@@ -3702,7 +3850,7 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
 				LLFastTimer t(FTM_POOLRENDER);
 
 				gGLLastMatrix = NULL;
-				glLoadMatrixd(gGLModelView);
+				gGL.loadMatrix(gGLModelView);
 			
 				for( S32 i = 0; i < poolp->getNumPasses(); i++ )
 				{
@@ -3722,7 +3870,6 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
 					LLVertexBuffer::unbind();
 					if (gDebugGL)
 					{
-						check_stack_depth(stack_depth);
 						std::string msg = llformat("pass %d", i);
 						LLGLState::checkStates(msg);
 						//LLGLState::checkTextureChannels(msg);
@@ -3751,13 +3898,13 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
 		LLVertexBuffer::unbind();
 			
 		gGLLastMatrix = NULL;
-		glLoadMatrixd(gGLModelView);
+		gGL.loadMatrix(gGLModelView);
 
 		if (occlude)
 		{
 			occlude = FALSE;
 			gGLLastMatrix = NULL;
-			glLoadMatrixd(gGLModelView);
+			gGL.loadMatrix(gGLModelView);
 			LLGLSLShader::bindNoShader();
 			doOcclusion(camera);
 		}
@@ -3851,7 +3998,7 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera)
 		}
 	}
 
-	LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0);
+	LLGLEnable multisample(RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0);
 
 	LLVertexBuffer::unbind();
 
@@ -3877,7 +4024,7 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera)
 			LLFastTimer t(FTM_POOLRENDER);
 
 			gGLLastMatrix = NULL;
-			glLoadMatrixd(gGLModelView);
+			gGL.loadMatrix(gGLModelView);
 		
 			for( S32 i = 0; i < poolp->getNumDeferredPasses(); i++ )
 			{
@@ -3898,12 +4045,6 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera)
 
 				if (gDebugGL || gDebugPipeline)
 				{
-					GLint depth;
-					glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &depth);
-					if (depth > 3)
-					{
-						llerrs << "GL matrix stack corrupted!" << llendl;
-					}
 					LLGLState::checkStates();
 				}
 			}
@@ -3925,7 +4066,7 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera)
 	}
 
 	gGLLastMatrix = NULL;
-	glLoadMatrixd(gGLModelView);
+	gGL.loadMatrix(gGLModelView);
 
 	gGL.setColorMask(true, false);
 }
@@ -3938,7 +4079,7 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
 
 	LLGLEnable cull(GL_CULL_FACE);
 
-	LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0);
+	LLGLEnable multisample(RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0);
 
 	calcNearbyLights(camera);
 	setupHWLights(NULL);
@@ -3958,7 +4099,7 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
 		{
 			occlude = FALSE;
 			gGLLastMatrix = NULL;
-			glLoadMatrixd(gGLModelView);
+			gGL.loadMatrix(gGLModelView);
 			LLGLSLShader::bindNoShader();
 			doOcclusion(camera);
 			gGL.setColorMask(true, false);
@@ -3970,7 +4111,7 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
 			LLFastTimer t(FTM_POOLRENDER);
 
 			gGLLastMatrix = NULL;
-			glLoadMatrixd(gGLModelView);
+			gGL.loadMatrix(gGLModelView);
 		
 			for( S32 i = 0; i < poolp->getNumPostDeferredPasses(); i++ )
 			{
@@ -3991,12 +4132,6 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
 
 				if (gDebugGL || gDebugPipeline)
 				{
-					GLint depth;
-					glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &depth);
-					if (depth > 3)
-					{
-						llerrs << "GL matrix stack corrupted!" << llendl;
-					}
 					LLGLState::checkStates();
 				}
 			}
@@ -4018,17 +4153,17 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
 	}
 
 	gGLLastMatrix = NULL;
-	glLoadMatrixd(gGLModelView);
+	gGL.loadMatrix(gGLModelView);
 
 	if (occlude)
 	{
 		occlude = FALSE;
 		gGLLastMatrix = NULL;
-		glLoadMatrixd(gGLModelView);
+		gGL.loadMatrix(gGLModelView);
 		LLGLSLShader::bindNoShader();
 		doOcclusion(camera);
 		gGLLastMatrix = NULL;
-		glLoadMatrixd(gGLModelView);
+		gGL.loadMatrix(gGLModelView);
 	}
 }
 
@@ -4052,8 +4187,10 @@ void LLPipeline::renderGeomShadow(LLCamera& camera)
 		pool_set_t::iterator iter2 = iter1;
 		if (hasRenderType(poolp->getType()) && poolp->getNumShadowPasses() > 0)
 		{
+			poolp->prerender() ;
+
 			gGLLastMatrix = NULL;
-			glLoadMatrixd(gGLModelView);
+			gGL.loadMatrix(gGLModelView);
 		
 			for( S32 i = 0; i < poolp->getNumShadowPasses(); i++ )
 			{
@@ -4092,7 +4229,7 @@ void LLPipeline::renderGeomShadow(LLCamera& camera)
 	}
 
 	gGLLastMatrix = NULL;
-	glLoadMatrixd(gGLModelView);
+	gGL.loadMatrix(gGLModelView);
 }
 
 
@@ -4139,6 +4276,11 @@ void LLPipeline::renderPhysicsDisplay()
 
 	gGL.setColorMask(true, false);
 
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gDebugProgram.bind();
+	}
+
 	for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin(); 
 			iter != LLWorld::getInstance()->getRegionList().end(); ++iter)
 	{
@@ -4161,15 +4303,20 @@ void LLPipeline::renderPhysicsDisplay()
 		LLSpatialBridge* bridge = *i;
 		if (!bridge->isDead() && hasRenderType(bridge->mDrawableType))
 		{
-			glPushMatrix();
-			glMultMatrixf((F32*)bridge->mDrawable->getRenderMatrix().mMatrix);
+			gGL.pushMatrix();
+			gGL.multMatrix((F32*)bridge->mDrawable->getRenderMatrix().mMatrix);
 			bridge->renderPhysicsShapes();
-			glPopMatrix();
+			gGL.popMatrix();
 		}
 	}
 
-
 	gGL.flush();
+
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gDebugProgram.unbind();
+	}
+
 	mPhysicsDisplay.flush();
 }
 
@@ -4183,13 +4330,21 @@ void LLPipeline::renderDebug()
 	gGL.color4f(1,1,1,1);
 
 	gGLLastMatrix = NULL;
-	glLoadMatrixd(gGLModelView);
+	gGL.loadMatrix(gGLModelView);
 	gGL.setColorMask(true, false);
 
 	bool hud_only = hasRenderType(LLPipeline::RENDER_TYPE_HUD);
 
+	
 	if (!hud_only && !mDebugBlips.empty())
 	{ //render debug blips
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gUIProgram.bind();
+		}
+
+		gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sWhiteImagep, true);
+
 		glPointSize(8.f);
 		LLGLDepthTest depth(GL_TRUE, GL_TRUE, GL_ALWAYS);
 
@@ -4243,13 +4398,18 @@ void LLPipeline::renderDebug()
 		LLSpatialBridge* bridge = *i;
 		if (!bridge->isDead() && hasRenderType(bridge->mDrawableType))
 		{
-			glPushMatrix();
-			glMultMatrixf((F32*)bridge->mDrawable->getRenderMatrix().mMatrix);
+			gGL.pushMatrix();
+			gGL.multMatrix((F32*)bridge->mDrawable->getRenderMatrix().mMatrix);
 			bridge->renderDebug();
-			glPopMatrix();
+			gGL.popMatrix();
 		}
 	}
 
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gUIProgram.bind();
+	}
+
 	if (hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
 	{
 		LLVertexBuffer::unbind();
@@ -4383,6 +4543,11 @@ void LLPipeline::renderDebug()
 		}
 	}
 
+	if (mRenderDebugMask & RENDER_DEBUG_WIND_VECTORS)
+	{
+		gAgent.getRegion()->mWind.renderVectors();
+	}
+	
 	if (mRenderDebugMask & RENDER_DEBUG_COMPOSITION)
 	{
 		// Debug composition layers
@@ -4429,7 +4594,7 @@ void LLPipeline::renderDebug()
 		gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sWhiteImagep);
 		
 		gGL.pushMatrix();
-		glLoadMatrixd(gGLModelView);
+		gGL.loadMatrix(gGLModelView);
 		gGLLastMatrix = NULL;
 
 		for (LLSpatialGroup::sg_vector_t::iterator iter = mGroupQ2.begin(); iter != mGroupQ2.end(); ++iter)
@@ -4450,7 +4615,7 @@ void LLPipeline::renderDebug()
 			if (bridge)
 			{
 				gGL.pushMatrix();
-				glMultMatrixf((F32*)bridge->mDrawable->getRenderMatrix().mMatrix);
+				gGL.multMatrix((F32*)bridge->mDrawable->getRenderMatrix().mMatrix);
 			}
 
 			F32 alpha = llclamp((F32) (size-count)/size, 0.f, 1.f);
@@ -4474,8 +4639,10 @@ void LLPipeline::renderDebug()
 	}
 
 	gGL.flush();
-
-	gPipeline.renderPhysicsDisplay();
+	if (LLGLSLShader::sNoFixedFunction)
+	{
+		gUIProgram.unbind();
+	}
 }
 
 void LLPipeline::rebuildPools()
@@ -5024,10 +5191,14 @@ void LLPipeline::calcNearbyLights(LLCamera& camera)
 void LLPipeline::setupHWLights(LLDrawPool* pool)
 {
 	assertInitialized();
-
+	
 	// Ambient
-	LLColor4 ambient = gSky.getTotalAmbientColor();
-	glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambient.mV);
+	if (!LLGLSLShader::sNoFixedFunction)
+	{
+		gGL.syncMatrices();
+		LLColor4 ambient = gSky.getTotalAmbientColor();
+		gGL.setAmbientLightColor(ambient);
+	}
 
 	// Light 0 = Sun or Moon (All objects)
 	{
@@ -5128,7 +5299,8 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)
 			light_state->setConstantAttenuation(0.f);
 			if (sRenderDeferred)
 			{
-				light_state->setLinearAttenuation(light_radius*1.5f);
+				F32 size = light_radius*1.5f;
+				light_state->setLinearAttenuation(size*size);
 				light_state->setQuadraticAttenuation(light->getLightFalloff()*0.5f+1.f);
 			}
 			else
@@ -5137,8 +5309,9 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)
 				light_state->setQuadraticAttenuation(0.f);
 			}
 			
+
 			if (light->isLightSpotlight() // directional (spot-)light
-			    && (LLPipeline::sRenderDeferred || gSavedSettings.getBOOL("RenderSpotLightsInNondeferred"))) // these are only rendered as GL spotlights if we're in deferred rendering mode *or* the setting forces them on
+			    && (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();
@@ -5149,7 +5322,8 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)
 				light_state->setSpotCutoff(90.f);
 				light_state->setSpotExponent(2.f);
 	
-				light_state->setSpecular(LLColor4::black);
+				const LLColor4 specular(0.f, 0.f, 0.f, 0.f);
+				light_state->setSpecular(specular);
 			}
 			else // omnidirectional (point) light
 			{
@@ -5205,7 +5379,11 @@ void LLPipeline::setupHWLights(LLDrawPool* pool)
 	}
 
 	// Init GL state
-	glDisable(GL_LIGHTING);
+	if (!LLGLSLShader::sNoFixedFunction)
+	{
+		glDisable(GL_LIGHTING);
+	}
+
 	for (S32 i = 0; i < 8; ++i)
 	{
 		gGL.getLight(i)->disable();
@@ -5226,7 +5404,10 @@ void LLPipeline::enableLights(U32 mask)
 		stop_glerror();
 		if (!mLightMask)
 		{
-			glEnable(GL_LIGHTING);
+			if (!LLGLSLShader::sNoFixedFunction)
+			{
+				glEnable(GL_LIGHTING);
+			}
 		}
 		if (mask)
 		{
@@ -5249,13 +5430,16 @@ void LLPipeline::enableLights(U32 mask)
 		}
 		else
 		{
-			glDisable(GL_LIGHTING);
+			if (!LLGLSLShader::sNoFixedFunction)
+			{
+				glDisable(GL_LIGHTING);
+			}
 		}
-		stop_glerror();
 		mLightMask = mask;
-		LLColor4 ambient = gSky.getTotalAmbientColor();
-		glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambient.mV);
 		stop_glerror();
+
+		LLColor4 ambient = gSky.getTotalAmbientColor();
+		gGL.setAmbientLightColor(ambient);
 	}
 }
 
@@ -5304,21 +5488,24 @@ void LLPipeline::enableLightsPreview()
 {
 	disableLights();
 
-	glEnable(GL_LIGHTING);
-	LLColor4 ambient = gSavedSettings.getColor4("PreviewAmbientColor");
-	glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambient.mV);
+	if (!LLGLSLShader::sNoFixedFunction)
+	{
+		glEnable(GL_LIGHTING);
+	}
 
+	LLColor4 ambient = PreviewAmbientColor;
+	gGL.setAmbientLightColor(ambient);
 
-	LLColor4 diffuse0 = gSavedSettings.getColor4("PreviewDiffuse0");
-	LLColor4 specular0 = gSavedSettings.getColor4("PreviewSpecular0");
-	LLColor4 diffuse1 = gSavedSettings.getColor4("PreviewDiffuse1");
-	LLColor4 specular1 = gSavedSettings.getColor4("PreviewSpecular1");
-	LLColor4 diffuse2 = gSavedSettings.getColor4("PreviewDiffuse2");
-	LLColor4 specular2 = gSavedSettings.getColor4("PreviewSpecular2");
+	LLColor4 diffuse0 = PreviewDiffuse0;
+	LLColor4 specular0 = PreviewSpecular0;
+	LLColor4 diffuse1 = PreviewDiffuse1;
+	LLColor4 specular1 = PreviewSpecular1;
+	LLColor4 diffuse2 = PreviewDiffuse2;
+	LLColor4 specular2 = PreviewSpecular2;
 
-	LLVector3 dir0 = gSavedSettings.getVector3("PreviewDirection0");
-	LLVector3 dir1 = gSavedSettings.getVector3("PreviewDirection1");
-	LLVector3 dir2 = gSavedSettings.getVector3("PreviewDirection2");
+	LLVector3 dir0 = PreviewDirection0;
+	LLVector3 dir1 = PreviewDirection1;
+	LLVector3 dir2 = PreviewDirection2;
 
 	dir0.normVec();
 	dir1.normVec();
@@ -5365,7 +5552,7 @@ void LLPipeline::enableLightsAvatarEdit(const LLColor4& color)
 	setupAvatarLights(TRUE);
 	enableLights(mask);
 
-	glLightModelfv(GL_LIGHT_MODEL_AMBIENT,color.mV);
+	gGL.setAmbientLightColor(color);
 }
 
 void LLPipeline::enableLightsFullbright(const LLColor4& color)
@@ -5374,7 +5561,7 @@ void LLPipeline::enableLightsFullbright(const LLColor4& color)
 	U32 mask = 0x1000; // Non-0 mask, set ambient
 	enableLights(mask);
 
-	glLightModelfv(GL_LIGHT_MODEL_AMBIENT,color.mV);
+	gGL.setAmbientLightColor(color);
 }
 
 void LLPipeline::disableLights()
@@ -6030,11 +6217,8 @@ void LLPipeline::resetVertexBuffers()
 
 	gSky.resetVertexBuffers();
 
-	if (LLVertexBuffer::sGLCount > 0)
-	{
-		LLVertexBuffer::cleanupClass();
-	}
-
+	LLVertexBuffer::cleanupClass();
+	
 	//delete all name pool caches
 	LLGLNamePool::cleanupPools();
 
@@ -6043,35 +6227,32 @@ void LLPipeline::resetVertexBuffers()
 		llwarns << "VBO wipe failed." << llendl;
 	}
 
-	if (!LLVertexBuffer::sStreamIBOPool.mNameList.empty() ||
-		!LLVertexBuffer::sStreamVBOPool.mNameList.empty() ||
-		!LLVertexBuffer::sDynamicIBOPool.mNameList.empty() ||
-		!LLVertexBuffer::sDynamicVBOPool.mNameList.empty())
-	{
-		llwarns << "VBO name pool cleanup failed." << llendl;
-	}
+	llassert(LLVertexBuffer::sGLCount == 0);
 
 	LLVertexBuffer::unbind();	
 	
 	sRenderBump = gSavedSettings.getBOOL("RenderObjectBump");
 	sUseTriStrips = gSavedSettings.getBOOL("RenderUseTriStrips");
 	LLVertexBuffer::sUseStreamDraw = gSavedSettings.getBOOL("RenderUseStreamVBO");
+	LLVertexBuffer::sUseVAO = gSavedSettings.getBOOL("RenderUseVAO");
 	LLVertexBuffer::sPreferStreamDraw = gSavedSettings.getBOOL("RenderPreferStreamDraw");
 	LLVertexBuffer::sEnableVBOs = gSavedSettings.getBOOL("RenderVBOEnable");
 	LLVertexBuffer::sDisableVBOMapping = LLVertexBuffer::sEnableVBOs && gSavedSettings.getBOOL("RenderVBOMappingDisable") ;
 	sBakeSunlight = gSavedSettings.getBOOL("RenderBakeSunlight");
 	sNoAlpha = gSavedSettings.getBOOL("RenderNoAlpha");
 	LLPipeline::sTextureBindTest = gSavedSettings.getBOOL("RenderDebugTextureBind");
+
+	LLVertexBuffer::initClass(LLVertexBuffer::sEnableVBOs, LLVertexBuffer::sDisableVBOMapping);
 }
 
-void LLPipeline::renderObjects(U32 type, U32 mask, BOOL texture)
+void LLPipeline::renderObjects(U32 type, U32 mask, BOOL texture, BOOL batch_texture)
 {
 	LLMemType mt_ro(LLMemType::MTYPE_PIPELINE_RENDER_OBJECTS);
 	assertInitialized();
-	glLoadMatrixd(gGLModelView);
+	gGL.loadMatrix(gGLModelView);
 	gGLLastMatrix = NULL;
-	mSimplePool->pushBatches(type, mask);
-	glLoadMatrixd(gGLModelView);
+	mSimplePool->pushBatches(type, mask, texture, batch_texture);
+	gGL.loadMatrix(gGLModelView);
 	gGLLastMatrix = NULL;		
 }
 
@@ -6080,25 +6261,25 @@ void apply_cube_face_rotation(U32 face)
 	switch (face)
 	{
 		case 0: 
-			glRotatef(90.f, 0, 1, 0);
-			glRotatef(180.f, 1, 0, 0);
+			gGL.rotatef(90.f, 0, 1, 0);
+			gGL.rotatef(180.f, 1, 0, 0);
 		break;
 		case 2: 
-			glRotatef(-90.f, 1, 0, 0);
+			gGL.rotatef(-90.f, 1, 0, 0);
 		break;
 		case 4:
-			glRotatef(180.f, 0, 1, 0);
-			glRotatef(180.f, 0, 0, 1);
+			gGL.rotatef(180.f, 0, 1, 0);
+			gGL.rotatef(180.f, 0, 0, 1);
 		break;
 		case 1: 
-			glRotatef(-90.f, 0, 1, 0);
-			glRotatef(180.f, 1, 0, 0);
+			gGL.rotatef(-90.f, 0, 1, 0);
+			gGL.rotatef(180.f, 1, 0, 0);
 		break;
 		case 3:
-			glRotatef(90, 1, 0, 0);
+			gGL.rotatef(90, 1, 0, 0);
 		break;
 		case 5: 
-			glRotatef(180, 0, 0, 1);
+			gGL.rotatef(180, 0, 0, 1);
 		break;
 	}
 }
@@ -6141,8 +6322,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 {
 	LLMemType mt_ru(LLMemType::MTYPE_PIPELINE_RENDER_BLOOM);
 	if (!(gPipeline.canUseVertexShaders() &&
-		sRenderGlow) ||
-		(!sRenderDeferred && hasRenderDebugMask(LLPipeline::RENDER_DEBUG_PHYSICS_SHAPES)))
+		sRenderGlow))
 	{
 		return;
 	}
@@ -6158,16 +6338,9 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 		glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 	}
 
-	U32 res_mod = gSavedSettings.getU32("RenderResolutionDivisor");
-
 	LLVector2 tc1(0,0);
-	LLVector2 tc2((F32) gViewerWindow->getWorldViewWidthRaw()*2,
-				  (F32) gViewerWindow->getWorldViewHeightRaw()*2);
-
-	if (res_mod > 1)
-	{
-		tc2 /= (F32) res_mod;
-	}
+	LLVector2 tc2((F32) mScreen.getWidth()*2,
+				  (F32) mScreen.getHeight()*2);
 
 	LLFastTimer ftm(FTM_RENDER_BLOOM);
 	gGL.color4f(1,1,1,1);
@@ -6177,12 +6350,12 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 	
 	enableLightsFullbright(LLColor4(1,1,1,1));
 
-	glMatrixMode(GL_PROJECTION);
-	glPushMatrix();
-	glLoadIdentity();
-	glMatrixMode(GL_MODELVIEW);
-	glPushMatrix();
-	glLoadIdentity();
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.pushMatrix();
+	gGL.loadIdentity();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.pushMatrix();
+	gGL.loadIdentity();
 
 	LLGLDisable test(GL_ALPHA_TEST);
 
@@ -6197,16 +6370,18 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 		}
 		
 		gGlowExtractProgram.bind();
-		F32 minLum = llmax(gSavedSettings.getF32("RenderGlowMinLuminance"), 0.0f);
-		F32 maxAlpha = gSavedSettings.getF32("RenderGlowMaxExtractAlpha");		
-		F32 warmthAmount = gSavedSettings.getF32("RenderGlowWarmthAmount");	
-		LLVector3 lumWeights = gSavedSettings.getVector3("RenderGlowLumWeights");
-		LLVector3 warmthWeights = gSavedSettings.getVector3("RenderGlowWarmthWeights");
-		gGlowExtractProgram.uniform1f("minLuminance", minLum);
-		gGlowExtractProgram.uniform1f("maxExtractAlpha", maxAlpha);
-		gGlowExtractProgram.uniform3f("lumWeights", lumWeights.mV[0], lumWeights.mV[1], lumWeights.mV[2]);
-		gGlowExtractProgram.uniform3f("warmthWeights", warmthWeights.mV[0], warmthWeights.mV[1], warmthWeights.mV[2]);
-		gGlowExtractProgram.uniform1f("warmthAmount", warmthAmount);
+		F32 minLum = llmax((F32) RenderGlowMinLuminance, 0.0f);
+		F32 maxAlpha = RenderGlowMaxExtractAlpha;		
+		F32 warmthAmount = RenderGlowWarmthAmount;	
+		LLVector3 lumWeights = RenderGlowLumWeights;
+		LLVector3 warmthWeights = RenderGlowWarmthWeights;
+
+
+		gGlowExtractProgram.uniform1f(LLShaderMgr::GLOW_MIN_LUMINANCE, minLum);
+		gGlowExtractProgram.uniform1f(LLShaderMgr::GLOW_MAX_EXTRACT_ALPHA, maxAlpha);
+		gGlowExtractProgram.uniform3f(LLShaderMgr::GLOW_LUM_WEIGHTS, lumWeights.mV[0], lumWeights.mV[1], lumWeights.mV[2]);
+		gGlowExtractProgram.uniform3f(LLShaderMgr::GLOW_WARMTH_WEIGHTS, warmthWeights.mV[0], warmthWeights.mV[1], warmthWeights.mV[2]);
+		gGlowExtractProgram.uniform1f(LLShaderMgr::GLOW_WARMTH_AMOUNT, warmthAmount);
 		LLGLEnable blend_on(GL_BLEND);
 		LLGLEnable test(GL_ALPHA_TEST);
 		
@@ -6237,22 +6412,22 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 	tc2.setVec(2,2);
 
 	// power of two between 1 and 1024
-	U32 glowResPow = gSavedSettings.getS32("RenderGlowResolutionPow");
+	U32 glowResPow = RenderGlowResolutionPow;
 	const U32 glow_res = llmax(1, 
 		llmin(1024, 1 << glowResPow));
 
-	S32 kernel = gSavedSettings.getS32("RenderGlowIterations")*2;
-	F32 delta = gSavedSettings.getF32("RenderGlowWidth") / glow_res;
+	S32 kernel = RenderGlowIterations*2;
+	F32 delta = RenderGlowWidth / glow_res;
 	// Use half the glow width if we have the res set to less than 9 so that it looks
 	// almost the same in either case.
 	if (glowResPow < 9)
 	{
 		delta *= 0.5f;
 	}
-	F32 strength = gSavedSettings.getF32("RenderGlowStrength");
+	F32 strength = RenderGlowStrength;
 
 	gGlowProgram.bind();
-	gGlowProgram.uniform1f("glowStrength", strength);
+	gGlowProgram.uniform1f(LLShaderMgr::GLOW_STRENGTH, strength);
 
 	for (S32 i = 0; i < kernel; i++)
 	{
@@ -6273,11 +6448,11 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 
 		if (i%2 == 0)
 		{
-			gGlowProgram.uniform2f("glowDelta", delta, 0);
+			gGlowProgram.uniform2f(LLShaderMgr::GLOW_DELTA, delta, 0);
 		}
 		else
 		{
-			gGlowProgram.uniform2f("glowDelta", 0, delta);
+			gGlowProgram.uniform2f(LLShaderMgr::GLOW_DELTA, 0, delta);
 		}
 
 		gGL.begin(LLRender::TRIANGLE_STRIP);
@@ -6309,8 +6484,8 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 	gGLViewport[3] = gViewerWindow->getWorldViewRectRaw().getHeight();
 	glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]);
 
-	tc2.setVec((F32) gViewerWindow->getWorldViewWidthRaw(),
-			(F32) gViewerWindow->getWorldViewHeightRaw());
+	tc2.setVec((F32) mScreen.getWidth(),
+			(F32) mScreen.getHeight());
 
 	gGL.flush();
 	
@@ -6318,28 +6493,22 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 
 	if (LLPipeline::sRenderDeferred)
 	{
-		bool dof_enabled = !LLViewerCamera::getInstance()->cameraUnderWater();
 
-		LLGLSLShader* shader = &gDeferredPostProgram;
-		if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2)
-		{
-			shader = &gDeferredGIFinalProgram;
-			dof_enabled = false;
-		}
-		else if (!dof_enabled || LLToolMgr::getInstance()->inBuildMode() || !gSavedSettings.getBOOL("RenderDepthOfField"))
-		{ //squish focal length when in build mode (or if DoF is disabled) so DoF doesn't make editing objects difficult
-			shader = &gDeferredPostNoDoFProgram;
-			dof_enabled = false;
-		}
-		
-		
-		LLGLDisable blend(GL_BLEND);
-		bindDeferredShader(*shader);
+		bool dof_enabled = !LLViewerCamera::getInstance()->cameraUnderWater() &&
+							!LLToolMgr::getInstance()->inBuildMode() &&
+							RenderDepthOfField;
 
+
+		bool multisample = RenderFSAASamples > 1 && mFXAABuffer.isComplete();
+
+		gViewerWindow->setup3DViewport();
+				
 		if (dof_enabled)
 		{
-			//depth of field focal plane calculations
+			LLGLSLShader* shader = &gDeferredPostProgram;
+			LLGLDisable blend(GL_BLEND);
 
+			//depth of field focal plane calculations
 			static F32 current_distance = 16.f;
 			static F32 start_distance = 16.f;
 			static F32 transition_time = 1.f;
@@ -6369,8 +6538,8 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 				else if (gAgentCamera.cameraMouselook())
 				{ //focus on point under mouselook crosshairs
 					gViewerWindow->cursorIntersect(-1, -1, 512.f, NULL, -1, FALSE,
-												  NULL,
-												  &focus_point);
+													NULL,
+													&focus_point);
 				}
 				else
 				{
@@ -6401,7 +6570,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 			}
 			else if (transition_time < 1.f)
 			{ //currently in a transition, continue interpolating
-				transition_time += 1.f/gSavedSettings.getF32("CameraFocusTransitionTime")*gFrameIntervalSeconds;
+				transition_time += 1.f/CameraFocusTransitionTime*gFrameIntervalSeconds;
 				transition_time = llmin(transition_time, 1.f);
 
 				F32 t = cosf(transition_time*F_PI+F_PI)*0.5f+0.5f;
@@ -6414,12 +6583,12 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 
 			//convert to mm
 			F32 subject_distance = current_distance*1000.f;
-			F32 fnumber = gSavedSettings.getF32("CameraFNumber");
-			F32 default_focal_length = gSavedSettings.getF32("CameraFocalLength");
+			F32 fnumber = CameraFNumber;
+			F32 default_focal_length = CameraFocalLength;
 
 			F32 fov = LLViewerCamera::getInstance()->getView();
 		
-			const F32 default_fov = gSavedSettings.getF32("CameraFieldOfView") * F_PI/180.f;
+			const F32 default_fov = CameraFieldOfView * F_PI/180.f;
 			//const F32 default_aspect_ratio = gSavedSettings.getF32("CameraAspectRatio");
 		
 			//F32 aspect_ratio = (F32) mScreen.getWidth()/(F32)mScreen.getHeight();
@@ -6442,79 +6611,261 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 			blur_constant /= 1000.f; //convert to meters for shader
 			F32 magnification = focal_length/(subject_distance-focal_length);
 
-			shader->uniform1f("focal_distance", -subject_distance/1000.f);
-			shader->uniform1f("blur_constant", blur_constant);
-			shader->uniform1f("tan_pixel_angle", tanf(1.f/LLDrawable::sCurPixelAngle));
-			shader->uniform1f("magnification", magnification);
-		}
+			{ //build diffuse+bloom+CoF
+				mDeferredLight.bindTarget();
+				shader = &gDeferredCoFProgram;
 
-		S32 channel = shader->enableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, mScreen.getUsage());
-		if (channel > -1)
-		{
-			mScreen.bindTexture(0, channel);
-		}
-		//channel = shader->enableTexture(LLViewerShaderMgr::DEFERRED_DEPTH, LLTexUnit::TT_RECT_TEXTURE);
-		//if (channel > -1)
-		//{
-			//gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
-		//}
+				bindDeferredShader(*shader);
 
-		gGL.begin(LLRender::TRIANGLE_STRIP);
-		gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
-		gGL.vertex2f(-1,-1);
+				S32 channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mScreen.getUsage());
+				if (channel > -1)
+				{
+					mScreen.bindTexture(0, channel);
+				}
+
+				shader->uniform1f(LLShaderMgr::DOF_FOCAL_DISTANCE, -subject_distance/1000.f);
+				shader->uniform1f(LLShaderMgr::DOF_BLUR_CONSTANT, blur_constant);
+				shader->uniform1f(LLShaderMgr::DOF_TAN_PIXEL_ANGLE, tanf(1.f/LLDrawable::sCurPixelAngle));
+				shader->uniform1f(LLShaderMgr::DOF_MAGNIFICATION, magnification);
+				shader->uniform1f(LLShaderMgr::DOF_MAX_COF, CameraMaxCoF);
+				shader->uniform1f(LLShaderMgr::DOF_RES_SCALE, CameraDoFResScale);
+
+				gGL.begin(LLRender::TRIANGLE_STRIP);
+				gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
+				gGL.vertex2f(-1,-1);
 		
-		gGL.texCoord2f(tc1.mV[0], tc2.mV[1]);
-		gGL.vertex2f(-1,3);
+				gGL.texCoord2f(tc1.mV[0], tc2.mV[1]);
+				gGL.vertex2f(-1,3);
 		
-		gGL.texCoord2f(tc2.mV[0], tc1.mV[1]);
-		gGL.vertex2f(3,-1);
+				gGL.texCoord2f(tc2.mV[0], tc1.mV[1]);
+				gGL.vertex2f(3,-1);
 		
-		gGL.end();
+				gGL.end();
 
-		unbindDeferredShader(*shader);
-	}
-	else
-	{
-		if (res_mod > 1)
-		{
-			tc2 /= (F32) res_mod;
-		}
+				unbindDeferredShader(*shader);
+				mDeferredLight.flush();
+			}
 
-		U32 mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_TEXCOORD1;
-		LLPointer<LLVertexBuffer> buff = new LLVertexBuffer(mask, 0);
-		buff->allocateBuffer(3,0,TRUE);
+			{ //perform DoF sampling at half-res (preserve alpha channel)
+				mScreen.bindTarget();
+				glViewport(0,0,(GLsizei) (mScreen.getWidth()*CameraDoFResScale), (GLsizei) (mScreen.getHeight()*CameraDoFResScale));
+				gGL.setColorMask(true, false);
 
-		LLStrider<LLVector3> v;
-		LLStrider<LLVector2> uv1;
-		LLStrider<LLVector2> uv2;
+				shader = &gDeferredPostProgram;
+				bindDeferredShader(*shader);
+				S32 channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mDeferredLight.getUsage());
+				if (channel > -1)
+				{
+					mDeferredLight.bindTexture(0, channel);
+				}
 
-		buff->getVertexStrider(v);
-		buff->getTexCoord0Strider(uv1);
-		buff->getTexCoord1Strider(uv2);
+				shader->uniform1f(LLShaderMgr::DOF_MAX_COF, CameraMaxCoF);
+				shader->uniform1f(LLShaderMgr::DOF_RES_SCALE, CameraDoFResScale);
+
+				gGL.begin(LLRender::TRIANGLE_STRIP);
+				gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
+				gGL.vertex2f(-1,-1);
 		
-		uv1[0] = LLVector2(0, 0);
-		uv1[1] = LLVector2(0, 2);
-		uv1[2] = LLVector2(2, 0);
+				gGL.texCoord2f(tc1.mV[0], tc2.mV[1]);
+				gGL.vertex2f(-1,3);
 		
-		uv2[0] = LLVector2(0, 0);
-		uv2[1] = LLVector2(0, tc2.mV[1]*2.f);
-		uv2[2] = LLVector2(tc2.mV[0]*2.f, 0);
+				gGL.texCoord2f(tc2.mV[0], tc1.mV[1]);
+				gGL.vertex2f(3,-1);
 		
-		v[0] = LLVector3(-1,-1,0);
-		v[1] = LLVector3(-1,3,0);
-		v[2] = LLVector3(3,-1,0);
+				gGL.end();
+
+				unbindDeferredShader(*shader);
+				mScreen.flush();
+				gGL.setColorMask(true, true);
+			}
+	
+			{ //combine result based on alpha
+				if (multisample)
+				{
+					mDeferredLight.bindTarget();
+					glViewport(0, 0, mDeferredScreen.getWidth(), mDeferredScreen.getHeight());
+				}
+				else
+				{
+					gGLViewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft;
+					gGLViewport[1] = gViewerWindow->getWorldViewRectRaw().mBottom;
+					gGLViewport[2] = gViewerWindow->getWorldViewRectRaw().getWidth();
+					gGLViewport[3] = gViewerWindow->getWorldViewRectRaw().getHeight();
+					glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]);
+				}
+
+				shader = &gDeferredDoFCombineProgram;
+				bindDeferredShader(*shader);
 				
-		buff->setBuffer(0);
+				S32 channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mScreen.getUsage());
+				if (channel > -1)
+				{
+					mScreen.bindTexture(0, channel);
+					gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
+				}
 
-		LLGLDisable blend(GL_BLEND);
+				shader->uniform1f(LLShaderMgr::DOF_MAX_COF, CameraMaxCoF);
+				shader->uniform1f(LLShaderMgr::DOF_RES_SCALE, CameraDoFResScale);
 
-		if (LLGLSLShader::sNoFixedFunction)
-		{
-			gGlowCombineProgram.bind();
-		}
-		else
-		{
-			//tex unit 0
+				gGL.begin(LLRender::TRIANGLE_STRIP);
+				gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
+				gGL.vertex2f(-1,-1);
+		
+				gGL.texCoord2f(tc1.mV[0], tc2.mV[1]);
+				gGL.vertex2f(-1,3);
+		
+				gGL.texCoord2f(tc2.mV[0], tc1.mV[1]);
+				gGL.vertex2f(3,-1);
+		
+				gGL.end();
+
+				unbindDeferredShader(*shader);
+
+				if (multisample)
+				{
+					mDeferredLight.flush();
+				}
+			}
+		}
+		else
+		{
+			if (multisample)
+			{
+				mDeferredLight.bindTarget();
+			}
+			LLGLSLShader* shader = &gDeferredPostNoDoFProgram;
+			
+			bindDeferredShader(*shader);
+							
+			S32 channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mScreen.getUsage());
+			if (channel > -1)
+			{
+				mScreen.bindTexture(0, channel);
+			}
+
+			gGL.begin(LLRender::TRIANGLE_STRIP);
+			gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
+			gGL.vertex2f(-1,-1);
+		
+			gGL.texCoord2f(tc1.mV[0], tc2.mV[1]);
+			gGL.vertex2f(-1,3);
+		
+			gGL.texCoord2f(tc2.mV[0], tc1.mV[1]);
+			gGL.vertex2f(3,-1);
+		
+			gGL.end();
+
+			unbindDeferredShader(*shader);
+
+			if (multisample)
+			{
+				mDeferredLight.flush();
+			}
+		}
+
+		if (multisample)
+		{
+			//bake out texture2D with RGBL for FXAA shader
+			mFXAABuffer.bindTarget();
+			
+			S32 width = mScreen.getWidth();
+			S32 height = mScreen.getHeight();
+			glViewport(0, 0, width, height);
+
+			LLGLSLShader* shader = &gGlowCombineFXAAProgram;
+
+			shader->bind();
+			shader->uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, width, height);
+
+			S32 channel = shader->enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mDeferredLight.getUsage());
+			if (channel > -1)
+			{
+				mDeferredLight.bindTexture(0, channel);
+			}
+						
+			gGL.begin(LLRender::TRIANGLE_STRIP);
+			gGL.vertex2f(-1,-1);
+			gGL.vertex2f(-1,3);
+			gGL.vertex2f(3,-1);
+			gGL.end();
+
+			gGL.flush();
+
+			shader->disableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mDeferredLight.getUsage());
+			shader->unbind();
+			
+			mFXAABuffer.flush();
+
+			shader = &gFXAAProgram;
+			shader->bind();
+
+			channel = shader->enableTexture(LLShaderMgr::DIFFUSE_MAP, mFXAABuffer.getUsage());
+			if (channel > -1)
+			{
+				mFXAABuffer.bindTexture(0, channel);
+				gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
+			}
+			
+			gGLViewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft;
+			gGLViewport[1] = gViewerWindow->getWorldViewRectRaw().mBottom;
+			gGLViewport[2] = gViewerWindow->getWorldViewRectRaw().getWidth();
+			gGLViewport[3] = gViewerWindow->getWorldViewRectRaw().getHeight();
+			glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]);
+
+			F32 scale_x = (F32) width/mFXAABuffer.getWidth();
+			F32 scale_y = (F32) height/mFXAABuffer.getHeight();
+			shader->uniform2f(LLShaderMgr::FXAA_TC_SCALE, scale_x, scale_y);
+			shader->uniform2f(LLShaderMgr::FXAA_RCP_SCREEN_RES, 1.f/width*scale_x, 1.f/height*scale_y);
+			shader->uniform4f(LLShaderMgr::FXAA_RCP_FRAME_OPT, -0.5f/width*scale_x, -0.5f/height*scale_y, 0.5f/width*scale_x, 0.5f/height*scale_y);
+			shader->uniform4f(LLShaderMgr::FXAA_RCP_FRAME_OPT2, -2.f/width*scale_x, -2.f/height*scale_y, 2.f/width*scale_x, 2.f/height*scale_y);
+			
+			gGL.begin(LLRender::TRIANGLE_STRIP);
+			gGL.vertex2f(-1,-1);
+			gGL.vertex2f(-1,3);
+			gGL.vertex2f(3,-1);
+			gGL.end();
+
+			gGL.flush();
+			shader->unbind();
+		}
+	}
+	else
+	{
+		U32 mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_TEXCOORD1;
+		LLPointer<LLVertexBuffer> buff = new LLVertexBuffer(mask, 0);
+		buff->allocateBuffer(3,0,TRUE);
+
+		LLStrider<LLVector3> v;
+		LLStrider<LLVector2> uv1;
+		LLStrider<LLVector2> uv2;
+
+		buff->getVertexStrider(v);
+		buff->getTexCoord0Strider(uv1);
+		buff->getTexCoord1Strider(uv2);
+		
+		uv1[0] = LLVector2(0, 0);
+		uv1[1] = LLVector2(0, 2);
+		uv1[2] = LLVector2(2, 0);
+		
+		uv2[0] = LLVector2(0, 0);
+		uv2[1] = LLVector2(0, tc2.mV[1]*2.f);
+		uv2[2] = LLVector2(tc2.mV[0]*2.f, 0);
+		
+		v[0] = LLVector3(-1,-1,0);
+		v[1] = LLVector3(-1,3,0);
+		v[2] = LLVector3(3,-1,0);
+				
+		buff->flush();
+
+		LLGLDisable blend(GL_BLEND);
+
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gGlowCombineProgram.bind();
+		}
+		else
+		{
+			//tex unit 0
 			gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_COLOR);
 			//tex unit 1
 			gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_ADD, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_PREV_COLOR);
@@ -6523,7 +6874,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 		gGL.getTexUnit(0)->bind(&mGlow[1]);
 		gGL.getTexUnit(1)->bind(&mScreen);
 		
-		LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0);
+		LLGLEnable multisample(RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0);
 		
 		buff->setBuffer(mask);
 		buff->drawArrays(LLRender::TRIANGLE_STRIP, 0, 3);
@@ -6543,19 +6894,13 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 		
 	}
 
-	if (LLRenderTarget::sUseFBO)
-	{ //copy depth buffer from mScreen to framebuffer
-		LLRenderTarget::copyContentsToFramebuffer(mScreen, 0, 0, mScreen.getWidth(), mScreen.getHeight(), 
-			0, 0, mScreen.getWidth(), mScreen.getHeight(), GL_DEPTH_BUFFER_BIT, GL_NEAREST);
-	}
-	
 	gGL.setSceneBlendType(LLRender::BT_ALPHA);
 
 	if (hasRenderDebugMask(LLPipeline::RENDER_DEBUG_PHYSICS_SHAPES))
 	{
 		if (LLGLSLShader::sNoFixedFunction)
 		{
-			gUIProgram.bind();
+			gSplatTextureRectProgram.bind();
 		}
 
 		gGL.setColorMask(true, false);
@@ -6569,7 +6914,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 
 		gGL.getTexUnit(0)->bind(&mPhysicsDisplay);
 
-		gGL.begin(LLRender::TRIANGLE_STRIP);
+		gGL.begin(LLRender::TRIANGLES);
 		gGL.texCoord2f(tc1.mV[0], tc1.mV[1]);
 		gGL.vertex2f(-1,-1);
 		
@@ -6584,15 +6929,22 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 
 		if (LLGLSLShader::sNoFixedFunction)
 		{
-			gUIProgram.unbind();
+			gSplatTextureRectProgram.unbind();
 		}
+	}
 
+	
+	if (LLRenderTarget::sUseFBO)
+	{ //copy depth buffer from mScreen to framebuffer
+		LLRenderTarget::copyContentsToFramebuffer(mScreen, 0, 0, mScreen.getWidth(), mScreen.getHeight(), 
+			0, 0, mScreen.getWidth(), mScreen.getHeight(), GL_DEPTH_BUFFER_BIT, GL_NEAREST);
 	}
+	
 
-	glMatrixMode(GL_PROJECTION);
-	glPopMatrix();
-	glMatrixMode(GL_MODELVIEW);
-	glPopMatrix();
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.popMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.popMatrix();
 
 	LLVertexBuffer::unbind();
 
@@ -6603,7 +6955,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
 
 static LLFastTimer::DeclareTimer FTM_BIND_DEFERRED("Bind Deferred");
 
-void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRenderTarget* gi_source, LLRenderTarget* last_gi_post, U32 noise_map)
+void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, U32 noise_map)
 {
 	LLFastTimer t(FTM_BIND_DEFERRED);
 
@@ -6614,146 +6966,28 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen
 
 	shader.bind();
 	S32 channel = 0;
-	channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, mDeferredScreen.getUsage());
+	channel = shader.enableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mDeferredScreen.getUsage());
 	if (channel > -1)
 	{
 		mDeferredScreen.bindTexture(0,channel);
 		gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
 	}
 
-	channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_SPECULAR, mDeferredScreen.getUsage());
+	channel = shader.enableTexture(LLShaderMgr::DEFERRED_SPECULAR, mDeferredScreen.getUsage());
 	if (channel > -1)
 	{
 		mDeferredScreen.bindTexture(1, channel);
 		gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
 	}
 
-	channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_NORMAL, mDeferredScreen.getUsage());
+	channel = shader.enableTexture(LLShaderMgr::DEFERRED_NORMAL, mDeferredScreen.getUsage());
 	if (channel > -1)
 	{
 		mDeferredScreen.bindTexture(2, channel);
 		gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
 	}
 
-	if (gi_source)
-	{
-		BOOL has_gi = FALSE;
-		channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_DIFFUSE);
-		if (channel > -1)
-		{
-			has_gi = TRUE;
-			gi_source->bindTexture(0, channel);
-			gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
-		}
-		
-		channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_SPECULAR);
-		if (channel > -1)
-		{
-			has_gi = TRUE;
-			gi_source->bindTexture(1, channel);
-			gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
-		}
-		
-		channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_NORMAL);
-		if (channel > -1)
-		{
-			has_gi = TRUE;
-			gi_source->bindTexture(2, channel);
-			gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
-		}
-		
-		channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_MIN_POS);
-		if (channel > -1)
-		{
-			has_gi = TRUE;
-			gi_source->bindTexture(1, channel);
-			gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
-		}
-		
-		channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_MAX_POS);
-		if (channel > -1)
-		{
-			has_gi = TRUE;
-			gi_source->bindTexture(3, channel);
-			gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
-		}
-		
-		channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_DIFFUSE);
-		if (channel > -1)
-		{
-			has_gi = TRUE;
-			last_gi_post->bindTexture(0, channel);
-			gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
-		}
-		
-		channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_NORMAL);
-		if (channel > -1)
-		{
-			has_gi = TRUE;
-			last_gi_post->bindTexture(2, channel);
-			gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
-		}
-		
-		channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_MAX_POS);
-		if (channel > -1)
-		{
-			has_gi = TRUE;
-			last_gi_post->bindTexture(1, channel);
-			gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
-		}
-		
-		channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_MIN_POS);
-		if (channel > -1)
-		{
-			has_gi = TRUE;
-			last_gi_post->bindTexture(3, channel);
-			gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_BILINEAR);
-		}
-		
-		channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_DEPTH);
-		if (channel > -1)
-		{
-			has_gi = TRUE;
-			gGL.getTexUnit(channel)->bind(gi_source, TRUE);
-			gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
-			stop_glerror();
-			
-			glTexParameteri(LLTexUnit::getInternalType(mGIMap.getUsage()), GL_TEXTURE_COMPARE_MODE_ARB, GL_NONE);		
-			glTexParameteri(LLTexUnit::getInternalType(mGIMap.getUsage()), GL_DEPTH_TEXTURE_MODE_ARB, GL_ALPHA);		
-
-			stop_glerror();
-		}
-
-		if (has_gi)
-		{
-			F32 range_x = llmin(mGIRange.mV[0], 1.f);
-			F32 range_y = llmin(mGIRange.mV[1], 1.f);
-
-			LLVector2 scale(range_x,range_y);
-
-			LLVector2 kern[25];
-
-			for (S32 i = 0; i < 5; ++i)
-			{
-				for (S32 j = 0; j < 5; ++j)
-				{
-					S32 idx = i*5+j;
-					kern[idx].mV[0] = (i-2)*0.5f;
-					kern[idx].mV[1] = (j-2)*0.5f;
-					kern[idx].scaleVec(scale);
-				}
-			}
-
-			shader.uniform2fv("gi_kern", 25, (F32*) kern);
-			shader.uniformMatrix4fv("gi_mat", 1, FALSE, mGIMatrix.m);
-			shader.uniformMatrix4fv("gi_mat_proj", 1, FALSE, mGIMatrixProj.m);
-			shader.uniformMatrix4fv("gi_inv_proj", 1, FALSE, mGIInvProj.m);
-			shader.uniformMatrix4fv("gi_norm_mat", 1, FALSE, mGINormalMatrix.m);
-		}
-	}
-	stop_glerror();
-
-	channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_DEPTH, mDeferredDepth.getUsage());
+	channel = shader.enableTexture(LLShaderMgr::DEFERRED_DEPTH, mDeferredDepth.getUsage());
 	if (channel > -1)
 	{
 		gGL.getTexUnit(channel)->bind(&mDeferredDepth, TRUE);
@@ -6767,21 +7001,21 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen
 		glh::matrix4f projection = glh_get_current_projection();
 		glh::matrix4f inv_proj = projection.inverse();
 		
-		shader.uniformMatrix4fv("inv_proj", 1, FALSE, inv_proj.m);
-		shader.uniform4f("viewport", (F32) gGLViewport[0],
+		shader.uniformMatrix4fv(LLShaderMgr::INVERSE_PROJECTION_MATRIX, 1, FALSE, inv_proj.m);
+		shader.uniform4f(LLShaderMgr::VIEWPORT, (F32) gGLViewport[0],
 									(F32) gGLViewport[1],
 									(F32) gGLViewport[2],
 									(F32) gGLViewport[3]);
 	}
 
-	channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_NOISE);
+	channel = shader.enableTexture(LLShaderMgr::DEFERRED_NOISE);
 	if (channel > -1)
 	{
 		gGL.getTexUnit(channel)->bindManual(LLTexUnit::TT_TEXTURE, noise_map);
 		gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
 	}
 
-	channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_LIGHTFUNC);
+	channel = shader.enableTexture(LLShaderMgr::DEFERRED_LIGHTFUNC);
 	if (channel > -1)
 	{
 		gGL.getTexUnit(channel)->bindManual(LLTexUnit::TT_TEXTURE, mLightFunc);
@@ -6789,60 +7023,31 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen
 
 	stop_glerror();
 
-	channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_LIGHT, mDeferredLight[light_index].getUsage());
+	channel = shader.enableTexture(LLShaderMgr::DEFERRED_LIGHT, mDeferredLight.getUsage());
 	if (channel > -1)
 	{
-		mDeferredLight[light_index].bindTexture(0, channel);
+		if (light_index > 0)
+		{
+			mScreen.bindTexture(0, channel);
+		}
+		else
+		{
+			mDeferredLight.bindTexture(0, channel);
+		}
 		gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
 	}
 
-	channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_LUMINANCE);
-	if (channel > -1)
-	{
-		gGL.getTexUnit(channel)->bindManual(LLTexUnit::TT_TEXTURE, mLuminanceMap.getTexture(), true);
-		gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_TRILINEAR);
-	}
-
-	channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_BLOOM);
+	channel = shader.enableTexture(LLShaderMgr::DEFERRED_BLOOM);
 	if (channel > -1)
 	{
 		mGlow[1].bindTexture(0, channel);
 	}
 
-	channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_GI_LIGHT, LLTexUnit::TT_RECT_TEXTURE);
-	if (channel > -1)
-	{
-		gi_source->bindTexture(0, channel);
-		gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
-	}
-
-	channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_EDGE, LLTexUnit::TT_RECT_TEXTURE);
-	if (channel > -1)
-	{
-		mEdgeMap.bindTexture(0, channel);
-		gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
-	}
-
-	channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_SUN_LIGHT, LLTexUnit::TT_RECT_TEXTURE);
-	if (channel > -1)
-	{
-		mDeferredLight[1].bindTexture(0, channel);
-		gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
-	}
-
-	channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_LOCAL_LIGHT, LLTexUnit::TT_RECT_TEXTURE);
-	if (channel > -1)
-	{
-		mDeferredLight[2].bindTexture(0, channel);
-		gGL.getTexUnit(channel)->setTextureFilteringOption(LLTexUnit::TFO_POINT);
-	}
-
-
 	stop_glerror();
 
 	for (U32 i = 0; i < 4; i++)
 	{
-		channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_SHADOW0+i, LLTexUnit::TT_RECT_TEXTURE);
+		channel = shader.enableTexture(LLShaderMgr::DEFERRED_SHADOW0+i, LLTexUnit::TT_RECT_TEXTURE);
 		stop_glerror();
 		if (channel > -1)
 		{
@@ -6860,7 +7065,7 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen
 
 	for (U32 i = 4; i < 6; i++)
 	{
-		channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_SHADOW0+i);
+		channel = shader.enableTexture(LLShaderMgr::DEFERRED_SHADOW0+i);
 		stop_glerror();
 		if (channel > -1)
 		{
@@ -6889,12 +7094,11 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen
 		mat[i+80] = mSunShadowMatrix[5].m[i];
 	}
 
-	shader.uniformMatrix4fv("shadow_matrix[0]", 6, FALSE, mat);
-	shader.uniformMatrix4fv("shadow_matrix", 6, FALSE, mat);
+	shader.uniformMatrix4fv(LLShaderMgr::DEFERRED_SHADOW_MATRIX, 6, FALSE, mat);
 
 	stop_glerror();
 
-	channel = shader.enableTexture(LLViewerShaderMgr::ENVIRONMENT_MAP, LLTexUnit::TT_CUBE_MAP);
+	channel = shader.enableTexture(LLShaderMgr::ENVIRONMENT_MAP, LLTexUnit::TT_CUBE_MAP);
 	if (channel > -1)
 	{
 		LLCubeMap* cube_map = gSky.mVOSkyp ? gSky.mVOSkyp->getCubeMap() : NULL;
@@ -6902,31 +7106,29 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen
 		{
 			cube_map->enable(channel);
 			cube_map->bind();
-			F64* m = gGLModelView;
-
-			
+			F32* m = gGLModelView;
+						
 			F32 mat[] = { m[0], m[1], m[2],
 						  m[4], m[5], m[6],
 						  m[8], m[9], m[10] };
 		
-			shader.uniform3fv("env_mat[0]", 3, mat);
-			shader.uniform3fv("env_mat", 3, mat);
+			shader.uniformMatrix3fv(LLShaderMgr::DEFERRED_ENV_MAT, 1, TRUE, mat);
 		}
 	}
 
-	shader.uniform4fv("shadow_clip", 1, mSunClipPlanes.mV);
-	shader.uniform1f("sun_wash", gSavedSettings.getF32("RenderDeferredSunWash"));
-	shader.uniform1f("shadow_noise", gSavedSettings.getF32("RenderShadowNoise"));
-	shader.uniform1f("blur_size", gSavedSettings.getF32("RenderShadowBlurSize"));
+	shader.uniform4fv(LLShaderMgr::DEFERRED_SHADOW_CLIP, 1, mSunClipPlanes.mV);
+	shader.uniform1f(LLShaderMgr::DEFERRED_SUN_WASH, RenderDeferredSunWash);
+	shader.uniform1f(LLShaderMgr::DEFERRED_SHADOW_NOISE, RenderShadowNoise);
+	shader.uniform1f(LLShaderMgr::DEFERRED_BLUR_SIZE, RenderShadowBlurSize);
 
-	shader.uniform1f("ssao_radius", gSavedSettings.getF32("RenderSSAOScale"));
-	shader.uniform1f("ssao_max_radius", gSavedSettings.getU32("RenderSSAOMaxScale"));
+	shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_RADIUS, RenderSSAOScale);
+	shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_MAX_RADIUS, RenderSSAOMaxScale);
 
-	F32 ssao_factor = gSavedSettings.getF32("RenderSSAOFactor");
-	shader.uniform1f("ssao_factor", ssao_factor);
-	shader.uniform1f("ssao_factor_inv", 1.0/ssao_factor);
+	F32 ssao_factor = RenderSSAOFactor;
+	shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_FACTOR, ssao_factor);
+	shader.uniform1f(LLShaderMgr::DEFERRED_SSAO_FACTOR_INV, 1.0/ssao_factor);
 
-	LLVector3 ssao_effect = gSavedSettings.getVector3("RenderSSAOEffect");
+	LLVector3 ssao_effect = RenderSSAOEffect;
 	F32 matrix_diag = (ssao_effect[0] + 2.0*ssao_effect[1])/3.0;
 	F32 matrix_nondiag = (ssao_effect[0] - ssao_effect[1])/3.0;
 	// This matrix scales (proj of color onto <1/rt(3),1/rt(3),1/rt(3)>) by
@@ -6934,35 +7136,23 @@ void LLPipeline::bindDeferredShader(LLGLSLShader& shader, U32 light_index, LLRen
 	F32 ssao_effect_mat[] = {	matrix_diag, matrix_nondiag, matrix_nondiag,
 								matrix_nondiag, matrix_diag, matrix_nondiag,
 								matrix_nondiag, matrix_nondiag, matrix_diag};
-	shader.uniformMatrix3fv("ssao_effect_mat", 1, GL_FALSE, ssao_effect_mat);
-
-	F32 shadow_offset_error = 1.f + gSavedSettings.getF32("RenderShadowOffsetError") * fabsf(LLViewerCamera::getInstance()->getOrigin().mV[2]);
-	F32 shadow_bias_error = 1.f + gSavedSettings.getF32("RenderShadowBiasError") * fabsf(LLViewerCamera::getInstance()->getOrigin().mV[2]);
-
-	shader.uniform2f("screen_res", mDeferredScreen.getWidth(), mDeferredScreen.getHeight());
-	shader.uniform1f("near_clip", LLViewerCamera::getInstance()->getNear()*2.f);
-	shader.uniform1f ("shadow_offset", gSavedSettings.getF32("RenderShadowOffset")*shadow_offset_error);
-	shader.uniform1f("shadow_bias", gSavedSettings.getF32("RenderShadowBias")*shadow_bias_error);
-	shader.uniform1f ("spot_shadow_offset", gSavedSettings.getF32("RenderSpotShadowOffset"));
-	shader.uniform1f("spot_shadow_bias", gSavedSettings.getF32("RenderSpotShadowBias"));	
-
-	shader.uniform1f("lum_scale", gSavedSettings.getF32("RenderLuminanceScale"));
-	shader.uniform1f("sun_lum_scale", gSavedSettings.getF32("RenderSunLuminanceScale"));
-	shader.uniform1f("sun_lum_offset", gSavedSettings.getF32("RenderSunLuminanceOffset"));
-	shader.uniform1f("lum_lod", gSavedSettings.getF32("RenderLuminanceDetail"));
-	shader.uniform1f("gi_range", gSavedSettings.getF32("RenderGIRange"));
-	shader.uniform1f("gi_brightness", gSavedSettings.getF32("RenderGIBrightness"));
-	shader.uniform1f("gi_luminance", gSavedSettings.getF32("RenderGILuminance"));
-	shader.uniform1f("gi_edge_weight", gSavedSettings.getF32("RenderGIBlurEdgeWeight"));
-	shader.uniform1f("gi_blur_brightness", gSavedSettings.getF32("RenderGIBlurBrightness"));
-	shader.uniform1f("gi_sample_width", mGILightRadius);
-	shader.uniform1f("gi_noise", gSavedSettings.getF32("RenderGINoise"));
-	shader.uniform1f("gi_attenuation", gSavedSettings.getF32("RenderGIAttenuation"));
-	shader.uniform1f("gi_ambiance", gSavedSettings.getF32("RenderGIAmbiance"));
-	shader.uniform2f("shadow_res", mShadow[0].getWidth(), mShadow[0].getHeight());
-	shader.uniform2f("proj_shadow_res", mShadow[4].getWidth(), mShadow[4].getHeight());
-	shader.uniform1f("depth_cutoff", gSavedSettings.getF32("RenderEdgeDepthCutoff"));
-	shader.uniform1f("norm_cutoff", gSavedSettings.getF32("RenderEdgeNormCutoff"));
+	shader.uniformMatrix3fv(LLShaderMgr::DEFERRED_SSAO_EFFECT_MAT, 1, GL_FALSE, ssao_effect_mat);
+
+	F32 shadow_offset_error = 1.f + RenderShadowOffsetError * fabsf(LLViewerCamera::getInstance()->getOrigin().mV[2]);
+	F32 shadow_bias_error = 1.f + RenderShadowBiasError * fabsf(LLViewerCamera::getInstance()->getOrigin().mV[2]);
+
+	shader.uniform2f(LLShaderMgr::DEFERRED_SCREEN_RES, mDeferredScreen.getWidth(), mDeferredScreen.getHeight());
+	shader.uniform1f(LLShaderMgr::DEFERRED_NEAR_CLIP, LLViewerCamera::getInstance()->getNear()*2.f);
+	shader.uniform1f (LLShaderMgr::DEFERRED_SHADOW_OFFSET, RenderShadowOffset*shadow_offset_error);
+	shader.uniform1f(LLShaderMgr::DEFERRED_SHADOW_BIAS, RenderShadowBias*shadow_bias_error);
+	shader.uniform1f(LLShaderMgr::DEFERRED_SPOT_SHADOW_OFFSET, RenderSpotShadowOffset);
+	shader.uniform1f(LLShaderMgr::DEFERRED_SPOT_SHADOW_BIAS, RenderSpotShadowBias);	
+
+	shader.uniform3fv(LLShaderMgr::DEFERRED_SUN_DIR, 1, mTransformedSunDir.mV);
+	shader.uniform2f(LLShaderMgr::DEFERRED_SHADOW_RES, mShadow[0].getWidth(), mShadow[0].getHeight());
+	shader.uniform2f(LLShaderMgr::DEFERRED_PROJ_SHADOW_RES, mShadow[4].getWidth(), mShadow[4].getHeight());
+	shader.uniform1f(LLShaderMgr::DEFERRED_DEPTH_CUTOFF, RenderEdgeDepthCutoff);
+	shader.uniform1f(LLShaderMgr::DEFERRED_NORM_CUTOFF, RenderEdgeNormCutoff);
 	
 
 	if (shader.getUniformLocation("norm_mat") >= 0)
@@ -7001,7 +7191,7 @@ void LLPipeline::renderDeferredLighting()
 							0, 0, mDeferredDepth.getWidth(), mDeferredDepth.getHeight(), GL_DEPTH_BUFFER_BIT, GL_NEAREST);	
 		}
 
-		LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0);
+		LLGLEnable multisample(RenderFSAASamples > 0 ? GL_MULTISAMPLE_ARB : 0);
 
 		if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD))
 		{
@@ -7023,38 +7213,40 @@ void LLPipeline::renderDeferredLighting()
 
 		glh::matrix4f mat = glh_copy_matrix(gGLModelView);
 
-		F32 vert[] = 
-		{
-			-1,1,
-			-1,-3,
-			3,1,
-		};
-		glVertexPointer(2, GL_FLOAT, 0, vert);
-		glColor3f(1,1,1);
+		LLStrider<LLVector3> vert; 
+		mDeferredVB->getVertexStrider(vert);
+		LLStrider<LLVector2> tc0;
+		LLStrider<LLVector2> tc1;
+		mDeferredVB->getTexCoord0Strider(tc0);
+		mDeferredVB->getTexCoord1Strider(tc1);
 
+		vert[0].set(-1,1,0);
+		vert[1].set(-1,-3,0);
+		vert[2].set(3,1,0);
+		
 		{
 			setupHWLights(NULL); //to set mSunDir;
 			LLVector4 dir(mSunDir, 0.f);
 			glh::vec4f tc(dir.mV);
 			mat.mult_matrix_vec(tc);
-			glTexCoord4f(tc.v[0], tc.v[1], tc.v[2], 0);
+			mTransformedSunDir.set(tc.v);
 		}
 
-		glPushMatrix();
-		glLoadIdentity();
-		glMatrixMode(GL_PROJECTION);
-		glPushMatrix();
-		glLoadIdentity();
+		gGL.pushMatrix();
+		gGL.loadIdentity();
+		gGL.matrixMode(LLRender::MM_PROJECTION);
+		gGL.pushMatrix();
+		gGL.loadIdentity();
 
-		if (gSavedSettings.getBOOL("RenderDeferredSSAO") || gSavedSettings.getS32("RenderShadowDetail") > 0)
+		if (RenderDeferredSSAO || RenderShadowDetail > 0)
 		{
-			mDeferredLight[0].bindTarget();
+			mDeferredLight.bindTarget();
 			{ //paint shadow/SSAO light map (direct lighting lightmap)
 				LLFastTimer ftm(FTM_SUN_SHADOW);
 				bindDeferredShader(gDeferredSunProgram, 0);
-
+				mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
 				glClearColor(1,1,1,1);
-				mDeferredLight[0].clear(GL_COLOR_BUFFER_BIT);
+				mDeferredLight.clear(GL_COLOR_BUFFER_BIT);
 				glClearColor(0,0,0,0);
 
 				glh::matrix4f inv_trans = glh_get_current_modelview().inverse().transpose();
@@ -7077,141 +7269,36 @@ void LLPipeline::renderDeferredLighting()
 				}
 
 				gDeferredSunProgram.uniform3fv("offset", slice, offset);
-				gDeferredSunProgram.uniform2f("screenRes", mDeferredLight[0].getWidth(), mDeferredLight[0].getHeight());
+				gDeferredSunProgram.uniform2f("screenRes", mDeferredLight.getWidth(), mDeferredLight.getHeight());
 				
 				{
 					LLGLDisable blend(GL_BLEND);
 					LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_ALWAYS);
 					stop_glerror();
-					glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
+					mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);
 					stop_glerror();
 				}
 				
 				unbindDeferredShader(gDeferredSunProgram);
 			}
-			mDeferredLight[0].flush();
+			mDeferredLight.flush();
 		}
 		
-		{ //global illumination specific block (still experimental)
-			if (gSavedSettings.getBOOL("RenderDeferredBlurLight") &&
-			    gSavedSettings.getBOOL("RenderDeferredGI"))
-			{
-				LLFastTimer ftm(FTM_EDGE_DETECTION);
-				//generate edge map
-				LLGLDisable blend(GL_BLEND);
-				LLGLDisable test(GL_ALPHA_TEST);
-				LLGLDepthTest depth(GL_FALSE);
-				LLGLDisable stencil(GL_STENCIL_TEST);
-
-				{
-					gDeferredEdgeProgram.bind();
-					mEdgeMap.bindTarget();
-					bindDeferredShader(gDeferredEdgeProgram);
-					glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
-					unbindDeferredShader(gDeferredEdgeProgram);
-					mEdgeMap.flush();
-				}
-			}
-
-			if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2)
-			{
-				{ //get luminance map from previous frame's light map
-					LLGLEnable blend(GL_BLEND);
-					LLGLDisable test(GL_ALPHA_TEST);
-					LLGLDepthTest depth(GL_FALSE);
-					LLGLDisable stencil(GL_STENCIL_TEST);
-
-					//static F32 fade = 1.f;
-
-					{
-						gGL.setSceneBlendType(LLRender::BT_ALPHA);
-						gLuminanceGatherProgram.bind();
-						gLuminanceGatherProgram.uniform2f("screen_res", mDeferredLight[0].getWidth(), mDeferredLight[0].getHeight());
-						mLuminanceMap.bindTarget();
-						bindDeferredShader(gLuminanceGatherProgram);
-						glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
-						unbindDeferredShader(gLuminanceGatherProgram);
-						mLuminanceMap.flush();
-						gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, mLuminanceMap.getTexture(), true);
-						gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_TRILINEAR);
-						glGenerateMipmap(GL_TEXTURE_2D);
-					}
-				}
-
-				{ //paint noisy GI map (bounce lighting lightmap)
-					LLFastTimer ftm(FTM_GI_TRACE);
-					LLGLDisable blend(GL_BLEND);
-					LLGLDepthTest depth(GL_FALSE);
-					LLGLDisable test(GL_ALPHA_TEST);
-
-					mGIMapPost[0].bindTarget();
-
-					bindDeferredShader(gDeferredGIProgram, 0, &mGIMap, 0, mTrueNoiseMap);
-					glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
-					unbindDeferredShader(gDeferredGIProgram);
-					mGIMapPost[0].flush();
-				}
-
-				U32 pass_count = 0;
-				if (gSavedSettings.getBOOL("RenderDeferredBlurLight"))
-				{
-					pass_count = llclamp(gSavedSettings.getU32("RenderGIBlurPasses"), (U32) 1, (U32) 128);
-				}
-
-				for (U32 i = 0; i < pass_count; ++i)
-				{ //gather/soften indirect lighting map
-					LLFastTimer ftm(FTM_GI_GATHER);
-					bindDeferredShader(gDeferredPostGIProgram, 0, &mGIMapPost[0], NULL, mTrueNoiseMap);
-					F32 blur_size = gSavedSettings.getF32("RenderGIBlurSize")/((F32) i * gSavedSettings.getF32("RenderGIBlurIncrement")+1.f);
-					gDeferredPostGIProgram.uniform2f("delta", 1.f, 0.f);
-					gDeferredPostGIProgram.uniform1f("kern_scale", blur_size);
-					gDeferredPostGIProgram.uniform1f("gi_blur_brightness", gSavedSettings.getF32("RenderGIBlurBrightness"));
-				
-					mGIMapPost[1].bindTarget();
-					{
-						LLGLDisable blend(GL_BLEND);
-						LLGLDepthTest depth(GL_FALSE);
-						stop_glerror();
-						glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
-						stop_glerror();
-					}
-					
-					mGIMapPost[1].flush();
-					unbindDeferredShader(gDeferredPostGIProgram);
-					bindDeferredShader(gDeferredPostGIProgram, 0, &mGIMapPost[1], NULL, mTrueNoiseMap);
-					mGIMapPost[0].bindTarget();
-
-					gDeferredPostGIProgram.uniform2f("delta", 0.f, 1.f);
-
-					{
-						LLGLDisable blend(GL_BLEND);
-						LLGLDepthTest depth(GL_FALSE);
-						stop_glerror();
-						glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-						stop_glerror();
-					}
-					mGIMapPost[0].flush();
-					unbindDeferredShader(gDeferredPostGIProgram);
-				}
-			}
-		}
-
-		if (gSavedSettings.getBOOL("RenderDeferredSSAO"))
+		if (RenderDeferredSSAO)
 		{ //soften direct lighting lightmap
 			LLFastTimer ftm(FTM_SOFTEN_SHADOW);
 			//blur lightmap
-			mDeferredLight[1].bindTarget();
-
+			mScreen.bindTarget();
 			glClearColor(1,1,1,1);
-			mDeferredLight[1].clear(GL_COLOR_BUFFER_BIT);
+			mScreen.clear(GL_COLOR_BUFFER_BIT);
 			glClearColor(0,0,0,0);
 			
 			bindDeferredShader(gDeferredBlurLightProgram);
-
-			LLVector3 go = gSavedSettings.getVector3("RenderShadowGaussian");
+			mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
+			LLVector3 go = RenderShadowGaussian;
 			const U32 kern_length = 4;
-			F32 blur_size = gSavedSettings.getF32("RenderShadowBlurSize");
-			F32 dist_factor = gSavedSettings.getF32("RenderShadowBlurDistFactor");
+			F32 blur_size = RenderShadowBlurSize;
+			F32 dist_factor = RenderShadowBlurDistFactor;
 
 			// sample symmetrically with the middle sample falling exactly on 0.0
 			F32 x = 0.f;
@@ -7235,15 +7322,16 @@ void LLPipeline::renderDeferredLighting()
 				LLGLDisable blend(GL_BLEND);
 				LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_ALWAYS);
 				stop_glerror();
-				glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
+				mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);
 				stop_glerror();
 			}
 			
-			mDeferredLight[1].flush();
+			mScreen.flush();
 			unbindDeferredShader(gDeferredBlurLightProgram);
 
 			bindDeferredShader(gDeferredBlurLightProgram, 1);
-			mDeferredLight[0].bindTarget();
+			mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
+			mDeferredLight.bindTarget();
 
 			gDeferredBlurLightProgram.uniform2f("delta", 0.f, 1.f);
 
@@ -7251,69 +7339,59 @@ void LLPipeline::renderDeferredLighting()
 				LLGLDisable blend(GL_BLEND);
 				LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_ALWAYS);
 				stop_glerror();
-				glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
+				mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);
 				stop_glerror();
 			}
-			mDeferredLight[0].flush();
+			mDeferredLight.flush();
 			unbindDeferredShader(gDeferredBlurLightProgram);
 		}
 
 		stop_glerror();
-		glPopMatrix();
+		gGL.popMatrix();
 		stop_glerror();
-		glMatrixMode(GL_MODELVIEW);
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 		stop_glerror();
-		glPopMatrix();
+		gGL.popMatrix();
 		stop_glerror();
 
 		//copy depth and stencil from deferred screen
 		//mScreen.copyContents(mDeferredScreen, 0, 0, mDeferredScreen.getWidth(), mDeferredScreen.getHeight(),
 		//					0, 0, mScreen.getWidth(), mScreen.getHeight(), GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT, GL_NEAREST);
 
-		if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2)
-		{
-			mDeferredLight[1].bindTarget();
-			// clear color buffer here (GI) - zeroing alpha (glow) is important or it will accumulate against sky
-			glClearColor(0,0,0,0);
-			mScreen.clear(GL_COLOR_BUFFER_BIT);
-		}
-		else
-		{
-			mScreen.bindTarget();
-			// clear color buffer here - zeroing alpha (glow) is important or it will accumulate against sky
-			glClearColor(0,0,0,0);
-			mScreen.clear(GL_COLOR_BUFFER_BIT);
-		}
-
-		if (gSavedSettings.getBOOL("RenderDeferredAtmospheric"))
+		mScreen.bindTarget();
+		// clear color buffer here - zeroing alpha (glow) is important or it will accumulate against sky
+		glClearColor(0,0,0,0);
+		mScreen.clear(GL_COLOR_BUFFER_BIT);
+		
+		if (RenderDeferredAtmospheric)
 		{ //apply sunlight contribution 
 			LLFastTimer ftm(FTM_ATMOSPHERICS);
-			bindDeferredShader(gDeferredSoftenProgram, 0, &mGIMapPost[0]);	
+			bindDeferredShader(gDeferredSoftenProgram);	
 			{
 				LLGLDepthTest depth(GL_FALSE);
 				LLGLDisable blend(GL_BLEND);
 				LLGLDisable test(GL_ALPHA_TEST);
 
 				//full screen blit
-				glPushMatrix();
-				glLoadIdentity();
-				glMatrixMode(GL_PROJECTION);
-				glPushMatrix();
-				glLoadIdentity();
+				gGL.pushMatrix();
+				gGL.loadIdentity();
+				gGL.matrixMode(LLRender::MM_PROJECTION);
+				gGL.pushMatrix();
+				gGL.loadIdentity();
 
-				glVertexPointer(2, GL_FLOAT, 0, vert);
+				mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
 				
-				glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
-				
-				glPopMatrix();
-				glMatrixMode(GL_MODELVIEW);
-				glPopMatrix();
+				mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);
+
+				gGL.popMatrix();
+				gGL.matrixMode(LLRender::MM_MODELVIEW);
+				gGL.popMatrix();
 			}
 
 			unbindDeferredShader(gDeferredSoftenProgram);
 		}
 
-		{ //render sky
+		{ //render non-deferred geometry (fullbright, alpha, etc)
 			LLGLDisable blend(GL_BLEND);
 			LLGLDisable stencil(GL_STENCIL_TEST);
 			gGL.setSceneBlendType(LLRender::BT_ALPHA);
@@ -7330,15 +7408,8 @@ void LLPipeline::renderDeferredLighting()
 			gPipeline.popRenderTypeMask();
 		}
 
-		BOOL render_local = gSavedSettings.getBOOL("RenderLocalLights");
+		BOOL render_local = RenderLocalLights;
 				
-		if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2)
-		{
-			mDeferredLight[1].flush();
-			mDeferredLight[2].bindTarget();
-			mDeferredLight[2].clear(GL_COLOR_BUFFER_BIT);
-		}
-
 		if (render_local)
 		{
 			gGL.setSceneBlendType(LLRender::BT_ADD);
@@ -7354,12 +7425,12 @@ void LLPipeline::renderDeferredLighting()
 			std::list<LLVector4> light_colors;
 
 			LLVertexBuffer::unbind();
+			LLVector4a* v = (LLVector4a*) vert.get();
 
-			F32 v[24];
-			glVertexPointer(3, GL_FLOAT, 0, v);
-			
 			{
 				bindDeferredShader(gDeferredLightProgram);
+				mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
+
 				LLGLDepthTest depth(GL_TRUE, GL_FALSE);
 				for (LLDrawable::drawable_set_t::iterator iter = mLights.begin(); iter != mLights.end(); ++iter)
 				{
@@ -7386,8 +7457,7 @@ void LLPipeline::renderDeferredLighting()
 					F32 s = volume->getLightRadius()*1.5f;
 
 					LLColor3 col = volume->getLightColor();
-					col *= volume->getLightIntensity();
-
+					
 					if (col.magVecSquared() < 0.001f)
 					{
 						continue;
@@ -7414,15 +7484,16 @@ void LLPipeline::renderDeferredLighting()
 					//correspond to their axis facing, with bit position 3,2,1 matching
 					//axis facing x,y,z, bit set meaning positive facing, bit clear 
 					//meaning negative facing
-					v[0] = c[0]-s; v[1]  = c[1]-s; v[2]  = c[2]-s;  // 0 - 0000 
-					v[3] = c[0]-s; v[4]  = c[1]-s; v[5]  = c[2]+s;  // 1 - 0001
-					v[6] = c[0]-s; v[7]  = c[1]+s; v[8]  = c[2]-s;  // 2 - 0010
-					v[9] = c[0]-s; v[10] = c[1]+s; v[11] = c[2]+s;  // 3 - 0011
+					mDeferredVB->getVertexStrider(vert);
+					v[0].set(c[0]-s,c[1]-s,c[2]-s);  // 0 - 0000 
+					v[1].set(c[0]-s,c[1]-s,c[2]+s);  // 1 - 0001
+					v[2].set(c[0]-s,c[1]+s,c[2]-s);  // 2 - 0010
+					v[3].set(c[0]-s,c[1]+s,c[2]+s);  // 3 - 0011
 																									   
-					v[12] = c[0]+s; v[13] = c[1]-s; v[14] = c[2]-s; // 4 - 0100
-					v[15] = c[0]+s; v[16] = c[1]-s; v[17] = c[2]+s; // 5 - 0101
-					v[18] = c[0]+s; v[19] = c[1]+s; v[20] = c[2]-s; // 6 - 0110
-					v[21] = c[0]+s; v[22] = c[1]+s; v[23] = c[2]+s; // 7 - 0111
+					v[4].set(c[0]+s,c[1]-s,c[2]-s); // 4 - 0100
+					v[5].set(c[0]+s,c[1]-s,c[2]+s); // 5 - 0101
+					v[6].set(c[0]+s,c[1]+s,c[2]-s); // 6 - 0110
+					v[7].set(c[0]+s,c[1]+s,c[2]+s); // 7 - 0111
 
 					if (camera->getOrigin().mV[0] > c[0] + s + 0.2f ||
 						camera->getOrigin().mV[0] < c[0] - s - 0.2f ||
@@ -7441,10 +7512,16 @@ void LLPipeline::renderDeferredLighting()
 							}
 							
 							LLFastTimer ftm(FTM_LOCAL_LIGHTS);
-							glTexCoord4f(tc.v[0], tc.v[1], tc.v[2], s*s);
-							glColor4f(col.mV[0], col.mV[1], col.mV[2], volume->getLightFalloff()*0.5f);
+							//glTexCoord4f(tc.v[0], tc.v[1], tc.v[2], s*s);
+							gDeferredLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, tc.v);
+							gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s*s);
+							gDeferredLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV);
+							gDeferredLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f);
+							//gGL.diffuseColor4f(col.mV[0], col.mV[1], col.mV[2], volume->getLightFalloff()*0.5f);
+							gGL.syncMatrices();
+							mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
 							glDrawRangeElements(GL_TRIANGLE_FAN, 0, 7, 8,
-								GL_UNSIGNED_BYTE, get_box_fan_indices_ptr(camera, center));
+								GL_UNSIGNED_SHORT, get_box_fan_indices_ptr(camera, center));
 							stop_glerror();
 						}
 					}
@@ -7469,7 +7546,9 @@ void LLPipeline::renderDeferredLighting()
 				LLGLDepthTest depth(GL_TRUE, GL_FALSE);
 				bindDeferredShader(gDeferredSpotLightProgram);
 
-				gDeferredSpotLightProgram.enableTexture(LLViewerShaderMgr::DEFERRED_PROJECTION);
+				mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
+
+				gDeferredSpotLightProgram.enableTexture(LLShaderMgr::DEFERRED_PROJECTION);
 
 				for (LLDrawable::drawable_list_t::iterator iter = spot_lights.begin(); iter != spot_lights.end(); ++iter)
 				{
@@ -7491,42 +7570,54 @@ void LLPipeline::renderDeferredLighting()
 					setupSpotLight(gDeferredSpotLightProgram, drawablep);
 					
 					LLColor3 col = volume->getLightColor();
-					col *= volume->getLightIntensity();
-
+					
 					//vertex positions are encoded so the 3 bits of their vertex index 
 					//correspond to their axis facing, with bit position 3,2,1 matching
 					//axis facing x,y,z, bit set meaning positive facing, bit clear 
 					//meaning negative facing
-					v[0] = c[0]-s; v[1]  = c[1]-s; v[2]  = c[2]-s;  // 0 - 0000 
-					v[3] = c[0]-s; v[4]  = c[1]-s; v[5]  = c[2]+s;  // 1 - 0001
-					v[6] = c[0]-s; v[7]  = c[1]+s; v[8]  = c[2]-s;  // 2 - 0010
-					v[9] = c[0]-s; v[10] = c[1]+s; v[11] = c[2]+s;  // 3 - 0011
+					mDeferredVB->getVertexStrider(vert);
+					v[0].set(c[0]-s,c[1]-s,c[2]-s);  // 0 - 0000 
+					v[1].set(c[0]-s,c[1]-s,c[2]+s);  // 1 - 0001
+					v[2].set(c[0]-s,c[1]+s,c[2]-s);  // 2 - 0010
+					v[3].set(c[0]-s,c[1]+s,c[2]+s);  // 3 - 0011
 																									   
-					v[12] = c[0]+s; v[13] = c[1]-s; v[14] = c[2]-s; // 4 - 0100
-					v[15] = c[0]+s; v[16] = c[1]-s; v[17] = c[2]+s; // 5 - 0101
-					v[18] = c[0]+s; v[19] = c[1]+s; v[20] = c[2]-s; // 6 - 0110
-					v[21] = c[0]+s; v[22] = c[1]+s; v[23] = c[2]+s; // 7 - 0111
-
-					glTexCoord4f(tc.v[0], tc.v[1], tc.v[2], s*s);
-					glColor4f(col.mV[0], col.mV[1], col.mV[2], volume->getLightFalloff()*0.5f);
+					v[4].set(c[0]+s,c[1]-s,c[2]-s); // 4 - 0100
+					v[5].set(c[0]+s,c[1]-s,c[2]+s); // 5 - 0101
+					v[6].set(c[0]+s,c[1]+s,c[2]-s); // 6 - 0110
+					v[7].set(c[0]+s,c[1]+s,c[2]+s); // 7 - 0111
+					
+					gDeferredSpotLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, tc.v);
+					gDeferredSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s*s);
+					gDeferredSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV);
+					gDeferredSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f);
+					gGL.syncMatrices();
+					mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
 					glDrawRangeElements(GL_TRIANGLE_FAN, 0, 7, 8,
-							GL_UNSIGNED_BYTE, get_box_fan_indices_ptr(camera, center));
+							GL_UNSIGNED_SHORT, get_box_fan_indices_ptr(camera, center));
 				}
-				gDeferredSpotLightProgram.disableTexture(LLViewerShaderMgr::DEFERRED_PROJECTION);
+				gDeferredSpotLightProgram.disableTexture(LLShaderMgr::DEFERRED_PROJECTION);
 				unbindDeferredShader(gDeferredSpotLightProgram);
 			}
 
+			//reset mDeferredVB to fullscreen triangle
+			mDeferredVB->getVertexStrider(vert);
+			vert[0].set(-1,1,0);
+			vert[1].set(-1,-3,0);
+			vert[2].set(3,1,0);
+
 			{
 				bindDeferredShader(gDeferredMultiLightProgram);
 			
+				mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
+
 				LLGLDepthTest depth(GL_FALSE);
 
 				//full screen blit
-				glPushMatrix();
-				glLoadIdentity();
-				glMatrixMode(GL_PROJECTION);
-				glPushMatrix();
-				glLoadIdentity();
+				gGL.pushMatrix();
+				gGL.loadIdentity();
+				gGL.matrixMode(LLRender::MM_PROJECTION);
+				gGL.pushMatrix();
+				gGL.loadIdentity();
 
 				U32 count = 0;
 
@@ -7534,7 +7625,7 @@ void LLPipeline::renderDeferredLighting()
 				LLVector4 light[max_count];
 				LLVector4 col[max_count];
 
-				glVertexPointer(2, GL_FLOAT, 0, vert);
+//				glVertexPointer(2, GL_FLOAT, 0, vert);
 
 				F32 far_z = 0.f;
 
@@ -7551,13 +7642,13 @@ void LLPipeline::renderDeferredLighting()
 					count++;
 					if (count == max_count || fullscreen_lights.empty())
 					{
-						gDeferredMultiLightProgram.uniform1i("light_count", count);
-						gDeferredMultiLightProgram.uniform4fv("light", count, (GLfloat*) light);
-						gDeferredMultiLightProgram.uniform4fv("light_col", count, (GLfloat*) col);
-						gDeferredMultiLightProgram.uniform1f("far_z", far_z);
+						gDeferredMultiLightProgram.uniform1i(LLShaderMgr::MULTI_LIGHT_COUNT, count);
+						gDeferredMultiLightProgram.uniform4fv(LLShaderMgr::MULTI_LIGHT, count, (GLfloat*) light);
+						gDeferredMultiLightProgram.uniform4fv(LLShaderMgr::MULTI_LIGHT_COL, count, (GLfloat*) col);
+						gDeferredMultiLightProgram.uniform1f(LLShaderMgr::MULTI_LIGHT_FAR_Z, far_z);
 						far_z = 0.f;
-						count = 0;
-						glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
+						count = 0; 
+						mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);
 					}
 				}
 				
@@ -7565,7 +7656,9 @@ void LLPipeline::renderDeferredLighting()
 
 				bindDeferredShader(gDeferredMultiSpotLightProgram);
 
-				gDeferredMultiSpotLightProgram.enableTexture(LLViewerShaderMgr::DEFERRED_PROJECTION);
+				gDeferredMultiSpotLightProgram.enableTexture(LLShaderMgr::DEFERRED_PROJECTION);
+
+				mDeferredVB->setBuffer(LLVertexBuffer::MAP_VERTEX);
 
 				for (LLDrawable::drawable_list_t::iterator iter = fullscreen_spot_lights.begin(); iter != fullscreen_spot_lights.end(); ++iter)
 				{
@@ -7586,64 +7679,24 @@ void LLPipeline::renderDeferredLighting()
 					setupSpotLight(gDeferredMultiSpotLightProgram, drawablep);
 
 					LLColor3 col = volume->getLightColor();
-					col *= volume->getLightIntensity();
-
-					glTexCoord4f(tc.v[0], tc.v[1], tc.v[2], s*s);
-					glColor4f(col.mV[0], col.mV[1], col.mV[2], volume->getLightFalloff()*0.5f);
-					glDrawArrays(GL_TRIANGLE_STRIP, 0, 3);
+					
+					gDeferredMultiSpotLightProgram.uniform3fv(LLShaderMgr::LIGHT_CENTER, 1, tc.v);
+					gDeferredMultiSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_SIZE, s*s);
+					gDeferredMultiSpotLightProgram.uniform3fv(LLShaderMgr::DIFFUSE_COLOR, 1, col.mV);
+					gDeferredMultiSpotLightProgram.uniform1f(LLShaderMgr::LIGHT_FALLOFF, volume->getLightFalloff()*0.5f);
+					mDeferredVB->drawArrays(LLRender::TRIANGLES, 0, 3);
 				}
 
-				gDeferredMultiSpotLightProgram.disableTexture(LLViewerShaderMgr::DEFERRED_PROJECTION);
+				gDeferredMultiSpotLightProgram.disableTexture(LLShaderMgr::DEFERRED_PROJECTION);
 				unbindDeferredShader(gDeferredMultiSpotLightProgram);
 
-				glPopMatrix();
-				glMatrixMode(GL_MODELVIEW);
-				glPopMatrix();
+				gGL.popMatrix();
+				gGL.matrixMode(LLRender::MM_MODELVIEW);
+				gGL.popMatrix();
 			}
 		}
 
 		gGL.setColorMask(true, true);
-
-		if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) > 2)
-		{
-			mDeferredLight[2].flush();
-
-			mScreen.bindTarget();
-			mScreen.clear(GL_COLOR_BUFFER_BIT);
-		
-			gGL.setSceneBlendType(LLRender::BT_ALPHA);
-
-			{ //mix various light maps (local, sun, gi)
-				LLFastTimer ftm(FTM_POST);
-				LLGLDisable blend(GL_BLEND);
-				LLGLDisable test(GL_ALPHA_TEST);
-				LLGLDepthTest depth(GL_FALSE);
-				LLGLDisable stencil(GL_STENCIL_TEST);
-			
-				bindDeferredShader(gDeferredPostProgram, 0, &mGIMapPost[0]);
-
-				gDeferredPostProgram.bind();
-
-				LLVertexBuffer::unbind();
-
-				glVertexPointer(2, GL_FLOAT, 0, vert);
-				glColor3f(1,1,1);
-
-				glPushMatrix();
-				glLoadIdentity();
-				glMatrixMode(GL_PROJECTION);
-				glPushMatrix();
-				glLoadIdentity();
-
-				glDrawArrays(GL_TRIANGLES, 0, 3);
-
-				glPopMatrix();
-				glMatrixMode(GL_MODELVIEW);
-				glPopMatrix();
-
-				unbindDeferredShader(gDeferredPostProgram);
-			}
-		}
 	}
 
 	{ //render non-deferred geometry (alpha, fullbright, glow)
@@ -7759,13 +7812,13 @@ void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep)
 	F32 proj_range = far_clip - near_clip;
 	glh::matrix4f light_proj = gl_perspective(fovy, aspect, near_clip, far_clip);
 	screen_to_light = trans * light_proj * screen_to_light;
-	shader.uniformMatrix4fv("proj_mat", 1, FALSE, screen_to_light.m);
-	shader.uniform1f("proj_near", near_clip);
-	shader.uniform3fv("proj_p", 1, p1.v);
-	shader.uniform3fv("proj_n", 1, n.v);
-	shader.uniform3fv("proj_origin", 1, screen_origin.v);
-	shader.uniform1f("proj_range", proj_range);
-	shader.uniform1f("proj_ambiance", params.mV[2]);
+	shader.uniformMatrix4fv(LLShaderMgr::PROJECTOR_MATRIX, 1, FALSE, screen_to_light.m);
+	shader.uniform1f(LLShaderMgr::PROJECTOR_NEAR, near_clip);
+	shader.uniform3fv(LLShaderMgr::PROJECTOR_P, 1, p1.v);
+	shader.uniform3fv(LLShaderMgr::PROJECTOR_N, 1, n.v);
+	shader.uniform3fv(LLShaderMgr::PROJECTOR_ORIGIN, 1, screen_origin.v);
+	shader.uniform1f(LLShaderMgr::PROJECTOR_RANGE, proj_range);
+	shader.uniform1f(LLShaderMgr::PROJECTOR_AMBIANCE, params.mV[2]);
 	S32 s_idx = -1;
 
 	for (U32 i = 0; i < 2; i++)
@@ -7776,15 +7829,15 @@ void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep)
 		}
 	}
 
-	shader.uniform1i("proj_shadow_idx", s_idx);
+	shader.uniform1i(LLShaderMgr::PROJECTOR_SHADOW_INDEX, s_idx);
 
 	if (s_idx >= 0)
 	{
-		shader.uniform1f("shadow_fade", 1.f-mSpotLightFade[s_idx]);
+		shader.uniform1f(LLShaderMgr::PROJECTOR_SHADOW_FADE, 1.f-mSpotLightFade[s_idx]);
 	}
 	else
 	{
-		shader.uniform1f("shadow_fade", 1.f);
+		shader.uniform1f(LLShaderMgr::PROJECTOR_SHADOW_FADE, 1.f);
 	}
 
 	{
@@ -7818,7 +7871,7 @@ void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep)
 		img = LLViewerFetchedTexture::sWhiteImagep;
 	}
 
-	S32 channel = shader.enableTexture(LLViewerShaderMgr::DEFERRED_PROJECTION);
+	S32 channel = shader.enableTexture(LLShaderMgr::DEFERRED_PROJECTION);
 
 	if (channel > -1)
 	{
@@ -7828,9 +7881,9 @@ void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep)
 
 			F32 lod_range = logf(img->getWidth())/logf(2.f);
 
-			shader.uniform1f("proj_focus", focus);
-			shader.uniform1f("proj_lod", lod_range);
-			shader.uniform1f("proj_ambient_lod", llclamp((proj_range-focus)/proj_range*lod_range, 0.f, 1.f));
+			shader.uniform1f(LLShaderMgr::PROJECTOR_FOCUS, focus);
+			shader.uniform1f(LLShaderMgr::PROJECTOR_LOD, lod_range);
+			shader.uniform1f(LLShaderMgr::PROJECTOR_AMBIENT_LOD, llclamp((proj_range-focus)/proj_range*lod_range, 0.f, 1.f));
 		}
 	}
 		
@@ -7839,33 +7892,17 @@ void LLPipeline::setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep)
 void LLPipeline::unbindDeferredShader(LLGLSLShader &shader)
 {
 	stop_glerror();
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_NORMAL, mDeferredScreen.getUsage());
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_DIFFUSE, mDeferredScreen.getUsage());
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_SPECULAR, mDeferredScreen.getUsage());
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_DEPTH, mDeferredScreen.getUsage());
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_LIGHT, mDeferredLight[0].getUsage());
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_LIGHT, LLTexUnit::TT_RECT_TEXTURE);
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_EDGE, mEdgeMap.getUsage());
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_SUN_LIGHT, mDeferredLight[1].getUsage());
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_LOCAL_LIGHT, mDeferredLight[2].getUsage());
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_LUMINANCE);
-	shader.disableTexture(LLViewerShaderMgr::DIFFUSE_MAP);
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_MIP);
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_BLOOM);
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_NORMAL);
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_DIFFUSE);
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_SPECULAR);
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_DEPTH);
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_MIN_POS);
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_MAX_POS);
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_NORMAL);
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_DIFFUSE);
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_MIN_POS);
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_GI_LAST_MAX_POS);
+	shader.disableTexture(LLShaderMgr::DEFERRED_NORMAL, mDeferredScreen.getUsage());
+	shader.disableTexture(LLShaderMgr::DEFERRED_DIFFUSE, mDeferredScreen.getUsage());
+	shader.disableTexture(LLShaderMgr::DEFERRED_SPECULAR, mDeferredScreen.getUsage());
+	shader.disableTexture(LLShaderMgr::DEFERRED_DEPTH, mDeferredScreen.getUsage());
+	shader.disableTexture(LLShaderMgr::DEFERRED_LIGHT, mDeferredLight.getUsage());
+	shader.disableTexture(LLShaderMgr::DIFFUSE_MAP);
+	shader.disableTexture(LLShaderMgr::DEFERRED_BLOOM);
 
 	for (U32 i = 0; i < 4; i++)
 	{
-		if (shader.disableTexture(LLViewerShaderMgr::DEFERRED_SHADOW0+i, LLTexUnit::TT_RECT_TEXTURE) > -1)
+		if (shader.disableTexture(LLShaderMgr::DEFERRED_SHADOW0+i, LLTexUnit::TT_RECT_TEXTURE) > -1)
 		{
 			glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_COMPARE_MODE_ARB, GL_NONE);
 		}
@@ -7873,16 +7910,16 @@ void LLPipeline::unbindDeferredShader(LLGLSLShader &shader)
 
 	for (U32 i = 4; i < 6; i++)
 	{
-		if (shader.disableTexture(LLViewerShaderMgr::DEFERRED_SHADOW0+i) > -1)
+		if (shader.disableTexture(LLShaderMgr::DEFERRED_SHADOW0+i) > -1)
 		{
 			glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_NONE);
 		}
 	}
 
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_NOISE);
-	shader.disableTexture(LLViewerShaderMgr::DEFERRED_LIGHTFUNC);
+	shader.disableTexture(LLShaderMgr::DEFERRED_NOISE);
+	shader.disableTexture(LLShaderMgr::DEFERRED_LIGHTFUNC);
 
-	S32 channel = shader.disableTexture(LLViewerShaderMgr::ENVIRONMENT_MAP, LLTexUnit::TT_CUBE_MAP);
+	S32 channel = shader.disableTexture(LLShaderMgr::ENVIRONMENT_MAP, LLTexUnit::TT_CUBE_MAP);
 	if (channel > -1)
 	{
 		LLCubeMap* cube_map = gSky.mVOSkyp ? gSky.mVOSkyp->getCubeMap() : NULL;
@@ -7908,11 +7945,11 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 	if (LLPipeline::sWaterReflections && assertInitialized() && LLDrawPoolWater::sNeedsReflectionUpdate)
 	{
 		BOOL skip_avatar_update = FALSE;
-		if (!isAgentAvatarValid() || gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK)
+		if (!isAgentAvatarValid() || gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK || !LLVOAvatar::sVisibleInFirstPerson)
 		{
 			skip_avatar_update = TRUE;
 		}
-
+		
 		if (!skip_avatar_update)
 		{
 			gAgentAvatarp->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON);
@@ -7977,7 +8014,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 
 			stop_glerror();
 
-			glPushMatrix();
+			gGL.pushMatrix();
 
 			mat.set_scale(glh::vec3f(1,1,-1));
 			mat.set_translate(glh::vec3f(0,0,height*2.f));
@@ -7987,7 +8024,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 			mat = current * mat;
 
 			glh_set_current_modelview(mat);
-			glLoadMatrixf(mat.m);
+			gGL.loadMatrix(mat.m);
 
 			LLViewerCamera::updateFrustumPlanes(camera, FALSE, TRUE);
 
@@ -8030,7 +8067,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 					LLPipeline::RENDER_TYPE_CLOUDS,
 					LLPipeline::END_RENDER_TYPES);	
 
-				S32 detail = gSavedSettings.getS32("RenderReflectionDetail");
+				S32 detail = RenderReflectionDetail;
 				if (detail > 0)
 				{ //mask out selected geometry based on reflection detail
 					if (detail < 4)
@@ -8054,7 +8091,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 
 				if (LLDrawPoolWater::sNeedsDistortionUpdate)
 				{
-					if (gSavedSettings.getS32("RenderReflectionDetail") > 0)
+					if (RenderReflectionDetail > 0)
 					{
 						gPipeline.grabReferences(ref_result);
 						LLGLUserClipPlane clip_plane(plane, mat, projection);
@@ -8065,7 +8102,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
 				gPipeline.popRenderTypeMask();
 			}	
 			glCullFace(GL_BACK);
-			glPopMatrix();
+			gGL.popMatrix();
 			mWaterRef.flush();
 			glh_set_current_modelview(current);
 			LLPipeline::sUseOcclusion = occlusion;
@@ -8234,7 +8271,14 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
 	}
 	LLPipeline::sShadowRender = TRUE;
 	
-	U32 types[] = { LLRenderPass::PASS_SIMPLE, LLRenderPass::PASS_FULLBRIGHT, LLRenderPass::PASS_SHINY, LLRenderPass::PASS_BUMP, LLRenderPass::PASS_FULLBRIGHT_SHINY };
+	U32 types[] = { 
+		LLRenderPass::PASS_SIMPLE, 
+		LLRenderPass::PASS_FULLBRIGHT, 
+		LLRenderPass::PASS_SHINY, 
+		LLRenderPass::PASS_BUMP, 
+		LLRenderPass::PASS_FULLBRIGHT_SHINY 
+	};
+
 	LLGLEnable cull(GL_CULL_FACE);
 
 	if (use_shader)
@@ -8246,12 +8290,12 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
 	stateSort(shadow_cam, result);
 	
 	//generate shadow map
-	glMatrixMode(GL_PROJECTION);
-	glPushMatrix();
-	glLoadMatrixf(proj.m);
-	glMatrixMode(GL_MODELVIEW);
-	glPushMatrix();
-	glLoadMatrixd(gGLModelView);
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.pushMatrix();
+	gGL.loadMatrix(proj.m);
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.pushMatrix();
+	gGL.loadMatrix(gGLModelView);
 
 	stop_glerror();
 	gGLLastMatrix = NULL;
@@ -8262,12 +8306,8 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
 	}
 
 	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
-			
-	glColor4f(1,1,1,1);
 	
 	stop_glerror();
-
-	gGL.setColorMask(false, false);
 	
 	//glCullFace(GL_FRONT);
 
@@ -8278,6 +8318,10 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
 		{ //occlusion program is general purpose depth-only no-textures
 			gOcclusionProgram.bind();
 		}
+
+		gGL.diffuseColor4f(1,1,1,1);
+		gGL.setColorMask(false, false);
+	
 		LLFastTimer ftm(FTM_SHADOW_SIMPLE);
 		gGL.getTexUnit(0)->disable();
 		for (U32 i = 0; i < sizeof(types)/sizeof(U32); ++i)
@@ -8305,16 +8349,26 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
 	{
 		LLFastTimer ftm(FTM_SHADOW_ALPHA);
 		gDeferredShadowAlphaMaskProgram.bind();
-		gDeferredShadowAlphaMaskProgram.setAlphaRange(0.6f, 1.f);
-		renderObjects(LLRenderPass::PASS_ALPHA_SHADOW, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_COLOR, TRUE);
-		glColor4f(1,1,1,1);
+		gDeferredShadowAlphaMaskProgram.setMinimumAlpha(0.598f);
+		
+		U32 mask =	LLVertexBuffer::MAP_VERTEX | 
+					LLVertexBuffer::MAP_TEXCOORD0 | 
+					LLVertexBuffer::MAP_COLOR | 
+					LLVertexBuffer::MAP_TEXTURE_INDEX;
+
+		renderObjects(LLRenderPass::PASS_ALPHA_MASK, mask, TRUE, TRUE);
+		renderObjects(LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK, mask, TRUE, TRUE);
+		renderObjects(LLRenderPass::PASS_ALPHA, mask, TRUE, TRUE);
+		gDeferredTreeShadowProgram.bind();
+		gDeferredTreeShadowProgram.setMinimumAlpha(0.598f);
 		renderObjects(LLRenderPass::PASS_GRASS, LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0, TRUE);
 	}
 
 	//glCullFace(GL_BACK);
 
+	gDeferredShadowProgram.bind();
 	gGLLastMatrix = NULL;
-	glLoadMatrixd(gGLModelView);
+	gGL.loadMatrix(gGLModelView);
 	doOcclusion(shadow_cam);
 
 	if (use_shader)
@@ -8324,10 +8378,10 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera
 	
 	gGL.setColorMask(true, true);
 			
-	glMatrixMode(GL_PROJECTION);
-	glPopMatrix();
-	glMatrixMode(GL_MODELVIEW);
-	glPopMatrix();
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.popMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.popMatrix();
 	gGLLastMatrix = NULL;
 
 	LLPipeline::sUseOcclusion = occlude;
@@ -8445,246 +8499,68 @@ BOOL LLPipeline::getVisiblePointCloud(LLCamera& camera, LLVector3& min, LLVector
 		for (U32 j = 0; j < 6; ++j)
 		{
 			const LLVector3& v1 = pp[fs[i*2+0]+8];
-			const LLVector3& v2 = pp[fs[i*2+1]+8];
-			const LLPlane& cp = bp[j];
-			LLVector3 n;
-			cp.getVector3(n);
-
-			LLVector3 line = v1-v2;
-
-			F32 d1 = line*n;
-			F32 d2 = -cp.dist(v2);
-
-			F32 t = d2/d1;
-
-			if (t > 0.f && t < 1.f)
-			{
-				LLVector3 intersect = v2+line*t;
-				pp.push_back(intersect);
-			}	
-		}
-	}
-
-	LLVector3 ext[] = { min-LLVector3(0.05f,0.05f,0.05f),
-		max+LLVector3(0.05f,0.05f,0.05f) };
-
-	for (U32 i = 0; i < pp.size(); ++i)
-	{
-		bool found = true;
-
-		const F32* p = pp[i].mV;
-			
-		for (U32 j = 0; j < 3; ++j)
-		{
-			if (p[j] < ext[0].mV[j] ||
-				p[j] > ext[1].mV[j])
-			{
-				found = false;
-				break;
-			}
-		}
-				
-		for (U32 j = 0; j < 6; ++j)
-		{
-			const LLPlane& cp = camera.getAgentPlane(j);
-			F32 dist = cp.dist(pp[i]);
-			if (dist > 0.05f) //point is above some plane, not contained
-					{
-				found = false;
-				break;
-						}
-					}
-
-					if (found)
-					{
-			fp.push_back(pp[i]);
-		}
-	}
-	
-	if (fp.empty())
-	{
-		return FALSE;
-	}
-	
-	return TRUE;
-}
-
-void LLPipeline::generateGI(LLCamera& camera, LLVector3& lightDir, std::vector<LLVector3>& vpc)
-{
-	if (LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED) < 3)
-	{
-		return;
-	}
-
-	LLVector3 up;
-
-	//LLGLEnable depth_clamp(GL_DEPTH_CLAMP_NV);
-
-	if (lightDir.mV[2] > 0.5f)
-	{
-		up = LLVector3(1,0,0);
-	}
-	else
-	{
-		up = LLVector3(0, 0, 1);
-	}
-
-	
-	F32 gi_range = gSavedSettings.getF32("RenderGIRange");
-
-	U32 res = mGIMap.getWidth();
-
-	F32 atten = llmax(gSavedSettings.getF32("RenderGIAttenuation"), 0.001f);
-
-	//set radius to range at which distance attenuation of incoming photons is near 0
-
-	F32 lrad = sqrtf(1.f/(atten*0.01f));
-
-	F32 lrange = lrad+gi_range*0.5f;
-
-	LLVector3 pad(lrange,lrange,lrange);
-
-	glh::matrix4f view = look(LLVector3(128.f,128.f,128.f), lightDir, up);
-
-	LLVector3 cp = camera.getOrigin()+camera.getAtAxis()*(gi_range*0.5f);
-
-	glh::vec3f scp(cp.mV);
-	view.mult_matrix_vec(scp);
-	cp.setVec(scp.v);
-
-	F32 pix_width = lrange/(res*0.5f);
-
-	//move cp to the nearest pix_width
-	for (U32 i = 0; i < 3; i++)
-	{
-		cp.mV[i] = llround(cp.mV[i], pix_width);
-	}
-	
-	LLVector3 min = cp-pad;
-	LLVector3 max = cp+pad;
-	
-	//set mGIRange to range in tc space[0,1] that covers texture block of intersecting lights around a point
-	mGIRange.mV[0] = (max.mV[0]-min.mV[0])/res;
-	mGIRange.mV[1] = (max.mV[1]-min.mV[1])/res;
-	mGILightRadius = lrad/lrange*0.5f;
-
-	glh::matrix4f proj = gl_ortho(min.mV[0], max.mV[0],
-								min.mV[1], max.mV[1],
-								-max.mV[2], -min.mV[2]);
-
-	LLCamera sun_cam = camera;
-
-	glh::matrix4f eye_view = glh_get_current_modelview();
-	
-	//get eye space to camera space matrix
-	mGIMatrix = view*eye_view.inverse();
-	mGINormalMatrix = mGIMatrix.inverse().transpose();
-	mGIInvProj = proj.inverse();
-	mGIMatrixProj = proj*mGIMatrix;
-
-	//translate and scale to [0,1]
-	glh::matrix4f trans(.5f, 0.f, 0.f, .5f,
-						0.f, 0.5f, 0.f, 0.5f,
-						0.f, 0.f, 0.5f, 0.5f,
-						0.f, 0.f, 0.f, 1.f);
-
-	mGIMatrixProj = trans*mGIMatrixProj;
-
-	glh_set_current_modelview(view);
-	glh_set_current_projection(proj);
-
-	LLViewerCamera::updateFrustumPlanes(sun_cam, TRUE, FALSE, TRUE);
-
-	sun_cam.ignoreAgentFrustumPlane(LLCamera::AGENT_PLANE_NEAR);
-	static LLCullResult result;
-
-	pushRenderTypeMask();
-
-	andRenderTypeMask(LLPipeline::RENDER_TYPE_SIMPLE,
-								 LLPipeline::RENDER_TYPE_FULLBRIGHT,
-								 LLPipeline::RENDER_TYPE_BUMP,
-								 LLPipeline::RENDER_TYPE_VOLUME,
-								 LLPipeline::RENDER_TYPE_TREE, 
-								 LLPipeline::RENDER_TYPE_TERRAIN,
-								 LLPipeline::RENDER_TYPE_WATER,
-								 LLPipeline::RENDER_TYPE_VOIDWATER,
-								 LLPipeline::RENDER_TYPE_PASS_ALPHA_SHADOW,
-								 LLPipeline::RENDER_TYPE_AVATAR,
-								 LLPipeline::RENDER_TYPE_PASS_SIMPLE,
-								 LLPipeline::RENDER_TYPE_PASS_BUMP,
-								 LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT,
-								 LLPipeline::RENDER_TYPE_PASS_SHINY,
-								 END_RENDER_TYPES);
-
-
-	
-	S32 occlude = LLPipeline::sUseOcclusion;
-	//LLPipeline::sUseOcclusion = 0;
-	LLPipeline::sShadowRender = TRUE;
-	
-	//only render large objects into GI map
-	sMinRenderSize = gSavedSettings.getF32("RenderGIMinRenderSize");
-	
-	LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_GI_SOURCE;
-	mGIMap.bindTarget();
-	
-	F64 last_modelview[16];
-	F64 last_projection[16];
-	for (U32 i = 0; i < 16; i++)
-	{
-		last_modelview[i] = gGLLastModelView[i];
-		last_projection[i] = gGLLastProjection[i];
-		gGLLastModelView[i] = mGIModelview.m[i];
-		gGLLastProjection[i] = mGIProjection.m[i];
-	}
-
-	sun_cam.setOrigin(0.f, 0.f, 0.f);
-	updateCull(sun_cam, result);
-	stateSort(sun_cam, result);
-	
-	for (U32 i = 0; i < 16; i++)
-	{
-		gGLLastModelView[i] = last_modelview[i];
-		gGLLastProjection[i] = last_projection[i];
-	}
-
-	mGIProjection = proj;
-	mGIModelview = view;
-
-	LLGLEnable cull(GL_CULL_FACE);
+			const LLVector3& v2 = pp[fs[i*2+1]+8];
+			const LLPlane& cp = bp[j];
+			LLVector3 n;
+			cp.getVector3(n);
 
-	//generate GI map
-	glMatrixMode(GL_PROJECTION);
-	glPushMatrix();
-	glLoadMatrixf(proj.m);
-	glMatrixMode(GL_MODELVIEW);
-	glPushMatrix();
-	glLoadMatrixf(view.m);
+			LLVector3 line = v1-v2;
 
-	stop_glerror();
-	gGLLastMatrix = NULL;
+			F32 d1 = line*n;
+			F32 d2 = -cp.dist(v2);
 
-	mGIMap.clear();
+			F32 t = d2/d1;
 
-	{
-		//LLGLEnable enable(GL_DEPTH_CLAMP_NV);
-		renderGeomDeferred(camera);
+			if (t > 0.f && t < 1.f)
+			{
+				LLVector3 intersect = v2+line*t;
+				pp.push_back(intersect);
+			}	
+		}
 	}
 
-	mGIMap.flush();
-	
-	glMatrixMode(GL_PROJECTION);
-	glPopMatrix();
-	glMatrixMode(GL_MODELVIEW);
-	glPopMatrix();
-	gGLLastMatrix = NULL;
+	LLVector3 ext[] = { min-LLVector3(0.05f,0.05f,0.05f),
+		max+LLVector3(0.05f,0.05f,0.05f) };
 
-	LLPipeline::sUseOcclusion = occlude;
-	LLPipeline::sShadowRender = FALSE;
-	sMinRenderSize = 0.f;
+	for (U32 i = 0; i < pp.size(); ++i)
+	{
+		bool found = true;
 
-	popRenderTypeMask();
+		const F32* p = pp[i].mV;
+			
+		for (U32 j = 0; j < 3; ++j)
+		{
+			if (p[j] < ext[0].mV[j] ||
+				p[j] > ext[1].mV[j])
+			{
+				found = false;
+				break;
+			}
+		}
+				
+		for (U32 j = 0; j < 6; ++j)
+		{
+			const LLPlane& cp = camera.getAgentPlane(j);
+			F32 dist = cp.dist(pp[i]);
+			if (dist > 0.05f) //point is above some plane, not contained
+					{
+				found = false;
+				break;
+						}
+					}
 
+					if (found)
+					{
+			fp.push_back(pp[i]);
+		}
+	}
+	
+	if (fp.empty())
+	{
+		return FALSE;
+	}
+	
+	return TRUE;
 }
 
 void LLPipeline::renderHighlight(const LLViewerObject* obj, F32 fade)
@@ -8721,7 +8597,7 @@ void LLPipeline::generateHighlight(LLCamera& camera)
 	
 	if (!mHighlightSet.empty())
 	{
-		F32 transition = gFrameIntervalSeconds/gSavedSettings.getF32("RenderHighlightFadeTime");
+		F32 transition = gFrameIntervalSeconds/RenderHighlightFadeTime;
 
 		LLGLDisable test(GL_ALPHA_TEST);
 		LLGLDepthTest depth(GL_FALSE);
@@ -8767,11 +8643,23 @@ void LLPipeline::generateHighlight(LLCamera& camera)
 
 void LLPipeline::generateSunShadow(LLCamera& camera)
 {
-	if (!sRenderDeferred || gSavedSettings.getS32("RenderShadowDetail") <= 0)
+	if (!sRenderDeferred || RenderShadowDetail <= 0)
 	{
 		return;
 	}
 
+	BOOL skip_avatar_update = FALSE;
+	if (!isAgentAvatarValid() || gAgentCamera.getCameraAnimating() || gAgentCamera.getCameraMode() != CAMERA_MODE_MOUSELOOK || !LLVOAvatar::sVisibleInFirstPerson)
+	{
+
+		skip_avatar_update = TRUE;
+	}
+
+	if (!skip_avatar_update)
+	{
+		gAgentAvatarp->updateAttachmentVisibility(CAMERA_MODE_THIRD_PERSON);
+	}
+
 	F64 last_modelview[16];
 	F64 last_projection[16];
 	for (U32 i = 0; i < 16; i++)
@@ -8792,7 +8680,9 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
 					LLPipeline::RENDER_TYPE_TERRAIN,
 					LLPipeline::RENDER_TYPE_WATER,
 					LLPipeline::RENDER_TYPE_VOIDWATER,
-					LLPipeline::RENDER_TYPE_PASS_ALPHA_SHADOW,
+					LLPipeline::RENDER_TYPE_PASS_ALPHA,
+					LLPipeline::RENDER_TYPE_PASS_ALPHA_MASK,
+					LLPipeline::RENDER_TYPE_PASS_FULLBRIGHT_ALPHA_MASK,
 					LLPipeline::RENDER_TYPE_PASS_GRASS,
 					LLPipeline::RENDER_TYPE_PASS_SIMPLE,
 					LLPipeline::RENDER_TYPE_PASS_BUMP,
@@ -8814,25 +8704,25 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
 	glh::matrix4f proj[6];
 	
 	//clip contains parallel split distances for 3 splits
-	LLVector3 clip = gSavedSettings.getVector3("RenderShadowClipPlanes");
+	LLVector3 clip = RenderShadowClipPlanes;
 
 	//F32 slope_threshold = gSavedSettings.getF32("RenderShadowSlopeThreshold");
 
 	//far clip on last split is minimum of camera view distance and 128
 	mSunClipPlanes = LLVector4(clip, clip.mV[2] * clip.mV[2]/clip.mV[1]);
 
-	clip = gSavedSettings.getVector3("RenderShadowOrthoClipPlanes");
+	clip = RenderShadowOrthoClipPlanes;
 	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 = gSavedSettings.getVector3("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
 	LLPlane shadow_near_clip;
 	{
 		LLVector3 p = gAgent.getPositionAgent();
-		p += mSunDir * gSavedSettings.getF32("RenderFarClip")*2.f;
+		p += mSunDir * RenderFarClip*2.f;
 		shadow_near_clip.setVec(p, mSunDir);
 	}
 
@@ -8885,11 +8775,15 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
 				mShadowFrustPoints[3].clear();
 			}
 			popRenderTypeMask();
+
+			if (!skip_avatar_update)
+			{
+				gAgentAvatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode());
+			}
+
 			return;
 		}
 
-		generateGI(camera, lightDir, fp);
-
 		//get good split distances for frustum
 		for (U32 i = 0; i < fp.size(); ++i)
 		{
@@ -8915,7 +8809,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
 
 		F32 range = far_clip-near_clip;
 
-		LLVector3 split_exp = gSavedSettings.getVector3("RenderShadowSplitExponent");
+		LLVector3 split_exp = RenderShadowSplitExponent;
 
 		F32 da = 1.f-llmax( fabsf(lightDir*up), fabsf(lightDir*camera.getLeftAxis()) );
 		
@@ -8936,384 +8830,399 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
 	// convenience array of 4 near clip plane distances
 	F32 dist[] = { near_clip, mSunClipPlanes.mV[0], mSunClipPlanes.mV[1], mSunClipPlanes.mV[2], mSunClipPlanes.mV[3] };
 	
-	for (S32 j = 0; j < 4; j++)
-	{
-		if (!hasRenderDebugMask(RENDER_DEBUG_SHADOW_FRUSTA))
+
+	if (mSunDiffuse == LLColor4::black)
+	{ //sun diffuse is totally black, shadows don't matter
+		LLGLDepthTest depth(GL_TRUE);
+
+		for (S32 j = 0; j < 4; j++)
 		{
-			mShadowFrustPoints[j].clear();
+			mShadow[j].bindTarget();
+			mShadow[j].clear();
+			mShadow[j].flush();
 		}
+	}
+	else
+	{
+		for (S32 j = 0; j < 4; j++)
+		{
+			if (!hasRenderDebugMask(RENDER_DEBUG_SHADOW_FRUSTA))
+			{
+				mShadowFrustPoints[j].clear();
+			}
 
-		LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_SHADOW0+j;
+			LLViewerCamera::sCurCameraID = LLViewerCamera::CAMERA_SHADOW0+j;
 
-		//restore render matrices
-		glh_set_current_modelview(saved_view);
-		glh_set_current_projection(saved_proj);
+			//restore render matrices
+			glh_set_current_modelview(saved_view);
+			glh_set_current_projection(saved_proj);
 
-		LLVector3 eye = camera.getOrigin();
+			LLVector3 eye = camera.getOrigin();
 
-		//camera used for shadow cull/render
-		LLCamera shadow_cam;
+			//camera used for shadow cull/render
+			LLCamera shadow_cam;
 		
-		//create world space camera frustum for this split
-		shadow_cam = camera;
-		shadow_cam.setFar(16.f);
+			//create world space camera frustum for this split
+			shadow_cam = camera;
+			shadow_cam.setFar(16.f);
 	
-		LLViewerCamera::updateFrustumPlanes(shadow_cam, FALSE, FALSE, TRUE);
+			LLViewerCamera::updateFrustumPlanes(shadow_cam, FALSE, FALSE, TRUE);
 
-		LLVector3* frust = shadow_cam.mAgentFrustum;
+			LLVector3* frust = shadow_cam.mAgentFrustum;
 
-		LLVector3 pn = shadow_cam.getAtAxis();
+			LLVector3 pn = shadow_cam.getAtAxis();
 		
-		LLVector3 min, max;
+			LLVector3 min, max;
 
-		//construct 8 corners of split frustum section
-		for (U32 i = 0; i < 4; i++)
-		{
-			LLVector3 delta = frust[i+4]-eye;
-			delta += (frust[i+4]-frust[(i+2)%4+4])*0.05f;
-			delta.normVec();
-			F32 dp = delta*pn;
-			frust[i] = eye + (delta*dist[j]*0.95f)/dp;
-			frust[i+4] = eye + (delta*dist[j+1]*1.05f)/dp;
-		}
+			//construct 8 corners of split frustum section
+			for (U32 i = 0; i < 4; i++)
+			{
+				LLVector3 delta = frust[i+4]-eye;
+				delta += (frust[i+4]-frust[(i+2)%4+4])*0.05f;
+				delta.normVec();
+				F32 dp = delta*pn;
+				frust[i] = eye + (delta*dist[j]*0.95f)/dp;
+				frust[i+4] = eye + (delta*dist[j+1]*1.05f)/dp;
+			}
 						
-		shadow_cam.calcAgentFrustumPlanes(frust);
-		shadow_cam.mFrustumCornerDist = 0.f;
+			shadow_cam.calcAgentFrustumPlanes(frust);
+			shadow_cam.mFrustumCornerDist = 0.f;
 		
-		if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
-		{
-			mShadowCamera[j] = shadow_cam;
-		}
-
-		std::vector<LLVector3> fp;
-
-		if (!gPipeline.getVisiblePointCloud(shadow_cam, min, max, fp, lightDir))
-		{
-			//no possible shadow receivers
 			if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
 			{
-				mShadowExtents[j][0] = LLVector3();
-				mShadowExtents[j][1] = LLVector3();
-				mShadowCamera[j+4] = shadow_cam;
-			}
-
-			mShadow[j].bindTarget();
-			{
-				LLGLDepthTest depth(GL_TRUE);
-				mShadow[j].clear();
+				mShadowCamera[j] = shadow_cam;
 			}
-			mShadow[j].flush();
 
-			mShadowError.mV[j] = 0.f;
-			mShadowFOV.mV[j] = 0.f;
+			std::vector<LLVector3> fp;
 
-			continue;
-		}
-
-		if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
-		{
-			mShadowExtents[j][0] = min;
-			mShadowExtents[j][1] = max;
-			mShadowFrustPoints[j] = fp;
-		}
-				
+			if (!gPipeline.getVisiblePointCloud(shadow_cam, min, max, fp, lightDir))
+			{
+				//no possible shadow receivers
+				if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
+				{
+					mShadowExtents[j][0] = LLVector3();
+					mShadowExtents[j][1] = LLVector3();
+					mShadowCamera[j+4] = shadow_cam;
+				}
 
-		//find a good origin for shadow projection
-		LLVector3 origin;
+				mShadow[j].bindTarget();
+				{
+					LLGLDepthTest depth(GL_TRUE);
+					mShadow[j].clear();
+				}
+				mShadow[j].flush();
 
-		//get a temporary view projection
-		view[j] = look(camera.getOrigin(), lightDir, -up);
+				mShadowError.mV[j] = 0.f;
+				mShadowFOV.mV[j] = 0.f;
 
-		std::vector<LLVector3> wpf;
+				continue;
+			}
 
-		for (U32 i = 0; i < fp.size(); i++)
-		{
-			glh::vec3f p = glh::vec3f(fp[i].mV);
-			view[j].mult_matrix_vec(p);
-			wpf.push_back(LLVector3(p.v));
-		}
+			if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
+			{
+				mShadowExtents[j][0] = min;
+				mShadowExtents[j][1] = max;
+				mShadowFrustPoints[j] = fp;
+			}
+				
 
-		min = wpf[0];
-		max = wpf[0];
+			//find a good origin for shadow projection
+			LLVector3 origin;
 
-		for (U32 i = 0; i < fp.size(); ++i)
-		{ //get AABB in camera space
-			update_min_max(min, max, wpf[i]);
-		}
-
-		// Construct a perspective transform with perspective along y-axis that contains
-		// points in wpf
-		//Known:
-		// - far clip plane
-		// - near clip plane
-		// - points in frustum
-		//Find:
-		// - origin
-
-		//get some "interesting" points of reference
-		LLVector3 center = (min+max)*0.5f;
-		LLVector3 size = (max-min)*0.5f;
-		LLVector3 near_center = center;
-		near_center.mV[1] += size.mV[1]*2.f;
-		
-		
-		//put all points in wpf in quadrant 0, reletive to center of min/max
-		//get the best fit line using least squares
-		F32 bfm = 0.f;
-		F32 bfb = 0.f;
+			//get a temporary view projection
+			view[j] = look(camera.getOrigin(), lightDir, -up);
 
-		for (U32 i = 0; i < wpf.size(); ++i)
-		{
-			wpf[i] -= center;
-			wpf[i].mV[0] = fabsf(wpf[i].mV[0]);
-			wpf[i].mV[2] = fabsf(wpf[i].mV[2]);
-		}
+			std::vector<LLVector3> wpf;
 
-		if (!wpf.empty())
-		{ 
-			F32 sx = 0.f;
-			F32 sx2 = 0.f;
-			F32 sy = 0.f;
-			F32 sxy = 0.f;
-			
-			for (U32 i = 0; i < wpf.size(); ++i)
-			{		
-				sx += wpf[i].mV[0];
-				sx2 += wpf[i].mV[0]*wpf[i].mV[0];
-				sy += wpf[i].mV[1];
-				sxy += wpf[i].mV[0]*wpf[i].mV[1]; 
+			for (U32 i = 0; i < fp.size(); i++)
+			{
+				glh::vec3f p = glh::vec3f(fp[i].mV);
+				view[j].mult_matrix_vec(p);
+				wpf.push_back(LLVector3(p.v));
 			}
 
-			bfm = (sy*sx-wpf.size()*sxy)/(sx*sx-wpf.size()*sx2);
-			bfb = (sx*sxy-sy*sx2)/(sx*sx-bfm*sx2);
-		}
-		
-		{
-			// best fit line is y=bfm*x+bfb
-		
-			//find point that is furthest to the right of line
-			F32 off_x = -1.f;
-			LLVector3 lp;
+			min = wpf[0];
+			max = wpf[0];
 
-			for (U32 i = 0; i < wpf.size(); ++i)
-			{
-				//y = bfm*x+bfb
-				//x = (y-bfb)/bfm
-				F32 lx = (wpf[i].mV[1]-bfb)/bfm;
-
-				lx = wpf[i].mV[0]-lx;
-				
-				if (off_x < lx)
-				{
-					off_x = lx;
-					lp = wpf[i];
-				}
+			for (U32 i = 0; i < fp.size(); ++i)
+			{ //get AABB in camera space
+				update_min_max(min, max, wpf[i]);
 			}
 
-			//get line with slope bfm through lp
-			// bfb = y-bfm*x
-			bfb = lp.mV[1]-bfm*lp.mV[0];
+			// Construct a perspective transform with perspective along y-axis that contains
+			// points in wpf
+			//Known:
+			// - far clip plane
+			// - near clip plane
+			// - points in frustum
+			//Find:
+			// - origin
 
-			//calculate error
-			mShadowError.mV[j] = 0.f;
+			//get some "interesting" points of reference
+			LLVector3 center = (min+max)*0.5f;
+			LLVector3 size = (max-min)*0.5f;
+			LLVector3 near_center = center;
+			near_center.mV[1] += size.mV[1]*2.f;
+		
+		
+			//put all points in wpf in quadrant 0, reletive to center of min/max
+			//get the best fit line using least squares
+			F32 bfm = 0.f;
+			F32 bfb = 0.f;
 
 			for (U32 i = 0; i < wpf.size(); ++i)
 			{
-				F32 lx = (wpf[i].mV[1]-bfb)/bfm;
-				mShadowError.mV[j] += fabsf(wpf[i].mV[0]-lx);
+				wpf[i] -= center;
+				wpf[i].mV[0] = fabsf(wpf[i].mV[0]);
+				wpf[i].mV[2] = fabsf(wpf[i].mV[2]);
 			}
 
-			mShadowError.mV[j] /= wpf.size();
-			mShadowError.mV[j] /= size.mV[0];
+			if (!wpf.empty())
+			{ 
+				F32 sx = 0.f;
+				F32 sx2 = 0.f;
+				F32 sy = 0.f;
+				F32 sxy = 0.f;
+			
+				for (U32 i = 0; i < wpf.size(); ++i)
+				{		
+					sx += wpf[i].mV[0];
+					sx2 += wpf[i].mV[0]*wpf[i].mV[0];
+					sy += wpf[i].mV[1];
+					sxy += wpf[i].mV[0]*wpf[i].mV[1]; 
+				}
 
-			if (mShadowError.mV[j] > gSavedSettings.getF32("RenderShadowErrorCutoff"))
-			{ //just use ortho projection
-				mShadowFOV.mV[j] = -1.f;
-				origin.clearVec();
-				proj[j] = gl_ortho(min.mV[0], max.mV[0],
-									min.mV[1], max.mV[1],
-									-max.mV[2], -min.mV[2]);
+				bfm = (sy*sx-wpf.size()*sxy)/(sx*sx-wpf.size()*sx2);
+				bfb = (sx*sxy-sy*sx2)/(sx*sx-bfm*sx2);
 			}
-			else
+		
 			{
-				//origin is where line x = 0;
-				origin.setVec(0,bfb,0);
-
-				F32 fovz = 1.f;
-				F32 fovx = 1.f;
-				
-				LLVector3 zp;
-				LLVector3 xp;
+				// best fit line is y=bfm*x+bfb
+		
+				//find point that is furthest to the right of line
+				F32 off_x = -1.f;
+				LLVector3 lp;
 
 				for (U32 i = 0; i < wpf.size(); ++i)
 				{
-					LLVector3 atz = wpf[i]-origin;
-					atz.mV[0] = 0.f;
-					atz.normVec();
-					if (fovz > -atz.mV[1])
-					{
-						zp = wpf[i];
-						fovz = -atz.mV[1];
-					}
-					
-					LLVector3 atx = wpf[i]-origin;
-					atx.mV[2] = 0.f;
-					atx.normVec();
-					if (fovx > -atx.mV[1])
+					//y = bfm*x+bfb
+					//x = (y-bfb)/bfm
+					F32 lx = (wpf[i].mV[1]-bfb)/bfm;
+
+					lx = wpf[i].mV[0]-lx;
+				
+					if (off_x < lx)
 					{
-						fovx = -atx.mV[1];
-						xp = wpf[i];
+						off_x = lx;
+						lp = wpf[i];
 					}
 				}
 
-				fovx = acos(fovx);
-				fovz = acos(fovz);
+				//get line with slope bfm through lp
+				// bfb = y-bfm*x
+				bfb = lp.mV[1]-bfm*lp.mV[0];
 
-				F32 cutoff = llmin(gSavedSettings.getF32("RenderShadowFOVCutoff"), 1.4f);
-				
-				mShadowFOV.mV[j] = fovx;
-				
-				if (fovx < cutoff && fovz > cutoff)
+				//calculate error
+				mShadowError.mV[j] = 0.f;
+
+				for (U32 i = 0; i < wpf.size(); ++i)
 				{
-					//x is a good fit, but z is too big, move away from zp enough so that fovz matches cutoff
-					F32 d = zp.mV[2]/tan(cutoff);
-					F32 ny = zp.mV[1] + fabsf(d);
+					F32 lx = (wpf[i].mV[1]-bfb)/bfm;
+					mShadowError.mV[j] += fabsf(wpf[i].mV[0]-lx);
+				}
 
-					origin.mV[1] = ny;
+				mShadowError.mV[j] /= wpf.size();
+				mShadowError.mV[j] /= size.mV[0];
+
+				if (mShadowError.mV[j] > RenderShadowErrorCutoff)
+				{ //just use ortho projection
+					mShadowFOV.mV[j] = -1.f;
+					origin.clearVec();
+					proj[j] = gl_ortho(min.mV[0], max.mV[0],
+										min.mV[1], max.mV[1],
+										-max.mV[2], -min.mV[2]);
+				}
+				else
+				{
+					//origin is where line x = 0;
+					origin.setVec(0,bfb,0);
 
-					fovz = 1.f;
-					fovx = 1.f;
+					F32 fovz = 1.f;
+					F32 fovx = 1.f;
+				
+					LLVector3 zp;
+					LLVector3 xp;
 
 					for (U32 i = 0; i < wpf.size(); ++i)
 					{
 						LLVector3 atz = wpf[i]-origin;
 						atz.mV[0] = 0.f;
 						atz.normVec();
-						fovz = llmin(fovz, -atz.mV[1]);
-
+						if (fovz > -atz.mV[1])
+						{
+							zp = wpf[i];
+							fovz = -atz.mV[1];
+						}
+					
 						LLVector3 atx = wpf[i]-origin;
 						atx.mV[2] = 0.f;
 						atx.normVec();
-						fovx = llmin(fovx, -atx.mV[1]);
+						if (fovx > -atx.mV[1])
+						{
+							fovx = -atx.mV[1];
+							xp = wpf[i];
+						}
 					}
 
 					fovx = acos(fovx);
 					fovz = acos(fovz);
 
-					mShadowFOV.mV[j] = cutoff;
-				}
+					F32 cutoff = llmin((F32) RenderShadowFOVCutoff, 1.4f);
+				
+					mShadowFOV.mV[j] = fovx;
+				
+					if (fovx < cutoff && fovz > cutoff)
+					{
+						//x is a good fit, but z is too big, move away from zp enough so that fovz matches cutoff
+						F32 d = zp.mV[2]/tan(cutoff);
+						F32 ny = zp.mV[1] + fabsf(d);
+
+						origin.mV[1] = ny;
+
+						fovz = 1.f;
+						fovx = 1.f;
+
+						for (U32 i = 0; i < wpf.size(); ++i)
+						{
+							LLVector3 atz = wpf[i]-origin;
+							atz.mV[0] = 0.f;
+							atz.normVec();
+							fovz = llmin(fovz, -atz.mV[1]);
+
+							LLVector3 atx = wpf[i]-origin;
+							atx.mV[2] = 0.f;
+							atx.normVec();
+							fovx = llmin(fovx, -atx.mV[1]);
+						}
+
+						fovx = acos(fovx);
+						fovz = acos(fovz);
+
+						mShadowFOV.mV[j] = cutoff;
+					}
 
 				
-				origin += center;
+					origin += center;
 			
-				F32 ynear = -(max.mV[1]-origin.mV[1]);
-				F32 yfar = -(min.mV[1]-origin.mV[1]);
+					F32 ynear = -(max.mV[1]-origin.mV[1]);
+					F32 yfar = -(min.mV[1]-origin.mV[1]);
 				
-				if (ynear < 0.1f) //keep a sensible near clip plane
-				{
-					F32 diff = 0.1f-ynear;
-					origin.mV[1] += diff;
-					ynear += diff;
-					yfar += diff;
-				}
+					if (ynear < 0.1f) //keep a sensible near clip plane
+					{
+						F32 diff = 0.1f-ynear;
+						origin.mV[1] += diff;
+						ynear += diff;
+						yfar += diff;
+					}
 								
-				if (fovx > cutoff)
-				{ //just use ortho projection
-					origin.clearVec();
-					mShadowError.mV[j] = -1.f;
-					proj[j] = gl_ortho(min.mV[0], max.mV[0],
-							min.mV[1], max.mV[1],
-							-max.mV[2], -min.mV[2]);
-				}
-				else
-				{
-					//get perspective projection
-					view[j] = view[j].inverse();
+					if (fovx > cutoff)
+					{ //just use ortho projection
+						origin.clearVec();
+						mShadowError.mV[j] = -1.f;
+						proj[j] = gl_ortho(min.mV[0], max.mV[0],
+								min.mV[1], max.mV[1],
+								-max.mV[2], -min.mV[2]);
+					}
+					else
+					{
+						//get perspective projection
+						view[j] = view[j].inverse();
 
-					glh::vec3f origin_agent(origin.mV);
+						glh::vec3f origin_agent(origin.mV);
 					
-					//translate view to origin
-					view[j].mult_matrix_vec(origin_agent);
+						//translate view to origin
+						view[j].mult_matrix_vec(origin_agent);
 
-					eye = LLVector3(origin_agent.v);
+						eye = LLVector3(origin_agent.v);
 
-					if (!hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
-					{
-						mShadowFrustOrigin[j] = eye;
-					}
+						if (!hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
+						{
+							mShadowFrustOrigin[j] = eye;
+						}
 				
-					view[j] = look(LLVector3(origin_agent.v), lightDir, -up);
+						view[j] = look(LLVector3(origin_agent.v), lightDir, -up);
 
-					F32 fx = 1.f/tanf(fovx);
-					F32 fz = 1.f/tanf(fovz);
+						F32 fx = 1.f/tanf(fovx);
+						F32 fz = 1.f/tanf(fovz);
 
-					proj[j] = glh::matrix4f(-fx, 0, 0, 0,
-											0, (yfar+ynear)/(ynear-yfar), 0, (2.f*yfar*ynear)/(ynear-yfar),
-											0, 0, -fz, 0,
-											0, -1.f, 0, 0);
+						proj[j] = glh::matrix4f(-fx, 0, 0, 0,
+												0, (yfar+ynear)/(ynear-yfar), 0, (2.f*yfar*ynear)/(ynear-yfar),
+												0, 0, -fz, 0,
+												0, -1.f, 0, 0);
+					}
 				}
 			}
-		}
 
-		//shadow_cam.setFar(128.f);
-		shadow_cam.setOriginAndLookAt(eye, up, center);
+			//shadow_cam.setFar(128.f);
+			shadow_cam.setOriginAndLookAt(eye, up, center);
 
-		shadow_cam.setOrigin(0,0,0);
+			shadow_cam.setOrigin(0,0,0);
 
-		glh_set_current_modelview(view[j]);
-		glh_set_current_projection(proj[j]);
+			glh_set_current_modelview(view[j]);
+			glh_set_current_projection(proj[j]);
 
-		LLViewerCamera::updateFrustumPlanes(shadow_cam, FALSE, FALSE, TRUE);
+			LLViewerCamera::updateFrustumPlanes(shadow_cam, FALSE, FALSE, TRUE);
 
-		//shadow_cam.ignoreAgentFrustumPlane(LLCamera::AGENT_PLANE_NEAR);
-		shadow_cam.getAgentPlane(LLCamera::AGENT_PLANE_NEAR).set(shadow_near_clip);
+			//shadow_cam.ignoreAgentFrustumPlane(LLCamera::AGENT_PLANE_NEAR);
+			shadow_cam.getAgentPlane(LLCamera::AGENT_PLANE_NEAR).set(shadow_near_clip);
 
-		//translate and scale to from [-1, 1] to [0, 1]
-		glh::matrix4f trans(0.5f, 0.f, 0.f, 0.5f,
-						0.f, 0.5f, 0.f, 0.5f,
-						0.f, 0.f, 0.5f, 0.5f,
-						0.f, 0.f, 0.f, 1.f);
+			//translate and scale to from [-1, 1] to [0, 1]
+			glh::matrix4f trans(0.5f, 0.f, 0.f, 0.5f,
+							0.f, 0.5f, 0.f, 0.5f,
+							0.f, 0.f, 0.5f, 0.5f,
+							0.f, 0.f, 0.f, 1.f);
 
-		glh_set_current_modelview(view[j]);
-		glh_set_current_projection(proj[j]);
+			glh_set_current_modelview(view[j]);
+			glh_set_current_projection(proj[j]);
 
-		for (U32 i = 0; i < 16; i++)
-		{
-			gGLLastModelView[i] = mShadowModelview[j].m[i];
-			gGLLastProjection[i] = mShadowProjection[j].m[i];
-		}
+			for (U32 i = 0; i < 16; i++)
+			{
+				gGLLastModelView[i] = mShadowModelview[j].m[i];
+				gGLLastProjection[i] = mShadowProjection[j].m[i];
+			}
 
-		mShadowModelview[j] = view[j];
-		mShadowProjection[j] = proj[j];
+			mShadowModelview[j] = view[j];
+			mShadowProjection[j] = proj[j];
 
 	
-		mSunShadowMatrix[j] = trans*proj[j]*view[j]*inv_view;
+			mSunShadowMatrix[j] = trans*proj[j]*view[j]*inv_view;
 		
-		stop_glerror();
+			stop_glerror();
 
-		mShadow[j].bindTarget();
-		mShadow[j].getViewport(gGLViewport);
-		mShadow[j].clear();
+			mShadow[j].bindTarget();
+			mShadow[j].getViewport(gGLViewport);
+			mShadow[j].clear();
 		
-		{
-			static LLCullResult result[4];
+			{
+				static LLCullResult result[4];
 
-			//LLGLEnable enable(GL_DEPTH_CLAMP_NV);
-			renderShadow(view[j], proj[j], shadow_cam, result[j], TRUE);
-		}
+				//LLGLEnable enable(GL_DEPTH_CLAMP_NV);
+				renderShadow(view[j], proj[j], shadow_cam, result[j], TRUE);
+			}
 
-		mShadow[j].flush();
+			mShadow[j].flush();
  
-		if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
-		{
-			LLViewerCamera::updateFrustumPlanes(shadow_cam, FALSE, FALSE, TRUE);
-			mShadowCamera[j+4] = shadow_cam;
+			if (!gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_SHADOW_FRUSTA))
+			{
+				LLViewerCamera::updateFrustumPlanes(shadow_cam, FALSE, FALSE, TRUE);
+				mShadowCamera[j+4] = shadow_cam;
+			}
 		}
 	}
 
 	
 	//hack to disable projector shadows 
-	bool gen_shadow = gSavedSettings.getS32("RenderShadowDetail") > 1;
+	bool gen_shadow = RenderShadowDetail > 1;
 
 	if (gen_shadow)
 	{
@@ -9452,7 +9361,7 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
 	}
 
 
-	if (!gSavedSettings.getBOOL("CameraOffset"))
+	if (!CameraOffset)
 	{
 		glh_set_current_modelview(saved_view);
 		glh_set_current_projection(saved_proj);
@@ -9461,10 +9370,10 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
 	{
 		glh_set_current_modelview(view[1]);
 		glh_set_current_projection(proj[1]);
-		glLoadMatrixf(view[1].m);
-		glMatrixMode(GL_PROJECTION);
-		glLoadMatrixf(proj[1].m);
-		glMatrixMode(GL_MODELVIEW);
+		gGL.loadMatrix(view[1].m);
+		gGL.matrixMode(LLRender::MM_PROJECTION);
+		gGL.loadMatrix(proj[1].m);
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
 	}
 	gGL.setColorMask(true, false);
 
@@ -9475,6 +9384,11 @@ void LLPipeline::generateSunShadow(LLCamera& camera)
 	}
 
 	popRenderTypeMask();
+
+	if (!skip_avatar_update)
+	{
+		gAgentAvatarp->updateAttachmentVisibility(gAgentCamera.getCameraMode());
+	}
 }
 
 void LLPipeline::renderGroups(LLRenderPass* pass, U32 type, U32 mask, BOOL texture)
@@ -9510,7 +9424,7 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
 
 	assertInitialized();
 
-	BOOL muted = LLMuteList::getInstance()->isMuted(avatar->getID());
+	bool muted = avatar->isVisuallyMuted();		
 
 	pushRenderTypeMask();
 	
@@ -9596,24 +9510,24 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
 	tdim.mV[0] = fabsf(half_height.dot3(left).getF32());
 	tdim.mV[1] = fabsf(half_height.dot3(up).getF32());
 
-	glMatrixMode(GL_PROJECTION);
-	glPushMatrix();
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.pushMatrix();
 	
 	F32 distance = (pos-camera.getOrigin()).length();
 	F32 fov = atanf(tdim.mV[1]/distance)*2.f*RAD_TO_DEG;
 	F32 aspect = tdim.mV[0]/tdim.mV[1];
 	glh::matrix4f persp = gl_perspective(fov, aspect, 1.f, 256.f);
 	glh_set_current_projection(persp);
-	glLoadMatrixf(persp.m);
+	gGL.loadMatrix(persp.m);
 
-	glMatrixMode(GL_MODELVIEW);
-	glPushMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.pushMatrix();
 	glh::matrix4f mat;
 	camera.getOpenGLTransform(mat.m);
 
 	mat = glh::matrix4f((GLfloat*) OGL_TO_CFR_ROTATION) * mat;
 
-	glLoadMatrixf(mat.m);
+	gGL.loadMatrix(mat.m);
 	glh_set_current_modelview(mat);
 
 	glClearColor(0.0f,0.0f,0.0f,0.0f);
@@ -9681,14 +9595,19 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
 
 		gGL.flush();
 
-		glPushMatrix();
-		glLoadIdentity();
-		glMatrixMode(GL_PROJECTION);
-		glPushMatrix();
-		glLoadIdentity();
+		gGL.pushMatrix();
+		gGL.loadIdentity();
+		gGL.matrixMode(LLRender::MM_PROJECTION);
+		gGL.pushMatrix();
+		gGL.loadIdentity();
 
 		static const F32 clip_plane = 0.99999f;
 
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gUIProgram.bind();
+		}
+
 		gGL.color4ub(64,64,64,255);
 		gGL.begin(LLRender::QUADS);
 		gGL.vertex3f(-1, -1, clip_plane);
@@ -9698,9 +9617,14 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
 		gGL.end();
 		gGL.flush();
 
-		glPopMatrix();
-		glMatrixMode(GL_MODELVIEW);
-		glPopMatrix();
+		if (LLGLSLShader::sNoFixedFunction)
+		{
+			gUIProgram.unbind();
+		}
+
+		gGL.popMatrix();
+		gGL.matrixMode(LLRender::MM_MODELVIEW);
+		gGL.popMatrix();
 	}
 
 	avatar->mImpostor.flush();
@@ -9714,10 +9638,10 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
 	sShadowRender = FALSE;
 	popRenderTypeMask();
 
-	glMatrixMode(GL_PROJECTION);
-	glPopMatrix();
-	glMatrixMode(GL_MODELVIEW);
-	glPopMatrix();
+	gGL.matrixMode(LLRender::MM_PROJECTION);
+	gGL.popMatrix();
+	gGL.matrixMode(LLRender::MM_MODELVIEW);
+	gGL.popMatrix();
 
 	avatar->mNeedsImpostorUpdate = FALSE;
 	avatar->cacheImpostorValues();
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 27ee2745b502ded96937f976b86c7f161353ff34..9c78048c46ac9849ca61a83d92e2ece8863a667c 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -72,7 +72,7 @@ BOOL compute_min_max(LLMatrix4& box, LLVector2& min, LLVector2& max); // Shouldn
 bool LLRayAABB(const LLVector3 &center, const LLVector3 &size, const LLVector3& origin, const LLVector3& dir, LLVector3 &coord, F32 epsilon = 0);
 BOOL setup_hud_matrices(); // use whole screen to render hud
 BOOL setup_hud_matrices(const LLRect& screen_region); // specify portion of screen (in pixels) to render hud attachments from (for picking)
-glh::matrix4f glh_copy_matrix(GLdouble* src);
+glh::matrix4f glh_copy_matrix(F32* src);
 glh::matrix4f glh_get_current_modelview();
 void glh_set_current_modelview(const glh::matrix4f& mat);
 glh::matrix4f glh_get_current_projection();
@@ -231,7 +231,7 @@ class LLPipeline
 	void postSort(LLCamera& camera);
 	void forAllVisibleDrawables(void (*func)(LLDrawable*));
 
-	void renderObjects(U32 type, U32 mask, BOOL texture = TRUE);
+	void renderObjects(U32 type, U32 mask, BOOL texture = TRUE, BOOL batch_texture = FALSE);
 	void renderGroups(LLRenderPass* pass, U32 type, U32 mask, BOOL texture);
 
 	void grabReferences(LLCullResult& result);
@@ -248,7 +248,7 @@ class LLPipeline
 	void renderGeomDeferred(LLCamera& camera);
 	void renderGeomPostDeferred(LLCamera& camera);
 	void renderGeomShadow(LLCamera& camera);
-	void bindDeferredShader(LLGLSLShader& shader, U32 light_index = 0, LLRenderTarget* gi_source = NULL, LLRenderTarget* last_gi_post = NULL, U32 noise_map = 0xFFFFFFFF);
+	void bindDeferredShader(LLGLSLShader& shader, U32 light_index = 0, U32 noise_map = 0xFFFFFFFF);
 	void setupSpotLight(LLGLSLShader& shader, LLDrawable* drawablep);
 
 	void unbindDeferredShader(LLGLSLShader& shader);
@@ -262,7 +262,6 @@ class LLPipeline
 
 
 	void renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera& camera, LLCullResult& result, BOOL use_shader = TRUE, BOOL use_occlusion = TRUE);
-	void generateGI(LLCamera& camera, LLVector3& lightDir, std::vector<LLVector3>& vpc);
 	void renderHighlights();
 	void renderDebug();
 	void renderPhysicsDisplay();
@@ -360,7 +359,7 @@ class LLPipeline
 	static BOOL getRenderHighlights(void* data);
 
 	static void updateRenderDeferred();
-	static void refreshRenderDeferred();
+	static void refreshCachedSettings();
 
 	static void throttleNewMemoryAllocation(BOOL disable);
 
@@ -408,7 +407,6 @@ class LLPipeline
 		RENDER_TYPE_PASS_ALPHA					= LLRenderPass::PASS_ALPHA,
 		RENDER_TYPE_PASS_ALPHA_MASK				= LLRenderPass::PASS_ALPHA_MASK,
 		RENDER_TYPE_PASS_FULLBRIGHT_ALPHA_MASK	= LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK,
-		RENDER_TYPE_PASS_ALPHA_SHADOW = LLRenderPass::PASS_ALPHA_SHADOW,
 		// Following are object types (only used in drawable mRenderType)
 		RENDER_TYPE_HUD = LLRenderPass::NUM_RENDER_TYPES,
 		RENDER_TYPE_VOLUME,
@@ -434,34 +432,35 @@ class LLPipeline
 
 	enum LLRenderDebugMask
 	{
-		RENDER_DEBUG_COMPOSITION		= 0x0000001,
-		RENDER_DEBUG_VERIFY				= 0x0000002,
-		RENDER_DEBUG_BBOXES				= 0x0000004,
-		RENDER_DEBUG_OCTREE				= 0x0000008,
-		RENDER_DEBUG_PICKING			= 0x0000010,
-		RENDER_DEBUG_OCCLUSION			= 0x0000020,
-		RENDER_DEBUG_POINTS				= 0x0000040,
-		RENDER_DEBUG_TEXTURE_PRIORITY	= 0x0000080,
-		RENDER_DEBUG_TEXTURE_AREA		= 0x0000100,
-		RENDER_DEBUG_FACE_AREA			= 0x0000200,
-		RENDER_DEBUG_PARTICLES			= 0x0000400,
-		RENDER_DEBUG_GLOW				= 0x0000800,
-		RENDER_DEBUG_TEXTURE_ANIM		= 0x0001000,
-		RENDER_DEBUG_LIGHTS				= 0x0002000,
-		RENDER_DEBUG_BATCH_SIZE			= 0x0004000,
-		RENDER_DEBUG_ALPHA_BINS			= 0x0008000,
-		RENDER_DEBUG_RAYCAST            = 0x0010000,
-		RENDER_DEBUG_SHAME				= 0x0020000,
-		RENDER_DEBUG_SHADOW_FRUSTA		= 0x0040000,
-		RENDER_DEBUG_SCULPTED           = 0x0080000,
-		RENDER_DEBUG_AVATAR_VOLUME      = 0x0100000,
-		RENDER_DEBUG_BUILD_QUEUE		= 0x0200000,
-		RENDER_DEBUG_AGENT_TARGET       = 0x0400000,
-		RENDER_DEBUG_UPDATE_TYPE		= 0x0800000,
-		RENDER_DEBUG_PHYSICS_SHAPES     = 0x1000000,
-		RENDER_DEBUG_NORMALS	        = 0x2000000,
-		RENDER_DEBUG_LOD_INFO	        = 0x4000000,
-		RENDER_DEBUG_RENDER_COMPLEXITY  = 0x8000000
+		RENDER_DEBUG_COMPOSITION		= 0x00000001,
+		RENDER_DEBUG_VERIFY				= 0x00000002,
+		RENDER_DEBUG_BBOXES				= 0x00000004,
+		RENDER_DEBUG_OCTREE				= 0x00000008,
+		RENDER_DEBUG_WIND_VECTORS		= 0x00000010,
+		RENDER_DEBUG_OCCLUSION			= 0x00000020,
+		RENDER_DEBUG_POINTS				= 0x00000040,
+		RENDER_DEBUG_TEXTURE_PRIORITY	= 0x00000080,
+		RENDER_DEBUG_TEXTURE_AREA		= 0x00000100,
+		RENDER_DEBUG_FACE_AREA			= 0x00000200,
+		RENDER_DEBUG_PARTICLES			= 0x00000400,
+		RENDER_DEBUG_GLOW				= 0x00000800,
+		RENDER_DEBUG_TEXTURE_ANIM		= 0x00001000,
+		RENDER_DEBUG_LIGHTS				= 0x00002000,
+		RENDER_DEBUG_BATCH_SIZE			= 0x00004000,
+		RENDER_DEBUG_ALPHA_BINS			= 0x00008000,
+		RENDER_DEBUG_RAYCAST            = 0x00010000,
+		RENDER_DEBUG_SHAME				= 0x00020000,
+		RENDER_DEBUG_SHADOW_FRUSTA		= 0x00040000,
+		RENDER_DEBUG_SCULPTED           = 0x00080000,
+		RENDER_DEBUG_AVATAR_VOLUME      = 0x00100000,
+		RENDER_DEBUG_BUILD_QUEUE		= 0x00200000,
+		RENDER_DEBUG_AGENT_TARGET       = 0x00400000,
+		RENDER_DEBUG_UPDATE_TYPE		= 0x00800000,
+		RENDER_DEBUG_PHYSICS_SHAPES     = 0x01000000,
+		RENDER_DEBUG_NORMALS	        = 0x02000000,
+		RENDER_DEBUG_LOD_INFO	        = 0x04000000,
+		RENDER_DEBUG_RENDER_COMPLEXITY  = 0x08000000,
+		RENDER_DEBUG_ATTACHMENT_BYTES	= 0x10000000,
 	};
 
 public:
@@ -531,15 +530,16 @@ class LLPipeline
 	LLRenderTarget			mScreen;
 	LLRenderTarget			mUIScreen;
 	LLRenderTarget			mDeferredScreen;
+	LLRenderTarget			mFXAABuffer;
 	LLRenderTarget			mEdgeMap;
 	LLRenderTarget			mDeferredDepth;
-	LLRenderTarget			mDeferredLight[3];
-	LLRenderTarget			mGIMap;
-	LLRenderTarget			mGIMapPost[2];
-	LLRenderTarget			mLuminanceMap;
+	LLRenderTarget			mDeferredLight;
 	LLRenderTarget			mHighlight;
 	LLRenderTarget			mPhysicsDisplay;
 
+	//utility buffer for rendering post effects, gets abused by renderDeferredLighting
+	LLPointer<LLVertexBuffer> mDeferredVB;
+
 	//sun shadow map
 	LLRenderTarget			mShadow[6];
 	std::vector<LLVector3>	mShadowFrustPoints[4];
@@ -585,6 +585,7 @@ class LLPipeline
 
 	LLColor4				mSunDiffuse;
 	LLVector3				mSunDir;
+	LLVector3				mTransformedSunDir;
 
 	BOOL					mInitialized;
 	BOOL					mVertexShadersEnabled;
@@ -770,6 +771,81 @@ class LLPipeline
 
 	//debug use
 	static U32              sCurRenderPoolType ;
+
+	//cached settings
+	static BOOL WindLightUseAtmosShaders;
+	static BOOL VertexShaderEnable;
+	static BOOL RenderAvatarVP;
+	static BOOL RenderDeferred;
+	static F32 RenderDeferredSunWash;
+	static U32 RenderFSAASamples;
+	static U32 RenderResolutionDivisor;
+	static BOOL RenderUIBuffer;
+	static S32 RenderShadowDetail;
+	static BOOL RenderDeferredSSAO;
+	static F32 RenderShadowResolutionScale;
+	static BOOL RenderLocalLights;
+	static BOOL RenderDelayCreation;
+	static BOOL RenderAnimateRes;
+	static BOOL FreezeTime;
+	static S32 DebugBeaconLineWidth;
+	static F32 RenderHighlightBrightness;
+	static LLColor4 RenderHighlightColor;
+	static F32 RenderHighlightThickness;
+	static BOOL RenderSpotLightsInNondeferred;
+	static LLColor4 PreviewAmbientColor;
+	static LLColor4 PreviewDiffuse0;
+	static LLColor4 PreviewSpecular0;
+	static LLColor4 PreviewDiffuse1;
+	static LLColor4 PreviewSpecular1;
+	static LLColor4 PreviewDiffuse2;
+	static LLColor4 PreviewSpecular2;
+	static LLVector3 PreviewDirection0;
+	static LLVector3 PreviewDirection1;
+	static LLVector3 PreviewDirection2;
+	static F32 RenderGlowMinLuminance;
+	static F32 RenderGlowMaxExtractAlpha;
+	static F32 RenderGlowWarmthAmount;
+	static LLVector3 RenderGlowLumWeights;
+	static LLVector3 RenderGlowWarmthWeights;
+	static S32 RenderGlowResolutionPow;
+	static S32 RenderGlowIterations;
+	static F32 RenderGlowWidth;
+	static F32 RenderGlowStrength;
+	static BOOL RenderDepthOfField;
+	static F32 CameraFocusTransitionTime;
+	static F32 CameraFNumber;
+	static F32 CameraFocalLength;
+	static F32 CameraFieldOfView;
+	static F32 RenderShadowNoise;
+	static F32 RenderShadowBlurSize;
+	static F32 RenderSSAOScale;
+	static U32 RenderSSAOMaxScale;
+	static F32 RenderSSAOFactor;
+	static LLVector3 RenderSSAOEffect;
+	static F32 RenderShadowOffsetError;
+	static F32 RenderShadowBiasError;
+	static F32 RenderShadowOffset;
+	static F32 RenderShadowBias;
+	static F32 RenderSpotShadowOffset;
+	static F32 RenderSpotShadowBias;
+	static F32 RenderEdgeDepthCutoff;
+	static F32 RenderEdgeNormCutoff;
+	static LLVector3 RenderShadowGaussian;
+	static F32 RenderShadowBlurDistFactor;
+	static BOOL RenderDeferredAtmospheric;
+	static S32 RenderReflectionDetail;
+	static F32 RenderHighlightFadeTime;
+	static LLVector3 RenderShadowClipPlanes;
+	static LLVector3 RenderShadowOrthoClipPlanes;
+	static LLVector3 RenderShadowNearDist;
+	static F32 RenderFarClip;
+	static LLVector3 RenderShadowSplitExponent;
+	static F32 RenderShadowErrorCutoff;
+	static F32 RenderShadowFOVCutoff;
+	static BOOL CameraOffset;
+	static F32 CameraMaxCoF;
+	static F32 CameraDoFResScale;
 };
 
 void render_bbox(const LLVector3 &min, const LLVector3 &max);
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index b5cc949ebfe03689f0f5c8c46b58a60dbfeee4a6..8baaa14595fdb8ea0dcb70a44fd5950b5d7e0c2d 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -795,6 +795,10 @@
     <color
      name="DirectChatColor"
      reference="LtOrange" />
+
+    <color
+      name="ToolbarDropZoneColor"
+      value=".48 .69 1 .5" />
   
     <!-- Generic color names (legacy) -->
   <color
diff --git a/indra/newview/skins/default/textures/arrow_keys.png b/indra/newview/skins/default/textures/arrow_keys.png
deleted file mode 100644
index f19af59251c46159a0aa6f5ec983a66df961c703..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/arrow_keys.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Pan_Over.png b/indra/newview/skins/default/textures/bottomtray/Cam_Pan_Over.png
deleted file mode 100644
index b5781718ec5b60ba19e02a77f33c55729f67fc48..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/bottomtray/Cam_Pan_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/bottomtray/CameraView_Press.png b/indra/newview/skins/default/textures/bottomtray/CameraView_Press.png
deleted file mode 100644
index 5a9346fd39956762b81792ae57b133cedd1395cc..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/bottomtray/CameraView_Press.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Disabled.png b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Disabled.png
deleted file mode 100644
index 20fa40e12757211edd6057663737e7e243e15087..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Disabled.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Over.png b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Over.png
deleted file mode 100644
index f1420e00027de1e0cdc32df8f91cae73373dba1f..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Press.png b/indra/newview/skins/default/textures/bottomtray/PanOrbit_Press.png
deleted file mode 100644
index 89a6269edc1c70ed6a526853ff3fe444c708a69f..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/bottomtray/PanOrbit_Press.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1_Dark.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1_Dark.png
new file mode 100644
index 0000000000000000000000000000000000000000..857fa1e047887e58df3df1b5e01fe700b6ece21f
Binary files /dev/null and b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1_Dark.png differ
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2_Dark.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2_Dark.png
new file mode 100644
index 0000000000000000000000000000000000000000..453bb53673b91dc51624ec6341ad7aa8e5b883f5
Binary files /dev/null and b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2_Dark.png differ
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl3_Dark.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl3_Dark.png
new file mode 100644
index 0000000000000000000000000000000000000000..135a66ca0dd623c5e01ee4538f5a44460302b896
Binary files /dev/null and b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl3_Dark.png differ
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Off_Dark.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Off_Dark.png
new file mode 100644
index 0000000000000000000000000000000000000000..a63aec5e6dc4dcc4f91cee641cbdefda52cf612b
Binary files /dev/null and b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Off_Dark.png differ
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_On_Dark.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_On_Dark.png
new file mode 100644
index 0000000000000000000000000000000000000000..1719eb3e84e0ad9788a322032750ea7f89a09ec8
Binary files /dev/null and b/indra/newview/skins/default/textures/bottomtray/VoicePTT_On_Dark.png differ
diff --git a/indra/newview/skins/default/textures/checkerboard_transparency_bg.png b/indra/newview/skins/default/textures/checkerboard_transparency_bg.png
deleted file mode 100644
index 9a16935204a0c0412facfa1333188032f948ab4d..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/checkerboard_transparency_bg.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/circle.tga b/indra/newview/skins/default/textures/circle.tga
deleted file mode 100644
index d7097e3a35bd45ead82ae4a0b4f5b0a6c7277f63..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/circle.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Over.png b/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Over.png
deleted file mode 100644
index e47f913db1a3025f19fcaf02d4bd30645457eefd..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/containers/Accordion_ArrowClosed_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Over.png b/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Over.png
deleted file mode 100644
index e2c67de9c0638b1505f8b0dde29ce20f1d4ddaee..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/containers/Accordion_ArrowOpened_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Left_Over.png b/indra/newview/skins/default/textures/containers/TabTop_Left_Over.png
deleted file mode 100644
index 295cd89a57e8c0986f577a5094e926b5bd76d89b..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/containers/TabTop_Left_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Middle_Over.png b/indra/newview/skins/default/textures/containers/TabTop_Middle_Over.png
deleted file mode 100644
index 0758cbcf0d99aac97e1ee2b1c8b472d9aabe8576..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/containers/TabTop_Middle_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Right_Over.png b/indra/newview/skins/default/textures/containers/TabTop_Right_Over.png
deleted file mode 100644
index c2cbc2b1e5d539487045676fb58534acf2205129..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/containers/TabTop_Right_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icn_label_web.tga b/indra/newview/skins/default/textures/icn_label_web.tga
deleted file mode 100644
index 7c9131dfffe5a4bd517b19219f0e2e2d19d45602..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icn_label_web.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icn_media.tga b/indra/newview/skins/default/textures/icn_media.tga
deleted file mode 100644
index 43dd342c9d8e3bdeb66f56d0b9f2ad9c986c6e5f..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icn_media.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icn_voice-groupfocus.tga b/indra/newview/skins/default/textures/icn_voice-groupfocus.tga
deleted file mode 100644
index 9f48d4609d6133d5a5a2ae1682ff0fda3c5650f3..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icn_voice-groupfocus.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icn_voice-localchat.tga b/indra/newview/skins/default/textures/icn_voice-localchat.tga
deleted file mode 100644
index 7cf267eaf5792f15f9145731da50b0ee85b10ea3..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icn_voice-localchat.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icn_voice-pvtfocus.tga b/indra/newview/skins/default/textures/icn_voice-pvtfocus.tga
deleted file mode 100644
index abadb09aaf72f13376cbf66470ed71b3bbae2644..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icn_voice-pvtfocus.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icon_day_cycle.tga b/indra/newview/skins/default/textures/icon_day_cycle.tga
deleted file mode 100644
index 2d5dee1e94bc8612e4e1e5ef8d1d68fce08f62af..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icon_day_cycle.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icon_event_adult.tga b/indra/newview/skins/default/textures/icon_event_adult.tga
deleted file mode 100644
index f548126e5a98bb1c831872dd054ccb540a7eb170..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icon_event_adult.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icon_lock.tga b/indra/newview/skins/default/textures/icon_lock.tga
deleted file mode 100644
index 23521aa1138eee7f9f77f952a3e17b14d7c82c25..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icon_lock.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/AddItem_Over.png b/indra/newview/skins/default/textures/icons/AddItem_Over.png
deleted file mode 100644
index cad6e8d52fa1518f6b2e159097addab98df2390a..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/AddItem_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/BackArrow_Over.png b/indra/newview/skins/default/textures/icons/BackArrow_Over.png
deleted file mode 100644
index b36e03a8cfd2d5223a4206a9c859ad78e7a57ae6..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/BackArrow_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/DragHandle.png b/indra/newview/skins/default/textures/icons/DragHandle.png
deleted file mode 100644
index c3cbc07a333a3b75cf044c4b81daa12cc7711c02..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/DragHandle.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Generic_Object.png b/indra/newview/skins/default/textures/icons/Generic_Object.png
deleted file mode 100644
index e3a80b2aef90ee5749fdadc4438055b98211d86e..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Generic_Object.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Gift.png b/indra/newview/skins/default/textures/icons/Inv_Gift.png
deleted file mode 100644
index 5afe85d72d546f665d9b9611c74dbde83cf67d68..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Inv_Gift.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/OptionsMenu_Over.png b/indra/newview/skins/default/textures/icons/OptionsMenu_Over.png
deleted file mode 100644
index fcabd4c6d3c534fa3996879f03cf762c59c5e1d1..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/OptionsMenu_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_On_Selected.png b/indra/newview/skins/default/textures/icons/OutboxPush_On_Selected.png
deleted file mode 100644
index 0e60b417b064372897b6c4851de1384ac3a55e5c..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/OutboxPush_On_Selected.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_Damage_Light_Alt.png b/indra/newview/skins/default/textures/icons/Parcel_Damage_Light_Alt.png
deleted file mode 100644
index d72f02f708fcfd387dad98ea35359df06857304d..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Parcel_Damage_Light_Alt.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/Parcel_NoScripts_Light.png b/indra/newview/skins/default/textures/icons/Parcel_NoScripts_Light.png
deleted file mode 100644
index f82354959e9750e140bb7a7937f23602187fffde..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/Parcel_NoScripts_Light.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/TrashItem_Over.png b/indra/newview/skins/default/textures/icons/TrashItem_Over.png
deleted file mode 100644
index 1a0eea6c67e8f544ae8d6fa1b85abd678cc15f0f..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/TrashItem_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/parcel_color_EVRY.png b/indra/newview/skins/default/textures/icons/parcel_color_EVRY.png
deleted file mode 100644
index b5508423ebc0f6ae36b11d37fb0cf8697a727692..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/parcel_color_EVRY.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/parcel_color_EXP.png b/indra/newview/skins/default/textures/icons/parcel_color_EXP.png
deleted file mode 100644
index 4813d37198356805ef1c67724adae778fec9a442..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/parcel_color_EXP.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/icons/parcel_color_M.png b/indra/newview/skins/default/textures/icons/parcel_color_M.png
deleted file mode 100644
index 41984c43e46f5f46913209821b219c9957c56121..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/icons/parcel_color_M.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/image_edit_icon.tga b/indra/newview/skins/default/textures/image_edit_icon.tga
deleted file mode 100644
index 8666f0bbe6286ce5c9ef5c0a0397128debc71ee8..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/image_edit_icon.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/inv_folder_animation.tga b/indra/newview/skins/default/textures/inv_folder_animation.tga
deleted file mode 100644
index 1b4df7a2d871d59a615817558e4bfb30ca89df3c..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/inv_folder_animation.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/inv_folder_inbox.tga b/indra/newview/skins/default/textures/inv_folder_inbox.tga
deleted file mode 100644
index 04539c2cc4f002c9c1c4724215e5b7cf08cfb177..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/inv_folder_inbox.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/map_avatar_above_8.tga b/indra/newview/skins/default/textures/map_avatar_above_8.tga
deleted file mode 100644
index 193428e5303c64c0eccf60083b7f3b6345f00f73..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/map_avatar_above_8.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/map_avatar_below_8.tga b/indra/newview/skins/default/textures/map_avatar_below_8.tga
deleted file mode 100644
index 9e14bfab90da552bbdaa845aa79e695c0540632f..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/map_avatar_below_8.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/map_event_adult.tga b/indra/newview/skins/default/textures/map_event_adult.tga
deleted file mode 100644
index f548126e5a98bb1c831872dd054ccb540a7eb170..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/map_event_adult.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/map_event_mature.tga b/indra/newview/skins/default/textures/map_event_mature.tga
deleted file mode 100644
index 71067c0dfdb0ea442fa4a9037cd1e138476d9f31..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/map_event_mature.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/map_track_8.tga b/indra/newview/skins/default/textures/map_track_8.tga
deleted file mode 100644
index 53425ff45b600b5bb8ee656123b75a8246d36014..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/map_track_8.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/model_wizard/divider_line.png b/indra/newview/skins/default/textures/model_wizard/divider_line.png
deleted file mode 100644
index 76c9e687675f26f2ba50465eaeee21146307515a..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/model_wizard/divider_line.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/mute_icon.tga b/indra/newview/skins/default/textures/mute_icon.tga
deleted file mode 100644
index 879b9e6188bfc01fc538a3f8f7d72b2d64e790b0..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/mute_icon.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/navbar/Arrow_Left_Over.png b/indra/newview/skins/default/textures/navbar/Arrow_Left_Over.png
deleted file mode 100644
index a91b74819f2081adf8fb343655d768477619c85f..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/navbar/Arrow_Left_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/navbar/Arrow_Right_Over.png b/indra/newview/skins/default/textures/navbar/Arrow_Right_Over.png
deleted file mode 100644
index a2caf227a73d39d0f58f5d5d0dcaf1086aea54b9..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/navbar/Arrow_Right_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/navbar/Help_Over.png b/indra/newview/skins/default/textures/navbar/Help_Over.png
deleted file mode 100644
index b9bc0d0f87d7c454bd55a0b7b84ae6d0dff32914..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/navbar/Help_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/navbar/Home_Over.png b/indra/newview/skins/default/textures/navbar/Home_Over.png
deleted file mode 100644
index d9c6b3842ed4958f0e6bb525f3675b4a7a2f5438..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/navbar/Home_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/navbar/separator.png b/indra/newview/skins/default/textures/navbar/separator.png
new file mode 100644
index 0000000000000000000000000000000000000000..b93e5791a7eab8ba17fae0cd8991daf7d38ef992
Binary files /dev/null and b/indra/newview/skins/default/textures/navbar/separator.png differ
diff --git a/indra/newview/skins/default/textures/places_rating_adult.tga b/indra/newview/skins/default/textures/places_rating_adult.tga
deleted file mode 100644
index c344fb1e78887afe2b20ac4830ffb057772416cd..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/places_rating_adult.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/places_rating_mature.tga b/indra/newview/skins/default/textures/places_rating_mature.tga
deleted file mode 100644
index 61c879bc923c7d1ee625a3995012a3ddecca363d..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/places_rating_mature.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/places_rating_pg.tga b/indra/newview/skins/default/textures/places_rating_pg.tga
deleted file mode 100644
index 7805dbce60eb7c58bb99826157ed222813c27419..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/places_rating_pg.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/propertyline.tga b/indra/newview/skins/default/textures/propertyline.tga
deleted file mode 100644
index 0c504eea716c7efebce112c5dc074840d9565142..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/propertyline.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/quick_tips/avatar_free_mode.png b/indra/newview/skins/default/textures/quick_tips/avatar_free_mode.png
deleted file mode 100644
index be7c87efb67aebee345f1caef05aa305b6fc0784..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/quick_tips/avatar_free_mode.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/quick_tips/camera_free_mode.png b/indra/newview/skins/default/textures/quick_tips/camera_free_mode.png
deleted file mode 100644
index 9a3f3703b2211c195467a135bb5f5e3e52d1d6cc..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/quick_tips/camera_free_mode.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/quick_tips/camera_orbit_mode.png b/indra/newview/skins/default/textures/quick_tips/camera_orbit_mode.png
deleted file mode 100644
index dd72cc01625528f35c37d31cb36864ac175b036f..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/quick_tips/camera_orbit_mode.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/quick_tips/camera_pan_mode.png b/indra/newview/skins/default/textures/quick_tips/camera_pan_mode.png
deleted file mode 100644
index b537dcbe46c70748ba396b36d6064e9b8fc4509d..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/quick_tips/camera_pan_mode.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/quick_tips/camera_preset_front_view.png b/indra/newview/skins/default/textures/quick_tips/camera_preset_front_view.png
deleted file mode 100644
index 7674a75ac3fe972ac2636c9167df1ef596db80d8..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/quick_tips/camera_preset_front_view.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/quick_tips/camera_preset_group_view.png b/indra/newview/skins/default/textures/quick_tips/camera_preset_group_view.png
deleted file mode 100644
index 9c9b923a5aef5323e201403cff15dbc5ea90ca00..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/quick_tips/camera_preset_group_view.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/quick_tips/camera_preset_rear_view.png b/indra/newview/skins/default/textures/quick_tips/camera_preset_rear_view.png
deleted file mode 100644
index 15c305349104f6a398d2652e960312bface1611e..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/quick_tips/camera_preset_rear_view.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/quick_tips/move_fly_first.png b/indra/newview/skins/default/textures/quick_tips/move_fly_first.png
deleted file mode 100644
index b6e2ce60e4b37e6957791681807d43b0292612a1..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/quick_tips/move_fly_first.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/quick_tips/move_fly_second.png b/indra/newview/skins/default/textures/quick_tips/move_fly_second.png
deleted file mode 100644
index 84b63cc3382d5ea298fe716670e8f2c0d992ecfa..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/quick_tips/move_fly_second.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/quick_tips/move_run_first.png b/indra/newview/skins/default/textures/quick_tips/move_run_first.png
deleted file mode 100644
index 16093dc683e392a5d1d1282f75c44f80a27be1cd..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/quick_tips/move_run_first.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/quick_tips/move_run_second.png b/indra/newview/skins/default/textures/quick_tips/move_run_second.png
deleted file mode 100644
index 19fa43ec32a8c7a2e41936b3f3033ccb986cbc36..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/quick_tips/move_run_second.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/quick_tips/move_walk_first.png b/indra/newview/skins/default/textures/quick_tips/move_walk_first.png
deleted file mode 100644
index 92d120d53ea03a48a14e88f39d070d280bcd176e..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/quick_tips/move_walk_first.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/quick_tips/move_walk_second.png b/indra/newview/skins/default/textures/quick_tips/move_walk_second.png
deleted file mode 100644
index f8e28722bea507957036c4fc11eade6cbf3240fc..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/quick_tips/move_walk_second.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/show_btn.tga b/indra/newview/skins/default/textures/show_btn.tga
deleted file mode 100644
index 5f05f377e31714b3c1b80d673c32cda4f4a28824..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/show_btn.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/show_btn_selected.tga b/indra/newview/skins/default/textures/show_btn_selected.tga
deleted file mode 100644
index 00a2f34a37ea70acb34c6d5a7cf8b7c169f8a82d..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/show_btn_selected.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/smicon_warn.tga b/indra/newview/skins/default/textures/smicon_warn.tga
deleted file mode 100644
index 90ccaa07e5a2053ad47f06e381bf667dfafe7a5d..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/smicon_warn.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/snapshot_download.png b/indra/newview/skins/default/textures/snapshot_download.png
new file mode 100644
index 0000000000000000000000000000000000000000..6aa1abded50dae6e6cedd96c0d4518bb81c2fe98
Binary files /dev/null and b/indra/newview/skins/default/textures/snapshot_download.png differ
diff --git a/indra/newview/skins/default/textures/snapshot_email.png b/indra/newview/skins/default/textures/snapshot_email.png
new file mode 100644
index 0000000000000000000000000000000000000000..dee784a9bfb2de38528f8b9992f13266f6087c98
Binary files /dev/null and b/indra/newview/skins/default/textures/snapshot_email.png differ
diff --git a/indra/newview/skins/default/textures/spacer35.tga b/indra/newview/skins/default/textures/spacer35.tga
deleted file mode 100644
index b88bc6680a405a808a1d93ec03ec1a35460b3a93..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/spacer35.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/square_btn_32x128.tga b/indra/newview/skins/default/textures/square_btn_32x128.tga
deleted file mode 100644
index d7ce58dac3810459e3a8c969451fcfbd3a6fd0b1..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/square_btn_32x128.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/square_btn_selected_32x128.tga b/indra/newview/skins/default/textures/square_btn_selected_32x128.tga
deleted file mode 100644
index 59ca365aa45c990745c205c526f103df76f4fc53..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/square_btn_selected_32x128.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/startup_logo.j2c b/indra/newview/skins/default/textures/startup_logo.j2c
deleted file mode 100644
index d1b991f17f2e054954c8109463b5a88444e24ba0..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/startup_logo.j2c and /dev/null differ
diff --git a/indra/newview/skins/default/textures/status_busy.tga b/indra/newview/skins/default/textures/status_busy.tga
deleted file mode 100644
index 7743d9c7bb077eaad66ffb31aa51e46773b35b2e..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/status_busy.tga and /dev/null differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Appearance_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Appearance_Off.png
deleted file mode 100644
index 0b91abfb0d898e61e4641246c2173c560300657b..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/taskpanel/TabIcon_Appearance_Off.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Appearance_Selected.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Appearance_Selected.png
deleted file mode 100644
index 33a47236a555eb042b524935bf7a9b97646f4682..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/taskpanel/TabIcon_Appearance_Selected.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Home_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Home_Off.png
deleted file mode 100644
index 421f5e17057f17e5d108d924111aca6f58b07b04..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/taskpanel/TabIcon_Home_Off.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Me_Selected.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Me_Selected.png
deleted file mode 100644
index 905d4c973e5163a69487d7e9485e963fc8484f79..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/taskpanel/TabIcon_Me_Selected.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_People_Selected.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_People_Selected.png
deleted file mode 100644
index 909f0d0a47ecf165b900217f12bdad1566dce5c1..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/taskpanel/TabIcon_People_Selected.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Large.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Large.png
deleted file mode 100644
index cc505c4a30b6eb2981b7ff99bde58978b389dd03..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Large.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Selected.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Selected.png
deleted file mode 100644
index 8e0fb9661eac0dc220e55c5fb88f95340ae5c6a8..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Selected.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Things_Selected.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Things_Selected.png
deleted file mode 100644
index d4ac451c8e265d8c4d0edfc5af936738f6314ac7..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/taskpanel/TabIcon_Things_Selected.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 9fc2479bb1642ecdeb459b5679980ac5b52afc2c..e4a8622a4b44a7d891b954b99c2856fca866acde 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -39,7 +39,7 @@ with the same filename but different name
   <texture name="Accordion_Over" file_name="containers/Accordion_Over.png" preload="false" />
   <texture name="Accordion_Selected" file_name="containers/Accordion_Selected.png" preload="false" />
 
-<texture name="Activate_Checkmark" file_name="taskpanel/Activate_Checkmark.png" preload="false" />
+  <texture name="Activate_Checkmark" file_name="taskpanel/Activate_Checkmark.png" preload="false" />
 
   <texture name="AddItem_Disabled" file_name="icons/AddItem_Disabled.png" preload="false" />
   <texture name="AddItem_Off" file_name="icons/AddItem_Off.png" preload="false" />
@@ -48,9 +48,6 @@ with the same filename but different name
   <texture name="Arrow_Left_Off" file_name="navbar/Arrow_Left_Off.png" preload="true" />
   <texture name="Arrow_Right_Off" file_name="navbar/Arrow_Right_Off.png" preload="true" />
 
-<!--
--->
-
   <texture name="Arrow_Small_Up" file_name="widgets/Arrow_Small_Up.png" preload="true" />
   <texture name="Arrow_Small_Left" file_name="widgets/Arrow_Small_Left.png" preload="true" />
   <texture name="Arrow_Small_Right" file_name="widgets/Arrow_Small_Right.png" preload="true" />
@@ -123,12 +120,41 @@ with the same filename but different name
   <texture name="Checkbox_On" file_name="widgets/Checkbox_On.png" preload="true" />
   <texture name="Checkbox_On_Press" file_name="widgets/Checkbox_On_Press.png" preload="true" />
   <texture name="Checkbox_Press" file_name="widgets/Checkbox_Press.png" preload="true" />
-  <texture name="Check_Mark" file_name="icons/check_mark" preload="true" />
+  <texture name="Check_Mark" file_name="icons/check_mark.png" preload="true" />
+
+  <texture name="Command_AboutLand_Icon"    file_name="toolbar_icons/land.png"         preload="true" />
+  <texture name="Command_Appearance_Icon"   file_name="toolbar_icons/appearance.png"   preload="true" />
+  <texture name="Command_Avatar_Icon"       file_name="toolbar_icons/avatars.png"      preload="true" />
+  <texture name="Command_Build_Icon"        file_name="toolbar_icons/build.png"        preload="true" />
+  <texture name="Command_Chat_Icon"         file_name="toolbar_icons/chat.png"         preload="true" />
+  <texture name="Command_Compass_Icon"      file_name="toolbar_icons/land.png"         preload="true" />
+  <texture name="Command_Destinations_Icon" file_name="toolbar_icons/destinations.png" preload="true" />
+  <texture name="Command_Gestures_Icon"     file_name="toolbar_icons/gestures.png"     preload="true" />
+  <texture name="Command_HowTo_Icon"        file_name="toolbar_icons/howto.png"        preload="true" />
+  <texture name="Command_Inventory_Icon"    file_name="toolbar_icons/inventory.png"    preload="true" />
+  <texture name="Command_Map_Icon"          file_name="toolbar_icons/map.png"          preload="true" />
+  <texture name="Command_Marketplace_Icon"  file_name="toolbar_icons/marketplace.png"  preload="true" />
+  <texture name="Command_MiniCart_Icon"     file_name="toolbar_icons/mini_cart.png"    preload="true" />
+  <texture name="Command_MiniMap_Icon"      file_name="toolbar_icons/mini_map.png"     preload="true" />
+  <texture name="Command_Move_Icon"         file_name="toolbar_icons/move.png"         preload="true" />
+  <texture name="Command_Outbox_Icon"       file_name="toolbar_icons/outbox.png"       preload="true" />
+  <texture name="Command_People_Icon"       file_name="toolbar_icons/people.png"       preload="true" />
+  <texture name="Command_Picks_Icon"        file_name="toolbar_icons/picks.png"        preload="true" />
+  <texture name="Command_Places_Icon"       file_name="toolbar_icons/places.png"       preload="true" />
+  <texture name="Command_Preferences_Icon"  file_name="toolbar_icons/preferences.png"  preload="true" />
+  <texture name="Command_Profile_Icon"      file_name="toolbar_icons/profile.png"      preload="true" />
+  <texture name="Command_Search_Icon"       file_name="toolbar_icons/search.png"       preload="true" />
+  <texture name="Command_Snapshot_Icon"     file_name="toolbar_icons/snapshot.png"     preload="true" />
+  <texture name="Command_Speak_Icon"        file_name="toolbar_icons/speak.png"        preload="true" />
+  <texture name="Command_View_Icon"         file_name="toolbar_icons/view.png"         preload="true" />
+  <texture name="Command_Voice_Icon"        file_name="toolbar_icons/nearbyvoice.png"  preload="true" />
+  <texture name="Caret_Bottom_Icon"         file_name="toolbar_icons/caret_bottom.png" preload="true" scale.left="1" scale.top="23" scale.right="15" scale.bottom="1" />
+  <texture name="Caret_Right_Icon"          file_name="toolbar_icons/caret_right.png"  preload="true" scale.left="5" scale.top="15" scale.right="28" scale.bottom="1" />
+  <texture name="Caret_Left_Icon"           file_name="toolbar_icons/caret_left.png"   preload="true" scale.left="1" scale.top="15" scale.right="23" scale.bottom="1" />
 
   <texture name="ComboButton_Disabled" file_name="widgets/ComboButton_Disabled.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_Selected" file_name="widgets/ComboButton_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_UpSelected" file_name="widgets/ComboButton_UpSelected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
-  <texture name="ComboButton_Up_On_Selected" file_name="widgets/ComboButton_Up_On_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_On" file_name="widgets/ComboButton_On.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_Off" file_name="widgets/ComboButton_Off.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
   <texture name="ComboButton_UpOff" file_name="widgets/ComboButton_UpOff.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
@@ -161,6 +187,10 @@ with the same filename but different name
 
   <texture name="Flag" file_name="navbar/Flag.png" preload="false" />
 
+  <texture name="Flyout_Left" file_name="windows/Flyout_Left.png" preload="false" />
+  <texture name="Flyout_Pointer" file_name="windows/Flyout_Pointer.png" preload="false" />
+  <texture name="Flyout_Right" file_name="windows/Flyout_Right.png" preload="false" />
+
   <texture name="Folder_Arrow" file_name="folder_arrow.tga" preload="false" />
   <texture name="ForSale_Badge" file_name="icons/ForSale_Badge.png" preload="false" />
   <texture name="ForwardArrow_Off" file_name="icons/ForwardArrow_Off.png" preload="false" />
@@ -357,22 +387,9 @@ with the same filename but different name
   <texture name="OptionsMenu_Off" file_name="icons/OptionsMenu_Off.png" preload="false" />
   <texture name="OptionsMenu_Press" file_name="icons/OptionsMenu_Press.png" preload="false" />
 
-  <texture name="OutboxPush_Disabled" file_name="icons/OutboxPush_Disabled.png" preload="true" />
-  <texture name="OutboxPush_Off" file_name="icons/OutboxPush_Off.png" preload="true" />
-  <texture name="OutboxPush_On" file_name="icons/OutboxPush_On.png" preload="true" />
-  <texture name="OutboxPush_On_Over" file_name="icons/OutboxPush_On_Over.png" preload="true" />
-  <texture name="OutboxPush_Over" file_name="icons/OutboxPush_Over.png" preload="true" />
-  <texture name="OutboxPush_Press" file_name="icons/OutboxPush_Press.png" preload="true" />
-  <texture name="OutboxPush_Progress_1" file_name="icons/OutboxPush_Progress_1.png" preload="true" />
-  <texture name="OutboxPush_Progress_2" file_name="icons/OutboxPush_Progress_2.png" preload="true" />
-  <texture name="OutboxPush_Progress_3" file_name="icons/OutboxPush_Progress_3.png" preload="true" />
-  <texture name="OutboxPush_Progress_4" file_name="icons/OutboxPush_Progress_4.png" preload="true" />
-  <texture name="OutboxPush_Progress_5" file_name="icons/OutboxPush_Progress_5.png" preload="true" />
-  <texture name="OutboxPush_Progress_6" file_name="icons/OutboxPush_Progress_6.png" preload="true" />
-  <texture name="OutboxPush_Selected" file_name="icons/OutboxPush_Selected.png" preload="true" />
-  <texture name="OutboxPush_Selected_Disabled" file_name="icons/OutboxPush_Selected_Disabled.png" preload="true" />
-  <texture name="OutboxPush_Selected_Over" file_name="icons/OutboxPush_Selected_Over.png" preload="true" />
-  <texture name="OutboxPush_Selected_Press" file_name="icons/OutboxPush_Selected_Press.png" preload="true" />
+  <texture name="OutboxStatus_Success" file_name="green_checkmark.png" preload="false" />
+  <texture name="OutboxStatus_Warning" file_name="icons/pop_up_caution.png" preload="false" />
+  <texture name="OutboxStatus_Error" file_name="red_x.png" preload="false" />
 
   <texture name="PanOrbit_Off" file_name="bottomtray/PanOrbit_Off.png" preload="false" />
 
@@ -432,6 +449,7 @@ with the same filename but different name
   <texture name="PushButton_Off" file_name="widgets/PushButton_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
   <texture name="PushButton_On" file_name="widgets/PushButton_On.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
   <texture name="PushButton_On_Selected" file_name="widgets/PushButton_On_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
+  <texture name="PushButton_Over" file_name="widgets/PushButton_Over.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
   <texture name="PushButton_Press" file_name="widgets/PushButton_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
   <texture name="PushButton_Selected" file_name="widgets/PushButton_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
   <texture name="PushButton_Selected_Press" file_name="widgets/PushButton_Selected_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />
@@ -449,7 +467,11 @@ with the same filename but different name
 
   <texture name="Resize_Corner" file_name="windows/Resize_Corner.png" preload="true" />
 
-  <texture name="Rounded_Rect"	file_name="Rounded_Rect.png" preload="true" scale.left="6" scale.top="24" scale.right="58" scale.bottom="6" />
+  <texture name="Rounded_Rect"	file_name="Rounded_Rect.png" preload="true" scale.left="6" scale.top="26" scale.right="58" scale.bottom="6" />
+  <texture name="Rounded_Rect_Top"	file_name="Rounded_Rect.png" preload="true" scale.left="6" scale.top="8" scale.right="58" scale.bottom="0" clip.left="0" clip.right="64" clip.bottom="16" clip.top="32" />
+  <texture name="Rounded_Rect_Bottom"	file_name="Rounded_Rect.png" preload="true" scale.left="6" scale.top="16" scale.right="58" scale.bottom="8" clip.left="0" clip.right="64" clip.bottom="0" clip.top="16"  />
+  <texture name="Rounded_Rect_Left"	file_name="Rounded_Rect.png" preload="true" scale.left="6" scale.top="26" scale.right="32" scale.bottom="6" clip.left="0" clip.right="32" clip.bottom="0" clip.top="32" />
+  <texture name="Rounded_Rect_Right"	file_name="Rounded_Rect.png" preload="true" scale.left="0" scale.top="26" scale.right="26" scale.bottom="6" clip.left="32" clip.right="64" clip.bottom="0" clip.top="32" />
   <texture name="Rounded_Square"	file_name="rounded_square.j2c" preload="true" scale.left="16" scale.top="16" scale.right="112" scale.bottom="16" />
   <texture name="Row_Selection" file_name="navbar/Row_Selection.png" preload="false" />
 
@@ -513,6 +535,10 @@ with the same filename but different name
   <texture name="Unknown_Icon" file_name="icons/unknown_icon.png" preload="true" />
 
   <texture name="Snapshot_Off" file_name="bottomtray/Snapshot_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
+  <texture name="Snapshot_Download" file_name="snapshot_download.png" preload="false" />
+  <texture name="Snapshot_Email" file_name="snapshot_email.png" preload="false" />
+  <texture name="Snapshot_Inventory" file_name="toolbar_icons/inventory.png" preload="false" />
+  <texture name="Snapshot_Profile" file_name="toolbar_icons/profile.png" preload="false" />
 
   <texture name="startup_logo"  file_name="windows/startup_logo.png" preload="true" />
 
@@ -534,21 +560,13 @@ with the same filename but different name
   <texture name="Sync_Progress_5" file_name="icons/Sync_Progress_5.png" preload="true" />
   <texture name="Sync_Progress_6" file_name="icons/Sync_Progress_6.png" preload="true" />
 
-  <texture name="TabIcon_Appearance_Off" file_name="taskpanel/TabIcon_Appearance_Off.png" preload="false" />
-  <texture name="TabIcon_Appearance_Selected" file_name="taskpanel/TabIcon_Appearance_Selected.png" preload="false" />
   <texture name="TabIcon_Close_Off" file_name="taskpanel/TabIcon_Close_Off.png" preload="false" />
-  <texture name="TabIcon_Home_Off" file_name="taskpanel/TabIcon_Home_Off.png" preload="false" />
   <texture name="TabIcon_Home_Selected" file_name="taskpanel/TabIcon_Home_Selected.png" preload="false" />
   <texture name="TabIcon_Me_Off" file_name="taskpanel/TabIcon_Me_Off.png" preload="false" />
-  <texture name="TabIcon_Me_Selected" file_name="taskpanel/TabIcon_Me_Selected.png" preload="false" />
   <texture name="TabIcon_Open_Off" file_name="taskpanel/TabIcon_Open_Off.png" preload="false" />
   <texture name="TabIcon_People_Off" file_name="taskpanel/TabIcon_People_Off.png" preload="false" />
-  <texture name="TabIcon_People_Selected" file_name="taskpanel/TabIcon_People_Selected.png" preload="false" />
-  <texture name="TabIcon_Places_Large" file_name="taskpanel/TabIcon_Places_Large.png" preload="false" />
   <texture name="TabIcon_Places_Off" file_name="taskpanel/TabIcon_Places_Off.png" preload="false" />
-  <texture name="TabIcon_Places_Selected" file_name="taskpanel/TabIcon_Places_Selected.png" preload="false" />
   <texture name="TabIcon_Things_Off" file_name="taskpanel/TabIcon_Things_Off.png" preload="false" />
-  <texture name="TabIcon_Things_Selected" file_name="taskpanel/TabIcon_Things_Selected.png" preload="false" />
 
   <texture name="TabTop_Right_Off" file_name="containers/TabTop_Right_Off.png" preload="false"  scale.left="8" scale.top="8" scale.right="62" scale.bottom="9" />
   <texture name="TabTop_Right_Selected" file_name="containers/TabTop_Right_Selected.png" preload="false"  scale.left="8" scale.top="8" scale.right="62" scale.bottom="9" />
@@ -612,6 +630,12 @@ with the same filename but different name
   <texture name="VoicePTT_Lvl3" file_name="bottomtray/VoicePTT_Lvl3.png" preload="false" />
   <texture name="VoicePTT_Off" file_name="bottomtray/VoicePTT_Off.png" preload="false" />
   <texture name="VoicePTT_On" file_name="bottomtray/VoicePTT_On.png" preload="false" />
+  
+  <texture name="VoicePTT_Lvl1_Dark" file_name="bottomtray/VoicePTT_Lvl1_Dark.png" preload="false" />
+  <texture name="VoicePTT_Lvl2_Dark" file_name="bottomtray/VoicePTT_Lvl2_Dark.png" preload="false" />
+  <texture name="VoicePTT_Lvl3_Dark" file_name="bottomtray/VoicePTT_Lvl3_Dark.png" preload="false" />
+  <texture name="VoicePTT_Off_Dark" file_name="bottomtray/VoicePTT_Off_Dark.png" preload="false" />
+  <texture name="VoicePTT_On_Dark" file_name="bottomtray/VoicePTT_On_Dark.png" preload="false" />
 
   <texture name="Wearables_Divider" file_name="windows/Wearables_Divider.png" preload="false" />
 
@@ -644,9 +668,6 @@ with the same filename but different name
   <!--WARNING OLD ART BELOW *do not use*-->
   <texture name="icn_media_web.tga" preload="true" />
   <texture name="icn_media_movie.tga" preload="true" />
-  <texture name="icn_voice-localchat.tga" />
-  <texture name="icn_voice-groupfocus.tga" />
-  <texture name="icn_voice-pvtfocus.tga" />
 
   <texture name="jump_left_out.tga" file_name="widgets/jump_left_out.png" />
   <texture name="jump_left_in.tga" file_name="widgets/jump_left_in.png" />
@@ -680,7 +701,6 @@ with the same filename but different name
 
   <texture name="icon_avatar_offline.tga" />
   <texture name="icon_avatar_online.tga" />
-  <texture name="icon_day_cycle.tga" />
   <texture name="icon_diurnal.tga" />
   <texture name="icon_for_sale.tga" file_name="icons/Icon_For_Sale.png" />
   <texture name="icon_top_pick.tga" />
@@ -697,7 +717,6 @@ with the same filename but different name
   <texture name="map_avatar_16.tga" />
   <texture name="map_avatar_8.tga" />
   <texture name="map_event.tga" />
-  <texture name="map_event_mature.tga" />
   <texture name="map_home.tga" />
   <texture name="map_infohub.tga" />
   <texture name="map_telehub.tga" />
@@ -737,4 +756,5 @@ with the same filename but different name
   <texture name="Yellow_Gradient" file_name="windows/yellow_gradient.png"/>
   <texture name="Popup_Caution" file_name="icons/pop_up_caution.png"/>
   <texture name="Camera_Drag_Dot" file_name="world/CameraDragDot.png"/>
+  <texture name="NavBar Separator" file_name="navbar/separator.png"/>
 </textures>
diff --git a/indra/newview/skins/default/textures/toolbar_icons/appearance.png b/indra/newview/skins/default/textures/toolbar_icons/appearance.png
new file mode 100644
index 0000000000000000000000000000000000000000..e6b13653885bb803839f1ececacd8f10a9b57fbe
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/appearance.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/avatars.png b/indra/newview/skins/default/textures/toolbar_icons/avatars.png
new file mode 100644
index 0000000000000000000000000000000000000000..8fa0600cee51365850e9f4c7d282e37432d15d73
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/avatars.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/build.png b/indra/newview/skins/default/textures/toolbar_icons/build.png
new file mode 100644
index 0000000000000000000000000000000000000000..e21ab3f0e449443ef5ac93f9282098fe34a121fc
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/build.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png b/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f6a01eaa180c17613ed34818e0fe8025a118a79
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/caret_bottom.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_left.png b/indra/newview/skins/default/textures/toolbar_icons/caret_left.png
new file mode 100644
index 0000000000000000000000000000000000000000..0b8090314c6cabaeddecddc9a3c0deca3dda305e
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/caret_left.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/caret_right.png b/indra/newview/skins/default/textures/toolbar_icons/caret_right.png
new file mode 100644
index 0000000000000000000000000000000000000000..044751560f11625156715bd2d6f378d07f100374
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/caret_right.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/chat.png b/indra/newview/skins/default/textures/toolbar_icons/chat.png
new file mode 100644
index 0000000000000000000000000000000000000000..e0dbac495fcea3c9f804befcf18d44c1a306f184
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/chat.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/destinations.png b/indra/newview/skins/default/textures/toolbar_icons/destinations.png
new file mode 100644
index 0000000000000000000000000000000000000000..e2325f083ad37e13fe97eaa2b0aa7d31117b38ae
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/destinations.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/gestures.png b/indra/newview/skins/default/textures/toolbar_icons/gestures.png
new file mode 100644
index 0000000000000000000000000000000000000000..2404bb4e25328057fa3b9f22490bceb0e6af0520
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/gestures.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/howto.png b/indra/newview/skins/default/textures/toolbar_icons/howto.png
new file mode 100644
index 0000000000000000000000000000000000000000..8594d7111333ede852f8c3ea8dc533c205533b5d
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/howto.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/inventory.png b/indra/newview/skins/default/textures/toolbar_icons/inventory.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab3191255e1f6f73176259ec9c6e55a9de190f44
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/inventory.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/land.png b/indra/newview/skins/default/textures/toolbar_icons/land.png
new file mode 100644
index 0000000000000000000000000000000000000000..89ea7604a4210ea76ca3fc680ff50da6eb984166
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/land.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/map.png b/indra/newview/skins/default/textures/toolbar_icons/map.png
new file mode 100644
index 0000000000000000000000000000000000000000..ed1049b7db7cf2a8d10f54aabcacfb58205f9b89
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/map.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/marketplace.png b/indra/newview/skins/default/textures/toolbar_icons/marketplace.png
new file mode 100644
index 0000000000000000000000000000000000000000..62bad20be69817302e64799a0d12d19ca5a70ad3
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/marketplace.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png b/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png
new file mode 100644
index 0000000000000000000000000000000000000000..9fcf46794d1374c08e3b0407515867289a6c3f90
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/mini_cart.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/mini_map.png b/indra/newview/skins/default/textures/toolbar_icons/mini_map.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab0a6540563a128313e4437fec57cee2eed02097
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/mini_map.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/move.png b/indra/newview/skins/default/textures/toolbar_icons/move.png
new file mode 100644
index 0000000000000000000000000000000000000000..5c2ced737589519f3d500df8abd238206e25a201
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/move.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png b/indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png
new file mode 100644
index 0000000000000000000000000000000000000000..77a7cd5f442ee8b3a81eb54f4bf0eaa18b68d2c5
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/nearbyvoice.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/outbox.png b/indra/newview/skins/default/textures/toolbar_icons/outbox.png
new file mode 100644
index 0000000000000000000000000000000000000000..0f3db1c47c7861a8eb6e4337fde23357b17be16d
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/outbox.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/people.png b/indra/newview/skins/default/textures/toolbar_icons/people.png
new file mode 100644
index 0000000000000000000000000000000000000000..7228ae8e2f17985e31bc955d3725f168f103067e
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/people.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/picks.png b/indra/newview/skins/default/textures/toolbar_icons/picks.png
new file mode 100644
index 0000000000000000000000000000000000000000..befda04b42523584c0ec89f9148496ef1ca17502
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/picks.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/places.png b/indra/newview/skins/default/textures/toolbar_icons/places.png
new file mode 100644
index 0000000000000000000000000000000000000000..97d9fa066c430580aa5b92a9a45c2d75e2668752
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/places.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/preferences.png b/indra/newview/skins/default/textures/toolbar_icons/preferences.png
new file mode 100644
index 0000000000000000000000000000000000000000..4ccd7b8ae1eb24466c9eaeee91ae28498c92ae2c
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/preferences.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/profile.png b/indra/newview/skins/default/textures/toolbar_icons/profile.png
new file mode 100644
index 0000000000000000000000000000000000000000..32fe2bf8ace6f41fef05446d9ea0a14aa4afc05b
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/profile.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/search.png b/indra/newview/skins/default/textures/toolbar_icons/search.png
new file mode 100644
index 0000000000000000000000000000000000000000..bcb11e950d100f3cb33229367754ed0a5f7e9ada
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/search.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/snapshot.png b/indra/newview/skins/default/textures/toolbar_icons/snapshot.png
new file mode 100644
index 0000000000000000000000000000000000000000..d26da9b1d2c78f56bd473c3fad6a891734cb0036
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/snapshot.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/speak.png b/indra/newview/skins/default/textures/toolbar_icons/speak.png
new file mode 100644
index 0000000000000000000000000000000000000000..10cd354c5c571d590bde78888ab06a7d753072a5
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/speak.png differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/view.png b/indra/newview/skins/default/textures/toolbar_icons/view.png
new file mode 100644
index 0000000000000000000000000000000000000000..ddf0df7c26fd9a54a44eb77cc27878aacc3df5b8
Binary files /dev/null and b/indra/newview/skins/default/textures/toolbar_icons/view.png differ
diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_On_Over.png b/indra/newview/skins/default/textures/widgets/Checkbox_On_Over.png
deleted file mode 100644
index bc504d130ee6fdb98e644e67baccf3f797cf7a3f..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/Checkbox_On_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/Checkbox_Over.png b/indra/newview/skins/default/textures/widgets/Checkbox_Over.png
deleted file mode 100644
index 5a7162addf055e4ebe8a8e796785f3aa90af24cc..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/Checkbox_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_Up_On_Selected.png b/indra/newview/skins/default/textures/widgets/ComboButton_Up_On_Selected.png
deleted file mode 100644
index fd1d11dd0b5f981513643df7c7fe497295e8447c..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/ComboButton_Up_On_Selected.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/DisclosureArrow_Closed_Over.png b/indra/newview/skins/default/textures/widgets/DisclosureArrow_Closed_Over.png
deleted file mode 100644
index 45bcb0464e931dac411c22a836319bbcef6a043b..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/DisclosureArrow_Closed_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/DisclosureArrow_Opened_Over.png b/indra/newview/skins/default/textures/widgets/DisclosureArrow_Opened_Over.png
deleted file mode 100644
index dabbd85b34ef4b60aed62fd9bf90e5db2b2f7cfd..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/DisclosureArrow_Opened_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_On_Over.png b/indra/newview/skins/default/textures/widgets/PushButton_On_Over.png
deleted file mode 100644
index 064a4c4f7f116d00ff1ff6db55a9ac967afea874..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/PushButton_On_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Selected_Over.png b/indra/newview/skins/default/textures/widgets/PushButton_Selected_Over.png
deleted file mode 100644
index 064a4c4f7f116d00ff1ff6db55a9ac967afea874..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/PushButton_Selected_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_On_Over.png b/indra/newview/skins/default/textures/widgets/RadioButton_On_Over.png
deleted file mode 100644
index 3e7d803a28209bd595bf02707c72b23e0f846d3b..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/RadioButton_On_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/RadioButton_Over.png b/indra/newview/skins/default/textures/widgets/RadioButton_Over.png
deleted file mode 100644
index a5c8cbe29364fc5f220b364d9b0e28b8da2659c5..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/RadioButton_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over.png
deleted file mode 100644
index 605d159eaaea086018c245614a33e3057c02daad..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/ScrollArrow_Down_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over.png
deleted file mode 100644
index c79547dffd197654373dffd430120952e3dfd028..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over.png
deleted file mode 100644
index e353542ad9def233587cefe40bebf9680fa93c24..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over.png
deleted file mode 100644
index dd2fceb71680ba4ad8bde591039d6e80f4b62f11..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/ScrollArrow_Up_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/ScrollThumb_Horiz_Over.png b/indra/newview/skins/default/textures/widgets/ScrollThumb_Horiz_Over.png
deleted file mode 100644
index cf78ea392474e13d0287905499da79b46854d30b..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/ScrollThumb_Horiz_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/ScrollThumb_Vert_Over.png b/indra/newview/skins/default/textures/widgets/ScrollThumb_Vert_Over.png
deleted file mode 100644
index 53587197dad4f396ba00eb49c61a096324d1b1b1..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/ScrollThumb_Vert_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On.png
deleted file mode 100644
index 7afb9c99c38c50db3d3335471d5527d241eaf661..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Disabled.png
deleted file mode 100644
index 77c42245392caee5e4ba140309fcbdc9d8419d5c..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Disabled.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Over.png
deleted file mode 100644
index 8b93dd551e9b9e5f5acc70e7facd89256f142618..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Selected.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Selected.png
deleted file mode 100644
index 3f207cbea2beb7aa94659eee314601f87f2cb240..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_On_Selected.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On.png
deleted file mode 100644
index 220df9db251b1404f4e10998d4b1c0da525717f0..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On_Over.png
deleted file mode 100644
index 5bbcdcb0b4f263c33d2bae9a8837ce72a8456764..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On_Press.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On_Press.png
deleted file mode 100644
index dde367f05e72f301c18d777aa484fff31532684f..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_On_Press.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Over.png
deleted file mode 100644
index d4f30b9adb6c16c4629bef7d9be26420d589b0ff..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Over.png
deleted file mode 100644
index 5bbcdcb0b4f263c33d2bae9a8837ce72a8456764..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On.png
deleted file mode 100644
index 467c43fc901248515319be49ba2295cceb7a3091..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Over.png
deleted file mode 100644
index 204973689730bcb95a914288be4d2f1b1f877653..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Over.png
deleted file mode 100644
index 204973689730bcb95a914288be4d2f1b1f877653..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/SliderThumb_Over.png b/indra/newview/skins/default/textures/widgets/SliderThumb_Over.png
deleted file mode 100644
index b6f900d3bdbdf27e2a676ed1b0a3f126a972de15..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/SliderThumb_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Down_Over.png b/indra/newview/skins/default/textures/widgets/Stepper_Down_Over.png
deleted file mode 100644
index 01e0a2d9f18e6c3fa64f5cc23a05e5423788c367..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/Stepper_Down_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Up_Over.png b/indra/newview/skins/default/textures/widgets/Stepper_Up_Over.png
deleted file mode 100644
index 2ce84ea5be2a193e0ade88ddc717b69b15665b15..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/widgets/Stepper_Up_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/windows/Flyout.png b/indra/newview/skins/default/textures/windows/Flyout.png
deleted file mode 100644
index 5596b194c946c03038f1faff7b83f19e27acebf9..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/windows/Flyout.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/windows/Flyout_Left.png b/indra/newview/skins/default/textures/windows/Flyout_Left.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ac9fe2efd4bad4f71070826fd23b1a64eb5080a
Binary files /dev/null and b/indra/newview/skins/default/textures/windows/Flyout_Left.png differ
diff --git a/indra/newview/skins/default/textures/windows/Flyout_Pointer_Up.png b/indra/newview/skins/default/textures/windows/Flyout_Pointer_Up.png
deleted file mode 100644
index 361fab59e0a382198a5e7236cc4f036f2d3230f6..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/windows/Flyout_Pointer_Up.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/windows/Flyout_Right.png b/indra/newview/skins/default/textures/windows/Flyout_Right.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa1f0625aadf1c81e5034f21eb66ecfa88a451ae
Binary files /dev/null and b/indra/newview/skins/default/textures/windows/Flyout_Right.png differ
diff --git a/indra/newview/skins/default/textures/windows/Icon_Gear_Over.png b/indra/newview/skins/default/textures/windows/Icon_Gear_Over.png
deleted file mode 100644
index 67bd3993587bc5109e2ef565a9da0b034ad849f6..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/windows/Icon_Gear_Over.png and /dev/null differ
diff --git a/indra/newview/skins/default/textures/windows/Icon_Undock_Press.png b/indra/newview/skins/default/textures/windows/Icon_Undock_Press.png
deleted file mode 100644
index 3ab8c3666af63e3079401cb4166408039429675a..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/default/textures/windows/Icon_Undock_Press.png and /dev/null differ
diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml
index 0ccaab73bafb02d312ca3d07dabd073fd8713229..fc8bc33096d17eb5a96f689fb1511afe9ef87da1 100644
--- a/indra/newview/skins/default/xui/da/floater_about.xml
+++ b/indra/newview/skins/default/xui/da/floater_about.xml
@@ -10,7 +10,7 @@
 	<floater.string name="AboutPosition">
 		Du er ved [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] i regionen [REGION] lokaliseret ved &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		CPU: [CPU]
diff --git a/indra/newview/skins/default/xui/da/floater_buy_currency.xml b/indra/newview/skins/default/xui/da/floater_buy_currency.xml
index ec47b2f445b05f15d040bfee30e99d2a1a58b6df..3c0428b2b08437dbc0f515696ad81c7eae7e2288 100644
--- a/indra/newview/skins/default/xui/da/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/da/floater_buy_currency.xml
@@ -46,7 +46,7 @@
 		L$ [AMT]
 	</text>
 	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+		[http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency]
 	</text>
 	<text name="exchange_rate_note">
 		Indtast beløbet for at se nyeste valutakurs.
diff --git a/indra/newview/skins/default/xui/da/floater_camera.xml b/indra/newview/skins/default/xui/da/floater_camera.xml
index 5b7ef6db5460f829908dfb6938e3a2172437f79c..b5d5e8bc084b00c21567ff64bf4eae9711d8b4a1 100644
--- a/indra/newview/skins/default/xui/da/floater_camera.xml
+++ b/indra/newview/skins/default/xui/da/floater_camera.xml
@@ -9,15 +9,6 @@
 	<floater.string name="move_tooltip">
 		Flyt kamera op og ned, til venstre og højre
 	</floater.string>
-	<floater.string name="camera_modes_title">
-		Kamera valg
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		Kredsløb zoom panorering
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		Forvalg
-	</floater.string>
 	<floater.string name="free_mode_title">
 		Se objekt
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/da/floater_nearby_chat.xml b/indra/newview/skins/default/xui/da/floater_nearby_chat.xml
index bd17224259a7ea66a7e0cb07dbf36b369c2f7575..76bc40edacc6a970802dd918d2bad5a8720f122f 100644
--- a/indra/newview/skins/default/xui/da/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/da/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="nearby_chat" title="CHAT NÆRVED">
-	<check_box label="Oversæt chat (håndteret af Google)" name="translate_chat_checkbox"/>
+	<check_box label="Oversæt chat" name="translate_chat_checkbox"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml
index c2f7d26dc974655c808ccaf21c77e98180693832..d695cd1f896c446899361f744610017d054bba3f 100644
--- a/indra/newview/skins/default/xui/da/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/da/menu_viewer.xml
@@ -20,8 +20,6 @@
 			<menu_item_call label="Væk" name="Set Away"/>
 			<menu_item_call label="Optaget" name="Set Busy"/>
 		</menu>
-		<menu_item_call label="Anmod om administrator status" name="Request Admin Options"/>
-		<menu_item_call label="Stop administrator status" name="Leave Admin Options"/>
 		<menu_item_call label="Afslut [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Kommunikér" name="Communicate">
@@ -36,11 +34,10 @@
 		<menu_item_check label="Søg" name="Search"/>
 		<menu_item_call label="Foto" name="Take Snapshot"/>
 		<menu_item_call label="Opret landemærke for dette sted" name="Create Landmark Here"/>
-		<menu label="Profil for sted" name="Land">
-			<menu_item_call label="Profil for sted" name="Place Profile"/>
-			<menu_item_call label="Om land" name="About Land"/>
-			<menu_item_call label="Region/Estate" name="Region/Estate"/>
-		</menu>
+		<menu_item_separator/>
+		<menu_item_call label="Profil for sted" name="Place Profile"/>
+		<menu_item_call label="Om land" name="About Land"/>
+		<menu_item_call label="Region/Estate" name="Region/Estate"/>
 		<menu_item_call label="Køb dette land" name="Buy Land"/>
 		<menu_item_call label="Mit land" name="My Land"/>
 		<menu label="Vis" name="LandShow">
@@ -56,7 +53,7 @@
 		</menu>
 		<menu_item_call label="Teleport hjem" name="Teleport Home"/>
 		<menu_item_call label="Sæt dette sted som &apos;Hjem&apos;" name="Set Home to Here"/>
-		<menu label="Sol" name="Environment Settings">
+		<menu label="Sol" name="Sun">
 			<menu_item_call label="Solopgang" name="Sunrise"/>
 			<menu_item_call label="Middag" name="Noon"/>
 			<menu_item_call label="Solnedgang" name="Sunset"/>
@@ -121,6 +118,7 @@
 			<menu_item_call label="Model..." name="Upload Model"/>
 			<menu_item_call label="Model Wizard..." name="Upload Model Wizard"/>
 			<menu_item_call label="Mange (L$[COST] pr. fil)..." name="Bulk Upload"/>
+			<menu_item_call label="Sæt standardværdier for upload rettigheder" name="perm prefs"/>
 		</menu>
 		<menu_item_call label="Fortyd" name="Undo"/>
 		<menu_item_call label="Gendan" name="Redo"/>
@@ -154,22 +152,22 @@
 			<menu_item_check label="Vis muse-sigte" name="ShowCrosshairs"/>
 		</menu>
 		<menu label="Gengivelsestyper" name="Rendering Types">
-			<menu_item_check label="Simpel" name="Simple"/>
-			<menu_item_check label="Alpha" name="Alpha"/>
-			<menu_item_check label="Træer" name="Tree"/>
-			<menu_item_check label="Avatarer" name="Character"/>
-			<menu_item_check label="Surface Patch" name="Surface Patch"/>
-			<menu_item_check label="Himmel" name="Sky"/>
-			<menu_item_check label="Vand" name="Water"/>
-			<menu_item_check label="Jord" name="Ground"/>
-			<menu_item_check label="Volume" name="Volume"/>
-			<menu_item_check label="Græs" name="Grass"/>
-			<menu_item_check label="Skyer" name="Clouds"/>
-			<menu_item_check label="Partikler" name="Particles"/>
-			<menu_item_check label="Bump" name="Bump"/>
+			<menu_item_check label="Simpel" name="Rendering Type Simple"/>
+			<menu_item_check label="Alpha" name="Rendering Type Alpha"/>
+			<menu_item_check label="Træer" name="Rendering Type Tree"/>
+			<menu_item_check label="Avatarer" name="Rendering Type Character"/>
+			<menu_item_check label="Surface Patch" name="Rendering Type Surface Patch"/>
+			<menu_item_check label="Himmel" name="Rendering Type Sky"/>
+			<menu_item_check label="Vand" name="Rendering Type Water"/>
+			<menu_item_check label="Jord" name="Rendering Type Ground"/>
+			<menu_item_check label="Volume" name="Rendering Type Volume"/>
+			<menu_item_check label="Græs" name="Rendering Type Grass"/>
+			<menu_item_check label="Skyer" name="Rendering Type Clouds"/>
+			<menu_item_check label="Partikler" name="Rendering Type Particles"/>
+			<menu_item_check label="Bump" name="Rendering Type Bump"/>
 		</menu>
 		<menu label="Gengivelsesegenskaber" name="Rendering Features">
-			<menu_item_check label="UI" name="UI"/>
+			<menu_item_check label="UI" name="ToggleUI"/>
 			<menu_item_check label="Valgte" name="Selected"/>
 			<menu_item_check label="Fremhævede" name="Highlighted"/>
 			<menu_item_check label="Dynamiske teksturer" name="Dynamic Textures"/>
@@ -181,10 +179,7 @@
 		<menu_item_call label="Tøm gruppe cache" name="ClearGroupCache"/>
 		<menu_item_check label="Muse udjævning" name="Mouse Smoothing"/>
 		<menu label="Shortcuts" name="Shortcuts">
-			<menu_item_call label="Billede (L$[COST])..." name="Upload Image"/>
-			<menu_item_check label="Søg" name="Search"/>
 			<menu_item_call label="Frigør taster" name="Release Keys"/>
-			<menu_item_call label="Sæt UI størrelse til standard" name="Set UI Size to Default"/>
 			<menu_item_check label="Vis avanceret menu (gammel genvej)" name="Show Advanced Menu - legacy shortcut"/>
 			<menu_item_call label="Luk vindue" name="Close Window"/>
 			<menu_item_call label="Luk alle vinduer" name="Close All Windows"/>
@@ -193,13 +188,6 @@
 			<menu_item_check label="&quot;Joystick Flycam&quot;" name="Joystick Flycam"/>
 			<menu_item_call label="Nulstil udsyn" name="Reset View"/>
 			<menu_item_call label="Se på den sidste der chattede" name="Look at Last Chatter"/>
-			<menu label="Vælg byggeværktøj" name="Select Tool">
-				<menu_item_call label="Fokuseringsværktøj" name="Focus"/>
-				<menu_item_call label="Flyt værktøj" name="Move"/>
-				<menu_item_call label="Redigeringsværktøj" name="Edit"/>
-				<menu_item_call label="Opret værktøj" name="Create"/>
-				<menu_item_call label="Land værktøj" name="Land"/>
-			</menu>
 			<menu_item_call label="Zoom ind" name="Zoom In"/>
 			<menu_item_call label="Zoom standard" name="Zoom Default"/>
 			<menu_item_call label="Zoom ud" name="Zoom Out"/>
@@ -275,9 +263,8 @@
 			<menu_item_call label="Mist en netværkspakke" name="Drop a Packet"/>
 		</menu>
 		<menu_item_call label="Stød, skub &amp; slag" name="Bumps, Pushes &amp;amp; Hits"/>
-		<menu label="Verden" name="World">
+		<menu label="Verden" name="DevelopWorld">
 			<menu_item_check label="Vælg anden sol end region" name="Sim Sun Override"/>
-			<menu_item_check label="Pejlelys blink effekt" name="Cheesy Beacon"/>
 			<menu_item_check label="Fast vejr" name="Fixed Weather"/>
 			<menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/>
 		</menu>
@@ -299,11 +286,11 @@
 		</menu>
 		<menu label="Avatar" name="Character">
 			<menu label="Grab Baked Texture" name="Grab Baked Texture">
-				<menu_item_call label="Iris" name="Iris"/>
-				<menu_item_call label="Hovede" name="Head"/>
-				<menu_item_call label="Overkrop" name="Upper Body"/>
-				<menu_item_call label="Underkrop" name="Lower Body"/>
-				<menu_item_call label="Nederdel" name="Skirt"/>
+				<menu_item_call label="Iris" name="Grab Iris"/>
+				<menu_item_call label="Hovede" name="Grab Head"/>
+				<menu_item_call label="Overkrop" name="Grab Upper Body"/>
+				<menu_item_call label="Underkrop" name="Grab Lower Body"/>
+				<menu_item_call label="Nederdel" name="Grab Skirt"/>
 			</menu>
 			<menu label="Avatar tests" name="Character Tests">
 				<menu_item_call label="Skift avatar geometri" name="Toggle Character Geometry"/>
@@ -325,8 +312,8 @@
 		<menu_item_check label="Vis administrationsmenu" name="View Admin Options"/>
 	</menu>
 	<menu label="Administrér" name="Admin">
-		<menu label="Object">
-			<menu_item_call label="Tag kopi" name="Take Copy"/>
+		<menu label="Object" name="AdminObject">
+			<menu_item_call label="Tag kopi" name="Admin Take Copy"/>
 			<menu_item_call label="Gennemtving ejer til mig" name="Force Owner To Me"/>
 			<menu_item_call label="Gennemtving ejer tolerance" name="Force Owner Permissive"/>
 			<menu_item_call label="Slet" name="Delete"/>
diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml
index 3ccdfc036a79a0ca9fa04b311b207f50ad2211ae..cf6f1ccdd9f97563634a2301a8d7994fdccf3984 100644
--- a/indra/newview/skins/default/xui/da/notifications.xml
+++ b/indra/newview/skins/default/xui/da/notifications.xml
@@ -438,7 +438,7 @@ Tilbyd venskab til [NAME]?
 		</form>
 	</notification>
 	<notification name="RemoveFromFriends">
-		Ønsker du at fjerne [NAME] fra din venneliste?
+		Ønsker du at fjerne &lt;nolink&gt;[NAME]&lt;/nolink&gt; fra din venneliste?
 	</notification>
 	<notification name="ConfirmItemDeleteHasLinks">
 		Mindst en af genstandene har lænkede genstande der peger på den. Hvis du sletter denne genstand, vil lænkninger ikke virke mere.  Det anbefales kraftigt at fjerne lænkninger først.
@@ -1023,10 +1023,10 @@ Henvis til dette fra en hjemmeside for at give andre nem adgang til denne lokati
 		Erstattet manglende tøj/kropsdele med standard.
 	</notification>
 	<notification name="FriendOnline">
-		[NAME] er logget på
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; er logget på
 	</notification>
 	<notification name="FriendOffline">
-		[NAME] er logget af
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; er logget af
 	</notification>
 	<notification name="AddSelfFriend">
 		Selvom du nok er meget sød, kan du ikke tilføje dig selv som ven.
@@ -1404,10 +1404,10 @@ Prøv igen om lidt.
 (Som udgangspunkt, vil du være i stand til at se den andens online status)
 	</notification>
 	<notification name="FriendshipAccepted">
-		[NAME] accepterede dit tilbud om venskab.
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; accepterede dit tilbud om venskab.
 	</notification>
 	<notification name="FriendshipDeclined">
-		[NAME] afviste dit tilbud om venskab.
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; afviste dit tilbud om venskab.
 	</notification>
 	<notification name="FriendshipAcceptedByMe">
 		Tilbud om venskab accepteret.
diff --git a/indra/newview/skins/default/xui/da/panel_my_profile.xml b/indra/newview/skins/default/xui/da/panel_my_profile.xml
deleted file mode 100644
index 94da58389f2cc8d1f65a95a10045f7a8f0599daf..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/da/panel_my_profile.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
-	<string name="no_partner_text" value="Ingen"/>
-	<string name="no_group_text" value="Ingen"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="scroll_content_panel">
-					<panel name="second_life_image_panel">
-						<text name="display_name_descr_text">
-							Brugernavn
-						</text>
-						<text name="name_descr_text">
-							Visningsnavn
-						</text>
-						<button label="Profil" name="see_profile_btn" tool_tip="Se profil for denne avatar"/>
-					</panel>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_notes.xml b/indra/newview/skins/default/xui/da/panel_notes.xml
deleted file mode 100644
index 7d8097f6ffeea0b60b15a569199bfd2f5e243434..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/da/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Noter &amp; Privatliv" name="panel_notes">
-	<layout_stack name="layout">
-		<layout_panel name="notes_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<text name="status_message" value="Min private noter:"/>
-					<text name="status_message2" value="Tillad denne person at:"/>
-					<check_box label="Se min online status" name="status_check"/>
-					<check_box label="Se mig på kortet" name="map_check"/>
-					<check_box label="Editére, slette og tage mine objekter" name="objects_check"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-		<layout_panel name="notes_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="Tilføj ven" name="add_friend" tool_tip="Tilbyd venskab til beboer"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="IM" name="im" tool_tip="Ã…ben session med personlige beskeder"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="Opkald" name="call" tool_tip="Opkald til denne beboer"/>
-				</layout_panel>
-				<layout_panel name="show_on_map_btn_lp">
-					<button label="Kort" name="show_on_map_btn" tool_tip="Vis denne beboer på kortet"/>
-				</layout_panel>
-				<layout_panel name="teleport_btn_lp">
-					<button label="Teleportér" name="teleport" tool_tip="Tilbyd teleport"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml
index 19c82509cdb2a7ac2a6a8a689e215d05fe77a1ea..890a3038ef7d50caae17d050b938f8b3105f1a70 100644
--- a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml
@@ -31,7 +31,7 @@
 	<spinner label="Tid før chatvisning forsvinder:" name="nearby_toasts_fadingtime"/>
 	<check_box name="translate_chat_checkbox"/>
 	<text name="translate_chb_label">
-		Benyt maskinel oversættelse ved chat (håndteret af Google)
+		Benyt maskinel oversættelse ved chat
 	</text>
 	<text name="translate_language_text" width="110">
 		Oversæt chat til :
@@ -51,7 +51,7 @@
 		<combo_box.item label="Русский (Russisk)" name="Russian"/>
 		<combo_box.item label="Türkçe (Tyrkisk)" name="Turkish"/>
 		<combo_box.item label="Українська (Ukrainsk)" name="Ukrainian"/>
-		<combo_box.item label="中文 (简体) (Kinesisk)" name="Chinese"/>
+		<combo_box.item label="中文 (正體) (Kinesisk)" name="Chinese"/>
 		<combo_box.item label="日本語 (Japansk)" name="Japanese"/>
 		<combo_box.item label="한국어 (Koreansk)" name="Korean"/>
 	</combo_box>
diff --git a/indra/newview/skins/default/xui/da/panel_profile.xml b/indra/newview/skins/default/xui/da/panel_profile.xml
deleted file mode 100644
index db85eb23a840822a0aae5d36b17a9374091cdc8f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/da/panel_profile.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
-	<string name="no_partner_text" value="Ingen"/>
-	<string name="no_group_text" value="Ingen"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<panel name="second_life_image_panel">
-						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
-					</panel>
-					<panel name="first_life_image_panel">
-						<text name="title_rw_descr_text" value="Real World:"/>
-					</panel>
-					<text name="title_member_text" value="Beboer siden:"/>
-					<text name="title_acc_status_text" value="Konto status:"/>
-					<text name="title_partner_text" value="Partner:"/>
-					<panel name="partner_data_panel">
-						<text initial_value="(henter)" name="partner_text"/>
-					</panel>
-					<text name="title_groups_text" value="Grupper:"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-	<layout_stack name="layout_verb_buttons">
-		<layout_panel name="profile_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="Tilføj ven" name="add_friend" tool_tip="Tilbyd venskab til beboeren"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="Personlig besked" name="im" tool_tip="Ã…ben session med personlig besked"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="Opkald" name="call" tool_tip="Opkald til denne beboer"/>
-				</layout_panel>
-				<layout_panel name="chat_btn_lp">
-					<button label="Teleportér" name="teleport" tool_tip="Tilbyd teleport"/>
-				</layout_panel>
-				<layout_panel name="overflow_btn_lp">
-					<menu_button label="â–¼" name="overflow_btn" tool_tip="Betal eller del beholdning med denne beboer"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="profile_me_buttons_panel">
-			<button label="Redigér profil" name="edit_profile_btn" tool_tip="Redigér din personlige information"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_profile_view.xml b/indra/newview/skins/default/xui/da/panel_profile_view.xml
deleted file mode 100644
index e6e8ca4d1027e99071f52ef0417ab12d7b45a3ea..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/da/panel_profile_view.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
-	<string name="status_online">
-		Online
-	</string>
-	<string name="status_offline">
-		Offline
-	</string>
-	<text name="display_name_label" value="Visningsnavn:"/>
-	<text name="solo_username_label" value="Brugernavn:"/>
-	<text name="status" value="Online"/>
-	<text name="user_name_small" value="Se på mig med dette enormt ekstremt super lange navn"/>
-	<button name="copy_to_clipboard" tool_tip="Kopiér til udskriftsholder"/>
-	<text name="user_label" value="Brugernavn:"/>
-	<tab_container name="tabs">
-		<panel label="PROFIL" name="panel_profile"/>
-		<panel label="FAVORITTER" name="panel_picks"/>
-		<panel label="NOTER &amp; PRIVATLIV" name="panel_notes"/>
-	</tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml
index 165d47c931b994bd5532d79d2c86e51fa6c7cdda..11d100eeff5442c64af52f205be0c858a11f0dfb 100644
--- a/indra/newview/skins/default/xui/da/strings.xml
+++ b/indra/newview/skins/default/xui/da/strings.xml
@@ -560,6 +560,9 @@ Prøv venligst om lidt igen.
 	<string name="mesh">
 		mesh
 	</string>
+	<string name="AvatarEditingAppearance">
+		(Redigering Udseende)
+	</string>
 	<string name="AvatarAway">
 		Væk
 	</string>
diff --git a/indra/newview/skins/default/xui/da/teleport_strings.xml b/indra/newview/skins/default/xui/da/teleport_strings.xml
index 071aab46f43d8af28477c81998a84729c78610aa..0d89fae986096f5062befcfcf100e7dc61bb3308 100644
--- a/indra/newview/skins/default/xui/da/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/da/teleport_strings.xml
@@ -19,6 +19,10 @@ Hvis du stadig ikke kan teleporte, prøv venligst at logge ud og ligge ind for a
 		<message name="timeout_tport">
 			Beklager, systemet kunne ikke fuldføre teleport forbindelse.
 Prøv igen om lidt.
+		</message>
+		<message name="NoHelpIslandTP">
+		Du kan ikke teleportere tilbage til Welcome Island.
+Gå til &apos;Welcome Island Puclic&apos; for at prøve tutorial igen.
 		</message>
 		<message name="noaccess_tport">
 			Beklager, du har ikke adgang til denne teleport destination.
diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml
index 519efe9ce886144100a5e39cc8d7587f3a2013e6..b4c28daac99e178055ed974ad250dc4410543ed5 100644
--- a/indra/newview/skins/default/xui/de/floater_about.xml
+++ b/indra/newview/skins/default/xui/de/floater_about.xml
@@ -10,7 +10,7 @@
 	<floater.string name="AboutPosition">
 		Sie befinden sich in [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] auf &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		CPU: [CPU]
@@ -37,6 +37,9 @@ Voice-Serverversion: [VOICE_VERSION]
 	<floater.string name="AboutTraffic">
 		Paketverlust: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
 	</floater.string>
+	<floater.string name="ErrorFetchingServerReleaseNotesURL">
+		Fehler beim Abrufen der URL für die Server-Versionshinweise.
+	</floater.string>
 	<tab_container name="about_tab">
 		<panel label="Info" name="support_panel">
 			<button label="In Zwischenablage kopieren" name="copy_btn"/>
@@ -64,32 +67,34 @@ Voice-Serverversion: [VOICE_VERSION]
 		<panel label="Lizenzen" name="licenses_panel">
 			<text_editor name="credits_editor">
 				3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion.
-APR Copyright (C) 2000-2004 The Apache Software Foundation.
-Collada DOM Copyright 2005 Sony Computer Entertainment Inc.
-cURL Copyright (C) 1996-2002, 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, The FreeType Project (www.freetype.org).
-GL Copyright (C) 1999-2004 Brian Paul.
-GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University sowie 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) 2001, Xiphophorus.
-OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
-PCRE Copyright (c) 1997-2008 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-2002 Jean-loup Gailly und Mark Adler.
-google-perftools Copyright (c) 2005, Google Inc.
+        APR Copyright (C) 2000-2004 The Apache Software Foundation.
+        Collada DOM Copyright 2005 Sony Computer Entertainment Inc.
+        cURL Copyright (C) 1996-2002, 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, The FreeType Project (www.freetype.org).
+        GL Copyright (C) 1999-2004 Brian Paul.
+        GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University sowie 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) 2001, Xiphophorus.
+        OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
+        PCRE Copyright (c) 1997-2008 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-2002 Jean-loup Gailly und Mark Adler.
+        google-perftools Copyright (c) 2005, Google Inc.
+
+        Second Life Viewer verwendet Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (und Lizenzgeber). Alle Rechte vorbehalten. Details siehe www.havok.com.
 
-Second Life Viewer verwendet Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (und Lizenzgeber). Alle Rechte vorbehalten. Details siehe www.havok.com.
+        Diese Software enthält von der NVIDIA Corporation bereitgestellten Quellcode.
 
-Alle Rechte vorbehalten.  Details siehe licenses.txt.
+        Alle Rechte vorbehalten.  Details siehe licenses.txt.
 
-Audiocodierung für Voice-Chat: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
+        Audiocodierung für Voice-Chat: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
 			</text_editor>
 		</panel>
 	</tab_container>
diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml
index c65dc5f41d6ad981c9c1bb8709d5345ac284682c..b893ab79e506767ef7ae592c549ec4eacc27031c 100644
--- a/indra/newview/skins/default/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_about_land.xml
@@ -130,7 +130,7 @@
 				Traffic:
 			</text>
 			<text name="DwellText">
-				0
+				Laden...
 			</text>
 			<button label="Land kaufen" label_selected="Land kaufen..." name="Buy Land..."/>
 			<button label="Linden-Verkauf" label_selected="Linden-Verkauf..." name="Linden Sale..." tool_tip="Land muss Eigentum und auf Inhalt gesetzt sein und nicht zur Auktion stehen."/>
@@ -214,19 +214,19 @@ werden.
 				Objektbonusfaktor in Region: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				Prim-Verwendung:
+				Regionskapazität:
 			</text>
 			<text name="objects_available">
 				[COUNT] von [MAX] ([AVAILABLE] verfügbar)
 			</text>
 			<text name="Primitives parcel supports:">
-				Von Parzelle unterstützte Prims:
+				Parzellenlandkapazität:
 			</text>
 			<text name="object_contrib_text">
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
-				Prims auf Parzelle:
+				Parzellenlandauswirkung:
 			</text>
 			<text name="total_objects_text">
 				[COUNT]
@@ -310,13 +310,15 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 				Kein Stoßen (regional)
 			</panel.string>
 			<panel.string name="see_avs_text">
-				Auf dieser Parzelle Einwohner sehen und mit ihnen chatten
+				Avatare auf anderen Parzellen können
 			</panel.string>
 			<text name="allow_label">
 				Anderen Einwohnern gestatten:
 			</text>
-			<check_box label="Terrain bearbeiten" name="edit land check" tool_tip="Falls aktiviert, kann jeder Ihr Land terraformen. Am besten ist es, wenn Sie diese Option deaktiviert lassen. Sie können Ihr eigenes Land jederzeit bearbeiten."/>
-			<check_box label="Fliegen" name="check fly" tool_tip="Falls aktiviert, können Einwohner auf Ihrem Land fliegen. Falls nicht aktiviert, können Einwohner lediglich auf Ihr Land fliegen und dort landen (dann jedoch nicht wieder weiterfliegen) oder über Ihr Land hinweg fliegen."/>
+			<text name="allow_label0">
+				Fliegen:
+			</text>
+			<check_box label="Jeder" name="check fly" tool_tip="Falls aktiviert, können Einwohner auf Ihrem Land fliegen. Falls nicht aktiviert, können Einwohner lediglich auf Ihr Land fliegen und dort landen (dann jedoch nicht wieder weiterfliegen) oder über Ihr Land hinweg fliegen."/>
 			<text name="allow_label2">
 				Bauen:
 			</text>
@@ -332,9 +334,6 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 			</text>
 			<check_box label="Jeder" name="check other scripts"/>
 			<check_box label="Gruppe" name="check group scripts"/>
-			<text name="land_options_label">
-				Landoptionen:
-			</text>
 			<check_box label="Sicher (kein Schaden)" name="check safe" tool_tip="Falls aktiviert, wird Land auf Option „Sicher“ eingestellt, Kampfschäden sind deaktiviert. Ansonsten sind Kampfschäden aktiviert."/>
 			<check_box label="Kein Stoßen" name="PushRestrictCheck" tool_tip="Verhindert Stoßen durch Skripte. Durch Aktivieren dieser Option verhindern Sie störendes Verhalten auf Ihrem Land."/>
 			<check_box label="Ort in Suche anzeigen (30 L$/Woche)" name="ShowDirectoryCheck" tool_tip="Diese Parzelle in Suchergebnissen anzeigen."/>
@@ -375,9 +374,9 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 			</text>
 			<texture_picker label="" name="snapshot_ctrl" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/>
 			<text name="allow_label5">
-				Einwohnern auf anderen Parzellen Folgendes gestatten:
+				Avatare auf dieser Parzelle sehen und mit ihnen chatten
 			</text>
-			<check_box label="Avatare sehen" name="SeeAvatarsCheck" tool_tip="Gestattet sowohl Einwohnern auf anderen Parzellen, Einwohner auf dieser Parzelle zu sehen und mit ihnen zu chatten, als auch Ihnen, diese Einwohner auf anderen Parzellen zu sehen und mit ihnen zu chatten."/>
+			<check_box label="Avatare sehen" name="SeeAvatarsCheck" tool_tip="Gestattet sowohl Avataren auf anderen Parzellen, Avatare auf dieser Parzelle zu sehen und mit ihnen zu chatten, als auch Ihnen, diese Avatare auf anderen Parzellen zu sehen und mit ihnen zu chatten."/>
 			<text name="landing_point">
 				Landepunkt: [LANDING]
 			</text>
diff --git a/indra/newview/skins/default/xui/de/floater_avatar.xml b/indra/newview/skins/default/xui/de/floater_avatar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ba0dd54d96e717e7073f8524d002939cfc13652b
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="AVATAR AUSWÄHLEN"/>
diff --git a/indra/newview/skins/default/xui/de/floater_buy_currency.xml b/indra/newview/skins/default/xui/de/floater_buy_currency.xml
index 38321b79065bbe8ee41b6ebc74d2e2fbedcaf609..65926c088c72f5cb79029aee713563129711d2d7 100644
--- a/indra/newview/skins/default/xui/de/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/de/floater_buy_currency.xml
@@ -46,7 +46,7 @@
 		[AMT] L$
 	</text>
 	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php?lang=de-DE Zahlungsart] | [http://www.secondlife.com/my/account/currency.php?lang=de-DE Währung] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=de-DE Umtauschrate]
+		[http://www.secondlife.com/my/account/payment_method_management.php Zahlungsart] | [http://www.secondlife.com/my/account/currency.php Währung]
 	</text>
 	<text name="exchange_rate_note">
 		Geben Sie den Betrag erneut ein, um die aktuellste Umtauschrate anzuzeigen.
diff --git a/indra/newview/skins/default/xui/de/floater_camera.xml b/indra/newview/skins/default/xui/de/floater_camera.xml
index d49c207f98c0996d1715a618e54a55c6b2479682..163ef87d8c18d3e1c82de94b52709aa2918aa276 100644
--- a/indra/newview/skins/default/xui/de/floater_camera.xml
+++ b/indra/newview/skins/default/xui/de/floater_camera.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
+<floater name="camera_floater" title="KAMERASTEUERUNGEN">
 	<floater.string name="rotate_tooltip">
 		Kamera um Fokus drehen
 	</floater.string>
@@ -9,15 +9,6 @@
 	<floater.string name="move_tooltip">
 		Kamera nach oben, unten, links und rechts bewegen
 	</floater.string>
-	<floater.string name="camera_modes_title">
-		Kameramodi
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		Kreisen - Zoomen - Schwenken
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		Ansichten
-	</floater.string>
 	<floater.string name="free_mode_title">
 		Objekt ansehen
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/de/floater_chat_bar.xml b/indra/newview/skins/default/xui/de/floater_chat_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2464a55665e48235b9741c54dc52048806046b0f
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" 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"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_destinations.xml b/indra/newview/skins/default/xui/de/floater_destinations.xml
new file mode 100644
index 0000000000000000000000000000000000000000..57881488fd963fd118476417ed5905db124ea40e
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="ZIELE"/>
diff --git a/indra/newview/skins/default/xui/de/floater_fast_timers.xml b/indra/newview/skins/default/xui/de/floater_fast_timers.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e61e5426887b51438910f197ab4324374f71aae9
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+	<string name="pause">
+		Pause
+	</string>
+	<string name="run">
+		Rennen
+	</string>
+	<button label="Pause" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_hardware_settings.xml b/indra/newview/skins/default/xui/de/floater_hardware_settings.xml
index 9644bbbaea307524faf16aef7d51d8d696b556f8..ca081aafae842d59710dbbff2ece273cdd9c4b12 100644
--- a/indra/newview/skins/default/xui/de/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/de/floater_hardware_settings.xml
@@ -4,7 +4,7 @@
 		Filtern:
 	</text>
 	<check_box label="Anisotropische Filterung (langsamer, wenn aktiviert)" name="ani"/>
-	<text name="Antialiasing:">
+	<text name="antialiasing label">
 		Antialiasing:
 	</text>
 	<combo_box label="Antialiasing" name="fsaa">
diff --git a/indra/newview/skins/default/xui/de/floater_how_to.xml b/indra/newview/skins/default/xui/de/floater_how_to.xml
new file mode 100644
index 0000000000000000000000000000000000000000..caea221f83ffe5dee71be5fe780ccb375934da45
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="INFOS"/>
diff --git a/indra/newview/skins/default/xui/de/floater_map.xml b/indra/newview/skins/default/xui/de/floater_map.xml
index f6d9db8d53a9c2d15ec27db4e13f84ccc0f53ad1..c4c42af66d1035f2750071b415d383810d19eaea 100644
--- a/indra/newview/skins/default/xui/de/floater_map.xml
+++ b/indra/newview/skins/default/xui/de/floater_map.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="">
+<floater name="Map" title="MINIKARTE">
 	<floater.string name="ToolTipMsg">
 		[REGION](Doppelklicken, um Karte zu öffnen; Umschalt-Taste gedrückt halten und ziehen, um zu schwenken)
 	</floater.string>
@@ -7,7 +7,7 @@
 		[REGION](Doppelklicken, um zu teleportieren; Umschalttaste gedrückt halten und ziehen, um zu schwenken)
 	</floater.string>
 	<floater.string name="mini_map_caption">
-		MINI-KARTE
+		Minikarte
 	</floater.string>
 	<text label="N" name="floater_map_north" text="N">
 		N
diff --git a/indra/newview/skins/default/xui/de/floater_model_preview.xml b/indra/newview/skins/default/xui/de/floater_model_preview.xml
index 330893c3268c56b728553412c1350cfd2e703141..4af8d67686fcad5fd6d8c4985e03288032642404 100644
--- a/indra/newview/skins/default/xui/de/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/de/floater_model_preview.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="Modell hochladen">
-	<string name="status_idle">
-		Inaktiv
-	</string>
+<floater name="Model Preview" title="MODELL HOCHLADEN">
+	<string name="status_idle"/>
 	<string name="status_parse_error">
-		DAE-Parsing-Fehler. Details siehe Protokoll.
+		Fehler: Fehler beim DAE-Parsen – Details siehe Protokoll.
+	</string>
+	<string name="status_material_mismatch">
+		Fehler: Das Material des Modells ist keine Teilmenge des Referenzmodells.
 	</string>
 	<string name="status_reading_file">
 		Laden...
@@ -51,6 +52,9 @@
 	<string name="mesh_status_missing_lod">
 		Erforderliche Detailstufe fehlt.
 	</string>
+	<string name="mesh_status_invalid_material_list">
+		Detailstufenmaterial ist keine Teilmenge des Referenzmodells.
+	</string>
 	<string name="layer_all">
 		Alle
 	</string>
@@ -63,188 +67,211 @@
 	<string name="tbd">
 		noch nicht festgelegt
 	</string>
-	<text name="name_label">
-		Name:
-	</text>
-	<text name="lod_label">
-		Vorschau:
-	</text>
-	<combo_box name="preview_lod_combo" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung">
-		<combo_item name="high">
-			Detailstufe: Hoch
-		</combo_item>
-		<combo_item name="medium">
-			Detailstufe: Mittel
-		</combo_item>
-		<combo_item name="low">
-			Detailstufe: Niedrig
-		</combo_item>
-		<combo_item name="lowest">
-			Detailstufe: Niedrigste
-		</combo_item>
-	</combo_box>
-	<text name="warning_title">
-		ACHTUNG:
-	</text>
-	<text name="warning_message">
-		Sie können dieses Modell nicht auf die Second Life-Server hochladen. [[VURL] Weitere Infos], wie Sie das Hochladen von Netzmodellen freischalten können.
-	</text>
-	<text name="weights_text">
-		Herunterladen:
-Physik:
-Server:
-
-Prim-Äquivalenz:
-	</text>
-	<text name="weights">
-		[ST]
-[PH]
-[SIM]
-
-[EQ]
-	</text>
-	<tab_container name="import_tab">
-		<panel label="Detailstufe" name="lod_panel">
-			<text name="lod_table_header">
-				Detailstufe auswählen
-			</text>
-			<text name="high_label" value="Hoch"/>
-			<text name="high_triangles" value="0"/>
-			<text name="high_vertices" value="0"/>
-			<text name="medium_label" value="Mittel"/>
-			<text name="medium_triangles" value="0"/>
-			<text name="medium_vertices" value="0"/>
-			<text name="low_label" value="Niedrig"/>
-			<text name="low_triangles" value="0"/>
-			<text name="low_vertices" value="0"/>
-			<text name="lowest_label" value="Niedrigste"/>
-			<text name="lowest_triangles" value="0"/>
-			<text name="lowest_vertices" value="0"/>
-			<text name="lod_table_footer">
-				Detailstufe: [DETAIL]
-			</text>
-			<radio_group name="lod_file_or_limit" value="lod_from_file">
-				<radio_item label="Aus Datei laden" name="lod_from_file"/>
-				<radio_item label="Automatisch generieren" name="lod_auto_generate"/>
-				<radio_item label="Keine" name="lod_none"/>
-			</radio_group>
-			<button label="Durchsuchen..." name="lod_browse"/>
-			<combo_box name="lod_mode">
-				<combo_item name="triangle_limit">
-					Dreiecklimit
-				</combo_item>
-				<combo_item name="error_threshold">
-					Fehlerschwelle
-				</combo_item>
-			</combo_box>
-			<text name="build_operator_text">
-				Konstruktionsoperator:
-			</text>
-			<text name="queue_mode_text">
-				Warteschlangenmodus:
-			</text>
-			<combo_box name="build_operator">
-				<combo_item name="edge_collapse">
-					Kantenkollaps
-				</combo_item>
-				<combo_item name="half_edge_collapse">
-					Halbkantenkollaps
-				</combo_item>
-			</combo_box>
-			<combo_box name="queue_mode">
-				<combo_item name="greedy">
-					Strikt
-				</combo_item>
-				<combo_item name="lazy">
-					Locker
-				</combo_item>
-				<combo_item name="independent">
-					Unabhängig
-				</combo_item>
-			</combo_box>
-			<text name="border_mode_text">
-				Grenzenmodus:
+	<panel name="left_panel">
+		<panel name="model_name_representation_panel">
+			<text name="name_label">
+				Modellname:
 			</text>
-			<text name="share_tolderance_text">
-				Sharetoleranz:
+			<text name="model_category_label">
+				Dieses Modell repräsentiert...
 			</text>
-			<combo_box name="border_mode">
-				<combo_item name="border_unlock">
-					Freigeben
-				</combo_item>
-				<combo_item name="border_lock">
-					Sperren
-				</combo_item>
+			<combo_box name="model_category_combo">
+				<combo_item label="Eine auswählen..." name="Choose one"/>
+				<combo_item label="Avatarform" name="Avatar shape"/>
+				<combo_item label="Avatar-Anhang" name="Avatar attachment"/>
+				<combo_item label="Mobile Objekte (Fahrzeug, Tier)" name="Moving object (vehicle, animal)"/>
+				<combo_item label="Baukomponenten" name="Building Component"/>
+				<combo_item label="Groß, unbeweglich usw." name="Large, non moving etc"/>
+				<combo_item label="Kleiner, unbeweglich usw." name="Smaller, non-moving etc"/>
+				<combo_item label="Keine der oben genannten" name="Not really any of these"/>
 			</combo_box>
-			<text name="crease_label">
-				Knitterwinkel:
-			</text>
-			<spinner name="crease_angle" value="75"/>
 		</panel>
-		<panel label="Physik" name="physics_panel">
-			<panel name="physics geometry">
-				<radio_group name="physics_load_radio" value="physics_load_from_file">
-					<radio_item label="Datei:" name="physics_load_from_file"/>
-					<radio_item label="Detailstufe verwenden:" name="physics_use_lod"/>
-				</radio_group>
-				<combo_box name="physics_lod_combo" tool_tip="Detailstufe für physische Form">
-					<combo_item name="physics_lowest">
-						Niedrigste
-					</combo_item>
-					<combo_item name="physics_low">
-						Niedrig
-					</combo_item>
-					<combo_item name="physics_medium">
-						Mittel
-					</combo_item>
-					<combo_item name="physics_high">
-						Hoch
-					</combo_item>
-				</combo_box>
-				<button label="Durchsuchen..." name="physics_browse"/>
-			</panel>
-			<panel name="physics analysis">
-				<slider label="Glätten:" name="Smooth"/>
-				<check_box label="Löcher schließen (langsam)" name="Close Holes (Slow)"/>
-				<button label="Analysieren" name="Decompose"/>
-				<button label="Abbrechen" name="decompose_cancel"/>
+		<tab_container name="import_tab">
+			<panel label="Detailstufe" name="lod_panel" title="Detailstufe">
+				<text initial_value="Quelle" name="source" value="Quelle"/>
+				<text initial_value="Dreiecke" name="triangles" value="Dreiecke"/>
+				<text initial_value="Scheitelpunkte" name="vertices" value="Scheitelpunkte"/>
+				<text initial_value="Hoch" name="high_label" value="Hoch"/>
+				<button label="Durchsuchen..." name="lod_browse_high"/>
+				<text initial_value="0" name="high_triangles" value="0"/>
+				<text initial_value="0" name="high_vertices" value="0"/>
+				<text initial_value="Mittel" name="medium_label" value="Mittel"/>
+				<button label="Durchsuchen..." name="lod_browse_medium"/>
+				<text initial_value="0" name="medium_triangles" value="0"/>
+				<text initial_value="0" name="medium_vertices" value="0"/>
+				<text initial_value="Niedrig" name="low_label" value="Niedrig"/>
+				<button label="Durchsuchen..." name="lod_browse_low"/>
+				<text initial_value="0" name="low_triangles" value="0"/>
+				<text initial_value="0" name="low_vertices" value="0"/>
+				<text initial_value="Niedrigste" name="lowest_label" value="Niedrigste"/>
+				<button label="Durchsuchen..." name="lod_browse_lowest"/>
+				<text initial_value="0" name="lowest_triangles" value="0"/>
+				<text initial_value="0" name="lowest_vertices" value="0"/>
+				<check_box label="Normalen generieren" name="gen_normals"/>
+				<text initial_value="Knitterwinkel:" name="crease_label" value="Knitterwinkel:"/>
+				<spinner name="crease_angle" value="75"/>
 			</panel>
-			<panel name="physics simplification">
-				<slider label="Durchläufe:" name="Combine Quality"/>
-				<slider label="Detailskala:" name="Detail Scale"/>
-				<slider label="Beibehalten:" name="Retain%"/>
-				<button label="Vereinfachen" name="Simplify"/>
-				<button label="Abbrechen" name="simplify_cancel"/>
+			<panel label="Physik" name="physics_panel">
+				<panel name="physics geometry">
+					<text name="first_step_name">
+						Schritt 1: Detailstufe
+					</text>
+					<combo_box name="physics_lod_combo" tool_tip="Detailstufe für Physikform">
+						<combo_item name="choose_one">
+							Eine auswählen...
+						</combo_item>
+						<combo_item name="physics_high">
+							Hoch
+						</combo_item>
+						<combo_item name="physics_medium">
+							Mittel
+						</combo_item>
+						<combo_item name="physics_low">
+							Niedrig
+						</combo_item>
+						<combo_item name="physics_lowest">
+							Niedrigste
+						</combo_item>
+						<combo_item name="load_from_file">
+							Aus Datei
+						</combo_item>
+					</combo_box>
+					<button label="Durchsuchen..." name="physics_browse"/>
+				</panel>
+				<panel name="physics analysis">
+					<text name="method_label">
+						Schritt 2: Analysieren
+					</text>
+					<text name="analysis_method_label">
+						Methode:
+					</text>
+					<text name="quality_label">
+						Qualität:
+					</text>
+					<text name="smooth_method_label">
+						Glätten:
+					</text>
+					<check_box label="Löcher schließen" name="Close Holes (Slow)"/>
+					<button label="Analysieren" name="Decompose"/>
+					<button label="Abbrechen" name="decompose_cancel"/>
+				</panel>
+				<panel name="physics simplification">
+					<text name="second_step_label">
+						Schritt 3: Vereinfachen
+					</text>
+					<text name="simp_method_header">
+						Methode:
+					</text>
+					<text name="pass_method_header">
+						Durchläufe:
+					</text>
+					<text name="Detail Scale label">
+						Detailskalierung:
+					</text>
+					<text name="Retain%_label">
+						Beibehalten:
+					</text>
+					<combo_box name="Combine Quality" value="1"/>
+					<button label="Vereinfachen" name="Simplify"/>
+					<button label="Abbrechen" name="simplify_cancel"/>
+				</panel>
+				<panel name="physics info">
+					<text name="results_text">
+						Ergebnisse:
+					</text>
+					<text name="physics_triangles">
+						Dreiecke: [TRIANGLES],
+					</text>
+					<text name="physics_points">
+						Scheitelpunkte: [POINTS],
+					</text>
+					<text name="physics_hulls">
+						Hüllen: [HULLS]
+					</text>
+				</panel>
 			</panel>
-			<panel name="physics info">
-				<slider label="Vorschaudehnung:" name="physics_explode"/>
-				<text name="physics_triangles">
-					Dreiecke: [TRIANGLES]
+			<panel label="Hochladeoptionen" name="modifiers_panel">
+				<text name="scale_label">
+					Skalierung (1=keine Skalierung):
 				</text>
-				<text name="physics_points">
-					Vertices: [POINTS]
+				<spinner name="import_scale" value="1.0"/>
+				<text name="dimensions_label">
+					Dimensionen:
 				</text>
-				<text name="physics_hulls">
-					Hüllen: [HULLS]
+				<text name="import_dimensions">
+					[X] X [Y] X [Z]
 				</text>
+				<check_box label="Texturen einschließen" name="upload_textures"/>
+				<text name="include_label">
+					Nur für Avatarmodelle:
+				</text>
+				<check_box label="Skingewicht einschließen" name="upload_skin"/>
+				<check_box label="Gelenkpositionen einschließen" name="upload_joints"/>
+				<text name="pelvis_offset_label">
+					Z-Offset (Avatar anheben oder senken):
+				</text>
+				<spinner name="pelvis_offset" value="0.0"/>
 			</panel>
-		</panel>
-		<panel label="Modifizierer" name="modifiers_panel">
-			<spinner name="import_scale" value="1,0"/>
-			<text name="import_dimensions">
-				[X] x [Y] x [Z] m
+		</tab_container>
+		<panel name="weights_and_warning_panel">
+			<button label="Gewichte und Gebühr berechnen" name="calculate_btn" tool_tip="Gewichte und Gebühr berechnen"/>
+			<button label="Abbrechen" name="cancel_btn"/>
+			<button label="Hochladen" name="ok_btn" tool_tip="Auf Simulator hochladen"/>
+			<button label="Einstellungen löschen und Formular zurücksetzen" name="reset_btn"/>
+			<text name="upload_fee">
+				Gebühr für Hochladen: [FEE] L$
+			</text>
+			<text name="prim_weight">
+				Auswirkung auf Land: [EQ]
+			</text>
+			<text name="download_weight">
+				Herunterladen: [ST]
+			</text>
+			<text name="physics_weight">
+				Physik: [PH]
+			</text>
+			<text name="server_weight">
+				Server: [SIM]
+			</text>
+			<text name="warning_title">
+				HINWEIS:
+			</text>
+			<text name="warning_message">
+				Sie haben keine Berechtigung zum Hochladen von Netzmodellen. [[VURL] Weitere Infos], wie Sie sich zertifizieren lassen können.
+			</text>
+			<text name="status">
+				[STATUS]
 			</text>
-			<check_box label="Texturen" name="upload_textures"/>
-			<check_box label="Skingewicht" name="upload_skin"/>
-			<check_box label="Gelenkpositionen" name="upload_joints"/>
-			<spinner name="pelvis_offset" value="0,0"/>
 		</panel>
-	</tab_container>
-	<text name="upload_fee">
-		Gebühr für Hochladen: [FEE] L$
+	</panel>
+	<text name="lod_label">
+		Vorschau:
 	</text>
-	<button label="Auf Standardwerte setzen" name="reset_btn" tool_tip="Auf Standardwerte setzen"/>
-	<button label="Gewichte und Gebühr berechnen" name="calculate_btn" tool_tip="Gewichte und Gebühr berechnen"/>
-	<button label="Hochladen" name="ok_btn" tool_tip="An Simulator hochladen"/>
-	<button label="Abbrechen" name="cancel_btn"/>
+	<panel name="right_panel">
+		<combo_box name="preview_lod_combo" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung">
+			<combo_item name="high">
+				Hoch
+			</combo_item>
+			<combo_item name="medium">
+				Mittel
+			</combo_item>
+			<combo_item name="low">
+				Niedrig
+			</combo_item>
+			<combo_item name="lowest">
+				Niedrigste
+			</combo_item>
+		</combo_box>
+		<text name="label_display">
+			Anzeige...
+		</text>
+		<check_box label="Kanten" name="show_edges"/>
+		<check_box label="Physik" name="show_physics"/>
+		<check_box label="Texturen" name="show_textures"/>
+		<check_box label="Skingewichte" name="show_skin_weight"/>
+		<check_box label="Gelenke" name="show_joint_positions"/>
+		<text name="physics_explode_label">
+			Vorschaudehnung:
+		</text>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_model_wizard.xml b/indra/newview/skins/default/xui/de/floater_model_wizard.xml
index 7103757b407d14db869b3652a00e18d5fcc23b2e..a90f36f2026fccc69cf7bf6984c03a9fe4d77216 100644
--- a/indra/newview/skins/default/xui/de/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/de/floater_model_wizard.xml
@@ -6,26 +6,23 @@
 	<button label="2. Optimieren" name="optimize_btn"/>
 	<button label="1. Datei auswählen" name="choose_file_btn"/>
 	<panel name="choose_file_panel">
-		<panel name="choose_file_header_panel">
-			<text name="choose_file_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Modelldatei auswählen
 			</text>
 		</panel>
-		<panel name="choose_file_content_panel">
+		<panel name="content">
 			<text name="advanced_users_text">
 				Fortgeschrittene Benutzer: Wenn Sie bereits mit Tools zur Erstellung von 3D-Inhalten vertraut sind, können Sie den erweiterten Uploader verwenden.
 			</text>
 			<button label="Auf Erweitert wechseln" name="switch_to_advanced"/>
-			<text name="choose_model_file_label">
+			<text name="Cache location">
 				Hochzuladende Modelldatei auswählen
 			</text>
 			<button label="Durchsuchen..." label_selected="Durchsuchen..." name="browse"/>
-			<text name="support_collada_text">
+			<text name="Model types">
 				Second Life unterstützt COLLADA-Dateien (.dae).
 			</text>
-			<text name="dimensions_label">
-				Abmessungen (m):
-			</text>
 			<text name="dimensions">
 				X         Y         Z
 			</text>
@@ -38,18 +35,15 @@
 		</panel>
 	</panel>
 	<panel name="optimize_panel">
-		<panel name="optimize_header_panel">
-			<text name="optimize_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Modell optimieren
 			</text>
 		</panel>
-		<text name="optimize_hint">
+		<text name="description">
 			Wir haben das Modell auf Leistung optimiert. Sie können es bei Bedarf weiter anpassen.
 		</text>
-		<panel name="optimize_content_panel">
-			<text name="generating_lod_label">
-				Detailstufe generieren
-			</text>
+		<panel name="content">
 			<text name="high_detail_text">
 				Detailstufe generieren: Hoch
 			</text>
@@ -64,123 +58,64 @@
 			</text>
 		</panel>
 		<panel name="content2">
-			<text name="optimize_performance_text">
-				Leistung
-			</text>
-			<text name="optimize_faster_rendering_text">
-				Schnellere Darstellung
-Weniger Details
-Niedrigeres Prim-Gewicht
-			</text>
-			<text name="optimize_accuracy_text">
-				Genauigkeit
-			</text>
-			<text name="optimize_slower_rendering_text">
-				Langsamere Darstellung
-Mehr Details
-Höheres Prim-Gewicht
-			</text>
-			<text name="accuracy_slider_mark1">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark2">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark3">
-				&apos;
-			</text>
 			<button label="Geometrie neu berechnen" name="recalculate_geometry_btn"/>
-			<text name="geometry_preview_label">
+			<text name="lod_label">
 				Geometrievorschau
 			</text>
 			<combo_box name="preview_lod_combo" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung">
-				<combo_item name="preview_lod_high">
+				<combo_item name="high">
 					Viel Details
 				</combo_item>
-				<combo_item name="preview_lod_medium">
+				<combo_item name="medium">
 					Mittlere Details
 				</combo_item>
-				<combo_item name="preview_lod_low">
+				<combo_item name="low">
 					Wenig Details
 				</combo_item>
-				<combo_item name="preview_lod_lowest">
+				<combo_item name="lowest">
 					Wenigste Details
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="physics_panel">
-		<panel name="physics_header_panel">
-			<text name="physics_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Physik anpassen
 			</text>
 		</panel>
-		<text name="physics_hint">
+		<text name="description">
 			Wir erstellen eine Form für die Außenhülle des Modells. Passen Sie die Detailstufe der Form wie für den beabsichtigten Zweck erforderlich an.
 		</text>
-		<panel name="physics_content_panel">
-			<text name="physics_performance_text">
-				Leistung
-			</text>
-			<text name="physics_faster_rendering_text">
-				Schnellere Darstellung
-Weniger Details
-Niedrigeres Prim-Gewicht
-			</text>
-			<text name="physics_accuracy_text">
-				Genauigkeit
-			</text>
-			<text name="physics_slower_dendering_text">
-				Langsamere Darstellung
-Mehr Details
-Höheres Prim-Gewicht
-			</text>
-			<text name="physics_example_1">
-				Beispiele:
-Mobile Objekte
-Fliegende Objekte
-Fahrzeuge
-			</text>
-			<text name="physics_example_2">
-				Beispiele:
-Kleine statische Objekte
-Objekte mit weniger Details
-Einfache Möbel
-			</text>
-			<text name="physics_example_3">
-				Beispiele:
-Statische Objekte
-Objekte mit viel Details
-Gebäude
-			</text>
+		<panel name="content">
 			<button label="Physik neu berechnen" name="recalculate_physics_btn"/>
 			<button label="Neu berechnen..." name="recalculating_physics_btn"/>
-			<text name="physics_preview_label">
+			<text name="lod_label">
 				Physikvorschau
 			</text>
 			<combo_box name="preview_lod_combo2" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung">
-				<combo_item name="preview_lod2_high">
+				<combo_item name="high">
 					Viel Details
 				</combo_item>
-				<combo_item name="preview_lod2_medium">
+				<combo_item name="medium">
 					Mittlere Details
 				</combo_item>
-				<combo_item name="preview_lod2_low">
+				<combo_item name="low">
 					Wenig Details
 				</combo_item>
-				<combo_item name="preview_lod2_lowest">
+				<combo_item name="lowest">
 					Wenigste Details
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="review_panel">
-		<panel name="review_header_panel">
-			<text name="review_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Überprüfen
 			</text>
 		</panel>
-		<panel name="review_content_panel">
+		<panel name="content">
 			<text name="review_prim_equiv">
 				Auswirkung auf Parzelle/Region: Prim-Äquivalenzwert [EQUIV]
 			</text>
@@ -193,8 +128,8 @@ Gebäude
 		</panel>
 	</panel>
 	<panel name="upload_panel">
-		<panel name="upload_header_panel">
-			<text name="upload_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Upload abgeschlossen
 			</text>
 		</panel>
diff --git a/indra/newview/skins/default/xui/de/floater_moveview.xml b/indra/newview/skins/default/xui/de/floater_moveview.xml
index 4333392582419ea7afa728ac68ee35ddf94b2798..c1c8271310bdd961f4da97eca40f8071f8c0b20f 100644
--- a/indra/newview/skins/default/xui/de/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/de/floater_moveview.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="GEHEN / RENNEN / FLIEGEN">
 	<string name="walk_forward_tooltip">
 		Vorwärts gehen (Nach-oben-Pfeil oder W drücken)
 	</string>
@@ -58,14 +58,14 @@
 		Fliegen
 	</string>
 	<panel name="panel_actions">
-		<button label="" label_selected="" name="move up btn" tool_tip="Nach oben fliegen, „E&quot; drücken"/>
 		<button label="" label_selected="" name="turn left btn" tool_tip="Nach links (Links-Pfeil oder A drücken)"/>
 		<joystick_slide name="move left btn" tool_tip="Nach links gehen (Umschalt + Links-Pfeil oder A drücken)"/>
-		<button label="" label_selected="" name="move down btn" tool_tip="Nach unten fliegen, „C&quot; drücken"/>
 		<button label="" label_selected="" name="turn right btn" tool_tip="Nach rechts (Rechts-Pfeil oder D drücken)"/>
 		<joystick_slide name="move right btn" tool_tip="Nach rechts fliegen (Umschalt + Rechts-Pfeil oder D drücken)"/>
 		<joystick_turn name="forward btn" tool_tip="Vorwärts gehen (Nach-oben-Pfeil oder W drücken)"/>
 		<joystick_turn name="backward btn" tool_tip="Rückwärts gehen (Nach-Unten-Pfeil oder S drücken)"/>
+		<button label="" label_selected="" name="move up btn" tool_tip="Nach oben fliegen, „E&quot; drücken"/>
+		<button label="" label_selected="" name="move down btn" tool_tip="Nach unten fliegen, „C&quot; drücken"/>
 	</panel>
 	<panel name="panel_modes">
 		<button label="" name="mode_walk_btn" tool_tip="Gehen"/>
diff --git a/indra/newview/skins/default/xui/de/floater_my_appearance.xml b/indra/newview/skins/default/xui/de/floater_my_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e26b2434cc287128e407afb353989752c9383d4c
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="AUSSEHEN">
+	<panel label="Aussehen bearbeiten" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_my_inventory.xml b/indra/newview/skins/default/xui/de/floater_my_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0cfa17562e14ad489f60205657c5244542b652f6
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="INVENTAR"/>
diff --git a/indra/newview/skins/default/xui/de/floater_nearby_chat.xml b/indra/newview/skins/default/xui/de/floater_nearby_chat.xml
index bbb4114200d9c3707f5c5d81554cbfde3dd99364..2aabbb18f2a02400131c97a5be3bf0266dc00a2b 100644
--- a/indra/newview/skins/default/xui/de/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/de/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="nearby_chat" title="CHAT IN DER NÄHE">
-	<check_box label="Chat übersetzen (Service von Google)" name="translate_chat_checkbox"/>
+	<check_box label="Chat übersetzen" name="translate_chat_checkbox"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_object_weights.xml b/indra/newview/skins/default/xui/de/floater_object_weights.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e6641d3d1879e31b8875704661c76c45d28bdb76
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="ERWEITERT">
+	<floater.string name="nothing_selected" value="--"/>
+	<text name="selected_text" value="AUSGEWÄHLT"/>
+	<text name="objects" value="--"/>
+	<text name="objects_label" value="Objekte"/>
+	<text name="prims" value="--"/>
+	<text name="prims_label" value="Primitive"/>
+	<text name="weights_of_selected_text" value="GEWICHT DER AUSGEWÄHLTEN"/>
+	<text name="download" value="--"/>
+	<text name="download_label" value="Herunterladen"/>
+	<text name="physics" value="--"/>
+	<text name="physics_label" value="Physik"/>
+	<text name="server" value="--"/>
+	<text name="server_label" value="Server"/>
+	<text name="display" value="--"/>
+	<text name="display_label" value="Anzeige"/>
+	<text name="land_impacts_text" value="AUSWIRKUNGEN AUF LAND"/>
+	<text name="selected" value="--"/>
+	<text name="selected_label" value="Ausgewählt"/>
+	<text name="rezzed_on_land" value="--"/>
+	<text name="rezzed_on_land_label" value="Auf Land gerezzt"/>
+	<text name="remaining_capacity" value="--"/>
+	<text name="remaining_capacity_label" value="Verbleibende Kapazität"/>
+	<text name="total_capacity" value="--"/>
+	<text name="total_capacity_label" value="Gesamtkapazität"/>
+	<text name="help_SLURL" value="[secondlife:///app/help/object_weights Was ist das?...]"/>
+</floater>
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
index 8c110e5516da99479c05b80577774172ee497e74..7481e6d4b7853ac76dc34912291ae459a46f07b3 100644
--- a/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml
+++ b/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container" title="Outfit speichern">
+<floater name="modal container" title="OUTFIT SPEICHERN">
 	<button label="Speichern" label_selected="Speichern" name="Save"/>
 	<button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/>
 	<text name="Save item as:">
diff --git a/indra/newview/skins/default/xui/de/floater_people.xml b/indra/newview/skins/default/xui/de/floater_people.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fd1db148acd546c1d14d62381a20f4632ab7d582
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="LEUTE">
+	<panel_container name="main_panel">
+		<panel label="Gruppenprofil" name="panel_group_info_sidetray"/>
+		<panel label="Blockierte Einwohner und Objekte" name="panel_block_list_sidetray"/>
+	</panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_picks.xml b/indra/newview/skins/default/xui/de/floater_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2521920e83f04500d47e6b61b576d4eda53a5535
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Auswahlen"/>
diff --git a/indra/newview/skins/default/xui/de/floater_places.xml b/indra/newview/skins/default/xui/de/floater_places.xml
new file mode 100644
index 0000000000000000000000000000000000000000..80a1490afdb6086c35f37f7a9f0eb53efbef7e8f
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="ORTE">
+	<panel label="Orte" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml
index ae68c71a80c7ef9041345a7ac276af0e7de8e9d3..798461c00754925ab017ffd21d2734100e7124a5 100644
--- a/indra/newview/skins/default/xui/de/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/de/floater_snapshot.xml
@@ -3,73 +3,63 @@
 	<floater.string name="unknown">
 		unbekannt
 	</floater.string>
-	<radio_group label="Fototyp" name="snapshot_type_radio">
-		<radio_item label="E-Mail" name="postcard"/>
-		<radio_item label="Mein Inventar ([AMOUNT] L$)" name="texture"/>
-		<radio_item label="Auf meinem Computer speichern" name="local"/>
-	</radio_group>
+	<string name="postcard_progress_str">
+		E-Mail senden
+	</string>
+	<string name="profile_progress_str">
+		Posten
+	</string>
+	<string name="inventory_progress_str">
+		Speichern im Inventar
+	</string>
+	<string name="local_progress_str">
+		Speichern auf Computer
+	</string>
+	<string name="profile_succeeded_str">
+		Bild hochgeladen
+	</string>
+	<string name="postcard_succeeded_str">
+		E-Mail gesendet!
+	</string>
+	<string name="inventory_succeeded_str">
+		Im Inventar gespeichert!
+	</string>
+	<string name="local_succeeded_str">
+		Auf Computer gespeichert!
+	</string>
+	<string name="profile_failed_str">
+		Fehler beim Hochladen des Bilds in Ihr Profil.
+	</string>
+	<string name="postcard_failed_str">
+		Fehler beim Senden der E-Mail.
+	</string>
+	<string name="inventory_failed_str">
+		Fehler beim Speichern im Inventar.
+	</string>
+	<string name="local_failed_str">
+		Fehler beim Speichern auf dem Computer.
+	</string>
+	<button name="advanced_options_btn" tool_tip="Erweiterte Optionen"/>
+	<text name="image_res_text">
+		[WIDTH] x [HEIGHT] px
+	</text>
 	<text name="file_size_label">
 		[SIZE] KB
 	</text>
-	<button label="Foto aktualisieren" name="new_snapshot_btn"/>
-	<button label="Senden" name="send_btn"/>
-	<button label="Speichern ([AMOUNT] L$)" name="upload_btn"/>
-	<flyout_button label="Speichern" name="save_btn" tool_tip="Bild als Datei speichern">
-		<flyout_button.item label="Speichern" name="save_item"/>
-		<flyout_button.item label="Speichern unter..." name="saveas_item"/>
-	</flyout_button>
-	<button label="Mehr" name="more_btn" tool_tip="Erweiterte Optionen"/>
-	<button label="Weniger" name="less_btn" tool_tip="Erweiterte Optionen"/>
-	<button label="Abbrechen" name="discard_btn"/>
-	<text name="type_label2">
-		Größe
-	</text>
-	<text name="format_label">
-		Format
-	</text>
-	<combo_box label="Auflösung" name="postcard_size_combo">
-		<combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/>
-		<combo_box.item label="640x480" name="640x480"/>
-		<combo_box.item label="800x600" name="800x600"/>
-		<combo_box.item label="1024x768" name="1024x768"/>
-		<combo_box.item label="Benutzerdefiniert" name="Custom"/>
-	</combo_box>
-	<combo_box label="Auflösung" name="texture_size_combo">
-		<combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/>
-		<combo_box.item label="Klein (128x128)" name="Small(128x128)"/>
-		<combo_box.item label="Mittel (256x256)" name="Medium(256x256)"/>
-		<combo_box.item label="Groß (512x512)" name="Large(512x512)"/>
-		<combo_box.item label="Benutzerdefiniert" name="Custom"/>
-	</combo_box>
-	<combo_box label="Auflösung" name="local_size_combo">
-		<combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/>
-		<combo_box.item label="320x240" name="320x240"/>
-		<combo_box.item label="640x480" name="640x480"/>
-		<combo_box.item label="800x600" name="800x600"/>
-		<combo_box.item label="1024x768" name="1024x768"/>
-		<combo_box.item label="1280x1024" name="1280x1024"/>
-		<combo_box.item label="1600x1200" name="1600x1200"/>
-		<combo_box.item label="Benutzerdefiniert" name="Custom"/>
-	</combo_box>
-	<combo_box label="Format" name="local_format_combo">
-		<combo_box.item label="PNG" name="PNG"/>
-		<combo_box.item label="JPEG" name="JPEG"/>
-		<combo_box.item label="BMP" name="BMP"/>
-	</combo_box>
-	<spinner label="Breite" name="snapshot_width"/>
-	<spinner label="Größe" name="snapshot_height"/>
-	<check_box label="Seitenverhältnis beibehalten" name="keep_aspect_check"/>
-	<slider label="Bildqualität" name="image_quality_slider"/>
-	<text name="layer_type_label">
-		Aufnehmen:
-	</text>
-	<combo_box label="Bildlayer" name="layer_types">
-		<combo_box.item label="Farben" name="Colors"/>
-		<combo_box.item label="Tiefe" name="Depth"/>
-	</combo_box>
-	<check_box label="Schnittstelle" name="ui_check"/>
-	<check_box label="HUDs" name="hud_check"/>
-	<check_box label="Nach dem Speichern offen lassen" name="keep_open_check"/>
-	<check_box label="Frame einfrieren (Vollbild)" name="freeze_frame_check"/>
-	<check_box label="Automatisch aktualisieren" name="auto_snapshot_check"/>
+	<panel name="advanced_options_panel">
+		<text name="advanced_options_label">
+			ERWEITERTE OPTIONEN
+		</text>
+		<text name="layer_type_label">
+			Aufnahme:
+		</text>
+		<combo_box label="Bildebenen" name="layer_types">
+			<combo_box.item label="Farben" name="Colors"/>
+			<combo_box.item label="Tiefe" name="Depth"/>
+		</combo_box>
+		<check_box label="Schnittstelle" name="ui_check"/>
+		<check_box label="HUDs" name="hud_check"/>
+		<check_box label="Standbild (Vollbild)" name="freeze_frame_check"/>
+		<check_box label="Automatisch aktualisieren" name="auto_snapshot_check"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/floater_sound_devices.xml b/indra/newview/skins/default/xui/de/floater_sound_devices.xml
index 7575ad9e2aaf32a82446e18261df576b81e34684..22ccb2c1a296104ab63e88f64dd3c79a8f49a602 100644
--- a/indra/newview/skins/default/xui/de/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/de/floater_sound_devices.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="Audiogeräte">
+<floater name="floater_sound_devices" title="SOUNDGERÄTE">
 	<text name="voice_label">
 		Voice-Chat
 	</text>
diff --git a/indra/newview/skins/default/xui/de/floater_stats.xml b/indra/newview/skins/default/xui/de/floater_stats.xml
index 1eb2dd42884b3cb98a3d937b16ed2b29c7ba9010..f6dc9fe15d3ea01d14ebc6afd7b1e3b428820552 100644
--- a/indra/newview/skins/default/xui/de/floater_stats.xml
+++ b/indra/newview/skins/default/xui/de/floater_stats.xml
@@ -10,8 +10,8 @@
 			</stat_view>
 			<stat_view label="Erweitert" name="advanced">
 				<stat_view label="Darstellung" name="render">
-					<stat_bar label="Gezeichnete KTris" name="ktrisframe"/>
-					<stat_bar label="Gezeichnete KTris" name="ktrissec"/>
+					<stat_bar label="Pro Frame gezeichnete KTris" name="ktrisframe"/>
+					<stat_bar label="Pro Sek. gezeichnete KTris" name="ktrissec"/>
 					<stat_bar label="Objektanzahl" name="objs"/>
 					<stat_bar label="Neue Objekte" name="newobjs"/>
 				</stat_view>
@@ -32,7 +32,7 @@
 					<stat_bar label="Ebenen" name="layerskbitstat"/>
 					<stat_bar label="Tatsächlicher Eingang" name="actualinkbitstat"/>
 					<stat_bar label="Tatsächlicher Ausgang" name="actualoutkbitstat"/>
-					<stat_bar label="VFS Ausstehende Ops" name="vfspendingoperations"/>
+					<stat_bar label="Ausstehende Vorgänge im VFS" name="vfspendingoperations"/>
 				</stat_view>
 			</stat_view>
 			<stat_view label="Simulator" name="sim">
@@ -64,6 +64,14 @@
 					<stat_bar label="Agent-Zeit" name="simagentmsec"/>
 					<stat_bar label="Bilder-Zeit" name="simimagesmsec"/>
 					<stat_bar label="Skript-Zeit" name="simscriptmsec"/>
+					<stat_bar label="Verbleib. Zeit" name="simsparemsec"/>
+					<stat_view label="Zeitdetails (ms)" name="timedetails">
+						<stat_bar label="Physik-Schritt" name="simsimphysicsstepmsec"/>
+						<stat_bar label="Phys. Formen aktualisieren" name="simsimphysicsshapeupdatemsec"/>
+						<stat_bar label="Physik – andere" name="simsimphysicsothermsec"/>
+						<stat_bar label="Schlafzeit" name="simsleepmsec"/>
+						<stat_bar label="Pump IO" name="simpumpiomsec"/>
+					</stat_view>
 				</stat_view>
 			</stat_view>
 		</container_view>
diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml
index 49b133e10f66ab48478e19fe244effd7f67108b7..cf1d03f32d25182d6b1457f3590267e88f0c910b 100644
--- a/indra/newview/skins/default/xui/de/floater_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_tools.xml
@@ -25,10 +25,10 @@
 		Klicken und ziehen, um Land auszuwählen
 	</floater.string>
 	<floater.string name="status_selectcount">
-		[OBJ_COUNT] Objekte ([PRIM_COUNT] Prims [PE_STRING]) ausgewählt
+		[OBJ_COUNT] Objekte ausgewählt, Auswirkung auf Land [LAND_IMPACT]
 	</floater.string>
-	<floater.string name="status_selectprimequiv">
-		, Prim-Äquivalenz [SEL_WEIGHT]
+	<floater.string name="status_remaining_capacity">
+		Verbleibende Kapazität [LAND_CAPACITY].
 	</floater.string>
 	<button label="" label_selected="" name="button focus" tool_tip="Fokus"/>
 	<button label="" label_selected="" name="button move" tool_tip="Verschieben"/>
@@ -105,8 +105,8 @@
 	<text name="selection_empty">
 		Nichts ausgewählt.
 	</text>
-	<text name="selection_weight">
-		Physikgewicht [PHYS_WEIGHT], Darstellungskosten [DISP_WEIGHT].
+	<text name="remaining_capacity">
+		[CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Weitere Infos]
 	</text>
 	<tab_container name="Object Info Tabs">
 		<panel label="Allgemein" name="General">
@@ -322,7 +322,6 @@
 				Naht
 			</text>
 			<combo_box name="sculpt type control">
-				<combo_box.item label="(keiner)" name="None"/>
 				<combo_box.item label="Kugel" name="Sphere"/>
 				<combo_box.item label="Torus" name="Torus"/>
 				<combo_box.item label="Fläche" name="Plane"/>
diff --git a/indra/newview/skins/default/xui/de/floater_toybox.xml b/indra/newview/skins/default/xui/de/floater_toybox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..90e50804d658d7b58a079614fe58960d9393eb7b
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_toybox.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="SYMBOLLEISTENSCHALTFLÄCHEN">
+	<text name="toybox label 1">
+		Sie können Schaltflächen durch Ziehen zu Symbolleisten hinzufügen oder daraus entfernen.
+	</text>
+	<text name="toybox label 2">
+		Je nach Einstellung erscheinen Schaltflächen wie dargestellt oder nur als Symbol.
+	</text>
+	<button label="Alle Symbolleisten leeren" label_selected="Alle Symbolleisten leeren" name="btn_clear_all"/>
+	<button label="Standards wiederherstellen" label_selected="Standards wiederherstellen" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_translation_settings.xml b/indra/newview/skins/default/xui/de/floater_translation_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3d5d1d46a8bc0072e6c1687fc33342a0e108e683
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/floater_translation_settings.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_translation_settings" title="ÃœBERSETZUNGSEINSTELLUNGEN FÃœR CHATS">
+	<string name="bing_api_key_not_verified">
+		Bing-AppID nicht verifiziert. Versuchen Sie es erneut.
+	</string>
+	<string name="google_api_key_not_verified">
+		Google-API-Schlüssel nicht verifiziert. Versuchen Sie es erneut.
+	</string>
+	<string name="bing_api_key_verified">
+		Bing-AppID verifiziert.
+	</string>
+	<string name="google_api_key_verified">
+		Google-API-Schlüssel verifiziert.
+	</string>
+	<check_box label="Maschinenübersetzung beim Chatten aktivieren" name="translate_chat_checkbox"/>
+	<text name="translate_language_label">
+		Chat übersetzen in:
+	</text>
+	<combo_box name="translate_language_combo">
+		<combo_box.item label="Systemstandard" name="System Default Language"/>
+		<combo_box.item label="English (Englisch)" name="English"/>
+		<combo_box.item label="Dansk (Dänisch)" name="Danish"/>
+		<combo_box.item label="Deutsch" name="German"/>
+		<combo_box.item label="Español (Spanisch)" name="Spanish"/>
+		<combo_box.item label="Français (Französisch)" name="French"/>
+		<combo_box.item label="Italiano (Italienisch)" name="Italian"/>
+		<combo_box.item label="Magyar (Ungarisch)" name="Hungarian"/>
+		<combo_box.item label="Nederlands (Holländisch)" name="Dutch"/>
+		<combo_box.item label="Polski (Polnisch)" name="Polish"/>
+		<combo_box.item label="Português (Portugiesisch)" name="Portugese"/>
+		<combo_box.item label="Русский (Russisch)" name="Russian"/>
+		<combo_box.item label="Türkçe (Türkisch)" name="Turkish"/>
+		<combo_box.item label="Українська (Ukrainisch)" name="Ukrainian"/>
+		<combo_box.item label="中文 (正體) (Chinesisch)" name="Chinese"/>
+		<combo_box.item label="日本語 (Japanisch)" name="Japanese"/>
+		<combo_box.item label="한국어 (Koreanisch)" name="Korean"/>
+	</combo_box>
+	<text name="tip">
+		Übersetzungsservice auswählen:
+	</text>
+	<radio_group name="translation_service_rg">
+		<radio_item initial_value="bing" label="Bing Translator" name="bing"/>
+		<radio_item initial_value="google" label="Google Translate" name="google"/>
+	</radio_group>
+	<text name="bing_api_key_label">
+		Bing-[http://www.bing.com/developers/createapp.aspx AppID]:
+	</text>
+	<button label="Verifizieren" name="verify_bing_api_key_btn"/>
+	<text name="google_api_key_label">
+		Google-[http://code.google.com/apis/language/translate/v2/getting_started.html#auth API-Schlüssel]:
+	</text>
+	<button label="Verifizieren" name="verify_google_api_key_btn"/>
+	<text name="google_links_text">
+		[http://code.google.com/apis/language/translate/v2/pricing.html Pricing] | [https://code.google.com/apis/console Statistik]
+	</text>
+	<button label="OK" name="ok_btn"/>
+	<button label="Abbrechen" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_voice_controls.xml b/indra/newview/skins/default/xui/de/floater_voice_controls.xml
index c97852b6e741563b0ef2d275373754b36204c358..5efda4136eaaa75e45db9b014fe7fdce0484b59d 100644
--- a/indra/newview/skins/default/xui/de/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/de/floater_voice_controls.xml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Voice-Steuerung">
+<floater name="floater_voice_controls" title="SPRACHSTEUERUNGEN">
 	<string name="title_nearby">
-		VOICE IN DER NÄHE
+		VOICE-EINSTELLUNGEN
 	</string>
 	<string name="title_group">
-		Gruppengespräch mit [GROUP]
+		GRUPPENGESPRÄCH MIT [GROUP]
 	</string>
 	<string name="title_adhoc">
-		Konferenzgespräch
+		KONFERENZGESPRÄCH
 	</string>
 	<string name="title_peer_2_peer">
-		Gespräch mit [NAME]
+		GESPRÄCH MIT [NAME]
 	</string>
 	<string name="no_one_near">
 		Es ist niemand in der Nähe, der Voice aktiviert hat.
diff --git a/indra/newview/skins/default/xui/de/inspect_group.xml b/indra/newview/skins/default/xui/de/inspect_group.xml
index d85ca7ce4dde0b22a63db7e5b855dfd0938d5f6b..60fa8ff0d83b8bc47a08203732b2b0bf8ca8882f 100644
--- a/indra/newview/skins/default/xui/de/inspect_group.xml
+++ b/indra/newview/skins/default/xui/de/inspect_group.xml
@@ -26,7 +26,7 @@ Hoch solln sie leben!  Elche forever! Und auch Mungos!
 	<text name="group_cost">
 		Mitgliedschaft: 123 L$
 	</text>
-	<button label="Zusammen" name="join_btn"/>
+	<button label="Beitreten" name="join_btn"/>
 	<button label="Verlassen" name="leave_btn"/>
 	<button label="Profil anzeigen" name="view_profile_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/de/menu_bottomtray.xml b/indra/newview/skins/default/xui/de/menu_bottomtray.xml
index da36be59d026eda0b281813bbaf35e3c257ec99b..cb0082f94460d7d12f22e8b2c0c38fbbcce10988 100644
--- a/indra/newview/skins/default/xui/de/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/de/menu_bottomtray.xml
@@ -8,7 +8,7 @@
 	<menu_item_check label="Schaltfläche „Bauen“" name="ShowBuildButton"/>
 	<menu_item_check label="Schaltfläche „Suchen“" name="ShowSearchButton"/>
 	<menu_item_check label="Schaltfläche „Karte“" name="ShowWorldMapButton"/>
-	<menu_item_check label="Schaltfläche „Minikarte“" name="ShowMiniMapButton"/>
+	<menu_item_check label="Minikarten-Schaltfläche" name="ShowMiniMapButton"/>
 	<menu_item_call label="Ausschneiden" name="NearbyChatBar_Cut"/>
 	<menu_item_call label="Kopieren" name="NearbyChatBar_Copy"/>
 	<menu_item_call label="Einfügen" name="NearbyChatBar_Paste"/>
diff --git a/indra/newview/skins/default/xui/de/menu_hide_navbar.xml b/indra/newview/skins/default/xui/de/menu_hide_navbar.xml
index 9acf96dc6d2145dc75c6817459553277c8090408..33d55e85bdbaf42adfb26f8a040119fc75b8c852 100644
--- a/indra/newview/skins/default/xui/de/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/de/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="hide_navbar_menu">
-	<menu_item_check label="Navigationsleiste anzeigen" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="Navigations- und Favoritenleiste anzeigen" name="ShowNavbarNavigationPanel"/>
 	<menu_item_check label="Favoritenleiste anzeigen" name="ShowNavbarFavoritesPanel"/>
 	<menu_item_check label="Mini-Standortleiste anzeigen" name="ShowMiniLocationPanel"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml
index d932234cd1b03a7529cb9709f38ce76410f4882b..c90205fbe482d4eb4d2f6ff8f5c0eaaf378aa7dd 100644
--- a/indra/newview/skins/default/xui/de/menu_login.xml
+++ b/indra/newview/skins/default/xui/de/menu_login.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Login Menu">
 	<menu label="Ich" name="File">
-		<menu_item_call label="Einstellungen" name="Preferences..."/>
+		<menu_item_call label="Einstellungen..." name="Preferences..."/>
 		<menu_item_call label="[APP_NAME] schließen" name="Quit"/>
 	</menu>
 	<menu label="Hilfe" name="Help">
diff --git a/indra/newview/skins/default/xui/de/menu_toolbars.xml b/indra/newview/skins/default/xui/de/menu_toolbars.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3fb48e26b2e5a2d164eca019ac4edd067b3ecc7f
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/menu_toolbars.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+	<menu_item_call label="Diese Schaltfläche entfernen" name="Remove button"/>
+	<menu_item_call label="Symbolleistenschaltflächen..." name="Choose Buttons"/>
+	<menu_item_check label="Symbole und Beschriftungen" name="icons_with_text"/>
+	<menu_item_check label="Nur Symbole" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
index 7c6918a4eec78c1e58fbd27c511b2bf20db56394..a81874bee9c4459ccd974cb67d520e1638f82001 100644
--- a/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -1,54 +1,60 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Main Menu">
 	<menu label="Ich" name="Me">
-		<menu_item_call label="Einstellungen" name="Preferences"/>
-		<menu_item_call label="Meine Startseite" name="Manage My Account">
-			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=de"/>
-		</menu_item_call>
-		<menu_item_call label="L$ kaufen" name="Buy and Sell L$"/>
-		<menu_item_call label="Mein Profil" name="Profile"/>
-		<menu_item_call label="Mein Aussehen" name="ChangeOutfit"/>
-		<menu_item_check label="Mein Inventar" name="Inventory"/>
-		<menu_item_check label="Mein Inventar" name="ShowSidetrayInventory"/>
-		<menu_item_check label="Meine Gesten" name="Gestures"/>
-		<menu_item_check label="Meine Stimme" name="ShowVoice"/>
+		<menu_item_call label="Profil..." name="Profile"/>
+		<menu_item_call label="Aussehen..." name="ChangeOutfit"/>
+		<menu_item_call label="Avatar auswählen..." name="Avatar Picker"/>
+		<menu_item_check label="Inventar..." name="Inventory"/>
+		<menu_item_call label="Neues Inventarfenster" name="NewInventoryWindow"/>
+		<menu_item_call label="Orte..." name="Places"/>
+		<menu_item_call label="Auswahlen..." name="Picks"/>
+		<menu_item_call label="Kamerasteuerungen..." name="Camera Controls"/>
 		<menu label="Bewegung" name="Movement">
 			<menu_item_call label="Hinsetzen" name="Sit Down Here"/>
 			<menu_item_check label="Fliegen" name="Fly"/>
 			<menu_item_check label="Immer rennen" name="Always Run"/>
 			<menu_item_call label="Animation meines Avatars stoppen" name="Stop Animating My Avatar"/>
 		</menu>
-		<menu label="Mein 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="Admin-Status anfordern" name="Request Admin Options"/>
 		<menu_item_call label="Admin-Status verlassen" name="Leave Admin Options"/>
+		<menu_item_call label="L$ kaufen" name="Buy and Sell L$"/>
+		<menu_item_call label="Kontoübersicht..." name="Manage My Account">
+			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=de"/>
+		</menu_item_call>
+		<menu_item_call label="Einstellungen..." name="Preferences"/>
+		<menu_item_call label="Symbolleistenschaltflächen..." name="Toolbars"/>
+		<menu_item_call label="Alle Steuerelemente ausblenden" name="Hide UI"/>
 		<menu_item_call label="[APP_NAME] schließen" name="Quit"/>
 	</menu>
 	<menu label="Unterhalten" name="Communicate">
-		<menu_item_call label="Meine Freunde" name="My Friends"/>
-		<menu_item_call label="Meine Gruppen" name="My Groups"/>
-		<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_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_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="Stimme in der Nähe" name="Nearby Voice"/>
 	</menu>
 	<menu label="Welt" name="World">
-		<menu_item_check label="Minikarte" name="Mini-Map"/>
+		<menu_item_call label="Landmarke für diesen Ort setzen" name="Create Landmark Here"/>
+		<menu_item_call label="Ziele..." name="Destinations"/>
 		<menu_item_check label="Karte" name="World Map"/>
+		<menu_item_check label="Minikarte" name="Mini-Map"/>
 		<menu_item_check label="Suchen" name="Search"/>
+		<menu_item_call label="Nach Hause teleportieren" name="Teleport Home"/>
+		<menu_item_call label="Hier als Zuhause wählen" name="Set Home to Here"/>
 		<menu_item_call label="Foto" name="Take Snapshot"/>
-		<menu_item_call label="Landmarke für diesen Ort setzen" name="Create Landmark Here"/>
-		<menu label="Ortsprofil" name="Land">
-			<menu_item_call label="Ortsprofil" name="Place Profile"/>
-			<menu_item_call label="Land-Info" name="About Land"/>
-			<menu_item_call label="Region/Grundbesitz" name="Region/Estate"/>
-		</menu>
+		<menu_item_call label="Ortsprofil" name="Place Profile"/>
+		<menu_item_call label="Landinformationen" name="About Land"/>
+		<menu_item_call label="Region/Grundbesitz" name="Region/Estate"/>
+		<menu_item_call label="Mein Landbesitz..." name="My Land"/>
 		<menu_item_call label="Dieses Land kaufen" name="Buy Land"/>
-		<menu_item_call label="Mein Land" name="My Land"/>
 		<menu label="Anzeigen" name="LandShow">
-			<menu_item_check label="Bewegungssteuerung" name="Movement Controls"/>
-			<menu_item_check label="Ansichtsteuerung" name="Camera Controls"/>
 			<menu_item_check label="Bannlinien" name="Ban Lines"/>
 			<menu_item_check label="Strahlen" name="beacons"/>
 			<menu_item_check label="Grundstücksgrenzen" name="Property Lines"/>
@@ -57,16 +63,15 @@
 			<menu_item_check label="Parzelleneigenschaften" name="Parcel Properties"/>
 			<menu_item_check label="Menü „Erweitert“" name="Show Advanced Menu"/>
 		</menu>
-		<menu_item_call label="Teleport nach Hause" name="Teleport Home"/>
-		<menu_item_call label="Hier als Zuhause wählen" name="Set Home to Here"/>
 		<menu label="Sonne" name="Environment Settings">
 			<menu_item_call label="Sonnenaufgang" name="Sunrise"/>
 			<menu_item_call label="Mittag" name="Noon"/>
 			<menu_item_call label="Sonnenuntergang" name="Sunset"/>
 			<menu_item_call label="Mitternacht" name="Midnight"/>
+			<menu_item_call label="Regionseinstellungen verwenden" name="Use Region Settings"/>
 		</menu>
-		<menu label="Umgebungs-Editor" name="Enviroment Editor">
-			<menu_item_call label="Umgebungseinstellungen..." name="Enviroment Settings"/>
+		<menu label="Umwelt-Editor" name="Environment Editor">
+			<menu_item_call label="Umwelt-Einstellungen..." name="Environment Settings"/>
 			<menu label="Wasser-Voreinstellungen" name="Water Presets">
 				<menu_item_call label="Neue Voreinstellung..." name="new_water_preset"/>
 				<menu_item_call label="Voreinstellung bearbeiten..." name="edit_water_preset"/>
@@ -139,13 +144,14 @@
 			<menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/>
 			<menu_item_call label="Modell..." name="Upload Model"/>
 			<menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/>
+			<menu_item_call label="Hochlade-Berechtigungen (Standard) festlegen" name="perm prefs"/>
 		</menu>
 		<menu_item_call label="Rückgängig" name="Undo"/>
 		<menu_item_call label="Wiederholen" name="Redo"/>
 	</menu>
 	<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_check label="Hinweise aktivieren" name="Enable Hints"/>
 		<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"/>
@@ -161,7 +167,7 @@
 		<menu label="Performance Tools" name="Performance Tools">
 			<menu_item_call label="Lag-Anzeige" name="Lag Meter"/>
 			<menu_item_check label="Statistikleiste" name="Statistics Bar"/>
-			<menu_item_check label="Avatar-Darstellungskosten anzeigen" name="Avatar Rendering Cost"/>
+			<menu_item_check label="Zuggewicht für Avatare anzeigen" name="Avatar Rendering Cost"/>
 		</menu>
 		<menu label="Hervorhebung und Sichtbarkeit" name="Highlighting and Visibility">
 			<menu_item_check label="Pulsierender Strahl" name="Cheesy Beacon"/>
@@ -199,11 +205,10 @@
 		<menu_item_check label="Plugin Read Thread verwenden" name="Use Plugin Read Thread"/>
 		<menu_item_call label="Gruppen-Cache löschen" name="ClearGroupCache"/>
 		<menu_item_check label="Weiche Mausbewegung" name="Mouse Smoothing"/>
+		<menu_item_call label="Tasten freigeben" name="Release Keys"/>
 		<menu label="Tastaturkürzel" name="Shortcuts">
 			<menu_item_call label="Bild ([COST] L$)..." name="Upload Image"/>
 			<menu_item_check label="Suchen" name="Search"/>
-			<menu_item_call label="Tasten freigeben" name="Release Keys"/>
-			<menu_item_call label="UI-Größe auf Standard setzen" name="Set UI Size to Default"/>
 			<menu_item_check label="Erweitert-Menü anzeigen - veraltetet" name="Show Advanced Menu - legacy shortcut"/>
 			<menu_item_call label="Fenster schließen" name="Close Window"/>
 			<menu_item_call label="Alle Fenster schließen" name="Close All Windows"/>
@@ -289,6 +294,8 @@
 			<menu_item_check label="Lichter" name="Lights"/>
 			<menu_item_check label="Gelenkpunkte" name="Collision Skeleton"/>
 			<menu_item_check label="Raycast" name="Raycast"/>
+			<menu_item_check label="Windvektoren" name="Wind Vectors"/>
+			<menu_item_check label="Komplexität beim Rendern" name="rendercomplexity"/>
 			<menu_item_check label="Formen" name="Sculpt"/>
 		</menu>
 		<menu label="Rendering" name="Rendering">
@@ -300,7 +307,6 @@
 			<menu_item_check label="Licht und Schatten" name="Lighting and Shadows"/>
 			<menu_item_check label="Schatten von Sonne-/Mond-Projektoren" name="Shadows from Sun/Moon/Projectors"/>
 			<menu_item_check label="SSAO und Schattenglättung" name="SSAO and Shadow Smoothing"/>
-			<menu_item_check label="Globale Beleuchtung (experimentell)" name="Global Illumination"/>
 			<menu_item_check label="Fehler in GL beseitigen" name="Debug GL"/>
 			<menu_item_check label="Fehler in Pipeline beseitigen" name="Debug Pipeline"/>
 			<menu_item_check label="Automatische Alpha-Masken (aufgeschoben)" name="Automatic Alpha Masks (deferred)"/>
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index 4c53c40d867b3fe757a7d564fbc26f68d99672a9..a34b938a7a61384554dd0ff9d392958232a3bfee 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -992,7 +992,7 @@ Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen.
 		</form>
 	</notification>
 	<notification name="RemoveFromFriends">
-		Möchten Sie [NAME] aus Ihrer Freundesliste entfernen?
+		Möchten Sie &lt;nolink&gt;[NAME]&lt;/nolink&gt; aus Ihrer Freundesliste entfernen?
 		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
 	</notification>
 	<notification name="RemoveMultipleFromFriends">
@@ -1124,8 +1124,13 @@ Der Gruppe „[GROUP_NAME]“ [AREA] m² an Land schenken?
 	<notification name="DisplaySetToSafe">
 		Es wurden sichere Anzeige-Einstellungen gewählt, da die Option -safe verwendet wurde.
 	</notification>
-	<notification name="DisplaySetToRecommended">
-		Es wurden die für Ihre Systemkonfiguration empfohlenen Anzeige-Einstellungen gewählt.
+	<notification name="DisplaySetToRecommendedGPUChange">
+		Die Anzeigeeinstellungen wurden auf die empfohlenen Werte gesetzt, da Ihre Grafikkarte geändert wurde
+von „[LAST_GPU]“
+in „[THIS_GPU]“
+	</notification>
+	<notification name="DisplaySetToRecommendedFeatureChange">
+		Aufgrund einer Änderung des Rendersubsystems wurden die Anzeigeeinstellungen auf die empfohlenen Werte gesetzt.
 	</notification>
 	<notification name="ErrorMessage">
 		[ERROR_MESSAGE]
@@ -1443,7 +1448,7 @@ Zur Installation des Updates muss [APP_NAME] neu gestartet werden.
 		<usetemplate ignoretext="Bestätigen, bevor Objekte an Ihre Eigentümer zurückgegeben werden" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
 	</notification>
 	<notification name="GroupLeaveConfirmMember">
-		Sie sind Mitglied der Gruppe [GROUP].
+		Sie sind Mitglied der Gruppe &lt;nolink&gt;[GROUP]&lt;/nolink&gt;.
 Diese Gruppe verlassen?
 		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
 	</notification>
@@ -1925,6 +1930,18 @@ Inventarobjekt(e) verschieben?
 		Wirklich beenden?
 		<usetemplate ignoretext="Bestätigen, bevor Sitzung beendet wird" name="okcancelignore" notext="Nicht beenden" yestext="Beenden"/>
 	</notification>
+	<notification name="ConfirmRestoreToybox">
+		Durch diese Aktion werden Ihre Standardschaltflächen und -symbolleisten wiederhergestellt.
+
+Diese Aktion kann nicht rückgängig gemacht werden.
+		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmClearAllToybox">
+		Durch diese Aktion werden alle Schaltflächen zurück in die Toolbox gestellt; die Symbolleisten sind leer.
+    
+Diese Aktion kann nicht rückgängig gemacht werden.
+		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
+	</notification>
 	<notification name="DeleteItems">
 		[QUESTION]
 		<usetemplate ignoretext="Vor dem Löschen von Objekten bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
@@ -2128,10 +2145,10 @@ Hierzu wird Ihr Webbrowser geöffnet.
 		Betreff: [SUBJECT], Nachricht: [MESSAGE]
 	</notification>
 	<notification name="FriendOnline">
-		[NAME] ist online
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; ist online
 	</notification>
 	<notification name="FriendOffline">
-		[NAME] ist offline
+		&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.
@@ -2244,14 +2261,16 @@ Wählen Sie ein einzelnes Objekt aus.
 		Ihre Visitenkarte wurde abgelehnt.
 	</notification>
 	<notification name="TeleportToLandmark">
-		Sie können an Positionen wie „[NAME]“ teleportieren, wenn Sie rechts in Ihrem Bildschirm die Tafel „Orte“ öffnen und dann die Registerkarte „Meine Landmarken“ auswählen.
-Klicken Sie auf eine Landmarke, um diese auszuwählen. Klicken Sie anschließend auf unten in der Registerkarte auf „Teleportieren“.
-(Sie können auch auf die Landmarke doppelt klicken oder mit rechts auf die Landmarke klicken und dann „Teleportieren“ auswählen).
+		Um zu Orten wie „[NAME]“ zu teleportieren, klicken Sie zuerst auf die Schaltfläche „Orte“
+    und dann im eingeblendeten Fenster auf die Registerkarte „Landmarken“. Klicken Sie auf
+    die gewünschte Landmarke und dann unten im Fenster auf „Teleportieren“.
+    (Sie können auch auf die Landmarke doppelklicken bzw. sie mit der rechten Maustaste ankklicken und dann
+    „Teleportieren“ wählen.)
 	</notification>
 	<notification name="TeleportToPerson">
-		Sie können Einwohner wie „[NAME]“ kontaktieren, wenn Sie die Tafel „Leute“ auf der rechten Seite Ihres Bildschirms öffnen.
-Wählen Sie den Einwohner aus der Liste aus und klicken Sie unten auf „IM“.
-(Sie können auch auf den Namen doppelt klicken oder mit rechts auf den Namen klicken und dann „IM“ auswählen).
+		Um Einwohner wie „[NAME]“ zu kontaktieren, klicken Sie auf die Schaltfläche „Leute“, wählen Sie eingeblendeten Fenster einen Einwohner aus
+    und klicken Sie unten im Fenster auf „IM“.
+    (Sie können auch auf den Namen doppelklicken bzw. ihn mit der rechten Maustaste anklicken und dann „IM“ wählen.)
 	</notification>
 	<notification name="CantSelectLandFromMultipleRegions">
 		Land kann nicht über Servergrenzen hinweg ausgewählt werden.
@@ -2272,6 +2291,9 @@ Wählen Sie eine kleinere Landfläche.
 	<notification name="PaymentSent">
 		[MESSAGE]
 	</notification>
+	<notification name="PaymentFailure">
+		[MESSAGE]
+	</notification>
 	<notification name="EventNotification">
 		Event-Benachrichtigung:
 
@@ -2526,10 +2548,10 @@ Versuchen Sie es in einigen Minuten erneut.
 		</form>
 	</notification>
 	<notification name="FriendshipAccepted">
-		[NAME] hat Ihr Freundschaftsangebot akzeptiert.
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; hat Ihr Freundschaftsangebot akzeptiert.
 	</notification>
 	<notification name="FriendshipDeclined">
-		[NAME] hat Ihr Freundschaftsangebot abgelehnt.
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; hat Ihr Freundschaftsangebot abgelehnt.
 	</notification>
 	<notification name="FriendshipAcceptedByMe">
 		Ihr Freundschaftsangebot wurde angeommen.
@@ -3008,10 +3030,6 @@ Durch Ausblenden der Schaltfläche „Sprechen“ wird die Sprechfunktion deakti
 			<button name="cancel" text="Abbrechen"/>
 		</form>
 	</notification>
-	<notification label="" name="ModeChange">
-		Zum Wechsel des Modus müssen Sie das Programm beenden und neu starten.
-		<usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/>
-	</notification>
 	<notification label="" name="NoClassifieds">
 		Die Erstellung und Bearbeitung von Anzeigen ist nur im Modus „Erweitert“ möglich. Möchten Sie das Programm beenden und den Modus wechseln? Die Modusauswahl ist auf dem Anmeldebildschirm zu finden.
 		<usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/>
@@ -3056,6 +3074,10 @@ Durch Ausblenden der Schaltfläche „Sprechen“ wird die Sprechfunktion deakti
 		Die Suche ist nur im Modus „Erweitert“ möglich. Möchten Sie sich abmelden und den Modus wechseln?
 		<usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/>
 	</notification>
+	<notification label="" name="ConfirmHideUI">
+		Durch diese Aktion werden alle Menüelemente und Schaltflächen ausgeblendet. Um sie wieder anzuzeigen, klicken Sie erneut auf [SHORTCUT].
+		<usetemplate ignoretext="Vor Ausblenden der UI bestätigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
+	</notification>
 	<global name="UnsupportedGLRequirements">
 		Ihr Computer entspricht nicht den Hardwareanforderungen von [APP_NAME]. [APP_NAME] setzt eine OpenGL-Grafikkarte mit Multitextur-Unterstützung voraus. Falls Ihre Grafikkarte diese Funktion unterstützt, installieren Sie die neuesten Treiber sowie die aktuellen Service Packs und Patches für Ihr Betriebssystem.
 
diff --git a/indra/newview/skins/default/xui/de/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/de/panel_chiclet_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bcc6772bb97733c1639dec386335e01dee463cb5
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="Unterhaltungen"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="Benachrichtigungen"/>
+			</chiclet_notification>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_edit_skin.xml b/indra/newview/skins/default/xui/de/panel_edit_skin.xml
index f167f45e98a7d64daa641fe9f6f83db66246543f..60f6919485c628598840ce838ff2481a1be1384d 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_skin.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_skin.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_skin_panel">
 	<panel name="avatar_skin_color_panel">
-		<texture_picker label="Kopftattoo" name="Head Tattoos" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
-		<texture_picker label="Obere Tattoos" name="Upper Tattoos" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
-		<texture_picker label="Untere Tattoos" name="Lower Tattoos" tool_tip="Zum Auswählen eines Bildes hier klicken"/>
+		<texture_picker label="Kopf" name="Head" tool_tip="Klicken, um ein Bild zu wählen"/>
+		<texture_picker label="Oberkörper" name="Upper Body" tool_tip="Klicken, um ein Bild zu wählen"/>
+		<texture_picker label="Unterkörper" name="Lower Body" tool_tip="Klicken, um ein Bild zu wählen"/>
 	</panel>
 	<panel name="accordion_panel">
 		<accordion name="wearable_accordion">
diff --git a/indra/newview/skins/default/xui/de/panel_me.xml b/indra/newview/skins/default/xui/de/panel_me.xml
index 26b98122126c41bb0e840881e5c08b3072f8faa9..f49446fbbf022bda93c0037e5a4276127c5fe590 100644
--- a/indra/newview/skins/default/xui/de/panel_me.xml
+++ b/indra/newview/skins/default/xui/de/panel_me.xml
@@ -1,7 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Mein Profil" name="panel_me">
-	<tab_container name="tabs">
-		<panel label="MEIN PROFIL" name="panel_profile"/>
-		<panel label="MEINE AUSWAHL" name="panel_picks"/>
-	</tab_container>
+	<panel label="MEINE AUSWAHLEN" name="panel_picks"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_my_profile.xml b/indra/newview/skins/default/xui/de/panel_my_profile.xml
deleted file mode 100644
index 89a4dfdabae25de398e5d4582486055035acf2d2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/de/panel_my_profile.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
-	<string name="CaptionTextAcctInfo">
-		[ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
-	</string>
-	<string name="payment_update_link_url">
-		http://www.secondlife.com/account/billing.php?lang=de-DE
-	</string>
-	<string name="partner_edit_link_url">
-		http://www.secondlife.com/account/partners.php?lang=de
-	</string>
-	<string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=de-DE"/>
-	<string name="no_partner_text" value="Keiner"/>
-	<string name="no_group_text" value="Keiner"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="scroll_content_panel">
-					<panel name="second_life_image_panel">
-						<text name="display_name_descr_text">
-							Benutzername
-						</text>
-						<text name="name_descr_text">
-							Anzeigename
-						</text>
-						<button label="Profil" name="see_profile_btn" tool_tip="Profil zu diesem Avatar anzeigen"/>
-					</panel>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_navigation_bar.xml b/indra/newview/skins/default/xui/de/panel_navigation_bar.xml
index ee1a543aacb377371d97a80286c97341a17fed25..53794b661913c721b5e660a0335044174929714d 100644
--- a/indra/newview/skins/default/xui/de/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/de/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="Zurück zum vorherigen Standort teleportieren"/>
-		<pull_button name="forward_btn" tool_tip="Um einen Standort weiter teleportieren"/>
-		<button name="home_btn" tool_tip="Zu meinem Zuhause teleportieren"/>
-		<location_input label="Standort" name="location_combo"/>
-		<search_combo_box label="Suche" name="search_combo_box" tool_tip="Suche">
-			<combo_editor label="[SECOND_LIFE] durchsuchen" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="Ziehen Sie Landmarken hier hin, damit Sie schnell zu Ihren Lieblingsplätzen in Second Life gelangen können!">
-		<label name="favorites_bar_label" tool_tip="Ziehen Sie Landmarken hier hin, damit Sie schnell zu Ihren Lieblingsplätzen in Second Life gelangen können!">
-			Favoritenleiste
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="Mehr meiner Favoriten anzeigen"/>
-	</favorites_bar>
+	<layout_stack name="nvp_stack">
+		<layout_panel name="navigation_layout_panel">
+			<panel name="navigation_panel">
+				<pull_button name="back_btn" tool_tip="Zum vorherigen Standort zurückgehen"/>
+				<pull_button name="forward_btn" tool_tip="Einen Standort weiter gehen"/>
+				<button name="home_btn" tool_tip="Zu meinem Zuhause teleportieren"/>
+				<location_input label="Standort" name="location_combo"/>
+			</panel>
+		</layout_panel>
+		<layout_panel name="favorites_layout_panel">
+			<favorites_bar name="favorite" tool_tip="Landmarken hierher ziehen für schnellen Zugriff auf Lieblingsorte in Second Life.">
+				<label name="favorites_bar_label" tool_tip="Landmarken hierher ziehen für schnellen Zugriff auf Lieblingsorte in Second Life.">
+					Favoritenleiste
+				</label>
+				<more_button name="&gt;&gt;" tool_tip="Mehr meiner Favoriten anzeigen">
+					Mehr â–¼
+				</more_button>
+			</favorites_bar>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_nearby_chat.xml b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2068c39024366cdc6beeb9982bf44def6df939b3
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+	<check_box label="Chat übersetzen" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_notes.xml b/indra/newview/skins/default/xui/de/panel_notes.xml
deleted file mode 100644
index ef1961b63d56391da1fc3f259d70f058cbf6edae..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/de/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Notizen &amp; Privatsphäre" name="panel_notes">
-	<layout_stack name="layout">
-		<layout_panel name="notes_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<text name="status_message" value="Meine Notizen:"/>
-					<text name="status_message2" value="Diese Person kann:"/>
-					<check_box label="meinen Online-Status sehen." name="status_check"/>
-					<check_box label="mich auf der Karte sehen." name="map_check"/>
-					<check_box label="meine Objekte bearbeiten, löschen oder nehmen." name="objects_check"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-		<layout_panel name="notes_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="Freund hinzufügen" name="add_friend" tool_tip="Dem Einwohner die Freundschaft anbieten"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="IM" name="im" tool_tip="Instant Messenger öffnen"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/>
-				</layout_panel>
-				<layout_panel name="show_on_map_btn_lp">
-					<button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen"/>
-				</layout_panel>
-				<layout_panel name="teleport_btn_lp">
-					<button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_postcard_message.xml b/indra/newview/skins/default/xui/de/panel_postcard_message.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6eeef8af712c00ae806419edea09887fa94d7f6d
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_postcard_message.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_message">
+	<text name="to_label">
+		An:
+	</text>
+	<text name="name_label">
+		Von:
+	</text>
+	<text name="subject_label">
+		Betreff:
+	</text>
+	<line_editor label="Betreff hier eingeben." name="subject_form"/>
+	<text name="msg_label">
+		Nachricht:
+	</text>
+	<text_editor name="msg_form">
+		Nachricht hier eingeben.
+	</text_editor>
+	<button label="Abbrechen" name="cancel_btn"/>
+	<button label="Senden" name="send_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_postcard_settings.xml b/indra/newview/skins/default/xui/de/panel_postcard_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c1a1c0cc463792231ce34709e766608af2e5c88e
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_postcard_settings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_settings">
+	<combo_box label="Auflösung" name="postcard_size_combo">
+		<combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="Benutzerdefiniert" name="Custom"/>
+	</combo_box>
+	<layout_stack name="postcard_image_params_ls">
+		<layout_panel name="postcard_image_size_lp">
+			<spinner label="Breite" name="postcard_snapshot_width"/>
+			<spinner label="Höhe" name="postcard_snapshot_height"/>
+			<check_box label="Seitenverhältnis beibehalten" name="postcard_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="postcard_image_format_quality_lp">
+			<slider label="Bildqualität" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+</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 ca8af27f58c628bea79c015b47f9cb5784d3855e..746a561e6c69fedc542b398ac1a4b4f553f13e47 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_chat.xml
@@ -29,30 +29,5 @@
 	<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"/>
-	<check_box name="translate_chat_checkbox"/>
-	<text name="translate_chb_label">
-		Beim Chatten Maschinenübersetzung verwenden (von Google bereitgestellt)
-	</text>
-	<text name="translate_language_text">
-		Chat übersetzen in:
-	</text>
-	<combo_box name="translate_language_combobox" width="200">
-		<combo_box.item label="Systemstandard" name="System Default Language"/>
-		<combo_box.item label="English (Englisch)" name="English"/>
-		<combo_box.item label="Dansk (Dänisch)" name="Danish"/>
-		<combo_box.item label="Deutsch" name="German"/>
-		<combo_box.item label="Español (Spanisch)" name="Spanish"/>
-		<combo_box.item label="Français (Französisch)" name="French"/>
-		<combo_box.item label="Italiano (Italienisch)" name="Italian"/>
-		<combo_box.item label="Magyar (Ungarisch)" name="Hungarian"/>
-		<combo_box.item label="Nederlands (Holländisch)" name="Dutch"/>
-		<combo_box.item label="Polski (Polnisch)" name="Polish"/>
-		<combo_box.item label="Português (Portugiesisch)" name="Portugese"/>
-		<combo_box.item label="Русский (Russisch)" name="Russian"/>
-		<combo_box.item label="Türkçe (Türkisch)" name="Turkish"/>
-		<combo_box.item label="Українська (Ukrainisch)" name="Ukrainian"/>
-		<combo_box.item label="中文 (简体) (Chinesisch)" name="Chinese"/>
-		<combo_box.item label="日本語 (Japanisch)" name="Japanese"/>
-		<combo_box.item label="한국어 (Koreanisch)" name="Korean"/>
-	</combo_box>
+	<button label="Übersetzungseinstellungen für Chats" name="ok_btn"/>
 </panel>
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 79b2a544f95fd5bb04cb77c0fa223103ce3bcd29..979ccba48d1fc4dbe72908f446a1f089953765b5 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml
@@ -11,10 +11,12 @@
 		<combo_box.item label="Español (Spanisch) - Beta" name="Spanish"/>
 		<combo_box.item label="Français (Französisch) - Beta" name="French"/>
 		<combo_box.item label="Italiano (Italienisch) - Beta" name="Italian"/>
-		<combo_box.item label="Nederlands (Niederländisch) - Beta" name="Dutch"/>
 		<combo_box.item label="Polski (Polnisch) - Beta" name="Polish"/>
 		<combo_box.item label="Português (Portugiesisch) - Beta" name="Portugese"/>
+		<combo_box.item label="Русский (Russisch) – Beta" name="Russian"/>
+		<combo_box.item label="Türkçe (Türkisch) – Beta" name="Turkish"/>
 		<combo_box.item label="日本語 (Japanisch) - Beta" name="(Japanese)"/>
+		<combo_box.item label="正體中文 (Traditionelles Chinesisch) – Beta" name="Traditional Chinese"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(Erfordert Neustart)
@@ -49,7 +51,6 @@
 	<check_box label="Gruppentitel" name="show_all_title_checkbox1" tool_tip="Gruppentitel wie „Vorstand“ oder „Mitglied“"/>
 	<check_box label="Freunde hervorheben" name="show_friends" tool_tip="Avatarnamen Ihrer Freunde hervorheben"/>
 	<check_box label="Anzeigenamen anzeigen" name="display_names_check" tool_tip="Aktivieren Sie diese Option, um Anzeigenamen in Chat, IM, Avatarnamen usw. zu verwenden."/>
-	<check_box label="Viewer-UI-Tipps aktivieren" name="viewer_hints_check"/>
 	<text name="inworld_typing_rg_label">
 		Drücken von Buchstabentasten:
 	</text>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_move.xml b/indra/newview/skins/default/xui/de/panel_preferences_move.xml
index fb749a16d7da8fef9f225128ab8a088f7f4c5a46..3e248f0bf010da5a30d70a1ef5db3b7a2bd112dd 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_move.xml
@@ -7,18 +7,33 @@
 	</text>
 	<check_box label="Bauen/Bearbeiten" name="edit_camera_movement" tool_tip="Automatische Kamerapositionierung bei Wechsel in und aus dem Bearbeitungsmodus verwenden"/>
 	<check_box label="Aussehen" name="appearance_camera_movement" tool_tip="Automatische Kamerapositionierung im Bearbeitenmodus verwenden"/>
-	<check_box initial_value="true" label="Seitenleiste" name="appearance_sidebar_positioning" tool_tip="Automatische Kameraposition für Seitenleiste verwenden"/>
+	<text name="keyboard_lbl">
+		Tastatur:
+	</text>
+	<check_box label="Mit Pfeiltasten bewegen" name="arrow_keys_move_avatar_check"/>
+	<check_box label="Drücken-drücken-halten, um zu rennen" name="tap_tap_hold_to_run"/>
+	<text name="mouse_lbl">
+		Maus:
+	</text>
 	<check_box label="Mich im Mouselook anzeigen" name="first_person_avatar_visible"/>
 	<text name=" Mouse Sensitivity">
 		Mausempfindlichkeit für Mouselook:
 	</text>
 	<check_box label="Umkehren" name="invert_mouse"/>
-	<check_box label="Mit Pfeiltasten bewegen" name="arrow_keys_move_avatar_check"/>
-	<check_box label="Drücken-drücken-halten, um zu rennen" name="tap_tap_hold_to_run"/>
-	<check_box label="Doppelklicken:" name="double_click_chkbox"/>
-	<radio_group name="double_click_action">
-		<radio_item label="Teleportieren" name="radio_teleport"/>
-		<radio_item label="Autopilot" name="radio_autopilot"/>
-	</radio_group>
+	<text name="single_click_action_lbl">
+		Einmal auf Land klicken:
+	</text>
+	<combo_box name="single_click_action_combo">
+		<combo_box.item label="Keine Aktion" name="0"/>
+		<combo_box.item label="Zu angeklicktem Ort bewegen" name="1"/>
+	</combo_box>
+	<text name="double_click_action_lbl">
+		Auf Land doppelklicken:
+	</text>
+	<combo_box name="double_click_action_combo">
+		<combo_box.item label="Keine Aktion" name="0"/>
+		<combo_box.item label="Zu angeklicktem Ort bewegen" name="1"/>
+		<combo_box.item label="Zu angeklicktem Ort teleportieren" name="2"/>
+	</combo_box>
 	<button label="Andere Geräte" name="joystick_setup_button"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
index 8b18bf8659f4d1c93834533aa33789b12a9f3b73..8c7ea688d7f6f724e3152aa9df8aed100dd3b56a 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
@@ -15,7 +15,7 @@
 		Web:
 	</text>
 	<radio_group name="use_external_browser">
-		<radio_item label="Meinen Browser verwenden (IE, Firefox, Safari)" name="external" tool_tip="Standard Webbrowser des Systems verwenden, um die Hilfe, Weblinks usw. anzuzeigen. Bei Vollbildmodus nicht empfohlen." value="1"/>
+		<radio_item label="Meinen Browser verwenden (IE, Firefox, Safari)" name="external" tool_tip="Standard Webbrowser des Systems verwenden, um die Hilfe, Weblinks usw. anzuzeigen. Bei Vollbildmodus nicht empfohlen." value="true"/>
 		<radio_item label="Integrierten Browser verwenden" name="internal" tool_tip="Integrierten Webbrowser verwenden, um die Hilfe, Weblinks usw. anzuzeigen. Dieser Browser öffnet als neues Fenster innerhalb von [APP_NAME]." value=""/>
 	</radio_group>
 	<check_box initial_value="true" label="Plugins aktivieren" name="browser_plugins_enabled"/>
diff --git a/indra/newview/skins/default/xui/de/panel_profile.xml b/indra/newview/skins/default/xui/de/panel_profile.xml
deleted file mode 100644
index b4c6e67108564f801305b05281f83bd2f40dae58..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/de/panel_profile.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
-	<string name="CaptionTextAcctInfo">
-		[ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
-	</string>
-	<string name="payment_update_link_url">
-		http://www.secondlife.com/account/billing.php?lang=de-DE
-	</string>
-	<string name="partner_edit_link_url">
-		http://www.secondlife.com/account/partners.php?lang=de
-	</string>
-	<string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=de-DE"/>
-	<string name="no_partner_text" value="Keiner"/>
-	<string name="no_group_text" value="Keiner"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<panel name="second_life_image_panel">
-						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
-					</panel>
-					<panel name="first_life_image_panel">
-						<text name="title_rw_descr_text" value="Echtes Leben:"/>
-					</panel>
-					<text name="title_member_text" value="Einwohner seit:"/>
-					<text name="title_acc_status_text" value="Kontostatus:"/>
-					<text_editor name="acc_status_text">
-						Einwohner. Keine Zahlungsinfo archiviert.
-              Linden.
-					</text_editor>
-					<text name="title_partner_text" value="Partner:"/>
-					<panel name="partner_data_panel">
-						<text initial_value="(wird in Datenbank gesucht)" name="partner_text"/>
-					</panel>
-					<text name="title_groups_text" value="Gruppen:"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-	<layout_stack name="layout_verb_buttons">
-		<layout_panel name="profile_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="Freund hinzufügen" name="add_friend" tool_tip="Dem Einwohner die Freundschaft anbieten"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="IM" name="im" tool_tip="Instant Messenger öffnen"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/>
-				</layout_panel>
-				<layout_panel name="chat_btn_lp">
-					<button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/>
-				</layout_panel>
-				<layout_panel name="overflow_btn_lp">
-					<menu_button label="â–¼" name="overflow_btn" tool_tip="Dem Einwohner Geld geben oder Inventar an den Einwohner schicken"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="profile_me_buttons_panel">
-			<button label="Profil bearbeiten" name="edit_profile_btn" tool_tip="Ihre persönlichen Informationen bearbeiten"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_profile_view.xml b/indra/newview/skins/default/xui/de/panel_profile_view.xml
deleted file mode 100644
index 7e93bd1edee2175e8a66dee06c5401f06902970c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/de/panel_profile_view.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
-	<string name="status_online">
-		Online
-	</string>
-	<string name="status_offline">
-		Offline
-	</string>
-	<text name="display_name_label" value="Anzeigename:"/>
-	<text name="solo_username_label" value="Benutzername:"/>
-	<text name="status" value="Online"/>
-	<text name="user_name_small" value="Dieser Name ist ein ganz außerordentlich langer Name"/>
-	<button name="copy_to_clipboard" tool_tip="In Zwischenablage kopieren"/>
-	<text name="user_label" value="Benutzername:"/>
-	<tab_container name="tabs" tab_min_width="60">
-		<panel label="PROFIL" name="panel_profile"/>
-		<panel label="AUSWAHL" name="panel_picks"/>
-		<panel label="NOTIZEN &amp; PRIVATSPHÄRE" name="panel_notes"/>
-	</tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..10827ce6f201baf60f65b55bb501295b9890bef4
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_snapshot_inventory.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_inventory">
+	<text name="title">
+		In meinem Inventar speichern
+	</text>
+	<text name="hint_lbl">
+		Das Speichern eines Bilds in Ihrem Inventar kostet [UPLOAD_COST] L$. Um das Bild als Textur zu speichern, wählen Sie eines der quadratischen Formate aus.
+	</text>
+	<combo_box label="Auflösung" name="texture_size_combo">
+		<combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/>
+		<combo_box.item label="Klein (128x128)" name="Small(128x128)"/>
+		<combo_box.item label="Mittel (256x256)" name="Medium(256x256)"/>
+		<combo_box.item label="Groß (512x512)" name="Large(512x512)"/>
+		<combo_box.item label="Benutzerdefiniert" name="Custom"/>
+	</combo_box>
+	<spinner label="Breite" name="inventory_snapshot_width"/>
+	<spinner label="Höhe" name="inventory_snapshot_height"/>
+	<check_box label="Seitenverhältnis beibehalten" name="inventory_keep_aspect_check"/>
+	<button label="Abbrechen" name="cancel_btn"/>
+	<button label="Speichern" name="save_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_local.xml b/indra/newview/skins/default/xui/de/panel_snapshot_local.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3aeae8038824a7ce76049931c7fbfe100e996a6b
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_snapshot_local.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_local">
+	<text name="title">
+		Auf meinem Computer speichern
+	</text>
+	<combo_box label="Auflösung" name="local_size_combo">
+		<combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/>
+		<combo_box.item label="320x240" name="320x240"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="1280x1024" name="1280x1024"/>
+		<combo_box.item label="1600x1200" name="1600x1200"/>
+		<combo_box.item label="Benutzerdefiniert" name="Custom"/>
+	</combo_box>
+	<layout_stack name="local_image_params_ls">
+		<layout_panel name="local_image_size_lp">
+			<spinner label="Breite" name="local_snapshot_width"/>
+			<spinner label="Höhe" name="local_snapshot_height"/>
+			<check_box label="Seitenverhältnis beibehalten" name="local_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="local_image_format_quality_lp">
+			<combo_box label="Format" name="local_format_combo">
+				<combo_box.item label="PNG (verlustfrei)" name="PNG"/>
+				<combo_box.item label="JPEG" name="JPEG"/>
+				<combo_box.item label="BMP (verlustfrei)" name="BMP"/>
+			</combo_box>
+			<slider label="Bildqualität" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+	<button label="Abbrechen" name="cancel_btn"/>
+	<flyout_button label="Speichern" name="save_btn" tool_tip="Bild als Datei speichern">
+		<flyout_button.item label="Speichern" name="save_item"/>
+		<flyout_button.item label="Speichern unter..." name="saveas_item"/>
+	</flyout_button>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_options.xml b/indra/newview/skins/default/xui/de/panel_snapshot_options.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e1d8a5dc6d48fb3a4f6fc54d9df1be4e5965524f
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_snapshot_options.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_options">
+	<button label="In meinem Profil posten" name="save_to_profile_btn"/>
+	<button label="E-Mail" name="save_to_email_btn"/>
+	<button label="In meinem Inventar speichern ([AMOUNT] L$)" name="save_to_inventory_btn"/>
+	<button label="Auf meinem Computer speichern" name="save_to_computer_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c9afe86d7fe6f8ef6bb2da067fb360a99c9e229a
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_postcard">
+	<string name="default_subject">
+		Postkarte aus [SECOND_LIFE].
+	</string>
+	<string name="default_message">
+		Sehen Sie mal!
+	</string>
+	<string name="upload_message">
+		Senden...
+	</string>
+	<text name="title">
+		E-Mail
+	</text>
+	<button label="Nachricht" name="message_btn"/>
+	<button label="Einstellungen" name="settings_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/de/panel_snapshot_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8d1c52dea820e5b8283c93c4472a60b08dbf1ab4
--- /dev/null
+++ b/indra/newview/skins/default/xui/de/panel_snapshot_profile.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_profile">
+	<text name="title">
+		In meinem Profil posten
+	</text>
+	<combo_box label="Auflösung" name="profile_size_combo">
+		<combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="Benutzerdefiniert" name="Custom"/>
+	</combo_box>
+	<layout_stack name="profile_image_params_ls">
+		<layout_panel name="profile_image_size_lp">
+			<spinner label="Breite" name="profile_snapshot_width"/>
+			<spinner label="Höhe" name="profile_snapshot_height"/>
+			<check_box label="Seitenverhältnis beibehalten" name="profile_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="profile_image_metadata_lp">
+			<text name="caption_label">
+				Bildunterschrift:
+			</text>
+			<check_box initial_value="true" label="Ort einschließen" name="add_location_cb"/>
+		</layout_panel>
+	</layout_stack>
+	<button label="Abbrechen" name="cancel_btn"/>
+	<button label="Posten" name="post_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_status_bar.xml b/indra/newview/skins/default/xui/de/panel_status_bar.xml
index e9de350ee719560fe864457f4d064caeb2af8217..2493d60df6697edbbabbe0b81fdbef6d468decba 100644
--- a/indra/newview/skins/default/xui/de/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/de/panel_status_bar.xml
@@ -18,11 +18,8 @@
 	<panel name="balance_bg">
 		<text name="balance" tool_tip="Klicken, um L$-Guthaben zu aktualisieren" value="20 L$"/>
 		<button label="L$ kaufen" name="buyL" tool_tip="Hier klicken, um mehr L$ zu kaufen"/>
+		<button label="Einkaufen" name="goShop" tool_tip="Second Life-Marktplatz öffnen" width="85"/>
 	</panel>
-	<combo_box name="mode_combo" tool_tip="Wählen Sie den gewünschten Modus aus. Basismodus: Second Life schnell und einfach erkunden und chatten. Erweiterter Modus: Zugriff auf zusätzliche Funktionen.">
-		<combo_box.item label="Basismodus" name="Basic"/>
-		<combo_box.item label="Erweiterter Modus" name="Advanced"/>
-	</combo_box>
 	<text name="TimeText" tool_tip="Aktuelle Zeit (Pazifik)">
 		24:00 H PST
 	</text>
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 435f3494b0a9d5a00c1dbeb0a2698f404db3b58a..14e9fcdb7f355aacc8e306fd20563826424ce60d 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -128,7 +128,7 @@
 		Die Zertifikatsunterschrift des Gridservers konnte nicht bestätigt werden.  Bitte kontaktieren Sie Ihren Grid-Administrator.
 	</string>
 	<string name="LoginFailedNoNetwork">
-		Netzwerk Fehler: Eine Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie Ihre Netzwerkverbindung.
+		Netzwerkfehler: Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie Ihre Netzwerkverbindung.
 	</string>
 	<string name="LoginFailed">
 		Anmeldung fehlgeschlagen
@@ -1214,7 +1214,7 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 		Sie haben keine Kopie dieser Textur in Ihrem Inventar.
 	</string>
 	<string name="InventoryInboxNoItems">
-		Objekte, die auf dem Marktplatz gekauft wurden, werden hierher geliefert.
+		Wenn Sie einen Artikel kaufen oder anderweitig erhalten, erscheint er hier, damit Sie ihn in einen Ordner in Ihrem Inventar ziehen bzw. löschen können, wenn Sie ihn nicht behalten möchten.
 	</string>
 	<string name="MarketplaceURL">
 		http://marketplace.[DOMAIN_NAME]
@@ -1276,6 +1276,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="Marketplace Error Internal Import">
 		Fehler: Bei diesem Artikel ist ein Problem aufgetreten. Versuchen Sie es später erneut.
 	</string>
+	<string name="Open landmarks">
+		Landmarken öffnen
+	</string>
 	<string name="no_transfer" value=" (kein Transferieren)"/>
 	<string name="no_modify" value=" (kein Bearbeiten)"/>
 	<string name="no_copy" value=" (kein Kopieren)"/>
@@ -1409,6 +1412,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="no_attachments">
 		Keine Anhänge getragen
 	</string>
+	<string name="Attachments remain">
+		Anhänge (noch [COUNT] Positionen frei)
+	</string>
 	<string name="Buy">
 		Kaufen
 	</string>
@@ -1535,6 +1541,12 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="Right Pec">
 		Rechts
 	</string>
+	<string name="Neck">
+		Hals
+	</string>
+	<string name="Avatar Center">
+		Avatar-Mitte
+	</string>
 	<string name="Invalid Attachment">
 		Ungültige Stelle für Anhang
 	</string>
@@ -4027,6 +4039,18 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_
 	<string name="you_paid_ldollars_no_name">
 		Sie haben [REASON] [AMOUNT] L$ bezahlt.
 	</string>
+	<string name="you_paid_failure_ldollars">
+		Sie haben [NAME] [AMOUNT] L$ [REASON] nicht bezahlt.
+	</string>
+	<string name="you_paid_failure_ldollars_no_info">
+		Sie haben [AMOUNT] L$ nicht bezahlt.
+	</string>
+	<string name="you_paid_failure_ldollars_no_reason">
+		Sie haben [NAME] [AMOUNT] L$ nicht bezahlt.
+	</string>
+	<string name="you_paid_failure_ldollars_no_name">
+		Sie haben [AMOUNT] L$ [REASON] nicht bezahlt.
+	</string>
 	<string name="for item">
 		für [ITEM]
 	</string>
@@ -4254,7 +4278,7 @@ Missbrauchsbericht
 	<string name="Female - Wow">
 		Weiblich - Wow
 	</string>
-	<string name="/bow1">
+	<string name="/bow">
 		/verbeugen
 	</string>
 	<string name="/clap">
@@ -4437,6 +4461,12 @@ Setzen Sie den Editorpfad in Anführungszeichen
 	<string name="ExternalEditorFailedToRun">
 		Externer Editor konnte nicht ausgeführt werden.
 	</string>
+	<string name="TranslationFailed">
+		Ãœbersetzung fehlgeschlagen: [REASON]
+	</string>
+	<string name="TranslationResponseParseError">
+		Fehler beim Parsen der Ãœbersetzungsantwort.
+	</string>
 	<string name="Esc">
 		Esc
 	</string>
@@ -4767,4 +4797,196 @@ Setzen Sie den Editorpfad in Anführungszeichen
 	<string name="ParticleHiding">
 		Partikel werden ausgeblendet
 	</string>
+	<string name="Command_AboutLand_Label">
+		Landinformationen
+	</string>
+	<string name="Command_Appearance_Label">
+		Aussehen
+	</string>
+	<string name="Command_Avatar_Label">
+		Avatar
+	</string>
+	<string name="Command_Build_Label">
+		Bauen
+	</string>
+	<string name="Command_Chat_Label">
+		Chat
+	</string>
+	<string name="Command_Compass_Label">
+		Kompass
+	</string>
+	<string name="Command_Destinations_Label">
+		Ziele
+	</string>
+	<string name="Command_Gestures_Label">
+		Gesten
+	</string>
+	<string name="Command_HowTo_Label">
+		Infos
+	</string>
+	<string name="Command_Inventory_Label">
+		Inventar
+	</string>
+	<string name="Command_Map_Label">
+		Karte
+	</string>
+	<string name="Command_Marketplace_Label">
+		Marktplatz
+	</string>
+	<string name="Command_MiniMap_Label">
+		Minikarte
+	</string>
+	<string name="Command_Move_Label">
+		Gehen / Rennen / Fliegen
+	</string>
+	<string name="Command_People_Label">
+		Leute
+	</string>
+	<string name="Command_Picks_Label">
+		Auswahlen
+	</string>
+	<string name="Command_Places_Label">
+		Orte
+	</string>
+	<string name="Command_Preferences_Label">
+		Einstellungen
+	</string>
+	<string name="Command_Profile_Label">
+		Profil
+	</string>
+	<string name="Command_Search_Label">
+		Suchen
+	</string>
+	<string name="Command_Snapshot_Label">
+		Foto
+	</string>
+	<string name="Command_Speak_Label">
+		Sprechen
+	</string>
+	<string name="Command_View_Label">
+		Kamerasteuerungen
+	</string>
+	<string name="Command_Voice_Label">
+		Voice-Einstellungen
+	</string>
+	<string name="Command_AboutLand_Tooltip">
+		Informationen zu dem von Ihnen besuchten Land
+	</string>
+	<string name="Command_Appearance_Tooltip">
+		Avatar ändern
+	</string>
+	<string name="Command_Avatar_Tooltip">
+		Kompletten Avatar auswählen
+	</string>
+	<string name="Command_Build_Tooltip">
+		Objekte bauen und Terrain umformen
+	</string>
+	<string name="Command_Chat_Tooltip">
+		Mit Leuten in der Nähe chatten
+	</string>
+	<string name="Command_Compass_Tooltip">
+		Kompass
+	</string>
+	<string name="Command_Destinations_Tooltip">
+		Ziele von Interesse
+	</string>
+	<string name="Command_Gestures_Tooltip">
+		Gesten für Ihren Avatar
+	</string>
+	<string name="Command_HowTo_Tooltip">
+		Wie führe ich gängige Aufgaben aus?
+	</string>
+	<string name="Command_Inventory_Tooltip">
+		Ihr Eigentum anzeigen und benutzen
+	</string>
+	<string name="Command_Map_Tooltip">
+		Weltkarte
+	</string>
+	<string name="Command_Marketplace_Tooltip">
+		Einkaufen gehen
+	</string>
+	<string name="Command_MiniMap_Tooltip">
+		Leute in der Nähe anzeigen
+	</string>
+	<string name="Command_Move_Tooltip">
+		Ihren Avatar bewegen
+	</string>
+	<string name="Command_People_Tooltip">
+		Freunde, Gruppen und Leute in der Nähe
+	</string>
+	<string name="Command_Picks_Tooltip">
+		Orte, die in Ihrem Profil als Favoriten angezeigt werden sollen
+	</string>
+	<string name="Command_Places_Tooltip">
+		Von Ihnen gespeicherte Orte
+	</string>
+	<string name="Command_Preferences_Tooltip">
+		Einstellungen
+	</string>
+	<string name="Command_Profile_Tooltip">
+		Ihr Profil bearbeiten oder anzeigen
+	</string>
+	<string name="Command_Search_Tooltip">
+		Orte, Veranstaltungen, Leute finden
+	</string>
+	<string name="Command_Snapshot_Tooltip">
+		Foto aufnehmen
+	</string>
+	<string name="Command_Speak_Tooltip">
+		Über Ihr Mikrofon mit Leuten in der Nähe sprechen
+	</string>
+	<string name="Command_View_Tooltip">
+		Kamerawinkel ändern
+	</string>
+	<string name="Command_Voice_Tooltip">
+		Lautstärkeregler für Anrufe und Leute in Ihrer Nähe in SL
+	</string>
+	<string name="Toolbar_Bottom_Tooltip">
+		gegenwärtig in der unteren Symbolleiste
+	</string>
+	<string name="Toolbar_Left_Tooltip">
+		gegenwärtig in der linken Symbolleiste
+	</string>
+	<string name="Toolbar_Right_Tooltip">
+		gegenwärtig in der rechten Symbolleiste
+	</string>
+	<string name="Retain%">
+		% zurückbehalten
+	</string>
+	<string name="Detail">
+		Details
+	</string>
+	<string name="Better Detail">
+		Bessere Details
+	</string>
+	<string name="Surface">
+		Oberfläche
+	</string>
+	<string name="Solid">
+		Fest
+	</string>
+	<string name="Wrap">
+		Wickeln
+	</string>
+	<string name="Preview">
+		Vorschau
+	</string>
+	<string name="Normal">
+		Normal
+	</string>
+	<string name="snapshot_quality_very_low">
+		Sehr niedrig
+	</string>
+	<string name="snapshot_quality_low">
+		Niedrig
+	</string>
+	<string name="snapshot_quality_medium">
+		Mittel
+	</string>
+	<string name="snapshot_quality_high">
+		Hoch
+	</string>
+	<string name="snapshot_quality_very_high">
+		Sehr hoch
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/de/teleport_strings.xml b/indra/newview/skins/default/xui/de/teleport_strings.xml
index 69c952c5325465e6154924ade996ebdb0419fd85..9cf381bacc13581b7e7eba7228faf7c8c6682fe1 100644
--- a/indra/newview/skins/default/xui/de/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/de/teleport_strings.xml
@@ -19,6 +19,10 @@ Wenn der Teleport dann immer noch nicht funktioniert, melden Sie sich bitte ab u
 		<message name="timeout_tport">
 			Das System konnte keine Teleport-Verbindung herstellen.
 Versuchen Sie es später noch einmal.
+		</message>
+		<message name="NoHelpIslandTP">
+			Sie können nicht zurück nach Welcome Island teleportieren.
+Gehen Sie zu „Welcome Island Public“, um das Tutorial zu wiederholen.
 		</message>
 		<message name="noaccess_tport">
 			Sie haben leider keinen Zugang zu diesem Teleport-Ziel.
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index 3dd394bac1103960fe394e4210efa8d0bf9234a2..c7e9ec781daa343bdbf3ff75220412b4df54548e 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
+ open_positioning="centered"
  legacy_header_height="18"
  height="440"
  layout="topleft"
@@ -23,7 +24,7 @@ Built with [COMPILER] version [COMPILER_VERSION]
      name="AboutPosition">
 You are at [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] located at &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
 
 </floater.string>
   <!-- *NOTE: Do not translate text like GPU, Graphics Card, etc -
@@ -58,6 +59,10 @@ Voice Server Version: [VOICE_VERSION]
   <floater.string
      name="AboutTraffic">
 Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
+</floater.string>
+<floater.string
+     name="ErrorFetchingServerReleaseNotesURL">
+Error fetching server release notes URL.
 </floater.string>
   <tab_container
     follows="all" 
@@ -191,34 +196,36 @@ Dummy Name replaced at run time
        top="5"
        width="435"
        word_wrap="true">
-3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
-APR Copyright (C) 2000-2004 The Apache Software Foundation
-Collada DOM Copyright 2005 Sony Computer Entertainment Inc.
-cURL Copyright (C) 1996-2002, 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, The FreeType Project (www.freetype.org).
-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) 2001, Xiphophorus
-OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
-PCRE Copyright (c) 1997-2008 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-2002 Jean-loup Gailly and Mark Adler.
-google-perftools Copyright (c) 2005, Google Inc.
+        3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
+        APR Copyright (C) 2000-2004 The Apache Software Foundation
+        Collada DOM Copyright 2005 Sony Computer Entertainment Inc.
+        cURL Copyright (C) 1996-2002, 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, The FreeType Project (www.freetype.org).
+        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) 2001, Xiphophorus
+        OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
+        PCRE Copyright (c) 1997-2008 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-2002 Jean-loup Gailly and Mark Adler.
+        google-perftools Copyright (c) 2005, Google Inc.
+
+        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.
 
-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.
+        All rights reserved.  See licenses.txt for details.
 
-Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
-        </text_editor>
+        Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
+      </text_editor>
       </panel>
     </tab_container>
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index e5dcc9bcb5776300586071af3a6d1682ae5a6cc0..1d5a6740b74d9266ec9056563defe2b65f2341e3 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
+ open_positioning="cascading"
  can_tear_off="false"
  height="420"
  layout="topleft"
@@ -486,7 +487,7 @@
              name="DwellText"
              top_delta="0"
              width="186">
-                0
+                Loading...
             </text>
 
             <button
@@ -1205,10 +1206,6 @@ Only large parcels can be listed in search.
              name="push_restrict_region_text">
                 No Pushing (Region Override)
             </panel.string>
-            <panel.string
-             name="see_avs_text">
-                 See and chat with residents on this parcel
-            </panel.string>
             <text
              type="string"
              length="1"
@@ -1222,30 +1219,33 @@ Only large parcels can be listed in search.
              width="278">
                 Allow other Residents to:
             </text>
-            <check_box
-             height="16"
-             label="Edit Terrain"
-             layout="topleft"
-             left="14"
-             name="edit land check"
-             tool_tip="If checked, anyone can terraform your land. It is best to leave this unchecked, as you can always edit your own land."
-             top_pad="4"
-             width="147i" />
-            <check_box
+          <text
+           type="string"
+           length="1"
+           follows="left|top"
+           height="16"
+           layout="topleft"
+           left="20"
+           name="allow_label0"
+           width="150">
+            Fly:
+          </text>
+
+          <check_box
              height="16"
-             label="Fly"
+             label="Everyone"
              layout="topleft"
              name="check fly"
              tool_tip="If checked, Residents can fly on your land. If unchecked, they can only fly into and over your land."
-             left_pad="4"
-             width="150" />
+             left_pad="2"
+             width="130" />
             <text
              type="string"
              length="1"
              follows="left|top"
              height="16"
              layout="topleft"
-             left="14"
+             left="20"
              name="allow_label2"
              width="150">
                 Build:
@@ -1270,7 +1270,7 @@ Only large parcels can be listed in search.
              follows="left|top"
              height="16"
              layout="topleft"
-             left="14"
+             left="20"
              name="allow_label3"
              width="150">
                 Object Entry:
@@ -1297,7 +1297,7 @@ Only large parcels can be listed in search.
              follows="left|top"
              height="16"
              layout="topleft"
-             left="14"
+             left="20"
              name="allow_label4"
              width="150">
                 Run Scripts:
@@ -1318,49 +1318,47 @@ Only large parcels can be listed in search.
              name="check group scripts"
              top_delta="0"
              width="70" />
-           <text
-             type="string"
-             text_color="white"
-             length="1"
-             follows="left|top"
-             height="16"
-             layout="topleft"
-             left="10"
-             name="land_options_label"
-             width="278">
-                Land Options:
-            </text>
-            <check_box
+          <panel
+            bevel_style="none"
+            border="true"
+            top="146"
+            bottom="146"
+            follows="left|bottom|right"
+            left="20"
+            right="-20"/>
+          <check_box
              height="16"
              label="Safe (no damage)"
              layout="topleft"
-             left="14"
+             left="18"
              name="check safe"
              tool_tip="If checked, sets the land to Safe, disabling damage combat. If cleared, damage combat is enabled."
-             top_pad="5"
+             top="130"
              width="200" />
             <check_box
              height="16"
              label="No Pushing"
              layout="topleft"
-             left_pad="5"
+             left_pad="35"
              name="PushRestrictCheck"
              tool_tip="Prevents scripts from pushing. Checking this option may be useful for preventing disruptive behavior on your land."
-             top_delta="0"
+             top="130"
              width="119" />
             <check_box
              height="16"
              label="Show Place in Search (L$30/week)"
              layout="topleft"
-             left="14"
+             left="18"
              name="ShowDirectoryCheck"
              tool_tip="Let people see this parcel in search results"
+             top="150"
              width="430" />
             <combo_box
              enabled="false"
              height="23"
              layout="topleft"
-             left="30"
+             left="20"
+             top="194"
              name="land category with adult"
              visible="false"
              width="140">
@@ -1425,7 +1423,8 @@ Only large parcels can be listed in search.
              enabled="false"
              height="23"
              layout="topleft"
-             left="30"
+             left="20"
+             top="194"
              name="land category"
              visible="false"
              width="140">
@@ -1486,11 +1485,11 @@ Only large parcels can be listed in search.
              height="16"
              label="Moderate Content"
              layout="topleft"
-             left="14"
+             left="18"
              name="MatureCheck"
-             top="177"
+             top="170"
              label_text.valign="center" 
-             label_text.v_pad="-5" 
+             label_text.v_pad="-1" 
              tool_tip=" "
              width="200" />
             <text
@@ -1499,18 +1498,19 @@ Only large parcels can be listed in search.
              follows="left|top"
              height="16"
              layout="topleft"
-             left="10"
+             left="20"
              name="Snapshot:"
              text_color="white"
-             top="220"
+             top="225"
              width="200">
                 Snapshot:
             </text>
             <texture_picker
              follows="left|top"
+             top_pad="0"
              height="150"
              layout="topleft"
-             left="14"
+             left="20"
              name="snapshot_ctrl"
              fallback_image="default_land_picture.j2c" 
              tool_tip="Click to choose a picture"
@@ -1519,32 +1519,33 @@ Only large parcels can be listed in search.
              type="string"
              length="1"
              follows="left|top"
-             text_color="white"
-             height="16"
+             text_color="LtGray"
+             height="32"
              layout="topleft"
-             left="230"
-             top="174"
+             left="274"
+             top="150"
              name="allow_label5"
-             width="278">
-              Allow Residents on other parcels to:
+             width="205"
+             wrap="true">
+              Avatars on other parcels can see and chat with avatars on this parcel
             </text>
             <check_box
              height="16"
-             label="See Avatars"
              follows="top"
              layout="topleft"
-             left="230"
+             left="253"
+             top="150"
              name="SeeAvatarsCheck"
-             tool_tip="Allows residents on other parcels to see and chat with residents on this parcel, and you to see and chat with them."
-             width="120" />
+             tool_tip="Allows avatars on other parcels to see and chat with avatars on this parcel, and you to see and chat with them."
+             width="10" />
             <text
              type="string"
              length="1"
              follows="left|top"
              height="16"
              layout="topleft"
-             left="230"
-             top="230"
+             left="255"
+             top="282"
              text_color="white"
              name="landing_point"
              word_wrap="true"
@@ -1553,12 +1554,13 @@ Only large parcels can be listed in search.
             </text>
             <button
              follows="right|top"
+             top_pad="0"
              height="23"
              label="Set"
              label_selected="Set"
              layout="topleft"
              name="Set"
-             left="230"
+             left="255"
              tool_tip="Sets the landing point where visitors arrive. Sets to your avatar&apos;s location inside this parcel."
              width="50" />
             <button
@@ -1578,7 +1580,7 @@ Only large parcels can be listed in search.
              follows="left|top"
              height="16"
              layout="topleft"
-             left="230"
+             left="255"
              top_pad="10"
              name="Teleport Routing: "
              width="200">
@@ -1588,7 +1590,7 @@ Only large parcels can be listed in search.
              height="23"
              layout="topleft"
              name="landing type"
-             top_pad="3"
+             top_pad="0"
              tool_tip="Teleport Routing -- select how to handle teleports onto your land"
              width="120">
                 <combo_box.item
@@ -1949,36 +1951,18 @@ Only large parcels can be listed in search.
 			 name="access_estate_defined">
 				(Defined by the Estate)
 			</panel.string>
-      <panel.string
-       name="allow_public_access">
-        Allow Public Access ([MATURITY]) (Note: Unchecking this will create ban lines)
-      </panel.string>
             <panel.string
              name="estate_override">
                 One or more of these options is set at the estate level
             </panel.string>
-            <text
-             type="string"
-             length="1"
-             follows="left|top"
-             height="16"
-             layout="topleft"
-             left="10"
-             name="Limit access to this parcel to:"
-             text_color="White"
-             top="10"
-             width="400">
-                Access To This Parcel
-            </text>
             <check_box
              follows="top|left"
              height="16"
              layout="topleft"
-             left_delta="0"
+             left="8"
              name="public_access"
-             top_pad="5"
-             label_text.valign="center"
-             label_text.v_pad="-2" 
+             label="Allow Public Access (Unchecking this will create ban lines)"
+             top_pad="10" 
              width="278" />
             <text
              type="string"
@@ -1988,28 +1972,28 @@ Only large parcels can be listed in search.
              layout="topleft"
              left_delta="20"
              name="Only Allow"
-             top="49"
+             top="30"
              width="325">
-                Restrict Access to Residents verified by:
+                Allow access only to Residents who:
             </text>
             <check_box
              follows="top|left"
              height="16"
-             label="Payment Information on File [ESTATE_PAYMENT_LIMIT]"
+             label="Have payment Information on File [ESTATE_PAYMENT_LIMIT]"
              layout="topleft"
              left_delta="0"
              name="limit_payment"
-             tool_tip="Ban unidentified Residents."
+             tool_tip="Residents must have payment information on file to access this parcel.  See the [SUPPORT_SITE] for more information."
              top_pad="4"
              width="278" />
             <check_box
              follows="top|left"
              height="16"
-             label="Age Verification [ESTATE_AGE_LIMIT]"
+             label="Have been age-verified [ESTATE_AGE_LIMIT]"
              layout="topleft"
              left_delta="0"
              name="limit_age_verified"
-             tool_tip="Ban Residents who have not verified their age. See the [SUPPORT_SITE] for more information."
+             tool_tip="Residents must be age verified to access this parcel. See the [SUPPORT_SITE] for more information."
              top_pad="4"
              width="278" />
             <check_box
@@ -2019,7 +2003,7 @@ Only large parcels can be listed in search.
              left="8"
              name="GroupCheck"
              tool_tip="Set group in the General tab."
-             top="109"
+             top="89"
              width="278" />
             <check_box
              enabled="false"
diff --git a/indra/newview/skins/default/xui/en/floater_activeim.xml b/indra/newview/skins/default/xui/en/floater_activeim.xml
index 96fe0aa70c1f6b9dac0ef30aa8a297177490a917..b79c5d9a19773ae6740a8fe50e10fa43b57e99d1 100644
--- a/indra/newview/skins/default/xui/en/floater_activeim.xml
+++ b/indra/newview/skins/default/xui/en/floater_activeim.xml
@@ -4,11 +4,8 @@
 	name="floater_activeim"
 	help_topic="floater_activeim"
 	title="ACTIVE IM"
-	top="26"
-	left="0"
 	height="22"
 	width="320"
-	follows="right|bottom"
 	background_visible="true"
 	can_close="true"
 	can_dock="true"
diff --git a/indra/newview/skins/default/xui/en/floater_avatar.xml b/indra/newview/skins/default/xui/en/floater_avatar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..82c340300823b5f509e9b421eadbc37b63c5a55b
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_avatar.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ open_positioning="cascading"
+ ignore_ui_scale="false"
+ legacy_header_height="225"
+ can_minimize="true"
+ can_close="true"
+ can_resize="true"
+ min_height="230"
+ min_width="450"
+ height="230"
+ layout="topleft"
+ name="Avatar"
+ single_instance="true"
+ help_topic="avatar"
+ save_rect="true"
+ save_visibility="true"
+ title="CHOOSE AN AVATAR"
+ width="700">
+    <web_browser
+      top="25"
+      height="200"
+      width="700"
+      follows="all"
+      name="avatar_picker_contents"
+      trusted_content="true"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml
index a11946d3520491e713aca29828066f1f40370730..cbbbeb609481a49ce10f0c3b6111d078e447f4b6 100644
--- a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml
+++ b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
+ open_positioning="cascading"
  legacy_header_height="18"
  can_resize="true"
  height="350"
diff --git a/indra/newview/skins/default/xui/en/floater_build_options.xml b/indra/newview/skins/default/xui/en/floater_build_options.xml
index c247a12e7a19aaa0c9cca25b62b4722043edac6d..35918e9705d65093740cedd016fb9e945d857f93 100644
--- a/indra/newview/skins/default/xui/en/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/en/floater_build_options.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
- follows="right"
  height="198"
  layout="topleft"
  name="build options floater"
@@ -37,7 +36,7 @@
      layout="topleft"
      left="10"
      tool_tip="Grid opacity"
-     name="grid_opacity_label"
+     name="grid_mode_label"
      top_pad="30"
      width="123">
         Mode
diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml
index 49ca6cc8baebd253a00c474212b8d9872475641e..6afa24d04af25e0e30b83276dff28c7115700676 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml
@@ -224,7 +224,7 @@
      width="300"
      height="30"
      name="currency_links">
-      [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+      [http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency]
     </text>
     <text
      type="string"
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
index b9c415633f929d2ad7f5254f902a65d7c13fd795..0637eedfb225f208c8a2633cfd91ca198825ccfc 100644
--- a/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml
+++ b/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml
@@ -23,6 +23,5 @@
     right="-1" 
     top="1"
     bottom="-1" 
-    ignore_ui_scale="false"
     name="browser"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml
index da2be18db660bfb37ac054bce49357badbe53ecb..4673c6def59a729e2a241588dbff3ae60e175d09 100644
--- a/indra/newview/skins/default/xui/en/floater_camera.xml
+++ b/indra/newview/skins/default/xui/en/floater_camera.xml
@@ -1,18 +1,20 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
+ open_positioning="specified"
+ specified_left="458"
+ specified_bottom="80"
  legacy_header_height="18"
- can_dock="true"
  can_minimize="true"
- can_close="false"
- follows="bottom"
+ can_close="true"
  height="164"
  layout="topleft"
  name="camera_floater"
  help_topic="camera_floater"
- save_rect="true"
  save_visibility="true"
- save_dock_state="true"
  single_instance="true"
+ title="CAMERA CONTROLS"
+ chrome="true"
+ save_rect="true"
  width="228">
     <floater.string
      name="rotate_tooltip">
@@ -26,18 +28,6 @@
      name="move_tooltip">
         Move Camera Up and Down, Left and Right
     </floater.string>
-    <floater.string
-     name="camera_modes_title">
-        Camera modes
-    </floater.string>
-    <floater.string
-     name="pan_mode_title">
-       Orbit Zoom Pan
-    </floater.string>
-    <floater.string
-     name="presets_mode_title">
-        Preset Views
-    </floater.string>
     <floater.string
      name="free_mode_title">
         View Object
@@ -164,14 +154,10 @@
            <joystick_rotate
               follows="top|left"
               height="78"
-              image_selected="Cam_Rotate_In"
-              image_unselected="Cam_Rotate_Out"
               layout="topleft"
               left="7"
-              mouse_opaque="false"
               name="cam_rotate_stick"
               quadrant="left"
-              scale_image="false"
               sound_flags="3"
               visible="true"
               tool_tip="Orbit camera around focus"
diff --git a/indra/newview/skins/default/xui/en/floater_chat_bar.xml b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..63992462b34a33973cdd5675a6ad6eadfb203399
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_chat_bar.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ open_positioning="specified"
+ specified_left="10"
+ specified_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"
+        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_color_picker.xml b/indra/newview/skins/default/xui/en/floater_color_picker.xml
index 421f3a72c61f14c69164180ba65225793f76ea84..e06d10606a3b72e47bfbf87c9ae1ddcc133d3a39 100644
--- a/indra/newview/skins/default/xui/en/floater_color_picker.xml
+++ b/indra/newview/skins/default/xui/en/floater_color_picker.xml
@@ -2,7 +2,6 @@
 <floater
  legacy_header_height="18"
  can_minimize="false"
- follows="left|top"
  height="380"
  layout="topleft"
  name="ColorPicker"
diff --git a/indra/newview/skins/default/xui/en/floater_critical.xml b/indra/newview/skins/default/xui/en/floater_critical.xml
index 05c958e051be60a2fa47d2a5fd1ced41fd32f096..13b15bf724060976b62fdae0f1a1437628d08e66 100644
--- a/indra/newview/skins/default/xui/en/floater_critical.xml
+++ b/indra/newview/skins/default/xui/en/floater_critical.xml
@@ -6,7 +6,7 @@
  height="500"
  layout="topleft"
  name="modal container"
- open_centered="true"
+ open_positioning="centered"
  width="600">
     <button
      height="20"
diff --git a/indra/newview/skins/default/xui/en/floater_destinations.xml b/indra/newview/skins/default/xui/en/floater_destinations.xml
new file mode 100644
index 0000000000000000000000000000000000000000..373114a1eb8a748170552b2dcf1450fd86defe16
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_destinations.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ open_positioning="cascading"
+ ignore_ui_scale="false"
+ legacy_header_height="225"
+ can_minimize="true"
+ can_close="true"
+ user_resize="true"
+ can_resize="true"
+ min_height="230"
+ min_width="350"
+ height="230"
+ layout="topleft"
+ name="Destinations"
+ single_instance="true"
+ help_topic="destinations"
+ save_rect="true"
+ save_visibility="true"
+ title="DESTINATIONS"
+ width="840">
+    <web_browser
+      top="25"
+      height="200"
+      width="840"
+      follows="all"
+      name="destination_guide_contents"
+      trusted_content="true"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_event.xml b/indra/newview/skins/default/xui/en/floater_event.xml
index 7ed020f83235f3ce5a115878121775d8cd58812f..cf61b7d24d4409b1f0db01787af31438a212681f 100644
--- a/indra/newview/skins/default/xui/en/floater_event.xml
+++ b/indra/newview/skins/default/xui/en/floater_event.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
- follows="all"
  height="400"
  can_resize="true"
  help_topic="event_details"
diff --git a/indra/newview/skins/default/xui/en/floater_gesture.xml b/indra/newview/skins/default/xui/en/floater_gesture.xml
index 9f5e6828d20d4fb308b09036d38b7dabbd3b8e27..b96a94a849b2e299e169ee31fd072d26960eaca8 100644
--- a/indra/newview/skins/default/xui/en/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_gesture.xml
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
+ open_positioning="cascading"
+ save_rect="true"
  legacy_header_height="18"
  can_resize="true"
  height="465"
@@ -7,7 +9,6 @@
  help_topic="gestures"
  title="GESTURES"
  background_visible="true"
- follows="all"
  label="Places"
  layout="topleft"
  min_height="350"
diff --git a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml
index 05f4c52b950e0ba11bc1b52dd0fa6dabfdecf233..66bb9d3cea8e74d63286911ac71ec819e9223ac6 100644
--- a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml
@@ -35,7 +35,7 @@
      height="12"
      layout="topleft"
      left="10"
-     name="Antialiasing:"
+     name="antialiasing label"
      top_pad="7"
      width="188">
         Antialiasing:
diff --git a/indra/newview/skins/default/xui/en/floater_help_browser.xml b/indra/newview/skins/default/xui/en/floater_help_browser.xml
index de6d586f7204b32d6249b7f2a51ea6474c4f92cf..cd075abc415f5762666fb493d595443c8fd5edd6 100644
--- a/indra/newview/skins/default/xui/en/floater_help_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml
@@ -1,9 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
+ open_positioning="cascading"
  legacy_header_height="18"
  can_resize="true"
- left="10000"
- bottom="10000"
  height="600"
  layout="topleft"
  min_height="150"
@@ -35,7 +34,6 @@
          left_delta="0"
          top_delta="0"
          name="external_controls"
-         user_resize="false"
          width="620">
             <web_browser
              trusted_content="true" 
diff --git a/indra/newview/skins/default/xui/en/floater_how_to.xml b/indra/newview/skins/default/xui/en/floater_how_to.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8c0077a8cc8eecf4db8c6051cf1d1c07338909ce
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_how_to.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+  legacy_header_height="18"
+  can_resize="true"
+  can_minimize="true" 
+  height="775"
+  layout="topleft"
+  min_height="360"
+  left="10000"
+  top="10" 
+  min_width="335"
+  name="floater_how_to"
+  help_topic="how_to"
+  single_instance="true"
+  save_rect="true"
+  title="HOW TO"
+  width="780"
+  filename="floater_web_content.xml"/>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/floater_hud.xml b/indra/newview/skins/default/xui/en/floater_hud.xml
index 99a6a95828edad946f52ddd0c23ecd604e407b19..e2d860881a25be8d9cde567b149b13e0247e4e56 100644
--- a/indra/newview/skins/default/xui/en/floater_hud.xml
+++ b/indra/newview/skins/default/xui/en/floater_hud.xml
@@ -8,6 +8,7 @@
  help_topic="floater_hud"
  save_rect="true"
  save_visibility="true"
+ chrome="true"
  title="TUTORIAL"
  width="362">
     <web_browser
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 a371e9832278914486f2e318ea1bf51a04d7292b..ca73883e5346c3aed135449f0731a09025594e0c 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -3,12 +3,10 @@
  legacy_header_height="18"
  background_visible="true"
  default_tab_group="1"
- follows="all"
- height="350"
+ height="355"
+ help_topic="floater_im_box"
  layout="topleft"
- left="0"
  name="panel_im"
- top="0"
  can_dock="false"
  can_minimize="true"
  can_close="true"
@@ -18,7 +16,7 @@
  min_width="250"
  min_height="190">
   <layout_stack
-   animate="false" 
+   animate="true" 
    default_tab_group="2"
   follows="all"
   height="320"
@@ -34,8 +32,7 @@
       min_width="115"
       width="150" 
       height="320" 
-      auto_resize="false"
-      user_resize="false">
+      auto_resize="false">
       <panel
         name="panel_im_control_panel"
         layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_inventory.xml b/indra/newview/skins/default/xui/en/floater_inventory.xml
deleted file mode 100644
index ba2e0d3277ff18f491056056fe8441f81e0542f2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/en/floater_inventory.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- auto_tile="true"
- can_resize="true"
- height="563"
- layout="topleft"
- min_height="150"
- min_width="240"
- name="Inventory"
- help_topic="inventory"
- save_rect="true"
- save_visibility="true"
- single_instance="false"
- title="MY INVENTORY"
- width="467">
-    <panel
-     bottom="560"
-	 class="panel_main_inventory"
-	 filename="panel_main_inventory.xml"
-	 follows="all"
-	 layout="topleft"
-	 left="0"
-	 label="Inventory Panel"
-	 name="Inventory Panel"
-	 top="15"
-	 width="467" />
-</floater>
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
index 0cf07926c2bd60ba428fc95e0c802b3870cfad39..adef066aef4350679bb58bdfea25067af897c774 100644
--- a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
- auto_tile="true"
  height="340"
  layout="topleft"
  name="item properties"
diff --git a/indra/newview/skins/default/xui/en/floater_land_holdings.xml b/indra/newview/skins/default/xui/en/floater_land_holdings.xml
index 0b9ae3c9f3a7d3d62a3121a146511e0467ecd18b..3737294ebe633bb0b9e0e65c7e6182f305181435 100644
--- a/indra/newview/skins/default/xui/en/floater_land_holdings.xml
+++ b/indra/newview/skins/default/xui/en/floater_land_holdings.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
+ open_positioning="centered"
  legacy_header_height="18"
  height="430"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
index 1f192f9b280ac5701bc75620f33c0e013af917d8..5cd7cd196dd469b2af1870022d4717f3a46fe35e 100644
--- a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
+++ b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml
@@ -4,7 +4,6 @@
  bevel_style="none"
  border_style="line"
  can_resize="true"
- follows="left|top"
  height="580"
  layout="topleft"
  min_height="271"
diff --git a/indra/newview/skins/default/xui/en/floater_lsl_guide.xml b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml
index c9d87f158f435cedb4e8f4402d56b1dcaacb92db..e9676777f439eb94aa3b2179906407e9fe903e93 100644
--- a/indra/newview/skins/default/xui/en/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml
@@ -2,7 +2,6 @@
 <floater
  legacy_header_height="18"
  can_resize="true"
- follows="left|top"
  height="400"
  layout="topleft"
  min_height="271"
diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml
index ae99fa8dd5b094b74bd8dfb6045a2a190db7b586..3eeebcf120628eb393daa6b73d77056f9e41d3aa 100644
--- a/indra/newview/skins/default/xui/en/floater_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_map.xml
@@ -1,22 +1,18 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
- bg_alpha_image_overlay="DkGray_66"
- legacy_header_height="0"
+ open_positioning="cascading"
  can_minimize="true" 
  can_resize="true"
- follows="top|right"
- height="174"
+ chrome="true"
+ height="200"
  layout="topleft"
  min_height="128"
  min_width="128"
  name="Map"
- title=""
+ title="MINI-MAP"
  help_topic="map"
  save_rect="true"
  save_visibility="true"
- single_instance="true"
- left="0"
- top="0"
  width="200">
     <floater.string
      name="ToolTipMsg">
@@ -27,17 +23,16 @@
 		[REGION](Double-click to teleport, shift-drag to pan)
 	</floater.string>
 	<floater.string name="mini_map_caption">
-	MINIMAP
+	Mini-map
     </floater.string>
     <net_map
-     bg_color="NetMapBackgroundColor"
      follows="top|left|bottom|right"
      layout="topleft"
      left="0"
      mouse_opaque="false"
      name="Net Map"
      width="200"
-     height="218"
+     height="200"
      top="0"/>
     <text
      type="string"
@@ -49,7 +44,7 @@
      name="floater_map_north"
      right="10"
      text_color="1 1 1 0.7"
-     top="209">
+     top="189">
         N
     </text>
     <text
@@ -62,7 +57,7 @@
      name="floater_map_east"
      right="10"
      text_color="1 1 1 0.7"
-     top="209">
+     top="189">
         E
     </text>
     <text
@@ -75,7 +70,7 @@
      name="floater_map_west"
      right="11"
      text_color="1 1 1 0.7"
-     top="195">
+     top="175">
         W
     </text>
     <text
@@ -88,7 +83,7 @@
      name="floater_map_south"
      right="10"
      text_color="1 1 1 0.7"
-     top="209">
+     top="189">
         S
     </text>
     <text
@@ -101,7 +96,7 @@
      name="floater_map_southeast"
      right="20"
      text_color="1 1 1 0.7"
-     top="209">
+     top="189">
         SE
     </text>
     <text
@@ -114,7 +109,7 @@
      name="floater_map_northeast"
      right="20"
      text_color="1 1 1 0.7"
-     top="209">
+     top="189">
         NE
     </text>
     <text
@@ -127,7 +122,7 @@
      name="floater_map_southwest"
      right="20"
      text_color="1 1 1 0.7"
-     top="209">
+     top="189">
         SW
     </text>
     <text
@@ -140,7 +135,7 @@
      name="floater_map_northwest"
      right="20"
      text_color="1 1 1 0.7"
-     top="209">
+     top="189">
         NW
     </text>
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_media_browser.xml b/indra/newview/skins/default/xui/en/floater_media_browser.xml
index 5a1f920398b2817ee93cd475fb0889d3d0474b3b..ce788654aa32ed97a8d4789a273dc25be2f92d4c 100644
--- a/indra/newview/skins/default/xui/en/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml
@@ -9,7 +9,6 @@
  name="floater_about"
  help_topic="floater_about"
  save_rect="true"
- auto_tile="true"
  title="MEDIA BROWSER"
  width="820">
     <floater.string
@@ -38,7 +37,6 @@
          min_height="20"
          name="nav_controls"
          top="400"
-         user_resize="false"
          width="800">
             <button
              follows="left|top"
@@ -114,7 +112,6 @@
          min_height="20"         
          name="time_controls"
          top_delta="0"
-         user_resize="false"
          width="800">
             <button
              follows="left|top"
@@ -172,7 +169,6 @@
          min_height="20"         
          name="parcel_owner_controls"
          top_delta="0"
-         user_resize="false"
          width="540">
             <button
              enabled="false"
@@ -194,7 +190,6 @@
          left_delta="0"
          name="external_controls"
          top_delta="0"
-         user_resize="false"
          width="540">
           <web_browser
              bottom="-30"
diff --git a/indra/newview/skins/default/xui/en/floater_media_settings.xml b/indra/newview/skins/default/xui/en/floater_media_settings.xml
index 681731b0da538e79d8c11f5a47f83175d83ebce4..0e03c0ab6df324d61bd5788d1c61e926a74768a8 100644
--- a/indra/newview/skins/default/xui/en/floater_media_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_media_settings.xml
@@ -10,7 +10,6 @@
  enabled="true"
  width="365" 
  height="535" 
- left="330" 
  min_height="535" 
  min_width="365"
  mouse_opaque="true" 
diff --git a/indra/newview/skins/default/xui/en/floater_mem_leaking.xml b/indra/newview/skins/default/xui/en/floater_mem_leaking.xml
index 28a29c42aac37287bda427efa55db6888b675997..fb7d09a21eb9e96511f701c9b85c2e05c7926a9c 100644
--- a/indra/newview/skins/default/xui/en/floater_mem_leaking.xml
+++ b/indra/newview/skins/default/xui/en/floater_mem_leaking.xml
@@ -2,7 +2,6 @@
 <floater
  legacy_header_height="18"
  can_minimize="false"
- follows="left|top"
  height="175"
  layout="topleft"
  name="MemLeak"
diff --git a/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml b/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..498a9b6ce09352630f1fee27c60c86df434ae57c
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_merchant_outbox.xml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<floater
+    open_positioning="cascading"
+    can_close="true"
+    can_resize="true"
+    height="440"
+    help_topic="floater_merchant_outbox"
+    min_width="300"
+    min_height="200"
+    name="floater_merchant_outbox"
+    save_rect="true"
+    save_visibility="false"
+    reuse_instance="true"
+    title="MERCHANT OUTBOX"
+    width="333">
+  <string name="OutboxFolderCount0"></string>
+  <string name="OutboxFolderCount1">1 folder</string>
+  <string name="OutboxFolderCountN">[NUM] folders</string>
+  <string name="OutboxImporting">Sending folders...</string>
+  <string name="OutboxInitializing">Initializing...</string>
+  <panel
+      follows="all"
+      layout="topleft"
+      left="0"
+      top="0"
+      label=""
+      height="440"
+      width="333">
+    <panel
+        follows="all"
+        left="10"
+        bottom="370"
+        width="313"
+        top="0"
+        bg_opaque_color="InventoryBackgroundColor">
+      <panel
+          name="outbox_inventory_placeholder_panel"
+          follows="all"
+          layout="topleft"
+          top="0"
+          left="0"
+          width="308"
+          height="370"
+          bg_opaque_color="InventoryBackgroundColor">
+        <text
+            name="outbox_inventory_placeholder_title"
+            type="string"
+            follows="top|left|right"
+            layout="topleft"
+            top="10"
+            left="0"
+            width="308"
+            height="25"
+            wrap="true"
+            halign="center"
+            font="SansSerifBold">
+          Loading...
+        </text>
+        <text
+            name="outbox_inventory_placeholder_text"
+            type="string"
+            follows="top|left|right"
+            layout="topleft"
+            top="35"
+            left="0"
+            width="308"
+            height="130"
+            wrap="true"
+            halign="left" />
+      </panel>
+    </panel>
+    <panel
+        follows="bottom|left|right"
+        left="10"
+        bottom="435"
+        width="313"
+        top="370">
+      <panel
+          name="outbox_generic_drag_target"
+          mouse_opaque="false"
+          follows="all"
+          top="5"
+          left="5"
+          width="303"
+          height="25"
+          background_visible="false"
+          bg_alpha_color="EmphasisColor_35"
+          border="true"
+          bevel_style="in"
+          visible="true">
+        <text
+            type="string"
+            follows="all"
+            layout="topleft"
+            top="6"
+            height="20"
+            left="5"
+            width="293"
+            halign="center"
+            font="SansSerifMedium"
+            font_shadow="hard"
+            valign="bottom">
+          Drag items here to create folders
+        </text>
+      </panel>
+      <text
+          name="outbox_folder_count"
+          type="string"
+          follows="all"
+          layout="topleft"
+          top="40"
+          left="5"
+          width="150"
+          height="20"
+          wrap="true"
+          halign="left"
+          valign="bottom"
+          font="SansSerif" />
+      <button
+          label="Send to Marketplace"
+          tool_tip="Push to my Marketplace Storefront"
+          is_toggle="false"
+          name="outbox_import_btn"
+          follows="bottom|right"
+          tab_stop="false"
+          halign="center"
+          top="37"
+          left="160"
+          height="25"
+          width="150"
+          enabled="false" />
+    </panel>
+    <layout_stack name="import_progress_indicator" orientation="vertical" left="0" height="440" top="0" width="333" follows="all" visible="false">
+      <layout_panel />
+      <layout_panel height="45" auto_resize="false">
+        <layout_stack orientation="horizontal" left="0" height="45" top="0" width="333" follows="all">
+          <layout_panel width="0" />
+          <layout_panel width="45" auto_resize="false">
+            <loading_indicator
+                height="45"
+                layout="topleft"
+                left="0"
+                top="0"
+                width="45" />
+          </layout_panel>
+          <layout_panel width="0" />
+        </layout_stack>
+      </layout_panel>
+      <layout_panel />
+    </layout_stack>
+  </panel>
+</floater>
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 100755
new mode 100644
index 2eea286c8bf8ccee6414b4ff5fdb71257b09c16d..eebc5ddc72ae0f72a9ef7af040faba327504b68e
--- a/indra/newview/skins/default/xui/en/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml
@@ -1,11 +1,12 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater can_close="true" can_drag_on_left="false" can_minimize="false"
      can_resize="false" height="480" min_height="480" min_width="940"
-     name="Model Preview" title="Upload Model" width="940"
+     name="Model Preview" title="UPLOAD MODEL" width="940"
       help_topic="upload_model" >
 
   <string name="status_idle"></string>
   <string name="status_parse_error">Error: Dae parsing issue - see log for details.</string>
+  <string name="status_material_mismatch">Error: Material of model is not a subset of reference model.</string>
   <string name="status_reading_file">Loading...</string>
   <string name="status_generating_meshes">Generating Meshes...</string>
   <string name="status_vertex_number_overflow">Error: Vertex number is more than 65534, aborted!</string>
@@ -789,7 +790,7 @@
                     <check_box name="physics_use_hull" follows="left|top" width="130" left_pad="5" height="20" label="Use Convex Hull"/> -->
                 </panel>
             
-            <!-- ==== STEP 2: Analyse ==== -->
+            <!-- ==== STEP 2: Analyze ==== -->
             <view_border
               bevel_style="none"
               follows="top|left"
@@ -818,7 +819,7 @@
                       name="method_label"
                       text_color="White"
                       top_pad="0">
-                      Step 2: Analyse
+                      Step 2: Analyze
                     </text>
                     <text
                       follows="top|left"
diff --git a/indra/newview/skins/default/xui/en/floater_model_wizard.xml b/indra/newview/skins/default/xui/en/floater_model_wizard.xml
index b5a5ff53424b47e87db657f774f46256eba24d27..62b8c5f96edd46c2fac913b37c1136059206889f 100644
--- a/indra/newview/skins/default/xui/en/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/en/floater_model_wizard.xml
@@ -108,7 +108,7 @@
 		 height="22"
 		 top_pad="15"
 		 width="505"
-		 name="header_panel"
+		 name="choose_file_header_panel"
 		 bg_opaque_color="DkGray2"
 		 background_visible="true"
 		 background_opaque="true"
@@ -117,7 +117,7 @@
 			 width="200"
 			 left="10"
 			 top="3"
-			 name="header_text"
+			 name="choose_file_header_text"
 			 text_color="White"
 			 height="10"
 			 font="SansSerifBig"
@@ -130,7 +130,7 @@
 		 left="15"
 		 height="310"
 		 width="505"
-		 name="content"
+		 name="choose_file_content"
 		 bg_opaque_color="DkGray2"
 		 background_visible="true"
 		 background_opaque="true">
@@ -199,7 +199,7 @@
 			 height="10"
 			 layout="topleft"
 			 left="10"
-			 name="Cache location"
+			 name="Model types"
 			 width="320">
 				Second Life supports COLLADA (.dae) files
 			</text>
@@ -287,7 +287,7 @@
 		<panel
 		 height="22"
 		 top_pad="15"
-		 name="header_panel"
+		 name="optimize_header_panel"
 		 width="505"
 		 bg_opaque_color="DkGray2"
 		 background_visible="true"
@@ -296,7 +296,7 @@
 			<text
 			 width="200"
 			 left="10"
-			 name="header_text"
+			 name="optimize_header_text"
 			 top="3"
 			 text_color="White"
 			 height="10"
@@ -311,7 +311,7 @@
 		 height="20"
 		 font="SansSerifSmall"
 		 layout="topleft"
-		 name="description"
+		 name="optimize_description"
 		 word_wrap="true"
 		 left_delta="5">
 			We have optimized the model for performance. Adjust it further if you wish.
@@ -322,7 +322,7 @@
 		 left="15"
 		 height="270"
 		 width="505"
-		 name="content"
+		 name="optimize_content"
 		 bg_opaque_color="DkGray2"
 		 background_visible="true"
 		 background_opaque="true">
@@ -497,7 +497,7 @@ Higher prim weight</text>
 		<panel
 		 height="22"
 		 top_pad="15"
-		 name="header_panel"
+		 name="physics_header_panel"
 		 width="505"
 		 bg_opaque_color="DkGray2"
 		 background_visible="true"
@@ -506,7 +506,7 @@ Higher prim weight</text>
 			<text
 			 width="200"
 			 left="10"
-			 name="header_text"
+			 name="physics_header_text"
 			 top="3"
 			 height="10"
 			 font="SansSerifBig"
@@ -521,7 +521,7 @@ Higher prim weight</text>
 		 height="50"
 		 font="SansSerifSmall"
 		 layout="topleft"
-		 name="description"
+		 name="physics_description"
 		 word_wrap="true"
 		 left_delta="5">
 			We will create a shape for the outer hull of the model. Adjust the shape's detail level as needed for the intended purpose of your model.
@@ -531,7 +531,7 @@ Higher prim weight</text>
 		 left="15"
 		 height="270"
 		 width="505"
-		 name="content"
+		 name="physics_content"
 		 bg_opaque_color="DkGray2"
 		 background_visible="true"
 		 background_opaque="true">
@@ -635,7 +635,7 @@ Buildings</text>
 		<panel
 		 height="22"
 		 top_pad="15"
-		 name="header_panel"
+		 name="review_header_panel"
 		 width="505"
 		 bg_opaque_color="DkGray2"
 		 background_visible="true"
@@ -644,7 +644,7 @@ Buildings</text>
 			<text
 			 width="200"
 			 left="10"
-			 name="header_text"
+			 name="review_header_text"
 			 text_color="White" 
 			 top="3"
 			 height="10"
@@ -658,7 +658,7 @@ Buildings</text>
 		 left="15"
 		 height="310"
 		 width="505"
-		 name="content"
+		 name="review_content"
 		 bg_opaque_color="DkGray2"
 		 background_visible="true"
 		 background_opaque="true">
@@ -706,7 +706,7 @@ Buildings</text>
 		<panel
 		 height="22"
 		 top_pad="15"
-		 name="header_panel"
+		 name="upload_header_panel"
 		 width="505"
 		 bg_opaque_color="DkGray2"
 		 background_visible="true"
@@ -715,7 +715,7 @@ Buildings</text>
 			<text
 			 width="200"
 			 left="10"
-			 name="header_text"
+			 name="upload_header_text"
 			 top="3"
 			 text_color="White" 
 			 height="10"
diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml
index 6f29255a6b58c201f0e220f128cbe3363f2249a5..065dab0413110dce69077744dbf9b9d788026c1d 100644
--- a/indra/newview/skins/default/xui/en/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/en/floater_moveview.xml
@@ -1,17 +1,21 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
+ open_positioning="specified"
+ specified_left="320"
+ specified_bottom="80"
  legacy_header_height="18"
- can_dock="true"
+ can_dock="false"
  can_minimize="true"
- can_close="false"
- follows="bottom"
+ can_close="true"
  height="110"
  layout="topleft"
  name="move_floater"
  help_topic="move_floater"
  save_rect="true"
  save_visibility="true"
- save_dock_state="true"
+ single_instance="true"
+ chrome="true"
+ title="WALK / RUN / FLY"
  width="133">
     <string
      name="walk_forward_tooltip">
diff --git a/indra/newview/skins/default/xui/en/floater_my_appearance.xml b/indra/newview/skins/default/xui/en/floater_my_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1c4b25a7b02a4bb8e6fbfd158660252e4e0a383c
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_my_appearance.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
+<floater
+  open_positioning="cascading"
+  legacy_header_height="18"
+  can_resize="true"
+  height="588"
+  layout="topleft"
+  name="floater_my_appearance"
+  help_topic="appearance"
+  save_rect="true"
+  single_instance="true"
+  reuse_instance="true"
+  title="APPEARANCE"
+  min_height="440"
+  min_width="333"
+  width="333">
+    <panel
+      top="18"
+      class="sidepanel_appearance"
+      name="main_panel"
+      filename="sidepanel_appearance.xml"
+      label="Edit Appearance"
+      font="SansSerifBold"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_my_inventory.xml b/indra/newview/skins/default/xui/en/floater_my_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cd0b59dc5136e76f1e1b9a1391d33b1df62808be
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_my_inventory.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<floater
+ open_positioning="cascading"
+ can_close="true"
+ can_resize="true"
+ height="570"
+ help_topic="sidebar_inventory"
+ min_width="333"
+ min_height="440"
+ name="floater_my_inventory"
+ save_rect="true"
+ save_visibility="true"
+ reuse_instance="true"
+ title="INVENTORY"
+ width="333" >
+   <panel
+    class="sidepanel_inventory"
+    name="main_panel"
+    filename="sidepanel_inventory.xml"
+    follows="all"
+    top="0"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..df46fc198f2acfca79af55fbd0087fe22c68ff76
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_my_web_profile.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="floater_my_web_profile"
+         help_topic="web_profile"
+         width="780"
+         height="775"
+         save_rect="true"
+         single_instance="true"
+         reuse_instance="false"
+         filename="floater_web_content.xml"/>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
deleted file mode 100644
index ab966dbb0e028b2afa41f02072e883939522edb9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater
- border_visible="false"
- border="false"
- legacy_header_height="18"
- can_minimize="true"
- can_tear_off="false"
- can_resize="true"
- can_drag_on_left="false"
- can_close="false"
- can_dock="true"
- bevel_style="in"
- height="300"
- min_width="235"
- layout="topleft"
- name="nearby_chat"
- help_topic="nearby_chat"
- save_rect="true"
- title="NEARBY CHAT"
- save_dock_state="true"
- save_visibility="true"
- single_instance="true"
- width="320">
-            <check_box
-             bottom_delta="36"
-             control_name="TranslateChat"
-             enabled="true"
-             height="16"
-             label="Translate chat (powered by Google)"
-             layout="topleft"
-             left="5"
-             name="translate_chat_checkbox"
-             width="230" />
-  <chat_history
-    parse_urls="true"
-    bg_readonly_color="ChatHistoryBgColor"
-    bg_writeable_color="ChatHistoryBgColor"
-    follows="all"
-    left="5"
-    top_delta="17"
-    layout="topleft"
-    height="260"
-    name="chat_history"
-    parse_highlights="true"
-    text_color="ChatHistoryTextColor"
-    text_readonly_color="ChatHistoryTextColor"
-    right_widget_pad="5"
-    left_widget_pad="0"
-    width="315" />
-</floater>
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
index 068737494f30a34af05f8f04a23782e425659bf3..bbe280582b5ec833f8acdf94fc56c0038cb6657e 100644
--- a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
+++ b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml
@@ -4,7 +4,7 @@
  can_minimize="false"
  height="100"
  layout="topleft"
- title="Save Outfit"
+ title="SAVE OUTFIT"
  name="modal container"
  width="240">
     <button
diff --git a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
index 9db6568ee3965a766cdb9a9d5f45f2ae1c0dc407..ffbb6aa28b4af568d0d616d66b6bfaa7be4bb866 100644
--- a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
+++ b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml
@@ -8,6 +8,7 @@
  layout="topleft"
  name="outgoing call"
  help_topic="outgoing_call"
+ save_dock_state="true"
  title="CALLING"
  width="410">
     <floater.string
diff --git a/indra/newview/skins/default/xui/en/floater_people.xml b/indra/newview/skins/default/xui/en/floater_people.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d6d8431150af131810b6811d53549a2f3fd22283
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_people.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+
+<floater
+  open_positioning="cascading"
+  can_close="true"
+  can_resize="true"
+  height="570"
+  help_topic="sidebar_people"
+  min_height="440"
+  min_width="333"
+  layout="topleft"
+  name="floater_people"
+  save_rect="true"
+  single_instance="true"
+  reuse_instance="true"
+  title="PEOPLE"
+  width="333">
+    <panel_container
+      default_panel_name="panel_people"
+      follows="all"
+      height="570"
+      name="main_panel"
+      width="333">
+      <panel
+        class="panel_people"
+        name="panel_people"
+        filename="panel_people.xml"/>
+      <panel
+        class="panel_group_info_sidetray"
+        name="panel_group_info_sidetray"
+        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_picks.xml b/indra/newview/skins/default/xui/en/floater_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..78821166624401bdea23a42c6c97d09a1aa11f25
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_picks.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<floater
+ open_positioning="cascading"
+ can_close="true"
+ can_resize="true"
+ height="572"
+ help_topic="sidebar_me"
+ min_width="333"
+ min_height="440"
+ name="floater_picks"
+ save_rect="true"
+ save_visibility="true"
+ reuse_instance="true"
+ title="Picks"
+ width="333" >
+   <panel
+    class="panel_me"
+    name="main_panel"
+    filename="panel_me.xml"
+    follows="all"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_places.xml b/indra/newview/skins/default/xui/en/floater_places.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ccceac0a7b28af05d95e0b55d00238308a1c1e61
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_places.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+
+<floater
+  open_positioning="cascading"
+  legacy_header_height="18"
+  can_resize="true"
+  height="588"
+  layout="topleft"
+  name="floater_places"
+  help_topic="floater_places"
+  save_rect="true"
+  reuse_instance="true"
+  title="PLACES"
+  min_height="440"
+  min_width="333"
+  width="333">
+    <panel
+      top="18"
+      class="panel_places"
+      name="main_panel"
+      filename="panel_places.xml"
+      label="Places"
+      font="SansSerifBold"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_postcard.xml b/indra/newview/skins/default/xui/en/floater_postcard.xml
deleted file mode 100644
index c756661ffc38e80da6d33ef5704bcf27e2a280c9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/en/floater_postcard.xml
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- auto_tile="true"
- can_minimize="false"
- can_resize="true"
- height="380"
- layout="topleft"
- min_height="380"
- min_width="490"
- name="Postcard"
- help_topic="postcard"
- title="EMAIL SNAPSHOT"
- width="490">
-    <floater.string
-     name="default_subject">
-        Postcard from [SECOND_LIFE].
-    </floater.string>
-    <floater.string
-     name="default_message">
-        Check this out!
-    </floater.string>
-    <floater.string
-     name="upload_message">
-        Sending...
-    </floater.string>
-    <text
-     type="string"
-     length="1"
-     bottom="35"
-     follows="top|left"
-     font="SansSerif"
-     layout="topleft"
-     left="12"
-     name="to_label">
-        Recipient&apos;s Email:
-    </text>
-    <line_editor
-     control_name="LastPostcardRecipient"
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left_delta="148"
-     name="to_form"
-     top_delta="-4"
-     width="150" />
-    <text
-     type="string"
-     length="1"
-     bottom_delta="23"
-     follows="top|left"
-     font="SansSerif"
-     layout="topleft"
-     left="12"
-     name="from_label">
-        Your Email:
-    </text>
-    <line_editor
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left_delta="148"
-     name="from_form"
-     top_delta="-4"
-     width="150" />
-    <text
-     type="string"
-     length="1"
-     bottom_delta="23"
-     follows="top|left"
-     font="SansSerif"
-     layout="topleft"
-     left="12"
-     name="name_label">
-        Your Name:
-    </text>
-    <line_editor
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left_delta="148"
-     max_length_bytes="100"
-     name="name_form"
-     top_delta="-4"
-     width="150" />
-    <text
-     type="string"
-     length="1"
-     bottom_delta="23"
-     follows="top|left"
-     font="SansSerif"
-     layout="topleft"
-     left="12"
-     name="subject_label">
-        Subject:
-    </text>
-    <line_editor
-     follows="left|top"
-     height="20"
-     label="Type your subject here."
-     layout="topleft"
-     left_delta="148"
-     max_length_bytes="100"
-     name="subject_form"
-     top_delta="-4"
-     width="150" />
-    <text
-     type="string"
-     length="1"
-     bottom_delta="23"
-     follows="top|left"
-     font="SansSerif"
-     layout="topleft"
-     left="12"
-     name="msg_label">
-        Message:
-    </text>
-    <text_editor
-     type="string"
-     length="1"
-     follows="left|top|right|bottom"
-     height="140"
-     layout="topleft"
-     left_delta="0"
-     max_length="700"
-     name="msg_form"
-     word_wrap="true" 
-     top_pad="10"
-     width="420">
-        Type your message here.
-    </text_editor>
-    <button
-     follows="right|bottom"
-     height="23"
-     label="Cancel"
-     layout="topleft"
-     name="cancel_btn"
-     right="-10"
-     top="350"
-     width="100" />
-    <button
-     follows="right|bottom"
-     height="23"
-     label="Send"
-     layout="topleft"
-     left_delta="-106"
-     name="send_btn"
-     top_delta="0"
-     width="100" />
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml
index dcfa8bc060d2ed541dbc6b0ea9b25826299b07d5..402868bb977659a03b3afd7afc64de835cf093dc 100644
--- a/indra/newview/skins/default/xui/en/floater_preferences.xml
+++ b/indra/newview/skins/default/xui/en/floater_preferences.xml
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
- open_centered="true"
+ open_positioning="centered"
  default_tab_group="1"
  height="460"
  layout="topleft"
  name="Preferences"
  help_topic="preferences"
+ save_rect="true"
  single_instance="true"
  title="PREFERENCES"
  width="658">
diff --git a/indra/newview/skins/default/xui/en/floater_preview_animation.xml b/indra/newview/skins/default/xui/en/floater_preview_animation.xml
index 65efc46c7173470a8a77183d1374184589451a8b..8427c7b06f228a5c3312c7351b95ef0523126dd7 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_animation.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
- auto_tile="true"
  height="85"
  layout="topleft"
  name="preview_anim"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
index 478ae5f53f0fa2a3de68bfb83236c2fc1c4a01d3..8baa0a56f75042342bcd167179ce960da924458e 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
- auto_tile="true"
  height="460"
  layout="topleft"
  name="gesture_preview"
@@ -362,4 +361,4 @@
      name="save_btn"
      top_delta="0"
      width="80" />
-</floater>
\ No newline at end of file
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
index 8c9e1d52b33fd39a32dacfab781ac672e8ea4afe..be3b2d179d5155acaf9a359baac3dc9498a7a6d9 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml
@@ -1,10 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
- auto_tile="true"
  can_resize="true"
  default_tab_group="1"
- follows="left|top"
  height="361"
  layout="topleft"
  min_height="243"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_sound.xml b/indra/newview/skins/default/xui/en/floater_preview_sound.xml
index 62ef4c3097e8cca9a82c10b3a04b43c3ddfe48ab..83a1f5a96f63672dd4e00524c13dcf70e7f069db 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_sound.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
- auto_tile="true"
  height="85"
  layout="topleft"
  name="preview_sound"
diff --git a/indra/newview/skins/default/xui/en/floater_preview_texture.xml b/indra/newview/skins/default/xui/en/floater_preview_texture.xml
index a79d2f63cb346e1419ac5a87b081adae4d74a8cd..137e278ddcf562bc3732ede88379fead5094e654 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_texture.xml
@@ -1,9 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
- auto_tile="true"
  can_resize="true"
- follows="left|top"
  height="350"
  layout="topleft"
  min_height="200"
diff --git a/indra/newview/skins/default/xui/en/floater_publish_classified.xml b/indra/newview/skins/default/xui/en/floater_publish_classified.xml
index 6ce9ed6e771a10e16b1f172fe63175a3ea752963..322e34272c09c3a4153ac3c985b404bdb9820267 100644
--- a/indra/newview/skins/default/xui/en/floater_publish_classified.xml
+++ b/indra/newview/skins/default/xui/en/floater_publish_classified.xml
@@ -36,7 +36,7 @@ Remember, Classified fees are non-refundable.
      left="15"
      value="50"
      min_val="50"
-     max_val="99999"
+     max_val="999999"
      name="price_for_listing"
      top_pad="10"
      tool_tip="Price for listing."
diff --git a/indra/newview/skins/default/xui/en/floater_script.xml b/indra/newview/skins/default/xui/en/floater_script.xml
index 12ade86b5fa9f2db25afc370c89f26a4166d1b4b..bd4edb81c85dd329f03ecc06dda0cb1decf913b6 100644
--- a/indra/newview/skins/default/xui/en/floater_script.xml
+++ b/indra/newview/skins/default/xui/en/floater_script.xml
@@ -2,12 +2,9 @@
 <floater
  legacy_header_height="18"
  background_visible="true"
- follows="left|top|right|bottom"
  height="250"
  layout="topleft"
- left="0"
  name="script_floater"
- top="0"
  can_dock="true"
  can_minimize="true"
  visible="false" 
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
index ce96ea232e949656dae8f91d4dc511c4f83c813f..b5dd2f97b9237b4e4ab6d65b699b5a4affe8005f 100644
--- a/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml
@@ -2,7 +2,6 @@
 <floater
  legacy_header_height="18"
  can_resize="true"
- follows="left|top|right|bottom"
  height="200"
  layout="topleft"
  name="script"
diff --git a/indra/newview/skins/default/xui/en/floater_script_preview.xml b/indra/newview/skins/default/xui/en/floater_script_preview.xml
index 8c03b560400a755999f184eb508d9b1cd1987915..91a9e67e4cd0ff3b6761cdd2e99ed0a4513fdf41 100644
--- a/indra/newview/skins/default/xui/en/floater_script_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_preview.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
- auto_tile="true"
  can_resize="true"
  height="570"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_script_queue.xml b/indra/newview/skins/default/xui/en/floater_script_queue.xml
index 60a26fcf1d4d7afa18933f6af48009680c3dd0be..f4aca7bb3dd3339743154385ffc690b13e19ed9b 100644
--- a/indra/newview/skins/default/xui/en/floater_script_queue.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_queue.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
- auto_tile="true"
  can_resize="true"
  height="400"
  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml
index eaf575fc083f0291ea99d9b3bcbfff82c6e8c024..dd818e2e0659646b6f3d1dda5f582631dfda8640 100644
--- a/indra/newview/skins/default/xui/en/floater_search.xml
+++ b/indra/newview/skins/default/xui/en/floater_search.xml
@@ -1,18 +1,18 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
+  open_positioning="cascading"
   legacy_header_height="18"
- can_resize="true"
+  can_resize="true"
   height="775"
- layout="topleft"
- min_height="400"
+  layout="topleft"
+  min_height="400"
   min_width="500"
-  name="floater_web_content"
-  help_topic="floater_web_content"
- save_rect="true"
-  auto_tile="true"
- save_visibility="true"
+  name="floater_search"
+  help_topic="floater_search"
+  save_rect="true"
+  save_visibility="true"
   title=""
   initial_mime_type="text/html"
   width="780"
-             tab_stop="true"
+  tab_stop="true"
   filename="floater_web_content.xml"/>
diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml
index 89a0c4c287327eb53a2954310f9ab54f14b654f6..0c38283d5975298ddead8832f1297029d26ab539 100644
--- a/indra/newview/skins/default/xui/en/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml
@@ -1,403 +1,373 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
+ open_positioning="cascading"
  legacy_header_height="18"
- can_minimize="false"
+ can_minimize="true"
  can_close="true"
- follows="left|top"
- height="520"
+ height="500"
  layout="topleft"
  name="Snapshot"
  help_topic="snapshot"
  save_rect="true"
- save_visibility="true"
+ save_visibility="false"
  title="SNAPSHOT PREVIEW"
- width="245">
+ width="470">
     <floater.string
      name="unknown">
         unknown
     </floater.string>
-    <radio_group
-     height="70"
-     label="Snapshot type"
-     layout="topleft"
-     left="10"
-     name="snapshot_type_radio"
-     top="20"
-     width="205">
-<!--
-        <radio_item
-         height="16"
-         label="Share to Web"
-         layout="topleft"
-         name="share_to_web"
-         top_pad="0" />
--->
-         <radio_item
-         height="16"
-         label="Email"
-         layout="topleft"
-         name="postcard"
-         top_pad="2" />
-        <radio_item
-         height="16"
-         label="My inventory (L$[AMOUNT])"
-         layout="topleft"
-         name="texture"
-         top_pad="2" />
-        <radio_item
-         height="16"
-         label="Save to my computer"
-         layout="topleft"
-         name="local"
-         top_pad="2" />
-    </radio_group>
-  <ui_ctrl 
-    height="90"
-    width="125"
-    layout="topleft"
-    name="thumbnail_placeholder"
-    top_pad="6"
-    follows="left|top"
-    left="10"
-    />
-    <text
-     type="string"
-     font="SansSerifSmall"
-     length="1"
-     follows="left|top"
-     height="14"
-     layout="topleft"
-     right="-5"
-     left_delta="0"
-     halign="right"
-     name="file_size_label"
-     top_pad="8"
-     width="195">
-        [SIZE] KB
-    </text>
-    <button
-     follows="left|top"
-     height="22"
-     image_overlay="Refresh_Off"
-     layout="topleft"
-     left="10"
-     name="new_snapshot_btn"
-     width="23" />
-    <button
-     follows="left|top"
-     height="23"
-     label="Send"
-     layout="topleft"
-     left_pad="5"
-     right="-5"
-     name="send_btn"
-     width="100" />
+    <string
+     name="postcard_progress_str">
+        Sending Email
+    </string>
+    <string
+     name="profile_progress_str">
+        Posting
+    </string>
+    <string
+     name="inventory_progress_str">
+        Saving to Inventory
+    </string>
+    <string
+     name="local_progress_str">
+        Saving to Computer
+    </string>
+ 	<string
+ 	 name="profile_succeeded_str">
+ 	    Image uploaded
+ 	</string>
+ 	<string
+ 	 name="postcard_succeeded_str">
+ 	    Email Sent!
+ 	</string>
+ 	<string
+ 	 name="inventory_succeeded_str">
+ 	    Saved to Inventory!
+ 	</string>
+ 	<string
+ 	 name="local_succeeded_str">
+ 	    Saved to Computer!
+ 	</string>
+ 	<string
+ 	 name="profile_failed_str">
+ 	    Failed to upload image to your Profile Feed.
+ 	</string>
+ 	<string
+ 	 name="postcard_failed_str">
+ 	    Failed to send email.
+ 	</string>
+ 	<string
+ 	 name="inventory_failed_str">
+ 	    Failed to save to inventory.
+ 	</string>
+ 	<string
+ 	 name="local_failed_str">
+ 	    Failed to save to computer.
+ 	</string>
     <button
      follows="left|top"
      height="23"
-     label="Save (L$[AMOUNT])"
+     image_overlay="TabIcon_Close_Off"
      layout="topleft"
-     right="-5"
-     name="upload_btn"
-     top_delta="0"
-     width="110" />
-    <flyout_button
-     follows="left|top"
-     height="23"
-     label="Save"
-     layout="topleft"
-     right="-5"
-     name="save_btn"
-     tool_tip="Save image to a file"
-     top_delta="0"
-     width="100">
-        <flyout_button.item
-         label="Save"
-         name="save_item"
-         value="save" />
-        <flyout_button.item
-         label="Save As..."
-         name="saveas_item"
-         value="save as" />
-    </flyout_button>
-        <button
-     follows="left|top"
-     height="23"
-     label="More"
-     layout="topleft"
-     left="10"
-     name="more_btn"
+     left="236"
+     name="advanced_options_btn"
      tool_tip="Advanced options"
-     width="80" />
-    <button
-     follows="left|top"
-     height="23"
-     label="Less"
-     layout="topleft"
-     left_delta="0"
-     name="less_btn"
-     tool_tip="Advanced options"
-     top_delta="0"
-     width="80" />
-    <button
-     follows="left|top"
-     height="23"
-     label="Cancel"
-     layout="topleft"
-     right="-5"
-     left_pad="5"
-     name="discard_btn"
-     width="110" />
-    <text
-     type="string"
-     length="1"
-     follows="top|left"
-     height="12"
-     layout="topleft"
-     left="10"
-     name="type_label2"
-     top_pad="5"
-     width="127">
-        Size
-    </text>
-    <text
-     type="string"
-     length="1"
-     follows="top|left"
-     height="12"
-     layout="topleft"
-     left_pad="5"
-     name="format_label"
-     top_delta="0"
-     width="70">
-        Format
-    </text>
-    <combo_box
-     height="23"
-     label="Resolution"
-     layout="topleft"
-     left="10"
-     name="postcard_size_combo"
-     width="120">
-        <combo_box.item
-         label="Current Window"
-         name="CurrentWindow"
-         value="[i0,i0]" />
-        <combo_box.item
-         label="640x480"
-         name="640x480"
-         value="[i640,i480]" />
-        <combo_box.item
-         label="800x600"
-         name="800x600"
-         value="[i800,i600]" />
-        <combo_box.item
-         label="1024x768"
-         name="1024x768"
-         value="[i1024,i768]" />
-        <combo_box.item
-         label="Custom"
-         name="Custom"
-         value="[i-1,i-1]" />
-    </combo_box>
-    <combo_box
-     height="23"
-     label="Resolution"
-     layout="topleft"
-     left_delta="0"
-     name="texture_size_combo"
-     top_delta="0"
-     width="127">
-        <combo_box.item
-         label="Current Window"
-         name="CurrentWindow"
-         value="[i0,i0]" />
-        <combo_box.item
-         label="Small (128x128)"
-         name="Small(128x128)"
-         value="[i128,i128]" />
-        <combo_box.item
-         label="Medium (256x256)"
-         name="Medium(256x256)"
-         value="[i256,i256]" />
-        <combo_box.item
-         label="Large (512x512)"
-         name="Large(512x512)"
-         value="[i512,i512]" />
-        <combo_box.item
-         label="Custom"
-         name="Custom"
-         value="[i-1,i-1]" />
-    </combo_box>
-    <combo_box
-     height="23"
-     label="Resolution"
-     layout="topleft"
-     left_delta="0"
-     name="local_size_combo"
-     top_delta="0"
-     width="127">
-        <combo_box.item
-         label="Current Window"
-         name="CurrentWindow"
-         value="[i0,i0]" />
-        <combo_box.item
-         label="320x240"
-         name="320x240"
-         value="[i320,i240]" />
-        <combo_box.item
-         label="640x480"
-         name="640x480"
-         value="[i640,i480]" />
-        <combo_box.item
-         label="800x600"
-         name="800x600"
-         value="[i800,i600]" />
-        <combo_box.item
-         label="1024x768"
-         name="1024x768"
-         value="[i1024,i768]" />
-        <combo_box.item
-         label="1280x1024"
-         name="1280x1024"
-         value="[i1280,i1024]" />
-        <combo_box.item
-         label="1600x1200"
-         name="1600x1200"
-         value="[i1600,i1200]" />
-        <combo_box.item
-         label="Custom"
-         name="Custom"
-         value="[i-1,i-1]" />
-    </combo_box>
-    <combo_box
-     height="23"
-     label="Format"
-     layout="topleft"
-     left_pad="5"
-     name="local_format_combo"
-     width="70">
-        <combo_box.item
-         label="PNG"
-         name="PNG" />
-        <combo_box.item
-         label="JPEG"
-         name="JPEG" />
-        <combo_box.item
-         label="BMP"
-         name="BMP" />
-    </combo_box>
-    <spinner
-     allow_text_entry="false"
-     decimal_digits="0"
-     follows="left|top"
-     height="20"
-     increment="32"
-     label="Width"
-     label_width="40"
-     layout="topleft"
-     left="10"
-     max_val="6016"
-     min_val="32"
-     name="snapshot_width"
-     top_pad="10"
-     width="95" />
-    <spinner
-     allow_text_entry="false"
-     decimal_digits="0"
-     follows="left|top"
-     height="20"
-     increment="32"
-     label="Height"
-     label_width="40"
-     layout="topleft"
-     left_pad="5"
-     max_val="6016"
-     min_val="32"
-     name="snapshot_height"
-     top_delta="0"
-     width="95" />
-    <check_box
-     bottom_delta="20"
-     label="Constrain proportions"
-     layout="topleft"
-     left="10"
-     name="keep_aspect_check" />
-    <slider
-     decimal_digits="0"
-     follows="left|top"
-     height="15"
-     increment="1"
-     initial_value="75"
-     label="Image quality"
-     label_width="124"
-     layout="topleft"
-     left_delta="0"
-     max_val="100"
-     name="image_quality_slider"
-     top_pad="5"
-     width="228" />
-    <text
-     type="string"
-     length="1"
+     top="25"
+     width="23" />
+  <ui_ctrl 
+    height="160"
+    width="250"
+    layout="topleft"
+    name="thumbnail_placeholder"
+    top="50"
+    follows="left|top"
+    left="10">
+      <panel
+       background_visible="true"
+       bg_alpha_color="0.9 1 0.9 1"
+       follows="left|top"
+       font="SansSerifLarge"
+       halign="center"
+       height="20"
+       layout="topleft"
+       left="0"
+       length="1"
+       name="succeeded_panel"
+       right="-1"
+       top="0"
+       type="string"
+       visible="false">
+          <text
+           follows="all"
+           font="SansSerif"
+           halign="center"
+           height="18"
+           layout="topleft"
+           left="1"
+           length="1"
+           name="succeeded_lbl"
+           right="-1"
+           text_color="0.2 0.5 0.2 1"
+           top="4"
+           translate="false"
+           type="string">
+              Succeeded
+          </text>
+      </panel>
+      <panel
+       background_visible="true"
+       bg_alpha_color="1 0.9 0.9 1"
+       follows="left|top"
+       font="SansSerifLarge"
+       halign="center"
+       height="20"
+       layout="topleft"
+       left_delta="0"
+       length="1"
+       name="failed_panel"
+       right="-1"
+       top="0"
+       type="string"
+       visible="false">
+          <text
+           follows="all"
+           font="SansSerif"
+           halign="center"
+           height="18"
+           layout="topleft"
+           left="1"
+           length="1"
+           name="failed_lbl"
+           right="-1"
+           text_color="0.5 0.2 0.2 1"
+           top="4"
+           translate="false"
+           type="string">
+              Failed
+          </text>
+      </panel>
+      <loading_indicator
+       follows="left|top"
+       height="48"
+       layout="topleft"
+       name="working_indicator"
+       left="101"
+       top="46"
+       visible="false"
+       width="48" />
+      <text
+       follows="left|top|right"
+       font="SansSerifBold"
+       height="14"
+       layout="topleft"
+       left="5"
+       length="1"
+       halign="center"
+       name="working_lbl"
+       right="-5"
+       top="98"
+       translate="false"
+       type="string"
+       visible="false"
+       width="130">
+          Working
+      </text>
+      <button
+       follows="left|top"
+       height="22"
+       image_overlay="Refresh_Off"
+       layout="topleft"
+       left="20"
+       name="new_snapshot_btn"
+       bottom="-20"
+       visible="false"
+       width="22" />
+      <text
+       follows="left|top"
+       font="SansSerifBold"
+       halign="left"
+       height="18"
+       layout="topleft"
+       left_pad="10"
+       length="1"
+       name="refresh_lbl"
+       right="-5"
+       text_color="red"
+       top_delta="0"
+       translate="false"
+       type="string"
+       visible="false"
+       width="130">
+          Refresh to save.
+      </text>
+  </ui_ctrl>
+  <view_border 
+   bevel_style="in" 
+   height="21"
+   width="250"
+   layout="topleft"
+   name="img_info_border"
+   top_pad="3"
+   follows="left|top"
+   left_delta="0"
+   />
+   <text
+    type="string"
+    font="SansSerifSmall"
+    length="1"
+    follows="left|top"
+    height="14"
+    layout="topleft"
+    left_delta="5"
+    halign="left"
+    name="image_res_text"
+    top_delta="5"
+    width="100">
+       [WIDTH] x [HEIGHT] px
+   </text>
+   <text
+    follows="left|top"
+    font="SansSerifSmall"
+    height="14"
+    layout="topleft"
+    left="200"
+    length="1"
+    halign="right"
+    name="file_size_label"
+    top_delta="0"
+    type="string"
+    width="50">
+       [SIZE] KB
+   </text>
+    <panel_container
      follows="left|top"
-     height="13"
-     layout="topleft"
-     left="10"
-     name="layer_type_label"
-     top_pad="5"
-     width="50">
-        Capture:
-    </text>
-    <combo_box
-     height="23"
-     label="Image Layers"
+     height="260"
      layout="topleft"
-     left="30"
-     name="layer_types"
-     width="145">
-        <combo_box.item
-         label="Colors"
-         name="Colors"
-         value="colors" />
-        <combo_box.item
-         label="Depth"
-         name="Depth"
-         value="depth" />
-    </combo_box>
-    <check_box
-     label="Interface"
-     layout="topleft"
-     left="30"
-     top_pad="10"
-     width="180"
-     name="ui_check" />
-    <check_box
-     label="HUDs"
-     layout="topleft"
-     left="30"
+     left="0"
+     name="panel_container"
+     default_panel_name="panel_snapshot_options"
      top_pad="10"
-     width="180"
-     name="hud_check" />
-    <check_box
-     label="Keep open after saving"
-     layout="topleft"
-     left="10"
-     top_pad="8"
-     width="180"
-     name="keep_open_check" />
-    <check_box
-     label="Freeze frame (fullscreen)"
-     layout="topleft"
-     left="10"
-     top_pad="8"
-     width="180"
-     name="freeze_frame_check" />
-    <check_box
-     label="Auto-refresh"
+     width="270">
+      <panel
+       class="llpanelsnapshotoptions"
+       filename="panel_snapshot_options.xml"
+       follows="all"
+       layout="topleft"
+       left="0"
+       name="panel_snapshot_options"
+       top="0" />
+      <panel
+       class="llpanelsnapshotprofile"
+       follows="all"
+       layout="topleft"
+       name="panel_snapshot_profile"
+       filename="panel_snapshot_profile.xml" />
+      <panel
+       class="llpanelsnapshotpostcard"
+       follows="all"
+       layout="topleft"
+       name="panel_snapshot_postcard"
+       filename="panel_snapshot_postcard.xml" />
+      <panel
+       class="llpanelsnapshotinventory"
+       follows="all"
+       layout="topleft"
+       name="panel_snapshot_inventory"
+       filename="panel_snapshot_inventory.xml" />
+      <panel
+       class="llpanelsnapshotlocal"
+       follows="all"
+       layout="topleft"
+       name="panel_snapshot_local"
+       filename="panel_snapshot_local.xml" />
+    </panel_container>
+    <panel
+     height="295"
      layout="topleft"
-     left="10"
-     top_pad="8"
-     width="180"
-     name="auto_snapshot_check" />
+     left="270"
+     name="advanced_options_panel"
+     top="20"
+     width="200">
+        <text
+         type="string"
+         font="SansSerifSmall"
+         length="1"
+         follows="left|top"
+         height="14"
+         layout="topleft"
+         left="10"
+         halign="left"
+         name="advanced_options_label"
+         right="-10"
+         top="10">
+            ADVANCED OPTIONS
+        </text>
+        <view_border 
+         bevel_style="in"
+         follows="left|top|right" 
+         height="1"
+         left="10"
+         layout="topleft"
+         name="advanced_options_hr"
+         right="-10"
+         top_pad="5"
+         />
+        <text
+         type="string"
+         length="1"
+         follows="left|top"
+         height="13"
+         layout="topleft"
+         left="10"
+         name="layer_type_label"
+         top_pad="10"
+         width="50">
+            Capture:
+        </text>
+        <combo_box
+         follows="left|top|right"
+         height="23"
+         label="Image Layers"
+         layout="topleft"
+         left="30"
+         name="layer_types"
+         right="-10">
+            <combo_box.item
+             label="Colors"
+             name="Colors"
+             value="colors" />
+            <combo_box.item
+             label="Depth"
+             name="Depth"
+             value="depth" />
+        </combo_box>
+        <check_box
+         label="Interface"
+         layout="topleft"
+         left="30"
+         top_pad="10"
+         width="180"
+         name="ui_check" />
+        <check_box
+         label="HUDs"
+         layout="topleft"
+         left="30"
+         top_pad="10"
+         width="180"
+         name="hud_check" />
+        <check_box
+         label="Freeze frame (fullscreen)"
+         layout="topleft"
+         left="10"
+         top_pad="8"
+         width="180"
+         name="freeze_frame_check" />
+        <check_box
+         label="Auto-refresh"
+         layout="topleft"
+         left="10"
+         top_pad="8"
+         width="180"
+         name="auto_snapshot_check" />
+    </panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
index 74e01f359c6ce29b80bdab6d0f98cb72ebe7e1fb..dec0e9b6c620e3f44233ff24d9c04314684f41f3 100644
--- a/indra/newview/skins/default/xui/en/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/en/floater_sound_devices.xml
@@ -6,6 +6,7 @@
  can_minimize="true"
  can_resize="false"
  can_close="false"
+ chrome="true"
  save_dock_state="true"
  save_visibility="true"
  save_rect="true"
@@ -14,7 +15,7 @@
  height="164"
  layout="topleft"
  name="floater_sound_devices"
- title="Sound Devices"
+ title="SOUND DEVICES"
  width="490">
   <panel
     layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml
index b87cb9a433c2b9f3f7cf50854359273c268fe682..2fd932786bdf9e897bbcf0f06bfd740bd5aa751d 100644
--- a/indra/newview/skins/default/xui/en/floater_stats.xml
+++ b/indra/newview/skins/default/xui/en/floater_stats.xml
@@ -2,7 +2,6 @@
 <floater
  legacy_header_height="18"
  can_resize="true"
- follows="top|right"
  height="400"
  layout="topleft"
  name="Statistics"
@@ -10,7 +9,7 @@
  save_rect="true"
  save_visibility="true"
  title="STATISTICS"
- width="250">
+ width="260">
     <scroll_container
      follows="top|left|bottom|right"
      height="380"
@@ -19,15 +18,16 @@
      name="statistics_scroll"
      reserve_scroll_corner="true"
      top="20"
-     width="250">
-        <container_view
-         follows="top|left|bottom|right"
-         height="378"
-         layout="topleft"
-         left="2"
-         name="statistics_view"
-         top="20"
-         width="230" >
+     width="260">
+      <container_view
+       follows="top|left|bottom|right"
+       height="378"
+       layout="topleft"
+       left="2"
+       name="statistics_view"
+       top="20"
+       width="245" >
+        <!--Basic Section-->
 		  <stat_view
 			 name="basic"
 			 label="Basic"
@@ -39,9 +39,9 @@
 			   unit_label="fps"
 			   stat="fpsstat"
 			   bar_min="0"
-			   bar_max="45"
-			   tick_spacing="7.5"
-			   label_spacing="15.0"
+			   bar_max="60"
+			   tick_spacing="6"
+			   label_spacing="12"
 			   precision="1"
 			   show_bar="true"
 			   show_history="true">
@@ -52,9 +52,10 @@
 			   unit_label="kbps"
 			   stat="kbitstat"
 			   bar_min="0"
-			   bar_max="900"
-			   tick_spacing="100"
-			   label_spacing="300"
+			   bar_max="5000"
+			   tick_spacing="500"
+			   label_spacing="1000"
+				 precision="0"
 			   show_bar="true"
 			   show_history="false">
 			</stat_bar>
@@ -65,9 +66,9 @@
 			   stat="packetslostpercentstat"
 			   bar_min="0"
 			   bar_max="5"
-			   tick_spacing="1"
+			   tick_spacing="0.5"
 			   label_spacing="1"
-			   precision="1"
+			   precision="3"
 			   show_per_sec="false"
 			   show_bar="false"
 			   show_mean="true">
@@ -78,15 +79,17 @@
 			   unit_label="msec"
 			   stat="simpingstat"
 			   bar_min="0"
-			   bar_max="1000"
-			   tick_spacing="100"
-			   label_spacing="200"
+			   bar_max="5000"
+			   tick_spacing="500"
+			   label_spacing="1000"
+				 precision="0"
 			   show_bar="false"
 			   show_per_sec="false"
 			   show_mean="false">
 			</stat_bar>
 		  </stat_view>
-		  <stat_view
+          <!--Advanced Section-->
+      <stat_view
 			 name="advanced"
 			 label="Advanced"
 			 show_label="true"
@@ -98,37 +101,39 @@
 			   setting="OpenDebugStatRender">
 			  <stat_bar
 				 name="ktrisframe"
-				 label="KTris Drawn"
+				 label="KTris Drawn per Frame"
 				 unit_label="/fr"
 				 stat="trianglesdrawnstat"
 				 bar_min="0"
-				 bar_max="500"
-				 tick_spacing="100"
-				 label_spacing="500"
-				 precision="1"
-				 show_per_sec="false">
-			  </stat_bar>
+				 bar_max="10000"
+				 tick_spacing="1000"
+				 label_spacing="2000"
+				 precision="0"
+				 show_per_sec="false"
+         show_bar="false">
+        </stat_bar>
 			  <stat_bar
 				 name="ktrissec"
-				 label="KTris Drawn"
+				 label="KTris Drawn per Sec"
 				 unit_label="/sec"
 				 stat="trianglesdrawnstat"
 				 bar_min="0"
-				 bar_max="3000"
-				 tick_spacing="250"
-				 label_spacing="1000"
-				 precision="1">
-			  </stat_bar>
+				 bar_max="200000"
+				 tick_spacing="25000"
+				 label_spacing="50000"
+				 precision="0"
+         show_bar="false">
+        </stat_bar>
 			  <stat_bar
 				 name="objs"
 				 label="Total Objects"
 				 unit_label=""
 				 stat="numobjectsstat"
 				 bar_min="0"
-				 bar_max="3000"
-				 tick_spacing="250"
-				 label_spacing="1000"
-				 precision="1"
+				 bar_max="50000"
+				 tick_spacing="5000"
+				 label_spacing="10000"
+				 precision="0"
 				 show_per_sec="false"
 				 show_bar="false">
 			  </stat_bar>
@@ -138,13 +143,14 @@
 				 unit_label="/sec"
 				 stat="numnewobjectsstat"
 				 bar_min="0"
-				 bar_max="1000"
-				 tick_spacing="100"
-				 label_spacing="500"
+				 bar_max="2000"
+				 tick_spacing="200"
+				 label_spacing="400"
 				 show_per_sec="true"
 				 show_bar="false">
 			  </stat_bar>
 			</stat_view>
+        <!--Texture Stats-->
 			<stat_view
 			   name="texture"
 			   label="Texture"
@@ -182,8 +188,9 @@
 				 tick_spacing="100.f"
 				 label_spacing="200.f" 
 				 precision="1"
-				 show_per_sec="false" >
-			  </stat_bar>
+				 show_per_sec="false" 
+         show_bar="false">
+        </stat_bar>
 
 			  <stat_bar
 				 name="formattedmemstat"
@@ -194,8 +201,9 @@
 				 tick_spacing="100.f"
 				 label_spacing="200.f" 
 				 precision="1"
-				 show_per_sec="false" >
-			  </stat_bar>
+				 show_per_sec="false" 
+         show_bar="false">
+        </stat_bar>
 
 			  <stat_bar
 				 name="rawmemstat"
@@ -206,8 +214,9 @@
 				 tick_spacing="100.f"
 				 label_spacing="200.f" 
 				 precision="1"
-				 show_per_sec="false" >
-			  </stat_bar>
+				 show_per_sec="false" 
+         show_bar="false">
+        </stat_bar>
 
 			  <stat_bar
 				 name="glboundmemstat"
@@ -218,10 +227,11 @@
 				 tick_spacing="100.f"
 				 label_spacing="200.f" 
 				 precision="1"
-				 show_per_sec="false" >
-			  </stat_bar>
+				 show_per_sec="false" 
+         show_bar="false">
+        </stat_bar>
 			</stat_view>
-
+        <!--Network Stats-->
 			<stat_view
 			   name="network"
 			   label="Network"
@@ -232,6 +242,11 @@
 				 label="Packets In"
 				 stat="packetsinstat"
 				 unit_label="/sec" 
+         bar_min="0.f"
+				 bar_max="1024.f" 
+				 tick_spacing="128.f"
+				 label_spacing="256.f" 
+				 precision="1"
 				 show_bar="false">
 			  </stat_bar>
 
@@ -239,7 +254,12 @@
 				 name="packetsoutstat"
 				 label="Packets Out"
 				 stat="packetsoutstat"
-				 unit_label="/sec" 
+				 unit_label="/sec"  
+         bar_min="0.f"
+				 bar_max="1024.f" 
+				 tick_spacing="128.f"
+				 label_spacing="256.f" 
+				 precision="1"
 				 show_bar="false" >
 			  </stat_bar>
 
@@ -247,7 +267,12 @@
 				 name="objectkbitstat"
 				 label="Objects"
 				 stat="objectkbitstat"
-				 unit_label="kbps"
+         unit_label="kbps"
+         bar_min="0.f"
+         bar_max="1024.f"
+         tick_spacing="128.f"
+         label_spacing="256.f"
+         precision="1"
 				 show_bar="false" >
 			  </stat_bar>
 
@@ -255,7 +280,12 @@
 				 name="texturekbitstat"
 				 label="Texture"
 				 stat="texturekbitstat"
-				 unit_label="kbps"
+         unit_label="kbps"
+         bar_min="0.f"
+         bar_max="1024.f"
+         tick_spacing="128.f"
+         label_spacing="256.f"
+         precision="1"
 				 show_bar="false" >
 			  </stat_bar>
 
@@ -263,7 +293,12 @@
 				 name="assetkbitstat"
 				 label="Asset"
 				 stat="assetkbitstat"
-				 unit_label="kbps"
+         unit_label="kbps"
+         bar_min="0.f"
+         bar_max="1024.f"
+         tick_spacing="128.f"
+         label_spacing="256.f"
+         precision="1"
 				 show_bar="false" >
 			  </stat_bar>
 
@@ -271,7 +306,12 @@
 				 name="layerskbitstat"
 				 label="Layers"
 				 stat="layerskbitstat"
-				 unit_label="kbps"
+         unit_label="kbps"
+         bar_min="0.f"
+         bar_max="1024.f"
+         tick_spacing="128.f"
+         label_spacing="256.f"
+         precision="1"
 				 show_bar="false" >
 			  </stat_bar>
 
@@ -279,12 +319,13 @@
 				 name="actualinkbitstat"
 				 label="Actual In"
 				 stat="actualinkbitstat"
-				 unit_label="kbps"
-				 bar_min="0.f"
-				 bar_max="1024.f" 
-				 tick_spacing="128.f"
-				 label_spacing="256.f" 
-				 show_bar="true"
+         unit_label="kbps"
+         bar_min="0.f"
+         bar_max="1024.f"
+         tick_spacing="128.f"
+         label_spacing="256.f"
+         precision="1"
+				 show_bar="false"
 				 show_history="false" >
 			  </stat_bar>
 
@@ -292,26 +333,27 @@
 				 name="actualoutkbitstat"
 				 label="Actual Out"
 				 stat="actualoutkbitstat"
-				 unit_label="kbps"
-				 bar_min="0.f"
-				 bar_max="512.f" 
-				 tick_spacing="128.f"
-				 label_spacing="256.f" 
-				 show_bar="true"
+         unit_label="kbps"
+         bar_min="0.f"
+         bar_max="1024.f"
+         tick_spacing="128.f"
+         label_spacing="256.f"
+         precision="1"
+				 show_bar="false"
 				 show_history="false">
 			  </stat_bar>
 
 			  <stat_bar
 				 name="vfspendingoperations"
-				 label="VFS Pending Ops"
+				 label="VFS Pending Operations"
 				 stat="vfspendingoperations"
-				 unit_label=" "
+				 unit_label=" Ops."
 				 show_per_sec="false"
 				 show_bar="false" >
 			  </stat_bar>
 			</stat_view>
 		  </stat_view>
-
+        <!--Sim Stats-->
 		  <stat_view
 			 name="sim"
 			 label="Simulator"
@@ -321,11 +363,11 @@
 			   name="simtimedilation"
 			   label="Time Dilation"
 			   stat="simtimedilation"
-			   precision="2"
+			   precision="3"
 			   bar_min="0.f"
 			   bar_max="1.f" 
-			   tick_spacing="0.25f"
-			   label_spacing="0.5f" 
+			   tick_spacing="0.16666f"
+			   label_spacing="0.33333f" 
 			   show_per_sec="false"
 			   show_bar="false"
 			   show_mean="false" >
@@ -335,10 +377,11 @@
 			   name="simfps"
 			   label="Sim FPS"
 			   stat="simfps"
+			   precision="1"
 			   bar_min="0.f"
-			   bar_max="200.f" 
-			   tick_spacing="20.f"
-			   label_spacing="100.f" 
+			   bar_max="45.f" 
+			   tick_spacing="7.5f"
+			   label_spacing="15.f" 
 			   show_per_sec="false"
 			   show_bar="false"
 			   show_mean="false" >
@@ -350,9 +393,9 @@
 			   stat="simphysicsfps"
 			   precision="1"
 			   bar_min="0.f"
-			   bar_max="66.f" 
-			   tick_spacing="33.f"
-			   label_spacing="33.f" 
+			   bar_max="45.f" 
+			   tick_spacing="7.5.f"
+			   label_spacing="15.f" 
 			   show_per_sec="false"
 			   show_bar="false"
 			   show_mean="false" >
@@ -369,8 +412,8 @@
 				 precision="0" 
 				 bar_min="0.f"
 				 bar_max="500.f" 
-				 tick_spacing="10.f"
-				 label_spacing="40.f" 
+				 tick_spacing="50.f"
+				 label_spacing="100.f" 
 				 show_per_sec="false"
 				 show_bar="false"
 				 show_mean="false" >
@@ -383,8 +426,8 @@
 				 precision="0"
 				 bar_min="0.f"
 				 bar_max="500.f" 
-				 tick_spacing="10.f"
-				 label_spacing="40.f" 
+				 tick_spacing="50.f"
+				 label_spacing="100.f" 
 				 show_per_sec="false"
 				 show_bar="false"
 				 show_mean="false" >
@@ -395,7 +438,7 @@
 				 label="Memory Allocated"
 				 stat="physicsmemoryallocated"
 				 unit_label="MB"
-				 precision="0"
+				 precision="1"
 				 bar_min="0.f"
 				 bar_max="1024.f" 
 				 tick_spacing="128.f"
@@ -468,9 +511,9 @@
 			   stat="simactiveobjects"
 			   precision="0"
 			   bar_min="0.f"
-			   bar_max="800.f" 
-			   tick_spacing="100.f"
-			   label_spacing="200.f" 
+			   bar_max="5000.f" 
+			   tick_spacing="750.f"
+			   label_spacing="1250.f" 
 			   show_per_sec="false"
 			   show_bar="false"
 			   show_mean="false" >
@@ -482,9 +525,9 @@
 			   stat="simactivescripts"
 			   precision="0"
 			   bar_min="0.f"
-			   bar_max="800.f" 
-			   tick_spacing="100.f"
-			   label_spacing="200.f" 
+			   bar_max="15000.f" 
+			   tick_spacing="1875.f"
+			   label_spacing="3750.f"  
 			   show_per_sec="false"
 			   show_bar="false"
 			   show_mean="false" >
@@ -497,9 +540,9 @@
 			   unit_label="eps"
 			   precision="0"
 			   bar_min="0.f"
-			   bar_max="20000.f" 
-			   tick_spacing="2500.f"
-			   label_spacing="5000.f" 
+			   bar_max="5000.f" 
+			   tick_spacing="750.f"
+			   label_spacing="1250.f"  
 			   show_per_sec="false"
 			   show_bar="false"
 			   show_mean="false" >
@@ -568,7 +611,7 @@
 			   label="Total Unacked Bytes"
 			   stat="simtotalunackedbytes"
 			   unit_label="kb"
-			   precision="0"
+			   precision="1"
 			   bar_min="0.f"
 			   bar_max="100000.f" 
 			   tick_spacing="25000.f"
@@ -587,7 +630,7 @@
 				 label="Total Frame Time"
 				 stat="simframemsec"
 				 unit_label="ms"
-				 precision="1"
+				 precision="3"
 				 bar_min="0.f"
 				 bar_max="40.f" 
 				 tick_spacing="10.f"
@@ -602,7 +645,7 @@
 				 label="Net Time"
 				 stat="simnetmsec"
 				 unit_label="ms"
-				 precision="1"
+				 precision="3"
 				 bar_min="0.f"
 				 bar_max="40.f" 
 				 tick_spacing="10.f"
@@ -617,7 +660,7 @@
 				 label="Physics Time"
 				 stat="simsimphysicsmsec"
 				 unit_label="ms"
-				 precision="1"
+				 precision="3"
 				 bar_min="0.f"
 				 bar_max="40.f" 
 				 tick_spacing="10.f"
@@ -632,7 +675,7 @@
 				 label="Simulation Time"
 				 stat="simsimothermsec"
 				 unit_label="ms"
-				 precision="1"
+				 precision="3"
 				 bar_min="0.f"
 				 bar_max="40.f" 
 				 tick_spacing="10.f"
@@ -647,7 +690,7 @@
 				 label="Agent Time"
 				 stat="simagentmsec"
 				 unit_label="ms"
-				 precision="1"
+				 precision="3"
 				 bar_min="0.f"
 				 bar_max="40.f" 
 				 tick_spacing="10.f"
@@ -662,7 +705,7 @@
 				 label="Images Time"
 				 stat="simimagesmsec"
 				 unit_label="ms"
-				 precision="1"
+				 precision="3"
 				 bar_min="0.f"
 				 bar_max="40.f" 
 				 tick_spacing="10.f"
@@ -677,7 +720,7 @@
 				 label="Script Time"
 				 stat="simscriptmsec"
 				 unit_label="ms"
-				 precision="1"
+				 precision="3"
 				 bar_min="0.f"
 				 bar_max="40.f" 
 				 tick_spacing="10.f"
@@ -686,6 +729,97 @@
 				 show_bar="false"
 				 show_mean="false" >
 			  </stat_bar>
+
+        <stat_bar
+         name="simsparemsec"
+         label="Spare Time"
+         stat="simsparemsec"
+         unit_label="ms"
+         precision="3"
+         bar_min="0.f"
+         bar_max="40.f"
+         tick_spacing="10.f"
+         label_spacing="20.f"
+         show_per_sec="false"
+         show_bar="false"
+         show_mean="false" >
+        </stat_bar>
+        <!--2nd level time blocks under 'Details' second-->
+          <stat_view
+ 			     name="timedetails"
+			     label="Time Details (ms)"
+			     show_label="true">
+            <stat_bar
+             name="simsimphysicsstepmsec"
+             label="  Physics Step"
+             stat="simsimphysicsstepmsec"
+             unit_label="ms"
+             precision="3"
+             bar_min="0.f"
+             bar_max="40.f"
+             tick_spacing="10.f"
+             label_spacing="20.f"
+             show_per_sec="false"
+             show_bar="false"
+             show_mean="false" >
+            </stat_bar>
+            <stat_bar
+             name="simsimphysicsshapeupdatemsec"
+             label="  Update Phys Shapes"
+             stat="simsimphysicsshapeupdatemsec"
+             unit_label="ms"
+             precision="3"
+             bar_min="0.f"
+             bar_max="40.f"
+             tick_spacing="10.f"
+             label_spacing="20.f"
+             show_per_sec="false"
+             show_bar="false"
+             show_mean="false" >
+            </stat_bar>
+            <stat_bar
+             name="simsimphysicsothermsec"
+             label="  Physics Other"
+             stat="simsimphysicsothermsec"
+             unit_label="ms"
+             precision="3"
+             bar_min="0.f"
+             bar_max="40.f"
+             tick_spacing="10.f"
+             label_spacing="20.f"
+             show_per_sec="false"
+             show_bar="false"
+             show_mean="false" >
+            </stat_bar>
+            <stat_bar
+             name="simsleepmsec"
+             label="  Sleep Time"
+             stat="simsleepmsec"
+             unit_label="ms"
+             precision="3"
+             bar_min="0.f"
+             bar_max="40.f"
+             tick_spacing="10.f"
+             label_spacing="20.f"
+             show_per_sec="false"
+             show_bar="false"
+             show_mean="false" >
+            </stat_bar>
+            <stat_bar
+             name="simpumpiomsec"
+             label="  Pump IO"
+             stat="simpumpiomsec"
+             unit_label="ms"
+             precision="3"
+             bar_min="0.f"
+             bar_max="40.f"
+             tick_spacing="10.f"
+             label_spacing="20.f"
+             show_per_sec="false"
+             show_bar="false"
+             show_mean="false" >
+            </stat_bar>
+			</stat_view>
 			</stat_view>
 		  </stat_view>
 		</container_view>
diff --git a/indra/newview/skins/default/xui/en/floater_sys_well.xml b/indra/newview/skins/default/xui/en/floater_sys_well.xml
index 005952f3f237bff782bb3089090002eabc031eec..ecedb2743896e3d3b75d56f0d9fba45cb9a4e6cf 100644
--- a/indra/newview/skins/default/xui/en/floater_sys_well.xml
+++ b/indra/newview/skins/default/xui/en/floater_sys_well.xml
@@ -2,9 +2,6 @@
 <floater
  legacy_header_height="18"
  bevel_style="in"
- left="0"
- top="0"
- follows="right|bottom"
  layout="topleft"
  name="sys_well_window"
  help_topic="notification_chiclet"
@@ -18,6 +15,7 @@
  can_resize="true"
  can_drag_on_left="false"
  can_dock="true"
+ save_dock_state="true"
  save_visibility="true"
  single_instance="true"
 >
diff --git a/indra/newview/skins/default/xui/en/floater_telehub.xml b/indra/newview/skins/default/xui/en/floater_telehub.xml
index da412ed8a027625d286d0d381c669377459c0759..547613fb672b0d4c58c2187dfa9c3aa144b15986 100644
--- a/indra/newview/skins/default/xui/en/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/en/floater_telehub.xml
@@ -4,7 +4,6 @@
  legacy_header_height="18"
  height="250"
  layout="topleft"
- left="300" 
  name="telehub"
  help_topic="telehub"
  title="TELEHUB"
diff --git a/indra/newview/skins/default/xui/en/floater_test_button.xml b/indra/newview/skins/default/xui/en/floater_test_button.xml
index bf0a774e76605ae49214f7f07bcd461b519f0ab4..9bc05107a207e5461e5129927cddc3b587a9576c 100644
--- a/indra/newview/skins/default/xui/en/floater_test_button.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_button.xml
@@ -78,7 +78,6 @@
     <button
      bottom_delta="30"
      height="23"
-     highlight_color="EmphasisColor"
      label="Highlight"
      layout="topleft"
      name="highlight_color_button" />
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
new file mode 100644
index 0000000000000000000000000000000000000000..f95f21e63a760c75a0e4272331cdb0233bad2c6e
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_layout_stacks.xml
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ can_resize="true"
+ can_close="true"
+ bevel_style="in"
+ height="300"
+ layout="topleft"
+ min_height="40"
+ min_width="420"
+ name="Test Floater"
+ title="LAYOUTSTACK TESTS"
+ width="420">
+  <layout_stack name="test_stack"
+              left="0"
+              top="0"
+              width="100"
+              height="250"
+              follows="left|top|bottom"
+              orientation="vertical">
+    <layout_panel name="flex"
+                  auto_resize="true"
+                  user_resize="true"
+                  bg_alpha_color="blue"
+                  height="11"
+                  min_height="0"
+                  background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="white">flex</text>
+    </layout_panel>
+    <layout_panel name="flex"
+                  auto_resize="true"
+                  user_resize="true"
+                  bg_alpha_color="blue"
+                  height="11"
+                  min_height="0"
+                  background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="white">flex</text>
+    </layout_panel>
+  </layout_stack>
+  <layout_stack name="test_stack"
+              left_pad="5"
+              top="0"
+              width="100"
+              height="250"
+              follows="left|top|bottom"
+              orientation="vertical">
+    <layout_panel name="flex"
+                  auto_resize="true"
+                  user_resize="true"
+                  bg_alpha_color="blue"
+                  height="100"
+                  background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="white">flex</text>
+    </layout_panel>
+    <layout_panel name="flex"
+                  auto_resize="true"
+                  user_resize="true"
+                  visible="false"
+                  bg_alpha_color="blue"
+                  height="100"
+                  background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="white">flex</text>
+    </layout_panel>
+    <layout_panel name="fixed"
+                  auto_resize="false"
+                  user_resize="true"
+                  height="50"
+                  min_height="10"
+                  bg_alpha_color="green"
+                  background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="black">fixed</text>
+    </layout_panel>
+    <layout_panel name="fixed"
+                auto_resize="false"
+                  user_resize="true"
+                height="50"
+                min_height="10"
+                bg_alpha_color="green"
+                background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="black">fixed</text>
+    </layout_panel>
+    <layout_panel name="flex"
+                  auto_resize="true"
+                  user_resize="true"
+                  bg_alpha_color="blue"
+                  height="100"
+                  background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="white">flex</text>
+    </layout_panel>
+    <layout_panel name="flex"
+                  auto_resize="true"
+                  user_resize="true"
+                  bg_alpha_color="blue"
+                  height="100"
+                  background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="white">flex</text>
+    </layout_panel>
+    <layout_panel name="flex"
+                  auto_resize="true"
+                  user_resize="true"
+                  bg_alpha_color="blue"
+                  height="100"
+                  background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="white">flex</text>
+    </layout_panel>
+    <layout_panel name="flex"
+                  auto_resize="true"
+                  user_resize="true"
+                  bg_alpha_color="blue"
+                  height="100"
+                  visible="true"
+                  background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="white">flex</text>
+    </layout_panel>
+  </layout_stack>
+  <layout_stack name="test_stack"
+               left_pad="5"
+               top="0"
+               width="100"
+               height="250"
+               follows="left|top|bottom"
+               orientation="vertical">
+    <layout_panel name="flex"
+                  auto_resize="true"
+                  user_resize="true"
+                  height="11"
+                  bg_alpha_color="blue"
+                  background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="white">flex</text>
+    </layout_panel>
+    <layout_panel name="fixed"
+                auto_resize="false"
+                  user_resize="true"
+                height="50"
+                bg_alpha_color="green"
+                background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="black">fixed</text>
+    </layout_panel>
+    <layout_panel name="flex"
+                  auto_resize="true"
+                  user_resize="true"
+                  bg_alpha_color="blue"
+                  height="11"
+                  background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="white">flex</text>
+    </layout_panel>
+  </layout_stack>
+  <layout_stack name="test_stack"
+               left_pad="5"
+               top="0"
+               width="100"
+               height="250"
+               follows="left|top|bottom"
+               orientation="vertical">
+    <layout_panel name="fixed"
+                auto_resize="false"
+                  user_resize="true"
+                height="50"
+                bg_alpha_color="green"
+                background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="black">fixed</text>
+    </layout_panel>
+    <layout_panel name="fixed"
+                auto_resize="false"
+                  user_resize="true"
+                height="50"
+                bg_alpha_color="green"
+                background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="black">fixed</text>
+    </layout_panel>
+    <layout_panel name="fixed"
+                auto_resize="false"
+                  user_resize="true"
+                height="50"
+                bg_alpha_color="green"
+                background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="black">fixed</text>
+    </layout_panel>
+    <layout_panel name="flex"
+                  auto_resize="true"
+                  user_resize="true"
+                  bg_alpha_color="blue"
+                  height="11"
+                  min_height="0"
+                  background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="white">flex</text>
+    </layout_panel>
+    <layout_panel name="flex"
+                  auto_resize="true"
+                  user_resize="true"
+                  bg_alpha_color="blue"
+                  height="11"
+                  min_height="0"
+                  background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="white">flex</text>
+    </layout_panel>
+    <layout_panel name="flex"
+                  auto_resize="true"
+                  user_resize="true"
+                  bg_alpha_color="blue"
+                  height="11"
+                  min_height="0"
+                  background_visible="true">
+      <text follows="top|left|right" halign="center" text_color="white">flex</text>
+    </layout_panel>
+  </layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_test_toolbar.xml b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..067c1fed8245488732f2b4bc4bda58e2f0e7c94e
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_test_toolbar.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ can_resize="true"
+ height="500"
+ layout="topleft"
+ name="floater_test_toolbar"
+ translate="false"
+ width="500">
+  <toolbar name="test_toolbar_top"
+           button_display_mode="icons_with_text"
+           follows="left|right|top"
+           height="50"
+           width="500"
+           left="0"
+           top="20"
+           min_button_width="0"
+           max_button_width="100"
+           side="top">
+    <command name="avatar"/>
+    <command name="build"/>
+    <command name="chat"/>
+  </toolbar>
+  <toolbar name="test_toolbar_left"
+           button_display_mode="icons_with_text"
+           follows="left|bottom|top"
+           height="380"
+           width="200"
+           left="0"
+           top="70"
+           min_button_width="100"           
+           side="left">
+    <command name="avatar"/>
+    <command name="build"/>
+    <command name="chat"/>
+  </toolbar>
+  <toolbar name="test_toolbar_right"
+           button_display_mode="icons_with_text"
+           follows="right|bottom|top"
+           height="380"
+           width="200"
+           right="500"
+           top="70"
+           side="right">
+    <command name="avatar"/>
+    <command name="build"/>
+    <command name="chat"/>
+  </toolbar>
+  <toolbar name="test_toolbar_bottom"
+           button_display_mode="icons_with_text"
+           follows="left|right|bottom"
+           height="50"
+           width="500"
+           left="0"
+           bottom="500"
+           min_button_width="100"
+           side="bottom">
+    <command name="avatar"/>
+    <command name="build"/>
+    <command name="chat"/>
+  </toolbar>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 9b02f7d2737069d47dff81c46100bf5460437e0a..f9147ea650cb318d38cf1290d829cce811c7562f 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
+ open_positioning="cascading"
  legacy_header_height="18"
- follows="left|top|right"
  height="580"
  layout="topleft"
  bg_opaque_image="Window_NoTitle_Foreground"
@@ -515,7 +515,8 @@
      image_disabled_selected="Object_Grass"
      image_selected="Object_Grass_Selected"
      image_unselected="Object_Grass"
-     image_overlay_color="Red"
+     image_overlay_color="1 0 0 .75"
+     image_overlay_selected_color="1 0 0 1"
      layout="topleft"
      left_delta="29"
      name="ToolGrass"
@@ -789,6 +790,7 @@
      tab_min_width="40"
      tab_position="top"
      tab_height="25"
+     open_tabs_on_drag_and_drop="true"
      top="173"
      width="295">
 	
diff --git a/indra/newview/skins/default/xui/en/floater_toybox.xml b/indra/newview/skins/default/xui/en/floater_toybox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..72e6187a14d1fbb530ae112f39481347a7242cfe
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_toybox.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+  can_close="true"
+  can_dock="false"
+  can_minimize="false"
+  can_resize="false"
+  default_tab_group="1"
+  height="375"
+  help_topic="toybox"
+  layout="topleft"
+  legacy_header_height="18"
+  name="Toybox"
+  open_positioning="centered"
+  save_rect="true"
+  single_instance="true"
+  title="TOOLBAR BUTTONS"
+  width="650">
+  <text
+    follows="left|top"
+    font="SansSerifMedium"
+    valign="bottom"
+    halign="left"
+    height="20"
+    layout="topleft"
+    left="20"
+    length="1"
+    name="toybox label 1"
+    right="-20"
+    top="35"
+    type="string">
+      Add or remove buttons by dragging them to or from the toolbars.
+  </text>
+  <text
+    follows="left|top"
+    font="SansSerifMedium"
+    valign="bottom"
+    halign="left"
+    height="20"
+    layout="topleft"
+    left="20"
+    length="1"
+    name="toybox label 2"
+    right="-20"
+    top="55"
+    type="string">
+      Buttons will appear as shown or as icon-only depending on each toolbar's settings.
+  </text>
+  <toolbar
+    bottom="310"
+    button_display_mode="icons_with_text"
+    follows="all"
+    left="20"
+    button_icon_and_text.button_width.max="140"
+    button_icon_and_text.button_width.min="70"
+    name="toybox_toolbar"
+    pad_left="5"
+    pad_right="5"
+    pad_top="5"
+    pad_bottom="5"
+    pad_between="15"
+    read_only="true"
+    right="-20"
+    side="top"
+    top="85">
+    <button_panel background_visible="false" />
+    <button_icon_and_text image_unselected="PushButton_Off"
+                          image_selected="PushButton_Off"
+                          image_disabled_selected="PushButton_Disabled"
+                          image_disabled="PushButton_Disabled"
+                          label_color="ButtonLabelColor"
+                          label_color_selected="ButtonLabelColor"
+                          label_color_disabled="ButtonLabelDisabledColor"
+                          label_color_disabled_selected="ButtonLabelDisabledColor"
+                          image_color="ButtonImageColor"
+                          image_color_disabled="ButtonImageColor"
+                          flash_color="ButtonUnselectedFgColor"
+                          halign="left"
+                          hover_glow_amount="0.15"
+                          sound_flags="0"
+                          display_pressed_state="false" />
+  </toolbar>
+  <panel
+    bevel_style="none"
+    border="true"
+    bottom="311"
+    follows="left|bottom|right"
+    left="20"
+    right="-20"
+    top="311" />
+  <button
+    follows="left|bottom|right"
+    height="23"
+    label="Clear all toolbars"
+    label_selected="Clear all toolbars"
+    layout="topleft"
+    left="185"
+    name="btn_clear_all"
+    top="330"
+    width="130">
+    <button.commit_callback function="Toybox.ClearAll" />
+  </button>
+  <button
+    follows="left|bottom|right"
+    height="23"
+    label="Restore defaults"
+    label_selected="Restore defaults"
+    layout="topleft"
+    left="335"
+    name="btn_restore_defaults"
+    top="330"
+    width="130">
+    <button.commit_callback function="Toybox.RestoreDefaults" />
+  </button>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_translation_settings.xml b/indra/newview/skins/default/xui/en/floater_translation_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a212ce78891f66412ca0a2af19aac111f03dfdac
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_translation_settings.xml
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ height="310"
+ layout="topleft"
+ name="floater_translation_settings"
+ help_topic="translation_settings"
+ save_rect="true"
+ title="CHAT TRANSLATION SETTINGS"
+ width="485">
+
+ <string name="bing_api_key_not_verified">Bing appID not verified. Please try again.</string>
+ <string name="google_api_key_not_verified">Google API key not verified. Please try again.</string>
+
+ <string name="bing_api_key_verified">Bing appID verified.</string>
+ <string name="google_api_key_verified">Google API key verified.</string>
+
+ <check_box
+  height="16"     
+  label="Enable machine translation while chatting"
+  layout="topleft"
+  left="10"
+  name="translate_chat_checkbox"
+  top="30"
+  width="20" />
+ <text
+  height="20"
+  follows="left|top"
+  layout="topleft"
+  left="40"
+  name="translate_language_label"
+  top_pad="20"
+  width="130">
+  Translate chat into: 
+ </text>
+ <combo_box
+  allow_text_entry="true"
+  follows="left|top"
+  height="23"
+  left_pad="10"
+  max_chars="135"
+  mouse_opaque="true"
+  name="translate_language_combo"
+  top_delta="-5"
+  width="190">
+  <combo_box.item
+   label="System Default"
+   name="System Default Language"
+   value="default" />
+  <combo_box.item
+   label="English"
+   name="English"
+   value="en" />
+  <!-- After "System Default" and "English", please keep the rest of these combo_box.items in alphabetical order by the first character in the string. -->
+  <combo_box.item
+   label="Dansk (Danish)"
+   name="Danish"
+   value="da" />
+  <combo_box.item
+   label="Deutsch (German)"
+   name="German"
+   value="de" />
+  <combo_box.item
+   label="Español (Spanish)"
+   name="Spanish"
+   value="es" />
+  <combo_box.item
+   label="Français (French)"
+   name="French"
+   value="fr" />
+  <combo_box.item
+   label="Italiano (Italian)"
+   name="Italian"
+   value="it" />
+  <combo_box.item
+   label="Magyar (Hungarian)"
+   name="Hungarian"
+   value="hu" />
+  <combo_box.item
+   label="Nederlands (Dutch)"
+   name="Dutch"
+   value="nl" />
+  <combo_box.item
+   label="Polski (Polish)"
+   name="Polish"
+   value="pl" />
+  <combo_box.item
+   label="Português (Portuguese)"
+   name="Portugese"
+   value="pt" />
+  <combo_box.item
+   label="Русский (Russian)"
+   name="Russian"
+   value="ru" />
+  <combo_box.item
+   label="Türkçe (Turkish)"
+   name="Turkish"
+   value="tr" />
+  <combo_box.item
+   label="Українська (Ukrainian)"
+   name="Ukrainian"
+   value="uk" />
+  <combo_box.item
+   label="中文 (正體) (Chinese)"
+   name="Chinese"
+   value="zh" />
+  <combo_box.item
+   label="日本語 (Japanese)"
+   name="Japanese"
+   value="ja" />
+  <combo_box.item
+   label="한국어 (Korean)"
+   name="Korean"
+   value="ko" />
+ </combo_box>
+
+ <text
+  follows="top|left|right"
+  height="15"
+  layout="topleft"
+  left="40"
+  name="tip"
+  top_pad="20"
+  width="330"
+  wrap="true">
+  Choose translation service:
+ </text>
+
+ <radio_group
+  follows="top|left"
+  height="80"
+  layout="topleft"
+  left_delta="10"
+  name="translation_service_rg"
+  top_pad="20"
+  width="320">
+  <radio_item
+   initial_value="bing"
+   label="Bing Translator"
+   layout="topleft"
+   name="bing" />
+  <radio_item
+   initial_value="google"
+   label="Google Translate"
+   layout="topleft"
+   name="google"
+   top_pad="55" />
+ </radio_group>
+
+ <text
+  type="string"
+  length="1"
+  follows="top|right"
+  height="20"
+  layout="topleft"
+  left="70"
+  name="bing_api_key_label"
+  top_pad="-55"
+  width="85">
+  Bing [http://www.bing.com/developers/createapp.aspx AppID]:
+  </text>
+ <line_editor
+  default_text="Enter Bing AppID and click &quot;Verify&quot;"
+  follows="top|left"
+  height="20"
+  layout="topleft"
+  left_pad="10"
+  max_length_chars="50"
+  top_delta="-4"
+  name="bing_api_key"
+  width="210" />
+ <button
+  follows="left|top"
+  height="23"
+  label="Verify"
+  layout="topleft"
+  left_pad="10"
+  name="verify_bing_api_key_btn"
+  top_delta="-2"
+  width="90" />	
+
+ <text
+  follows="top|right"
+  height="20"
+  layout="topleft"
+  left="70"
+  length="1"
+  name="google_api_key_label"
+  top_pad="50"
+  type="string"
+  width="85">
+  Google [http://code.google.com/apis/language/translate/v2/getting_started.html#auth API key]:
+ </text>
+ <line_editor
+  default_text="Enter Google API key and click &quot;Verify&quot;"
+  follows="top|left"
+  height="20"
+  layout="topleft"
+  left_pad="10"
+  max_length_chars="50"
+  top_delta="-4"
+  name="google_api_key"
+  width="210" />
+ <button
+  follows="left|top"
+  height="23"
+  label="Verify"
+  layout="topleft"
+  left_pad="10"
+  name="verify_google_api_key_btn"
+  top_delta="-2"
+  width="90" />	
+
+ <text
+  follows="top|right"
+  height="20"
+  layout="topleft"
+  left="185"
+  length="1"
+  name="google_links_text"
+  top_delta="-23"
+  type="string"
+  width="100">
+  [http://code.google.com/apis/language/translate/v2/pricing.html Pricing] | [https://code.google.com/apis/console Stats] 
+ </text>
+
+ <button
+  follows="left|top"
+  height="23"
+  label="OK"
+  layout="topleft"
+  right="-120"
+  name="ok_btn"
+  top="-30"
+  width="100" />
+ <button
+  follows="left|top"
+  height="23"
+  label="Cancel"
+  layout="topleft"
+  left_pad="10"
+  name="cancel_btn"
+  width="100" />	
+</floater>
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 3921cfcd2c92ffff9e226d134457e9a36840df25..06d43272935f1f8f245094e9482bb35a7f41f651 100644
--- a/indra/newview/skins/default/xui/en/floater_ui_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_ui_preview.xml
@@ -22,6 +22,7 @@ or specifying its path in the "Editor Path" field.</string>
      layout="topleft"
      left="0"
      mouse_opaque="false"
+     default_tab_group="1"
      name="main_panel"
      right="750"
      top="0">
@@ -196,6 +197,7 @@ or specifying its path in the "Editor Path" field.</string>
          left="10"
          name="name_list"
          right="-10"
+         tab_group="1"
          search_column="1"
          top="80">
             <scroll_list.columns
diff --git a/indra/newview/skins/default/xui/en/floater_voice_controls.xml b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
index f017a7ace6b418c2ecf27b91c80a4b0ecd22847e..cea19ec75c7b518dc470c8e2c3982b85b5aceeee 100644
--- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
@@ -1,15 +1,17 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
+ open_positioning="cascading"
  can_resize="true"
  can_minimize="true"
- can_close="false"
+ 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"
+ title="VOICE CONTROLS"
  save_dock_state="true"
  save_visibility="true"
  save_rect="true"
@@ -17,19 +19,19 @@
  width="282">
     <string
      name="title_nearby">
-        NEARBY VOICE
+        VOICE SETTINGS
     </string>
     <string
      name="title_group">
-        Group Call with [GROUP]
+        GROUP CALL WITH [GROUP]
     </string>
     <string
      name="title_adhoc">
-        Conference Call
+        CONFERENCE CALL
     </string>
     <string
      name="title_peer_2_peer">
-        Call with [NAME]
+        CALL WITH [NAME]
     </string>
     <string
      name="no_one_near">
@@ -47,9 +49,9 @@
          width="263">
         <layout_panel
          follows="top|left|right"
-         user_resize="false"
          auto_resize="false"
          layout="topleft"
+         min_height="20"
          height="20"
          name="my_panel">
             <avatar_icon
@@ -86,7 +88,7 @@
              visible="true"
              width="20" />
         </layout_panel>
-        <layout_panel name="leave_call_panel" height="26" auto_resize="false">
+        <layout_panel name="leave_call_panel" height="26" min_height="26" auto_resize="false">
         <layout_stack
          clip="true"
          follows="left|top|right"
@@ -107,7 +109,6 @@
           </layout_panel>
           <layout_panel
            auto_resize="false"
-           user_resize="false"
            follows="top|right"
            height="23"
            visible="true"
@@ -130,7 +131,7 @@
           top_pad="0"
           height="132"
           name="callers_panel"
-          user_resize="false" 
+          auto_resize="true"
           width="280">
         <avatar_list
          follows="all"
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 2c754cd8d0f3974c2c0d8af124872683e24c7eab..77fb21e27c5eadddaa008933318d557af24602cf 100644
--- a/indra/newview/skins/default/xui/en/floater_voice_effect.xml
+++ b/indra/newview/skins/default/xui/en/floater_voice_effect.xml
@@ -7,7 +7,6 @@
  help_topic="voice_effects"
  title="VOICE MORPHING"
  background_visible="true"
- follows="all"
  label="Places"
  layout="topleft"
  min_height="360"
diff --git a/indra/newview/skins/default/xui/en/floater_web_content.xml b/indra/newview/skins/default/xui/en/floater_web_content.xml
index 0eda9ae62ab3c3a63344772a0b3d23fc9acb930e..cea10adca8e8b182df6f9c18259bac5e39d70afe 100644
--- a/indra/newview/skins/default/xui/en/floater_web_content.xml
+++ b/indra/newview/skins/default/xui/en/floater_web_content.xml
@@ -9,7 +9,6 @@
   name="floater_web_content"
   help_topic="floater_web_content"
   save_rect="true"
-  auto_tile="true"
   title=""
   initial_mime_type="text/html"
   width="780">
@@ -32,7 +31,6 @@
       min_height="20"
       name="nav_controls"
       top="400"
-      user_resize="false"
       width="770">
       <button
         image_overlay="Arrow_Left_Off"
@@ -161,7 +159,6 @@
       left_delta="0"
       name="external_controls"
       top_delta="0"
-      user_resize="false"
       auto_resize="true"
       width="585">
       <web_browser
@@ -174,8 +171,7 @@
     </layout_panel>
     <layout_panel name="status_bar" 
                   height="23"
-                  auto_resize="false"
-                  user_resize="false">
+                  auto_resize="false">
       <text
         type="string"
         length="200"
diff --git a/indra/newview/skins/default/xui/en/floater_web_profile.xml b/indra/newview/skins/default/xui/en/floater_web_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d0225f78a9b55f9cb2890b3c0c41f725a673944b
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_web_profile.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater name="floater_web_profile"
+         help_topic="web_profile"
+         width="780"
+         height="775"
+         filename="floater_web_content.xml"/>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/floater_world_map.xml b/indra/newview/skins/default/xui/en/floater_world_map.xml
index 019e7cd032a5e84c9b0ed5c878c98eb23ba60299..56d79f62c7bf0586b15c66991bc76951f3c1b564 100644
--- a/indra/newview/skins/default/xui/en/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_world_map.xml
@@ -2,7 +2,7 @@
 <floater
  legacy_header_height="18"
  can_resize="true"
- open_centered="true"
+ open_positioning="centered"
  height="600"
  layout="topleft"
  min_height="520"
@@ -468,7 +468,7 @@
      left="3"
      top_pad="7"
      mouse_opaque="true"
-     name="region_icon"
+     name="location_icon"
      width="16" />
     <search_editor
      follows="top|right"
diff --git a/indra/newview/skins/default/xui/en/inspect_remote_object.xml b/indra/newview/skins/default/xui/en/inspect_remote_object.xml
index ef3dd844cd04fe8f2278bb9f08c4ba40e6993d14..e83257d2a0da096229b6c9eeee6295b3b8238e63 100644
--- a/indra/newview/skins/default/xui/en/inspect_remote_object.xml
+++ b/indra/newview/skins/default/xui/en/inspect_remote_object.xml
@@ -36,7 +36,7 @@
    height="16"
    left="8"
    name="object_owner_label"
-   width="55"
+   width="65"
    top_pad="12">
      Owner:
   </text>
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index a7d1aa963c7101f8c07676f1b4453de1e44f66f7..a87027a1136a05fdffb88828c6fb8da5bc859fec 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -11,130 +11,66 @@
   <layout_stack border_size="0"
                 follows="all"
                 mouse_opaque="false"
-                height="749"
+                height="768"
                 name="menu_stack"
                 orientation="vertical"
-                top="19">
+                top="0">
+    <layout_panel mouse_opaque="true"
+              follows="left|right|top"
+              name="status_bar_container"
+              tab_stop="false"
+              height="19"
+              left="0"
+              top="0"
+              width="1024"
+              auto_resize="false"
+              visible="true">
+      <view mouse_opaque="false"
+            follows="all"
+            name="menu_bar_holder"
+            left="0"
+            top="0"
+            width="1024"
+            height="19"/>
+    </layout_panel>
     <layout_panel auto_resize="false"
-                  height="60"
+                  height="34"
                   mouse_opaque="false"
                   name="nav_bar_container"
                   tab_stop="false"
                   width="1024"
-                  user_resize="false" 
-                  visible="false">
-    </layout_panel>
-    <layout_panel auto_resize="true"
+                  visible="false"/>
+    <layout_panel auto_resize="true"  
                   follows="all"
                   height="500"
                   layout="topleft"
                   mouse_opaque="false"
                   tab_stop="false" 
-                  name="hud"
+                  name="world_panel"
                   width="1024">
-      <layout_stack border_size="0"
-                    follows="all"
-                    height="500"
-                    left="0"
-                    mouse_opaque="false"
-                    name="hud_stack"
-                    orientation="horizontal"
-                    top="0"
-                    width="1024">
-        <layout_panel auto_resize="true"
-               follows="all"
-               height="500"
-               layout="topleft"
-               mouse_opaque="false"
-               tab_stop="false"
-               name="non_side_tray_view"
-               user_resize="false"
-               width="500">
-          <view bottom="500"
-                follows="all"
-                height="500"
-                left="0"
-                mouse_opaque="false"
-                name="world_view_rect"
-                width="500"/>
-          <layout_stack border_size="0"
-                        bottom="500"
-                        follows="all"
-                        height="500"
-                        left="0"
-                        mouse_opaque="false"
-                        name="world_stack"
-                        orientation="vertical">
-            <layout_panel auto_resize="true"
-                          follows="all"
-                          height="500"
-                          layout="topleft"
-                          tab_stop="false"
-                          mouse_opaque="false"
-                          user_resize="false" 
-                          name="hud container"
-                          width="500">
-              <view top="0"
-                    follows="all"
-                    height="500"
-                    left="0"
-                    mouse_opaque="false"
-                    name="floater_snap_region"
-                    width="500"/>
-              <panel follows="left|top"
-                     height="19"
-                     left="0"
-                     mouse_opaque="false"
-                     name="topinfo_bar_container"
-                     tab_stop="false"
-                     top="0"
-                     visible="false"
-                     width="1024"/>
-              <panel follows="right|top|bottom"
-                     height="500"
-                     mouse_opaque="false"
-                     name="side_bar_tabs"
-                     right="500"
-                     tab_stop="false"
-                     top="0"
-                     width="32"/>
-              <panel bottom="500"
-                     follows="left|right|bottom"
-                     height="25"
-                     left="0"
-                     mouse_opaque="false"
-                     tab_stop="false"
-                     name="stand_stop_flying_container"
-                     visible="false"
-                     width="500"/>
-            </layout_panel>
-            <layout_panel auto_resize="false"
-                   min_height="33"
-                   height="33" 
-                   mouse_opaque="false"
-                   name="bottom_tray_container"
-                   visible="false"/>
-          </layout_stack>
-        </layout_panel>
-        <!-- side tray -->
-        <layout_panel auto_resize="false"
-                      follows="top|bottom"
-                      height="500"
-                      min_width="333"
-                      mouse_opaque="false"
-                      tab_stop="false"
-                      name="side_tray_container"
-                      user_resize="false"
-                      visible="false"
-                      width="333"/>
-      </layout_stack>
+      <view top="0"
+            follows="all"
+            height="500"
+            left="0"
+            mouse_opaque="false"
+            name="world_view_rect"
+            width="1024"/>
+      <panel follows="left|top|right"
+             height="19"
+             left="0"
+             mouse_opaque="false"
+             name="topinfo_bar_container"
+             tab_stop="false"
+             top="0"
+             visible="false"
+             width="1024"/>
       <panel top="0"
-         follows="all"
-         height="500"
-         mouse_opaque="false"
-         name="login_panel_holder"
-         width="1024"/>
-
+             left="0"
+             follows="all"
+             height="500"
+             mouse_opaque="false"
+             name="login_panel_holder"
+             width="1024"/>
       <debug_view follows="all"
                   left="0"
                   top="0"
@@ -142,45 +78,27 @@
                   height="500"
                   name="DebugView"
                   width="1024"/>
-
-      <panel follows="all"
+      <floater_view follows="all"
                     height="500"
                     left="0"
                     mouse_opaque="false"
-                    name="floater_view_holder"
+                    name="Floater View"
                     tab_group="-1"
                     tab_stop="false"
                     top="0"
-                    width="1024">
-        <floater_view follows="all"
-                      height="500"
-                      left="0"
-                      mouse_opaque="false"
-                      name="Floater View"
-                      tab_group="-1"
-                      tab_stop="false"
-                      top="0"
-                      width="1024"/>
-      </panel>
+                    width="1024"/>
+      <panel name="toolbar_view_holder"
+             follows="all"
+             layout="topleft"
+             height="500"
+             width="1024"
+             top="0"
+             left="0"
+             mouse_opaque="false"
+             tab_stop="false"/>
     </layout_panel>
   </layout_stack>
-  <panel mouse_opaque="false"
-         follows="left|right|top"
-         name="status_bar_container"
-         tab_stop="false"
-         height="19"
-         left="0" 
-         top="0" 
-         width="1024"
-         visible="false"/>
-  
-  <view mouse_opaque="false"
-        follows="all"
-        name="menu_bar_holder"
-        left="0"
-        top="0"
-        width="1024"
-        height="768"/>
+ 
   <panel top="0"
         follows="all"
         mouse_opaque="false"
diff --git a/indra/newview/skins/default/xui/en/menu_bottomtray.xml b/indra/newview/skins/default/xui/en/menu_bottomtray.xml
deleted file mode 100644
index 07dabe1909e0618954fe2d56aebe7b685c88d75d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/en/menu_bottomtray.xml
+++ /dev/null
@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu
- height="201"
- layout="topleft"
- left="100"
- mouse_opaque="false"
- name="hide_camera_move_controls_menu"
- top="624"
- visible="false"
- width="128">
-    <menu_item_check
-         label="Speak Button"
-         layout="topleft"
-         name="EnableVoiceChat">
-           <menu_item_check.on_click
-             function="ToggleControl"
-             parameter="EnableVoiceChat" /> 
-             <menu_item_check.on_check
-             function="CheckControl"
-             parameter="EnableVoiceChat" />
-    </menu_item_check>
-    <menu_item_check
-         label="Gesture button"
-         layout="topleft"
-         name="ShowGestureButton">
-           <menu_item_check.on_click
-             function="ToggleControl"
-             parameter="ShowGestureButton" /> 
-             <menu_item_check.on_check
-             function="CheckControl"
-             parameter="ShowGestureButton" />
-    </menu_item_check>
-    <menu_item_check
-         label="Move button"
-         layout="topleft"
-         name="ShowMoveButton">
-           <menu_item_check.on_click
-             function="ToggleControl"
-             parameter="ShowMoveButton" />
-             <menu_item_check.on_check
-             function="CheckControl"
-             parameter="ShowMoveButton" />
-    </menu_item_check>
-    <menu_item_check
-         label="View button"
-         layout="topleft"
-         name="ShowCameraButton">
-           <menu_item_check.on_click
-             function="ToggleControl"
-             parameter="ShowCameraButton" />
-             <menu_item_check.on_check
-             function="CheckControl"
-             parameter="ShowCameraButton" />
-    </menu_item_check>        
-    <menu_item_check
-         label="Snapshot button"
-         layout="topleft"
-         name="ShowSnapshotButton">
-           <menu_item_check.on_click
-             function="ToggleControl"
-             parameter="ShowSnapshotButton" />
-             <menu_item_check.on_check
-             function="CheckControl"
-             parameter="ShowSnapshotButton" />
-    </menu_item_check>        
-    <menu_item_check
-     label="Build button"
-     layout="topleft"
-     name="ShowBuildButton">
-        <menu_item_check.on_click
-         function="ToggleControl"
-         parameter="ShowBuildButton" />
-        <menu_item_check.on_check
-         function="CheckControl"
-         parameter="ShowBuildButton" />
-    </menu_item_check>
-    <menu_item_check
-     label="Search button"
-     layout="topleft"
-     name="ShowSearchButton">
-        <menu_item_check.on_click
-         function="ToggleControl"
-         parameter="ShowSearchButton" />
-        <menu_item_check.on_check
-         function="CheckControl"
-         parameter="ShowSearchButton" />
-    </menu_item_check>
-    <menu_item_check
-     label="Map button"
-     layout="topleft"
-     name="ShowWorldMapButton">
-        <menu_item_check.on_click
-         function="ToggleControl"
-         parameter="ShowWorldMapButton" />
-        <menu_item_check.on_check
-         function="CheckControl"
-         parameter="ShowWorldMapButton" />
-    </menu_item_check>
-    <menu_item_check
-     label="Mini-Map button"
-     layout="topleft"
-     name="ShowMiniMapButton">
-        <menu_item_check.on_click
-         function="ToggleControl"
-         parameter="ShowMiniMapButton" />
-        <menu_item_check.on_check
-         function="CheckControl"
-         parameter="ShowMiniMapButton" />
-    </menu_item_check>
-    <menu_item_separator
-     name="Separator" />
-    <menu_item_call
-     label="Cut"
-     name="NearbyChatBar_Cut">
-        <menu_item_call.on_click
-         function="NearbyChatBar.Action"
-         parameter="cut" />
-        <menu_item_call.on_enable
-         function="NearbyChatBar.EnableMenuItem"
-         parameter="can_cut" />
-    </menu_item_call>
-    <menu_item_call
-     label="Copy"
-     name="NearbyChatBar_Copy">
-        <menu_item_call.on_click
-         function="NearbyChatBar.Action"
-         parameter="copy" />
-        <menu_item_call.on_enable
-         function="NearbyChatBar.EnableMenuItem"
-         parameter="can_copy" />
-    </menu_item_call>
-    <menu_item_call
-     label="Paste"
-     name="NearbyChatBar_Paste">
-        <menu_item_call.on_click
-         function="NearbyChatBar.Action"
-         parameter="paste" />
-        <menu_item_call.on_enable
-         function="NearbyChatBar.EnableMenuItem"
-         parameter="can_paste" />
-    </menu_item_call>
-    <menu_item_call
-     label="Delete"
-     name="NearbyChatBar_Delete">
-        <menu_item_call.on_click
-         function="NearbyChatBar.Action"
-         parameter="delete" />
-        <menu_item_call.on_enable
-         function="NearbyChatBar.EnableMenuItem"
-         parameter="can_delete" />
-    </menu_item_call>
-    <menu_item_call
-     label="Select All"
-     name="NearbyChatBar_Select_All">
-        <menu_item_call.on_click
-         function="NearbyChatBar.Action"
-         parameter="select_all" />
-        <menu_item_call.on_enable
-         function="NearbyChatBar.EnableMenuItem"
-         parameter="can_select_all" />
-    </menu_item_call>
-
-</menu>
diff --git a/indra/newview/skins/default/xui/en/menu_edit.xml b/indra/newview/skins/default/xui/en/menu_edit.xml
index fab76c497cff0a6d0ca4614bb83f051780d48074..99061e089a9cff5136b5309758476430853bcc24 100644
--- a/indra/newview/skins/default/xui/en/menu_edit.xml
+++ b/indra/newview/skins/default/xui/en/menu_edit.xml
@@ -6,6 +6,7 @@
   <menu_item_call
    label="Undo"
    name="Undo"
+   allow_key_repeat="true"
    shortcut="control|Z">
     <menu_item_call.on_click
      function="Edit.Undo" />
@@ -15,6 +16,7 @@
   <menu_item_call
    label="Redo"
    name="Redo"
+   allow_key_repeat="true"
    shortcut="control|Y">
     <menu_item_call.on_click
      function="Edit.Redo" />
@@ -43,6 +45,7 @@
   <menu_item_call
    label="Paste"
    name="Paste"
+   allow_key_repeat="true"
    shortcut="control|V">
     <menu_item_call.on_click
      function="Edit.Paste" />
diff --git a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
index 3f38d734b951ac5c68961efb2182aa49d31c1c96..b517fd7957d03eff614ae5d34b097683ba58b970 100644
--- a/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/en/menu_hide_navbar.xml
@@ -9,7 +9,7 @@
  visible="false"
  width="128">
     <menu_item_check
-         label="Show Navigation Bar"
+         label="Show Navigation &amp; Favorites Bar"
          layout="topleft"
          name="ShowNavbarNavigationPanel">
            <on_click
@@ -19,17 +19,6 @@
              function="CheckControl"
              parameter="ShowNavbarNavigationPanel" />
     </menu_item_check>
-    <menu_item_check
-         label="Show Favorites Bar"
-         layout="topleft"
-         name="ShowNavbarFavoritesPanel">
-           <on_click
-             function="ToggleControl"
-             parameter="ShowNavbarFavoritesPanel" /> 
-             <on_check
-             function="CheckControl"
-             parameter="ShowNavbarFavoritesPanel" />
-    </menu_item_check>
     <menu_item_check
          label="Show Mini-Location Bar"
          layout="topleft"
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
index f818ebe2d7dabe49187173fb8c16e601e59b639d..63e154697bad3270cad1ae052f33750db5d877ac 100644
--- a/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_object_gear.xml
@@ -113,6 +113,15 @@
     <menu_item_call.on_visible
      function="Object.EnableMute" />
   </menu_item_call>
+  <menu_item_call
+   label="Unblock"
+   layout="topleft"
+   name="unblock">
+    <menu_item_call.on_click
+     function="Object.Mute" />
+    <menu_item_call.on_visible
+     function="Object.EnableUnmute" />
+  </menu_item_call>
   <menu_item_call
     label="Zoom In"
     layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml
index fb85e5278a00c72e6a3e78a95777ea7e1a22d543..ef4a1bc0618b275f25c7b219e85443acecb2b1c9 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory.xml
@@ -686,12 +686,12 @@
 		 parameter="copy_to_outbox" />
 	</menu_item_call>
 	<menu_item_call
-	 label="Move to Merchant Outbox"
+	 label="Send to Marketplace"
 	 layout="topleft"
-	 name="Merchant Move">
+	 name="Marketplace Send">
 		<menu_item_call.on_click
 		 function="Inventory.DoToSelected"
-		 parameter="move_to_outbox" />
+		 parameter="send_to_marketplace" />
 	</menu_item_call>
 	<menu_item_call
      label="--no options--"
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 0f42000ae792fa96ce2cb5cb79de7ebc24619c5e..e91f5af3d53cdf4db7f768b3887cc285a3ef804a 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
@@ -3,6 +3,7 @@
  layout="topleft"
  left="0"
  mouse_opaque="false"
+ can_tear_off="true"
  name="menu_inventory_add"
  visible="false">
             <menu
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index 4c4ff3e5c4585cae2e982656b24415dfaf5f3be2..101e104eabfd499389bd5149f71dea1badf0d30c 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -13,7 +13,7 @@
      tear_off="true"
      name="File">
         <menu_item_call
-         label="Preferences"
+         label="Preferences..."
          name="Preferences..."
          shortcut="control|P">
             <menu_item_call.on_click
@@ -93,14 +93,6 @@
              parameter="ui_preview" />
         </menu_item_call>
       <menu_item_separator />
-      <!-- Broken
-      <menu_item_call
-         label="Show Side Tray"
-         name="Show Side Tray">
-        <menu_item_call.on_click
-         function="Advanced.ShowSideTray" />
-      </menu_item_call>
-      -->
       <menu
        create_jump_keys="true"
        label="UI Tests"
@@ -175,13 +167,6 @@
              function="Floater.Show"
              parameter="message_critical" />
         </menu_item_call>
-        <menu_item_call
-         label="Media Browser Test"
-         name="Web Browser Test">
-          <menu_item_call.on_click
-           function="Advanced.WebBrowserTest"
-           parameter="http://join.secondlife.com/"/>
-        </menu_item_call>
       <menu_item_call
        label="Web Content Floater Debug Test"
        name="Web Content Floater Debug Test">
@@ -189,7 +174,58 @@
          function="Advanced.WebContentTest"
          parameter="http://google.com"/>
       </menu_item_call>
-      <menu_item_check
+      <menu
+       create_jump_keys="true"
+       label="Set Logging Level"
+       name="Set Logging Level"
+       tear_off="true">
+        <menu_item_check
+          label="Debug">
+          <menu_item_check.on_check
+            function="Develop.CheckLoggingLevel"
+            parameter="0" />
+          <menu_item_check.on_click
+           function="Develop.SetLoggingLevel"
+           parameter="0" />
+        </menu_item_check>
+        <menu_item_check
+          label="Info">
+          <menu_item_check.on_check
+            function="Develop.CheckLoggingLevel"
+            parameter="1" />
+          <menu_item_check.on_click
+           function="Develop.SetLoggingLevel"
+           parameter="1" />
+        </menu_item_check>
+        <menu_item_check
+          label="Warning">
+          <menu_item_check.on_check
+            function="Develop.CheckLoggingLevel"
+            parameter="2" />
+          <menu_item_check.on_click
+           function="Develop.SetLoggingLevel"
+           parameter="2" />
+        </menu_item_check>
+        <menu_item_check
+          label="Error">
+          <menu_item_check.on_check
+            function="Develop.CheckLoggingLevel"
+            parameter="3" />
+          <menu_item_check.on_click
+           function="Develop.SetLoggingLevel"
+           parameter="3" />
+        </menu_item_check>
+        <menu_item_check
+          label="None">
+          <menu_item_check.on_check
+            function="Develop.CheckLoggingLevel"
+            parameter="4" />
+          <menu_item_check.on_click
+           function="Develop.SetLoggingLevel"
+           parameter="4" />
+        </menu_item_check>
+      </menu>
+     <menu_item_check
         label="Show Grid Picker"
         name="Show Grid Picker"
         visible="false" 
diff --git a/indra/newview/skins/default/xui/en/menu_mode_change.xml b/indra/newview/skins/default/xui/en/menu_mode_change.xml
deleted file mode 100644
index 87d1a0a7a2482efd23ab9eda46cc0b36c6ba7584..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/en/menu_mode_change.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu
- name="Mode Change">
-  <menu_item_check
-   label="Basic"
-   name="BasicMode">
-    <on_check
-         function="CheckSessionSettings"
-         parameter="settings_minimal.xml" />
-    <on_click
-      function="ChangeMode"
-      parameter="basic"/>
-  </menu_item_check>
-    <menu_item_check
-     label="Advanced"
-     name="AdvancedMode">
-    <on_check
-     function="CheckSessionSettings"
-     parameter="" />
-    <on_click
-      function="ChangeMode"
-      parameter="advanced"/>
-    </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_sort.xml
index 29eeb93ac1509adecd912a65ae41664de3c426cf..b452f96e7a90ee28be446ba7a5df9680ead547ac 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_sort.xml
@@ -42,6 +42,6 @@
   </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="SideTray.ShowPanel" parameter="panel_block_list_sidetray" />
+    <menu_item_call.on_click function="People.Friends.ViewSort.Action" parameter="panel_block_list_sidetray" />
   </menu_item_call>
 </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
index 65bd2793b606b6b9366bb78a1844d1ac80d73708..614dd693c57a10c8f4f87d7bc6e38854df4fad30 100644
--- 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
@@ -52,6 +52,6 @@
   </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="SideTray.ShowPanel" userdata="panel_block_list_sidetray" />
+    <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_sort.xml
index 0634e3bd3b711f8c4de23df7c1f78b3d272845d5..485a5a658caadb97253b85bb79c1a01827dcae51 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_sort.xml
@@ -34,6 +34,6 @@
   </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="SideTray.ShowPanel" userdata="panel_block_list_sidetray" />
+    <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_toolbars.xml b/indra/newview/skins/default/xui/en/menu_toolbars.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fbe40a7244fcc47d89f297d99be9549b7283198c
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_toolbars.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<context_menu
+      layout="topleft"
+      name="Toolbars Popup"
+      visible="false">
+  <menu_item_call label="Remove this button"
+                  layout="topleft"
+                  name="Remove button">
+    <menu_item_call.on_click function="Toolbars.RemoveSelectedCommand" />
+  </menu_item_call>
+  <menu_item_separator layout="topleft" />
+  <menu_item_call label="Toolbar buttons..."
+                  layout="topleft"
+                  name="Choose Buttons">
+    <menu_item_call.on_click function="Floater.Show"
+                             parameter="toybox" />
+  </menu_item_call>
+  <menu_item_separator layout="topleft" />
+  <menu_item_check label="Icons and labels"
+                   layout="topleft"
+                   name="icons_with_text">
+    <on_click function="Toolbars.EnableSetting"
+              parameter="icons_with_text" />
+    <on_check function="Toolbars.CheckSetting"
+              parameter="icons_with_text" />
+  </menu_item_check>
+  <menu_item_check label="Icons only"
+                   layout="topleft"
+                   name="icons_only">
+    <on_click function="Toolbars.EnableSetting"
+              parameter="icons_only" />
+    <on_check function="Toolbars.CheckSetting"
+              parameter="icons_only" />
+  </menu_item_check>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 16f48f3a4eedf75a9108c5bdea946700cedaa3a6..cd8550b00db6a7223d04307cdafa1e2c885fe0bf 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -8,8 +8,163 @@
      label="Me"
      name="Me"
      tear_off="true">
+      <menu_item_call
+       label="Profile..."
+       name="Profile">
+        <menu_item_call.on_click
+         function="ShowAgentProfile"
+         parameter="agent" />
+      </menu_item_call>
+      <menu_item_call
+       label="Appearance..."
+       name="ChangeOutfit">
+        <menu_item_call.on_click
+         function="CustomizeAvatar" />
+        <menu_item_call.on_enable
+         function="Edit.EnableCustomizeAvatar" />
+      </menu_item_call>
+      <menu_item_call
+       label="Choose an avatar..."
+       name="Avatar Picker">
+        <menu_item_call.on_click
+         function="Floater.ToggleOrBringToFront"
+         parameter="avatar" />
+      </menu_item_call>
+      <menu_item_separator/>
+      <menu_item_check
+         label="Inventory..."
+         name="Inventory"
+         shortcut="control|I"
+		     visible="true">
+        <menu_item_check.on_check
+         function="Floater.Visible"
+         parameter="inventory" />
+        <menu_item_check.on_click
+         function="Floater.Toggle"
+         parameter="inventory" />
+      </menu_item_check>
+      <menu_item_call
+       label="New Inventory Window"
+       name="NewInventoryWindow"
+       shortcut="control|shift|I"
+       visible="false">
+        <menu_item_call.on_click
+         function="Inventory.NewWindow"
+         parameter="" />
+      </menu_item_call>
+      <menu_item_call
+       label="Places..."
+       name="Places">
+        <menu_item_call.on_click
+         function="Floater.ToggleOrBringToFront"
+         parameter="places" />
+      </menu_item_call>
+      <menu_item_call
+       label="Picks..."
+       name="Picks">
+        <menu_item_call.on_click
+         function="Floater.ToggleOrBringToFront"
+         parameter="picks" />
+      </menu_item_call>
+      <menu_item_separator/>
+      <menu_item_call
+       label="Camera Controls..."
+       name="Camera Controls">
+        <menu_item_call.on_click
+         function="Floater.ToggleOrBringToFront"
+         parameter="camera" />
+      </menu_item_call>
+      <menu
+       create_jump_keys="true"
+       label="Movement"
+       name="Movement"
+       tear_off="true">
         <menu_item_call
-         label="Preferences"
+         label="Sit Down"
+         layout="topleft"
+         shortcut="alt|shift|S"
+         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_check
+         label="Fly"
+         name="Fly"
+         shortcut="Home">
+          <menu_item_check.on_check
+           function="Agent.getFlying" />
+          <menu_item_check.on_click
+           function="Agent.toggleFlying" />
+          <menu_item_check.on_enable
+           function="Agent.enableFlying" />
+        </menu_item_check>
+        <menu_item_check
+         label="Always Run"
+         name="Always Run"
+         shortcut="control|R">
+          <menu_item_check.on_check
+           function="World.CheckAlwaysRun" />
+          <menu_item_check.on_click
+           function="World.AlwaysRun" />
+        </menu_item_check>
+        <menu_item_call
+         label="Stop Animating Me"
+         name="Stop Animating My Avatar">
+          <menu_item_call.on_click
+           function="Tools.StopAllAnimations" />
+        </menu_item_call>
+        <menu_item_call
+         label="Walk / run / fly..."
+         name="Walk / run / fly">
+          <menu_item_call.on_click
+           function="Floater.ToggleOrBringToFront"
+           parameter="moveview" />
+        </menu_item_call>
+      </menu>
+
+      <menu
+       create_jump_keys="true"
+       label="Status"
+       name="Status"
+       tear_off="true">
+        <menu_item_call
+         label="Away"
+         name="Set Away">
+          <menu_item_call.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_separator/>
+
+      <menu_item_call
+         label="Buy L$..."
+         name="Buy and Sell L$">
+        <menu_item_call.on_click
+         function="BuyCurrency" />
+      </menu_item_call>
+      <menu_item_call
+           label="Account dashboard..."
+           name="Manage My Account">
+        <menu_item_call.on_click
+         function="PromptShowURL"
+         name="ManageMyAccount_url"
+         parameter="WebLaunchJoinNow,http://secondlife.com/account/" />
+      </menu_item_call>
+
+      <menu_item_separator/>
+
+      <menu_item_call
+         label="Preferences..."
          name="Preferences"
          shortcut="control|P">
             <menu_item_call.on_click
@@ -17,178 +172,96 @@
              parameter="preferences" />
         </menu_item_call>
          <menu_item_call
-             label="My Dashboard"
-             name="Manage My Account">
-                <menu_item_call.on_click
-                 function="PromptShowURL"
-                 name="ManageMyAccount_url"
-                 parameter="WebLaunchJoinNow,http://secondlife.com/account/" />
-      </menu_item_call>
-        <menu_item_call
-         label="Buy L$"
-         name="Buy and Sell L$">
+         label="Toolbar buttons..."
+         name="Toolbars"
+         shortcut="control|T">
             <menu_item_call.on_click
-             function="BuyCurrency" />
+             function="Floater.Toggle"
+             parameter="toybox" />
         </menu_item_call>
+         <menu_item_call
+         label="Hide all controls"
+         name="Hide UI"
+         shortcut="control|shift|U">
+           <menu_item_call.on_click
+            function="View.ToggleUI" />
+         </menu_item_call>
 
         <menu_item_separator/>
 
         <menu_item_call
-         label="My Profile"
-         name="Profile">
-            <menu_item_call.on_click
-             function="ShowAgentProfile"
-             parameter="agent" />
-        </menu_item_call>
-        <menu_item_call
-         label="My Appearance"
-         name="ChangeOutfit">
+         label="Exit [APP_NAME]"
+         name="Quit"
+         shortcut="control|Q">
             <menu_item_call.on_click
-             function="CustomizeAvatar" />
-            <menu_item_call.on_enable
-             function="Edit.EnableCustomizeAvatar" />
+             function="File.Quit" />
         </menu_item_call>
+    </menu>
+    <menu
+     create_jump_keys="true"
+     label="Communicate"
+     name="Communicate"
+     tear_off="true">
         <menu_item_check
-         label="My Inventory"
-         name="Inventory"
-         shortcut="control|shift|I"
-		 visible="false">
+         label="Chat..."
+         name="Nearby Chat"
+         shortcut="control|H"
+         use_mac_ctrl="true">
             <menu_item_check.on_check
              function="Floater.Visible"
-             parameter="inventory" />
+             parameter="chat_bar" />
             <menu_item_check.on_click
              function="Floater.Toggle"
-             parameter="inventory" />
+             parameter="chat_bar" />
         </menu_item_check>
         <menu_item_check
-         label="My Inventory"
-         name="ShowSidetrayInventory"
-         shortcut="control|I"
-		 visible="true">
+         label="Speak"
+         name="Speak">
             <menu_item_check.on_check
-             function="SidetrayPanelVisible"
-             parameter="sidepanel_inventory" />
+             function="Agent.IsMicrophoneOn"
+             parameter="speak" />
+            <menu_item_check.on_enable
+             function="Agent.IsActionAllowed"
+             parameter="speak" />
             <menu_item_check.on_click
-             function="ShowSidetrayPanel"
-             parameter="sidepanel_inventory" />
+             function="Agent.ToggleMicrophone"
+             parameter="speak" />
         </menu_item_check>
         <menu_item_check
-         label="My Gestures"
-         name="Gestures"
-         shortcut="control|G">
+         label="Voice settings..."
+         name="Nearby Voice">
             <menu_item_check.on_check
              function="Floater.Visible"
-             parameter="gestures" />
+             parameter="voice_controls" />
             <menu_item_check.on_click
              function="Floater.Toggle"
-             parameter="gestures" />
+             parameter="voice_controls" />
         </menu_item_check>
         <menu_item_check
-         label="My Voice"
+         label="Voice morphing..."
          name="ShowVoice"
          visibility_control="VoiceMorphingEnabled">
             <menu_item_check.on_check
              function="Floater.Visible"
-             Parameter="voice_effect" />
+             parameter="voice_effect" />
             <menu_item_check.on_click
              function="Floater.Toggle"
              parameter="voice_effect" />
         </menu_item_check>
-		<menu
-		 create_jump_keys="true"
-		 label="Movement"
-		 name="Movement"
-		 tear_off="true">
-            <menu_item_call
-             label="Sit Down"
-             layout="topleft"
-		     shortcut="alt|shift|S"
-             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_check
-             label="Fly"
-             name="Fly"
-             shortcut="Home">
-                <menu_item_check.on_check
-                 function="Agent.getFlying" />
-                <menu_item_check.on_click
-                 function="Agent.toggleFlying" />
-                <menu_item_check.on_enable
-                 function="Agent.enableFlying" />
-            </menu_item_check>
-            <menu_item_check
-             label="Always Run"
-             name="Always Run"
-             shortcut="control|R">
-                <menu_item_check.on_check
-                 function="World.CheckAlwaysRun" />
-                <menu_item_check.on_click
-                 function="World.AlwaysRun" />
-            </menu_item_check>
-            <menu_item_call
-             label="Stop Animating Me"
-             name="Stop Animating My Avatar">
-                 <menu_item_call.on_click
-                  function="Tools.StopAllAnimations" />
-            </menu_item_call>
-		</menu>
-        <menu
-         create_jump_keys="true"
-         label="My Status"
-         name="Status"
-         tear_off="true">
-            <menu_item_call
-             label="Away"
-             name="Set Away">
-                <menu_item_call.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_call
-         label="Request Admin Status"
-         name="Request Admin Options"
-         shortcut="control|alt|G"
-		 visible="false">
-            <menu_item_call.on_click
-             function="Advanced.RequestAdminStatus" />
-        </menu_item_call>
-        <menu_item_call
-         label="Leave Admin Status"
-         name="Leave Admin Options"
-         shortcut="control|alt|shift|G"
-		 visible="false">
-            <menu_item_call.on_click
-             function="Advanced.LeaveAdminStatus" />
-        </menu_item_call>
-
+        <menu_item_check
+         label="Gestures..."
+         name="Gestures"
+         shortcut="control|G">
+            <menu_item_check.on_check
+             function="Floater.Visible"
+             parameter="gestures" />
+            <menu_item_check.on_click
+             function="Floater.Toggle"
+             parameter="gestures" />
+        </menu_item_check>
         <menu_item_separator/>
-
-        <menu_item_call
-         label="Exit [APP_NAME]"
-         name="Quit"
-         shortcut="control|Q">
-            <menu_item_call.on_click
-             function="File.Quit" />
-        </menu_item_call>
-    </menu>
-    <menu
-     create_jump_keys="true"
-     label="Communicate"
-     name="Communicate"
-     tear_off="true">
         <menu_item_call
-         label="My Friends"
+         label="Friends"
          name="My Friends"
          shortcut="control|shift|F">
             <menu_item_call.on_click
@@ -196,71 +269,44 @@
              parameter="friends_panel" />
             </menu_item_call>
         <menu_item_call
-         label="My Groups"
+         label="Groups"
          name="My Groups"
          shortcut="control|shift|G">
             <menu_item_call.on_click
              function="SideTray.PanelPeopleTab"
              parameter="groups_panel" />
         </menu_item_call>
-
-        <menu_item_separator/>
-
-        <!--menu_item_call
-         label="Chat"
-         name="Chat">
-            <menu_item_call.on_click
-             function="World.Chat" />
-        </menu_item_call-->
-        <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="nearby_chat" />
-            <menu_item_check.on_click
-             function="Floater.Toggle"
-             parameter="nearby_chat" />
-        </menu_item_check>
         <menu_item_call
-         label="Nearby People"
+         label="Nearby people"
          name="Active Speakers"
          shortcut="control|shift|A">
             <menu_item_call.on_click
-             function="SideTray.PanelPeopleTab"
-             parameter="nearby_panel" />
-            </menu_item_call>
-        <menu_item_check
-         label="Nearby Voice"
-         name="Nearby Voice">
-            <menu_item_check.on_check
-             function="Floater.Visible"
-             parameter="voice_controls" />
-            <menu_item_check.on_click
-             function="Floater.Toggle"
-             parameter="voice_controls" />
-        </menu_item_check>
+              function="SideTray.PanelPeopleTab"
+              parameter="nearby_panel" />
+        </menu_item_call>
     </menu>
     <menu
      create_jump_keys="true"
      label="World"
      name="World"
      tear_off="true">
-            <menu_item_check
-         label="Mini-Map"
-         name="Mini-Map"
-         shortcut="control|shift|M">
-            <menu_item_check.on_check
-             function="Floater.Visible"
-             parameter="mini_map" />
-            <menu_item_check.on_click
-             function="Floater.Toggle"
-             parameter="mini_map" />
-        </menu_item_check>
-         <menu_item_check
-         label="World Map"
+        <menu_item_call
+         label="Landmark This Place"
+         name="Create Landmark Here">
+            <menu_item_call.on_click
+             function="World.CreateLandmark" />
+            <menu_item_call.on_enable
+             function="World.EnableCreateLandmark" />
+        </menu_item_call>
+        <menu_item_call
+         label="Destinations..."
+         name="Destinations">
+            <menu_item_call.on_click
+             function="Floater.ToggleOrBringToFront"
+             parameter="destinations" />
+        </menu_item_call>
+        <menu_item_check
+         label="World map"
          name="World Map"
          shortcut="control|M"
          use_mac_ctrl="true">
@@ -270,6 +316,17 @@
             <menu_item_check.on_click
              function="Floater.Toggle"
              parameter="world_map" />
+        </menu_item_check>
+            <menu_item_check
+         label="Mini-map"
+         name="Mini-Map"
+         shortcut="control|shift|M">
+            <menu_item_check.on_check
+             function="Floater.Visible"
+             parameter="mini_map" />
+            <menu_item_check.on_click
+             function="Floater.Toggle"
+             parameter="mini_map" />
         </menu_item_check>
         <menu_item_check
         label="Search"
@@ -282,6 +339,25 @@
              function="Floater.Toggle"
              parameter="search" />
             </menu_item_check>
+        <menu_item_separator/>
+        <menu_item_call
+         label="Teleport home"
+         name="Teleport Home"
+         shortcut="control|shift|H">
+        <menu_item_call.on_click
+         function="World.TeleportHome" />
+        <menu_item_call.on_enable
+         function="World.EnableTeleportHome" />
+        </menu_item_call>
+            <menu_item_call
+             label="Set home to here"
+             name="Set Home to Here">
+                <menu_item_call.on_click
+                 function="World.SetHomeLocation" />
+                <menu_item_call.on_enable
+                 function="World.EnableSetHomeLocation" />
+            </menu_item_call>
+        <menu_item_separator/>
         <menu_item_call
          label="Snapshot"
          name="Take Snapshot"
@@ -290,82 +366,51 @@
              function="Floater.Show"
              parameter="snapshot" />
         </menu_item_call>
-      <menu_item_call
-             label="Landmark This Place"
-             name="Create Landmark Here">
-                <menu_item_call.on_click
-                 function="World.CreateLandmark" />
-                <menu_item_call.on_enable
-                 function="World.EnableCreateLandmark" />
-            </menu_item_call>
-      <menu
-           create_jump_keys="true"
-           label="Place Profile"
-           name="Land"
-           tear_off="true">
+        <menu_item_separator/>
         <menu_item_call
-         label="Place Profile"
+         label="Place profile"
          layout="topleft"
          name="Place Profile">
             <menu_item_call.on_click
              function="World.PlaceProfile" />
         </menu_item_call>
         <menu_item_call
-         label="About Land"
+         label="About land"
          name="About Land">
             <menu_item_call.on_click
              function="Floater.Show"
              parameter="about_land" />
         </menu_item_call>
         <menu_item_call
-         label="Region/Estate"
+         label="Region / Estate"
          name="Region/Estate">
             <menu_item_call.on_click
              function="Floater.Show"
              parameter="region_info" />
         </menu_item_call>
-        </menu>
+        <menu_item_call
+         label="My land holdings..."
+         name="My Land">
+            <menu_item_call.on_click
+             function="Floater.Show"
+             parameter="land_holdings" />
+        </menu_item_call>
+        <menu_item_call
+         label="Buy this land"
+         name="Buy Land">
+            <menu_item_call.on_click
+             function="Land.Buy" />
+            <menu_item_call.on_enable
+             function="World.EnableBuyLand" />
+            </menu_item_call>
 
         <menu_item_separator/>
 
-        <menu_item_call
-             label="Buy This Land"
-             name="Buy Land">
-                <menu_item_call.on_click
-                 function="Land.Buy" />
-                <menu_item_call.on_enable
-                 function="World.EnableBuyLand" />
-            </menu_item_call>
-        <menu_item_call
-             label="My Land"
-             name="My Land">
-                <menu_item_call.on_click
-                 function="Floater.Show"
-                 parameter="land_holdings" />
-        </menu_item_call>
         <menu
            create_jump_keys="true"
            label="Show"
            name="LandShow"
            tear_off="true">
-         <menu_item_check
-         label="Move Controls"
-         name="Movement Controls">
-            <menu_item_check.on_check
-             function="Floater.Visible"
-             parameter="moveview" />
-            <menu_item_check.on_click
-             function="World.Toggle.MovementControls" />
-        </menu_item_check>
-        <menu_item_check
-         label="View Controls"
-         name="Camera Controls">
-            <menu_item_check.on_check
-             function="Floater.Visible"
-             parameter="camera" />
-            <menu_item_check.on_click
-             function="World.Toggle.CameraControls" />
-        </menu_item_check>
           <menu_item_check
              label="Ban Lines"
              name="Ban Lines">
@@ -438,24 +483,6 @@
         </menu>
 
         <menu_item_separator/>
-
-	    <menu_item_call
-	     label="Teleport Home"
-	     name="Teleport Home"
-	     shortcut="control|shift|H">
-		<menu_item_call.on_click
-		 function="World.TeleportHome" />
-		<menu_item_call.on_enable
-		 function="World.EnableTeleportHome" />
-	    </menu_item_call>
-            <menu_item_call
-             label="Set Home to Here"
-             name="Set Home to Here">
-                <menu_item_call.on_click
-                 function="World.SetHomeLocation" />
-                <menu_item_call.on_enable
-                 function="World.EnableSetHomeLocation" />
-            </menu_item_call>
     <!--    <menu_item_check
          label="Show Navigation Bar"
          name="ShowNavbarNavigationPanel">
@@ -478,12 +505,10 @@
         </menu_item_check>
         <menu_item_separator/>-->
 
-        <menu_item_separator/>
-
         <menu
          create_jump_keys="true"
          label="Sun"
-         name="Environment Settings"
+         name="Sun"
          tear_off="true">
             <menu_item_call
              label="Sunrise"
@@ -515,18 +540,26 @@
                  function="World.EnvSettings"
                  parameter="midnight" />
             </menu_item_call>
+            <menu_item_separator/>
+            <menu_item_call
+             label="Use Region Settings"
+             name="Use Region Settings">
+                <menu_item_call.on_click
+                 function="World.EnvSettings"
+                 parameter="region" />
+            </menu_item_call>
         </menu>
 	    
    
 	    <menu
 	     create_jump_keys="true"
-	     label="Enviroment Editor"
-	     name="Enviroment Editor"
+	     label="Environment Editor"
+	     name="Environment Editor"
 	     tear_off="true">
 	     	
 	     	<menu_item_call
-	     	 label="Enviroment Settings..."
-	     	 name="Enviroment Settings">
+	     	 label="Environment Settings..."
+	     	 name="Environment Settings">
 	     	 	<menu_item_call.on_click
 	     	 	 function="World.EnvSettings"
                  parameter="editor"/>
@@ -1104,6 +1137,7 @@
          enabled="false"
          label="Undo"
          name="Undo"
+         allow_key_repeat="true"
          shortcut="control|Z">
             <on_click
              function="Edit.Undo"
@@ -1115,6 +1149,7 @@
          enabled="false"
          label="Redo"
          name="Redo"
+         allow_key_repeat="true"
          shortcut="control|Y">
             <on_click
              function="Edit.Redo"
@@ -1128,6 +1163,13 @@
      label="Help"
      name="Help"
      tear_off="true">
+        <menu_item_call
+         label="How to..."
+         name="How To">
+            <menu_item_call.on_click
+             function="Help.ToggleHowTo"
+             parameter="" />
+        </menu_item_call>
         <menu_item_call
          label="[SECOND_LIFE] Help"
          name="Second Life Help"
@@ -1136,14 +1178,6 @@
              function="ShowHelp"
              parameter="f1_help" />
         </menu_item_call>
-        <menu_item_check
-         label="Enable Hints"
-         name="Enable Hints">
-          <on_check
-            control="EnableUIHints"/>
-          <on_click
-            function="ToggleUIHints"/>
-        </menu_item_check>
 <!--        <menu_item_call
          label="Tutorial"
          name="Tutorial">
@@ -1401,7 +1435,7 @@
          tear_off="true">
             <menu_item_check
              label="Simple"
-             name="Simple"
+             name="Rendering Type Simple"
              shortcut="control|alt|shift|1">
                 <menu_item_check.on_check
                  function="Advanced.CheckRenderType"
@@ -1412,7 +1446,7 @@
             </menu_item_check>
             <menu_item_check
              label="Alpha"
-             name="Alpha"
+             name="Rendering Type Alpha"
              shortcut="control|alt|shift|2">
                 <menu_item_check.on_check
                  function="Advanced.CheckRenderType"
@@ -1423,7 +1457,7 @@
             </menu_item_check>
             <menu_item_check
              label="Tree"
-             name="Tree"
+             name="Rendering Type Tree"
              shortcut="control|alt|shift|3">
                 <menu_item_check.on_check
                  function="Advanced.CheckRenderType"
@@ -1434,7 +1468,7 @@
             </menu_item_check>
             <menu_item_check
              label="Avatars"
-             name="Character"
+             name="Rendering Type Character"
              shortcut="control|alt|shift|4">
                 <menu_item_check.on_check
                  function="Advanced.CheckRenderType"
@@ -1445,7 +1479,7 @@
             </menu_item_check>
             <menu_item_check
              label="Surface Patch"
-             name="Surface Patch"
+             name="Rendering Type Surface Patch"
              shortcut="control|alt|shift|5">
                 <menu_item_check.on_check
                  function="Advanced.CheckRenderType"
@@ -1456,7 +1490,7 @@
             </menu_item_check>
             <menu_item_check
              label="Sky"
-             name="Sky"
+             name="Rendering Type Sky"
              shortcut="control|alt|shift|6">
                 <menu_item_check.on_check
                  function="Advanced.CheckRenderType"
@@ -1467,7 +1501,7 @@
             </menu_item_check>
             <menu_item_check
              label="Water"
-             name="Water"
+             name="Rendering Type Water"
              shortcut="control|alt|shift|7">
                 <menu_item_check.on_check
                  function="Advanced.CheckRenderType"
@@ -1478,7 +1512,7 @@
             </menu_item_check>
             <menu_item_check
              label="Ground"
-             name="Ground"
+             name="Rendering Type Ground"
              shortcut="control|alt|shift|8">
                 <menu_item_check.on_check
                  function="Advanced.CheckRenderType"
@@ -1489,7 +1523,7 @@
             </menu_item_check>
             <menu_item_check
              label="Volume"
-             name="Volume"
+             name="Rendering Type Volume"
              shortcut="control|alt|shift|9">
                 <menu_item_check.on_check
                  function="Advanced.CheckRenderType"
@@ -1500,7 +1534,7 @@
             </menu_item_check>
             <menu_item_check
              label="Grass"
-             name="Grass"
+             name="Rendering Type Grass"
              shortcut="control|alt|shift|0">
                 <menu_item_check.on_check
                  function="Advanced.CheckRenderType"
@@ -1511,7 +1545,7 @@
             </menu_item_check>
             <menu_item_check
              label="Clouds"
-             name="Clouds"
+             name="Rendering Type Clouds"
              shortcut="control|alt|shift|-">
                 <menu_item_check.on_check
                  function="Advanced.CheckRenderType"
@@ -1522,7 +1556,7 @@
             </menu_item_check>
             <menu_item_check
              label="Particles"
-             name="Particles"
+             name="Rendering Type Particles"
              shortcut="control|alt|shift|=">
                 <menu_item_check.on_check
                  function="Advanced.CheckRenderType"
@@ -1533,7 +1567,7 @@
             </menu_item_check>
             <menu_item_check
              label="Bump"
-             name="Bump"
+             name="Rendering Type Bump"
              shortcut="control|alt|shift|\">
                 <menu_item_check.on_check
                  function="Advanced.CheckRenderType"
@@ -1550,7 +1584,7 @@
          tear_off="true">
             <menu_item_check
              label="UI"
-             name="UI"
+             name="ToggleUI"
              shortcut="control|alt|F1">
                 <menu_item_check.on_check
                  function="Advanced.CheckFeature"
@@ -1664,36 +1698,6 @@
              function="ToggleControl"
              parameter="MouseSmooth" />
         </menu_item_check>
-
-        <menu_item_separator/>
-
-        <menu
-         create_jump_keys="true"
-         label="Shortcuts"
-         name="Shortcuts"
-         tear_off="true"
-         visible="false">
-          <menu_item_call
-             label="Image (L$[COST])..."
-             name="Upload Image"
-             shortcut="control|U">
-            <menu_item_call.on_click
-               function="File.UploadImage"
-               parameter="" />
-            <menu_item_call.on_enable
-               function="File.EnableUpload" />
-            </menu_item_call>
-            <menu_item_check
-               label="Search"
-               name="Search"
-               shortcut="control|F">
-            <menu_item_check.on_check
-             function="Floater.Visible"
-             parameter="search" />
-            <menu_item_check.on_click
-             function="Floater.Toggle"
-             parameter="search" />
-            </menu_item_check>
             <menu_item_call
              enabled="false"
              label="Release Keys"
@@ -1705,12 +1709,14 @@
                  function="Tools.EnableReleaseKeys"
                  parameter="" />
             </menu_item_call>
-            <menu_item_call
-             label="Set UI Size to Default"
-             name="Set UI Size to Default">
-                <menu_item_call.on_click
-                 function="View.DefaultUISize" />
-            </menu_item_call>
+        <menu_item_separator/>
+
+        <menu
+         create_jump_keys="true"
+         label="Shortcuts"
+         name="Shortcuts"
+         tear_off="true"
+         visible="false">
             <!-- This second, alternative shortcut for Show Advanced Menu is for backward compatibility.  The main shortcut has been changed so it's Linux-friendly, where the old shortcut is typically eaten by the window manager. -->
             <menu_item_check
                label="Show Advanced Menu - legacy shortcut"
@@ -1797,55 +1803,6 @@
 
             <menu_item_separator/>
 
-            <menu
-             create_jump_keys="true"
-             label="Select Build Tool"
-             name="Select Tool"
-             tear_off="true">
-                <menu_item_call
-                 label="Focus Tool"
-                 name="Focus"
-                 shortcut="control|1">
-                    <menu_item_call.on_click
-                     function="Tools.SelectTool"
-                     parameter="focus" />
-                </menu_item_call>
-                <menu_item_call
-                 label="Move Tool"
-                 name="Move"
-                 shortcut="control|2">
-                    <menu_item_call.on_click
-                     function="Tools.SelectTool"
-                     parameter="move" />
-                </menu_item_call>
-                <menu_item_call
-                 label="Edit Tool"
-                 name="Edit"
-                 shortcut="control|3">
-                    <menu_item_call.on_click
-                     function="Tools.SelectTool"
-                     parameter="edit" />
-                </menu_item_call>
-                <menu_item_call
-                 label="Create Tool"
-                 name="Create"
-                 shortcut="control|4">
-                    <menu_item_call.on_click
-                     function="Tools.SelectTool"
-                     parameter="create" />
-                </menu_item_call>
-                <menu_item_call
-                 label="Land Tool"
-                 name="Land"
-                 shortcut="control|5">
-                    <menu_item_call.on_click
-                     function="Tools.SelectTool"
-                     parameter="land" />
-                </menu_item_call>
-            </menu>
-
-            <menu_item_separator/>
-
             <menu_item_call
              label="Zoom In"
              name="Zoom In"
@@ -2434,6 +2391,16 @@
           <menu_item_check.on_click
            function="Advanced.ToggleInfoDisplay"
            parameter="raycast" />
+        </menu_item_check>
+		<menu_item_check
+         label="Wind Vectors"
+         name="Wind Vectors">
+          <menu_item_check.on_check
+           function="Advanced.CheckInfoDisplay"
+           parameter="wind vectors" />
+          <menu_item_check.on_click
+           function="Advanced.ToggleInfoDisplay"
+           parameter="wind vectors" />
         </menu_item_check>
         <menu_item_check
          label="Render Complexity"
@@ -2444,6 +2411,16 @@
           <menu_item_check.on_click
            function="Advanced.ToggleInfoDisplay"
            parameter="rendercomplexity" />
+        </menu_item_check>
+        <menu_item_check
+         label="Attachment Bytes"
+         name="attachment bytes">
+          <menu_item_check.on_check
+           function="Advanced.CheckInfoDisplay"
+           parameter="attachment bytes" />
+          <menu_item_check.on_click
+           function="Advanced.ToggleInfoDisplay"
+           parameter="attachment bytes" />
         </menu_item_check>
 		<menu_item_check
          label="Sculpt"
@@ -2549,19 +2526,6 @@
             <menu_item_check.on_enable
                  function="Advanced.EnableRenderDeferredOptions" />
           </menu_item_check>
-          <menu_item_check
-                   label="   Global Illumination (experimental)"
-                   name="Global Illumination">
-            <menu_item_check.on_check
-             function="CheckControl"
-             parameter="RenderDeferredGI" />
-            <menu_item_check.on_click
-             function="ToggleControl"
-             parameter="RenderDeferredGI" />
-            <menu_item_check.on_enable
-                 function="Advanced.EnableRenderDeferredOptions" />
-          </menu_item_check>
-
           <menu_item_separator />
 
           <menu_item_check
@@ -2811,7 +2775,7 @@
         <menu
          create_jump_keys="true"
          label="World"
-         name="World"
+         name="DevelopWorld"
          tear_off="true">
             <menu_item_check
              label="Sim Sun Override"
@@ -2823,16 +2787,6 @@
                  function="ToggleControl"
                  parameter="SkyOverrideSimSunPosition" />
             </menu_item_check>
-            <menu_item_check
-             label="Cheesy Beacon"
-             name="Cheesy Beacon">
-                <menu_item_check.on_check
-                 function="CheckControl"
-                 parameter="CheesyBeacon" />
-                <menu_item_check.on_click
-                 function="ToggleControl"
-                 parameter="CheesyBeacon" />
-            </menu_item_check>
             <menu_item_check
              label="Fixed Weather"
              name="Fixed Weather">
@@ -3057,7 +3011,7 @@
              tear_off="true">
                 <menu_item_call
                  label="Iris"
-                 name="Iris">
+                 name="Grab Iris">
                     <menu_item_call.on_click
                      function="Advanced.GrabBakedTexture"
                      parameter="iris" />
@@ -3067,7 +3021,7 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Head"
-                 name="Head">
+                 name="Grab Head">
                     <menu_item_call.on_click
                      function="Advanced.GrabBakedTexture"
                      parameter="head" />
@@ -3077,7 +3031,7 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Upper Body"
-                 name="Upper Body">
+                 name="Grab Upper Body">
                     <menu_item_call.on_click
                      function="Advanced.GrabBakedTexture"
                      parameter="upper" />
@@ -3087,7 +3041,7 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Lower Body"
-                 name="Lower Body">
+                 name="Grab Lower Body">
                     <menu_item_call.on_click
                      function="Advanced.GrabBakedTexture"
                      parameter="lower" />
@@ -3097,7 +3051,7 @@
                 </menu_item_call>
                 <menu_item_call
                  label="Skirt"
-                 name="Skirt">
+                 name="Grab Skirt">
                     <menu_item_call.on_click
                      function="Advanced.GrabBakedTexture"
                      parameter="skirt" />
@@ -3327,6 +3281,57 @@
              function="ToggleControl"
              parameter="ShowConsoleWindow" />
         </menu_item_check>
+        <menu
+         create_jump_keys="true"
+         label="Set Logging Level"
+         name="Set Logging Level"
+         tear_off="true">
+          <menu_item_check
+            label="Debug">
+            <menu_item_check.on_check
+              function="Develop.CheckLoggingLevel"
+              parameter="0" />
+            <menu_item_check.on_click
+             function="Develop.SetLoggingLevel"
+             parameter="0" />
+          </menu_item_check>
+          <menu_item_check
+            label="Info">
+            <menu_item_check.on_check
+              function="Develop.CheckLoggingLevel"
+              parameter="1" />
+            <menu_item_check.on_click
+             function="Develop.SetLoggingLevel"
+             parameter="1" />
+          </menu_item_check>
+          <menu_item_check
+            label="Warning">
+            <menu_item_check.on_check
+              function="Develop.CheckLoggingLevel"
+              parameter="2" />
+            <menu_item_check.on_click
+             function="Develop.SetLoggingLevel"
+             parameter="2" />
+          </menu_item_check>
+          <menu_item_check
+            label="Error">
+            <menu_item_check.on_check
+              function="Develop.CheckLoggingLevel"
+              parameter="3" />
+            <menu_item_check.on_click
+             function="Develop.SetLoggingLevel"
+             parameter="3" />
+          </menu_item_check>
+          <menu_item_check
+            label="None">
+            <menu_item_check.on_check
+              function="Develop.CheckLoggingLevel"
+              parameter="4" />
+            <menu_item_check.on_click
+             function="Develop.SetLoggingLevel"
+             parameter="4" />
+          </menu_item_check>
+       </menu>
 
         <menu_item_separator/>
 
@@ -3365,10 +3370,11 @@
         <menu
          create_jump_keys="true"
          label="Object"
+         name="AdminObject"
          tear_off="true">
             <menu_item_call
              label="Take Copy"
-             name="Take Copy"
+             name="Admin Take Copy"
              shortcut="control|alt|shift|O">
                 <menu_item_call.on_click
                  function="Admin.ForceTakeCopy" />
@@ -3637,7 +3643,7 @@
         <menu
          create_jump_keys="true"
          label="Help"
-         name="Help"
+         name="DeprecatedHelp"
          tear_off="true">
             <menu_item_call
              label="Official Linden Blog"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 64438fe61410f53b1fbdbda96e30922bbf73b982..af75d493532ec8ee0ed67e89eb4d59e6bd63d5c8 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -203,34 +203,80 @@ Save changes to current clothing/body part?
    icon="alertmodal.tga"
      name="ConfirmNoCopyToOutbox"
      type="alertmodal">
-        You don't have permission to copy this item to the Marketplace Outbox. Are you sure you want to move the following item?
-        [ITEM_NAME]
+You don't have permission to copy one or more of these items to the Merchant Outbox.  You can move them or leave them behind.
+    <usetemplate
+     name="okcancelbuttons"
+     notext="Don't move item(s)"
+     yestext="Move item(s)"/>
+  </notification>
+
+  <notification
+   icon="OutboxStatus_Success"
+   name="OutboxFolderCreated"
+   type="outbox">
+    <unique/>
+A new folder has been created for each item you have transferred into the top level of your Merchant Outbox.
+
+    <usetemplate
+     ignoretext="A new folder was created in the Merchant Outbox"
+     name="okignore"
+     yestext="OK"/>
+  </notification>
+
+  <notification
+   icon="OutboxStatus_Success"
+   name="OutboxImportComplete"
+   type="outbox">
+Success
+
+All folders were successfully sent to the Marketplace.
+
         <usetemplate
-         name="okcancelbuttons"
-         notext="No"
-         yestext="Yes"/>
-    </notification>
+         ignoretext="All folders sent to the Marketplace"
+         name="okignore"
+         yestext="OK"/>
+  </notification>
 
   <notification
-   icon="alertmodal.tga"
-   name="OutboxUploadComplete"
-   type="alertmodal">
-Marketplace upload complete.
+   icon="OutboxStatus_Warning"
+   name="OutboxImportHadErrors"
+   type="outbox">
+Some folders did not transfer
+
+Errors occurred when some folders were sent to the Marketplace.  Those folders are still in your Merchant Outbox.
+
+See the [[MARKETPLACE_IMPORTS_URL] error log] for more information.
+
         <usetemplate
          name="okbutton"
-         yestext="Hooray!"/>
+         yestext="OK"/>
   </notification>
 
   <notification
-   icon="alertmodal.tga"
-   name="OutboxUploadHadErrors"
-   type="alertmodal">
-Marketplace upload completed with errors!  Please correct the problems in your outbox and retry.  Thanks.
+   icon="OutboxStatus_Error"
+   name="OutboxImportFailed"
+   type="outbox">
+Transfer failed
+
+No folders were sent to the Marketplace because of a system or network error.  Try again later.
+
         <usetemplate
          name="okbutton"
-         yestext="Boo!"/>
+         yestext="OK"/>
   </notification>
 
+  <notification
+   icon="OutboxStatus_Error"
+   name="OutboxInitFailed"
+   type="outbox">
+Marketplace initialization failed
+
+Initialization with the Marketplace failed because of a system or network error.  Try again later.
+
+        <usetemplate
+         name="okbutton"
+         yestext="OK"/>
+  </notification>
     
 
     <notification
@@ -2297,8 +2343,8 @@ Would you be my friend?
  icon="alertmodal.tga"
  label="Save Outfit"
  name="SaveOutfitAs"
- type="alertmodal"
- unique="true">
+ type="alertmodal">
+    <unique/>
     Save what I'm wearing as a new Outfit:
     <tag>confirm</tag>
     <form name="form">
@@ -2369,7 +2415,7 @@ Would you be my friend?
    name="RemoveFromFriends"
    type="alertmodal">
     <tag>friendship</tag>
-Do you want to remove [NAME] from your Friends List?
+Do you want to remove &lt;nolink&gt;[NAME]&lt;/nolink&gt; from your Friends List?
     <tag>confirm</tag>
     <usetemplate
      name="okcancelbuttons"
@@ -2665,9 +2711,18 @@ Display settings have been set to safe levels because you have specified the -sa
 
   <notification
    icon="alertmodal.tga"
-   name="DisplaySetToRecommended"
+   name="DisplaySetToRecommendedGPUChange"
    type="alertmodal">
-Display settings have been set to recommended levels based on your system configuration.
+Display settings have been set to recommended levels because your graphics card changed
+from &apos;[LAST_GPU]&apos;
+to &apos;[THIS_GPU]&apos;
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="DisplaySetToRecommendedFeatureChange"
+   type="alertmodal">
+Display settings have been set to recommended levels because of a change to the rendering subsystem.
   </notification>
 
   <notification
@@ -3400,7 +3455,7 @@ Are you sure you want to return the selected objects to their owners? Transferab
    icon="alert.tga"
    name="GroupLeaveConfirmMember"
    type="alert">
-You are currently a member of the group [GROUP].
+You are currently a member of the group &lt;nolink&gt;[GROUP]&lt;/nolink&gt;.
 Leave Group?
     <tag>group</tag>
     <tag>confirm</tag>
@@ -4611,8 +4666,8 @@ Go to your [http://secondlife.com/account/ Dashboard] to see your account histor
   <notification
    icon="alertmodal.tga"
    name="ConfirmQuit"
-   type="alertmodal"
-   unique="true">
+   type="alertmodal">
+    <unique/>
 Are you sure you want to quit?
     <tag>confirm</tag>
     <usetemplate
@@ -4622,11 +4677,39 @@ Are you sure you want to quit?
      yestext="Quit"/>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="ConfirmRestoreToybox"
+   type="alertmodal">
+    <unique/>
+This action will restore your default buttons and toolbars.
+
+You cannot undo this action.
+    <usetemplate
+     name="okcancelbuttons"
+     notext="Cancel"
+     yestext="OK"/>
+  </notification>
+
+  <notification
+   icon="alertmodal.tga"
+   name="ConfirmClearAllToybox"
+   type="alertmodal">
+    <unique/>
+This action will return all buttons to the toolbox and your toolbars will be empty.
+    
+You cannot undo this action.
+    <usetemplate
+     name="okcancelbuttons"
+     notext="Cancel"
+     yestext="OK"/>
+  </notification>
+
   <notification
    icon="alertmodal.tga"
    name="DeleteItems"
-   type="alertmodal"
-   unique="true">
+   type="alertmodal">
+    <unique/>
     [QUESTION]
     <tag>confirm</tag>
     <usetemplate
@@ -4639,8 +4722,9 @@ Are you sure you want to quit?
   <notification
    icon="alertmodal.tga"
    name="HelpReportAbuseEmailLL"
-   type="alert"
-   unique="true">
+   type="alert">
+    <unique/>
+    
 Use this tool to report violations of the [http://secondlife.com/corporate/tos.php Terms of Service] and [http://secondlife.com/corporate/cs.php Community Standards].
 
 All reported abuses are investigated and resolved.
@@ -5123,7 +5207,7 @@ Topic: [SUBJECT], Message: [MESSAGE]
    name="FriendOnline"
    type="notifytip">
     <tag>friendship</tag>
-[NAME] is Online
+&lt;nolink&gt;[NAME]&lt;/nolink&gt; is Online
   </notification>
 
   <notification
@@ -5131,7 +5215,7 @@ Topic: [SUBJECT], Message: [MESSAGE]
    name="FriendOffline"
    type="notifytip">
     <tag>friendship</tag>
-[NAME] is Offline
+&lt;nolink&gt;[NAME]&lt;/nolink&gt; is Offline
   </notification>
 
   <notification
@@ -5408,21 +5492,23 @@ Your calling card was declined.
   </notification>
 
   <notification
-   icon="notifytip.tga"
-   name="TeleportToLandmark"
-   type="notifytip">
-You can teleport to locations like &apos;[NAME]&apos; by opening the Places panel on the right side of your screen, and then select the Landmarks tab.
-Click on any landmark to select it, then click &apos;Teleport&apos; at the bottom of the panel.
-(You can also double-click on the landmark, or right-click it and choose &apos;Teleport&apos;.)
+ icon="notifytip.tga"
+ name="TeleportToLandmark"
+ type="notifytip">
+    To teleport to locations like &apos;[NAME]&apos;, click on the &quot;Places&quot; button,
+    then select the Landmarks tab in the window that opens. Click on any
+    landmark to select it, then click &apos;Teleport&apos; at the bottom of the window.
+    (You can also double-click on the landmark, or right-click it and
+    choose &apos;Teleport&apos;.)
   </notification>
 
   <notification
    icon="notifytip.tga"
    name="TeleportToPerson"
    type="notifytip">
-You can contact Residents like &apos;[NAME]&apos; by opening the People panel on the right side of your screen.
-Select the Resident from the list, then click &apos;IM&apos; at the bottom of the panel.
-(You can also double-click on their name in the list, or right-click and choose &apos;IM&apos;).
+    To contact Residents like &apos;[NAME]&apos;, click on the &quot;People&quot; button , select a Resident from the window that opens, then click &apos;IM&apos; at the
+    bottom of the window.
+    (You can also double-click on their name in the list, or right-click and choose &apos;IM&apos;).
   </notification>
 
   <notification
@@ -5476,6 +5562,15 @@ Please select at least one type of content to search (General, Moderate, or Adul
 [MESSAGE]
   </notification>
 
+  <notification
+   icon="notify.tga"
+   name="PaymentFailure"
+   persist="true"
+   type="notify">
+    <tag>funds</tag>
+[MESSAGE]
+  </notification>
+
    <!-- EventNotification couldn't be persist since server decide is it necessary to notify 
    user about subscribed event via LLEventNotifier-->
   <notification
@@ -5615,8 +5710,8 @@ Message from [NAME]:
    icon="notify.tga"
    name="NotSafe"
    persist="true"
-   type="notify"
-   unique="true">
+   type="notify">
+    <unique/>
 This land has damage enabled.
 You can be hurt here. If you die, you will be teleported to your home location.
   </notification>
@@ -5625,8 +5720,8 @@ You can be hurt here. If you die, you will be teleported to your home location.
    icon="notify.tga"
    name="NoFly"
    persist="true"
-   type="notify"
-   unique="true">
+   type="notify">
+    <unique/>
    <tag>fail</tag>
 This area has flying disabled.
 You can&apos;t fly here.
@@ -5636,8 +5731,8 @@ You can&apos;t fly here.
    icon="notify.tga"
    name="PushRestricted"
    persist="true"
-   type="notify"
-   unique="true">
+   type="notify">
+    <unique/>    
 This area does not allow pushing. You can&apos;t push others here unless you own the land.
   </notification>
 
@@ -5645,8 +5740,8 @@ This area does not allow pushing. You can&apos;t push others here unless you own
    icon="notify.tga"
    name="NoVoice"
    persist="true"
-   type="notify"
-   unique="true">
+   type="notify">
+    <unique/>    
 This area has voice chat disabled. You won&apos;t be able to hear anyone talking.
     <tag>voice</tag>
   </notification>
@@ -5655,8 +5750,8 @@ This area has voice chat disabled. You won&apos;t be able to hear anyone talking
    icon="notify.tga"
    name="NoBuild"
    persist="true"
-   type="notify"
-   unique="true">
+   type="notify">
+    <unique/>    
 This area has building disabled. You can&apos;t build or rez objects here.
   </notification>
 
@@ -5664,8 +5759,8 @@ This area has building disabled. You can&apos;t build or rez objects here.
    icon="notify.tga"
    name="SeeAvatars"
    persist="true"
-   type="notify"
-   unique="true">
+   type="notify">
+    <unique/>    
 This parcel hides avatars and text chat from another parcel.   You can&apos;t see other residents outside the parcel, and those outside are not able to see you.  Regular text chat on channel 0 is also blocked.
   </notification>
 
@@ -6131,7 +6226,7 @@ Your object named &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; has given you th
    name="FriendshipAccepted"
    type="offer">
     <tag>friendship</tag>
-[NAME] accepted your friendship offer.
+&lt;nolink&gt;[NAME]&lt;/nolink&gt; accepted your friendship offer.
   </notification>
 
   <notification
@@ -6140,7 +6235,7 @@ Your object named &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; has given you th
    persist="true"
    type="notify">
     <tag>friendship</tag>
-[NAME] declined your friendship offer.
+&lt;nolink&gt;[NAME]&lt;/nolink&gt; declined your friendship offer.
   </notification>
   
     <notification
@@ -6553,8 +6648,8 @@ The voice call you are trying to join, [VOICE_CHANNEL_NAME], has reached maximum
   <notification
    icon="notifytip.tga"
    name="ProximalVoiceChannelFull"
-   type="notifytip"
-   unique="true">
+   type="notifytip">
+    <unique/>
     We&apos;re sorry.  This area has reached maximum capacity for voice conversations.  Please try to use voice in another area.
     <tag>fail</tag>
     <tag>voice</tag>
@@ -6622,8 +6717,8 @@ Failed to connect to [VOICE_CHANNEL_NAME], please try again later.  You will now
    duration="10"
    icon="notifytip.tga"
    name="VoiceLoginRetry"
-   type="notifytip"
-   unique="true">
+   type="notifytip">
+    <unique/>    
 We are creating a voice channel for you. This may take up to one minute.
   <tag>status</tag>
   <tag>voice</tag>
@@ -6634,8 +6729,8 @@ We are creating a voice channel for you. This may take up to one minute.
    name="VoiceEffectsExpired"
    sound="UISndAlert"
    persist="true"
-   type="notify"
-   unique="true">
+   type="notify">
+    <unique/>    
 One or more of your subscribed Voice Morphs has expired.
 [[URL] Click here] to renew your subscription.
   <tag>fail</tag>
@@ -6647,8 +6742,8 @@ One or more of your subscribed Voice Morphs has expired.
    name="VoiceEffectsExpiredInUse"
    sound="UISndAlert"
    persist="true"
-   type="notify"
-   unique="true">
+   type="notify">
+    <unique/>
 The active Voice Morph has expired, your normal voice settings have been applied.
 [[URL] Click here] to renew your subscription.
     <tag>fail</tag>
@@ -6660,8 +6755,8 @@ The active Voice Morph has expired, your normal voice settings have been applied
    name="VoiceEffectsWillExpire"
    sound="UISndAlert"
    persist="true"
-   type="notify"
-   unique="true">
+   type="notify">
+    <unique/>    
 One or more of your Voice Morphs will expire in less than [INTERVAL] days.
 [[URL] Click here] to renew your subscription.
   <tag>fail</tag>
@@ -6673,8 +6768,8 @@ One or more of your Voice Morphs will expire in less than [INTERVAL] days.
    name="VoiceEffectsNew"
    sound="UISndAlert"
    persist="true"
-   type="notify"
-   unique="true">
+   type="notify">
+    <unique/>    
 New Voice Morphs are available!
    <tag>voice</tag>
   </notification>
@@ -6894,6 +6989,26 @@ Are you sure you want to share the following items:
 
 With the following Residents:
 
+[RESIDENTS]
+  <tag>confirm</tag>
+	<usetemplate
+     name="okcancelbuttons"
+     notext="Cancel"
+     yestext="OK"/>
+  </notification>
+  
+  <notification
+   icon="notifytip.tga"
+   name="ShareFolderConfirmation"
+   type="alertmodal">
+Only one folder at a time can be shared.
+
+Are you sure you want to share the following items:
+
+&lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
+
+With the following Residents:
+
 [RESIDENTS]
   <tag>confirm</tag>
 	<usetemplate
@@ -7075,8 +7190,9 @@ Are you sure you want to leave this call?
      ignoretext="Confirm before I leave call"
      name="okcancelignore"
      notext="No"
-     yestext="Yes"
-     unique="true"/>
+     yestext="Yes">
+      <unique/>
+    </usetemplate>
   </notification>
 
   <notification
@@ -7094,32 +7210,32 @@ Mute everyone?
     <usetemplate
      ignoretext="Confirm before I mute all participants in a group call"
      name="okcancelignore"
-     yestext="Ok"
-     notext="Cancel"
-     unique="true"/>
+     yestext="OK"
+     notext="Cancel">
+      <unique/>
+    </usetemplate>
   </notification>
   <notification
   name="HintChat"
   label="Chat"
-  type="hint"
-  unique="true">
+  type="hint">
+    <unique/>
     To join the conversation, type into the chat field below.
   </notification>
 
   <notification
   name="HintSit"
-  
   label="Stand"
-  type="hint"
-  unique="true">
+  type="hint">
+    <unique/>
     To stand up and exit the sitting position, click the Stand button.
   </notification>
 
   <notification
   name="HintSpeak"
   label="Speak"
-  type="hint"
-  unique="true">
+  type="hint">
+    <unique/>    
 Click the Speak button to turn your microphone on and off.
 
 Click on the up arrow to see the voice control panel.
@@ -7130,32 +7246,32 @@ Hiding the Speak button will disable the voice feature.
   <notification
   name="HintDestinationGuide"
   label="Explore the World"
-  type="hint"
-  unique="true">
+  type="hint">
+    <unique/>
     The Destination Guide contains thousands of new places to discover. Select a location and choose Teleport to start exploring.
   </notification>
 
   <notification
     name="HintSidePanel"
     label="Side Panel"
-    type="hint"
-    unique="true">
+    type="hint">
+    <unique/>
     Get quick access to your inventory, outfits, profiles and more in the side panel.
   </notification>
 
   <notification
   name="HintMove"
   label="Move"
-  type="hint"
-  unique="true">
+  type="hint">
+    <unique/>
     To walk or run, open the Move Panel and use the directional arrows to navigate. You can also use the directional keys on your keyboard.
   </notification>
 
   <notification
   name="HintMoveClick"
   label=""
-  type="hint"
-  unique="true">
+  type="hint">
+    <unique/>    
 1. Click to Walk
 Click anywhere on the ground to walk to that spot.
 
@@ -7167,8 +7283,8 @@ Click and drag anywhere on the world to rotate your view
   <notification
   name="HintDisplayName"
   label="Display Name"
-  type="hint"
-  unique="true">
+  type="hint">
+    <unique/>
     Set your customizable display name here. This is in addition to your unique username, which can't be changed. You can change how you see other people's names in your preferences.
   </notification>
 
@@ -7176,8 +7292,8 @@ Click and drag anywhere on the world to rotate your view
   <notification
   name="HintView"
   label="View"
-  type="hint"
-  unique="true">
+  type="hint">
+    <unique/>
     To change your camera view, use the Orbit and Pan controls. Reset your view by pressing Escape or walking.
     <tag>custom_skin</tag>
   </notification>
@@ -7185,16 +7301,16 @@ Click and drag anywhere on the world to rotate your view
   <notification
   name="HintInventory"
   label="Inventory"
-  type="hint"
-  unique="true">
+  type="hint">
+    <unique/>
     Check your inventory to find items. Newest items can be easily found in the Recent tab.
   </notification>
 
   <notification
   name="HintLindenDollar"
   label="You've got Linden Dollars!"
-  type="hint"
-  unique="true">
+  type="hint">
+    <unique/>
     Here's your current balance of L$. Click Buy L$ to purchase more Linden Dollars.
     <tag>funds</tag>
   </notification>
@@ -7380,24 +7496,11 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
     </form>
   </notification>
 
-  <notification
- name="ModeChange"
- label=""
- type="alertmodal"
- unique="true">
-    Changing modes requires you to quit and restart.
-    <tag>confirm</tag>
-    <usetemplate
-   name="okcancelbuttons"
-   yestext="Quit"
-   notext="Don't Quit"/>
-    </notification>
-
   <notification
  name="NoClassifieds"
  label=""
- type="alertmodal"
- unique="true">
+ type="alertmodal">
+    <unique/>
     <tag>fail</tag>
     <tag>confirm</tag>
     Creation and editing of Classifieds is only available in Advanced mode. Would you like to quit and change modes? The mode selector can be found on the login screen.
@@ -7410,8 +7513,8 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
   <notification
  name="NoGroupInfo"
  label=""
- type="alertmodal"
- unique="true">
+ type="alertmodal">
+    <unique/>
     <tag>fail</tag>
     <tag>confirm</tag>
     Creation and editing of Groups is only available in Advanced mode. Would you like to quit and change modes? The mode selector can be found on the login screen.
@@ -7424,8 +7527,8 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
   <notification
  name="NoPlaceInfo"
  label=""
- type="alertmodal"
- unique="true">
+ type="alertmodal">
+    <unique/>
     <tag>fail</tag>
     <tag>confirm</tag>
     Viewing place profile is only available in Advanced mode. Would you like to quit and change modes? The mode selector can be found on the login screen.
@@ -7438,8 +7541,8 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
   <notification
  name="NoPicks"
  label=""
- type="alertmodal"
- unique="true">
+ type="alertmodal">
+    <unique/>
     <tag>fail</tag>
     <tag>confirm</tag>
     Creation and editing of Picks is only available in Advanced mode. Would you like to quit and change modes? The mode selector can be found on the login screen.
@@ -7452,8 +7555,8 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
   <notification
  name="NoWorldMap"
  label=""
- type="alertmodal"
- unique="true">
+ type="alertmodal">
+    <unique/>
     <tag>fail</tag>
     <tag>confirm</tag>
     Viewing of the world map is only available in Advanced mode. Would you like to quit and change modes? The mode selector can be found on the login screen.
@@ -7466,8 +7569,8 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
   <notification
  name="NoVoiceCall"
  label=""
- type="alertmodal"
- unique="true">
+ type="alertmodal">
+    <unique/>
     <tag>fail</tag>
     <tag>confirm</tag>
     Voice calls are only available in Advanced mode. Would you like to logout and change modes?
@@ -7480,8 +7583,8 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
   <notification
  name="NoAvatarShare"
  label=""
- type="alertmodal"
- unique="true">
+ type="alertmodal">
+    <unique/>
     <tag>fail</tag>
     <tag>confirm</tag>
     Sharing is only available in Advanced mode. Would you like to logout and change modes?
@@ -7494,8 +7597,8 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
   <notification
  name="NoAvatarPay"
  label=""
- type="alertmodal"
- unique="true">
+ type="alertmodal">
+    <unique/>
     <tag>fail</tag>
     <tag>confirm</tag>
 	  Paying other residents is only available in Advanced mode. Would you like to logout and change modes?
@@ -7508,8 +7611,8 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
   <notification
  name="NoInventory"
  label=""
- type="alertmodal"
- unique="true">
+ type="alertmodal">
+    <unique/>
     <tag>fail</tag>
     <tag>confirm</tag>
     Viewing inventory is only available in Advanced mode. Would you like to logout and change modes?
@@ -7522,8 +7625,8 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
   <notification
  name="NoAppearance"
  label=""
- type="alertmodal"
- unique="true">
+ type="alertmodal">
+    <unique/>
     <tag>fail</tag>
     <tag>confirm</tag>
     The appearance editor is only available in Advanced mode. Would you like to logout and change modes?
@@ -7536,8 +7639,8 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
   <notification
  name="NoSearch"
  label=""
- type="alertmodal"
- unique="true">
+ type="alertmodal">
+    <unique/>
     <tag>fail</tag>
     <tag>confirm</tag>
     Search is only available in Advanced mode. Would you like to logout and change modes?
@@ -7547,6 +7650,20 @@ The site at &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;
    notext="Don't Quit"/>
   </notification>
 
+  <notification
+    name="ConfirmHideUI"
+    label=""
+    type="alertmodal">
+    <unique/>
+    <tag>confirm</tag>
+    This action will hide all menu items and buttons. To get them back, click [SHORTCUT] again.
+    <usetemplate
+      name="okcancelignore"
+      yestext="OK"
+      notext="Cancel"
+      ignoretext="Confirm before hiding UI"/>
+  </notification>
+  
   <global name="UnsupportedGLRequirements">
 You do not appear to have the proper hardware requirements for [APP_NAME]. [APP_NAME] requires an OpenGL graphics card that has multitexture support. If this is the case, you may want to make sure that you have the latest drivers for your graphics card, and service packs and patches for your operating system.
 
diff --git a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
index 20ff492c0f319933146f8754e53a0122e7c265a4..2a24c74febd824fa81d29e31faea390b998f90b8 100644
--- a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
+++ b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
@@ -10,7 +10,7 @@
  name="Mockup Tab"
  selection_enabled="true"
  tab_stop="false"
- title="Mockup Tab"
+ title="MOCKUP TAB"
  translate="false"
  width="0">
     <wearable_items_list
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
index e70abc0975e36d4b3d8966d614ebc8b7780812a9..d68fa6ca6c2d4cd6b7885793c5222683a460441a 100644
--- a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml
@@ -27,8 +27,7 @@
          mouse_opaque="false"
          width="147"
          top="0"
-         name="speakers_list_panel"
-         user_resize="false">
+         name="speakers_list_panel">
             <avatar_list
              color="DkGray2"
              follows="all"
@@ -50,7 +49,6 @@
          min_height="25"
          width="130"
          name="call_btn_panel"
-         user_resize="false"
          visible="false">
             <button
              follows="all"
@@ -58,7 +56,7 @@
              label="Call"
              name="call_btn"
              width="130"
-             top="5" />
+             top="0" />
         </layout_panel>
         <layout_panel
          auto_resize="false"
@@ -68,14 +66,13 @@
          min_height="25"
          width="130"
          name="end_call_btn_panel"
-         user_resize="false"
          visible="false">
             <button
              follows="all"
              height="20"
              label="Leave Call"
              name="end_call_btn"
-             top="5"/>
+             top="0"/>
         </layout_panel>
         <layout_panel
          auto_resize="false"
@@ -85,14 +82,13 @@
          min_height="25"
          width="130"
          name="voice_ctrls_btn_panel"
-         user_resize="false"
          visible="false">
             <button
              follows="all"
              height="20"
              label="Voice Controls"
              name="voice_ctrls_btn"
-             top="5"
+             top="0"
              use_ellipses="true" />
         </layout_panel>
     </layout_stack>
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
deleted file mode 100644
index ec5853649eb3e6090f5e248fa687f129c44c5dfc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ /dev/null
@@ -1,530 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- bg_alpha_color="DkGray"
- bg_opaque_color="DkGray"
- chrome="true"
- follows="left|bottom|right"
- focus_root="true"
- height="33"
- layout="topleft"
- left="0"
- name="bottom_tray"
- top="28"
- width="1310">
-  <string
-     name="DragIndicationImageName"
-     value="Accordion_ArrowOpened_Off" />
-  <string
-     name="SpeakBtnToolTip"
-     value="Turns microphone on/off" />
-  <string
-     name="VoiceControlBtnToolTip"
-     value="Shows/hides voice control panel" />
-  <layout_stack
-     border_size="0"
-     clip="false"
-     follows="all"
-     height="28"
-   layout="topleft"
-   left="0"
-     mouse_opaque="false"
-     name="toolbar_stack"
-     orientation="horizontal"
-     top="0"
-     width="1310">
-    <layout_panel
-         auto_resize="false"
-         user_resize="false"
-         min_width="2"
-         width="2" />
-    <layout_panel
-         auto_resize="false"
-         layout="topleft"
-         max_width="320"
-         min_width="214"
-         height="28"
-         mouse_opaque="false"
-		 name="chat_bar_layout_panel"
-         user_resize="true"
-     width="250" >
-          <panel
-            name="chat_bar"
-            filename="panel_nearby_chat_bar.xml"
-            left="0"
-            height="28"
-        width="248"
-            top="0"
-            mouse_opaque="false"
-            follows="left|right"
-          />
-    </layout_panel>
-    <!--
-         This 5px Panel is an indicator of where the resize handle is.
-         The panel provides a gap between the resize handle icon and a button to the right.  
-        -->
-    <layout_panel
-     auto_resize="false"
-     layout="topleft"
-     max_width="5"
-     min_width="5"
-     name="chat_bar_resize_handle_panel"
-     user_resize="false"
-     width="5">
-      <icon
-       follows="top|right"
-       height="25"
-       image_name="ChatBarHandle"
-       layout="topleft"
-       left="-7"
-       name="resize_handle"
-       top="4"
-       width="5" />
-    </layout_panel>
-    <layout_panel
-        auto_resize="false"
-        follows="left|right"
-        height="28"
-        layout="topleft"
-        min_height="28"
-        min_width="59"
-        mouse_opaque="false"
-        name="speak_panel"
-        top_delta="0"
-        user_resize="false"
-        width="108">
-      <talk_button
-       follows="left|right"
-       height="23"
-       layout="topleft"
-       left="0"
-       name="talk"
-       top="5"
-       width="105">
-        <show_button
-         tab_stop="true">
-          <init_callback
-           function="Button.SetDockableFloaterToggle"
-           parameter="voice_controls" />
-        </show_button>
-        <!-- do not remove halign attribute with default value. otherwise it can't be overridden in other locales.
-                 & pad_right is default value for long label which can be right aligned. See EXT-6318 -->
-        <speak_button
-         halign="center"
-         label="Speak"
-         label_selected="Speak"
-         name="speak_btn"
-         pad_right="20"
-         tab_stop="true"
-         use_ellipses="true" />
-      </talk_button>
-    </layout_panel>
-    <layout_panel
-         auto_resize="false"
-         follows="right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         min_width="65"
-         mouse_opaque="false"
-         name="gesture_panel"
-         top_delta="0"
-         user_resize="false"
-         width="85">
-      <gesture_combo_list
-             follows="left|right"
-             height="23"
-             label="Gesture"
-             layout="topleft"
-             left="0"
-             name="Gesture"
-             tool_tip="Shows/hides gestures"
-             top="5"
-             width="82">
-        <combo_button
-                 pad_right="10"
-                 use_ellipses="true" />
-        <combo_list
-                 page_lines="17" />
-      </gesture_combo_list>
-    </layout_panel>
-    <layout_panel
-         auto_resize="false"
-     follows="right"
-     height="28"
-     layout="topleft"
-     min_height="28"
-     min_width="52"
-     mouse_opaque="false"
-     name="movement_panel"
-     user_resize="false"
-     width="83">
-      <bottomtray_button
-       follows="left|right"
-       height="23"
-       image_pressed="PushButton_Press"
-       image_pressed_selected="PushButton_Selected_Press"
-       image_selected="PushButton_Selected_Press"
-       is_toggle="true"
-       label="Move"
-       layout="topleft"
-       name="movement_btn"
-       tool_tip="Shows/hides movement controls"
-       top="5"
-       use_ellipses="true"
-       width="80">
-        <init_callback
-         function="Button.SetDockableFloaterToggle"
-         parameter="moveview" />
-      </bottomtray_button>
-
-    </layout_panel>
-    <layout_panel
-     auto_resize="false"
-         follows="left|right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         min_width="52"
-         mouse_opaque="false"
-         name="cam_panel"
-         user_resize="false"
-         width="83">
-      <bottomtray_button
-             follows="left|right"
-             height="23"
-             image_pressed="PushButton_Press"
-             image_pressed_selected="PushButton_Selected_Press"
-             image_selected="PushButton_Selected_Press"
-             is_toggle="true"
-             label="View"
-             layout="topleft"
-             left="0"
-             name="camera_btn"
-             tool_tip="Shows/hides camera controls"
-             top="5"
-             use_ellipses="true"
-             width="80">
-        <init_callback
-                 function="Button.SetDockableFloaterToggle"
-                 parameter="camera" />
-      </bottomtray_button>
-    </layout_panel>
-    <layout_panel
-         auto_resize="false"
-         follows="left|right"
-         height="28"
-         layout="topleft"
-     min_width="40"
-		  mouse_opaque="false"
-     name="snapshot_panel"
-		  user_resize="false"
-     width="39">
-      <bottomtray_button
-			follows="left|right"
-			height="23"
-       image_overlay="Snapshot_Off"
-			image_pressed="PushButton_Press"
-			image_pressed_selected="PushButton_Selected_Press"
-			image_selected="PushButton_Selected_Press"
-       is_toggle="true"
-			layout="topleft"
-			left="0"
-       name="snapshots"
-       tool_tip="Take snapshot"
-			top="5"
-       width="36">
-        <init_callback
-         function="Button.SetFloaterToggle"
-         parameter="snapshot" />
-      </bottomtray_button>
-    </layout_panel>
-    <layout_panel
-		  auto_resize="false"
-		  follows="left|right"
-		  height="28"
-		  layout="topleft"
-		  min_height="28"
-     min_width="52"
-		  mouse_opaque="false"
-     name="build_btn_panel"
-		  user_resize="false"
-     width="83">
-      <!--*FIX: Build Floater is not opened with default registration. Will be fixed soon.
-Disabled for now.
--->
-      <bottomtray_button
-			follows="left|right"
-			height="23"
-			image_pressed="PushButton_Press"
-			image_pressed_selected="PushButton_Selected_Press"
-			image_selected="PushButton_Selected_Press"
-       is_toggle="true"
-       label="Build"
-			layout="topleft"
-			left="0"
-       name="build_btn"
-       tool_tip="Shows/hides Build Tools"
-			top="5"
-			use_ellipses="true"
-       width="80">
-        <commit_callback
-         function="Build.Toggle"
-         parameter="build" />
-      </bottomtray_button>
-    </layout_panel>
-    <layout_panel
-		  auto_resize="false"
-		  follows="left|right"
-		  height="28"
-		  layout="topleft"
-         min_height="28"
-     min_width="52"
-         mouse_opaque="false"
-     name="search_btn_panel"
-         user_resize="false"
-         width="83">
-            <bottomtray_button
-             follows="left|right"
-             height="23"
-             image_pressed="PushButton_Press"
-             image_pressed_selected="PushButton_Selected_Press"
-             image_selected="PushButton_Selected_Press"
-             is_toggle="true"
-             label="Search"
-             layout="topleft"
-             left="0"
-             name="search_btn"
-             tool_tip="Shows/hides Search"
-             top="5"
-             use_ellipses="true"
-             width="80">
-                <init_callback
-                 function="Button.SetFloaterToggle"
-                 parameter="search" />
-            </bottomtray_button>
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="left|right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         min_width="52"
-         mouse_opaque="false"
-         name="world_map_btn_panel"
-         user_resize="false"
-         width="83">
-            <bottomtray_button
-             follows="left|right"
-             height="23"
-             image_pressed="PushButton_Press"
-             image_pressed_selected="PushButton_Selected_Press"
-             image_selected="PushButton_Selected_Press"
-             is_toggle="true"
-             label="Map"
-             layout="topleft"
-             left="0"
-             name="world_map_btn"
-             tool_tip="Shows/hides World Map"
-             top="5"
-             use_ellipses="true"
-             width="80">
-                <init_callback
-                 function="Button.SetFloaterToggle"
-                 parameter="world_map" />
-            </bottomtray_button>
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="left|right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-     min_width="62"
-         mouse_opaque="false"
-         name="mini_map_btn_panel"
-         user_resize="false"
-         width="83">
-            <bottomtray_button
-             follows="left|right"
-             height="23"
-             image_pressed="PushButton_Press"
-             image_pressed_selected="PushButton_Selected_Press"
-             image_selected="PushButton_Selected_Press"
-             is_toggle="true"
-             label="Mini-Map"
-             layout="topleft"
-             left="0"
-             name="mini_map_btn"
-             tool_tip="Shows/hides Mini-Map"
-             top="5"
-             use_ellipses="true"
-             width="80">
-                <init_callback
-                 function="Button.SetFloaterToggle"
-                 parameter="mini_map" />
-            </bottomtray_button>
-        </layout_panel>
-        <layout_panel
-         follows="left|right"
-         height="30"
-         layout="topleft"
-         min_width="95"
-         mouse_opaque="false"
-         name="chiclet_list_panel"
-         top="0"
-         user_resize="false"
-         width="189">
-<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
-as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991-->
-      <chiclet_panel
-             chiclet_padding="4"
-             follows="left|right"
-             height="24"
-             layout="topleft"
-             left="1"
-             min_width="95"
-             mouse_opaque="false"
-             name="chiclet_list"
-             top="7"
-             width="189">
-        <button
-                 auto_resize="true"
-                 follows="right"
-                 height="29"
-                 image_hover_selected="SegmentedBtn_Left_Over"
-                 image_hover_unselected="SegmentedBtn_Left_Over"
-                 image_overlay="Arrow_Small_Left"
-                 image_pressed="SegmentedBtn_Left_Press"
-                 image_pressed_selected="SegmentedBtn_Left_Press"
-                 image_selected="SegmentedBtn_Left_Off"
-                 image_unselected="SegmentedBtn_Left_Off"
-                 layout="topleft"
-                 name="chicklet_left_scroll_button"
-                 tab_stop="false"
-                 top="-28"
-                 visible="false"
-                 width="7" />
-        <button
-                 auto_resize="true"
-                 follows="right"
-                 height="29"
-                 image_hover_selected="SegmentedBtn_Right_Over"
-                 image_hover_unselected="SegmentedBtn_Right_Over"
-                 image_overlay="Arrow_Small_Right"
-                 image_pressed="SegmentedBtn_Right_Press"
-                 image_pressed_selected="SegmentedBtn_Right_Press"
-                 image_selected="SegmentedBtn_Right_Off"
-                 image_unselected="SegmentedBtn_Right_Off"
-                 layout="topleft"
-                 name="chicklet_right_scroll_button"
-                 tab_stop="false"
-                 top="-28"
-                 visible="false"
-                 width="7" />
-      </chiclet_panel>
-    </layout_panel>
-    <layout_panel auto_resize="false"
-                      user_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"
-         user_resize="false"
-         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="true"
-                 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"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         min_width="37"
-         name="notification_well_panel"
-         top="0"
-         user_resize="false"
-         width="37">
-      <chiclet_notification
-             follows="right"
-             height="23"
-             layout="topleft"
-             left="0"
-             max_displayed_count="99"
-             name="notification_well"
-             top="5"
-             width="35">
-        <button
-                 auto_resize="true"
-                 bottom_pad="3"
-                 follows="right"
-                 halign="center"
-                 height="23"
-                 image_overlay="Notices_Unread"
-                 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"
-                 tool_tip="Notifications"
-                 width="34">
-          <init_callback
-                     function="Button.SetDockableFloaterToggle"
-                     parameter="notification_well_window" />
-        </button>
-      </chiclet_notification>
-    </layout_panel>
-    <layout_panel
-		   auto_resize="false"
-		   user_resize="false"
-		   min_width="4"
-		   name="DUMMY2"
-		   width="8" />
-  </layout_stack>
-</panel>
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 b5e1a5f16df15c9faa438f8e992c0d25e688581e..f4722b05d69a81ffc6289ee43f87e4a3b6fd7e96 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml
@@ -31,7 +31,6 @@
      width="1000">
         <layout_panel
          auto_resize="false"
-         user_resize="false" 
          min_width="2"
          width="2" />
         <layout_panel
@@ -40,8 +39,7 @@
          height="28"
          layout="topleft"
          width="310"
-         min_width="188"
-         user_resize="false">
+         min_width="188">
           <panel
             left="0"
             filename="panel_nearby_chat_bar.xml"
@@ -61,8 +59,7 @@
          width="82"
          top_delta="0"
          min_width="52"
-         name="gesture_panel"
-         user_resize="false">
+         name="gesture_panel">
             <gesture_combo_list
              follows="left|right"
              height="23"
@@ -80,7 +77,6 @@
         </layout_panel>
         <layout_panel
          auto_resize="false"
-         user_resize="false" 
          min_width="3"
          name="after_gesture_panel"
          width="3"/>
diff --git a/indra/newview/skins/default/xui/en/panel_chat_item.xml b/indra/newview/skins/default/xui/en/panel_chat_item.xml
index 34c6e02684b7886d9c6653e0453d6e7028f65c22..6af110540075ae0bf770df51efadbeaf733e130a 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_item.xml
@@ -2,7 +2,7 @@
 <!-- All our XML is utf-8 encoded. -->
 <panel
   name="instant_message"
-  width="315"
+  width="300"
   height="180"
   follows="all">
      <avatar_icon
@@ -22,6 +22,7 @@
       text_color="white"
       word_wrap="true"
       mouse_opaque="true"
+      valign="bottom"
       name="msg_text">
 	</text_chat>
 </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
new file mode 100644
index 0000000000000000000000000000000000000000..ff0146490b91bbe40e1a7a57441ee2ff54c36ee8
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_chiclet_bar.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ background_visible="false"
+ chrome="true"
+ follows="left|top|right"
+ height="30"
+ layout="topleft"
+ mouse_opaque="false"
+ name="chiclet_bar"
+ width="1310">
+  <layout_stack
+     border_size="0"
+     clip="false"
+     follows="all"
+     height="30"
+     layout="topleft"
+     left="0"
+     mouse_opaque="false"
+     name="toolbar_stack"
+     orientation="horizontal"
+     top="0"
+     width="1310">
+        <layout_panel
+         follows="left|right"
+         height="30"
+         layout="topleft"
+         min_width="95"
+         mouse_opaque="false"
+         name="chiclet_list_panel"
+         auto_resize="true"
+         top="0"
+         width="189">
+      <chiclet_panel
+             chiclet_padding="4"
+             follows="left|right"
+             height="24"
+             layout="topleft"
+             left="1"
+             min_width="95"
+             mouse_opaque="false"
+             name="chiclet_list"
+             top="7"
+             width="189">
+        <button
+                 auto_resize="false"
+                 follows="right"
+                 height="29"
+                 image_hover_selected="SegmentedBtn_Left_Over"
+                 image_hover_unselected="SegmentedBtn_Left_Over"
+                 image_overlay="Arrow_Small_Left"
+                 image_pressed="SegmentedBtn_Left_Press"
+                 image_pressed_selected="SegmentedBtn_Left_Press"
+                 image_selected="SegmentedBtn_Left_Off"
+                 image_unselected="SegmentedBtn_Left_Off"
+                 layout="topleft"
+                 name="chicklet_left_scroll_button"
+                 tab_stop="false"
+                 top="-28"
+                 visible="false"
+                 width="12" />
+        <button
+                 auto_resize="false"
+                 follows="right"
+                 height="29"
+                 image_hover_selected="SegmentedBtn_Right_Over"
+                 image_hover_unselected="SegmentedBtn_Right_Over"
+                 image_overlay="Arrow_Small_Right"
+                 image_pressed="SegmentedBtn_Right_Press"
+                 image_pressed_selected="SegmentedBtn_Right_Press"
+                 image_selected="SegmentedBtn_Right_Off"
+                 image_unselected="SegmentedBtn_Right_Off"
+                 layout="topleft"
+                 name="chicklet_right_scroll_button"
+                 tab_stop="false"
+                 top="-28"
+                 visible="false"
+                 width="12" />
+      </chiclet_panel>
+    </layout_panel>
+    <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"
+         height="28"
+         layout="topleft"
+         min_height="28"
+         min_width="37"
+         name="notification_well_panel"
+         top="0"
+         width="37">
+      <chiclet_notification
+             follows="right"
+             height="23"
+             layout="topleft"
+             left="0"
+             max_displayed_count="99"
+             name="notification_well"
+             top="5"
+             width="35">
+        <button
+                 auto_resize="false"
+                 bottom_pad="3"
+                 follows="right"
+                 halign="center"
+                 height="23"
+                 image_overlay="Notices_Unread"
+                 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"
+                 tool_tip="Notifications"
+                 width="34">
+          <init_callback
+                     function="Button.SetDockableFloaterToggle"
+                     parameter="notification_well_window" />
+        </button>
+      </chiclet_notification>
+    </layout_panel>
+  </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_classified_info.xml b/indra/newview/skins/default/xui/en/panel_classified_info.xml
index 6c8d994bc6324238b0d8ff284398b03cbfddc2bb..d4a2745d1d694f262b2727950f433ddd70550400 100644
--- a/indra/newview/skins/default/xui/en/panel_classified_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml
@@ -289,8 +289,7 @@
           left="0"
           top="0"
           width="290"
-          height="16"
-          user_resize="false">
+          height="16">
         <text
          follows="left|top"
          font.style="BOLD"
@@ -327,8 +326,7 @@
           left="0"
           top="0"
           width="290"
-          height="16"
-          user_resize="false">
+          height="16">
         <text
          follows="left|top"
          font.style="BOLD"
@@ -357,8 +355,7 @@
           left="0"
           top="0"
           width="290"
-          height="215"
-          user_resize="false">
+          height="215">
         <text
          auto_resize="false"
          follows="left|top"
@@ -416,7 +413,6 @@
 			  layout="bottomleft"
 			  left="0"
 			  name="layout_panel1"
-		      user_resize="false" 
 		      auto_resize="true"
 			  width="101">
 			  <button
@@ -436,7 +432,6 @@
 			  layout="bottomleft"
 			  left_pad="3"
 			  name="show_on_map_btn_lp"
-		      user_resize="false" 
 		      auto_resize="true"
 			  width="100">
 			  <button
@@ -455,7 +450,6 @@
 			  layout="bottomleft"
 			  left_pad="3"
 			  name="edit_btn_lp"
-		      user_resize="false" 
 		      auto_resize="true"
 			  width="101">
 			  <button
diff --git a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
index beea53437a88254b521f235309bddf340eab2255..aa8e3d07a6e3044c8a7dd3567b7df0b0b6afce12 100644
--- a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
+++ b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
@@ -37,6 +37,7 @@
              top="0"
              width="311" />
         </accordion_tab>
+         <!-- The Attachments title is overwritten by the definition of "Attachments remain" in strings.xml -->
         <accordion_tab
          layout="topleft"
          name="tab_attachments"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
index e512d63f9e2ebd48f8809332e93cbd60705157f5..3509eaa2851f63c77565e724a185bab1e1a9f31a 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml
@@ -319,7 +319,6 @@
 			  layout="bottomleft"
 			  left="0"
 			  name="save_changes_btn_lp"
-		      user_resize="false" 
 		      auto_resize="true"
 			  width="156">
 			  <button
@@ -339,7 +338,6 @@
 			  layout="bottomleft"
 			  left_pad="3"
 			  name="show_on_map_btn_lp"
-		      user_resize="false" 
 		      auto_resize="true"
 			  width="157">
 			  <button
diff --git a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
index 8e8d8e6505e60455425dcb2207c216f4567b3825..0f8c37c691931f992c909d025e95b6377ec01d36 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
@@ -32,7 +32,7 @@
         name="Upper Fabric"
         tool_tip="Click to choose a picture"
         top="10"
-        width="74" >
+        width="75" >
          <texture_picker.commit_callback
              function="TexturePicker.Commit" />
        </texture_picker>
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
index 2ec2e03e8c9323fd59e6084a5cb808d3136b1fd7..0faa1598b1b932cbaa7d28dbbe8756bc6714c299 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
@@ -201,7 +201,6 @@
 			  layout="topleft"
 			  left="0"
 			  name="layout_panel1"
-		      user_resize="false" 
 		      auto_resize="true"
 			  width="150">
 		        <button
@@ -221,7 +220,6 @@
 			  layout="topleft"
 			  left_pad="4"
 			  name="layout_panel2"
-		      user_resize="false" 
 		      auto_resize="true"
 			  width="146">
 		        <button
diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
index 442eb8c28d79d5c1352484dbc4f59982c3444a72..2c7c8133d139125ab611f159c346a84adc25988f 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml
@@ -435,7 +435,6 @@
 			  layout="bottomleft"
 			  name="save_changes_btn_lp"
 			  top="0"
-		      user_resize="false" 
 		      auto_resize="true"
 			  width="153">
         <button
@@ -456,7 +455,6 @@
 			  left_pad="3"
 			  name="show_on_map_btn_lp"
 			  top="0"
-		      user_resize="false" 
 		      auto_resize="true"
 			  width="154">
         <button
diff --git a/indra/newview/skins/default/xui/en/panel_edit_skin.xml b/indra/newview/skins/default/xui/en/panel_edit_skin.xml
index 45591ba2ad754ec7580174dc964b530d47fed02f..b61f65a3d16a62fde197aea0c9a9284a2886ce85 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_skin.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_skin.xml
@@ -27,10 +27,10 @@
         default_image_name="Default"
         follows="left|top"
         height="80"
-        label="Head Tattoos"
+        label="Head"
         layout="topleft"
         left="25"
-        name="Head Tattoos"
+        name="Head"
         tool_tip="Click to choose a picture"
         top="10"
         width="74" >
@@ -43,10 +43,10 @@
         default_image_name="Default"
         follows="left|top"
         height="80"
-        label="Upper Tattoos"
+        label="Upper body"
         layout="topleft"
         left_pad="20"
-        name="Upper Tattoos"
+        name="Upper Body"
         tool_tip="Click to choose a picture"
         top="10"
         width="74" >
@@ -59,10 +59,10 @@
         default_image_name="Default"
         follows="left|top"
         height="80"
-        label="Lower Tattoos"
+        label="Lower body"
         layout="topleft"
         left_pad="20"
-        name="Lower Tattoos"
+        name="Lower Body"
         tool_tip="Click to choose a picture"
         top="10"
         width="74" >
diff --git a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
index c8764a6a8439501720773449f656b2e692e4c456..69a692e2c4cb33d1f6121fd9e453c2eb8a50cbe6 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
@@ -454,7 +454,6 @@
              left="0"			
              mouse_opaque="false"
              name="save_as_btn_lp"
-             user_resize="false" 
              auto_resize="true"
              width="154">
                 <button
@@ -474,7 +473,6 @@
              left_pad="3"			
              mouse_opaque="false"
              name="revert_btn_lp"
-             user_resize="false" 
              auto_resize="true"
              width="152">
                 <button
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
index c1dc2aaaf78a047154b67b7d9d585347852b32c3..ad10e53a4e324cd31132e5c60eab946d38d8bbbe 100644
--- a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml
@@ -26,8 +26,7 @@
          mouse_opaque="false"
          width="145"
          top="0"
-         name="speakers_list_panel"
-         user_resize="false">
+         name="speakers_list_panel">
             <avatar_list
              color="DkGray2"
              follows="all"
@@ -48,8 +47,7 @@
          layout="topleft"
          min_height="28"
          width="130"
-         name="group_info_btn_panel"
-         user_resize="false">
+         name="group_info_btn_panel">
             <button
              follows="left|right|bottom"
              height="23"
@@ -66,8 +64,7 @@
          layout="topleft"
          min_height="28"
          width="130"
-         name="call_btn_panel"
-         user_resize="false">
+         name="call_btn_panel">
             <button
              follows="all"
              height="23"
@@ -84,7 +81,6 @@
          min_height="28"
          width="130"
          name="end_call_btn_panel"
-         user_resize="false"
          visible="false">
             <button
              follows="all"
@@ -101,7 +97,6 @@
          min_height="28"
          width="130"
          name="voice_ctrls_btn_panel"
-         user_resize="false"
          visible="false">
             <button
              follows="all"
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
index ec3f3b48bcb72b6bc29b8f77bfac72b397da8be6..206496cc0e8eb0608310c52d5e7983fc56b50b20 100644
--- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
@@ -97,6 +97,7 @@ background_visible="true"
        follows="all"
        layout="topleft"
        auto_resize="true"
+       user_resize="true"
        height="513"
        width="313">
    <accordion
@@ -195,7 +196,6 @@ background_visible="true"
 				layout="bottomleft"
 				left="0"
 				name="btn_refresh_lp"
-			    user_resize="false" 
 			    auto_resize="false"
 				width="24">
 					<button
@@ -215,7 +215,6 @@ background_visible="true"
 				layout="bottomleft"
 				left_pad="3"
 				name="btn_chat_lp"
-			    user_resize="false" 
 			    auto_resize="true"
 				width="91">
 					<button
@@ -234,7 +233,6 @@ background_visible="true"
 				layout="bottomleft"
 				left_pad="3"
 				name="call_btn_lp"
-			    user_resize="false" 
 			    auto_resize="true"
 				width="91">
 					<button
@@ -255,7 +253,6 @@ background_visible="true"
 				layout="bottomleft"
 				left_pad="3"
 				name="btn_apply_lp"
-			    user_resize="false" 
 			    auto_resize="true"
 				width="91">
 					<button
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
index eff674c628af3d10d055b2c393788ca3271d5298..d4da55e32e9881af3d78011cbdfe0eb3ee4fb742 100644
--- a/indra/newview/skins/default/xui/en/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml
@@ -272,6 +272,7 @@
          top="0"
          width="313">
             <text_editor
+             font="Monospace"
              enabled="false"
              type="string"
              follows="all"
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
index 9f73b7c54024d7b024b5bd1141ac23258819168f..8fcd6ccbaf27ce0500ff65d966ff599b038e33fb 100644
--- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
@@ -32,8 +32,7 @@
          min_height="20"
          width="140"
          name="view_profile_btn_panel"
-         top="0" 
-         user_resize="false">
+         top="0" >
             <button
              follows="left|top|right"
              height="23"
@@ -49,8 +48,7 @@
          layout="topleft"
          min_height="25"
          width="140"
-         name="add_friend_btn_panel"
-         user_resize="false">
+         name="add_friend_btn_panel">
             <button
              follows="left|top|right"
              height="23"
@@ -66,8 +64,7 @@
          layout="topleft"
          min_height="25"
          width="140"
-         name="teleport_btn_panel"
-         user_resize="false">
+         name="teleport_btn_panel">
         <button
              auto_resize="false"
              follows="left|top|right"
@@ -84,8 +81,7 @@
          layout="topleft"
          min_height="25"
          width="140"
-         name="share_btn_panel"
-         user_resize="false">
+         name="share_btn_panel">
            <button
              auto_resize="true"
              follows="left|top|right"
@@ -101,8 +97,7 @@
          layout="topleft"
          min_height="25"
          width="140"
-         name="pay_btn_panel"
-         user_resize="false">
+         name="pay_btn_panel">
            <button
              auto_resize="true"
              follows="left|top|right"
@@ -118,8 +113,7 @@
          layout="topleft"
          min_height="25"
          width="140"
-         name="call_btn_panel"
-         user_resize="false">
+         name="call_btn_panel">
             <button
              follows="left|top|right"
              height="23"
@@ -135,7 +129,6 @@
          min_height="25"
          width="140"
          name="end_call_btn_panel"
-         user_resize="false"
          visible="false">
             <button
              follows="left|top|right"
@@ -152,7 +145,6 @@
          min_height="25"
          width="140"
          name="voice_ctrls_btn_panel"
-         user_resize="false"
          visible="false">
             <button
              follows="left|top|right"
@@ -169,7 +161,6 @@
        layout="topleft"
        min_height="0"
        width="140"
-       name="spacer"
-       user_resize="false" />
+       name="spacer"/>
     </layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml
index 23d8cb11cac136fbf4cd7e33455639c478f1cb63..2a5933e3e93bbc9f5ebe13b07809b2d47beb17a5 100644
--- a/indra/newview/skins/default/xui/en/panel_landmarks.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml
@@ -114,7 +114,6 @@
 		       height="25"
 		       layout="topleft"
 		       name="options_gear_btn_panel"
-		       user_resize="false"
 		       width="32">
 		          <menu_button
 		           follows="bottom|left"
@@ -135,7 +134,6 @@
 		       height="25"
 		       layout="topleft"
 		       name="add_btn_panel"
-		       user_resize="false"
 		       width="32">
 		          <button
 		           follows="bottom|left"
@@ -156,7 +154,6 @@
 		       height="25"
 		       layout="topleft"
 		       name="dummy_panel"
-		       user_resize="false"
 		       width="212">
 		          <icon
 		           follows="bottom|left|right"
@@ -173,7 +170,6 @@
 		       height="25"
 		       layout="topleft"
 		       name="trash_btn_panel"
-		       user_resize="false"
 		       width="31">
 		          <dnd_button
 		           follows="bottom|left"
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index 1c3e08d59b27f94ec486a1e4b17ff8cd45f47518..223326dd06e2119d4a54a915b5747bfb4f273ad3 100644
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -22,17 +22,17 @@ top="600"
 <!-- *NOTE: Custom resize logic for login_html in llpanellogin.cpp -->
 <web_browser
   tab_stop="false" 
-trusted_content="true" 
-bg_opaque_color="Black"
-border_visible="false"
-bottom="600"
-follows="all"
-left="0"
-name="login_html"
-start_url=""
-top="0"
-height="600"
-     width="980" />
+  trusted_content="true" 
+  bg_opaque_color="Black"
+  border_visible="false"
+  bottom="600"
+  follows="all"
+  left="0"
+  name="login_html"
+  start_url=""
+  top="0"
+  height="600"
+  width="980"/>
 <layout_stack
 follows="left|bottom|right"
 name="login_widgets"
@@ -48,7 +48,6 @@ name="login"
 layout="topleft"
 width="705"
 min_width="705"
-user_resize="false"
 height="80">
 <text
 follows="left|bottom"
@@ -120,33 +119,6 @@ label="Remember password"
   follows="left|bottom"
   font="SansSerifSmall"
   height="15"
-  left_pad="10"
-  name="mode_selection_text"
-  top="20"
-  width="130">
-    Mode:
-  </text>
-  <combo_box
-    follows="left|bottom"
-  height="23"
-    max_chars="128"
-  tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
-    top_pad="0"
-    name="mode_combo"
-    width="110">
-    <combo_box.item
-      label="Basic"
-      name="Basic"
-      value="settings_minimal.xml" />
-    <combo_box.item
-      label="Advanced"
-      name="Advanced"
-      value="" />
-  </combo_box>
-  <text
-  follows="left|bottom"
-  font="SansSerifSmall"
-  height="15"
   left_pad="8"
   name="start_location_text"
   top="20"
@@ -192,7 +164,6 @@ follows="right|bottom"
 name="links"
 width="205"
 min_width="205"
-user_resize="false"
 height="80">
    <text
 follows="right|bottom"
diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
index e6c5110999d4bc5067490c58e88637e3cf9cae8a..d6d8b2a83e1714db40e194bad3b7a317bcb34daf 100644
--- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
- background_visible="true"
  default_tab_group="1"
  follows="all"
  height="423"
@@ -51,10 +50,6 @@
    top="18"
    width="303" />
   <tab_container
-     bg_alpha_color="DkGray"
-     bg_opaque_color="DkGray"
-     background_visible="true"
-     background_opaque="true"
      follows="all"
      halign="center"
      height="339"
@@ -71,7 +66,6 @@
      bg_opaque_color="DkGray2"
      bg_alpha_color="DkGray2"
      background_visible="true"
-     background_opaque="true"
      border="false"
      bevel_style="none"
      follows="all"
@@ -90,7 +84,6 @@
      bg_opaque_color="DkGray2"
      bg_alpha_color="DkGray2"
      background_visible="true"
-     background_opaque="true"
      border="false"
      bevel_style="none"
      follows="all"
@@ -119,7 +112,6 @@
        height="25"
        layout="topleft"
        name="options_gear_btn_panel"
-       user_resize="false"
        width="32">
           <menu_button
            follows="bottom|left"
@@ -140,7 +132,6 @@
        height="25"
        layout="topleft"
        name="add_btn_panel"
-       user_resize="false"
        width="32">
           <button
            follows="bottom|left"
@@ -161,7 +152,6 @@
        height="25"
        layout="topleft"
        name="dummy_panel"
-       user_resize="false"
        width="212">
           <icon
            follows="bottom|left|right"
@@ -178,7 +168,6 @@
        height="25"
        layout="topleft"
        name="trash_btn_panel"
-       user_resize="false"
        width="31">
           <dnd_button
            follows="bottom|left"
diff --git a/indra/newview/skins/default/xui/en/panel_me.xml b/indra/newview/skins/default/xui/en/panel_me.xml
index 84b5d11ba71481c837615d58e0ab9a9127e652f5..23e7814cada591fa479954084bb2a4051c107880 100644
--- a/indra/newview/skins/default/xui/en/panel_me.xml
+++ b/indra/newview/skins/default/xui/en/panel_me.xml
@@ -10,43 +10,10 @@
  name="panel_me"
  top="0"
  width="333">
-   <!--<text
-    type="string"
-    follows="top|left|right"
-    font="SansSerifHugeBold"
-    height="20"
-    layout="topleft"
-    left="15"
-    name="user_name"
-    text_color="white"
-    top="0"
-    mouse_opaque="true"
-    width="280">
-          (Loading...)
-   </text> -->
-    <tab_container
-     follows="all"
-     height="555"
-     halign="center"
-     layout="topleft"
-     left="5"
-     name="tabs"
-     tab_min_width="95"
-     tab_height="30"
-     tab_position="top"
-     top_pad="10"
-     width="317">
-      <panel
-         class="panel_my_profile"
-         filename="panel_my_profile.xml"
-         label="MY PROFILE"
-         help_topic="panel_my_profile_tab"
-         name="panel_profile" />
-      <panel
-         class="panel_picks"
-         filename="panel_picks.xml"
-         label="MY PICKS"
-         help_topic="panel_my_picks_tab"
-         name="panel_picks" />
-    </tab_container>
+    <panel
+        class="panel_picks"
+        filename="panel_picks.xml"
+        label="MY PICKS"
+        help_topic="panel_my_picks_tab"
+        name="panel_picks"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_my_profile.xml b/indra/newview/skins/default/xui/en/panel_my_profile.xml
deleted file mode 100644
index 4bd2235cdae86799fd169430d94132b0218d9b3f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/en/panel_my_profile.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- follows="all"
- height="535"
- label="Profile"
- layout="topleft"
- left="0"
- name="panel_profile"
- top="0"
- width="315">
-    <string
-     name="CaptionTextAcctInfo">
-        [ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
-    </string>
-    <string
-     name="payment_update_link_url">
-        http://www.secondlife.com/account/billing.php?lang=en
-    </string>
-    <string
-     name="partner_edit_link_url">
-        http://www.secondlife.com/account/partners.php?lang=en
-    </string>
-    <string
-     name="my_account_link_url"
-     value="http://secondlife.com/account" />
-    <string
-     name="no_partner_text"
-     value="None" />
-    <string
-     name="no_group_text"
-     value="None" />
-    <string
-	   name="RegisterDateFormat">
-	   [REG_DATE] ([AGE])
-	  </string>
-    <string
-      name="name_text_args">
-      [NAME]
-    </string>
-    <string
-      name="display_name_text_args">
-      [DISPLAY_NAME]
-    </string>
-  <layout_stack
-     name="layout"
-     orientation="vertical"
-     follows="all"
-     layout="topleft"
-     left="0"
-     top="0"
-     height="510"
-     width="315"
-     border_size="0">
-      <layout_panel
-         name="profile_stack"
-         follows="all"
-         layout="topleft"
-         top="0"
-         left="0"
-         height="492"
-         user_resize="false"
-         width="315">
-        <scroll_container
-         color="DkGray2"
-         follows="all"
-         layout="topleft"
-         left="0"
-         name="profile_scroll"
-         opaque="true"
-         height="488"
-         width="315"
-         top="0">
-          <panel
-                layout="topleft"
-          follows="left|top|right"
-                height="488"
-               name="scroll_content_panel"
-                top="0"
-                left="0"
-                width="297">
-            <panel
-                  follows="left|top|right"
-                  height="117"
-                  layout="topleft"
-                  left="10"
-                  name="second_life_image_panel"
-                  top="0"
-                  width="297">
-
-              <texture_picker
-               allow_no_texture="true"
-               default_image_name="None"
-               enabled="false"
-               fallback_image="Generic_Person_Large"
-               follows="top|left"
-               height="124"
-               layout="topleft"
-               left="3"
-               name="2nd_life_pic"
-               top="10"
-               width="102" />
-
-              <text
-                follows="left|top|right"
-                font="SansSerifLarge"
-                font.style="BOLD"
-                height="15"
-                layout="topleft"
-                left_pad="10"
-                name="display_name_descr_text"
-                text_color="0.7 0.7 0.7 1.0"
-                top_delta="0"
-                width="280" >
-                User name
-                </text>
-
-              <text
-                follows="left|top|right"
-                font.style="BOLD"
-                height="15"
-                layout="topleft"
-                left_delta="0"
-                name="name_descr_text"
-                text_color="0.4 0.4 0.4 1.0"
-                top_delta="20"
-                width="280">
-                Display Name
-              </text>
-
-              <button
-                follows="bottom"
-                height="23"
-                left_delta="0"
-                top_delta="20"
-                label="Profile"
-                name="see_profile_btn"
-                tool_tip="See profile for this avatar"
-                width="120" />
-
-            </panel>
-          </panel>
-        </scroll_container>
-      </layout_panel>
-      </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index 51ffec4727141fdbaeecf7a4f6b5eeadbf4823a7..4bf420b79f9c4a056e69cde9ce0d6e74c13b811a 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -5,21 +5,21 @@
  bg_opaque_color="MouseGray"
  follows="left|top|right"
  focus_root="true" 
- height="60"
+ height="34"
  layout="topleft"
  name="navigation_bar"
  chrome="true"
- width="600">
+ width="800">
 	<icon
 	 follows="all"
 	 image_name="NavBar_BG"
 	 mouse_opaque="false"
 	 name="bg_icon"
 	 scale_image="true"
-	 visible="true"
+	 visible="false"
 	 left="0"
 	 top="0"
-	 height="60"
+	 height="34"
 	 width="600"/>
 	<icon
 	 follows="all"
@@ -30,7 +30,7 @@
 	 visible="false"
 	 left="0"
 	 top="0"
-	 height="60"
+	 height="34"
 	 width="600"/>
 	<icon
 	 follows="all"
@@ -41,146 +41,163 @@
 	 visible="false"
 	 left="0"
 	 top="0"
-	 height="60"
+	 height="34"
 	 width="600"/>
-	<panel
-	 background_visible="false"
-	 follows="left|top|right"
-	 top="3"
-	 height="23"
-	 layout="topleft"
-	 name="navigation_panel"
-	 width="600">
-	     <pull_button
-	     follows="left|top"
-	     direction="down"
-	     height="23"
-	     image_overlay="Arrow_Left_Off"
-	     image_bottom_pad="1"
-	     layout="topleft"
-	     left="10"
-	     name="back_btn"
-	     tool_tip="Go back to previous location"
-	     top="2"
-	     width="31" />
-	    <pull_button
-	     follows="left|top"
-	     direction="down"
-	     height="23"
-	     image_overlay="Arrow_Right_Off"
-	     image_bottom_pad="1"
-	     layout="topleft"
-	     left_pad="0"
-	     name="forward_btn"
-	     tool_tip="Go forward one location"
-	     top_delta="0"
-	     width="31" />
-	    <button
-	     follows="left|top"
-	     height="23"
-	     image_bottom_pad="1"
-	     image_overlay="Home_Off"
-	     layout="topleft"
-	     left_pad="7"
-	     name="home_btn"
-	     tool_tip="Teleport to my home location"
-	     top_delta="0"
-	     width="32" />
-	    <location_input
-	     follows="left|right|top"
-	     halign="right"
-	     height="23"
-	     label="Location"
-	     layout="topleft"
-	     left_pad="7"
-	     max_chars="254"
-	     mouse_opaque="false"
-	     name="location_combo"
-	     top_delta="0"
-	     width="226">
-         <combo_list
-         mouse_wheel_opaque="true"/>
-	     <!-- *TODO: Delete.  Let the location_input use the correct art sizes.
-	        <location_input.add_landmark_button
-	         height="18"
-	         name="location_combo_add"
-	         width="20" />
-	        <location_input.info_button
-	         height="18"
-	         name="location_combo_info"
-	         width="20" />
-	      -->
-	    </location_input>
-	<!--     <button -->
-	<!--      follows="right|top" -->
-	<!--      height="20" -->
-	<!--      image_disabled="TextField_Search_Off" -->
-	<!--      image_disabled_selected="TextField_Search_Off" -->
-	<!--      image_hover_selected="TextField_Search_Off" -->
-	<!--      image_hover_unselected="TextField_Search_Off" -->
-	<!--      image_selected="TextField_Search_Off" -->
-	<!--      image_unselected="TextField_Search_Off" -->
-	<!--      layout="topleft" -->
-	<!--      left_pad="5" -->
-	<!--      mouse_opaque="false" -->
-	<!--      name="search_bg" -->
-	<!--      top_delta="0" -->
-	<!--      width="168" /> -->
-        <search_combo_box
-	     follows="right|top"
-	     halign="right"
-	     height="23"
-	     label="Search"
-	     layout="topleft"
-	     right="-10"
-	     mouse_opaque="false"
-	     name="search_combo_box"
-	     tool_tip="Search"
-	     top_delta="0"
-	     width="244" >
-         <combo_editor
-          label="Search [SECOND_LIFE]"
-          name="search_combo_editor"/>
-         <combo_list
-          draw_border="true"
-          border.highlight_light_color="FocusColor"
-          border.highlight_dark_color="FocusColor"
-          border.shadow_light_color="FocusColor"
-          border.shadow_dark_color="FocusColor"
-          mouse_wheel_opaque="true" />
-        </search_combo_box>
-	</panel>
-    <favorites_bar
-     follows="left|right|top"
-     font="SansSerifSmall"
-     height="15"
-     layout="topleft"
-     left="0"
-     name="favorite"
-     image_drag_indication="Accordion_ArrowOpened_Off"
-     bottom="55"
-     tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"
-               width="590">
-        <label
-         follows="left|top"
-         height="15"
-         layout="topleft"
-         left="10"
-         name="favorites_bar_label"
-         text_color="LtGray"
-         tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"
-         top="12"
-         width="102">
-          Favorites Bar
-        </label>
-    <chevron_button name=">>"
-                     image_unselected="TabIcon_Close_Off"
-                     image_selected="TabIcon_Close_Off"
-                     tab_stop="false"
-                     follows="left|bottom"
-                     tool_tip="Show more of My Favorites"
-                     width="15"
-		     top="15"
-                     height="15"/>
-  </favorites_bar>
+  <icon
+    follows="all"
+    image_name="NavBar Separator"
+    mouse_opaque="false"
+    name="separator_image"
+    scale_image="true"
+    left="0"
+    top="0"
+    width="800"
+    height="2"/>
+	 <layout_stack
+       follows="all"
+       height="34"
+       layout="topleft"
+       border_size="0"
+       resize_bar_overlap="3"
+       left="0"
+       mouse_opaque="false"
+       name="nvp_stack"
+       orientation="horizontal"
+       top="0"
+       width="800">
+         <layout_panel
+           follows="top|left"
+           layout="topleft"
+           auto_resize="true"
+           user_resize="true"
+           min_width="480"
+           name="navigation_layout_panel"
+           width="480">
+	        <panel
+	         background_visible="false"
+	         follows="left|top|right"
+	         top="3"
+	         height="23"
+	         layout="topleft"
+                       left="0"
+	         name="navigation_panel"
+             width="480">
+	         <pull_button
+	         follows="left|top"
+	         direction="down"
+	         height="23"
+	         image_overlay="Arrow_Left_Off"
+	         image_bottom_pad="1"
+	         layout="topleft"
+	         left="10"
+	         name="back_btn"
+	         tool_tip="Go back to previous location"
+	         top="2"
+	         width="31" />
+	        <pull_button
+	         follows="left|top"
+	         direction="down"
+	         height="23"
+	         image_overlay="Arrow_Right_Off"
+	         image_bottom_pad="1"
+	         layout="topleft"
+	         left_pad="0"
+	         name="forward_btn"
+	         tool_tip="Go forward one location"
+	         top_delta="0"
+	         width="31" />
+	        <button
+	         follows="left|top"
+	         height="23"
+	         image_bottom_pad="1"
+	         image_overlay="Home_Off"
+	         layout="topleft"
+	         left_pad="7"
+	         name="home_btn"
+	         tool_tip="Teleport to my home location"
+	         top_delta="0"
+	         width="32" />
+	        <location_input
+                       follows="all"
+	         halign="right"
+	         height="23"
+	         label="Location"
+	         layout="topleft"
+	         left_pad="7"
+	         max_chars="254"
+	         mouse_opaque="false"
+	         name="location_combo"
+	         top_delta="0"
+                width="355">
+             <combo_list
+             mouse_wheel_opaque="true"/>
+	        </location_input>
+         </panel>
+          <icon
+             follows="top|right"
+             height="25"
+             image_name="ChatBarHandle"
+             layout="topleft"
+             left="-3"
+             name="resize_handle"
+             top="4"
+             width="5" />
+        </layout_panel>
+         <layout_panel
+           follows="top|left"
+	         layout="topleft"
+           auto_resize="true"
+           user_resize="true"
+           min_width="315"
+           name="favorites_layout_panel"
+           width="315">
+           <icon
+             follows="top|left"
+             height="25"
+             image_name="ChatBarHandle"
+             layout="topleft"
+             left="-318"
+             name="resize_handle"
+             top="4"
+             width="5" />
+
+           <favorites_bar
+             follows="left|right|top"
+             font="SansSerifSmall"
+             height="20"
+             layout="topleft"
+             left="0"
+             top="4"
+             name="favorite"
+             image_drag_indication="Accordion_ArrowOpened_Off"
+             tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"
+             width="311">
+            <label
+             follows="left|top"
+             height="15"
+             layout="topleft"
+             left="10"
+             name="favorites_bar_label"
+             text_color="LtGray"
+             tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"
+             top="12"
+             width="102">
+              Favorites Bar
+            </label>
+              <!-- More button actually is a text box. -->
+              <more_button
+                follows="left|bottom"
+                name=">>"
+                tab_stop="false"
+                tool_tip="Show more of My Favorites"
+                top="13"
+                width="50"
+                bottom="0"
+                valign="bottom">
+                More &#9660;
+                </more_button>
+         </favorites_bar>
+         </layout_panel>
+     
+     </layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d492f9bd68b1f84bc031e80ba3e3ad00389701e5
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel
+ height="300"
+ follows="all"
+ layout="topleft"
+ name="nearby_chat"
+ help_topic="nearby_chat"
+ width="320">
+            <check_box
+             bottom_delta="36"
+             control_name="TranslateChat"
+             enabled="true"
+             height="16"
+             label="Translate chat"
+             layout="topleft"
+             left="5"
+             name="translate_chat_checkbox"
+             width="230" />
+  <chat_history
+    parse_urls="true"
+    bg_readonly_color="ChatHistoryBgColor"
+    bg_writeable_color="ChatHistoryBgColor"
+    follows="all"
+    left="5"
+    top_delta="17"
+    layout="topleft"
+    height="260"
+    name="chat_history"
+    parse_highlights="true"
+    text_color="ChatHistoryTextColor"
+    text_readonly_color="ChatHistoryTextColor"
+    right_widget_pad="5"
+    left_widget_pad="0"
+    width="315" />
+</panel>
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 bfc503f05b05a6199e676b05dceaae5ac7b4cfcb..d1cb64f7ad3570270b5ad03808f1bd28f477ac7c 100644
--- a/indra/newview/skins/default/xui/en/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml
@@ -196,7 +196,6 @@
 			name="stop"
 			mouse_opaque="false"
 			auto_resize="false"
-			user_resize="false"
 			layout="topleft"
 			top="0"
 			height="22"
@@ -224,7 +223,6 @@
 			name="play"
 			mouse_opaque="false"
 			auto_resize="false"
-			user_resize="false"
 			layout="topleft"
 			top="0"
 			height="22"
@@ -252,7 +250,6 @@
 			name="pause"
 			mouse_opaque="false"
 			auto_resize="false"
-			user_resize="false"
 			layout="topleft"
 			top="0"
 			min_width="22"
@@ -279,7 +276,6 @@
 			name="volume_slider_ctrl"
 			mouse_opaque="false"
 			auto_resize="true"
-			user_resize="false"
 			follows="left|right"
 			layout="topleft"
 			top="0"
@@ -304,7 +300,6 @@
 			name="mute"
 			mouse_opaque="false"
 			auto_resize="false"
-			user_resize="false"
 			layout="topleft"
 			top="0"
 			height="72"
@@ -333,7 +328,6 @@
 			name="zoom"
 			mouse_opaque="false"
 			auto_resize="false"
-			user_resize="false"
 			layout="topleft"
 			top="0"
 			height="28"
@@ -361,7 +355,6 @@
 			name="unzoom"
 			mouse_opaque="false"
 			auto_resize="false"
-			user_resize="false"
 			layout="topleft"
 			top="0"
 			min_width="21"
@@ -388,8 +381,7 @@
 		<layout_panel
 			name="right_bookend"
 			width="0"
-			mouse_opaque="false"
-			user_resize="false" />
+			mouse_opaque="false"/>
 	  </layout_stack>
 	</panel>
   </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_notes.xml b/indra/newview/skins/default/xui/en/panel_notes.xml
deleted file mode 100644
index 124b1cfc6beef726422a1ec906ac6e9f2a783a46..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/en/panel_notes.xml
+++ /dev/null
@@ -1,236 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- follows="all"
- height="515"
- label="Notes &amp; Privacy"
- layout="topleft"
- left="0"
- name="panel_notes"
- top="0"
- width="313"
->
-    <layout_stack
-     name="layout"
-     orientation="vertical"
-     follows="all"
-     layout="topleft"
-     left="0"
-     top="0"
-     height="517"
-     width="313"
-     border_size="0">
-      <layout_panel
-       name="notes_stack"
-       follows="all"
-       layout="topleft"
-       top="0"
-       left="0"
-       height="450"
-       width="313">
-        <scroll_container
-         color="DkGray2"
-         follows="all"
-         layout="topleft"
-         left="0"
-         name="profile_scroll"
-         opaque="true"
-         height="450"
-         width="313"
-         top="0">
-          <panel
-           height="450"
-           layout="topleft"
-           name="profile_scroll_panel"
-           top="0"
-           left="0"
-           width="303">
-            <text
-             follows="left|top"
-         font.style="BOLD"
-             height="16"
-             layout="topleft"
-             left="11"
-             name="status_message"
-             text_color="white"
-             top="10"
-             value="My private notes:"
-             width="293" />
-            <text_editor
-             follows="left|top"
-             height="120"
-             layout="topleft"
-             left="12"
-             max_length="1000"
-             name="notes_edit"
-             text_color="DkGray"
-             top_pad="3"
-             width="288"
-             word_wrap="true" />
-            <text
-             follows="left|top"
-         font.style="BOLD"
-             height="16"
-             layout="topleft"
-             left="11"
-             name="status_message2"
-             text_color="white"
-             top_pad="20"
-             value="Allow this person to:"
-             width="293" />
-            <check_box
-             enabled="false"
-             height="16"
-             label="See my online status"
-             layout="topleft"
-             left="10"
-             name="status_check"
-             width="293" />
-            <check_box
-             enabled="false"
-             height="16"
-             label="See me on the map"
-             layout="topleft"
-             left="10"
-             name="map_check"
-             width="293" />
-            <check_box
-             enabled="false"
-             height="16"
-             label="Edit, delete or take my objects"
-             layout="topleft"
-             left="10"
-             name="objects_check"
-             width="293" />
-          </panel>
-        </scroll_container>
-      </layout_panel>
-      <layout_panel
-       follows="bottom|left"
-       height="30"
-         layout="topleft"
-         left="0"
-         name="notes_buttons_panel"
-         auto_resize="false"
-         width="313">
-         
-         <layout_stack
-	     	follows="bottom|left|right"
-			height="23"
-			layout="topleft"
-			name="bottom_bar_ls"
-			left="2"
-			orientation="horizontal"
-			top_pad="5"
-			width="309">
-	
-				<layout_panel
-				follows="bottom|left|right"
-				height="23"
-				layout="bottomleft"
-				left="0"
-				name="add_friend_btn_lp"
-			    user_resize="false" 
-			    auto_resize="true"
-				width="118">
-					<button
-			         follows="bottom|left|right"
-			         height="23"
-			         label="Add Friend"
-			         layout="topleft"
-			         left="1"
-			         mouse_opaque="false"
-			         name="add_friend"
-			         tool_tip="Offer friendship to the Resident"
-			         top="0"
-			         width="117" />	
-				</layout_panel>
-				
-				<layout_panel
-				follows="bottom|left|right"
-				height="23"
-				layout="bottomleft"
-				left_pad="3"
-				name="im_btn_lp"
-			    user_resize="false" 
-			    auto_resize="true"
-				width="22">
-					<button
-			         follows="bottom|left|right"
-			         height="23"
-			         label="IM"
-			         layout="topleft"
-			         name="im"
-			         tool_tip="Open instant message session"
-			         top="0"
-			         left="1"
-			         width="21" />		
-				</layout_panel>
-				
-				<layout_panel
-				follows="bottom|left|right"
-				height="23"
-				layout="bottomleft"
-				left_pad="3"
-				name="call_btn_lp"
-			    user_resize="false" 
-			    auto_resize="true"
-				width="52">
-					<button
-			         follows="bottom|left|right"
-			         height="23"
-			         label="Call"
-			         layout="topleft"
-			         name="call"
-			         tool_tip="Call this Resident"
-			         left="1"
-			         top="0"
-			         use_ellipses="true"
-			         width="51" />		
-				</layout_panel>
-				
-				<layout_panel
-				follows="bottom|left|right"
-				height="23"
-				layout="bottomleft"
-				left_pad="3"
-				name="show_on_map_btn_lp"
-			    user_resize="false" 
-			    auto_resize="true"
-				width="46">
-					<button
-			         enabled="false"
-			         follows="bottom|left|right"
-			         height="23"
-			         label="Map"
-			         layout="topleft"
-			         name="show_on_map_btn"
-			         tool_tip="Show the Resident on the map"
-			         top="0"
-			         left="1"
-			         width="45" />
-				</layout_panel>
-				
-				<layout_panel
-				follows="bottom|left|right"
-				height="23"
-				layout="bottomleft"
-				left_pad="3"
-				name="teleport_btn_lp"
-			    user_resize="false" 
-			    auto_resize="true"
-				width="81">
-					<button
-			         follows="bottom|left|right"
-			         height="23"
-			         label="Teleport"
-			         layout="topleft"
-			         name="teleport"
-			         tool_tip="Offer teleport"
-			         left="1"
-			         top="0"
-			         width="80" />	
-				</layout_panel>
-		</layout_stack>     
-        </layout_panel>
-    </layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_notification.xml b/indra/newview/skins/default/xui/en/panel_notification.xml
index 59ead84127a7273cd4227a76bc1cdd9001713e05..f6f62ac54eb71ee56051b27cb0be8ab0a00a81ed 100644
--- a/indra/newview/skins/default/xui/en/panel_notification.xml
+++ b/indra/newview/skins/default/xui/en/panel_notification.xml
@@ -9,6 +9,8 @@
   layout="topleft"
   left="0"
   name="notification_panel"
+  chrome="true"
+  show_title="false"
   top="0"
   	height="140"
   translate="false"
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 66117615e42e16cbc81cdbf65f34e41791e4ec0c..a3d39e55af53a20a6c95ccff9fd9ac8b65d10c8e 100644
--- a/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml
@@ -8,7 +8,6 @@
     bg_opaque_color="DkGray2"
     bg_alpha_color="DkGray2"
     background_visible="true"
-    background_opaque="true"
     border="false"
     bevel_style="none"
     show_item_link_overlays="true"
diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
index e1cd78bad8abb23b67ed936a71354b8e02fe461e..b61f110e32f92c067c86769694fc33e0fcfe5e3e 100644
--- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
@@ -198,7 +198,6 @@ It is calculated as border_size + 2*UIResizeBarOverlap
                  height="154"
                  name="add_button_and_combobox"
                  width="311"
-                 user_resize="false"
                  visible="true">
 
             <!-- List containing items from the COF and Base outfit -->
@@ -271,8 +270,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap
                  height="30"
                  name="filter_panel"
                  width="311"
-                 visible="false"
-                 user_resize="false">
+                 visible="false">
 
                     <filter_editor
 		             background_image="TextField_Search_Off"
@@ -515,7 +513,6 @@ It is calculated as border_size + 2*UIResizeBarOverlap
                      left="0"			
                      mouse_opaque="false"
                      name="save_btn_lp"
-                     user_resize="false" 
                      auto_resize="true"
                      width="156">
         <button
@@ -550,7 +547,6 @@ It is calculated as border_size + 2*UIResizeBarOverlap
                      left_pad="3"			
                      mouse_opaque="false"
                      name="revert_btn_lp"
-                     user_resize="false" 
                      auto_resize="true"
                      width="147">
         <button
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
index 2ad2416179d4be49875890212bfebe482f8f2c5f..405d9513db34520224b387d8936bb1f2e2f63443 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
@@ -84,7 +84,6 @@
                      left="0"			
                      mouse_opaque="false"
                      name="save_btn_lp"
-                     user_resize="false" 
                      auto_resize="true"
                      width="156">
                     <button
@@ -118,7 +117,6 @@
                      left_pad="3"			
                      mouse_opaque="false"
                      name="wear_btn_lp"
-                     user_resize="false" 
                      auto_resize="true"
                      width="147">
                     <button
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 0ebfd9c037a949af794e497f74f8afca315b0614..98c7c49ff4793bbcc92ea1311e0b9bbd9f1cf684 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -284,7 +284,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 				       height="25"
 				       layout="topleft"
 				       name="options_gear_btn_panel"
-				       user_resize="false"
 				       width="32">
 				          <menu_button
 				           follows="bottom|left"
@@ -305,7 +304,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 				       height="25"
 				       layout="topleft"
 				       name="add_btn_panel"
-				       user_resize="false"
 				       width="32">
 				          <button
 				           follows="bottom|left"
@@ -326,7 +324,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 				       height="25"
 				       layout="topleft"
 				       name="dummy_panel"
-				       user_resize="false"
 				       width="210">
 				          <icon
 				           follows="bottom|left|right"
@@ -343,7 +340,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 				       height="25"
 				       layout="topleft"
 				       name="trash_btn_panel"
-				       user_resize="false"
 				       width="31">
 				          <dnd_button
 				           follows="bottom|left"
@@ -602,7 +598,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 			layout="bottomleft"
 			left="0"
 			name="view_profile_btn_lp"
-		    user_resize="false" 
 		    auto_resize="true"
 			width="68">
 				<button
@@ -623,7 +618,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 			layout="bottomleft"
 			left_pad="3"
 			name="im_btn_lp"
-		    user_resize="false" 
 		    auto_resize="true"
 			width="41">
 				<button
@@ -644,7 +638,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 			layout="bottomleft"
 			left_pad="3"
 			name="call_btn_lp"
-		    user_resize="false" 
 		    auto_resize="true"
 			width="52">
 				<button
@@ -665,7 +658,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 			layout="bottomleft"
 			left_pad="3"
 			name="share_btn_lp"
-		    user_resize="false" 
 		    auto_resize="true"
 			width="66">
 				<button
@@ -686,7 +678,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 			layout="bottomleft"
 			left_pad="3"
 			name="teleport_btn_lp"
-		    user_resize="false" 
 		    auto_resize="true"
 			width="77">
 				<button
@@ -720,7 +711,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 			left="0"			
 			mouse_opaque="false"
 			name="group_info_btn_lp"
-		    user_resize="false" 
 		    auto_resize="true"
 			width="108">
 				<button
@@ -743,7 +733,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 			left_pad="3"
 			mouse_opaque="false"
 			name="chat_btn_lp"
-		    user_resize="false" 
 		    auto_resize="true"
 			width="101">
 				<button
@@ -766,7 +755,6 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 			left_pad="3"
 			mouse_opaque="false"
 			name="group_call_btn_lp"
-		    user_resize="false" 
 		    auto_resize="true"
 			width="96">
 				<button
diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml
index 7daa52b2d980c984bb2165846e1cafee1647a87e..79d190e1e09a0e6dea7ae3d190080c2dc6cc333e 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -117,7 +117,7 @@
     </scroll_container>
     <panel
      follows="left|right|bottom"
-     height="35"
+     height="23"
      layout="topleft"
      top_pad="5"
      left="8"
@@ -139,7 +139,6 @@
 			  layout="bottomleft"
 			  left="0"
 			  name="layout_panel1"
-		      user_resize="false" 
 		      auto_resize="true"
 			  width="101">
 			  <button
@@ -158,7 +157,6 @@
 			  layout="bottomleft"
 			  left_pad="3"
 			  name="show_on_map_btn_lp"
-		      user_resize="false" 
 		      auto_resize="true"
 			  width="100">
 			  <button
@@ -177,7 +175,6 @@
 			  layout="bottomleft"
 			  left_pad="3"
 			  name="edit_btn_lp"
-		      user_resize="false" 
 		      auto_resize="true"
 			  width="101">
 			  <button
diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml
index 87e263726d2b7643725afc007af6905b70e86a4e..8def96cada1d79213cd0561a9ef88e1af84d4bdc 100644
--- a/indra/newview/skins/default/xui/en/panel_picks.xml
+++ b/indra/newview/skins/default/xui/en/panel_picks.xml
@@ -4,12 +4,12 @@ bg_opaque_color="DkGray2"
        background_visible="true"
        background_opaque="true"
  follows="all"
- height="548"
+ height="571"
  label="Picks"
  layout="topleft"
- left="0"
+ left="8"
  name="panel_picks"
- top="0"
+ top_pad="0"
  width="313">
  <string
   name="no_picks"
@@ -30,7 +30,7 @@ bg_opaque_color="DkGray2"
  <accordion
   fit_parent="true" 
   follows="all"
-  height="485"
+  height="514"
   layout="topleft"
   left="0"
   name="accordion"
@@ -81,10 +81,10 @@ bg_opaque_color="DkGray2"
        left="1"
        height="27"
        label="bottom_panel"
-       layout="bottom"
+       layout="topleft"
        name="edit_panel"
-       top_pad="-2"
-       width="313">
+       top_pad="0"
+       width="312">
          
          <layout_stack
 		  follows="bottom|left|right"
@@ -102,7 +102,6 @@ bg_opaque_color="DkGray2"
 			  layout="bottomleft"
 			  left="0"
 			  name="gear_menu_btn"
-		      user_resize="false" 
 		      auto_resize="true"
 			  width="51">
 				<button
@@ -124,7 +123,6 @@ bg_opaque_color="DkGray2"
 			  height="18"
 			  layout="bottomleft"
 			  name="trash_btn_lp"
-		      user_resize="false" 
 		      auto_resize="true"
 			  width="18">
 				<button
@@ -149,8 +147,9 @@ bg_opaque_color="DkGray2"
          follows="bottom|left|right"
          layout="topleft"
          left="0"
-         height="40"
+         height="30"
          name="buttons_cucks"
+         top_pad="0"
          width="313">
       
       <layout_stack
@@ -169,7 +168,6 @@ bg_opaque_color="DkGray2"
 			  layout="topleft"
 			  left="0"
 			  name="info_btn_lp"
-		      user_resize="false" 
 		      auto_resize="true"
 			  top="0"
 			  width="95">
@@ -191,7 +189,6 @@ bg_opaque_color="DkGray2"
 			  layout="bottomleft" 
 			  left_pad="2"
 			  name="teleport_btn_lp"
-		      user_resize="false" 
 		      auto_resize="true"
 			  width="117">
 		        <button
@@ -211,7 +208,6 @@ bg_opaque_color="DkGray2"
 			  height="28"
 			  layout="bottomleft"
 			  name="show_on_map_btn_lp"
-		      user_resize="false" 
 		      auto_resize="true" 
 			  left_pad="2"
 			  width="90">
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index e280115bda016a304d09837921a316740f459b6a..308acf0c0c5c7a777621d762a99557951c17b3d8 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -238,7 +238,6 @@
                  mouse_opaque="false"
                  name="here_panel"
                  top="0"
-                 user_resize="false"
                  width="60">
                     <icon
                      follows="top|left"
@@ -259,7 +258,6 @@
                  mouse_opaque="false"
                  name="for_sale_panel"
                  top="0"
-                 user_resize="false"
                  width="60">
                     <icon
                      follows="top|left"
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index 5d7334f780f7a05b5df15f4d4136907b55052477..f169dbb70270af5192d1380e184effe6734a8d81 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -92,7 +92,6 @@ background_visible="true"
 			left="0"			
 			mouse_opaque="false"
 			name="lp1"
-		    user_resize="false" 
 		    auto_resize="true"
 			width="193">
 			
@@ -115,7 +114,6 @@ background_visible="true"
 					left="0"			
 					mouse_opaque="false"
 					name="teleport_btn_lp"
-				    user_resize="false" 
 				    auto_resize="true"
 					width="109">
 						<button
@@ -137,7 +135,6 @@ background_visible="true"
 					left_pad="3"
 					mouse_opaque="false"
 					name="chat_btn_lp"
-				    user_resize="false" 
 				    auto_resize="true"
 					width="86">
 						<button
@@ -161,7 +158,6 @@ background_visible="true"
 			left_pad="0"			
 			mouse_opaque="false"
 			name="lp2"
-		    user_resize="false" 
 		    auto_resize="true"
 			width="116">
 			
@@ -185,7 +181,6 @@ background_visible="true"
 					left_pad="0"
 					mouse_opaque="false"
 					name="edit_btn_lp"
-				    user_resize="false" 
 				    auto_resize="true"
 					width="84">
 						<button
@@ -202,17 +197,16 @@ background_visible="true"
 					</layout_panel>
 					
 					<layout_panel
-					follows="bottom|left|right"
+					follows="bottom|right"
 					height="23"
 					layout="bottomleft"
 					left_pad="0"
 					mouse_opaque="false"
 					name="overflow_btn_lp"
-				    user_resize="false" 
 				    auto_resize="true"
 					width="24">
 						<menu_button
-				         follows="bottom|left|right"
+				         follows="bottom|right"
 				         height="23"
 						 image_disabled="ComboButton_UpOff"
 						 image_unselected="ComboButton_UpOff"
@@ -246,7 +240,6 @@ background_visible="true"
 					left_pad="3"			
 					mouse_opaque="false"
 					name="profile_btn_lp"
-				    user_resize="false" 
 				    auto_resize="true"
 					width="102">
 						<button
@@ -283,7 +276,6 @@ background_visible="true"
 					mouse_opaque="false"
 					name="close_btn_lp"
 					top="0"
-				    user_resize="false" 
 				    auto_resize="true"
 					width="51">
 						<button
@@ -324,7 +316,6 @@ background_visible="true"
 			mouse_opaque="false"
 			name="save_btn_lp"
 			top="0"
-		    user_resize="false" 
 		    auto_resize="true"
 			width="153">
 				<button
@@ -347,7 +338,6 @@ background_visible="true"
 			mouse_opaque="false"
 			name="cancel_btn_lp"
 			top="0"
-		    user_resize="false" 
 		    auto_resize="true"
 			width="154">
 				<button
diff --git a/indra/newview/skins/default/xui/en/panel_postcard_message.xml b/indra/newview/skins/default/xui/en/panel_postcard_message.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ab2a42ea01bf1baa6be6c97a037f41d2c8da9a2d
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_postcard_message.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ height="380"
+ layout="topleft"
+ name="panel_postcard_message"
+ width="490">
+    <text
+     type="string"
+     length="1"
+     bottom="35"
+     follows="top|left"
+     font="SansSerif"
+     height="16"
+     layout="topleft"
+     left="12"
+     name="to_label"
+     top="10"
+     width="60">
+        To:
+    </text>
+    <line_editor
+     control_name="LastPostcardRecipient"
+     follows="left|top|right"
+     height="20"
+     layout="topleft"
+     left_pad="10"
+     name="to_form"
+     right="-10"
+     top_delta="-4" />
+    <text
+     type="string"
+     length="1"
+     bottom_delta="23"
+     follows="top|left"
+     font="SansSerif"
+     height="16"
+     layout="topleft"
+     left="12"
+     name="name_label"
+     width="60">
+        From:
+    </text>
+    <line_editor
+     follows="left|top|right"
+     height="20"
+     layout="topleft"
+     left_pad="10"
+     max_length_bytes="100"
+     name="name_form"
+     right="-10"
+     top_delta="-4" />
+    <text
+     type="string"
+     length="1"
+     bottom_delta="23"
+     follows="top|left"
+     font="SansSerif"
+     height="16"
+     layout="topleft"
+     left="12"
+     name="subject_label"
+     width="60">
+        Subject:
+    </text>
+    <line_editor
+     follows="left|top|right"
+     height="20"
+     label="Type your subject here."
+     layout="topleft"
+     left_pad="10"
+     max_length_bytes="100"
+     name="subject_form"
+     right="-10"
+     top_delta="-4" />
+    <text
+     type="string"
+     length="1"
+     bottom_delta="23"
+     follows="top|left|right"
+     font="SansSerif"
+     layout="topleft"
+     left="12"
+     name="msg_label"
+     right="-10">
+        Message:
+    </text>
+    <text_editor
+     type="string"
+     length="1"
+     follows="left|top|right"
+     height="60"
+     layout="topleft"
+     left_delta="0"
+     max_length="700"
+     name="msg_form"
+     right="-10"
+     top_pad="10"
+     word_wrap="true">
+        Type your message here.
+    </text_editor>
+    <button
+     follows="right|bottom"
+     height="23"
+     label="Cancel"
+     layout="topleft"
+     name="cancel_btn"
+     right="-32"
+     top="350"
+     width="100">
+      <button.commit_callback
+       function="Postcard.Cancel" />
+    </button>
+    <button
+     follows="right|bottom"
+     height="23"
+     label="Send"
+     layout="topleft"
+     left_delta="-106"
+     name="send_btn"
+     top_delta="0"
+     width="100">
+      <button.commit_callback
+       function="Postcard.Send" />
+    </button>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_postcard_settings.xml b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e9427a23882beed63b894f6b99ebb334a94a7893
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_postcard_settings.xml
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ height="380"
+ layout="topleft"
+ name="panel_postcard_settings"
+ width="490">
+    <combo_box
+     follows="left|top|right"
+     height="23"
+     label="Resolution"
+     layout="topleft"
+     left="10"
+     name="postcard_size_combo"
+     right="-10"
+     top_pad="10">
+        <combo_box.item
+         label="Current Window"
+         name="CurrentWindow"
+         value="[i0,i0]" />
+        <combo_box.item
+         label="640x480"
+         name="640x480"
+         value="[i640,i480]" />
+        <combo_box.item
+         label="800x600"
+         name="800x600"
+         value="[i800,i600]" />
+        <combo_box.item
+         label="1024x768"
+         name="1024x768"
+         value="[i1024,i768]" />
+        <combo_box.item
+         label="Custom"
+         name="Custom"
+         value="[i-1,i-1]" />
+    </combo_box>
+    <layout_stack
+     animate="false"
+     follows="all"
+     height="275"
+     layout="bottomleft"
+     name="postcard_image_params_ls"
+     left_delta="0"
+     orientation="vertical"
+     top_pad="10"
+     right="-10">
+        <layout_panel
+         follows="top|left|right"
+         height="60"
+         layout="topleft"
+         left="0"
+         name="postcard_image_size_lp"
+         auto_resize="false"
+         top="0"
+         right="-1"
+         visible="true">
+            <spinner
+             allow_text_entry="false"
+             decimal_digits="0"
+             follows="left|top"
+             height="20"
+             increment="32"
+             label="Width"
+             label_width="40"
+             layout="topleft"
+             left="10"
+             max_val="6016"
+             min_val="32"
+             name="postcard_snapshot_width"
+             top_pad="10"
+             width="95" />
+            <spinner
+             allow_text_entry="false"
+             decimal_digits="0"
+             follows="left|top"
+             height="20"
+             increment="32"
+             label="Height"
+             label_width="40"
+             layout="topleft"
+             left_pad="5"
+             max_val="6016"
+             min_val="32"
+             name="postcard_snapshot_height"
+             top_delta="0"
+             width="95" />
+            <check_box
+             bottom_delta="20"
+             follows="left|top"
+             label="Constrain proportions"
+             layout="topleft"
+             left="10"
+             name="postcard_keep_aspect_check" />
+        </layout_panel>
+        <layout_panel
+         follows="top|left|right"
+         height="23"
+         layout="topleft"
+         left="0"
+         name="postcard_image_format_quality_lp"
+         auto_resize="true"
+         top="0"
+         right="-1"
+         visible="true">
+            <slider
+             decimal_digits="0"
+             follows="left|top"
+             height="15"
+             increment="1"
+             initial_value="75"
+             label="Image quality"
+             label_width="80"
+             layout="topleft"
+             left="0"
+             max_val="100"
+             name="image_quality_slider"
+             top_pad="7"
+             width="190" />
+            <text
+             type="string"
+             follows="left|top"
+             font="SansSerifSmall"
+             length="1"
+             height="14"
+             layout="topleft"
+             left_pad="-5"
+             halign="left"
+             name="image_quality_level"
+             top_delta="0"
+             width="60">
+               ([QLVL])
+            </text>
+        </layout_panel>
+    </layout_stack>
+</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 ea092865925cad82fa2730775a6ab1457164f77a..caf7fc85f569d5d50a1cf40eeb4b98244885afd0 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
@@ -204,119 +204,16 @@
      name="nearby_toasts_fadingtime"
      top_pad="3"
      width="325" />
-    
-    <check_box
-     control_name="TranslateChat"
-     enabled="true"
-     height="16"     
-     layout="topleft"
-     left="30"
-     name="translate_chat_checkbox"
-     top_pad="5"
-     width="400" />
-     <!-- *HACK 
-     	After storm-1109 will be fixed: instead of using this text_box, word_wrap should be applied for "translate_chat_checkbox" check_box's label.-->
-     <text
-      follows="top|left"
-      height="15"
-      layout="topleft"
-      left="50"
-      name="translate_chb_label"
-      top_delta="1"
-      width="450"
-      wrap="true">
-      Use machine translation while chatting (powered by Google)
-     </text>
-    <text
-     top_pad="20"
-     name="translate_language_text"
-     follows="left|top"
-     layout="topleft"
-     left_delta="20"
-     height="20"
-     width="110">
-     Translate chat into: 
-    </text>
-    <combo_box
-     allow_text_entry="true"
-     bottom_delta="3"
-     control_name="TranslateLanguage"
-     enabled="true"
-     follows="left|top"
-     height="23"
-     left_delta="110"
-     max_chars="135"
-     mouse_opaque="true"
-     name="translate_language_combobox"
-     width="146">
-        <combo_box.item
-         label="System Default"
-         name="System Default Language"
-         value="default" />
-        <combo_box.item
-         label="English"
-         name="English"
-         value="en" />
-        <!-- After "System Default" and "English", please keep the rest of these combo_box.items in alphabetical order by the first character in the string. -->
-        <combo_box.item
-         label="Dansk (Danish)"
-         name="Danish"
-         value="da" />
-        <combo_box.item
-         label="Deutsch (German)"
-         name="German"
-         value="de" />
-        <combo_box.item
-         label="Español (Spanish)"
-         name="Spanish"
-         value="es" />
-        <combo_box.item
-         label="Français (French)"
-         name="French"
-         value="fr" />
-        <combo_box.item
-         label="Italiano (Italian)"
-         name="Italian"
-         value="it" />
-        <combo_box.item
-         label="Magyar (Hungarian)"
-         name="Hungarian"
-         value="hu" />
-        <combo_box.item
-         label="Nederlands (Dutch)"
-         name="Dutch"
-         value="nl" />
-        <combo_box.item
-         label="Polski (Polish)"
-         name="Polish"
-         value="pl" />
-        <combo_box.item
-         label="Português (Portuguese)"
-         name="Portugese"
-         value="pt" />
-        <combo_box.item
-         label="Русский (Russian)"
-         name="Russian"
-         value="ru" />
-        <combo_box.item
-         label="Türkçe (Turkish)"
-         name="Turkish"
-         value="tr" />
-        <combo_box.item
-         label="Українська (Ukrainian)"
-         name="Ukrainian"
-         value="uk" />
-        <combo_box.item
-         label="中文 (简体) (Chinese)"
-         name="Chinese"
-         value="zh" />
-        <combo_box.item
-         label="日本語 (Japanese)"
-         name="Japanese"
-         value="ja" />
-        <combo_box.item
-         label="한국어 (Korean)"
-         name="Korean"
-         value="ko" />
-    </combo_box>
+  <button
+   follows="left|top"
+   height="23"
+   label="Chat Translation Settings"
+   layout="topleft"
+   left="30"
+   name="ok_btn"
+   top="-40"
+   width="170">
+   <button.commit_callback
+    function="Pref.TranslationSettings" />
+  </button>
 </panel>
\ No newline at end of file
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 9c718fdb873e84f3185d362ee196ff49a3c359d6..9827180aa729c2abab608c57a76ac34d5d8edd44 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -65,11 +65,6 @@
          label="Italiano (Italian) - Beta"
          name="Italian"
          value="it" />
-        <combo_box.item
-         enabled="true"
-         label="Nederlands (Dutch) - Beta"
-         name="Dutch"
-         value="nl" />
         <combo_box.item
          enabled="true"
          label="Polski (Polish) - Beta"
@@ -80,11 +75,26 @@
          label="Português (Portuguese) - Beta"
          name="Portugese"
          value="pt" />
+        <combo_box.item
+         enabled="true"
+         label="Русский (Russian) - Beta"
+         name="Russian"
+         value="ru" />
+        <combo_box.item
+         enabled="true"
+         label="Türkçe (Turkish) - Beta"
+         name="Turkish"
+         value="tr" />
         <combo_box.item
          enabled="true"
          label="日本語 (Japanese) - Beta"
          name="(Japanese)"
          value="ja" />
+        <combo_box.item
+         enabled="true"
+         label="正體中文 (Traditional Chinese) - Beta"
+         name="Traditional Chinese"
+         value="zh" />
     </combo_box>
     <text
  font="SansSerifSmall"
@@ -410,7 +420,7 @@
      follows="left|top"
      height="29"
      layout="topleft"
-     left="50"
+     left="30"
      name="busy_response"
      width="470"
      word_wrap="true">
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_move.xml b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
index 1a8aae7f9115ff853682ae29b1cf53911f1bda24..d9067b41c75bc3fc7eb158d59bd87b42e6e67049 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
@@ -86,16 +86,6 @@
    name="appearance_camera_movement"
    tool_tip="Use automatic camera positioning while in edit mode"
    width="242" />
-  <check_box
-   control_name="SidebarCameraMovement"
-   follows="left|top"
-   height="16"
-   initial_value="true"
-   label="Sidebar"
-   layout="topleft"
-   name="appearance_sidebar_positioning"
-   tool_tip="Use automatic camera positioning for sidebar"
-   width="242" />
   <icon
 	 follows="left|top"
 	 height="18"
@@ -105,16 +95,61 @@
 	 mouse_opaque="false"
 	 visible="true"
 	 width="18"
-   top_pad="2"
+   top_pad="10"
    left="30" />
+  <text
+   follows="left|top"
+   type="string"
+   length="1"
+   height="10"
+   layout="topleft"
+   left="78"
+   name="keyboard_lbl"
+   width="270"
+   top_delta="2">
+    Keyboard:
+  </text>
+  <check_box
+   control_name="ArrowKeysAlwaysMove"
+   follows="left|top"
+   height="20"
+   label="Arrow keys always move me"
+   layout="topleft"
+   left_delta="5"
+   name="arrow_keys_move_avatar_check"
+   width="237"
+   top_pad="5"/>
+  <check_box
+   control_name="AllowTapTapHoldRun"
+   follows="left|top"
+   height="20"
+   label="Tap-tap-hold to run"
+   layout="topleft"
+   left_delta="0"
+   name="tap_tap_hold_to_run"
+   width="237"
+   top_pad="0"/>
+  <text
+   follows="left|top"
+   type="string"
+   length="1"
+   height="10"
+   layout="topleft"
+   left="78"
+   name="mouse_lbl"
+   width="270"
+   top_pad="15">
+    Mouse:
+  </text>
   <check_box
    control_name="FirstPersonAvatarVisible"
    follows="left|top"
    height="20"
    label="Show me in Mouselook"
    layout="topleft"
-   left_pad="30"
+   left_delta="5"
    name="first_person_avatar_visible"
+   top_pad="5"
    width="256" />
   <text
    type="string"
@@ -136,7 +171,7 @@
    initial_value="2"
    layout="topleft"
    show_text="false"
-   left_pad="5"
+   left_pad="0"
    max_val="15"
    name="mouse_sensitivity"
    top_delta="-1"
@@ -150,63 +185,70 @@
    name="invert_mouse"
    top_delta="0"
    width="128" />
-  <check_box
-   control_name="ArrowKeysAlwaysMove"
+  <text
    follows="left|top"
-   height="20"
-   label="Arrow keys always move me"
+   type="string"
+   length="1"
+   height="10"
    layout="topleft"
-   left="78"
-   name="arrow_keys_move_avatar_check"
-   width="237"
-   top_pad="10"/>
-  <check_box
-   control_name="AllowTapTapHoldRun"
-   follows="left|top"
-   height="20"
-   label="Tap-tap-hold to run"
+   left="86"
+   name="single_click_action_lbl"
+   width="150"
+   top_pad="20">
+    Single click on land:
+  </text>
+  <combo_box
+   height="23"
    layout="topleft"
-   left_delta="0"
-   name="tap_tap_hold_to_run"
-   width="237"
-   top_pad="0"/>
-  <check_box
+   left_pad="10"
+   top_delta="-6"
+   name="single_click_action_combo"
+   width="200">
+    <combo_box.item
+     label="No action"
+     name="0"
+     value="0"/>
+    <combo_box.item
+     label="Move to clicked point"
+     name="1"
+     value="1"/>
+    <combo_box.commit_callback
+     function="Pref.ClickActionChange"/>
+  </combo_box>
+  <text
    follows="left|top"
-   height="20"
-   label="Double-Click to:"
+   type="string"
+   length="1"
+   height="10"
    layout="topleft"
-   left_delta="0"
-   name="double_click_chkbox"
-   width="237"
-   top_pad="0">
-   <check_box.commit_callback
-    function="Pref.CommitDoubleClickChekbox"/>
-  </check_box>
-  <radio_group
-     height="20"
-     layout="topleft"
-     left_delta="17"
-     top_pad="2"
-     name="double_click_action">
-    <radio_item
-     height="16"
-     label="Teleport"
-     layout="topleft"
-     left="0"
-     name="radio_teleport"
-     top_delta="20"
-     width="110" />
-    <radio_item
-     height="16"
-     label="Auto-pilot"
-     left_pad="0"
-     layout="topleft"
-     name="radio_autopilot"
-     top_delta="0"
-     width="75" />
-    <radio_group.commit_callback
-	     function="Pref.CommitRadioDoubleClick"/>
-  </radio_group>
+   left="86"
+   name="double_click_action_lbl"
+   width="150"
+   top_pad="12">
+    Double click on land:
+  </text>
+  <combo_box
+   height="23"
+   layout="topleft"
+   left_pad="10"
+   top_delta="-6"
+   name="double_click_action_combo"
+   width="200">
+    <combo_box.item
+     label="No action"
+     name="0"
+     value="0"/>
+    <combo_box.item
+     label="Move to clicked point"
+     name="1"
+     value="1"/>
+    <combo_box.item
+     label="Teleport to clicked point"
+     name="2"
+     value="2"/>
+    <combo_box.commit_callback
+     function="Pref.ClickActionChange"/>
+  </combo_box>
   <button
    height="23"
    label="Other Devices"
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 47236c1a48b38bfb322d0e4e947bcfe8a020516f..587c461bee96ebc9e6c20682973bcd746d6df0c7 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
@@ -59,7 +59,6 @@
      top_pad="30"
      width="350" />
     <check_box
-     enabled_control="EnableVoiceChat"
      control_name="VoiceCallsFriendsOnly"
      height="16"
      label="Only friends and groups can call or IM me"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
index a7078ce2e106cf8ddd2d46a0da0cf86e0f9200c0..4aeea8823e688845558c83619550d0a58b5639b7 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
@@ -122,7 +122,7 @@
       layout="topleft"
       left_delta="0"
       name="external"
-      value="1"
+      value="true"
       top="0"
       tool_tip="Use the default system web browser for help, web links, etc. Not recommended if running full screen."
       width="480" />
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
index 273c2524742b21ede2e5d50feec5021b124d450a..198ccd6e2f7cdf352d91881c97fa5a0a4c2ed62d 100644
--- a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
+++ b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml
@@ -31,8 +31,7 @@
 		width="0"
 		name="left_bookend_bottom"
 		mouse_opaque="false"
-		layout="topleft"
-		user_resize="false" />
+		layout="topleft"/>
 	<layout_panel
 		name="media_progress_indicator"
 		mouse_opaque="false"
@@ -41,7 +40,6 @@
 		left="0"
 		top="0"
 		auto_resize="false"
-		user_resize="false"
 		min_width="100"
 		width="200">
 	  <progress_bar
@@ -59,8 +57,7 @@
 		name="right_bookend_bottom"
 		width="0"
 		mouse_opaque="false"
-		layout="topleft"
-		user_resize="false" />
+		layout="topleft"/>
   </layout_stack>
   <layout_stack
 	  name="media_controls"
@@ -79,13 +76,11 @@
 		top="0"
 		width="0"
 		mouse_opaque="false"
-		layout="topleft"
-		user_resize="false" />
+		layout="topleft"/>
 	<layout_panel
 		name="back"
 		top="0"
 		auto_resize="false"
-		user_resize="false"
 		layout="topleft"
 		mouse_opaque="false"
 		min_width="22"
@@ -114,7 +109,6 @@
 		name="fwd"
 		mouse_opaque="false"
 		auto_resize="false"
-		user_resize="false"
 		layout="topleft"
 		min_width="22"
 		top="0"
@@ -142,7 +136,6 @@
 		name="home"
 		mouse_opaque="false"
 		auto_resize="false"
-		user_resize="false"
 		layout="topleft"
 		top="0"
 		height="22"
@@ -170,7 +163,6 @@
 		name="media_stop"
 		mouse_opaque="false"
 		auto_resize="false"
-		user_resize="false"
 		layout="topleft"
 		top="0"
 		height="22"
@@ -198,7 +190,6 @@
 		name="reload"
 		mouse_opaque="false"
 		auto_resize="false"
-		user_resize="false"
 		layout="topleft"
 		top="0"
 		height="22"
@@ -226,7 +217,6 @@
 		name="stop"
 		mouse_opaque="false"
 		auto_resize="false"
-		user_resize="false"
 		layout="topleft"
 		top="0"
 		height="22"
@@ -254,7 +244,6 @@
 		name="play"
 		mouse_opaque="false"
 		auto_resize="false"
-		user_resize="false"
 		layout="topleft"
 		top="0"
 		height="22"
@@ -282,7 +271,6 @@
 		name="pause"
 		mouse_opaque="false"
 		auto_resize="false"
-		user_resize="false"
 		layout="topleft"
 		top="0"
 		min_width="22"
@@ -310,7 +298,6 @@
 		name="media_address"
 		mouse_opaque="false"
 		auto_resize="true"
-		user_resize="false"
 		height="24"
 		follows="left|right|bottom"
 		layout="topleft"
@@ -343,8 +330,7 @@
 			layout="topleft"
 			width="16"
 			mouse_opaque="false"
-			auto_resize="false"
-			user_resize="false">
+			auto_resize="false">
 		  <icon
 			  name="media_whitelist_flag"
 			  follows="top|right"
@@ -358,8 +344,7 @@
 			layout="topleft"
 			width="16"
 			mouse_opaque="false"
-			auto_resize="false"
-			user_resize="false">
+			auto_resize="false">
 		  <icon
 			  name="media_secure_lock_flag"
 			  height="16"
@@ -374,7 +359,6 @@
 		name="media_play_position"
 		mouse_opaque="false"
 		auto_resize="true"
-		user_resize="false"
 		follows="left|right"
 		layout="topleft"
 		top="0"
@@ -399,7 +383,6 @@
 		name="skip_back"
 		mouse_opaque="false"
 		auto_resize="false"
-		user_resize="false"
 		layout="topleft"
 		top="0"
 		min_width="22"
@@ -428,7 +411,6 @@
 		name="skip_forward"
 		mouse_opaque="false"
 		auto_resize="false"
-		user_resize="false"
 		layout="topleft"
 		top="0"
 		min_width="22"
@@ -455,7 +437,6 @@
 		name="media_volume"
 		mouse_opaque="false"
 		auto_resize="false"
-		user_resize="false"
 		layout="topleft"
 		top="0"
 		height="72"
@@ -511,7 +492,6 @@
 		name="zoom_frame"
 		mouse_opaque="false"
 		auto_resize="false"
-		user_resize="false"
 		layout="topleft"
 		top="0"
 		height="28"
@@ -539,7 +519,6 @@
 		name="close"
 		mouse_opaque="false"
 		auto_resize="false"
-		user_resize="false"
 		layout="topleft"
 		top="0"
 		min_width="21"
@@ -567,7 +546,6 @@
 		name="new_window"
 		mouse_opaque="false"
 		auto_resize="false"
-		user_resize="false"
 		layout="topleft"
 		top="0"
 		min_width="22"
@@ -596,8 +574,7 @@
 		mouse_opaque="false"
 		top="0"
 		width="0"
-		layout="topleft"
-		user_resize="false" />
+		layout="topleft"/>
   </layout_stack>
   <panel
 	  name="media_region"
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
deleted file mode 100644
index f5a9daa994c3705bb7cc1a16f29f4bc1a30e85a0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ /dev/null
@@ -1,458 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- follows="all"
- height="430"
- label="Profile"
- layout="topleft"
- left="0"
- name="panel_profile"
- top="0"
- width="317">
-    <string
-     name="CaptionTextAcctInfo">
-        [ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
-    </string>
-    <string
-     name="payment_update_link_url">
-        http://www.secondlife.com/account/billing.php?lang=en
-    </string>
-    <string
-     name="partner_edit_link_url">
-        http://www.secondlife.com/account/partners.php?lang=en
-    </string>
-    <string
-     name="my_account_link_url"
-     value="http://secondlife.com/account" />
-    <string
-     name="no_partner_text"
-     value="None" />
-    <string
-     name="no_group_text"
-     value="None" />
-    <string
-	 name="RegisterDateFormat">
-	 [REG_DATE] ([AGE])
-	</string>
-  <string
-  name="name_text_args">
-    [NAME]
-  </string>
-  <string
-    name="display_name_text_args">
-    [DISPLAY_NAME]
-  </string>
-    <layout_stack
-     name="layout"
-     orientation="vertical"
-     follows="all"
-     layout="topleft"
-     left="0"
-     top="0"
-     height="400"
-     width="317"
-     border_size="0">
-      <layout_panel
-         name="profile_stack"
-         follows="all"
-         layout="topleft"
-         top="0"
-         left="0"
-         height="400"
-         width="317">
-        <scroll_container
-         color="DkGray2"
-         follows="all"
-         layout="topleft"
-         left="0"
-         name="profile_scroll"
-         opaque="true"
-         height="400"
-         width="317"
-         top="0">
-          <panel
-                layout="topleft"
-          follows="left|top|right"
-                height="505"
-		min_height="505"
-                name="profile_scroll_panel"
-                top="0"
-                left="0"
-                width="297">
-            <panel
-                  follows="left|top|right"
-                  height="124"
-                  layout="topleft"
-                  left="13"
-                  name="second_life_image_panel"
-                  top="0"
-                  width="297">
-              <texture_picker
-               allow_no_texture="true"
-               default_image_name="None"
-               enabled="false"
-               fallback_image="Generic_Person_Large"
-               follows="top|left"
-               height="124"
-               layout="topleft"
-               left="0"
-               name="2nd_life_pic"
-               top="10"
-               width="102" />
-              <text
-               follows="left|top|right"
-         font.style="BOLD"
-               height="15"
-               layout="topleft"
-               left_pad="10"
-               name="title_sl_descr_text"
-               text_color="white"
-               top_delta="0"
-               value="[SECOND_LIFE]:"
-               width="180" />
-              <expandable_text
-               follows="left|top|right"
-               height="97"
-               layout="topleft"
-               left="107"
-               textbox.max_length="512"
-               textbox.show_context_menu="true"
-               name="sl_description_edit"
-               top_pad="-3"
-               translate="false"
-               width="180"
-               expanded_bg_visible="true"
-               expanded_bg_color="DkGray">
-                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet.Nullamma lesuada mauris sit amet ipsum. adipiscing elit. Ae nean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-              </expandable_text>
-            </panel>
-            <panel
-             follows="left|top|right"
-             height="124"
-             layout="topleft"
-       top_pad="0"
-             left="13"
-             name="first_life_image_panel"
-             width="297">
-              <texture_picker
-               allow_no_texture="true"
-               default_image_name="None"
-               enabled="false"
-               fallback_image="Generic_Person_Large"
-               follows="top|left"
-               height="124"
-               layout="topleft"
-               left="0"
-               name="real_world_pic"
-               width="102" />
-              <text
-               follows="left|top|right"
-         font.style="BOLD"
-               height="15"
-               layout="topleft"
-               left_pad="10"
-               name="title_rw_descr_text"
-               text_color="white"
-               top_delta="0"
-               value="Real World:"
-               width="180" />
-              <expandable_text
-               follows="left|top|right"
-               height="97"
-               layout="topleft"
-               left="107"
-               textbox.max_length="512"
-               textbox.show_context_menu="true"
-               name="fl_description_edit"
-               top_pad="-3"
-               translate="false"
-               width="180"
-               expanded_bg_visible="true"
-               expanded_bg_color="DkGray">
-                Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum.
-              </expandable_text>
-            </panel>
-            <text
-              follows="left|top"
-              height="15"
-        font.style="BOLD"
-        font="SansSerifMedium"
-              layout="topleft"
-              left="10"
-              name="homepage_edit"
-              top_pad="0"
-              translate="false"
-              value="http://librarianavengers.org"
-              width="300"
-              word_wrap="false"
-              use_ellipses="true" />
-            <text
-             follows="left|top"
-           font.style="BOLD"
-             height="10"
-             layout="topleft"
-             left="10"
-             name="title_member_text"
-             text_color="white"
-             top_pad="10"
-             value="Resident Since:"
-             width="300" />
-            <text_editor
-             allow_scroll="false"
-             bg_visible="false"
-             follows="left|top"
-             h_pad="0"
-             height="15"
-             layout="topleft"
-             left="10"
-             name="register_date"
-             read_only="true"
-             translate="false"
-             v_pad="0"
-             value="05/31/2376"
-             width="300"
-             word_wrap="true" />
-            <text
-             follows="left|top"
-       font.style="BOLD"
-             height="15"
-             layout="topleft"
-             left="10"
-             name="title_acc_status_text"
-             text_color="white"
-             top_pad="5"
-             value="Account Status:"
-             width="300" />
-            <!-- <text
-         type="string"
-         follows="left|top"
-         font="SansSerifSmall"
-         height="15"
-         layout="topleft"
-         left_pad="10"
-         name="my_account_link"
-         top_delta="0"
-	 value="Go to Dashboard"
-         width="100"/> -->
-            <text_editor
-             allow_scroll="false"
-             bg_visible="false"
-             follows="left|top"
-             h_pad="0"
-             height="28"
-             layout="topleft"
-             left="10"
-             name="acc_status_text"
-             read_only="true"
-             top_pad="0"
-             translate="false"
-             v_pad="0"
-             width="300"
-             word_wrap="true">
-              Resident. No payment info on file.
-              Linden.
-            </text_editor>
-            <text
-             follows="left|top"
-       font.style="BOLD"
-             height="15"
-             layout="topleft"
-             left="10"
-             name="title_partner_text"
-             text_color="white"
-             top_pad="3"
-             value="Partner:"
-             width="300" />
-            <panel
-             follows="left|top"
-             height="15"
-             layout="topleft"
-             left="10"
-             name="partner_data_panel"
-             top_pad="0"
-             width="300">
-              <text
-               follows="left|top"
-               height="10"
-               initial_value="(retrieving)"
-               layout="topleft"
-               left="0"
-               parse_urls="true"
-               name="partner_text"
-               top="0"
-               use_ellipses="true"
-           width="300" />
-            </panel>
-            <text
-             follows="left|top"
-       font.style="BOLD"
-             height="13"
-             layout="topleft"
-             left="10"
-             name="title_groups_text"
-             text_color="white"
-             top_pad="3"
-             value="Groups:"
-             width="300" />
-            <expandable_text
-            follows="all"
-            height="103"
-            layout="topleft"
-            left="7"
-            name="sl_groups"
-            textbox.max_length="512"
-            textbox.show_context_menu="true"
-            top_pad="0"
-            translate="false"
-            width="290"
-            expanded_bg_visible="true"
-            expanded_bg_color="DkGray">
-              Lorem ipsum dolor sit amet, consectetur adlkjpiscing elit moose moose. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet. adipiscing elit. Aenean rigviverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet sorbet ipsum. adipiscing elit. Aenean viverra orci et justo sagittis aliquet. Nullam malesuada mauris sit amet ipsum. Aenean viverra tulip moosetop. Slan de heelish marfnik tooplod. Sum sum to whop de wompam booster copm.
-            </expandable_text>
-          </panel>
-        </scroll_container>
-      </layout_panel>
-           
-</layout_stack>
-
-	<layout_stack
-     name="layout_verb_buttons"
-     orientation="horizontal"
-     follows="bottom|left|right"
-     layout="topleft"
-     left="2"
-     top_pad="1"
-     height="30"
-     width="315"
-     border_size="0">
-     	<layout_panel
-         follows="bottom|left"
-         height="30"
-         layout="topleft"
-         name="profile_buttons_panel"
-         top="0"
-         auto_resize="false"
-         width="317">
-         	
-           <layout_stack
-	     	follows="bottom|left|right"
-			height="23"
-			layout="topleft"
-			name="bottom_bar_ls"
-			left="0"
-			orientation="horizontal"
-			top_pad="5"
-			width="317">
-	
-				<layout_panel
-				follows="bottom|left|right"
-				height="23"
-				layout="bottomleft"
-				left="0"
-				name="add_friend_btn_lp"
-			    user_resize="false" 
-			    auto_resize="true"
-				width="121">
-					<button
-			         follows="bottom|left|right"
-			         height="23"
-			         label="Add Friend"
-			         layout="topleft"
-			         left="1"
-			         mouse_opaque="false"
-			         name="add_friend"
-			         tool_tip="Offer friendship to the Resident"
-			         top="0"
-			         width="120" />	
-				</layout_panel>
-				
-				<layout_panel
-				follows="bottom|left|right"
-				height="23"
-				layout="bottomleft"
-				left_pad="3"
-				name="im_btn_lp"
-			    user_resize="false" 
-			    auto_resize="true"
-				width="22">
-					<button
-			         follows="bottom|left|right"
-			         height="23"
-			         label="IM"
-			         layout="topleft"
-			         name="im"
-			         tool_tip="Open instant message session"
-			         top="0"
-			         left="1"
-			         width="21" />		
-				</layout_panel>
-				
-				<layout_panel
-				follows="bottom|left|right"
-				height="23"
-				layout="bottomleft"
-				left_pad="3"
-				name="call_btn_lp"
-			    user_resize="false" 
-			    auto_resize="true"
-				width="52">
-					<button
-			         follows="bottom|left|right"
-			         height="23"
-			         label="Call"
-			         layout="topleft"
-			         name="call"
-			         tool_tip="Call this Resident"
-			         left="1"
-			         top="0"
-			         use_ellipses="true"
-			         width="51" />		
-				</layout_panel>
-				
-				<layout_panel
-				follows="bottom|left|right"
-				height="23"
-				layout="bottomleft"
-				left_pad="3"
-				name="chat_btn_lp"
-			    user_resize="false" 
-			    auto_resize="true"
-				width="93">
-					<button
-			         follows="bottom|left|right"
-			         height="23"
-			         label="Teleport"
-			         layout="topleft"
-			         name="teleport"
-			         tool_tip="Offer teleport"
-			         left="1"
-			         top="0"
-			         use_ellipses="true"
-			         width="92" />
-				</layout_panel>
-				
-				<layout_panel
-				follows="bottom|left|right"
-				height="23"
-				layout="bottomleft"
-				left_pad="3"
-				name="overflow_btn_lp"
-			    user_resize="false" 
-			    auto_resize="false"
-				width="24">
-					<menu_button
-			         follows="bottom|left|right"
-			         height="23"
-			         label="â–¼"
-			         layout="topleft"
-			         name="overflow_btn"
-			         tool_tip="Pay money to or share inventory with the Resident"
-			         left="1"
-			         top="0"
-			         width="23" />		
-				</layout_panel>
-		</layout_stack>
-      </layout_panel>
-     </layout_stack>
-
-</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml
deleted file mode 100644
index 646875b52e844febb87dbec0a33bf0ff5e39a851..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/en/panel_profile_view.xml
+++ /dev/null
@@ -1,162 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- follows="all"
- height="570"
- layout="topleft"
- min_height="350"
- name="panel_target_profile"
- left="0"
- width="333">
-  <string
-   name="status_online">
-    Online
-  </string>
-  <string
-   name="status_offline">
-    Offline
-  </string>
-  <button
-   follows="top|left"
-   height="24"
-   image_hover_unselected="BackButton_Over"
-   image_pressed="BackButton_Press"
-   image_unselected="BackButton_Off"
-   layout="topleft"
-   name="back"
-   left="10"
-   tab_stop="false"
-   top="2"
-   width="30"
-   use_draw_context_alpha="false" />
-  <text
-   top="10"
-   follows="top|left"
-   height="13"
-   layout="topleft"
-   left="45"
-   name="display_name_label"
-   text_color="LtGray"
-   value="Display Name:"
-   width="80" />
-  <text
-   top_delta="0"
-   follows="top|left"
-   height="13"
-   layout="topleft"
-   left="45"
-   name="solo_username_label"
-   text_color="LtGray"
-   value="Username:"
-   visible="false" 
-   width="80" />
-  <text
-   follows="top|right"
-   halign="right"
-   height="13"
-   layout="topleft"
-   right="-15"
-   name="status"
-   text_color="LtGray_50"
-   top_delta="0"
-   value="Online"
-   width="150" />
-  <text
-   follows="top|left|right"
-   font="SansSerifBigBold"
-   height="29"
-   layout="topleft"
-   left="45"
-   name="user_name_small"
-   text_color="LtGray"
-   top="22"
-   value="Jack oh look at me this is a super duper long name"
-   use_ellipses="true"
-   word_wrap="true"
-   visible="false"
-   width="255" />
-  <text
-   follows="top|left|right"
-   font="SansSerifHugeBold"
-   height="27"
-   layout="topleft"
-   left="45"
-   name="user_name"
-   text_color="LtGray"
-   translate="false"
-   top="25"
-   value="TestString PleaseIgnore"
-   visible="true"
-   use_ellipses="true"
-   width="258" /> 
-  <button
-         name="copy_to_clipboard"
-         layout="topleft"
-         follows="top|right"
-         image_overlay="Copy"
-         top_delta="0"
-         right="-15"
-         height="21"
-         width="21"
-         tab_stop="false" 
-         tool_tip="Copy to Clipboard"/>
-  <text
-   follows="top|left"
-   height="13"
-   layout="topleft"
-   left="45"
-   name="user_label"
-   text_color="LtGray"
-   top_pad="10" 
-   value="Username:"
-   width="70" />
-  <text
-   follows="top|left"
-   height="20"
-   layout="topleft"
-   left_pad="0"
-   name="user_slid"
-   text_color="EmphasisColor"
-   font="SansSerifBold"
-   top_delta="-2"
-   translate="false"
-   use_ellipses="true"
-   value="teststring.pleaseignore"
-   width="195" 
-   wrap="true "/>
-  <tab_container
-   follows="all"
-   height="489"
-   halign="center"
-   layout="topleft"
-   left="5"
-   min_width="333"
-   name="tabs"
-   tab_min_width="80"
-   tab_height="30"
-   tab_position="top"
-   top_pad="5"
-   width="317">
-    <panel
-     class="panel_profile"
-     filename="panel_profile.xml"
-     label="PROFILE"
-     layout="topleft"
-     help_topic="profile_profile_tab"
-     name="panel_profile" />
-    <panel
-     class="panel_picks"
-     filename="panel_picks.xml"
-     label="PICKS"
-     layout="topleft"
-     help_topic="profile_picks_tab"
-     name="panel_picks" />
-    <panel
-     class="panel_notes"
-     filename="panel_notes.xml"
-     label="NOTES &amp; PRIVACY"
-     layout="topleft"
-     help_topic="profile_notes_tab"
-     name="panel_notes" />
-  </tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_progress.xml b/indra/newview/skins/default/xui/en/panel_progress.xml
index 4535c563398a43117fff2dfa8736e3de9e933122..860caf2d217a91a117c9c8da05b799f90f8ea7b3 100644
--- a/indra/newview/skins/default/xui/en/panel_progress.xml
+++ b/indra/newview/skins/default/xui/en/panel_progress.xml
@@ -12,45 +12,43 @@
      height="768"
      layout="topleft"
      left="0"
-     name="stack1"
+     name="horizontal_centering"
      orientation="horizontal"
      top="0"
      width="1024">
         <layout_panel
          layout="topleft"
          min_width="10"
-         name="panel1"
-         user_resize="false"
+         name="left"
          width="150" />
         <layout_panel
          height="768"
          layout="topleft"
-         min_width="640"
-         name="panel2"
-         user_resize="false"
-         width="640">
+         min_width="670"
+         name="center"
+         width="670">
             <layout_stack
              follows="left|right|top|bottom"
              height="768"
              layout="topleft"
              left="0"
              orientation="vertical" 
-             name="stack2"
+             name="vertical_centering"
              top="0"
-             width="640">
+             width="670">
                 <layout_panel
                  height="200"
                  layout="topleft"
                  min_height="10"
                  name="panel3"
-                 width="640" />
+                 width="670" />
                 <layout_panel
                  auto_resize="false"
                  height="250"
                  layout="topleft"
                  min_height="250"
                  name="panel4"
-                 width="640">
+                 width="670">
                     <icon
                      color="LoginProgressBoxCenterColor"
                      follows="left|right|bottom|top"
@@ -59,7 +57,7 @@
                      layout="topleft"
                      left="0"
                      top="0"
-                     width="640" />
+                     width="670" />
                     <text
                      follows="left|right|top"
                      font="SansSerifHuge"
@@ -71,7 +69,7 @@
                      name="title_text"
                      text_color="LoginProgressBoxTextColor"
                      top_delta="50"
-                     width="593" />
+                     right="-47"/>
                     <text
                      follows="left|right|top"
                      font="SansSerif"
@@ -83,7 +81,7 @@
                      name="progress_text"
                      text_color="LoginProgressBoxTextColor"
                      top_pad="5"
-                     width="593"
+                     right="-47"
                      word_wrap="true"/>
                     <progress_bar
                      bottom="115"
@@ -106,7 +104,7 @@
                      name="message_text"
                      text_color="LoginProgressBoxTextColor"
                      top="145"
-                     width="550"
+                     right="-90"
                      word_wrap="true"/>
                 </layout_panel>
                 <layout_panel
@@ -114,14 +112,13 @@
                  layout="topleft"
                  min_width="10"
                  name="panel5"
-                 width="640" />
+                 width="670" />
             </layout_stack>
         </layout_panel>
         <layout_panel
          layout="topleft"
          min_width="10"
-         name="panel6"
-         user_resize="false"
+         name="right"
          width="150" />
     </layout_stack>
     <button
diff --git a/indra/newview/skins/default/xui/en/panel_region_covenant.xml b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
index 2b2ea78fac4bb7d48a4ed509fabb07decc8131cf..112f12500df2f95a4409a42e7bc4453db7bf8bd8 100644
--- a/indra/newview/skins/default/xui/en/panel_region_covenant.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_covenant.xml
@@ -57,7 +57,7 @@
      mouse_opaque="false"
      name="estate_name_text"
      top_delta="0"
-     width="150">
+     width="350">
         mainland
     </text>
     <text
@@ -79,7 +79,7 @@
      mouse_opaque="false"
      name="estate_owner_text"
      top_delta="0"
-     width="150">
+     width="350">
         (none)
     </text>
     <text
@@ -107,13 +107,13 @@
     <text_editor
      enabled="false"
      follows="left|top"
-     height="100"
+     height="180"
      layout="topleft"
-     left="110"
+     left="10"
      max_length="65535"
      name="covenant_editor"
-     top_delta="30"
-     width="340"
+     top_delta="20"
+     width="460"
      word_wrap="true">
         There is no Covenant provided for this Estate.
     </text_editor>
diff --git a/indra/newview/skins/default/xui/en/panel_region_debug.xml b/indra/newview/skins/default/xui/en/panel_region_debug.xml
index 15df095efa49b87bc19e8ab7a2876cee8f20b496..455060313497be93cafe3d651a9300c9040b238d 100644
--- a/indra/newview/skins/default/xui/en/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_debug.xml
@@ -174,31 +174,31 @@
     <button
      follows="left|top"
      height="20"
-     label="Get Top Scripts..."
+     label="Restart Region"
      layout="topleft"
-     left="10"
-     name="top_scripts_btn"
-     tool_tip="List of objects spending the most time running scripts"
-     top_pad="5"
+     left_pad="155"
+     name="restart_btn"
+     tool_tip="Give 2 minute countdown and restart region"
+     top_delta="0"
      width="150" />
     <button
      follows="left|top"
      height="20"
-     label="Restart Region"
+     label="Get Top Scripts..."
      layout="topleft"
      left="10"
-     name="restart_btn"
-     tool_tip="Give 2 minute countdown and restart region"
+     name="top_scripts_btn"
+     tool_tip="List of objects spending the most time running scripts"
      top_pad="5"
-     width="130" />
+     width="150" />
     <button
      follows="left|top"
      height="20"
      label="Delay Restart"
      layout="topleft"
-     left="10"
+     left_pad="155"
      name="cancel_restart_btn"
      tool_tip="Delay region restart by one hour"
-     top_pad="5"
-     width="130" />
+     top_delta="0"
+     width="150" />
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_region_estate.xml b/indra/newview/skins/default/xui/en/panel_region_estate.xml
index 6b28639a777ac8e8a08662170eafb5a12cd81a65..bfd796a62bd91da5ac00c702ae97171ac7f71e14 100644
--- a/indra/newview/skins/default/xui/en/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml
@@ -134,26 +134,26 @@
      name="Only Allow"
      top_delta="-30"
      width="278">
-        Restrict Access to accounts verified by:
+        Allow access only to Residents who:
     </text>
     <check_box
      follows="top|left"
      height="16"
-     label="Payment Information on File"
+     label="Have payment information on file"
      layout="topleft"
      left_delta="0"
      name="limit_payment"
-     tool_tip="Ban unidentified Residents"
+     tool_tip="Residents must have payment information on file to access this estate.  See the [SUPPORT_SITE] for more information."
      top_pad="2"
      width="278" />
     <check_box
      follows="top|left"
      height="16"
-     label="Age Verification"
+     label="Have been age-verified"
      layout="topleft"
      left_delta="0"
      name="limit_age_verified"
-     tool_tip="Ban Residents who have not verified their age. See the [SUPPORT_SITE] for more information."
+     tool_tip="Residents must be age verified to access this estate. See the [SUPPORT_SITE] for more information."
      top_pad="2"
      width="278" />
 
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 8d420243864c56e4cda3fa1d0f53e2b7ad2e00d1..f6a8af097355f99a354ba45868823b708b595416 100644
--- a/indra/newview/skins/default/xui/en/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_ed.xml
@@ -54,12 +54,22 @@
              label="Save"
              layout="topleft"
              name="Save" />
-            <menu_item_separator
-             layout="topleft" />
-            <menu_item_call
-             label="Revert All Changes"
-             layout="topleft"
-             name="Revert All Changes" />
+          <menu_item_separator
+           layout="topleft" />
+          <menu_item_call
+           label="Revert All Changes"
+           layout="topleft"
+           name="Revert All Changes" />
+          <menu_item_separator
+           layout="topleft" />
+          <menu_item_call
+           label="Load from file..."
+           layout="topleft"
+           name="LoadFromFile" />
+          <menu_item_call
+           label="Save to file..."
+           layout="topleft"
+           name="SaveToFile" />
         </menu>
         <menu
          top="0"
diff --git a/indra/newview/skins/default/xui/en/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml
deleted file mode 100644
index 0f330a7b981b53e2622d95962f8c52a46c062eab..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/en/panel_side_tray.xml
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- Side tray cannot show background because it is always
-	partially on screen to hold tab buttons. -->
-<side_tray
-  name="sidebar"
-  background_visible="false"
-  mouse_opaque="true"
-  width="333"
-  collapsed="true"
->
-  <!-- Individual tabs must show background to have seemless
-	appearance up to tray panel header word like "Home".
-	Embedded panels are inset by a pixel and so their
-	backgrounds will not block the world fully. -->
-
-  <sidetray_tab
-    name="sidebar_openclose"
-    help_topic="sidebar_openclose"
-    tab_title="Toggle Sidebar"
-    description="Toggle Sidebar."
-    image="TabIcon_Open_Off"
-	image_selected="TabIcon_Close_Off"
-    mouse_opaque="false"
-    background_visible="true"
-  >
-    <panel /> <!-- dummy panel, never to actually be seen -->
-  </sidetray_tab>
-
-  <sidetray_tab
-    name="sidebar_home"
-    help_topic="sidebar_home"
-    tab_title="Home"
-    description="Home."
-    image="TabIcon_Home_Off"
-    image_selected="TabIcon_Home_Selected"
-    mouse_opaque="false"
-    background_visible="true"
-  >
-      <panel
-        class="panel_sidetray_home"
-        name="panel_home"
-        filename="panel_sidetray_home_tab.xml"
-        label="home"
-      />
-  </sidetray_tab>
-
-  <sidetray_tab
-    name="sidebar_me"
-    help_topic="sidebar_me"
-    tab_title="My Profile"
-    description="Edit your public profile and Picks."
-    image="TabIcon_Me_Off"
-    image_selected="TabIcon_Me_Selected"
-    mouse_opaque="false"
-    background_visible="true"
-  >
-    <panel_container
-      name="panel_container"
-      default_panel_name="panel_me"
-      width="333"
-    >
-      <panel
-        class="panel_me"
-        name="panel_me"
-        filename="panel_me.xml"
-        label="Me"
-      />
-
-    </panel_container>
-  </sidetray_tab>
-
-  <sidetray_tab
-    name="sidebar_people"
-    help_topic="sidebar_people"
-    tab_title="People"
-    description="Find your friends, contacts and people nearby."
-    image="TabIcon_People_Off"
-    image_selected="TabIcon_People_Selected"
-    mouse_opaque="false"
-    background_visible="true"
-  >
-    <panel_container
-      name="panel_container"
-      default_panel_name="panel_people"
-      width="333"
-    >
-      <panel
-        class="panel_people"
-        name="panel_people"
-        filename="panel_people.xml"
-      />
-      <panel
-        class="panel_profile_view"
-        name="panel_profile_view"
-        filename="panel_profile_view.xml"
-      />
-      <panel
-        class="panel_group_info_sidetray"
-        name="panel_group_info_sidetray"
-        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>
-  </sidetray_tab>
-
-  <sidetray_tab
-    name="sidebar_places"
-    help_topic="sidebar_places"
-    tab_title="Places"
-    label="Places"
-    description="Find places to go and places you&apos;ve visited before."
-    image="TabIcon_Places_Off"
-	image_selected="TabIcon_Places_Selected"
-    mouse_opaque="false"
-    background_visible="true"
-  >
-      <panel
-        class="panel_places"
-        name="panel_places"
-        filename="panel_places.xml"
-        label="Places"
-        font="SansSerifBold"
-      />
-  </sidetray_tab>
-
-  <sidetray_tab
-    name="sidebar_inventory"
-    help_topic="sidebar_inventory"
-    tab_title="My Inventory"
-    description="Browse your inventory."
-    image="TabIcon_Things_Off"
-    image_selected="TabIcon_Things_Selected"
-    mouse_opaque="false"
-    background_visible="true"
-  >
-      <badge location="top_left" location_percent_vcenter="50" location_percent_hcenter="95" />
-      <panel
-        class="sidepanel_inventory"
-        name="sidepanel_inventory"
-        filename="sidepanel_inventory.xml"
-        label="Edit Inventory"
-        font="SansSerifBold"
-      />
-  </sidetray_tab>
-
-  <sidetray_tab
-    name="sidebar_appearance"
-    help_topic="sidebar_appearance"
-    tab_title="My Appearance"
-    description="Change your appearance and current look."
-    image="TabIcon_Appearance_Off"
-    image_selected="TabIcon_Appearance_Selected"
-    mouse_opaque="false"
-    background_visible="true"
-  >
-      <panel
-        class="sidepanel_appearance"
-        name="sidepanel_appearance"
-        filename="sidepanel_appearance.xml"
-        label="Edit Appearance"
-        font="SansSerifBold"
-      />
-  </sidetray_tab>
-
-</side_tray>
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9057ebb65eb4d96915d6a5bc2b46e2cd75e40381
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ height="380"
+ layout="topleft"
+ name="panel_snapshot_inventory"
+ width="490">
+    <icon
+     follows="top|left"
+     height="18"
+     image_name="Snapshot_Inventory"
+     layout="topleft"
+     left="12"
+     mouse_opaque="true"
+     name="title_icon"
+     top="5"
+     width="18" />
+    <text
+     follows="top|left|right"
+     font="SansSerifBold"
+     height="20"
+     layout="topleft"
+     left_pad="12"
+     length="1"
+     name="title"
+     right="-10"
+     text_color="white"
+     type="string"
+     top_delta="5">
+        Save to My Inventory
+    </text>
+    <view_border 
+     bevel_style="in"
+     follows="left|top|right" 
+     height="1"
+     left="10"
+     layout="topleft"
+     name="hr"
+     right="-10"
+     top_pad="5"
+     />
+    <text
+     bottom="35"
+     follows="top|left|right"
+     font="SansSerif"
+     height="56"
+     layout="topleft"
+     left="12"
+     length="1"
+     name="hint_lbl"
+     top_pad="10"
+     type="string"
+     word_wrap="true">
+        Saving an image to your inventory costs L$[UPLOAD_COST]. To save your image as a texture select one of the square formats.
+    </text>
+    <combo_box
+     follows="top|left|right"
+     height="23"
+     label="Resolution"
+     layout="topleft"
+     left_delta="0"
+     name="texture_size_combo"
+     right="-10"
+     top_pad="10">
+        <combo_box.item
+         label="Current Window"
+         name="CurrentWindow"
+         value="[i0,i0]" />
+        <combo_box.item
+         label="Small (128x128)"
+         name="Small(128x128)"
+         value="[i128,i128]" />
+        <combo_box.item
+         label="Medium (256x256)"
+         name="Medium(256x256)"
+         value="[i256,i256]" />
+        <combo_box.item
+         label="Large (512x512)"
+         name="Large(512x512)"
+         value="[i512,i512]" />
+        <combo_box.item
+         label="Custom"
+         name="Custom"
+         value="[i-1,i-1]" />
+    </combo_box>
+    <spinner
+     allow_text_entry="false"
+     decimal_digits="0"
+     follows="left|top"
+     height="20"
+     increment="32"
+     label="Width"
+     label_width="40"
+     layout="topleft"
+     left="10"
+     max_val="6016"
+     min_val="32"
+     name="inventory_snapshot_width"
+     top_pad="10"
+     width="95" />
+    <spinner
+     allow_text_entry="false"
+     decimal_digits="0"
+     follows="left|top"
+     height="20"
+     increment="32"
+     label="Height"
+     label_width="40"
+     layout="topleft"
+     left_pad="5"
+     max_val="6016"
+     min_val="32"
+     name="inventory_snapshot_height"
+     top_delta="0"
+     width="95" />
+    <check_box
+     bottom_delta="20"
+     follows="left|top"
+     label="Constrain proportions"
+     layout="topleft"
+     left="10"
+     name="inventory_keep_aspect_check"
+     visible="false" />
+    <button
+     follows="right|bottom"
+     height="23"
+     label="Cancel"
+     layout="topleft"
+     name="cancel_btn"
+     right="-32"
+     top="350"
+     width="100">
+      <button.commit_callback
+       function="Inventory.Cancel" />
+    </button>
+    <button
+     follows="right|bottom"
+     height="23"
+     label="Save"
+     layout="topleft"
+     left_delta="-106"
+     name="save_btn"
+     top_delta="0"
+     width="100">
+      <button.commit_callback
+       function="Inventory.Save" />
+    </button>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_local.xml b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b966358f18d74114288b608dfd88672bb7f84b58
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_local.xml
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ height="380"
+ layout="topleft"
+ name="panel_snapshot_local"
+ width="490">
+    <icon
+     follows="top|left"
+     height="18"
+     image_name="Snapshot_Download"
+     layout="topleft"
+     left="12"
+     mouse_opaque="true"
+     name="title_icon"
+     top="5"
+     width="18" />
+    <text
+     follows="top|left|right"
+     font="SansSerifBold"
+     height="20"
+     layout="topleft"
+     left_pad="12"
+     length="1"
+     name="title"
+     right="-10"
+     text_color="white"
+     type="string"
+     top_delta="4">
+        Save to My Computer
+    </text>
+    <view_border 
+     bevel_style="in"
+     follows="left|top|right" 
+     height="1"
+     left="10"
+     layout="topleft"
+     name="hr"
+     right="-10"
+     top_pad="5"
+     />
+    <combo_box
+     follows="left|top|right"
+     height="23"
+     label="Resolution"
+     layout="topleft"
+     left_delta="0"
+     name="local_size_combo"
+     right="-10"
+     top_pad="10">
+        <combo_box.item
+         label="Current Window"
+         name="CurrentWindow"
+         value="[i0,i0]" />
+        <combo_box.item
+         label="320x240"
+         name="320x240"
+         value="[i320,i240]" />
+        <combo_box.item
+         label="640x480"
+         name="640x480"
+         value="[i640,i480]" />
+        <combo_box.item
+         label="800x600"
+         name="800x600"
+         value="[i800,i600]" />
+        <combo_box.item
+         label="1024x768"
+         name="1024x768"
+         value="[i1024,i768]" />
+        <combo_box.item
+         label="1280x1024"
+         name="1280x1024"
+         value="[i1280,i1024]" />
+        <combo_box.item
+         label="1600x1200"
+         name="1600x1200"
+         value="[i1600,i1200]" />
+        <combo_box.item
+         label="Custom"
+         name="Custom"
+         value="[i-1,i-1]" />
+    </combo_box>
+    <layout_stack
+     animate="false"
+     follows="all"
+     height="275"
+     layout="bottomleft"
+     name="local_image_params_ls"
+     left_delta="0"
+     orientation="vertical"
+     top_pad="10"
+     right="-10">
+        <layout_panel
+         follows="top|left|right"
+         height="60"
+         layout="topleft"
+         left="0"
+         name="local_image_size_lp"
+         auto_resize="false"
+         top="0"
+         right="-1"
+         visible="true">
+            <spinner
+             allow_text_entry="false"
+             decimal_digits="0"
+             follows="left|top"
+             height="20"
+             increment="32"
+             label="Width"
+             label_width="40"
+             layout="topleft"
+             left="10"
+             max_val="6016"
+             min_val="32"
+             name="local_snapshot_width"
+             top_pad="10"
+             width="95" />
+            <spinner
+             allow_text_entry="false"
+             decimal_digits="0"
+             follows="left|top"
+             height="20"
+             increment="32"
+             label="Height"
+             label_width="40"
+             layout="topleft"
+             left_pad="5"
+             max_val="6016"
+             min_val="32"
+             name="local_snapshot_height"
+             top_delta="0"
+             width="95" />
+            <check_box
+             bottom_delta="20"
+             follows="left|top"
+             label="Constrain proportions"
+             layout="topleft"
+             left="10"
+             name="local_keep_aspect_check" />
+        </layout_panel>
+        <layout_panel
+         follows="top|left|right"
+         height="23"
+         layout="topleft"
+         left="0"
+         name="local_image_format_quality_lp"
+         auto_resize="true"
+         top="0"
+         right="-1"
+         visible="true">
+            <combo_box
+             follows="left|top"
+             height="23"
+             label="Format"
+             layout="topleft"
+             left_delta="0"
+             name="local_format_combo"
+             top_pad="0"
+             width="120">
+                <combo_box.item
+                 label="PNG (Lossless)"
+                 name="PNG"
+                 value="PNG" />
+                <combo_box.item
+                 label="JPEG"
+                 name="JPEG"
+                 value="JPEG" />
+                <combo_box.item
+                 label="BMP (Lossless)"
+                 name="BMP"
+                 value="BMP" />
+            </combo_box>
+            <slider
+             decimal_digits="0"
+             follows="left|top"
+             height="15"
+             increment="1"
+             initial_value="75"
+             label="Image quality"
+             label_width="80"
+             layout="topleft"
+             left="10"
+             max_val="100"
+             name="image_quality_slider"
+             top_pad="7"
+             width="200" />
+            <text
+             type="string"
+             follows="left|top"
+             font="SansSerifSmall"
+             length="1"
+             height="14"
+             layout="topleft"
+             left_pad="-5"
+             halign="left"
+             name="image_quality_level"
+             top_delta="0"
+             width="60">
+               ([QLVL])
+            </text>
+        </layout_panel>
+    </layout_stack>
+    <button
+     follows="right|bottom"
+     height="23"
+     label="Cancel"
+     layout="topleft"
+     name="cancel_btn"
+     right="-32"
+     top="350"
+     width="100">
+      <button.commit_callback
+       function="Local.Cancel" />
+    </button>
+    <flyout_button
+     follows="right|bottom"
+     height="23"
+     label="Save"
+     layout="topleft"
+     left_delta="-106"
+     name="save_btn"
+     tool_tip="Save image to a file"
+     top_delta="0"
+     width="100">
+        <flyout_button.item
+         label="Save"
+         name="save_item"
+         value="save" />
+        <flyout_button.item
+         label="Save As..."
+         name="saveas_item"
+         value="save as" />
+    </flyout_button>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_options.xml b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d2f29ade44c74911b534f3ced8309a54140ee112
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_options.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ follows="all"
+ height="240"
+ layout="topleft"
+ name="panel_snapshot_options"
+ width="490">
+  <button
+   follows="left|top|right"
+   font="SansSerif"
+   halign="left"
+   height="38"
+   image_overlay="Snapshot_Profile"
+   image_overlay_alignment="left"
+   image_top_pad="-2"
+   imgoverlay_label_space="10"
+   label="Post to My Profile Feed"
+   layout="topleft"
+   left="10"
+   name="save_to_profile_btn"
+   pad_left="10"
+   right="-10"
+   top="5">
+    <button.commit_callback
+     function="Snapshot.SaveToProfile" />
+  </button>
+  <button
+   follows="left|top|right"
+   font="SansSerif"
+   halign="left"
+   height="38"
+   image_overlay="Snapshot_Email"
+   image_overlay_alignment="left"
+   image_top_pad="-2"
+   imgoverlay_label_space="10"
+   label="Email"
+   layout="topleft"
+   left_delta="0"
+   name="save_to_email_btn"
+   pad_left="10"
+   right="-10"
+   top_pad="10">
+    <button.commit_callback
+     function="Snapshot.SaveToEmail" />
+  </button>
+  <button
+   follows="left|top|right"
+   font="SansSerif"
+   halign="left"
+   height="38"
+   image_overlay="Snapshot_Inventory"
+   image_overlay_alignment="left"
+   image_top_pad="-2"
+   imgoverlay_label_space="10"
+   label="Save to My Inventory (L$[AMOUNT])"
+   layout="topleft"
+   left_delta="0"
+   name="save_to_inventory_btn"
+   pad_left="10"
+   right="-10"
+   top_pad="10">
+    <button.commit_callback
+     function="Snapshot.SaveToInventory" />
+  </button>
+  <button
+   follows="left|top|right"
+   font="SansSerif"
+   halign="left"
+   height="38"
+   image_overlay="Snapshot_Download"
+   image_overlay_alignment="left"
+   image_top_pad="-2"
+   imgoverlay_label_space="10"
+   label="Save to My Computer"
+   layout="topleft"
+   left_delta="0"
+   name="save_to_computer_btn"
+   pad_left="10"
+   right="-10"
+   top_pad="10">
+    <button.commit_callback
+     function="Snapshot.SaveToComputer" />
+  </button>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ebba292a935f0f1c6e906319690cdc5fd736b780
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ height="380"
+ layout="topleft"
+ name="panel_snapshot_postcard"
+ width="490">
+    <string
+     name="default_subject">
+        Postcard from [SECOND_LIFE].
+    </string>
+    <string
+     name="default_message">
+        Check this out!
+    </string>
+    <string
+     name="upload_message">
+        Sending...
+    </string>
+    <icon
+     follows="top|left"
+     height="18"
+     image_name="Snapshot_Email"
+     layout="topleft"
+     left="12"
+     mouse_opaque="true"
+     name="title_icon"
+     top="5"
+     width="18" />
+    <text
+     follows="top|left|right"
+     font="SansSerifBold"
+     height="20"
+     layout="topleft"
+     left_pad="12"
+     length="1"
+     name="title"
+     right="-10"
+     text_color="white"
+     type="string"
+     top_delta="3">
+        Email
+    </text>
+    <button
+     follows="right|top"
+     height="23"
+     is_toggle="true"
+     label="Message"
+     layout="topleft"
+     name="message_btn"
+     right="-82"
+     top_delta="-7"
+     width="70">
+      <button.commit_callback
+       function="Postcard.Message" />
+    </button>
+    <button
+     follows="right|top"
+     height="23"
+     is_toggle="true"
+     label="Settings"
+     layout="topleft"
+     name="settings_btn"
+     top_delta="0"
+     right="-10"
+     width="70">
+      <button.commit_callback
+       function="Postcard.Settings" />
+    </button>
+    <view_border 
+     bevel_style="in"
+     follows="left|top|right" 
+     height="1"
+     left="10"
+     layout="topleft"
+     name="hr"
+     right="-10"
+     top_pad="5"
+     />
+    <panel_container
+     follows="all"
+     height="340"
+     layout="topleft"
+     left="0"
+     name="postcard_panel_container"
+     default_panel_name="panel_postcard_message"
+     top_pad="10"
+     width="490">
+      <panel
+       follows="all"
+       layout="topleft"
+       name="panel_postcard_message"
+       filename="panel_postcard_message.xml" />
+      <panel
+       follows="all"
+       layout="topleft"
+       name="panel_postcard_settings"
+       filename="panel_postcard_settings.xml" />
+    </panel_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5bd383b81e85b585ffe6c608e6d6c6b917a70d98
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_snapshot_profile.xml
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ height="380"
+ layout="topleft"
+ name="panel_snapshot_profile"
+ width="490">
+    <icon
+     follows="top|left"
+     height="18"
+     image_name="Snapshot_Profile"
+     layout="topleft"
+     left="12"
+     mouse_opaque="true"
+     name="title_icon"
+     top="5"
+     width="18" />
+    <text
+     follows="top|left|right"
+     font="SansSerifBold"
+     height="20"
+     layout="topleft"
+     left_pad="12"
+     length="1"
+     name="title"
+     right="-10"
+     text_color="white"
+     type="string"
+     top_delta="4">
+        Post to My Profile Feed
+    </text>
+    <view_border 
+     bevel_style="in"
+     follows="left|top|right" 
+     height="1"
+     left="10"
+     layout="topleft"
+     name="hr"
+     right="-10"
+     top_pad="5"
+     />
+    <combo_box
+     follows="left|top"
+     height="23"
+     label="Resolution"
+     layout="topleft"
+     left_delta="0"
+     name="profile_size_combo"
+     top_pad="10"
+     width="250">
+        <combo_box.item
+         label="Current Window"
+         name="CurrentWindow"
+         value="[i0,i0]" />
+        <combo_box.item
+         label="640x480"
+         name="640x480"
+         value="[i640,i480]" />
+        <combo_box.item
+         label="800x600"
+         name="800x600"
+         value="[i800,i600]" />
+        <combo_box.item
+         label="1024x768"
+         name="1024x768"
+         value="[i1024,i768]" />
+        <combo_box.item
+         label="Custom"
+         name="Custom"
+         value="[i-1,i-1]" />
+    </combo_box>
+    <layout_stack
+     animate="false"
+     follows="all"
+     height="270"
+     layout="bottomleft"
+     name="profile_image_params_ls"
+     left_delta="0"
+     orientation="vertical"
+     top_pad="10"
+     right="-10">
+        <layout_panel
+         follows="top|left|right"
+         height="55"
+         layout="topleft"
+         left="0"
+         name="profile_image_size_lp"
+         auto_resize="false"
+         top="0"
+         right="-1"
+         visible="true">
+            <spinner
+             allow_text_entry="false"
+             decimal_digits="0"
+             follows="left|top"
+             height="20"
+             increment="32"
+             label="Width"
+             label_width="40"
+             layout="topleft"
+             left="10"
+             max_val="6016"
+             min_val="32"
+             name="profile_snapshot_width"
+             top_pad="10"
+             width="95" />
+            <spinner
+             allow_text_entry="false"
+             decimal_digits="0"
+             follows="left|top"
+             height="20"
+             increment="32"
+             label="Height"
+             label_width="40"
+             layout="topleft"
+             left_pad="5"
+             max_val="6016"
+             min_val="32"
+             name="profile_snapshot_height"
+             top_delta="0"
+             width="95" />
+            <check_box
+             bottom_delta="20"
+             label="Constrain proportions"
+             layout="topleft"
+             left="10"
+             name="profile_keep_aspect_check" />
+        </layout_panel>
+        <layout_panel
+         follows="top|left|right"
+         height="200"
+         layout="topleft"
+         left="0"
+         name="profile_image_metadata_lp"
+         auto_resize="true"
+         top="0"
+         right="-1"
+         visible="true">
+            <text
+             length="1"
+             follows="top|left|right"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left="0"
+             name="caption_label"
+             right="-10"
+             top_pad="0"
+             type="string">
+                Caption:
+            </text>
+            <text_editor
+             follows="all"
+             height="155"
+             layout="topleft"
+             left_delta="0"
+             length="1"
+             max_length="700"
+             name="caption"
+             right="-10"
+             top_pad="5"
+             type="string"
+             word_wrap="true">
+            </text_editor>
+            <check_box
+             follows="left|bottom"
+             initial_value="true"
+             label="Include location"
+             layout="topleft"
+             left_delta="0"
+             name="add_location_cb"
+             top_pad="15" />
+        </layout_panel>
+    </layout_stack>
+    <button
+     follows="right|bottom"
+     height="23"
+     label="Cancel"
+     layout="topleft"
+     name="cancel_btn"
+     right="-32"
+     top="350"
+     width="100">
+      <button.commit_callback
+       function="PostToProfile.Cancel" />
+    </button>
+    <button
+     follows="right|bottom"
+     height="23"
+     label="Post"
+     layout="topleft"
+     left_delta="-106"
+     name="post_btn"
+     top_delta="0"
+     width="100">
+      <button.commit_callback
+       function="PostToProfile.Send" />
+    </button>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml
index 5894abd03b20a10fb1fd1a99895a75a0a7169a91..d453a970e7568a03c745ce521c7fc84a3a4c10bb 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -2,7 +2,7 @@
 <panel
  background_opaque="true"
  background_visible="true"
- bg_opaque_color="MouseGray"
+ bg_opaque_color="DkGray"
  chrome="true"
  follows="top|right"
  height="19"
@@ -35,14 +35,11 @@
     </panel.string>
   <panel
     height="18"
-    left="-355"
-    width="95"
+    left="-370"
+    width="160"
     top="1"
     follows="right|top" 
-    name="balance_bg" 
-    bg_visible="true"
-    background_opaque="true" 
-    bg_opaque_image="bevel_background">
+    name="balance_bg">
     <text
      halign="center"
      font="SansSerifSmall"
@@ -60,11 +57,11 @@
      halign="center"
      font="SansSerifSmall"
      follows="right|top|bottom"
-     image_hover_unselected="buy_over"
-     image_unselected="buy_off"
-     image_pressed="buy_press"
+     image_hover_unselected="PushButton_Over"
+     image_unselected="PushButton_Off"
+     image_pressed="PushButton_Press"
      height="18"
-     label="BUY L$"
+     label="Buy L$"
      label_color="White"
      left_pad="0"
      label_shadow="true"
@@ -73,40 +70,41 @@
      pad_bottom="2"
      tool_tip="Click to buy more L$"
      top="0"
-     width="55" />
+     width="80" />
+    <button
+     halign="left"
+     font="SansSerifSmall"
+     follows="right|top|bottom"
+     imgoverlay_label_space="7"
+     image_overlay="Command_MiniCart_Icon"
+     image_overlay_alignment="left"
+     image_hover_unselected="PushButton_Over"
+     image_unselected="PushButton_Off"
+     image_pressed="PushButton_Press"
+     height="18"
+     label="Shop"
+     label_color="White"
+     left_pad="0"
+     label_shadow="true"
+     name="goShop"
+     pad_bottom="2"
+     tool_tip="Open Second Life Marketplace"
+     top="0"
+     width="65" />
   </panel>
-  <combo_box
-    follows="right|top"   
-    drop_down_button.pad_left="10" 
-    left_pad="5"
-    top="0"
-    width="120"
-    height="20"
-    name="mode_combo"
-    tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
-    >
-    <combo_box.item
-      label="Basic Mode"
-      name="Basic"
-      value="settings_minimal.xml" />
-    <combo_box.item
-      label="Advanced Mode"
-      name="Advanced"
-      value="" />
-  </combo_box>
     <text
-      left_pad="5"
      type="string"
      font="SansSerifSmall"
      text_readonly_color="TimeTextColor"
      follows="right|top"
-     halign="center"
+     halign="right"
      height="16"
      top="5"
      layout="topleft"
+     left_pad="0"
      name="TimeText"
      tool_tip="Current time (Pacific)"
-     width="75">
+     width="145">
         24:00 AM PST
     </text>
     <button
@@ -117,7 +115,7 @@
      image_pressed="Pause_Press"
      image_pressed_selected="Play_Press"
      is_toggle="true"
-     left_pad="10"
+     left_pad="15"
      top="1"
      name="media_toggle_btn"
      tool_tip="Start/Stop All Media (Music, Video, Web pages)"
diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml
index 42f64c3a76e2487e670555787fc2c9988c498d0d..062c403a26bdbff9d306668f8bbd4cd2d27da58a 100644
--- a/indra/newview/skins/default/xui/en/panel_toast.xml
+++ b/indra/newview/skins/default/xui/en/panel_toast.xml
@@ -10,6 +10,7 @@
 -->
 
 <floater
+ open_positioning="none"
  legacy_header_height="0"
  header_height="0"
  name="toast"
@@ -20,7 +21,6 @@
  width="310"
  left="0"
  top="0"
- follows="right|bottom"
  background_visible="false"
  bg_opaque_image="Toast_Over"
  bg_alpha_image="Toast_Background"
diff --git a/indra/newview/skins/default/xui/en/panel_toolbar_view.xml b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..58911bed56224ef99e96d1375b1f48fc6b78fd29
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_toolbar_view.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toolbar_view
+ follows="all"
+ layout="topleft"
+ name="toolbar view"
+ height="500"
+ width="1024"
+ left="0"
+ top="0" 
+ mouse_opaque="false"
+ tab_stop="false"
+ visible="true">
+  <layout_stack name="bottom_toolbar_stack"
+                orientation="vertical"
+                left="0"
+                top="0"
+                width="1024"
+                height="500"
+                follows="all"
+                mouse_opaque="false">
+  <layout_panel name="vertical_toolbar_panel"
+                auto_resize="true"
+                width="1024"
+                height="500"
+                mouse_opaque="false">
+    <layout_stack name="vertical_toolbar_stack"
+                  orientation="horizontal"
+                  left="0"
+                  top="0"
+                  width="1024"
+                  height="500"
+                  follows="all"
+                  mouse_opaque="false">
+      <layout_panel name="left_toolbar_panel"
+                    auto_resize="false"
+                    height="500"
+                    width="30"
+                    mouse_opaque="false">
+        <toolbar follows="left|top|bottom"
+                 button_panel.bg_opaque_image="Rounded_Rect_Right"
+                 name="toolbar_left"
+                 width="30"
+                 left="0"
+                 top="10"
+                 bottom="-10"
+                 side="left"
+                 button_display_mode="icons_only">
+	             <icon layout="topleft"
+	                   height="15"
+	                   width="28"
+	                   follows="left|top"
+	                   top="20"
+	                   left="10"
+	                   tab_stop="false" 
+                       visible="false"
+	                   image_name="Caret_Left_Icon"
+                       name="caret" />
+        </toolbar>
+      </layout_panel>
+      <layout_panel name="non_toolbar_panel"
+                    auto_resize="true"
+                    mouse_opaque="false"
+                    height="100"
+                    width="200">
+        <view top="0"
+              follows="all"
+              height="100"
+              left="0"
+              mouse_opaque="false"
+              name="floater_snap_region"
+              width="200"/>
+        <view top="0"
+              follows="left|top|bottom"
+              height="100"
+              left="0"
+              mouse_opaque="false"
+              name="minimized_floaters_region"
+              width="160"/>
+        <panel follows="left|top|right"
+               layout="topleft"
+               height="30"
+               left_pad="10"
+               mouse_opaque="false"
+               name="chiclet_container"
+               tab_stop="false"
+               top="0"
+               bg_visible="false"
+               width="20">
+        </panel>          
+        <panel bottom="100"
+               follows="left|right|bottom"
+               height="25"
+               left="0"
+               mouse_opaque="false"
+               tab_stop="false"
+               name="stand_stop_flying_container"
+               visible="false"
+               width="200"/>
+      </layout_panel>
+      <layout_panel name="right_toolbar_panel"
+                    auto_resize="false"
+                    height="500"
+                    width="30"
+                    mouse_opaque="false">
+        <toolbar
+          button_panel.bg_opaque_image="Rounded_Rect_Left"
+          follows="right|top|bottom"
+          name="toolbar_right"
+          width="30"
+          left="0"
+          top="10"
+          bottom="-10"
+          side="right"
+          button_display_mode="icons_only">
+	      <icon layout="topleft"
+	            height="15"
+	            width="28"
+	            follows="left|top"
+	            top="20"
+	            left="10"
+	            tab_stop="false" 
+                visible="false"
+	            image_name="Caret_Right_Icon"
+	            name="caret" />
+        </toolbar>
+      </layout_panel>
+    </layout_stack>
+  </layout_panel>
+  <layout_panel name="bottom_toolbar_panel"
+                auto_resize="false"
+                height="30"
+                width="1024"
+                mouse_opaque="false">
+    <toolbar layout="topleft"
+             button_panel.bg_opaque_image="Rounded_Rect_Top"
+             name="toolbar_bottom"
+             height="30"
+             left="40"
+             right="-40"
+             top="0"
+             side="bottom"
+             follows="left|right|bottom"
+             button_display_mode="icons_with_text"
+             visible="true">
+             <icon layout="topleft"
+	            height="28"
+	            width="15"
+	            follows="left|top"
+	            top="20"
+	            left="10"
+	            tab_stop="false" 
+                visible="false"
+                use_draw_context_alpha="false"
+	            image_name="Caret_Bottom_Icon"
+	            name="caret" />
+    </toolbar>
+  </layout_panel>
+  </layout_stack>
+</toolbar_view>
diff --git a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
index 79f29777ce62d9e737d614c394cebcc4fb422401..fc527f5f9d2182fb20b04d31e68445c8e6acf7f2 100644
--- a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
@@ -4,7 +4,7 @@
  background_opaque="false"
  bg_opaque_color="Black_50"
  bg_alpha_color="Black_50"
- follows="left|top|right"
+ follows="left|top"
  height="19"
  layout="topleft"
  name="topinfo_bar"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
index 7a176ff3671e2cf9aad5b926a2073227e8135890..fcba937bdbbdc5c6d9dc42c6c6ad823710de3876 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
-	  background_visible="true"
 	  follows="all"
 	  height="570"
 	  label="Things"
@@ -30,11 +29,12 @@
               width="330">
              <layout_panel
                  name="main_inventory_layout_panel"
-								 layout="topleft"
+                 layout="topleft"
+                 auto_resize="true"
+                 user_resize="true"
                  min_dim="150"
                  width="330"
                  follows="bottom|left|right"
-                 user_resize="false"
                  height="300">
                  <panel
                       class="panel_main_inventory"
@@ -48,39 +48,18 @@
                       height="300"
                       width="330" />
              </layout_panel>
-					   <layout_panel
-                 width="330"
-								 layout="topleft"
-                 auto_resize="true"
-                 user_resize="false"
-                 follows="bottom|left|right"
-                 name="inbox_outbox_layout_panel"
-                 visible="false"
-                 min_dim="35"
-                 max_dim="235"
-                 expanded_min_dim="125"
-                 height="235">
-							 <layout_stack
-										follows="left|right|top|bottom"
-										layout="topleft"
-										left="0"
-										top="0"
-										orientation="vertical"
-										name="inbox_outbox_layout_stack"
-										height="235"
-										width="330">
-								 <layout_panel
+			 <layout_panel
                  width="330"
-								 layout="topleft"
+                 layout="topleft"
                  auto_resize="true"
-                 user_resize="false"
+                 user_resize="true"
                  follows="left|right|top"
                  name="inbox_layout_panel"
                  visible="false"
                  min_dim="35"
-                 max_dim="200"
+                 max_dim="235"
                  expanded_min_dim="90"
-                 height="200">
+                 height="235">
                  <panel
                       follows="all"
                       layout="topleft"
@@ -89,13 +68,13 @@
                       class="panel_marketplace_inbox"
                       top="0"
                       label=""
-                      height="200"
+                      height="235"
                       width="330">
-                     <string name="InboxLabelWithArg">Received Items ([NUM])</string>
-                     <string name="InboxLabelNoArg">Received Items</string>
+                     <string name="InboxLabelWithArg">Received items ([NUM])</string>
+                     <string name="InboxLabelNoArg">Received items</string>
                      <button
-                        label="Received Items"
-												font="SansSerifMedium"
+                        label="Received items"
+						font="SansSerifMedium"
                         name="inbox_btn"
                         height="35"
                         width="308"
@@ -122,12 +101,12 @@
                         halign="right"
                         top_pad="0"
                         width="300">
-                        [NUM] New
+                        [NUM] new
                      </text>
                      <panel
                         follows="all"
                         left="10"
-                        bottom="200"
+                        bottom="235"
                         width="308"
                         top="35"
                         bg_opaque_color="InventoryBackgroundColor"
@@ -143,7 +122,7 @@
 							top="0"
 							left="0"
 							width="308"
-							height="165"
+							height="200"
 							wrap="true"
 							halign="center">
 							Purchases from the marketplace will be delivered here.
@@ -151,139 +130,6 @@
                     </panel>
                  </panel>
              </layout_panel>
-             <layout_panel
-                 width="330"
-                 layout="topleft"
-                 auto_resize="true"
-                 user_resize="false"
-                 follows="all"
-                 name="outbox_layout_panel"
-                 visible="false"
-                 min_dim="35"
-                 max_dim="200"
-                 expanded_min_dim="90"
-                 height="200">
-                 <panel
-                      follows="all"
-                      layout="topleft"
-                      left="0"
-                      name="marketplace_outbox"
-                      class="panel_marketplace_outbox"
-                      top="0"
-                      label=""
-                      height="200"
-                      width="330">
-                     <string name="OutboxLabelWithArg">Merchant Outbox ([NUM])</string>
-                     <string name="OutboxLabelNoArg">Merchant Outbox</string>
-                     <button
-                        label="Merchant Outbox"
-                        font="SansSerifMedium"
-                        name="outbox_btn"
-                        height="35"
-                        width="308"
-                        image_unselected="MarketplaceBtn_Off"
-                        image_selected="MarketplaceBtn_Selected"
-                        halign="left"
-                        handle_right_mouse="false"
-                        follows="top|left|right"
-                        is_toggle="true"
-                        tab_stop="false"
-                        pad_left="35"
-                        top="0"
-                        left="10" />
-                     <button
-                         image_unselected="OutboxPush_Off"
-                         image_selected="OutboxPush_Selected"
-                         image_hover_selected="OutboxPush_Selected_Over"
-                         image_hover_unselected="OutboxPush_Over"
-                         image_disabled_selected="OutboxPush_Selected_Disabled"
-                         image_disabled="OutboxPush_Disabled"
-                         image_pressed="OutboxPush_Press"
-                         image_pressed_selected="OutboxPush_Selected_Press"
-                         label=""
-                         tool_tip="Push to my Marketplace Storefront"
-                         is_toggle="false"
-                         name="outbox_sync_btn"
-                         follows="top|right"
-                         tab_stop="false"
-                         halign="center"
-                         top="6"
-                         left="-50"
-                         height="23"
-                         width="32"
-                         enabled="false" />
-                     <loading_indicator
-                        follows="top|right"
-                        name="outbox_sync_indicator"
-                        top="6"
-                        left="-50"
-                        height="23"
-                        width="32"
-                        images_per_sec="1.15"
-                        tab_stop="false"
-                        visible="false">
-                         <images>
-                             <image name="OutboxPush_Progress_1"/>
-                             <image name="OutboxPush_Progress_2"/>
-                             <image name="OutboxPush_Progress_3"/>
-                             <image name="OutboxPush_Progress_4"/>
-                             <image name="OutboxPush_Progress_5"/>
-                             <image name="OutboxPush_Progress_6"/>
-                         </images>
-                     </loading_indicator>
-                     <panel
-                        follows="all"
-                        left="10"
-                        bottom="200"
-                        width="308"
-                        top="35"
-                        bg_opaque_color="InventoryBackgroundColor"
-                        background_visible="true"
-                        background_opaque="true"
-                        >
-						<panel
-							name="outbox_inventory_placeholder_panel"
-							follows="all"
-							layout="topleft"
-							top="0"
-							left="0"
-							width="308"
-							height="165"
-							bg_opaque_color="InventoryBackgroundColor"
-							background_visible="true"
-							background_opaque="true"
-							>
-							<text
-								name="outbox_inventory_placeholder_title"
-								type="string"
-								follows="all"
-								layout="topleft"
-								top="10"
-								left="0"
-								width="308"
-								height="25"
-								wrap="true"
-								halign="center"
-								font="SansSerifBold">
-								Loading...
-							</text>
-							<text
-								name="outbox_inventory_placeholder_text"
-								type="string"
-								follows="all"
-								layout="topleft"
-								top="35"
-								left="0"
-								width="308"
-								height="130"
-								wrap="true"
-								halign="left" />
-						</panel>
-                    </panel>
-                 </panel>
-             </layout_panel>
-						 </layout_stack>
-						 </layout_panel>
          </layout_stack>
 		<panel
 		     follows="bottom|left|right"
@@ -310,7 +156,6 @@
                      left="0"			
                      mouse_opaque="false"
                      name="info_btn_lp"
-                     user_resize="false" 
                      auto_resize="true"
                      width="101">
                     <button
@@ -332,7 +177,6 @@
                      left_pad="1"			
                      mouse_opaque="false"
                      name="share_btn_lp"
-                     user_resize="false" 
                      auto_resize="true"
                      width="100">
                     <button
@@ -354,7 +198,6 @@
                      left_pad="1"			
                      mouse_opaque="false"
                      name="shop_btn_lp"
-                     user_resize="false" 
                      auto_resize="true"
                      width="100">
                     <button
@@ -404,8 +247,7 @@
 			</layout_stack>
 		</panel>
 	</panel>
-
-<panel
+	<panel
 		 follows="all"
 		 layout="topleft"
 		 left="0"
@@ -418,8 +260,7 @@
 		 visible="false"
 		 width="330">
 	</panel>
-
-<panel
+	<panel
 		 follows="all"
 		 layout="topleft"
 		 left="0"
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 c2394a3fa28332464a2d4ed498a5c98359c3ed70..6600339ad710e4c6ad6f8845cf03cf521adab2c0 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
@@ -55,7 +55,7 @@
                 Mixed Sale
             </panel.string>
     <button
-     follows="top|right"
+     follows="top|left"
      height="24"
      image_hover_unselected="BackButton_Over"
      image_pressed="BackButton_Press"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 5d2db8cc4cc9639974f5220a3112124241c7caf1..3351ffe00fb5a7c9fca86a2ef73d9362912bfb0a 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -16,16 +16,16 @@
 	<string name="StartupDetectingHardware">Detecting hardware...</string>
 	<string name="StartupLoading">Loading [APP_NAME]...</string>
 	<string name="StartupClearingCache">Clearing cache...</string>
-	<string name="StartupInitializingTextureCache">Initializing Texture Cache...</string>
+	<string name="StartupInitializingTextureCache">Initializing texture cache...</string>
 	<string name="StartupInitializingVFS">Initializing VFS...</string>
-  <string name="StartupRequireDriverUpdate">Graphics Initialization Failed. Please Update Your Graphics Driver!</string>
+	<string name="StartupRequireDriverUpdate">Graphics initialization failed. Please update your graphics driver!</string>
 
 	<!--  progress -->
 	<string name="ProgressRestoring">Restoring...</string>
-	<string name="ProgressChangingResolution">Changing Resolution...</string>
+	<string name="ProgressChangingResolution">Changing resolution...</string>
 
 	<!-- Legacy strings, almost never used -->
-	<string name="Fullbright">Fullbright (Legacy)</string>	<!-- used in the Build > materials dropdown-->
+	<string name="Fullbright">Fullbright (legacy)</string>	<!-- used in the Build > materials dropdown-->
 
 	<!-- Login -->
 	<string name="LoginInProgress">Logging in. [APP_NAME] may appear frozen.  Please wait.</string>
@@ -35,11 +35,11 @@
 	<string name="LoginAttempt">Previous login attempt failed. Logging in, attempt [NUMBER]</string>
 	<string name="LoginPrecaching">Loading world...</string>
 	<string name="LoginInitializingBrowser">Initializing embedded web browser...</string>
-  <string name="LoginInitializingMultimedia">Initializing multimedia...</string>
-  <string name="LoginInitializingFonts">Loading fonts...</string>
-  <string name="LoginVerifyingCache">Verifying cache files (can take 60-90 seconds)...</string>
-	<string name="LoginProcessingResponse">Processing Response...</string>
-	<string name="LoginInitializingWorld">Initializing World...</string>
+	<string name="LoginInitializingMultimedia">Initializing multimedia...</string>
+	<string name="LoginInitializingFonts">Loading fonts...</string>
+	<string name="LoginVerifyingCache">Verifying cache files (can take 60-90 seconds)...</string>
+	<string name="LoginProcessingResponse">Processing response...</string>
+	<string name="LoginInitializingWorld">Initializing world...</string>
 	<string name="LoginDecodingImages">Decoding images...</string>
 	<string name="LoginInitializingQuicktime">Initializing QuickTime...</string>
 	<string name="LoginQuicktimeNotFound">QuickTime not found - unable to initialize.</string>
@@ -49,14 +49,14 @@
 	<string name="LoginWaitingForRegionHandshake">Waiting for region handshake...</string>
 	<string name="LoginConnectingToRegion">Connecting to region...</string>
 	<string name="LoginDownloadingClothing">Downloading clothing...</string>
-        <string name="InvalidCertificate">The server returned an invalid or corrupt certificate. Please contact the Grid administrator.</string>
-        <string name="CertInvalidHostname">An invalid hostname was used to access the server, please check your SLURL or Grid hostname.</string>
-        <string name="CertExpired">The certificate returned by the Grid appears to be expired.  Please check your system clock, or contact your Grid administrator.</string>
-        <string name="CertKeyUsage">The certificate returned by the server could not be used for SSL.  Please contact your Grid administrator.</string>
-        <string name="CertBasicConstraints">Too many certificates were in the servers Certificate chain.  Please contact your Grid administrator.</string>
-        <string name="CertInvalidSignature">The certificate signature returned by the Grid server could not be verified.  Please contact your Grid administrator.</string>
-
-	<string name="LoginFailedNoNetwork">Network Error: Could not establish connection, please check your network connection.</string>
+	<string name="InvalidCertificate">The server returned an invalid or corrupt certificate. Please contact the Grid administrator.</string>
+	<string name="CertInvalidHostname">An invalid hostname was used to access the server, please check your SLURL or Grid hostname.</string>
+	<string name="CertExpired">The certificate returned by the Grid appears to be expired.  Please check your system clock, or contact your Grid administrator.</string>
+	<string name="CertKeyUsage">The certificate returned by the server could not be used for SSL.  Please contact your Grid administrator.</string>
+	<string name="CertBasicConstraints">Too many certificates were in the servers Certificate chain.  Please contact your Grid administrator.</string>
+	<string name="CertInvalidSignature">The certificate signature returned by the Grid server could not be verified.  Please contact your Grid administrator.</string>
+
+	<string name="LoginFailedNoNetwork">Network error: Could not establish connection, please check your network connection.</string>
 	<string name="LoginFailed">Login failed.</string>
 	<string name="Quit">Quit</string>
 	<string name="create_account_url">http://join.secondlife.com/</string>
@@ -88,7 +88,7 @@ We are very sorry for the inconvenience.</string>
 Logins are currently restricted to employees only.
 Check www.secondlife.com/status for updates.</string>
 	<string name="LoginFailedPremiumOnly">Second Life logins are temporarily restricted in order to make sure that those in-world have the best possible experience.
-	 	
+
 People with free accounts will not be able to access Second Life during this time, to make room for those who have paid for Second Life.</string>
 	<string name="LoginFailedComputerProhibited">Second Life cannot be accessed from this computer.
 If you feel this is an error, please contact
@@ -164,10 +164,18 @@ Please try logging in again in a minute.</string>
 	<string name="TooltipLand">Land:</string>
 	<string name="TooltipMustSingleDrop">Only a single item can be dragged here</string>
 	<string name="TooltipPrice" value="L$[AMOUNT]: "/>
-	<string name="TooltipOutboxNoTransfer">One or more of these objects cannot be sold or transferred to another user.</string>
-	<string name="TooltipOutboxWorn">You are wearing one or more of these objects. Remove them from your avatar and try moving them again.</string>
-	<string name="TooltipOutboxFolderLevels">This folder has too many levels of subfolders. Rearrange the interior folders to a maximum of 4 levels deep (Root Folder contains A contains B contains C).</string>
-	<string name="TooltipOutboxTooManyObjects">This folder contains more than 200 objects. Box some of the items to reduce the object count.</string>
+
+	<string name="TooltipOutboxDragToWorld">You can not rez items in your merchant outbox</string>
+	<string name="TooltipOutboxNoTransfer">One or more of these objects cannot be sold or transferred.</string>
+	<string name="TooltipOutboxNotInInventory">Your merchant outbox can only accept items directly from your inventory</string>
+	<string name="TooltipOutboxWorn">You can not put items you are wearing into your merchant outbox</string>
+	<string name="TooltipOutboxCallingCard">You can not put calling cards into your merchant outbox</string>
+	<string name="TooltipOutboxFolderLevels">Depth of nested folders exceeds 3</string>
+	<string name="TooltipOutboxTooManyFolders">Subfolder count in top-level folder exceeds 20</string>
+	<string name="TooltipOutboxTooManyObjects">Item count in top-level folder exceeds 200</string>
+	
+	<string name="TooltipDragOntoOwnChild">You can't move a folder into its child</string>
+	<string name="TooltipDragOntoSelf">You can't move a folder into itself</string>
 	
 	<!-- tooltips for Urls -->
 	<string name="TooltipHttpUrl">Click to view this web page</string>
@@ -188,7 +196,7 @@ Please try logging in again in a minute.</string>
 	<string name="TooltipObjectIMUrl">Click to view this object's description</string>
 	<string name="TooltipMapUrl">Click to view this location on a map</string>
 	<string name="TooltipSLAPP">Click to run the secondlife:// command</string>
-	<string name="CurrentURL" value=" CurrentURL: [CurrentURL]" />	
+	<string name="CurrentURL" value=" CurrentURL: [CurrentURL]" />
 
 	<!-- text for SLURL labels -->
 	<string name="SLurlLabelTeleport">Teleport to</string>
@@ -427,9 +435,10 @@ Please try logging in again in a minute.</string>
 	<string name="compressed_image_files">Compressed Images</string>
 	<string name="load_files">Load Files</string>
 	<string name="choose_the_directory">Choose Directory</string>
+	<string name="script_files">Scripts</string>
 
-	<!-- LSL Usage Hover Tips -->
-	<!-- NOTE: For now these are set as translate="false", until DEV-40761 is implemented (to internationalize the rest of tooltips in the same window).
+  <!-- LSL Usage Hover Tips -->
+  <!-- NOTE: For now these are set as translate="false", until DEV-40761 is implemented (to internationalize the rest of tooltips in the same window).
              This has no effect on viewer code, but prevents Linden Lab internal localization tool from scraping these strings.  -->
 	<string name="LSLTipSleepTime" translate="false">
 Sleeps script for [SLEEP_TIME] seconds.
@@ -1950,7 +1959,7 @@ Returns a string with the requested data about the region
   <string name="physics">Physics</string>
   <string name="invalid">invalid</string>
   <string name="none">none</string>
-  
+
   <!-- Not Worn Wearable Types -->
 	<string name="shirt_not_worn">Shirt not worn</string>
 	<string name="pants_not_worn">Pants not worn</string>
@@ -1987,7 +1996,7 @@ Returns a string with the requested data about the region
 
   <!-- Wearable List-->
   <string name="NewWearable">New [WEARABLE_ITEM]</string>
-  
+
 	<!-- LLGroupNotify -->
 	<!-- used in the construction of a Group Notice blue dialog box, buttons, tooltip etc. Seems to be no longer utilized by code in Viewer 2.0 -->
 	<string name="next">Next</string>
@@ -2028,29 +2037,35 @@ Returns a string with the requested data about the region
 	<string name="PlacesNoMatchingItems">Didn't find what you're looking for? Try [secondlife:///app/search/places/[SEARCH_TERM] Search].</string>
 	<string name="FavoritesNoMatchingItems">Drag a landmark here to add it to your favorites.</string>
 	<string name="InventoryNoTexture">You do not have a copy of this texture in your inventory</string>
-	<string name="InventoryInboxNoItems">Items purchased through the marketplace will be delivered here.</string>
-	<string name="MarketplaceURL">http://marketplace.[DOMAIN_NAME]</string>
-	<string name="MarketplaceURL_CreateStore">http://marketplace.[DOMAIN_NAME]/create_store</string>
-	<string name="MarketplaceURL_LearnMore">http://marketplace.[DOMAIN_NAME]/learn_more</string>
-	<string name="InventoryOutboxCreationErrorTitle">Your Merchant Outbox is not properly configured</string>
-	<string name="InventoryOutboxCreationErrorTooltip">Merchant Outbox configuration error</string>
-	<string name="InventoryOutboxCreationError">Please contact Customer Service to correct the problem.</string>
-	<string name="InventoryOutboxNotMerchantTitle">Anyone can sell items on the Marketplace</string>
-	<string name="InventoryOutboxNotMerchantTooltip">Become a merchant!</string>
-	<string name="InventoryOutboxNotMerchant">[[MARKETPLACE_URL] The Second Life Marketplace] offers more than one million virtual products for sale, all of them created by Residents. You, too, can sell items you create, as well as some of the items you have purchased. It’s easy and setup is free.  [[LEARN_MORE_URL] Learn more] or [[CREATE_STORE_URL] create a store] on the Marketplace to get started.</string>
-	<string name="InventoryOutboxNoItemsTitle">A new way to send items to the Marketplace</string>
-	<string name="InventoryOutboxNoItemsTooltip">Drag and drop items here to prepare them for sale on the Marketplace</string>
-	<string name="InventoryOutboxNoItems">Drag items or folders that you wish to sell into this area.  A copy of the item will appear, leaving your inventory unchanged, unless you have dragged a no-copy item.  When you are ready to send the items to the Marketplace, click the Upload button. Once your items have been moved to your Marketplace Inventory, they will disappear from this folder.</string>
+	<string name="InventoryInboxNoItems">Certain items you receive, such as premium gifts, will appear here.  You may then drag them into your inventory.</string>
+	<string name="MarketplaceURL">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/</string>
+	<string name="MarketplaceURL_CreateStore">http://community.secondlife.com/t5/English-Knowledge-Base/Selling-in-the-Marketplace/ta-p/700193#Section_.4</string>
+	<string name="MarketplaceURL_Dashboard">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/dashboard</string>
+	<string name="MarketplaceURL_Imports">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/merchants/store/imports</string>
+	<string name="MarketplaceURL_LearnMore">https://marketplace.[MARKETPLACE_DOMAIN_NAME]/learn_more</string>
+	<string name="InventoryOutboxNotMerchantTitle">Anyone can sell items on the Marketplace.</string>
+	<string name="InventoryOutboxNotMerchantTooltip"></string>
+	<string name="InventoryOutboxNotMerchant">
+If you'd like to become a merchant, you'll need to [[MARKETPLACE_CREATE_STORE_URL] create a Marketplace store].
+	</string>
+	<string name="InventoryOutboxNoItemsTitle">Your outbox is empty.</string>
+	<string name="InventoryOutboxNoItemsTooltip"></string>
+	<string name="InventoryOutboxNoItems">
+Drag folders to this area and click "Send to Marketplace" to list them for sale on the [[MARKETPLACE_DASHBOARD_URL] Marketplace].
+	</string>
 
 	<string name="Marketplace Error None">No errors</string>
 	<string name="Marketplace Error Not Merchant">Error: Before sending items to the Marketplace you will need to set yourself up as a merchant (free of charge).</string>
 	<string name="Marketplace Error Empty Folder">Error: This folder has no contents.</string>
-	<string name="Marketplace Error Unassociated Products">Error: This item failed to upload because your merchant account has too many items unassociated with products.  To fix this error, login to the marketplace website and reduce your unassociated item count.</string>
+	<string name="Marketplace Error Unassociated Products">Error: This item failed to upload because your merchant account has too many items unassociated with products.  To fix this error, log in to the marketplace website and reduce your unassociated item count.</string>
+
 	<string name="Marketplace Error Object Limit">Error: This item contains too many objects.  Fix this error by placing objects together in boxes to reduce the total count to less than 200.</string>
 	<string name="Marketplace Error Folder Depth">Error: This item contains too many levels of nested folders.  Reorganize it to a maximum of 3 levels of nested folders.</string>
 	<string name="Marketplace Error Unsellable Item">Error: This item can not be sold on the marketplace.</string>
 	<string name="Marketplace Error Internal Import">Error: There was a problem with this item.  Try again later.</string>
 
+	<string name="Open landmarks">Open landmarks</string>
+
 	<!-- use value="" because they have preceding spaces -->
 	<string name="no_transfer" value=" (no transfer)" />
 	<string name="no_modify"   value=" (no modify)" />
@@ -2131,6 +2146,7 @@ Returns a string with the requested data about the region
 	<string name="InvFolder All">All</string>
 
 	<string name="no_attachments">No attachments worn</string>
+    <string name="Attachments remain">Attachments ([COUNT] slots remain)</string>
 
 	<!-- inventory FVBridge -->
 	<!--  This is used in llpanelinventory.cpp when constructing a context menu for an item for Sale  -->
@@ -2181,6 +2197,8 @@ Returns a string with the requested data about the region
 	<string name="Stomach">Stomach</string>
 	<string name="Left Pec">Left Pec</string>
 	<string name="Right Pec">Right Pec</string>
+    <string name="Neck">Neck</string>
+    <string name="Avatar Center">Avatar Center</string>
 	<string name="Invalid Attachment">Invalid Attachment Point</string>
 
   <!-- Avatar age computation, see LLDateUtil::ageFromDate -->
@@ -2309,7 +2327,7 @@ Returns a string with the requested data about the region
 	<string name="ScriptLimitsRequestWrongRegion">Error: script information is only available in your current region</string>
 	<string name="ScriptLimitsRequestWaiting">Retrieving information...</string>
 	<string name="ScriptLimitsRequestDontOwnParcel">You do not have permission to examine this parcel</string>
-	
+
 	<string name="SITTING_ON">Sitting On</string>
 	<string name="ATTACH_CHEST">Chest</string>
 	<string name="ATTACH_HEAD">Head</string>
@@ -2349,7 +2367,7 @@ Returns a string with the requested data about the region
 	<string name="ATTACH_HUD_BOTTOM_LEFT">HUD Bottom Left</string>
 	<string name="ATTACH_HUD_BOTTOM">HUD Bottom</string>
 	<string name="ATTACH_HUD_BOTTOM_RIGHT">HUD Bottom Right</string>
-			
+
 	<!-- script editor -->
 	<string name="CursorPos">Line [LINE], Column [COLUMN]</string>
 
@@ -2362,7 +2380,7 @@ Returns a string with the requested data about the region
 
 	<!-- panel contents -->
 	<string name="PanelContentsTooltip">Content of object</string>
-	<string name="PanelContentsNewScript">New Script</string>	
+	<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>
@@ -2392,7 +2410,7 @@ Returns a string with the requested data about the region
 	<!-- panel classified -->
 	<string name="ClassifiedClicksTxt">Clicks: [TELEPORT] teleport, [MAP] map, [PROFILE] profile</string>
 	<string name="ClassifiedUpdateAfterPublish">(will update after publish)</string>
-  
+
   <!-- panel picks -->
   <string name="NoPicksClassifiedsText">You haven't created any Picks or Classifieds. Click the Plus button below to create a Pick or Classified.</string>
   <string name="NoAvatarPicksClassifiedsText">User has no picks or classifieds</string>
@@ -3269,7 +3287,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
     You have blocked this Resident. Sending a message will automatically unblock them.
   </string>
   <!--Some times string name is getting from the body of server response.
-  For ex.: from gIMMgr::showSessionStartError in the LLViewerChatterBoxSessionStartReply::post. 
+  For ex.: from gIMMgr::showSessionStartError in the LLViewerChatterBoxSessionStartReply::post.
   In case of the EXT-3115 issue 'generic' is passed into the gIMMgr::showSessionStartError as a string name.
   Also there are some other places where "generic" is used.
   So, let add string with name="generic" with the same value as "generic_request_error" -->
@@ -3295,7 +3313,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
     You are not a session moderator.
   </string>
   <!--Some times string name is getting from the body of server response.
-  For ex.: from gIMMgr::showSessionStartError in the LLViewerChatterBoxSessionStartReply::post. 
+  For ex.: from gIMMgr::showSessionStartError in the LLViewerChatterBoxSessionStartReply::post.
   In case of the EXT-3562 issue 'muted' is passed into the gIMMgr::showSessionStartError as a string name.
   So, let add string with name="muted" with the same value as "muted_error" -->
   <string name="muted">
@@ -3308,12 +3326,12 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
     Unable to add users to chat session with [RECIPIENT].
   </string>
   <!--Some times string name is getting from the body of server response.
-  For ex.: from gIMMgr::showSessionStartError in the LLViewerChatterBoxSessionStartReply::post. 
+  For ex.: from gIMMgr::showSessionStartError in the LLViewerChatterBoxSessionStartReply::post.
   In case of the EXT-3562 issue 'message' is passed into the gIMMgr::showSessionStartError as a string name.
   So, let add string with name="message" with the same value as "message_session_event" -->
   <string name="message">
     Unable to send your message to the chat session with [RECIPIENT].
-  </string>  
+  </string>
   <string name="message_session_event">
     Unable to send your message to the chat session with [RECIPIENT].
   </string>
@@ -3321,7 +3339,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
     Error while moderating.
   </string>
   <!--Some times string name is getting from the body of server response.
-  For ex.: from gIMMgr::showSessionStartError in the LLViewerChatterBoxSessionStartReply::post. 
+  For ex.: from gIMMgr::showSessionStartError in the LLViewerChatterBoxSessionStartReply::post.
   In case of the EXT-3459 issue 'removed' is passed into the gIMMgr::showSessionStartError as a string name.
   So, let add string with name="removed" with the same value as "removed_from_group" -->
   <string name="removed">
@@ -3342,9 +3360,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 	<string name="session_initialization_timed_out_error">
 		The session initialization is timed out
 	</string>
-  
+
   <string name="Home position set.">Home position set.</string>
-  
+
   <string name="voice_morphing_url">http://secondlife.com/landing/voicemorphing</string>
 
   <!-- Financial operations strings -->
@@ -3354,6 +3372,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
   <string name="you_paid_ldollars_no_info">You paid L$[AMOUNT].</string>
   <string name="you_paid_ldollars_no_reason">You paid [NAME] L$[AMOUNT].</string>
   <string name="you_paid_ldollars_no_name">You paid L$[AMOUNT] [REASON].</string>
+  <string name="you_paid_failure_ldollars">You failed to pay [NAME] L$[AMOUNT] [REASON].</string>
+  <string name="you_paid_failure_ldollars_no_info">You failed to pay L$[AMOUNT].</string>
+  <string name="you_paid_failure_ldollars_no_reason">You failed to pay [NAME] L$[AMOUNT].</string>
+  <string name="you_paid_failure_ldollars_no_name">You failed to pay L$[AMOUNT] [REASON].</string>
   <string name="for item">for [ITEM]</string>
   <string name="for a parcel of land">for a parcel of land</string>
   <string name="for a land access pass">for a land access pass</string>
@@ -3362,20 +3384,20 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
   <string name="to join a group">to join a group</string>
   <string name="to upload">to upload</string>
   <string name="to publish a classified ad">to publish a classified ad</string>
-  
+
   <string name="giving">Giving L$ [AMOUNT]</string>
   <string name="uploading_costs">Uploading costs L$ [AMOUNT]</string>
   <string name="this_costs">This costs L$ [AMOUNT]</string>
   <string name="buying_selected_land">Buying selected land for L$ [AMOUNT]</string>
   <string name="this_object_costs">This object costs L$ [AMOUNT]</string>
-  
+
   <string name="group_role_everyone">Everyone</string>
   <string name="group_role_officers">Officers</string>
   <string name="group_role_owners">Owners</string>
   <string name="group_member_status_online">Online</string>
 
   <string name="uploading_abuse_report">Uploading...
-  
+
 Abuse Report</string>
 
   <!-- names for new inventory items-->
@@ -3439,7 +3461,7 @@ Abuse Report</string>
   <string name="Female - Stick tougue out">Female - Stick tougue out</string>
   <string name="Female - Wow">Female - Wow</string>
 
-  <string name="/bow1">/bow1</string>
+  <string name="/bow">/bow</string>
   <string name="/clap">/clap</string>
   <string name="/count">/count</string>
   <string name="/extinguish">/extinguish</string>
@@ -3469,23 +3491,23 @@ Abuse Report</string>
 
   <!-- birth date format shared by avatar inspector and profile panels -->
   <string name="AvatarBirthDateFormat">[mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt]</string>
-  
+
   <string name="DefaultMimeType">none/none</string>
   <string name="texture_load_dimensions_error">Can't load images larger than [WIDTH]*[HEIGHT]</string>
 
   <!-- language specific white-space characters, delimiters, spacers, item separation symbols -->
   <string name="sentences_separator" value=" "></string>
   <string name="words_separator" value=", "/>
-  
+
   <string name="server_is_down">
 	Despite our best efforts, something unexpected has gone wrong.
 
-	Please check status.secondlifegrid.net to see if there is a known problem with the service.  
+	Please check status.secondlifegrid.net to see if there is a known problem with the service.
         If you continue to experience problems, please check your network and firewall setup.
   </string>
 
-  <!-- overriding datetime formating. 
-	didn't translate if this is not needed for current localization 
+  <!-- overriding datetime formating.
+	didn't translate if this is not needed for current localization
   -->
   <string name="dateTimeWeekdaysNames">Sunday:Monday:Tuesday:Wednesday:Thursday:Friday:Saturday</string>
   <string name="dateTimeWeekdaysShortNames">Sun:Mon:Tue:Wed:Thu:Fri:Sat</string>
@@ -3518,7 +3540,7 @@ Abuse Report</string>
   <string name="DeleteItem">Delete selected item?</string>
 
   <string name="EmptyOutfitText">There are no items in this outfit</string>
- 
+
  <!-- External editor status codes -->
  <string name="ExternalEditorNotSet">Select an editor using the ExternalEditor setting.</string>
  <string name="ExternalEditorNotFound">Cannot find the external editor you specified.
@@ -3527,6 +3549,10 @@ Try enclosing path to the editor with double quotes.
  <string name="ExternalEditorCommandParseError">Error parsing the external editor command.</string>
  <string name="ExternalEditorFailedToRun">External editor failed to run.</string>
 
+ <!--  Machine translation of chat messahes -->
+ <string name="TranslationFailed">Translation failed: [REASON]</string>
+ <string name="TranslationResponseParseError">Error parsing translation response.</string>
+
   <!-- Key names begin -->
   <string name="Esc">Esc</string>
   <string name="Space">Space</string>
@@ -3650,8 +3676,66 @@ Try enclosing path to the editor with double quotes.
   <string name="BeaconSound">Viewing sound beacons (yellow)</string>
   <string name="BeaconMedia">Viewing media beacons (white)</string>
   <string name="ParticleHiding">Hiding Particles</string>
-  
-  <!-- Mesh UI terms -->
+
+  <!-- commands -->
+
+  <string name="Command_AboutLand_Label">About land</string>
+  <string name="Command_Appearance_Label">Appearance</string>
+  <string name="Command_Avatar_Label">Avatar</string>
+  <string name="Command_Build_Label">Build</string>
+  <string name="Command_Chat_Label">Chat</string>
+  <string name="Command_Compass_Label">Compass</string>
+  <string name="Command_Destinations_Label">Destinations</string>
+  <string name="Command_Gestures_Label">Gestures</string>
+  <string name="Command_HowTo_Label">How to</string>
+  <string name="Command_Inventory_Label">Inventory</string>
+  <string name="Command_Map_Label">Map</string>
+  <string name="Command_Marketplace_Label">Marketplace</string>
+  <string name="Command_MiniMap_Label">Mini-map</string>
+  <string name="Command_Move_Label">Walk / run / fly</string>
+  <string name="Command_Outbox_Label">Merchant outbox</string>
+  <string name="Command_People_Label">People</string>
+  <string name="Command_Picks_Label">Picks</string>
+  <string name="Command_Places_Label">Places</string>
+  <string name="Command_Preferences_Label">Preferences</string>
+  <string name="Command_Profile_Label">Profile</string>
+  <string name="Command_Search_Label">Search</string>
+  <string name="Command_Snapshot_Label">Snapshot</string>
+  <string name="Command_Speak_Label">Speak</string>
+  <string name="Command_View_Label">Camera controls</string>
+  <string name="Command_Voice_Label">Voice settings</string>
+
+  <string name="Command_AboutLand_Tooltip">Information about the land you're visiting</string>
+  <string name="Command_Appearance_Tooltip">Change your avatar</string>
+  <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_Compass_Tooltip">Compass</string>
+  <string name="Command_Destinations_Tooltip">Destinations of interest</string>
+  <string name="Command_Gestures_Tooltip">Gestures for your avatar</string>
+  <string name="Command_HowTo_Tooltip">How to do common tasks</string>
+  <string name="Command_Inventory_Tooltip">View and use your belongings</string>
+  <string name="Command_Map_Tooltip">Map of the world</string>
+  <string name="Command_Marketplace_Tooltip">Go shopping</string>
+  <string name="Command_MiniMap_Tooltip">Show nearby people</string>
+  <string name="Command_Move_Tooltip">Moving your avatar</string>
+  <string name="Command_Outbox_Tooltip">Transfer items to your marketplace for sale</string>
+  <string name="Command_People_Tooltip">Friends, groups, and nearby people</string>
+  <string name="Command_Picks_Tooltip">Places to show as favorites in your profile</string>
+  <string name="Command_Places_Tooltip">Places you've saved</string>
+  <string name="Command_Preferences_Tooltip">Preferences</string>
+  <string name="Command_Profile_Tooltip">Edit or view your profile</string>
+  <string name="Command_Search_Tooltip">Find places, events, people</string>
+  <string name="Command_Snapshot_Tooltip">Take a picture</string>
+  <string name="Command_Speak_Tooltip">Speak with people nearby using your microphone</string>
+  <string name="Command_View_Tooltip">Changing camera angle</string>
+  <string name="Command_Voice_Tooltip">Volume controls for calls and people near you in world</string>
+
+  <string name="Toolbar_Bottom_Tooltip">currently in your bottom toolbar</string>
+  <string name="Toolbar_Left_Tooltip"  >currently in your left toolbar</string>
+  <string name="Toolbar_Right_Tooltip" >currently in your right toolbar</string>
+
+ <!-- Mesh UI terms -->
   <string name="Retain%">Retain%</string>
   <string name="Detail">Detail</string>
   <string name="Better Detail">Better Detail</string>
@@ -3661,4 +3745,11 @@ Try enclosing path to the editor with double quotes.
   <string name="Preview">Preview</string>
   <string name="Normal">Normal</string>
 
+  <!-- Snapshot image quality levels -->
+  <string name="snapshot_quality_very_low">Very Low</string>
+  <string name="snapshot_quality_low">Low</string>
+  <string name="snapshot_quality_medium">Medium</string>
+  <string name="snapshot_quality_high">High</string>
+  <string name="snapshot_quality_very_high">Very High</string>
+
   </strings>
diff --git a/indra/newview/skins/default/xui/en/teleport_strings.xml b/indra/newview/skins/default/xui/en/teleport_strings.xml
index bae821d3b5583282d6d3a7371d3aa524b9b9cc5d..dce6b8dd6d6182fd5244c8778add4b624b63221d 100644
--- a/indra/newview/skins/default/xui/en/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/en/teleport_strings.xml
@@ -19,6 +19,10 @@ If you still cannot teleport, please log out and log back in to resolve the prob
 		<message name="timeout_tport">
 			Sorry, but system was unable to complete the teleport connection.
 Try again in a moment.
+		</message>
+		<message name="NoHelpIslandTP">
+You cannot teleport back to Welcome Island.
+Go to &apos;Welcome Island Public&apos; to repeat the tutorial.
 		</message>
 		<message name="noaccess_tport">
 			Sorry, you do not have access to that teleport destination.
diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml
index 61d36468d741e1113c274af93a8909737595366a..e2baba92a3a45051a6f2c03eba8ea9050e4c2c6e 100644
--- a/indra/newview/skins/default/xui/en/widgets/button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/button.xml
@@ -15,7 +15,6 @@
         label_color_selected="ButtonLabelSelectedColor"
         label_color_disabled="ButtonLabelDisabledColor"
         label_color_disabled_selected="ButtonLabelSelectedDisabledColor"
-        highlight_color="ButtonUnselectedFgColor"
         image_color="ButtonImageColor"
         image_color_disabled="ButtonImageColor"
         flash_color="ButtonFlashBgColor"
@@ -27,5 +26,9 @@
         scale_image="true"
         handle_right_mouse="true"
         use_draw_context_alpha="true"
-        held_down_delay.seconds="0.5">
+        held_down_delay.seconds="0.5"
+        button_flash_count="8"
+        button_flash_rate="1.25"
+        display_pressed_state="true"
+        >
 </button>
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
index 413ca1d1efe2f7a9e0caa4c403e7073e0b7390b5..0e29ed0d0bf73cb51f670a33cd33c04a32508b81 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml
@@ -12,13 +12,20 @@
      tab_stop="false"
      width="25" />
     <chiclet_im_adhoc.speaker
-     auto_update="true"
-     draw_border="false"
-     height="23"
-     left="25"
-     name="speaker"
-     visible="false"
-     width="20" />
+      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"
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
index 372a89cbc70c9f4a21f6c95e675e23a2442ba7a9..77011139bfe0f9835f4cb1ad200e235ef816729f 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml
@@ -12,13 +12,20 @@
      tab_stop="false"
      width="25" />
     <chiclet_im_group.speaker
-     auto_update="true"
-     draw_border="false"
-     height="25"
-     left="25"
-     name="speaker"
-     visible="false"
-     width="20" />
+      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"
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
index d27c14f4e70ba09d532f79b3608bed27a0205a10..8b56a8f0f690cb9183e90afd2849a16c4af9e67e 100644
--- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
+++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml
@@ -12,13 +12,20 @@
      tab_stop="false"
      width="25"/>
     <chiclet_im_p2p.speaker
-     auto_update="true"
-     draw_border="false"
-     height="23"
-     left="25"
-     name="speaker"
-     visible="false"
-     width="20" />
+      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"
diff --git a/indra/newview/skins/default/xui/en/widgets/floater.xml b/indra/newview/skins/default/xui/en/widgets/floater.xml
index 2e5ebafe46bf3dd3a1c21829ecb9a578d6badcdc..adbb183317884bb66bb78384ce827354fc317d00 100644
--- a/indra/newview/skins/default/xui/en/widgets/floater.xml
+++ b/indra/newview/skins/default/xui/en/widgets/floater.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <!-- See also settings.xml UIFloater* settings for configuration -->
-<floater 
+<floater
  name="floater"
+ open_positioning="none"
+ layout="topleft"
  bg_opaque_color="FloaterFocusBackgroundColor"
  bg_alpha_color="FloaterDefaultBackgroundColor"
  bg_opaque_image="Window_Foreground" 
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
new file mode 100644
index 0000000000000000000000000000000000000000..7a7a6e9a091fe99861e8d8cd32a3873ccd65c482
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_item.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<inbox_folder_view_item
+  item_height="20" 
+  item_top_pad="4"
+  selection_image="Rounded_Square"
+  >
+	<new_badge 
+        label="New" 
+        label_offset_horiz="-1"
+        location="right" 
+        padding_horiz="12.5" 
+        padding_vert="2"
+        location_offset_hcenter="-23"
+        border_image="New_Tag_Border"
+        border_color="DkGray2"
+        image="New_Tag_Background"
+        image_color="Black"
+        />
+</inbox_folder_view_item>
diff --git a/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml b/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a190da3909959deb8f77587a2a3654637c85724e
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/joystick_rotate.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<joystick_rotate
+   image_selected="Cam_Rotate_In"
+   image_unselected="Cam_Rotate_Out"
+   scale_image="false"
+   mouse_opaque="false"
+   held_down_delay.seconds="0"/>
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
index 07929961075f9c24174a607c85fa9c876604e93f..d19c47f54f3ce17525c2bc9d3b5d1a10d9e0165f 100644
--- 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
@@ -6,14 +6,4 @@
   item_top_pad="4"
   selection_image="Rounded_Square"
   >
-  <error_badge 
-    label=" " 
-    label_offset_horiz="-1"
-    location="right" 
-    padding_horiz="12.5" 
-    padding_vert="2"
-    location_offset_hcenter="-23"
-    image="Error_Tag_Background"
-    image_color="Black"
-    />
 </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
index e3f20728196e2b51f9cd489e3e3477160396866f..3964569da24a9346996145189a6437926b1bf7d0 100644
--- a/indra/newview/skins/default/xui/en/widgets/outbox_inventory_panel.xml
+++ b/indra/newview/skins/default/xui/en/widgets/outbox_inventory_panel.xml
@@ -1,2 +1,2 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<outbox_inventory_panel show_load_status="false" />
+<outbox_inventory_panel show_empty_message="false" show_load_status="false" />
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0aa478ace9fc66945f817d827bad357f255d1f0b
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toolbar pad_left="1"
+         pad_right="1"
+         pad_top="1"
+         pad_bottom="1"
+         pad_between="1"
+         min_girth="24"
+         mouse_opaque="false"
+         read_only="false">
+  <button_panel name="button_panel"
+                bg_opaque_image="Rounded_Rect"
+                background_visible="true"
+                bg_opaque_image_overlay="MouseGray"
+                background_opaque="true"/>
+  <button_icon_and_text imgoverlay_label_space="7"
+                        label_color_selected="White"
+                        halign="left"
+                        image_pressed="PushButton_Press"
+                        image_pressed_selected="PushButton_Selected_Press"
+                        image_selected="PushButton_Selected_Press"
+                        image_disabled_selected="PushButton_Selected_Disabled"
+                        image_disabled="PushButton_Disabled"
+                        button_width.min="70"
+                        button_width.max="140"
+                        desired_height="24"
+                        pad_left="10" 
+                        pad_right="10"
+                        follows="left|top"
+                        chrome="true"
+                        image_overlay_alignment="left"
+                        use_ellipses="true"
+                        auto_resize="true"
+                        button_flash_count="99999"
+                        button_flash_rate="1.0"
+                        flash_color="EmphasisColor"/>
+  <button_icon pad_left="10"
+               pad_right="10"
+               image_bottom_pad="10"
+               image_top_pad="10"
+               image_pressed="PushButton_Press"
+               image_pressed_selected="PushButton_Selected_Press"
+               image_selected="PushButton_Selected_Press"
+               image_disabled_selected="PushButton_Selected_Disabled"
+               image_disabled="PushButton_Disabled"
+               desired_height="38"
+               button_width.min="38"
+               button_width.max="38"               
+               follows="left|top"
+               label=""
+               halign="left"
+               chrome="true"
+               use_ellipses="true"
+               auto_resize="true"
+               button_flash_count="99999"
+               button_flash_rate="1.0"
+               flash_color="EmphasisColor"/>
+</toolbar>
diff --git a/indra/newview/skins/default/xui/en/widgets/window_shade.xml b/indra/newview/skins/default/xui/en/widgets/window_shade.xml
new file mode 100644
index 0000000000000000000000000000000000000000..23eb2f13fb821531e12de71b63f3668379beab57
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/window_shade.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<window_shade shade_color="0 0 0 0.5"/>
diff --git a/indra/newview/skins/default/xui/es/floater_about.xml b/indra/newview/skins/default/xui/es/floater_about.xml
index 93bb8444b453eb95e9050bda6ccf263aff0353e4..307b61133f3494036159b3fdc159ba21f2009e9d 100644
--- a/indra/newview/skins/default/xui/es/floater_about.xml
+++ b/indra/newview/skins/default/xui/es/floater_about.xml
@@ -10,7 +10,7 @@
 	<floater.string name="AboutPosition">
 		Estás en la posición [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1], de [REGION], alojada en &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		CPU: [CPU]
@@ -37,6 +37,9 @@ Versión del servidor de voz: [VOICE_VERSION]
 	<floater.string name="AboutTraffic">
 		Paquetes perdidos: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
 	</floater.string>
+	<floater.string name="ErrorFetchingServerReleaseNotesURL">
+		Error al obtener la URL de las notas de la versión del servidor.
+	</floater.string>
 	<tab_container name="about_tab">
 		<panel label="Información" name="support_panel">
 			<button label="Copiar al portapapeles" name="copy_btn" width="165"/>
@@ -64,32 +67,34 @@ Versión del servidor de voz: [VOICE_VERSION]
 		<panel label="Licencias" name="licenses_panel">
 			<text_editor name="credits_editor">
 				3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
-APR Copyright (C) 2000-2004 The Apache Software Foundation
-Collada DOM Copyright 2005 Sony Computer Entertainment Inc.
-cURL Copyright (C) 1996-2002, 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, The FreeType Project (www.freetype.org).
-GL Copyright (C) 1999-2004 Brian Paul.
-GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University y 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) 2001, Xiphophorus
-OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
-PCRE Copyright (c) 1997-2008 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-2002 Jean-loup Gailly y Mark Adler.
-google-perftools Copyright (c) 2005, Google Inc.
+        APR Copyright (C) 2000-2004 The Apache Software Foundation
+        Collada DOM Copyright 2005 Sony Computer Entertainment Inc.
+        cURL Copyright (C) 1996-2002, 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, The FreeType Project (www.freetype.org).
+        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) 2001, Xiphophorus
+        OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
+        PCRE Copyright (c) 1997-2008 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-2002 Jean-loup Gailly and Mark Adler.
+        google-perftools Copyright (c) 2005, Google Inc.
+
+        El visor de Second Life usa Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (y sus licenciadores). Reservados todos los derechos. Vea los detalles en www.havok.com.
 
-El visor de Second Life utiliza Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (y los propietarios de las licencias). Reservados todos los derechos. Consulta www.havok.com si deseas obtener más información.
+        Este software contiene código fuente suministrado por NVIDIA Corporation.
 
-Reservados todos los derechos.  Consulta las licencias en .txt si deseas obtener más información.
+        Reservados todos los derechos.  Consulte los detalles en licenses.txt.
 
-Codificación de sonido del chat de voz: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
+        Codificación del audio del chat de voz: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
 			</text_editor>
 		</panel>
 	</tab_container>
diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml
index 83749fc5359164220146850268c9c2e650bac8bd..6b8a1ff906d8430a908fe2b1b5937473d9196789 100644
--- a/indra/newview/skins/default/xui/es/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_about_land.xml
@@ -130,7 +130,7 @@ Vaya al menú Mundo &gt; Acerca del terreno o seleccione otra parcela para ver s
 				Tráfico:
 			</text>
 			<text name="DwellText">
-				0
+				Cargando...
 			</text>
 			<button label="Comprar terreno" left="130" name="Buy Land..." width="125"/>
 			<button label="Venta Linden" name="Linden Sale..." tool_tip="El terreno debe estar en propiedad, con contenido, y no estar en subasta."/>
@@ -213,19 +213,19 @@ Vaya al menú Mundo &gt; Acerca del terreno o seleccione otra parcela para ver s
 				Plus de objetos en la región: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				Uso de primitivas:
+				Capacidad de la región:
 			</text>
 			<text name="objects_available">
 				[COUNT] de un máx. de [MAX] ([AVAILABLE] disponibles)
 			</text>
 			<text name="Primitives parcel supports:">
-				Prims que admite la parcela:
+				Capacidad del terreno de la parcela:
 			</text>
 			<text name="object_contrib_text">
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
-				Prims en la parcela:
+				Impacto en el terreno de la parcela:
 			</text>
 			<text name="total_objects_text">
 				[COUNT]
@@ -309,13 +309,15 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda.
 				Sin &apos;empujones&apos; (prevalece lo marcado en la región)
 			</panel.string>
 			<panel.string name="see_avs_text">
-				Ver a los residentes de esta parcela y chatear con ellos
+				Los avatares de otras parcelas pueden ver
 			</panel.string>
 			<text name="allow_label">
 				Permitir a otros Residentes:
 			</text>
-			<check_box label="Editar el terreno" name="edit land check" tool_tip="Si se marca, cualquiera podrá modificar su terreno. Mejor dejarlo desmarcado, pues usted siempre puede modificar su terreno."/>
-			<check_box label="Volar" name="check fly" tool_tip="Si se marca, los residentes podrán volar en su terreno. Si no, sólo podrán volar al cruzarlo o hasta que aterricen en él."/>
+			<text name="allow_label0">
+				Volar:
+			</text>
+			<check_box label="Todos" name="check fly" tool_tip="Si se marca, los residentes podrán volar en su terreno. Si no, sólo podrán volar al cruzarlo o hasta que aterricen en él."/>
 			<text name="allow_label2">
 				Crear objetos:
 			</text>
@@ -331,9 +333,6 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda.
 			</text>
 			<check_box label="Todos los residentes" name="check other scripts"/>
 			<check_box label="El grupo" name="check group scripts"/>
-			<text name="land_options_label">
-				Opciones del terreno:
-			</text>
 			<check_box label="Seguro (sin daño)" name="check safe" tool_tip="Si se marca, convierte el terreno en &apos;seguro&apos;, desactivando el daño en combate. Si no, se activa el daño en combate."/>
 			<check_box label="Sin &apos;empujones&apos;" name="PushRestrictCheck" tool_tip="Previene scripts que empujen. Marcando esta opción prevendrá que en su terreno haya comportamientos destructivos."/>
 			<check_box label="Mostrar el sitio en la búsqueda (30 L$/semana)" name="ShowDirectoryCheck" tool_tip="Let people see this parcel in search results"/>
@@ -374,9 +373,9 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda.
 			</text>
 			<texture_picker label="" name="snapshot_ctrl" tool_tip="Pulse para elegir una imagen"/>
 			<text name="allow_label5">
-				Permitir a los residentes de otras parcelas:
+				a los avatares de esta parcela y chatear con ellos
 			</text>
-			<check_box label="Ver los avatares" name="SeeAvatarsCheck" tool_tip="Permite que los residentes de otras parcelas vean a los residentes de ésta y chateen con ellos, y también que tú puedas verles y chatear con ellos."/>
+			<check_box label="Ver los avatares" name="SeeAvatarsCheck" tool_tip="Permite que los avatares de otras parcelas vean a los avatares de ésta y chateen con ellos, y también que tú puedas verles y chatear con ellos."/>
 			<text name="landing_point">
 				Punto de llegada: [LANDING]
 			</text>
diff --git a/indra/newview/skins/default/xui/es/floater_avatar.xml b/indra/newview/skins/default/xui/es/floater_avatar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..21d202309f4c91df68ad38a5fb4c36b5a3dca5f6
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="ELIGE UN AVATAR"/>
diff --git a/indra/newview/skins/default/xui/es/floater_buy_currency.xml b/indra/newview/skins/default/xui/es/floater_buy_currency.xml
index 43bbf0b70fc5a36bf62eb2e646762d906247b3f7..2c8848265f481a62e66c56a6e3a34b29c4b5ddc8 100644
--- a/indra/newview/skins/default/xui/es/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/es/floater_buy_currency.xml
@@ -46,7 +46,7 @@
 		[AMT] L$
 	</text>
 	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php método de pago] | [http://www.secondlife.com/my/account/currency.php moneda] | [http://www.secondlife.com/my/account/exchange_rates.php tipo de cambio]
+		[http://www.secondlife.com/my/account/payment_method_management.php método de pago] | [http://www.secondlife.com/my/account/currency.php moneda]
 	</text>
 	<text name="exchange_rate_note">
 		Vuelve a escribir la cantidad para ver el tipo de cambio más reciente.
diff --git a/indra/newview/skins/default/xui/es/floater_buy_land.xml b/indra/newview/skins/default/xui/es/floater_buy_land.xml
index 9d33b69de9f439d0f0134342e3bbd16b41291943..005fe90318ac73ddbecaa889b769361089123435 100644
--- a/indra/newview/skins/default/xui/es/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_buy_land.xml
@@ -160,7 +160,7 @@ para cubrir esta parcela.
 		Podrá o no unirse o dividirse.
 	</text>
 	<text name="covenant_text">
-		Debes aceptar el Contrato del Estado:
+		Debes aceptar el Contrato del estado:
 	</text>
 	<text left="470" name="covenant_timestamp_text"/>
 	<text_editor name="covenant_editor">
diff --git a/indra/newview/skins/default/xui/es/floater_camera.xml b/indra/newview/skins/default/xui/es/floater_camera.xml
index 04f743b6590b04c6c0d2ab19d2f719ca1aa96265..b0704ab7889b2d49d3ee86019bfc7dc69ec6846d 100644
--- a/indra/newview/skins/default/xui/es/floater_camera.xml
+++ b/indra/newview/skins/default/xui/es/floater_camera.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
+<floater name="camera_floater" title="CONTROLES DE LA CÁMARA">
 	<floater.string name="rotate_tooltip">
 		Girar la cámara alrededor de lo enfocado
 	</floater.string>
@@ -9,15 +9,6 @@
 	<floater.string name="move_tooltip">
 		Mover la cámara arriba y abajo, izquierda y derecha
 	</floater.string>
-	<floater.string name="camera_modes_title">
-		Modos de cámara
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		Orbital - Zoom - Panorámica
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		Vistas predefinidas
-	</floater.string>
 	<floater.string name="free_mode_title">
 		Centrar el objeto
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/es/floater_chat_bar.xml b/indra/newview/skins/default/xui/es/floater_chat_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2e948050570a2eca9045f21eafb78dca9a3b0fca
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" 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"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_destinations.xml b/indra/newview/skins/default/xui/es/floater_destinations.xml
new file mode 100644
index 0000000000000000000000000000000000000000..df18698d2fdf72b24538012fd39076e96204eeeb
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="DESTINOS"/>
diff --git a/indra/newview/skins/default/xui/es/floater_fast_timers.xml b/indra/newview/skins/default/xui/es/floater_fast_timers.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eeb39583efcb84bc612d653da49fcfc3bbf60f2f
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+	<string name="pause">
+		Pausa
+	</string>
+	<string name="run">
+		Correr
+	</string>
+	<button label="Pausa" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_hardware_settings.xml b/indra/newview/skins/default/xui/es/floater_hardware_settings.xml
index 0150241d9a91791a20ca2fd523debaba84ba083e..b96076836b4448f49b51b5ad8921ed3dfa602749 100644
--- a/indra/newview/skins/default/xui/es/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/es/floater_hardware_settings.xml
@@ -4,7 +4,7 @@
 		Filtrado:
 	</text>
 	<check_box label="Filtrado anisotrópico (más lento si se activa)" name="ani"/>
-	<text name="Antialiasing:">
+	<text name="antialiasing label">
 		Antialiasing:
 	</text>
 	<combo_box label="Antialiasing" name="fsaa" width="94">
diff --git a/indra/newview/skins/default/xui/es/floater_how_to.xml b/indra/newview/skins/default/xui/es/floater_how_to.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4a57dc364370618a6e606801e852c21d7ea8ebd8
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="CÓMO"/>
diff --git a/indra/newview/skins/default/xui/es/floater_map.xml b/indra/newview/skins/default/xui/es/floater_map.xml
index 370b7f5053df72f5fe96d40bbe1dbeb938e2e02f..69f638418e4177423e3e4fce3bd7a27e94000ea5 100644
--- a/indra/newview/skins/default/xui/es/floater_map.xml
+++ b/indra/newview/skins/default/xui/es/floater_map.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="">
+<floater name="Map" title="MINIMAPA">
 	<floater.string name="ToolTipMsg">
 		[REGIÓN](Haz doble clic para abrir el mapa y pulsa la tecla Mayús y arrastra para obtener una vista panorámica)
 	</floater.string>
@@ -7,7 +7,7 @@
 		[REGION](Pulsa dos veces para teleportarte, pulsa mayús y arrastra para obtener una panorámica)
 	</floater.string>
 	<floater.string name="mini_map_caption">
-		MINIMAPA
+		Minimapa
 	</floater.string>
 	<text label="N" name="floater_map_north" text="N">
 		N
diff --git a/indra/newview/skins/default/xui/es/floater_model_preview.xml b/indra/newview/skins/default/xui/es/floater_model_preview.xml
index 36f988b25f2ca9f2b3188b4132e855b2ceb6f9fd..ab3ba5aed7e4e0431d7a43dd5c6a3e2b0f4fe994 100644
--- a/indra/newview/skins/default/xui/es/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/es/floater_model_preview.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="Cargar modelo">
-	<string name="status_idle">
-		Inactivo
-	</string>
+<floater name="Model Preview" title="SUBIR MODELO">
+	<string name="status_idle"/>
 	<string name="status_parse_error">
-		Problema de análisis de DAE - consulta los datos en el registro.
+		Error: Problema de análisis de DAE - consulta los datos en el registro.
+	</string>
+	<string name="status_material_mismatch">
+		Error: el material del modelo no es un subconjunto del modelo de referencia.
 	</string>
 	<string name="status_reading_file">
 		Cargando...
@@ -51,6 +52,9 @@
 	<string name="mesh_status_missing_lod">
 		Falta un nivel de detalle requerido.
 	</string>
+	<string name="mesh_status_invalid_material_list">
+		Los materiales con niveles de detalle no son un subconjunto del modelo de referencia.
+	</string>
 	<string name="layer_all">
 		Todo
 	</string>
@@ -63,188 +67,211 @@
 	<string name="tbd">
 		TBD
 	</string>
-	<text name="name_label">
-		Nombre:
-	</text>
-	<text name="lod_label">
-		Vista previa:
-	</text>
-	<combo_box name="preview_lod_combo" tool_tip="Nivel de detalle disponible en la vista previa">
-		<combo_item name="high">
-			Nivel de detalle: Alto
-		</combo_item>
-		<combo_item name="medium">
-			Nivel de detalle: Media
-		</combo_item>
-		<combo_item name="low">
-			Nivel de detalle: Bajo
-		</combo_item>
-		<combo_item name="lowest">
-			Nivel de detalle: Mínimo
-		</combo_item>
-	</combo_box>
-	<text name="warning_title">
-		ATENCIÓN:
-	</text>
-	<text name="warning_message">
-		No podrás terminar de subir este modelo a los servidores de Second Life. [[VURL] Averigua cómo] puedes obtener autorización para subir modelos de malla.
-	</text>
-	<text name="weights_text">
-		Descargar:
-Física:
-Servidor:
-
-Equiv. en prims:
-	</text>
-	<text name="weights">
-		[ST]
-[PH]
-[SIM]
-
-[EQ]
-	</text>
-	<tab_container name="import_tab">
-		<panel label="Nivel de detalle" name="lod_panel">
-			<text name="lod_table_header">
-				Seleccionar nivel de detalle:
-			</text>
-			<text name="high_label" value="Alto"/>
-			<text name="high_triangles" value="0"/>
-			<text name="high_vertices" value="0"/>
-			<text name="medium_label" value="Media"/>
-			<text name="medium_triangles" value="0"/>
-			<text name="medium_vertices" value="0"/>
-			<text name="low_label" value="Bajo"/>
-			<text name="low_triangles" value="0"/>
-			<text name="low_vertices" value="0"/>
-			<text name="lowest_label" value="Mínimo"/>
-			<text name="lowest_triangles" value="0"/>
-			<text name="lowest_vertices" value="0"/>
-			<text name="lod_table_footer">
-				Nivel de detalle: [DETALLE]
-			</text>
-			<radio_group name="lod_file_or_limit" value="lod_from_file">
-				<radio_item label="Cargar desde el archivo" name="lod_from_file"/>
-				<radio_item label="Generar automáticamente" name="lod_auto_generate"/>
-				<radio_item label="Ninguno" name="lod_none"/>
-			</radio_group>
-			<button label="Examinar..." name="lod_browse"/>
-			<combo_box name="lod_mode">
-				<combo_item name="triangle_limit">
-					Límite de triángulo
-				</combo_item>
-				<combo_item name="error_threshold">
-					Margen de error
-				</combo_item>
-			</combo_box>
-			<text name="build_operator_text">
-				Crear operador:
-			</text>
-			<text name="queue_mode_text">
-				Modo de cola:
-			</text>
-			<combo_box name="build_operator">
-				<combo_item name="edge_collapse">
-					Cerrar bordes
-				</combo_item>
-				<combo_item name="half_edge_collapse">
-					Cerrar la mitad de los bordes
-				</combo_item>
-			</combo_box>
-			<combo_box name="queue_mode">
-				<combo_item name="greedy">
-					Egoísta
-				</combo_item>
-				<combo_item name="lazy">
-					Vago
-				</combo_item>
-				<combo_item name="independent">
-					Independiente
-				</combo_item>
-			</combo_box>
-			<text name="border_mode_text">
-				Modo de borde:
+	<panel name="left_panel">
+		<panel name="model_name_representation_panel">
+			<text name="name_label">
+				Nombre del modelo:
 			</text>
-			<text name="share_tolderance_text">
-				Tolerancia de uso compartido:
+			<text name="model_category_label">
+				Este modelo representa...
 			</text>
-			<combo_box name="border_mode">
-				<combo_item name="border_unlock">
-					Desbloquear
-				</combo_item>
-				<combo_item name="border_lock">
-					Lock
-				</combo_item>
+			<combo_box name="model_category_combo">
+				<combo_item label="Elegir uno..." name="Choose one"/>
+				<combo_item label="Forma del avatar" name="Avatar shape"/>
+				<combo_item label="Anexo del avatar" name="Avatar attachment"/>
+				<combo_item label="Objeto en movimiento (vehículo, animal)" name="Moving object (vehicle, animal)"/>
+				<combo_item label="Componente de construcción" name="Building Component"/>
+				<combo_item label="Grande, sin movimiento, etc." name="Large, non moving etc"/>
+				<combo_item label="Más pequeño, sin movimiento, etc." name="Smaller, non-moving etc"/>
+				<combo_item label="No es exactamente ninguno de estos" name="Not really any of these"/>
 			</combo_box>
-			<text name="crease_label">
-				Ángulo de marca:
-			</text>
-			<spinner name="crease_angle" value="75"/>
 		</panel>
-		<panel label="Física" name="physics_panel">
-			<panel name="physics geometry">
-				<radio_group name="physics_load_radio" value="physics_load_from_file">
-					<radio_item label="Archivo:" name="physics_load_from_file"/>
-					<radio_item label="Utilizar nivel de detalle:" name="physics_use_lod"/>
-				</radio_group>
-				<combo_box name="physics_lod_combo" tool_tip="Nivel de detalle para forma física">
-					<combo_item name="physics_lowest">
-						Mínimo
-					</combo_item>
-					<combo_item name="physics_low">
-						Bajo
-					</combo_item>
-					<combo_item name="physics_medium">
-						Media
-					</combo_item>
-					<combo_item name="physics_high">
-						Alto
-					</combo_item>
-				</combo_box>
-				<button label="Examinar..." name="physics_browse"/>
-			</panel>
-			<panel name="physics analysis">
-				<slider label="Leve:" name="Smooth"/>
-				<check_box label="Cerrar agujeros (lento)" name="Close Holes (Slow)"/>
-				<button label="Analizar" name="Decompose"/>
-				<button label="Cancelar" name="decompose_cancel"/>
+		<tab_container name="import_tab">
+			<panel label="Nivel de detalle" name="lod_panel" title="Nivel de detalle">
+				<text initial_value="Origen" name="source" value="Origen"/>
+				<text initial_value="Triángulos" name="triangles" value="Triángulos"/>
+				<text initial_value="Vértices" name="vertices" value="Vértices"/>
+				<text initial_value="Alto" name="high_label" value="Alto"/>
+				<button label="Buscar..." name="lod_browse_high"/>
+				<text initial_value="0" name="high_triangles" value="0"/>
+				<text initial_value="0" name="high_vertices" value="0"/>
+				<text initial_value="Medio" name="medium_label" value="Medio"/>
+				<button label="Buscar..." name="lod_browse_medium"/>
+				<text initial_value="0" name="medium_triangles" value="0"/>
+				<text initial_value="0" name="medium_vertices" value="0"/>
+				<text initial_value="Bajo" name="low_label" value="Bajo"/>
+				<button label="Buscar..." name="lod_browse_low"/>
+				<text initial_value="0" name="low_triangles" value="0"/>
+				<text initial_value="0" name="low_vertices" value="0"/>
+				<text initial_value="Mínimo" name="lowest_label" value="Mínimo"/>
+				<button label="Buscar..." name="lod_browse_lowest"/>
+				<text initial_value="0" name="lowest_triangles" value="0"/>
+				<text initial_value="0" name="lowest_vertices" value="0"/>
+				<check_box label="Generar normales" name="gen_normals"/>
+				<text initial_value="Ángulo de pliegue:" name="crease_label" value="Ángulo de pliegue:"/>
+				<spinner name="crease_angle" value="75"/>
 			</panel>
-			<panel name="physics simplification">
-				<slider label="Pases:" name="Combine Quality"/>
-				<slider label="Escala de detalle:" name="Detail Scale"/>
-				<slider label="Retener:" name="Retain%"/>
-				<button label="Simplificar" name="Simplify"/>
-				<button label="Cancelar" name="simplify_cancel"/>
+			<panel label="Física" name="physics_panel">
+				<panel name="physics geometry">
+					<text name="first_step_name">
+						Paso 1: Nivel de detalle
+					</text>
+					<combo_box name="physics_lod_combo" tool_tip="Niveles de detalle para utilizar con la forma física">
+						<combo_item name="choose_one">
+							Elegir uno...
+						</combo_item>
+						<combo_item name="physics_high">
+							Alto
+						</combo_item>
+						<combo_item name="physics_medium">
+							Medio
+						</combo_item>
+						<combo_item name="physics_low">
+							Bajo
+						</combo_item>
+						<combo_item name="physics_lowest">
+							Mínimo
+						</combo_item>
+						<combo_item name="load_from_file">
+							De archivo
+						</combo_item>
+					</combo_box>
+					<button label="Buscar..." name="physics_browse"/>
+				</panel>
+				<panel name="physics analysis">
+					<text name="method_label">
+						Paso 2: Analizar
+					</text>
+					<text name="analysis_method_label">
+						Método:
+					</text>
+					<text name="quality_label">
+						Calidad:
+					</text>
+					<text name="smooth_method_label">
+						Leve:
+					</text>
+					<check_box label="Cerrar agujeros" name="Close Holes (Slow)"/>
+					<button label="Analizar" name="Decompose"/>
+					<button label="Cancelar" name="decompose_cancel"/>
+				</panel>
+				<panel name="physics simplification">
+					<text name="second_step_label">
+						Paso 3: Simplificar
+					</text>
+					<text name="simp_method_header">
+						Método:
+					</text>
+					<text name="pass_method_header">
+						Pases:
+					</text>
+					<text name="Detail Scale label">
+						Escala de detalle:
+					</text>
+					<text name="Retain%_label">
+						Retención:
+					</text>
+					<combo_box name="Combine Quality" value="1"/>
+					<button label="Simplificar" name="Simplify"/>
+					<button label="Cancelar" name="simplify_cancel"/>
+				</panel>
+				<panel name="physics info">
+					<text name="results_text">
+						Resultados:
+					</text>
+					<text name="physics_triangles">
+						Triángulos: [TRIANGLES],
+					</text>
+					<text name="physics_points">
+						Vértices: [POINTS],
+					</text>
+					<text name="physics_hulls">
+						Apariencias: [HULLS]
+					</text>
+				</panel>
 			</panel>
-			<panel name="physics info">
-				<slider label="Ampliación de vista previa:" name="physics_explode"/>
-				<text name="physics_triangles">
-					Triángulos: [TRIÁNGULOS]
+			<panel label="Opciones de subida" name="modifiers_panel">
+				<text name="scale_label">
+					Escala (1=sin ajuste de escala):
 				</text>
-				<text name="physics_points">
-					Intersecciones: [PUNTOS]
+				<spinner name="import_scale" value="1.0"/>
+				<text name="dimensions_label">
+					Dimensiones:
 				</text>
-				<text name="physics_hulls">
-					Aspecto exterior: [ASPECTO EXTERIOR]
+				<text name="import_dimensions">
+					[X] X [Y] X [Z]
 				</text>
+				<check_box label="Incluir texturas" name="upload_textures"/>
+				<text name="include_label">
+					Solo para modelos de avatar:
+				</text>
+				<check_box label="Incluir el peso de la piel" name="upload_skin"/>
+				<check_box label="Incluir posturas de las articulaciones" name="upload_joints"/>
+				<text name="pelvis_offset_label">
+					Desplazamiento Z (subir o bajar el avatar):
+				</text>
+				<spinner name="pelvis_offset" value="0.0"/>
 			</panel>
-		</panel>
-		<panel label="Modificadores" name="modifiers_panel">
-			<spinner name="import_scale" value="1.0"/>
-			<text name="import_dimensions">
-				[X] x [Y] x [Z] m
+		</tab_container>
+		<panel name="weights_and_warning_panel">
+			<button label="Calcular pesos y precio" name="calculate_btn" tool_tip="Calcular pesos y precio"/>
+			<button label="Cancelar" name="cancel_btn"/>
+			<button label="subir" name="ok_btn" tool_tip="Subir al simulador"/>
+			<button label="Limpiar la configuración y reiniciar el formulario" name="reset_btn"/>
+			<text name="upload_fee">
+				Precio de subida: L$ [FEE]
+			</text>
+			<text name="prim_weight">
+				Impacto en el terreno: [EQ]
+			</text>
+			<text name="download_weight">
+				Descargar: [ST]
+			</text>
+			<text name="physics_weight">
+				Física: [PH]
+			</text>
+			<text name="server_weight">
+				Servidor: [SIM]
+			</text>
+			<text name="warning_title">
+				NOTA:
+			</text>
+			<text name="warning_message">
+				No tienes derechos para subir modelos de malla. [[VURL] Averigua cómo] puedes obtener la autorización.
+			</text>
+			<text name="status">
+				[STATUS]
 			</text>
-			<check_box label="Texturas" name="upload_textures"/>
-			<check_box label="Peso de la piel" name="upload_skin"/>
-			<check_box label="Posturas de las articulaciones" name="upload_joints"/>
-			<spinner name="pelvis_offset" value="0.0"/>
 		</panel>
-	</tab_container>
-	<text name="upload_fee">
-		Precio de subida: L$ [FEE]
+	</panel>
+	<text name="lod_label">
+		Vista previa:
 	</text>
-	<button label="Establecer en valores predeterminados" name="reset_btn" tool_tip="Establecer en valores predeterminados"/>
-	<button label="Calcular pesos y precio" name="calculate_btn" tool_tip="Calcular pesos y precio"/>
-	<button label="Subir" name="ok_btn" tool_tip="Cargar al simulador"/>
-	<button label="Cancelar" name="cancel_btn"/>
+	<panel name="right_panel">
+		<combo_box name="preview_lod_combo" tool_tip="LOD para ver en renderizado de prueba">
+			<combo_item name="high">
+				Alto
+			</combo_item>
+			<combo_item name="medium">
+				Media
+			</combo_item>
+			<combo_item name="low">
+				Bajo
+			</combo_item>
+			<combo_item name="lowest">
+				Mínimo
+			</combo_item>
+		</combo_box>
+		<text name="label_display">
+			Mostrar...
+		</text>
+		<check_box label="Bordes" name="show_edges"/>
+		<check_box label="Física" name="show_physics"/>
+		<check_box label="Texturas" name="show_textures"/>
+		<check_box label="Pesos de la piel" name="show_skin_weight"/>
+		<check_box label="Articulaciones" name="show_joint_positions"/>
+		<text name="physics_explode_label">
+			Ampliación de vista previa:
+		</text>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/es/floater_model_wizard.xml b/indra/newview/skins/default/xui/es/floater_model_wizard.xml
index 86de557ed9e819c1d3faf6ac7f03010003df37ef..e27db5a1c4ae2997ad72e92364d036b705f3a228 100644
--- a/indra/newview/skins/default/xui/es/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/es/floater_model_wizard.xml
@@ -6,26 +6,23 @@
 	<button label="2. Optimizar" name="optimize_btn"/>
 	<button label="1. Seleccionar archivo" name="choose_file_btn"/>
 	<panel name="choose_file_panel">
-		<panel name="choose_file_header_panel">
-			<text name="choose_file_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Elige el archivo de modelo
 			</text>
 		</panel>
-		<panel name="choose_file_content_panel">
+		<panel name="content">
 			<text name="advanced_users_text">
 				Usuarios avanzados: si tienes experiencia con las herramientas de creación de contenidos 3D, quizá te interese utilizar la función de subida avanzada.
 			</text>
 			<button label="Cambiar al modo Avanzado" name="switch_to_advanced"/>
-			<text name="choose_model_file_label">
+			<text name="Cache location">
 				Elige el archivo de modelo que deseas subir
 			</text>
 			<button label="Buscar..." label_selected="Buscar..." name="browse"/>
-			<text name="support_collada_text">
+			<text name="Model types">
 				‎Second Life admite los archivos COLLADA (.dae)
 			</text>
-			<text name="dimensions_label">
-				Dimensiones (metros):
-			</text>
 			<text name="dimensions">
 				X         Y         Z
 			</text>
@@ -38,18 +35,15 @@
 		</panel>
 	</panel>
 	<panel name="optimize_panel">
-		<panel name="optimize_header_panel">
-			<text name="optimize_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Optimizar el modelo
 			</text>
 		</panel>
-		<text name="optimize_hint">
+		<text name="description">
 			Hemos optimizado el rendimiento del modelo, pero puedes ajustarlo más si lo deseas.
 		</text>
-		<panel name="optimize_content_panel">
-			<text name="generating_lod_label">
-				Generando el nivel de detalle
-			</text>
+		<panel name="content">
 			<text name="high_detail_text">
 				Generar el nivel de detalle: Alto
 			</text>
@@ -64,123 +58,64 @@
 			</text>
 		</panel>
 		<panel name="content2">
-			<text name="optimize_performance_text">
-				Rendimiento
-			</text>
-			<text name="optimize_faster_rendering_text">
-				Renderizado más rápido
-Menos detalles
-Menos peso de prim
-			</text>
-			<text name="optimize_accuracy_text">
-				Precisión
-			</text>
-			<text name="optimize_slower_rendering_text">
-				Renderizado más lento
-Más detalles
-Más peso de prim
-			</text>
-			<text name="accuracy_slider_mark1">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark2">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark3">
-				&apos;
-			</text>
 			<button label="Recalcular la geometría" name="recalculate_geometry_btn"/>
-			<text name="geometry_preview_label">
+			<text name="lod_label">
 				Vista previa de geometría
 			</text>
 			<combo_box name="preview_lod_combo" tool_tip="LOD para ver en renderizado de prueba">
-				<combo_item name="preview_lod_high">
+				<combo_item name="high">
 					Detalle alto
 				</combo_item>
-				<combo_item name="preview_lod_medium">
+				<combo_item name="medium">
 					Detalles medios
 				</combo_item>
-				<combo_item name="preview_lod_low">
+				<combo_item name="low">
 					Detalle bajo
 				</combo_item>
-				<combo_item name="preview_lod_lowest">
+				<combo_item name="lowest">
 					Detalles mínimos
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="physics_panel">
-		<panel name="physics_header_panel">
-			<text name="physics_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Ajustar la física
 			</text>
 		</panel>
-		<text name="physics_hint">
+		<text name="description">
 			Crearemos una forma para la apariencia exterior del modelo. Ajusta el nivel de detalle de la forma según se necesite para el propósito proyectado del modelo.
 		</text>
-		<panel name="physics_content_panel">
-			<text name="physics_performance_text">
-				Rendimiento
-			</text>
-			<text name="physics_faster_rendering_text">
-				Renderizado más rápido
-Menos detalles
-Menos peso de prim
-			</text>
-			<text name="physics_accuracy_text">
-				Precisión
-			</text>
-			<text name="physics_slower_dendering_text">
-				Renderizado más lento
-Más detalles
-Más peso de prim
-			</text>
-			<text name="physics_example_1">
-				Ejemplos:
-Objetos en movimiento
-Objetos voladores
-Vehículos
-			</text>
-			<text name="physics_example_2">
-				Ejemplos:
-Objetos estáticos pequeños
-Objetos con menos detalles
-Muebles sencillos
-			</text>
-			<text name="physics_example_3">
-				Ejemplos:
-Objetos estáticos
-Objetos con detalles
-Edificios
-			</text>
+		<panel name="content">
 			<button label="Recalcular física" name="recalculate_physics_btn"/>
 			<button label="Recalculando..." name="recalculating_physics_btn"/>
-			<text name="physics_preview_label">
+			<text name="lod_label">
 				Prueba de física
 			</text>
 			<combo_box name="preview_lod_combo2" tool_tip="LOD para ver en renderizado de prueba">
-				<combo_item name="preview_lod2_high">
+				<combo_item name="high">
 					Detalle alto
 				</combo_item>
-				<combo_item name="preview_lod2_medium">
+				<combo_item name="medium">
 					Detalles medios
 				</combo_item>
-				<combo_item name="preview_lod2_low">
+				<combo_item name="low">
 					Detalle bajo
 				</combo_item>
-				<combo_item name="preview_lod2_lowest">
+				<combo_item name="lowest">
 					Detalles mínimos
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="review_panel">
-		<panel name="review_header_panel">
-			<text name="review_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Revisar
 			</text>
 		</panel>
-		<panel name="review_content_panel">
+		<panel name="content">
 			<text name="review_prim_equiv">
 				Impacto en la parcela/región: [EQUIV] equivalentes en prim
 			</text>
@@ -193,8 +128,8 @@ Edificios
 		</panel>
 	</panel>
 	<panel name="upload_panel">
-		<panel name="upload_header_panel">
-			<text name="upload_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Subida finalizada
 			</text>
 		</panel>
diff --git a/indra/newview/skins/default/xui/es/floater_moveview.xml b/indra/newview/skins/default/xui/es/floater_moveview.xml
index 258f84c36193e26ccab433cc809250aa7daeebe1..0e7b950bd3b33f9ddc58e0a36ad1e440f9181df6 100644
--- a/indra/newview/skins/default/xui/es/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/es/floater_moveview.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="CAMINAR / CORRER / VOLAR">
 	<string name="walk_forward_tooltip">
 		Caminar hacia adelante (cursor arriba o W)
 	</string>
@@ -58,14 +58,14 @@
 		Volar
 	</string>
 	<panel name="panel_actions">
-		<button label="" label_selected="" name="move up btn" tool_tip="Volar (pulsa E para subir)"/>
 		<button label="" label_selected="" name="turn left btn" tool_tip="Girar a la izq. (cursor izq. o A)"/>
 		<joystick_slide name="move left btn" tool_tip="Caminar a la izq. (pulsa Mayúsculas + cursor izq. o A)"/>
-		<button label="" label_selected="" name="move down btn" tool_tip="Volar (pulsa C para descender)"/>
 		<button label="" label_selected="" name="turn right btn" tool_tip="Girar a la der. (cursor der. o D)"/>
 		<joystick_slide name="move right btn" tool_tip="Caminar a la der. (pulsa Mayúsculas + cursor der. o D)"/>
 		<joystick_turn name="forward btn" tool_tip="Caminar hacia adelante (cursor arriba o W)"/>
 		<joystick_turn name="backward btn" tool_tip="Caminar de espaldas (cursor abajo o S)"/>
+		<button label="" label_selected="" name="move up btn" tool_tip="Volar (pulsa E para subir)"/>
+		<button label="" label_selected="" name="move down btn" tool_tip="Volar (pulsa C para descender)"/>
 	</panel>
 	<panel name="panel_modes">
 		<button label="" name="mode_walk_btn" tool_tip="Modo de caminar"/>
diff --git a/indra/newview/skins/default/xui/es/floater_my_appearance.xml b/indra/newview/skins/default/xui/es/floater_my_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..774babf04e7baf6a8c1fbbd97f804fd73b909b81
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="APARIENCIA">
+	<panel label="Modificar la apariencia" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_my_inventory.xml b/indra/newview/skins/default/xui/es/floater_my_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0efd9f1c6d5c0cc19adcc2429596c87d4a17f094
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="INVENTARIO"/>
diff --git a/indra/newview/skins/default/xui/es/floater_nearby_chat.xml b/indra/newview/skins/default/xui/es/floater_nearby_chat.xml
index 1fee9ab056668d2770445fd8f3a45dbf000cec78..b3b8cdcfffdc5e1e627ee68f3dfb89b3c2463fd8 100644
--- a/indra/newview/skins/default/xui/es/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/es/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="nearby_chat" title="CHAT">
-	<check_box label="Traducir chat (mediante Google)" name="translate_chat_checkbox"/>
+	<check_box label="Traducir chat" name="translate_chat_checkbox"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/es/floater_object_weights.xml b/indra/newview/skins/default/xui/es/floater_object_weights.xml
new file mode 100644
index 0000000000000000000000000000000000000000..50c4f0518d855867769d4cfd7ca7b45e363155ff
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="AVANZADAS">
+	<floater.string name="nothing_selected" value="--"/>
+	<text name="selected_text" value="SELECCIONADOS"/>
+	<text name="objects" value="--"/>
+	<text name="objects_label" value="Objetos"/>
+	<text name="prims" value="--"/>
+	<text name="prims_label" value="Primitivas"/>
+	<text name="weights_of_selected_text" value="PESOS DE SELECCIONADOS"/>
+	<text name="download" value="--"/>
+	<text name="download_label" value="Descargar"/>
+	<text name="physics" value="--"/>
+	<text name="physics_label" value="Física"/>
+	<text name="server" value="--"/>
+	<text name="server_label" value="Servidor"/>
+	<text name="display" value="--"/>
+	<text name="display_label" value="Mostrar"/>
+	<text name="land_impacts_text" value="IMPACTOS EN EL TERRENO"/>
+	<text name="selected" value="--"/>
+	<text name="selected_label" value="Seleccionados"/>
+	<text name="rezzed_on_land" value="--"/>
+	<text name="rezzed_on_land_label" value="Colocados en el terreno"/>
+	<text name="remaining_capacity" value="--"/>
+	<text name="remaining_capacity_label" value="Capacidad restante"/>
+	<text name="total_capacity" value="--"/>
+	<text name="total_capacity_label" value="Capacidad total"/>
+	<text name="help_SLURL" value="[secondlife:///app/help/object_weights ¿Qué es todo esto?...]"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..f48d0d2d0ca21b9d76f76627b9b012b6ac35b7dd
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container" title="GUARDAR EL VESTUARIO"/>
diff --git a/indra/newview/skins/default/xui/es/floater_people.xml b/indra/newview/skins/default/xui/es/floater_people.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f5a3eab008517b3f5556ab986eb3f8d73a590592
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="GENTE">
+	<panel_container name="main_panel">
+		<panel label="Perfil del grupo" name="panel_group_info_sidetray"/>
+		<panel label="Residentes y objetos ignorados" name="panel_block_list_sidetray"/>
+	</panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_picks.xml b/indra/newview/skins/default/xui/es/floater_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..255aa5dcdc1ebc1f649027a4373fa03e8ad4d0a0
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Destacados"/>
diff --git a/indra/newview/skins/default/xui/es/floater_places.xml b/indra/newview/skins/default/xui/es/floater_places.xml
new file mode 100644
index 0000000000000000000000000000000000000000..12c6548205fb3a2bb018095f55c9502ca05dd2b7
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="LUGARES">
+	<panel label="Lugares" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_snapshot.xml b/indra/newview/skins/default/xui/es/floater_snapshot.xml
index eafc623ea93905771a9535ceea81af901153d56b..23078b3a553edc163cda06fea82be8cc59c7b1e9 100644
--- a/indra/newview/skins/default/xui/es/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/es/floater_snapshot.xml
@@ -3,73 +3,63 @@
 	<floater.string name="unknown">
 		desconocido
 	</floater.string>
-	<radio_group label="Tipo de foto" name="snapshot_type_radio">
-		<radio_item label="Correo-e" name="postcard"/>
-		<radio_item label="Mi inventario ([AMOUNT] L$)" name="texture"/>
-		<radio_item label="Guardar en mi ordenador" name="local"/>
-	</radio_group>
+	<string name="postcard_progress_str">
+		Enviando el correo electrónico
+	</string>
+	<string name="profile_progress_str">
+		Publicando
+	</string>
+	<string name="inventory_progress_str">
+		Guardando en el inventario
+	</string>
+	<string name="local_progress_str">
+		Guardando en el equipo
+	</string>
+	<string name="profile_succeeded_str">
+		Imagen subida
+	</string>
+	<string name="postcard_succeeded_str">
+		Correo electrónico enviado
+	</string>
+	<string name="inventory_succeeded_str">
+		¡Guardado en el inventario!
+	</string>
+	<string name="local_succeeded_str">
+		¡Guardado en el equipo!
+	</string>
+	<string name="profile_failed_str">
+		Error al subir la imagen a los comentarios de tu perfil.
+	</string>
+	<string name="postcard_failed_str">
+		Error al enviar el correo electrónico.
+	</string>
+	<string name="inventory_failed_str">
+		Error al guardar en el inventario.
+	</string>
+	<string name="local_failed_str">
+		Error al guardar en el equipo.
+	</string>
+	<button name="advanced_options_btn" tool_tip="Opciones avanzadas"/>
+	<text name="image_res_text">
+		[WIDTH] x [HEIGHT] px
+	</text>
 	<text name="file_size_label">
 		[SIZE] kB
 	</text>
-	<button label="Actualizar la foto" name="new_snapshot_btn"/>
-	<button label="Enviar" name="send_btn"/>
-	<button label="Ahorro ([AMOUNT] L$)" name="upload_btn"/>
-	<flyout_button label="Guardar" name="save_btn" tool_tip="Guardar la imagen en un archivo">
-		<flyout_button.item label="Guardar" name="save_item"/>
-		<flyout_button.item label="Guardar como..." name="saveas_item"/>
-	</flyout_button>
-	<button label="Más" name="more_btn" tool_tip="Opciones avanzadas"/>
-	<button label="Menos" name="less_btn" tool_tip="Opciones avanzadas"/>
-	<button label="Cancelar" name="discard_btn"/>
-	<text name="type_label2">
-		Tamaño
-	</text>
-	<text name="format_label">
-		Formato
-	</text>
-	<combo_box label="Resolución" name="postcard_size_combo">
-		<combo_box.item label="Ventana actual" name="CurrentWindow"/>
-		<combo_box.item label="640x480" name="640x480"/>
-		<combo_box.item label="800x600" name="800x600"/>
-		<combo_box.item label="1024x768" name="1024x768"/>
-		<combo_box.item label="Personalizado" name="Custom"/>
-	</combo_box>
-	<combo_box label="Resolución" name="texture_size_combo">
-		<combo_box.item label="Ventana actual" name="CurrentWindow"/>
-		<combo_box.item label="Pequeña (128x128)" name="Small(128x128)"/>
-		<combo_box.item label="Mediana (256x256)" name="Medium(256x256)"/>
-		<combo_box.item label="Grande (512x512)" name="Large(512x512)"/>
-		<combo_box.item label="Personalizado" name="Custom"/>
-	</combo_box>
-	<combo_box label="Resolución" name="local_size_combo">
-		<combo_box.item label="Ventana actual" name="CurrentWindow"/>
-		<combo_box.item label="320x240" name="320x240"/>
-		<combo_box.item label="640x480" name="640x480"/>
-		<combo_box.item label="800x600" name="800x600"/>
-		<combo_box.item label="1024x768" name="1024x768"/>
-		<combo_box.item label="1280x1024" name="1280x1024"/>
-		<combo_box.item label="1600x1200" name="1600x1200"/>
-		<combo_box.item label="Personalizado" name="Custom"/>
-	</combo_box>
-	<combo_box label="Formato" name="local_format_combo">
-		<combo_box.item label="PNG" name="PNG"/>
-		<combo_box.item label="JPEG" name="JPEG"/>
-		<combo_box.item label="BMP" name="BMP"/>
-	</combo_box>
-	<spinner label="Ancho" name="snapshot_width"/>
-	<spinner label="Altura" name="snapshot_height"/>
-	<check_box label="Mantener las proporciones" name="keep_aspect_check"/>
-	<slider label="Calidad de la imagen" name="image_quality_slider"/>
-	<text name="layer_type_label">
-		Captura:
-	</text>
-	<combo_box label="Capas de imagen" name="layer_types">
-		<combo_box.item label="Colores" name="Colors"/>
-		<combo_box.item label="Profundidad" name="Depth"/>
-	</combo_box>
-	<check_box label="Interfaz" name="ui_check"/>
-	<check_box label="HUDs" name="hud_check"/>
-	<check_box label="Mantener abierto después de guardar" name="keep_open_check"/>
-	<check_box label="Congelar la toma (pantalla completa)" name="freeze_frame_check"/>
-	<check_box label="Actualizar automáticamente" name="auto_snapshot_check"/>
+	<panel name="advanced_options_panel">
+		<text name="advanced_options_label">
+			OPCIONES AVANZADAS
+		</text>
+		<text name="layer_type_label">
+			Captura:
+		</text>
+		<combo_box label="Capas de imagen" name="layer_types">
+			<combo_box.item label="Colores" name="Colors"/>
+			<combo_box.item label="Profundidad" name="Depth"/>
+		</combo_box>
+		<check_box label="Interfaz" name="ui_check"/>
+		<check_box label="HUDs" name="hud_check"/>
+		<check_box label="Congelar la toma (pantalla completa)" name="freeze_frame_check"/>
+		<check_box label="Actualizar automáticamente" name="auto_snapshot_check"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/es/floater_sound_devices.xml b/indra/newview/skins/default/xui/es/floater_sound_devices.xml
index a5ffbd517a1b22996a615d70b98d96b2946ba952..0291f9e7960e77751a775217837e4192a25c4357 100644
--- a/indra/newview/skins/default/xui/es/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/es/floater_sound_devices.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="Dispositivos de sonido">
+<floater name="floater_sound_devices" title="DISPOSITIVOS DE SONIDO">
 	<text name="voice_label">
 		Chat de voz
 	</text>
diff --git a/indra/newview/skins/default/xui/es/floater_stats.xml b/indra/newview/skins/default/xui/es/floater_stats.xml
index 5f4fabf375e37f6d349c4086befd2c5852ab4ee8..ba4af2e8669b8426a95988549f094730b982f8e5 100644
--- a/indra/newview/skins/default/xui/es/floater_stats.xml
+++ b/indra/newview/skins/default/xui/es/floater_stats.xml
@@ -10,8 +10,8 @@
 			</stat_view>
 			<stat_view label="Avanzado" name="advanced">
 				<stat_view label="Renderización" name="render">
-					<stat_bar label="KTris generados" name="ktrisframe"/>
-					<stat_bar label="KTris generados" name="ktrissec"/>
+					<stat_bar label="KTris generados por fotograma" name="ktrisframe"/>
+					<stat_bar label="KTris generados por segundo" name="ktrissec"/>
 					<stat_bar label="Objetos en total" name="objs"/>
 					<stat_bar label="Objetos nuevos" name="newobjs"/>
 				</stat_view>
@@ -43,18 +43,6 @@
 					<stat_bar label="Pin de objetos" name="physicspinnedtasks"/>
 					<stat_bar label="Objetos con bajo nivel de detalle" name="physicslodtasks"/>
 					<stat_bar label="Memoria asignada" name="physicsmemoryallocated"/>
-					<stat_bar label="Agentes: actual./seg." name="simagentups"/>
-					<stat_bar label="Agentes del grid principal" name="simmainagents"/>
-					<stat_bar label="Agentes secundarios" name="simchildagents"/>
-					<stat_bar label="Objetos" name="simobjects"/>
-					<stat_bar label="Objetos activos" name="simactiveobjects"/>
-					<stat_bar label="Scripts activos" name="simactivescripts"/>
-					<stat_bar label="Eventos de scripts" name="simscripteps"/>
-					<stat_bar label="Paquetes salientes" name="siminpps"/>
-					<stat_bar label="Paquetes entrantes" name="simoutpps"/>
-					<stat_bar label="Descargas pendientes" name="simpendingdownloads"/>
-					<stat_bar label="Subidas pendientes" name="simpendinguploads"/>
-					<stat_bar label="Total de bytes no reconocidos" name="simtotalunackedbytes"/>
 				</stat_view>
 				<stat_view label="Tiempo (ms)" name="simperf">
 					<stat_bar label="Tiempo total de los frames" name="simframemsec"/>
@@ -64,6 +52,14 @@
 					<stat_bar label="Tiempo de los agentes" name="simagentmsec"/>
 					<stat_bar label="Tiempo de las imágenes" name="simimagesmsec"/>
 					<stat_bar label="Tiempo de los scripts" name="simscriptmsec"/>
+					<stat_bar label="Tiempo libre" name="simsparemsec"/>
+					<stat_view label="Datos de tiempo (ms)" name="timedetails">
+						<stat_bar label="Paso de física" name="simsimphysicsstepmsec"/>
+						<stat_bar label="Actualizar formas físicas" name="simsimphysicsshapeupdatemsec"/>
+						<stat_bar label="Otros (Física)" name="simsimphysicsothermsec"/>
+						<stat_bar label="Tiempo de suspensión" name="simsleepmsec"/>
+						<stat_bar label="E/S bombeo" name="simpumpiomsec"/>
+					</stat_view>
 				</stat_view>
 			</stat_view>
 		</container_view>
diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml
index f6e246ebaea173390cef86c889ffa1ff29d8a5c0..650b4b457d41cf6ee94eec855278addb21864379 100644
--- a/indra/newview/skins/default/xui/es/floater_tools.xml
+++ b/indra/newview/skins/default/xui/es/floater_tools.xml
@@ -25,10 +25,10 @@
 		Pulsa y arrastra para seleccionar el terreno.
 	</floater.string>
 	<floater.string name="status_selectcount">
-		[OBJ_COUNT] objetos ( [PRIM_COUNT] prims[PE_STRING] ) seleccionados
+		[OBJ_COUNT] objetos seleccionados, impacto en el terreno [LAND_IMPACT]
 	</floater.string>
-	<floater.string name="status_selectprimequiv">
-		, [SEL_WEIGHT] equivalentes en prim
+	<floater.string name="status_remaining_capacity">
+		Capacidad restante [LAND_CAPACITY].
 	</floater.string>
 	<button label="" label_selected="" name="button focus" tool_tip="Visión"/>
 	<button label="" label_selected="" name="button move" tool_tip="Mover"/>
@@ -105,8 +105,8 @@
 	<text name="selection_empty">
 		No está seleccionado nada.
 	</text>
-	<text name="selection_weight">
-		Peso de física [PHYS_WEIGHT], Coste de renderizado [DISP_WEIGHT].
+	<text name="remaining_capacity">
+		[CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Más información]
 	</text>
 	<tab_container name="Object Info Tabs" tab_max_width="62" tab_min_width="30" width="288">
 		<panel label="General" name="General">
@@ -319,7 +319,6 @@
 				Tipo de unión
 			</text>
 			<combo_box name="sculpt type control">
-				<combo_box.item label="(ninguna)" name="None"/>
 				<combo_box.item label="Esfera" name="Sphere"/>
 				<combo_box.item label="Toroide" name="Torus"/>
 				<combo_box.item label="Plano" name="Plane"/>
diff --git a/indra/newview/skins/default/xui/es/floater_toybox.xml b/indra/newview/skins/default/xui/es/floater_toybox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7275b0546ba7877b5a42a6ce918c72fd7d8f3624
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_toybox.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="BOTONES DE LA BARRA DE HERRAMIENTAS">
+	<text name="toybox label 1">
+		Puedes agregar o quitar botones arrastrándolos a las barras de herramientas o desde ellas.
+	</text>
+	<text name="toybox label 2">
+		Los botones aparecerán como se muestra o solo como iconos, según la configuración de cada barra de herramientas.
+	</text>
+	<button label="Quitar todas las barras de herramientas" label_selected="Quitar todas las barras de herramientas" name="btn_clear_all"/>
+	<button label="Restaurar valores predeterminados" label_selected="Restaurar valores predeterminados" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_translation_settings.xml b/indra/newview/skins/default/xui/es/floater_translation_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..765c9a05a28b5fea0550d63dc6da94f759e8f51e
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/floater_translation_settings.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_translation_settings" title="CONFIGURACIÓN DE LA TRADUCCIÓN DEL CHAT">
+	<string name="bing_api_key_not_verified">
+		appID de Bing no se ha confirmado. Vuelve a intentarlo.
+	</string>
+	<string name="google_api_key_not_verified">
+		La clave de API de Google no se ha confirmado. Vuelve a intentarlo.
+	</string>
+	<string name="bing_api_key_verified">
+		appID de Bing se ha confirmado.
+	</string>
+	<string name="google_api_key_verified">
+		La clave de API de Google se ha confirmado.
+	</string>
+	<check_box label="Activar la traducción automática durante el chat" name="translate_chat_checkbox"/>
+	<text name="translate_language_label">
+		Traducir el chat al:
+	</text>
+	<combo_box name="translate_language_combo">
+		<combo_box.item label="Predeterminado del sistema" name="System Default Language"/>
+		<combo_box.item label="Inglés" name="English"/>
+		<combo_box.item label="Dansk (danés)" name="Danish"/>
+		<combo_box.item label="Deutsch (alemán)" name="German"/>
+		<combo_box.item label="Español (español)" name="Spanish"/>
+		<combo_box.item label="Français (francés)" name="French"/>
+		<combo_box.item label="Italiano (italiano)" name="Italian"/>
+		<combo_box.item label="Magyar (húngaro)" name="Hungarian"/>
+		<combo_box.item label="Nederlands (neerlandés)" name="Dutch"/>
+		<combo_box.item label="Polski (polaco)" name="Polish"/>
+		<combo_box.item label="Português (portugués)" name="Portugese"/>
+		<combo_box.item label="Русский (ruso)" name="Russian"/>
+		<combo_box.item label="Türkçe (turco)" name="Turkish"/>
+		<combo_box.item label="Українська (ucraniano)" name="Ukrainian"/>
+		<combo_box.item label="中文 (正體) (Chino)" name="Chinese"/>
+		<combo_box.item label="日本語 (japonés)" name="Japanese"/>
+		<combo_box.item label="한국어 (coreano)" name="Korean"/>
+	</combo_box>
+	<text name="tip">
+		Elige el servicio de traducción:
+	</text>
+	<radio_group name="translation_service_rg">
+		<radio_item initial_value="bing" label="Bing Translator" name="bing"/>
+		<radio_item initial_value="google" label="Traductor de Google" name="google"/>
+	</radio_group>
+	<text name="bing_api_key_label">
+		[http://www.bing.com/developers/createapp.aspx AppID] de Bing:
+	</text>
+	<button label="Verificar" name="verify_bing_api_key_btn"/>
+	<text name="google_api_key_label">
+		[http://code.google.com/apis/language/translate/v2/getting_started.html#auth Clave de API] de Google:
+	</text>
+	<button label="Verificar" name="verify_google_api_key_btn"/>
+	<text name="google_links_text">
+		[http://code.google.com/apis/language/translate/v2/pricing.html Precios] | [https://code.google.com/apis/console Estadísticas]
+	</text>
+	<button label="OK" name="ok_btn"/>
+	<button label="Cancelar" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_voice_controls.xml b/indra/newview/skins/default/xui/es/floater_voice_controls.xml
index f02855123c861081e142676a8b09ff6d3e9a260a..eff21239be1a40f873536478c073c9e7cc42a2f7 100644
--- a/indra/newview/skins/default/xui/es/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/es/floater_voice_controls.xml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Controles de Voz">
+<floater name="floater_voice_controls" title="CONTROLES DE LA VOZ">
 	<string name="title_nearby">
-		CHAT DE VOZ
+		CONFIGURACIÓN DE VOZ
 	</string>
 	<string name="title_group">
-		Multiconferencia de voz con [GROUP]
+		MULTICONFERENCIA DE VOZ CON [GROUP]
 	</string>
 	<string name="title_adhoc">
-		Multiconferencia de voz
+		MULTICONFERENCIA DE VOZ
 	</string>
 	<string name="title_peer_2_peer">
-		Llamada: [NAME]
+		LLAMADA A [NAME]
 	</string>
 	<string name="no_one_near">
 		Nadie cercano tiene activada la voz
diff --git a/indra/newview/skins/default/xui/es/menu_hide_navbar.xml b/indra/newview/skins/default/xui/es/menu_hide_navbar.xml
index 22a1873234ad48c587bd32c40930a7774743d4a0..9945908c4fb6bd7a63ae1a799f9045a7b2f41e35 100644
--- a/indra/newview/skins/default/xui/es/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/es/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="hide_navbar_menu">
-	<menu_item_check label="Mostrar la barra de navegación" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="Mostrar la barra de navegación y de favoritos" name="ShowNavbarNavigationPanel"/>
 	<menu_item_check label="Mostrar la barra de favoritos" name="ShowNavbarFavoritesPanel"/>
 	<menu_item_check label="Mostrar mini-barra de ubicación" name="ShowMiniLocationPanel"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml
index cabcacaed52295d2e16f5e3e6e306aa2551867dc..e3abf7ad6295795919f834f1990b0c20505ce6bc 100644
--- a/indra/newview/skins/default/xui/es/menu_login.xml
+++ b/indra/newview/skins/default/xui/es/menu_login.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Login Menu">
 	<menu label="Yo" name="File">
-		<menu_item_call label="Preferencias" name="Preferences..."/>
+		<menu_item_call label="Preferencias..." name="Preferences..."/>
 		<menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Ayuda" name="Help">
diff --git a/indra/newview/skins/default/xui/es/menu_toolbars.xml b/indra/newview/skins/default/xui/es/menu_toolbars.xml
new file mode 100644
index 0000000000000000000000000000000000000000..63f3dc43bd5b839193372c950fc442c15079aaaf
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/menu_toolbars.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+	<menu_item_call label="Quitar este botón" name="Remove button"/>
+	<menu_item_call label="Botones de la barra de herramientas..." name="Choose Buttons"/>
+	<menu_item_check label="Iconos y etiquetas" name="icons_with_text"/>
+	<menu_item_check label="Solo iconos" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
index bc8a5731ab9709bf59ffe5656120f302b5bb0038..4762e3f4a43b365ef1c4bec16f1290fd72fb5909 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -1,54 +1,60 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Main Menu">
 	<menu label="Yo" name="Me">
-		<menu_item_call label="Preferencias" name="Preferences"/>
-		<menu_item_call label="Mi panel de control" name="Manage My Account">
-			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=es"/>
-		</menu_item_call>
-		<menu_item_call label="Comprar L$" name="Buy and Sell L$"/>
-		<menu_item_call label="Mi perfil" name="Profile"/>
-		<menu_item_call label="Mi apariencia" name="ChangeOutfit"/>
-		<menu_item_check label="Mi Inventario" name="Inventory"/>
-		<menu_item_check label="Mi Inventario" name="ShowSidetrayInventory"/>
-		<menu_item_check label="Mis gestos" name="Gestures"/>
-		<menu_item_check label="Mi voz" name="ShowVoice"/>
+		<menu_item_call label="Perfil..." name="Profile"/>
+		<menu_item_call label="Apariencia" name="ChangeOutfit"/>
+		<menu_item_call label="Elige un avatar..." name="Avatar Picker"/>
+		<menu_item_check label="Inventario..." name="Inventory"/>
+		<menu_item_call label="Nueva ventana del inventario" name="NewInventoryWindow"/>
+		<menu_item_call label="Lugares..." name="Places"/>
+		<menu_item_call label="Destacados..." name="Picks"/>
+		<menu_item_call label="Controles de la cámara..." name="Camera Controls"/>
 		<menu label="Movimiento" name="Movement">
 			<menu_item_call label="Sentarte" name="Sit Down Here"/>
 			<menu_item_check label="Volar" name="Fly"/>
 			<menu_item_check label="Correr siempre" name="Always Run"/>
 			<menu_item_call label="Parar mis animaciones" name="Stop Animating My Avatar"/>
 		</menu>
-		<menu label="Mi 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="Solicitar estatus de Administrador" name="Request Admin Options"/>
 		<menu_item_call label="Dejar el estatus de Administrador" name="Leave Admin Options"/>
+		<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"/>
+		</menu_item_call>
+		<menu_item_call label="Preferencias..." name="Preferences"/>
+		<menu_item_call label="Botones de la barra de herramientas..." name="Toolbars"/>
+		<menu_item_call label="Ocultar todos los controles" name="Hide UI"/>
 		<menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Comunicarme" name="Communicate">
-		<menu_item_call label="Mis amigos" name="My Friends"/>
-		<menu_item_call label="Mis grupos" name="My Groups"/>
-		<menu_item_check label="Chat" name="Nearby Chat"/>
+		<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_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="Chat de voz" name="Nearby Voice"/>
 	</menu>
 	<menu label="Mundo" name="World">
-		<menu_item_check label="Minimapa" name="Mini-Map"/>
+		<menu_item_call label="Crear un hito de este sitio" name="Create Landmark Here"/>
+		<menu_item_call label="Destinos..." name="Destinations"/>
 		<menu_item_check label="Mapa del mundo" name="World Map"/>
+		<menu_item_check label="Minimapa" name="Mini-Map"/>
 		<menu_item_check label="Buscar" name="Search"/>
+		<menu_item_call label="Teleportar a la Base" name="Teleport Home"/>
+		<menu_item_call label="Fijar mi Base aquí" name="Set Home to Here"/>
 		<menu_item_call label="Foto" name="Take Snapshot"/>
-		<menu_item_call label="Crear un hito de este sitio" name="Create Landmark Here"/>
-		<menu label="Perfil del lugar" name="Land">
-			<menu_item_call label="Perfil del lugar" name="Place Profile"/>
-			<menu_item_call label="Acerca del terreno" name="About Land"/>
-			<menu_item_call label="Región/Estado" name="Region/Estate"/>
-		</menu>
+		<menu_item_call label="Perfil del lugar" name="Place Profile"/>
+		<menu_item_call label="Acerca del terreno" name="About Land"/>
+		<menu_item_call label="Región/Estado" name="Region/Estate"/>
+		<menu_item_call label="Mis terrenos..." name="My Land"/>
 		<menu_item_call label="Comprar este terreno" name="Buy Land"/>
-		<menu_item_call label="Mi terreno" name="My Land"/>
 		<menu label="Mostrar" name="LandShow">
-			<menu_item_check label="Controles del movimiento" name="Movement Controls"/>
-			<menu_item_check label="Controles de la cámara" name="Camera Controls"/>
 			<menu_item_check label="Líneas de prohibición" name="Ban Lines"/>
 			<menu_item_check label="Balizas" name="beacons"/>
 			<menu_item_check label="Límites de las parcelas" name="Property Lines"/>
@@ -57,16 +63,15 @@
 			<menu_item_check label="Propiedades de la parcela" name="Parcel Properties"/>
 			<menu_item_check label="Menú Avanzado" name="Show Advanced Menu"/>
 		</menu>
-		<menu_item_call label="Teleportar a la Base" name="Teleport Home"/>
-		<menu_item_call label="Fijar mi Base aquí" name="Set Home to Here"/>
 		<menu label="Sol" name="Environment Settings">
 			<menu_item_call label="Amanecer" name="Sunrise"/>
 			<menu_item_call label="Mediodía" name="Noon"/>
 			<menu_item_call label="Atardecer" name="Sunset"/>
 			<menu_item_call label="Medianoche" name="Midnight"/>
+			<menu_item_call label="Usar configuración de región" name="Use Region Settings"/>
 		</menu>
-		<menu label="Editor de entorno" name="Enviroment Editor">
-			<menu_item_call label="Configuración de entorno..." name="Enviroment Settings"/>
+		<menu label="Editor de entorno" name="Environment Editor">
+			<menu_item_call label="Configuración del entorno..." name="Environment Settings"/>
 			<menu label="Agua predefinida" name="Water Presets">
 				<menu_item_call label="Nuevo predefinido..." name="new_water_preset"/>
 				<menu_item_call label="Editar predefinido..." name="edit_water_preset"/>
@@ -139,13 +144,14 @@
 			<menu_item_call label="Animación ([COST] L$)..." name="Upload Animation"/>
 			<menu_item_call label="Modelo..." name="Upload Model"/>
 			<menu_item_call label="Masivo ([COST] L$ por archivo)..." name="Bulk Upload"/>
+			<menu_item_call label="Configurar los permisos por defecto de subida" name="perm prefs"/>
 		</menu>
 		<menu_item_call label="Deshacer" name="Undo"/>
 		<menu_item_call label="Rehacer" name="Redo"/>
 	</menu>
 	<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_check label="Permitir consejos" name="Enable Hints"/>
 		<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"/>
@@ -161,7 +167,7 @@
 		<menu label="Herramientas de rendimiento" name="Performance Tools">
 			<menu_item_call label="Medidor de lag" name="Lag Meter"/>
 			<menu_item_check label="Estadísticas" name="Statistics Bar"/>
-			<menu_item_check label="Mostrar cuánto cuesta renderizar el avatar" name="Avatar Rendering Cost"/>
+			<menu_item_check label="Mostrar el peso del dibujo de los avatares" name="Avatar Rendering Cost"/>
 		</menu>
 		<menu label="Realzado y Visibilidad" name="Highlighting and Visibility">
 			<menu_item_check label="Baliza con destellos" name="Cheesy Beacon"/>
@@ -198,11 +204,10 @@
 		<menu_item_check label="Usar Plugin Read Thread" name="Use Plugin Read Thread"/>
 		<menu_item_call label="Vaciar la caché de grupo" name="ClearGroupCache"/>
 		<menu_item_check label="Vista subjetiva suavizada" name="Mouse Smoothing"/>
+		<menu_item_call label="Recuperar las teclas" name="Release Keys"/>
 		<menu label="Atajos de teclado" name="Shortcuts">
 			<menu_item_call label="Imagen ([COST] L$)..." name="Upload Image"/>
 			<menu_item_check label="Buscar" name="Search"/>
-			<menu_item_call label="Recuperar las teclas" name="Release Keys"/>
-			<menu_item_call label="Interfaz en el tamaño predeterminado" name="Set UI Size to Default"/>
 			<menu_item_check label="Mostrar el menú Avanzado - acceso directo antiguo" name="Show Advanced Menu - legacy shortcut"/>
 			<menu_item_call label="Cerrar la ventana" name="Close Window"/>
 			<menu_item_call label="Cerrar todas las ventanas" name="Close All Windows"/>
@@ -271,6 +276,8 @@
 			<menu_item_check label="Actualizar el tipo" name="Update Type"/>
 			<menu_item_check label="Información sobre el nivel de detalle" name="LOD Info"/>
 			<menu_item_check label="Crear cola" name="Build Queue"/>
+			<menu_item_check label="Vectores de viento" name="Wind Vectors"/>
+			<menu_item_check label="Complejidad del renderizado" name="rendercomplexity"/>
 			<menu_item_check label="Esculpir" name="Sculpt"/>
 		</menu>
 		<menu label="Rendering" name="Rendering">
@@ -279,7 +286,6 @@
 			<menu_item_check label="Luces y sombras" name="Lighting and Shadows"/>
 			<menu_item_check label="Sombras del sol/la luna/proyectores" name="Shadows from Sun/Moon/Projectors"/>
 			<menu_item_check label="SSAO y sombras suavizadas" name="SSAO and Shadow Smoothing"/>
-			<menu_item_check label="Iluminación global (experimental)" name="Global Illumination"/>
 			<menu_item_check label="Capas alfa automáticas (deferidas)" name="Automatic Alpha Masks (deferred)"/>
 			<menu_item_check label="Capas alfa automáticas (no deferidas)" name="Automatic Alpha Masks (non-deferred)"/>
 			<menu_item_check label="Animation Textures" name="Animation Textures"/>
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index 4fb29b942748da52283c2ea5498f85d8b85d7b45..e0a20683c50178636b5c896255b88d8e46b04a81 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -981,7 +981,7 @@ no tienes el permiso de comprar terreno para el grupo que tienes activado actual
 		</form>
 	</notification>
 	<notification name="RemoveFromFriends">
-		¿Quieres eliminar a [NAME] de tu lista de amigos?
+		¿Quieres eliminar a &lt;nolink&gt;[NAME]&lt;/nolink&gt; de tu lista de amigos?
 		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
 	</notification>
 	<notification name="RemoveMultipleFromFriends">
@@ -1114,8 +1114,13 @@ El precio de compra del terreno no se le devolverá al propietario. Si se vende
 	<notification name="DisplaySetToSafe">
 		Las configuraciones que se muestran se han fijado en los niveles guardados, pues especificaste la opción de guardarlos.
 	</notification>
-	<notification name="DisplaySetToRecommended">
-		Las configuraciones que se muestran se han fijado en los niveles recomendados para la configuración de tu sistema.
+	<notification name="DisplaySetToRecommendedGPUChange">
+		La configuración de pantalla se ha establecido en los niveles recomendados porque tu tarjeta de gráficos ha cambiado
+de &apos;[LAST_GPU]&apos;
+a &apos;[THIS_GPU]&apos;
+	</notification>
+	<notification name="DisplaySetToRecommendedFeatureChange">
+		La configuración de pantalla se ha establecido en los niveles recomendados a causa de un cambio en el subsistema de renderizado.
 	</notification>
 	<notification name="ErrorMessage">
 		[ERROR_MESSAGE]
@@ -1437,7 +1442,7 @@ Debemos reiniciar [APP_NAME] para instalar la actualización.
 		<usetemplate ignoretext="Confirmar antes de devolver objetos a sus propietarios." name="okcancelignore" notext="Cancelar" yestext="OK"/>
 	</notification>
 	<notification name="GroupLeaveConfirmMember">
-		Actualmente, eres miembro del grupo [GROUP].
+		Actualmente, eres miembro del grupo &lt;nolink&gt;[GROUP]&lt;/nolink&gt;.
 ¿Dejar el grupo?
 		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
 	</notification>
@@ -1919,6 +1924,18 @@ Dado que estos objetos tienen scripts, moverlos a tu inventario puede provocar u
 		¿Estás seguro de que quieres salir?
 		<usetemplate ignoretext="Confirmar antes de salir" name="okcancelignore" notext="No salir" yestext="Salir"/>
 	</notification>
+	<notification name="ConfirmRestoreToybox">
+		Esta acción restaurará los botones y barras de herramientas predeterminados.
+
+Esta acción no se puede deshacer.
+		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmClearAllToybox">
+		Esta acción volverá a colocar todos los botones a la caja de herramientas y las barras de herramientas aparecerán vacías.
+    
+Esta acción no se puede deshacer.
+		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
+	</notification>
 	<notification name="DeleteItems">
 		[QUESTION]
 		<usetemplate ignoretext="Confirmar antes de eliminar elementos" name="okcancelignore" notext="Cancelar" yestext="OK"/>
@@ -2122,10 +2139,10 @@ Al hacerlo se iniciará el navegador web.
 		Asunto: [SUBJECT], Mensaje: [MESSAGE]
 	</notification>
 	<notification name="FriendOnline">
-		[NAME] está conectado
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está conectado
 	</notification>
 	<notification name="FriendOffline">
-		[NAME] está desconectado
+		&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.
@@ -2238,14 +2255,16 @@ Por favor, selecciona un sólo objeto.
 		Se ha rehusado tu tarjeta de visita.
 	</notification>
 	<notification name="TeleportToLandmark">
-		Puedes teleportarte a lugares como &apos;[NAME]&apos; abriendo el panel Lugares -a la derecha de tu pantalla- y seleccionando la sección Hitos.
-Pulsa en un hito para seleccionarlo, y, luego, pulsa &apos;Teleportar&apos; en la parte inferior del panel.
-(También puedes pulsar dos veces en el hito o pulsarlo con el botón derecho del ratón y elegir &apos;Teleportar&apos;.)
+		Para teleportarte a lugares como &apos;[NAME]&apos;, pulsa el botón &quot;Lugares&quot;,
+    y selecciona la pestaña Hitos en la ventana que se abre. Pulsa en un
+    hito para seleccionarlo y luego pulsa &apos;Teleportar&apos; en la parte inferior de la ventana.
+    (También puedes pulsar dos veces en el hito o pulsarlo con el botón derecho del ratón y
+    elegir &apos;Teleportar&apos;.)
 	</notification>
 	<notification name="TeleportToPerson">
-		Puedes contactar con un Residente como &apos;[NAME]&apos; abriendo el panel Gente en el lado derecho de tu pantalla.
-Elige al Residente de la lista y pulsa &apos;MI&apos; en la parte inferior del panel.
-(También puedes pulsar dos veces en su nombre o pulsarlo con el botón derecho y elegir &apos;MI&apos;).
+		Para ponerte en contacto con Residentes como &apos;[NAME]&apos;, pulsa el botón &quot;Gente&quot;, selecciona un Residente en la ventana que se abre y después pulsa en &apos;MI&apos; en
+    la parte inferior de la ventana.
+    (También puedes pulsar dos veces en su nombre o pulsarlo con el botón derecho y elegir &apos;MI&apos;).
 	</notification>
 	<notification name="CantSelectLandFromMultipleRegions">
 		No puedes seleccionar un terreno que cruce las fronteras entre servidores.
@@ -2266,6 +2285,9 @@ Inténtalo seleccionando un trozo más pequeño de terreno.
 	<notification name="PaymentSent">
 		[MESSAGE]
 	</notification>
+	<notification name="PaymentFailure">
+		[MESSAGE]
+	</notification>
 	<notification name="EventNotification">
 		Notificación de un evento:
 
@@ -2520,10 +2542,10 @@ Por favor, vuelve a intentarlo en unos momentos.
 		</form>
 	</notification>
 	<notification name="FriendshipAccepted">
-		[NAME] ha aceptado tu oferta de amistad.
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; ha aceptado tu ofrecimiento de amistad.
 	</notification>
 	<notification name="FriendshipDeclined">
-		[NAME] ha rehusado tu oferta de amistad.
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; ha rechazado tu ofrecimiento de amistad.
 	</notification>
 	<notification name="FriendshipAcceptedByMe">
 		Aceptado el ofrecimiento de amistad.
@@ -2999,10 +3021,6 @@ Al ocultar el botón Hablar se desactiva la función de voz.
 			<button name="cancel" text="Cancelar"/>
 		</form>
 	</notification>
-	<notification label="" name="ModeChange">
-		Para cambiar de modo tienes que salir y reiniciar.
-		<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
-	</notification>
 	<notification label="" name="NoClassifieds">
 		La creación y edición de clasificados sólo está disponible en el modo Avanzado. ¿Quieres salir y cambiar de modo? El selector de modo se encuentra en la pantalla de inicio de sesión.
 		<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
@@ -3047,6 +3065,10 @@ Al ocultar el botón Hablar se desactiva la función de voz.
 		Las búsquedas solo están disponibles en el modo Avanzado. ¿Quieres cerrar sesión y cambiar de modo?
 		<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
 	</notification>
+	<notification label="" name="ConfirmHideUI">
+		Esta acción ocultará todos los botones y elementos de menú. Para restaurarlos, pulsa otra vez en [SHORTCUT].
+		<usetemplate ignoretext="Confirmar antes de ocultar la IU" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+	</notification>
 	<global name="UnsupportedGLRequirements">
 		Parece que no tienes el hardware apropiado para [APP_NAME]. [APP_NAME] requiere una tarjeta gráfica OpenGL que admita texturas múltiples (&apos;multitexture support&apos;). Si la tienes, comprueba que tienes los últimos &apos;drivers&apos; para tu tarjeta gráfica, así como los últimos parches y &apos;service packs&apos; para tu sistema operativo.
 
diff --git a/indra/newview/skins/default/xui/es/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/es/panel_chiclet_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eaaa5dbe78a36ad5f7e2ee1ac5b422a557d04f00
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="Conversaciones"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="Notificaciones"/>
+			</chiclet_notification>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_edit_skin.xml b/indra/newview/skins/default/xui/es/panel_edit_skin.xml
index 501ecfb4de3dd6127f4c0224e43b9d2849ba313b..8d895a615218a5b1ceb2c4c25431978a6bb5b738 100644
--- a/indra/newview/skins/default/xui/es/panel_edit_skin.xml
+++ b/indra/newview/skins/default/xui/es/panel_edit_skin.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_skin_panel">
 	<panel name="avatar_skin_color_panel">
-		<texture_picker label="Tatuajes de la cabeza" name="Head Tattoos" tool_tip="Pulsa para elegir una imagen"/>
-		<texture_picker label="Tatuajes superiores" name="Upper Tattoos" tool_tip="Pulsa para elegir una imagen"/>
-		<texture_picker label="Tatuajes inferiores" name="Lower Tattoos" tool_tip="Pulsa para elegir una imagen"/>
+		<texture_picker label="Cabeza" name="Head" tool_tip="Pulsa para elegir una imagen"/>
+		<texture_picker label="Parte superior del cuerpo" name="Upper Body" tool_tip="Pulsa para elegir una imagen"/>
+		<texture_picker label="Parte inferior del cuerpo" name="Lower Body" tool_tip="Pulsa para elegir una imagen"/>
 	</panel>
 	<panel name="accordion_panel">
 		<accordion name="wearable_accordion">
diff --git a/indra/newview/skins/default/xui/es/panel_me.xml b/indra/newview/skins/default/xui/es/panel_me.xml
index ed253904aa3f7157f95dcd2c89ef6a595f8183f7..850cd6ec7190d824cdda70c3a998bac220dd2338 100644
--- a/indra/newview/skins/default/xui/es/panel_me.xml
+++ b/indra/newview/skins/default/xui/es/panel_me.xml
@@ -1,7 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Mi perfil" name="panel_me">
-	<tab_container name="tabs">
-		<panel label="MI PERFIL" name="panel_profile"/>
-		<panel label="MIS DESTACADOS" name="panel_picks"/>
-	</tab_container>
+	<panel label="MIS DESTACADOS" name="panel_picks"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_my_profile.xml b/indra/newview/skins/default/xui/es/panel_my_profile.xml
deleted file mode 100644
index 29e5e6f652ed19642c33946b2bb725a4c03e86bb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/es/panel_my_profile.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Perfil" name="panel_profile">
-	<string name="no_partner_text" value="Ninguno/a"/>
-	<string name="no_group_text" value="Ninguno"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="scroll_content_panel">
-					<panel name="second_life_image_panel">
-						<text name="display_name_descr_text">
-							Nombre de usuario
-						</text>
-						<text name="name_descr_text">
-							Nombre mostrado
-						</text>
-						<button label="Perfil" name="see_profile_btn" tool_tip="Ver el perfil de este avatar"/>
-					</panel>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_navigation_bar.xml b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml
index 293c9ef1d9491fc8b21ff5dc62bc6db7dd281f86..d36c6283bcf7be3be8b975f3e0d3f3e5f25186d2 100644
--- a/indra/newview/skins/default/xui/es/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="Volver a la localización anterior"/>
-		<pull_button name="forward_btn" tool_tip="Ir una localización adelante"/>
-		<button name="home_btn" tool_tip="Teleportar a mi Base"/>
-		<location_input label="Localización" name="location_combo"/>
-		<search_combo_box label="Buscar" name="search_combo_box" tool_tip="Buscar">
-			<combo_editor label="Buscar en [SECOND_LIFE]" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
-		<label name="favorites_bar_label" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
-			Barra de Favoritos
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="Ver más de Mis favoritos"/>
-	</favorites_bar>
+	<layout_stack name="nvp_stack">
+		<layout_panel name="navigation_layout_panel">
+			<panel name="navigation_panel">
+				<pull_button name="back_btn" tool_tip="Volver a la localización anterior"/>
+				<pull_button name="forward_btn" tool_tip="Ir una localización adelante"/>
+				<button name="home_btn" tool_tip="Teleportar a mi Base"/>
+				<location_input label="Lugar" name="location_combo"/>
+			</panel>
+		</layout_panel>
+		<layout_panel name="favorites_layout_panel">
+			<favorites_bar name="favorite" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
+				<label name="favorites_bar_label" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
+					Barra de Favoritos
+				</label>
+				<more_button name="&gt;&gt;" tool_tip="Ver más de Mis favoritos">
+					Más ▼
+				</more_button>
+			</favorites_bar>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_nearby_chat.xml b/indra/newview/skins/default/xui/es/panel_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4220ab3c9f8a6b90ddde81868ec4e892ee3a7b91
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+	<check_box label="Traducir el chat" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_notes.xml b/indra/newview/skins/default/xui/es/panel_notes.xml
deleted file mode 100644
index 00d4caf4685cdb16acfdf0eed6d4d4294c8dff1e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/es/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Notas y Privacidad" name="panel_notes">
-	<layout_stack name="layout">
-		<layout_panel name="notes_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<text name="status_message" value="Mis notas privadas:"/>
-					<text name="status_message2" value="Permitir que esta persona:"/>
-					<check_box label="Vea si estoy conectado" name="status_check"/>
-					<check_box label="Me vea en el mapa" name="map_check"/>
-					<check_box label="Edite, borre o coja mis objetos" name="objects_check"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-		<layout_panel name="notes_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="Añadir como amigo" name="add_friend" tool_tip="Ofrecer amistad a este Residente"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="MI" name="im" tool_tip="Abrir una sesión de mensajes instantáneos"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="Llamar" name="call" tool_tip="Llamar a este Residente"/>
-				</layout_panel>
-				<layout_panel name="show_on_map_btn_lp">
-					<button label="Mapa" name="show_on_map_btn" tool_tip="Mostrar al Residente en el mapa"/>
-				</layout_panel>
-				<layout_panel name="teleport_btn_lp">
-					<button label="Teleporte" name="teleport" tool_tip="Ofrecer teleporte"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml
index 2fcbb00aed1f6d251010f0112cfa80871cf1a1bc..a9d38dca2502807bae6ed8b37651ad1bf088cdbd 100644
--- a/indra/newview/skins/default/xui/es/panel_people.xml
+++ b/indra/newview/skins/default/xui/es/panel_people.xml
@@ -76,7 +76,7 @@
 				<button label="Compartir" name="share_btn" tool_tip="Compartir un objeto del inventario"/>
 			</layout_panel>
 			<layout_panel name="teleport_btn_lp">
-				<button label="Teleportarte" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
+				<button label="Teleporte" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
 			</layout_panel>
 		</layout_stack>
 		<layout_stack name="bottom_bar_ls1">
diff --git a/indra/newview/skins/default/xui/es/panel_pick_info.xml b/indra/newview/skins/default/xui/es/panel_pick_info.xml
index a1259cf483a59229e557696d67f97dc8ca5d73da..3450279b4a62aff58cc665d486898df83797d858 100644
--- a/indra/newview/skins/default/xui/es/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/es/panel_pick_info.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="panel_pick_info">
-	<text name="title" value="Información del destacado"/>
+	<text name="title" value="Datos del destacado"/>
 	<scroll_container name="profile_scroll">
 		<panel name="scroll_content_panel">
 			<text_editor name="pick_name" value="[nombre]"/>
diff --git a/indra/newview/skins/default/xui/es/panel_postcard_message.xml b/indra/newview/skins/default/xui/es/panel_postcard_message.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7316d91f5c8d554acf4fff79cee65dfe9d11d976
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_postcard_message.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_message">
+	<text name="to_label">
+		Hasta:
+	</text>
+	<text name="name_label">
+		Desde:
+	</text>
+	<text name="subject_label">
+		Asunto:
+	</text>
+	<line_editor label="Escribe aquí el asunto." name="subject_form"/>
+	<text name="msg_label">
+		Mensaje:
+	</text>
+	<text_editor name="msg_form">
+		Escribe aquí tu mensaje.
+	</text_editor>
+	<button label="Cancelar" name="cancel_btn"/>
+	<button label="Enviar" name="send_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_postcard_settings.xml b/indra/newview/skins/default/xui/es/panel_postcard_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..39313194479076ff03365a8d5c12cc271493373c
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_postcard_settings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_settings">
+	<combo_box label="Resolución" name="postcard_size_combo">
+		<combo_box.item label="Ventana actual" name="CurrentWindow"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="Personalizado" name="Custom"/>
+	</combo_box>
+	<layout_stack name="postcard_image_params_ls">
+		<layout_panel name="postcard_image_size_lp">
+			<spinner label="Ancho" name="postcard_snapshot_width"/>
+			<spinner label="Altura" name="postcard_snapshot_height"/>
+			<check_box label="Mantener las proporciones" name="postcard_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="postcard_image_format_quality_lp">
+			<slider label="Calidad de la imagen" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+</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 d8fd43469d42c93ed10047440ea210fcf9ce2fb2..aea9b9ce4ac86abfca9ead70be56efebe319b655 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
@@ -29,30 +29,5 @@
 	<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"/>
-	<check_box name="translate_chat_checkbox"/>
-	<text name="translate_chb_label">
-		Usar en el chat el traductor automático de Google
-	</text>
-	<text name="translate_language_text">
-		Traducir el chat al:
-	</text>
-	<combo_box name="translate_language_combobox">
-		<combo_box.item label="Predeterminado del sistema" name="System Default Language"/>
-		<combo_box.item label="English (inglés)" name="English"/>
-		<combo_box.item label="Dansk (danés)" name="Danish"/>
-		<combo_box.item label="Deutsch (alemán)" name="German"/>
-		<combo_box.item label="Español" name="Spanish"/>
-		<combo_box.item label="Français (francés)" name="French"/>
-		<combo_box.item label="Italiano (italiano)" name="Italian"/>
-		<combo_box.item label="Magyar (húngaro)" name="Hungarian"/>
-		<combo_box.item label="Nederlands (neerlandés)" name="Dutch"/>
-		<combo_box.item label="Polski (polaco)" name="Polish"/>
-		<combo_box.item label="Português (portugués)" name="Portugese"/>
-		<combo_box.item label="Русский (ruso)" name="Russian"/>
-		<combo_box.item label="Türkçe (turco)" name="Turkish"/>
-		<combo_box.item label="Українська (ucraniano)" name="Ukrainian"/>
-		<combo_box.item label="中文 (简体) (chino)" name="Chinese"/>
-		<combo_box.item label="日本語 (japonés)" name="Japanese"/>
-		<combo_box.item label="한국어 (coreano)" name="Korean"/>
-	</combo_box>
+	<button label="Configuración de la traducción del chat" name="ok_btn"/>
 </panel>
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 e725e4a05ae30edac40dabeb2a65305c926bdcb5..4fc163f5b67e02c5bed29c213356842c7e0844e9 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
@@ -11,10 +11,12 @@
 		<combo_box.item label="Español - Beta" name="Spanish"/>
 		<combo_box.item label="Français (Francés) - Beta" name="French"/>
 		<combo_box.item label="Italiano - Beta" name="Italian"/>
-		<combo_box.item label="Nederlands (Neerlandés) - Beta" name="Dutch"/>
 		<combo_box.item label="Polski (Polaco) - Beta" name="Polish"/>
 		<combo_box.item label="Português (portugués) - Beta" name="Portugese"/>
+		<combo_box.item label="Русский (Ruso) - Beta" name="Russian"/>
+		<combo_box.item label="Türkçe (Turco) - Beta" name="Turkish"/>
 		<combo_box.item label="日本語 (Japonés) - Beta" name="(Japanese)"/>
+		<combo_box.item label="正體中文 (Chino tradicional) - Beta" name="Traditional Chinese"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(requiere reiniciar)
@@ -49,7 +51,6 @@
 	<check_box label="Títulos de grupos" name="show_all_title_checkbox1" tool_tip="Mostrar títulos de grupos, como Jefe o Miembro"/>
 	<check_box label="Realzar amigos" name="show_friends" tool_tip="Realzar las etiquetas de los nombres de tus amigos"/>
 	<check_box label="Ver nombres mostrados" name="display_names_check" tool_tip="Comprobar para utilizar nombres mostrados en chat, MI, etiquetas de nombres, etc."/>
-	<check_box label="Permitir los consejos de la IU del visor" name="viewer_hints_check"/>
 	<text name="inworld_typing_rg_label">
 		Si pulsas las teclas de letras:
 	</text>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_move.xml b/indra/newview/skins/default/xui/es/panel_preferences_move.xml
index d95e1673612d60c55037570fe35aa21325e2c154..b2ff6b61c2db25ce0b3830aeb4fa2473f5b4ff99 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_move.xml
@@ -7,18 +7,33 @@
 	</text>
 	<check_box label="Construir/Editar" name="edit_camera_movement" tool_tip="Usar el posicionamiento automático de la cámara al entrar en o salir del modo de edición"/>
 	<check_box label="Apariencia" name="appearance_camera_movement" tool_tip="Usar el posicionamiento automático de la cámara mientras se está editando"/>
-	<check_box initial_value="verdadero" label="Barra lateral" name="appearance_sidebar_positioning" tool_tip="Usar el posicionamiento automático de la cámara para la barra lateral"/>
+	<text name="keyboard_lbl">
+		Teclado:
+	</text>
+	<check_box label="Las teclas del cursor siempre para moverme" name="arrow_keys_move_avatar_check"/>
+	<check_box label="Correr siempre: atajo de teclado" name="tap_tap_hold_to_run"/>
+	<text name="mouse_lbl">
+		Ratón:
+	</text>
 	<check_box label="Verme en vista subjetiva" name="first_person_avatar_visible"/>
 	<text name=" Mouse Sensitivity">
 		Sensibilidad del ratón en la Vista subjetiva:
 	</text>
 	<check_box label="Invertir" name="invert_mouse"/>
-	<check_box label="Las teclas del cursor siempre para moverme" name="arrow_keys_move_avatar_check"/>
-	<check_box label="Correr siempre: atajo de teclado" name="tap_tap_hold_to_run"/>
-	<check_box label="Haz doble clic para:" name="double_click_chkbox"/>
-	<radio_group name="double_click_action">
-		<radio_item label="Teleportarte" name="radio_teleport"/>
-		<radio_item label="Piloto automático" name="radio_autopilot"/>
-	</radio_group>
+	<text name="single_click_action_lbl">
+		Un clic en el terreno:
+	</text>
+	<combo_box name="single_click_action_combo">
+		<combo_box.item label="Ninguna acción" name="0"/>
+		<combo_box.item label="Ir al punto seleccionado" name="1"/>
+	</combo_box>
+	<text name="double_click_action_lbl">
+		Doble clic en el terreno:
+	</text>
+	<combo_box name="double_click_action_combo">
+		<combo_box.item label="Ninguna acción" name="0"/>
+		<combo_box.item label="Ir al punto seleccionado" name="1"/>
+		<combo_box.item label="Teleportarte al punto seleccionado" name="2"/>
+	</combo_box>
 	<button label="Otros dispositivos" name="joystick_setup_button"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
index 3de18654b5ba31edbea6aa63526191fd60a91bd8..81a29dae5ad2f38e59998605925d73603e6846b7 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
@@ -15,7 +15,7 @@
 		Web:
 	</text>
 	<radio_group name="use_external_browser">
-		<radio_item label="Usar mi navegador (IE, Firefox, Safari)" name="external" tool_tip="Usa tu navegador por defecto para ayuda, enlaces web, etc. No es aconsejable si estás a pantalla completa." value="1"/>
+		<radio_item label="Usar mi navegador (IE, Firefox, Safari)" name="external" tool_tip="Usa tu navegador por defecto para ayuda, enlaces web, etc. No es aconsejable si estás a pantalla completa." value="true"/>
 		<radio_item label="Usar el navegador incorporado" name="internal" tool_tip="Usa el navegador incorporado para ayuda, enlaces web, etc. Este navegador se abre en una nueva ventana dentro de [APP_NAME]." value=""/>
 	</radio_group>
 	<check_box initial_value="true" label="Activar plugins" name="browser_plugins_enabled"/>
diff --git a/indra/newview/skins/default/xui/es/panel_profile.xml b/indra/newview/skins/default/xui/es/panel_profile.xml
deleted file mode 100644
index 334c0541af9bc7d65128a5d0f8bd1440d9597f0b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/es/panel_profile.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Perfil" name="panel_profile">
-	<string name="CaptionTextAcctInfo">
-		[ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
-	</string>
-	<string name="payment_update_link_url">
-		http://www.secondlife.com/account/billing.php?lang=es-ES
-	</string>
-	<string name="partner_edit_link_url">
-		http://www.secondlife.com/account/partners.php?lang=es
-	</string>
-	<string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=es-ES"/>
-	<string name="no_partner_text" value="Ninguno"/>
-	<string name="no_group_text" value="Ninguno"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<panel name="second_life_image_panel">
-						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
-					</panel>
-					<panel name="first_life_image_panel">
-						<text name="title_rw_descr_text" value="Mundo real:"/>
-					</panel>
-					<text name="title_member_text" value="Residente desde:"/>
-					<text name="title_acc_status_text" value="Estado de la cuenta:"/>
-					<text name="title_partner_text" value="Compañero/a:"/>
-					<panel name="partner_data_panel">
-						<text initial_value="(obteniendo)" name="partner_text"/>
-					</panel>
-					<text name="title_groups_text" value="Grupos:"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-	<layout_stack name="layout_verb_buttons">
-		<layout_panel name="profile_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="Añadir como amigo" name="add_friend" tool_tip="Ofrecer amistad a este Residente"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="MI" name="im" tool_tip="Abrir una sesión de mensajes instantáneos"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="Llamar" name="call" tool_tip="Llamar a este Residente"/>
-				</layout_panel>
-				<layout_panel name="chat_btn_lp">
-					<button label="Teleporte" name="teleport" tool_tip="Ofrecer teleporte"/>
-				</layout_panel>
-				<layout_panel name="overflow_btn_lp">
-					<menu_button label="▼" name="overflow_btn" tool_tip="Pagar dinero al Residente o compartir algo del inventario con él"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="profile_me_buttons_panel">
-			<button label="Editar el perfil" name="edit_profile_btn" tool_tip="Modificar tu información personal"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_profile_view.xml b/indra/newview/skins/default/xui/es/panel_profile_view.xml
deleted file mode 100644
index cb374dee52f988c004edda15582ff102308d4398..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/es/panel_profile_view.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
-	<string name="status_online">
-		Conectado/a
-	</string>
-	<string name="status_offline">
-		Desconectado/a
-	</string>
-	<text name="display_name_label" value="Nombre mostrado:"/>
-	<text name="solo_username_label" value="Nombre de usuario:"/>
-	<text name="status" value="Conectado/a"/>
-	<text name="user_name_small" value="Jack, ¿has visto esto? Es un nombre larguísimo."/>
-	<button name="copy_to_clipboard" tool_tip="Copiar al portapapeles"/>
-	<text name="user_label" value="Nombre de usuario:"/>
-	<tab_container name="tabs">
-		<panel label="PERFIL" name="panel_profile"/>
-		<panel label="DESTACADOS" name="panel_picks"/>
-		<panel label="NOTAS Y PRIVACIDAD" name="panel_notes"/>
-	</tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_region_estate.xml b/indra/newview/skins/default/xui/es/panel_region_estate.xml
index c51c3815d1146fcc5b7419c6331cf9cb1ef695fe..3d0de4f083d3a375e8becc2e43e9ed6be86d529c 100644
--- a/indra/newview/skins/default/xui/es/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/es/panel_region_estate.xml
@@ -10,7 +10,7 @@
 		(desconocido)
 	</text>
 	<text name="owner_text">
-		Propietario del Estado:
+		Propietario del estado:
 	</text>
 	<text name="estate_owner">
 		(desconocido)
@@ -39,7 +39,7 @@
 	</string>
 	<button label="?" name="abuse_email_address_help"/>
 	<button label="Aplicar" name="apply_btn"/>
-	<button label="Expulsar a un Residente del Estado..." name="kick_user_from_estate_btn"/>
+	<button label="Expulsar a un Residente del estado..." name="kick_user_from_estate_btn"/>
 	<button label="Enviar un mensaje al estado..." name="message_estate_btn"/>
 	<text name="estate_manager_label">
 		Administradores del estado:
diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/es/panel_snapshot_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..12c74b5cd1838e80ea89f4bf3fba55e97487210e
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_snapshot_inventory.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_inventory">
+	<text name="title">
+		Guardar en mi inventario
+	</text>
+	<text name="hint_lbl">
+		Guardar una imagen en el inventario cuesta [UPLOAD_COST] L$. Para guardar una imagen como una textura, selecciona uno de los formatos cuadrados.
+	</text>
+	<combo_box label="Resolución" name="texture_size_combo">
+		<combo_box.item label="Ventana actual" name="CurrentWindow"/>
+		<combo_box.item label="Pequeña (128x128)" name="Small(128x128)"/>
+		<combo_box.item label="Mediana (256x256)" name="Medium(256x256)"/>
+		<combo_box.item label="Grande (512x512)" name="Large(512x512)"/>
+		<combo_box.item label="Personalizado" name="Custom"/>
+	</combo_box>
+	<spinner label="Ancho" name="inventory_snapshot_width"/>
+	<spinner label="Altura" name="inventory_snapshot_height"/>
+	<check_box label="Mantener las proporciones" name="inventory_keep_aspect_check"/>
+	<button label="Cancelar" name="cancel_btn"/>
+	<button label="Guardar" name="save_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_local.xml b/indra/newview/skins/default/xui/es/panel_snapshot_local.xml
new file mode 100644
index 0000000000000000000000000000000000000000..08c45d2e7645a2d648abaa164d3ffdda4f51df1b
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_snapshot_local.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_local">
+	<text name="title">
+		Guardar en mi ordenador
+	</text>
+	<combo_box label="Resolución" name="local_size_combo">
+		<combo_box.item label="Ventana actual" name="CurrentWindow"/>
+		<combo_box.item label="320x240" name="320x240"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="1280x1024" name="1280x1024"/>
+		<combo_box.item label="1600x1200" name="1600x1200"/>
+		<combo_box.item label="Personalizado" name="Custom"/>
+	</combo_box>
+	<layout_stack name="local_image_params_ls">
+		<layout_panel name="local_image_size_lp">
+			<spinner label="Ancho" name="local_snapshot_width"/>
+			<spinner label="Altura" name="local_snapshot_height"/>
+			<check_box label="Mantener las proporciones" name="local_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="local_image_format_quality_lp">
+			<combo_box label="Formato" name="local_format_combo">
+				<combo_box.item label="PNG (sin pérdida)" name="PNG"/>
+				<combo_box.item label="JPEG" name="JPEG"/>
+				<combo_box.item label="BMP (sin pérdida)" name="BMP"/>
+			</combo_box>
+			<slider label="Calidad de la imagen" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+	<button label="Cancelar" name="cancel_btn"/>
+	<flyout_button label="Guardar" name="save_btn" tool_tip="Guardar la imagen en un archivo">
+		<flyout_button.item label="Guardar" name="save_item"/>
+		<flyout_button.item label="Guardar como..." name="saveas_item"/>
+	</flyout_button>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_options.xml b/indra/newview/skins/default/xui/es/panel_snapshot_options.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2b2584f66c58bbaec68a2cae763caefde1d89a66
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_snapshot_options.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_options">
+	<button label="Publicar en los comentarios de Mi perfil" name="save_to_profile_btn"/>
+	<button label="Correo-e" name="save_to_email_btn"/>
+	<button label="Guardar en Mi inventario ([AMOUNT] L$)" name="save_to_inventory_btn"/>
+	<button label="Guardar en mi ordenador" name="save_to_computer_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/es/panel_snapshot_postcard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..649d547ba0c3d0160780ad9af85737f394f56b8b
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_snapshot_postcard.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_postcard">
+	<string name="default_subject">
+		Postal desde [SECOND_LIFE].
+	</string>
+	<string name="default_message">
+		¡Mira esto!
+	</string>
+	<string name="upload_message">
+		Enviando...
+	</string>
+	<text name="title">
+		Correo-e
+	</text>
+	<button label="Mensaje" name="message_btn"/>
+	<button label="Ajustes" name="settings_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/es/panel_snapshot_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6a0bc22d685983e4febb7f83d63af28c1b8bbf98
--- /dev/null
+++ b/indra/newview/skins/default/xui/es/panel_snapshot_profile.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_profile">
+	<text name="title">
+		Publicar en los comentarios de Mi perfil
+	</text>
+	<combo_box label="Resolución" name="profile_size_combo">
+		<combo_box.item label="Ventana actual" name="CurrentWindow"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="Personalizado" name="Custom"/>
+	</combo_box>
+	<layout_stack name="profile_image_params_ls">
+		<layout_panel name="profile_image_size_lp">
+			<spinner label="Ancho" name="profile_snapshot_width"/>
+			<spinner label="Altura" name="profile_snapshot_height"/>
+			<check_box label="Mantener las proporciones" name="profile_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="profile_image_metadata_lp">
+			<text name="caption_label">
+				Título:
+			</text>
+			<check_box initial_value="true" label="Incluir ubicación" name="add_location_cb"/>
+		</layout_panel>
+	</layout_stack>
+	<button label="Cancelar" name="cancel_btn"/>
+	<button label="Publicar" name="post_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_status_bar.xml b/indra/newview/skins/default/xui/es/panel_status_bar.xml
index 0391258b755d9d19f0fe99cb35ca62627a6490c1..79b2c32b23617c0a3e7d357f8b55784531bcea8a 100644
--- a/indra/newview/skins/default/xui/es/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/es/panel_status_bar.xml
@@ -17,12 +17,9 @@
 	</panel.string>
 	<panel name="balance_bg">
 		<text name="balance" tool_tip="Haz clic para actualizar tu saldo en L$" value="20 L$"/>
-		<button label="COMPRAR L$" name="buyL" tool_tip="Pulsa para comprar más L$"/>
+		<button label="Comprar L$" name="buyL" tool_tip="Pulsa para comprar más L$"/>
+		<button label="Comprar" name="goShop" tool_tip="Abrir el mercado de Second Life" width="80"/>
 	</panel>
-	<combo_box name="mode_combo" tool_tip="Selecciona el modo. Elige Básico para una exploración rápida y fácil y para chatear. Elige Avanzado para tener acceso a más funciones.">
-		<combo_box.item label="Modo Básico" name="Basic"/>
-		<combo_box.item label="Modo Avanzado" name="Advanced"/>
-	</combo_box>
 	<text name="TimeText" tool_tip="Hora actual (Pacífico)">
 		24:00 AM PST
 	</text>
diff --git a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml
index aae9bfc11355b194f9f7a7ff7f919f44137cd259..79d0cb84e8990b374ccf379d9b6b78a1d1b03680 100644
--- a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml
@@ -14,7 +14,7 @@
 							</string>
 							<button label="Objetos recibidos" name="inbox_btn"/>
 							<text name="inbox_fresh_new_count">
-								[NUM] Nuevos
+								[NUM] nuevos
 							</text>
 							<panel tool_tip="Drag and drop items to your inventory to manage and use them">
 								<text name="inbox_inventory_placeholder">
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index cc044ba416b3863c4ff0de1456b85d06be08bc65..2a6f32f84f5a68742c10a17d0fd78dc2327dffe4 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -34,6 +34,9 @@
 	<string name="ProgressChangingResolution">
 		Cambiando la resolución...
 	</string>
+	<string name="Fullbright">
+		Brillo al máximo (antiguo)
+	</string>
 	<string name="LoginInProgress">
 		Iniciando la sesión. [APP_NAME] debe de aparecer congelado. Por favor, espere.
 	</string>
@@ -116,7 +119,7 @@
 		No se pudo verificar la firma del certificado devuelta por el servidor de la cuadrícula. Ponte en contacto con el administrador de la cuadrícula.
 	</string>
 	<string name="LoginFailedNoNetwork">
-		Error de red: no se ha podido conectar; por favor, revisa tu conexión a Internet.
+		Error de red: no se ha podido conectar; por favor, revisa tu conexión a internet.
 	</string>
 	<string name="LoginFailed">
 		Error en el inicio de sesión.
@@ -583,6 +586,9 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="mesh">
 		red
 	</string>
+	<string name="AvatarEditingAppearance">
+		(Edición de Apariencia)
+	</string>
 	<string name="AvatarAway">
 		Ausente
 	</string>
@@ -1193,7 +1199,7 @@ Intenta iniciar sesión de nuevo en unos instantes.
 		No tienes en tu inventario una copia de esta textura
 	</string>
 	<string name="InventoryInboxNoItems">
-		Aquí se entregarán los objetos comprados en el mercado.
+		Cuando compres un objeto o lo recibas por otra vía, aparecerá aquí, para que puedas arrastrarlo a una carpeta de tu inventario o eliminarlo si no deseas conservarlo.
 	</string>
 	<string name="MarketplaceURL">
 		http://marketplace.[DOMAIN_NAME]
@@ -1255,6 +1261,9 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="Marketplace Error Internal Import">
 		Error: Este objeto tiene un problema. Vuelve a intentarlo más tarde.
 	</string>
+	<string name="Open landmarks">
+		Abrir hitos
+	</string>
 	<string name="no_transfer" value="(no transferible)"/>
 	<string name="no_modify" value="(no modificable)"/>
 	<string name="no_copy" value="(no copiable)"/>
@@ -1382,6 +1391,9 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="no_attachments">
 		No tienes puestos anexos
 	</string>
+	<string name="Attachments remain">
+		Anexos (quedan [COUNT] ranuras)
+	</string>
 	<string name="Buy">
 		Comprar
 	</string>
@@ -1508,6 +1520,12 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="Right Pec">
 		Pecho derecho
 	</string>
+	<string name="Neck">
+		Cuello
+	</string>
+	<string name="Avatar Center">
+		Centro del avatar
+	</string>
 	<string name="Invalid Attachment">
 		Punto de colocación no válido
 	</string>
@@ -3835,6 +3853,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 	<string name="inventory_item_offered-im">
 		Ofrecido el item del inventario
 	</string>
+	<string name="share_alert">
+		Arrastra los ítems desde el invenbtario hasta aquí
+	</string>
 	<string name="no_session_message">
 		(La sesión de MI no existe)
 	</string>
@@ -3931,6 +3952,18 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE].
 	<string name="you_paid_ldollars_no_name">
 		Has pagado [AMOUNT] L$ por [REASON].
 	</string>
+	<string name="you_paid_failure_ldollars">
+		No has pagado a [NAME] [AMOUNT] L$ [REASON].
+	</string>
+	<string name="you_paid_failure_ldollars_no_info">
+		No has pagado [AMOUNT] L$.
+	</string>
+	<string name="you_paid_failure_ldollars_no_reason">
+		No has pagado a [NAME] [AMOUNT] L$.
+	</string>
+	<string name="you_paid_failure_ldollars_no_name">
+		No has pagado [AMOUNT] L$ [REASON].
+	</string>
 	<string name="for item">
 		para [ITEM]
 	</string>
@@ -4158,8 +4191,8 @@ Denuncia de infracción
 	<string name="Female - Wow">
 		Mujer - Admiración
 	</string>
-	<string name="/bow1">
-		/reverencia1
+	<string name="/bow">
+		/reverencia
 	</string>
 	<string name="/clap">
 		/aplaudir
@@ -4341,6 +4374,12 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
 	<string name="ExternalEditorFailedToRun">
 		Error al ejecutar el editor externo.
 	</string>
+	<string name="TranslationFailed">
+		Error al traducir: [REASON]
+	</string>
+	<string name="TranslationResponseParseError">
+		Error al analizar la respuesta de la traducción.
+	</string>
 	<string name="Esc">
 		Esc
 	</string>
@@ -4671,4 +4710,196 @@ Inténtalo incluyendo la ruta de acceso al editor entre comillas
 	<string name="ParticleHiding">
 		Ocultando las partículas
 	</string>
+	<string name="Command_AboutLand_Label">
+		Acerca del terreno
+	</string>
+	<string name="Command_Appearance_Label">
+		Apariencia
+	</string>
+	<string name="Command_Avatar_Label">
+		Avatar
+	</string>
+	<string name="Command_Build_Label">
+		Construir
+	</string>
+	<string name="Command_Chat_Label">
+		Chat
+	</string>
+	<string name="Command_Compass_Label">
+		Brújula
+	</string>
+	<string name="Command_Destinations_Label">
+		Destinos
+	</string>
+	<string name="Command_Gestures_Label">
+		Gestos
+	</string>
+	<string name="Command_HowTo_Label">
+		Cómo
+	</string>
+	<string name="Command_Inventory_Label">
+		Inventario
+	</string>
+	<string name="Command_Map_Label">
+		Mapa
+	</string>
+	<string name="Command_Marketplace_Label">
+		Mercado
+	</string>
+	<string name="Command_MiniMap_Label">
+		Minimapa
+	</string>
+	<string name="Command_Move_Label">
+		Caminar / Correr / Volar
+	</string>
+	<string name="Command_People_Label">
+		Gente
+	</string>
+	<string name="Command_Picks_Label">
+		Destacados
+	</string>
+	<string name="Command_Places_Label">
+		Lugares
+	</string>
+	<string name="Command_Preferences_Label">
+		Preferencias
+	</string>
+	<string name="Command_Profile_Label">
+		Perfil
+	</string>
+	<string name="Command_Search_Label">
+		Buscar
+	</string>
+	<string name="Command_Snapshot_Label">
+		Foto
+	</string>
+	<string name="Command_Speak_Label">
+		Hablar
+	</string>
+	<string name="Command_View_Label">
+		Controles de la cámara
+	</string>
+	<string name="Command_Voice_Label">
+		Configuración de voz
+	</string>
+	<string name="Command_AboutLand_Tooltip">
+		Información sobre el terreno que vas a visitar
+	</string>
+	<string name="Command_Appearance_Tooltip">
+		Cambiar tu avatar
+	</string>
+	<string name="Command_Avatar_Tooltip">
+		Elegir un avatar completo
+	</string>
+	<string name="Command_Build_Tooltip">
+		Construir objetos y modificar la forma del terreno
+	</string>
+	<string name="Command_Chat_Tooltip">
+		Habla por chat de texto con las personas próximas
+	</string>
+	<string name="Command_Compass_Tooltip">
+		Brújula
+	</string>
+	<string name="Command_Destinations_Tooltip">
+		Destinos de interés
+	</string>
+	<string name="Command_Gestures_Tooltip">
+		Gestos para tu avatar
+	</string>
+	<string name="Command_HowTo_Tooltip">
+		Cómo hacer las tareas habituales
+	</string>
+	<string name="Command_Inventory_Tooltip">
+		Ver y usar tus pertenencias
+	</string>
+	<string name="Command_Map_Tooltip">
+		Mapa del mundo
+	</string>
+	<string name="Command_Marketplace_Tooltip">
+		Ir de compras
+	</string>
+	<string name="Command_MiniMap_Tooltip">
+		Mostrar la gente que está cerca
+	</string>
+	<string name="Command_Move_Tooltip">
+		Desplazando el avatar
+	</string>
+	<string name="Command_People_Tooltip">
+		Amigos, grupos y personas próximas
+	</string>
+	<string name="Command_Picks_Tooltip">
+		Lugares que se mostrarán como favoritos en tu perfil
+	</string>
+	<string name="Command_Places_Tooltip">
+		Lugares que has guardado
+	</string>
+	<string name="Command_Preferences_Tooltip">
+		Preferencias
+	</string>
+	<string name="Command_Profile_Tooltip">
+		Consulta o edita tu perfil
+	</string>
+	<string name="Command_Search_Tooltip">
+		Buscar lugares, eventos y personas
+	</string>
+	<string name="Command_Snapshot_Tooltip">
+		Tomar una fotografía
+	</string>
+	<string name="Command_Speak_Tooltip">
+		Utiliza el micrófono para hablar con las personas próximas
+	</string>
+	<string name="Command_View_Tooltip">
+		Cambiando el ángulo de la cámara
+	</string>
+	<string name="Command_Voice_Tooltip">
+		Controles de volumen para las llamadas y la gente que se encuentre cerca de ti en el mundo virtual
+	</string>
+	<string name="Toolbar_Bottom_Tooltip">
+		actualmente en tu barra de herramientas inferior
+	</string>
+	<string name="Toolbar_Left_Tooltip">
+		actualmente en tu barra de herramientas izquierda
+	</string>
+	<string name="Toolbar_Right_Tooltip">
+		actualmente en tu barra de herramientas derecha
+	</string>
+	<string name="Retain%">
+		% retención
+	</string>
+	<string name="Detail">
+		Detalle
+	</string>
+	<string name="Better Detail">
+		Mejor detalle
+	</string>
+	<string name="Surface">
+		Superficie
+	</string>
+	<string name="Solid">
+		Sólido
+	</string>
+	<string name="Wrap">
+		Envoltura
+	</string>
+	<string name="Preview">
+		Vista previa
+	</string>
+	<string name="Normal">
+		Normal
+	</string>
+	<string name="snapshot_quality_very_low">
+		Muy bajo
+	</string>
+	<string name="snapshot_quality_low">
+		Bajo
+	</string>
+	<string name="snapshot_quality_medium">
+		Medio
+	</string>
+	<string name="snapshot_quality_high">
+		Alto
+	</string>
+	<string name="snapshot_quality_very_high">
+		Muy alto
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/es/teleport_strings.xml b/indra/newview/skins/default/xui/es/teleport_strings.xml
index e0e0061729297401af718d7c4a82a4425b100dee..a23d9c43d0feab09fef52875a844c492edda9b64 100644
--- a/indra/newview/skins/default/xui/es/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/es/teleport_strings.xml
@@ -18,6 +18,10 @@ Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE].
 		<message name="timeout_tport">
 			Lo sentimos, pero el sistema no ha podido completar el teleporte.
 Vuelva a intentarlo en un momento.
+		</message>
+		<message name="NoHelpIslandTP">
+			No te puedes volver a teleportar a la isla de bienvenida.
+Para repetir el tutorial, visita la isla de bienvenida pública.
 		</message>
 		<message name="noaccess_tport">
 			Lo sentimos, pero no tienes acceso al destino de este teleporte.
diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml
index d088cb3244ccaf7c5884f75d9fd72f3c682b9d6c..4409949584129108e07a7be112e9855c28f77a7d 100644
--- a/indra/newview/skins/default/xui/fr/floater_about.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about.xml
@@ -8,9 +8,9 @@
 		Compilé avec [COMPILER] version [COMPILER_VERSION]
 	</floater.string>
 	<floater.string name="AboutPosition">
-		Vous êtes à [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] dans [REGION] se trouvant à &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
+		Vous êtes à [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] dans [REGION], se trouvant à &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		CPU : [CPU]
@@ -37,6 +37,9 @@ Version serveur vocal : [VOICE_VERSION]
 	<floater.string name="AboutTraffic">
 		Paquets perdus : [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
 	</floater.string>
+	<floater.string name="ErrorFetchingServerReleaseNotesURL">
+		Erreur lors de la récupération de l&apos;URL des notes de version du serveur.
+	</floater.string>
 	<tab_container name="about_tab">
 		<panel label="Infos" name="support_panel">
 			<button label="Copier dans le presse-papiers" name="copy_btn"/>
@@ -64,32 +67,34 @@ Version serveur vocal : [VOICE_VERSION]
 		<panel label="Licences" name="licenses_panel">
 			<text_editor name="credits_editor">
 				3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
-APR Copyright (C) 2000-2004 The Apache Software Foundation
-Collada DOM Copyright 2005 Sony Computer Entertainment Inc.
-cURL Copyright (C) 1996-2002, 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, The FreeType Project (www.freetype.org).
-GL Copyright (C) 1999-2004 Brian Paul.
-GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University et 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) 2001, Xiphophorus
-OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
-PCRE Copyright (c) 1997-2008 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-2002 Jean-loup Gailly et Mark Adler.
-google-perftools Copyright (c) 2005, Google Inc.
+        APR Copyright (C) 2000-2004 The Apache Software Foundation
+        Collada DOM Copyright 2005 Sony Computer Entertainment Inc.
+        cURL Copyright (C) 1996-2002, 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, The FreeType Project (www.freetype.org).
+        GL Copyright (C) 1999-2004 Brian Paul.
+        GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University et 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) 2001, Xiphophorus
+        OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
+        PCRE Copyright (c) 1997-2008 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-2002 Jean-loup Gailly et Mark Adler.
+        google-perftools Copyright (c) 2005, Google Inc.
+
+        Le client Second Life utilise Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (et ses concédants de licence). Tous droits réservés. Pour plus de détails, consultez le site Web www.havok.com.
 
-Le client Second Life utilise Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (et ses concédants de licence). Tous droits réservés. Pour plus de détails, consultez le site Web www.havok.com.
+        Ce logiciel contient du code source fourni par NVIDIA Corporation.
 
-Tous droits réservés. Voir licenses.txt pour plus d&apos;informations.
+        Tous droits réservés.  Voir licenses.txt pour plus d&apos;informations.
 
-Codage audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
+        Codage audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
 			</text_editor>
 		</panel>
 	</tab_container>
diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml
index 55dd913a22a27f8ad67a465784ddb5fbbd34023b..b554a0a892f2729ad5d890e74710f93e2803b0af 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -132,7 +132,7 @@
 				Trafic :
 			</text>
 			<text name="DwellText">
-				0
+				Chargement...
 			</text>
 			<button label="Acheter du terrain" label_selected="Acheter le terrain..." left_delta="60" name="Buy Land..." width="125"/>
 			<button label="Vente Linden" label_selected="Vente Linden..." name="Linden Sale..." tool_tip="Le terrain doit être la propriété d&apos;un résident, avoir un contenu défini et ne pas être aux enchères."/>
@@ -217,19 +217,19 @@ ou divisé.
 				Facteur Bonus objets : [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				Utilisation des primitives :
+				Capacité de la région :
 			</text>
 			<text name="objects_available">
 				[COUNT] sur [MAX] ([AVAILABLE] disponibles)
 			</text>
 			<text name="Primitives parcel supports:">
-				Prims max. sur la parcelle :
+				Capacité de la parcelle :
 			</text>
 			<text name="object_contrib_text">
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
-				Prims sur la parcelle :
+				Impact sur la parcelle :
 			</text>
 			<text name="total_objects_text">
 				[COUNT]
@@ -313,13 +313,15 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 				Pas de bousculades (les règles de la région priment)
 			</panel.string>
 			<panel.string name="see_avs_text">
-				Voir et chatter avec les résidents sur cette parcelle
+				Les avatars sur les autres parcelles peuvent voir
 			</panel.string>
 			<text name="allow_label">
 				Autoriser les autres résidents à :
 			</text>
-			<check_box label="Modifier le terrain" name="edit land check" tool_tip="Si cette option est cochée, n&apos;importe qui peut terraformer votre terrain. Il vaut mieux ne pas cocher cette option pour toujours pouvoir modifer votre propre terrain."/>
-			<check_box label="Voler" name="check fly" tool_tip="Si cette option est cochée, les résidents peuvent voler sur votre terrain. Si elle n&apos;est pas cochée, ils ne pourront voler que lorsqu&apos;ils arrivent et passent au dessus de votre terrain."/>
+			<text name="allow_label0">
+				Voler :
+			</text>
+			<check_box label="Tous" name="check fly" tool_tip="Si cette option est cochée, les résidents peuvent voler sur votre terrain. Si elle n&apos;est pas cochée, ils ne pourront voler que lorsqu&apos;ils arrivent et passent au dessus de votre terrain."/>
 			<text name="allow_label2">
 				Construire :
 			</text>
@@ -335,9 +337,6 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 			</text>
 			<check_box label="Tous" name="check other scripts"/>
 			<check_box label="Groupe" name="check group scripts"/>
-			<text name="land_options_label">
-				Options du terrain :
-			</text>
 			<check_box label="Sécurisé (pas de dégâts)" name="check safe" tool_tip="Si cette option est cochée, le terrain est sécurisé et il n&apos;y pas de risques de dommages causés par des combats. Si elle est décochée, des dommages causés par les combats peuvent avoir lieu."/>
 			<check_box label="Pas de bousculades" name="PushRestrictCheck" tool_tip="Empêche l&apos;utilisation de scripts causant des bousculades. Cette option est utile pour empêcher les comportements abusifs sur votre terrain."/>
 			<check_box label="Afficher le lieu dans la recherche (30 L$/semaine)" name="ShowDirectoryCheck" tool_tip="Afficher la parcelle dans les résultats de recherche"/>
@@ -378,9 +377,9 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 			</text>
 			<texture_picker label="" name="snapshot_ctrl" tool_tip="Cliquez pour sélectionner une image"/>
 			<text name="allow_label5">
-				Autoriser les résidents sur les autres parcelles à :
+				et chatter avec les avatars sur cette parcelle
 			</text>
-			<check_box label="Voir les avatars" name="SeeAvatarsCheck" tool_tip="Permettre aux résidents présents sur d&apos;autres parcelles de voir et chatter avec les résidents présents sur cette parcelle et vous permettre de les voir et de chatter avec eux."/>
+			<check_box label="Voir les avatars" name="SeeAvatarsCheck" tool_tip="Permettre aux avatars présents sur d&apos;autres parcelles de voir et chatter avec les avatars présents sur cette parcelle et à vous de les voir et de chatter avec eux."/>
 			<text name="landing_point">
 				Lieu d&apos;arrivée : [LANDING]
 			</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_avatar.xml b/indra/newview/skins/default/xui/fr/floater_avatar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7cbb50a3d610a6959235a656e433ed255d0503f9
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="CHOISIR UN AVATAR"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
index b3acc830789adc16642aa56254fa6197368b664f..148a5a35d23b5bd33ca08bf0bf52e651e2f65167 100644
--- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
@@ -22,10 +22,10 @@ le Lindex...
 	<text name="currency_action">
 		Je veux acheter
 	</text>
-	<text name="currency_label" left="308">
+	<text left="308" name="currency_label">
 		L$
 	</text>
-	<line_editor label="L$" name="currency_amt" width="65" left_pad="-85">
+	<line_editor label="L$" left_pad="-85" name="currency_amt" width="65">
 		1234
 	</line_editor>
 	<text name="buying_label">
@@ -47,13 +47,13 @@ le Lindex...
 		[AMT] L$
 	</text>
 	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php?lang=fr-FR mode de paiement] | [http://www.secondlife.com/my/account/currency.php?lang=fr-FR devise] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=fr-FR taux de change]
+		[http://www.secondlife.com/my/account/payment_method_management.php mode de paiement] | [http://www.secondlife.com/my/account/currency.php devise]
 	</text>
 	<text name="exchange_rate_note">
 		Saisissez à nouveau le montant pour voir le taux de change actuel.
 	</text>
 	<text name="purchase_warning_repurchase">
-		Confirmer cet achat n'achète que des L$, pas l'objet.
+		Confirmer cet achat n&apos;achète que des L$, pas l&apos;objet.
 	</text>
 	<text bottom_delta="16" name="purchase_warning_notenough">
 		Vous n&apos;achetez pas assez de L$. Veuillez augmenter le montant.
diff --git a/indra/newview/skins/default/xui/fr/floater_camera.xml b/indra/newview/skins/default/xui/fr/floater_camera.xml
index 1d62a89ff2dbc026df6279a00a9a5c5f3743e912..f2b0ee8af3f49f29e0c4ac48c9a32be019978a5c 100644
--- a/indra/newview/skins/default/xui/fr/floater_camera.xml
+++ b/indra/newview/skins/default/xui/fr/floater_camera.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
+<floater name="camera_floater" title="PARAMÈTRES DE LA CAMÉRA">
 	<floater.string name="rotate_tooltip">
 		Faire tourner la caméra autour du point central
 	</floater.string>
@@ -9,15 +9,6 @@
 	<floater.string name="move_tooltip">
 		Déplacer la caméra vers le haut et le bas, la gauche et la droite
 	</floater.string>
-	<floater.string name="camera_modes_title">
-		Modes
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		Rotation - Zoom - Panoramique
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		Préréglages
-	</floater.string>
 	<floater.string name="free_mode_title">
 		Voir l&apos;objet
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/fr/floater_chat_bar.xml b/indra/newview/skins/default/xui/fr/floater_chat_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c7d27c058959a921d703deac88ddb1dc43a37cd2
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" 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="Affiche/Masque le journal de chats près de vous"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_destinations.xml b/indra/newview/skins/default/xui/fr/floater_destinations.xml
new file mode 100644
index 0000000000000000000000000000000000000000..25e6c90a8eee50e5a3c8c67271d194b522e1076f
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="DESTINATIONS"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_fast_timers.xml b/indra/newview/skins/default/xui/fr/floater_fast_timers.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0100b10557270007d8e998fa138469c48615ad64
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+	<string name="pause">
+		Pauser
+	</string>
+	<string name="run">
+		Courir
+	</string>
+	<button label="Pauser" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml b/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml
index 8ad301823bf2ea8f8888d6267d608edf6f50aa61..2bc76e0c632501de04281d2017b485b3a5009f07 100644
--- a/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml
@@ -4,7 +4,7 @@
 		Filtres :
 	</text>
 	<check_box label="Filtre anisotrope (plus lent si activé)" name="ani"/>
-	<text name="Antialiasing:">
+	<text name="antialiasing label">
 		Anti-aliasing :
 	</text>
 	<combo_box label="Anti-aliasing" name="fsaa" width="84">
diff --git a/indra/newview/skins/default/xui/fr/floater_how_to.xml b/indra/newview/skins/default/xui/fr/floater_how_to.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a414212ba064a524909a29b42618835611224fab
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="AIDE RAPIDE"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_map.xml b/indra/newview/skins/default/xui/fr/floater_map.xml
index 8675fb8ef9a155a08191ba720b59c2c7e8236acf..dbd3dd9406a5c3fd456b5feeaa2be5623ce88bae 100644
--- a/indra/newview/skins/default/xui/fr/floater_map.xml
+++ b/indra/newview/skins/default/xui/fr/floater_map.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="">
+<floater name="Map" title="Mini-carte">
 	<floater.string name="ToolTipMsg">
 		[REGION](Carte : double-clic ; Panoramique : Maj + faire glisser)
 	</floater.string>
@@ -7,7 +7,7 @@
 		[REGION](Téléportation : double-clic ; Panoramique : Maj + faire glisser)
 	</floater.string>
 	<floater.string name="mini_map_caption">
-		MINI-CARTE
+		Mini-carte
 	</floater.string>
 	<text label="N" name="floater_map_north" text="N">
 		N
diff --git a/indra/newview/skins/default/xui/fr/floater_model_preview.xml b/indra/newview/skins/default/xui/fr/floater_model_preview.xml
index 2b8e441ef08a34e2adc6936ba77652779f1c1c7b..a3b50351ae44dc4d0a07eec01b0f8e3016c48e10 100644
--- a/indra/newview/skins/default/xui/fr/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_model_preview.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="Chargement du modèle">
-	<string name="status_idle">
-		Inactif
-	</string>
+<floater name="Model Preview" title="CHARGEMENT DU MODELE">
+	<string name="status_idle"/>
 	<string name="status_parse_error">
-		Problème d&apos;analyse de fichier .dae ; reportez-vous au journal pour plus de détails.
+		Erreur : Problème d&apos;analyse de fichier .dae ; reportez-vous au journal pour plus de détails.
+	</string>
+	<string name="status_material_mismatch">
+		Erreur : le matériau du modèle ne correspond pas à un sous-ensemble du modèle de référence.
 	</string>
 	<string name="status_reading_file">
 		Chargement...
@@ -51,6 +52,9 @@
 	<string name="mesh_status_missing_lod">
 		Niveau de détail requis manquant.
 	</string>
+	<string name="mesh_status_invalid_material_list">
+		Les options du niveau de détail ne sont pas une sous-ensemble d&apos;un modèle de référence.
+	</string>
 	<string name="layer_all">
 		Tout
 	</string>
@@ -63,188 +67,211 @@
 	<string name="tbd">
 		TBD
 	</string>
-	<text name="name_label">
-		Nom :
-	</text>
-	<text name="lod_label">
-		Aperçu :
-	</text>
-	<combo_box name="preview_lod_combo" tool_tip="Niveau de détail à afficher en rendu d&apos;aperçu.">
-		<combo_item name="high">
-			Niveau de détail : Élevé
-		</combo_item>
-		<combo_item name="medium">
-			Niveau de détail : Moyen
-		</combo_item>
-		<combo_item name="low">
-			Niveau de détail : Faible
-		</combo_item>
-		<combo_item name="lowest">
-			Niveau de détail : Le plus faible
-		</combo_item>
-	</combo_box>
-	<text name="warning_title">
-		AVERTISSEMENT :
-	</text>
-	<text name="warning_message">
-		Vous ne pourrez pas effectuer le chargement final du modèle sur les serveurs Second Life. [[VURL] Découvrez comment] activer le chargement des modèles de maillage.
-	</text>
-	<text name="weights_text">
-		Téléchargement :
-Propriétés physiques :
-Serveur :
-
-Équiv. en prims :
-	</text>
-	<text name="weights">
-		[ST]
-[PH]
-[SIM]
-
-[EQ]
-	</text>
-	<tab_container name="import_tab">
-		<panel label="Niveau de détail" name="lod_panel">
-			<text name="lod_table_header">
-				Sélectionner le niveau de détail :
-			</text>
-			<text name="high_label" value="Élevé"/>
-			<text name="high_triangles" value="0"/>
-			<text name="high_vertices" value="0"/>
-			<text name="medium_label" value="Moyen"/>
-			<text name="medium_triangles" value="0"/>
-			<text name="medium_vertices" value="0"/>
-			<text name="low_label" value="Faible"/>
-			<text name="low_triangles" value="0"/>
-			<text name="low_vertices" value="0"/>
-			<text name="lowest_label" value="Le plus faible"/>
-			<text name="lowest_triangles" value="0"/>
-			<text name="lowest_vertices" value="0"/>
-			<text name="lod_table_footer">
-				Niveau de détail : [DETAIL]
-			</text>
-			<radio_group name="lod_file_or_limit" value="lod_from_file">
-				<radio_item label="Charger depuis un fichier" name="lod_from_file"/>
-				<radio_item label="Générer automatiquement" name="lod_auto_generate"/>
-				<radio_item label="Aucun" name="lod_none"/>
-			</radio_group>
-			<button label="Parcourir..." name="lod_browse"/>
-			<combo_box name="lod_mode">
-				<combo_item name="triangle_limit">
-					Triangles max.
-				</combo_item>
-				<combo_item name="error_threshold">
-					Seuil d&apos;erreur
-				</combo_item>
-			</combo_box>
-			<text name="build_operator_text">
-				Opér. construction :
-			</text>
-			<text name="queue_mode_text">
-				Mode file d&apos;attente :
-			</text>
-			<combo_box name="build_operator">
-				<combo_item name="edge_collapse">
-					Fusion (nouveau sommet)
-				</combo_item>
-				<combo_item name="half_edge_collapse">
-					Fusion (un des sommets)
-				</combo_item>
-			</combo_box>
-			<combo_box name="queue_mode">
-				<combo_item name="greedy">
-					Glouton
-				</combo_item>
-				<combo_item name="lazy">
-					Paresseux
-				</combo_item>
-				<combo_item name="independent">
-					Indépendant
-				</combo_item>
-			</combo_box>
-			<text name="border_mode_text">
-				Mode bord :
+	<panel name="left_panel">
+		<panel name="model_name_representation_panel">
+			<text name="name_label">
+				Nom du modèle :
 			</text>
-			<text name="share_tolderance_text">
-				Tolérance partage :
+			<text name="model_category_label">
+				Ce modèle représente...
 			</text>
-			<combo_box name="border_mode">
-				<combo_item name="border_unlock">
-					Déverrouiller
-				</combo_item>
-				<combo_item name="border_lock">
-					Verrouiller
-				</combo_item>
+			<combo_box name="model_category_combo">
+				<combo_item label="Choisir une option..." name="Choose one"/>
+				<combo_item label="Silhouette de l&apos;avatar" name="Avatar shape"/>
+				<combo_item label="Éléments attachés aux avatars" name="Avatar attachment"/>
+				<combo_item label="Objet mobile (véhicule, animal)" name="Moving object (vehicle, animal)"/>
+				<combo_item label="Éléments pour la construction" name="Building Component"/>
+				<combo_item label="Important, immobile etc." name="Large, non moving etc"/>
+				<combo_item label="Plus petit, immobile etc." name="Smaller, non-moving etc"/>
+				<combo_item label="Aucun" name="Not really any of these"/>
 			</combo_box>
-			<text name="crease_label">
-				Angle pli :
-			</text>
-			<spinner name="crease_angle" value="75"/>
 		</panel>
-		<panel label="Propriétés physiques" name="physics_panel">
-			<panel name="physics geometry">
-				<radio_group name="physics_load_radio" value="physics_load_from_file">
-					<radio_item label="Fichier :" name="physics_load_from_file"/>
-					<radio_item label="Utiliser le niveau de détail :" name="physics_use_lod"/>
-				</radio_group>
-				<combo_box name="physics_lod_combo" tool_tip="Niveau de détail à utiliser pour la forme physique.">
-					<combo_item name="physics_lowest">
-						Le plus faible
-					</combo_item>
-					<combo_item name="physics_low">
-						Faible
-					</combo_item>
-					<combo_item name="physics_medium">
-						Moyen
-					</combo_item>
-					<combo_item name="physics_high">
-						Élevé
-					</combo_item>
-				</combo_box>
-				<button label="Parcourir..." name="physics_browse"/>
-			</panel>
-			<panel name="physics analysis">
-				<slider label="Lissage :" name="Smooth"/>
-				<check_box label="Fermer les trous (lent)" name="Close Holes (Slow)"/>
-				<button label="Analyser" name="Decompose"/>
-				<button label="Annuler" name="decompose_cancel"/>
+		<tab_container name="import_tab">
+			<panel label="Niveau de détail" name="lod_panel" title="Niveau de détail">
+				<text initial_value="Source" name="source" value="Source"/>
+				<text initial_value="Triangles" name="triangles" value="Triangles"/>
+				<text initial_value="Sommets" name="vertices" value="Sommets"/>
+				<text initial_value="Élevé" name="high_label" value="Élevé"/>
+				<button label="Parcourir..." name="lod_browse_high"/>
+				<text initial_value="0" name="high_triangles" value="0"/>
+				<text initial_value="0" name="high_vertices" value="0"/>
+				<text initial_value="Moyen" name="medium_label" value="Moyen"/>
+				<button label="Parcourir..." name="lod_browse_medium"/>
+				<text initial_value="0" name="medium_triangles" value="0"/>
+				<text initial_value="0" name="medium_vertices" value="0"/>
+				<text initial_value="Faible" name="low_label" value="Faible"/>
+				<button label="Parcourir..." name="lod_browse_low"/>
+				<text initial_value="0" name="low_triangles" value="0"/>
+				<text initial_value="0" name="low_vertices" value="0"/>
+				<text initial_value="Le plus faible" name="lowest_label" value="Le plus faible"/>
+				<button label="Parcourir..." name="lod_browse_lowest"/>
+				<text initial_value="0" name="lowest_triangles" value="0"/>
+				<text initial_value="0" name="lowest_vertices" value="0"/>
+				<check_box label="Génération de normales" name="gen_normals"/>
+				<text initial_value="Angle pli :" name="crease_label" value="Angle pli :"/>
+				<spinner name="crease_angle" value="75"/>
 			</panel>
-			<panel name="physics simplification">
-				<slider label="Passes :" name="Combine Quality"/>
-				<slider label="Échelle de détail :" name="Detail Scale"/>
-				<slider label="Retenue :" name="Retain%"/>
-				<button label="Simplifier" name="Simplify"/>
-				<button label="Annuler" name="simplify_cancel"/>
+			<panel label="Propriétés physiques" name="physics_panel">
+				<panel name="physics geometry">
+					<text name="first_step_name">
+						Étape 1 : Niveau de détail
+					</text>
+					<combo_box name="physics_lod_combo" tool_tip="Niveau de détail à utiliser pour la forme des propriétés physiques.">
+						<combo_item name="choose_one">
+							Choisir une option...
+						</combo_item>
+						<combo_item name="physics_high">
+							Élevé
+						</combo_item>
+						<combo_item name="physics_medium">
+							Moyen
+						</combo_item>
+						<combo_item name="physics_low">
+							Faible
+						</combo_item>
+						<combo_item name="physics_lowest">
+							Le plus faible
+						</combo_item>
+						<combo_item name="load_from_file">
+							Du fichier
+						</combo_item>
+					</combo_box>
+					<button label="Parcourir..." name="physics_browse"/>
+				</panel>
+				<panel name="physics analysis">
+					<text name="method_label">
+						Étape 2 : Analyser
+					</text>
+					<text name="analysis_method_label">
+						Moyen :
+					</text>
+					<text name="quality_label">
+						Qualité :
+					</text>
+					<text name="smooth_method_label">
+						Lissage :
+					</text>
+					<check_box label="Fermer les trous" name="Close Holes (Slow)"/>
+					<button label="Analyser" name="Decompose"/>
+					<button label="Annuler" name="decompose_cancel"/>
+				</panel>
+				<panel name="physics simplification">
+					<text name="second_step_label">
+						Étape 3 : Simplifier
+					</text>
+					<text name="simp_method_header">
+						Moyen :
+					</text>
+					<text name="pass_method_header">
+						Passes :
+					</text>
+					<text name="Detail Scale label">
+						Échelle de détail :
+					</text>
+					<text name="Retain%_label">
+						Retenue :
+					</text>
+					<combo_box name="Combine Quality" value="1"/>
+					<button label="Simplifier" name="Simplify"/>
+					<button label="Annuler" name="simplify_cancel"/>
+				</panel>
+				<panel name="physics info">
+					<text name="results_text">
+						Résultats :
+					</text>
+					<text name="physics_triangles">
+						Triangles : [TRIANGLES],
+					</text>
+					<text name="physics_points">
+						Sommets : [POINTS]
+					</text>
+					<text name="physics_hulls">
+						Enveloppes : [HULLS]
+					</text>
+				</panel>
 			</panel>
-			<panel name="physics info">
-				<slider label="Décomposition de l&apos;aperçu :" name="physics_explode"/>
-				<text name="physics_triangles">
-					Triangles : [TRIANGLES]
+			<panel label="Option de chargement" name="modifiers_panel">
+				<text name="scale_label">
+					Echelle (1 = pas d&apos;échelle) :
 				</text>
-				<text name="physics_points">
-					Sommets : [POINTS]
+				<spinner name="import_scale" value="1.0"/>
+				<text name="dimensions_label">
+					Dimensions :
 				</text>
-				<text name="physics_hulls">
-					Enveloppes : [HULLS]
+				<text name="import_dimensions">
+					[X] X [Y] X [Z]
 				</text>
+				<check_box label="Inclure les textures" name="upload_textures"/>
+				<text name="include_label">
+					Pour les modèles d&apos;avatar uniquement :
+				</text>
+				<check_box label="Inclure la pondération de la peau :" name="upload_skin"/>
+				<check_box label="Inclure la position des articulations :" name="upload_joints"/>
+				<text name="pelvis_offset_label">
+					Décalage Z (élever ou abaisser l&apos;avatar) :
+				</text>
+				<spinner name="pelvis_offset" value="0.0"/>
 			</panel>
-		</panel>
-		<panel label="Modificateurs" name="modifiers_panel">
-			<spinner name="import_scale" value="1.0"/>
-			<text name="import_dimensions">
-				[X] x [Y] x [Z] m
+		</tab_container>
+		<panel name="weights_and_warning_panel">
+			<button label="Calculer les poids et les frais." name="calculate_btn" tool_tip="Calculer les poids et les frais."/>
+			<button label="Annuler" name="cancel_btn"/>
+			<button label="Charger le modèle" name="ok_btn" tool_tip="Charger dans le simulateur"/>
+			<button label="Effacer les paramètres et réinitialiser le formulaire" name="reset_btn"/>
+			<text name="upload_fee">
+				Frais de chargement : [FEE] L$
+			</text>
+			<text name="prim_weight">
+				Impact sur le terrain : [EQ]
+			</text>
+			<text name="download_weight">
+				Téléchargement : [ST]
+			</text>
+			<text name="physics_weight">
+				Propriétés physiques : [PH]
+			</text>
+			<text name="server_weight">
+				Serveur : [SIM]
+			</text>
+			<text name="warning_title">
+				Remarque :
+			</text>
+			<text name="warning_message">
+				Vous n&apos;avez pas la permission de charger des modèles de maillage. [[VURL] Savoir comment] obtenir la permission.
+			</text>
+			<text name="status">
+				[STATUS]
 			</text>
-			<check_box label="Textures" name="upload_textures"/>
-			<check_box label="Pondération de la peau" name="upload_skin"/>
-			<check_box label="Position des articulations" name="upload_joints"/>
-			<spinner name="pelvis_offset" value="0.0"/>
 		</panel>
-	</tab_container>
-	<text name="upload_fee">
-		Frais de chargement : [FEE] L$
+	</panel>
+	<text name="lod_label">
+		Aperçu :
 	</text>
-	<button label="Réinitialiser" name="reset_btn" tool_tip="Rétablir les paramètres par défaut."/>
-	<button label="Calculer poids et frais" name="calculate_btn" tool_tip="Calculer les poids et les frais."/>
-	<button label="Charger" name="ok_btn" tool_tip="Charger dans le simulateur."/>
-	<button label="Annuler" name="cancel_btn"/>
+	<panel name="right_panel">
+		<combo_box name="preview_lod_combo" tool_tip="Niveau de détail à afficher en rendu d&apos;aperçu.">
+			<combo_item name="high">
+				Élevé
+			</combo_item>
+			<combo_item name="medium">
+				Moyen
+			</combo_item>
+			<combo_item name="low">
+				Faible
+			</combo_item>
+			<combo_item name="lowest">
+				Le plus faible
+			</combo_item>
+		</combo_box>
+		<text name="label_display">
+			Afficher...
+		</text>
+		<check_box label="Coins" name="show_edges"/>
+		<check_box label="Propriétés physiques" name="show_physics"/>
+		<check_box label="Textures" name="show_textures"/>
+		<check_box label="Pondération de la peau" name="show_skin_weight"/>
+		<check_box label="Articulations" name="show_joint_positions"/>
+		<text name="physics_explode_label">
+			Décomposition de l&apos;aperçu :
+		</text>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_model_wizard.xml b/indra/newview/skins/default/xui/fr/floater_model_wizard.xml
index f564b6f71a276e74c37efa57023534632d5d1068..63feb1d40375cb776b35793e1969045dd5e1a2fa 100644
--- a/indra/newview/skins/default/xui/fr/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/fr/floater_model_wizard.xml
@@ -6,26 +6,23 @@
 	<button label="2. Optimisation" name="optimize_btn"/>
 	<button label="1. Sélection du fichier" name="choose_file_btn"/>
 	<panel name="choose_file_panel">
-		<panel name="choose_file_header_panel">
-			<text name="choose_file_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Choisir un fichier de modèle
 			</text>
 		</panel>
-		<panel name="choose_file_content_panel">
+		<panel name="content">
 			<text name="advanced_users_text">
 				Utilisateurs expérimentés : si vous êtes habitué à utiliser des outils de création de contenu en 3D, l&apos;outil de chargement avancé est mis à votre disposition.
 			</text>
 			<button label="Passer à Avancé" name="switch_to_advanced"/>
-			<text name="choose_model_file_label">
+			<text name="Cache location">
 				Choisir un fichier de modèle à charger
 			</text>
 			<button label="Parcourir..." label_selected="Parcourir..." name="browse"/>
-			<text name="support_collada_text">
+			<text name="Model types">
 				Second Life prend en charge les fichiers COLLADA (.dae).
 			</text>
-			<text name="dimensions_label">
-				Dimensions (mètres) :
-			</text>
 			<text name="dimensions">
 				X         Y         Z
 			</text>
@@ -38,18 +35,15 @@
 		</panel>
 	</panel>
 	<panel name="optimize_panel">
-		<panel name="optimize_header_panel">
-			<text name="optimize_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Optimiser le modèle
 			</text>
 		</panel>
-		<text name="optimize_hint">
+		<text name="description">
 			Le modèle a été optimisé en termes de performances. Vous pouvez l&apos;ajuster si vous le souhaitez.
 		</text>
-		<panel name="optimize_content_panel">
-			<text name="generating_lod_label">
-				Génération du niveau de détail
-			</text>
+		<panel name="content">
 			<text name="high_detail_text">
 				Générer le niveau de détail : Élevé
 			</text>
@@ -64,123 +58,64 @@
 			</text>
 		</panel>
 		<panel name="content2">
-			<text name="optimize_performance_text">
-				Performances
-			</text>
-			<text name="optimize_faster_rendering_text">
-				Rendu plus rapide
-Moins de détail
-Poids en prims inférieur
-			</text>
-			<text name="optimize_accuracy_text">
-				Précision
-			</text>
-			<text name="optimize_slower_rendering_text">
-				Rendu plus lent
-Plus de détail
-Poids en prims supérieur
-			</text>
-			<text name="accuracy_slider_mark1">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark2">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark3">
-				&apos;
-			</text>
 			<button label="Recalcul géométrique" name="recalculate_geometry_btn"/>
-			<text name="geometry_preview_label">
+			<text name="lod_label">
 				Aperçu de la géométrie
 			</text>
 			<combo_box name="preview_lod_combo" tool_tip="Niveau de détail à afficher en rendu d&apos;aperçu.">
-				<combo_item name="preview_lod_high">
+				<combo_item name="high">
 					Niveau de détail élevé
 				</combo_item>
-				<combo_item name="preview_lod_medium">
+				<combo_item name="medium">
 					Niveau de détail moyen
 				</combo_item>
-				<combo_item name="preview_lod_low">
+				<combo_item name="low">
 					Niveau de détail faible
 				</combo_item>
-				<combo_item name="preview_lod_lowest">
+				<combo_item name="lowest">
 					Niveau de détail le plus faible
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="physics_panel">
-		<panel name="physics_header_panel">
-			<text name="physics_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Ajuster les propriétés physiques
 			</text>
 		</panel>
-		<text name="physics_hint">
+		<text name="description">
 			Une forme va être créée pour l&apos;enveloppe externe du modèle. Ajustez le niveau de détail de la forme en fonction de l&apos;objectif souhaité pour votre modèle.
 		</text>
-		<panel name="physics_content_panel">
-			<text name="physics_performance_text">
-				Performances
-			</text>
-			<text name="physics_faster_rendering_text">
-				Rendu plus rapide
-Moins de détail
-Poids en prims inférieur
-			</text>
-			<text name="physics_accuracy_text">
-				Précision
-			</text>
-			<text name="physics_slower_dendering_text">
-				Rendu plus lent
-Plus de détail
-Poids en prims supérieur
-			</text>
-			<text name="physics_example_1">
-				Exemples :
-Objets mobiles
-Objets volants
-Véhicules
-			</text>
-			<text name="physics_example_2">
-				Exemples :
-Petits objets statiques
-Objets moins détaillés
-Mobilier simple
-			</text>
-			<text name="physics_example_3">
-				Exemples :
-Objets statiques
-Objets détaillés
-Bâtiments
-			</text>
+		<panel name="content">
 			<button label="Recalcul physique" name="recalculate_physics_btn"/>
 			<button label="Recalcul en cours..." name="recalculating_physics_btn"/>
-			<text name="physics_preview_label">
+			<text name="lod_label">
 				Aperçu des propriétés physiques
 			</text>
 			<combo_box name="preview_lod_combo2" tool_tip="Niveau de détail à afficher en rendu d&apos;aperçu.">
-				<combo_item name="preview_lod2_high">
+				<combo_item name="high">
 					Niveau de détail élevé
 				</combo_item>
-				<combo_item name="preview_lod2_medium">
+				<combo_item name="medium">
 					Niveau de détail moyen
 				</combo_item>
-				<combo_item name="preview_lod2_low">
+				<combo_item name="low">
 					Niveau de détail faible
 				</combo_item>
-				<combo_item name="preview_lod2_lowest">
+				<combo_item name="lowest">
 					Niveau de détail le plus faible
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="review_panel">
-		<panel name="review_header_panel">
-			<text name="review_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Vérification
 			</text>
 		</panel>
-		<panel name="review_content_panel">
+		<panel name="content">
 			<text name="review_prim_equiv">
 				Impact sur la parcelle/région : équivalent à [EQUIV] prims
 			</text>
@@ -193,8 +128,8 @@ Bâtiments
 		</panel>
 	</panel>
 	<panel name="upload_panel">
-		<panel name="upload_header_panel">
-			<text name="upload_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Chargement terminé
 			</text>
 		</panel>
diff --git a/indra/newview/skins/default/xui/fr/floater_moveview.xml b/indra/newview/skins/default/xui/fr/floater_moveview.xml
index c0f3864b81fd5485ad3bdc1976478ba27edd917b..853af2afdff3182968e3edfb58806dc79a5f73ff 100644
--- a/indra/newview/skins/default/xui/fr/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/fr/floater_moveview.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="MARCHER / COURIR / VOLER">
 	<string name="walk_forward_tooltip">
 		Marcher en avant (appuyer sur la flèche vers le haut ou W)
 	</string>
@@ -58,14 +58,14 @@
 		Voler
 	</string>
 	<panel name="panel_actions">
-		<button label="" label_selected="" name="move up btn" tool_tip="Voler vers le haut (touche E)"/>
 		<button label="" label_selected="" name="turn left btn" tool_tip="Tourner à gauche (appuyer sur la flèche de gauche ou sur A)"/>
 		<joystick_slide name="move left btn" tool_tip="Marcher vers la gauche (Maj+Flèche gauche ou touche A)"/>
-		<button label="" label_selected="" name="move down btn" tool_tip="Voler vers le bas (touche C)"/>
 		<button label="" label_selected="" name="turn right btn" tool_tip="Tourner à droite (appuyer sur la flèche de droite ou sur D)"/>
 		<joystick_slide name="move right btn" tool_tip="Marcher vers la droite (Maj+Flèche droite ou touche D)"/>
 		<joystick_turn name="forward btn" tool_tip="Marcher en avant (appuyer sur la flèche vers le haut ou W)"/>
 		<joystick_turn name="backward btn" tool_tip="Marcher en arrière (appuyer sur la flèche vers le bas ou S)"/>
+		<button label="" label_selected="" name="move up btn" tool_tip="Voler vers le haut (touche E)"/>
+		<button label="" label_selected="" name="move down btn" tool_tip="Voler vers le bas (touche C)"/>
 	</panel>
 	<panel name="panel_modes">
 		<button label="" name="mode_walk_btn" tool_tip="Mode marche"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_my_appearance.xml b/indra/newview/skins/default/xui/fr/floater_my_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..53ff58e307e6312817ecab49c5702052f851764b
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="APPARENCE">
+	<panel label="Changer d&apos;apparence" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_my_inventory.xml b/indra/newview/skins/default/xui/fr/floater_my_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d514d08081403f19ab7d43c842ac374e07710686
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="INVENTAIRE"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_nearby_chat.xml b/indra/newview/skins/default/xui/fr/floater_nearby_chat.xml
index 9b1b21c434b859c0e1de43a0c210605a4dd81fb5..8bbd34baae4242fe2af4fd5ac86febae8816e3b9 100644
--- a/indra/newview/skins/default/xui/fr/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/fr/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="nearby_chat" title="CHAT PRÈS DE MOI">
-	<check_box label="Traduction du chat (fournie par Google)" name="translate_chat_checkbox"/>
+	<check_box label="Traduction du chat" name="translate_chat_checkbox"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_object_weights.xml b/indra/newview/skins/default/xui/fr/floater_object_weights.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2667188308cba72c29382007dd09b956d3bd58fb
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="AVANCÉ">
+	<floater.string name="nothing_selected" value="--"/>
+	<text name="selected_text" value="SÉLECTION"/>
+	<text name="objects" value="--"/>
+	<text name="objects_label" value="Objets"/>
+	<text name="prims" value="--"/>
+	<text name="prims_label" value="Prims"/>
+	<text name="weights_of_selected_text" value="POIDS DE LA SÉLECTION"/>
+	<text name="download" value="--"/>
+	<text name="download_label" value="Téléchargement"/>
+	<text name="physics" value="--"/>
+	<text name="physics_label" value="Physique"/>
+	<text name="server" value="--"/>
+	<text name="server_label" value="Serveur"/>
+	<text name="display" value="--"/>
+	<text name="display_label" value="Affichage"/>
+	<text name="land_impacts_text" value="IMPACTS SUR LE TERRAIN"/>
+	<text name="selected" value="--"/>
+	<text name="selected_label" value="Sélection"/>
+	<text name="rezzed_on_land" value="--"/>
+	<text name="rezzed_on_land_label" value="Rezzés sur le terrain"/>
+	<text name="remaining_capacity" value="--"/>
+	<text name="remaining_capacity_label" value="Capacité restante"/>
+	<text name="total_capacity" value="--"/>
+	<text name="total_capacity_label" value="Capacité totale"/>
+	<text name="help_SLURL" value="[secondlife:///app/help/object_weights De quoi s&apos;agit-il ?...]"/>
+</floater>
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
index d77dfbdf82514fcd437bdb985a77d486eced9214..72018f5de504ecd55281e521e7ea92e8ce626e22 100644
--- a/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml
+++ b/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container" title="Enregistrer la tenue">
+<floater name="modal container" title="SAUVEGARDER LA TENUE">
 	<button label="Enregistrer" label_selected="Enregistrer" name="Save"/>
 	<button label="Annuler" label_selected="Annuler" name="Cancel"/>
 	<text name="Save item as:">
diff --git a/indra/newview/skins/default/xui/fr/floater_people.xml b/indra/newview/skins/default/xui/fr/floater_people.xml
new file mode 100644
index 0000000000000000000000000000000000000000..58701c06b2d8f8fb133d6be4d30e610e333f21dc
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="PERSONNES">
+	<panel_container name="main_panel">
+		<panel label="Profil du groupe" name="panel_group_info_sidetray"/>
+		<panel label="Résidents et objets ignorés" name="panel_block_list_sidetray"/>
+	</panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_picks.xml b/indra/newview/skins/default/xui/fr/floater_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f058ff668b7b7de1cf9b90fcf9f8262c9ffb4a20
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Favoris"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_places.xml b/indra/newview/skins/default/xui/fr/floater_places.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9e649aca4726e6a2e9eb010f424c0c26ecdf7bea
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="LIEUX">
+	<panel label="Lieux" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_preview_animation.xml b/indra/newview/skins/default/xui/fr/floater_preview_animation.xml
index a9407abfde3e055198f3475db9bc1515790ebce8..fdd2ac8beb6d8c5ab70a8a43eeaa91a7b23c31b3 100644
--- a/indra/newview/skins/default/xui/fr/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/fr/floater_preview_animation.xml
@@ -6,6 +6,6 @@
 	<text name="desc txt">
 		Description :
 	</text>
-	<button label="Jouer dans Second Life" label_selected="Stop" name="Anim play btn" tool_tip="Lire cette animation de façon à ce que les autres puissent la voir" width="131"/>
-	<button label="Jouer localement" label_selected="Stop" left="160" name="Anim audition btn" tool_tip="Lire cette animation de façon à ce que vous soyez la seule personne à pouvoir la voir" width="120"/>
+	<button label="Exécuter dans Second Life" label_selected="Stop" name="Anim play btn" tool_tip="Lire cette animation de façon à ce que les autres puissent la voir" width="131"/>
+	<button label="Exécuter localement" label_selected="Stop" left="160" name="Anim audition btn" tool_tip="Lire cette animation de façon à ce que vous soyez la seule personne à pouvoir la voir" width="120"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_snapshot.xml b/indra/newview/skins/default/xui/fr/floater_snapshot.xml
index 34d0957b4614e9cc3342525abfb61a7a8b5945ec..9244051edce7308e7617d390bab018ba4a13a936 100644
--- a/indra/newview/skins/default/xui/fr/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/fr/floater_snapshot.xml
@@ -1,75 +1,65 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Snapshot" title="APERÇU DE LA PHOTO" width="247">
+<floater name="Snapshot" title="APERÇU DE LA PHOTO">
 	<floater.string name="unknown">
 		inconnu
 	</floater.string>
-	<radio_group label="Type de photo" name="snapshot_type_radio">
-		<radio_item label="E-mail" name="postcard"/>
-		<radio_item label="Mon inventaire ([AMOUNT] L$)" name="texture"/>
-		<radio_item label="Enregistrer sur mon ordinateur" name="local"/>
-	</radio_group>
+	<string name="postcard_progress_str">
+		Envoi par e-mail
+	</string>
+	<string name="profile_progress_str">
+		Publication
+	</string>
+	<string name="inventory_progress_str">
+		Enregistrement dans l&apos;inventaire
+	</string>
+	<string name="local_progress_str">
+		Enregistrement sur l&apos;ordinateur
+	</string>
+	<string name="profile_succeeded_str">
+		Image chargée
+	</string>
+	<string name="postcard_succeeded_str">
+		Envoi par e-mail effectué !
+	</string>
+	<string name="inventory_succeeded_str">
+		Enregistrement dans l&apos;inventaire effectué !
+	</string>
+	<string name="local_succeeded_str">
+		Enregistrement sur l&apos;ordinateur effectué !
+	</string>
+	<string name="profile_failed_str">
+		Échec de chargement de l&apos;image sur le flux de votre profil.
+	</string>
+	<string name="postcard_failed_str">
+		Échec d&apos;envoi par e-mail.
+	</string>
+	<string name="inventory_failed_str">
+		Échec d&apos;enregistrement dans l&apos;inventaire.
+	</string>
+	<string name="local_failed_str">
+		Échec d&apos;enregistrement sur l&apos;ordinateur.
+	</string>
+	<button name="advanced_options_btn" tool_tip="Options avancées"/>
+	<text name="image_res_text">
+		[WIDTH] x [HEIGHT] px
+	</text>
 	<text name="file_size_label">
 		[SIZE] Ko
 	</text>
-	<button label="Rafraîchir" name="new_snapshot_btn"/>
-	<button label="Envoyer" name="send_btn"/>
-	<button label="Enreg. ([AMOUNT] L$)" name="upload_btn"/>
-	<flyout_button label="Enregistrer" name="save_btn" tool_tip="Enregistrer l&apos;image sous forme de fichier">
-		<flyout_button.item label="Enregistrer" name="save_item"/>
-		<flyout_button.item label="Enregistrer sous..." name="saveas_item"/>
-	</flyout_button>
-	<button label="Plus" name="more_btn" tool_tip="Options avancées"/>
-	<button label="Moins" name="less_btn" tool_tip="Options avancées"/>
-	<button label="Annuler" name="discard_btn"/>
-	<text name="type_label2">
-		Taille
-	</text>
-	<text name="format_label">
-		Format
-	</text>
-	<combo_box label="Résolution" name="postcard_size_combo">
-		<combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/>
-		<combo_box.item label="640 x 480" name="640x480"/>
-		<combo_box.item label="800 x 600" name="800x600"/>
-		<combo_box.item label="1 024 x 768" name="1024x768"/>
-		<combo_box.item label="Personnalisée" name="Custom"/>
-	</combo_box>
-	<combo_box label="Résolution" name="texture_size_combo">
-		<combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/>
-		<combo_box.item label="Petite (128 x 128)" name="Small(128x128)"/>
-		<combo_box.item label="Moyenne (256 x 256)" name="Medium(256x256)"/>
-		<combo_box.item label="Grande (512 x 512)" name="Large(512x512)"/>
-		<combo_box.item label="Personnalisée" name="Custom"/>
-	</combo_box>
-	<combo_box label="Résolution" name="local_size_combo">
-		<combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/>
-		<combo_box.item label="320 x 240" name="320x240"/>
-		<combo_box.item label="640 x 480" name="640x480"/>
-		<combo_box.item label="800 x 600" name="800x600"/>
-		<combo_box.item label="1 024 x 768" name="1024x768"/>
-		<combo_box.item label="1 280 x 1 024" name="1280x1024"/>
-		<combo_box.item label="1 600 x 1 200" name="1600x1200"/>
-		<combo_box.item label="Personnalisée" name="Custom"/>
-	</combo_box>
-	<combo_box label="Format" name="local_format_combo">
-		<combo_box.item label="PNG" name="PNG"/>
-		<combo_box.item label="JPEG" name="JPEG"/>
-		<combo_box.item label="BMP" name="BMP"/>
-	</combo_box>
-	<spinner label="Larg." name="snapshot_width"/>
-	<spinner label="Haut." name="snapshot_height"/>
-	<check_box label="Contraindre les proportions" name="keep_aspect_check"/>
-	<slider label="Qualité de l&apos;image" name="image_quality_slider"/>
-	<text name="layer_type_label">
-		Capturer :
-	</text>
-	<combo_box label="Couches d&apos;images" name="layer_types">
-		<combo_box.item label="Couleurs" name="Colors"/>
-		<combo_box.item label="Profondeur" name="Depth"/>
-	</combo_box>
-	<check_box label="Interface" name="ui_check"/>
-	<check_box label="HUD" name="hud_check"/>
-	<check_box label="Garder ouvert après enregistrement" name="keep_open_check"/>
-	<check_box label="Arrêt sur image (plein écran)" name="freeze_frame_check"/>
-	<check_box label="Actualisation automatique" name="auto_snapshot_check"/>
+	<panel name="advanced_options_panel">
+		<text name="advanced_options_label">
+			OPTIONS AVANCÉES
+		</text>
+		<text name="layer_type_label">
+			Capturer :
+		</text>
+		<combo_box label="Couches d&apos;images" name="layer_types">
+			<combo_box.item label="Couleurs" name="Colors"/>
+			<combo_box.item label="Profondeur" name="Depth"/>
+		</combo_box>
+		<check_box label="Interface" name="ui_check"/>
+		<check_box label="HUD" name="hud_check"/>
+		<check_box label="Arrêt sur image (plein écran)" name="freeze_frame_check"/>
+		<check_box label="Actualisation automatique" name="auto_snapshot_check"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_sound_devices.xml b/indra/newview/skins/default/xui/fr/floater_sound_devices.xml
index 9e2e4333aa090180bb4ebacd72a82d5a6903f0bb..080ade9dd4e5c8137d24d9b4f338318b696928d8 100644
--- a/indra/newview/skins/default/xui/fr/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/fr/floater_sound_devices.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="Périphériques audio">
+<floater name="floater_sound_devices" title="PERIPHERIQUES AUDIO">
 	<text name="voice_label">
 		Chat vocal
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/floater_stats.xml b/indra/newview/skins/default/xui/fr/floater_stats.xml
index 3c19bb26080da8da6fb1d1663b50bec2b7d9357a..2ce2e6dcd55d89aa17d959581e16856427b8b6d3 100644
--- a/indra/newview/skins/default/xui/fr/floater_stats.xml
+++ b/indra/newview/skins/default/xui/fr/floater_stats.xml
@@ -10,8 +10,8 @@
 			</stat_view>
 			<stat_view label="Avancées" name="advanced">
 				<stat_view label="Rendu" name="render">
-					<stat_bar label="KTris Drawn" name="ktrisframe"/>
-					<stat_bar label="KTris Drawn" name="ktrissec"/>
+					<stat_bar label="KTris par image" name="ktrisframe"/>
+					<stat_bar label="KTris par s" name="ktrissec"/>
 					<stat_bar label="Objets totaux" name="objs"/>
 					<stat_bar label="Nouveaux objets" name="newobjs"/>
 				</stat_view>
@@ -32,13 +32,13 @@
 					<stat_bar label="Couches" name="layerskbitstat"/>
 					<stat_bar label="Arrivés" name="actualinkbitstat"/>
 					<stat_bar label="Sortis" name="actualoutkbitstat"/>
-					<stat_bar label="Ops VFS en attente" name="vfspendingoperations"/>
+					<stat_bar label="Opérations VFS en attente" name="vfspendingoperations"/>
 				</stat_view>
 			</stat_view>
 			<stat_view label="Simulateur" name="sim">
 				<stat_bar label="Dilatation temporelle" name="simtimedilation"/>
 				<stat_bar label="FPS sim" name="simfps"/>
-				<stat_bar label="Propriétés physiques FPS" name="simphysicsfps"/>
+				<stat_bar label="FPS physique" name="simphysicsfps"/>
 				<stat_view label="Détails des propriétés physiques" name="physicsdetail">
 					<stat_bar label="Objets fixés" name="physicspinnedtasks"/>
 					<stat_bar label="Objets LOD faibles" name="physicslodtasks"/>
@@ -53,17 +53,25 @@
 				<stat_bar label="Événements de scripts" name="simscripteps"/>
 				<stat_bar label="Paquets en entrée" name="siminpps"/>
 				<stat_bar label="Paquets en sortie" name="simoutpps"/>
-				<stat_bar label="En attente des téléchargements" name="simpendingdownloads"/>
-				<stat_bar label="En attente des chargements" name="simpendinguploads"/>
+				<stat_bar label="Téléchargements en attente" name="simpendingdownloads"/>
+				<stat_bar label="Chargements en attente" name="simpendinguploads"/>
 				<stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/>
 				<stat_view label="Temps (ms)" name="simperf">
-					<stat_bar label="Durée du cadre totale" name="simframemsec"/>
+					<stat_bar label="Durée totale de l'image" name="simframemsec"/>
 					<stat_bar label="Durée nette" name="simnetmsec"/>
-					<stat_bar label="Durée physique" name="simsimphysicsmsec"/>
-					<stat_bar label="Durée de la simulation" name="simsimothermsec"/>
-					<stat_bar label="Durée de l&apos;avatar" name="simagentmsec"/>
+					<stat_bar label="Durée sim (physique)" name="simsimphysicsmsec"/>
+					<stat_bar label="Durée sim (autre)" name="simsimothermsec"/>
+					<stat_bar label="Durée des avatars" name="simagentmsec"/>
 					<stat_bar label="Durée des images" name="simimagesmsec"/>
-					<stat_bar label="Durée du script" name="simscriptmsec"/>
+					<stat_bar label="Durée des scripts" name="simscriptmsec"/>
+					<stat_bar label="Temps d&apos;inactivité" name="simsparemsec"/>
+					<stat_view label="Détails Temps (ms)" name="timedetails">
+						<stat_bar label="Etape propr. physiques" name="simsimphysicsstepmsec"/>
+						<stat_bar label="Mettre à jour les formes phys" name="simsimphysicsshapeupdatemsec"/>
+						<stat_bar label="Propriétés physiques Autre" name="simsimphysicsothermsec"/>
+						<stat_bar label="Temps de sommeil" name="simsleepmsec"/>
+						<stat_bar label="Pump IO" name="simpumpiomsec"/>
+					</stat_view>
 				</stat_view>
 			</stat_view>
 		</container_view>
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
index bf687c412b75ad8546153c650ce83666b40a5dc8..af5678ff0e796ec87db514445b4a3241aa002d06 100644
--- a/indra/newview/skins/default/xui/fr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tools.xml
@@ -25,10 +25,10 @@
 		Cliquez et faites glisser pour sélectionner le terrain.
 	</floater.string>
 	<floater.string name="status_selectcount">
-		[OBJ_COUNT] objets ( [PRIM_COUNT] prims[PE_STRING] ) sélectionnés
+		[OBJ_COUNT] objets sélectionnés, impact sur le terrain [LAND_IMPACT]
 	</floater.string>
-	<floater.string name="status_selectprimequiv">
-		, équiv. prims de [SEL_WEIGHT]
+	<floater.string name="status_remaining_capacity">
+		Capacité restante [LAND_CAPACITY].
 	</floater.string>
 	<button label="" label_selected="" name="button focus" tool_tip="Mise au point"/>
 	<button label="" label_selected="" name="button move" tool_tip="Déplacer"/>
@@ -105,8 +105,8 @@
 	<text name="selection_empty">
 		Aucune sélection effectuée.
 	</text>
-	<text name="selection_weight">
-		Poids physique [PHYS_WEIGHT], Coût de rendu [DISP_WEIGHT].
+	<text name="remaining_capacity">
+		[CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Plus d'infos]
 	</text>
 	<tab_container name="Object Info Tabs">
 		<panel label="Général" name="General">
@@ -319,7 +319,6 @@
 				Type de raccord
 			</text>
 			<combo_box name="sculpt type control">
-				<combo_box.item label="(aucun)" name="None"/>
 				<combo_box.item label="Sphère" name="Sphere"/>
 				<combo_box.item label="Tore" name="Torus"/>
 				<combo_box.item label="Plan" name="Plane"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_toybox.xml b/indra/newview/skins/default/xui/fr/floater_toybox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f99d3d30b5885ca38230b253bf7b1263ddb54a9e
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_toybox.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="BOUTONS DES BARRES D&apos;OUTILS">
+	<text name="toybox label 1">
+		Ajouter ou supprimer des boutons : les faire glisser vers ou depuis les barres d&apos;outils.
+	</text>
+	<text name="toybox label 2">
+		Ils s&apos;afficheront comme indiqué ou comme des icônes, selon les paramètres de barre d&apos;outils.
+	</text>
+	<button label="Effacer tout" label_selected="Effacer tout" name="btn_clear_all"/>
+	<button label="Valeurs par défaut" label_selected="Valeurs par défaut" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_translation_settings.xml b/indra/newview/skins/default/xui/fr/floater_translation_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c7582f110f6390fd87ac6b56419bd35e32b1638d
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/floater_translation_settings.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_translation_settings" title="TRADUCTION AUTOMATIQUE">
+	<string name="bing_api_key_not_verified">
+		ID d&apos;application Bing non vérifié. Veuillez réessayer.
+	</string>
+	<string name="google_api_key_not_verified">
+		Clé d&apos;API Google non vérifiée. Veuillez réessayer.
+	</string>
+	<string name="bing_api_key_verified">
+		ID d&apos;application Bing vérifié.
+	</string>
+	<string name="google_api_key_verified">
+		Clé d&apos;API Google vérifiée.
+	</string>
+	<check_box label="Activer la traduction automatique lors des chats" name="translate_chat_checkbox"/>
+	<text name="translate_language_label">
+		Traduire les chats en :
+	</text>
+	<combo_box name="translate_language_combo">
+		<combo_box.item label="Langue système par défaut" name="System Default Language"/>
+		<combo_box.item label="English (Anglais)" name="English"/>
+		<combo_box.item label="Dansk (Danois)" name="Danish"/>
+		<combo_box.item label="Deutsch (Allemand)" name="German"/>
+		<combo_box.item label="Español (Espagnol)" name="Spanish"/>
+		<combo_box.item label="Français" name="French"/>
+		<combo_box.item label="Italiano (Italien)" name="Italian"/>
+		<combo_box.item label="Magyar (Hongrois)" name="Hungarian"/>
+		<combo_box.item label="Nederlands (Néerlandais)" name="Dutch"/>
+		<combo_box.item label="Polski (Polonais)" name="Polish"/>
+		<combo_box.item label="Português (Portugais)" name="Portugese"/>
+		<combo_box.item label="Русский (Russe)" name="Russian"/>
+		<combo_box.item label="Türkçe (Turc)" name="Turkish"/>
+		<combo_box.item label="Українська (Ukrainien)" name="Ukrainian"/>
+		<combo_box.item label="中文 (正體) (Chinois)" name="Chinese"/>
+		<combo_box.item label="日本語 (Japonais)" name="Japanese"/>
+		<combo_box.item label="한국어 (Coréen)" name="Korean"/>
+	</combo_box>
+	<text name="tip">
+		Choisir le service à utiliser :
+	</text>
+	<radio_group name="translation_service_rg">
+		<radio_item initial_value="bing" label="Bing Translator" name="bing"/>
+		<radio_item initial_value="google" label="Google Translate" name="google"/>
+	</radio_group>
+	<text name="bing_api_key_label">
+		[http://www.bing.com/developers/createapp.aspx ID d&apos;application] Bing :
+	</text>
+	<button label="Vérifier" name="verify_bing_api_key_btn"/>
+	<text name="google_api_key_label">
+		[http://code.google.com/apis/language/translate/v2/getting_started.html#auth Clé d&apos;API] Google :
+	</text>
+	<button label="Vérifier" name="verify_google_api_key_btn"/>
+	<text name="google_links_text">
+		[http://code.google.com/apis/language/translate/v2/pricing.html Tarification] | [https://code.google.com/apis/console Statistiques]
+	</text>
+	<button label="OK" name="ok_btn"/>
+	<button label="Annuler" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_voice_controls.xml b/indra/newview/skins/default/xui/fr/floater_voice_controls.xml
index d4f07a0a253f9298270d1a48a1dd2bb204619be1..fc4de4a5a6d16799efe7684159c7aa5824a39a86 100644
--- a/indra/newview/skins/default/xui/fr/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/fr/floater_voice_controls.xml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Contrôles vocaux">
+<floater name="floater_voice_controls" title="CONTROLES DE LA VOIX">
 	<string name="title_nearby">
-		CHAT VOCAL PRÈS DE VOUS
+		PARAMÈTRES VOCAUX
 	</string>
 	<string name="title_group">
-		Appel de groupe avec [GROUP]
+		APPEL DE GROUPE AVEC [GROUP]
 	</string>
 	<string name="title_adhoc">
-		Téléconférence
+		CONFÉRENCE
 	</string>
 	<string name="title_peer_2_peer">
-		Appel avec [NAME]
+		APPEL AVEC [NAME]
 	</string>
 	<string name="no_one_near">
 		Il n&apos;y a personne près de vous avec le chat vocal activé
diff --git a/indra/newview/skins/default/xui/fr/menu_group_plus.xml b/indra/newview/skins/default/xui/fr/menu_group_plus.xml
index 0db5afedc795c54c793826fbd8752defc25c5785..ad76f11d79744908af0fc233cc589eefa4bf5a16 100644
--- a/indra/newview/skins/default/xui/fr/menu_group_plus.xml
+++ b/indra/newview/skins/default/xui/fr/menu_group_plus.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="menu_group_plus">
-	<menu_item_call label="Rejoindre des groupes..." name="item_join"/>
+	<menu_item_call label="Rejoindre un groupe..." name="item_join"/>
 	<menu_item_call label="Nouveau groupe..." name="item_new"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml
index 20af901ddc6554814c4953979650a6873e109b48..09c9f5084ab3f40a6ffc5d47e9d35d47c467c4e1 100644
--- a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="hide_navbar_menu">
-	<menu_item_check label="Afficher la barre de navigation" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="Afficher la barre de navigation &amp; favoris" name="ShowNavbarNavigationPanel"/>
 	<menu_item_check label="Afficher la barre des favoris" name="ShowNavbarFavoritesPanel"/>
 	<menu_item_check label="Afficher la mini-barre d&apos;emplacement" name="ShowMiniLocationPanel"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml
index 53df8d11da0ebb91b5f27b3e5a4b1058ae2ee0f6..403111c4ded7f10eb07ee1284d239ad79ce7708d 100644
--- a/indra/newview/skins/default/xui/fr/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inventory.xml
@@ -71,7 +71,7 @@
 	<menu_item_call label="Jouer dans Second Life" name="Animation Play"/>
 	<menu_item_call label="Jouer localement" name="Animation Audition"/>
 	<menu_item_call label="Envoyer un message instantané" name="Send Instant Message"/>
-	<menu_item_call label="Offrir de téléporter..." name="Offer Teleport..."/>
+	<menu_item_call label="Proposer une téléportation..." name="Offer Teleport..."/>
 	<menu_item_call label="Démarrer le chat conférence" name="Conference Chat"/>
 	<menu_item_call label="Activer" name="Activate"/>
 	<menu_item_call label="Désactiver" name="Deactivate"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml
index 6b96a16e75b6173f6ff9616b3f971a97dcc949e1..8210c1be514626832b553039399a8d88c2d5b6ac 100644
--- a/indra/newview/skins/default/xui/fr/menu_login.xml
+++ b/indra/newview/skins/default/xui/fr/menu_login.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Login Menu">
 	<menu label="Moi" name="File">
-		<menu_item_call label="Préférences" name="Preferences..."/>
+		<menu_item_call label="Préférences..." name="Preferences..."/>
 		<menu_item_call label="Quitter [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Aide" name="Help">
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
index 0aad174fbdb25316f25b7993158dc464c7b589c9..8bb466b8d6ed444006dab85cc1a185da3cc1d8ea 100644
--- 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
@@ -5,5 +5,5 @@
 	<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"/>
-	<menu_item_call label="Afficher les résidents et les objets interdits" name="show_blocked_list"/>
+	<menu_item_call label="Afficher les résidents et les objets ignorés" name="show_blocked_list"/>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_toolbars.xml b/indra/newview/skins/default/xui/fr/menu_toolbars.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f74d206d562893b229508aba8aa724c40a35112a
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/menu_toolbars.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+	<menu_item_call label="Supprimer ce bouton" name="Remove button"/>
+	<menu_item_call label="Boutons des barres d&apos;outils..." name="Choose Buttons"/>
+	<menu_item_check label="Icônes et libellés" name="icons_with_text"/>
+	<menu_item_check label="Icônes uniquement" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index cf1dac2f3afae54f49880e1c0ad4418cb8256e65..9303815c301afec1446f5157b32465d4a7e7ed6e 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -1,54 +1,60 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Main Menu">
 	<menu label="Moi" name="Me">
-		<menu_item_call label="Préférences" name="Preferences"/>
-		<menu_item_call label="Ma Page d&apos;accueil" name="Manage My Account">
-			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=fr"/>
-		</menu_item_call>
-		<menu_item_call label="Acheter des L$" name="Buy and Sell L$"/>
-		<menu_item_call label="Mon profil" name="Profile"/>
-		<menu_item_call label="Mon apparence" name="ChangeOutfit"/>
-		<menu_item_check label="Mon inventaire" name="Inventory"/>
-		<menu_item_check label="Mon inventaire" name="ShowSidetrayInventory"/>
-		<menu_item_check label="Mes gestes" name="Gestures"/>
-		<menu_item_check label="Ma voix" name="ShowVoice"/>
+		<menu_item_call label="Profil..." name="Profile"/>
+		<menu_item_call label="Apparence..." name="ChangeOutfit"/>
+		<menu_item_call label="Choisir un avatar..." name="Avatar Picker"/>
+		<menu_item_check label="Inventaire..." name="Inventory"/>
+		<menu_item_call label="Nouvelle fenêtre d&apos;inventaire" name="NewInventoryWindow"/>
+		<menu_item_call label="Endroits..." name="Places"/>
+		<menu_item_call label="Favoris..." name="Picks"/>
+		<menu_item_call label="Paramètres de la caméra..." name="Camera Controls"/>
 		<menu label="Déplacement" name="Movement">
 			<menu_item_call label="M&apos;asseoir" name="Sit Down Here"/>
 			<menu_item_check label="Voler" name="Fly"/>
 			<menu_item_check label="Toujours courir" name="Always Run"/>
 			<menu_item_call label="Arrêter mon animation" name="Stop Animating My Avatar"/>
 		</menu>
-		<menu label="Mon 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="Demander le statut Admin" name="Request Admin Options"/>
 		<menu_item_call label="Quitter le statut Admin" name="Leave Admin Options"/>
+		<menu_item_call label="Acheter des L$" name="Buy and Sell L$"/>
+		<menu_item_call label="Page d&apos;accueil du compte..." name="Manage My Account">
+			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=fr"/>
+		</menu_item_call>
+		<menu_item_call label="Préférences..." name="Preferences"/>
+		<menu_item_call label="Boutons des barres d&apos;outils..." name="Toolbars"/>
+		<menu_item_call label="Masquer tous les contrôles" name="Hide UI"/>
 		<menu_item_call label="Quitter [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Communiquer" name="Communicate">
-		<menu_item_call label="Mes amis" name="My Friends"/>
-		<menu_item_call label="Mes groupes" name="My Groups"/>
-		<menu_item_check label="Chat près de moi" name="Nearby Chat"/>
-		<menu_item_call label="Personnes près de moi" name="Active Speakers"/>
-		<menu_item_check label="Chat vocal près de vous" name="Nearby Voice"/>
+		<menu_item_check label="Chat..." 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_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>
 	<menu label="Monde" name="World">
-		<menu_item_check label="Mini-carte" name="Mini-Map"/>
+		<menu_item_call label="Créer un repère pour ce lieu" name="Create Landmark Here"/>
+		<menu_item_call label="Destinations..." name="Destinations"/>
 		<menu_item_check label="Carte du monde" name="World Map"/>
+		<menu_item_check label="Mini-carte" name="Mini-Map"/>
 		<menu_item_check label="Rechercher" name="Search"/>
+		<menu_item_call label="Me téléporter chez moi" name="Teleport Home"/>
+		<menu_item_call label="Définir le domicile ici" name="Set Home to Here"/>
 		<menu_item_call label="Photo" name="Take Snapshot"/>
-		<menu_item_call label="Créer un repère pour ce lieu" name="Create Landmark Here"/>
-		<menu label="Profil du lieu" name="Land">
-			<menu_item_call label="Profil du lieu" name="Place Profile"/>
-			<menu_item_call label="À propos du terrain" name="About Land"/>
-			<menu_item_call label="Région/Domaine" name="Region/Estate"/>
-		</menu>
+		<menu_item_call label="Profil du lieu" name="Place Profile"/>
+		<menu_item_call label="À propos du terrain" name="About Land"/>
+		<menu_item_call label="Région/Domaine" name="Region/Estate"/>
+		<menu_item_call label="Mes terrains..." name="My Land"/>
 		<menu_item_call label="Acheter ce terrain" name="Buy Land"/>
-		<menu_item_call label="Mes terrains" name="My Land"/>
 		<menu label="Afficher" name="LandShow">
-			<menu_item_check label="Contrôles de mouvement" name="Movement Controls"/>
-			<menu_item_check label="Contrôles d’affichage" name="Camera Controls"/>
 			<menu_item_check label="Lignes d&apos;interdiction" name="Ban Lines"/>
 			<menu_item_check label="Balises" name="beacons"/>
 			<menu_item_check label="Limites du terrain" name="Property Lines"/>
@@ -57,16 +63,15 @@
 			<menu_item_check label="Propriétés de la parcelle" name="Parcel Properties"/>
 			<menu_item_check label="Menu Avancé" name="Show Advanced Menu"/>
 		</menu>
-		<menu_item_call label="Me téléporter chez moi" name="Teleport Home"/>
-		<menu_item_call label="Définir le domicile ici" name="Set Home to Here"/>
 		<menu label="Luminosité" name="Environment Settings">
 			<menu_item_call label="Aube" name="Sunrise"/>
 			<menu_item_call label="Milieu de journée" name="Noon"/>
 			<menu_item_call label="Coucher de soleil" name="Sunset"/>
 			<menu_item_call label="Minuit" name="Midnight"/>
+			<menu_item_call label="Utiliser les réglages de la région" name="Use Region Settings"/>
 		</menu>
-		<menu label="Éditeur d&apos;environnement" name="Enviroment Editor">
-			<menu_item_call label="Paramètres d&apos;environnement..." name="Enviroment Settings"/>
+		<menu label="Éditeur d&apos;environnement" name="Environment Editor">
+			<menu_item_call label="Paramètres d&apos;environnement..." name="Environment Settings"/>
 			<menu label="Préréglages de l&apos;eau" name="Water Presets">
 				<menu_item_call label="Nouveau préréglage..." name="new_water_preset"/>
 				<menu_item_call label="Modifier un préréglage..." name="edit_water_preset"/>
@@ -139,13 +144,14 @@
 			<menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/>
 			<menu_item_call label="Modèle..." name="Upload Model"/>
 			<menu_item_call label="Lot ([COST] L$ par fichier)..." name="Bulk Upload"/>
+			<menu_item_call label="Définir les droits de chargement par défaut" name="perm prefs"/>
 		</menu>
 		<menu_item_call label="Annuler" name="Undo"/>
 		<menu_item_call label="Refaire" name="Redo"/>
 	</menu>
 	<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_check label="Activer les astuces" name="Enable Hints"/>
 		<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"/>
@@ -161,7 +167,7 @@
 		<menu label="Outils de performance" name="Performance Tools">
 			<menu_item_call label="Mesure du lag" name="Lag Meter"/>
 			<menu_item_check label="Barre de statistiques" name="Statistics Bar"/>
-			<menu_item_check label="Afficher le coût de rendu de l&apos;avatar" name="Avatar Rendering Cost"/>
+			<menu_item_check label="Afficher le poids de dessin pour les avatars" name="Avatar Rendering Cost"/>
 		</menu>
 		<menu label="Surbrillance et visibilité" name="Highlighting and Visibility">
 			<menu_item_check label="Balise animée" name="Cheesy Beacon"/>
@@ -199,11 +205,10 @@
 		<menu_item_check label="Utiliser le thread de lecture de plug-in" name="Use Plugin Read Thread"/>
 		<menu_item_call label="Effacer le cache du groupe" name="ClearGroupCache"/>
 		<menu_item_check label="Effet de lissage de la souris" name="Mouse Smoothing"/>
+		<menu_item_call label="Libérer les touches" name="Release Keys"/>
 		<menu label="Raccourcis" name="Shortcuts">
 			<menu_item_call label="Image ([COST] L$)..." name="Upload Image"/>
 			<menu_item_check label="Rechercher" name="Search"/>
-			<menu_item_call label="Relâcher les touches" name="Release Keys"/>
-			<menu_item_call label="Taille de l&apos;interface par défaut" name="Set UI Size to Default"/>
 			<menu_item_check label="Afficher le menu Avancé - raccourci existant" name="Show Advanced Menu - legacy shortcut"/>
 			<menu_item_call label="Fermer la fenêtre" name="Close Window"/>
 			<menu_item_call label="Fermer toutes les fenêtres" name="Close All Windows"/>
@@ -289,6 +294,8 @@
 			<menu_item_check label="Lumières" name="Lights"/>
 			<menu_item_check label="Squelette de collision" name="Collision Skeleton"/>
 			<menu_item_check label="Rayons" name="Raycast"/>
+			<menu_item_check label="Vecteurs de vent" name="Wind Vectors"/>
+			<menu_item_check label="Complexité du rendu" name="rendercomplexity"/>
 			<menu_item_check label="Sculpture" name="Sculpt"/>
 		</menu>
 		<menu label="Rendu" name="Rendering">
@@ -300,7 +307,6 @@
 			<menu_item_check label="Éclairage et ombres" name="Lighting and Shadows"/>
 			<menu_item_check label="Ombres du soleil/de la lune/des projecteurs" name="Shadows from Sun/Moon/Projectors"/>
 			<menu_item_check label="SSAO et lissage des ombres" name="SSAO and Shadow Smoothing"/>
-			<menu_item_check label="Illumination globale (expérimental)" name="Global Illumination"/>
 			<menu_item_check label="Débogage GL" name="Debug GL"/>
 			<menu_item_check label="Débogage pipeline" name="Debug Pipeline"/>
 			<menu_item_check label="Masques alpha automatiques (différés)" name="Automatic Alpha Masks (deferred)"/>
@@ -318,7 +324,7 @@
 			<menu_item_check label="Pauser l&apos;avatar" name="AgentPause"/>
 			<menu_item_call label="Activer le journal des messages" name="Enable Message Log"/>
 			<menu_item_call label="Désactiver le journal des messages" name="Disable Message Log"/>
-			<menu_item_check label="Velocity Interpolate Objects" name="Velocity Interpolate Objects"/>
+			<menu_item_check label="Objets d&apos;interpolation de vitesse" name="Velocity Interpolate Objects"/>
 			<menu_item_check label="Interpolation ping des positions des objets" name="Ping Interpolate Object Positions"/>
 			<menu_item_call label="Abandonner un paquet" name="Drop a Packet"/>
 		</menu>
@@ -335,7 +341,7 @@
 			<menu_item_check label="Ignorer les paramètres du soleil de la sim" name="Sim Sun Override"/>
 			<menu_item_check label="Balise animée" name="Cheesy Beacon"/>
 			<menu_item_check label="Météo fixe" name="Fixed Weather"/>
-			<menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/>
+			<menu_item_call label="Vidage de cache d&apos;objet de la région" name="Dump Region Object Cache"/>
 		</menu>
 		<menu label="Interface" name="UI">
 			<menu_item_call label="Test du navigateur de médias" name="Web Browser Test"/>
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 1389c49f5bb69d72371ba7b008e6d9fc350be1c3..2f9bf23bc42b970d88dd14967b2b04b134311ecc 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -980,7 +980,7 @@ Proposer à [NAME] de devenir votre ami(e) ?
 		</form>
 	</notification>
 	<notification name="RemoveFromFriends">
-		Voulez-vous supprimer [NAME] de votre liste d&apos;amis ?
+		Voulez-vous supprimer &lt;nolink&gt;[NAME]&lt;/nolink&gt; de votre liste d&apos;amis ?
 		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
 	</notification>
 	<notification name="RemoveMultipleFromFriends">
@@ -1105,8 +1105,13 @@ Céder ces [AREA] m² de terrain au groupe [GROUP_NAME] ?
 	<notification name="DisplaySetToSafe">
 		Les paramètres d&apos;affichage sont au niveau le plus sûr, comme vous l&apos;aviez indiqué.
 	</notification>
-	<notification name="DisplaySetToRecommended">
-		Vos paramètres d&apos;affichage ont été réglés avec une marge de sécurité en fonction de votre configuration système.
+	<notification name="DisplaySetToRecommendedGPUChange">
+		Les paramètres d&apos;affichage ont été modifiés selon les niveaux recommandés car votre carte graphique
+[LAST_GPU] a été remplacée
+par une carte [THIS_GPU].
+	</notification>
+	<notification name="DisplaySetToRecommendedFeatureChange">
+		Les paramètres d&apos;affichage ont été modifiés selon les niveaux recommandés en raison d&apos;un changement relatif au sous-système de rendu.
 	</notification>
 	<notification name="ErrorMessage">
 		[ERROR_MESSAGE]
@@ -1428,7 +1433,7 @@ Version [VERSION]
 		<usetemplate ignoretext="Confirmer avant de rendre les objets à leurs propriétaires" name="okcancelignore" notext="Annuler" yestext="OK"/>
 	</notification>
 	<notification name="GroupLeaveConfirmMember">
-		Vous êtes actuellement membre du groupe [GROUP].
+		Vous êtes actuellement membre du groupe &lt;nolink&gt;[GROUP]&lt;/nolink&gt;.
 Quitter le groupe ?
 		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
 	</notification>
@@ -1909,6 +1914,18 @@ Déplacer les objets de l&apos;inventaire ?
 		Êtes-vous certain de vouloir quitter ?
 		<usetemplate ignoretext="Confirmer avant de quitter" name="okcancelignore" notext="Ne pas quitter" yestext="Quitter"/>
 	</notification>
+	<notification name="ConfirmRestoreToybox">
+		Cette action rétablira vos boutons et barres d&apos;outils par défaut.
+
+Vous ne pouvez pas l&apos;annuler.
+		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmClearAllToybox">
+		Cette action replacera tous les boutons dans la boîte à outils de sorte que vos barres d&apos;outils seront vides.
+    
+Vous ne pouvez pas l&apos;annuler.
+		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
+	</notification>
 	<notification name="DeleteItems">
 		[QUESTION]
 		<usetemplate ignoretext="Confirmer avant de supprimer des articles" name="okcancelignore" notext="Annuler" yestext="OK"/>
@@ -2113,10 +2130,10 @@ Cette opération lancera votre navigateur Web.
 		Sujet : [SUBJECT], Message : [MESSAGE]
 	</notification>
 	<notification name="FriendOnline">
-		[NAME] est en ligne
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; est en ligne
 	</notification>
 	<notification name="FriendOffline">
-		[NAME] est hors ligne
+		&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.
@@ -2230,14 +2247,16 @@ Veuillez sélectionner un seul objet.
 		Votre carte de visite a été refusée.
 	</notification>
 	<notification name="TeleportToLandmark">
-		Vous pouvez vous téléporter vers des endroits comme [NAME] en ouvrant le panneau Lieux sur le côté droit de votre écran, puis en sélectionnant l&apos;onglet Repères.
-Cliquez sur le repère de votre choix pour le sélectionner, puis sur Téléporter en bas du panneau.
-(Vous pouvez aussi double-cliquer sur le repère ou cliquer dessus avec le bouton droit de la souris et sélectionner Téléporter.)
+		Pour vous téléporter vers un lieu tel que [NAME], cliquez sur le bouton Endroits,
+    puis sélectionnez l&apos;onglet Repères dans la fenêtre qui s&apos;ouvre. Cliquez sur n&apos;importe quel
+    repère pour le sélectionner, puis sur Téléportation en bas de la fenêtre.
+    (Vous pouvez aussi double-cliquer sur le repère ou cliquer-droit dessus et
+    choisir Téléportation).
 	</notification>
 	<notification name="TeleportToPerson">
-		Vous pouvez contacter des résidents comme [NAME] en ouvrant le panneau Résidents sur le côté droit de votre écran.
-Sélectionnez le résident de votre choix dans la liste, puis cliquez sur IM en bas du panneau.
-(Vous pouvez aussi double-cliquer sur le nom du résident dans la liste ou cliquer dessus avec le bouton droit de la souris et sélectionner IM.)
+		Pour contacter un résident tel que [NAME], cliquez sur le bouton Personnes, sélectionnez le résident dans la fenêtre qui s&apos;ouvre, puis cliquez sur IM en
+    bas de la fenêtre.
+    (Vous pouvez aussi double-cliquer sur le nom du résident dans la liste ou cliquer-droit dessus et choisir IM.)
 	</notification>
 	<notification name="CantSelectLandFromMultipleRegions">
 		Vous ne pouvez pas sélectionner de terrain en dehors des limites du serveur.
@@ -2258,6 +2277,9 @@ Veuillez sélectionner un terrain plus petit.
 	<notification name="PaymentSent">
 		[MESSAGE]
 	</notification>
+	<notification name="PaymentFailure">
+		[MESSAGE]
+	</notification>
 	<notification name="EventNotification">
 		Avis d&apos;événement :
 
@@ -2512,10 +2534,10 @@ Veuillez réessayer dans quelques minutes.
 		</form>
 	</notification>
 	<notification name="FriendshipAccepted">
-		[NAME] a accepté votre amitié.
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; a accepté votre amitié.
 	</notification>
 	<notification name="FriendshipDeclined">
-		[NAME] a refusé votre amitié.
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; a refusé votre amitié.
 	</notification>
 	<notification name="FriendshipAcceptedByMe">
 		Amitié acceptée.
@@ -2792,7 +2814,7 @@ Voir le fichier journal pour plus de détails.
 avec les résidents suivants :
 
 [RESIDENTS] ?
-		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="Ok"/>
+		<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
 	</notification>
 	<notification name="ItemsShared">
 		Articles partagés.
@@ -2882,7 +2904,7 @@ Les résidents rejoignant l&apos;appel ultérieurement seront également
 ignorés, même si vous quittez l&apos;appel.
 
 Ignorer les autres ?
-		<usetemplate ignoretext="Confirmer avant d&apos;ignorer les autres lors d&apos;un appel de groupe" name="okcancelignore" notext="Annuler" yestext="Ok"/>
+		<usetemplate ignoretext="Confirmer avant d&apos;ignorer les autres lors d&apos;un appel de groupe" name="okcancelignore" notext="Annuler" yestext="OK"/>
 	</notification>
 	<notification label="Chat" name="HintChat">
 		Pour participer à la conversation, saisissez du texte dans le champ de chat situé en dessous.
@@ -2995,10 +3017,6 @@ Cliquez sur un point dans le monde et faites glisser votre souris pour faire tou
 			<button name="cancel" text="Annuler"/>
 		</form>
 	</notification>
-	<notification label="" name="ModeChange">
-		Vous devez quitter et redémarrer l&apos;application afin de changer de mode.
-		<usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
-	</notification>
 	<notification label="" name="NoClassifieds">
 		Pour créer et modifier des petites annonces, vous devez utiliser le mode Avancé. Voulez-vous quitter l&apos;application afin de changer de mode ? Le sélecteur de mode se trouve sur l&apos;écran de connexion.
 		<usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
@@ -3043,6 +3061,10 @@ Cliquez sur un point dans le monde et faites glisser votre souris pour faire tou
 		La recherche est uniquement disponible en mode Avancé. Voulez-vous quitter l&apos;application afin de changer de mode ?
 		<usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
 	</notification>
+	<notification label="" name="ConfirmHideUI">
+		Cette action masquera tous les boutons et articles de menu. Pour les récupérer, cliquez de nouveau sur [SHORTCUT].
+		<usetemplate ignoretext="Confirmer avant de masquer l&apos;interface" name="okcancelignore" notext="Annuler" yestext="OK"/>
+	</notification>
 	<global name="UnsupportedGLRequirements">
 		Vous semblez ne pas avoir le matériel requis pour utiliser [APP_NAME]. [APP_NAME] requiert une carte graphique OpenGL avec une prise en charge du multitexturing. Si vous avez une telle carte, assurez-vous que vous avez aussi les pilotes les plus récents pour la carte, ainsi que les service packs et les patchs pour votre système d&apos;exploitation.
 
diff --git a/indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..de21996404d6fdcac8d360966312cf31f620d1ca
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="Conversations"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="Notifications"/>
+			</chiclet_notification>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_skin.xml b/indra/newview/skins/default/xui/fr/panel_edit_skin.xml
index 9640adcdf82cdad68fa1154d394efc6529af9037..f5f27383197fa9143793a3637a37d677e2ce1184 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_skin.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_skin.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_skin_panel">
 	<panel name="avatar_skin_color_panel">
-		<texture_picker label="Tatouage tête" name="Head Tattoos" tool_tip="Cliquez pour sélectionner une image" width="76"/>
-		<texture_picker label="Tatouage haut" name="Upper Tattoos" tool_tip="Cliquez pour sélectionner une image" width="80"/>
-		<texture_picker label="Tatouage bas" name="Lower Tattoos" tool_tip="Cliquez pour sélectionner une image"/>
+		<texture_picker label="Tête" name="Head" tool_tip="Cliquer pour sélectionner une image."/>
+		<texture_picker label="Haut du corps" name="Upper Body" tool_tip="Cliquer pour sélectionner une image."/>
+		<texture_picker label="Bas du corps" name="Lower Body" tool_tip="Cliquer pour sélectionner une image."/>
 	</panel>
 	<panel name="accordion_panel">
 		<accordion name="wearable_accordion">
diff --git a/indra/newview/skins/default/xui/fr/panel_me.xml b/indra/newview/skins/default/xui/fr/panel_me.xml
index 219e5801f2cbf5deb9f9ab5c609d68727ff5b3ed..56769862280c17ecfaca1ddf7701d33d0e07725c 100644
--- a/indra/newview/skins/default/xui/fr/panel_me.xml
+++ b/indra/newview/skins/default/xui/fr/panel_me.xml
@@ -1,7 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Mon profil" name="panel_me">
-	<tab_container name="tabs">
-		<panel label="MON PROFIL" name="panel_profile"/>
-		<panel label="MES FAVORIS" name="panel_picks"/>
-	</tab_container>
+	<panel label="MES FAVORIS" name="panel_picks"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_my_profile.xml b/indra/newview/skins/default/xui/fr/panel_my_profile.xml
deleted file mode 100644
index 5207c5a28e7967fa8d961c1323a4430decdf0635..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/fr/panel_my_profile.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
-	<string name="CaptionTextAcctInfo">
-		[ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
-	</string>
-	<string name="payment_update_link_url">
-		http://www.secondlife.com/account/billing.php?lang=en
-	</string>
-	<string name="partner_edit_link_url">
-		http://www.secondlife.com/account/partners.php?lang=en
-	</string>
-	<string name="my_account_link_url" value="http://secondlife.com/account"/>
-	<string name="no_partner_text" value="Aucun"/>
-	<string name="no_group_text" value="Aucun"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="scroll_content_panel">
-					<panel name="second_life_image_panel">
-						<text name="display_name_descr_text">
-							Nom d&apos;utilisateur
-						</text>
-						<text name="name_descr_text">
-							Nom d&apos;affichage
-						</text>
-						<button label="Profil" name="see_profile_btn" tool_tip="Afficher le profil de cet avatar."/>
-					</panel>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml b/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
index 45caf2323d26adc0a5f80704c9d513685e989042..ecb1e9813a510a59b8f5b9d7516e3cf62b235cb1 100644
--- a/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="Revenir à l&apos;emplacement précédent"/>
-		<pull_button name="forward_btn" tool_tip="Avancer d&apos;un emplacement"/>
-		<button name="home_btn" tool_tip="Me téléporter jusqu&apos;à mon domicile"/>
-		<location_input label="Emplacement" name="location_combo"/>
-		<search_combo_box label="Rechercher" name="search_combo_box" tool_tip="Rechercher">
-			<combo_editor label="Rechercher dans [SECOND_LIFE]" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life.">
-		<label name="favorites_bar_label" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life.">
-			Favoris
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="Afficher d&apos;avantage de Favoris"/>
-	</favorites_bar>
+	<layout_stack name="nvp_stack">
+		<layout_panel name="navigation_layout_panel">
+			<panel name="navigation_panel">
+				<pull_button name="back_btn" tool_tip="Revenir à l’emplacement précédent"/>
+				<pull_button name="forward_btn" tool_tip="Avancer d’un emplacement"/>
+				<button name="home_btn" tool_tip="Me téléporter jusqu’à mon domicile"/>
+				<location_input label="Endroit" name="location_combo"/>
+			</panel>
+		</layout_panel>
+		<layout_panel name="favorites_layout_panel">
+			<favorites_bar name="favorite" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life.">
+				<label name="favorites_bar_label" tool_tip="Faites glisser des repères ici pour un accès rapide à vos endroits favoris dans Second Life.">
+					Barre des Favoris
+				</label>
+				<more_button name="&gt;&gt;" tool_tip="Afficher d&apos;avantage de Favoris">
+					Plus â–¼
+				</more_button>
+			</favorites_bar>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..00bd6e81aeda3b49c076cb3bb0579e3b0e7025af
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+	<check_box label="Traduire le chat" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_notes.xml b/indra/newview/skins/default/xui/fr/panel_notes.xml
deleted file mode 100644
index 1b44bc4b73c7bc63ffc8b14e5a8cc4cb6a05a411..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/fr/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Notes/Perso" name="panel_notes">
-	<layout_stack name="layout">
-		<layout_panel name="notes_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<text name="status_message" value="Mes notes perso :"/>
-					<text name="status_message2" value="Autoriser cette personne à :"/>
-					<check_box label="Afficher mon statut en ligne" name="status_check"/>
-					<check_box label="Me situer sur la carte" name="map_check"/>
-					<check_box label="Modifier, supprimer ou prendre mes objets" name="objects_check"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-		<layout_panel name="notes_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="Devenir amis" name="add_friend" tool_tip="Proposer à ce résident de devenir votre ami"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="IM" name="im" tool_tip="Ouvrir une session IM"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="Appeler" name="call" tool_tip="Appeler ce résident"/>
-				</layout_panel>
-				<layout_panel name="show_on_map_btn_lp">
-					<button label="Carte" name="show_on_map_btn" tool_tip="Afficher le résident sur la carte"/>
-				</layout_panel>
-				<layout_panel name="teleport_btn_lp">
-					<button label="Téléporter" name="teleport" tool_tip="Proposer une téléportation"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_postcard_message.xml b/indra/newview/skins/default/xui/fr/panel_postcard_message.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0f8397cfb4e748675b4de577ccd7c2870f4c6d05
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_postcard_message.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_message">
+	<text name="to_label">
+		À :
+	</text>
+	<text name="name_label">
+		De :
+	</text>
+	<text name="subject_label">
+		Objet :
+	</text>
+	<line_editor label="Saisir ici votre objet" name="subject_form"/>
+	<text name="msg_label">
+		Message :
+	</text>
+	<text_editor name="msg_form">
+		Saisir ici votre message
+	</text_editor>
+	<button label="Annuler" name="cancel_btn"/>
+	<button label="Envoyer" name="send_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_postcard_settings.xml b/indra/newview/skins/default/xui/fr/panel_postcard_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6f4e9c23f9c25b8eee022c9b460d49d5dc5914fc
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_postcard_settings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_settings">
+	<combo_box label="Résolution" name="postcard_size_combo">
+		<combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/>
+		<combo_box.item label="640 x 480" name="640x480"/>
+		<combo_box.item label="800 x 600" name="800x600"/>
+		<combo_box.item label="1 024 x 768" name="1024x768"/>
+		<combo_box.item label="Personnalisée" name="Custom"/>
+	</combo_box>
+	<layout_stack name="postcard_image_params_ls">
+		<layout_panel name="postcard_image_size_lp">
+			<spinner label="Largeur" name="postcard_snapshot_width"/>
+			<spinner label="Hauteur" name="postcard_snapshot_height"/>
+			<check_box label="Conserver les proportions" name="postcard_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="postcard_image_format_quality_lp">
+			<slider label="Qualité de l&apos;image" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+</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 e9e6e6350fe759cef0115161879eb96073c350a0..76ed23745129825e9776fbb194c5647b926394e8 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
@@ -8,7 +8,7 @@
 		<radio_item label="Moyenne" name="radio2" value="1"/>
 		<radio_item label="Grande" name="radio3" value="2"/>
 	</radio_group>
-	<check_box initial_value="true" label="Jouer l&apos;animation clavier quand vous écrivez" name="play_typing_animation"/>
+	<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"/>
@@ -29,30 +29,5 @@
 	<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"/>
-	<check_box name="translate_chat_checkbox"/>
-	<text name="translate_chb_label">
-		Utiliser la traduction automatique lors des chats (fournie par Google)
-	</text>
-	<text name="translate_language_text">
-		Traduire le chat en :
-	</text>
-	<combo_box name="translate_language_combobox">
-		<combo_box.item label="Choix par défaut" name="System Default Language"/>
-		<combo_box.item label="English (Anglais)" name="English"/>
-		<combo_box.item label="Dansk (Danois)" name="Danish"/>
-		<combo_box.item label="Deutsch (Allemand)" name="German"/>
-		<combo_box.item label="Español (Espagnol)" name="Spanish"/>
-		<combo_box.item label="Français" name="French"/>
-		<combo_box.item label="Italiano (Italien)" name="Italian"/>
-		<combo_box.item label="Magyar (Hongrois)" name="Hungarian"/>
-		<combo_box.item label="Nederlands (Néerlandais)" name="Dutch"/>
-		<combo_box.item label="Polski (Polonais)" name="Polish"/>
-		<combo_box.item label="Português (Portugais)" name="Portugese"/>
-		<combo_box.item label="Русский (Russe)" name="Russian"/>
-		<combo_box.item label="Türkçe (Turc)" name="Turkish"/>
-		<combo_box.item label="Українська (Ukrainien)" name="Ukrainian"/>
-		<combo_box.item label="中文 (简体) (Chinois)" name="Chinese"/>
-		<combo_box.item label="日本語 (Japonais)" name="Japanese"/>
-		<combo_box.item label="한국어 (Coréen)" name="Korean"/>
-	</combo_box>
+	<button label="Traduction automatique" name="ok_btn"/>
 </panel>
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 2786798173134cb29bc14f785b047de8108624e3..66b84af3aa57168c81a6468b94cbde0052c2423e 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
@@ -11,10 +11,12 @@
 		<combo_box.item label="Español (Espagnol) - Bêta" name="Spanish"/>
 		<combo_box.item label="Français - Bêta" name="French"/>
 		<combo_box.item label="Italiano (Italien) - Bêta" name="Italian"/>
-		<combo_box.item label="Nederlands (Néerlandais) - Bêta" name="Dutch"/>
 		<combo_box.item label="Polski (Polonais) - Bêta" name="Polish"/>
 		<combo_box.item label="Português (Portugais) - Bêta" name="Portugese"/>
+		<combo_box.item label="Русский (Russe) - Bêta" name="Russian"/>
+		<combo_box.item label="Türkçe (Turc) - Bêta" name="Turkish"/>
 		<combo_box.item label="日本語 (Japonais) - Bêta" name="(Japanese)"/>
+		<combo_box.item label="正體中文 (Chinois traditionnel) - Bêta" name="Traditional Chinese"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(redémarrage requis)
@@ -49,7 +51,6 @@
 	<check_box label="Titres de groupe" name="show_all_title_checkbox1" tool_tip="Afficher les titres de groupe, comme Officier ou Membre."/>
 	<check_box label="Mettre mes amis en surbrillance" name="show_friends" tool_tip="Mettre en surbrillance l&apos;affichage des noms de vos amis."/>
 	<check_box label="Voir les noms d&apos;affichage" name="display_names_check" tool_tip="Cocher pour utiliser les noms d&apos;affichage dans les chats, les IM, l&apos;affichage des noms, etc."/>
-	<check_box label="Activer les astuces de l&apos;interface" name="viewer_hints_check"/>
 	<text name="inworld_typing_rg_label">
 		Appuyer sur les touches lettre :
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
index 5bf2ef72f557eb74148355dd9bd0d43bd2aea069..a738b2d43fd57508a48c989724cfbb96c783b94c 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
@@ -51,7 +51,7 @@
 			<combo_box.item label="Tous les objets et avatars" name="3"/>
 			<combo_box.item label="Tout" name="4"/>
 		</combo_box>
-		<slider label="Propriétés physiques de l&apos;avatar :" name="AvatarPhysicsDetail"/>
+		<slider label="Prop. physiques avatar :" name="AvatarPhysicsDetail"/>
 		<text name="AvatarPhysicsDetailText">
 			Faible
 		</text>
@@ -102,8 +102,8 @@
 			Rendu du terrain :
 		</text>
 		<radio_group name="TerrainDetailRadio">
-			<radio_item label="Bas" name="0"/>
-			<radio_item label="Haut" name="2"/>
+			<radio_item label="Faible" name="0"/>
+			<radio_item label="Élevé" name="2"/>
 		</radio_group>
 		--&gt;
 	</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_move.xml b/indra/newview/skins/default/xui/fr/panel_preferences_move.xml
index 5f1b206a39719f47b5d65712f69eb6f0f59097c3..94d7322b228687355a96f59fb224516750dd54b2 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_move.xml
@@ -7,18 +7,33 @@
 	</text>
 	<check_box label="Construire/Modifier" name="edit_camera_movement" tool_tip="Utiliser le positionnement automatique de la caméra lorsque vous entrez en mode de modification et le quittez."/>
 	<check_box label="Apparence" name="appearance_camera_movement" tool_tip="Utiliser le positionnement automatique de la caméra en mode de modification."/>
-	<check_box initial_value="true" label="Panneau latéral" name="appearance_sidebar_positioning" tool_tip="Utiliser le positionnement automatique de la caméra pour le panneau latéral."/>
+	<text name="keyboard_lbl">
+		Clavier :
+	</text>
+	<check_box label="Les touches de direction me font toujours me déplacer" name="arrow_keys_move_avatar_check"/>
+	<check_box label="Appuyer deux fois et maintenir enfoncé pour courir" name="tap_tap_hold_to_run"/>
+	<text name="mouse_lbl">
+		Souris :
+	</text>
 	<check_box label="Afficher en vue subjective" name="first_person_avatar_visible"/>
 	<text name=" Mouse Sensitivity">
 		Sensibilité de la souris en vue subjective :
 	</text>
 	<check_box label="Inverser" name="invert_mouse"/>
-	<check_box label="Les touches de direction me font toujours me déplacer" name="arrow_keys_move_avatar_check"/>
-	<check_box label="Appuyer deux fois et maintenir enfoncé pour courir" name="tap_tap_hold_to_run"/>
-	<check_box label="Double-cliquer pour :" name="double_click_chkbox"/>
-	<radio_group name="double_click_action">
-		<radio_item label="Téléportation" name="radio_teleport"/>
-		<radio_item label="Pilotage auto" name="radio_autopilot"/>
-	</radio_group>
+	<text name="single_click_action_lbl">
+		Clic simple sur le terrain :
+	</text>
+	<combo_box name="single_click_action_combo">
+		<combo_box.item label="Aucune action" name="0"/>
+		<combo_box.item label="Déplacement vers le clic" name="1"/>
+	</combo_box>
+	<text name="double_click_action_lbl">
+		Double-clic sur le terrain :
+	</text>
+	<combo_box name="double_click_action_combo">
+		<combo_box.item label="Aucune action" name="0"/>
+		<combo_box.item label="Déplacement vers le double clic" name="1"/>
+		<combo_box.item label="Téléportation vers le double clic" name="2"/>
+	</combo_box>
 	<button label="Autres accessoires" name="joystick_setup_button"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
index 202ec779f58cc7032c8b8f9cb270affadf900cdd..cf1a374da687d0b1574de3627be352fd82c4cba7 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml
@@ -3,9 +3,9 @@
 	<panel.string name="log_in_to_change">
 		se connecter pour changer
 	</panel.string>
-	<button label="Vider le cache" name="clear_cache" tool_tip="Effacer l&apos;image de connexion, le dernier lieu, l&apos;historique des téléportations et la texture du cache."/>
+	<button label="Vider l'historique" name="clear_cache" tool_tip="Effacer le cache de l&apos;image de connexion, du dernier lieu, de l&apos;historique des téléportations, Web et de texture."/>
 	<text name="cache_size_label_l">
-		(Endroits, images, web, historique des recherches)
+		(endroits, images, web, historique des recherches)
 	</text>
 	<check_box label="M&apos;afficher dans les résultats de recherche" name="online_searchresults"/>
 	<check_box label="Seuls mes amis et groupes voient quand je suis en ligne" name="online_visibility"/>
@@ -20,7 +20,7 @@
 	<check_box label="Inclure la date et l&apos;heure pour chaque ligne du journal de chat" name="show_timestamps_check_im"/>
 	<check_box label="Inclure la date dans le nom du fichier journal" name="logfile_name_datestamp"/>
 	<text name="log_path_desc">
-		Emplacement :
+		Emplacement journaux :
 	</text>
 	<line_editor left="308" name="log_path_string" right="-20"/>
 	<button label="Parcourir" label_selected="Parcourir" name="log_path_button" width="150"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
index 82780c27c5980765012ec4b91345658ef000b7c3..83303950dcdea36d1cfdd364df93b90493c1aac6 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
@@ -15,7 +15,7 @@
 		Web :
 	</text>
 	<radio_group name="use_external_browser">
-		<radio_item label="Utiliser mon navigateur (IE, Firefox, Safari)" name="external" tool_tip="Utiliser le navigateur web système par défaut pour l&apos;aide, les liens etc. Non recommandé en mode plein écran." value="1"/>
+		<radio_item label="Utiliser mon navigateur (IE, Firefox, Safari)" name="external" tool_tip="Utiliser le navigateur web système par défaut pour l&apos;aide, les liens etc. Non recommandé en mode plein écran." value="true"/>
 		<radio_item label="Utiliser le navigateur intégré" name="internal" tool_tip="Utilisez le navigateur intégré pour obtenir de l&apos;aide, ouvrir des liens, etc. Ce navigateur s&apos;ouvre dans [APP_NAME]." value=""/>
 	</radio_group>
 	<check_box initial_value="true" label="Activer les plugins" name="browser_plugins_enabled"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
index deaec2e14fa7f46962e8f724aedb8d856e53c52d..37eb6bbeb03a735c71b1423c526519b4d706af31 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml
@@ -17,9 +17,9 @@
 	<check_box label="Activé" name="enable_media"/>
 	<slider label="Chat vocal" name="Voice Volume"/>
 	<check_box label="Activé" name="enable_voice_check"/>
-	<check_box label="Autoriser la lecture automatique du média" name="media_auto_play_btn" tool_tip="Cochez pour autoriser la lecture automatique du média" value="true"/>
-	<check_box label="Lecture du média aux autres avatars" name="media_show_on_others_btn" tool_tip="Décochez pour masquer le média aux autres avatars près de vous" value="true"/>
-	<check_box label="Lire les sons des gestes" name="gesture_audio_play_btn" tool_tip="Cochez cette case pour entendre les sons associés aux gestes." value="true"/>
+	<check_box label="Autoriser la lecture automatique du média" name="media_auto_play_btn" tool_tip="Cocher pour autoriser la lecture automatique du média." value="true"/>
+	<check_box label="Lire le média attaché aux autres avatars" name="media_show_on_others_btn" tool_tip="Décocher pour masquer le média attaché aux autres avatars près de vous." value="true"/>
+	<check_box label="Lire les sons des gestes" name="gesture_audio_play_btn" tool_tip="Cocher cette case pour entendre les sons associés aux gestes." value="true"/>
 	<text name="voice_chat_settings">
 		Paramètres du chat vocal
 	</text>
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
index f16fcebd023ee3a050e03cfde787003aa3786a99..ad744b77608cf37edf37768e7a8290aa06301d1f 100644
--- a/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml
+++ b/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml
@@ -13,10 +13,10 @@
 	</layout_stack>
 	<layout_stack name="media_controls">
 		<layout_panel name="back">
-			<button name="back_btn" tool_tip="Naviguer en arrière"/>
+			<button name="back_btn" tool_tip="Précédente"/>
 		</layout_panel>
 		<layout_panel name="fwd">
-			<button name="fwd_btn" tool_tip="Naviguer vers l&apos;avant"/>
+			<button name="fwd_btn" tool_tip="Suivante"/>
 		</layout_panel>
 		<layout_panel name="home">
 			<button name="home_btn" tool_tip="Page d&apos;accueil"/>
@@ -34,7 +34,7 @@
 			<button name="play_btn" tool_tip="Lire le média"/>
 		</layout_panel>
 		<layout_panel name="pause">
-			<button name="pause_btn" tool_tip="Pauser le média"/>
+			<button name="pause_btn" tool_tip="Mettre le média sur pause"/>
 		</layout_panel>
 		<layout_panel name="media_address">
 			<line_editor name="media_address_url" tool_tip="URL du média"/>
@@ -48,7 +48,7 @@
 			</layout_stack>
 		</layout_panel>
 		<layout_panel name="media_play_position">
-			<slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Progrès de la lecture du film"/>
+			<slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Progression de la lecture du film"/>
 		</layout_panel>
 		<layout_panel name="skip_back">
 			<button name="skip_back_btn" tool_tip="Reculer"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_profile.xml b/indra/newview/skins/default/xui/fr/panel_profile.xml
deleted file mode 100644
index 9aa6fe97a1e7b1c4c09edb5345467682b0781337..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/fr/panel_profile.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
-	<string name="CaptionTextAcctInfo">
-		[ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
-	</string>
-	<string name="payment_update_link_url">
-		http://www.secondlife.com/account/billing.php?lang=fr-FR
-	</string>
-	<string name="partner_edit_link_url">
-		http://www.secondlife.com/account/partners.php?lang=fr
-	</string>
-	<string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=fr-FR"/>
-	<string name="no_partner_text" value="Aucun"/>
-	<string name="no_group_text" value="Aucun"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<panel name="second_life_image_panel">
-						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
-					</panel>
-					<panel name="first_life_image_panel">
-						<text name="title_rw_descr_text" value="Vie réelle :"/>
-					</panel>
-					<text name="title_member_text" value="Résident depuis :"/>
-					<text name="title_acc_status_text" value="Statut du compte :"/>
-					<text_editor name="acc_status_text">
-						Résident. Aucune info de paiement enregistrée.
-              Linden.
-					</text_editor>
-					<text name="title_partner_text" value="Partenaire :"/>
-					<panel name="partner_data_panel">
-						<text initial_value="(récupération en cours)" name="partner_text"/>
-					</panel>
-					<text name="title_groups_text" value="Groupes :"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-	<layout_stack name="layout_verb_buttons">
-		<layout_panel name="profile_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="Devenir amis" name="add_friend" tool_tip="Proposer à ce résident de devenir votre ami"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="IM" name="im" tool_tip="Ouvrir une session IM"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="Appeler" name="call" tool_tip="Appeler ce résident"/>
-				</layout_panel>
-				<layout_panel name="chat_btn_lp">
-					<button label="Téléporter" name="teleport" tool_tip="Proposer une téléportation"/>
-				</layout_panel>
-				<layout_panel name="overflow_btn_lp">
-					<menu_button label="▼" name="overflow_btn" tool_tip="Payer le résident ou partager l&apos;inventaire avec lui"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="profile_me_buttons_panel">
-			<button label="Modifier le profil" name="edit_profile_btn" tool_tip="Modifier vos informations personnelles"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_profile_view.xml b/indra/newview/skins/default/xui/fr/panel_profile_view.xml
deleted file mode 100644
index 76ba44e8990a492d337af9bb9530feb447eef2e9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/fr/panel_profile_view.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
-	<string name="status_online">
-		En ligne
-	</string>
-	<string name="status_offline">
-		Hors ligne
-	</string>
-	<text name="display_name_label" value="Nom d&apos;affichage :"/>
-	<text name="solo_username_label" value="Nom d&apos;utilisateur :"/>
-	<text name="status" value="En ligne"/>
-	<text name="user_name_small" value="Jack oh look at me this is a super duper long name"/>
-	<button name="copy_to_clipboard" tool_tip="Copier dans le presse-papiers"/>
-	<text name="user_label" value="Nom d&apos;utilisateur :"/>
-	<tab_container name="tabs">
-		<panel label="PROFIL" name="panel_profile"/>
-		<panel label="FAVORIS" name="panel_picks"/>
-		<panel label="NOTES/PERSO" name="panel_notes"/>
-	</tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_region_debug.xml b/indra/newview/skins/default/xui/fr/panel_region_debug.xml
index cb4a74e1424321c22341be752ea1cdb31817a9ff..733c3f9a22cfb716f9cb1a36c46194c5ea880e7d 100644
--- a/indra/newview/skins/default/xui/fr/panel_region_debug.xml
+++ b/indra/newview/skins/default/xui/fr/panel_region_debug.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Débugger" name="Debug">
+<panel label="Débogage" name="Debug">
 	<text name="region_text_lbl">
 		Région :
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4454d2475ef1e8a8b165927930c66c2897195c0d
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_snapshot_inventory.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_inventory">
+	<text name="title">
+		Enregistrer dans mon inventaire
+	</text>
+	<text name="hint_lbl">
+		L&apos;enregistrement d&apos;une image dans votre inventaire coûte [UPLOAD_COST] L$. Pour enregistrer votre image sous forme de texture, sélectionnez l&apos;un des formats carrés.
+	</text>
+	<combo_box label="Résolution" name="texture_size_combo">
+		<combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/>
+		<combo_box.item label="Petite (128 x 128)" name="Small(128x128)"/>
+		<combo_box.item label="Moyenne (256 x 256)" name="Medium(256x256)"/>
+		<combo_box.item label="Grande (512 x 512)" name="Large(512x512)"/>
+		<combo_box.item label="Personnalisée" name="Custom"/>
+	</combo_box>
+	<spinner label="Largeur" name="inventory_snapshot_width"/>
+	<spinner label="Hauteur" name="inventory_snapshot_height"/>
+	<check_box label="Conserver les proportions" name="inventory_keep_aspect_check"/>
+	<button label="Annuler" name="cancel_btn"/>
+	<button label="Enregistrer" name="save_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_local.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_local.xml
new file mode 100644
index 0000000000000000000000000000000000000000..41264521fd7c0f096750ae17c0e27ecf2f79a93d
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_snapshot_local.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_local">
+	<text name="title">
+		Enregistrer sur mon ordinateur
+	</text>
+	<combo_box label="Résolution" name="local_size_combo">
+		<combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/>
+		<combo_box.item label="320 x 240" name="320x240"/>
+		<combo_box.item label="640 x 480" name="640x480"/>
+		<combo_box.item label="800 x 600" name="800x600"/>
+		<combo_box.item label="1 024 x 768" name="1024x768"/>
+		<combo_box.item label="1 280 x 1 024" name="1280x1024"/>
+		<combo_box.item label="1 600 x 1 200" name="1600x1200"/>
+		<combo_box.item label="Personnalisée" name="Custom"/>
+	</combo_box>
+	<layout_stack name="local_image_params_ls">
+		<layout_panel name="local_image_size_lp">
+			<spinner label="Largeur" name="local_snapshot_width"/>
+			<spinner label="Hauteur" name="local_snapshot_height"/>
+			<check_box label="Conserver les proportions" name="local_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="local_image_format_quality_lp">
+			<combo_box label="Format" name="local_format_combo">
+				<combo_box.item label="PNG (sans perte)" name="PNG"/>
+				<combo_box.item label="JPEG" name="JPEG"/>
+				<combo_box.item label="BMP (sans perte)" name="BMP"/>
+			</combo_box>
+			<slider label="Qualité de l&apos;image" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+	<button label="Annuler" name="cancel_btn"/>
+	<flyout_button label="Enregistrer" name="save_btn" tool_tip="Enregistrer l&apos;image dans un fichier.">
+		<flyout_button.item label="Enregistrer" name="save_item"/>
+		<flyout_button.item label="Enregistrer sous..." name="saveas_item"/>
+	</flyout_button>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml
new file mode 100644
index 0000000000000000000000000000000000000000..db3fcbeac9cf2a31d2548a1fd68e64a86d686ad9
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_snapshot_options.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_options">
+	<button label="Publier sur le flux de mon profil" name="save_to_profile_btn"/>
+	<button label="Envoyer par e-mail" name="save_to_email_btn"/>
+	<button label="Enregistrer dans mon inventaire ([AMOUNT] L$)" name="save_to_inventory_btn"/>
+	<button label="Enregistrer sur mon ordinateur" name="save_to_computer_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_postcard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bb23b5285078a73d67ad0ad5366cff3edecdd1b4
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_snapshot_postcard.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_postcard">
+	<string name="default_subject">
+		Carte postale de [SECOND_LIFE].
+	</string>
+	<string name="default_message">
+		Ouvrez-moi !
+	</string>
+	<string name="upload_message">
+		Envoi en cours...
+	</string>
+	<text name="title">
+		Envoyer par e-mail
+	</text>
+	<button label="Message" name="message_btn"/>
+	<button label="Paramètres" name="settings_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..427ffe211316b8a86f204ac39d677386416858b3
--- /dev/null
+++ b/indra/newview/skins/default/xui/fr/panel_snapshot_profile.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_profile">
+	<text name="title">
+		Publier sur le flux de mon profil
+	</text>
+	<combo_box label="Résolution" name="profile_size_combo">
+		<combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/>
+		<combo_box.item label="640 x 480" name="640x480"/>
+		<combo_box.item label="800 x 600" name="800x600"/>
+		<combo_box.item label="1 024 x 768" name="1024x768"/>
+		<combo_box.item label="Personnalisée" name="Custom"/>
+	</combo_box>
+	<layout_stack name="profile_image_params_ls">
+		<layout_panel name="profile_image_size_lp">
+			<spinner label="Largeur" name="profile_snapshot_width"/>
+			<spinner label="Hauteur" name="profile_snapshot_height"/>
+			<check_box label="Conserver les proportions" name="profile_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="profile_image_metadata_lp">
+			<text name="caption_label">
+				Légende :
+			</text>
+			<check_box initial_value="true" label="Inclure l&apos;endroit" name="add_location_cb"/>
+		</layout_panel>
+	</layout_stack>
+	<button label="Annuler" name="cancel_btn"/>
+	<button label="Publier" name="post_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_status_bar.xml b/indra/newview/skins/default/xui/fr/panel_status_bar.xml
index 2dd5c06e4d307acc1a6daf0ee853a9ab60ebec1f..c0d59a3182d034c3ae276c666e382ee78bf8831e 100644
--- a/indra/newview/skins/default/xui/fr/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/fr/panel_status_bar.xml
@@ -17,15 +17,12 @@
 	</panel.string>
 	<panel name="balance_bg">
 		<text name="balance" tool_tip="Cliquer sur ce bouton pour actualiser votre solde en L$." value="20 L$"/>
-		<button label="ACHETER L$" name="buyL" tool_tip="Cliquer pour acheter plus de L$"/>
+		<button label="Acheter L$" name="buyL" tool_tip="Cliquer pour acheter plus de L$."/>
+		<button label="Achats" name="goShop" tool_tip="Ouvrir la Place du marché Second Life." width="75"/>
 	</panel>
-	<combo_box name="mode_combo" tool_tip="Sélectionnez un mode. Pour une exploration facile et rapide avec chat, choisissez Basique. Pour accéder à plus de fonctionnalités, choisissez Avancé.">
-		<combo_box.item label="Mode basique" name="Basic"/>
-		<combo_box.item label="Mode avancé" name="Advanced"/>
-	</combo_box>
 	<text name="TimeText" tool_tip="Heure actuelle (Pacifique)">
 		00h00 PST
 	</text>
-	<button name="media_toggle_btn" tool_tip="Arrêter tous les médias (musique, vidéo, pages web)"/>
-	<button name="volume_btn" tool_tip="Contrôle du volume global"/>
+	<button name="media_toggle_btn" tool_tip="Arrêter tous les médias (musique, vidéo, pages web)."/>
+	<button name="volume_btn" tool_tip="Régler le volume global."/>
 </panel>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 7d349f27a623d6336208bd0b0513b2d802f07732..d959a965650fded7f9ca324d9d84cca04ce13dee 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -1214,7 +1214,7 @@ Veuillez réessayer de vous connecter dans une minute.
 		Vous n&apos;avez pas de copie de cette texture dans votre inventaire
 	</string>
 	<string name="InventoryInboxNoItems">
-		Ici seront livrés les articles achetés sur la Place du marché.
+		Lorsque vous achetez ou recevez un article, il s&apos;affiche ici. Vous pouvez alors le faire glisser vers un dossier de votre inventaire ou le supprimer si vous ne souhaitez pas le conserver.
 	</string>
 	<string name="MarketplaceURL">
 		http://marketplace.[DOMAIN_NAME]
@@ -1276,6 +1276,9 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="Marketplace Error Internal Import">
 		Erreur : un problème est survenu concernant cet article. Veuillez réessayer ultérieurement.
 	</string>
+	<string name="Open landmarks">
+		Ouvrir les repères
+	</string>
 	<string name="no_transfer" value=" (pas de transfert)"/>
 	<string name="no_modify" value=" (pas de modification)"/>
 	<string name="no_copy" value=" (pas de copie)"/>
@@ -1409,6 +1412,9 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="no_attachments">
 		Aucun élément attaché porté
 	</string>
+	<string name="Attachments remain">
+		Éléments attachés ([COUNT] emplacements restants)
+	</string>
 	<string name="Buy">
 		Acheter
 	</string>
@@ -1535,6 +1541,12 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="Right Pec">
 		Pectoral droit
 	</string>
+	<string name="Neck">
+		Cou
+	</string>
+	<string name="Avatar Center">
+		Centre de l&apos;avatar
+	</string>
 	<string name="Invalid Attachment">
 		Point d&apos;attache non valide
 	</string>
@@ -2510,7 +2522,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		Effet max.
 	</string>
 	<string name="Breast Physics InOut Spring">
-		Vibration
+		Élasticité
 	</string>
 	<string name="Breast Physics InOut Gain">
 		Amplification
@@ -2522,7 +2534,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		Effet max.
 	</string>
 	<string name="Breast Physics UpDown Spring">
-		Vibration
+		Élasticité
 	</string>
 	<string name="Breast Physics UpDown Gain">
 		Amplification
@@ -2534,7 +2546,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		Effet max.
 	</string>
 	<string name="Breast Physics LeftRight Spring">
-		Vibration
+		Élasticité
 	</string>
 	<string name="Breast Physics LeftRight Gain">
 		Amplification
@@ -2558,7 +2570,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		Effet max.
 	</string>
 	<string name="Belly Physics UpDown Spring">
-		Vibration
+		Élasticité
 	</string>
 	<string name="Belly Physics UpDown Gain">
 		Amplification
@@ -2582,7 +2594,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		Effet max.
 	</string>
 	<string name="Butt Physics UpDown Spring">
-		Vibration
+		Élasticité
 	</string>
 	<string name="Butt Physics UpDown Gain">
 		Amplification
@@ -2594,7 +2606,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 		Effet max.
 	</string>
 	<string name="Butt Physics LeftRight Spring">
-		Vibration
+		Élasticité
 	</string>
 	<string name="Butt Physics LeftRight Gain">
 		Amplification
@@ -4027,6 +4039,18 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE].
 	<string name="you_paid_ldollars_no_name">
 		Vous avez payé à [AMOUNT] L$ [REASON].
 	</string>
+	<string name="you_paid_failure_ldollars">
+		Votre paiement de [AMOUNT] L$ à [NAME] [REASON] a échoué.
+	</string>
+	<string name="you_paid_failure_ldollars_no_info">
+		Votre paiement de [AMOUNT] L$ a échoué.
+	</string>
+	<string name="you_paid_failure_ldollars_no_reason">
+		Votre paiement de [AMOUNT] L$ à [NAME] a échoué.
+	</string>
+	<string name="you_paid_failure_ldollars_no_name">
+		Votre paiement de [AMOUNT] L$ [REASON] a échoué.
+	</string>
 	<string name="for item">
 		pour l&apos;article suivant : [ITEM]
 	</string>
@@ -4254,7 +4278,7 @@ de l&apos;infraction signalée
 	<string name="Female - Wow">
 		Femme - Ouah !
 	</string>
-	<string name="/bow1">
+	<string name="/bow">
 		/s&apos;incliner
 	</string>
 	<string name="/clap">
@@ -4437,6 +4461,12 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
 	<string name="ExternalEditorFailedToRun">
 		Échec d&apos;exécution de l&apos;éditeur externe.
 	</string>
+	<string name="TranslationFailed">
+		Échec de traduction : [REASON]
+	</string>
+	<string name="TranslationResponseParseError">
+		Erreur lors de l&apos;analyse de la réponse relative à la traduction.
+	</string>
 	<string name="Esc">
 		Échap
 	</string>
@@ -4767,4 +4797,196 @@ Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
 	<string name="ParticleHiding">
 		Masquage des particules
 	</string>
+	<string name="Command_AboutLand_Label">
+		À propos du terrain
+	</string>
+	<string name="Command_Appearance_Label">
+		Apparence
+	</string>
+	<string name="Command_Avatar_Label">
+		Avatar
+	</string>
+	<string name="Command_Build_Label">
+		Construire
+	</string>
+	<string name="Command_Chat_Label">
+		Chat
+	</string>
+	<string name="Command_Compass_Label">
+		Boussole
+	</string>
+	<string name="Command_Destinations_Label">
+		Destinations
+	</string>
+	<string name="Command_Gestures_Label">
+		Gestes
+	</string>
+	<string name="Command_HowTo_Label">
+		Aide rapide
+	</string>
+	<string name="Command_Inventory_Label">
+		Inventaire
+	</string>
+	<string name="Command_Map_Label">
+		Carte
+	</string>
+	<string name="Command_Marketplace_Label">
+		Place du marché
+	</string>
+	<string name="Command_MiniMap_Label">
+		Mini-carte
+	</string>
+	<string name="Command_Move_Label">
+		Marcher / Courir / Voler
+	</string>
+	<string name="Command_People_Label">
+		Personnes
+	</string>
+	<string name="Command_Picks_Label">
+		Favoris
+	</string>
+	<string name="Command_Places_Label">
+		Lieux
+	</string>
+	<string name="Command_Preferences_Label">
+		Préférences
+	</string>
+	<string name="Command_Profile_Label">
+		Profil
+	</string>
+	<string name="Command_Search_Label">
+		Recherche
+	</string>
+	<string name="Command_Snapshot_Label">
+		Photo
+	</string>
+	<string name="Command_Speak_Label">
+		Parler
+	</string>
+	<string name="Command_View_Label">
+		Paramètres de la caméra
+	</string>
+	<string name="Command_Voice_Label">
+		Paramètres vocaux
+	</string>
+	<string name="Command_AboutLand_Tooltip">
+		Information sur le terrain que vous visitez
+	</string>
+	<string name="Command_Appearance_Tooltip">
+		Modifier votre avatar
+	</string>
+	<string name="Command_Avatar_Tooltip">
+		Choisir un avatar complet
+	</string>
+	<string name="Command_Build_Tooltip">
+		Construction d&apos;objets et remodelage du terrain
+	</string>
+	<string name="Command_Chat_Tooltip">
+		Parler aux personnes près de vous par chat écrit
+	</string>
+	<string name="Command_Compass_Tooltip">
+		Boussole
+	</string>
+	<string name="Command_Destinations_Tooltip">
+		Destinations intéressantes
+	</string>
+	<string name="Command_Gestures_Tooltip">
+		Gestes de votre avatar
+	</string>
+	<string name="Command_HowTo_Tooltip">
+		Comment effectuer les opérations courantes
+	</string>
+	<string name="Command_Inventory_Tooltip">
+		Afficher et utiliser vos possessions
+	</string>
+	<string name="Command_Map_Tooltip">
+		Carte du monde
+	</string>
+	<string name="Command_Marketplace_Tooltip">
+		Faire du shopping
+	</string>
+	<string name="Command_MiniMap_Tooltip">
+		Afficher les personnes près de vous
+	</string>
+	<string name="Command_Move_Tooltip">
+		Faire bouger votre avatar
+	</string>
+	<string name="Command_People_Tooltip">
+		Amis, groupes et personnes près de vous
+	</string>
+	<string name="Command_Picks_Tooltip">
+		Lieux à afficher comme favoris dans votre profil
+	</string>
+	<string name="Command_Places_Tooltip">
+		Lieux enregistrés
+	</string>
+	<string name="Command_Preferences_Tooltip">
+		Préférences
+	</string>
+	<string name="Command_Profile_Tooltip">
+		Modifier ou afficher votre profil
+	</string>
+	<string name="Command_Search_Tooltip">
+		Trouver des lieux, personnes, événements
+	</string>
+	<string name="Command_Snapshot_Tooltip">
+		Prendre une photo
+	</string>
+	<string name="Command_Speak_Tooltip">
+		Parler aux personnes près de vous en utilisant votre micro
+	</string>
+	<string name="Command_View_Tooltip">
+		Changer l&apos;angle de la caméra
+	</string>
+	<string name="Command_Voice_Tooltip">
+		Commandes de réglage du volume des appels et des personnes près de vous dans Second Life.
+	</string>
+	<string name="Toolbar_Bottom_Tooltip">
+		actuellement dans la barre d&apos;outils du bas
+	</string>
+	<string name="Toolbar_Left_Tooltip">
+		actuellement dans la barre d&apos;outils de gauche
+	</string>
+	<string name="Toolbar_Right_Tooltip">
+		actuellement dans la barre d&apos;outils de droite
+	</string>
+	<string name="Retain%">
+		Garder%
+	</string>
+	<string name="Detail">
+		Détail
+	</string>
+	<string name="Better Detail">
+		Meilleur détail
+	</string>
+	<string name="Surface">
+		Surface
+	</string>
+	<string name="Solid">
+		Solide
+	</string>
+	<string name="Wrap">
+		Wrap
+	</string>
+	<string name="Preview">
+		Aperçu
+	</string>
+	<string name="Normal">
+		Normal
+	</string>
+	<string name="snapshot_quality_very_low">
+		Très faible
+	</string>
+	<string name="snapshot_quality_low">
+		Faible
+	</string>
+	<string name="snapshot_quality_medium">
+		Moyenne
+	</string>
+	<string name="snapshot_quality_high">
+		Élevée
+	</string>
+	<string name="snapshot_quality_very_high">
+		Très élevée
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/fr/teleport_strings.xml b/indra/newview/skins/default/xui/fr/teleport_strings.xml
index 7c291c0984ca3e63be52100568a9e0ca13e79334..d0c74ff353013fab606fc4c08193abe0d91bda50 100644
--- a/indra/newview/skins/default/xui/fr/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/fr/teleport_strings.xml
@@ -19,6 +19,10 @@ Si vous ne parvenez toujours pas à être téléporté, déconnectez-vous puis r
 		<message name="timeout_tport">
 			Désolé, la connexion vers votre lieu de téléportation n&apos;a pas abouti.
 Veuillez réessayer dans un moment.
+		</message>
+		<message name="NoHelpIslandTP">
+			Vous ne pouvez pas vous téléporter à nouveau vers Welcome Island.
+Pour recommencer le didacticiel, accédez à Welcome Island Public.
 		</message>
 		<message name="noaccess_tport">
 			Désolé, vous n&apos;avez pas accès à cette destination.
diff --git a/indra/newview/skins/default/xui/it/floater_about.xml b/indra/newview/skins/default/xui/it/floater_about.xml
index db4dbe02e21439624781cc0434601998cb344f92..39114b7bf73d2cf3874b3d940f17a2a0bcdf1985 100644
--- a/indra/newview/skins/default/xui/it/floater_about.xml
+++ b/indra/newview/skins/default/xui/it/floater_about.xml
@@ -8,9 +8,9 @@
 		Generato con [COMPILER] versione [COMPILER_VERSION]
 	</floater.string>
 	<floater.string name="AboutPosition">
-		Tu sei  [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] located at &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
+		Tu sei  [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] che si trova a &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		CPU: [CPU]
@@ -37,6 +37,9 @@ Versione Server voice: [VOICE_VERSION]
 	<floater.string name="AboutTraffic">
 		Pacchetti perduti: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) Informazioni
 	</floater.string>
+	<floater.string name="ErrorFetchingServerReleaseNotesURL">
+		Errore nel recupero URL note rilascio versione
+	</floater.string>
 	<tab_container name="about_tab">
 		<panel label="Informazioni" name="support_panel">
 			<button label="Copia negli appunti" name="copy_btn"/>
@@ -64,32 +67,34 @@ Versione Server voice: [VOICE_VERSION]
 		<panel label="Licenze" name="licenses_panel">
 			<text_editor name="credits_editor">
 				3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
-APR Copyright (C) 2000-2004 The Apache Software Foundation
-Collada DOM Copyright 2005 Sony Computer Entertainment Inc.
-cURL Copyright (C) 1996-2002, 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, The FreeType Project (www.freetype.org).
-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) 2001, Xiphophorus
-OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
-PCRE Copyright (c) 1997-2008 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-2002 Jean-loup Gailly and Mark Adler.
-google-perftools Copyright (c) 2005, Google Inc.
+        APR Copyright (C) 2000-2004 The Apache Software Foundation
+        Collada DOM Copyright 2005 Sony Computer Entertainment Inc.
+        cURL Copyright (C) 1996-2002, 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, The FreeType Project (www.freetype.org).
+        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) 2001, Xiphophorus
+        OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
+        PCRE Copyright (c) 1997-2008 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-2002 Jean-loup Gailly and Mark Adler.
+        google-perftools Copyright (c) 2005, Google Inc.
+
+        Il Viewer Second Life utilizza Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (e licenziatari). Tutti i diritti riservati. Per informazioni dettagliate, vedere www.havok.com.
 
-Il Viewer Second Life utilizza Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (e licenziatari). Tutti i diritti riservati. Per informazioni dettagliate, vedere www.havok.com.
+        Questo software contiene codice sorgente fornito da NVIDIA Corporation.
 
-Tutti i diritti riservati.  Per informazioni dettagliate, vedere licenses.txt.
+        Tutti i diritti riservati.  Per informazioni dettagliate, vedere licenses.txt.
 
-Codifica audio chat vocale: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
+        Codifica audio chat vocale: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
 			</text_editor>
 		</panel>
 	</tab_container>
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 cf0f8f2f6f66d35b9f18b688d84290dce1e50a38..528cf185fcfd5ba2ce93051b4e07227e531b7754 100644
--- a/indra/newview/skins/default/xui/it/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/it/floater_about_land.xml
@@ -133,7 +133,7 @@ Vai al menu Mondo &gt; Informazioni sul terreno oppure seleziona un altro appezz
 				Traffico:
 			</text>
 			<text name="DwellText" width="140">
-				0
+				Caricamento in corso...
 			</text>
 			<button label="Acquista il terreno..." label_selected="Acquista il terreno..." left="130" name="Buy Land..." width="125"/>
 			<button label="Vendita Linden" name="Linden Sale..." tool_tip="La terra deve essere di proprietà, con contenuto impostato, e non già messa all&apos;asta."/>
@@ -218,19 +218,19 @@ o suddivisa.
 				Fattore bonus degli oggetti della regione: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				Uso delle primitive:
+				Capacità regione:
 			</text>
 			<text name="objects_available">
 				[COUNT] dei [MAX] ([AVAILABLE] dsponibili)
 			</text>
 			<text name="Primitives parcel supports:">
-				Oggetti che il terreno supporta:
+				Capacità lotto di terreno:
 			</text>
 			<text name="object_contrib_text">
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
-				Oggetti sul terreno:
+				Impatto lotto di terreno:
 			</text>
 			<text name="total_objects_text">
 				[COUNT]
@@ -314,13 +314,15 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
 				Nessuna spinta (Impostazione regionale)
 			</panel.string>
 			<panel.string name="see_avs_text">
-				Vedi i residenti in questo lotto e chatta con loro
+				Gli avatar in altri lotti possono vedere
 			</panel.string>
 			<text name="allow_label">
 				Permetti ad altri residenti di:
 			</text>
-			<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_label0">
+				Vola:
+			</text>
+			<check_box label="Tutti" 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:
 			</text>
@@ -336,9 +338,6 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
 			</text>
 			<check_box label="Tutti i residenti" name="check other scripts"/>
 			<check_box label="Gruppo" name="check group scripts"/>
-			<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 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="Consenti che il lotto sia visto nei risultati di ricerca"/>
@@ -379,9 +378,9 @@ Solamente terreni più grandi possono essere abilitati nella ricerca.
 			</text>
 			<texture_picker label="" name="snapshot_ctrl" tool_tip="Clicca per scegliere una immagine"/>
 			<text name="allow_label5">
-				Permetti ai residenti in altri lotti di:
+				e chattare con avatar in questo lotto
 			</text>
-			<check_box label="Vedi avatar" name="SeeAvatarsCheck" tool_tip="Consente ai residenti in altri lotti di vedere i residenti in questo lotto e chattare con loro, e ti consente di vederli e chattare con loro."/>
+			<check_box label="Vedi avatar" name="SeeAvatarsCheck" tool_tip="Consente ad avatar in altri lotti di vedere e chattare con avatar in questo lotto e viceversa."/>
 			<text name="landing_point">
 				Punto di atterraggio: [LANDING]
 			</text>
diff --git a/indra/newview/skins/default/xui/it/floater_avatar.xml b/indra/newview/skins/default/xui/it/floater_avatar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d7445cfb2bf4f1302f1197157f3aeb08c2096b31
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="SELEZIONA UN AVATAR"/>
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 635b56d37a2ec2c028fe52ff0c6ebd06b07687b9..743969f557147272de279dfea872257c402f775e 100644
--- a/indra/newview/skins/default/xui/it/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/it/floater_buy_currency.xml
@@ -46,7 +46,7 @@
 		[AMT]L$
 	</text>
 	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+		[http://www.secondlife.com/my/account/payment_method_management.php metodo di pagamento] | [http://www.secondlife.com/my/account/currency.php valuta]
 	</text>
 	<text name="exchange_rate_note">
 		Riscrivi l&apos;importo per vedere l&apos;ultimo tasso al cambio.
diff --git a/indra/newview/skins/default/xui/it/floater_camera.xml b/indra/newview/skins/default/xui/it/floater_camera.xml
index 3fdf4f48a22ae314c1a8182032fb74e0c512e1f0..be03857bc9659a1fd6e8932caba814d32a0a348b 100644
--- a/indra/newview/skins/default/xui/it/floater_camera.xml
+++ b/indra/newview/skins/default/xui/it/floater_camera.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
+<floater name="camera_floater" title="CONTROLLI FOTOCAMERA">
 	<floater.string name="rotate_tooltip">
 		Ruota la telecamera Intorno all&apos;Inquadratura
 	</floater.string>
@@ -9,15 +9,6 @@
 	<floater.string name="move_tooltip">
 		Muovi la telecamera su e giù e a sinistra e destra
 	</floater.string>
-	<floater.string name="camera_modes_title">
-		Modalità della fotocamera
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		Ruota visuale - Ingrandisci - Panoramica
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		Visuali predefinite
-	</floater.string>
 	<floater.string name="free_mode_title">
 		Vedi oggetto
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/it/floater_chat_bar.xml b/indra/newview/skins/default/xui/it/floater_chat_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..94c85b50c812bdef345c99adf8e8da0f6d2e68c0
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" 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"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_destinations.xml b/indra/newview/skins/default/xui/it/floater_destinations.xml
new file mode 100644
index 0000000000000000000000000000000000000000..242403e4316b79878e9475d2345df81227462974
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="DESTINAZIONI"/>
diff --git a/indra/newview/skins/default/xui/it/floater_fast_timers.xml b/indra/newview/skins/default/xui/it/floater_fast_timers.xml
new file mode 100644
index 0000000000000000000000000000000000000000..52ab6b0c3d6c13b6f49d3986cc066e0e2244d551
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+	<string name="pause">
+		Pausa
+	</string>
+	<string name="run">
+		Correre
+	</string>
+	<button label="Pausa" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_hardware_settings.xml b/indra/newview/skins/default/xui/it/floater_hardware_settings.xml
index 561f8dbf347cc4e032ebb35ed6da966a04c497fc..5d3ae04a4d847649efe5792f3d2f015145d13e3a 100644
--- a/indra/newview/skins/default/xui/it/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/it/floater_hardware_settings.xml
@@ -4,7 +4,7 @@
 		Filtraggio:
 	</text>
 	<check_box label="Filtraggio Anisotropico (rallenta se attivato)" name="ani"/>
-	<text name="Antialiasing:">
+	<text name="antialiasing label">
 		Antialiasing:
 	</text>
 	<combo_box label="Antialiasing" name="fsaa" width="94">
diff --git a/indra/newview/skins/default/xui/it/floater_how_to.xml b/indra/newview/skins/default/xui/it/floater_how_to.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8f0e2105712c2a4b9ffdf29704870d035596f664
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="ISTRUZIONI"/>
diff --git a/indra/newview/skins/default/xui/it/floater_map.xml b/indra/newview/skins/default/xui/it/floater_map.xml
index bf19ba6674deefe5135e2c75b6727f66440acf0d..5e4e4abca4826ad0b8d85919a6ae3ac9c1cd4a51 100644
--- a/indra/newview/skins/default/xui/it/floater_map.xml
+++ b/indra/newview/skins/default/xui/it/floater_map.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="">
+<floater name="Map" title="MINI MAPPA">
 	<floater.string name="ToolTipMsg">
 		[REGION](Fai doppio clic per aprire la Mappa, premi il tasto Maiusc e trascina per la panoramica)
 	</floater.string>
@@ -7,7 +7,7 @@
 		[REGION](Fai doppio clic per teleportarti, premi il tasto Maiusc e trascina per la panoramica)
 	</floater.string>
 	<floater.string name="mini_map_caption">
-		MINI MAPPA
+		Mini mappa
 	</floater.string>
 	<text label="N" name="floater_map_north" text="N">
 		N
diff --git a/indra/newview/skins/default/xui/it/floater_model_preview.xml b/indra/newview/skins/default/xui/it/floater_model_preview.xml
index 931fe7d382e4b08c101ccd66cb357933ba5f8ddf..ca36fd2defc5a9a2a7be471367eec62570b43c9b 100644
--- a/indra/newview/skins/default/xui/it/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/it/floater_model_preview.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="Carica modello">
-	<string name="status_idle">
-		Pausa
-	</string>
+<floater name="Model Preview" title="CARICAMENTO MODELLO">
+	<string name="status_idle"/>
 	<string name="status_parse_error">
-		Problema nell&apos;elaborazione DAE - vedi il registro per informazioni al riguardo.
+		Errore: Errore elaborazione Dae - vedere il registro per informazioni dettagliate.
+	</string>
+	<string name="status_material_mismatch">
+		Errore: il materiale del modello non è un sottoinsieme del modello di riferimento.
 	</string>
 	<string name="status_reading_file">
 		Caricamento in corso...
@@ -51,6 +52,9 @@
 	<string name="mesh_status_missing_lod">
 		Livello di dettaglio minimo mancante.
 	</string>
+	<string name="mesh_status_invalid_material_list">
+		I materiali per il livello di dettaglio non sono un sottoinsieme  del modello di riferimento.
+	</string>
 	<string name="layer_all">
 		Tutto
 	</string>
@@ -63,188 +67,211 @@
 	<string name="tbd">
 		Da definire
 	</string>
-	<text name="name_label">
-		Nome:
-	</text>
-	<text name="lod_label">
-		Anteprima:
-	</text>
-	<combo_box name="preview_lod_combo" tool_tip="Livello di dettaglio per anteprima rendering">
-		<combo_item name="high">
-			Livello di dettaglio: Alto
-		</combo_item>
-		<combo_item name="medium">
-			Livello di dettaglio: Medio
-		</combo_item>
-		<combo_item name="low">
-			Livello di dettaglio: Basso
-		</combo_item>
-		<combo_item name="lowest">
-			Livello di dettaglio: Bassissimo
-		</combo_item>
-	</combo_box>
-	<text name="warning_title">
-		ATTENZIONE:
-	</text>
-	<text name="warning_message">
-		Non sarà possibile completare il caricamento finale di questo modello sui server di Second Life. [[VURL] Scopri come] ricevere l&apos;autorizzazione per il caricamento dei modelli con reticolo.
-	</text>
-	<text name="weights_text">
-		Download:
-Fisica:
-Server:
-
-Prim equivalenti:
-	</text>
-	<text name="weights">
-		[ST]
-[PH]
-[SIM]
-
-[EQ]
-	</text>
-	<tab_container name="import_tab">
-		<panel label="Livello di dettaglio" name="lod_panel">
-			<text name="lod_table_header">
-				Seleziona livello di dettaglio:
-			</text>
-			<text name="high_label" value="Alto"/>
-			<text name="high_triangles" value="0"/>
-			<text name="high_vertices" value="0"/>
-			<text name="medium_label" value="Medio"/>
-			<text name="medium_triangles" value="0"/>
-			<text name="medium_vertices" value="0"/>
-			<text name="low_label" value="Basso"/>
-			<text name="low_triangles" value="0"/>
-			<text name="low_vertices" value="0"/>
-			<text name="lowest_label" value="Bassissimo"/>
-			<text name="lowest_triangles" value="0"/>
-			<text name="lowest_vertices" value="0"/>
-			<text name="lod_table_footer">
-				Livello di dettaglio: [DETAIL]
-			</text>
-			<radio_group name="lod_file_or_limit" value="lod_from_file">
-				<radio_item label="Carica da file" name="lod_from_file"/>
-				<radio_item label="Genera automaticamente" name="lod_auto_generate"/>
-				<radio_item label="Nessuno" name="lod_none"/>
-			</radio_group>
-			<button label="Sfoglia..." name="lod_browse"/>
-			<combo_box name="lod_mode">
-				<combo_item name="triangle_limit">
-					Limite triangoli
-				</combo_item>
-				<combo_item name="error_threshold">
-					Limite errori
-				</combo_item>
-			</combo_box>
-			<text name="build_operator_text">
-				Operatore costruzione:
-			</text>
-			<text name="queue_mode_text">
-				Modalità di coda:
-			</text>
-			<combo_box name="build_operator">
-				<combo_item name="edge_collapse">
-					Collassa bordo
-				</combo_item>
-				<combo_item name="half_edge_collapse">
-					Collassa mezzo bordo
-				</combo_item>
-			</combo_box>
-			<combo_box name="queue_mode">
-				<combo_item name="greedy">
-					Ingordo
-				</combo_item>
-				<combo_item name="lazy">
-					Pigro
-				</combo_item>
-				<combo_item name="independent">
-					Indipendente
-				</combo_item>
-			</combo_box>
-			<text name="border_mode_text">
-				Modalità bordo:
+	<panel name="left_panel">
+		<panel name="model_name_representation_panel">
+			<text name="name_label">
+				Nome modello:
 			</text>
-			<text name="share_tolderance_text">
-				Tolleranza condivisione:
+			<text name="model_category_label">
+				Questo modello rappresenta...
 			</text>
-			<combo_box name="border_mode">
-				<combo_item name="border_unlock">
-					Sblocca
-				</combo_item>
-				<combo_item name="border_lock">
-					Blocca
-				</combo_item>
+			<combo_box name="model_category_combo">
+				<combo_item label="Seleziona uno..." name="Choose one"/>
+				<combo_item label="Forma avatar" name="Avatar shape"/>
+				<combo_item label="Elemento collegato all&apos;avatar" name="Avatar attachment"/>
+				<combo_item label="Oggetto mobile (veicolo, animale)" name="Moving object (vehicle, animal)"/>
+				<combo_item label="Componente edificio" name="Building Component"/>
+				<combo_item label="Grande, immobile, ecc." name="Large, non moving etc"/>
+				<combo_item label="Piccolo, immobile, ecc." name="Smaller, non-moving etc"/>
+				<combo_item label="Nessuno di questi" name="Not really any of these"/>
 			</combo_box>
-			<text name="crease_label">
-				Angolo piega:
-			</text>
-			<spinner name="crease_angle" value="75"/>
 		</panel>
-		<panel label="Fisica" name="physics_panel">
-			<panel name="physics geometry">
-				<radio_group name="physics_load_radio" value="physics_load_from_file">
-					<radio_item label="File:" name="physics_load_from_file"/>
-					<radio_item label="Usa livello di dettaglio:" name="physics_use_lod"/>
-				</radio_group>
-				<combo_box name="physics_lod_combo" tool_tip="Livello di dettaglio per forma fisica">
-					<combo_item name="physics_lowest">
-						Bassissimo
-					</combo_item>
-					<combo_item name="physics_low">
-						Basso
-					</combo_item>
-					<combo_item name="physics_medium">
-						Medio
-					</combo_item>
-					<combo_item name="physics_high">
-						Alto
-					</combo_item>
-				</combo_box>
-				<button label="Sfoglia..." name="physics_browse"/>
-			</panel>
-			<panel name="physics analysis">
-				<slider label="Liscia:" name="Smooth"/>
-				<check_box label="Chiudi fori (lento)" name="Close Holes (Slow)"/>
-				<button label="Analizza" name="Decompose"/>
-				<button label="Annulla" name="decompose_cancel"/>
+		<tab_container name="import_tab">
+			<panel label="Livello di dettaglio" name="lod_panel" title="Livello di dettaglio">
+				<text initial_value="Fonte" name="source" value="Fonte"/>
+				<text initial_value="Triangoli" name="triangles" value="Triangoli"/>
+				<text initial_value="Vertici" name="vertices" value="Vertici"/>
+				<text initial_value="Alto" name="high_label" value="Alto"/>
+				<button label="Sfoglia..." name="lod_browse_high"/>
+				<text initial_value="0" name="high_triangles" value="0"/>
+				<text initial_value="0" name="high_vertices" value="0"/>
+				<text initial_value="Medio" name="medium_label" value="Medio"/>
+				<button label="Sfoglia..." name="lod_browse_medium"/>
+				<text initial_value="0" name="medium_triangles" value="0"/>
+				<text initial_value="0" name="medium_vertices" value="0"/>
+				<text initial_value="Basso" name="low_label" value="Basso"/>
+				<button label="Sfoglia..." name="lod_browse_low"/>
+				<text initial_value="0" name="low_triangles" value="0"/>
+				<text initial_value="0" name="low_vertices" value="0"/>
+				<text initial_value="Bassissimo" name="lowest_label" value="Bassissimo"/>
+				<button label="Sfoglia..." name="lod_browse_lowest"/>
+				<text initial_value="0" name="lowest_triangles" value="0"/>
+				<text initial_value="0" name="lowest_vertices" value="0"/>
+				<check_box label="Genera normali" name="gen_normals"/>
+				<text initial_value="Angolo piega:" name="crease_label" value="Angolo piega:"/>
+				<spinner name="crease_angle" value="75"/>
 			</panel>
-			<panel name="physics simplification">
-				<slider label="Passaggi:" name="Combine Quality"/>
-				<slider label="Scala dettagli:" name="Detail Scale"/>
-				<slider label="Mantieni:" name="Retain%"/>
-				<button label="Semplifica" name="Simplify"/>
-				<button label="Annulla" name="simplify_cancel"/>
+			<panel label="Fisica" name="physics_panel">
+				<panel name="physics geometry">
+					<text name="first_step_name">
+						Passaggio 1: Livello di dettaglio
+					</text>
+					<combo_box name="physics_lod_combo" tool_tip="Livello di dettaglio per forma fisica">
+						<combo_item name="choose_one">
+							Seleziona uno...
+						</combo_item>
+						<combo_item name="physics_high">
+							Alto
+						</combo_item>
+						<combo_item name="physics_medium">
+							Medio
+						</combo_item>
+						<combo_item name="physics_low">
+							Basso
+						</combo_item>
+						<combo_item name="physics_lowest">
+							Bassissimo
+						</combo_item>
+						<combo_item name="load_from_file">
+							Da file
+						</combo_item>
+					</combo_box>
+					<button label="Sfoglia..." name="physics_browse"/>
+				</panel>
+				<panel name="physics analysis">
+					<text name="method_label">
+						Passaggio 2: Analizza
+					</text>
+					<text name="analysis_method_label">
+						Metodo:
+					</text>
+					<text name="quality_label">
+						Qualità:
+					</text>
+					<text name="smooth_method_label">
+						Liscia:
+					</text>
+					<check_box label="Chiudi fori" name="Close Holes (Slow)"/>
+					<button label="Analizza" name="Decompose"/>
+					<button label="Annulla" name="decompose_cancel"/>
+				</panel>
+				<panel name="physics simplification">
+					<text name="second_step_label">
+						Passaggio 3: Semplifica
+					</text>
+					<text name="simp_method_header">
+						Metodo:
+					</text>
+					<text name="pass_method_header">
+						Passaggi:
+					</text>
+					<text name="Detail Scale label">
+						Scala dettagli:
+					</text>
+					<text name="Retain%_label">
+						Mantieni:
+					</text>
+					<combo_box name="Combine Quality" value="1"/>
+					<button label="Semplifica" name="Simplify"/>
+					<button label="Annulla" name="simplify_cancel"/>
+				</panel>
+				<panel name="physics info">
+					<text name="results_text">
+						Risultati:
+					</text>
+					<text name="physics_triangles">
+						Triangoli: [TRIANGLES],
+					</text>
+					<text name="physics_points">
+						Vertici: [POINTS],
+					</text>
+					<text name="physics_hulls">
+						Scafi: [HULLS]
+					</text>
+				</panel>
 			</panel>
-			<panel name="physics info">
-				<slider label="Ampiezza anteprima:" name="physics_explode"/>
-				<text name="physics_triangles">
-					Triangoli: [TRIANGLES]
+			<panel label="Carica opzioni" name="modifiers_panel">
+				<text name="scale_label">
+					Scala (1=nessuna scala):
 				</text>
-				<text name="physics_points">
-					Vertici: [POINTS]
+				<spinner name="import_scale" value="1.0"/>
+				<text name="dimensions_label">
+					Dimensioni:
 				</text>
-				<text name="physics_hulls">
-					Inviluppi: [HULLS]
+				<text name="import_dimensions">
+					[X] X [Y] X [Z]
 				</text>
+				<check_box label="Includi texture" name="upload_textures"/>
+				<text name="include_label">
+					Solo per modelli avatar:
+				</text>
+				<check_box label="Includi peso pelle" name="upload_skin"/>
+				<check_box label="Includi posizioni giunti" name="upload_joints"/>
+				<text name="pelvis_offset_label">
+					Spostamento Z (sposta l&apos;avatar in alto o in basso):
+				</text>
+				<spinner name="pelvis_offset" value="0.0"/>
 			</panel>
-		</panel>
-		<panel label="Modificatori" name="modifiers_panel">
-			<spinner name="import_scale" value="1.0"/>
-			<text name="import_dimensions">
-				[X] x [Y] x [Z] m
+		</tab_container>
+		<panel name="weights_and_warning_panel">
+			<button label="Calcolare pesi e tariffa" name="calculate_btn" tool_tip="Calcolare pesi e tariffa"/>
+			<button label="Annulla" name="cancel_btn"/>
+			<button label="Carica" name="ok_btn" tool_tip="Carica al simulatore"/>
+			<button label="Annulla impostazioni e ripristina modulo" name="reset_btn"/>
+			<text name="upload_fee">
+				Costo caricamento: L$ [FEE]
+			</text>
+			<text name="prim_weight">
+				Impatto sul terreno: [EQ]
+			</text>
+			<text name="download_weight">
+				Download: [ST]
+			</text>
+			<text name="physics_weight">
+				Fisica: [PH]
+			</text>
+			<text name="server_weight">
+				Server: [SIM]
+			</text>
+			<text name="warning_title">
+				NOTA:
+			</text>
+			<text name="warning_message">
+				Non hai l&apos;autorizzazione per caricare i modelli di reticolo. [[VURL] Scopri come] ottenere la certificazione.
+			</text>
+			<text name="status">
+				[STATUS]
 			</text>
-			<check_box label="Texture" name="upload_textures"/>
-			<check_box label="Peso pelle" name="upload_skin"/>
-			<check_box label="Posizioni giunti" name="upload_joints"/>
-			<spinner name="pelvis_offset" value="0.0"/>
 		</panel>
-	</tab_container>
-	<text name="upload_fee">
-		Costo caricamento: L$ [FEE]
+	</panel>
+	<text name="lod_label">
+		Anteprima:
 	</text>
-	<button label="Imposta sui valori predefiniti" name="reset_btn" tool_tip="Imposta sui valori predefiniti"/>
-	<button label="Calcolare pesi e tariffa" name="calculate_btn" tool_tip="Calcolare pesi e tariffa"/>
-	<button label="Carica sul server" name="ok_btn" tool_tip="Carica al simulatore"/>
-	<button label="Annulla" name="cancel_btn"/>
+	<panel name="right_panel">
+		<combo_box name="preview_lod_combo" tool_tip="Livello di dettaglio per anteprima rendering">
+			<combo_item name="high">
+				Alto
+			</combo_item>
+			<combo_item name="medium">
+				Medio
+			</combo_item>
+			<combo_item name="low">
+				Basso
+			</combo_item>
+			<combo_item name="lowest">
+				Bassissimo
+			</combo_item>
+		</combo_box>
+		<text name="label_display">
+			Visualizzazione...
+		</text>
+		<check_box label="Bordi" name="show_edges"/>
+		<check_box label="Fisica" name="show_physics"/>
+		<check_box label="Texture" name="show_textures"/>
+		<check_box label="Pesi pelle" name="show_skin_weight"/>
+		<check_box label="Giunti" name="show_joint_positions"/>
+		<text name="physics_explode_label">
+			Anteprima spaziatura:
+		</text>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_model_wizard.xml b/indra/newview/skins/default/xui/it/floater_model_wizard.xml
index dbf41e2daf025a8179e1b5a369f3908a672c0b45..7c1b13c18fb844340532028fda9e7d090164a88b 100644
--- a/indra/newview/skins/default/xui/it/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/it/floater_model_wizard.xml
@@ -6,26 +6,23 @@
 	<button label="2. Ottimizza" name="optimize_btn"/>
 	<button label="1. Seleziona file" name="choose_file_btn"/>
 	<panel name="choose_file_panel">
-		<panel name="choose_file_header_panel">
-			<text name="choose_file_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Seleziona file modello
 			</text>
 		</panel>
-		<panel name="choose_file_content_panel">
+		<panel name="content">
 			<text name="advanced_users_text">
 				Utenti avanzati: Gli utenti che hanno dimestichezza con gli strumenti di creazione 3D possono usare le opzioni di caricamento avanzate.
 			</text>
 			<button label="Passa a modalità avanzata" name="switch_to_advanced"/>
-			<text name="choose_model_file_label">
+			<text name="Cache location">
 				Scegli il file del modello da caricare
 			</text>
 			<button label="Sfoglia..." label_selected="Sfoglia..." name="browse"/>
-			<text name="support_collada_text">
+			<text name="Model types">
 				Second Life supporta file COLLADA (.dae)
 			</text>
-			<text name="dimensions_label">
-				Dimensioni (metri):
-			</text>
 			<text name="dimensions">
 				X         Y         Z
 			</text>
@@ -38,18 +35,15 @@
 		</panel>
 	</panel>
 	<panel name="optimize_panel">
-		<panel name="optimize_header_panel">
-			<text name="optimize_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Ottimizza modello
 			</text>
 		</panel>
-		<text name="optimize_hint">
+		<text name="description">
 			Abbiamo ottimizzato il modello per migliorare le prestazioni. Se necessario, può essere regolato ulteriormente.
 		</text>
-		<panel name="optimize_content_panel">
-			<text name="generating_lod_label">
-				Generazione livello di dettaglio
-			</text>
+		<panel name="content">
 			<text name="high_detail_text">
 				Genera livello di dettaglio: Alto
 			</text>
@@ -64,123 +58,64 @@
 			</text>
 		</panel>
 		<panel name="content2">
-			<text name="optimize_performance_text">
-				Prestazioni
-			</text>
-			<text name="optimize_faster_rendering_text">
-				Rendering più veloce
-Meno dettagli
-Peso prim più basso
-			</text>
-			<text name="optimize_accuracy_text">
-				Fedeltà
-			</text>
-			<text name="optimize_slower_rendering_text">
-				Rendering più lento
-Più dettagli
-Peso prim più elevato
-			</text>
-			<text name="accuracy_slider_mark1">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark2">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark3">
-				&apos;
-			</text>
 			<button label="Ricalcola geometria" name="recalculate_geometry_btn"/>
-			<text name="geometry_preview_label">
+			<text name="lod_label">
 				Anteprima geometria
 			</text>
 			<combo_box name="preview_lod_combo" tool_tip="Livello di dettaglio per anteprima rendering">
-				<combo_item name="preview_lod_high">
+				<combo_item name="high">
 					Molti dettagli
 				</combo_item>
-				<combo_item name="preview_lod_medium">
+				<combo_item name="medium">
 					Dettagli medi
 				</combo_item>
-				<combo_item name="preview_lod_low">
+				<combo_item name="low">
 					Meno dettagli
 				</combo_item>
-				<combo_item name="preview_lod_lowest">
+				<combo_item name="lowest">
 					Dettaglio minimo
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="physics_panel">
-		<panel name="physics_header_panel">
-			<text name="physics_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Modifica fisica
 			</text>
 		</panel>
-		<text name="physics_hint">
+		<text name="description">
 			Verrà creata una forma per lo scafo esterno del modello. Regola il livello di dettaglio della forma in base al fine desiderato del modello.
 		</text>
-		<panel name="physics_content_panel">
-			<text name="physics_performance_text">
-				Prestazioni
-			</text>
-			<text name="physics_faster_rendering_text">
-				Rendering più veloce
-Meno dettagli
-Peso prim più basso
-			</text>
-			<text name="physics_accuracy_text">
-				Fedeltà
-			</text>
-			<text name="physics_slower_dendering_text">
-				Rendering più lento
-Più dettagli
-Peso prim più elevato
-			</text>
-			<text name="physics_example_1">
-				Esempi:
-Oggetti in movimento
-Oggetti in volo
-Veicoli
-			</text>
-			<text name="physics_example_2">
-				Esempi:
-Piccoli oggetti statici
-Oggetti meno dettagliati
-Mobili semplici
-			</text>
-			<text name="physics_example_3">
-				Esempi:
-Oggetti statici
-Oggetti dettagliati
-Edifici
-			</text>
+		<panel name="content">
 			<button label="Ricalcola fisica" name="recalculate_physics_btn"/>
 			<button label="Ricalcolo in corso..." name="recalculating_physics_btn"/>
-			<text name="physics_preview_label">
+			<text name="lod_label">
 				Anteprima fisica
 			</text>
 			<combo_box name="preview_lod_combo2" tool_tip="Livello di dettaglio per anteprima rendering">
-				<combo_item name="preview_lod2_high">
+				<combo_item name="high">
 					Molti dettagli
 				</combo_item>
-				<combo_item name="preview_lod2_medium">
+				<combo_item name="medium">
 					Dettagli medi
 				</combo_item>
-				<combo_item name="preview_lod2_low">
+				<combo_item name="low">
 					Meno dettagli
 				</combo_item>
-				<combo_item name="preview_lod2_lowest">
+				<combo_item name="lowest">
 					Dettaglio minimo
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="review_panel">
-		<panel name="review_header_panel">
-			<text name="review_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Rivedi
 			</text>
 		</panel>
-		<panel name="review_content_panel">
+		<panel name="content">
 			<text name="review_prim_equiv">
 				Impatto sul lotto o sulla regione: [EQUIV] prim equivalenti
 			</text>
@@ -193,8 +128,8 @@ Edifici
 		</panel>
 	</panel>
 	<panel name="upload_panel">
-		<panel name="upload_header_panel">
-			<text name="upload_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Caricamento completato
 			</text>
 		</panel>
diff --git a/indra/newview/skins/default/xui/it/floater_moveview.xml b/indra/newview/skins/default/xui/it/floater_moveview.xml
index cdafdb0089752a0f2d7ae5f731f0d92064661534..1237bd06a9073044854b339b3cbe9c45e46361c7 100644
--- a/indra/newview/skins/default/xui/it/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/it/floater_moveview.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="CAMMINA / CORRI / VOLA">
 	<string name="walk_forward_tooltip">
 		Cammina in avanti (premi freccia su o W)
 	</string>
@@ -58,14 +58,14 @@
 		Vola
 	</string>
 	<panel name="panel_actions">
-		<button label="" label_selected="" name="move up btn" tool_tip="Vola in alto (premi E)"/>
 		<button label="" label_selected="" name="turn left btn" tool_tip="Gira a sinistra (premi freccia sinistra o A)"/>
 		<joystick_slide name="move left btn" tool_tip="Cammina a sinistra (premi Maiusc + freccia sinistra o A)"/>
-		<button label="" label_selected="" name="move down btn" tool_tip="Vola in basso (premi C)"/>
 		<button label="" label_selected="" name="turn right btn" tool_tip="Gira a destra (premi freccia destra o D)"/>
 		<joystick_slide name="move right btn" tool_tip="Cammina a destra (premi Maiusc + freccia destra o D)"/>
 		<joystick_turn name="forward btn" tool_tip="Cammina in avanti (premi freccia su o W)"/>
 		<joystick_turn name="backward btn" tool_tip="Cammina indietro (premi freccia giù o S)"/>
+		<button label="" label_selected="" name="move up btn" tool_tip="Vola in alto (premi E)"/>
+		<button label="" label_selected="" name="move down btn" tool_tip="Vola in basso (premi C)"/>
 	</panel>
 	<panel name="panel_modes">
 		<button label="" name="mode_walk_btn" tool_tip="Modalità cammina"/>
diff --git a/indra/newview/skins/default/xui/it/floater_my_appearance.xml b/indra/newview/skins/default/xui/it/floater_my_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..39ddd6186a811a8297b1a23a26baede08601b017
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="ASPETTO">
+	<panel label="Modifica aspetto" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_my_inventory.xml b/indra/newview/skins/default/xui/it/floater_my_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0efd9f1c6d5c0cc19adcc2429596c87d4a17f094
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="INVENTARIO"/>
diff --git a/indra/newview/skins/default/xui/it/floater_nearby_chat.xml b/indra/newview/skins/default/xui/it/floater_nearby_chat.xml
index 4c41df8a62cc598005647f46c540408441aa9504..9e818998808fff64545d43f16c9045103a604ab5 100644
--- a/indra/newview/skins/default/xui/it/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/it/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="nearby_chat" title="CHAT NEI DINTORNI">
-	<check_box label="Traduci chat (tecnologia Google)" name="translate_chat_checkbox"/>
+	<check_box label="Traduci chat" name="translate_chat_checkbox"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_object_weights.xml b/indra/newview/skins/default/xui/it/floater_object_weights.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fdcb732dee0f076fa0c2b9c7f847ba0e1e756a45
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="AVANZATE">
+	<floater.string name="nothing_selected" value="--"/>
+	<text name="selected_text" value="SELEZIONATI"/>
+	<text name="objects" value="--"/>
+	<text name="objects_label" value="Oggetti"/>
+	<text name="prims" value="--"/>
+	<text name="prims_label" value="Prim"/>
+	<text name="weights_of_selected_text" value="PESO ELEMENTI SELEZIONATI"/>
+	<text name="download" value="--"/>
+	<text name="download_label" value="Scarica"/>
+	<text name="physics" value="--"/>
+	<text name="physics_label" value="Fisica"/>
+	<text name="server" value="--"/>
+	<text name="server_label" value="Server"/>
+	<text name="display" value="--"/>
+	<text name="display_label" value="Visualizzazione"/>
+	<text name="land_impacts_text" value="IMPATTO TERRENO"/>
+	<text name="selected" value="--"/>
+	<text name="selected_label" value="Selezionati"/>
+	<text name="rezzed_on_land" value="--"/>
+	<text name="rezzed_on_land_label" value="Rezzati sul terreno"/>
+	<text name="remaining_capacity" value="--"/>
+	<text name="remaining_capacity_label" value="Capacità restante"/>
+	<text name="total_capacity" value="--"/>
+	<text name="total_capacity_label" value="Capacità totale"/>
+	<text name="help_SLURL" value="[secondlife:///app/help/object_weights Di cosa si tratta?...]"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..55bb5adb1e5410c0953df735552824e888405c28
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_outfit_save_as.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container" title="SALVA ABITO"/>
diff --git a/indra/newview/skins/default/xui/it/floater_people.xml b/indra/newview/skins/default/xui/it/floater_people.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1acc3cbf190fafdd11263b2aac559baf5d75c124
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="PERSONE">
+	<panel_container name="main_panel">
+		<panel label="Profilo del gruppo" name="panel_group_info_sidetray"/>
+		<panel label="Residenti e oggetti bloccati" name="panel_block_list_sidetray"/>
+	</panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_picks.xml b/indra/newview/skins/default/xui/it/floater_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dfc539da669fba14c7ec8688cd9c7e66b692daf1
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Preferiti"/>
diff --git a/indra/newview/skins/default/xui/it/floater_places.xml b/indra/newview/skins/default/xui/it/floater_places.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cd46cf8b590001356e2333497cd054952aeb22c5
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="LUOGHI">
+	<panel label="Luoghi" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_snapshot.xml b/indra/newview/skins/default/xui/it/floater_snapshot.xml
index 5bff19e8d75647e1b3042630ef0ecd8383dae9e7..bff6081bdf688af5d322639e66ab79975a0b7e30 100644
--- a/indra/newview/skins/default/xui/it/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/it/floater_snapshot.xml
@@ -1,75 +1,65 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Snapshot" title="ANTEPRIMA FOTOGRAFIA" width="247">
+<floater name="Snapshot" title="ANTEPRIMA FOTOGRAFIA">
 	<floater.string name="unknown">
 		sconosciuto
 	</floater.string>
-	<radio_group label="Tipo di fotografia" name="snapshot_type_radio">
-		<radio_item label="E-mail" name="postcard"/>
-		<radio_item label="Il mio inventario (L$[AMOUNT])" name="texture"/>
-		<radio_item label="Salva sul mio computer" name="local"/>
-	</radio_group>
+	<string name="postcard_progress_str">
+		Invio e-mail in corso
+	</string>
+	<string name="profile_progress_str">
+		Caricamento post
+	</string>
+	<string name="inventory_progress_str">
+		Salva nell&apos;inventario
+	</string>
+	<string name="local_progress_str">
+		Salvataggio sul computer in corso
+	</string>
+	<string name="profile_succeeded_str">
+		Immagine caricata
+	</string>
+	<string name="postcard_succeeded_str">
+		E-mail inviata.
+	</string>
+	<string name="inventory_succeeded_str">
+		Salvato nell&apos;inventario.
+	</string>
+	<string name="local_succeeded_str">
+		Salvato sul computer.
+	</string>
+	<string name="profile_failed_str">
+		Caricamento immagine sul feed del profilo non riuscito.
+	</string>
+	<string name="postcard_failed_str">
+		Invio e-mail non riuscito.
+	</string>
+	<string name="inventory_failed_str">
+		Non salvato nell&apos;inventario.
+	</string>
+	<string name="local_failed_str">
+		Non salvato sul computer.
+	</string>
+	<button name="advanced_options_btn" tool_tip="Opzioni Avanzate"/>
+	<text name="image_res_text">
+		[WIDTH] x [HEIGHT] px
+	</text>
 	<text name="file_size_label">
 		[SIZE] KB
 	</text>
-	<button label="Aggiorna la fotografia" name="new_snapshot_btn"/>
-	<button label="Invia" name="send_btn"/>
-	<button label="Salva ([AMOUNT] L$)" name="upload_btn"/>
-	<flyout_button label="Salva" name="save_btn" tool_tip="Salva immagine come file">
-		<flyout_button.item label="Salva" name="save_item"/>
-		<flyout_button.item label="Salva con nome..." name="saveas_item"/>
-	</flyout_button>
-	<button label="Altro" name="more_btn" tool_tip="Opzioni Avanzate"/>
-	<button label="Meno" name="less_btn" tool_tip="Opzioni Avanzate"/>
-	<button label="Annulla" name="discard_btn"/>
-	<text name="type_label2">
-		Dimensioni
-	</text>
-	<text name="format_label">
-		Formato
-	</text>
-	<combo_box label="Risoluzione" name="postcard_size_combo">
-		<combo_box.item label="Finestra attuale" name="CurrentWindow"/>
-		<combo_box.item label="640x480" name="640x480"/>
-		<combo_box.item label="800x600" name="800x600"/>
-		<combo_box.item label="1024x768" name="1024x768"/>
-		<combo_box.item label="Personalizza" name="Custom"/>
-	</combo_box>
-	<combo_box label="Risoluzione" name="texture_size_combo">
-		<combo_box.item label="Finestra attuale" name="CurrentWindow"/>
-		<combo_box.item label="Piccola (128x128)" name="Small(128x128)"/>
-		<combo_box.item label="Media (256x256)" name="Medium(256x256)"/>
-		<combo_box.item label="Grande (512x512)" name="Large(512x512)"/>
-		<combo_box.item label="Personalizza" name="Custom"/>
-	</combo_box>
-	<combo_box label="Risoluzione" name="local_size_combo">
-		<combo_box.item label="Finestra attuale" name="CurrentWindow"/>
-		<combo_box.item label="320x240" name="320x240"/>
-		<combo_box.item label="640x480" name="640x480"/>
-		<combo_box.item label="800x600" name="800x600"/>
-		<combo_box.item label="1024x768" name="1024x768"/>
-		<combo_box.item label="1280x1024" name="1280x1024"/>
-		<combo_box.item label="1600x1200" name="1600x1200"/>
-		<combo_box.item label="Personalizza" name="Custom"/>
-	</combo_box>
-	<combo_box label="Formato" name="local_format_combo">
-		<combo_box.item label="PNG" name="PNG"/>
-		<combo_box.item label="JPEG" name="JPEG"/>
-		<combo_box.item label="BMP" name="BMP"/>
-	</combo_box>
-	<spinner label="Larghezza" name="snapshot_width"/>
-	<spinner label="Altezza" name="snapshot_height"/>
-	<check_box label="Mantieni le proporzioni" name="keep_aspect_check"/>
-	<slider label="Qualità dell&apos;immagine" name="image_quality_slider"/>
-	<text name="layer_type_label">
-		Cattura:
-	</text>
-	<combo_box label="Layer dell&apos;immagine" name="layer_types">
-		<combo_box.item label="Colori" name="Colors"/>
-		<combo_box.item label="Profondità" name="Depth"/>
-	</combo_box>
-	<check_box label="Interfaccia" name="ui_check"/>
-	<check_box label="HUD" name="hud_check"/>
-	<check_box label="Tieni aperta dopo il salvataggio" name="keep_open_check"/>
-	<check_box label="Congela il frame (tutto schermo)" name="freeze_frame_check"/>
-	<check_box label="Aggiornamento automatico" name="auto_snapshot_check"/>
+	<panel name="advanced_options_panel">
+		<text name="advanced_options_label">
+			OPZIONI AVANZATE
+		</text>
+		<text name="layer_type_label">
+			Cattura:
+		</text>
+		<combo_box label="Layer dell&apos;immagine" name="layer_types">
+			<combo_box.item label="Colori" name="Colors"/>
+			<combo_box.item label="Profondità" name="Depth"/>
+		</combo_box>
+		<check_box label="Interfaccia" name="ui_check"/>
+		<check_box label="HUD" name="hud_check"/>
+		<check_box label="Congela il frame (tutto schermo)" name="freeze_frame_check"/>
+		<check_box label="Aggiornamento automatico" name="auto_snapshot_check"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/it/floater_sound_devices.xml b/indra/newview/skins/default/xui/it/floater_sound_devices.xml
index df4b8f4878a55852f2bebf1c5e4cd89b053a0a02..9799b48d891fb79aeb59c4896f57860724bff590 100644
--- a/indra/newview/skins/default/xui/it/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/it/floater_sound_devices.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="Dispositivi sonori">
+<floater name="floater_sound_devices" title="DISPOSITIVI AUDIO">
 	<text name="voice_label">
 		Chat vocale
 	</text>
diff --git a/indra/newview/skins/default/xui/it/floater_stats.xml b/indra/newview/skins/default/xui/it/floater_stats.xml
index aed2a03a2189dfbfc3a1b4f90e272ebf2557d22b..ad6ef6b54b8f914f4d90d5b7a63bdc8380a8a5d1 100644
--- a/indra/newview/skins/default/xui/it/floater_stats.xml
+++ b/indra/newview/skins/default/xui/it/floater_stats.xml
@@ -10,8 +10,8 @@
 			</stat_view>
 			<stat_view label="Avanzata" name="advanced">
 				<stat_view label="Render" name="render">
-					<stat_bar label="KTris disegnate" name="ktrisframe"/>
-					<stat_bar label="KTris disegnate" name="ktrissec"/>
+					<stat_bar label="KTris disegnato per fotogramma" name="ktrisframe"/>
+					<stat_bar label="KTris disegnato per secondo" name="ktrissec"/>
 					<stat_bar label="Totale oggetti" name="objs"/>
 					<stat_bar label="Nuovi oggetti" name="newobjs"/>
 				</stat_view>
@@ -32,7 +32,7 @@
 					<stat_bar label="Layer" name="layerskbitstat"/>
 					<stat_bar label="Effettivi in ingresso" name="actualinkbitstat"/>
 					<stat_bar label="Effettivi in uscita" name="actualoutkbitstat"/>
-					<stat_bar label="Operazioni pendenti VFS" name="vfspendingoperations"/>
+					<stat_bar label="Operazioni VFS in sospeso" name="vfspendingoperations"/>
 				</stat_view>
 			</stat_view>
 			<stat_view label="Simulatore" name="sim">
@@ -43,18 +43,6 @@
 					<stat_bar label="Oggetti pinzati" name="physicspinnedtasks"/>
 					<stat_bar label="Oggetti a basso LOD" name="physicslodtasks"/>
 					<stat_bar label="Memoria allocata" name="physicsmemoryallocated"/>
-					<stat_bar label="Aggiornamenti agenti al sec" name="simagentups"/>
-					<stat_bar label="Avatar principali" name="simmainagents"/>
-					<stat_bar label="Avatar secondari" name="simchildagents"/>
-					<stat_bar label="Oggetti" name="simobjects"/>
-					<stat_bar label="Oggetti attivi" name="simactiveobjects"/>
-					<stat_bar label="Script attivi" name="simactivescripts"/>
-					<stat_bar label="Eventi di script" name="simscripteps"/>
-					<stat_bar label="Pacchetti in ingresso" name="siminpps"/>
-					<stat_bar label="Pacchetti in uscita" name="simoutpps"/>
-					<stat_bar label="Download in attesa" name="simpendingdownloads"/>
-					<stat_bar label="Caricamenti in attesa" name="simpendinguploads"/>
-					<stat_bar label="Numero totale byte non confermati (Unacked)" name="simtotalunackedbytes"/>
 				</stat_view>
 				<stat_view label="Tempo (ms)" name="simperf">
 					<stat_bar label="Tempo totale Frame" name="simframemsec"/>
@@ -64,6 +52,14 @@
 					<stat_bar label="Tempo avatar" name="simagentmsec"/>
 					<stat_bar label="Tempo immagini" name="simimagesmsec"/>
 					<stat_bar label="Tempo script" name="simscriptmsec"/>
+					<stat_bar label="Tempo libero" name="simsparemsec"/>
+					<stat_view label="Dettagli tempo (ms)" name="timedetails">
+						<stat_bar label="Passaggio fisica" name="simsimphysicsstepmsec"/>
+						<stat_bar label="Aggiorna forme fisica" name="simsimphysicsshapeupdatemsec"/>
+						<stat_bar label="Altro fisica" name="simsimphysicsothermsec"/>
+						<stat_bar label="Tempo pausa" name="simsleepmsec"/>
+						<stat_bar label="IO pompa" name="simpumpiomsec"/>
+					</stat_view>
 				</stat_view>
 			</stat_view>
 		</container_view>
diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml
index d3b150374203e3325480c6f33cc26a318a35bee1..0d981e2424ea46933aee29dcb9813b95f5484130 100644
--- a/indra/newview/skins/default/xui/it/floater_tools.xml
+++ b/indra/newview/skins/default/xui/it/floater_tools.xml
@@ -25,10 +25,10 @@
 		Clicca e trascina per selezionare il terreno
 	</floater.string>
 	<floater.string name="status_selectcount">
-		[OBJ_COUNT] oggetti ( [PRIM_COUNT] prim [PE_STRING] ) selezionati
+		[OBJ_COUNT] oggetti selezionati, impatto terreno [LAND_IMPACT]
 	</floater.string>
-	<floater.string name="status_selectprimequiv">
-		, [SEL_WEIGHT] prim equivalenti
+	<floater.string name="status_remaining_capacity">
+		Capacità restante [LAND_CAPACITY].
 	</floater.string>
 	<button label="" label_selected="" name="button focus" tool_tip="Ingrandisci"/>
 	<button label="" label_selected="" name="button move" tool_tip="Sposta"/>
@@ -106,8 +106,8 @@
 	<text name="selection_empty">
 		Nessuna selezione.
 	</text>
-	<text name="selection_weight">
-		Peso fisica [PHYS_WEIGHT], costo rendering [DISP_WEIGHT].
+	<text name="remaining_capacity">
+		[CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Maggiori informazioni]
 	</text>
 	<tab_container name="Object Info Tabs">
 		<panel label="Generale" name="General">
@@ -326,7 +326,6 @@
 				Tipo di congiunzione
 			</text>
 			<combo_box name="sculpt type control">
-				<combo_box.item label="(nessuna)" name="None"/>
 				<combo_box.item label="Sferica" name="Sphere"/>
 				<combo_box.item label="Toroidale" name="Torus"/>
 				<combo_box.item label="Piana" name="Plane"/>
diff --git a/indra/newview/skins/default/xui/it/floater_toybox.xml b/indra/newview/skins/default/xui/it/floater_toybox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..269e2831d06a75ae2db2f1782d43454f34e8baf5
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_toybox.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="PULSANTI BARRA STRUMENTI">
+	<text name="toybox label 1">
+		Aggiungere o rimuovere pulsanti trascinandoli dentro o fuori dalle barre strumenti.
+	</text>
+	<text name="toybox label 2">
+		I pulsanti verranno visualizzati come mostrato o solo come icone, a seconda delle impostazioni della singola barra degli strumenti.
+	</text>
+	<button label="Cancella tutte le barre strumenti" label_selected="Cancella tutte le barre strumenti" name="btn_clear_all"/>
+	<button label="Ripristina predefiniti" label_selected="Ripristina predefiniti" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_translation_settings.xml b/indra/newview/skins/default/xui/it/floater_translation_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a0a34da723ed395dc2e4bf0a1b167996c59e1c7f
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/floater_translation_settings.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_translation_settings" title="IMPOSTAZIONI TRADUZIONE CHAT">
+	<string name="bing_api_key_not_verified">
+		appID Bing non verificato. Riprova.
+	</string>
+	<string name="google_api_key_not_verified">
+		Chiave API Google non verificata. Riprova.
+	</string>
+	<string name="bing_api_key_verified">
+		appID Bing verificato.
+	</string>
+	<string name="google_api_key_verified">
+		Chiave API Google verificata.
+	</string>
+	<check_box label="Usa la traduzione meccanica durante le chat" name="translate_chat_checkbox"/>
+	<text name="translate_language_label">
+		Traduci chat in:
+	</text>
+	<combo_box name="translate_language_combo">
+		<combo_box.item label="Predefinito di sistema" name="System Default Language"/>
+		<combo_box.item label="English (Inglese)" name="English"/>
+		<combo_box.item label="Dansk (Danese)" name="Danish"/>
+		<combo_box.item label="Deutsch (Tedesco)" name="German"/>
+		<combo_box.item label="Español (Spagnolo)" name="Spanish"/>
+		<combo_box.item label="Français (Francese)" name="French"/>
+		<combo_box.item label="Italiano" name="Italian"/>
+		<combo_box.item label="Magyar (Ungherese)" name="Hungarian"/>
+		<combo_box.item label="Nederlands (Olandese)" name="Dutch"/>
+		<combo_box.item label="Polski (Polacco)" name="Polish"/>
+		<combo_box.item label="Português (Portoghese)" name="Portugese"/>
+		<combo_box.item label="Русский (Russo)" name="Russian"/>
+		<combo_box.item label="Türkçe (Turco)" name="Turkish"/>
+		<combo_box.item label="Українська (Ucraino)" name="Ukrainian"/>
+		<combo_box.item label="中文 (正體) (Cinese)" name="Chinese"/>
+		<combo_box.item label="日本語 (Giapponese)" name="Japanese"/>
+		<combo_box.item label="한국어 (Coreano)" name="Korean"/>
+	</combo_box>
+	<text name="tip">
+		Seleziona il servizio di traduzione:
+	</text>
+	<radio_group name="translation_service_rg">
+		<radio_item initial_value="bing" label="Bing Translator" name="bing"/>
+		<radio_item initial_value="google" label="Google Translate" name="google"/>
+	</radio_group>
+	<text name="bing_api_key_label">
+		Bing [http://www.bing.com/developers/createapp.aspx AppID]:
+	</text>
+	<button label="Verifica" name="verify_bing_api_key_btn"/>
+	<text name="google_api_key_label">
+		Google [http://code.google.com/apis/language/translate/v2/getting_started.html#auth API key]:
+	</text>
+	<button label="Verifica" name="verify_google_api_key_btn"/>
+	<text name="google_links_text">
+		[http://code.google.com/apis/language/translate/v2/pricing.html Prezzi] | [https://code.google.com/apis/console Statistiche]
+	</text>
+	<button label="OK" name="ok_btn"/>
+	<button label="Annulla" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_voice_controls.xml b/indra/newview/skins/default/xui/it/floater_voice_controls.xml
index 0f0467757d273cfe110670f5b7b38436c2e39b0a..77973eef1e0cb914f51e03d5d065010b30313cd7 100644
--- a/indra/newview/skins/default/xui/it/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/it/floater_voice_controls.xml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Regolazione voce">
+<floater name="floater_voice_controls" title="CONTROLLI VOCE">
 	<string name="title_nearby">
-		VOCE NEI DINTORNI
+		IMPOSTAZIONI VOCE
 	</string>
 	<string name="title_group">
-		Chiamata di gruppo con [GROUP]
+		CHIAMATA DI GRUPPO CON [GROUP]
 	</string>
 	<string name="title_adhoc">
-		Chiamata in conferenza
+		CHIAMATA IN CONFERENZA
 	</string>
 	<string name="title_peer_2_peer">
-		Chiamata con [NAME]
+		CHIAMATA CON [NAME]
 	</string>
 	<string name="no_one_near">
 		Nessuno nei dintorni ha attivato la funzione voce
diff --git a/indra/newview/skins/default/xui/it/menu_hide_navbar.xml b/indra/newview/skins/default/xui/it/menu_hide_navbar.xml
index 2c2c6c4bc575a510f7452ecffb1dac65904a9163..48f6691fd82c510a5465706ada802c1d714accff 100644
--- a/indra/newview/skins/default/xui/it/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/it/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="hide_navbar_menu">
-	<menu_item_check label="Mostra la barra di navigazione" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="Mostra navigazione e barra dei Preferiti" name="ShowNavbarNavigationPanel"/>
 	<menu_item_check label="Mostra la barra dei Preferiti" name="ShowNavbarFavoritesPanel"/>
 	<menu_item_check label="Mostra mini barra del luogo" name="ShowMiniLocationPanel"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml
index fe8bf703aa8d7eddbb461204af0195d373c6233c..834db974dafc0eeca1bf3e1e10d4a7d037a73b07 100644
--- a/indra/newview/skins/default/xui/it/menu_login.xml
+++ b/indra/newview/skins/default/xui/it/menu_login.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Login Menu">
 	<menu label="Io" name="File">
-		<menu_item_call label="Preferenze" name="Preferences..."/>
+		<menu_item_call label="Preferenze..." name="Preferences..."/>
 		<menu_item_call label="Esci da [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Aiuto" name="Help">
diff --git a/indra/newview/skins/default/xui/it/menu_toolbars.xml b/indra/newview/skins/default/xui/it/menu_toolbars.xml
new file mode 100644
index 0000000000000000000000000000000000000000..604ca763d13f10e0d96e5d2e3d4b73d486cab2be
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/menu_toolbars.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+	<menu_item_call label="Rimuovi questo pulsante" name="Remove button"/>
+	<menu_item_call label="Pulsanti barra strumenti..." name="Choose Buttons"/>
+	<menu_item_check label="Icone ed etichette" name="icons_with_text"/>
+	<menu_item_check label="Solo icone" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml
index 7e3b34411797b5e4eb003d1e0ef5811b473f6d45..5140d2b1ec19ba4c328c2f7d6d6787a6cc5a6b4e 100644
--- a/indra/newview/skins/default/xui/it/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/it/menu_viewer.xml
@@ -1,54 +1,60 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Main Menu">
 	<menu label="Io" name="Me">
-		<menu_item_call label="Preferenze" name="Preferences"/>
-		<menu_item_call label="Il mio Dashboard" name="Manage My Account">
-			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=it"/>
-		</menu_item_call>
-		<menu_item_call label="Compra L$" name="Buy and Sell L$"/>
-		<menu_item_call label="Il mio profilo" name="Profile"/>
-		<menu_item_call label="Il mio aspetto" name="ChangeOutfit"/>
-		<menu_item_check label="Il mio inventario" name="Inventory"/>
-		<menu_item_check label="Il mio inventario" name="ShowSidetrayInventory"/>
-		<menu_item_check label="Le mie gesture" name="Gestures"/>
-		<menu_item_check label="La mia voce" name="ShowVoice"/>
+		<menu_item_call label="Profilo..." name="Profile"/>
+		<menu_item_call label="Aspetto fisico..." name="ChangeOutfit"/>
+		<menu_item_call label="Scegli un avatar..." name="Avatar Picker"/>
+		<menu_item_check label="Inventario..." name="Inventory"/>
+		<menu_item_call label="Nuova finestra inventario" name="NewInventoryWindow"/>
+		<menu_item_call label="Luoghi..." name="Places"/>
+		<menu_item_call label="Preferiti..." name="Picks"/>
+		<menu_item_call label="Controlli fotocamera..." name="Camera Controls"/>
 		<menu label="Spostamento" name="Movement">
 			<menu_item_call label="Siedi" name="Sit Down Here"/>
 			<menu_item_check label="Vola" name="Fly"/>
 			<menu_item_check label="Corri sempre" name="Always Run"/>
 			<menu_item_call label="Ferma animazione" name="Stop Animating My Avatar"/>
 		</menu>
-		<menu label="Il mio 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="Richiedi diritti Admin" name="Request Admin Options"/>
 		<menu_item_call label="Lascia stato Admin" name="Leave Admin Options"/>
+		<menu_item_call label="Compra L$" name="Buy and Sell L$"/>
+		<menu_item_call label="Dashboard dell&apos;account..." name="Manage My Account">
+			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=it"/>
+		</menu_item_call>
+		<menu_item_call label="Preferenze..." name="Preferences"/>
+		<menu_item_call label="Pulsanti barra strumenti..." name="Toolbars"/>
+		<menu_item_call label="Nascondi tutti i controlli" name="Hide UI"/>
 		<menu_item_call label="Esci da [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Comunica" name="Communicate">
-		<menu_item_call label="I miei amici..." name="My Friends"/>
-		<menu_item_call label="I miei gruppi" name="My Groups"/>
-		<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_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_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="Voce nei dintorni" name="Nearby Voice"/>
 	</menu>
 	<menu label="Mondo" name="World">
+		<menu_item_call label="Crea punto di riferimento per questo luogo" name="Create Landmark Here"/>
+		<menu_item_call label="Destinazioni..." name="Destinations"/>
+		<menu_item_check label="Mappamondo" name="World Map"/>
 		<menu_item_check label="Mini mappa" name="Mini-Map"/>
-		<menu_item_check label="Mappa del mondo" name="World Map"/>
 		<menu_item_check label="Cerca" name="Search"/>
+		<menu_item_call label="Teleport a Casa" name="Teleport Home"/>
+		<menu_item_call label="Imposta come Casa mia" name="Set Home to Here"/>
 		<menu_item_call label="Istantanea" name="Take Snapshot"/>
-		<menu_item_call label="Crea punto di riferimento per questo luogo" name="Create Landmark Here"/>
-		<menu label="Profilo del luogo" name="Land">
-			<menu_item_call label="Profilo del luogo" name="Place Profile"/>
-			<menu_item_call label="Informazioni sui terreni" name="About Land"/>
-			<menu_item_call label="Regione/proprietà immobiliare" name="Region/Estate"/>
-		</menu>
+		<menu_item_call label="Profilo del luogo" name="Place Profile"/>
+		<menu_item_call label="Informazioni sul terreno" name="About Land"/>
+		<menu_item_call label="Regione/proprietà immobiliare" name="Region/Estate"/>
+		<menu_item_call label="Terreni posseduti..." name="My Land"/>
 		<menu_item_call label="Acquista questo terreno" name="Buy Land"/>
-		<menu_item_call label="Il mio terreno" name="My Land"/>
 		<menu label="Mostra" name="LandShow">
-			<menu_item_check label="Comandi del movimento" name="Movement Controls"/>
-			<menu_item_check label="Comandi visualizzazione" name="Camera Controls"/>
 			<menu_item_check label="Linee di divieto" name="Ban Lines"/>
 			<menu_item_check label="Marcatori" name="beacons"/>
 			<menu_item_check label="Linee di confine" name="Property Lines"/>
@@ -57,29 +63,28 @@
 			<menu_item_check label="Proprietà del lotto" name="Parcel Properties"/>
 			<menu_item_check label="Menu Avanzato" name="Show Advanced Menu"/>
 		</menu>
-		<menu_item_call label="Teleport a Casa" name="Teleport Home"/>
-		<menu_item_call label="Imposta come Casa mia" name="Set Home to Here"/>
 		<menu label="Sole" name="Environment Settings">
 			<menu_item_call label="Alba" name="Sunrise"/>
 			<menu_item_call label="Mezzogiorno" name="Noon"/>
 			<menu_item_call label="Tramonto" name="Sunset"/>
 			<menu_item_call label="Mezzanotte" name="Midnight"/>
+			<menu_item_call label="Usa impostazioni regione" name="Use Region Settings"/>
 		</menu>
-		<menu label="Editor ambiente" name="Enviroment Editor">
-			<menu_item_call label="Impostazioni ambiente..." name="Enviroment Settings"/>
+		<menu label="Editor ambiente" name="Environment Editor">
+			<menu_item_call label="Impostazioni ambiente..." name="Environment Settings"/>
 			<menu label="Valori predefiniti acqua" name="Water Presets">
 				<menu_item_call label="Nuovo valore predefinito..." name="new_water_preset"/>
-				<menu_item_call label="Modifica valori predefiniti..." name="edit_water_preset"/>
+				<menu_item_call label="Modifica valore predefinito..." name="edit_water_preset"/>
 				<menu_item_call label="Cancella valore predefinito..." name="delete_water_preset"/>
 			</menu>
 			<menu label="Valori predefiniti cielo" name="Sky Presets">
 				<menu_item_call label="Nuovo valore predefinito..." name="new_sky_preset"/>
-				<menu_item_call label="Modifica valori predefiniti..." name="edit_sky_preset"/>
+				<menu_item_call label="Modifica valore predefinito..." name="edit_sky_preset"/>
 				<menu_item_call label="Cancella valore predefinito..." name="delete_sky_preset"/>
 			</menu>
-			<menu label="Valori predefiniti giornata" name="Day Presets">
+			<menu label="Valori predefiniti giorno" name="Day Presets">
 				<menu_item_call label="Nuovo valore predefinito..." name="new_day_preset"/>
-				<menu_item_call label="Modifica valori predefiniti..." name="edit_day_preset"/>
+				<menu_item_call label="Modifica valore predefinito..." name="edit_day_preset"/>
 				<menu_item_call label="Cancella valore predefinito..." name="delete_day_preset"/>
 			</menu>
 		</menu>
@@ -139,13 +144,14 @@
 			<menu_item_call label="Animazione ([COST] L$)..." name="Upload Animation"/>
 			<menu_item_call label="Modella..." name="Upload Model"/>
 			<menu_item_call label="In blocco ([COST] L$ per file)..." name="Bulk Upload"/>
+			<menu_item_call label="Definisci diritti di caricamento predefiniti" name="perm prefs"/>
 		</menu>
 		<menu_item_call label="Annulla" name="Undo"/>
 		<menu_item_call label="Ripeti" name="Redo"/>
 	</menu>
 	<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_check label="Attiva suggerimenti" name="Enable Hints"/>
 		<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"/>
@@ -161,7 +167,7 @@
 		<menu label="Strumenti di performance" name="Performance Tools">
 			<menu_item_call label="Misuratore lag" name="Lag Meter"/>
 			<menu_item_check label="Barra statistiche" name="Statistics Bar"/>
-			<menu_item_check label="Mostra costo di rendering dell&apos;avatar" name="Avatar Rendering Cost"/>
+			<menu_item_check label="Mostra peso visualizzazione per avatar" name="Avatar Rendering Cost"/>
 		</menu>
 		<menu label="Evidenziazione e visibilità" name="Highlighting and Visibility">
 			<menu_item_check label="Effetto marcatore lampeggiante" name="Cheesy Beacon"/>
@@ -198,11 +204,10 @@
 		<menu_item_check label="Usa thread lettura plugin" name="Use Plugin Read Thread"/>
 		<menu_item_call label="Pulisci cache di gruppo" name="ClearGroupCache"/>
 		<menu_item_check label="Fluidità mouse" name="Mouse Smoothing"/>
+		<menu_item_call label="Rilascia tasti" name="Release Keys"/>
 		<menu label="Scorciatoie" name="Shortcuts">
 			<menu_item_call label="Immagine ([COST]L$)..." name="Upload Image"/>
 			<menu_item_check label="Cerca" name="Search"/>
-			<menu_item_call label="Rilascia tasti" name="Release Keys"/>
-			<menu_item_call label="Imposta dimensioni dell&apos;interfaccia sui valori predefiniti" name="Set UI Size to Default"/>
 			<menu_item_check label="Mostra menu Avanzato - tasti di scelta rapida esistenti" name="Show Advanced Menu - legacy shortcut"/>
 			<menu_item_call label="Chiudi finestra" name="Close Window"/>
 			<menu_item_call label="Chiudi tutte le finestre" name="Close All Windows"/>
@@ -271,6 +276,8 @@
 			<menu_item_check label="Aggiorna tipo" name="Update Type"/>
 			<menu_item_check label="Info livello dettaglio" name="LOD Info"/>
 			<menu_item_check label="Crea coda" name="Build Queue"/>
+			<menu_item_check label="Vettori vento" name="Wind Vectors"/>
+			<menu_item_check label="Complessità rendering" name="rendercomplexity"/>
 			<menu_item_check label="Scolpisci" name="Sculpt"/>
 		</menu>
 		<menu label="Rendering" name="Rendering">
@@ -279,7 +286,6 @@
 			<menu_item_check label="Luci e ombre" name="Lighting and Shadows"/>
 			<menu_item_check label="Ombra dal sole, dalla luna e dai proiettori" name="Shadows from Sun/Moon/Projectors"/>
 			<menu_item_check label="SSAO e ombre fluide" name="SSAO and Shadow Smoothing"/>
-			<menu_item_check label="Illuminazione globale (sperimentale)" name="Global Illumination"/>
 			<menu_item_check label="Maschera alfa automatica (differita)" name="Automatic Alpha Masks (deferred)"/>
 			<menu_item_check label="Maschera alfa automatica (non differita)" name="Automatic Alpha Masks (non-deferred)"/>
 			<menu_item_check label="Texture delle animazioni" name="Animation Textures"/>
diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml
index ab9de43e6e93fbfe1434daf2b621085565fc0085..fcc515186df51bbdfa6c5af76daac22d0eab91d0 100644
--- a/indra/newview/skins/default/xui/it/notifications.xml
+++ b/indra/newview/skins/default/xui/it/notifications.xml
@@ -978,7 +978,7 @@ Offri l&apos;amicizia a [NAME]?
 		</form>
 	</notification>
 	<notification name="RemoveFromFriends">
-		Vuoi rimuovere [NAME] dalla lista dei tuoi amici?
+		Vuoi rimuovere &lt;nolink&gt;[NAME]&lt;/nolink&gt; dalla lista dei tuoi amici?
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="RemoveMultipleFromFriends">
@@ -1110,8 +1110,13 @@ Cedere questi [AREA] m² di terreno al gruppo &apos;[GROUP_NAME]&apos;?
 	<notification name="DisplaySetToSafe">
 		Le impostazioni dello schermo sono state impostate a valori di sicurezza perchè hai specificato l&apos;opzione -safe.
 	</notification>
-	<notification name="DisplaySetToRecommended">
-		Le impostazioni dello schermo sono state impostate a valori ottimali basati sulla tua configurazione di sistema.
+	<notification name="DisplaySetToRecommendedGPUChange">
+		Le impostazioni di visualizzazione sono ai livelli consigliati a causa di un cambiamento nella scheda grafica
+da &apos;[LAST_GPU]&apos;
+a &apos;[THIS_GPU]&apos;
+	</notification>
+	<notification name="DisplaySetToRecommendedFeatureChange">
+		Le impostazioni di visualizzazione sono ai livelli consigliati a causa di un cambiamento nel sottosistema di rendering.
 	</notification>
 	<notification name="ErrorMessage">
 		[ERROR_MESSAGE]
@@ -1432,7 +1437,7 @@ Per installare l&apos;aggiornamento è necessario riavviare [APP_NAME].
 		<usetemplate ignoretext="Conferma prima di restituire gli oggetti ai relativi proprietari" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="GroupLeaveConfirmMember">
-		Sei attualmente un membro del gruppo [GROUP].
+		Sei attualmente un membro del gruppo &lt;nolink&gt;[GROUP]&lt;/nolink&gt;.
 Vuoi lasciare il gruppo?
 		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
@@ -1915,6 +1920,18 @@ Trasferisci gli elementi nell&apos;inventario?
 		Confermi di voler uscire?
 		<usetemplate ignoretext="Conferma prima di uscire" name="okcancelignore" notext="Non uscire" yestext="Esci"/>
 	</notification>
+	<notification name="ConfirmRestoreToybox">
+		Questa azione ripristina pulsanti e barre degli strumenti predefinite.
+
+Questa azione non può essere ripristinata
+		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmClearAllToybox">
+		Questa azione riporterà tutti i pulsanti nella casella strumenti. Le barre degli strumenti saranno vuote.
+    
+Questa azione non può essere ripristinata
+		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
+	</notification>
 	<notification name="DeleteItems">
 		[QUESTION]
 		<usetemplate ignoretext="Conferma prima di cancellare gli elementi" name="okcancelignore" notext="Annulla" yestext="OK"/>
@@ -2119,10 +2136,10 @@ Verrà avviato il browser Web.
 		Oggetto: [SUBJECT], Messaggio: [MESSAGE]
 	</notification>
 	<notification name="FriendOnline">
-		[NAME] è Online
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; è online
 	</notification>
 	<notification name="FriendOffline">
-		[NAME] è Offline
+		&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.
@@ -2235,14 +2252,16 @@ Seleziona solo un oggetto.
 		Il tuo biglietto da visita non è stato accettato.
 	</notification>
 	<notification name="TeleportToLandmark">
-		Puoi teleportarti alle ubicazioni come &apos;[NAME]&apos; aprendo il pannello Luoghi sul lato destro dello schermo, quindi selezionare la scheda Punti di riferimento.
-Clicca su un punto di riferimento per selezionarlo, quindi clicca su Teleport sul lato inferiore del pannello.
-(Puoi anche fare doppio clic sul punto di riferimento oppure cliccare su di esso con il tasto destro del mouse e scegliere Teleport.)
+		Per teleportarti a luoghi come &apos;[NAME]&apos;, clicca sul pulsante &quot;Luoghi&quot;,
+    quindi seleziona la scheda Punti di riferimento nel pannello che viene aperto. Clicca su qualsiasi
+    unto di riferimento per selezionarlo, quindi clicca su Teleport sul lato inferiore del pannello.
+    (Puoi anche fare doppio clic sul punto di riferimento oppure cliccare su di esso con il tasto destro del mouse e 
+    scegliere Teleport.)
 	</notification>
 	<notification name="TeleportToPerson">
-		Puoi contattare il residente &apos;[NAME]&apos; aprendo il pannello Persone nel lato destro del tuo schermo.
-Seleziona il residente dall&apos;elenco, clicca su &apos;IM&apos; in basso nel pannello.
-(Puoi anche fare doppio clic sul nome nell&apos;elenco oppure fare clic con il pulsante destro del mouse e selezionare &apos;IM&apos;).
+		Per contattare Residenti come &apos;[NAME]&apos;, clicca sul pulsante &quot;Persone&quot;, seleziona un Residente nel pannello che viene aperto, quindi clicca su &apos;IM&apos; in
+    basso nel pannello.
+    (Puoi anche fare doppio clic sul nome nell&apos;elenco oppure fare clic con il pulsante destro del mouse e selezionare &apos;IM&apos;).
 	</notification>
 	<notification name="CantSelectLandFromMultipleRegions">
 		Non è possibile selezionare il terreno attraverso i confini del server.
@@ -2263,6 +2282,9 @@ Prova a selezionare una parte di terreno più piccola.
 	<notification name="PaymentSent">
 		[MESSAGE]
 	</notification>
+	<notification name="PaymentFailure">
+		[MESSAGE]
+	</notification>
 	<notification name="EventNotification">
 		Notifica eventi:
 
@@ -2514,10 +2536,10 @@ Riprova tra qualche istante.
 		</form>
 	</notification>
 	<notification name="FriendshipAccepted">
-		[NAME] ha accettato la tua offerta di amicizia.
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; ha accettato la tua richiesta di amicizia.
 	</notification>
 	<notification name="FriendshipDeclined">
-		[NAME] ha rifiutato la tua offerta di amicizia.
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; ha rifiutato la tua richiesta di amicizia.
 	</notification>
 	<notification name="FriendshipAcceptedByMe">
 		Offerta di amicizia accettata.
@@ -2794,7 +2816,7 @@ Per informazioni dettagliate, vedi il file del registro.
 Con i seguenti residenti?
 
 [RESIDENTS]
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Ok"/>
+		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification name="ItemsShared">
 		Gli oggetti sono stati condivisi.
@@ -2884,7 +2906,7 @@ In questo modo verrà disattivato l&apos;audio anche di tutti i residenti che si
 uniscono alla chiamata in un secondo momento, anche dopo che tu ti fossi scollegato.
 
 Disattiva audio di tutti?
-		<usetemplate ignoretext="Conferma prima di disattivare l&apos;audio di tutti i partecipanti alla chiamata di gruppo" name="okcancelignore" notext="Annulla" yestext="Ok"/>
+		<usetemplate ignoretext="Conferma prima di disattivare l&apos;audio di tutti i partecipanti alla chiamata di gruppo" name="okcancelignore" notext="Annulla" yestext="OK"/>
 	</notification>
 	<notification label="Chat" name="HintChat">
 		Per partecipare alla conversazione, digita nel campo chat in basso.
@@ -2997,10 +3019,6 @@ Clicca e trascina dovunque nel mondo per ruotare la visuale
 			<button name="cancel" text="Annulla"/>
 		</form>
 	</notification>
-	<notification label="" name="ModeChange">
-		Per cambiare la modalità è necessario uscire e riavviare.
-		<usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
-	</notification>
 	<notification label="" name="NoClassifieds">
 		La creazione e la modifica degli annunci sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità.
 		<usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
@@ -3045,6 +3063,10 @@ Clicca e trascina dovunque nel mondo per ruotare la visuale
 		La ricerca è disponibile solo in modalità Avanzata. Eseguire il logout e cambiare la modalità?
 		<usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
 	</notification>
+	<notification label="" name="ConfirmHideUI">
+		Questa azione cancellerà tutte le voci di menu e i pulsanti. Per visualizzarli nuovamente cliccare ancora [SHORTCUT].
+		<usetemplate ignoretext="Conferma prima di nascondere l&apos;interfaccia" name="okcancelignore" notext="Annulla" yestext="OK"/>
+	</notification>
 	<global name="UnsupportedGLRequirements">
 		Non sembra che tu abbia i requisiti hardware adeguati per [APP_NAME]. [APP_NAME] richiede una scheda grafica OpenGL con supporto multitexture. Se ne hai una in dotazione, accertati di avere i driver, i service pack e i patch più recenti per la scheda grafica e per il sistema operativo.
 
diff --git a/indra/newview/skins/default/xui/it/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/it/panel_chiclet_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..66bf3f140f64a3d2519c8edd28f8ef7a980af74c
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="Conversazioni"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="Notifiche"/>
+			</chiclet_notification>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_edit_skin.xml b/indra/newview/skins/default/xui/it/panel_edit_skin.xml
index a15489b333a9dfe9ef759d9ad0dc429497211d5a..466eff27080bcedbe990baa105ef2a3c00528279 100644
--- a/indra/newview/skins/default/xui/it/panel_edit_skin.xml
+++ b/indra/newview/skins/default/xui/it/panel_edit_skin.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_skin_panel">
 	<panel name="avatar_skin_color_panel">
-		<texture_picker label="Tatuaggi testa" name="Head Tattoos" tool_tip="Clicca per scegliere una fotografia"/>
-		<texture_picker label="Tatuaggi superiori" name="Upper Tattoos" tool_tip="Clicca per scegliere una fotografia"/>
-		<texture_picker label="Tatuaggi inferiori" name="Lower Tattoos" tool_tip="Clicca per scegliere una fotografia"/>
+		<texture_picker label="Testa" name="Head" tool_tip="Clicca per scegliere una fotografia"/>
+		<texture_picker label="Parte superiore del corpo" name="Upper Body" tool_tip="Clicca per scegliere una fotografia"/>
+		<texture_picker label="Parte inferiore del corpo" name="Lower Body" tool_tip="Clicca per scegliere una fotografia"/>
 	</panel>
 	<panel name="accordion_panel">
 		<accordion name="wearable_accordion">
diff --git a/indra/newview/skins/default/xui/it/panel_me.xml b/indra/newview/skins/default/xui/it/panel_me.xml
index 66601aa1653aedf32b1ff990ac9f60db51cbbf66..a134f6f1decf8cb88e7169e2181dbeaa648394a4 100644
--- a/indra/newview/skins/default/xui/it/panel_me.xml
+++ b/indra/newview/skins/default/xui/it/panel_me.xml
@@ -1,7 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Il mio profilo" name="panel_me">
-	<tab_container name="tabs">
-		<panel label="IL MIO PROFILO" name="panel_profile"/>
-		<panel label="I MIEI PREFERITI" name="panel_picks"/>
-	</tab_container>
+	<panel label="I MIEI PREFERITI" name="panel_picks"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_my_profile.xml b/indra/newview/skins/default/xui/it/panel_my_profile.xml
deleted file mode 100644
index 094b97962f4ecff95d33b5d3050bffbdf4db3d68..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/it/panel_my_profile.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profilo" name="panel_profile">
-	<string name="no_partner_text" value="Nessuno"/>
-	<string name="no_group_text" value="Nessuno"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="scroll_content_panel">
-					<panel name="second_life_image_panel">
-						<text name="display_name_descr_text">
-							Nome utente
-						</text>
-						<text name="name_descr_text">
-							Nome visualizzato
-						</text>
-						<button label="Profilo" name="see_profile_btn" tool_tip="Visualizza profilo per questo avatar"/>
-					</panel>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_navigation_bar.xml b/indra/newview/skins/default/xui/it/panel_navigation_bar.xml
index 8e7216775914cf62fd663aceca2ad6bcafcbf884..0299e2a5323ed1978b9c1a4c545e1be527ab6e59 100644
--- a/indra/newview/skins/default/xui/it/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/it/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="Torna al luogo precedente"/>
-		<pull_button name="forward_btn" tool_tip="Procedi un luogo in avanti"/>
-		<button name="home_btn" tool_tip="Teleport a casa"/>
-		<location_input label="Posizione" name="location_combo"/>
-		<search_combo_box label="Cerca" name="search_combo_box" tool_tip="Cerca">
-			<combo_editor label="Cerca [SECOND_LIFE]" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life.">
-		<label name="favorites_bar_label" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life.">
-			Barra dei Preferiti
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="Mostra altri Preferiti"/>
-	</favorites_bar>
+	<layout_stack name="nvp_stack">
+		<layout_panel name="navigation_layout_panel">
+			<panel name="navigation_panel">
+				<pull_button name="back_btn" tool_tip="Torna al luogo precedente"/>
+				<pull_button name="forward_btn" tool_tip="Procedi un luogo in avanti"/>
+				<button name="home_btn" tool_tip="Teleport a casa"/>
+				<location_input label="Posizione" name="location_combo"/>
+			</panel>
+		</layout_panel>
+		<layout_panel name="favorites_layout_panel">
+			<favorites_bar name="favorite" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life.">
+				<label name="favorites_bar_label" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life.">
+					Barra dei Preferiti
+				</label>
+				<more_button name="&gt;&gt;" tool_tip="Mostra altri Preferiti">
+					Altro â–¼
+				</more_button>
+			</favorites_bar>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_nearby_chat.xml b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1b529e2737cf403c303ac640efc6d406d1424dbc
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+	<check_box label="Traduci chat" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_notes.xml b/indra/newview/skins/default/xui/it/panel_notes.xml
deleted file mode 100644
index e1271382778eac78893d8d87a1d16fbe11f301d2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/it/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Note e Privacy" name="panel_notes">
-	<layout_stack name="layout">
-		<layout_panel name="notes_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<text name="status_message" value="Le mie note private:"/>
-					<text name="status_message2" value="Consenti a questa persona di:"/>
-					<check_box label="Vedere se sono online" name="status_check"/>
-					<check_box label="Vedermi sulla mappa" name="map_check"/>
-					<check_box label="Modificare, eliminare o prendere i miei oggetti" name="objects_check"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-		<layout_panel name="notes_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="Aggiungi come amico" name="add_friend" tool_tip="Offri amicizia a questo residente"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="IM" name="im" tool_tip="Apri una sessione messaggio istantaneo"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="Chiama" name="call" tool_tip="Chiama questo residente"/>
-				</layout_panel>
-				<layout_panel name="show_on_map_btn_lp">
-					<button label="Mappa" name="show_on_map_btn" tool_tip="Mostra il residente sulla mappa"/>
-				</layout_panel>
-				<layout_panel name="teleport_btn_lp">
-					<button label="Teleport" name="teleport" tool_tip="Offri teleport"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_postcard_message.xml b/indra/newview/skins/default/xui/it/panel_postcard_message.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c720f4822dcc0f6ed703236164e748cbac7ab260
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_postcard_message.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_message">
+	<text name="to_label">
+		A:
+	</text>
+	<text name="name_label">
+		Da:
+	</text>
+	<text name="subject_label">
+		Oggetto:
+	</text>
+	<line_editor label="Digita qui l&apos;oggetto." name="subject_form"/>
+	<text name="msg_label">
+		Messaggio:
+	</text>
+	<text_editor name="msg_form">
+		Digita qui il messaggio.
+	</text_editor>
+	<button label="Annulla" name="cancel_btn"/>
+	<button label="Invia" name="send_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_postcard_settings.xml b/indra/newview/skins/default/xui/it/panel_postcard_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6a586c44155ee3b7dbc07da87a8c82ed5f21596f
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_postcard_settings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_settings">
+	<combo_box label="Risoluzione" name="postcard_size_combo">
+		<combo_box.item label="Finestra attuale" name="CurrentWindow"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="Personalizza" name="Custom"/>
+	</combo_box>
+	<layout_stack name="postcard_image_params_ls">
+		<layout_panel name="postcard_image_size_lp">
+			<spinner label="Larghezza" name="postcard_snapshot_width"/>
+			<spinner label="Altezza" name="postcard_snapshot_height"/>
+			<check_box label="Mantieni le proporzioni" name="postcard_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="postcard_image_format_quality_lp">
+			<slider label="Qualità dell&apos;immagine" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+</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 2834d520d1f5c4f9438f00f544695cf4cc6eef51..7f5992b58452499f316203aafa23b76fcda099a0 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_chat.xml
@@ -29,30 +29,5 @@
 	<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"/>
-	<check_box label="Use machine translation while chatting (powered by Google)" name="translate_chat_checkbox"/>
-	<text name="translate_chb_label">
-		Usa la traduzione meccanica durante le chat (tecnologia Google)
-	</text>
-	<text name="translate_language_text" width="110">
-		Traduci chat in:
-	</text>
-	<combo_box name="translate_language_combobox" width="146">
-		<combo_box.item label="Default di sistema" name="System Default Language"/>
-		<combo_box.item label="English (Inglese)" name="English"/>
-		<combo_box.item label="Dansk (Danese)" name="Danish"/>
-		<combo_box.item label="Deutsch (Tedesco)" name="German"/>
-		<combo_box.item label="Español (Spagnolo)" name="Spanish"/>
-		<combo_box.item label="Français (Francese)" name="French"/>
-		<combo_box.item label="Italiano" name="Italian"/>
-		<combo_box.item label="Magyar (Ungherese)" name="Hungarian"/>
-		<combo_box.item label="Nederlands (Olandese)" name="Dutch"/>
-		<combo_box.item label="Polski (Polacco)" name="Polish"/>
-		<combo_box.item label="Português (Portoghese)" name="Portugese"/>
-		<combo_box.item label="Русский (Russo)" name="Russian"/>
-		<combo_box.item label="Türkçe (Turco)" name="Turkish"/>
-		<combo_box.item label="Українська (Ucraino)" name="Ukrainian"/>
-		<combo_box.item label="中文 (简体) (Cinese)" name="Chinese"/>
-		<combo_box.item label="日本語 (Giapponese)" name="Japanese"/>
-		<combo_box.item label="한국어 (Coreano)" name="Korean"/>
-	</combo_box>
+	<button label="Impostazioni traduzione chat" name="ok_btn"/>
 </panel>
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 c576b5f9d8b3b66bc7d426051a4a7f9f2fa3d32d..90a833471ceb4a019974a91346eae64ffce6f8ff 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_general.xml
@@ -11,10 +11,12 @@
 		<combo_box.item label="Español (Spagnolo) - Beta" name="Spanish"/>
 		<combo_box.item label="Français (Francese) - Beta" name="French"/>
 		<combo_box.item label="Italiano - Beta" name="Italian"/>
-		<combo_box.item label="Nederlands (Olandese) - Beta" name="Dutch"/>
 		<combo_box.item label="Polski (Polacco) - Beta" name="Polish"/>
 		<combo_box.item label="Português (Portoghese) - Beta" name="Portugese"/>
+		<combo_box.item label="Русский (Russo) - Beta" name="Russian"/>
+		<combo_box.item label="Türkçe (Turco) - Beta" name="Turkish"/>
 		<combo_box.item label="日本語 (Giapponese) - Beta" name="(Japanese)"/>
+		<combo_box.item label="正體中文 (Cinese tradizionale) - Beta" name="Traditional Chinese"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(Richiede il riavvio)
@@ -49,7 +51,6 @@
 	<check_box label="TItoli gruppo" name="show_all_title_checkbox1" tool_tip="Mostra titoli di gruppo, come Funzionario o Membro"/>
 	<check_box label="Evidenzia amici" name="show_friends" tool_tip="Evidenzia le etichette dei nomi dei tuoi amici"/>
 	<check_box label="Mostra nomi visualizzati" name="display_names_check" tool_tip="Seleziona per visualizzare i nomi in chat, IM, etichette, ecc."/>
-	<check_box label="Attiva suggerimenti UI Viewer" name="viewer_hints_check"/>
 	<text name="inworld_typing_rg_label">
 		Premere i tasti lettera:
 	</text>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_move.xml b/indra/newview/skins/default/xui/it/panel_preferences_move.xml
index 56d75bb3e3da06fe191e6d1d083565cfbb764d61..8d172bb8bb4779f885753da9234e2588b235781b 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_move.xml
@@ -7,18 +7,33 @@
 	</text>
 	<check_box label="Costruire/Modificare" name="edit_camera_movement" tool_tip="Utilizza il posizionamento automatico della fotocamera entrando o uscendo dalla modalità modifica"/>
 	<check_box label="Aspetto fisico" name="appearance_camera_movement" tool_tip="Utilizza il posizionamento automatico della camera in modalità modifica"/>
-	<check_box initial_value="vero" label="Barra laterale" name="appearance_sidebar_positioning" tool_tip="Utilizza il posizionamento automatico della fotocamera per la barra laterale"/>
+	<text name="keyboard_lbl">
+		Tastiera:
+	</text>
+	<check_box label="Le frecce di direzione mi fanno sempre spostare" name="arrow_keys_move_avatar_check"/>
+	<check_box label="Doppio click e tieni premuto per correre" name="tap_tap_hold_to_run"/>
+	<text name="mouse_lbl">
+		Mouse:
+	</text>
 	<check_box label="Mostra in modalità Mouselook" name="first_person_avatar_visible"/>
 	<text name=" Mouse Sensitivity">
 		Sensibilità mouse visuale soggettiva:
 	</text>
 	<check_box label="Inverti" name="invert_mouse"/>
-	<check_box label="Le frecce di direzione mi fanno sempre spostare" name="arrow_keys_move_avatar_check"/>
-	<check_box label="Doppio click e tieni premuto per correre" name="tap_tap_hold_to_run"/>
-	<check_box label="Doppio clic per:" name="double_click_chkbox"/>
-	<radio_group name="double_click_action">
-		<radio_item label="Teleport" name="radio_teleport"/>
-		<radio_item label="Autopilota" name="radio_autopilot"/>
-	</radio_group>
+	<text name="single_click_action_lbl">
+		Un solo clic sul terreno:
+	</text>
+	<combo_box name="single_click_action_combo">
+		<combo_box.item label="Nessuna azione" name="0"/>
+		<combo_box.item label="Passa al punto cliccato" name="1"/>
+	</combo_box>
+	<text name="double_click_action_lbl">
+		Doppio clic sul terreno:
+	</text>
+	<combo_box name="double_click_action_combo">
+		<combo_box.item label="Nessuna azione" name="0"/>
+		<combo_box.item label="Passa al punto cliccato" name="1"/>
+		<combo_box.item label="Teleport al punto cliccato" name="2"/>
+	</combo_box>
 	<button label="Altri dispositivi" name="joystick_setup_button"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml
index bf784321108185a0385d5ce212469861bd1cf38e..0189d47f45e6bdd5976403693bc0989b6b4dbd70 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml
@@ -15,7 +15,7 @@
 		Web:
 	</text>
 	<radio_group name="use_external_browser">
-		<radio_item label="Usa il mio browser (IE, Firefox, Safari)" name="external" tool_tip="Utilizza il browser Web predefinito di sistema per l&apos;aiuto, per i link Web e così via. Sconsigliato durante l&apos;esecuzione a tutto schermo." value="1"/>
+		<radio_item label="Usa il mio browser (IE, Firefox, Safari)" name="external" tool_tip="Utilizza il browser Web predefinito di sistema per l&apos;aiuto, per i link Web e così via. Sconsigliato durante l&apos;esecuzione a tutto schermo." value="true"/>
 		<radio_item label="Utilizza il browser Web integrato" name="internal" tool_tip="Utilizza il browser Web integrato per l&apos;aiuto, per i link Web e così via. Questo browser si apre in una nuova finestra in [APP_NAME]." value=""/>
 	</radio_group>
 	<check_box initial_value="true" label="Abilita plugin" name="browser_plugins_enabled"/>
diff --git a/indra/newview/skins/default/xui/it/panel_profile.xml b/indra/newview/skins/default/xui/it/panel_profile.xml
deleted file mode 100644
index 309937c5a01a84bb35240a7ff87ecb7dde658d99..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/it/panel_profile.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profilo" name="panel_profile">
-	<string name="CaptionTextAcctInfo">
-		[ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
-	</string>
-	<string name="payment_update_link_url">
-		http://www.secondlife.com/account/billing.php?lang=it-IT
-	</string>
-	<string name="partner_edit_link_url">
-		http://www.secondlife.com/account/partners.php?lang=it
-	</string>
-	<string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=it-IT"/>
-	<string name="no_partner_text" value="Nessuno"/>
-	<string name="no_group_text" value="Nessuno"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<panel name="second_life_image_panel">
-						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
-					</panel>
-					<panel name="first_life_image_panel">
-						<text name="title_rw_descr_text" value="Mondo reale:"/>
-					</panel>
-					<text name="title_member_text" value="Residente dal:"/>
-					<text name="title_acc_status_text" value="Stato account:"/>
-					<text name="title_partner_text" value="Partner:"/>
-					<panel name="partner_data_panel">
-						<text initial_value="(recupero)" name="partner_text"/>
-					</panel>
-					<text name="title_groups_text" value="Gruppi:"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-	<layout_stack name="layout_verb_buttons">
-		<layout_panel name="profile_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="Aggiungi come amico" name="add_friend" tool_tip="Offri amicizia a questo residente"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="IM" name="im" tool_tip="Apri una sessione messaggio istantaneo"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="Chiama" name="call" tool_tip="Chiama questo residente"/>
-				</layout_panel>
-				<layout_panel name="chat_btn_lp">
-					<button label="Teleport" name="teleport" tool_tip="Offri teleport"/>
-				</layout_panel>
-				<layout_panel name="overflow_btn_lp">
-					<menu_button label="â–¼" name="overflow_btn" tool_tip="Paga del denaro o condividi qualcosa dall&apos;inventario con il residente"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="profile_me_buttons_panel">
-			<button label="Modifica profilo" name="edit_profile_btn" tool_tip="Modifica le tue informazioni personali"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_profile_view.xml b/indra/newview/skins/default/xui/it/panel_profile_view.xml
deleted file mode 100644
index 409eb5d1f40ade32789337ef63c3f83dff59d5de..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/it/panel_profile_view.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
-	<string name="status_online">
-		Online
-	</string>
-	<string name="status_offline">
-		Offline
-	</string>
-	<text name="display_name_label" value="Nome visualizzato:"/>
-	<text name="solo_username_label" value="Nome utente:"/>
-	<text name="status" value="Online"/>
-	<text name="user_name_small" value="Jack guarda quanto è lungo questo splendido nome"/>
-	<text name="user_name" value="Jack Linden"/>
-	<button name="copy_to_clipboard" tool_tip="Copia negli appunti"/>
-	<text name="user_label" value="Nome utente:"/>
-	<text name="user_slid" value="jack.linden"/>
-	<tab_container name="tabs">
-		<panel label="PROFILO" name="panel_profile"/>
-		<panel label="LUOGHI CONSIGLIATI" name="panel_picks"/>
-		<panel label="NOTE E PRIVACY" name="panel_notes"/>
-	</tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/it/panel_snapshot_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c9245029b71c5a4094c512e0a2aea5ff2bcc6954
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_snapshot_inventory.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_inventory">
+	<text name="title">
+		Salva nell&apos;inventario
+	</text>
+	<text name="hint_lbl">
+		Salvare un&apos;immagine nell&apos;inventario costa L$[UPLOAD_COST]. Per salvare l&apos;immagine come texture, selezionare uno dei formati quadrati.
+	</text>
+	<combo_box label="Risoluzione" name="texture_size_combo">
+		<combo_box.item label="Finestra attuale" name="CurrentWindow"/>
+		<combo_box.item label="Piccola (128x128)" name="Small(128x128)"/>
+		<combo_box.item label="Media (256x256)" name="Medium(256x256)"/>
+		<combo_box.item label="Grande (512x512)" name="Large(512x512)"/>
+		<combo_box.item label="Personalizza" name="Custom"/>
+	</combo_box>
+	<spinner label="Larghezza" name="inventory_snapshot_width"/>
+	<spinner label="Altezza" name="inventory_snapshot_height"/>
+	<check_box label="Mantieni le proporzioni" name="inventory_keep_aspect_check"/>
+	<button label="Annulla" name="cancel_btn"/>
+	<button label="Salva" name="save_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_local.xml b/indra/newview/skins/default/xui/it/panel_snapshot_local.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4b725b68f97455031673cf47dee6e895ab82f118
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_snapshot_local.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_local">
+	<text name="title">
+		Salva sul mio computer
+	</text>
+	<combo_box label="Risoluzione" name="local_size_combo">
+		<combo_box.item label="Finestra attuale" name="CurrentWindow"/>
+		<combo_box.item label="320x240" name="320x240"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="1280x1024" name="1280x1024"/>
+		<combo_box.item label="1600x1200" name="1600x1200"/>
+		<combo_box.item label="Personalizza" name="Custom"/>
+	</combo_box>
+	<layout_stack name="local_image_params_ls">
+		<layout_panel name="local_image_size_lp">
+			<spinner label="Larghezza" name="local_snapshot_width"/>
+			<spinner label="Altezza" name="local_snapshot_height"/>
+			<check_box label="Mantieni le proporzioni" name="local_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="local_image_format_quality_lp">
+			<combo_box label="Formato" name="local_format_combo">
+				<combo_box.item label="PNG (senza perdite)" name="PNG"/>
+				<combo_box.item label="JPEG" name="JPEG"/>
+				<combo_box.item label="BMP (senza perdite)" name="BMP"/>
+			</combo_box>
+			<slider label="Qualità dell&apos;immagine" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+	<button label="Annulla" name="cancel_btn"/>
+	<flyout_button label="Salva" name="save_btn" tool_tip="Salva immagine come file">
+		<flyout_button.item label="Salva" name="save_item"/>
+		<flyout_button.item label="Salva con nome..." name="saveas_item"/>
+	</flyout_button>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_options.xml b/indra/newview/skins/default/xui/it/panel_snapshot_options.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f2d42c5197b09c722770b7da6c1d23c32a4917c2
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_snapshot_options.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_options">
+	<button label="Invia post al feed del mio profilo" name="save_to_profile_btn"/>
+	<button label="E-mail" name="save_to_email_btn"/>
+	<button label="Salva nell&apos;inventario (L$[AMOUNT])" name="save_to_inventory_btn"/>
+	<button label="Salva sul mio computer" name="save_to_computer_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/it/panel_snapshot_postcard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3703b97e6cef9d78e354c3f64e0a6b98e8e20c2f
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_snapshot_postcard.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_postcard">
+	<string name="default_subject">
+		Cartolina da [SECOND_LIFE].
+	</string>
+	<string name="default_message">
+		Dai un&apos;occhiata!
+	</string>
+	<string name="upload_message">
+		Invio...
+	</string>
+	<text name="title">
+		E-mail
+	</text>
+	<button label="Messaggio" name="message_btn"/>
+	<button label="Impostazioni" name="settings_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/it/panel_snapshot_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2cdbf970498b53004b48b7e0a31e485eb26b6d93
--- /dev/null
+++ b/indra/newview/skins/default/xui/it/panel_snapshot_profile.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_profile">
+	<text name="title">
+		Invia post al feed del mio profilo
+	</text>
+	<combo_box label="Risoluzione" name="profile_size_combo">
+		<combo_box.item label="Finestra attuale" name="CurrentWindow"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="Personalizza" name="Custom"/>
+	</combo_box>
+	<layout_stack name="profile_image_params_ls">
+		<layout_panel name="profile_image_size_lp">
+			<spinner label="Larghezza" name="profile_snapshot_width"/>
+			<spinner label="Altezza" name="profile_snapshot_height"/>
+			<check_box label="Mantieni le proporzioni" name="profile_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="profile_image_metadata_lp">
+			<text name="caption_label">
+				Didascalia:
+			</text>
+			<check_box initial_value="true" label="Includi luogo" name="add_location_cb"/>
+		</layout_panel>
+	</layout_stack>
+	<button label="Annulla" name="cancel_btn"/>
+	<button label="Post" name="post_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_status_bar.xml b/indra/newview/skins/default/xui/it/panel_status_bar.xml
index 0569107999bfa908cc4fc9b7892c52dd51c4e38d..4abc90113f4cbb7322cb956b6cc425b184e0b8c5 100644
--- a/indra/newview/skins/default/xui/it/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/it/panel_status_bar.xml
@@ -17,12 +17,9 @@
 	</panel.string>
 	<panel name="balance_bg">
 		<text name="balance" tool_tip="Clicca per aggiornare il tuo saldo in L$" value="L$ 20"/>
-		<button label="ACQUISTA L$" name="buyL" tool_tip="Clicca per acquistare più L$"/>
+		<button label="Acquista L$" name="buyL" tool_tip="Clicca per acquistare più L$"/>
+		<button label="Acquisti" name="goShop" tool_tip="Apri Mercato Second Life" width="75"/>
 	</panel>
-	<combo_box name="mode_combo" tool_tip="Seleziona la modalità. Seleziona Di base per esplorare facilmente e rapidamente e per la chat. Seleziona Avanzata per accedere ad altre funzionalità.">
-		<combo_box.item label="Modalità di base" name="Basic"/>
-		<combo_box.item label="Modalità Avanzata" name="Advanced"/>
-	</combo_box>
 	<text name="TimeText" tool_tip="Orario attuale (Pacifico)">
 		24:00, ora del Pacifico
 	</text>
diff --git a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml
index 54fa6df407041b28f4d211bd6d6116a5d663c05e..5d6c7681f9a00b94db714083ad68d940688fb2fc 100644
--- a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml
@@ -14,7 +14,7 @@
 							</string>
 							<button label="Oggetti ricevuti" name="inbox_btn"/>
 							<text name="inbox_fresh_new_count">
-								[NUM] Nuovo
+								[NUM] nuovi
 							</text>
 							<panel tool_tip="Drag and drop items to your inventory to manage and use them">
 								<text name="inbox_inventory_placeholder">
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index 9918934e122d7af015f2fada9eadf295e519fe10..c81dd0f55d50a1536cc2179c7ceb7228c2308096 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -40,6 +40,9 @@
 	<string name="ProgressChangingResolution">
 		Modifica della risoluzione...
 	</string>
+	<string name="Fullbright">
+		Luminosità massima (vers. precedente)
+	</string>
 	<string name="LoginInProgress">
 		In connessione. [APP_NAME] può sembrare rallentata.  Attendi.
 	</string>
@@ -74,7 +77,7 @@
 		Elaborazione risposta...
 	</string>
 	<string name="LoginInitializingWorld">
-		Inizializzazione...
+		Inizializzazione mondo...
 	</string>
 	<string name="LoginDecodingImages">
 		Decodifica immagini...
@@ -589,6 +592,9 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="mesh">
 		reticolo
 	</string>
+	<string name="AvatarEditingAppearance">
+		(Modifica Aspetto)
+	</string>
 	<string name="AvatarAway">
 		Assente
 	</string>
@@ -1199,7 +1205,7 @@ Prova ad accedere nuovamente tra un minuto.
 		Non hai una copia di questa texture nel tuo inventario
 	</string>
 	<string name="InventoryInboxNoItems">
-		Gli elementi acquistati attraverso il mercato verranno consegnati qui
+		Quando acquisti o ricevi un oggetto, verrà visualizzato qui per permetterti di trascinarlo in una cartella dell&apos;inventario o di cancellarlo se non desideri mantenerlo.
 	</string>
 	<string name="MarketplaceURL">
 		http://marketplace.[DOMAIN_NAME]/learn_more
@@ -1261,6 +1267,9 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="Marketplace Error Internal Import">
 		Errore: problema con questo elemento. Riprova più tardi.
 	</string>
+	<string name="Open landmarks">
+		Apri luoghi di riferimento
+	</string>
 	<string name="no_transfer" value="(nessun trasferimento)"/>
 	<string name="no_modify" value="(nessuna modifica)"/>
 	<string name="no_copy" value="(nessuna copia)"/>
@@ -1388,6 +1397,9 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="no_attachments">
 		Nessun allegato indossato
 	</string>
+	<string name="Attachments remain">
+		Allegati ([COUNT] spazi restanti)
+	</string>
 	<string name="Buy">
 		Acquista
 	</string>
@@ -1514,6 +1526,12 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="Right Pec">
 		Petto destro
 	</string>
+	<string name="Neck">
+		Collo
+	</string>
+	<string name="Avatar Center">
+		Centro avatar
+	</string>
 	<string name="Invalid Attachment">
 		Punto di collegamento non valido
 	</string>
@@ -3931,6 +3949,18 @@ Se il messaggio persiste, contatta [SUPPORT_SITE].
 	<string name="you_paid_ldollars_no_name">
 		Hai pagato L$ [AMOUNT] [REASON].
 	</string>
+	<string name="you_paid_failure_ldollars">
+		Non hai pagato [NAME] L$[AMOUNT] [REASON].
+	</string>
+	<string name="you_paid_failure_ldollars_no_info">
+		Non hai pagato L$ [AMOUNT].
+	</string>
+	<string name="you_paid_failure_ldollars_no_reason">
+		Non hai pagato [NAME] L$[AMOUNT].
+	</string>
+	<string name="you_paid_failure_ldollars_no_name">
+		Non hai pagato L$ [AMOUNT] [REASON].
+	</string>
 	<string name="for item">
 		per [ITEM]
 	</string>
@@ -4158,7 +4188,7 @@ Segnala abuso
 	<string name="Female - Wow">
 		Femmina - Accipicchia
 	</string>
-	<string name="/bow1">
+	<string name="/bow">
 		/inchino
 	</string>
 	<string name="/clap">
@@ -4341,6 +4371,12 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
 	<string name="ExternalEditorFailedToRun">
 		L&apos;editor esterno non è stato avviato.
 	</string>
+	<string name="TranslationFailed">
+		Traduzione non riuscita: [REASON]
+	</string>
+	<string name="TranslationResponseParseError">
+		Errore di elaborazione della risposta della traduzione.
+	</string>
 	<string name="Esc">
 		Esc
 	</string>
@@ -4671,4 +4707,196 @@ Prova a racchiudere il percorso dell&apos;editor in doppie virgolette.
 	<string name="ParticleHiding">
 		Particelle nascoste
 	</string>
+	<string name="Command_AboutLand_Label">
+		Informazioni sul terreno
+	</string>
+	<string name="Command_Appearance_Label">
+		Aspetto fisico
+	</string>
+	<string name="Command_Avatar_Label">
+		Avatar
+	</string>
+	<string name="Command_Build_Label">
+		Costruisci
+	</string>
+	<string name="Command_Chat_Label">
+		Chat
+	</string>
+	<string name="Command_Compass_Label">
+		Bussola
+	</string>
+	<string name="Command_Destinations_Label">
+		Destinazioni
+	</string>
+	<string name="Command_Gestures_Label">
+		Gesture
+	</string>
+	<string name="Command_HowTo_Label">
+		Istruzioni
+	</string>
+	<string name="Command_Inventory_Label">
+		Inventario
+	</string>
+	<string name="Command_Map_Label">
+		Mappa
+	</string>
+	<string name="Command_Marketplace_Label">
+		Mercato
+	</string>
+	<string name="Command_MiniMap_Label">
+		Mini mappa
+	</string>
+	<string name="Command_Move_Label">
+		Cammina / corri / vola
+	</string>
+	<string name="Command_People_Label">
+		Persone
+	</string>
+	<string name="Command_Picks_Label">
+		Preferiti
+	</string>
+	<string name="Command_Places_Label">
+		Luoghi
+	</string>
+	<string name="Command_Preferences_Label">
+		Preferenze
+	</string>
+	<string name="Command_Profile_Label">
+		Profilo
+	</string>
+	<string name="Command_Search_Label">
+		Ricerca
+	</string>
+	<string name="Command_Snapshot_Label">
+		Istantanea
+	</string>
+	<string name="Command_Speak_Label">
+		Parla
+	</string>
+	<string name="Command_View_Label">
+		Controlli fotocamera
+	</string>
+	<string name="Command_Voice_Label">
+		Impostazioni voce
+	</string>
+	<string name="Command_AboutLand_Tooltip">
+		Informazioni sul terreno che visiti
+	</string>
+	<string name="Command_Appearance_Tooltip">
+		Cambia l&apos;avatar
+	</string>
+	<string name="Command_Avatar_Tooltip">
+		Seleziona un avatar completo
+	</string>
+	<string name="Command_Build_Tooltip">
+		Costruzione oggetti e modifica terreno
+	</string>
+	<string name="Command_Chat_Tooltip">
+		Chatta con persone vicine usando il testo
+	</string>
+	<string name="Command_Compass_Tooltip">
+		Bussola
+	</string>
+	<string name="Command_Destinations_Tooltip">
+		Destinazioni interessanti
+	</string>
+	<string name="Command_Gestures_Tooltip">
+		Gesti per il tuo avatar
+	</string>
+	<string name="Command_HowTo_Tooltip">
+		Come eseguire le attività più comuni
+	</string>
+	<string name="Command_Inventory_Tooltip">
+		Visualizza e usa le tue cose
+	</string>
+	<string name="Command_Map_Tooltip">
+		Mappa del mondo
+	</string>
+	<string name="Command_Marketplace_Tooltip">
+		Vai allo shopping
+	</string>
+	<string name="Command_MiniMap_Tooltip">
+		Mostra le persone vicine
+	</string>
+	<string name="Command_Move_Tooltip">
+		Movimento avatar
+	</string>
+	<string name="Command_People_Tooltip">
+		Amici, gruppi e persone vicine
+	</string>
+	<string name="Command_Picks_Tooltip">
+		Luoghi da mostrare come preferiti nel profilo
+	</string>
+	<string name="Command_Places_Tooltip">
+		Luoghi salvati
+	</string>
+	<string name="Command_Preferences_Tooltip">
+		Preferenze
+	</string>
+	<string name="Command_Profile_Tooltip">
+		Modifica o visualizza il tuo profilo
+	</string>
+	<string name="Command_Search_Tooltip">
+		Trova luoghi, eventi, persone
+	</string>
+	<string name="Command_Snapshot_Tooltip">
+		Scatta una foto
+	</string>
+	<string name="Command_Speak_Tooltip">
+		Parla con persone vicine usando il microfono
+	</string>
+	<string name="Command_View_Tooltip">
+		Modifica angolo fotocamera
+	</string>
+	<string name="Command_Voice_Tooltip">
+		I controlli per il volume per le chiamate e per le persone nelle vicinanze nel mondo virtuale
+	</string>
+	<string name="Toolbar_Bottom_Tooltip">
+		attualmente nella barra degli strumenti in basso
+	</string>
+	<string name="Toolbar_Left_Tooltip">
+		attualmente nella barra degli strumenti a sinistra
+	</string>
+	<string name="Toolbar_Right_Tooltip">
+		attualmente nella barra degli strumenti a destra
+	</string>
+	<string name="Retain%">
+		Mantieni%
+	</string>
+	<string name="Detail">
+		Dettagli
+	</string>
+	<string name="Better Detail">
+		Migliori dettagli
+	</string>
+	<string name="Surface">
+		Superficie
+	</string>
+	<string name="Solid">
+		Solido
+	</string>
+	<string name="Wrap">
+		Involucro
+	</string>
+	<string name="Preview">
+		Anteprima
+	</string>
+	<string name="Normal">
+		Normale
+	</string>
+	<string name="snapshot_quality_very_low">
+		Molto basso
+	</string>
+	<string name="snapshot_quality_low">
+		Basso
+	</string>
+	<string name="snapshot_quality_medium">
+		Medio
+	</string>
+	<string name="snapshot_quality_high">
+		Alto
+	</string>
+	<string name="snapshot_quality_very_high">
+		Molto alto
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/it/teleport_strings.xml b/indra/newview/skins/default/xui/it/teleport_strings.xml
index 7a1046abd36992b698144a0c158a7986319f87ea..f485212290921ca70e8f3b3c5bc172c05c2be700 100644
--- a/indra/newview/skins/default/xui/it/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/it/teleport_strings.xml
@@ -18,6 +18,10 @@ Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE
 		<message name="timeout_tport">
 			Spiacenti, il sistema non riesce a completare il teletrasporto. Riprova tra un attimo.
 		</message>
+		<message name="NoHelpIslandTP">
+			Non puoi teleportarti nuovamente a Welcome Island.
+Per ripetere l&apos;esercitazione, visita &apos;Welcome Island Public&apos;.
+		</message>
 		<message name="noaccess_tport">
 			Spiacenti, ma non hai accesso nel luogo di destinazione richiesto.
 		</message>
diff --git a/indra/newview/skins/default/xui/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml
index 47bb2455cf825d63730d434de493b1c47038ba38..3c7a210a22b331416ccb18fa2e4ee1ed7923ae60 100644
--- a/indra/newview/skins/default/xui/ja/floater_about.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about.xml
@@ -10,7 +10,7 @@
 	<floater.string name="AboutPosition">
 		あなたの現在地は、[POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] の [REGION] です。位置は &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; です。([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [リリースノート]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		CPU: [CPU]
@@ -37,6 +37,9 @@ Qt Webkit バージョン: [QT_WEBKIT_VERSION]
 	<floater.string name="AboutTraffic">
 		パケットロス: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
 	</floater.string>
+	<floater.string name="ErrorFetchingServerReleaseNotesURL">
+		サーバーのリリースノートの URL を取得中にエラーが発生しました。
+	</floater.string>
 	<tab_container name="about_tab">
 		<panel label="情報" name="support_panel">
 			<button label="クリップボードにコピー" name="copy_btn"/>
@@ -87,6 +90,8 @@ google-perftools Copyright (c) 2005, Google Inc.
 
 Second Life ビューワでは Havok (TM) Physics が使用されています。(c)Copyright 1999-2010 Havok.com Inc. (and its Licensors).無断複写・複製・転載を禁じます。詳細については www.havok.com をご参照ください。
 
+このソフトウェアには、NVIDIA Corporation によるソースコードが含まれます。
+
 無断複写・複製・転載を禁じます。詳細については licenses.txt をご参照ください。
 
 ボイスチャットのオーディオコーディング:Polycom(R) Siren14(TM) (ITU-T Rec.G.722.1 Annex C)
diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml
index e870a8ace931b22b1c5719c7f928d5e3c63f21c6..816a6ff203ef38e9a4548c7a2b5520dde53aff56 100644
--- a/indra/newview/skins/default/xui/ja/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml
@@ -130,7 +130,7 @@
 				交通量:
 			</text>
 			<text name="DwellText">
-				誤
+				ローディング...
 			</text>
 			<button label="土地の購入" label_selected="土地を購入..." left="130" name="Buy Land..." width="100"/>
 			<button label="リンデンセール" label_selected="Linden セール..." name="Linden Sale..." tool_tip="土地が所有されており、コンテンツが設定されている必要があります。オークションの対象になっていないことも必要条件です。"/>
@@ -214,19 +214,19 @@
 				オブジェクトボーナス: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				プリム使用状況:
+				リージョン(地域)の許容数:
 			</text>
 			<text name="objects_available">
 				[MAX] の内 [COUNT] ([AVAILABLE] 利用可能)
 			</text>
 			<text name="Primitives parcel supports:">
-				区画でサポートされるプリム数:
+				区画の許容数:
 			</text>
 			<text name="object_contrib_text">
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
-				区画上のプリム数:
+				区画の負荷:
 			</text>
 			<text name="total_objects_text">
 				[COUNT]
@@ -311,13 +311,15 @@
 				プッシュ禁止 (地域設定優先)
 			</panel.string>
 			<panel.string name="see_avs_text">
-				この区画にいる住人と会ってチャットする
+				他の区画にいるアバターは、
 			</panel.string>
 			<text name="allow_label">
 				他の住人への許可:
 			</text>
-			<check_box label="地形を編集" name="edit land check" tool_tip="チェックを入れると、他人があなたの土地の地形編集を行うことが可能となります。このオプションのチェックを外しておくことをおすすめします。外した状態であなたの土地の地形編集が可能です。"/>
-			<check_box label="飛行" name="check fly" tool_tip="チェックを入れるとこの土地での飛行が可能となります。チェックを外すと土地に入る際と通り過ぎるときのみ飛行可能となります。"/>
+			<text name="allow_label0">
+				飛行:
+			</text>
+			<check_box label="全員" name="check fly" tool_tip="チェックを入れるとこの土地での飛行が可能となります。チェックを外すと土地に入る際と通り過ぎるときのみ飛行可能となります。"/>
 			<text name="allow_label2">
 				制作:
 			</text>
@@ -333,9 +335,6 @@
 			</text>
 			<check_box label="全員" name="check other scripts"/>
 			<check_box label="グループ" name="check group scripts"/>
-			<text name="land_options_label">
-				土地オプション:
-			</text>
 			<check_box label="安全(ダメージなし)" name="check safe" tool_tip="チェックを入れるとこの土地でのダメージコンバットが無効になり、「安全」に設定されます。 チェックを外すとダメージコンバットが有効になります。"/>
 			<check_box label="プッシュ禁止" name="PushRestrictCheck" tool_tip="スクリプトによるプッシュを禁止します。 このオプションを選択することにより、あなたの土地での破壊的行動を防ぐことができます。"/>
 			<check_box label="検索に区画を表示(週 L$ 30)" name="ShowDirectoryCheck" tool_tip="この区画を検索結果に表示します"/>
@@ -376,9 +375,9 @@
 			</text>
 			<texture_picker label="" name="snapshot_ctrl" tool_tip="写真をクリックして選択"/>
 			<text name="allow_label5">
-				他の区画にいる住人への許可:
+				この区画にいるアバターに会ってチャットできます
 			</text>
-			<check_box label="アバターを表示" name="SeeAvatarsCheck" tool_tip="他の区画の住人が、この区画にいる住人に会ってチャットすることを許可し、あなたもそれら住人に会ってチャットできるようにします。"/>
+			<check_box label="アバターを表示" name="SeeAvatarsCheck" tool_tip="他の区画のアバターが、この区画にいるアバターに会ってチャットすることを許可し、あなたもそれらアバターに会ってチャットできるようにします。"/>
 			<text name="landing_point">
 				着地点: [LANDING]
 			</text>
diff --git a/indra/newview/skins/default/xui/ja/floater_avatar.xml b/indra/newview/skins/default/xui/ja/floater_avatar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d28958050652b9fcf6ac1d13bcb84659fa914a2a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="アバターを選択"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
index 22af6e0ea2695329b926f3d601c8a73c1740b912..a472f163e3f97e55c2e42e109c82bff017c4ef2f 100644
--- a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml
@@ -46,7 +46,7 @@
 		L$ [AMT]
 	</text>
 	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php?lang=ja-JP 支払方法] | [http://www.secondlife.com/my/account/currency.php?lang=ja-JP 通貨] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=ja-JP 換算レート]
+		[http://www.secondlife.com/my/account/payment_method_management.php 支払方法] | [http://www.secondlife.com/my/account/currency.php 通貨]
 	</text>
 	<text name="exchange_rate_note">
 		金額を再入力して最新換算レートを確認します。
diff --git a/indra/newview/skins/default/xui/ja/floater_camera.xml b/indra/newview/skins/default/xui/ja/floater_camera.xml
index 71a20c8e187f183eebce5ae1ef4783e67a9ef8b3..982e5ce42bf941dca4880b4b366f704ee032ce55 100644
--- a/indra/newview/skins/default/xui/ja/floater_camera.xml
+++ b/indra/newview/skins/default/xui/ja/floater_camera.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
+<floater name="camera_floater" title="カメラのコントロール">
 	<floater.string name="rotate_tooltip">
 		フォーカスを中心にカメラを回転
 	</floater.string>
@@ -9,15 +9,6 @@
 	<floater.string name="move_tooltip">
 		カメラを上下左右に移動
 	</floater.string>
-	<floater.string name="camera_modes_title">
-		カメラモード
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		旋回 - ズーム - 水平・垂直移動
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		事前設定の視野
-	</floater.string>
 	<floater.string name="free_mode_title">
 		オブジェクトを見る
 	</floater.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
new file mode 100644
index 0000000000000000000000000000000000000000..504cea5931bdf7ea82f3e6bdedb1a583aef8ae23
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" title="近くのチャット">
+	<panel name="bottom_panel">
+		<line_editor label="ここをクリックしてチャットを開始します。" name="chat_box" tool_tip="Enter キーを押して話し、Ctrl + Enter キーで叫びます。"/>
+		<button name="show_nearby_chat" tool_tip="近くのチャットログを表示・非表示"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_destinations.xml b/indra/newview/skins/default/xui/ja/floater_destinations.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b7f6ad4d4e3687ac3be57e42527831e55221f501
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="行き先"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_fast_timers.xml b/indra/newview/skins/default/xui/ja/floater_fast_timers.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5f538ecdb0ed2934c01e96f36e2ff1c337d7110e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+	<string name="pause">
+		一時停止
+	</string>
+	<string name="run">
+		èµ°ã‚‹
+	</string>
+	<button label="一時停止" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml b/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml
index ffafbaf3b67f1685a6b82cc758d7e75a5f84feec..1b6558a9eb329c591c60bebbcf159856631d2ae4 100644
--- a/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml
@@ -4,8 +4,8 @@
 		フィルタリング:
 	</text>
 	<check_box label="異方的フィルタリング(有効にすると速度が低下します)" name="ani"/>
-	<text name="Antialiasing:">
-		アンチエイリアシング:
+	<text name="antialiasing label">
+		アンチエイリアシング:
 	</text>
 	<combo_box label="アンチエイリアシング" name="fsaa">
 		<combo_box.item label="無効" name="FSAADisabled"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_how_to.xml b/indra/newview/skins/default/xui/ja/floater_how_to.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4cebe27226c2c7d3a60532a8dbb55423311e4c81
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="ハウツー"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_map.xml b/indra/newview/skins/default/xui/ja/floater_map.xml
index ff5a25fd7b1811ac1ebe8be92917202fdfb9cd47..11222034465da586228bc8ada3aebe565804913c 100644
--- a/indra/newview/skins/default/xui/ja/floater_map.xml
+++ b/indra/newview/skins/default/xui/ja/floater_map.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="">
+<floater name="Map" title="ミニマップ">
 	<floater.string name="ToolTipMsg">
 		[REGION](ダブルクリックで地図を開く。Shift‐ドラッグで水平・垂直移動)
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/ja/floater_model_preview.xml b/indra/newview/skins/default/xui/ja/floater_model_preview.xml
index 07667bb697e0f12adc7a6a5737f80437b98e5a57..c9ff0e29cbc9b76ecd92a97e10c9d19a4e1cf57a 100644
--- a/indra/newview/skins/default/xui/ja/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_model_preview.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="モデルをアップロード">
-	<string name="status_idle">
-		待機状態
-	</string>
+<floater name="Model Preview" title="モデルウィザード">
+	<string name="status_idle"/>
 	<string name="status_parse_error">
-		Dae に問題が見つかりました - 詳細についてはログをご参照ください。
+		エラー:Dae に問題が見つかりました - 詳細についてはログをご参照ください。
+	</string>
+	<string name="status_material_mismatch">
+		エラー:モデルの材料は参考モデルのサブセットではありません。
 	</string>
 	<string name="status_reading_file">
 		ローディング...
@@ -51,6 +52,9 @@
 	<string name="mesh_status_missing_lod">
 		必要な描画詳細度が見つかりません。
 	</string>
+	<string name="mesh_status_invalid_material_list">
+		LOD 付きの材料は参考モデルのサブセットではありません。
+	</string>
 	<string name="layer_all">
 		全て
 	</string>
@@ -63,188 +67,211 @@
 	<string name="tbd">
 		未定
 	</string>
-	<text name="name_label">
-		名前:
-	</text>
-	<text name="lod_label">
-		プレビュー:
-	</text>
-	<combo_box name="preview_lod_combo" tool_tip="プレビュー表示のLOD設定">
-		<combo_item name="high">
-			描画詳細度:高
-		</combo_item>
-		<combo_item name="medium">
-			描画詳細度:中
-		</combo_item>
-		<combo_item name="low">
-			描画詳細度:低
-		</combo_item>
-		<combo_item name="lowest">
-			描画詳細度:最低
-		</combo_item>
-	</combo_box>
-	<text name="warning_title">
-		警告:
-	</text>
-	<text name="warning_message">
-		このモデルを Second Life サーバーにアップロードすることはできません。メッシュモデルのアップロード手順については [[VURL] こちらを参照してください]。
-	</text>
-	<text name="weights_text">
-		ダウンロード:
-物理演算:
-サーバー負荷:
-
-プリム換算:
-	</text>
-	<text name="weights">
-		[ST]
-[PH]
-[SIM]
-
-[EQ]
-	</text>
-	<tab_container name="import_tab">
-		<panel label="描画詳細度" name="lod_panel">
-			<text name="lod_table_header">
-				描画詳細度を選択:
-			</text>
-			<text name="high_label" value="高"/>
-			<text name="high_triangles" value="0"/>
-			<text name="high_vertices" value="0"/>
-			<text name="medium_label" value="中"/>
-			<text name="medium_triangles" value="0"/>
-			<text name="medium_vertices" value="0"/>
-			<text name="low_label" value="低"/>
-			<text name="low_triangles" value="0"/>
-			<text name="low_vertices" value="0"/>
-			<text name="lowest_label" value="最低"/>
-			<text name="lowest_triangles" value="0"/>
-			<text name="lowest_vertices" value="0"/>
-			<text name="lod_table_footer">
-				描画詳細度: [DETAIL]
-			</text>
-			<radio_group name="lod_file_or_limit" value="lod_from_file">
-				<radio_item label="ファイルからロード" name="lod_from_file"/>
-				<radio_item label="自動作成" name="lod_auto_generate"/>
-				<radio_item label="なし" name="lod_none"/>
-			</radio_group>
-			<button label="参照" name="lod_browse"/>
-			<combo_box name="lod_mode">
-				<combo_item name="triangle_limit">
-					三角形の限度数
-				</combo_item>
-				<combo_item name="error_threshold">
-					エラーしきい値
-				</combo_item>
-			</combo_box>
-			<text name="build_operator_text">
-				制作演算子:
-			</text>
-			<text name="queue_mode_text">
-				キューモード:
-			</text>
-			<combo_box name="build_operator">
-				<combo_item name="edge_collapse">
-					稜の完全複合
-				</combo_item>
-				<combo_item name="half_edge_collapse">
-					稜の半複合
-				</combo_item>
-			</combo_box>
-			<combo_box name="queue_mode">
-				<combo_item name="greedy">
-					グリーディ
-				</combo_item>
-				<combo_item name="lazy">
-					レイジー
-				</combo_item>
-				<combo_item name="independent">
-					インディペンデント
-				</combo_item>
-			</combo_box>
-			<text name="border_mode_text">
-				境界線モード:
+	<panel name="left_panel">
+		<panel name="model_name_representation_panel">
+			<text name="name_label">
+				モデル名:
 			</text>
-			<text name="share_tolderance_text">
-				共有誤差:
+			<text name="model_category_label">
+				このモデルは...
 			</text>
-			<combo_box name="border_mode">
-				<combo_item name="border_unlock">
-					ロック解除
-				</combo_item>
-				<combo_item name="border_lock">
-					ロック
-				</combo_item>
+			<combo_box name="model_category_combo">
+				<combo_item label="1つを選択..." name="Choose one"/>
+				<combo_item label="アバターの形" name="Avatar shape"/>
+				<combo_item label="アバターのアタッチメント" name="Avatar attachment"/>
+				<combo_item label="動くオブジェクト(車、動物)" name="Moving object (vehicle, animal)"/>
+				<combo_item label="制作用コンポーネント" name="Building Component"/>
+				<combo_item label="大型、不動、等" name="Large, non moving etc"/>
+				<combo_item label="やや小型、不動、等" name="Smaller, non-moving etc"/>
+				<combo_item label="いずれにも該当しない" name="Not really any of these"/>
 			</combo_box>
-			<text name="crease_label">
-				折れ角度:
-			</text>
-			<spinner name="crease_angle" value="75"/>
 		</panel>
-		<panel label="物理効果" name="physics_panel">
-			<panel name="physics geometry">
-				<radio_group name="physics_load_radio" value="physics_load_from_file">
-					<radio_item label="ファイル:" name="physics_load_from_file"/>
-					<radio_item label="次の描画詳細度を使用:" name="physics_use_lod"/>
-				</radio_group>
-				<combo_box name="physics_lod_combo" tool_tip="実像に適用するLOD">
-					<combo_item name="physics_lowest">
-						最低
-					</combo_item>
-					<combo_item name="physics_low">
-						低
-					</combo_item>
-					<combo_item name="physics_medium">
-						中
-					</combo_item>
-					<combo_item name="physics_high">
-						高
-					</combo_item>
-				</combo_box>
-				<button label="参照" name="physics_browse"/>
-			</panel>
-			<panel name="physics analysis">
-				<slider label="滑らかさ:" name="Smooth"/>
-				<check_box label="穴を閉じる(スロー)" name="Close Holes (Slow)"/>
-				<button label="分析" name="Decompose"/>
-				<button label="取り消し" name="decompose_cancel"/>
+		<tab_container name="import_tab">
+			<panel label="描画詳細度" name="lod_panel" title="描画詳細度">
+				<text initial_value="データ源" name="source" value="データ源"/>
+				<text initial_value="三角形" name="triangles" value="三角形"/>
+				<text initial_value="頂点" name="vertices" value="頂点"/>
+				<text initial_value="高" name="high_label" value="高"/>
+				<button label="参照" name="lod_browse_high"/>
+				<text initial_value="0" name="high_triangles" value="0"/>
+				<text initial_value="0" name="high_vertices" value="0"/>
+				<text initial_value="中" name="medium_label" value="中"/>
+				<button label="参照" name="lod_browse_medium"/>
+				<text initial_value="0" name="medium_triangles" value="0"/>
+				<text initial_value="0" name="medium_vertices" value="0"/>
+				<text initial_value="低" name="low_label" value="低"/>
+				<button label="参照" name="lod_browse_low"/>
+				<text initial_value="0" name="low_triangles" value="0"/>
+				<text initial_value="0" name="low_vertices" value="0"/>
+				<text initial_value="最低" name="lowest_label" value="最低"/>
+				<button label="参照" name="lod_browse_lowest"/>
+				<text initial_value="0" name="lowest_triangles" value="0"/>
+				<text initial_value="0" name="lowest_vertices" value="0"/>
+				<check_box label="ノーマルの作成" name="gen_normals"/>
+				<text initial_value="折れ角度:" name="crease_label" value="折れ角度:"/>
+				<spinner name="crease_angle" value="75"/>
 			</panel>
-			<panel name="physics simplification">
-				<slider label="パス:" name="Combine Quality"/>
-				<slider label="詳細度:" name="Detail Scale"/>
-				<slider label="維持率:" name="Retain%"/>
-				<button label="単純化" name="Simplify"/>
-				<button label="取り消し" name="simplify_cancel"/>
+			<panel label="物理効果" name="physics_panel">
+				<panel name="physics geometry">
+					<text name="first_step_name">
+						手順1:描画詳細度
+					</text>
+					<combo_box name="physics_lod_combo" tool_tip="実像に適用するLOD">
+						<combo_item name="choose_one">
+							1つを選択...
+						</combo_item>
+						<combo_item name="physics_high">
+							高
+						</combo_item>
+						<combo_item name="physics_medium">
+							中
+						</combo_item>
+						<combo_item name="physics_low">
+							低
+						</combo_item>
+						<combo_item name="physics_lowest">
+							最低
+						</combo_item>
+						<combo_item name="load_from_file">
+							ファイルから
+						</combo_item>
+					</combo_box>
+					<button label="参照" name="physics_browse"/>
+				</panel>
+				<panel name="physics analysis">
+					<text name="method_label">
+						手順2:分析
+					</text>
+					<text name="analysis_method_label">
+						方法:
+					</text>
+					<text name="quality_label">
+						品質:
+					</text>
+					<text name="smooth_method_label">
+						滑らかさ:
+					</text>
+					<check_box label="穴を閉じる" name="Close Holes (Slow)"/>
+					<button label="分析" name="Decompose"/>
+					<button label="取り消し" name="decompose_cancel"/>
+				</panel>
+				<panel name="physics simplification">
+					<text name="second_step_label">
+						手順3:単純化
+					</text>
+					<text name="simp_method_header">
+						方法:
+					</text>
+					<text name="pass_method_header">
+						パス:
+					</text>
+					<text name="Detail Scale label">
+						詳細度:
+					</text>
+					<text name="Retain%_label">
+						維持率:
+					</text>
+					<combo_box name="Combine Quality" value="1"/>
+					<button label="単純化" name="Simplify"/>
+					<button label="取り消し" name="simplify_cancel"/>
+				</panel>
+				<panel name="physics info">
+					<text name="results_text">
+						結果:
+					</text>
+					<text name="physics_triangles">
+						三角形:[TRIANGLES],
+					</text>
+					<text name="physics_points">
+						頂点:[POINTS],
+					</text>
+					<text name="physics_hulls">
+						外殻構造:[HULLS]
+					</text>
+				</panel>
 			</panel>
-			<panel name="physics info">
-				<slider label="プレビュースプレッド:" name="physics_explode"/>
-				<text name="physics_triangles">
-					三角形: [TRIANGLES]
+			<panel label="アップロードのオプション" name="modifiers_panel">
+				<text name="scale_label">
+					スケール(1=増減なし):
 				</text>
-				<text name="physics_points">
-					頂点: [POINTS]
+				<spinner name="import_scale" value="1.0"/>
+				<text name="dimensions_label">
+					サイズ:
 				</text>
-				<text name="physics_hulls">
-					外殻構造: [HULLS]
+				<text name="import_dimensions">
+					[X] X [Y] X [Z]
 				</text>
+				<check_box label="テクスチャを含む" name="upload_textures"/>
+				<text name="include_label">
+					アバターモデル専用:
+				</text>
+				<check_box label="スキンの重さを含む" name="upload_skin"/>
+				<check_box label="ジョイントポジションを含む" name="upload_joints"/>
+				<text name="pelvis_offset_label">
+					Z オフセット(アバターを上下調整):
+				</text>
+				<spinner name="pelvis_offset" value="0.0"/>
 			</panel>
-		</panel>
-		<panel label="修飾子" name="modifiers_panel">
-			<spinner name="import_scale" value="1.0"/>
-			<text name="import_dimensions">
-				[X] x [Y] x [Z] m
+		</tab_container>
+		<panel name="weights_and_warning_panel">
+			<button label="ウェイトと料金の計算" name="calculate_btn" tool_tip="ウェイトと料金の計算"/>
+			<button label="取り消し" name="cancel_btn"/>
+			<button label="アップロード" name="ok_btn" tool_tip="シミュレーターにアップロード"/>
+			<button label="設定をクリアしてフォームをリセット" name="reset_btn"/>
+			<text name="upload_fee">
+				アップロード料金:L$ [FEE]
+			</text>
+			<text name="prim_weight">
+				土地の負荷:[EQ]
+			</text>
+			<text name="download_weight">
+				ダウンロード:[ST]
+			</text>
+			<text name="physics_weight">
+				物理演算:[PH]
+			</text>
+			<text name="server_weight">
+				サーバー負荷:[SIM]
+			</text>
+			<text name="warning_title">
+				ご注意:
+			</text>
+			<text name="warning_message">
+				メッシュモデルをアップロードする権利がありません。権利の取得方法については [[VURL]] こちらを参照してください。
+			</text>
+			<text name="status">
+				[STATUS]
 			</text>
-			<check_box label="テクスチャ" name="upload_textures"/>
-			<check_box label="スキンの重さ" name="upload_skin"/>
-			<check_box label="ジョイントポジション" name="upload_joints"/>
-			<spinner name="pelvis_offset" value="0.0"/>
 		</panel>
-	</tab_container>
-	<text name="upload_fee">
-		アップロード料金:L$ [FEE]
+	</panel>
+	<text name="lod_label">
+		プレビュー:
 	</text>
-	<button label="デフォルトに設定" name="reset_btn" tool_tip="デフォルトに設定"/>
-	<button label="ウェイトと料金の計算" name="calculate_btn" tool_tip="ウェイトと料金の計算"/>
-	<button label="アップロード" name="ok_btn" tool_tip="シミュレーターにアップロード"/>
-	<button label="取り消し" name="cancel_btn"/>
+	<panel name="right_panel">
+		<combo_box name="preview_lod_combo" tool_tip="プレビュー表示の LOD 設定">
+			<combo_item name="high">
+				高
+			</combo_item>
+			<combo_item name="medium">
+				中
+			</combo_item>
+			<combo_item name="low">
+				低
+			</combo_item>
+			<combo_item name="lowest">
+				最低
+			</combo_item>
+		</combo_box>
+		<text name="label_display">
+			ディスプレイ...
+		</text>
+		<check_box label="稜" name="show_edges"/>
+		<check_box label="物理効果" name="show_physics"/>
+		<check_box label="テクスチャ" name="show_textures"/>
+		<check_box label="スキンの重さ" name="show_skin_weight"/>
+		<check_box label="ジョイント" name="show_joint_positions"/>
+		<text name="physics_explode_label">
+			プレビュースプレッド:
+		</text>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_model_wizard.xml b/indra/newview/skins/default/xui/ja/floater_model_wizard.xml
index 2f336fcbdee32d475f7ec7fe39ff4cf0d88c56e3..6aaa9a42a5dbb01e8564f387a4dfdfbcabbda225 100644
--- a/indra/newview/skins/default/xui/ja/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/ja/floater_model_wizard.xml
@@ -6,26 +6,23 @@
 	<button label="2. 最適化" name="optimize_btn"/>
 	<button label="1. ファイルを選択" name="choose_file_btn"/>
 	<panel name="choose_file_panel">
-		<panel name="choose_file_header_panel">
-			<text name="choose_file_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				モデルファイルを選択
 			</text>
 		</panel>
-		<panel name="choose_file_content_panel">
+		<panel name="content">
 			<text name="advanced_users_text">
 				上級ユーザーの場合:3D コンテンツの制作ツールを使い慣れた方は、高度なアップローダーもお試しください。
 			</text>
 			<button label="アドバンスモードに切り替える" name="switch_to_advanced"/>
-			<text name="choose_model_file_label">
+			<text name="Cache location">
 				アップロードするモデルファイルの選択
 			</text>
 			<button label="参照" label_selected="参照" name="browse"/>
-			<text name="support_collada_text">
+			<text name="Model types">
 				Second Life は COLLADA (.dae) ファイルをサポートします。
 			</text>
-			<text name="dimensions_label">
-				サイズ(メートル):
-			</text>
 			<text name="dimensions">
 				X         Y         Z
 			</text>
@@ -38,18 +35,15 @@
 		</panel>
 	</panel>
 	<panel name="optimize_panel">
-		<panel name="optimize_header_panel">
-			<text name="optimize_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				モデルを最適化
 			</text>
 		</panel>
-		<text name="optimize_hint">
+		<text name="description">
 			パフォーマンスを重視してモデルを最適化しました。必要に応じて調整してください。
 		</text>
-		<panel name="optimize_content_panel">
-			<text name="generating_lod_label">
-				次の描画詳細度を作成
-			</text>
+		<panel name="content">
 			<text name="high_detail_text">
 				次の描画詳細度を作成:高
 			</text>
@@ -64,123 +58,64 @@
 			</text>
 		</panel>
 		<panel name="content2">
-			<text name="optimize_performance_text">
-				パフォーマンス
-			</text>
-			<text name="optimize_faster_rendering_text">
-				レンダリング速度の向上
-詳細度の低下
-プリム換算ウェイトの軽減
-			</text>
-			<text name="optimize_accuracy_text">
-				正確さ
-			</text>
-			<text name="optimize_slower_rendering_text">
-				レンダリング速度の低下
-詳細化
-プリム換算ウェイトの増加
-			</text>
-			<text name="accuracy_slider_mark1">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark2">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark3">
-				&apos;
-			</text>
 			<button label="ジオメトリを再計算" name="recalculate_geometry_btn"/>
-			<text name="geometry_preview_label">
+			<text name="lod_label">
 				ジオメトリのプレビュー
 			</text>
 			<combo_box name="preview_lod_combo" tool_tip="プレビュー表示の LOD 設定">
-				<combo_item name="preview_lod_high">
+				<combo_item name="high">
 					高い詳細度
 				</combo_item>
-				<combo_item name="preview_lod_medium">
+				<combo_item name="medium">
 					中の詳細度
 				</combo_item>
-				<combo_item name="preview_lod_low">
+				<combo_item name="low">
 					低い詳細度
 				</combo_item>
-				<combo_item name="preview_lod_lowest">
+				<combo_item name="lowest">
 					最低の詳細度
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="physics_panel">
-		<panel name="physics_header_panel">
-			<text name="physics_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				物理作用の調整
 			</text>
 		</panel>
-		<text name="physics_hint">
+		<text name="description">
 			モデルの外殻構造のシェイプは弊社が作成します。モデルの目的に応じてシェイプの詳細度を調整してください。
 		</text>
-		<panel name="physics_content_panel">
-			<text name="physics_performance_text">
-				パフォーマンス
-			</text>
-			<text name="physics_faster_rendering_text">
-				レンダリング速度の向上
-詳細度の低下
-プリム換算ウェイトの軽減
-			</text>
-			<text name="physics_accuracy_text">
-				正確
-			</text>
-			<text name="physics_slower_dendering_text">
-				レンダリング速度の低下
-詳細化
-プリム換算ウェイトの増加
-			</text>
-			<text name="physics_example_1">
-				例:
-動くオブジェクト
-飛行オブジェクト
-車
-			</text>
-			<text name="physics_example_2">
-				例:
-小さな静止オブジェクト
-比較的詳細度の低いオブジェクト
-シンプルな家具
-			</text>
-			<text name="physics_example_3">
-				例:
-静止オブジェクト
-詳細なオブジェクト
-建物
-			</text>
+		<panel name="content">
 			<button label="物理演算ウェイトを再計算" name="recalculate_physics_btn"/>
 			<button label="再計算中..." name="recalculating_physics_btn"/>
-			<text name="physics_preview_label">
+			<text name="lod_label">
 				物理作用のプレビュー
 			</text>
 			<combo_box name="preview_lod_combo2" tool_tip="プレビュー表示の LOD 設定">
-				<combo_item name="preview_lod2_high">
+				<combo_item name="high">
 					高い詳細度
 				</combo_item>
-				<combo_item name="preview_lod2_medium">
+				<combo_item name="medium">
 					中の詳細度
 				</combo_item>
-				<combo_item name="preview_lod2_low">
+				<combo_item name="low">
 					低い詳細度
 				</combo_item>
-				<combo_item name="preview_lod2_lowest">
+				<combo_item name="lowest">
 					最低の詳細度
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="review_panel">
-		<panel name="review_header_panel">
-			<text name="review_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				確認
 			</text>
 		</panel>
-		<panel name="review_content_panel">
+		<panel name="content">
 			<text name="review_prim_equiv">
 				区画/リージョンへの負荷:[EQUIV] プリム換算値
 			</text>
@@ -193,8 +128,8 @@
 		</panel>
 	</panel>
 	<panel name="upload_panel">
-		<panel name="upload_header_panel">
-			<text name="upload_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				アップロード完了
 			</text>
 		</panel>
diff --git a/indra/newview/skins/default/xui/ja/floater_moveview.xml b/indra/newview/skins/default/xui/ja/floater_moveview.xml
index 57ab32f486c433da80291397493c6621757db122..aed3b78a1448542d869770fd28c7c659aa8fa0ce 100644
--- a/indra/newview/skins/default/xui/ja/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/ja/floater_moveview.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="歩行 / 走行 / 飛行">
 	<string name="walk_forward_tooltip">
 		前に進む(上矢印か W を押す)
 	</string>
@@ -58,14 +58,14 @@
 		飛ぶ
 	</string>
 	<panel name="panel_actions">
-		<button label="" label_selected="" name="move up btn" tool_tip="上に移動(E を押す)"/>
 		<button label="" label_selected="" name="turn left btn" tool_tip="左を向く(左矢印か A を押す)"/>
 		<joystick_slide name="move left btn" tool_tip="左に歩く(Shift + 左矢印か A を押す)"/>
-		<button label="" label_selected="" name="move down btn" tool_tip="下に移動(C を押す)"/>
 		<button label="" label_selected="" name="turn right btn" tool_tip="右を向く(右矢印か D を押す)"/>
 		<joystick_slide name="move right btn" tool_tip="右に歩く(Shift + 右矢印か D を押す)"/>
 		<joystick_turn name="forward btn" tool_tip="前に進む(上矢印か W を押す)"/>
 		<joystick_turn name="backward btn" tool_tip="後ろに歩く(下矢印か S を押す)"/>
+		<button label="" label_selected="" name="move up btn" tool_tip="上に移動(E を押す)"/>
+		<button label="" label_selected="" name="move down btn" tool_tip="下に移動(C を押す)"/>
 	</panel>
 	<panel name="panel_modes">
 		<button label="" name="mode_walk_btn" tool_tip="歩行モード"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_my_appearance.xml b/indra/newview/skins/default/xui/ja/floater_my_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c9a0ecefd71575c77f8a6da304b1c26c838ff2ac
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="容姿">
+	<panel label="容姿の編集" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_my_inventory.xml b/indra/newview/skins/default/xui/ja/floater_my_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c6a789b63b19e73f4b2d82e93271666c5a4cac98
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="持ち物"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_nearby_chat.xml b/indra/newview/skins/default/xui/ja/floater_nearby_chat.xml
index a29c6a063041966ad733fabfbe430c488ccdbc4c..bcddcc69076887ddecac9480aed5f2259b9b2b4e 100644
--- a/indra/newview/skins/default/xui/ja/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/ja/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="nearby_chat" title="近くのチャット">
-	<check_box label="チャットを翻訳(Google翻訳)" name="translate_chat_checkbox"/>
+	<check_box label="チャットを翻訳" name="translate_chat_checkbox"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_object_weights.xml b/indra/newview/skins/default/xui/ja/floater_object_weights.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3bd9b6b069e232660631e482e7a3f50a34a0e2b7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="詳しい設定">
+	<floater.string name="nothing_selected" value="--"/>
+	<text name="selected_text" value="選択済"/>
+	<text name="objects" value="--"/>
+	<text name="objects_label" value="オブジェクト"/>
+	<text name="prims" value="--"/>
+	<text name="prims_label" value="プリム"/>
+	<text name="weights_of_selected_text" value="選択済み項目のウエイト"/>
+	<text name="download" value="--"/>
+	<text name="download_label" value="ダウンロード"/>
+	<text name="physics" value="--"/>
+	<text name="physics_label" value="物理効果"/>
+	<text name="server" value="--"/>
+	<text name="server_label" value="サーバー"/>
+	<text name="display" value="--"/>
+	<text name="display_label" value="ディスプレイ"/>
+	<text name="land_impacts_text" value="土地の負荷"/>
+	<text name="selected" value="--"/>
+	<text name="selected_label" value="選択済"/>
+	<text name="rezzed_on_land" value="--"/>
+	<text name="rezzed_on_land_label" value="土地に Rez 済み"/>
+	<text name="remaining_capacity" value="--"/>
+	<text name="remaining_capacity_label" value="残りの許容数"/>
+	<text name="total_capacity" value="--"/>
+	<text name="total_capacity_label" value="許容合計"/>
+	<text name="help_SLURL" value="[secondlife:///app/help/object_weights オブジェクトのウェイトとは?]"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_people.xml b/indra/newview/skins/default/xui/ja/floater_people.xml
new file mode 100644
index 0000000000000000000000000000000000000000..08bee881034d19b182f8b99a1e51bee518ffae53
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="人">
+	<panel_container name="main_panel">
+		<panel label="グループ情報" name="panel_group_info_sidetray"/>
+		<panel label="ブロックされた住人とオブジェクト" name="panel_block_list_sidetray"/>
+	</panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_picks.xml b/indra/newview/skins/default/xui/ja/floater_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..359585eb86b8b27d9f6fd2c2287f093079296ac5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="ピック"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_places.xml b/indra/newview/skins/default/xui/ja/floater_places.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0d167444dbf8ea59b86065b163a21a72e6adb02e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="場所">
+	<panel label="場所" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_snapshot.xml b/indra/newview/skins/default/xui/ja/floater_snapshot.xml
index 05a10f9f6d9ad60cbbf48a4705ca70c66183095c..cf4732a68ef0c8316545ebe4792eedbbf57f0802 100644
--- a/indra/newview/skins/default/xui/ja/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/ja/floater_snapshot.xml
@@ -3,73 +3,63 @@
 	<floater.string name="unknown">
 		不明
 	</floater.string>
-	<radio_group label="スナップショットの種類" name="snapshot_type_radio">
-		<radio_item label="メール" name="postcard"/>
-		<radio_item label="持ち物(L$[AMOUNT])" name="texture"/>
-		<radio_item label="コンピューターに保存" name="local"/>
-	</radio_group>
+	<string name="postcard_progress_str">
+		メールの送信
+	</string>
+	<string name="profile_progress_str">
+		投稿
+	</string>
+	<string name="inventory_progress_str">
+		持ち物に保存
+	</string>
+	<string name="local_progress_str">
+		コンピュータに保存
+	</string>
+	<string name="profile_succeeded_str">
+		画像がアップロードされました
+	</string>
+	<string name="postcard_succeeded_str">
+		メールが送信されました
+	</string>
+	<string name="inventory_succeeded_str">
+		持ち物に保存されました
+	</string>
+	<string name="local_succeeded_str">
+		コンピュータに保存されました
+	</string>
+	<string name="profile_failed_str">
+		プロフィールフィードに画像をアップロードできませんでした。
+	</string>
+	<string name="postcard_failed_str">
+		メールを送信できませんでした。
+	</string>
+	<string name="inventory_failed_str">
+		持ち物に保存できませんでした。
+	</string>
+	<string name="local_failed_str">
+		コンピュータに保存できませんでした。
+	</string>
+	<button name="advanced_options_btn" tool_tip="詳しい設定"/>
+	<text name="image_res_text">
+		[WIDTH] x [HEIGHT] px
+	</text>
 	<text name="file_size_label">
 		[SIZE] キロバイト
 	</text>
-	<button label="スナップショットを更新" name="new_snapshot_btn"/>
-	<button label="送信" name="send_btn"/>
-	<button label="保存(L$[AMOUNT])" name="upload_btn"/>
-	<flyout_button label="保存" name="save_btn" tool_tip="画像をファイルに保存">
-		<flyout_button.item label="保存" name="save_item"/>
-		<flyout_button.item label="別名で保存..." name="saveas_item"/>
-	</flyout_button>
-	<button label="詳細" name="more_btn" tool_tip="詳しい設定"/>
-	<button label="簡易" name="less_btn" tool_tip="詳しい設定"/>
-	<button label="取り消し" name="discard_btn"/>
-	<text name="type_label2">
-		サイズ
-	</text>
-	<text name="format_label">
-		書式
-	</text>
-	<combo_box label="解像度" name="postcard_size_combo">
-		<combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
-		<combo_box.item label="640x480" name="640x480"/>
-		<combo_box.item label="800x600" name="800x600"/>
-		<combo_box.item label="1024x768" name="1024x768"/>
-		<combo_box.item label="カスタム" name="Custom"/>
-	</combo_box>
-	<combo_box label="解像度" name="texture_size_combo">
-		<combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
-		<combo_box.item label="小(128x128)" name="Small(128x128)"/>
-		<combo_box.item label="中(256x256)" name="Medium(256x256)"/>
-		<combo_box.item label="大(512x512)" name="Large(512x512)"/>
-		<combo_box.item label="カスタム" name="Custom"/>
-	</combo_box>
-	<combo_box label="解像度" name="local_size_combo">
-		<combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
-		<combo_box.item label="320x240" name="320x240"/>
-		<combo_box.item label="640x480" name="640x480"/>
-		<combo_box.item label="800x600" name="800x600"/>
-		<combo_box.item label="1024x768" name="1024x768"/>
-		<combo_box.item label="1280x1024" name="1280x1024"/>
-		<combo_box.item label="1600x1200" name="1600x1200"/>
-		<combo_box.item label="カスタム" name="Custom"/>
-	</combo_box>
-	<combo_box label="書式" name="local_format_combo">
-		<combo_box.item label="PNG" name="PNG"/>
-		<combo_box.item label="JPEG" name="JPEG"/>
-		<combo_box.item label="BMP" name="BMP"/>
-	</combo_box>
-	<spinner label="å¹…" name="snapshot_width"/>
-	<spinner label="高さ" name="snapshot_height"/>
-	<check_box label="縦横比の固定" name="keep_aspect_check"/>
-	<slider label="画質" name="image_quality_slider"/>
-	<text name="layer_type_label">
-		キャプチャ:
-	</text>
-	<combo_box label="画像レイヤー" name="layer_types">
-		<combo_box.item label="色" name="Colors"/>
-		<combo_box.item label="深度" name="Depth"/>
-	</combo_box>
-	<check_box label="インターフェース" name="ui_check"/>
-	<check_box label="HUD" name="hud_check"/>
-	<check_box label="保存後もこのまま" name="keep_open_check"/>
-	<check_box label="画面全体を静止" name="freeze_frame_check"/>
-	<check_box label="自動更新" name="auto_snapshot_check"/>
+	<panel name="advanced_options_panel">
+		<text name="advanced_options_label">
+			詳しい設定
+		</text>
+		<text name="layer_type_label">
+			キャプチャ:
+		</text>
+		<combo_box label="画像レイヤー" name="layer_types">
+			<combo_box.item label="色" name="Colors"/>
+			<combo_box.item label="深度" name="Depth"/>
+		</combo_box>
+		<check_box label="インターフェース" name="ui_check"/>
+		<check_box label="HUD" name="hud_check"/>
+		<check_box label="画面全体を静止" name="freeze_frame_check"/>
+		<check_box label="自動更新" name="auto_snapshot_check"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_stats.xml b/indra/newview/skins/default/xui/ja/floater_stats.xml
index 97927776c72f0805867e3babd8ec9664ab524463..6a1f34cfd85a6c69250911ca6f79c3db50937042 100644
--- a/indra/newview/skins/default/xui/ja/floater_stats.xml
+++ b/indra/newview/skins/default/xui/ja/floater_stats.xml
@@ -10,8 +10,8 @@
 			</stat_view>
 			<stat_view label="アドバンス" name="advanced">
 				<stat_view label="描画" name="render">
-					<stat_bar label="KTris 描画" name="ktrisframe"/>
-					<stat_bar label="KTris 描画" name="ktrissec"/>
+					<stat_bar label="フレームごとの KTris 描画" name="ktrisframe"/>
+					<stat_bar label="秒ごとの KTris 描画" name="ktrissec"/>
 					<stat_bar label="オブジェクト合計" name="objs"/>
 					<stat_bar label="新規オブジェクト" name="newobjs"/>
 				</stat_view>
@@ -64,6 +64,14 @@
 					<stat_bar label="エージェント時間" name="simagentmsec"/>
 					<stat_bar label="イメージ時間" name="simimagesmsec"/>
 					<stat_bar label="スクリプト時間" name="simscriptmsec"/>
+					<stat_bar label="余暇" name="simsparemsec"/>
+					<stat_view label="時間の詳細(ms)" name="timedetails">
+						<stat_bar label="物理効果の単位" name="simsimphysicsstepmsec"/>
+						<stat_bar label="物理形状を更新" name="simsimphysicsshapeupdatemsec"/>
+						<stat_bar label="他の物理効果" name="simsimphysicsothermsec"/>
+						<stat_bar label="スリープ時間" name="simsleepmsec"/>
+						<stat_bar label="ポンプ I/O" name="simpumpiomsec"/>
+					</stat_view>
 				</stat_view>
 			</stat_view>
 		</container_view>
diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml
index a8b5febd5430c6ce0a27c95780033f6470ad2e44..8eddf55a44b680da114fa52cf81a07d6d64a178b 100644
--- a/indra/newview/skins/default/xui/ja/floater_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_tools.xml
@@ -25,10 +25,10 @@
 		土地をクリックし、ドラッグして選択
 	</floater.string>
 	<floater.string name="status_selectcount">
-		[OBJ_COUNT] 個のオブジェクト([PRIM_COUNT] 個のプリム [PE_STRING])が選択されています
+		選択されているオブジェクトは [OBJ_COUNT] 個、土地の負荷は [LAND_IMPACT]
 	</floater.string>
-	<floater.string name="status_selectprimequiv">
-		, [SEL_WEIGHT] プリム換算値
+	<floater.string name="status_remaining_capacity">
+		残りの許容数 [LAND_CAPACITY]。
 	</floater.string>
 	<button label="" label_selected="" name="button focus" tool_tip="フォーカス"/>
 	<button label="" label_selected="" name="button move" tool_tip="動かす"/>
@@ -105,8 +105,8 @@
 	<text name="selection_empty">
 		何も選択されていません。
 	</text>
-	<text name="selection_weight">
-		物理演算ウェイト [PHYS_WEIGHT]、レンダリングコスト [DISP_WEIGHT]。
+	<text name="remaining_capacity">
+		[CAPACITY_STRING] [secondlife:///app/openfloater/object_weights 詳細]
 	</text>
 	<tab_container name="Object Info Tabs">
 		<panel label="一般" name="General">
@@ -325,7 +325,6 @@
 				縫い目のタイプ
 			</text>
 			<combo_box name="sculpt type control">
-				<combo_box.item label="(なし)" name="None"/>
 				<combo_box.item label="球体" name="Sphere"/>
 				<combo_box.item label="トーラス" name="Torus"/>
 				<combo_box.item label="平面" name="Plane"/>
diff --git a/indra/newview/skins/default/xui/ja/floater_toybox.xml b/indra/newview/skins/default/xui/ja/floater_toybox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..682352ec827f2e3adff1f2853b4a25d65d505e50
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_toybox.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="ツールバーのボタン">
+	<text name="toybox label 1">
+		ボタンをツールバーに追加または削除するにはボタンをドラッグします。
+	</text>
+	<text name="toybox label 2">
+		各ツールバーの設定に応じて、ボタンは以下のように表示されたり、アイコンのみで表示されます。
+	</text>
+	<button label="ツールバーを全てクリア" label_selected="ツールバーを全てクリア" name="btn_clear_all"/>
+	<button label="デフォルト設定を復元" label_selected="デフォルト設定を復元" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_translation_settings.xml b/indra/newview/skins/default/xui/ja/floater_translation_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..27143086ac44d23d205acbc6e5467e42268abb8e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/floater_translation_settings.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_translation_settings" title="チャットの翻訳設定">
+	<string name="bing_api_key_not_verified">
+		Bing appID を認証できませんでした。もう一度お試しください。
+	</string>
+	<string name="google_api_key_not_verified">
+		Google API キーを認証できませんでした。もう一度お試しください。
+	</string>
+	<string name="bing_api_key_verified">
+		Bing appID が認証されました。
+	</string>
+	<string name="google_api_key_verified">
+		Google API キーが認証されました。
+	</string>
+	<check_box label="チャット中の機械翻訳機能を有効にする" name="translate_chat_checkbox"/>
+	<text name="translate_language_label">
+		翻訳する言語:
+	</text>
+	<combo_box name="translate_language_combo">
+		<combo_box.item label="システム標準" name="System Default Language"/>
+		<combo_box.item label="英語" name="English"/>
+		<combo_box.item label="Dansk(デンマーク語)" name="Danish"/>
+		<combo_box.item label="Deutsch(ドイツ語)" name="German"/>
+		<combo_box.item label="Español(スペイン語)" name="Spanish"/>
+		<combo_box.item label="Français(フランス語)" name="French"/>
+		<combo_box.item label="Italiano(イタリア語)" name="Italian"/>
+		<combo_box.item label="Magyar(ハンガリー語)" name="Hungarian"/>
+		<combo_box.item label="Nederlands(オランダ語)" name="Dutch"/>
+		<combo_box.item label="Polski(ポーランド語)" name="Polish"/>
+		<combo_box.item label="Português(ポルトガル語)" name="Portugese"/>
+		<combo_box.item label="Русский(ロシア語)" name="Russian"/>
+		<combo_box.item label="Türkçe(トルコ語)" name="Turkish"/>
+		<combo_box.item label="Українська (ウクライナ語)" name="Ukrainian"/>
+		<combo_box.item label="中文 (正體) (中国語)" name="Chinese"/>
+		<combo_box.item label="日本語(日本語)" name="Japanese"/>
+		<combo_box.item label="한국어(韓国語)" name="Korean"/>
+	</combo_box>
+	<text name="tip">
+		翻訳サービスを選択してください:
+	</text>
+	<radio_group name="translation_service_rg">
+		<radio_item initial_value="bing" label="Bing Translator" name="bing"/>
+		<radio_item initial_value="google" label="Google Translate" name="google"/>
+	</radio_group>
+	<text name="bing_api_key_label">
+		Bing AppID [http://www.bing.com/developers/createapp.aspx AppID]:
+	</text>
+	<button label="認証" name="verify_bing_api_key_btn"/>
+	<text name="google_api_key_label">
+		Google API key [http://code.google.com/apis/language/translate/v2/getting_started.html#auth API key]:
+	</text>
+	<button label="認証" name="verify_google_api_key_btn"/>
+	<text name="google_links_text">
+		[http://code.google.com/apis/language/translate/v2/pricing.html 価格] | [https://code.google.com/apis/console 統計]
+	</text>
+	<button label="OK" name="ok_btn"/>
+	<button label="取り消し" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_voice_controls.xml b/indra/newview/skins/default/xui/ja/floater_voice_controls.xml
index f12648f208ce59195501e7c0fa08f8f2cd22f272..f7d3fd11e09885fca620dd206f58d00587401af8 100644
--- a/indra/newview/skins/default/xui/ja/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/ja/floater_voice_controls.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="floater_voice_controls" title="ボイスコントロール">
 	<string name="title_nearby">
-		近くのボイス
+		ボイス設定
 	</string>
 	<string name="title_group">
 		[GROUP] とグループコール
@@ -10,7 +10,7 @@
 		コンファレンスコール
 	</string>
 	<string name="title_peer_2_peer">
-		[NAME] でコール
+		[NAME] とコール
 	</string>
 	<string name="no_one_near">
 		近くにボイスを有効にしている人はいません。
diff --git a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml
index 3a1ae49700a752469433387ff02d4864afd691e0..2e633ae1b2c9aff0241a90edbfcacd71751349c2 100644
--- a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="hide_navbar_menu">
-	<menu_item_check label="ナビゲーションバーを表示" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="ナビゲーションバーとお気に入りバーを表示" name="ShowNavbarNavigationPanel"/>
 	<menu_item_check label="お気に入りバーを表示" name="ShowNavbarFavoritesPanel"/>
 	<menu_item_check label="「場所」のミニフィールドを表示" name="ShowMiniLocationPanel"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml
index dca872e9b8d01bd9e882b041d48e353cd76fa0e7..4c88f17f3dbdaec8e840b448b7cf1d7b662714ce 100644
--- a/indra/newview/skins/default/xui/ja/menu_login.xml
+++ b/indra/newview/skins/default/xui/ja/menu_login.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Login Menu">
 	<menu label="ミー" name="File">
-		<menu_item_call label="環境設定" name="Preferences..."/>
+		<menu_item_call label="環境設定..." name="Preferences..."/>
 		<menu_item_call label="[APP_NAME] を終了" name="Quit"/>
 	</menu>
 	<menu label="ヘルプ" name="Help">
diff --git a/indra/newview/skins/default/xui/ja/menu_toolbars.xml b/indra/newview/skins/default/xui/ja/menu_toolbars.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d5363a5131d62464add5b824cba226f79d73c5aa
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/menu_toolbars.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+	<menu_item_call label="このボタンを削除" name="Remove button"/>
+	<menu_item_call label="ツールバーのボタン..." name="Choose Buttons"/>
+	<menu_item_check label="アイコンとラベル" name="icons_with_text"/>
+	<menu_item_check label="アイコンのみ" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml
index edce5c50fc2de98ed43bfc548a0b9e31789da424..ef3261f1d434f2524321049a298ed903bdfcf28d 100644
--- a/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -1,54 +1,60 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Main Menu">
 	<menu label="ミー" name="Me">
-		<menu_item_call label="環境設定" name="Preferences"/>
-		<menu_item_call label="マイアカウント" name="Manage My Account">
-			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=ja"/>
-		</menu_item_call>
-		<menu_item_call label="L$ の購入" name="Buy and Sell L$"/>
-		<menu_item_call label="プロフィール" name="Profile"/>
-		<menu_item_call label="容姿" name="ChangeOutfit"/>
-		<menu_item_check label="持ち物" name="Inventory"/>
-		<menu_item_check label="持ち物" name="ShowSidetrayInventory"/>
-		<menu_item_check label="ジェスチャー" name="Gestures"/>
-		<menu_item_check label="マイボイス" name="ShowVoice"/>
+		<menu_item_call label="プロフィール..." name="Profile"/>
+		<menu_item_call label="容姿..." name="ChangeOutfit"/>
+		<menu_item_call label="アバターを選択..." name="Avatar Picker"/>
+		<menu_item_check label="持ち物..." name="Inventory"/>
+		<menu_item_call label="新しい持ち物ウィンドウ" name="NewInventoryWindow"/>
+		<menu_item_call label="場所..." name="Places"/>
+		<menu_item_call label="ピック..." name="Picks"/>
+		<menu_item_call label="カメラコントロール..." name="Camera Controls"/>
 		<menu label="ムーブメント" name="Movement">
 			<menu_item_call label="座る" name="Sit Down Here"/>
 			<menu_item_check label="飛ぶ" name="Fly"/>
 			<menu_item_check label="常に走る" name="Always Run"/>
 			<menu_item_call label="私のアニメーションを停止する" name="Stop Animating My Avatar"/>
 		</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="管理者権限のリクエスト" name="Request Admin Options"/>
 		<menu_item_call label="管理者ステータス解除" name="Leave Admin Options"/>
+		<menu_item_call label="L$ の購入" name="Buy and Sell L$"/>
+		<menu_item_call label="マイアカウント..." name="Manage My Account">
+			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=ja"/>
+		</menu_item_call>
+		<menu_item_call label="環境設定..." name="Preferences"/>
+		<menu_item_call label="ツールバーのボタン..." name="Toolbars"/>
+		<menu_item_call label="全てのコントロールを非表示にする" name="Hide UI"/>
 		<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="Speak"/>
+		<menu_item_check label="ボイス設定..." name="Nearby Voice"/>
+		<menu_item_check label="ボイスモーフィング..." name="ShowVoice"/>
+		<menu_item_check label="ジェスチャー..." name="Gestures"/>
 		<menu_item_call label="フレンド" name="My Friends"/>
-		<menu_item_call label="所属グループ" name="My Groups"/>
-		<menu_item_check label="近くのチャット" name="Nearby Chat"/>
+		<menu_item_call label="グループ" name="My Groups"/>
 		<menu_item_call label="近くにいる人" name="Active Speakers"/>
-		<menu_item_check label="近くのボイス" name="Nearby Voice"/>
 	</menu>
 	<menu label="世界" name="World">
-		<menu_item_check label="ミニマップ" name="Mini-Map"/>
+		<menu_item_call label="現在地をランドマーク" name="Create Landmark Here"/>
+		<menu_item_call label="行き先..." name="Destinations"/>
 		<menu_item_check label="世界地図" name="World Map"/>
+		<menu_item_check label="ミニマップ" name="Mini-Map"/>
 		<menu_item_check label="検索" name="Search"/>
+		<menu_item_call label="ホームにテレポート" name="Teleport Home"/>
+		<menu_item_call label="現在地をホームに設定" name="Set Home to Here"/>
 		<menu_item_call label="スナップショット" name="Take Snapshot"/>
-		<menu_item_call label="現在地をランドマーク" name="Create Landmark Here"/>
-		<menu label="場所のプロフィール" name="Land">
-			<menu_item_call label="場所のプロフィール" name="Place Profile"/>
-			<menu_item_call label="土地情報" name="About Land"/>
-			<menu_item_call label="地域 / 不動産" name="Region/Estate"/>
-		</menu>
+		<menu_item_call label="場所のプロフィール" name="Place Profile"/>
+		<menu_item_call label="土地情報" name="About Land"/>
+		<menu_item_call label="地域 / 不動産" name="Region/Estate"/>
+		<menu_item_call label="保有地..." name="My Land"/>
 		<menu_item_call label="この土地を購入" name="Buy Land"/>
-		<menu_item_call label="自分の土地" name="My Land"/>
 		<menu label="表示" name="LandShow">
-			<menu_item_check label="移動コントロール" name="Movement Controls"/>
-			<menu_item_check label="カメラコントロール" name="Camera Controls"/>
 			<menu_item_check label="立入禁止ライン" name="Ban Lines"/>
 			<menu_item_check label="ビーコン(標識)" name="beacons"/>
 			<menu_item_check label="プロパティ境界線" name="Property Lines"/>
@@ -57,16 +63,15 @@
 			<menu_item_check label="区画プロパティ" name="Parcel Properties"/>
 			<menu_item_check label="アドバンスメニュー" name="Show Advanced Menu"/>
 		</menu>
-		<menu_item_call label="ホームにテレポート" name="Teleport Home"/>
-		<menu_item_call label="現在地をホームに設定" name="Set Home to Here"/>
 		<menu label="太陽" name="Environment Settings">
 			<menu_item_call label="日の出" name="Sunrise"/>
 			<menu_item_call label="正午" name="Noon"/>
 			<menu_item_call label="日没" name="Sunset"/>
 			<menu_item_call label="深夜" name="Midnight"/>
+			<menu_item_call label="リージョンの設定を使用" name="Use Region Settings"/>
 		</menu>
-		<menu label="自然環境エディター" name="Enviroment Editor">
-			<menu_item_call label="環境の設定..." name="Enviroment Settings"/>
+		<menu label="自然環境エディター" name="Environment Editor">
+			<menu_item_call label="自然環境の設定..." name="Environment Settings"/>
 			<menu label="水の事前設定" name="Water Presets">
 				<menu_item_call label="新しい事前設定..." name="new_water_preset"/>
 				<menu_item_call label="事前設定を編集..." name="edit_water_preset"/>
@@ -139,13 +144,14 @@
 			<menu_item_call label="アニメーション(L$[COST])..." name="Upload Animation"/>
 			<menu_item_call label="モデル" name="Upload Model"/>
 			<menu_item_call label="一括 (ファイルにつきL$[COST])..." name="Bulk Upload"/>
+			<menu_item_call label="デフォルトのアップロード権限を設定" name="perm prefs"/>
 		</menu>
 		<menu_item_call label="元に戻す" name="Undo"/>
 		<menu_item_call label="やり直し" name="Redo"/>
 	</menu>
 	<menu label="ヘルプ" name="Help">
+		<menu_item_call label="ハウツー..." name="How To"/>
 		<menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/>
-		<menu_item_check label="ヒントを有効にする" name="Enable Hints"/>
 		<menu_item_call label="嫌がらせを報告する" name="Report Abuse"/>
 		<menu_item_call label="バグを報告する" name="Report Bug"/>
 		<menu_item_call label="[APP_NAME] について" name="About Second Life"/>
@@ -161,7 +167,7 @@
 		<menu label="パフォーマンスツール" name="Performance Tools">
 			<menu_item_call label="ラグ計測器" name="Lag Meter"/>
 			<menu_item_check label="統計バー" name="Statistics Bar"/>
-			<menu_item_check label="アバターのレンダリングコストを表示する" name="Avatar Rendering Cost"/>
+			<menu_item_check label="アバターの描画ウェイトを表示" name="Avatar Rendering Cost"/>
 		</menu>
 		<menu label="ハイライトと目に見えるもの" name="Highlighting and Visibility">
 			<menu_item_check label="チージービーコン" name="Cheesy Beacon"/>
@@ -199,11 +205,10 @@
 		<menu_item_check label="Use Plugin Read Thread" name="Use Plugin Read Thread"/>
 		<menu_item_call label="グループキャッシュのクリア" name="ClearGroupCache"/>
 		<menu_item_check label="マウスの平滑化" name="Mouse Smoothing"/>
+		<menu_item_call label="リリースキー" name="Release Keys"/>
 		<menu label="ショートカット" name="Shortcuts">
 			<menu_item_call label="画像 (L$ [COST] )..." name="Upload Image"/>
 			<menu_item_check label="検索" name="Search"/>
-			<menu_item_call label="キーをリリース" name="Release Keys"/>
-			<menu_item_call label="UI のサイズをデフォルトに設定する" name="Set UI Size to Default"/>
 			<menu_item_check label="アドバンスメニューを表示 - レガシーのショートカット" name="Show Advanced Menu - legacy shortcut"/>
 			<menu_item_call label="ウィンドウを閉じる" name="Close Window"/>
 			<menu_item_call label="全てのウィンドウを閉じる" name="Close All Windows"/>
@@ -289,6 +294,8 @@
 			<menu_item_check label="å…‰" name="Lights"/>
 			<menu_item_check label="骨組みの衝突判定" name="Collision Skeleton"/>
 			<menu_item_check label="レイキャスト" name="Raycast"/>
+			<menu_item_check label="風のベクトル" name="Wind Vectors"/>
+			<menu_item_check label="描画の詳細度" name="rendercomplexity"/>
 			<menu_item_check label="スカルプト" name="Sculpt"/>
 		</menu>
 		<menu label="レンダリング" name="Rendering">
@@ -300,7 +307,6 @@
 			<menu_item_check label="光と影" name="Lighting and Shadows"/>
 			<menu_item_check label="太陽・月・プロジェクタからの影" name="Shadows from Sun/Moon/Projectors"/>
 			<menu_item_check label="SSAO と影の平滑化" name="SSAO and Shadow Smoothing"/>
-			<menu_item_check label="グローバルイルミネーション(試験段階)" name="Global Illumination"/>
 			<menu_item_check label="GL デバッグ" name="Debug GL"/>
 			<menu_item_check label="経路をデバッグ" name="Debug Pipeline"/>
 			<menu_item_check label="自動アルファマスク(遅延)" name="Automatic Alpha Masks (deferred)"/>
diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml
index c138aeb383d671b2c310f537e1a20f7250dc4f45..20468c8c2af75ddf030ebae35af34f9052a04042 100644
--- a/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/indra/newview/skins/default/xui/ja/notifications.xml
@@ -1010,7 +1010,7 @@ L$ は返金されません。
 		</form>
 	</notification>
 	<notification name="RemoveFromFriends">
-		フレンドリストから [NAME] を削除しますか?
+		フレンドリストから &lt;nolink&gt;[NAME]&lt;/nolink&gt; を削除しますか?
 		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
 	</notification>
 	<notification name="RemoveMultipleFromFriends">
@@ -1144,8 +1144,13 @@ L$ は返金されません。
 		-safe オプションを指定したので、
 表示設定はセーフレベルに設定されています。
 	</notification>
-	<notification name="DisplaySetToRecommended">
-		表示設定は、あなたのシステム構成に基づいて推奨されたレベルに設定されています。
+	<notification name="DisplaySetToRecommendedGPUChange">
+		グラフィックの変更により、画面設定は推奨レベルに設定されました。
+&apos;[LAST_GPU]&apos; から
+&apos;[THIS_GPU]&apos; まで
+	</notification>
+	<notification name="DisplaySetToRecommendedFeatureChange">
+		レンダリングサブシステムの変更により、画面設定は推奨レベルに設定されました。
 	</notification>
 	<notification name="ErrorMessage">
 		[ERROR_MESSAGE]
@@ -1467,7 +1472,7 @@ http://secondlife.com/download から最新バージョンをダウンロード
 		<usetemplate ignoretext="オブジェクトを所有者に返却する前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
 	</notification>
 	<notification name="GroupLeaveConfirmMember">
-		現在あなたは [GROUP] のメンバーです。
+		現在あなたは &lt;nolink&gt;[GROUP]&lt;/nolink&gt; のメンバーです。
 このグループを抜けますか?
 		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
 	</notification>
@@ -1953,6 +1958,18 @@ Adult 専用リージョンに入るには、住人のアカウントが年齢
 		終了しようとしています。続けますか?
 		<usetemplate ignoretext="終了時の確認" name="okcancelignore" notext="終了しない" yestext="終了"/>
 	</notification>
+	<notification name="ConfirmRestoreToybox">
+		この操作を実行すると、デフォルト設定のボタンとツールバーが復元されます。
+
+この操作は元に戻せません。
+		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmClearAllToybox">
+		この操作により、全てのボタンはツールボックスに戻り、ツールバーは空になります。
+    
+この操作は元に戻せません。
+		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
+	</notification>
 	<notification name="DeleteItems">
 		[QUESTION]
 		<usetemplate ignoretext="アイテムを削除する前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
@@ -2161,10 +2178,10 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 		件名: [SUBJECT]、メッセージ: [MESSAGE]
 	</notification>
 	<notification name="FriendOnline">
-		[NAME] はオンライン中です
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; はオンラインです
 	</notification>
 	<notification name="FriendOffline">
-		[NAME] はオフライン中です
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; はオフラインです
 	</notification>
 	<notification name="AddSelfFriend">
 		残念ながら自分自身をフレンド登録することはできません。
@@ -2278,13 +2295,15 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 		コーリングカードが拒否されました。
 	</notification>
 	<notification name="TeleportToLandmark">
-		画面右の「場所」パネルを開いて、「ランドマーク」タブを選ぶと、[NAME] といった場所にテレポートできます。 
-好きなランドマークをクリックして選び、次にパネル下の「テレポート」をクリックします。
-(ランドマークをダブルクリック、または右クリックして「テレポート」を選んでも同じです。)
+		[NAME] などの場所にテレポートするには、「場所」ボタンをクリックしてから、
+表示されたウィンドウで「ランドマーク」タブを選択します。ランドマークを
+いずれか 1 つ選択してから、ウィンドウ下部にある「テレポート」をクリックします。
+(この操作は、ランドマークをダブルクリックするか、右クリックして
+「テレポート」を選択して実行することもできます。)
 	</notification>
 	<notification name="TeleportToPerson">
-		画面右の「人」パネルを開いて、[NAME] といった住人に連絡を取ることができます。
-リストから住人を選択して、パネル下の「IM」をクリックします。
+		[NAME] のような住人に連絡をとるには、「人」ボタンをクリックし、表示されるウィンドウで「住人」を選択してから、
+ウィンドウ下部にある「IM」をクリックします。
 (リストの名前をダブルクリック、または右クリックして「IM」を選んでも同じです。)
 	</notification>
 	<notification name="CantSelectLandFromMultipleRegions">
@@ -2306,6 +2325,9 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 	<notification name="PaymentSent">
 		[MESSAGE]
 	</notification>
+	<notification name="PaymentFailure">
+		[MESSAGE]
+	</notification>
 	<notification name="EventNotification">
 		イベント通知:
 
@@ -2561,10 +2583,10 @@ Web ページにリンクすると、他人がこの場所に簡単にアクセ
 		</form>
 	</notification>
 	<notification name="FriendshipAccepted">
-		[NAME]は、フレンド登録を受け入れました。
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; はあなたからの友人登録リクエストを受諾しました。
 	</notification>
 	<notification name="FriendshipDeclined">
-		[NAME]は、フレンド登録を断りました。
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; はあなたからの友人登録リクエストを拒否しました。
 	</notification>
 	<notification name="FriendshipAcceptedByMe">
 		フレンドの登録依頼が承認されました。
@@ -3041,10 +3063,6 @@ M キーを押して変更します。
 			<button name="cancel" text="取り消し"/>
 		</form>
 	</notification>
-	<notification label="" name="ModeChange">
-		モードを変更するには終了して再起動する必要があります。
-		<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
-	</notification>
 	<notification label="" name="NoClassifieds">
 		クラシファイド広告の作成と編集はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。
 		<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
@@ -3089,6 +3107,10 @@ M キーを押して変更します。
 		検索はアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか?
 		<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
 	</notification>
+	<notification label="" name="ConfirmHideUI">
+		この操作により、全てのメニュー項目とボタンが非表示になります。再び表示するには [SHORTCUT] をもう一度クリックしてください。
+		<usetemplate ignoretext="UI を非表示にする前に確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
+	</notification>
 	<global name="UnsupportedGLRequirements">
 		[APP_NAME] に必要なハードウェアがないようです。 [APP_NAME] にはマルチテクスチャをサポートする OpenGL グラフィックカードが必要です。 お使いのグラフィックカードの最新ドライバがインストールされているかどうか、オペレーティングシステムのサービスパックとパッチが入っているかをご確認ください。
 
diff --git a/indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6717ba9ba39c9ef7d6032cafae3d5ba18585fd9c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="会話"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="通知"/>
+			</chiclet_notification>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_skin.xml b/indra/newview/skins/default/xui/ja/panel_edit_skin.xml
index 2c554dad94da1d16d05091e26d4098d3dc447666..7573132576bb8bc0bfbb6f271b81a3cb3a8c733d 100644
--- a/indra/newview/skins/default/xui/ja/panel_edit_skin.xml
+++ b/indra/newview/skins/default/xui/ja/panel_edit_skin.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_skin_panel">
 	<panel name="avatar_skin_color_panel">
-		<texture_picker label="頭部のタトゥー" name="Head Tattoos" tool_tip="クリックして写真を選択"/>
-		<texture_picker label="上部のタトゥー" name="Upper Tattoos" tool_tip="クリックして写真を選択"/>
-		<texture_picker label="下部のタトゥー" name="Lower Tattoos" tool_tip="クリックして写真を選択"/>
+		<texture_picker label="頭" name="Head" tool_tip="クリックして写真を選択します"/>
+		<texture_picker label="上半身" name="Upper Body" tool_tip="クリックして写真を選択します"/>
+		<texture_picker label="下半身" name="Lower Body" tool_tip="クリックして写真を選択します"/>
 	</panel>
 	<panel name="accordion_panel">
 		<accordion name="wearable_accordion">
diff --git a/indra/newview/skins/default/xui/ja/panel_me.xml b/indra/newview/skins/default/xui/ja/panel_me.xml
index dda5bc00097076ecc71890aa077a0bb3a69de4cd..896bbff0ee3abea6c5e007d7df179ff6bdc669c0 100644
--- a/indra/newview/skins/default/xui/ja/panel_me.xml
+++ b/indra/newview/skins/default/xui/ja/panel_me.xml
@@ -1,7 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="マイ プロフィール" name="panel_me">
-	<tab_container name="tabs">
-		<panel label="マイ プロフィール" name="panel_profile"/>
-		<panel label="マイ ピック" name="panel_picks"/>
-	</tab_container>
+	<panel label="マイ ピック" name="panel_picks"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_my_profile.xml b/indra/newview/skins/default/xui/ja/panel_my_profile.xml
deleted file mode 100644
index a0d99ba5a8f598437ef430237b98509a8994dcca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/ja/panel_my_profile.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="プロフィール" name="panel_profile">
-	<string name="CaptionTextAcctInfo">
-		[ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
-	</string>
-	<string name="payment_update_link_url">
-		http://www.secondlife.com/account/billing.php?lang=ja
-	</string>
-	<string name="partner_edit_link_url">
-		http://www.secondlife.com/account/billing.php?lang=ja
-	</string>
-	<string name="my_account_link_url" value="http://secondlife.com/account"/>
-	<string name="no_partner_text" value="なし"/>
-	<string name="no_group_text" value="なし"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="scroll_content_panel">
-					<panel name="second_life_image_panel">
-						<text name="display_name_descr_text">
-							ユーザー名
-						</text>
-						<text name="name_descr_text">
-							表示名
-						</text>
-						<button label="プロフィール" name="see_profile_btn" tool_tip="このアバターのプロフィールを表示"/>
-					</panel>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
index 0426c4fe9a100e8d61f1802157e2da78c6c0e4ad..51402b2e009de368ca52446c161febcbf03a5c05 100644
--- a/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="前の場所へ戻ります"/>
-		<pull_button name="forward_btn" tool_tip="次の場所へ進みます"/>
-		<button name="home_btn" tool_tip="「ホーム」にテレポート"/>
-		<location_input label="場所" name="location_combo"/>
-		<search_combo_box label="検索" name="search_combo_box" tool_tip="検索">
-			<combo_editor label="[SECOND_LIFE] を検索:" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
-		<label name="favorites_bar_label" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
-			お気に入りバー
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="お気に入りをもっと表示"/>
-	</favorites_bar>
+	<layout_stack name="nvp_stack">
+		<layout_panel name="navigation_layout_panel">
+			<panel name="navigation_panel">
+				<pull_button name="back_btn" tool_tip="前の場所"/>
+				<pull_button name="forward_btn" tool_tip="次の場所"/>
+				<button name="home_btn" tool_tip="「ホーム」にテレポートします"/>
+				<location_input label="所在地" name="location_combo"/>
+			</panel>
+		</layout_panel>
+		<layout_panel name="favorites_layout_panel">
+			<favorites_bar name="favorite" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
+				<label name="favorites_bar_label" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
+					お気に入りバー
+				</label>
+				<more_button name="&gt;&gt;" tool_tip="お気に入りをもっと表示">
+					詳細 ▼
+				</more_button>
+			</favorites_bar>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml b/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..aca055bb438fc1614ee41a02c6f7bd55a823b4d1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+	<check_box label="チャットを翻訳" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_notes.xml b/indra/newview/skins/default/xui/ja/panel_notes.xml
deleted file mode 100644
index aa6d823c59f0aeb4c56345c91b5ca06a12a06039..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/ja/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="メモとプライバシー" name="panel_notes">
-	<layout_stack name="layout">
-		<layout_panel name="notes_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<text name="status_message" value="個人的メモ:"/>
-					<text name="status_message2" value="この人に許可:"/>
-					<check_box label="オンライン状態の確認" name="status_check"/>
-					<check_box label="地図で居場所を確認" name="map_check"/>
-					<check_box label="私のオブジェクトの編集・削除・取得" name="objects_check"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-		<layout_panel name="notes_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="フレンド登録" name="add_friend" tool_tip="フレンド登録を申し出ます"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="IM" name="im" tool_tip="インスタントメッセージを開きます"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="コール" name="call" tool_tip="この住人にコールする"/>
-				</layout_panel>
-				<layout_panel name="show_on_map_btn_lp">
-					<button label="地図" name="show_on_map_btn" tool_tip="住人を地図上で表示する"/>
-				</layout_panel>
-				<layout_panel name="teleport_btn_lp">
-					<button label="テレポート" name="teleport" tool_tip="テレポートを送ります"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_postcard_message.xml b/indra/newview/skins/default/xui/ja/panel_postcard_message.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b7c3f48557ef1d44001adabdf9b5a35d5999ee24
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_postcard_message.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_message">
+	<text name="to_label">
+		終:
+	</text>
+	<text name="name_label">
+		始:
+	</text>
+	<text name="subject_label">
+		件名:
+	</text>
+	<line_editor label="件名をここに入力してください。" name="subject_form"/>
+	<text name="msg_label">
+		メッセージ:
+	</text>
+	<text_editor name="msg_form">
+		メッセージをここに入力してください。
+	</text_editor>
+	<button label="取り消し" name="cancel_btn"/>
+	<button label="送信" name="send_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_postcard_settings.xml b/indra/newview/skins/default/xui/ja/panel_postcard_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..314aaef7fd674913b3c677519b27c81ce643a0be
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_postcard_settings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_settings">
+	<combo_box label="解像度" name="postcard_size_combo">
+		<combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="カスタム" name="Custom"/>
+	</combo_box>
+	<layout_stack name="postcard_image_params_ls">
+		<layout_panel name="postcard_image_size_lp">
+			<spinner label="å¹…" name="postcard_snapshot_width"/>
+			<spinner label="高さ" name="postcard_snapshot_height"/>
+			<check_box label="縦横比の固定" name="postcard_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="postcard_image_format_quality_lp">
+			<slider label="画質" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+</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 5038140ce51498475d5d79b6f7fb67439e92b52a..75bf28a3c8bbb3b85bfd6aa96ada4dd5ec005ec0 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml
@@ -29,30 +29,5 @@
 	<check_box label="IM チャット" name="EnableIMChatPopups" tool_tip="これを選択すると、インスタントメッセージを受信した際にポップアップが表示されます"/>
 	<spinner label="近くのチャットメッセージが表示される長さ:" name="nearby_toasts_lifetime"/>
 	<spinner label="近くのチャットメッセージが消えるまでの長さ:" name="nearby_toasts_fadingtime"/>
-	<check_box label="Use machine translation while chatting (powered by Google)" name="translate_chat_checkbox"/>
-	<text name="translate_chb_label">
-		チャット中に内容を機械翻訳する(Google翻訳)
-	</text>
-	<text name="translate_language_text">
-		翻訳する言語:
-	</text>
-	<combo_box name="translate_language_combobox">
-		<combo_box.item label="システム標準" name="System Default Language"/>
-		<combo_box.item label="English(英語)" name="English"/>
-		<combo_box.item label="Dansk(デンマーク語)" name="Danish"/>
-		<combo_box.item label="Deutsch(ドイツ語)" name="German"/>
-		<combo_box.item label="Español(スペイン語)" name="Spanish"/>
-		<combo_box.item label="Français(フランス語)" name="French"/>
-		<combo_box.item label="Italiano(イタリア語)" name="Italian"/>
-		<combo_box.item label="Magyar(ハンガリー語)" name="Hungarian"/>
-		<combo_box.item label="Nederlands(オランダ語)" name="Dutch"/>
-		<combo_box.item label="Polski(ポーランド語)" name="Polish"/>
-		<combo_box.item label="Português(ポルトガル語)" name="Portugese"/>
-		<combo_box.item label="Русский(ロシア語)" name="Russian"/>
-		<combo_box.item label="Türkçe(トルコ語)" name="Turkish"/>
-		<combo_box.item label="Українська(ウクライナ語)" name="Ukrainian"/>
-		<combo_box.item label="中文 (简体)(中国語)" name="Chinese"/>
-		<combo_box.item label="日本語" name="Japanese"/>
-		<combo_box.item label="한국어(韓国語)" name="Korean"/>
-	</combo_box>
+	<button label="チャットの翻訳設定" name="ok_btn"/>
 </panel>
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 e4091972d6761b19232486de5eb1d1cdd9727b04..91e1514e496d38ceb43a79512c8191c846418b65 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml
@@ -11,10 +11,12 @@
 		<combo_box.item label="Español (スペイン語) – ベータ" name="Spanish"/>
 		<combo_box.item label="Français (フランス語) – ベータ" name="French"/>
 		<combo_box.item label="Italiano (イタリア語) - ベータ" name="Italian"/>
-		<combo_box.item label="Nederlands (オランダ語) - ベータ" name="Dutch"/>
 		<combo_box.item label="Polski (ポーランド語) - ベータ" name="Polish"/>
 		<combo_box.item label="Português(ポルトガル語) - ベータ" name="Portugese"/>
+		<combo_box.item label="Русский (ロシア語) - ベータ" name="Russian"/>
+		<combo_box.item label="Türkçe (トルコ語) - ベータ" name="Turkish"/>
 		<combo_box.item label="日本語 – ベータ" name="(Japanese)"/>
+		<combo_box.item label="正體中文(簡体字中国語)- ベータ版" name="Traditional Chinese"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(再起動後に反映)
@@ -49,7 +51,6 @@
 	<check_box label="グループタイトル" name="show_all_title_checkbox1" tool_tip="オフィサーまたはメンバーなど、グループタイトルを表示"/>
 	<check_box label="フレンドをハイライト表示" name="show_friends" tool_tip="フレンドの名前をハイライト表示"/>
 	<check_box label="表示名を表示" name="display_names_check" tool_tip="これを選択すると、チャット、IM などで表示名が表示されます。"/>
-	<check_box label="ビューワの UI ヒントを有効にする" name="viewer_hints_check"/>
 	<text name="inworld_typing_rg_label">
 		文字キーを押して次の操作:
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_move.xml b/indra/newview/skins/default/xui/ja/panel_preferences_move.xml
index 806bcfc14a6182d362c00ca08a977eb9e020a08b..121bebfd52900be50d689c8839886d1de2b9713a 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_move.xml
@@ -7,18 +7,33 @@
 	</text>
 	<check_box label="制作・編集" name="edit_camera_movement" tool_tip="編集モードのオン・オフの切り替えに、自動カメラポジションを使います"/>
 	<check_box label="容姿" name="appearance_camera_movement" tool_tip="編集モードに入ったときに、自動カメラポジションを使います"/>
-	<check_box initial_value="true" label="サイドバー" name="appearance_sidebar_positioning" tool_tip="サイドバーに自動カメラポジションを使います"/>
+	<text name="keyboard_lbl">
+		キーボード:
+	</text>
+	<check_box label="常にキー操作で動くようにする" name="arrow_keys_move_avatar_check"/>
+	<check_box label="上矢印キー2度押し+長押しで走る" name="tap_tap_hold_to_run"/>
+	<text name="mouse_lbl">
+		マウス:
+	</text>
 	<check_box label="一人称視点で表示する" name="first_person_avatar_visible"/>
 	<text name=" Mouse Sensitivity">
 		一人称視点のマウスの感度:
 	</text>
 	<check_box label="切り替え" name="invert_mouse"/>
-	<check_box label="常にキー操作で動くようにする" name="arrow_keys_move_avatar_check"/>
-	<check_box label="上矢印キー2度押し+長押しで走る" name="tap_tap_hold_to_run"/>
-	<check_box label="ダブルクリックで次の操作:" name="double_click_chkbox"/>
-	<radio_group name="double_click_action">
-		<radio_item label="テレポート" name="radio_teleport"/>
-		<radio_item label="自動追跡" name="radio_autopilot"/>
-	</radio_group>
+	<text name="single_click_action_lbl">
+		土地をシングルクリック:
+	</text>
+	<combo_box name="single_click_action_combo">
+		<combo_box.item label="動作なし" name="0"/>
+		<combo_box.item label="クリックされた地点に移動" name="1"/>
+	</combo_box>
+	<text name="double_click_action_lbl">
+		土地をダブルクリック:
+	</text>
+	<combo_box name="double_click_action_combo">
+		<combo_box.item label="動作なし" name="0"/>
+		<combo_box.item label="クリックされた地点に移動" name="1"/>
+		<combo_box.item label="クリックされた地点にテレポート" name="2"/>
+	</combo_box>
 	<button label="その他のディバイス" name="joystick_setup_button"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
index 7877c0495ff77b0010b8a7dd5a812644e453fb56..d90a1632ab6172cef0b93fbb1d93aeec8855bb0a 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
@@ -15,7 +15,7 @@
 		Web:
 	</text>
 	<radio_group name="use_external_browser">
-		<radio_item label="指定のブラウザ(IE や Firefox)を使用" name="external" tool_tip="デフォルトのシステム Web ブラウザでヘルプや Web リンク先などを見ます。全画面で起動中にはおすすめしません。" value="1"/>
+		<radio_item label="指定のブラウザ(IE や Firefox)を使用" name="external" tool_tip="デフォルトのシステム Web ブラウザでヘルプや Web リンク先などを見ます。全画面で起動中にはおすすめしません。" value="true"/>
 		<radio_item label="内蔵ブラウザを使用" name="internal" tool_tip="内蔵ブラウザでヘルプや Web リンクなどを見ます。[APP_NAME] 内に新しいウィンドウでこのブラウザが開きます。" value=""/>
 	</radio_group>
 	<check_box initial_value="true" label="プラグインを有効にする" name="browser_plugins_enabled"/>
diff --git a/indra/newview/skins/default/xui/ja/panel_profile.xml b/indra/newview/skins/default/xui/ja/panel_profile.xml
deleted file mode 100644
index 1acad9f81aa8a844fba045e1f3699bfcc20b8ba6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/ja/panel_profile.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="プロフィール" name="panel_profile">
-	<string name="CaptionTextAcctInfo">
-		[ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
-	</string>
-	<string name="payment_update_link_url">
-		http://www.secondlife.com/account/billing.php?lang=ja-JP
-	</string>
-	<string name="partner_edit_link_url">
-		http://www.secondlife.com/account/partners.php?lang=ja
-	</string>
-	<string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=ja-JP"/>
-	<string name="no_partner_text" value="なし"/>
-	<string name="no_group_text" value="なし"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<panel name="second_life_image_panel">
-						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
-					</panel>
-					<panel name="first_life_image_panel">
-						<text name="title_rw_descr_text" value="現実世界:"/>
-					</panel>
-					<text name="title_member_text" value="住人登録:"/>
-					<text name="title_acc_status_text" value="アカウントの状態:"/>
-					<text_editor name="acc_status_text">
-						住人。 支払情報未登録。
-              リンデン。
-					</text_editor>
-					<text name="title_partner_text" value="パートナー:"/>
-					<panel name="partner_data_panel">
-						<text initial_value="(取得中)" name="partner_text"/>
-					</panel>
-					<text name="title_groups_text" value="グループ:"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-	<layout_stack name="layout_verb_buttons">
-		<layout_panel name="profile_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="フレンド登録" name="add_friend" tool_tip="フレンド登録を申し出ます"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="IM" name="im" tool_tip="インスタントメッセージを開きます"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="コール" name="call" tool_tip="この住人にコールする"/>
-				</layout_panel>
-				<layout_panel name="chat_btn_lp">
-					<button label="テレポート" name="teleport" tool_tip="テレポートを送ります"/>
-				</layout_panel>
-				<layout_panel name="overflow_btn_lp">
-					<menu_button label="▼" name="overflow_btn" tool_tip="住人にお金を渡すか持ち物を共有します"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="profile_me_buttons_panel">
-			<button label="プロフィールの編集" name="edit_profile_btn" tool_tip="個人的な情報を編集します"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_profile_view.xml b/indra/newview/skins/default/xui/ja/panel_profile_view.xml
deleted file mode 100644
index 5cb65757731a18c1326e00fe201a6978a72b7764..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/ja/panel_profile_view.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
-	<string name="status_online">
-		オンライン
-	</string>
-	<string name="status_offline">
-		オフライン
-	</string>
-	<text name="display_name_label" value="表示名:"/>
-	<text name="solo_username_label" value="ユーザー名:"/>
-	<text name="status" value="オンライン"/>
-	<text name="user_name_small" value="Jack oh look at me this is a super duper long name"/>
-	<text name="user_name" value="Jack Linden"/>
-	<button name="copy_to_clipboard" tool_tip="クリップボードにコピー"/>
-	<text name="user_label" value="ユーザー名:"/>
-	<text name="user_slid" value="jack.linden"/>
-	<tab_container name="tabs">
-		<panel label="プロフィール" name="panel_profile"/>
-		<panel label="ピック" name="panel_picks"/>
-		<panel label="メモとプライバシー" name="panel_notes"/>
-	</tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..46f2b0a3f99ea49212b29ba5d54fb3305fc83f49
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_snapshot_inventory.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_inventory">
+	<text name="title">
+		「持ち物」に保存
+	</text>
+	<text name="hint_lbl">
+		画像を持ち物に保存するには L$[UPLOAD_COST] の費用がかかります。画像をテクスチャとして保存するには平方形式の 1 つを選択してください。
+	</text>
+	<combo_box label="解像度" name="texture_size_combo">
+		<combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
+		<combo_box.item label="小(128x128)" name="Small(128x128)"/>
+		<combo_box.item label="中(256x256)" name="Medium(256x256)"/>
+		<combo_box.item label="大(512x512)" name="Large(512x512)"/>
+		<combo_box.item label="カスタム" name="Custom"/>
+	</combo_box>
+	<spinner label="å¹…" name="inventory_snapshot_width"/>
+	<spinner label="高さ" name="inventory_snapshot_height"/>
+	<check_box label="縦横比の固定" name="inventory_keep_aspect_check"/>
+	<button label="取り消し" name="cancel_btn"/>
+	<button label="保存" name="save_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_local.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_local.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cb658fb6c9af640aa74ad65d44461044ebcf3a17
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_snapshot_local.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_local">
+	<text name="title">
+		コンピューターに保存
+	</text>
+	<combo_box label="解像度" name="local_size_combo">
+		<combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
+		<combo_box.item label="320x240" name="320x240"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="1280x1024" name="1280x1024"/>
+		<combo_box.item label="1600x1200" name="1600x1200"/>
+		<combo_box.item label="カスタム" name="Custom"/>
+	</combo_box>
+	<layout_stack name="local_image_params_ls">
+		<layout_panel name="local_image_size_lp">
+			<spinner label="å¹…" name="local_snapshot_width"/>
+			<spinner label="高さ" name="local_snapshot_height"/>
+			<check_box label="縦横比の固定" name="local_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="local_image_format_quality_lp">
+			<combo_box label="書式" name="local_format_combo">
+				<combo_box.item label="PNG(可逆圧縮)" name="PNG"/>
+				<combo_box.item label="JPEG" name="JPEG"/>
+				<combo_box.item label="BMP(可逆圧縮)" name="BMP"/>
+			</combo_box>
+			<slider label="画質" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+	<button label="取り消し" name="cancel_btn"/>
+	<flyout_button label="保存" name="save_btn" tool_tip="画像をファイルに保存">
+		<flyout_button.item label="保存" name="save_item"/>
+		<flyout_button.item label="別名で保存..." name="saveas_item"/>
+	</flyout_button>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cd5b7590ad8e680aed43e742091fb5baffd8521e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_snapshot_options.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_options">
+	<button label="プロフィールフィードに投稿する" name="save_to_profile_btn"/>
+	<button label="メール" name="save_to_email_btn"/>
+	<button label="持ち物に保存(L$[Amount])" name="save_to_inventory_btn"/>
+	<button label="コンピューターに保存" name="save_to_computer_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_postcard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1ddd723840070afac6a8a3f983a60056e3a6bfb6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_snapshot_postcard.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_postcard">
+	<string name="default_subject">
+		[SECOND_LIFE] からのポストカードです。
+	</string>
+	<string name="default_message">
+		ぜひご覧ください!
+	</string>
+	<string name="upload_message">
+		送信中...
+	</string>
+	<text name="title">
+		メール
+	</text>
+	<button label="メッセージ" name="message_btn"/>
+	<button label="設定" name="settings_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b860a6afe91089bef433dba2b4d99cd5fc67671e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ja/panel_snapshot_profile.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_profile">
+	<text name="title">
+		プロフィールフィードに投稿する
+	</text>
+	<combo_box label="解像度" name="profile_size_combo">
+		<combo_box.item label="現在のウィンドウ" name="CurrentWindow"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="カスタム" name="Custom"/>
+	</combo_box>
+	<layout_stack name="profile_image_params_ls">
+		<layout_panel name="profile_image_size_lp">
+			<spinner label="å¹…" name="profile_snapshot_width"/>
+			<spinner label="高さ" name="profile_snapshot_height"/>
+			<check_box label="縦横比の固定" name="profile_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="profile_image_metadata_lp">
+			<text name="caption_label">
+				キャプション:
+			</text>
+			<check_box initial_value="true" label="場所を含む" name="add_location_cb"/>
+		</layout_panel>
+	</layout_stack>
+	<button label="取り消し" name="cancel_btn"/>
+	<button label="投稿" name="post_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ja/panel_status_bar.xml b/indra/newview/skins/default/xui/ja/panel_status_bar.xml
index 35c1148cc18594fdaabb30e89f376c0eef4af2f4..4fb876f690bd95fa00360b6b516d32fcbdc3e1a1 100644
--- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml
@@ -18,11 +18,8 @@
 	<panel name="balance_bg">
 		<text name="balance" tool_tip="クリックして L$ 残高を更新" value="L$20"/>
 		<button label="L$ の購入" name="buyL" tool_tip="クリックして L$ を購入します"/>
+		<button label="店" name="goShop" tool_tip="Second Life マーケットプレイスを開く"  width="40"/>
 	</panel>
-	<combo_box name="mode_combo" tool_tip="モードを選択します。ベーシックモードでは探索やチャットをすばやく簡単に実行でき、アドバンスモードでは、より多くの機能が利用できます。">
-		<combo_box.item label="ベーシックモード" name="Basic"/>
-		<combo_box.item label="アドバンスモード" name="Advanced"/>
-	</combo_box>
 	<text name="TimeText" tool_tip="現在時刻(太平洋)">
 		24:00 AM PST
 	</text>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 41dc098ba257fff8904a565298caa4aaeba45d3d..c6b033ed950efe70bd19041ee1c7381aa6b7d3b8 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -77,10 +77,10 @@
 		キャッシュファイルを検証しています(所要時間は 60 ~ 90 秒)...
 	</string>
 	<string name="LoginProcessingResponse">
-		応答を処理しています...
+		対応を処理中です...
 	</string>
 	<string name="LoginInitializingWorld">
-		ワールドを初期化しています...
+		ワールドを初期化中です...
 	</string>
 	<string name="LoginDecodingImages">
 		画像をデコードしています...
@@ -128,7 +128,7 @@
 		グリッドサーバーが返した証明書の署名を認証できませんでした。グリッドの管理者にお問い合わせください。
 	</string>
 	<string name="LoginFailedNoNetwork">
-		ネットワークエラー: 接続を確立できませんでした。お使いのネットワーク接続をご確認ください。
+		ネットワークエラー:接続を確立できませんでした。お使いのネットワーク接続をご確認ください。
 	</string>
 	<string name="LoginFailed">
 		ログインに失敗しました。
@@ -1214,7 +1214,7 @@ support@secondlife.com にお問い合わせください。
 		「持ち物」内にこのテクスチャのコピーがありません
 	</string>
 	<string name="InventoryInboxNoItems">
-		マーケットプレイスで購入した商品はここに配達されます。
+		購入するなどして取得したアイテムや商品はここに表示され、持ち物のフォルダにドラッグして移動することもできれば、要らなくなった場合には削除することができます。
 	</string>
 	<string name="MarketplaceURL">
 		http://marketplace.[DOMAIN_NAME]
@@ -1276,6 +1276,9 @@ support@secondlife.com にお問い合わせください。
 	<string name="Marketplace Error Internal Import">
 		エラー:この商品に関して問題が発生しました。しばらくしてからお試しください。
 	</string>
+	<string name="Open landmarks">
+		ランドマークを開く
+	</string>
 	<string name="no_transfer" value=" (再販・プレゼント不可)"/>
 	<string name="no_modify" value=" (編集不可)"/>
 	<string name="no_copy" value=" (コピー不可)"/>
@@ -1409,6 +1412,9 @@ support@secondlife.com にお問い合わせください。
 	<string name="no_attachments">
 		着用しているアタッチメントはありません
 	</string>
+	<string name="Attachments remain">
+		アタッチメント(残りのスロット数:[COUNT])
+	</string>
 	<string name="Buy">
 		買う
 	</string>
@@ -1535,6 +1541,12 @@ support@secondlife.com にお問い合わせください。
 	<string name="Right Pec">
 		右胸筋
 	</string>
+	<string name="Neck">
+		首
+	</string>
+	<string name="Avatar Center">
+		アバターの中央
+	</string>
 	<string name="Invalid Attachment">
 		装着先が正しくありません
 	</string>
@@ -4027,6 +4039,18 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="you_paid_ldollars_no_name">
 		L$ [AMOUNT] を支払いました:[REASON]
 	</string>
+	<string name="you_paid_failure_ldollars">
+		[NAME] に [REASON] の代金 L$ [AMOUNT] を支払えませんでした。
+	</string>
+	<string name="you_paid_failure_ldollars_no_info">
+		L$ [AMOUNT] を支払えませんでした。
+	</string>
+	<string name="you_paid_failure_ldollars_no_reason">
+		[NAME] に L$ [AMOUNT] を支払えませんでした。
+	</string>
+	<string name="you_paid_failure_ldollars_no_name">
+		[REASON] の 代金 L$ [AMOUNT] を支払えませんでした。
+	</string>
 	<string name="for item">
 		[ITEM] 向け
 	</string>
@@ -4254,8 +4278,8 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="Female - Wow">
 		女性 - Wow
 	</string>
-	<string name="/bow1">
-		/bow1
+	<string name="/bow">
+		/おじぎする
 	</string>
 	<string name="/clap">
 		/拍手
@@ -4437,6 +4461,12 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="ExternalEditorFailedToRun">
 		外部エディターを実行できませんでした。
 	</string>
+	<string name="TranslationFailed">
+		翻訳できませんでした:[REASON]
+	</string>
+	<string name="TranslationResponseParseError">
+		翻訳の応答にエラーが発生しました。
+	</string>
 	<string name="Esc">
 		Esc
 	</string>
@@ -4767,4 +4797,196 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="ParticleHiding">
 		パーティクルを非表示
 	</string>
+	<string name="Command_AboutLand_Label">
+		土地情報
+	</string>
+	<string name="Command_Appearance_Label">
+		容姿
+	</string>
+	<string name="Command_Avatar_Label">
+		アバター
+	</string>
+	<string name="Command_Build_Label">
+		制作
+	</string>
+	<string name="Command_Chat_Label">
+		チャット
+	</string>
+	<string name="Command_Compass_Label">
+		コンパス
+	</string>
+	<string name="Command_Destinations_Label">
+		行き先
+	</string>
+	<string name="Command_Gestures_Label">
+		ジェスチャー
+	</string>
+	<string name="Command_HowTo_Label">
+		ハウツー
+	</string>
+	<string name="Command_Inventory_Label">
+		持ち物
+	</string>
+	<string name="Command_Map_Label">
+		地図
+	</string>
+	<string name="Command_Marketplace_Label">
+		マーケットプレイス
+	</string>
+	<string name="Command_MiniMap_Label">
+		ミニマップ
+	</string>
+	<string name="Command_Move_Label">
+		歩行 / 走行 / 飛行
+	</string>
+	<string name="Command_People_Label">
+		人
+	</string>
+	<string name="Command_Picks_Label">
+		ピック
+	</string>
+	<string name="Command_Places_Label">
+		場所
+	</string>
+	<string name="Command_Preferences_Label">
+		環境設定
+	</string>
+	<string name="Command_Profile_Label">
+		プロフィール
+	</string>
+	<string name="Command_Search_Label">
+		検索
+	</string>
+	<string name="Command_Snapshot_Label">
+		スナップショット
+	</string>
+	<string name="Command_Speak_Label">
+		話す
+	</string>
+	<string name="Command_View_Label">
+		カメラコントロール
+	</string>
+	<string name="Command_Voice_Label">
+		ボイス設定
+	</string>
+	<string name="Command_AboutLand_Tooltip">
+		訪問先に関する情報
+	</string>
+	<string name="Command_Appearance_Tooltip">
+		アバターを変更
+	</string>
+	<string name="Command_Avatar_Tooltip">
+		アバター一式を選択
+	</string>
+	<string name="Command_Build_Tooltip">
+		オブジェクトの制作と地形の変形
+	</string>
+	<string name="Command_Chat_Tooltip">
+		近くの人と文字チャットする
+	</string>
+	<string name="Command_Compass_Tooltip">
+		コンパス
+	</string>
+	<string name="Command_Destinations_Tooltip">
+		行ってみたい場所
+	</string>
+	<string name="Command_Gestures_Tooltip">
+		アバターのジェスチャー
+	</string>
+	<string name="Command_HowTo_Tooltip">
+		一般的タスクの実行方法
+	</string>
+	<string name="Command_Inventory_Tooltip">
+		持ち物を表示・使用
+	</string>
+	<string name="Command_Map_Tooltip">
+		世界地図
+	</string>
+	<string name="Command_Marketplace_Tooltip">
+		ショッピングに出掛ける
+	</string>
+	<string name="Command_MiniMap_Tooltip">
+		近くの人を表示する
+	</string>
+	<string name="Command_Move_Tooltip">
+		アバターの移動
+	</string>
+	<string name="Command_People_Tooltip">
+		フレンド、グループ、近くの人
+	</string>
+	<string name="Command_Picks_Tooltip">
+		プロフィールで紹介するお気に入りの場所
+	</string>
+	<string name="Command_Places_Tooltip">
+		保存済みの場所
+	</string>
+	<string name="Command_Preferences_Tooltip">
+		環境設定
+	</string>
+	<string name="Command_Profile_Tooltip">
+		プロフィールを編集・表示
+	</string>
+	<string name="Command_Search_Tooltip">
+		場所、イベント、人を検索
+	</string>
+	<string name="Command_Snapshot_Tooltip">
+		ピクチャを撮る
+	</string>
+	<string name="Command_Speak_Tooltip">
+		マイクを使って近くの人と話す
+	</string>
+	<string name="Command_View_Tooltip">
+		カメラの角度を変更
+	</string>
+	<string name="Command_Voice_Tooltip">
+		インワールドでのコールや近くにいる人の音量調整
+	</string>
+	<string name="Toolbar_Bottom_Tooltip">
+		現在、下のツールバーにあります
+	</string>
+	<string name="Toolbar_Left_Tooltip">
+		現在、左のツールバーにあります
+	</string>
+	<string name="Toolbar_Right_Tooltip">
+		現在、右のツールバーにあります
+	</string>
+	<string name="Retain%">
+		維持率
+	</string>
+	<string name="Detail">
+		詳細
+	</string>
+	<string name="Better Detail">
+		もっと詳しく
+	</string>
+	<string name="Surface">
+		表面
+	</string>
+	<string name="Solid">
+		ソリッド
+	</string>
+	<string name="Wrap">
+		ラップ
+	</string>
+	<string name="Preview">
+		プレビュー
+	</string>
+	<string name="Normal">
+		普通
+	</string>
+	<string name="snapshot_quality_very_low">
+		非常に低い
+	</string>
+	<string name="snapshot_quality_low">
+		低
+	</string>
+	<string name="snapshot_quality_medium">
+		中
+	</string>
+	<string name="snapshot_quality_high">
+		高
+	</string>
+	<string name="snapshot_quality_very_high">
+		非常に高い
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/ja/teleport_strings.xml b/indra/newview/skins/default/xui/ja/teleport_strings.xml
index 2f67d4370769799eb46bc16b41c84c3674a277f7..6c69c7a2313b62b9b49ea06d3ae2a4b02358770a 100644
--- a/indra/newview/skins/default/xui/ja/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/ja/teleport_strings.xml
@@ -19,6 +19,10 @@
 		<message name="timeout_tport">
 			申し訳ございませんが、システムはテレポートの接続を完了できませんでした。
 もう少し後でやり直してください。
+		</message>
+		<message name="NoHelpIslandTP">
+			ウェルカムアイランドにテレポートで戻ることはできません。
+「Welcome Island Public」に行き再度チュートリアルを行ってください。
 		</message>
 		<message name="noaccess_tport">
 			残念ながら、そのテレポート目的地へのアクセスがありません。
diff --git a/indra/newview/skins/default/xui/nl/floater_about.xml b/indra/newview/skins/default/xui/nl/floater_about.xml
deleted file mode 100644
index 4e22d865fe73b073954b7d8dac029244adacbf5b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_about.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="OVER [CAPITALIZED_APP_NAME]">
-	<floater.string name="AboutHeader">
-		[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
-[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
-	</floater.string>
-	<floater.string name="AboutCompiler">
-		Gemaakt met [COMPILER] versie [COMPILER_VERSION]
-	</floater.string>
-	<floater.string name="AboutPosition">
-		U bent op [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] gelegen op &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
-[SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
-	</floater.string>
-	<floater.string name="AboutSystem">
-		CPU: [CPU]
-Geheugen: [MEMORY_MB] MB
-OS Versie: [OS_VERSION]
-Grafische Kaard Vendor: [GRAPHICS_CARD_VENDOR]
-Grafische Kaard: [GRAPHICS_CARD]
-	</floater.string>
-	<floater.string name="AboutDriver">
-		Windows Grafische Driver Versie: [GRAPHICS_DRIVER_VERSION]
-	</floater.string>
-	<floater.string name="AboutLibs">
-		OpenGL Versie: [OPENGL_VERSION]
-
-libcurl Versie: [LIBCURL_VERSION]
-J2C Decoder Versie: [J2C_VERSION]
-Audio Driver Versie: [AUDIO_DRIVER_VERSION]
-Qt Webkit Versie: [QT_WEBKIT_VERSION]
-Vivox Versie: [VIVOX_VERSION]
-	</floater.string>
-	<floater.string name="none">
-		(none)
-	</floater.string>
-	<floater.string name="AboutTraffic">
-		Pakketten Verloren: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
-	</floater.string>
-	<tab_container name="about_tab">
-		<panel label="Info" name="support_panel">
-			<button label="Kopiëren naar Klembord" name="copy_btn"/>
-		</panel>
-		<panel label="Credits" name="credits_panel">
-			<text_editor name="credits_editor">
-				Second Life wordt u aangeboden door Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl and many others.
-
-Een &apos;Dank u&apos; voor de volgende bewoners voor het helpen zorgdragen dat dit de beste versie tot nu toe is: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Aralara Rajal, Aura Dirval, Cayu Cluny, Eva Rau, FreeSL Aeon, Frontera Thor, Inma Rau, Lunita Savira, Minerva Memel, Polo Gufler, Xiki Luik, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar
-
-
-
-To be a success in business, be daring, be first, be different. --Henry Marchant
-			</text_editor>
-		</panel>
-		<panel label="Licenties" name="licenses_panel">
-			<text_editor name="credits_editor">
-				3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
-APR Copyright (C) 2000-2004 The Apache Software Foundation
-cURL Copyright (C) 1996-2002, 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, The FreeType Project (www.freetype.org).
-GL Copyright (C) 1999-2004 Brian Paul.
-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) 2001, Xiphophorus
-OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
-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-2002 Jean-loup Gailly and Mark Adler.
-google-perftools Copyright (c) 2005, Google Inc.
-
-All rights reserved. See licenses.txt for details.
-
-Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
-			</text_editor>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_about_land.xml b/indra/newview/skins/default/xui/nl/floater_about_land.xml
deleted file mode 100644
index f336e53e05bc1aacd591d76818b73e8973b55ef2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_about_land.xml
+++ /dev/null
@@ -1,488 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterland" title="OVER LAND">
-	<tab_container name="landtab">
-		<panel label="Algemeen" name="land_general_panel">
-			<text name="Name:">
-				Naam:
-			</text>
-			<text name="Description:">
-				Omschrijving:
-			</text>
-			<text name="LandType">
-				Type:
-			</text>
-			<text name="LandTypeText" left="102">
-				Mainland / Homestead
-			</text>
-			<text name="ContentRating" width="98">
-				Inhoudscategorie:
-			</text>
-			<text name="ContentRatingText" left="102">
-				Adult
-			</text>
-			<text name="Owner:">
-				Eigenaar:
-			</text>
-			<text name="OwnerText" left="102" width="242"/>
-			<button label="Profiel" name="Profile..."/>
-			<text name="Group:">
-				Groep:
-			</text>
-			<text left="102" name="GroupText" width="242"/>
-			<button label="Instellen" name="Set..."/>
-			<check_box label="Overdracht aan groep toestaan" name="check deed" tool_tip="Een groepofficier kan dit land aan de groep overdragen, zodat het ondersteund wordt door de landallocatie van de groep."/>
-			<button label="Overdragen" name="Deed..." tool_tip="U mag alleen land overdragen indien u een officier bent in de geselecteerde groep."/>
-			<check_box label="Eigenaar maakt bijdrage met overdracht" name="check contrib" tool_tip="Wanneer het land is overgedragen aan de groep, draagt de voormalig eigenaar voldoende landtoewijzing bij om het te ondersteunen."/>
-			<text name="For Sale:">
-				Te koop:
-			</text>
-			<text name="Not for sale.">
-				Niet te koop.
-			</text>
-			<text name="For Sale: Price L$[PRICE].">
-				Prijs: L$[PRICE] (L$[PRICE_PER_SQM]/m²).
-			</text>
-			<button label="Verkoop land" name="Sell Land..."/>
-			<text name="For sale to">
-				Te koop voor: [BUYER]
-			</text>
-			<text name="Sell with landowners objects in parcel.">
-				Objecten opgenomen in verkoop
-			</text>
-			<text name="Selling with no objects in parcel.">
-				Objecten niet opgenomen in verkoop
-			</text>
-			<button label="Annuleer landverkoop" label_selected="Annuleer landverkoop" name="Cancel Land Sale"/>
-			<text name="Claimed:">
-				Geclaimd:
-			</text>
-			<text name="DateClaimText">
-				Tue Aug 15 13:47:25 2006
-			</text>
-			<text name="PriceLabel">
-				Gebied:
-			</text>
-			<text name="PriceText">
-				4048 m²
-			</text>
-			<text name="Traffic:">
-				Verkeer:
-			</text>
-			<text name="DwellText">
-				0
-			</text>
-			<button left="130" width="125" label="Koop land..." label_selected="Koop land..." name="Buy Land..."/>
-			<button label="Koop voor groep" name="Buy For Group..."/>
-			<button left="130" width="125" label="Koop toegangspas..." label_selected="Koop toegangspas..." name="Buy Pass..." tool_tip="Een toegangspas geeft u tijdelijk toegang tot dit land."/>
-			<button label="Land Afstaan" name="Abandon Land..."/>
-			<button label="Land terugvorderen" name="Reclaim Land..."/>
-			<button label="Lindenverkoop" name="Linden Sale..." tool_tip="Land moet in bezit zijn, de inhoud moet ingesteld zijn en niet al ter veiling zijn aangeboden."/>
-			<panel.string name="new users only">
-				Alleen nieuwe gebruikers
-			</panel.string>
-			<panel.string name="anyone">
-				Iedereen
-			</panel.string>
-			<panel.string name="area_text">
-				Gebied
-			</panel.string>
-			<panel.string name="area_size_text">
-				[AREA] m²
-			</panel.string>
-			<panel.string name="auction_id_text">
-				Veiling ID: [ID]
-			</panel.string>
-			<panel.string name="need_tier_to_modify">
-				U dient uw aankoop te goedkeuren voor u dit land kunt wijzigen.
-			</panel.string>
-			<panel.string name="group_owned_text">
-				(Groepseigendom)
-			</panel.string>
-			<panel.string name="profile_text">
-				Profiel...
-			</panel.string>
-			<panel.string name="info_text">
-				Informatie...
-			</panel.string>
-			<panel.string name="public_text">
-				(public)
-			</panel.string>
-			<panel.string name="none_text">
-				(none)
-			</panel.string>
-			<panel.string name="sale_pending_text">
-				(Verkoop bezig)
-			</panel.string>
-			<panel.string name="no_selection_text">
-				Geen perceel geselecteerd. Ga naar Wereld menu &gt; Over land of selecteer een ander perceel om zijn details te tonen.
-			</panel.string>
-		</panel>
-		<panel label="Convenant" name="land_covenant_panel">
-			<text name="estate_section_lbl">
-				Estate:
-			</text>
-			<text name="estate_name_lbl">
-				Naam:
-			</text>
-			<text name="estate_name_text">
-				mainland
-			</text>
-			<text name="estate_owner_lbl">
-				Eigenaar:
-			</text>
-			<text name="estate_owner_text">
-				(none)
-			</text>
-			<text_editor name="covenant_editor">
-				Er is geen convenant voorzien voor dit estate.
-			</text_editor>
-			<text name="covenant_timestamp_text">
-				Laatst gewijzigd Wed Dec 31 16:00:00 1969
-			</text>
-			<text name="region_section_lbl">
-				Regio:
-			</text>
-			<text name="region_name_lbl">
-				Naam:
-			</text>
-			<text name="region_name_text">
-				leyla
-			</text>
-			<text name="region_landtype_lbl">
-				Type:
-			</text>
-			<text name="region_landtype_text">
-				Mainland / Homestead
-			</text>
-			<text name="region_maturity_lbl">
-				Inhoudscategorie:
-			</text>
-			<text name="region_maturity_text">
-				Adult
-			</text>
-			<text name="resellable_lbl">
-				Doorverkopen:
-			</text>
-			<text name="resellable_clause">
-				Land in deze regio mag niet worden doorverkocht.
-			</text>
-			<text name="changeable_lbl">
-				Opsplitsen:
-			</text>
-			<text name="changeable_clause">
-				Land in deze regio mag niet worden samengevoegd/opgesplitst.
-			</text>
-			<panel.string name="can_resell">
-				Aangekocht land in deze regio mag worden doorverkocht.
-			</panel.string>
-			<panel.string name="can_not_resell">
-				Aangekocht land in deze regio mag niet worden doorverkocht.
-			</panel.string>
-			<panel.string name="can_change">
-				Aangekocht land in deze regio mag worden samengevoegd of
-opgedeeld.
-			</panel.string>
-			<panel.string name="can_not_change">
-				Aangekocht land in deze regio mag niet worden samengevoegd
-of opgedeeld.
-			</panel.string>
-		</panel>
-		<panel label="Objecten" name="land_objects_panel">
-			<text name="parcel_object_bonus">
-				Regio object bonus factor: [BONUS]
-			</text>
-			<text name="Simulator primitive usage:">
-				Simulator primitieven gebruik:
-			</text>
-			<text name="objects_available">
-				[COUNT] van [MAX] ([AVAILABLE] beschikbaar)
-			</text>
-			<panel.string name="objects_available_text">
-				[COUNT] van [MAX] ([AVAILABLE] beschikbaar)
-			</panel.string>
-			<panel.string name="objects_deleted_text">
-				[COUNT] van [MAX] ([DELETED] zullen worden verwijderd)
-			</panel.string>
-			<text name="Primitives parcel supports:">
-				Primitieven ondersteund door perceel:
-			</text>
-			<text name="object_contrib_text">
-				[COUNT]
-			</text>
-			<text name="Primitives on parcel:">
-				Primitieven op perceel:
-			</text>
-			<text name="total_objects_text" >
-				[COUNT]
-			</text>
-			<text name="Owned by parcel owner:" >
-				Eigendom van perceeleigenaar:
-			</text>
-			<text name="owner_objects_text" >
-				[COUNT]
-			</text>
-			<button label="Toon" label_selected="Toon" name="ShowOwner"/>
-			<button label="Retourneren" name="ReturnOwner..." tool_tip="Retourneer objecten naar hun eigenaren."/>
-			<text name="Set to group:" >
-				Groep toewijzen:
-			</text>
-			<text name="group_objects_text" >
-				[COUNT]
-			</text>
-			<button label="Toon" label_selected="Toon" name="ShowGroup"/>
-			<button label="Retourneren" name="ReturnGroup..." tool_tip="Retourneer objecten naar hun eigenaren."/>
-			<text name="Owned by others:">
-				Eigendom van anderen:
-			</text>
-			<text name="other_objects_text" >
-				[COUNT]
-			</text>
-			<button label="Toon" label_selected="Toon" name="ShowOther"/>
-			<button label="Retourneren" name="ReturnOther..." tool_tip="Retourneer objecten naar hun eigenaren."/>
-			<text name="Selected / sat upon:">
-				Geselecteerd/Er op gezeten
-			</text>
-			<text name="selected_objects_text" >
-				[COUNT]
-			</text>
-			<text name="Autoreturn">
-				Objecten van andere inwoners automatisch retourneren (minuten):
-                                                                                               (0 om uit te schakelen)
-			</text>
-			<line_editor name="clean other time"/>
-			<text name="Object Owners:">
-				Objecteigenaren:
-			</text>
-			<button label="Ververs lijst" label_selected="Ververs lijst" name="Refresh List"/>
-			<button label="Retourneer objecten" name="Return objects..."/>
-			<name_list name="owner list">
-				<column label="Type" name="type"/>
-				<column label="Naam" name="name"/>
-				<column label="Aantal" name="count"/>
-				<column label="Meest recent" name="mostrecent"/>
-			</name_list>
-		</panel>
-		<panel label="Opties" name="land_options_panel">
-			<text name="allow_label">
-				Andere inwoners toestaan te:
-			</text>
-			<check_box label="Terrein bewerken" name="edit land check" tool_tip="Indien aangevinkt, kan iedereen uw terrein bewerken. Het is het beste om dit uit te laten staan, omdat u zelf altijd uw eigen land kunt bewerken."/>
-			<check_box label="Maak landmarkering" name="check landmark"/>
-			<check_box label="Vliegen" name="check fly" tool_tip="Indien aangevinkt, kunnen inwoners op uw land vliegen. Indien niet aangevinkt, kunnen ze alleen het land binnenvliegen of eroverheen vliegen."/>
-			<text name="allow_label2">
-				Maak objecten:
-			</text>
-			<check_box label="Alle inwoners" name="edit objects check"/>
-			<check_box label="Groep" name="edit group objects check"/>
-			<text name="allow_label3">
-				Objecten binnenlaten:
-			</text>
-			<check_box label="Alle inwoners" name="all object entry check"/>
-			<check_box label="Groep" name="group object entry check"/>
-			<text name="allow_label4">
-				Scripts uitvoeren:
-			</text>
-			<check_box label="Alle inwoners" name="check other scripts"/>
-			<check_box label="Groep" name="check group scripts"/>
-			<text name="land_options_label">
-				Landopties:
-			</text>
-			<check_box label="Veilig (geen letsel)" name="check safe" tool_tip="Indien aangevinkt, wordt het land op Veilig ingesteld, waarmee letselgevechten worden uitgeschakeld. Indien niet aangevinkt, is letsel ingeschakeld."/>
-			<check_box label="Niet duwen" name="PushRestrictCheck" tool_tip="Weerhoudt scripts van duwen. Het aanvinken van deze optie kan handig zijn om storend gedrag op uw land te voorkomen."/>
-			<check_box label="Toon plaats in Zoeken (L$30/week) onder" name="ShowDirectoryCheck" tool_tip="Laat mensen dit perceel zien in zoekresultaten."/>
-			<panel.string name="search_enabled_tooltip">
-				Laat mensen dit perceel zien in zoekresultaten
-			</panel.string>
-			<panel.string name="search_disabled_small_tooltip">
-				Deze optie is uitgeschakeld, omdat dit gebied 128 m² of kleiner is. Alleen grote percelen kunnen worden opgenomen in Zoeken.
-			</panel.string>
-			<panel.string name="search_disabled_permissions_tooltip">
-				Deze optie is uitgeschakeld omdat u de opties van dit perceel niet kunt wijzigen.
-			</panel.string>
-			<combo_box name="land category with adult">
-				<combo_box.item name="item0" label="Alle Categorieën"
-				/>
-				<combo_box.item name="item1" label="Linden locatie"
-				/>
-				<combo_box.item name="item2" label="Adult"
-				/>
-				<combo_box.item name="item3" label="Kunst &amp; Cultuur"
-				/>
-				<combo_box.item name="item4" label="Zakelijk"
-				/>
-				<combo_box.item name="item5" label="Educatief"
-				/>
-				<combo_box.item name="item6" label="Spelen"
-				/>
-				<combo_box.item name="item7" label="Ontmoetingsplaats"
-				/>
-				<combo_box.item name="item8" label="Nieuwkomervriendelijk"
-				/>
-				<combo_box.item name="item9" label="Parken &amp; natuur"
-				/>
-				<combo_box.item name="item10" label="Woongebied"
-				/>
-				<combo_box.item name="item11" label="Winkelen"
-				/>
-				<combo_box.item name="item12" label="Anders"
-				/>
-			</combo_box>
-			<combo_box name="land category">
-				<combo_box.item name="item0" label="Alle categorieën"
-				/>
-				<combo_box.item name="item1" label="Linden Locatie"
-				/>
-				<combo_box.item name="item3" label="Kunst &amp; Cultuur"
-				/>
-				<combo_box.item name="item4" label="Zakelijk"
-				/>
-				<combo_box.item name="item5" label="Educatief"
-				/>
-				<combo_box.item name="item6" label="Spelen"
-				/>
-				<combo_box.item name="item7" label="Ontmoetingsplaats"
-				/>
-				<combo_box.item name="item8" label="Nieuwkomervriendelijk"
-				/>
-				<combo_box.item name="item9" label="Parken &amp; Natuur"
-				/>
-				<combo_box.item name="item10" label="Woongebied"
-				/>
-				<combo_box.item name="item11" label="Winkelen"
-				/>
-				<combo_box.item name="item12" label="Anders"
-				/>
-			</combo_box>
-			<button label="?" label_selected="?" name="?"/>
-			<check_box label="Mature inhoud" name="MatureCheck" tool_tip=" "/>
-			<panel.string name="mature_check_mature">
-				Mature inhoud
-			</panel.string>
-			<panel.string name="mature_check_adult">
-				Adult inhoud
-			</panel.string>
-			<panel.string name="mature_check_mature_tooltip">
-				Uw perceelinformatie of -inhoud wordt beschouwd als mature.
-			</panel.string>
-			<panel.string name="mature_check_adult_tooltip">
-				Uw perceelinformatie of -inhoud wordt beschouwd als adult.
-			</panel.string>
-			<text name="Snapshot:">
-				Foto:
-			</text>
-			<texture_picker label="" name="snapshot_ctrl" tool_tip="Klik om een afbeelding te kiezen"/>
-			<text name="landing_point">
-				Landingsplaats: [LANDING]
-			</text>
-			<panel.string name="landing_point_none">
-				(none)
-			</panel.string>
-			<button label="Instellen" label_selected="Instellen" name="Set" tool_tip="Stelt het landingspunt in waar bezoekers arriveren. Wordt ingesteld op uw avatar&apos;s positie binnen dit perceel."/>
-			<button label="Opschonen" label_selected="Opschonen" name="Clear" tool_tip="Landingspunt leegmaken"/>
-			<text name="Teleport Routing: ">
-				Teleport routering:
-			</text>
-			<combo_box name="landing type" tool_tip="Teleport routering -- selecteer hoe teleports naar uw land moeten worden afgehandeld.">
-				<combo_box.item name="Blocked" label="Geblokkeerd"
-				/>
-				<combo_box.item name="LandingPoint" label="Landingsplaats"
-				/>
-				<combo_box.item name="Anywhere" label="Overal"
-				/>
-			</combo_box>
-			<panel.string name="push_restrict_text">
-				Niet duwen
-			</panel.string>
-			<panel.string name="push_restrict_region_text">
-				Niet duwen (ingesteld op regio)
-			</panel.string>
-		</panel>
-		<panel label="Media" name="land_media_panel">
-			<text name="with media:">
-				Media type:
-			</text>
-			<combo_box name="media type" tool_tip="Specificeer of de URL een film, webpagina of andere media is"/>
-			<text name="at URL:">
-				Media URL:
-			</text>
-			<button label="Instellen" name="set_media_url"/>
-			<text name="Description:">
-				Omschrijving:
-			</text>
-			<line_editor name="url_description" tool_tip="Tekst wordt naast afspelen/laden knop weergegeven"/>
-			<text name="Media texture:">
-				Vervang
-textuur:
-			</text>
-			<texture_picker label="" name="media texture" tool_tip="Klik om een afbeelding te kiezen"/>
-			<text name="replace_texture_help">
-				(Objecten die deze textuur gebruiken zullen de film
-of de webpagina tonen nadat u het afspelen-pijltje
-hebt geklikt.)
-			</text>
-			<text name="Options:">
-				Media opties:
-			</text>
-			<check_box label="Automatisch schalen" name="media_auto_scale" tool_tip="Het aanvinken van deze optie zal de inhoud voor dit perceel automatisch schalen. Het kan enigszins trager zijn en de visuele kwaliteit kan iets lager zijn, maar er zal geen andere textuurschaling of uitlijning nodig zijn."/>
-			<check_box label="Herhaal media" name="media_loop" tool_tip="Speel media af in een lus. Wanneer de media klaar is met afspelen zal het herstarten vanaf het begin."/>
-			<text name="media_size" tool_tip="Grootte om webmedia weer te geven, laat op 0 staan voor standaard." width="120">
-				Media grootte:
-			</text>
-			<spinner left_delta="90" name="media_size_width" tool_tip="Grootte om webmedia weer te geven, laat op 0 staan voor standaard."/>
-			<spinner name="media_size_height" tool_tip="Grootte om webmedia weer te geven, laat op 0 staan voor standaard."/>
-			<text name="pixels">
-				pixels
-			</text>
-			<text name="MusicURL:">
-				Muziek URL:
-			</text>
-			<text name="Sound:">
-				Geluid:
-			</text>
-			<check_box label="Beperk gebaar- en objectgeluiden tot dit perceel" name="check sound local"/>
-			<button label="?" label_selected="?" name="?"/>
-			<text name="Voice settings:">
-				Voice:
-			</text>
-			<check_box label="Voice inschakelen" name="parcel_enable_voice_channel"/>
-			<check_box label="Voice inschakelen (ingesteld in Estate)" name="parcel_enable_voice_channel_is_estate_disabled"/>
-			<check_box label="Beperk voice tot dit perceel" name="parcel_enable_voice_channel_parcel"/>
-		</panel>
-		<panel label="Toegang" name="land_access_panel">
-			<text name="Limit access to this parcel to:">
-				Toegang tot dit perceel
-			</text>
-			<check_box label="Publieke toegang toestaan" name="public_access"/>
-			<text name="Only Allow">
-				Blokkeer toegang door:
-			</text>
-			<check_box label="Inwoners die geen betalingsinformatie hebben gegeven aan Linden Lab" name="limit_payment" tool_tip="Verban ongeïdentificeerde inwoners."/>
-			<check_box label="Inwoners die geen leeftijdgeverifieerde volwassenen zijn" name="limit_age_verified" tool_tip="Verban inwoners die hun leeftijd niet geverifieerd hebben. Zie support.secondlife.com voor meer informatie."/>
-			<panel.string name="estate_override">
-				Een of meer van deze opties is op estate-niveau ingesteld
-			</panel.string>
-			<check_box label="Groepstoegang toestaan: [GROUP]" name="GroupCheck" tool_tip="Stel de groep in op het tabblad Algemeen"/>
-			<check_box label="Verkoop toegangspassen aan:" name="PassCheck" tool_tip="Tijdelijke toegang tot dit perceel toestaan"/>
-			<combo_box name="pass_combo" left_delta="190">
-				<combo_box.item name="Anyone" label="Iedereen"
-				/>
-				<combo_box.item name="Group" label="Groep"
-				/>
-			</combo_box>
-			<spinner label="Prijs in L$:" name="PriceSpin" label_width="168" />
-			<spinner label="Toegangsuren" name="HoursSpin" label_width="168" />
-			<text label="Altijd toestaan" name="AllowedText">
-				Toegestane inwoners
-			</text>
-			<name_list name="AccessList" tool_tip="([LISTED] vermeld, [MAX] max)"/>
-			<button label="Toevoegen..." label_selected="Toevoegen..." name="add_allowed"/>
-			<button label="Verwijderen" label_selected="Verwijderen" name="remove_allowed"/>
-			<text label="Verbannen" name="BanCheck">
-				Verbannen inwoners
-			</text>
-			<name_list name="BannedList" tool_tip="([LISTED] vermeld, [MAX] max)"/>
-			<button label="Toevoegen..." label_selected="Toevoegen..." name="add_banned"/>
-			<button label="Verwijderen" label_selected="Verwijderen" name="remove_banned"/>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_animation_preview.xml b/indra/newview/skins/default/xui/nl/floater_animation_preview.xml
deleted file mode 100644
index f4e9908150894fa7f2ed249c45b69a32e43ba87c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_animation_preview.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Animation Preview" title="">
-	<text name="name_label">
-		Naam:
-	</text>
-	<text name="description_label">
-		Omschrijving:
-	</text>
-	<spinner label="Prioriteit" name="priority" tool_tip="Bepaalt welke andere animaties kunnen worden overschaduwd door deze animatie."/>
-	<check_box label="Herhalen" name="loop_check" tool_tip="Laat deze animatie herhalen."/>
-	<spinner label="In(%)" name="loop_in_point" tool_tip="Instellen punt in de animatie waar de herhaling begint."/>
-	<spinner label="Uit(%)" name="loop_out_point" tool_tip="Instellen punt in in de animatie waar de herhaling eindigt."/>
-	<text name="hand_label">
-		Houding van Hand
-	</text>
-	<combo_box label="" left_delta="100" width="176" name="hand_pose_combo" tool_tip="Bepaalt wat handen doen tijdens een animatie." left="300">
-		<combo_box.item name="Spread" label="Gespreid"/>
-		<combo_box.item name="Relaxed" label="Ontspannen"/>
-		<combo_box.item name="PointBoth" label="Wijzen Beide"/>
-		<combo_box.item name="Fist" label="Vuist"/>
-		<combo_box.item name="RelaxedLeft" label="Ontspannen Links"/>
-		<combo_box.item name="PointLeft" label="Wijzen Links"/>
-		<combo_box.item name="FistLeft" label="Vuist Links"/>
-		<combo_box.item name="RelaxedRight" label="Ontspannen Rechts"/>
-		<combo_box.item name="PointRight" label="Wijzen Rechts"/>
-		<combo_box.item name="FistRight" label="Vuist Rechts"/>
-		<combo_box.item name="SaluteRight" label="Salueren Rechts"/>
-		<combo_box.item name="Typing" label="Typen"/>
-		<combo_box.item name="PeaceRight" label="Peace Rechts"/>
-	</combo_box>
-	<text name="emote_label">
-		Expressie
-	</text>
-	<combo_box label="" left_delta="100" width="176" name="emote_combo" tool_tip="Bepaalt wat het gezicht doet tijdens de animatie.">
-		<combo_box.item name="[None]" label="Geen]"/>
-		<combo_box.item name="Aaaaah" label="Aaaaah"/>
-		<combo_box.item name="Afraid" label="Bang"/>
-		<combo_box.item name="Angry" label="Boos"/>
-		<combo_box.item name="BigSmile" label="Brede Lach"/>
-		<combo_box.item name="Bored" label="Verveeld"/>
-		<combo_box.item name="Cry" label="Huilen"/>
-		<combo_box.item name="Disdain" label="Minachting"/>
-		<combo_box.item name="Embarrassed" label="Beschaamd"/>
-		<combo_box.item name="Frown" label="Frons"/>
-		<combo_box.item name="Kiss" label="Kus"/>
-		<combo_box.item name="Laugh" label="Lachen"/>
-		<combo_box.item name="Plllppt" label="Plllppt"/>
-		<combo_box.item name="Repulsed" label="Afkeer"/>
-		<combo_box.item name="Sad" label="Verdrietig"/>
-		<combo_box.item name="Shrug" label="Onverschillig"/>
-		<combo_box.item name="Smile" label="Glimlach"/>
-		<combo_box.item name="Surprise" label="Verrassing"/>
-		<combo_box.item name="Wink" label="Knipoog"/>
-		<combo_box.item name="Worry" label="Bezorgd"/>
-	</combo_box>
-	<text name="preview_label">
-		Voorvertoning
-	</text>
-	<combo_box label="" left_delta="100" width="176" name="preview_base_anim" tool_tip="Gebruik dit om het gedrag van uw animatie te testen terwijl uw avatar veelvoorkomende acties uitvoert.">
-		<combo_box.item name="Standing" label="Staand"/>
-		<combo_box.item name="Walking" label="Lopend"/>
-		<combo_box.item name="Sitting" label="Zittend"/>
-		<combo_box.item name="Flying" label="Vliegend"/>
-	</combo_box>
-	<spinner label="Invloeitijd (sec)" label_width="125" name="ease_in_time" tool_tip="Hoeveelheid tijd (in seconden) waarover animaties invloeien." width="192"/>
-	<spinner bottom_delta="-20" label="Uitvloeitijd (sec)" label_width="125" left="10" name="ease_out_time" tool_tip="Hoeveelheid tijd (in seconden) waarover animaties uitvloeien." width="192"/>
-	<button bottom_delta="-32" label="" name="play_btn" tool_tip="Start/pauzeer uw animatie."/>
-	<button label="" name="stop_btn" tool_tip="Stop het afspelen van Uw animatie"/>
-	<text name="bad_animation_text">
-		Niet in staat om het animatiebestand te lezen. Wij 
-raden u aan bestanden te gebruiken die vanuit
-Poser 4 zijn geëxporteerd.
-	</text>
-	<button label="Annuleren" name="cancel_btn"/>
-	<button label="Upload (L$[AMOUNT])" name="ok_btn" width="140" left_delta="-155"/>
-	<string name="failed_to_initialize">
-		Het initialiseren van de beweging is mislukt.
-	</string>
-	<string name="anim_too_long">
-		het animatiebestand heeft een lengte van [LENGTH] seconden. De maximale lengte van een animatie is [MAX_LENGTH] seconden.
-	</string>
-	<string name="failed_file_read">
-		Kan animatiebestand niet lezen. [STATUS]
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_auction.xml b/indra/newview/skins/default/xui/nl/floater_auction.xml
deleted file mode 100644
index 611024699bed7f68e0668965f4d3dbfdb9df8105..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_auction.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_auction" title="START LINDEN LAND VERKOOP">
-	<check_box label="Voeg geel selectie kader toe" name="fence_check"/>
-	<button label="Foto" label_selected="Foto" name="snapshot_btn"/>
-	<button label="OK" label_selected="OK" name="ok_btn"/>
-	<string name="already for sale">
-		U kunt geen percelen veilen die al te koop staan.
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_avatar_picker.xml b/indra/newview/skins/default/xui/nl/floater_avatar_picker.xml
deleted file mode 100644
index 260cc8e98f686035574ffe304469fcfc1b68cbdd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_avatar_picker.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="avatarpicker" title="KIES INWONER">
-	<tab_container name="ResidentChooserTabs">
-		<panel label="Zoeken" name="SearchPanel">
-			<text name="InstructSearchResidentName">
-				Type een deel van de naam van de inwoner:
-			</text>
-			<button label="Zoek" label_selected="Zoek" name="Find"/>
-		</panel>
-		<panel label="Visitekaartjes" name="CallingCardsPanel">
-			<text name="InstructSelectCallingCard">
-				Selecteer een visitekaartje:
-			</text>
-		</panel>
-		<panel label="In mijn buurt" name="NearMePanel">
-			<text name="InstructSelectResident">
-				Selecteer een inwoner 
-in de buurt:
-			</text>
-			<button label="Vernieuw lijst" label_selected="Ververs lijst" name="Refresh"/>
-			<slider label="Afstand" name="near_me_range" bottom_delta="-36"/>
-			<text name="meters">
-				Meters
-			</text>
-      <scroll_list bottom_delta="-169" height="159" name="NearMe"  />
-		</panel>
-	</tab_container>
-	<button label="Selecteer" label_selected="Selecteer" name="Select"/>
-	<button label="Annuleren" label_selected="Annuleren" name="Cancel"/>
-	<string name="not_found">
-		&apos;[TEXT]&apos; niet gevonden
-	</string>
-	<string name="no_one_near">
-		Niemand in de buurt
-	</string>
-	<string name="no_results">
-		Geen resultaten
-	</string>
-	<string name="searching">
-		Zoeken...
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_avatar_textures.xml b/indra/newview/skins/default/xui/nl/floater_avatar_textures.xml
deleted file mode 100644
index a44db95b5b15bd0b192dc2e5e53fa778da5881a1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_avatar_textures.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="avatar_texture_debug" title="AVATAR TEXTUREN">
-	<text name="baked_label">
-		Baked texturen
-	</text>
-	<text name="composite_label">
-		Samengestelde texturen
-	</text>
-	<texture_picker label="Hoofd" name="baked_head"/>
-	<texture_picker label="Make-up" name="head_bodypaint"/>
-	<texture_picker label="Haar" name="hair"/>
-	<button label="Dump" label_selected="Dump" name="Dump"/>
-	<texture_picker label="Ogen" name="baked_eyes"/>
-	<texture_picker label="Oog" name="eye_texture"/>
-	<texture_picker label="Bovenlichaam" name="baked_upper_body"/>
-	<texture_picker label="Bovenlichaam tatoeage" name="upper_bodypaint"/>
-	<texture_picker label="Onderhemd" name="undershirt"/>
-	<texture_picker label="Handschoenen" name="gloves"/>
-	<texture_picker label="Hemd" name="shirt"/>
-	<texture_picker label="Bovenkant jas" name="upper_jacket"/>
-	<texture_picker label="Onderlichaam" name="baked_lower_body"/>
-	<texture_picker label="Onderlichaam tatoeage" name="lower_bodypaint"/>
-	<texture_picker label="Onderbroek" name="underpants"/>
-	<texture_picker label="Sokken" name="socks"/>
-	<texture_picker label="Schoenen" name="shoes"/>
-	<texture_picker label="Broek" name="pants"/>
-	<texture_picker label="Jas" name="jacket"/>
-	<texture_picker label="Rok" name="baked_skirt"/>
-	<texture_picker label="Rok" name="skirt_texture"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_beacons.xml b/indra/newview/skins/default/xui/nl/floater_beacons.xml
deleted file mode 100644
index ecc485e354b89dcd8c6337170841e162cbf84a2c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_beacons.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="beacons" title="BAKENS">
-	<panel name="beacons_panel">
-		<check_box label="Gescripte objecten met alleen Aanraken" name="touch_only"/>
-		<check_box label="Gescripte objecten" name="scripted"/>
-		<check_box label="Fysieke objecten" name="physical"/>
-		<check_box label="Geluidsbronnen" name="sounds"/>
-		<check_box label="Particlebronnen" name="particles"/>
-		<check_box label="Markeringen weergeven" name="highlights"/>
-		<check_box label="Bakens weergeven" name="beacons"/>
-		<text name="beacon_width_label">
-			Bakenbreedte:
-		</text>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_build_options.xml b/indra/newview/skins/default/xui/nl/floater_build_options.xml
deleted file mode 100644
index 53b60167bba029f0e9aa4ad52481c2b5e0d0b768..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_build_options.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="build options floater" title="GRID OPTIES">
-	<spinner label="Grid eenheid (meters)" name="GridResolution" width="180" label_width="122"/>
-	<spinner label="Grid extensies (meters)" name="GridDrawSize" width="180" label_width="122"/>
-	<check_box label="Sub-eenheid snap Inschakelen" name="GridSubUnit"/>
-	<check_box label="Toon dwarsdoorsnede" name="GridCrossSection"/>
-	<slider label="Grid opaakheid" name="GridOpacity"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_bulk_perms.xml b/indra/newview/skins/default/xui/nl/floater_bulk_perms.xml
deleted file mode 100644
index 5374ffc26ab078631db0accc9c74c6616ed6dad6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_bulk_perms.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floaterbulkperms" title="BULK WIJZIGEN INHOUD PERMISSIES">
-	<text name="applyto">
-		Inhoud Typen
-	</text>
-	<check_box label="Animatie" name="check_animation"/>
-	<check_box label="Lichaamsdelen" name="check_bodypart"/>
-	<check_box label="Kleding" name="check_clothing"/>
-	<check_box label="Gebaren" name="check_gesture"/>
-	<check_box label="Landmarkeringen" name="check_landmark"/>
-	<check_box label="Notitiekaarten" name="check_notecard"/>
-	<check_box label="Objecten" name="check_object"/>
-	<check_box label="Scripts" name="check_script"/>
-	<check_box label="Geluiden" name="check_sound"/>
-	<check_box label="Texturen" name="check_texture"/>
-	<button label="Alles aanvinken" label_selected="Alles" name="check_all"/>
-	<button label="Alles ontvinken" label_selected="Geen" name="check_none"/>
-	<text name="newperms">
-		Nieuwe permissies
-	</text>
-	<check_box label="Delen met groep" name="share_with_group"/>
-	<check_box label="Iedereen mag kopiëren" name="everyone_copy"/>
-	<text name="NextOwnerLabel">
-		Volgende eigenaar kan:
-	</text>
-	<check_box label="Wijzigen" name="next_owner_modify"/>
-	<check_box label="Kopiëren" name="next_owner_copy"/>
-	<check_box label="Verkopen/Weggeven" name="next_owner_transfer"/>
-	<button label="Help" name="help"/>
-	<button label="Toepassen" name="apply"/>
-	<button label="Sluiten" name="close"/>
-	<string name="nothing_to_modify_text">
-		Selectie bevat geen bewerkbare inhoud.
-	</string>
-	<string name="status_text">
-		Permissies instellen op [NAME]
-	</string>
-	<string name="start_text">
-		Starten permissie wijzigings verzoeken...
-	</string>
-	<string name="done_text">
-		Beïndigd permissie wijzigings verzoeken.
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_bumps.xml b/indra/newview/skins/default/xui/nl/floater_bumps.xml
deleted file mode 100644
index 516b59658d9d421dae23a6c55262c98999558382..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_bumps.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_bumps" title="BOTSINGEN, DUWEN &amp; SLAAN">
-	<string name="none_detected">
-		Geen gedetecteerd
-	</string>
-	<string name="bump">
-		[TIME]  [NAME] botste tegen u aan
-	</string>
-	<string name="llpushobject">
-		[TIME]  [NAME] duwde u met een script
-	</string>
-	<string name="selected_object_collide">
-		[TIME]  [NAME] raakte u met een object
-	</string>
-	<string name="scripted_object_collide">
-		[TIME]  [NAME] raakte u met een gescript object
-	</string>
-	<string name="physical_object_collide">
-		[TIME]  [NAME] raakte u met een fysiek object
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_buy_contents.xml b/indra/newview/skins/default/xui/nl/floater_buy_contents.xml
deleted file mode 100644
index 4c0ff7d04a01bf7404029b6a19b5e8bf6fa493bb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_buy_contents.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_buy_contents" title="KOOP INHOUD">
-	<text name="contains_text">
-		[NAME] bevat:
-	</text>
-	<text name="buy_text">
-		Koop voor L$[AMOUNT] van [NAME]?
-	</text>
-	<button label="Annuleren" label_selected="Annuleren" name="cancel_btn" width="73"/>
-	<button label="Koop" label_selected="Koop" name="buy_btn"/>
-	<check_box label="Draag kleding nu" name="wear_check"/>
-	<string name="no_copy_text">
-		(niet kopiëren)
-	</string>
-	<string name="no_modify_text">
-		(niet wijzigen)
-	</string>
-	<string name="no_transfer_text">
-		(niet overdragen)
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_buy_currency.xml b/indra/newview/skins/default/xui/nl/floater_buy_currency.xml
deleted file mode 100644
index 6ee5cc5341ed8d55fe9bf078cc9b670f30ca890f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_buy_currency.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="buy currency" title="KOOP VALUTA">
-	<text name="info_buying">
-		Valuta kopen
-	</text>
-	<text name="info_cannot_buy">
-		Kan nu niet kopen
-	</text>
-	<text name="info_need_more">
-		U heeft meer valuta nodig:
-	</text>
-	<text name="error_message">
-		Er klopt iets niet.
-	</text>
-	<button label="Ga naar website" name="error_web"/>
-	<text name="contacting">
-		Contact maken met Lindex…
-	</text>
-	<text name="buy_action_unknown">
-		Koop L$ op de LindeX valutabeurs
-	</text>
-	<text name="buy_action">
-		[NAME] L$ [PRICE]
-	</text>
-	<text name="currency_action" width="48">
-		Koop L$
-	</text>
-	<line_editor name="currency_amt" left_delta="53" width="75">
-		1234
-	</line_editor>
-	<text name="currency_est" left_delta="80">
-		voor ong. [LOCALAMOUNT]
-	</text>
-	<text name="getting_data">
-		Data ophalen…
-	</text>
-	<text name="balance_label">
-		U heeft momenteel
-	</text>
-	<text name="balance_amount">
-		L$ [AMT]
-	</text>
-	<text name="buying_label">
-		U koopt
-	</text>
-	<text name="buying_amount">
-		L$ [AMT]
-	</text>
-	<text name="total_label">
-		Uw saldo zal zijn:
-	</text>
-	<text name="total_amount">
-		L$ [AMT]
-	</text>
-	<text name="purchase_warning_repurchase" right="-8">
-		Het bevestigen van deze aankoop zal alleen de valuta
-kopen. U dient de bewerking opnieuw uit te voeren.
-	</text>
-	<text name="purchase_warning_notenough" right="-8">
-		U koopt niet voldoende valuta.
-Verhoog de hoeveelheid die gekocht moet worden.
-	</text>
-	<button label="Annuleren" name="cancel_btn"/>
-	<button label="Kopen" name="buy_btn"/>
-	<string name="buy_currency">
-		Koop L$ [LINDENS] voor ong. [LOCALAMOUNT]
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_buy_land.xml b/indra/newview/skins/default/xui/nl/floater_buy_land.xml
deleted file mode 100644
index 04990e78dbcd2e6b8e1b5d338b26ea1289490e8f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_buy_land.xml
+++ /dev/null
@@ -1,235 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="buy land" title="KOOP LAND">
-	<text name="region_name_label">
-		Regio:
-	</text>
-	<text name="region_name_text">
-		(onbekend)
-	</text>
-	<text name="region_type_label">
-		Type:
-	</text>
-	<text name="region_type_text">
-		(onbekend)
-	</text>
-	<text name="estate_name_label">
-		Estate:
-	</text>
-	<text name="estate_name_text">
-		(onbekend)
-	</text>
-	<text name="estate_owner_label">
-		Estate eigenaar:
-	</text>
-	<text name="estate_owner_text">
-		(onbekend)
-	</text>
-	<text name="resellable_changeable_label">
-		Aangekocht land in deze regio:
-	</text>
-	<text name="resellable_clause">
-		Mag niet worden doorverkocht
-	</text>
-	<text name="changeable_clause">
-		Mag niet worden samengevoegd/opgesplitst
-	</text>
-	<text name="covenant_text">
-		U moet instemmen met het estate convenant:
-	</text>
-	<text left="470" name="covenant_timestamp_text"/>
-	<text_editor name="covenant_editor">
-		Laden...
-	</text_editor>
-	<check_box label="Ik ga akkoord met het hierboven &#10;beschreven convenant." name="agree_covenant"/>
-	<text name="info_parcel_label">
-		Perceel:
-	</text>
-	<text name="info_parcel">
-		Scotopteryx 138,204
-	</text>
-	<text name="info_size_label">
-		Grootte:
-	</text>
-	<text name="info_size">
-		1024 m²
-	</text>
-	<text name="info_price_label">
-		Prijs:
-	</text>
-	<text name="info_price">
-		L$ 1500
-(L$ 1.1/m²)
-verkocht met objecten
-	</text>
-	<text name="info_action">
-		Het kopen van dit land zal:
-	</text>
-	<text name="error_message">
-		Er is iets niet in orde.
-	</text>
-	<button label="Ga naar website" name="error_web"/>
-	<text name="account_action">
-		U upgraden naar een premium lidmaatschap
-	</text>
-	<text name="account_reason">
-		Alleen premiumleden kunnen land bezitten.
-	</text>
-	<combo_box name="account_level">
-		<combo_box.item name="US$9.95/month,billedmonthly" label="US$9.95/maand, gefactureerd per maand"/>
-		<combo_box.item name="US$7.50/month,billedquarterly" label="US$7.50/maand, gefactureerd per kwartaal"/>
-		<combo_box.item name="US$6.00/month,billedannually" label="US$6.00/maand, gefactureerd per jaar"/>
-	</combo_box>
-	<text name="land_use_action">
-		Verhoog uw maandelijkse landgebruikskosten tot US$ 40/maand
-	</text>
-	<text name="land_use_reason">
-		U bezit 1309 m² land. 
-Dit perceel omvat 512 m² land.
-	</text>
-	<text name="purchase_action">
-		Betaal Joe Resident L$4000 voor het land
-	</text>
-	<text name="currency_reason">
-		U heeft L$2,100.
-	</text>
-	<text name="currency_action">
-		Koop extra L$
-	</text>
-	<line_editor name="currency_amt">
-		1000
-	</line_editor>
-	<text name="currency_est">
-		voor ong. US$ [AMOUNT2]
-	</text>
-	<text name="currency_balance">
-		U heeft L$2,100.
-	</text>
-	<check_box label="Verwijder [AMOUNT] vierkante meters van uw groepsbijdrage." name="remove_contribution"/>
-	<button label="Aankopen" name="buy_btn"/>
-	<button label="Annuleren" name="cancel_btn"/>
-	<string name="can_resell">
-		Mag worden doorverkocht.
-	</string>
-	<string name="can_not_resell">
-		Mag niet worden doorverkocht.
-	</string>
-	<string name="can_change">
-		Mag worden samengevoegd of opgedeeld.
-	</string>
-	<string name="can_not_change">
-		Mag niet worden samengevoegd of opgedeeld.
-	</string>
-	<string name="cant_buy_for_group">
-		U heeft geen permissie om land te kopen voor uw actieve groep.
-	</string>
-	<string name="no_land_selected">
-		Geen land geselecteerd
-	</string>
-	<string name="multiple_parcels_selected">
-		Meerdere verschillende percelen geselecteerd. Probeer een kleiner gebied te selecteren.
-	</string>
-	<string name="no_permission">
-		U heeft geen permissie om land te kopen voor uw actieve groep.
-	</string>
-	<string name="parcel_not_for_sale">
-		Het geselecteerde perceel is niet te koop.
-	</string>
-	<string name="group_already_owns">
-		De groep is al eigenaar van het perceel.
-	</string>
-	<string name="you_already_own">
-		U bent al eigenaar van het perceel
-	</string>
-	<string name="set_to_sell_to_other">
-		Het geselecteerde perceel staat te koop voor een andere partij.
-	</string>
-	<string name="no_public_land">
-		Het geselecteerde gebied heeft geen publiek land.
-	</string>
-	<string name="not_owned_by_you">
-		Land dat het eigendom is van een andere gebruiker is geselecteerd. Probeer een kleiner gebied te selecteren.
-	</string>
-	<string name="processing">
-		Uw aankoop wordt verwerkt... 
-
-(Dit kan een minuut of twee duren.)
-	</string>
-	<string name="fetching_error">
-		Er is een fout opgetreden tijdens het ophalen van informatie over het kopen van het land.
-	</string>
-	<string name="buying_will">
-		Het kopen van dit land zal:
-	</string>
-	<string name="buying_for_group">
-		Land voor groep kopen zal:
-	</string>
-	<string name="cannot_buy_now">
-		Kan nu niet kopen:
-	</string>
-	<string name="not_for_sale">
-		Niet te koop:
-	</string>
-	<string name="none_needed">
-		geen benodigd
-	</string>
-	<string name="must_upgrade">
-		Uw account moet geüpgrade worden om land te bezitten.
-	</string>
-	<string name="cant_own_land">
-		Uw account kan land bezitten.
-	</string>
-	<string name="land_holdings">
-		U bezit [BUYER] vierkante meters land.
-	</string>
-	<string name="pay_to_for_land">
-		Betaal L$ [AMOUNT] aan [SELLER] voor dit land
-	</string>
-	<string name="buy_for_US">
-		Koop L$ [AMOUNT] voor ong. US$ [AMOUNT2],
-	</string>
-	<string name="parcel_meters">
-		Dit perceel is [AMOUNT] vierkante meters.
-	</string>
-	<string name="premium_land">
-		Dit land is premium, en zal worden belast als [AMOUNT] vierkante meters.
-	</string>
-	<string name="discounted_land">
-		Dit land is gedisconteerd, en zal worden belast als [AMOUNT] vierkante meters.
-	</string>
-	<string name="meters_supports_object">
-		[AMOUNT] vierkante meter
-ondersteunt [AMOUNT2] objecten
-	</string>
-	<string name="sold_with_objects">
-		verkocht met objecten
-	</string>
-	<string name="sold_without_objects">
-		objecten niet inbegrepen
-	</string>
-	<string name="info_price_string">
-		L$ [PRICE]
-(L$ [PRICE_PER_SQM]/m²)
-[SOLD_WITH_OBJECTS]
-	</string>
-	<string name="insufficient_land_credits">
-		De groep [GROUP] heeft voldoende bijdrage van landgebruikcredits nodig om dit perceel te dekken voordat de aankoop kan worden afgerond.
-	</string>
-	<string name="have_enough_lindens">
-		U heeft L$ [AMOUNT], wat genoeg is om dit land te kopen.
-	</string>
-	<string name="not_enough_lindens">
-		U heeft slechts L$ [AMOUNT], en hebt L$ [AMOUNT2] meer nodig.
-	</string>
-	<string name="balance_left">
-		Na de aankoop zult u nog L$ [AMOUNT] over hebben.
-	</string>
-	<string name="balance_needed">
-		U dient minstens L$ [AMOUNT] te kopen om dit land te kunnen veroorloven.
-	</string>
-	<string name="no_parcel_selected">
-		(geen perceel geselecteerd)
-	</string>
-	<string name="buy_currency">
-		Koop L$ [AMOUNT] voor ong. US$ [USD]
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_buy_object.xml b/indra/newview/skins/default/xui/nl/floater_buy_object.xml
deleted file mode 100644
index 5d2d9dd3d01a96b62a284648bbf0c08e757af569..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_buy_object.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="contents" title="KOOP EEN KOPIE VAN OBJECT">
-	<text name="contents_text">
-		en zijn inhoud:
-	</text>
-	<text name="buy_text">
-		Koop voor L$[AMOUNT] van [NAME]?
-	</text>
-	<button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/>
-	<button label="Koop" label_selected="Koop" name="buy_btn"/>
-	<string name="title_buy_text">
-		Koop
-	</string>
-	<string name="title_buy_copy_text">
-		Koop een kopie van
-	</string>
-	<string name="no_copy_text">
-		(niet kopiëren)
-	</string>
-	<string name="no_modify_text">
-		(niet wijzigen)
-	</string>
-	<string name="no_transfer_text">
-		(niet overdragen)
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_camera.xml b/indra/newview/skins/default/xui/nl/floater_camera.xml
deleted file mode 100644
index 81a3ed8a5819540bb9c4b817803d839836fdd54f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_camera.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
-	<floater.string name="rotate_tooltip">
-		Roteer camera rond focus
-	</floater.string>
-	<floater.string name="zoom_tooltip">
-		Zoom camera naar focus
-	</floater.string>
-	<floater.string name="move_tooltip">
-		Beweeg camera omhoog en omlaag, links en rechts
-	</floater.string>
-	<panel name="controls">
-		<joystick_track name="cam_track_stick" tool_tip="Beweeg camera omhoog en omlaag, links en rechts"/>
-		<joystick_zoom name="zoom" tool_tip="Zoom camera naar focus"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_choose_group.xml b/indra/newview/skins/default/xui/nl/floater_choose_group.xml
deleted file mode 100644
index 8d54d62d2d06c7b17498218d5177b2acb2012afa..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_choose_group.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="groups" title="GROEPEN">
-	<text name="groupdesc">
-		Kies een groep:
-	</text>
-	<button label="OK" label_selected="OK" name="OK"/>
-	<button label="Annuleren" label_selected="Annuleren" name="Cancel"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_color_picker.xml b/indra/newview/skins/default/xui/nl/floater_color_picker.xml
deleted file mode 100644
index 9b61af07102118591a9060b33733f56e8c2819db..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_color_picker.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="ColorPicker" title="KLEURKIEZER">
-	<text name="r_val_text">
-		Rood:
-	</text>
-	<text name="g_val_text">
-		Groen:
-	</text>
-	<text name="b_val_text">
-		Blauw:
-	</text>
-	<text name="h_val_text">
-		Hue:
-	</text>
-	<text name="s_val_text">
-		Sat:
-	</text>
-	<text name="l_val_text">
-		Lum:
-	</text>
-	<check_box label="Direct toepassen" name="apply_immediate"/>
-	<button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/>
-	<button label="Selecteer" label_selected="Selecteer" name="select_btn"/>
-	<text name="Current color:">
-		Huidige kleur:
-	</text>
-	<text name="(Drag below to save.)">
-		(Sleep naar beneden 
- om op te slaan)
-	</text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_critical.xml b/indra/newview/skins/default/xui/nl/floater_critical.xml
deleted file mode 100644
index 90790fe10824fa3f917566ce2686d8b0f21d176a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_critical.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container" title="">
-	<button label="Doorgaan" label_selected="Doorgaan" name="Continue"/>
-	<button label="Annuleren" label_selected="Annuleren" name="Cancel"/>
-	<text name="tos_heading">
-		Leest u alstublieft het volgende bericht zorgvuldig door.
-	</text>
-	<text_editor name="tos_text">
-		TOS_TEXT
-	</text_editor>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_event.xml b/indra/newview/skins/default/xui/nl/floater_event.xml
deleted file mode 100644
index 45ec58abdf175745543f61f4b216f9d4836dd503..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_event.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- follows="all"
- height="400"
- can_resize="true"
- help_topic="event_details"
- label="Event"
- layout="topleft"
- name="Event"
- save_rect="true"
- save_visibility="false"
- title="EVENT DETAILS" 
- width="600">
-	<floater.string
-		name="loading_text">
-		Laden...
-	</floater.string>
-    <floater.string
-     name="done_text">
-        Done
-    </floater.string>
-  <web_browser
-     trusted_content="true" 
-     follows="left|right|top|bottom"
-     layout="topleft"
-     left="10"
-     name="browser"
-     height="365"
-     width="580"
-     top="0"/>
-	<text
-	 follows="bottom|left"
-	 height="16"
-	 layout="topleft"
-	 left_delta="0"
-	 name="status_text"
-	 top_pad="10"
-	 width="150" />	 
-</floater>
-
diff --git a/indra/newview/skins/default/xui/nl/floater_font_test.xml b/indra/newview/skins/default/xui/nl/floater_font_test.xml
deleted file mode 100644
index 31e53e7fba9c51f37acf720debb59b990eaca2d0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_font_test.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="contents" title="LETTERTYPETEST">
-	<text name="linea">
-		Overschrijf test, zou hier moeten verschijnen als Times (vanuit default/xui/en-us).
-	</text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_gesture.xml b/indra/newview/skins/default/xui/nl/floater_gesture.xml
deleted file mode 100644
index 4fa994c69ec601430cb3f26c9403e215f565c8f3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_gesture.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="gestures" title="ACTIEVE GEBAREN">
-	<text name="help_label">
-		Dubbelklik een gebaar om animaties en geluiden af te spelen
-	</text>
-	<scroll_list name="gesture_list">
-		<column label="Trigger" name="trigger"/>
-		<column label="Toets" name="shortcut"/>
-		<column label="Naam" name="name"/>
-	</scroll_list>
-	<button label="Nieuw" name="new_gesture_btn"/>
-	<button label="Bewerken" name="edit_btn"/>
-	<button label="Afspelen" name="play_btn"/>
-	<button label="Stop" name="stop_btn"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_hardware_settings.xml b/indra/newview/skins/default/xui/nl/floater_hardware_settings.xml
deleted file mode 100644
index b27a96f15cabf0700aad3a2dfebde204c5ed7100..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_hardware_settings.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Hardware Settings Floater" title="HARDWARE INSTELLINGEN">
-	<text name="Filtering:">
-		Filtering:
-	</text>
-	<check_box label="Anisotropische filtering (langzamer indien ingeschakeld)" name="ani" left="100"/>
-	<text name="Antialiasing:">
-		Anti-alias:
-	</text>
-	<combo_box label="Anti-alias" name="fsaa" width="120" left="100">
-		<combo_box.item name="FSAADisabled" label="Uitgeschakeld"/>
-		<combo_box.item name="2x" label="2x"/>
-		<combo_box.item name="4x" label="4x"/>
-		<combo_box.item name="8x" label="8x"/>
-		<combo_box.item name="16x" label="16x"/>
-	</combo_box>
-	<spinner label="Gamma:" name="gamma" label_width="88" width="170"/>
-	<text name="(brightness, lower is brighter)" left="182">
-		(helderheid, lager is helderder, 0=gebruik standaardwaarde)
-	</text>
-	<text name="Enable VBO:">
-		VBO inschakelen:
-	</text>
-	<check_box label="OpenGL Vertex Buffer Objects inschakelen" name="vbo" tool_tip="Dit inschakelen op moderne hardware geeft een prestatiewinst. Oudere hardware heeft echter vaak een slechte implementatie van VBO&apos;s en u kunt crashes ondervinden wanneer dit is ingeschakeld."/>
-	<slider label="Textuurgeheugen (MB):" name="GrapicsCardTextureMemory" tool_tip="Hoeveelheid geheugen dat voor texturen toegewezen wordt. Standaard wordt de hoeveelheid geheugen van de videokaart gebruikt. Het verminderen van deze waarde kan de prestaties verbeteren, maar kan ook texturen wazig maken."/>
-	<spinner label="Mistafstandsratio:" name="fog"/>
-	<button label="OK" label_selected="OK" name="OK"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_hud.xml b/indra/newview/skins/default/xui/nl/floater_hud.xml
deleted file mode 100644
index 8ef7de1b02b9ea4c63b5bbd3f16d4a02744a79e0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_hud.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_hud" title="HANDLEIDING"/>
diff --git a/indra/newview/skins/default/xui/nl/floater_image_preview.xml b/indra/newview/skins/default/xui/nl/floater_image_preview.xml
deleted file mode 100644
index 06596c20aa064e6f07de3c0dd21fb253afb604b5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_image_preview.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Image Preview" title="">
-	<text name="name_label">
-		Naam:
-	</text>
-	<text name="description_label">
-		Omschrijving:
-	</text>
-	<text name="preview_label">
-		Toon voorbeeld van 
-afbeelding als:
-	</text>
-	<combo_box label="Kledingtype" name="clothing_type_combo">
-		<combo_box.item name="Image" label="Afbeelding"/>
-		<combo_box.item name="Hair" label="Haar"/>
-		<combo_box.item name="FemaleHead" label="Vrouwelijk hoofd"/>
-		<combo_box.item name="FemaleUpperBody" label="Vrouwelijk bovenlichaam"/>
-		<combo_box.item name="FemaleLowerBody" label="Vrouwelijk onderlichaam"/>
-		<combo_box.item name="MaleHead" label="Mannelijk hoofd"/>
-		<combo_box.item name="MaleUpperBody" label="Mannelijk onderlichaam"/>
-		<combo_box.item name="MaleLowerBody" label="Mannelijk bovenlichaam"/>
-		<combo_box.item name="Skirt" label="Rok"/>
-		<combo_box.item name="SculptedPrim" label="Sculpted prim"/>
-	</combo_box>
-	<text name="bad_image_text">
-		Kan afbeelding niet lezen.
-
-Probeer het op te slaan als een 24 bit Targa (.tga).
-	</text>
-	<check_box label="Gebruik verliesloze compressie" name="lossless_check"/>
-	<button label="Annuleren" name="cancel_btn"/>
-	<button label="Upload (L$[AMOUNT])" name="ok_btn" width="140"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_inspect.xml b/indra/newview/skins/default/xui/nl/floater_inspect.xml
deleted file mode 100644
index 6a0885b57f586da078d18753edd999a3f7163b30..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_inspect.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="inspect" title="OBJECTEN INSPECTEREN">
-	<scroll_list name="object_list" tool_tip="Selecteer een object van deze lijst om het in-wereld te markeren">
-		<column label="Objectnaam" name="object_name"/>
-		<column label="Eigenaar" name="owner_name"/>
-		<column label="Maker" name="creator_name"/>
-		<column label="Aanmaakdatum" name="creation_date"/>
-	</scroll_list>
-	<button label="Toon profiel eigenaar..." label_selected="" name="button owner" tool_tip="Bekijk het profiel van de eigenaar van het gemarkeerde object"/>
-	<button label="Toon profiel maker..." label_selected="" name="button creator" tool_tip="Bekijk het profiel van de originele maker van het gemarkeerde object"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_inventory.xml b/indra/newview/skins/default/xui/nl/floater_inventory.xml
deleted file mode 100644
index a69039d811eb6f27e8282da08bcaafd8218fb50f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_inventory.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Inventory" title="INVENTARIS">
-	<search_editor label="Typ hier om te zoeken" name="inventory search editor"/>
-	<tab_container name="inventory filter tabs">
-		<inventory_panel label="Alle items" name="All Items"/>
-		<inventory_panel label="Recente items" name="Recent Items"/>
-	</tab_container>
-	<menu_bar name="Inventory Menu">
-		<menu label="Bestand" name="File">
-			<menu_item_call label="Open" name="Open"/>
-			<menu_item_call label="Nieuw venster" name="New Window"/>
-			<menu_item_call label="Toon filters" name="Show Filters"/>
-			<menu_item_call label="Filters opnieuw instellen" name="Reset Current"/>
-			<menu_item_call label="Alle mappen sluiten" name="Close All Folders"/>
-			<menu_item_call label="Prullenbak legen" name="Empty Trash"/>
-		</menu>
-		<menu label="Maak" name="Create">
-			<menu_item_call label="Nieuwe map" name="New Folder"/>
-			<menu_item_call label="Nieuw script" name="New Script"/>
-			<menu_item_call label="Nieuwe notitie" name="New Note"/>
-			<menu_item_call label="Nieuw gebaar" name="New Gesture"/>
-			<menu name="New Clothes">
-				<menu_item_call label="Nieuw hemd" name="New Shirt"/>
-				<menu_item_call label="Nieuwe broek" name="New Pants"/>
-				<menu_item_call label="Nieuwe schoenen" name="New Shoes"/>
-				<menu_item_call label="Nieuwe sokken" name="New Socks"/>
-				<menu_item_call label="Nieuwe jas" name="New Jacket"/>
-				<menu_item_call label="Nieuwe rok" name="New Skirt"/>
-				<menu_item_call label="Nieuwe handschoenen" name="New Gloves"/>
-				<menu_item_call label="Nieuw onderhemd" name="New Undershirt"/>
-				<menu_item_call label="Nieuwe onderbroek" name="New Underpants"/>
-			</menu>
-			<menu name="New Body Parts">
-				<menu_item_call label="Nieuwe postuur" name="New Shape"/>
-				<menu_item_call label="Nieuwe huid" name="New Skin"/>
-				<menu_item_call label="Nieuw haar" name="New Hair"/>
-				<menu_item_call label="Nieuwe ogen" name="New Eyes"/>
-			</menu>
-		</menu>
-		<menu label="Sorteren" name="Sort">
-			<menu_item_check label="Op naam" name="By Name"/>
-			<menu_item_check label="Op datum" name="By Date"/>
-			<menu_item_check label="Mappen altijd op naam" name="Folders Always By Name"/>
-			<menu_item_check label="Systeemmappen naar de bovenkant" name="System Folders To Top"/>
-		</menu>
-	</menu_bar>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/nl/floater_inventory_item_properties.xml
deleted file mode 100644
index 81a823acd44ed94b338f211e1f1475a5f61d8541..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_inventory_item_properties.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="item properties" title="INVENTARISITEM EIGENSCHAPPEN">
-	<text name="LabelItemNameTitle">
-		Naam:
-	</text>
-	<text name="LabelItemDescTitle">
-		Omschrijving:
-	</text>
-	<text name="LabelCreatorTitle">
-		Maker:
-	</text>
-	<button label="Profiel..." label_selected="" name="BtnCreator"/>
-	<text name="LabelOwnerTitle">
-		Eigenaar
-	</text>
-	<button label="Profiel..." label_selected="" name="BtnOwner"/>
-	<text name="LabelAcquiredTitle">
-		Verworven:
-	</text>
-	<text name="LabelAcquiredDate">
-		Wed May 24 12:50:46 2006
-	</text>
-	<text name="OwnerLabel">
-		U kunt:
-	</text>
-	<check_box label="Wijzigen" name="CheckOwnerModify"/>
-	<check_box label="Kopiëren" name="CheckOwnerCopy"/>
-	<check_box label="Doorverkopen/weggeven" name="CheckOwnerTransfer"/>
-	<text name="BaseMaskDebug">
-		B:
-	</text>
-	<text name="OwnerMaskDebug">
-		E:
-	</text>
-	<text name="GroupMaskDebug">
-		G:
-	</text>
-	<text name="EveryoneMaskDebug">
-		I:
-	</text>
-	<text name="NextMaskDebug">
-		V:
-	</text>
-	<check_box label="Delen met groep" name="CheckShareWithGroup"/>
-	<check_box label="Iedereen mag kopiëren" name="CheckEveryoneCopy"/>
-	<text name="NextOwnerLabel" width="130">
-		Volgende eigenaar kan:
-	</text>
-	<check_box label="Wijzigen" name="CheckNextOwnerModify"/>
-	<check_box label="Kopiëren" name="CheckNextOwnerCopy"/>
-	<check_box label="Doorverkopen/weggeven" name="CheckNextOwnerTransfer"/>
-	<text name="SaleLabel">
-		Markeer item:
-	</text>
-	<check_box label="Te koop" name="CheckPurchase"/>
-	<radio_group name="RadioSaleType">
-		<radio_item name="radio" label="Origineel" />
-		<radio_item name="radio2" label="Kopiëren" />
-	</radio_group>
-	<text name="TextPrice">
-		Prijs: L$
-	</text>
-	<string name="unknown">
-		(onbekend)
-	</string>
-	<string name="public">
-		(public)
-	</string>
-	<string name="you_can">
-		U kunt:
-	</string>
-	<string name="owner_can">
-		Eigenaar kan:
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/nl/floater_inventory_view_finder.xml
deleted file mode 100644
index 097ebda8b76ae9e1ec7341fabcafa807bfe70976..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_inventory_view_finder.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Inventory Finder" title="INVENTORY_RECENT_ITEMS">
-	<check_box label="Animatie" name="check_animation"/>
-	<check_box label="Visitekaartjes" name="check_calling_card"/>
-	<check_box label="Kleding" name="check_clothing"/>
-	<check_box label="Gebaren" name="check_gesture"/>
-	<check_box label="Landmarkeringen" name="check_landmark"/>
-	<check_box label="Notitiekaarten" name="check_notecard"/>
-	<check_box label="Objecten" name="check_object"/>
-	<check_box label="Scripts" name="check_script"/>
-	<check_box label="Geluiden" name="check_sound"/>
-	<check_box label="Texturen" name="check_texture"/>
-	<check_box label="Foto&apos;s" name="check_snapshot"/>
-	<button label="Alles" label_selected="Alles" name="All"/>
-	<button label="Geen" label_selected="Geen" name="None"/>
-	<check_box label="Altijd mappen tonen" name="check_show_empty"/>
-	<check_box label="Sinds logoff" name="check_since_logoff"/>
-	<text name="- OR -">
-		- OF -
-	</text>
-	<spinner label="Uren geleden" name="spin_hours_ago" width="144" label_width="80"/>
-	<spinner label="Dagen geleden" name="spin_days_ago" width="144" label_width="80"/>
-	<button label="Sluiten" label_selected="Sluiten" name="Close"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_joystick.xml b/indra/newview/skins/default/xui/nl/floater_joystick.xml
deleted file mode 100644
index 1d590dc1f3a29ff3424c041bdb802057412a8e04..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_joystick.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Joystick" title="JOYSTICK CONFIGURATIE">
-	<check_box name="enable_joystick" width="80" label="Joystick inschakelen:"/>
-	<text left="146" name="joystick_type" width="360"/>
-	<spinner label="X-as mapping" name="JoystickAxis1"/>
-	<spinner label="Y-as mapping" name="JoystickAxis2"/>
-	<spinner label="Z-as mapping" name="JoystickAxis0"/>
-	<spinner label="Stampen mapping" name="JoystickAxis4"/>
-	<spinner label="Gieren mapping" name="JoystickAxis5"/>
-	<spinner label="Rollen mapping" name="JoystickAxis3"/>
-	<spinner label="Zoom mapping" name="JoystickAxis6"/>
-	<check_box label="Directe zoom" name="ZoomDirect"/>
-	<check_box label="3D Cursor" name="Cursor3D"/>
-	<check_box label="Automatisch niveau" name="AutoLeveling"/>
-	<text name="Control Modes:">
-		Besturingsmodi:
-	</text>
-	<check_box name="JoystickAvatarEnabled" label="Avatar"/>
-	<check_box name="JoystickBuildEnabled" label="Bouwen"/>
-	<check_box name="JoystickFlycamEnabled" label="Vliegcamera"/>
-	<text name="XScale">
-		X schaal
-	</text>
-	<text name="YScale">
-		Y schaal
-	</text>
-	<text name="ZScale">
-		Z schaal
-	</text>
-	<text name="PitchScale">
-		Stampen schaal
-	</text>
-	<text name="YawScale">
-		Gieren schaal
-	</text>
-	<text name="RollScale">
-		Rollen schaal
-	</text>
-	<text name="XDeadZone">
-		X dode zone
-	</text>
-	<text name="YDeadZone">
-		Y dode zone
-	</text>
-	<text name="ZDeadZone">
-		Z dode zone
-	</text>
-	<text name="PitchDeadZone">
-		Stampen dode zone
-	</text>
-	<text name="YawDeadZone">
-		Gieren dode zone
-	</text>
-	<text name="RollDeadZone">
-		Rollen dode zone
-	</text>
-	<text name="Feathering">
-		Feathering
-	</text>
-	<text name="ZoomScale2">
-		Zoomschaal
-	</text>
-	<text name="ZoomDeadZone">
-		Zoom dode zone
-	</text>
-	<button label="SpaceNavigator standaardwaarden" name="SpaceNavigatorDefaults" width="200" font="SansSerifSmall"/>
-	<button label="OK" label_selected="OK" name="ok_btn"/>
-	<button label="Annuleren" label_selected="Annuleren" name="cancel_btn" left_delta="110"/>
-	<stat_view label="Joystick monitor" name="axis_view">
-		<stat_bar label="As 0" name="axis0"/>
-		<stat_bar label="As 1" name="axis1"/>
-		<stat_bar label="As 2" name="axis2"/>
-		<stat_bar label="As 3" name="axis3"/>
-		<stat_bar label="As 4" name="axis4"/>
-		<stat_bar label="As 5" name="axis5"/>
-	</stat_view>
-	<string name="NoDevice">
-		Geen apparaat gedetecteerd
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_lagmeter.xml b/indra/newview/skins/default/xui/nl/floater_lagmeter.xml
deleted file mode 100644
index e3943c2470f1afa9f86585183857249c90acc751..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_lagmeter.xml
+++ /dev/null
@@ -1,152 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_lagmeter" title="LAG METER">
-	<button label="" label_selected="" name="client_lagmeter" tool_tip="Client lag status"/>
-	<text name="client">
-		Client:
-	</text>
-	<text name="client_text">
-		Normaal
-	</text>
-	<button label="" label_selected="" name="network_lagmeter" tool_tip="Netwerklag status"/>
-	<text name="network">
-		Netwerk:
-	</text>
-	<text name="network_text">
-		Normaal
-	</text>
-	<button label="" label_selected="" name="server_lagmeter" tool_tip="Serverlag status"/>
-	<text name="server">
-		Server:
-	</text>
-	<text name="server_text">
-		Normaal
-	</text>
-	<button label="?" name="server_help"/>
-	<button label="&gt;&gt;" name="minimize"/>
-	<string name="max_title_msg">
-		Lag meter
-	</string>
-	<string name="max_width_px">
-		360
-	</string>
-	<string name="min_title_msg">
-		Lag
-	</string>
-	<string name="min_width_px">
-		90
-	</string>
-	<string name="client_text_msg">
-		Client
-	</string>
-	<string name="client_frame_rate_critical_fps">
-		10
-	</string>
-	<string name="client_frame_rate_warning_fps">
-		15
-	</string>
-	<string name="client_frame_time_window_bg_msg">
-		Normaal, venster op achtergrond
-	</string>
-	<string name="client_frame_time_critical_msg">
-		Client framerate onder [CLIENT_FRAME_RATE_CRITICAL]
-	</string>
-	<string name="client_frame_time_warning_msg">
-		Client framerate tussen [CLIENT_FRAME_RATE_CRITICAL] en [CLIENT_FRAME_RATE_WARNING]
-	</string>
-	<string name="client_frame_time_normal_msg">
-		Normaal
-	</string>
-	<string name="client_draw_distance_cause_msg">
-		Mogelijke oorzaak: Zichtbereik te hoog ingesteld
-	</string>
-	<string name="client_texture_loading_cause_msg">
-		Mogelijke oorzaak: Afbeeldingen worden geladen
-	</string>
-	<string name="client_texture_memory_cause_msg">
-		Mogelijke oorzaak: Teveel afbeeldingen in geheugen
-	</string>
-	<string name="client_complex_objects_cause_msg">
-		Mogelijke oorzaak: Teveel complexe objecten in de scene
-	</string>
-	<string name="network_text_msg">
-		Netwerk
-	</string>
-	<string name="network_packet_loss_critical_pct">
-		10
-	</string>
-	<string name="network_packet_loss_warning_pct">
-		5
-	</string>
-	<string name="network_packet_loss_critical_msg">
-		Verbinding verliest meer dan [NETWORK_PACKET_LOSS_CRITICAL]% van de pakketten
-	</string>
-	<string name="network_packet_loss_warning_msg">
-		Verbinding verliest [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% van de pakketten
-	</string>
-	<string name="network_performance_normal_msg">
-		Normaal
-	</string>
-	<string name="network_ping_critical_ms">
-		600
-	</string>
-	<string name="network_ping_warning_ms">
-		300
-	</string>
-	<string name="network_ping_critical_msg">
-		Verbinding pingtijd is meer dan [NETWORK_PING_CRITICAL] ms
-	</string>
-	<string name="network_ping_warning_msg">
-		Verbinding pingtijd is [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms
-	</string>
-	<string name="network_packet_loss_cause_msg">
-		Mogelijk slechte verbinding of &apos;Bandbreedte&apos; voorkeur te hoog.
-	</string>
-	<string name="network_ping_cause_msg">
-		Mogelijk slechte verbinding of applicatie voor bestandsdeling.
-	</string>
-	<string name="server_text_msg">
-		Server
-	</string>
-	<string name="server_frame_rate_critical_fps">
-		20
-	</string>
-	<string name="server_frame_rate_warning_fps">
-		30
-	</string>
-	<string name="server_single_process_max_time_ms">
-		20
-	</string>
-	<string name="server_frame_time_critical_msg">
-		Simulator framerate onder [SERVER_FRAME_RATE_CRITICAL]
-	</string>
-	<string name="server_frame_time_warning_msg">
-		Simulator framerate tussen [SERVER_FRAME_RATE_CRITICAL] en [SERVER_FRAME_RATE_WARNING]
-	</string>
-	<string name="server_frame_time_normal_msg">
-		Normaal
-	</string>
-	<string name="server_physics_cause_msg">
-		Mogelijke oorzaak: Teveel fysieke objecten
-	</string>
-	<string name="server_scripts_cause_msg">
-		Mogelijke oorzaak: Teveel gescripte objecten
-	</string>
-	<string name="server_net_cause_msg">
-		Mogelijke oorzaak: Teveel netwerkverkeer
-	</string>
-	<string name="server_agent_cause_msg">
-		Mogelijke oorzaak: Teveel mensen verplaatsen zich in de regio
-	</string>
-	<string name="server_images_cause_msg">
-		Mogelijke oorzaak: Teveel afbeeldingberekeningen
-	</string>
-	<string name="server_generic_cause_msg">
-		Mogelijke oorzaak: Simulatorbelasting is te hoog
-	</string>
-	<string name="smaller_label">
-		&gt;&gt;
-	</string>
-	<string name="bigger_label">
-		&lt;&lt;
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_land_holdings.xml b/indra/newview/skins/default/xui/nl/floater_land_holdings.xml
deleted file mode 100644
index 5cf66ed0c44f3527f4a776b08748853ddf6b3e26..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_land_holdings.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="land holdings floater" title="MIJN LAND">
-	<scroll_list name="parcel list">
-		<column label="Perceelnaam" name="name"/>
-		<column label="Regio" name="location"/>
-		<column label="Type" name="type"/>
-		<column label="Gebied" name="area"/>
-	</scroll_list>
-	<button label="Teleport" label_selected="Teleport" name="Teleport" tool_tip="Teleport naar het centrum van dit land."/>
-	<button label="Toon op kaart" label_selected="Toon op kaart" name="Show on Map" tool_tip="Toon dit land op de wereldkaart"/>
-	<text name="contrib_label">
-		Bijdragen aan uw groepen:
-	</text>
-	<scroll_list name="grant list">
-		<column label="Groep" name="group"/>
-		<column label="Gebied" name="area"/>
-	</scroll_list>
-	<text name="allowed_label">
-		Toegestane landbezittingen in het huidige betaalschema:
-	</text>
-	<text name="allowed_text">
-		[AREA] m²
-	</text>
-	<text name="current_label">
-		Huidige landbezittingen:
-	</text>
-	<text name="current_text">
-		[AREA] m²
-	</text>
-	<text name="available_label">
-		Beschikbaar voor landaankopen:
-	</text>
-	<text name="available_text">
-		[AREA] m²
-	</text>
-	<string name="area_string">
-		[AREA] m²
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/nl/floater_live_lsleditor.xml
deleted file mode 100644
index 98a0362ce1f7990c9a8357d3b52f9c977031a2a5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_live_lsleditor.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script ed float" title="SCRIPT: NIEUW SCRIPT">
-	<button label="Herstarten" label_selected="Herstarten" name="Reset"/>
-	<check_box label="Uitvoeren" name="running" left="4"/>
-	<check_box label="Mono" name="mono"/>
-	<string name="not_allowed">
-		U bent niet bevoegd om dit script in te zien
-	</string>
-	<string name="script_running">
-		Uitvoeren
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_lsl_guide.xml b/indra/newview/skins/default/xui/nl/floater_lsl_guide.xml
deleted file mode 100644
index 27b3ff834ee2f5ae9b9141044dda25fe0340c395..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_lsl_guide.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script ed float" title="LSL WIKI">
-	<check_box label="Volg cursor" name="lock_check"/>
-	<combo_box label="Vergrendelen" name="history_combo"/>
-	<button label="Terug" name="back_btn"/>
-	<button label="Vooruit" name="fwd_btn"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_map.xml b/indra/newview/skins/default/xui/nl/floater_map.xml
deleted file mode 100644
index 29af36e50c934dbbf8f27e6eccc454e1b96c6891..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_map.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map">
-	<floater.string name="mini_map_north">
-		N
-	</floater.string>
-	<floater.string name="mini_map_east">
-		O
-	</floater.string>
-	<floater.string name="mini_map_west">
-		W
-	</floater.string>
-	<floater.string name="mini_map_south">
-		Z
-	</floater.string>
-	<floater.string name="mini_map_southeast">
-		ZO
-	</floater.string>
-	<floater.string name="mini_map_northeast">
-		NO
-	</floater.string>
-	<floater.string name="mini_map_southwest">
-		ZW
-	</floater.string>
-	<floater.string name="mini_map_northwest">
-		NW
-	</floater.string>
-	<text label="N" name="floater_map_north" text="N">
-		N
-	</text>
-	<text label="O" name="floater_map_east" text="O">
-		O
-	</text>
-	<text label="W" name="floater_map_west" text="W">
-		W
-	</text>
-	<text label="Z" name="floater_map_south" text="Z">
-		Z
-	</text>
-	<text label="ZO" name="floater_map_southeast" text="ZO">
-		ZO
-	</text>
-	<text label="NO" name="floater_map_northeast" text="NO">
-		NO
-	</text>
-	<text label="ZW" name="floater_map_southwest" text="ZW">
-		ZW
-	</text>
-	<text label="NW" name="floater_map_northwest" text="NW">
-		NW
-	</text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_media_browser.xml b/indra/newview/skins/default/xui/nl/floater_media_browser.xml
deleted file mode 100644
index 12f693bf33f45ff89edd6256cee99ee9c3b64fe3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_media_browser.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="MEDIA VERKENNER">
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button label="Terug" name="back"/>
-			<button label="Vooruit" name="forward"/>
-			<button label="Herladen" name="reload"/>
-			<button label="Ga" name="go"/>
-		</layout_panel>
-		<layout_panel name="parcel_owner_controls">
-			<button label="Stuur huidige URL naar perceel" name="assign"/>
-		</layout_panel>
-		<layout_panel name="external_controls">
-			<button label="Open in mijn webbrowser" name="open_browser"/>
-			<check_box label="Altijd in mijn webbrowser openen" name="open_always"/>
-			<button label="Sluiten" name="close"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_mem_leaking.xml b/indra/newview/skins/default/xui/nl/floater_mem_leaking.xml
deleted file mode 100644
index d0b25587b68882334bdb8c191d27e512a34fe092..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_mem_leaking.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="MemLeak" title="GEHEUGENLEK SIMULATIE">
-	<spinner label="Leksnelheid (bytes per frame):" name="leak_speed"/>
-	<spinner label="Max gelekt geheugen (MB):" name="max_leak"/>
-	<text name="total_leaked_label">
-		Huidig gelekt geheugen: [SIZE] KB
-	</text>
-	<text name="note_label_1">
-		[NOTE1]
-	</text>
-	<text name="note_label_2">
-		[NOTE2]
-	</text>
-	<button label="Start" name="start_btn"/>
-	<button label="Stop" name="stop_btn"/>
-	<button label="Vrijgeven" name="release_btn"/>
-	<button label="Sluiten" name="close_btn"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_moveview.xml b/indra/newview/skins/default/xui/nl/floater_moveview.xml
deleted file mode 100644
index 8a6a874e49907695b7b47805dcaa7eafb1fc5199..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_moveview.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
-<panel name="panel_actions">
-	<button label="" label_selected="" name="turn left btn" tool_tip="Draai links"/>
-	<button label="" label_selected="" name="turn right btn" tool_tip="Draai rechts"/>
-	<button label="" label_selected="" name="move up btn" tool_tip="Spring of vlieg omhoog"/>
-	<button label="" label_selected="" name="move down btn" tool_tip="Kruip of vlieg omlaag"/>
-	<joystick_slide name="slide left btn" tool_tip="Verplaats links"/>
-	<joystick_slide name="slide right btn" tool_tip="Verplaats rechts"/>
-	<joystick_turn name="forward btn" tool_tip="Verplaats vooruit"/>
-	<joystick_turn name="backward btn" tool_tip="Verplaats achteruit"/>
-</panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_mute_object.xml b/indra/newview/skins/default/xui/nl/floater_mute_object.xml
deleted file mode 100644
index edea63b42c6584e29f0a0e34ff4d896eb996da7a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_mute_object.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="mute by name" title="BLOKKEER VOORWERP BIJ NAAM">
-	<text bottom_delta="-40" name="message">
-		Blokkeer een Voorwerp:
-	</text>
-	<line_editor bottom_delta="-58" name="object_name">
-		Object naam
-	</line_editor>
-	<text name="note">
-		* Blokkeerd alleen object tekst, niet de geluiden
-	</text>
-	<button label="Ok" name="OK"/>
-	<button label="Annuleren" name="Cancel"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_openobject.xml b/indra/newview/skins/default/xui/nl/floater_openobject.xml
deleted file mode 100644
index 832c63403d9833ffcd6e08060f05deae5ec9ec0b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_openobject.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="objectcontents" title="OBJECT INHOUD">
-	<text name="object_name">
-		[DESC]:
-	</text>
-	<button label="Kopiëren naar inventaris" label_selected="Kopiëren naar inventaris" name="copy_to_inventory_button" width="140"/>
-	<button label="Kopiëren en dragen" label_selected="Kopiëren en dragen" name="copy_and_wear_button" left="164"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_pay.xml b/indra/newview/skins/default/xui/nl/floater_pay.xml
deleted file mode 100644
index f2b34d78d727e15fadfad7c7e8be6c6578c93799..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_pay.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Give Money" title="">
-	<button label="L$1" label_selected="L$1" name="fastpay 1"/>
-	<button label="L$5" label_selected="L$5" name="fastpay 5"/>
-	<button label="L$10" label_selected="L$10" name="fastpay 10"/>
-	<button label="L$20" label_selected="L$20" name="fastpay 20"/>
-	<button label="Betaal" label_selected="Betaal" name="pay btn"/>
-	<button label="Annuleren" label_selected="Annuleren" name="cancel btn"/>
-	<text name="payee_label" width="100">
-		Betaal inwoner:
-	</text>
-	<text name="payee_name" left="110">
-		Test Name That Is Extremely Long To Check Clipping
-	</text>
-	<text name="fastpay text">
-		Snel betalen:
-	</text>
-	<text name="amount text">
-		Bedrag:
-	</text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_pay_object.xml b/indra/newview/skins/default/xui/nl/floater_pay_object.xml
deleted file mode 100644
index 11fa6d4a44d6c90e4ecff95a7092e6a37d875461..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_pay_object.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Give Money" title="">
-	<text name="payee_group" left="5" width="90" halign="left">
-		Betaal groep:
-	</text>
-	<text name="payee_resident" left="5" width="90" halign="left">
-		Betaal inwoner:
-	</text>
-	<text name="payee_name" left="100" width="200">
-		Ericacita Moostopolison
-	</text>
-	<text name="object_name_label" left="5" width="90" halign="left">
-		Via object:
-	</text>
-	<text name="object_name_text" left="100" width="200">
-		...
-	</text>
-	<text name="fastpay text" halign="left">
-		Snel betalen:
-	</text>
-	<text name="amount text">
-		Bedrag:
-	</text>
-	<button label="L$1" label_selected="L$1" name="fastpay 1"/>
-	<button label="L$5" label_selected="L$5" name="fastpay 5"/>
-	<button label="L$10" label_selected="L$10" name="fastpay 10"/>
-	<button label="L$20" label_selected="L$20" name="fastpay 20"/>
-	<button label="Betaal" label_selected="Betaal" name="pay btn"/>
-	<button label="Annuleren" label_selected="Annuleren" name="cancel btn"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_perm_prefs.xml b/indra/newview/skins/default/xui/nl/floater_perm_prefs.xml
deleted file mode 100644
index f946c42678c8b2a5642a3d902302346827ac0b0d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_perm_prefs.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="perm prefs" title="STANDAARD UPLOAD PERMISSIES">
-	<panel label="Permissies" name="permissions">
-		<button label="?" label_selected="?" name="help"/>
-		<check_box label="Delen met groep" name="share_with_group"/>
-		<check_box label="Iedereen mag kopiëren" name="everyone_copy"/>
-		<text name="NextOwnerLabel">
-			Volgende eigenaar kan:
-		</text>
-		<check_box label="Wijzigen" name="next_owner_modify"/>
-		<check_box label="Kopiëren" name="next_owner_copy"/>
-		<check_box label="Verkopen/weggeven" name="next_owner_transfer" left_delta="80"/>
-	</panel>
-	<button label="OK" label_selected="OK" name="ok"/>
-	<button label="Annuleren" label_selected="Annuleren" name="cancel"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_post_process.xml b/indra/newview/skins/default/xui/nl/floater_post_process.xml
deleted file mode 100644
index e627f81a70afe86f36f3856c74828c863844dcd3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_post_process.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Post-Process Floater" title="NABEWERKINGINSTELLINGEN">
-	<tab_container name="Post-Process Tabs">
-		<panel label="Kleurfilter" name="wmiColorFilterPanel">
-			<check_box label="Inschakelen" name="wmiColorFilterToggle"/>
-			<text name="wmiColorFilterBrightnessText">
-				Helderheid
-			</text>
-			<text name="wmiColorFilterSaturationText">
-				Verzadiging
-			</text>
-			<text name="wmiColorFilterContrastText">
-				Contrast
-			</text>
-			<text name="wmiColorFilterBaseText">
-				Contrastbasiskleur
-			</text>
-			<slider label="R" name="wmiColorFilterBaseR"/>
-			<slider label="G" name="wmiColorFilterBaseG"/>
-			<slider label="B" name="wmiColorFilterBaseB"/>
-			<slider label="I" name="wmiColorFilterBaseI"/>
-		</panel>
-		<panel label="Nachtvisie" name="wmiNightVisionPanel">
-			<check_box label="Inschakelen" name="wmiNightVisionToggle"/>
-			<text name="wmiNightVisionBrightMultText">
-				Lichtversterking
-			</text>
-			<text name="wmiNightVisionNoiseSizeText">
-				Ruisgrootte
-			</text>
-			<text name="wmiNightVisionNoiseStrengthText">
-				Ruissterkte
-			</text>
-		</panel>
-		<panel label="Bloom" name="wmiBloomPanel">
-			<check_box label="Inschakelen" name="wmiBloomToggle"/>
-			<text name="wmiBloomExtractText">
-				Lichtsterkte extractie
-			</text>
-			<text name="wmiBloomSizeText">
-				Bloom-grootte
-			</text>
-			<text name="wmiBloomStrengthText">
-				Bloom-sterkte
-			</text>
-		</panel>
-		<panel label="Extra&apos;s" name="Extras">
-			<button label="LaadEffect" label_selected="LaadEffect" name="PPLoadEffect"/>
-			<button label="Effect opslaan" label_selected="Effect opslaan" name="PPSaveEffect"/>
-			<line_editor label="Effectnaam" name="PPEffectNameEditor"/>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_postcard.xml b/indra/newview/skins/default/xui/nl/floater_postcard.xml
deleted file mode 100644
index c2d092fdd46cc95a4533f3627e5e2cf7d233b1fd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_postcard.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Postcard" title="EMAIL FOTO">
-	<text name="to_label">
-		Ontvanger e-mail:
-	</text>
-	<text name="from_label">
-		Uw e-mail:
-	</text>
-	<text name="name_label">
-		Uw naam:
-	</text>
-	<text name="subject_label">
-		Onderwerp:
-	</text>
-	<line_editor label="Type hier uw onderwerp." name="subject_form"/>
-	<text name="msg_label">
-		Bericht:
-	</text>
-	<text_editor name="msg_form">
-		Type hier uw bericht.
-	</text_editor>
-	<text name="fine_print">
-		Indien uw ontvanger deelneemt aan SL, zult u een verwijzingsbonus ontvangen.
-	</text>
-	<button label="Annuleren" name="cancel_btn"/>
-	<button label="Verzenden" name="send_btn"/>
-	<string name="default_subject">
-		Ansichtkaart uit [SECOND_LIFE]
-	</string>
-	<string name="default_message">
-		Kom dit zien!
-	</string>
-	<string name="upload_message">
-		Verzenden...
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_preferences.xml b/indra/newview/skins/default/xui/nl/floater_preferences.xml
deleted file mode 100644
index 6fc8005fd24764bb622aa1fd724598d8618164b8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_preferences.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Preferences" title="VOORKEUREN">
-	<button label="OK" label_selected="OK" name="OK"/>
-	<button label="Annuleren" label_selected="Annuleren" name="Cancel"/>
-	<button label="Toepassen" label_selected="Toepassen" name="Apply"/>
-	<button label="Over" label_selected="Over" name="About..."/>
-	<button label="Help" label_selected="Help" name="Help"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_preview_animation.xml b/indra/newview/skins/default/xui/nl/floater_preview_animation.xml
deleted file mode 100644
index 0634452d967c10b0ed76aab6ec8c239ec80091a5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_preview_animation.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_anim">
-	<text name="desc txt">
-		Omschrijving:
-	</text>
-	<button label="Afspelen in wereld" label_selected="Stop" name="Anim play btn" tool_tip="Speel deze animatie af, zodat anderen hem kunnen zien." width="120"/>
-	<button label="Lokaal afspelen" label_selected="Stop" name="Anim audition btn" tool_tip="Speel deze animatie af, zodat alleen u hem kunt zien." width="110"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_preview_gesture.xml b/indra/newview/skins/default/xui/nl/floater_preview_gesture.xml
deleted file mode 100644
index c6b301841ae78600c537c470a6e9233898cc31db..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_preview_gesture.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="gesture_preview">
-	<string name="stop_txt">
-		Stop
-	</string>
-	<string name="preview_txt">
-		Voorbeeld
-	</string>
-	<string name="none_text">
-		-- Geen --
-	</string>
-	<text name="desc_label">
-		Omschrijving:
-	</text>
-	<text name="trigger_label">
-		Trigger:
-	</text>
-	<text name="replace_text" tool_tip="Vervang de startseinwoorden door deze woorden. Bijvoorbeeld, startsein &apos;hallo&apos; vervang door &apos;hoi&apos; zal de chat &apos;Ik wilde hallo zeggen&apos; veranderen in &apos;Ik wilde hoi zeggen&apos;, waarbij tevens het gebaar afgespeeld zal worden!">
-		Vervangen door:
-	</text>
-	<line_editor name="replace_editor" tool_tip="Vervang de startseinwoorden door deze woorden. Bijvoorbeeld, startsein &apos;hallo&apos; vervang door &apos;hoi&apos; zal de chat &apos;Ik wilde hallo zeggen&apos; veranderen in &apos;Ik wilde hoi zeggen&apos;, waarbij tevens het gebaar afgespeeld zal worden."/>
-	<text name="key_label">
-		Snelkoppeling toets:
-	</text>
-	<combo_box label="Geen" name="modifier_combo" left="136" width="56"/>
-	<combo_box label="Geen" name="key_combo" width="56"/>
-	<text name="library_label">
-		Bibliotheek:
-	</text>
-	<text name="steps_label">
-		Stappen:
-	</text>
-	<scroll_list name="library_list" width="94">
-		Animatie
-Geluid
-Chat
-Wacht
-	</scroll_list>
-	<button label="Toevoegen &gt;&gt;" name="add_btn" left="124" width="87"/>
-	<button label="Beweeg omhoog" name="up_btn" width="106" left_delta="-9"/>
-	<button label="Beweeg omlaag" name="down_btn" width="106"/>
-	<button label="Verwijderen" name="delete_btn" width="84" left_delta="9"/>
-	<scroll_list left="226" name="step_list" width="205" />
-	<text name="help_label">
-		Alle stappen gebeuren tegelijkertijd, 
-tenzij u wachtstappen toevoegt.
-	</text>
-	<text left="230" name="options_text" width="200" />
-	<radio_group name="animation_trigger_type">
-		<radio_item name="start" label="Start" />
-		<radio_item name="stop" label="Stop" />
-	</radio_group>
-	<check_box label="tot alle animaties zijn afgelopen" name="wait_anim_check"/>
-	<check_box label="tijd in seconden" name="wait_time_check"/>
-	<check_box label="Actief" name="active_check" tool_tip="Actieve gebaren kunnen worden gestart door het zeggen van hun startseinwoorden of door het indrukken van hun sneltoetsen. Gebaren worden gewoonlijk inactief wanneer er een conflict is in de koppeling van de sneltoetsen"/>
-	<button label="Voorbeeld" name="preview_btn"/>
-	<button label="Opslaan" name="save_btn"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_preview_notecard.xml b/indra/newview/skins/default/xui/nl/floater_preview_notecard.xml
deleted file mode 100644
index f97d1fe6ba2ff33ba4327f500654e8913419d512..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_preview_notecard.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview notecard" title="NEUS">
-	<button label="Opslaan" label_selected="Opslaan" name="Save"/>
-	<text name="desc txt">
-		Omschrijving:
-	</text>
-	<text_editor name="Notecard Editor">
-		Laden…
-	</text_editor>
-	<string name="no_object">
-		Kan object dat deze notitie bevat niet vinden.
-	</string>
-	<string name="not_allowed">
-		U heeft geen toestemming om deze notitie te bekijken
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_preview_sound.xml b/indra/newview/skins/default/xui/nl/floater_preview_sound.xml
deleted file mode 100644
index f168f3ed3233749a8f0a143beada320b2b262469..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_preview_sound.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_sound">
-	<text name="desc txt">
-		Omschrijving:
-	</text>
-	<button label="Lokaal afspelen" label_selected="Lokaal afspelen" name="Sound audition btn" tool_tip="Speel dit geluid of zodat alleen u het kunt horen."/>
-	<button label="In wereld afspelen" label_selected="In wereld afspelen" name="Sound play btn" tool_tip="Speel dit geluid of zodat anderen het kunnen horen."/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_preview_texture.xml b/indra/newview/skins/default/xui/nl/floater_preview_texture.xml
deleted file mode 100644
index c4a06b7b6f7e44547ef0144ff3ce2ac4099d2cd8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_preview_texture.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview_texture">
-	<text name="desc txt">
-		Omschrijving:
-	</text>
-	<text name="dimensions">
-		Afmetingen: [WIDTH] x [HEIGHT]
-	</text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_region_info.xml b/indra/newview/skins/default/xui/nl/floater_region_info.xml
deleted file mode 100644
index 0a98da3b4e0a9e407125788edfcfc8208a48a653..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_region_info.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="regioninfo" title="REGIO/ESTATE"/>
diff --git a/indra/newview/skins/default/xui/nl/floater_report_abuse.xml b/indra/newview/skins/default/xui/nl/floater_report_abuse.xml
deleted file mode 100644
index a50773c2b3ad141cbef095663c59e1a8b58ed4b7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_report_abuse.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_report_abuse" title="MISBRUIK RAPPORTEREN">
-	<floater.string name="Screenshot">
-		Schermafbeelding
-	</floater.string>
-	<check_box label="Gebruik deze schermafbeelding" name="screen_check"/>
-	<text name="reporter_title" width="110">
-		Rapporteur:
-	</text>
-	<text left_delta="70" name="reporter_field">
-		Loremipsum Dolorsitamut Longnamez
-	</text>
-	<text name="sim_title">
-		Regio:
-	</text>
-	<text left_delta="70" name="sim_field">
-		Regionaam
-	</text>
-	<text name="pos_title">
-		Positie:
-	</text>
-	<text left_delta="70" name="pos_field">
-		{128.1, 128.1, 15.4}
-	</text>
-	<text name="select_object_label">
-		Klik de knop, vervolgens het misbruik voorwerp:
-	</text>
-	<button label="" label_selected="" name="pick_btn" tool_tip="Objectkiezer - Identificeer een object als het onderwerp van dit rapport"/>
-	<text name="object_name_label">
-		voorwerp:
-	</text>
-	<text name="object_name" width="120">
-		Consetetur Sadipscing
-	</text>
-	<text name="owner_name_label">
-		Eigenaar:
-	</text>
-	<text name="owner_name">
-		Hendrerit Vulputate Kamawashi Longname
-	</text>
-	<combo_box name="category_combo" tool_tip="Categorie -- selecteer de categorie die dit rapport het best beschrijft">
-		<combo_box.item label="Selecteer categorie" name="Select_category"/>
-		<combo_box.item label="Leeftijd &gt; Leeftijd spelen" name="Age__Age_play"/>
-		<combo_box.item label="Leeftijd &gt; Volwassen inwoner in Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/>
-		<combo_box.item label="Leeftijd &gt; Minderjarige inwoner buiten Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
-		<combo_box.item label="Aanval &gt; Gevechtszandbak / onveilig gebied" name="Assault__Combat_sandbox___unsafe_area"/>
-		<combo_box.item label="Aanval &gt; Veilig gebied" name="Assault__Safe_area"/>
-		<combo_box.item label="Aanval &gt; Zandbak voor het testen van wapens" name="Assault__Weapons_testing_sandbox"/>
-		<combo_box.item label="Handel &gt; Product of dienst is niet geleverd" name="Commerce__Failure_to_deliver_product_or_service"/>
-		<combo_box.item label="Openbaring &gt; Echte wereld informatie" name="Disclosure__Real_world_information"/>
-		<combo_box.item label="Openbaring &gt; Op afstand chat afluisteren" name="Disclosure__Remotely_monitoring chat"/>
-		<combo_box.item label="Openbaring &gt; Second Life informatie/chat/IMs" name="Disclosure__Second_Life_information_chat_IMs"/>
-		<combo_box.item label="Vredebreuk &gt; Oneerlijk gebruik van regiomiddelen" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
-		<combo_box.item label="Vredebreuk &gt; Excessieve gescripte objecten" name="Disturbing_the_peace__Excessive_scripted_objects"/>
-		<combo_box.item label="Vredebreuk &gt; Objecten laten rondslingeren" name="Disturbing_the_peace__Object_littering"/>
-		<combo_box.item label="Vredebreuk &gt; Herhaalde spam" name="Disturbing_the_peace__Repetitive_spam"/>
-		<combo_box.item label="Vredebreuk &gt; Ongewenste reclame-spam" name="Disturbing_the_peace__Unwanted_advert_spam"/>
-		<combo_box.item label="Fraude &gt; L$" name="Fraud__L$"/>
-		<combo_box.item label="Fraude &gt; Land" name="Fraud__Land"/>
-		<combo_box.item label="Fraude &gt; Piramideschema of kettingbrief" name="Fraud__Pyramid_scheme_or_chain_letter"/>
-		<combo_box.item label="Fraude &gt; US$" name="Fraud__US$"/>
-		<combo_box.item label="Intimidatie &gt; Reclameverzamelingen / visuele spam" name="Harassment__Advert_farms___visual_spam"/>
-		<combo_box.item label="Intimidatie &gt; Individuen of groepen in diskrediet brengen" name="Harassment__Defaming_individuals_or_groups"/>
-		<combo_box.item label="Intimidatie &gt; Beweging verhinderen" name="Harassment__Impeding_movement"/>
-		<combo_box.item label="Intimidatie &gt; Seksuele intimidatie" name="Harassment__Sexual_harassment"/>
-		<combo_box.item label="Intimidatie &gt; Anderen uitnodigen/aanzetten tot het schenden van de ToS" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
-		<combo_box.item label="Intimidatie &gt; Verbaal misbruik" name="Harassment__Verbal_abuse"/>
-		<combo_box.item label="Onfatsoenlijkheid &gt; Globaal beledigende inhoud of gedrag" name="Indecency__Broadly_offensive_content_or_conduct"/>
-		<combo_box.item label="Onfatsoenlijkheid &gt; Ongepaste avatar naam" name="Indecency__Inappropriate_avatar_name"/>
-		<combo_box.item label="Onfatsoenlijkheid &gt; Ongepaste inhoud of gedrag in een PG regio" name="Indecency__Mature_content_in_PG_region"/>
-		<combo_box.item label="Onfatsoenlijkheid &gt; Ongepaste inhoud of gedrag in een Mature regio" name="Indecency__Inappropriate_content_in_Mature_region"/>
-		<combo_box.item label="Inbreuk op intellectueel eigendom &gt; Verwijderen van inhoud" name="Intellectual_property_infringement_Content_Removal"/>
-		<combo_box.item label="Inbreuk op intellectueel eigendom &gt; CopyBot of misbruik van permissies" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
-		<combo_box.item label="Intolerantie" name="Intolerance"/>
-		<combo_box.item label="Land &gt; Misbruik van zandbakmiddelen" name="Land__Abuse_of_sandbox_resources"/>
-		<combo_box.item label="Land &gt; Indringing &gt; Objecten/texturen" name="Land__Encroachment__Objects_textures"/>
-		<combo_box.item label="Land &gt; Indringing &gt; Particles" name="Land__Encroachment__Particles"/>
-		<combo_box.item label="Land &gt; Indringing &gt; Bomen/planten" name="Land__Encroachment__Trees_plants"/>
-		<combo_box.item label="Weddenschappen/gokken" name="Wagering_gambling"/>
-		<combo_box.item label="Anders" name="Other"/>
-	</combo_box>
-	<text name="abuser_name_title">
-		Misbruikernaam:
-	</text>
-	<button label="Kies inwoner" label_selected="" name="select_abuser" tool_tip="Selecteer de naam van de misbruiker uit een lijst"/>
-	<text name="abuser_name_title2">
-		Locatie van misbruik:
-	</text>
-	<text name="sum_title">
-		Samenvatting:
-	</text>
-	<text name="dscr_title">
-		Details:
-	</text>
-	<text name="bug_aviso">
-		Wees zo specifiek mogelijk
-	</text>
-	<text name="incomplete_title">
-		Let Op: Onvolledige verslagen zullen niet worden onderzocht
-	</text>
-	<button label="Misbruik rapporteren" label_selected="Misbruik rapporteren" name="send_btn"/>
-	<button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_script_debug.xml b/indra/newview/skins/default/xui/nl/floater_script_debug.xml
deleted file mode 100644
index 15e57f30d66bfb14833577cbe96b5320a8e0a311..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_script_debug.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<multi_floater name="script debug floater" title="Script waarschuwing/fout">
-	<tab_container name="Preview Tabs">
-		<floater label="Script" name="all_scripts" title="[ALL SCRIPTS]"/>
-	</tab_container>
-</multi_floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_script_preview.xml b/indra/newview/skins/default/xui/nl/floater_script_preview.xml
deleted file mode 100644
index bd57e27b770d90f6ef16cd5418699b1f81d5937d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_script_preview.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="preview lsl text" title="SCRIPT: ROTATIESCRIPT">
-	<text name="desc txt">
-		Omschrijving:
-	</text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_script_queue.xml b/indra/newview/skins/default/xui/nl/floater_script_queue.xml
deleted file mode 100644
index f79ad8faf3cece6aa2d17b409d0d12b75191cc7c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_script_queue.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="queue" title="VOORTGANG OPNIEUW INSTELLEN">
-	<button label="Sluiten" label_selected="Sluiten" name="close"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_script_search.xml b/indra/newview/skins/default/xui/nl/floater_script_search.xml
deleted file mode 100644
index cf502c6f4d02b9f1dbff03d633e60cac2f2afb63..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_script_search.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="script search" title="SCRIPT ZOEKEN">
-	<check_box label="Niet hoofdlettergevoelig" name="case_text"/>
-	<button label="Zoeken" label_selected="Zoeken" name="search_btn" left="4"/>
-	<button label="Vervangen" label_selected="Vervangen" name="replace_btn" left="100"/>
-	<button label="Alles vervangen" label_selected="Alles vervangen" name="replace_all_btn" width="100" left="196"/>
-	<text name="txt">
-		Zoeken
-	</text>
-	<text name="txt2" width="130">
-		Vervangen
-	</text>
-	<line_editor left="65" name="search_text" width="230" />
-	<line_editor left="65" name="replace_text" width="230" />
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_select_key.xml b/indra/newview/skins/default/xui/nl/floater_select_key.xml
deleted file mode 100644
index c8daa10ab64d86c5f1280f9ad5fcc99ae3541322..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_select_key.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container" title="">
-	<button label="Annuleren" label_selected="Annuleren" name="Cancel"/>
-	<text name="Save item as:" left="12" width="220">
-		Druk op een toets om die te selecteren
-	</text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_sell_land.xml b/indra/newview/skins/default/xui/nl/floater_sell_land.xml
deleted file mode 100644
index 468a383cfc0060c76ac4e6bd247de8831114bf3e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_sell_land.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="sell land" title="VERKOOP LAND">
-    <scroll_container name="profile_scroll">
-    <panel name="scroll_content_panel">
-	<text name="info_parcel_label">
-		Perceel:
-	</text>
-	<text name="info_parcel">
-		PERCEEL NAAM
-	</text>
-	<text name="info_size_label">
-		Grootte:
-	</text>
-	<text name="info_size">
-		[AREA] m²
-	</text>
-	<text height="28" name="info_action" bottom_delta="-57">
-		Om dit perceel te
-verkopen:
-	</text>
-	<icon bottom_delta="-86" name="step_price" />
-	<text name="price_label">
-		Stel een prijs in:
-	</text>
-	<text name="price_text">
-		Kies een geschikte prijs voor dit land.
-	</text>
-	<text name="price_ld">
-		L$
-	</text>
-	<text name="price_per_m">
-		(L$[PER_METER] per vierkante meter)
-	</text>
-	<text name="sell_to_label">
-		Verkoop het land aan:
-	</text>
-	<text name="sell_to_text">
-		Kies of u aan iedereen wil verkopen of een specifieke koper.
-	</text>
-	<combo_box name="sell_to">
-		<combo_box.item name="--selectone--" label="selecteer een --"/>
-		<combo_box.item name="Anyone" label="Iedereen"/>
-		<combo_box.item name="Specificuser:" label="Specifieke gebruiker:"/>
-	</combo_box>
-	<button label="Selecteren..." name="sell_to_select_agent"/>
-	<text name="sell_objects_label">
-		Verkoop de objecten samen met het land?
-	</text>
-	<text name="sell_objects_text">
-		Overdraagbare objecten die eigendom zijn van de landeigenaar
-zullen van eigenaar veranderen.
-	</text>
-	<radio_group name="sell_objects" bottom_delta="-58">
-		<radio_item name="no" label="Nee, behoud het eigendom van objecten" />
-		<radio_item name="yes" label="Ja, verkoop objecten met het land" />
-	</radio_group>
-	<button label="Toon objecten" name="show_objects"/>
-	<text name="nag_message_label">
-		ONTHOUD: Alle verkopen zijn definitief.
-	</text>
-	<button label="Zet het land te koop" name="sell_btn"/>
-	<button label="Annuleren" name="cancel_btn"/>
-    </panel>
-    </scroll_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_settings_debug.xml b/indra/newview/skins/default/xui/nl/floater_settings_debug.xml
deleted file mode 100644
index 4d95f0a828113ef16fb8e1d815e47a6269cad8de..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_settings_debug.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="settings_debug" title="DEBUG INSTELLINGEN">
-	<combo_box name="boolean_combo">
-		<combo_box.item name="TRUE" label="TRUE"/>
-		<combo_box.item name="FALSE" label="FALSE"/>
-	</combo_box>
-	<color_swatch label="Kleur" name="color_swatch"/>
-	<spinner label="x" name="val_spinner_1"/>
-	<spinner label="x" name="val_spinner_2"/>
-	<spinner label="x" name="val_spinner_3"/>
-	<spinner label="x" name="val_spinner_4"/>
-	<button label="Opnieuw instellen naar standaard" name="default_btn" width="210"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_snapshot.xml b/indra/newview/skins/default/xui/nl/floater_snapshot.xml
deleted file mode 100644
index 251f3690da06c6935321caa1c42625c725acdb00..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_snapshot.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Snapshot" title="FOTOVOORBEELD">
-	<text name="type_label">
-		Fotobestemming
-	</text>
-	<radio_group label="Fototype" name="snapshot_type_radio">
-		<radio_item name="postcard" label="Verzend via e-mail" />
-		<radio_item name="texture" label="Opslaan in uw inventaris (L$[AMOUNT])" />
-		<radio_item name="local" label="Opslaan op uw harde schijf" />
-	</radio_group>
-	<text name="file_size_label">
-		Bestandsgrootte: [SIZE] KB
-	</text>
-	<button label="Ververs foto" name="new_snapshot_btn"/>
-	<button label="Verzenden" name="send_btn"/>
-	<button label="Opslaan (L$[AMOUNT])" name="upload_btn"/>
-	<flyout_button label="Opslaan" name="save_btn" tool_tip="Afbeelding in een bestand opslaan">
-		<flyout_button_item name="save_item" label="Opslaan"/>
-		<flyout_button_item name="saveas_item" label="Opslaan als..."/>
-	</flyout_button>
-	<button label="Annuleren" name="discard_btn"/>
-	<button label="Meer &gt;&gt;" name="more_btn" tool_tip="Geavanceerde opties"/>
-	<button label="&lt;&lt; Minder" name="less_btn" tool_tip="Geavanceerde opties"/>
-	<text name="type_label2">
-		Grootte
-	</text>
-	<text name="format_label">
-		Formaat
-	</text>
-	<combo_box label="Resolutie" name="postcard_size_combo">
-		<combo_box.item name="CurrentWindow" label="Huidig venster"/>
-		<combo_box.item name="640x480" label="640x480"/>
-		<combo_box.item name="800x600" label="800x600"/>
-		<combo_box.item name="1024x768" label="1024x768"/>
-		<combo_box.item name="Custom" label="Aangepast"/>
-	</combo_box>
-	<combo_box label="Resolutie" name="texture_size_combo">
-		<combo_box.item name="CurrentWindow" label="Huidig venster"/>
-		<combo_box.item name="Small(128x128)" label="Klein (128x128)"/>
-		<combo_box.item name="Medium(256x256)" label="Middel (256x256)"/>
-		<combo_box.item name="Large(512x512)" label="Groot (512x512)"/>
-		<combo_box.item name="Custom" label="Aangepast"/>
-	</combo_box>
-	<combo_box label="Resolutie" name="local_size_combo">
-		<combo_box.item name="CurrentWindow" label="Huidig venster"/>
-		<combo_box.item name="320x240" label="320x240"/>
-		<combo_box.item name="640x480" label="640x480"/>
-		<combo_box.item name="800x600" label="800x600"/>
-		<combo_box.item name="1024x768" label="1024x768"/>
-		<combo_box.item name="1280x1024" label="1280x1024"/>
-		<combo_box.item name="1600x1200" label="1600x1200"/>
-		<combo_box.item name="Custom" label="Aangepast"/>
-	</combo_box>
-	<combo_box label="Formaat" name="local_format_combo">
-		<combo_box.item name="PNG" label="PNG"/>
-		<combo_box.item name="JPEG" label="JPEG"/>
-		<combo_box.item name="BMP" label="BMP"/>
-	</combo_box>
-	<spinner label="Breedte" name="snapshot_width" label_width="48" width="100"/>
-	<spinner label="Hoogte" name="snapshot_height" label_width="41" width="95" left="114"/>
-	<check_box label="Beperk verhoudingen" name="keep_aspect_check"/>
-	<slider label="Afbeeldingkwaliteit" name="image_quality_slider"/>
-	<text name="layer_type_label" width="100">
-		Vastleggen:
-	</text>
-	<combo_box label="Afbeeldingslagen" name="layer_types" width="130" left="76">
-		<combo_box.item name="Colors" label="Kleuren"/>
-		<combo_box.item name="Depth" label="Diepte"/>
-		<combo_box.item name="ObjectMattes" label="Object matheid"/>
-	</combo_box>
-	<check_box label="Toon interface in foto" name="ui_check"/>
-	<check_box label="Toon HUD objecten in foto" name="hud_check"/>
-	<check_box label="Open houden na opslaan" name="keep_open_check"/>
-	<check_box label="Frame bevriezen" name="freeze_frame_check"/>
-	<check_box label="Automatisch verversen" name="auto_snapshot_check"/>
-	<string name="unknown">
-		onbekend
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_sound_preview.xml b/indra/newview/skins/default/xui/nl/floater_sound_preview.xml
deleted file mode 100644
index 13cb832d574369dd0bca3f56b1debef9139a390f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_sound_preview.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Sound Preview" title="SOUND.WAV">
-	<text name="name_label">
-		Naam:
-	</text>
-	<text name="description_label">
-		Omschrijving:
-	</text>
-	<button label="Annuleren" label_selected="Annuleren" name="cancel_btn"/>
-	<button label="Upload (L$[AMOUNT])" label_selected="Upload (L$[AMOUNT])" name="ok_btn"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_stats.xml b/indra/newview/skins/default/xui/nl/floater_stats.xml
deleted file mode 100644
index 0db3f76735a3938413ea440d30bc85486e8bf942..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_stats.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Statistics" title="STATISTIEKEN">
-	<scroll_container name="statistics_scroll">
-		<container_view name="statistics_view">
-			<stat_view label="Basis" name="basic">
-				<stat_bar label="FPS" name="fps"/>
-				<stat_bar label="Bandbreedte" name="bandwidth"/>
-				<stat_bar label="Pakket Verlies" name="packet_loss"/>
-				<stat_bar label="Ping Sim" name="ping"/>
-			</stat_view>
-			<stat_view label="Geavanceerd" name="advanced">
-				<stat_view label="Weergeven" name="render">
-					<stat_bar label="KTris Tekenen" name="ktrisframe"/>
-					<stat_bar label="KTris Tekenen" name="ktrissec"/>
-					<stat_bar label="Totaal Voorwerpen" name="objs"/>
-					<stat_bar label="Nieuwe Voorwerpen" name="newobjs"/>
-				</stat_view>
-				<stat_view label="Textuur" name="texture">
-					<stat_bar label="Count" name="numimagesstat"/>
-					<stat_bar label="Raw Count" name="numrawimagesstat"/>
-					<stat_bar label="GL Mem" name="gltexmemstat"/>
-					<stat_bar label="Formatted Mem" name="formattedmemstat"/>
-					<stat_bar label="Raw Mem" name="rawmemstat"/>
-					<stat_bar label="Bound Mem" name="glboundmemstat"/>
-				</stat_view>
-				<stat_view label="Netwerk" name="network">
-					<stat_bar label="Pakketten In" name="packetsinstat"/>
-					<stat_bar label="Pakketten Uit" name="packetsoutstat"/>
-					<stat_bar label="Voorwerpen" name="objectkbitstat"/>
-					<stat_bar label="Textuur" name="texturekbitstat"/>
-					<stat_bar label="Bezit" name="assetkbitstat"/>
-					<stat_bar label="Lagen" name="layerskbitstat"/>
-					<stat_bar label="Daadwerkelijk In" name="actualinkbitstat"/>
-					<stat_bar label="Daadwerkelijk Out" name="actualoutkbitstat"/>
-					<stat_bar label="VFS Pending Ops" name="vfspendingoperations"/>
-				</stat_view>
-			</stat_view>
-			<stat_view label="Simulator" name="sim">
-				<stat_bar label="Tijd Dilatatie" name="simtimedilation"/>
-				<stat_bar label="Sim FPS" name="simfps"/>
-				<stat_bar label="Physics FPS" name="simphysicsfps"/>
-				<stat_view label="Physics Details" name="physicsdetail">
-					<stat_bar label="Pinned Objects" name="physicspinnedtasks"/>
-					<stat_bar label="Low LOD Objects" name="physicslodtasks"/>
-					<stat_bar label="Memory Allocated" name="physicsmemoryallocated"/>
-					<stat_bar label="Agent Updates/Sec" name="simagentups"/>
-					<stat_bar label="Main Agents" name="simmainagents"/>
-					<stat_bar label="Child Agents" name="simchildagents"/>
-					<stat_bar label="Voorwerpen" name="simobjects"/>
-					<stat_bar label="Actieve Voorwerpen" name="simactiveobjects"/>
-					<stat_bar label="Actieve Scripts" name="simactivescripts"/>
-					<stat_bar label="Actieve Evenementen" name="simscripteps"/>
-					<stat_bar label="Pakketten In" name="siminpps"/>
-					<stat_bar label="Pakketten Uit" name="simoutpps"/>
-					<stat_bar label="Wachtende Downloads" name="simpendingdownloads"/>
-					<stat_bar label="Wachtende Uploads" name="simpendinguploads"/>
-					<stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/>
-				</stat_view>
-				<stat_view label="Tijd (ms)" name="simperf">
-					<stat_bar label="Totale Frame Tijd" name="simframemsec"/>
-					<stat_bar label="Net Time" name="simnetmsec"/>
-					<stat_bar label="Physics Time" name="simsimphysicsmsec"/>
-					<stat_bar label="Simulatie Tijd" name="simsimothermsec"/>
-					<stat_bar label="Agent Tijd" name="simagentmsec"/>
-					<stat_bar label="Plaatjes Tijd" name="simimagesmsec"/>
-					<stat_bar label="Script Tijd" name="simscriptmsec"/>
-				</stat_view>
-			</stat_view>
-		</container_view>
-	</scroll_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_telehub.xml b/indra/newview/skins/default/xui/nl/floater_telehub.xml
deleted file mode 100644
index 7b745d967c931dfcdbff25293209cdf490ebdf2b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_telehub.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="telehub" title="TELEHUB" width="292">
-	<text name="status_text_connected">
-		Telehub verbonden met object [OBJECT]
-	</text>
-	<text name="status_text_not_connected">
-		Geen telehub verbonden.
-	</text>
-	<text name="help_text_connected">
-		Om te verwijderen, klik Verbinding verbreken
-	</text>
-	<text name="help_text_not_connected">
-		Selecteer objecten klik Verbind telehub
-	</text>
-	<button label="Verbind telehub" name="connect_btn"/>
-	<button label="Verbinding verbreken" name="disconnect_btn" width="128"/>
-	<text name="spawn_points_text">
-		Spawnpunten (posities, niet objecten):
-	</text>
-	<scroll_list bottom_delta="-44" draw_border="true" follows="left|top"
-	     height="40" left="10" multi_select="false" name="spawn_points_list"
-	     width="230" />
-
-	<button label="Spawn toevoegen" name="add_spawn_point_btn"/>
-	<button label="Verwijder Spawn" name="remove_spawn_point_btn"/>
-	<text name="spawn_point_help" width="290">
-		Selecteer object en klik Toevoegen om positie 
-te specificeren. U kunt het object daarna verplaatsen 
-of verwijderen. Posities zijn relatief ten opzichte 
-van het middelpunt van de telehub. Selecteer een 
-item in de lijst om de positie in de wereld te tonen.
-	</text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/nl/floater_texture_ctrl.xml
deleted file mode 100644
index c8caa8caf4928c2b9fa6abc6e5bcc58ef93813c9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_texture_ctrl.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="texture picker" title="KIES: TEXTUUR">
-	<string name="choose_picture">
-		Klik om een afbeelding te kiezen
-	</string>
-	<text name="Multiple">
-		Meerdere
-	</text>
-	<text name="unknown">
-		Afmetingen: [DIMENSIONS]
-	</text>
-	<button label="Standaard" label_selected="Standaard" name="Default" width="70"/>
-	<button label="Geen" label_selected="Geen" name="None" left="80"/>
-	<button label="Blanco" label_selected="Blanco" name="Blank"/>
-	<check_box label="Toon mappen" name="show_folders_check"/>
-	<search_editor label="Type hier om te zoeken" name="inventory search editor"/>
-	<check_box label="Direct toepassen" name="apply_immediate_check"/>
-	<button label="Annuleren" label_selected="Annuleren" name="Cancel"/>
-	<button label="Selecteren" label_selected="Selecteren" name="Select"/>
-	<string name="pick title">
-		Kies:
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_tools.xml b/indra/newview/skins/default/xui/nl/floater_tools.xml
deleted file mode 100644
index 98339383e4b58798424d01b7da278f758ac3df9a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_tools.xml
+++ /dev/null
@@ -1,567 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="toolbox floater" title="" short_title="BOUWEN" height="592">
-	<button label="" label_selected="" name="button focus" tool_tip="Focus"/>
-	<button label="" label_selected="" name="button move" tool_tip="Verplaats"/>
-	<button label="" label_selected="" name="button edit" tool_tip="Bewerk"/>
-	<button label="" label_selected="" name="button create" tool_tip="Maak"/>
-	<button label="" label_selected="" name="button land" tool_tip="Land"/>
-	<radio_group name="focus_radio_group">
-		<radio_item label="Zoom" name="radio zoom"/>
-		<radio_item label="Roteren (Ctrl)" name="radio orbit"/>
-		<radio_item label="Verplaatsen (Ctrl-Shift)" name="radio pan"/>
-	</radio_group>
-	<radio_group name="move_radio_group">
-		<radio_item label="Verplaatsen" name="radio move"/>
-		<radio_item label="Optillen (Ctrl)" name="radio lift"/>
-		<radio_item label="Roteren (Ctrl-Shift)" name="radio spin"/>
-	</radio_group>
-	<radio_group name="edit_radio_group">
-		<radio_item label="Positie" name="radio position"/>
-		<radio_item label="Roteren (Ctrl)" name="radio rotate"/>
-		<radio_item label="Uitrekken (Ctrl-Shift)" name="radio stretch"/>
-		<radio_item label="Selecteer textuur" name="radio select face"/>
-	</radio_group>
-	<check_box label="Bewerk gekoppelde onderdelen" name="checkbox edit linked parts"/>
-	<text name="text ruler mode">
-		Liniaal:
-	</text>
-	<combo_box name="combobox grid mode">
-		<combo_box.item name="World" label="Wereld"
-		/>
-		<combo_box.item name="Local" label="Lokaal"
-		/>
-		<combo_box.item name="Reference" label="Referentie"
-		/>
-	</combo_box>
-	<check_box left="136" name="checkbox uniform"/>
-	<text name="checkbox uniform label">
-		Beide zijden uitrekken
-	</text>
-	<check_box left="136" label="Texturen uitrekken" name="checkbox stretch textures"/>
-	<check_box left="136" label="Gebruik grid" name="checkbox snap to grid"/>
-	<button label="Opties..." label_selected="Opties..." name="Options..." height="18" bottom_delta="-15"/>
-	<text name="text status" width="280">
-		Sleep om te verplaatsen, Shift-slepen om te kopiëren
-	</text>
-	<button label="" label_selected="" name="ToolCube" tool_tip="Kubus"/>
-	<button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/>
-	<button label="" label_selected="" name="ToolPyramid" tool_tip="Piramide"/>
-	<button label="" label_selected="" name="ToolTetrahedron" tool_tip="Tetrahedron"/>
-	<button label="" label_selected="" name="ToolCylinder" tool_tip="Cilinder"/>
-	<button label="" label_selected="" name="ToolHemiCylinder" tool_tip="Halve cilinder"/>
-	<button label="" label_selected="" name="ToolCone" tool_tip="Kegel"/>
-	<button label="" label_selected="" name="ToolHemiCone" tool_tip="Halve kegel"/>
-	<button label="" label_selected="" name="ToolSphere" tool_tip="Bol"/>
-	<button label="" label_selected="" name="ToolHemiSphere" tool_tip="Halve bol"/>
-	<button label="" label_selected="" name="ToolTorus" tool_tip="Torus"/>
-	<button label="" label_selected="" name="ToolTube" tool_tip="Buis"/>
-	<button label="" label_selected="" name="ToolRing" tool_tip="Ring"/>
-	<button label="" label_selected="" name="ToolTree" tool_tip="Boom"/>
-	<button label="" label_selected="" name="ToolGrass" tool_tip="Gras"/>
-	<check_box label="Behoud geselecteerd" name="checkbox sticky"/>
-	<check_box label="Kopiëer Selectie" name="checkbox copy selection"/>
-	<check_box label="Middelpunt" name="checkbox copy centers"/>
-	<check_box label="Roteer" name="checkbox copy rotates"/>
-	<radio_group name="land_radio_group">
-		<radio_item label="Selecteer land" name="radio select land"/>
-		<radio_item label="Vlak maken" name="radio flatten"/>
-		<radio_item label="Verhogen" name="radio raise"/>
-		<radio_item label="Verlagen" name="radio lower"/>
-		<radio_item label="Egaliseren" name="radio smooth"/>
-		<radio_item label="Opruwen" name="radio noise"/>
-		<radio_item label="Herstellen" name="radio revert"/>
-	</radio_group>
-	<button label="Toepassen" label_selected="Toepassen" name="button apply to selection" tool_tip="Wijzig geselecteerd land"/>
-	<text name="Bulldozer:">
-		Bulldozer:
-	</text>
-	<text name="Dozer Size:">
-		Grootte
-	</text>
-	<text name="Strength:">
-		Sterkte
-	</text>
-	<text name="obj_count" top_pad="20">
-		Geselecteerde objecten: [COUNT]
-	</text>
-	<text name="prim_count">
-		primitieven: [COUNT]
-	</text>
-	<tab_container name="Object Info Tabs" tab_max_width="62" tab_min_width="30" top="185">
-		<panel label="Algemeen" name="General">
-			<text name="Name:">
-				Naam:
-			</text>
-			<text name="Description:">
-				Omschrijving:
-			</text>
-			<text name="Creator:">
-				Maker:
-			</text>
-			<button label="Profiel..." label_selected="Profiel..." name="button creator profile"/>
-			<text name="Owner:">
-				Eigenaar:
-			</text>
-			<button label="Profiel..." label_selected="Profiel..." name="button owner profile"/>
-			<text name="Group:">
-				Groep:
-			</text>
-			<text name="Group Name Proxy">
-				De Lindens
-			</text>
-			<button label="Instellen..." label_selected="Instellen..." name="button set group"/>
-			<text name="Permissions:">
-				Permissies:
-			</text>
-
-			<check_box label="Deel met groep" name="checkbox share with group" tool_tip="Alle leden van de ingestelde groep toestaan om te delen en uw permissies voor dit object te gebruiken. U moet &apos;Overdragen&apos; om rolbeperkingen in te schakelen."/>
-			<string name="text deed continued">
-				Overdragen...
-			</string>
-			<string name="text deed">
-				Overdragen
-			</string>
-			<button label="Overdragen..." label_selected="Overdragen..." name="button deed" tool_tip="Groepgedeelde objecten kunnen door een groepofficier worden overgedragen"/>
-			<check_box label="Iedereen mag verplaatsen" name="checkbox allow everyone move"/>
-			<check_box label="Iedereen mag kopiëren" name="checkbox allow everyone copy"/>
-			<check_box label="Toon in zoeken" name="search_check" tool_tip="Laat mensen dit object zien in zoekresultaten"/>
-			<check_box label="Te koop" name="checkbox for sale"/>
-			<text name="Cost">
-				Prijs: L$
-			</text>
-			<combo_box name="sale type">
-				<combo_box.item label="Kopie" name="Copy"/>
-				<combo_box.item label="Inhoud" name="Contents"/>
-				<combo_box.item label="Origineel" name="Original"/>
-			</combo_box>
-
-			<text name="label click action">
-				Wanneer links-geklikt:
-			</text>
-			<combo_box name="clickaction">
-				<combo_box.item name="Touch/grab(default)" label="Aanraken/pakken (standaard)"
-				/>
-				<combo_box.item name="Sitonobject" label="Zit op object"
-				/>
-				<combo_box.item name="Buyobject" label="Koop object"
-				/>
-				<combo_box.item name="Payobject" label="Betaal object"
-				/>
-				<combo_box.item name="Open" label="Open"
-				/>
-				<combo_box.item name="Play" label="Perceelmedia afspelen"
-				/>
-				<combo_box.item name="Opemmedia" label="Perceelmedia openen"
-				/>
-			</combo_box>
-		<panel name="perms_build">
-			<text name="perm_modify">
-				U kunt dit object wijzigen
-			</text>
-			<text name="B:">
-				B:
-			</text>
-			<text name="O:">
-				O:
-			</text>
-			<text name="G:">
-				G:
-			</text>
-			<text name="E:">
-				E:
-			</text>
-			<text name="N:">
-				N:
-			</text>
-			<text name="F:">
-				F:
-			</text>
-			<text name="Next owner can:">
-				Volgende eigenaar kan:
-			</text>
-			<check_box label="Wijzigen" name="checkbox next owner can modify"/>
-			<check_box label="Kopiëren" name="checkbox next owner can copy" left_delta="80"/>
-			<check_box name="checkbox next owner can transfer" left_delta="67"/>
-		</panel>
-			<string name="text modify info 1">
-				U kunt dit object wijzigen
-			</string>
-			<string name="text modify info 2">
-				U kunt deze objecten wijzigen
-			</string>
-			<string name="text modify info 3">
-				U kunt dit object niet wijzigen
-			</string>
-			<string name="text modify info 4">
-				U kunt deze objecten niet wijzigen
-			</string>
-			<string name="text modify warning">
-				U moet het hele object selecteren om permissies in te stellen
-			</string>
-			<string name="Cost Default">
-				Prijs: L$
-			</string>
-			<string name="Cost Total">
-				Totale Prijs: L$
-			</string>
-			<string name="Cost Per Unit">
-				Prijs per: L$
-			</string>
-			<string name="Cost Mixed">
-				Gemengde prijs
-			</string>
-			<string name="Sale Mixed">
-				Gemengde verkoop
-			</string>
-		</panel>
-		<panel label="Object" name="Object">
-			<text name="select_single">
-				Selecteer slechts één primitief om parameters te bewerken
-			</text>
-			<text name="edit_object">
-				Bewerk object parameters:
-			</text>
-			<check_box label="Vergrendeld" name="checkbox locked" tool_tip="Voorkomt het verplaatsen of verwijderen van objecten. Regelmatig handig tijdens het bouwen om onbedoelde bewerkingen te voorkomen."/>
-			<check_box label="Fysiek" name="Physical Checkbox Ctrl" tool_tip="Staat toe dat objecten geduwd worden en worden beïnvloed door de zwaartekracht"/>
-			<check_box label="Tijdelijk" name="Temporary Checkbox Ctrl" tool_tip="Zorgt ervoor dat het object 1 minuut na creatie wordt verwijderd."/>
-			<check_box label="Fantoom" name="Phantom Checkbox Ctrl" tool_tip="Zorgt ervoor dat objecten niet kunnen botsen met andere objecten of avatars"/>
-			<text name="label position">
-				Positie (meters)
-			</text>
-			<spinner label="X" name="Pos X"/>
-			<spinner label="Y" name="Pos Y"/>
-			<spinner label="Z" name="Pos Z"/>
-			<text name="label size">
-				Grootte (meters)
-			</text>
-			<spinner label="X" name="Scale X"/>
-			<spinner label="Y" name="Scale Y"/>
-			<spinner label="Z" name="Scale Z"/>
-			<text name="label rotation">
-				Rotatie (graden)
-			</text>
-			<spinner label="X" name="Rot X"/>
-			<spinner label="Y" name="Rot Y"/>
-			<spinner label="Z" name="Rot Z"/>
-			<text name="label material">
-				Materiaal
-			</text>
-			<combo_box name="material">
-				<combo_box.item name="Stone" label="Steen"
-				/>
-				<combo_box.item name="Metal" label="Metaal"
-				/>
-				<combo_box.item name="Glass" label="Glas"
-				/>
-				<combo_box.item name="Wood" label="Hout"
-				/>
-				<combo_box.item name="Flesh" label="Vlees"
-				/>
-				<combo_box.item name="Plastic" label="Plastic"
-				/>
-				<combo_box.item name="Rubber" label="Rubber"
-				/>
-			</combo_box>
-			<text name="label basetype">
-				Bouwbloktype
-			</text>
-			<combo_box name="comboBaseType">
-				<combo_box.item name="Box" label="Kubus"
-				/>
-				<combo_box.item name="Cylinder" label="Cilinder"
-				/>
-				<combo_box.item name="Prism" label="Prisma"
-				/>
-				<combo_box.item name="Sphere" label="Bol"
-				/>
-				<combo_box.item name="Torus" label="Torus"
-				/>
-				<combo_box.item name="Tube" label="Buis"
-				/>
-				<combo_box.item name="Ring" label="Ring"
-				/>
-				<combo_box.item name="Sculpted" label="Sculpted"
-				/>
-			</combo_box>
-			<text name="text cut">
-				Uitsnede begin en einde
-			</text>
-			<spinner label="B" name="cut begin"/>
-			<spinner label="E" name="cut end"/>
-			<text name="text hollow">
-				Hol
-			</text>
-			<text name="text skew">
-				Verschuiven
-			</text>
-			<text name="Hollow Shape">
-				Holtevorm
-			</text>
-			<combo_box name="hole">
-				<combo_box.item name="Default" label="Standaard"
-				/>
-				<combo_box.item name="Circle" label="Cirkel"
-				/>
-				<combo_box.item name="Square" label="Vierkant"
-				/>
-				<combo_box.item name="Triangle" label="Driehoek"
-				/>
-			</combo_box>
-			<text name="text twist">
-				Verdraai begin en einde
-			</text>
-			<spinner label="B" name="Twist Begin"/>
-			<spinner label="E" name="Twist End"/>
-			<text name="scale_taper">
-				Knijpen
-			</text>
-			<text name="scale_hole">
-				Gatgrootte
-			</text>
-			<spinner label="X" name="Taper Scale X"/>
-			<spinner label="Y" name="Taper Scale Y"/>
-			<text name="text topshear">
-				Bovenkant verschuiven
-			</text>
-			<spinner label="X" name="Shear X"/>
-			<spinner label="Y" name="Shear Y"/>
-			<text name="advanced_cut">
-				Profielsnede begin en einde
-			</text>
-			<text name="advanced_dimple">
-				Deuk begin en einde
-			</text>
-			<text name="advanced_slice">
-				Uitsnede begin en einde
-			</text>
-			<spinner label="B" name="Path Limit Begin"/>
-			<spinner label="E" name="Path Limit End"/>
-			<text name="text taper2">
-				Knijpen
-			</text>
-			<spinner label="X" name="Taper X"/>
-			<spinner label="Y" name="Taper Y"/>
-			<text name="text radius delta">
-				Straal
-			</text>
-			<text name="text revolutions" width="84">
-				Omwentelingen
-			</text>
-			<texture_picker label="Sculpt textuur" name="sculpt texture control" tool_tip="Klik om een afbeelding te kiezen"/>
-			<check_box label="Spiegelen" name="sculpt mirror control" tool_tip="Spiegelt de sculpted prim om de X-as"/>
-			<check_box label="Binnenstebuiten" name="sculpt invert control" tool_tip="Inverteert de normalen van de sculpted prim, zodat deze binnenstebuiten verschijnt."/>
-			<text name="label sculpt type">
-				Hechtingstype
-			</text>
-			<combo_box name="sculpt type control">
-				<combo_box.item name="None" label="(geen)"
-				/>
-				<combo_box.item name="Sphere" label="Bol"
-				/>
-				<combo_box.item name="Torus" label="Torus"
-				/>
-				<combo_box.item name="Plane" label="Vlak"
-				/>
-				<combo_box.item name="Cylinder" label="Cilinder"
-				/>
-			</combo_box>
-		</panel>
-		<panel label="Kenmerken" name="Features">
-			<text name="select_single">
-				Selecteer slechts één primitief om kenmerken te bewerken
-			</text>
-			<text name="edit_object">
-				Bewerk objectkenmerken:
-			</text>
-			<check_box label="Flexibiliteit" name="Flexible1D Checkbox Ctrl" tool_tip="Staat toe dat objecten kunnen buigen om de Z-as. (alleen aan de client kant)"/>
-			<spinner label="Zachtheid" name="FlexNumSections" width="143" label_width="80"/>
-			<spinner label="Zwaartekracht" name="FlexGravity" width="143" label_width="80"/>
-			<spinner label="Slepen" name="FlexFriction" width="143" label_width="80"/>
-			<spinner label="Wind" name="FlexWind" width="143" label_width="80"/>
-			<spinner label="Spanning" name="FlexTension" width="143" label_width="80"/>
-			<spinner label="Kracht X" name="FlexForceX" width="143" label_width="80"/>
-			<spinner label="Kracht Y" name="FlexForceY" width="143" label_width="80"/>
-			<spinner label="Kracht Z" name="FlexForceZ" width="143" label_width="80"/>
-			<check_box label="Licht" name="Light Checkbox Ctrl" tool_tip="Zorgt dat het object licht uitstraalt"/>
-			<text name="label color">
-				Kleur
-			</text>
-			<color_swatch label="" name="colorswatch" tool_tip="Klik om kleurkiezer to openen"/>
-			<spinner label="Intensiteit" name="Light Intensity"/>
-			<spinner label="Straal" name="Light Radius"/>
-			<spinner label="Uitstraling" name="Light Falloff"/>
-		</panel>
-		<panel label="Textuur" name="Texture">
-			<texture_picker label="Textuur" name="texture control" tool_tip="Klik om een afbeelding te kiezen"/>
-			<color_swatch label="Kleur" name="colorswatch" tool_tip="Klik om kleurkiezer to openen"/>
-			<text name="color trans" width="100">
-				Transparantie %
-			</text>
-			<text name="glow label">
-				Gloed
-			</text>
-			<check_box label="Volledige helderheid" name="checkbox fullbright" left_delta="-10"/>
-			<text name="tex gen">
-				Mapping
-			</text>
-			<combo_box name="combobox texgen">
-				<combo_box.item name="Default" label="Standaard"
-				/>
-				<combo_box.item name="Planar" label="Vlak"
-				/>
-			</combo_box>
-			<text name="label shininess">
-				Glans
-			</text>
-			<combo_box name="combobox shininess">
-				<combo_box.item name="None" label="Geen"
-				/>
-				<combo_box.item name="Low" label="Laag"
-				/>
-				<combo_box.item name="Medium" label="Middel"
-				/>
-				<combo_box.item name="High" label="Hoog"
-				/>
-			</combo_box>
-			<text name="label bumpiness">
-				Bumpiness
-			</text>
-			<combo_box name="combobox bumpiness">
-				<combo_box.item name="None" label="Geen"
-				/>
-				<combo_box.item name="Brightness" label="Helderheid"
-				/>
-				<combo_box.item name="Darkness" label="Donkerheid"
-				/>
-				<combo_box.item name="woodgrain" label="Houtnerf"
-				/>
-				<combo_box.item name="bark" label="Schors"
-				/>
-				<combo_box.item name="bricks" label="Stenen"
-				/>
-				<combo_box.item name="checker" label="Dambord"
-				/>
-				<combo_box.item name="concrete" label="Beton"
-				/>
-				<combo_box.item name="crustytile" label="gebarsten tegels"
-				/>
-				<combo_box.item name="cutstone" label="natuursteen"
-				/>
-				<combo_box.item name="discs" label="schijven"
-				/>
-				<combo_box.item name="gravel" label="grind"
-				/>
-				<combo_box.item name="petridish" label="petrischaal"
-				/>
-				<combo_box.item name="siding" label="wandpaneel"
-				/>
-				<combo_box.item name="stonetile" label="plavuizen"
-				/>
-				<combo_box.item name="stucco" label="stucwerk"
-				/>
-				<combo_box.item name="suction" label="zuignappen"
-				/>
-				<combo_box.item name="weave" label="weven"
-				/>
-			</combo_box>
-			<text name="tex scale">
-				Herhalingen per zijde
-			</text>
-			<spinner label="Horizontaal (U)" name="TexScaleU"/>
-			<check_box label="Omkeren" name="checkbox flip s"/>
-			<spinner label="Verticaal (V)" name="TexScaleV"/>
-			<check_box label="Omkeren" name="checkbox flip t"/>
-			<text name="tex rotate">
-				Rotatie (graden)
-			</text>
-			<string name="string repeats per meter">
-				Herhalingen per meter
-			</string>
-			<string name="string repeats per face">
-				Herhalingen per zijde
-			</string>
-			<text name="rpt">
-				Herhalingen per m
-			</text>
-			<button label="Toepassen" label_selected="Toepassen" name="button apply"/>
-			<text name="tex offset">
-				Verplaatsing
-			</text>
-			<spinner label="Horizontaal (U)" name="TexOffsetU"/>
-			<spinner label="Verticaal (V)" name="TexOffsetV"/>
-			<text name="textbox autofix">
-				Mediatextuur uitlijnen
-(moet eerst laden)
-			</text>
-			<button label="Uitlijnen" label_selected="Uitlijnen" name="button align" left="155" />
-		</panel>
-		<panel label="Inhoud" name="Contents">
-			<button label="Nieuw script" label_selected="Nieuw script" name="button new script"/>
-			<button label="Permissies" name="button permissions"/>
-		<panel name="ContentsInventory" width="272" />
-		</panel>
-	</tab_container>
-	<panel name="land info panel">
-		<text name="label_parcel_info">
-			Perceel Informatie
-		</text>
-		<text name="label_area_price">
-			Prijs: L$[PRICE] voor [AREA] m².
-		</text>
-		<text name="label_area">
-			Gebied: [AREA] m².
-		</text>
-		<button label="Over land..." label_selected="Over land..." name="button about land"/>
-		<check_box label="Toon Eigenaren" name="checkbox show owners" tool_tip="Kleur percelen op basis van hun eigendom:  &#10;&#10;Groen = Uw land &#10;Aqua = Land van uw groep &#10;Rood = Eigendom van anderen &#10;Geel = Te koop &#10;Paars = Ter veiling &#10;Grijs = Openbaar"/>
-		<button label="?" label_selected="?" name="button show owners help" left_delta="105"/>
-		<text name="label_parcel_modify">
-			Wijzig Perceel
-		</text>
-		<button label="Opdelen" label_selected="Opdelen" name="button subdivide land"/>
-		<button label="Samenvoegen" label_selected="Samenvoegen" name="button join land"/>
-		<text name="label_parcel_trans">
-			Landtransacties
-		</text>
-		<button label="Koop land" label_selected="Koop land" name="button buy land"/>
-		<button label="Land Afstaan" label_selected="Land Afstaan" name="button abandon land"/>
-	</panel>
-	<floater.string name="status_rotate">
-		Sleep de gekleurde banden om het object te roteren
-	</floater.string>
-	<floater.string name="status_scale">
-		Klik en sleep om de geselecteerde zijde uit te rekken.
-	</floater.string>
-	<floater.string name="status_move">
-		Sleep om te verplaatsen, Shift-slepen om te kopiëren
-	</floater.string>
-	<floater.string name="status_modifyland">
-		Klik en houd vast om land te wijzigen
-	</floater.string>
-	<floater.string name="status_camera">
-		Klik en sleep om beeld te wijzigen
-	</floater.string>
-	<floater.string name="status_grab">
-		Sleep om te verplaatsen, Ctrl om op te tillen, Ctrl-Shift om te roteren.
-	</floater.string>
-	<floater.string name="status_place">
-		Klik in-wereld om te bouwen
-	</floater.string>
-	<floater.string name="status_selectland">
-		Klik en sleep om land te selecteren
-	</floater.string>
-	<floater.string name="grid_screen_text">
-		Scherm
-	</floater.string>
-	<floater.string name="grid_local_text">
-		Lokaal
-	</floater.string>
-	<floater.string name="grid_world_text">
-		Wereld
-	</floater.string>
-	<floater.string name="grid_reference_text">
-		Referentie
-	</floater.string>
-	<floater.string name="grid_attachment_text">
-		Bevestiging
-	</floater.string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_top_objects.xml b/indra/newview/skins/default/xui/nl/floater_top_objects.xml
deleted file mode 100644
index 2bbb701df8dd39688fad0cb1c6ea34091b7d65c0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_top_objects.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="top_objects" title="LADEN…">
-	<text name="title_text">
-		Laden…
-	</text>
-	<scroll_list name="objects_list">
-		<column label="Score" name="score" width="84"/>
-		<column label="Naam" name="name" width="84"/>
-		<column label="Eigenaar" name="owner" width="84"/>
-		<column label="Locatie" name="location" width="84"/>
-		<column label="Tijd" name="time" width="84"/>
-		<column label="Mono tijd" name="mono_time" width="84"/>
-	</scroll_list>
-	<text name="id_text" left="2">
-		Object ID:
-	</text>
-	<button label="Toon baken" name="show_beacon_btn"/>
-	<text name="obj_name_text" left="2">
-		Object naam:
-	</text>
-	<button label="Filter" name="filter_object_btn"/>
-	<text name="owner_name_text" left="2">
-		Eigenaar naam:
-	</text>
-	<button label="Filter" name="filter_owner_btn"/>
-	<button label="Geselecteerde retourneren" name="return_selected_btn" width="170"/>
-	<button label="Alles retourneren" name="return_all_btn" left="190"/>
-	<button label="Geselecteerde uitschakelen" name="disable_selected_btn" width="170"/>
-	<button label="Alles uitschakelen" name="disable_all_btn" left="190"/>
-	<button label="Verversen" name="refresh_btn"/>
-	<string name="top_scripts_title">
-		Top scripts
-	</string>
-	<string name="top_scripts_text">
-		[COUNT] scripts besteden in totaal [TIME] ms
-	</string>
-	<string name="scripts_score_label">
-		Tijd
-	</string>
-	<string name="scripts_mono_time_label">
-		Mono tijd
-	</string>
-	<string name="top_colliders_title">
-		Top botsingen
-	</string>
-	<string name="top_colliders_text">
-		Top [COUNT] objecten die veel mogelijke botsingen ervaren.
-	</string>
-	<string name="colliders_score_label">
-		Score
-	</string>
-	<string name="none_descriptor">
-		Geen gevonden.
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_tos.xml b/indra/newview/skins/default/xui/nl/floater_tos.xml
deleted file mode 100644
index d71412664cf249567c025992bf4d3bd263b76602..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_tos.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="modal container" title="">
-	<button label="Doorgaan" label_selected="Doorgaan" name="Continue"/>
-	<button label="Annuleren" label_selected="Annuleren" name="Cancel"/>
-	<check_box label="Ik ga akkoord met de voorwaarden van service" name="agree_chk"/>
-	<text name="tos_heading">
-		Leest u alstublieft de volgende voorwaarden van service door. Om door te gaan met inloggen in 
-[SECOND_LIFE] dient u de overeenkomst te accepteren.
-	</text>
-	<text_editor name="tos_text">
-		TOS_TEXT
-	</text_editor>
-	<string name="real_url">
-		http://secondlife.com/app/tos/
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_url_entry.xml b/indra/newview/skins/default/xui/nl/floater_url_entry.xml
deleted file mode 100644
index 6926f093904950d3f4716e97ae313dd1050fb6e0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_url_entry.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="url_entry" title="">
-	<text name="media_label">
-		Media URL:
-	</text>
-	<button label="OK" name="ok_btn"/>
-	<button label="Annuleren" name="cancel_btn" width="80"/>
-	<button label="Leegmaken" name="clear_btn" width="80"/>
-	<text name="loading_label">
-		Laden…
-	</text>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_world_map.xml b/indra/newview/skins/default/xui/nl/floater_world_map.xml
deleted file mode 100644
index 2fee2ecf050e0bce67f7385eaa6af51d9a1d9c6f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/floater_world_map.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="worldmap" title="WERELDKAART">
-	<tab_container name="maptab">
-		<panel label="Objecten" name="objects_mapview"/>
-		<panel label="Terrein" name="terrain_mapview"/>
-	</tab_container>
-	<text name="you_label">
-		U
-	</text>
-	<icon left="1058" name="home"/>
-	<text name="home_label">
-		Thuis
-	</text>
-	<text name="auction_label">
-		Veiling
-	</text>
-	<text name="land_for_sale_label">
-		Land te koop
-	</text>
-	<button width="122" left="1116" label="Ga naar Thuislocatie" label_selected="Ga naar Thuislocatie" name="Go Home" tool_tip="Teleport naar uw thuislocatie"/>
-	<check_box label="Inwoner" name="people_chk"/>
-	<check_box label="Infohub" name="infohub_chk"/>
-	<check_box label="Telehub" name="telehubchk"/>
-	<check_box label="Land te koop" name="land_for_sale_chk"/>
-	<text name="events_label">
-		Evenementen:
-	</text>
-	<check_box label="PG" name="event_chk"/>
-	<check_box label="Mature" name="events_mature_chk"/>
-	<check_box label="Adult" name="events_adult_chk"/>
-	<combo_box label="Online vrienden" name="friend combo" tool_tip="Vriend die op kaart getoond wordt">
-		<combo_box.item name="item1" label="Online vrienden"/>
-	</combo_box>
-	<combo_box label="Landmarkeringen" name="landmark combo" tool_tip="Landmarkering die op kaart getoond wordt">
-		<combo_box.item name="item1" label="Landmarkeringen"/>
-	</combo_box>
-	<line_editor label="Zoek op regionaam" name="location" tool_tip="Type de naam van een regio"/>
-	<button label="Zoeken" name="DoSearch" tool_tip="Zoek naar regio"/>
-	<text name="search_label">
-		Zoekresultaten
-	</text>
-	<text name="location_label">
-		Locatie:
-	</text>
-	<spinner name="spin x" tool_tip="X coördinaat van de locatie die op de kaart getoond wordt"/>
-	<spinner name="spin y" tool_tip="Y coördinaat van de locatie die op de kaart getoond wordt"/>
-	<spinner name="spin z" tool_tip="Z coördinaat van de locatie die op de kaart getoond wordt"/>
-	<button label="Teleport" label_selected="Teleport" name="Teleport" tool_tip="Teleport naar geselecteerde locatie"/>
-	<button label="Toon bestemming" label_selected="Toon bestemming" name="Show Destination" tool_tip="Centreer kaart op geselecteerde locatie"/>
-	<button label="Verwijder" label_selected="Verwijder" name="Clear" tool_tip="Stop volgen"/>
-	<button label="Toon mijn locatie" label_selected="Toon mijn locatie" name="Show My Location" tool_tip="Centreer kaart op de locatie van uw avatar"/>
-	<button label="Kopieer SLurl naar klembord" name="copy_slurl" tool_tip="Kopieert huidige locatie als SLurl, zodat deze op het web gebruikt kan worden."/>
-	<slider label="Zoom" name="zoom slider"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/language_settings.xml b/indra/newview/skins/default/xui/nl/language_settings.xml
deleted file mode 100644
index 40f4d9178a197a48bd4b43d59466e4d1512cbae2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/language_settings.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- This file contains strings that used to be hardcoded in the source.-->
-<strings>
-
-	<!-- Locale Information -->
-	<string name="MicrosoftLocale">dutch</string>
-	<string name="MacLocale">nl_NL.UTF-8</string>
-	<string name="DarwinLocale">nl_NL.UTF-8</string>
-	<string name="LinuxLocale">nl_NL.UTF-8</string>
-	
-	<!-- 
-	datetimeToCodes["wkday"]	= "%a";		// Thu
-	datetimeToCodes["weekday"]	= "%A";		// Thursday
-	datetimeToCodes["year4"]	= "%Y";		// 2009
-	datetimeToCodes["year"]		= "%Y";		// 2009
-	datetimeToCodes["year2"]	= "%y";		// 09
-	datetimeToCodes["mth"]		= "%b";		// Aug
-	datetimeToCodes["month"]	= "%B";		// August
-	datetimeToCodes["mthnum"]	= "%m";		// 08
-	datetimeToCodes["day"]		= "%d";		// 31
-	datetimeToCodes["sday"]		= "%-d";	// 9
-	datetimeToCodes["hour24"]	= "%H";		// 14
-	datetimeToCodes["hour"]		= "%H";		// 14
-	datetimeToCodes["hour12"]	= "%I";		// 02
-	datetimeToCodes["min"]		= "%M";		// 59
-	datetimeToCodes["ampm"]		= "%p";		// AM
-	datetimeToCodes["second"]	= "%S";		// 59
-	datetimeToCodes["timezone"]	= "%Z";		// PST	
-	-->
-
-	<string name="TimeHour">hour,datetime,slt</string>
-	<string name="TimeMin">min,datetime,slt</string>	
-	<string name="TimeYear">year,datetime,slt</string>	
-	<string name="TimeDay">day,datetime,slt</string>	
-	<string name="TimeMonth">mthnum,datetime,slt</string>	
-	<string name="TimeWeek">wkday,datetime,slt</string>
-	<string name="TimeAMPM">ampm,datetime,slt</string>
-	<string name="TimeHour12">hour12,datetime,slt</string>	
-
-	<string name="LTimeMthNum">mthnum,datetime,local</string>
-	<string name="LTimeWeek">wkday,datetime,local</string>
-	<string name="LTimeMonth">mth,datetime,local</string>	
-	<string name="LTimeDay">day,datetime,local</string>	
-	<string name="LTimeSec">second,datetime,local</string>
-	<string name="LTimeHour">hour,datetime,local</string>
-	<string name="LTimeMin">min,datetime,local</string>	
-	<string name="LTimeYear">year,datetime,local</string>	
-	
-	<string name="UTCTimeWeek">weekday,datetime,utc</string>
-	<string name="UTCTimeDay">day,datetime,utc</string>
-	<string name="UTCTimeMth">mth,datetime,utc</string>
-	<string name="UTCTimeYr">year,datetime,utc</string>
-	<string name="UTCTimeHr">hour,datetime,utc</string>
-	<string name="UTCTimeMin">min,datetime,utc</string>
-	<string name="UTCTimeSec">second,datetime,utc</string>
-	<string name="UTCTimeTimezone">timezone,datetime,utc</string>							
-</strings>
diff --git a/indra/newview/skins/default/xui/nl/menu_inventory.xml b/indra/newview/skins/default/xui/nl/menu_inventory.xml
deleted file mode 100644
index c3b47cbddb90e9ec0634a37d942c4df433e5d0c7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/menu_inventory.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Koop" name="Task Buy"/>
-	<menu_item_call label="Open" name="Task Open"/>
-	<menu_item_call label="Afspelen" name="Task Play"/>
-	<menu_item_call label="Eigenschappen" name="Task Properties"/>
-	<menu_item_call label="Hernoemen" name="Task Rename"/>
-	<menu_item_call label="Verwijderen" name="Task Remove"/>
-	<menu_item_call label="Prullenbak legen" name="Empty Trash"/>
-	<menu_item_call label="Verloren en gevonden leegmaken" name="Empty Lost And Found"/>
-	<menu_item_call label="Nieuwe map" name="New Folder"/>
-	<menu_item_call label="Nieuw script" name="New Script"/>
-	<menu_item_call label="Nieuwe notitie" name="New Note"/>
-	<menu_item_call label="Nieuw gebaar" name="New Gesture"/>
-	<menu label="Nieuwe Kleding" name="New Clothes">
-		<menu_item_call label="Nieuw shirt" name="New Shirt"/>
-		<menu_item_call label="Nieuwe broek" name="New Pants"/>
-		<menu_item_call label="Nieuwe schoenen" name="New Shoes"/>
-		<menu_item_call label="Nieuwe sokken" name="New Socks"/>
-		<menu_item_call label="Nieuwe jas" name="New Jacket"/>
-		<menu_item_call label="Nieuwe rok" name="New Skirt"/>
-		<menu_item_call label="Nieuwe handschoenen" name="New Gloves"/>
-		<menu_item_call label="Nieuw onderhemd" name="New Undershirt"/>
-		<menu_item_call label="Nieuwe onderbroek" name="New Underpants"/>
-		<menu_item_call label="Nieuw Alpha Masker" name="New Alpha Mask"/>
-		<menu_item_call label="Nieuwe Tattoo" name="New Tattoo"/>
-	</menu>
-	<menu label="Nieuwe Lichaamsdelen" name="New Body Parts">
-		<menu_item_call label="Nieuwe postuur" name="New Shape"/>
-		<menu_item_call label="Nieuwe huid" name="New Skin"/>
-		<menu_item_call label="Nieuw haar" name="New Hair"/>
-		<menu_item_call label="Nieuwe ogen" name="New Eyes"/>
-	</menu>
-	<menu label="Change Type" name="Change Type">
-		<menu_item_call label="Standaard" name="Default"/>
-		<menu_item_call label="Handschoenen" name="Gloves"/>
-		<menu_item_call label="Jas" name="Jacket"/>
-		<menu_item_call label="Broek" name="Pants"/>
-		<menu_item_call label="Vorm" name="Shape"/>
-		<menu_item_call label="Schoenen" name="Shoes"/>
-		<menu_item_call label="Overhemd" name="Shirt"/>
-		<menu_item_call label="Rok" name="Skirt"/>
-		<menu_item_call label="Onderbroek" name="Underpants"/>
-		<menu_item_call label="Onderhemd" name="Undershirt"/>
-	</menu>
-	<menu_item_call label="Teleport" name="Landmark Open"/>
-	<menu_item_call label="Open" name="Animation Open"/>
-	<menu_item_call label="Open" name="Sound Open"/>
-	<menu_item_call label="Verwijderen item" name="Purge Item"/>
-	<menu_item_call label="Herstellen item" name="Restore Item"/>
-	<menu_item_call label="Ga Naar Link" name="Goto Link"/>
-	<menu_item_call label="Open" name="Open"/>
-	<menu_item_call label="Eigenschappen" name="Properties"/>
-	<menu_item_call label="Hernoemen" name="Rename"/>
-	<menu_item_call label="Kopieer asset UUID" name="Copy Asset UUID"/>
-	<menu_item_call label="Kopiëren" name="Copy"/>
-	<menu_item_call label="Plakken" name="Paste"/>
-	<menu_item_call label="Plak Als Link" name="Paste As Link"/>
-	<menu_item_call label="Verwijderen" name="Delete"/>
-	<menu_item_call label="Items uitdoen" name="Take Off Items"/>
-	<menu_item_call label="Voeg toe aan kleding" name="Add To Outfit"/>
-	<menu_item_call label="Vervang kleding" name="Replace Outfit"/>
-	<menu_item_call label="Start conferentie chat" name="Conference Chat Folder"/>
-	<menu_item_call label="Afspelen" name="Sound Play"/>
-	<menu_item_call label="Over Landmark" name="About Landmark"/>
-	<menu_item_call label="In wereld afspelen" name="Animation Play"/>
-	<menu_item_call label="Lokaal afspelen" name="Animation Audition"/>
-	<menu_item_call label="Stuur instant message" name="Send Instant Message"/>
-	<menu_item_call label="Bied teleport aan…" name="Offer Teleport..."/>
-	<menu_item_call label="Start conferentie chat" name="Conference Chat"/>
-	<menu_item_call label="Activeren" name="Activate"/>
-	<menu_item_call label="Deactiveren" name="Deactivate"/>
-	<menu_item_call label="Opslaan Als" name="Save As"/>
-	<menu_item_call label="Losmaken van jezelf" name="Detach From Yourself"/>
-	<menu_item_call label="Dragen" name="Object Wear"/>
-	<menu label="Bevestigen aan" name="Attach To"/>
-	<menu label="Bevestigen aan HUD" name="Attach To HUD"/>
-	<menu_item_call label="Bewerken" name="Wearable Edit"/>
-	<menu_item_call label="Dragen" name="Wearable Wear"/>
-	<menu_item_call label="Uitdoen" name="Take Off"/>
-	<menu_item_call label="--geen opties--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/default/xui/nl/menu_inventory_add.xml b/indra/newview/skins/default/xui/nl/menu_inventory_add.xml
deleted file mode 100644
index 09330b9597a281d3c958fbcb440bc0984a45e2dd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/menu_inventory_add.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
-	<menu label="Upload" name="upload">
-		<menu_item_call label="Plaatje (L$[COST])..." name="Upload Image"/>
-		<menu_item_call label="Geluid (L$[COST])..." name="Upload Sound"/>
-		<menu_item_call label="Animatie (L$[COST])..." name="Upload Animation"/>
-		<menu_item_call label="Bulk (L$[COST] per bestand)..." name="Bulk Upload"/>
-	</menu>
-	<menu_item_call label="Nieuwe Map" name="New Folder"/>
-	<menu_item_call label="Nieuw Script" name="New Script"/>
-	<menu_item_call label="Nieuw Notitie" name="New Note"/>
-	<menu_item_call label="Nieuw Gebaar" name="New Gesture"/>
-	<menu label="Nieuwe Kleding" name="New Clothes">
-		<menu_item_call label="Nieuw Overhemd" name="New Shirt"/>
-		<menu_item_call label="Nieuwe Broek" name="New Pants"/>
-		<menu_item_call label="Nieuwe Schoenen" name="New Shoes"/>
-		<menu_item_call label="Nieuwe Sokken" name="New Socks"/>
-		<menu_item_call label="Nieuw Jas" name="New Jacket"/>
-		<menu_item_call label="Nieuw Rok" name="New Skirt"/>
-		<menu_item_call label="Nieuwe Handschoenen" name="New Gloves"/>
-		<menu_item_call label="Nieuw Hemd" name="New Undershirt"/>
-		<menu_item_call label="Nieuwe Onderbroek" name="New Underpants"/>
-		<menu_item_call label="Nieuwe Alpha" name="New Alpha"/>
-		<menu_item_call label="Nieuwe Tattoo" name="New Tattoo"/>
-	</menu>
-	<menu label="Nieuwe Lichaamsdelen" name="New Body Parts">
-		<menu_item_call label="Nieuwe Vorm" name="New Shape"/>
-		<menu_item_call label="Nieuwe Huid" name="New Skin"/>
-		<menu_item_call label="Nieuw Haar" name="New Hair"/>
-		<menu_item_call label="Nieuwe Ogen" name="New Eyes"/>
-	</menu>
-</menu>
diff --git a/indra/newview/skins/default/xui/nl/menu_login.xml b/indra/newview/skins/default/xui/nl/menu_login.xml
deleted file mode 100644
index 987b82b12804f1a88feca83e2cd832e2968d7f7e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/menu_login.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
-	<menu label="Bestand" name="File">
-		<menu_item_call label="Afsluiten" name="Quit"/>
-	</menu>
-	<menu label="Bewerken" name="Edit">
-		<menu_item_call label="Voorkeuren..." name="Preferences..."/>
-	</menu>
-	<menu label="Help" name="Help">
-		<menu_item_call label="[SECOND_LIFE] Help" name="Second Life Help"/>
-		<menu_item_call label="Over [APP_NAME]..." name="About Second Life..."/>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/default/xui/nl/menu_mini_map.xml b/indra/newview/skins/default/xui/nl/menu_mini_map.xml
deleted file mode 100644
index f7c09660ea3412d5ffaffeeedc7b820ecfa3b94c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/menu_mini_map.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Zoom dichtbij" name="Zoom Close"/>
-	<menu_item_call label="Zoom gemiddeld" name="Zoom Medium"/>
-	<menu_item_call label="Zoom veraf" name="Zoom Far"/>
-	<menu_item_call label="Stop volgen" name="Stop Tracking"/>
-	<menu_item_call label="Profiel..." name="Profile"/>
-</menu>
diff --git a/indra/newview/skins/default/xui/nl/menu_picks.xml b/indra/newview/skins/default/xui/nl/menu_picks.xml
deleted file mode 100644
index 2e53dbda589bdb1c908cff35bf78805ce502a519..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
-	<menu_item_call label="Info" name="pick_info"/>
-	<menu_item_call label="Bewerken" name="pick_edit"/>
-	<menu_item_call label="Teleport" name="pick_teleport"/>
-	<menu_item_call label="Kaart" name="pick_map"/>
-	<menu_item_call label="Verweideren" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/default/xui/nl/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/nl/menu_places_gear_landmark.xml
deleted file mode 100644
index dab5a388d79da18c9fefde6cbb3ca2e873443750..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
-	<menu_item_call label="Teleport" name="teleport"/>
-	<menu_item_call label="Meer Informatie" name="more_info"/>
-	<menu_item_call label="Toon op Kaart" name="show_on_map"/>
-	<menu_item_call label="Voeg Landmark Toe" name="add_landmark"/>
-	<menu_item_call label="Voeg Map Toe" name="add_folder"/>
-	<menu_item_call label="Knippen" name="cut"/>
-	<menu_item_call label="Kopieër Landmark" name="copy_landmark"/>
-	<menu_item_call label="Kopieër SLurl" name="copy_slurl"/>
-	<menu_item_call label="Plakken" name="paste"/>
-	<menu_item_call label="Hernoemen" name="rename"/>
-	<menu_item_call label="Verweideren" name="delete"/>
-	<menu_item_call label="Alle mappen uitvouwen" name="expand_all"/>
-	<menu_item_call label="Alle mappen samenvouwen" name="collapse_all"/>
-	<menu_item_check label="Sorteer bij Datum" name="sort_by_date"/>
-	<menu_item_call label="Maak Favoriet" name="create_pick"/>
-</menu>
diff --git a/indra/newview/skins/default/xui/nl/menu_slurl.xml b/indra/newview/skins/default/xui/nl/menu_slurl.xml
deleted file mode 100644
index 48a4698d0ced44ed37e7f5ed8fe94d7037833958..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Over URL" name="about_url"/>
-	<menu_item_call label="Teleport naar URL" name="teleport_to_url"/>
-	<menu_item_call label="Toon op kaart" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/default/xui/nl/menu_viewer.xml b/indra/newview/skins/default/xui/nl/menu_viewer.xml
deleted file mode 100644
index 6d5c833610cc91e951761b0f75df44bd05e70ab4..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/menu_viewer.xml
+++ /dev/null
@@ -1,207 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
-	<menu label="Bestand" name="File">
-		<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/>
-		<menu label="Upload" name="upload">
-			<menu_item_call label="Afbeelding (L$[COST])..." name="Upload Image"/>
-			<menu_item_call label="Geluid (L$[COST])..." name="Upload Sound"/>
-			<menu_item_call label="Animatie (L$[COST])..." name="Upload Animation"/>
-			<menu_item_call label="Bulk (L$[COST] per bestand)..." name="Bulk Upload"/>
-			<menu_item_separator label="-----------" name="separator"/>
-			<menu_item_call label="Standaard permissies instellen..." name="perm prefs"/>
-		</menu>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Sluit venster" name="Close Window"/>
-		<menu_item_call label="Sluit alle vensters" name="Close All Windows"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Textuur opslaan als..." name="Save Texture As..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Maak foto" name="Take Snapshot"/>
-		<menu_item_call label="Foto naar harde schijf" name="Snapshot to Disk"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu_item_call label="Afsluiten" name="Quit"/>
-	</menu>
-	<menu label="Bewerken" name="Edit">
-		<menu_item_call label="Ongedaan maken" name="Undo"/>
-		<menu_item_call label="Herhalen" name="Redo"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Knippen" name="Cut"/>
-		<menu_item_call label="Kopiëren" name="Copy"/>
-		<menu_item_call label="Plakken" name="Paste"/>
-		<menu_item_call label="Verwijderen" name="Delete"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Zoeken..." name="Search..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Alles selecteren" name="Select All"/>
-		<menu_item_call label="Deselecteren" name="Deselect"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu_item_call label="Dupliceren" name="Duplicate"/>
-		<menu_item_separator label="-----------" name="separator5"/>
-		<menu label="Bevestig object" name="Attach Object"/>
-		<menu label="Object losmaken" name="Detach Object"/>
-		<menu label="Kleding uitdoen" name="Take Off Clothing">
-			<menu_item_call label="Hemd" name="Shirt"/>
-			<menu_item_call label="Broek" name="Pants"/>
-			<menu_item_call label="Schoenen" name="Shoes"/>
-			<menu_item_call label="Sokken" name="Socks"/>
-			<menu_item_call label="Jas" name="Jacket"/>
-			<menu_item_call label="Handschoenen" name="Gloves"/>
-			<menu_item_call label="Onderhemd" name="Menu Undershirt"/>
-			<menu_item_call label="Onderbroek" name="Menu Underpants"/>
-			<menu_item_call label="Rok" name="Skirt"/>
-			<menu_item_call label="Alle kleding" name="All Clothes"/>
-		</menu>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu_item_call label="Gebaren..." name="Gestures..."/>
-		<menu_item_call label="Profiel..." name="Profile..."/>
-		<menu_item_call label="Uiterlijk..." name="Appearance..."/>
-		<menu_item_separator label="-----------" name="separator7"/>
-		<menu_item_check label="Vrienden..." name="Friends..."/>
-		<menu_item_call label="Groepen..." name="Groups..."/>
-		<menu_item_separator label="-----------" name="separator8"/>
-		<menu_item_call label="Voorkeuren..." name="Preferences..."/>
-	</menu>
-	<menu label="Weergave" name="View">
-		<tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/>
-		<menu_item_call label="Mouselook" name="Mouselook"/>
-		<menu_item_check label="Bouwen" name="Build"/>
-		<menu_item_check label="Joystick vliegcamera" name="Joystick Flycam"/>
-		<menu_item_call label="Weergave opnieuw instellen" name="Reset View"/>
-		<menu_item_call label="Kijk naar laatste geklets" name="Look at Last Chatter"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_check label="Werkbalk" name="Toolbar"/>
-		<menu_item_check label="Lokale chat" name="Chat History"/>
-		<menu_item_check label="Communiceren" name="Instant Message"/>
-		<menu_item_check label="Inventaris" name="Inventory"/>
-		<menu_item_check label="Actieve sprekers" name="Active Speakers"/>
-		<menu_item_check label="Negeerlijst" name="Mute List"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_check label="Camerabediening" name="Camera Controls"/>
-		<menu_item_check label="Bewegingsbediening" name="Movement Controls"/>
-		<menu_item_check label="Wereldkaart" name="World Map"/>
-		<menu_item_check label="Mini-kaart" name="Mini-Map"/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_check label="Statistiekenbalk" name="Statistics Bar"/>
-		<menu_item_check label="Eigendomlijnen" name="Property Lines"/>
-		<menu_item_check label="Banlijnen" name="Banlines"/>
-		<menu_item_check label="Landeigenaren" name="Land Owners"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu label="Tooltips" name="Hover Tips">
-			<menu_item_check label="Toon tips" name="Show Tips"/>
-			<menu_item_separator label="-----------" name="separator"/>
-			<menu_item_check label="Land tips" name="Land Tips"/>
-			<menu_item_check label="Tips voor alle objecten" name="Tips On All Objects"/>
-		</menu>
-		<menu_item_check label="Markeer transparant" name="Highlight Transparent"/>
-		<menu_item_check label="Bakens" name="beacons"/>
-		<menu_item_check label="Verberg particles" name="Hide Particles"/>
-		<menu_item_check label="Toon HUD bevestigingen" name="Show HUD Attachments"/>
-		<menu_item_separator label="-----------" name="separator5"/>
-		<menu_item_call label="Inzoomen" name="Zoom In"/>
-		<menu_item_call label="Zoom standaard" name="Zoom Default"/>
-		<menu_item_call label="Uitzoomen" name="Zoom Out"/>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu_item_call label="Schakelen naar volledig scherm" name="Toggle Fullscreen"/>
-		<menu_item_call label="UI grootte naar standaard instellen" name="Set UI Size to Default"/>
-	</menu>
-	<menu label="Wereld" name="World">
-		<menu_item_call label="Chat" name="Chat"/>
-		<menu_item_check label="Altijd rennen" name="Always Run"/>
-		<menu_item_check label="Vliegen" name="Fly"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Maak hier landmarkering" name="Create Landmark Here"/>
-		<menu_item_call label="Thuis hier instellen" name="Set Home to Here"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Teleport naar huis" name="Teleport Home"/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Afwezig instellen" name="Set Away"/>
-		<menu_item_call label="Niet-storen instellen" name="Set Busy"/>
-		<menu_item_call label="Stop het animeren van mijn avatar" name="Stop Animating My Avatar"/>
-		<menu_item_call label="Toetsen vrijgeven" name="Release Keys"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu_item_call label="Account geschiedenis..." name="Account History..."/>
-		<menu_item_call label="Beheer mijn account" name="Manage My Account..."/>
-		<menu_item_call label="Koop L$..." name="Buy and Sell L$..."/>
-		<menu_item_separator label="-----------" name="separator5"/>
-		<menu_item_call label="Mijn land..." name="My Land..."/>
-		<menu_item_call label="Over land..." name="About Land..."/>
-		<menu_item_call label="Koop land..." name="Buy Land..."/>
-		<menu_item_call label="Regio/Estate..." name="Region/Estate..."/>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu label="Omgeving instellingen" name="Environment Settings">
-			<menu_item_call label="Zonsopgang" name="Sunrise"/>
-			<menu_item_call label="Middag" name="Noon"/>
-			<menu_item_call label="Zonsondergang" name="Sunset"/>
-			<menu_item_call label="Middernacht" name="Midnight"/>
-			<menu_item_call label="Herstel naar regiostandaard" name="Revert to Region Default"/>
-			<menu_item_separator label="-----------" name="separator"/>
-			<menu_item_call label="Omgeving editor" name="Environment Editor"/>
-		</menu>
-	</menu>
-	<menu label="Gereedschappen" name="Tools">
-		<menu label="Selecteergereedschap" name="Select Tool">
-			<menu_item_call label="Focus" name="Focus"/>
-			<menu_item_call label="Verplaatsen" name="Move"/>
-			<menu_item_call label="Bewerken" name="Edit"/>
-			<menu_item_call label="Maak" name="Create"/>
-			<menu_item_call label="Land" name="Land"/>
-		</menu>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_check label="Selecteer alleen mijn objecten" name="Select Only My Objects"/>
-		<menu_item_check label="Selecteer alleen verplaatsbare objecten" name="Select Only Movable Objects"/>
-		<menu_item_check label="Selecteer op omgeving" name="Select By Surrounding"/>
-		<menu_item_check label="Toon verborgen selectie" name="Show Hidden Selection"/>
-		<menu_item_check label="Toon lichtradius voor selectie" name="Show Light Radius for Selection"/>
-		<menu_item_check label="Toon selectiestraal" name="Show Selection Beam"/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_check label="Snap aan grid" name="Snap to Grid"/>
-		<menu_item_call label="Snap object XY aan grid" name="Snap Object XY to Grid"/>
-		<menu_item_call label="Gebruik selectie voor grid" name="Use Selection for Grid"/>
-		<menu_item_call label="Gridopties..." name="Grid Options..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_check label="Bewerk gekoppelde delen" name="Edit Linked Parts"/>
-		<menu_item_call label="Koppel" name="Link"/>
-		<menu_item_call label="Ontkoppel" name="Unlink"/>
-		<menu_item_separator label="-----------" name="separator4"/>
-		<menu_item_call label="Focus op selectie" name="Focus on Selection"/>
-		<menu_item_call label="Zoom naar selectie" name="Zoom to Selection"/>
-		<menu_item_call label="Koop object" name="Menu Object Take">
-			<on_enable userdata="Koop,Neem" name="EnableBuyOrTake"/>
-		</menu_item_call>
-		<menu_item_call label="Neem kopie" name="Take Copy"/>
-		<menu_item_call label="Object terug opslaan in objectinhoud" name="Save Object Back to Object Contents"/>
-		<menu_item_separator label="-----------" name="separator6"/>
-		<menu_item_call label="Toon script waarschuwing/fout venster" name="Show Script Warning/Error Window"/>
-		<menu label="Hercompileer scripts in selectie" name="Recompile Scripts in Selection">
-			<menu_item_call label="Mono" name="Mono"/>
-			<menu_item_call label="LSL" name="LSL"/>
-		</menu>
-		<menu_item_call label="Scripts in selectie opnieuw instellen" name="Reset Scripts in Selection"/>
-		<menu_item_call label="Scripts in selectie instellen op uitvoeren" name="Set Scripts to Running in Selection"/>
-		<menu_item_call label="Scripts in selectie instellen op niet uitvoeren" name="Set Scripts to Not Running in Selection"/>
-	</menu>
-	<menu label="Help" name="Help">
-		<menu_item_call label="[SECOND_LIFE] Help" name="Second Life Help"/>
-		<menu_item_call label="Handleiding" name="Tutorial"/>
-		<menu_item_separator label="-----------" name="separator"/>
-		<menu_item_call label="Officiële Linden blog..." name="Official Linden Blog..."/>
-		<menu_item_separator label="-----------" name="separator2"/>
-		<menu_item_call label="Scripting portaal..." name="Scripting Portal..."/>
-		<menu_item_separator label="-----------" name="separator3"/>
-		<menu_item_call label="Rapporteer misbruik..." name="Report Abuse..."/>
-		<menu_item_call label="Botsingen, duwen &amp; slaan" name="Bumps, Pushes &amp;amp; Hits..."/>
-		<menu_item_call label="Lag Meter" name="Lag Meter"/>
-		<menu_item_separator label="-----------" name="separator7"/>
-		<menu label="Bug rapporteren" name="Bug Reporting">
-			<menu_item_call label="Publieke problemenlijst..." name="Public Issue Tracker..."/>
-			<menu_item_call label="Publieke problemenlijst help" name="Publc Issue Tracker Help..."/>
-			<menu_item_separator label="-----------" name="separator7"/>
-			<menu_item_call label="Bug rapporteren 101" name="Bug Reporing 101..."/>
-			<menu_item_call label="Beveiligingsbevindingen..." name="Security Issues..."/>
-			<menu_item_call label="Kwaliteitsbeheersing Wiki..." name="QA Wiki..."/>
-			<menu_item_separator label="-----------" name="separator9"/>
-			<menu_item_call label="Rapporteer bug..." name="Report Bug..."/>
-		</menu>
-		<menu_item_call label="Over [APP_NAME]..." name="About Second Life..."/>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/default/xui/nl/mime_types.xml b/indra/newview/skins/default/xui/nl/mime_types.xml
deleted file mode 100644
index ba5de136a06773d3dd990fd497e159c556caea24..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/mime_types.xml
+++ /dev/null
@@ -1,230 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<mimetypes name="default">
-	<widgetset name="web">
-		<label name="web_label">
-			Web Inhoud
-		</label>
-		<tooltip name="web_tooltip">
-			Deze locatie bevat Web inhoud
-		</tooltip>
-		<playtip name="web_playtip">
-			Toon Web inhoud
-		</playtip>
-	</widgetset>
-	<widgetset name="movie">
-		<label name="movie_label">
-			Film
-		</label>
-		<tooltip name="movie_tooltip">
-			Hier kan een film afgespeeld worden
-		</tooltip>
-		<playtip name="movie_playtip">
-			Afspelen film
-		</playtip>
-	</widgetset>
-	<widgetset name="none">
-		<label name="none_label">
-			Geen Inhoud
-		</label>
-		<tooltip name="none_tooltip">
-			Geen media hier
-		</tooltip>
-	</widgetset>
-	<widgetset name="image">
-		<label name="image_label">
-			Afbeelding
-		</label>
-		<tooltip name="image_tooltip">
-			Er is een afbeelding op deze locatie
-		</tooltip>
-		<playtip name="image_playtip">
-			Bekijk de afbeelding van deze locatie
-		</playtip>
-	</widgetset>
-	<widgetset name="audio">
-		<label name="audio_label">
-			Audio
-		</label>
-		<tooltip name="audio_tooltip">
-			Er is audio op deze locatie
-		</tooltip>
-		<playtip name="audio_playtip">
-			Speel de audio van deze locatie af
-		</playtip>
-	</widgetset>
-	<scheme name="rtsp">
-		<label name="rtsp_label">
-			Real Time Streaming
-		</label>
-	</scheme>
-	<mimetype name="blank">
-		<label name="blank_label">
-			- Geen -
-		</label>
-	</mimetype>
-	<mimetype name="none/none">
-		<label name="none/none_label">
-			- Geen -
-		</label>
-	</mimetype>
-	<mimetype name="audio/*">
-		<label name="audio2_label">
-			Audio
-		</label>
-	</mimetype>
-	<mimetype name="video/*">
-		<label name="video2_label">
-			Video
-		</label>
-	</mimetype>
-	<mimetype name="image/*">
-		<label name="image2_label">
-			Afbeelding
-		</label>
-	</mimetype>
-	<mimetype name="video/vnd.secondlife.qt.legacy">
-		<label name="vnd.secondlife.qt.legacy_label">
-			Film (QuickTime)
-		</label>
-	</mimetype>
-	<mimetype name="application/javascript">
-		<label name="application/javascript_label">
-			Javascript
-		</label>
-	</mimetype>
-	<mimetype name="application/ogg">
-		<label name="application/ogg_label">
-			Ogg Audio/Video
-		</label>
-	</mimetype>
-	<mimetype name="application/pdf">
-		<label name="application/pdf_label">
-			PDF Document
-		</label>
-	</mimetype>
-	<mimetype name="application/postscript">
-		<label name="application/postscript_label">
-			Postscript Document
-		</label>
-	</mimetype>
-	<mimetype name="application/rtf">
-		<label name="application/rtf_label">
-			Rich Text (RTF)
-		</label>
-	</mimetype>
-	<mimetype name="application/smil">
-		<label name="application/smil_label">
-			Synchronized Multimedia Integration Language (SMIL)
-		</label>
-	</mimetype>
-	<mimetype name="application/xhtml+xml">
-		<label name="application/xhtml+xml_label">
-			Web Pagina (XHTML)
-		</label>
-	</mimetype>
-	<mimetype name="application/x-director">
-		<label name="application/x-director_label">
-			Macromedia Director
-		</label>
-	</mimetype>
-	<mimetype name="application/x-shockwave-flash">
-		<label name="application/x-shockwave-flash_label">
-			Flash
-		</label>
-	</mimetype>
-	<mimetype name="audio/mid">
-		<label name="audio/mid_label">
-			Audio (MIDI)
-		</label>
-	</mimetype>
-	<mimetype name="audio/mpeg">
-		<label name="audio/mpeg_label">
-			Audio (MP3)
-		</label>
-	</mimetype>
-	<mimetype name="audio/x-aiff">
-		<label name="audio/x-aiff_label">
-			Audio (AIFF)
-		</label>
-	</mimetype>
-	<mimetype name="audio/x-wav">
-		<label name="audio/x-wav_label">
-			Audio (WAV)
-		</label>
-	</mimetype>
-	<mimetype name="image/bmp">
-		<label name="image/bmp_label">
-			Afbeelding (BMP)
-		</label>
-	</mimetype>
-	<mimetype name="image/gif">
-		<label name="image/gif_label">
-			Afbeelding (GIF)
-		</label>
-	</mimetype>
-	<mimetype name="image/jpeg">
-		<label name="image/jpeg_label">
-			Afbeelding (JPEG)
-		</label>
-	</mimetype>
-	<mimetype name="image/png">
-		<label name="image/png_label">
-			Afbeelding (PNG)
-		</label>
-	</mimetype>
-	<mimetype name="image/svg+xml">
-		<label name="image/svg+xml_label">
-			Afbeelding (SVG)
-		</label>
-	</mimetype>
-	<mimetype name="image/tiff">
-		<label name="image/tiff_label">
-			Afbeelding (TIFF)
-		</label>
-	</mimetype>
-	<mimetype name="text/html">
-		<label name="text/html_label">
-			Web Pagina
-		</label>
-	</mimetype>
-	<mimetype name="text/plain">
-		<label name="text/plain_label">
-			Tekst
-		</label>
-	</mimetype>
-	<mimetype name="text/xml">
-		<label name="text/xml_label">
-			XML
-		</label>
-	</mimetype>
-	<mimetype name="video/mpeg">
-		<label name="video/mpeg_label">
-			Film (MPEG)
-		</label>
-	</mimetype>
-	<mimetype name="video/mp4">
-		<label name="video/mp4_label">
-			Film (MP4)
-		</label>
-	</mimetype>
-	<mimetype name="video/quicktime">
-		<label name="video/quicktime_label">
-			Film (QuickTime)
-		</label>
-	</mimetype>
-	<mimetype name="video/x-ms-asf">
-		<label name="video/x-ms-asf_label">
-			Film (Windows Media ASF)
-		</label>
-	</mimetype>
-	<mimetype name="video/x-ms-wmv">
-		<label name="video/x-ms-wmv_label">
-			Film (Windows Media WMV)
-		</label>
-	</mimetype>
-	<mimetype name="video/x-msvideo">
-		<label name="video/x-msvideo_label">
-			Film (AVI)
-		</label>
-	</mimetype>
-</mimetypes>
diff --git a/indra/newview/skins/default/xui/nl/notifications.xml b/indra/newview/skins/default/xui/nl/notifications.xml
deleted file mode 100644
index 06e6d8ae7ad17f35419b0be6f4e3aebaee752a61..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/notifications.xml
+++ /dev/null
@@ -1,3044 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
-	<global name="skipnexttime">
-		Toon mij dit niet meer.
-	</global>
-	<global name="alwayschoose">
-		Kies altijd deze optie
-	</global>
-	<global name="implicitclosebutton">
-		Sluiten
-	</global>
-  <template name="okbutton">
-    <form>
-      <button
-       name="OK"
-       text="$yestext"/>
-    </form>
-  </template>
-
-  <template name="okignore">
-    <form>
-      <button
-       name="OK"
-       text="$yestext"/>
-      <ignore text="$ignoretext"/>
-    </form>
-  </template>
-
-  <template name="okcancelbuttons">
-    <form>
-      <button
-       name="OK"
-       text="$yestext"/>
-      <button
-       name="Cancel"
-       text="$notext"/>
-    </form>
-  </template>
-
-  <template name="okcancelignore">
-    <form>
-      <button
-       name="OK"
-       text="$yestext"/>
-      <button
-       name="Cancel"
-       text="$notext"/>
-      <ignore text="$ignoretext"/>
-    </form>
-  </template>
-
-  <template name="okhelpbuttons">
-    <form>
-      <button
-       name="OK"
-       text="$yestext"/>
-      <button
-       name="Help"
-       text="$helptext"/>
-    </form>
-  </template>
-
-  <template name="yesnocancelbuttons">
-    <form>
-      <button
-       name="Yes"
-       text="$yestext"/>
-      <button
-       name="No"
-       text="$notext"/>
-      <button
-       name="Cancel"
-       text="$canceltext"/>
-    </form>
-  </template>
-	<notification functor="GenericAcknowledge" label="Onbekende waarschuwingsboodschap" name="MissingAlert">
-		Uw versie van [APP_NAME] weet niet hoe het de waarschuwingsboodschap die zojuist ontvangen is moet weergeven. 
-
-Foutdetails: De waarschuwing genaamd &apos;[_NAME]&apos; is niet gevonden in notifications.xml.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="FloaterNotFound">
-		Reële waarde fout: Kon de volgende controllers niet vinden:
-
-[CONTROLS]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="TutorialNotFound">
-		Er is momenteel geen handleiding beschikbaar.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="GenericAlert">
-		[MESSAGE]
-	</notification>
-	<notification name="GenericAlertYesCancel">
-		[MESSAGE]
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Ja"/>
-	</notification>
-	<notification name="BadInstallation">
-		Er is een fout opgetreden tijdens het bijwerken van [APP_NAME]. Download alstublieft de meest recente versie van secondlife.com
-    <usetemplate
-     name="okbutton"
-     yestext="OK"/>
-	</notification>
-	<notification name="LoginFailedNoNetwork">
-		Netwerkfout: Kan geen verbinding opzetten.
-&apos;[DIAGNOSTIC]&apos;
-Controleer alstublieft uw netwerkverbinding.
-	<usetemplate
-     name="okbutton"
-     yestext="OK"/>
-	</notification>
-	<notification name="MessageTemplateNotFound">
-		Berichtsjabloon [PATH] niet gevonden.
-	<usetemplate
-     name="okbutton"
-     yestext="OK"/>
-	</notification>
-	<notification name="WearableSave">
-		Wijzigingen aan huidig kledingstuk/lichaamsdeel opslaan?
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Niet Opslaan" yestext="Opslaan"/>
-	</notification>
-	<notification name="CompileQueueSaveText">
-		Er was een probleem met het uploaden van de tekst van een script vanwege de volgende reden: [REASON]. Probeer het alstublieft later nog eens.
-	</notification>
-	<notification name="CompileQueueSaveBytecode">
-		Er was een probleem met het uploaden van het gecompileerde script vanwege de volgende reden: [REASON]. Probeer het alstublieft later nog eens.
-	</notification>
-	<notification name="WriteAnimationFail">
-		Er was een probleem met het wegschrijven van animatie gegevens.  Probeer het alstublieft later nog eens.
-	</notification>
-	<notification name="UploadAuctionSnapshotFail">
-		Er was een probleem met het uploaden van de veiling foto vanwege de volgende reden: [REASON]
-	</notification>
-	<notification name="UnableToViewContentsMoreThanOne">
-		Het is niet mogelijk om de inhoud van meer dan één item tegelijk te zien.
-Kies alstublieft slechts één item en probeer het opnieuw.
-	</notification>
-	<notification name="SaveClothingBodyChanges">
-		Wijzigingen aan kledingstuk/lichaamsdeel opslaan?
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Niet Opslaan" yestext="Alles Opslaan"/>
-	</notification>
-	<notification name="GrantModifyRights">
-		Het geven van wijzigingsrechten aan een andere inwoner, maakt het voor hun mogelijk om elk willekeurig object te wijzigen, te verwijderen of om WILLEKEURIGE objecten die u in wereld heeft terug te nemen. Wees HEEL voorzichtig met het uitgeven van dit recht.
-Wilt u wijzigingsrechten aan [FIRST_NAME] [LAST_NAME] geven?
-		<usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="GrantModifyRightsMultiple">
-		Het geven van wijzigingsrechten aan een andere inwoner, maakt het voor hun mogelijk elk WILLEKEURIG object te wijzigen die u in wereld heeft. Wees HEEL voorzichtig met het uitgeven van dit recht.
-Wilt u wijzigingsrechten aan de geselecteerde inwoners geven?
-		<usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="RevokeModifyRights">
-		Wilt u de wijzigingsrechten voor [FIRST_NAME] [LAST_NAME] terugnemen?
-		<usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="RevokeModifyRightsMultiple">
-		Wilt u de wijzigingsrechten voor de geselecteerde inwoners terugnemen?
-		<usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="UnableToCreateGroup">
-		Kan geen groep aanmaken.
-[MESSAGE]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="PanelGroupApply">
-		[NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Wijzigingen Negeren" yestext="Wijzigingen Toepassen"/>
-	</notification>
-	<notification name="MustSpecifyGroupNoticeSubject">
-		U moet een onderwerp opgeven om dit bericht te kunnen versturen.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AddGroupOwnerWarning">
-		U staat op het punt groepsleden de rol [ROLE_NAME] te geven.
-Leden kunnen niet van die groep worden verwijderd.
-De leden moeten zichzelf ontheffen uit deze rol.
-Weet u zeker dat u door wilt gaan?
-		<usetemplate ignoretext="Wanneer u groepsleden toevoegt aan de eigenaren rol" name="okcancelignore" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="AssignDangerousActionWarning">
-		U staat op het punt de Bekwaamheid &apos;[ACTION_NAME]&apos; aan de Rol &apos;[ROLE_NAME]&apos; toe te voegen.
-
- *WAARSCHUWING*
- Elk lid in de Rol met deze Bekwaamheid kan zichzelf - en elk ander lid - Rollen geven die meer mogelijkheden hebben dan waar zij nu over beschikken, zichzelf daarmee verheffend tot bijna eigenaar mogelijkheden. Weet zeker waar u mee bezig bent alvorens deze Bekwaamheid toe te kennen.
-
-Deze Bekwaamheid toevoegen aan &apos;[ROLE_NAME]&apos;?
-		<usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="AssignDangerousAbilityWarning">
-		U staat op het punt de Bekwaamheid &apos;[ACTION_NAME]&apos; aan de Rol &apos;[ROLE_NAME]&apos; toe te voegen.
-
- *WAARSCHUWING*
- Elk lid in de Rol met deze Bekwaamheid kan zichzelf - en elk ander lid - alle Bekwaamheden geven, zich daarmee verheffend tot bijna Eigenaar mogelijkheden.
-
-Deze Bekwaamheid toevoegen aan &apos;[ROLE_NAME]&apos;?
-		<usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="ClickPublishHelpLand">
-		Het selecteren van de &quot;Publiceer in Zoeken&quot; optie
-Het aan vinken van deze optie zal:
-- dit perceel weergeven in de zoek resultaten
-- de publieke objecten van dit perceel weergeven
-- dit perceel in web zoeken weergeven
-	</notification>
-	<notification name="ClickSoundHelpLand">
-		Media en muziek kunnen alleen binnen het perceel ervaren worden. Geluid- en voice-opties kunnen worden beperkt tot het perceel of zullen worden gehoord door inwoners buiten het perceel, gebaseerd op hun inhoudscategorie. Ga naar de kennisbank om meer te leren over hoe deze opties ingesteld kunnen worden.
-		<url name="url">
-			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=5046
-		</url>
-    <usetemplate
-     name="okcancelbuttons"
-     yestext="Ga naar kennisbank"
-	 notext="Sluiten" />
-	</notification>
-	<notification name="ClickSearchHelpAll">
-		Zoekresultaten zijn georganiseerd op basis van het tabblad waar u zich in bevindt, uw inhoudscategorie, de gekozen categorie en andere factoren. Kijk alstublieft in de kennisbank voor meer details.
-		<url name="url">
-			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=4722
-		</url>
-    <usetemplate
-     name="okcancelbuttons"
-     yestext="Ga naar kennisbank"
-	 notext="Sluiten" />
-	</notification>
-	<notification name="ClickPublishHelpLandDisabled">
-		U kunt dit perceel niet zichtbaar maken in zoeken omdat het zich in een regio bevindt dat dit niet toelaat
-	</notification>
-	<notification name="ClickPublishHelpAvatar">
-		Het selecteren van &quot;Weergeven in Zoeken&quot; zal weergeven:
-- mijn profiel in de zoek resultaten
-- een link naar mijn profiel in de publieke groep pagina&apos;s
-	</notification>
-	<notification name="ClickPartnerHelpAvatar">
-		U kunt een andere Inwoner ten huwelijk vragen of een bestaand partner schap verbreken via de [SECOND_LIFE] website.
-
-Naar de [SECOND_LIFE] website gaan voor meer informatie over partner schap?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Ga naar Pagina"/>
-	</notification>
-	<notification name="ClickUploadHelpPermissions">
-		Uw standaard permissies werken mogelijk niet in oudere regio&apos;s.
-	</notification>
-	<notification name="ClickWebProfileHelpAvatar">
-		Als een Inwoner een web profiel URL heeft ingesteld:
-* Klik op &apos;Laden&apos; om de pagina in deze web tab te zien.
-* Klik op Laden &gt; &apos;In externe browser&apos; om de pagina in uw standaard browser te zien
-* Klik op Laden &gt; &apos;Thuis pagina URL&apos; om terug te keren naar het web profiel van deze Inwoner indien U verder genavigeerd bent.
-
-Indien u uw eigen profiel bekijkt, kunt U elke willekeurige URL opgeven als uw web profiel en op OK klikken om het in te stellen.
-Andere Inwoners kunnen de door U opgegeven URL bezoeken indien zij uw profiel bekijken.
-	</notification>
-	<notification name="JoinGroupCanAfford">
-		Deelname aan deze groep kost L$[COST].
-Wilt u doorgaan?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Deelnemen"/>
-	</notification>
-	<notification name="JoinGroupCannotAfford">
-		Deelname aan deze groep kost L$[COST].
-U heeft niet genoeg L$ om deel te kunnen nemen aan deze groep.
-	</notification>
-	<notification name="LandBuyPass">
-		Voor L$[COST] krijgt u toegang tot het land (&apos;[PARCEL_NAME]&apos;) voor de duur van [TIME] uur.
-
-Een pas kopen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="SalePriceRestriction">
-		De verkoopprijs moet ingesteld staan op meer dan L$0 indien u aan iemand verkoopt.
-Kies een individu indien u het voor L$0 verkoopt.
-	</notification>
-	<notification name="ConfirmLandSaleChange">
-		De geselecteerde [LAND_SIZE] m² land is te koop gezet.
-Uw verkoopprijs is L$[SALE_PRICE] en zal geautoriseerd worden voor verkoop door [NAME].
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmLandSaleToAnyoneChange">
-		ATTENTIE: Het aanklikken van &apos;verkoop aan iedereen&apos; zal uw land beschikbaar maken aan de gehele [SECOND_LIFE] gemeenschap, zo ook diegenen niet in deze regio!
-
-De geselecteerde [LAND_SIZE] m² land is te koop gezet.
-Uw verkoopprijs is L$[SALE_PRICE] en zal geautoriseerd worden voor verkoop door [NAME].
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsDeededToGroup">
-		Weet u zeker dat u alle met de groep &apos;[NAME]&apos; gedeelde objecten van dit perceel wilt retourneren naar de inventaris van hun vorige eigenaren?
-
-*WAARSCHUWING* Dit zal alle niet-overdraagbare aan de groep toegekende objecten verwijderen!
-
-Objecten: [N]
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsOwnedByUser">
-		Weet u zeker dat u alle objecten van Inwoner &apos;[NAME]&apos; op dit perceel wilt retourneren naar hun inventaris?
-
-Objecten: [N]
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsOwnedBySelf">
-		Weet u zeker dat u al uw eigen objecten op dit perceel wilt retourneren naar uw inventaris?
-
-Objecten: [N]
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsNotOwnedBySelf">
-		Weet u zeker dat u alle objecten op dit perceel die geen eigendom van u zijn wilt retourneren naar de inventaris van hun eigenaren?
-Overdraagbare objecten toegekend aan de groep zullen worden geretourneerd naar de oorspronkelijke eigenaren.
-
-*WAARSCHUWING* Dit zal alle niet-overdraagbare aan de groep toegekende objecten verwijderen!
-
-Objecten: [N]
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsNotOwnedByUser">
-		Weet u zeker dat u alle objecten op dit perceel die GEEN eigendom zijn van [NAME] wilt retourneren naar de inventaris van hun eigenaar? Overdraagbare objecten toegekend aan de groep zullen worden geretourneerd naar de oorspronkelijke eigenaren.
-
-*WAARSCHUWING* Dit zal alle niet-overdraagbare aan de groep toegekende objecten verwijderen!
-
-Objecten: [N]
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ReturnAllTopObjects">
-		Weet u zeker dat u alle weergegeven objecten wilt retourneren naar de inventaris van hun eigenaar?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="DisableAllTopObjects">
-		Weet u zeker dat u alle objecten in deze regio uit wilt schakelen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsNotOwnedByGroup">
-		Alle objecten op dit perceel die NIET gedeeld worden met de groep [NAME] retourneren naar hun eigenaren?
-
-Objecten: [N]
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="UnableToDisableOutsideScripts">
-		Kan scripts niet uitschakelen.
-Voor de hele regio is letsel ingeschakeld.
-Scripts moeten toegestaan worden om wapens te kunnen laten werken.
-	</notification>
-	<notification name="MustBeInParcel">
-		U moet binnen een perceel staan om het Landings Punt in te stellen.
-	</notification>
-	<notification name="PromptRecipientEmail">
-		Geef alstublieft een geldig email adres op van de ontvanger(s).
-	</notification>
-	<notification name="PromptSelfEmail">
-		Voer uw email adres in.
-	</notification>
-	<notification name="PromptMissingSubjMsg">
-		Foto e-mailen met het standaard onderwerp of bericht?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ErrorProcessingSnapshot">
-		Fout opgetreden met het verwerken van de foto gegevens
-	</notification>
-	<notification name="ErrorEncodingSnapshot">
-		Fout opgetreden met het coderen van de foto.
-	</notification>
-	<notification name="ErrorUploadingPostcard">
-		Er is een probleem met het verzenden van de foto vanwege de volgende reden: [REASON]
-	</notification>
-	<notification name="ErrorUploadingReportScreenshot">
-		Er is een probleem met het uploaden van de rapport foto vanwege de volgende reden: [REASON]
-	</notification>
-	<notification name="MustAgreeToLogIn">
-		U moet akkoord gaan met de Voorwaarden van Dienstverlening (Terms of Service) om in te kunnen loggen in [SECOND_LIFE].
-	</notification>
-	<notification name="CouldNotPutOnOutfit">
-		Kon de outfit niet aan doen.
-De outfit folder bevat geen kleding, lichaamsdelen of externe bevestigingen.
-	</notification>
-	<notification name="CannotWearTrash">
-		U kunt geen kleding of lichaamsdelen aan trekken die zich in de vuilnisbak bevinden.
-	</notification>
-	<notification name="CannotWearInfoNotComplete">
-		U kunt dat item niet aantrekken omdat het nog niet geladen is. Probeer het over een minuut opnieuw.
-	</notification>
-	<notification name="MustHaveAccountToLogIn">
-		Oeps! Iets is nog leeg.
-U moet zowel de voornaam als de achternaam van uw avatar opgeven.
-
-U heeft een account nodig om [SECOND_LIFE] binnen te gaan. Wilt u er nu een maken?
-		<url name="url">
-			https://join.secondlife.com/index.php?lang=nl-NL
-		</url>
-		<usetemplate name="okcancelbuttons" notext="Probeer het opnieuw" yestext="Maak een nieuw account"/>
-	</notification>
-	<notification name="AddClassified">
-		Geclassificeerde advertenties verschijnen een week lang in de &apos;Advertentie&apos; sectie van de Zoek gids en op www.secondlife.com.
-Vul uw advertentie in en klik op &apos;Publiceer...&apos; om het toe te voegen aan de gids.
-Er zal u om een prijs worden gevraagd als u deze gaat publiceren.
-Indien u meer betaald zal uw advertentie hoger in de lijst verschijnen en ook hoger als men op sleutelwoorden zoekt.
-		<usetemplate ignoretext="Indien u een advertentie toevoegt" name="okcancelignore" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="DeleteClassified">
-		Advertentie &apos;[NAME]&apos; verwijderen?
-Betaalde advertentiekosten zullen niet worden terug gestort.
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ClassifiedSave">
-		Wijzigingen in advertentie [NAME] opslaan?
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Niet Opslaan" yestext="Opslaan"/>
-	</notification>
-	<notification name="DeleteAvatarPick">
-		Favoriet [PICK] verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="PromptGoToEventsPage">
-		Naar de [SECOND_LIFE] evenementen web pagina gaan?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="SelectProposalToView">
-		Kies alstublieft een voorstel om in te zien.
-	</notification>
-	<notification name="SelectHistoryItemToView">
-		Kies alstublieft een geschiedenis item om in te zien.
-	</notification>
-	<notification name="ResetShowNextTimeDialogs">
-		Wilt u alle Pop-Up&apos;s opnieuw inschakelen die u eerder aanmerkte als &apos;Laat mij niet opnieuw zien&apos;?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="SkipShowNextTimeDialogs">
-		Wilt u alle Pop-Up&apos;s uitschakelen die overgeslagen kunnen worden?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="CacheWillClear">
-		De cache zal geleegd worden als u [APP_NAME] opnieuw start.
-	</notification>
-	<notification name="CacheWillBeMoved">
-		De cache zal verplaatst worden als u [APP_NAME] opnieuw start.
-Opmerking: Dit zal de Cache legen.
-	</notification>
-	<notification name="ChangeConnectionPort">
-		Poort instelling zullen effect hebben nadat u [APP_NAME] opnieuw start.
-	</notification>
-	<notification name="ChangeSkin">
-		De nieuwe skin zal verschijnen nadat u [APP_NAME] opnieuw start.
-	</notification>
-	<notification name="GoToAuctionPage">
-		Ga naar de [SECOND_LIFE] web pagina om de veiling details te zien of een bod uit te brengen.
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="SaveChanges">
-		Wijzigingen Opslaan?
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Niet Opslaan" yestext="Opslaan"/>
-	</notification>
-	<notification name="GestureSaveFailedTooManySteps">
-		Gebaar opslaan is niet gelukt.
-Dit gebaar heeft te veel stappen.
-Probeer enkele stappen te verwijderen en opnieuw op te slaan.
-	</notification>
-	<notification name="GestureSaveFailedTryAgain">
-		Gebaar opslaan is niet gelukt. Probeer het over enkele ogenblikken opnieuw.
-	</notification>
-	<notification name="GestureSaveFailedObjectNotFound">
-		Kon het gebaar niet opslaan omdat het object of bijbehorende object niet in de inventaris kon worden gevonden.
-
-Het object kan buiten bereik of mogelijk verwijderd zijn.
-	</notification>
-	<notification name="GestureSaveFailedReason">
-		Er was een probleem met het opslaan van het gebaar vanwege de volgende reden: [REASON].  Probeert u het gebaar later nogmaals op te slaan.
-	</notification>
-	<notification name="SaveNotecardFailObjectNotFound">
-		Kon de notitiekaart niet opslaan omdat het object of bijbehorende object niet in de inventaris kon worden gevonden.
-
-Het object kan buiten bereik of mogelijk verwijderd zijn.
-	</notification>
-	<notification name="SaveNotecardFailReason">
-		Er was een probleem met het opslaan van de notitiekaart vanwege de volgende reden: [REASON].  Probeert u de notitiekaart later nogmaals op te slaan.
-	</notification>
-	<notification name="ScriptCannotUndo">
-		Kon niet alle wijzigingen ongedaan maken in uw versie van het script.
-Wilt u de laatst op de server opgeslagen versie laden?
-(**Waarschuwing** Deze operatie kan niet ongedaan gemaakt worden.)
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="SaveScriptFailReason">
-		Er was een probleem met het opslaan van een script vanwege de volgende reden: [REASON].  Probeert u het script later nogmaals op te slaan.
-	</notification>
-	<notification name="SaveScriptFailObjectNotFound">
-		Kon het script niet opslaan omdat het object waar het in zit niet gevonden kon worden.
-Het object kan buiten bereik of mogelijk verwijderd zijn.
-	</notification>
-	<notification name="SaveBytecodeFailReason">
-		Er was een probleem met het opslaan van een gecompileerd script vanwege de volgende reden: [REASON].  Probeert u het script later nogmaals op te slaan.
-	</notification>
-	<notification name="CouldNotStartStopScript">
-		Kon het script niet starten of stoppen omdat het object wat het in zit niet gevonden kon worden.
-Het object kan buiten bereik of mogelijk verwijderd zijn.
-	</notification>
-	<notification name="CannotDownloadFile">
-		Kon het bestand niet downloaden
-	</notification>
-	<notification name="CannotWriteFile">
-		Kan niet naar bestand [[FILE]] schrijven
-	</notification>
-	<notification name="UnsupportedHardware">
-		Waarschuwing: Uw systeem voldoet niet aan de [APP_NAME] minimum systeem eisen. Indien u [APP_NAME] gebruikt, ervaart u mogelijk slechte prestaties. Helaas kunnen we geen technische ondersteuning geven voor niet ondersteunde configuraties.
-
-MINSPECS
-Wilt u [_URL] bezoeken voor meer informatie?
-		<url name="url" option="0">
-			http://secondlife.com/support/sysreqs.php?lang=nl
-		</url>
-		<usetemplate ignoretext="Indien niet ondersteunde hardware gedetecteerd" name="okcancelignore" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="UnknownGPU">
-		Uw systeem heeft een grafische kaart die bij ons nog niet bekend is op dit moment.
-
-Dit is vaak het geval met nieuwe hardware waarbij wij nog niet de kans gehad hebben om het te testen. [APP_NAME] zal mogelijk naar behoren functioneren, doch het kan zijn dat u uw grafische instellingen naar geschiktere waarden zult moeten instellen.
-(Bewerken menu &gt; Voorkeuren &gt; Grafisch).
-		<form name="form">
-			<ignore name="ignore" text="Indien een onbekende grafische kaart gedetecteerd"/>
-		</form>
-	</notification>
-	<notification name="DisplaySettingsNoShaders">
-		[APP_NAME] is gestopt bij het initialiseren van de grafische stuurprogramma&apos;s.
-Grafische kwaliteit zal op zijn laagst worden ingesteld om veel voorkomende fouten met stuurprogramma&apos;s te vermijden.
-Dit zal sommige grafische opties uitschakelen.
-Wij adviseren u de stuurprogramma&apos;s van uw grafische kaart bij te werken.
-Grafische kwaliteit kan verhoogd worden in Voorkeuren &gt; Grafisch.
-	</notification>
-	<notification name="RegionNoTerraforming">
-		De regio [REGION] staat geen land aanpassingen toe.
-	</notification>
-	<notification name="CannotCopyWarning">
-		U heeft geen permissie dit item te kopiëren en zult het kwijtraken als u het weg geeft. Wilt u dit item echt aanbieden?
-		<usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="CannotGiveItem">
-		Kan inventaris item niet geven.
-	</notification>
-	<notification name="TransactionCancelled">
-		Transactie afgebroken.
-	</notification>
-	<notification name="TooManyItems">
-		Kan niet meer dan 42 items in één enkele inventaris overdracht geven.
-	</notification>
-	<notification name="NoItems">
-		U heeft geen permissie de geselecteerde items over te dragen.
-	</notification>
-	<notification name="CannotCopyCountItems">
-		U heeft geen permissie om [COUNT] geselecteerde items te kopiëren. U zult deze items uit uw inventaris kwijtraken.
-Weet u zeker dat u deze items wilt geven?
-		<usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="CannotGiveCategory">
-		U heeft geen permissie de geselecteerde map over te dragen.
-	</notification>
-	<notification name="FreezeAvatar">
-		Avatar bevriezen?
-Hij of zij zal zich tijdelijk niet kunnen bewegen, praten of interactie kunnen hebben met de wereld.
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Ontdooien" yestext="Bevriezen"/>
-	</notification>
-	<notification name="FreezeAvatarFullname">
-		Bevries [AVATAR_NAME]?
-Hij of zij zal zich tijdelijk niet kunnen bewegen, praten of interactie kunnen hebben met de wereld.
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Ontdooien" yestext="Bevriezen"/>
-	</notification>
-	<notification name="EjectAvatarFullname">
-		[AVATAR_NAME] van uw land verwijderen?
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Verwijderen en Bannen" yestext="Verwijderen"/>
-	</notification>
-	<notification name="EjectAvatarNoBan">
-		Deze avatar van u land verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Verwijder"/>
-	</notification>
-	<notification name="EjectAvatarFullnameNoBan">
-		[AVATAR_NAME] van uw land verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Verwijder"/>
-	</notification>
-	<notification name="AcquireErrorTooManyObjects">
-		VERWERVINGS FOUT: Te veel objecten geselecteerd
-	</notification>
-	<notification name="AcquireErrorObjectSpan">
-		VERWERVINGS FOUT: Objecten beslaan meer dan één regio.
-Verplaats alstublieft alle objecten die u wilt verwerven naar dezelfde regio.
-	</notification>
-	<notification name="PromptGoToCurrencyPage">
-		[EXTRA]
-
-Naar [_URL] gaan voor informatie over de aankoop L$?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="UnableToLinkObjects">
-		Kon deze [COUNT] objecten niet linken.
-U kunt maximaal [MAX] objecten linken.
-	</notification>
-	<notification name="CannotLinkIncompleteSet">
-		U kunt alleen complete sets van objecten linken en moet meer dan één object selecteren.
-	</notification>
-	<notification name="CannotLinkModify">
-		Kon niet linken omdat u geen wijziging permissies heeft op alle objecten.
-
-Wees er van overtuigd dat er geen enkele geblokkeerd is en dat ze allen uw eigendom zijn.
-	</notification>
-	<notification name="CannotLinkDifferentOwners">
-		Kon niet linken omdat niet alle objecten dezelfde eigenaar hebben.
-
-Wees er van overtuigd dat alle objecten uw eigendom zijn.
-	</notification>
-	<notification name="NoFileExtension">
-		Geen bestandsextensie voor het bestand: &apos;[FILE]&apos;
-
-Zorg dat het bestand de juiste bestandsextensie heeft.
-	</notification>
-	<notification name="InvalidFileExtension">
-		Ongeldige bestandsextensie [EXTENSION]
-Verwacht [VALIDS]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CannotUploadSoundFile">
-		Kon het geüploade geluidsbestand niet openen om te lezen:
-[FILE]
-	</notification>
-	<notification name="SoundFileNotRIFF">
-		Het bestand lijkt geen RIFF WAVE bestand te zijn:
-[FILE]
-	</notification>
-	<notification name="SoundFileNotPCM">
-		Het bestand lijkt geen PCM WAVE audio bestand te zijn:
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidChannelCount">
-		Het bestand heeft een ongeldig aantal kanalen (moet mono of stereo zijn):
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidSampleRate">
-		Het bestand lijkt geen ondersteund sample rate te hebben (moet 44.1k zijn):
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidWordSize">
-		Het bestand lijkt geen ondersteund word size te hebben (moet 8 of 16 bit zijn):
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidHeader">
-		Kon geen &apos;data&apos; chunk in WAV header vinden:
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidTooLong">
-		Audio bestand is te lang (10 seconden maximum):
-[FILE]
-	</notification>
-	<notification name="ProblemWithFile">
-		Probleem met bestand [FILE]:
-
-[ERROR]
-	</notification>
-	<notification name="CannotOpenTemporarySoundFile">
-		Kon geen tijdelijk gecomprimeerd geluidsbestand openen om naar toe te schrijven: [FILE]
-	</notification>
-	<notification name="UnknownVorbisEncodeFailure">
-		Onbekende Vorbis codeer fout in: [FILE]
-	</notification>
-	<notification name="CannotEncodeFile">
-		Kan bestand niet coderen: [FILE]
-	</notification>
-	<notification name="CorruptResourceFile">
-		Beschadigd bron bestand: [FILE]
-	</notification>
-	<notification name="UnknownResourceFileVersion">
-		Onbekende Linden bronbestandsversie in bestand: [FILE]
-	</notification>
-	<notification name="UnableToCreateOutputFile">
-		Niet mogelijk om uitvoerbestand te maken: [FILE]
-	</notification>
-	<notification name="DoNotSupportBulkAnimationUpload">
-		Wij ondersteunen momenteel geen bulk upload van animatie bestanden.
-	</notification>
-	<notification name="CannotUploadReason">
-		Niet mogelijk om bestand [FILE] te uploaden vanwege de volgende reden: [REASON]
-Probeer het later opnieuw.
-	</notification>
-	<notification name="CannotCreateLandmarkNotOwner">
-		U kunt hier geen land markering maken omdat de eigenaar van het land dit niet toestaat.
-	</notification>
-	<notification name="CannotRecompileSelectObjectsNoScripts">
-		Niet mogelijk om te &apos;her compileren&apos;.
-Selecteer een object met een script.
-	</notification>
-	<notification name="CannotRecompileSelectObjectsNoPermission">
-		Niet mogelijk om te &apos;hercompileren&apos;.
-
-Selecteer objecten met scripts waarvan u permissie heeft deze aan te passen.
-	</notification>
-	<notification name="CannotResetSelectObjectsNoScripts">
-		Kan geen &apos;Opnieuw instellen&apos; uitvoeren.
-
-Selecteer objecten met scripts.
-	</notification>
-	<notification name="CannotResetSelectObjectsNoPermission">
-		Kan geen &apos;Opnieuw instellen&apos; uitvoeren.
-
-Selecte objecten met scripts waarvan u permissie heeft deze aan te passen.
-	</notification>
-	<notification name="CannotSetRunningSelectObjectsNoScripts">
-		Kan geen enkele scripts instellen op &apos;Uitvoeren&apos;.
-
-Selecteer objecten met scripts.
-	</notification>
-	<notification name="CannotSetRunningNotSelectObjectsNoScripts">
-		Kan geen enkele scripts instellen op &apos;Niet uitvoeren&apos;.
-
-Selecteer objecten met scripts.
-	</notification>
-	<notification name="NoFrontmostFloater">
-		Geen voorgaande floating waarde om op te slaan.
-	</notification>
-	<notification name="SeachFilteredOnShortWords">
-		Uw zoek opdracht was aangepast en de woorden die te kort waren zijn verwijderd.
-
-Gezocht naar: [FINALQUERY]
-	</notification>
-	<notification name="SeachFilteredOnShortWordsEmpty">
-		Uw zoek termen waren te kort en er is geen zoekopdracht uitgevoerd.
-	</notification>
-	<notification name="CouldNotTeleportReason">
-		Kon niet Teleporteren.
-[REASON]
-	</notification>
-
-  <notification name="invalid_tport">
-Er is een probleem opgetreden bij het verwerken van uw verzoek voor een teleport. U dient wellicht opnieuw in te loggen voor uw kunt teleporteren. Wanneer u deze boodschap blijft ontvangen, controleert u dan alstublieft de Tech Support FAQ op:
-www.secondlife.com/support
-  </notification>
-  <notification name="invalid_region_handoff">
-Er is een probleem opgetreden bij het oversteken naar een andere regio. U dient wellicht opnieuw in te loggen voor uw kunt oversteken naar andere regio&apos;s. Wanneer u deze boodschap blijft ontvangen, controleert u dan alstublieft de Tech Support FAQ op:
-www.secondlife.com/support
-  </notification>
-  <notification name="blocked_tport">
-Sorry, teleport is momenteel geblokkeerd. Probeer het zo meteen opnieuw. Indien u nog steeds niet kunt teleporteren, log dan alstublieft uit en weer in om het probleem te verhelpen.
-  </notification>
-  <notification name="nolandmark_tport">
-Sorry, het systeem was niet in staat de bestemming van  de landmarkering te vinden.
-  </notification>
-  <notification name="timeout_tport">
-Sorry, het systeem was niet in staat om de teleport verbinding af te ronden. Probeer het zo meteen nog een keer.
-  </notification>
-  <notification name="noaccess_tport">
-Sorry, u heeft geen toegang tot die teleportbestemming.
-  </notification>
-  <notification name="missing_attach_tport">
-Uw bevestigingen zijn nog niet gearriveerd. Probeer nog een aantal seconden te wachten of log uit en weer in voor u probeert te teleporteren.
-  </notification>
-  <notification name="too_many_uploads_tport">
-De assetwachtrij in deze regio is momenteel volgelopen, dus uw teleportverzoek zal niet tijdig afgerond kunnen worden. Probeer het alstublieft opnieuw over een aantal minuten of ga naar een minder druk gebied.
-  </notification>
-  <notification name="expired_tport">
-Sorry, het systeem was niet in staat uw teleportverzoek tijdig af te ronden. Probeer het alstublieft opnieuw over een aantal minuten.
-  </notification>
-  <notification name="expired_region_handoff">
-Sorry, het systeem was niet in staat om het oversteken naar een andere regio tijdig af te ronden. Probeer het alstublieft opnieuw over een aantal minuten.
-  </notification>
-  <notification name="no_host">
-Kan teleportbestemming niet vinden. De bestemming is mogelijk tijdelijk niet beschikbaar of bestaat niet meer. Probeer het alstublieft opnieuw over een aantal minuten.
-  </notification>
-  <notification name="no_inventory_host">
-Het inventarissysteem is momenteel niet beschikbaar.
-  </notification>
-
-	<notification name="CannotSetLandOwnerNothingSelected">
-		Kan landeigenaar niet instellen:
-Geen perceel geselecteerd.
-	</notification>
-	<notification name="CannotSetLandOwnerMultipleRegions">
-		Kon geen land eigendom forceren omdat de selectie meerder regio&apos;s omvat.
-Selecteer alstublieft een kleiner gebied en probeer het opnieuw.
-	</notification>
-	<notification name="ForceOwnerAuctionWarning">
-		Dit perceel staat voor veiling aangemerkt. Eigendom forceren zal de veiling afbreking en kan potentieel een aantal inwoners niet erg blij maken als het bieden al is begonnen. Eigendom forceren?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="CannotContentifyNothingSelected">
-		Unable to contentify:
-Geen perceel geselecteerd.
-	</notification>
-	<notification name="CannotContentifyNoRegion">
-		Unable to contentify:
-Geen regio geselecteerd.
-	</notification>
-	<notification name="CannotReleaseLandNothingSelected">
-		Kan land niet afstaan:
-Geen perceel geselecteerd.
-	</notification>
-	<notification name="CannotReleaseLandNoRegion">
-		Kan land niet afstaan:
-kan de regio niet vinden.
-	</notification>
-	<notification name="CannotBuyLandNothingSelected">
-		Kan land niet kopen:
-Geen perceel geselecteerd.
-	</notification>
-	<notification name="CannotBuyLandNoRegion">
-		Kan land niet kopen:
-Kan de regio niet vinden waar dit land zich bevind.
-	</notification>
-	<notification name="CannotCloseFloaterBuyLand">
-		U kunt het Koop Land venster niet sluiten totdat [APP_NAME] de prijs van de transactie geschat heeft.
-	</notification>
-	<notification name="CannotDeedLandNothingSelected">
-		Kan land niet toekennen:
-Geen perceel geselecteerd.
-	</notification>
-	<notification name="CannotDeedLandNoGroup">
-		Kan land niet toekennen:
-Geen groep geselecteerd.
-	</notification>
-	<notification name="CannotDeedLandNoRegion">
-		Kan land niet toekennen:
-Kan de regio niet vinden waar dit land zich bevind.
-	</notification>
-	<notification name="CannotDeedLandMultipleSelected">
-		Kan land niet toekennen:
-Meerder percelen geselecteerd.
-
-Probeer één enkel perceel te selecteren.
-	</notification>
-	<notification name="ParcelCanPlayMedia">
-		Deze locatie van streaming media afspelen.
-
-Streaming media vereisen een snelle internet verbinding.
-
-Streaming media afspelen wanneer beschikbaar?
-(U kunt deze optie later wijzigen onder Preferenties &gt; Audio &amp; Video.)
-		<usetemplate name="okcancelbuttons" notext="Uitschakelen" yestext="Media Afspelen"/>
-	</notification>
-	<notification name="CannotDeedLandWaitingForServer">
-		Kan land niet toekennen:
-Wacht op de server om eigendom te rapporteren.
-
-Probeer het alstublieft opnieuw.
-	</notification>
-	<notification name="CannotDeedLandNoTransfer">
-		Kan land niet toekennen:
-De regio [REGION] staat geen overdracht van land toe.
-	</notification>
-	<notification name="CannotReleaseLandWatingForServer">
-		Kan land niet afstaan:
-Wacht op server om de perceel informatie bij te werken.
-
-Probeer het over enkele ogenblikken opnieuw.
-	</notification>
-	<notification name="CannotReleaseLandSelected">
-		Kan land niet afstaan:
-Niet alle geselecteerde percelen zijn uw eigendom.
-
-Kies alstublieft één perceel.
-	</notification>
-	<notification name="CannotReleaseLandDontOwn">
-		Kan land niet afstaan:
-U heeft geen permissie dit perceel vrij te geven.
-Percelen in uw eigendom verschijnen in groen.
-	</notification>
-	<notification name="CannotReleaseLandRegionNotFound">
-		Kan land niet afstaan:
-Kan de regio niet vinden waar dit land zich bevind.
-	</notification>
-	<notification name="CannotReleaseLandNoTransfer">
-		Kan land niet afstaan:
-De regio [REGION] staat geen overdracht van land toe.
-	</notification>
-	<notification name="CannotReleaseLandPartialSelection">
-		Kan land niet afstaan:
-U moet het gehele perceel selecteren om het vrij te kunnen geven.
-
-Selecteer het gehele perceel of deel het eerst op.
-	</notification>
-	<notification name="ReleaseLandWarning">
-		U staat op het punt om [AREA] m² land af te staan.
-Met het afstaan van dit perceel zal het uit uw land houderschapsoverzicht verdwijnen, maar zal u geen L$ toekennen.
-
-Dit land afstaan?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="CannotDivideLandNothingSelected">
-		Kan land niet opdelen:
-
-Geen percelen geselecteerd.
-	</notification>
-	<notification name="CannotDivideLandPartialSelection">
-		Kan land niet opdelen:
-
-U heeft het gehele perceel geselecteerd.
-Probeer een deel van het perceel te selecteren.
-	</notification>
-	<notification name="LandDivideWarning">
-		Opdelen zal het perceel in twee delen verdelen en elk perceel kan zijn eigen instellingen hebben. Sommige instellingen zullen naar de standaard waarden terugkeren als de operatie voltooid is.
-
-Land opdelen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="CannotDivideLandNoRegion">
-		Kan het land niet opdelen:
-Kan de regio niet vinden waar dit land zich bevind.
-	</notification>
-	<notification name="CannotJoinLandNoRegion">
-		Kan land niet verbinden:
-Kan de regio niet vinden waar dit land zich bevind.
-	</notification>
-	<notification name="CannotJoinLandNothingSelected">
-		Kan land niet verbinden:
-Geen perceel geselecteerd.
-	</notification>
-	<notification name="CannotJoinLandEntireParcelSelected">
-		Kan land niet verbinden:
-U heeft slechts één perceel geselecteerd.
-
-Selecteer land over beide percelen.
-	</notification>
-	<notification name="CannotJoinLandSelection">
-		Kan land niet verbinden:
-U moet meer dan één perceel selecteren.
-
-Selecteer land over beide percelen.
-	</notification>
-	<notification name="JoinLandWarning">
-		Het verbinding van dit land zal één groot perceel opleveren uit alle percelen die de rechthoek doorkruisen.
-U zult de naam en opties van het nieuwe perceel opnieuw in moeten stellen.
-
-Land verbinden?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ShowOwnersHelp">
-		Toon eigenaren: 
-Kleur percelen om het eigenaarstype te tonen.
-
-Groen = Uw land
-Aqua = Land van uw groep
-Rood = Eigendom van anderen
-Geel = Te koop
-Paars = Ter veiling
-Grijs = Openbaar
-	</notification>
-	<notification name="ConfirmNotecardSave">
-		Deze notitiekaart zal moet worden opgeslagen voordat het item kan worden gekopieerd of bekeken. Notitiekaart opslaan?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmItemCopy">
-		Dit item naar uw inventaris kopiëren?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Kopiëren"/>
-	</notification>
-	<notification name="ResolutionSwitchFail">
-		Mislukt om resolutie te verwisselen van [RESX] naar [RESY]
-	</notification>
-	<notification name="ErrorUndefinedGrasses">
-		Fout: Onbekend gras: [SPECIES]
-	</notification>
-	<notification name="ErrorUndefinedTrees">
-		Fout: Onbekende bomen: [SPECIES]
-	</notification>
-	<notification name="CannotSaveWearableOutOfSpace">
-		Kon &apos;[NAME]&apos; niet opslaan voor draagbaar item. U zult wat ruimte moeten maken op uw computer en het draagbare item opnieuw op moeten slaan.
-	</notification>
-	<notification name="CannotSaveToAssetStore">
-		Kon [NAME] niet opslaan in centrale (asset) opslag.
-Meestal is dit een tijdelijk probleem.
-Wijzig en sla het draagbaar item over een paar minuten opnieuw op.
-	</notification>
-	<notification name="YouHaveBeenLoggedOut">
-		U bent uitgelogd uit [SECOND_LIFE]:
-[MESSAGE]
-U kunt uw bestaande IM en chat bekijken door te klikken op &apos;Toon IM &amp; Chat&apos;. Anders, klik op Afsluiten om [APP_NAME] direct te verlaten.
-		<usetemplate name="okcancelbuttons" notext="Afsluiten" yestext="Toon IM &amp; Chat"/>
-	</notification>
-	<notification name="OnlyOfficerCanBuyLand">
-		Kan land niet voor de groep kopen:
-U heeft geen permissie land te kopen voor de actieve groep.
-	</notification>
-	<notification label="Vriend Toevoegen" name="AddFriend">
-		Vrienden kunnen elkaar permissie geven om elkaar te volgen op de Kaart en om Online status updates te verkrijgen.
-
-Vriendschap aanbieden aan [NAME]?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification label="Vriend Toevoegen" name="AddFriendWithMessage">
-		Vrienden kunnen elkaar permissie geven om elkaar te volgen op de Kaart en om Online status updates te verkrijgen.
-
-Vriendschap aanbieden aan [NAME]?
-		<form name="form">
-			<input name="message">
-				Wilt U mijn vriend zijn?
-			</input>
-			<button name="Offer" text="OK"/>
-			<button name="Cancel" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification name="RemoveFromFriends">
-		Wilt u [FIRST_NAME] [LAST_NAME] van uw Vriend lijst verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="RemoveMultipleFromFriends">
-		Wilt u meerder vrienden van uw Vrienden lijst verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="GodDeleteAllScriptedPublicObjectsByUser">
-		Weet u zeker dat u alle gescripte objecten wilt verwijderen eigendom van
-** [AVATAR_NAME] **
-op allen hun land in deze sim?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="GodDeleteAllScriptedObjectsByUser">
-		Weet u zeker dat u ALLE gescripte objecten wilt VERWIJDEREN eigendom van
-** [AVATAR_NAME] **
-op AL het land in deze sim?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="GodDeleteAllObjectsByUser">
-		Weet u zeker, dat u ALLE objecten (gescript of niet) wilt VERWIJDEREN eigendom van
-** [AVATAR_NAME] **
-op AL het LAND in deze sim?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="BlankClassifiedName">
-		U moet een naam opgeven voor uw advertentie.
-	</notification>
-	<notification name="MinClassifiedPrice">
-		De prijs voor weergave moet minimaal L$[MIN_PRICE] zijn.
-
-Voor alstublieft een hoger bedrag in.
-	</notification>
-	<notification name="ConfirmObjectDeleteLock">
-		Ten minste één van de geselecteerde items is geblokkeerd.
-
-Weet u zeker dat u deze items wilt verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteNoCopy">
-		Ten minste één van de geselecteerde items is niet kopieerbaar.
-
-Weet u zeker dat u deze items wilt verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteNoOwn">
-		Tenminste één van de geselecteerde items is niet uw eigendom.
-
-Weet u zeker dat u deze items wilt verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteLockNoCopy">
-		Ten minste één item is geblokkeerd.
-Ten minste één item is niet kopieerbaar.
-
-Weet u zeker dat u deze items wilt verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteLockNoOwn">
-		Ten minste één item is geblokkeerd.
-Tenminste één object is niet uw eigendom.
-
-Weet u zeker dat u deze items wilt verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteNoCopyNoOwn">
-		Ten minste één object is niet kopieerbaar.
-Tenminste één object is niet uw eigendom.
-
-Weet u zeker dat u deze items wilt verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
-		Ten minste één item is geblokkeerd.
-Ten minste één item is niet kopieerbaar.
-Tenminste één object is niet uw eigendom.
-
-Weet u zeker dat u deze items wilt verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectTakeLock">
-		Ten minste één object is geblokkeerd.
-
-Weet u zeker dat u deze items terug wilt nemen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectTakeNoOwn">
-		Niet alle objecten die u terug neemt zijn uw eigendom.
-Indien u verder gaat, worden de permissies van de volgende eigenaar er op toegepast en beperkt het u mogelijk het aan te passen of te kopiëren.
-
-Weet u zeker dat u deze items terug wilt nemen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectTakeLockNoOwn">
-		Ten minste één object is geblokkeerd.
-Niet alle objecten die u terug neemt zijn uw eigendom.
-Indien u verder gaat, worden de permissies van de volgende eigenaar er op toegepast en beperkt het u mogelijk het aan te passen of te kopiëren.
-Echter, U kunt de huidige selectie wel terugnemen.
-
-Weet u zeker dat u deze items terug wilt nemen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="CantBuyLandAcrossMultipleRegions">
-		Kan het land niet kopen omdat het meerder regio&apos;s omvat.
-
-Kiest u alstublieft een kleiner gebied en probeer het opnieuw.
-	</notification>
-	<notification name="DeedLandToGroup">
-		Voor het overdragen van dit perceel zal de groep voldoen land gebruikscredit moeten hebben en onderhouden.
-Het aankoop bedrag zal niet naar de eigenaar worden terug gestort.
-Indien een overgedragen perceel wordt verkocht, zal het verkoop bedrag gelijkmatig over de groepsleden worden verdeeld.
-
-Deze [AREA] m² land overdragen aan de groep &apos;[GROUP_NAME]&apos;?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="DeedLandToGroupWithContribution">
-		Voor het overdragen van dit perceel zal de groep voldoen land gebruikscredit moeten hebben en onderhouden.
-De overdracht zal een simultane land contributie verlangen van de groep van &apos;[FIRST_NAME] [LAST_NAME]&apos;.
-Het aankoop bedrag zal niet naar de eigenaar worden terug gestort.
-Indien een overgedragen perceel wordt verkocht, zal het verkoop bedrag gelijkmatig over de groepsleden worden verdeeld.
-
-Deze [AREA] m² land overdragen aan de groep &apos;[GROUP_NAME]&apos;?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="DisplaySetToSafe">
-		Weergave instellingen zijn op veilige waarden ingesteld omdat u de -save optie op heeft gegeven.
-	</notification>
-	<notification name="DisplaySetToRecommended">
-		Weergave instellingen zijn ingesteld op geadviseerde waarden, gebaseerd op uw systeem configuratie.
-	</notification>
-	<notification name="ErrorMessage">
-		[ERROR_MESSAGE]
-	</notification>
-	<notification name="AvatarMoved">
-		Uw [TYPE] locatie is momenteel niet beschikbaar. 
-[HELP]
-U bent naar een nabij gelegen regio verplaatst.
-	</notification>
-	<notification name="ClothingLoading">
-		Uw kleding wordt nog steeds geladen.
-U kunt [SECOND_LIFE] normaal gebruiken en anderen zullen u correct zien.
-		<form name="form">
-			<ignore name="ignore" text="Indien kleding een erg lange tijd in beslag neemt om de laden"/>
-		</form>
-	</notification>
-	<notification name="FirstRun">
-		[APP_NAME] installatie compleet.
-
-Als dit de eerste keer is dat u [SECOND_LIFE] gebruikt, zult u een account aan moeten maken voordat u in kan loggen.
-Terugkeren naar [https://join.secondlife.com/index.php?lang=nl-NL secondlife.com] om een nieuw account aan te maken?
-		<usetemplate name="okcancelbuttons" notext="Doorgaan" yestext="Nieuw Account..."/>
-	</notification>
-	<notification name="LoginPacketNeverReceived">
-		Wij hebben problemen verbinding te maken. Er zou een probleem kunnen zijn met uw internet verbinding of met de [SECOND_LIFE] servers.
-
-U kunt uw internet verbinding controleren en het over een paar minuten opnieuw proberen, op Help klikken om verbinding te maken met onze support website, of klik op Teleporteren om een poging te doen naar uw thuis locatie te teleporteren.
-		<form name="form">
-			<button name="OK" text="OK"/>
-			<button name="Help" text="Help"/>
-			<button name="Teleport" text="Teleport"/>
-		</form>
-	</notification>
-	<notification name="WelcomeChooseSex">
-		Uw avatar zal over enkele ogenblikken verschijnen.
-
-Gebruik de pijltjestoetsen om te lopen.
-Druk op elk gewenst moment op F1 voor Help en om meer te leren over [SECOND_LIFE].
-Kies alstublieft een mannelijk of vrouwelijke avatar. U kunt later nog van gedachten veranderen.
-		<usetemplate name="okcancelbuttons" notext="Vrouw" yestext="Man"/>
-	</notification>
-	<notification name="NotEnoughCurrency">
-		[NAME] L$ [PRICE] U heeft niet genoeg L$ om dit te doen.
-	</notification>
-	<notification name="GrantedModifyRights">
-		U heeft het recht verkregen om objecten van [FIRST_NAME] [LAST_NAME] te wijzigen.
-	</notification>
-	<notification name="RevokedModifyRights">
-		Uw recht om objecten van [FIRST_NAME] [LAST_NAME] is ingetrokken.
-	</notification>
-	<notification name="FlushMapVisibilityCaches">
-		Dit zal de Kaart cache van deze regio opschonen.
-
-Dit is eigenlijk alleen nuttig voor debugging.
-(In productie, wacht 5 minuten, dan zal de Kaart van iedereen bijgewerkt worden als ze opnieuw verbinden.)
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="BuyOneObjectOnly">
-		Kan niet meer dan één object tegelijkertijd kopen. Selecteer alstublieft slechts één object en probeer opnieuw.
-	</notification>
-	<notification name="OnlyCopyContentsOfSingleItem">
-		Kan niet de inhoud van meer dan één item per keer kopiëren.
-Kies alstublieft slechts één object en probeer het opnieuw.
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="KickUsersFromRegion">
-		Alle Inwoners in deze regio naar de thuis locatie Teleporteren?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="EstateObjectReturn">
-		Weet u zeker dat u alle objecten wilt retourneren eigendom van [USER_NAME] ?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="InvalidTerrainBitDepth">
-		Kon de regio textuur niet plaatsen:
-Terrein textuur [TEXTURE_NUM] heeft een ongeldige bit diepte van [TEXTURE_BIT_DEPTH].
-
-Vervang de textuur [TEXTURE_NUM] met een 24-bit 512x512 of een kleinere afbeelding, klik dan op opnieuw op &quot;Toepassen&quot;.
-	</notification>
-	<notification name="InvalidTerrainSize">
-		Kon de regio textuur niet plaatsen:
-Terrein textuur [TEXTURE_NUM] is te groot met [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y].
-
-Vervang de textuur [TEXTURE_NUM] met een 24-bit 512x512 of een kleinere afbeelding, klik dan op opnieuw op &quot;Toepassen&quot;.
-	</notification>
-	<notification name="RawUploadStarted">
-		Upload gestart. Het kan tot twee minuten duren, afhankelijk van u verbindings snelheid.
-	</notification>
-	<notification name="ConfirmBakeTerrain">
-		Wilt u werkelijk het huidige terrein &apos;baken&apos;, dit als middelpunt voor de verhoog/verlaag limieten instellen en als standaard instellen voor het &apos;Herstel&apos; gereedschap?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="MaxAllowedAgentOnRegion">
-		U kunt slechts [MAX_AGENTS] Toegestane Inwoners hebben.
-	</notification>
-	<notification name="MaxBannedAgentsOnRegion">
-		U kunt slechts [MAX_BANNED] Verbannen Inwoners hebben.
-	</notification>
-	<notification name="MaxAgentOnRegionBatch">
-		Een poging [NUM_ADDED] agents toe te voegen is mislukt:
-Overstijgt de [MAX_AGENTS] [LIST_TYPE] limiet met [NUM_EXCESS].
-	</notification>
-	<notification name="MaxAllowedGroupsOnRegion">
-		U kunt slechts [MAX_GROUPS] Toegestane Groepen hebben.
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Bake"/>
-	</notification>
-	<notification name="MaxManagersOnRegion">
-		U kunt slechts [MAX_MANAGER] Estate Beheerders hebben.
-	</notification>
-	<notification name="OwnerCanNotBeDenied">
-		Kan de estate eigenaar niet aan de Verbannen lijst van het estate toe voegen.
-	</notification>
-	<notification name="CanNotChangeAppearanceUntilLoaded">
-		Kan het Uiterlijk niet veranderen totdat kleding en Postuur geladen zijn.
-	</notification>
-	<notification name="ClassifiedMustBeAlphanumeric">
-		De naam van uw advertentie moet beginnen met een letter van A tot Z of een nummer.
-Leestekens zijn niet toegestaan.
-	</notification>
-	<notification name="CantSetBuyObject">
-		Kan Koop Object niet instellen omdat het object niet te koop is.
-Zet het object alstublieft te koop en probeer het opnieuw.
-	</notification>
-	<notification name="FinishedRawDownload">
-		Download van raw terrein bestand geëindigd naar:
-[DOWNLOAD_PATH].
-	</notification>
-	<notification name="DownloadWindowsMandatory">
-		Een nieuwe versie van [APP_NAME] is beschikbaar.
-[MESSAGE]
-U moet deze update downloaden om [APP_NAME] te kunnen gebruiken.
-		<usetemplate name="okcancelbuttons" notext="Afsluiten" yestext="Download"/>
-	</notification>
-	<notification name="DownloadWindows">
-		Een bijgewerkte versie van [APP_NAME] is beschikbaar.
-[MESSAGE]
-Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren.
-		<usetemplate name="okcancelbuttons" notext="Doorgaan" yestext="Download"/>
-	</notification>
-	<notification name="DownloadWindowsReleaseForDownload">
-		Een bijgewerkte versie van [APP_NAME] is beschikbaar.
-[MESSAGE]
-Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren.
-		<usetemplate name="okcancelbuttons" notext="Doorgaan" yestext="Download"/>
-	</notification>
-	<notification name="DownloadMacMandatory">
-		Een nieuwe versie van [APP_NAME] is beschikbaar.
-[MESSAGE]
-U moet deze update downloaden om [APP_NAME] te kunnen gebruiken.
-
-Downloaden naar uw Applicatie Data map?
-		<usetemplate name="okcancelbuttons" notext="Afsluiten" yestext="Download"/>
-	</notification>
-	<notification name="DownloadMac">
-		Een bijgewerkte versie van [APP_NAME] is beschikbaar.
-[MESSAGE]
-Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren.
-
-Downloaden naar uw Applicatie Data map?
-		<usetemplate name="okcancelbuttons" notext="Doorgaan" yestext="Download"/>
-	</notification>
-	<notification name="DownloadMacReleaseForDownload">
-		Een bijgewerkte versie van [APP_NAME] is beschikbaar.
-[MESSAGE]
-Deze update is niet vereist, maar wij raden aan dat u het installeert om de prestaties en stabiliteit te verbeteren.
-
-Downloaden naar uw Applicatie Data map?
-		<usetemplate name="okcancelbuttons" notext="Doorgaan" yestext="Download"/>
-	</notification>
-	<notification name="DeedObjectToGroup">
-		Dit object overdragen aan de groep zal de groep:
-* L$ ontvangen als betaald in het object
-		<usetemplate ignoretext="Bij objecten die overgedragen worden aan groepen" name="okcancelignore" notext="Annuleren" yestext="Overdragen"/>
-	</notification>
-	<notification name="WebLaunchExternalTarget">
-		Uw systeem browser openen om deze inhoud te bekijken?
-		<usetemplate ignoretext="Bij openen van systeem browser om de webpagina te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchJoinNow">
-		Naar www.secondlife.com gaan om uw account te beheren?
-		<usetemplate ignoretext="Bij openen van webbrowser om uw account te beheren" name="okcancelignore" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchSecurityIssues">
-		Bezoek de [SECOND_LIFE] Wiki voor details over hoe een Veiligheids Probleem (Security Issue) te rapporteren.
-		<usetemplate ignoretext="Bij openen webbrowser om de Veiligheids Problemen Wiki (Security Issues Wiki) te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchQAWiki">
-		Bezoek de [SECOND_LIFE] QA Wiki (Kwaliteitsbeheersing Wiki).
-		<usetemplate ignoretext="Bij openen webbrowser om de QA Wiki (Kwaliteitsbeheersing Wiki) te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchPublicIssue">
-		Bezoek de [SECOND_LIFE] Publieke problemenlijst, waar u Bugs en andere Problemen kunt rapporteren.
-		<usetemplate ignoretext="Bij openen webbrowser om de Publieke problemenlijst te bekijken" name="okcancelignore" notext="Annuleren" yestext="Ga naar pagina"/>
-	</notification>
-	<notification name="WebLaunchPublicIssueHelp">
-		Bezoek de [SECOND_LIFE] Wiki voor informatie over het gebruik van de Publieke problemenlijst.
-		<usetemplate ignoretext="Bij openen webbrowser om de Publieke problemenlijst Wiki te bekijken" name="okcancelignore" notext="Annuleren" yestext="Ga naar pagina"/>
-	</notification>
-	<notification name="WebLaunchSupportWiki">
-		Ga naar de Officiële Linden Blog voor het laatste Nieuws en Informatie.
-		<usetemplate ignoretext="Bij openen webbrowser om de blog te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchLSLGuide">
-		Naar de Script Gids gaan voor hulp met scripten?
-		<usetemplate ignoretext="Bij openen webbrowser om de Script Gids te bekijken" name="okcancelignore" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchLSLWiki">
-		Naar de LSL Portaal gaan voor hulp met scripten?
-		<usetemplate ignoretext="Bij openen webbrowser om de LSL Portal te bekijken" name="okcancelignore" notext="Annuleren" yestext="Ga naar pagina"/>
-	</notification>
-	<notification name="ReturnToOwner">
-		Weet u zeker dat u de geselecteerde objecten wilt retourneren naar de eigenaren?
-Overdraagbare toegekende objecten zullen naar de oorspronkelijke eigenaren worden geretourneerd.
-
-*WAARSCHUWING* Niet overdraagbare toegekende objecten zullen worden verwijderd!
-		<usetemplate ignoretext="Bij retourneren objecten naar de eigenaren" name="okcancelignore" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="GroupLeaveConfirmMember">
-		U bent momenteel een lid van de groep [GROUP].
-Groep Verlaten?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmKick">
-		Weet u HEEL ZEKER dat u alle gebruikers uit het grid wilt verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Verwijder Alle Gebruikers"/>
-	</notification>
-	<notification name="MuteLinden">
-		Sorry, u kunt geen Linden Negeren
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CannotStartAuctionAlreadyForSale">
-		U kunt geen veiling starten op een perceel dat al te koop is gezet. Schakel de landverkoop uit wanneer u zeker bent dat u een veiling wil starten.
-	</notification>
-	<notification label="Negeren van object mislukt" name="MuteByNameFailed">
-		U heeft deze naam al genegeerd.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="RemoveItemWarn">
-		Alhoewel toegestaan, verwijderen van de inhoud kan het object beschadigen. Wilt u dit item verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="CantOfferCallingCard">
-		Kan op dit moment geen visitekaart aanbieden. Probeer het alstublieft later opnieuw.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CantOfferFriendship">
-		Kan op dit moment geen vriendschap aanbieden. Probeer het alstublieft later opnieuw.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="BusyModeSet">
-		Niet Storen modus ingesteld.
-
-Chat and instant messages zullen verborgen blijven. Instant messages zullen uw Niet Storen melding krijgen. Alle teleport aanbiedingen zullen worden afgewezen. Alle inventaris aanbiedingen zullen in uw Vuilnisbak terecht komen.
-		<usetemplate ignoretext="Bij instellen Niet Storen modus" name="okignore" yestext="OK"/>
-	</notification>
-	<notification name="JoinedTooManyGroupsMember">
-		U ben lid van teveel groepen om lid te worden van een andere. Verlaat op zijn minst één groep alvorens lid te worden van een andere of weiger de lidmaatschap aanbieding.
-Om een groep te verlaten, selecteer de &apos;Groep..&apos; optie via het &apos;Bewerken&apos; menu.
-
-[NAME] heeft u uitgenodigd om lid te worden van de groep als algemeen lid.
-
-[INVITE]
-		<usetemplate name="okcancelbuttons" notext="Afslaan" yestext="Lid worden"/>
-	</notification>
-	<notification name="KickUser">
-		Verwijder deze gebruiker met welk bericht?
-		<form name="form">
-			<input name="message">
-				Een administrator heeft u uitgelogd.
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification name="KickAllUsers">
-		Verwijder iedereen momenteel op het grid met welk bericht?
-		<form name="form">
-			<input name="message">
-				Een administrator heeft u uitgelogd.
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification name="FreezeUser">
-		Bevries deze gebruiker met welk bericht?
-		<form name="form">
-			<input name="message">
-				U bent bevroren. U kunt zich niet verplaatsen of praten. Een administrator zal contact met u opnemen via instant message (IM).
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification name="UnFreezeUser">
-		Ontdooi deze gebruiker met welk bericht?
-		<form name="form">
-			<input name="message">
-				U bent niet langer bevroren.
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification name="OfferTeleport">
-		Een Teleport aanbieden naar uw locatie met welk bericht?
-		<form name="form">
-			<input name="message">
-				Voeg u bij mij in [REGION]
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification name="OfferTeleportFromGod">
-		God beveel gebruiker naar uw locatie?
-		<form name="form">
-			<input name="message">
-				Voeg u bij mij in [REGION]
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification name="TeleportFromLandmark">
-		Weet u zeker dat u wilt teleporteren?
-		<usetemplate ignoretext="Bij teleporteren via een landmarkering in inventaris" name="okcancelignore" notext="Annuleren" yestext="Teleporteren"/>
-	</notification>
-	<notification label="Bericht iedereen in uw Estate" name="MessageEstate">
-		Type een kort bericht om naar iedereen sturen die momenteel in uw Estate aanwezig is.
-		<form name="form">
-			<input name="message"/>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification label="Wijzig Linden Estate" name="ChangeLindenEstate">
-		U staat op het punt een Linden beheerde Estate te wijzigen mainland, teen grid, orientation, etc.).
-
-Dit is EXTREEM GEVAARLIJK om het fundamenteel de gebruikers ervaring kan aantasten.
-Op het mainland zal het duizenden regionen wijzigen en de spaceserver kan storingen vertonen.
-
-Doorgaan?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification label="Wijzig Linden Estate Toegang" name="ChangeLindenAccess">
-		U staat op het punt de toegangslijst van een Linden Estate eigendom aan te passen (mainland, teen grid, orientation, etc.).
-
-Dit is GEVAARLIJK en zou alleen gedaan moeten worden om de hack toe te staan om objecten/L$ over te dragen in/uit het grid.
-Het zal het duizenden regionen wijzigen en de spaceserver kan storingen vertonen.
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification label="Selecteer Estate" name="EstateAllowedAgentAdd">
-		Alleen aan toegangslijst voor dit Estate toevoegen of voor [ALL_ESTATES]?
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
-	</notification>
-	<notification label="Selecteer Estate" name="EstateAllowedAgentRemove">
-		Verwijderen van toegangslijst voor alleen dit Estate of voor [ALL_ESTATES]?
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
-	</notification>
-	<notification label="Selecteer Estate" name="EstateAllowedGroupAdd">
-		Alleen aan groeps toegangslijst voor dit Estate toevoegen of voor [ALL_ESTATES]?
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
-	</notification>
-	<notification label="Selecteer Estate" name="EstateAllowedGroupRemove">
-		Verwijderen van groeps toegangslijst voor alleen dit Estate of voor [ALL_ESTATES]?
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
-	</notification>
-	<notification label="Selecteer Estate" name="EstateBannedAgentAdd">
-		Weiger toegang voor alleen dit Estate of voor [ALL_ESTATES]?
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
-	</notification>
-	<notification label="Selecteer Estate" name="EstateBannedAgentRemove">
-		Deze Inwoner van de ban lijst voor toegang voor alleen dit Estate verwijderen of voor [ALL_ESTATES]?
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
-	</notification>
-	<notification label="Selecteer Estate" name="EstateManagerAdd">
-		Estate beheerder toevoegen voor alleen dit Estate of voor [ALL_ESTATES]?
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
-	</notification>
-	<notification label="Selecteer Estate" name="EstateManagerRemove">
-		Estate beheerder verwijderen voor alleen dit Estate of voor [ALL_ESTATES]?
-		<usetemplate canceltext="Annuleren" name="yesnocancelbuttons" notext="Alle Estates" yestext="Dit Estate"/>
-	</notification>
-	<notification label="Bevestig Verwijderen" name="EstateKickUser">
-		Verwijder [EVIL_USER] van deze Estate?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="EstateChangeCovenant">
-		Weet u zeker dat u de Estate Convenant wilt wijzigen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="RegionEntryAccessBlocked">
-		U wordt niet in die regio toegelaten vanwege uw inhoudscategorie. Dit kan het gevolg zijn van een gebrek aan informatie die uw leeftijd valideert. 
-
-Verifieer alstublieft dat u de nieuwste viewer heeft geïnstalleerd en ga naar de kennisbank voor details over het betreden van gebieden met deze inhoudscategorie.
-    <usetemplate
-     name="okbutton"
-     yestext="OK"/>
-	</notification>
-	<notification name="RegionEntryAccessBlocked_KB">
-		U wordt niet in die regio toegelaten vanwege uw inhoudscategorie.
-
-Ga naar de kennisbank voor meer informatie over inhoudscategorieën?
-		<url name="url">
-			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
-		</url>
-    <usetemplate
-     name="okcancelignore"
-     yestext="Ga naar kennisbank"
-	 notext="Sluiten"
-	 ignoretext="Wanneer regiotoegang wordt geblokkeerd vanwege de inhoudscategorie"/>
-	</notification>
-	<notification name="RegionEntryAccessBlocked_Notify">
-		U wordt niet in die regio toegelaten vanwege uw inhoudscategorie.
-	</notification>
-	<notification name="RegionEntryAccessBlocked_Change">
-		U wordt niet in die regio toegelaten vanwege uw inhoudscategorie.
-
-U kunt klikken op &apos;Wijzig voorkeur&apos; om uw inhoudscategorie voorkeur nu te verhogen en toegelaten te worden. U zult in staat zijn om [REGIONMATURITY] inhoud te zoeken en benaderen vanaf dit moment. Wanneer u later deze instelling wilt wijzigen, ga dan naar Bewerken &gt; Voorkeuren... &gt; Algemeen.
-	 <form name="form">
-      <button
-       name="OK"
-       text="Wijzig voorkeur"/>
-      <button
-       default="true"
-       name="Cancel"
-       text="Sluiten"/>
-       <ignore name="ignore" text="Wanneer regiotoegang wordt geblokkeerd vanwege de inhoudscategorie voorkeur"/>
-    </form>
-	</notification>
-	<notification name="LandClaimAccessBlocked">
-		U kunt dit land niet opeisen vanwege uw inhoudscategorie. Dit kan het gevolg zijn van een gebrek aan informatie die uw leeftijd valideert. 
-
-Verifieer alstublieft dat u de nieuwste viewer heeft geïnstalleerd en ga naar de kennisbank voor details over het betreden van gebieden met deze inhoudscategorie.
-    <usetemplate
-     name="okbutton"
-     yestext="OK"/>
-	</notification>
-	<notification name="LandClaimAccessBlocked_KB">
-		U kunt dit land niet opeisen vanwege uw inhoudscategorie.
-
-Ga naar de kennisbank voor meer informatie over inhoudscategorieën?
-		<url name="url">
-			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
-		</url>
-    <usetemplate
-     name="okcancelignore"
-     yestext="Ga naar kennisbank"
-	 notext="Sluiten"
-	 ignoretext="Wanneer het opeisen van land wordt geblokkeerd vanwege de inhoudscategorie"/>
-	</notification>
-	<notification name="LandClaimAccessBlocked_Notify">
-		U kunt dit land niet opeisen vanwege uw inhoudscategorie.
-	</notification>
-	<notification name="LandClaimAccessBlocked_Change">
-		U kunt dit land niet opeisen vanwege uw inhoudscategorie voorkeur. 
-
-U kunt klikken op &apos;Wijzig voorkeur&apos; om uw inhoudscategorie voorkeur nu te verhogen en toegang te krijgen om binnen te treden. U zult in staat zijn om [REGIONMATURITY] inhoud vanaf nu te zoeken en benaderen. Wanneer u deze instelling later terug wilt zetten, gaat u naar Bewerken &gt; Voorkeuren... &gt; Algemeen.
-    <usetemplate
-     name="okcancelignore"
-     yestext="Wijzig voorkeur"
-	 notext="Sluiten"
-	 ignoretext="Wanneer het opeisen van land wordt geblokkeerd vanwege de inhoudscategorie voorkeur"/>
-	</notification>
-	<notification name="LandBuyAccessBlocked">
-		U kunt dit land niet kopen vanwege uw inhoudscategorie. Dit kan het gevolg zijn van een gebrek aan informatie die uw leeftijd valideert. 
-
-Verifieer alstublieft of u de nieuwste viewer heeft geïnstalleerd en ga naar de kennisbank voor details over het betreden van gebieden met deze inhoudscategorie.
-    <usetemplate
-     name="okbutton"
-     yestext="OK"/>
-	</notification>
-	<notification name="LandBuyAccessBlocked_KB">
-		U kunt dit land niet kopen vanwege uw inhoudscategorie. 
-
-Ga naar de kennisbank voor meer informatie over inhoudscategorieën?
-		<url name="url">
-			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
-		</url>
-    <usetemplate
-     name="okcancelignore"
-     yestext="Ga naar kennisbank"
-	 notext="Sluiten"
-	 ignoretext="Wanneer een landaankoop wordt geblokkeerd vanwege de inhoudscategorie"/>
-	</notification>
-	<notification name="LandBuyAccessBlocked_Notify">
-		U kunt dit land niet kopen vanwege uw inhoudscategorie.
-	</notification>
-	<notification name="LandBuyAccessBlocked_Change">
-		U kunt dit land niet kopen vanwege uw inhoudscategorie voorkeur. 
-
-U kunt klikken op &apos;Wijzig voorkeur&apos; om uw inhoudscategorie voorkeur nu te verhogen en toegang te krijgen om binnen te treden. U zult in staat zijn om [REGIONMATURITY] inhoud vanaf nu te zoeken en benaderen. Wanneer u deze instelling later terug wilt zetten, gaat u naar Bewerken &gt; Voorkeuren... &gt; Algemeen.
-    <usetemplate
-     name="okcancelignore"
-     yestext="Wijzig voorkeur"
-	 notext="Sluiten"
-	 ignoretext="Wanneer een landaankoop wordt geblokkeerd vanwege de inhoudscategorie voorkeur"/>
-	</notification>
-	<notification name="TooManyPrimsSelected">
-		&quot;Er zijn teveel prims geselecteerd. Selecteer alstublieft [MAX_PRIM_COUNT] of minder prims en probeer opnieuw.&quot;
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ProblemImportingEstateCovenant">
-		Probleem met importeren Estate Convenant.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ProblemAddingEstateManager">
-		Problemen met het toevoegen van een Estate beheerder. Eén of meer Estates kunnen een volle beheerders lijst hebben.
-	</notification>
-	<notification name="ProblemAddingEstateGeneric">
-		Problemen met toevoegen aan deze Estate lijst. Eén of meer Estates kunnen een volle lijst hebben.
-	</notification>
-	<notification name="UnableToLoadNotecardAsset">
-		Kan de asset van de notitiekaart op dit moment niet laden.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="NotAllowedToViewNotecard">
-		Onvoldoende rechten om de notitiekaart in te zien geassocieerd met het opgevraagde asset ID.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="MissingNotecardAssetID">
-		Asset ID voor de notitiekaart ontbreekt in de database.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="PublishClassified">
-		Bedenk: kosten voor advertenties worden niet terugbetaald.
-
-Advertentie nu Publiceren voor L$[AMOUNT]?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="SetClassifiedMature">
-		Bevat deze advertentie Mature inhoud?
-    <usetemplate
-     canceltext="Annuleren"
-     name="yesnocancelbuttons"
-     notext="Nee"
-     yestext="Ja"/>
-	</notification>
-	<notification name="SetGroupMature">
-		Bevat deze groep Mature inhoud?
-    <usetemplate
-     canceltext="Annuleren"
-     name="yesnocancelbuttons"
-     notext="Nee"
-     yestext="Ja"/>
-	</notification>
-	<notification label="Bevestig herstart" name="ConfirmRestart">
-		Wilt u deze regio echt binnen 2 minuten herstarten?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification label="Bericht iedereen in deze regio" name="MessageRegion">
-		Type een kort bericht om naar iedereen sturen die momenteel in regio aanwezig is.
-		<form name="form">
-			<input name="message"/>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification label="Weiger Land aanpassingen" name="HelpRegionBlockTerraform">
-		Indien dit aan gevinkt kunnen landeigenaren geen terrein bewerkingen doen op hun land, ongeacht de per perceel ingestelde waarde voor &apos;Wijzig Terrein&apos;
-
-Standaard: uitgeschakeld
-	</notification>
-	<notification label="Blokkeer Vliegen" name="HelpRegionBlockFly">
-		Indien dit is aan gevinkt kunnen personen niet vliegen in deze regio ongeacht de per perceel ingestelde waarde &apos;Vliegen&apos;
-
-Standaard: uitgeschakeld
-	</notification>
-	<notification label="Bulkwijzigen Inhoudpermissies" name="HelpBulkPermission">
-		Het Bulkpermissiesgereedschap helpt u om snel de permissies op meerdere items in de inhoud van het geselecteerde object te wijzigen. Let echter op dat u alleen de permissies op de items in de Inhoud van de geselecteerde objecten instelt -- niet de permissies van het containerobject zelf. 
-
-Merk ook op dat de permissies niet worden toegepast op de geneste inhoud van de items in Inhoud. Uw verzoek werkt alleen op items precies één niveau diep. 
-
-U kunt selectief kiezen welke soorten objecten te wijzigen door gebruik te maken van de checklist onder &apos;Inhoud Types&apos; hier. Foto&apos;s worden opgenomen wanneer u Texturen selecteert.
-
-* Dit gereedschap is alleen succesvol in het wijzigen van permissies op objecten die u mag wijzigen. 
-* U kunt geen &apos;Volgende Eigenaar&apos; permissies toekennen die u niet al bezit. 
-* De &apos;Volgende Eigenaar&apos; permissies zijn slechts verzoeken. Indien een item niet alle nieuwe permissies kan overnemen, zal geen van zijn permissies wijzigen. 
-
-Wanneer u klaar bent om de permissies in bulk te wijzigen, klik dan &apos;Toepassen&apos; en wacht tot de resultaten worden weergegeven. 
-
-Indien u het Bulkpermissies venster sluit terwijl permissies gewijzigd worden, zal de verwerking gestopt worden. 
-	</notification>
-	<notification label="Sta Letsel Toe" name="HelpRegionAllowDamage">
-		Indien dit is aan gevinkt stelt het Letsel systeem in voor alle percelen, ongeacht de individuele instellingen op de percelen. Indien uitgeschakeld, kunnen perceel eigenaren het Letsel systeem op hun perceel activeren.
-
-Standaard: uitgeschakeld
-	</notification>
-	<notification label="Agent Limiet" name="HelpRegionAgentLimit">
-		Stelt het maximale aantal toegestane avatars in voor deze regio.
-De prestaties kunnen variëren afhankelijk van het aantal aanwezige avatars.
-
-Standaard: 40
-	</notification>
-	<notification label="Object Bonus" name="HelpRegionObjectBonus">
-		De Object Bonus is een vermeerderaar voor primitieven op een willekeurig perceel.
-Het bereik is van 1 tot 10. Ingesteld op &apos;1&apos; kan elk 512m² perceel 117 objecten bevatten. Ingesteld op &apos;2&apos; kan elk 512m² perceel 234 objecten bevatten, enzovoort. Het maximale aantal objecten blijft 15.000, ongeacht wat de Object Bonus is. Denk er aan, dat eenmaal ingesteld, het verlagen van de Object Bonus het retourneren of verwijderen van objecten tot gevolg kan hebben.
-
-Standaard: 1.0
-	</notification>
-	<notification label="Inhoudscategorie:" name="HelpRegionMaturity">
-		Stelt de inhoudscategorie van de regio in, zoals getoond in de menubalk bovenaan de viewer van elke inwoner en in tooltips op de wereldkaart wanneer de aanwijzer boven deze regio zweeft. Deze instelling heeft ook invloed op de toegang tot deze regio en zoekresultaten. Andere inwoners kunnen alleen regio&apos;s binnengaan of zoekresultaten zien met dezelfde inhoudscategorie als die zij zelf hebben gekozen in hun voorkeuren. 
-
-Het kan enige tijd duren voordat deze wijziging zichtbaar is op de wereldkaart.
-	</notification>
-	<notification label="Beperk Duwen" name="HelpRegionRestrictPushObject">
-		Deze instelling stelt de hele regio in op beperkte duwen permissies.
-Indien aan gevinkt kunnen Inwoners alleen door hun zelf geduwd worden of door de perceel eigenaar.
-
-(Push (Duwen) verwijst naar de llPushObject() LSL functie)
-
-Standaard: Uitgeschakeld
-	</notification>
-	<notification label="Perceel Samenvoegen/Opsplitsen" name="HelpParcelChanges">
-		Deze instelling stel in of percelen die niet van de estate eigenaar zijn kunnen worden samengevoegd of opgesplitst.
-
-Indien niet aan gevinkt:
- * Alleen Estate eigenaren of beheerders kunnen percelen samenvoegen op opsplitsen.
- * Zij kunnen alleen percelen samenvoegen of opsplitsen die eigendom zijn van de eigenaar of van een groep met de juiste bevoegdheden.
-
-Indien aan gevinkt:
- * Alle perceel eigenaren kunnen percelen samenvoegen of opsplitsen die zij bezitten.
- * Voor percelen in Groep eigendom, kunnen alleen zij met de juiste rechten percelen samenvoegen of opsplitsen.
-
-Standaard: Ingeschakeld
-	</notification>
-	<notification label="Niet in Zoeken tonen" name="HelpRegionSearch">
-		Deze optie aan vinken zal perceel eigenaren blokkeren hun perceel in Zoeken te tonen.
-
-Standaard: Uitgeschakeld
-	</notification>
-	<notification label="Regio Volwassenen Gewijzigd" name="RegionMaturityChange">
-		De Volwassen instelling voor deze regio is bijgewerkt.
-Het kan enige tijd duren voordat de wijziging zichtbaar is op de Kaart.
-	</notification>
-	<notification label="Land Herverkoop" name="HelpRegionLandResell">
-		Estate eigenaren en beheerders kunnen elk stuk land verkopen in eigendom van de Estate eigenaar.
-
-Indien deze optie niet is aan gevinkt, kunnen kopers hun land in deze regio niet verkopen.
-Indien deze optie is aan gevinkt, kunnen kopers hun land in deze regio verkopen.
-
-Standaard: Niet toestaan
-	</notification>
-	<notification label="Scripts Uitschakelen" name="HelpRegionDisableScripts">
-		Indien de sim prestaties slecht zijn, kan een script de oorzaak zijn. Open de Statistieken balk (Ctrl+Shift+1). Kijk naar de Simulator Fysieke FPS. Indien het lager is dan 45, open dan het Tijd paneel onderaan de Statistieken balk. Indien de Script Tijd 25 ms of hoger is, klik dan op de Top Scripts knop. U krijgt dan een naam en lokatie van scripts die mogelijk de slechte prestaties veroorzaken.
-
-Het aan vinken van Scripts Uitschakelen en vervolgens op de Toepassen knop drukken, zal tijdelijk alle scripts in deze regio uitschakelen. U zult dit mogelijk moeten doen om naar de lokatie te gaan van het &apos;top script&apos;. Eenmaal aangekomen, onderzoek dan of het script het probleem veroorzaakt. U zult mogelijk de eigenaar willen contacteren of het object willen retourneren c.q. verwijderen.
-Verwijder het vinkje van Scripts Uitschakelen en klik op Toepassen om scripts weer te reactiveren in de regio.
-
-Standaard: Uitgeschakeld
-	</notification>
-	<notification label="Botsingen Uitschakelen" name="HelpRegionDisableCollisions">
-		Indien de sim prestaties slecht zijn, kunnen fysieke objecten de oorzaak zijn. Open de Statistieken balk (Ctrl+Shift+1). Kijk naar de Simulator Fysieke FPS. Indien het lager is dan 45, open dan het Tijd paneel onderaan de Statistieken balk. Indien de Sim Tijd (Fysiek) 20 ms of hoger is, klik dan op de Toon Top Botsingen knop. U krijgt dan een naam en lokatie van de fysieke objecten die mogelijk de slecht prestaties veroorzaken.
-
-Het aan vinken van de Botsingen Uitschakelen knop en vervolgens op de Toepassen knop drukken, zal tijdelijk object-object botsingen uitschakelen. U zult dit mogelijk moeten doen om naar de lokatie te gaan van de &apos;top botsingen&apos;. Eenmaal aangekomen, onderzoek dan het object. Botst het constant met andere objecten? U zult mogelijk de eigenaar willen contacteren of het object willen retourneren c.q. verwijderen.
-Verwijder het vinkje van Botsingen Uitschakelen en klik op Toepassen om botsingen weer te reactiveren in de regio.
-
-Standaard: Uitgeschakeld
-	</notification>
-	<notification label="Fysiek Uitschakelen" name="HelpRegionDisablePhysics">
-		Fysiek Uitschakelen is gelijkwaardig aan Botsingen Uitschakelen, alleen alle fysieke simulatie is uitgeschakeld. Dit betekend dat niet alleen alle objecten zullen stoppen met botsen, maar ook dat avatars zich niet meer kunnen bewegen.
-
-Dit zou alleen gebruikt moeten worden als het uitschakelen van Botsingen niet genoeg prestatie winst geeft om een fysiek probleem of top botsingen te onderzoeken.
-
-Indien u klaar bent, wees er dan zeker van Fysiek weer in te schakelen, anders kunnen avatars zich niet meer bewegen.
-
-Standaard: Uitgeschakeld
-	</notification>
-	<notification label="Top Botsingen" name="HelpRegionTopColliders">
-		Toon een lijst van objecten van het grootste aantal potentiële object-object botsingen.
-Deze objecten kunnen een trage prestatie veroorzaken. Selecteer Beeld &gt; Statistieken Balk en kijk onder Simulator &gt; Tijd &gt; Sim Tijd (Fysiek) om te zien of meer dan 20 ms wordt gespendeerd aan fysiek.
-	</notification>
-	<notification label="Top Scripts" name="HelpRegionTopScripts">
-		Toon een lijst van objecten die de meeste tijd besteden aan het uitvoeren van LSL scripts.
-Deze objecten kunnen een trage prestatie veroorzaken. Selecteer Beeld &gt; Statistieken Balk en kijk onder Simulator &gt; Tijd &gt; Script Tijd om te zien of meer dan 25 ms wordt gespendeerd aan scripts.
-	</notification>
-	<notification label="Herstart Regio" name="HelpRegionRestart">
-		Herstart het server proces van de regio na een twee minuten waarschuwing.
-Alle Inwoners van de regio zullen de verbinding kwijt raken. De regio zal alle gegevens bewaren en zou binnen 90 seconden weer operabel moeten zijn.
-
-De regio herstarten zou de meeste prestatie problemen moeten verhelpen en zou normaal gesproken alleen gebruikt moeten worden indien aangegeven.
-	</notification>
-	<notification label="Water Hoogte" name="HelpRegionWaterHeight">
-		Dit is de hoogte in meters waarop het water verschijnt.
-Als deze instelling anders is dan 20 en u heeft water aan de rand van de wereld of u heeft &apos;ontbrekend&apos; water, zal er een gat zichtbaar zijn.
-
-Standaard: 20
-	</notification>
-	<notification label="Terrein Ophogen" name="HelpRegionTerrainRaise">
-		Dit is de hoogte in meters dat perceel eigenaren hun terrein kunnen verhogen boven de standaard &apos;baked&apos; terrein hoogte.
-
-Standaard: 4
-	</notification>
-	<notification label="Terrein Verlagen" name="HelpRegionTerrainLower">
-		Dit is de hoogte in meters dat perceel eigenaren hun terrein kunnen verlagen onder de standaard &apos;baked&apos; terrein hoogte.
-
-Standaard: -4
-	</notification>
-	<notification label="Upload RAW Terrein" name="HelpRegionUploadRaw">
-		Deze knop upload een .RAW bestand naar de regio waar u zich bevindt.
-Het bestand moet de juiste afmetingen hebben (RGB, 256x256) en 13 kanalen.
-De beste manier om een terrein bestand te maken is het downloaden van een bestaand RAW bestand. Een goede eerste stap is om het rode kanaal (land hoogte) aan te passen en dat te uploaden.
-
-De upload kan tot 45 seconden in beslag nemen. Bedenk dat het uploaden van een terrein bestand de objecten reeds aanwezig op het land *niet* zal verplaatsen, alleen het terrein zelf en de permissies geassocieerd met de percelen. Dit kan resulteren in objecten die ondergronds gaan.
-
-Voor meer informatie over het wijzigen van de hoogte velden, raadpleeg F1 Help.
-	</notification>
-	<notification label="Download RAW Terrein" name="HelpRegionDownloadRaw">
-		Deze knop download een bestand welke de hoogte veld gegevens, perceel afmetingen, perceel te koop status en sommige perceel permissies bevat voor deze regio.
-Indien u het bestand opent in een programma als Photoshop, moet u de document afmetingen opgeven, welk RGB, 256x256 met 13 kanalen is. Dit terrein bestand kan op geen enkele andere manier worden geopend.
-
-Voor meer informatie over het wijzigen van de hoogte velden, raadpleeg F1 Help.
-	</notification>
-	<notification label="Gebruik Estate Zon" name="HelpRegionUseEstateSun">
-		Dit aan vinken zorgt er voor dat de zon positie overeen komt met de zon positie in de rest van het Estate.
-
-Standaard: Ingeschakeld
-	</notification>
-	<notification label="Vaste Zon" name="HelpRegionFixedSun">
-		Dit aan vinken stelt de zon in op de positie van de Fase schuif knop en stopt het verder bewegen van de zon.
-
-Standaard: Uitgeschakeld
-	</notification>
-	<notification label="Bake Terrein" name="HelpRegionBakeTerrain">
-		Deze knop slaat de huidige vorm van het terrein op als nieuwe standaard voor de regio. Eenmaal baked, kan het land terugkeren naar de opgeslagen vorm wanneer u of anderen gebruik maken van de Wijzig Terrein &apos;Terugkeer&apos; optie. Het baked terrein is ook het uitgangspunt voor de terrein verhogings- en verlagingslimieten.
-	</notification>
-	<notification label="Estate Beheerders" name="HelpEstateEstateManager">
-		Een Estate Beheerder is een Inwoner aan wie u de controle over de regio en estate instellingen heeft uitbesteed. De Estate Beheerder kan de instellingen wijzigen in deze panels, behalve het uploaden, downloaden en terrein bakken. In bijzonder kunnen zij Inwoners toestaan of verbannen van het Estate.
-
-Estate Beheerders kunnen alleen toegevoegd of verwijderd worden door de eigenaar van het Estate, niet door elkaar. Gebruik alstublieft alleen Inwoners die u kunt vertrouwen als Estate Beheerders, omdat uiteindelijk u verantwoordelijk bent voor hun acties.
-	</notification>
-	<notification label="Gebruik Globale Tijd" name="HelpEstateUseGlobalTime">
-		Dit aan vinken zorgt ervoor dat de zon in uw estate dezelfde positie volgt als in Linden-eigendom &apos;mainland&apos; Estates.
-
-Standaard: aan
-	</notification>
-	<notification label="Vaste Zon" name="HelpEstateFixedSun">
-		Dit aan vinken stelt de zon in op de positie van de Fase schuif knop en stopt het verder bewegen van de zon.
-	</notification>
-	<notification label="Publieke Toegang" name="HelpEstateExternallyVisible">
-		Dit aan vinken geeft aan dat Inwoners die in andere Estates zijn, deze Estate kunnen bezoeken zonder op de Toegangs lijst te staan.
-
-Standaard: Ingeschakeld
-	</notification>
-	<notification label="Direct Teleporteren Toestaan" name="HelpEstateAllowDirectTeleport">
-		Indien aan gevinkt staat het Inwoners toe om direct te Teleporteren naar elke plek in uw Estate. Indien niet aan gevinkt kunnen Inwoners Teleporteren naar de dichtstbijzijnde telehub.
-
-Standaard: Uitgeschakeld
-	</notification>
-	<notification label="Toegang Toestaan" name="HelpEstateAllowResident">
-		Toegang tot dit Estate zal gelimiteerd zijn tot Inwoners in deze lijst en onderstaande groepen. Deze instelling is allen beschikbaar indien Publieke Toegang niet is aan gevinkt.
-	</notification>
-	<notification label="Groeps Toegang Toestaan" name="HelpEstateAllowGroup">
-		Toegang tot dit Estate zal gelimiteerd worden tot groepen in deze lijst en elke Inwoner bovenaan. Deze Instelling is alleen beschikbaar als Publieke Toegang niet is aan gevinkt.
-	</notification>
-	<notification label="Misbruik Email Adres" name="HelpEstateAbuseEmailAddress">
-		Dit instellen met een geldig email adres zal misbruik rapporten op dit Estate doen versturen naar dat adres.
-Indien u het leeg laat, zullen misbruik rapporten alleen verzonden worden naar Linden Lab.
-	</notification>
-	<notification label="Toegang Weigeren" name="HelpEstateBanResident">
-		Inwoners in deze lijst zijn de toegang geweigerd in uw Estate, ongeacht elke andere instelling.
-	</notification>
-	<notification label="Voice Chat Toestaan" name="HelpEstateVoiceChat">
-		Percelen in dit Estate kunnen hun eigen Voice kanalen hebben waarin Inwoners die in de buurt van elkaar zijn, elkaar kunnen horen en met elkaar kunnen praten.
-
-Standaard: Uitgeschakeld
-	</notification>
-	<notification label="Voice Versie Ongelijkheid" name="VoiceVersionMismatch">
-		Deze versie van [APP_NAME] is niet compatibel met de Voice spraak optie in deze regio. Om Voice Chat goed te laten functioneren, moet u [APP_NAME] bijwerken.
-	</notification>
-	<notification label="Estate Convenant" name="HelpEstateCovenant">
-		Het instellen van een Estate Convenant maakt het u mogelijk om percelen in het Estate te verkopen. Indien de Convenant niet is ingesteld kunt u het niet verkopen. Een notitiekaart voor uw Convenant kan leeg zijn indien u geen regels wilt instellen, advies aan kopers wilt geven of iets anders in relatie tot het land wilt mededelen voor als men het koopt.
-
-Een Convenant kan gebruikt worden als u regels wilt mededelen, richtlijnen, culturele informatie of simpelweg uw eigen verwachtingen aan prospect kopers.
-Dit kan zoneren bevatten, bouw reglementen, betaal opties of elke andere vorm van informatie waarvan u het belangrijk vind dat de nieuwe eigenaar het heeft gezien en mee akkoord is gegaan alvorens het te kopen.
-
-De koper moet instemmen met de Convenant middels het aan vinken van het kadertje alvorens zij de aankoop af kunnen ronden. Estate Overeenkomsten zijn altijd zichtbaar in het Over Land dialoog venster voor elk perceel dat er eentje ingesteld heeft staan.
-	</notification>
-	<notification label="Kan Geen Objecten Kopen" name="BuyObjectOneOwner">
-		Kan geen objecten van verschillende eigenaren tegelijk kopen.
-
-Kies alstublieft slechts één object en probeer het opnieuw.
-	</notification>
-	<notification label="Kan Inhoud Niet Kopen" name="BuyContentsOneOnly">
-		Kan geen inhoud kopen van meer dan één object tegelijk.
-
-Kies alstublieft slechts één object en probeer het opnieuw.
-	</notification>
-	<notification label="Kan Inhoud Niet Kopen" name="BuyContentsOneOwner">
-		Kan geen inhoud kopen van verschillende eigenaren tegelijk.
-
-Kies alstublieft slechts één object en probeer het opnieuw.
-	</notification>
-	<notification name="BuyOriginal">
-		Koop originele object van [OWNER] voor L$[PRICE]?
-U zult de eigenaar worden van dit object.
-U kunt het dan:
- Wijzigen: [MODIFYPERM]
- Kopiëren: [COPYPERM]
- Verkopen of Weggeven: [RESELLPERM]
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="BuyOriginalNoOwner">
-		Koop originele object voor L$[PRICE]?
-U zult de eigenaar worden van dit object.
-U kunt het dan:
- Wijzigen: [MODIFYPERM]
- Kopiëren: [COPYPERM]
- Verkopen of Weggeven: [RESELLPERM]
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="BuyCopy">
-		Koop een kopie van [OWNER] voor L$[PRICE]?
-Het object zal gekopieerd worden naar uw inventaris.
-U kunt het dan:
- Wijzigen: [MODIFYPERM]
- Kopiëren: [COPYPERM]
- Verkopen of Weggeven: [RESELLPERM]
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="BuyCopyNoOwner">
-		Koop een kopie voor L$[PRICE]?
-Het object zal gekopieerd worden naar uw inventaris.
-U kunt het dan:
- Wijzigen: [MODIFYPERM]
- Kopiëren: [COPYPERM]
- Verkopen of Weggeven: [RESELLPERM]
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="BuyContents">
-		Koop de inhoud van [OWNER] voor L$[PRICE]?
-De inhoud zal naar uw inventaris gekopieerd worden.
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="BuyContentsNoOwner">
-		Koop de inhoud voor L$[PRICE]?
-De inhoud zal naar uw inventaris gekopieerd worden.
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmPurchase">
-		Deze transactie zal:
-[ACTION]
-
-Weet u zeker dat u verder wilt gaan met deze aankoop?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmPurchasePassword">
-		Deze transactie zal:
-[ACTION]
-
-Weet u zeker dat u verder wilt gaan met deze aankoop?
-Voer alstublieft opnieuw uw wachtwoord in en klik op OK.
-		<form name="form">
-			<input name="message"/>
-			<button name="ConfirmPurchase" text="OK"/>
-			<button name="Cancel" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification name="SetPickLocation">
-		Opmerking:
-
-U heeft de locatie van deze Favoriet bijgewerkt, maar andere details blijven ongewijzigd.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="MoveInventoryFromObject">
-		U heeft &apos;niet kopieerbare&apos; items geselecteerd.
-Deze items zullen worden verplaatst naar uw inventaris, niet gekopieerd.
-
-Verplaats de inventaris item(s)?
-		<usetemplate ignoretext="Wanneer niet kopieerbare inventaris uit objecten verplaatst wordt" name="okcancelignore" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="MoveInventoryFromScriptedObject">
-		U heeft &apos;niet kopieerbare&apos; inventaris items geselecteerd.
-Deze items zullen verplaatst worden naar uw inventaris, niet gekopieerd.
-Omdat deze objecten scripts bevatten, kan het verplaatsen naar uw inventaris er voor zorgen dat het object niet meer werkt.
-inventaris item(s) verplaatsen?
-		<usetemplate ignoretext="Indien verplaatsen &apos;niet kopieerbare&apos; inventaris van gescripte objecten" name="okcancelignore" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ClickActionNotPayable">
-		Waarschuwing: Het &apos;Betaal object&apos; aan klik actie is ingesteld, maar het zal alleen werken als er een script is toegevoegd met een money() event.
-		<form name="form">
-			<ignore name="ignore" text="Indien instellen &apos;Betaal&apos; op objecten zonder money() events"/>
-		</form>
-	</notification>
-	<notification name="OpenObjectCannotCopy">
-		Er zitten geen items in dit object die u kunt kopiëren.
-	</notification>
-	<notification name="WebLaunchAccountHistory">
-		Naar de [SECOND_LIFE] web site gaan om uw account geschiedenis te bekijken?
-		<usetemplate ignoretext="Bij laden van de account geschiedenis webpagina" name="okcancelignore" notext="Annuleren" yestext="Ga naar pagina"/>
-	</notification>
-	<notification name="ClickOpenF1Help">
-		De [SECOND_LIFE] Support Web site bezoeken?
-		<usetemplate ignoretext="Bij bezoeken van de [SECOND_LIFE] Support Website." name="okcancelignore" notext="Annuleren" yestext="Ga"/>
-	</notification>
-	<notification name="ConfirmQuit">
-		Weet u zeker dat u wilt afsluiten?
-		<usetemplate ignoretext="Bij afsluiten [APP_NAME]." name="okcancelignore" notext="Doorgaan" yestext="Afsluiten"/>
-	</notification>
-	<notification name="HelpReportAbuseEmailLL">
-		Gebruik dit gereedschap om overtredingen van de Voorwaarden voor Service (Terms of Service) en Gemeenschaps Standaarden (Community Standards)te rapporteren. Zie:
-
-http://secondlife.com/corporate/tos.php
-http://secondlife.com/corporate/cs.php
-
-Alle gerapporteerde misbruiken van de Voorwaarden voor Service en Gemeenschaps Standaarden zullen worden onderzocht en opgelost. U kunt de incident oplossing in de Incidenten Rapportage zien op:
-
-http://secondlife.com/support/incidentreport.php
-	</notification>
-	<notification name="HelpReportAbuseEmailEO">
-		BELANGRIJK: Dit rapport zal naar de eigenaar van deze regio gaan en niet naar Linden Lab!
-
-Als een service aan Inwoners en bezoekers heeft de eigenaar van deze regio er voor gekozen om rapporten vanuit deze regio zelf te ontvangen en af te handelen. Linden Lab zal geen onderzoek doen naar rapporten die u indient vanaf deze locatie.
-
-De regio eigenaar zal de rapporten afhandelen op basis van de regels geldend voor deze regio zoals weergegeven in het Estate Convenant (Bekijk Convenants door naar Wereld te gaan in het menu en te kiezen voor Over Land).
-
-De afhandeling van dit rapport is alleen van toepassing op deze regio.
-Toegang van Inwoners tot andere gebieden van [SECOND_LIFE] zullen niet beïnvloed worden door de uitkomst van dit rapport. Alleen Linden Lab kan de toegang tot geheel [SECOND_LIFE] beperken.
-	</notification>
-	<notification name="HelpReportAbuseSelectCategory">
-		Selecteer alstublieft een categorie voor dit misbruik rapport.
-
-Het selecteren van een categorie helpt ons met het archiveren en verwerken van misbruik rapporten.
-	</notification>
-	<notification name="HelpReportAbuseAbuserNameEmpty">
-		Geef alstublieft een naam op van de misbruiker.
-
-Een accurate waarde opgeven helpt ons met het archiveren en verwerken van misbruik rapporten.
-	</notification>
-	<notification name="HelpReportAbuseAbuserLocationEmpty">
-		Geef alstublieft een locatie op waar het misbruik plaats vond.
-
-Een accurate waarde opgeven helpt ons met het archiveren en verwerken van misbruik rapporten.
-	</notification>
-	<notification name="HelpReportAbuseSummaryEmpty">
-		Geef alstublieft een korte samenvatting op van het misbruik dat plaats vond.
-
-Een accurate waarde opgeven helpt ons met het archiveren en verwerken van misbruik rapporten.
-	</notification>
-	<notification name="HelpReportAbuseDetailsEmpty">
-		Geef alstublieft een gedetailleerde omschrijving van het misbruik dat plaats vond.
-
-Wees zo specifiek als mogelijk, inclusief namen en details van het incident waarover u rapporteert.
-
-Het opgeven van een accurate omschrijving helpt ons met het archiveren en verwerken van misbruik rapporten.
-	</notification>
-	<notification name="HelpReportAbuseContainsCopyright">
-		Beste Inwoner,
-
-Het lijkt er op dat u intellectueel eigendoms misbruik rapporteert. Wees er alstublieft van overtuigd dat u dit correct rapporteert:
-
-(1) Het Misbruik Proces. U kunt een misbruik rapport indienen als u er van overtuigd bent dat een Inwoner het [SECOND_LIFE] permissie systeem uitbuit, bijvoorbeeld door gebruik van CopyBot of soortgelijke gereedschappen, daarmee de intellectuele eigendoms rechten overtredend. Het Abuse Team onderzoekt en zal passende maatregelen uitvaardigen tegen gedrag dat de [SECOND_LIFE] Gemeenschaps Standaarden overtreedt. Echter, het Abuse Team zal geen actie ondernemen en niet reageren op verzoeken om inhoud te verwijderen uit de [SECOND_LIFE] wereld.
-
-(2) Het DMCA of Inhoud Verwijder Proces. Voor een verzoek tot verwijdering van inhoud in [SECOND_LIFE], MOET u een geldige berichtgeving van misbruik indienen zoals voorzien in onze DMCA beleid op http://secondlife.com/corporate/dmca.php.
-
-Indien u nog steeds door wilt gaan met het misbruik proces, sluit dan alstublieft dit venster en maak het indienen van uw rapport af. U zult mogelijk een specifieke catagorie moeten kiezen &apos;CopyBot of Permissie Uitbuiting&apos;.
-
-Dank U,
-Linden Lab
-	</notification>
-	<notification name="FailedRequirementsCheck">
-		De volgende vereiste componenten ontbreken van [FLOATER]:
-[COMPONENTS]
-	</notification>
-	<notification label="Vervang Bestaande Bevestiging" name="ReplaceAttachment">
-		Er is al een object bevestigd op dit punt aan uw lichaam.
-Wilt u dit vervangen met het geselecteerde object?
-		<form name="form">
-			<ignore name="ignore" save_option="true" text="Bij vervangen van bestaande bevestigingen"/>
-			<button name="Yes" text="OK"/>
-			<button name="No" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification label="Niet Storen Modus Waarschuwing" name="BusyModePay">
-		U bevind zich in Niet Storen Modus, hetgeen inhoudt dat u geen enkele items kunt ontvangen voor deze betaling.
-
-Wilt u de Niet Storen Modus verlaten voordat u deze transactie completeert?
-		<form name="form">
-			<ignore name="ignore" save_option="true" text="Bij betalen van een persoon of object in Niet Storen modus"/>
-			<button name="Yes" text="OK"/>
-			<button name="No" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification name="ConfirmEmptyTrash">
-		Weet u zeker dat u de inhoud van uw vuilnisbak map permanent wilt verwijderen?
-		<usetemplate ignoretext="Bij verwijderen van de inhoud uit de inventaris vuilnisbak map" name="okcancelignore" notext="Annuleren" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmClearBrowserCache">
-		Weet u zeker dat u uw browsercache wilt legen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Ja"/>
-	</notification>
-	<notification name="ConfirmClearCookies">
-		Weet u zeker dat u al uw cookies wilt verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Ja"/>
-	</notification>
-	<notification name="ConfirmClearMediaUrlList">
-		Weet u zeker dat u uw lijst met al de opgeslagen URL&apos;s wilt verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Annuleren" yestext="Ja"/>
-	</notification>
-	<notification name="ConfirmEmptyLostAndFound">
-		Weet u zeker dat u de inhoud van de Verloren en Gevonden map permanent wilt verwijderen?
-		<usetemplate ignoretext="Bij legen van uw inventaris Verloren en Gevonden map" name="okcancelignore" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="CopySLURL">
-		De volgende SLurl is gekopieerd naar uw klem bord:
-[SLURL]
-
-Plaats het in een web pagina om anderen eenvoudig toegang te verschaffen naar de locatie of test het zelf door het te plakken in de adres balk van uw web browser.
-		<form name="form">
-			<ignore name="ignore" text="Bij kopiëren van een SLurl naar het klem bord"/>
-		</form>
-	</notification>
-	<notification name="GraphicsPreferencesHelp">
-		Dit venster bepaald de venster afmetingen, resolutie en kwaliteit van de client&apos;s grafische weergave. De Voorkeuren &gt; Grafische interface laat u kiezen uit vier grafische niveaus: Laag, Middel, Hoog en Ultra. U kunt ook uw grafische instellingen aanpassen met het aan vinken van het Aangepast vakje en de volgende instellingen manipuleren:
-
-Shaders: In of uitschakelen van de verschillende typen pixel shaders.
-
-Reflectiedetail: Stelt het type objecten in hetgeen water kan reflecteren.
-
-Avatarweergave: Stelt de opties in die van invloed zijn op hoe de client een avatar zal renderen.
-
-Zichtbereik: Beïnvloed tot hoe ver objecten vanaf uw zichtpunt worden weergegeven in de scène.
-
-Maximaal Aantal Particles: Stelt het maximaal aantal particles in die u tegelijk kunt zien op uw scherm.
-
-Nabewerkingskwaliteit: Stelt de resolutie in waarmee Gloei wordt weergegeven.
-
-Maasdetail: Stelt de hoeveelheid detail of het aantal driehoeken in gebruikt voor de weergave van bepaalde objecten. Een hogere waarde zal langer nemen om weer te gegeven, maar zorgen voor objecten met meer detail.
-
-Lichtdetail: Bepaald welke typen lichten u wenst weer te geven.
-
-Terreindetail: Stelt de hoeveelheid detail in die u wilt zien voor het terrein textuur.
-	</notification>
-	<notification name="WLSavePresetAlert">
-		Wilt u de opgeslagen voor instellingen overschrijven?
-		<usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="WLDeletePresetAlert">
-		Wilt u [SKY] verwijderen?
-		<usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="WLNoEditDefault">
-		U kunt de standaard instellingen niet wijzigen of verwijderen.
-	</notification>
-	<notification name="WLMissingSky">
-		Dit dag cyclus bestand heeft een ontbrekend lucht bestand: [SKY].
-	</notification>
-	<notification name="PPSaveEffectAlert">
-		Voorbewerkingeffecten bestaan. Wilt u ze alsnog overschrijven?
-		<usetemplate name="okcancelbuttons" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="HelpEditSky">
-		Wijzig de WindLight schuif knoppen en maak en sla een set van luchten op.
-	</notification>
-	<notification name="HelpEditDayCycle">
-		Bepaald de luchten te gebruiken gedurende de dag.
-	</notification>
-	<notification name="EnvSettingsHelpButton">
-		Deze instelling bepalen hoe de omgeving er uit ziet op uw computer. Uw grafische kaart zal grafische shaders moeten ondersteunen om toegang te krijgen tot alle instellingen.
-
-Wijzig de &quot;Tijd van de Dag&quot; schuif knop om de fase van de dag lokaal in de viewer aan te passen.
-
-Wijzig de &quot;Wolken Dichtheid&quot; schuif knop om de hoeveelheid wolken die de lucht bedekken in te stellen.
-
-Kies een kleur in de &quot;Water Kleur&quot; kleuren kiezer om de kleur van het water aan te passen.
-
-Wijzig de &quot;Water Mist&quot; schuif knop om de dichtheid van de mist onder water in te stellen.
-
-Klik op &quot;Gebruik Estate Tijd&quot; om de tijd van de dag te herstellen naar de huidige tijd en die te volgen.
-
-Klik op &quot;Geavanceerde Lucht&quot; om de editor op te roepen voor geavanceerde instellingen voor de lucht.
-
-Klik op &quot;Geavanceerd Water&quot; om de editor op te roepen voor geavanceerde instellingen voor water.
-	</notification>
-	<notification name="HelpDayCycle">
-		De Dag Cyclus Editor geeft u controle over de lucht gedurende de [SECOND_LIFE]&apos;s dag/nacht cyclus. Dit is de cyclus die gebruikt wordt in de Basis Omgeving Editor&apos;s Tijd van de Dag schuif knop.
-
-De Dag Cyclus Editor werkt beter met het instellen van gemarkeerde frames. Dit zijn nodes (weergegeven als grijze blips in de tijd weergave) die Hemel voorinstelling met zich geassocieerd hebben. Als de Tijd van de Dag voortschrijdt, &quot;animeert&quot; de WindLight Hemel als het interpoleert tussen de gemarkeerde frames.
-
-De gele pijlen boven de tijdlijn representeert uw huidige zicht, gebaseerd op de Tijd van de Dag. Klik en sleep deze om te zien hoe uw dag zal animeren. U kunt gemarkeerde frames toe voegen of verwijderen middels het indrukken van de Frame Toevoegen of Frame Verwijderen knoppen, rechts van de tijdlijn.
-
-U kunt de tijds positie van een gemarkeerd frame instellen door het te slepen over de tijdlijn of middels het handmatig invullen van de Gemarkeerde Frame Instellingen. Binnen de Gemarkeerde Frame Instellingen krijgt u de mogelijkheid het gemarkeerde frame te associëren met de respectievelijke WindLight voorinstelling.
-
-De lengte van de Cyclus bepaald de totale tijdsduur van een &quot;dag&quot;. Stelt u dit in op een lage waarde (bijv. twee minuten) betekend dat uw volledig 24 uurs tijdlijn zal animeren in slechts twee minuten! Als u tevreden bent met uw tijdlijn en gemarkeerde frame cyclus, gebruik dan de Start en Stop knoppen om het resultaat voor te beschouwen. Onthoud dat u ook de gele tijd indicator pijl boven de tijdlijn kunt bewegen om de animatie cyclus interactief te bekijken. Het gebruik van de Estate Tijd knop zal de lengte en tijd van uw dag synchroniseren met de Estate&apos;s dag cyclus.
-
-Als u tevreden bent met uw Dag Cyclus, kunt het opslaan en laden met de Test Dag Opslaan en Laad Test Dag knoppen. Merk op, dat wij momenteel slechts één Dag Cyclus toestaan.
-	</notification>
-	<notification name="HelpBlueHorizon">
-		Gebruik de Rood/Groen/Blauw schuif knoppen om de kleur van de hemel aan te passen. U kunt de Intensiteit (I) schuif knop gebruiken om alle drie de schuif knoppen tegelijk te bewegen.
-	</notification>
-	<notification name="HelpHazeHorizon">
-		Nevel Horizon is één van de meest handige parameters voor de algehele belichting in de scène. Het is effectief om de vele belichting instellingen te simuleren, zoals wit-vlakken van de zon en donkere gesloten iris instellingen.
-	</notification>
-	<notification name="HelpBlueDensity">
-		Blauw Dichtheid beïnvloed de algehele kleur verzadiging van de hemel en mist. Indien u de Intensiteit (I) schuif knop naar rechts schuift, zullen de kleuren lichter en sprekender worden. Indien u het geheel naar links schuift, worden de kleuren doffer, uiteindelijk vervagend naar zwart en wit. Als u de hemel kleur nauwkeurig wilt uitbalanceren, kunt u de individuele elementen van verzadiging instellen door gebruik van de Rood/Groen/Blauw (RGB) schuif knoppen.
-	</notification>
-	<notification name="HelpHazeDensity">
-		Nevel Dichtheid bepaald de hoeveelheid dofheid, grijze nevel in de atmosfeer. Het is effectief om scènes met veel rook of zelf gemaakte vervuiling te simuleren. Het is ook effectief voor het simuleren van nevel en mist.
-	</notification>
-	<notification name="HelpDensityMult">
-		De Dichtheid Vermeerderaar kan gebruikt worden om de algehele dichtheid van de atmosfeer te beïnvloeden.
-Bij lagere instelling creëert het een gevoel van &quot;dunne lucht&quot; en met hogere instellingen een dik zwaar smog effect.
-	</notification>
-	<notification name="HelpDistanceMult">
-		Stelt de WindLight&apos;s waargenomen afstand in. Een waarde van nul stopt de invloed van WindLight op terrein en objecten. Waarden groter dan 1 simuleren grotere afstanden voor dikkere atmosferische effecten.
-	</notification>
-	<notification name="HelpMaxAltitude">
-		Maximale Hoogte bepaald de hoogte calculaties die WindLight uitvoert bij het berekenen van de atmosferische belichting. Later op de dag is het handig om de &quot;diepte&quot; van de zonsondergang weergave in te stellen.
-	</notification>
-	<notification name="HelpSunlightColor">
-		Stelt de kleur en intensiteit in van direct licht in de scène.
-	</notification>
-	<notification name="HelpSunAmbient">
-		Stelt de kleur en intensiteit in van het omgevings atmosferische licht in de scène.
-	</notification>
-	<notification name="HelpSunGlow">
-		De Afmeting schuif knop stelt de afmeting van de zon in.
-De Focus schuif knop bepaald de wazigheid van de zon aan de hemel.
-	</notification>
-	<notification name="HelpSceneGamma">
-		Wijzigt de verdeling van licht op het scherm in licht of donker.
-	</notification>
-	<notification name="HelpStarBrightness">
-		Wijzigt de helderheid van sterren aan de hemel.
-	</notification>
-	<notification name="HelpTimeOfDay">
-		Bepaald de locatie van de zon aan de hemel.
-Gelijkwaardig aan elevatie.
-	</notification>
-	<notification name="HelpEastAngle">
-		Bepaald de locatie van de zon aan de hemel.
-Gelijkwaardig aan azimut.
-	</notification>
-	<notification name="HelpCloudColor">
-		Wijzigt de kleur van de wolken. Het is algemeen aanbevolen deze wit-achtig te houden, maar hé, heb plezier als u dit wilt.
-	</notification>
-	<notification name="HelpCloudDetail">
-		Bepaald het detail plaatje als laag bovenop het basis wolken plaatje. X en Y bepalen de positie. D (Dichtheid) bepaald hoe wollig of verspreid de wolken verschijnen.
-	</notification>
-	<notification name="HelpCloudDensity">
-		Geeft u de mogelijkheid de positie van wolken met de X en Y schuif knoppen in te stellen en hoe dicht ze zijn met de D schuif knop.
-	</notification>
-	<notification name="HelpCloudCoverage">
-		Bepaald hoeveel de wolken de hemel bedekken.
-	</notification>
-	<notification name="HelpCloudScale">
-		Bepaald de schaal van het wolken plaatje op de hemelboog.
-	</notification>
-	<notification name="HelpCloudScrollX">
-		Bepaald de snelheid van de wolken terwijl zij in X richting bewegen.
-	</notification>
-	<notification name="HelpCloudScrollY">
-		Bepaald de snelheid van de wolken terwijl zij in Y richting bewegen.
-	</notification>
-	<notification name="HelpClassicClouds">
-		Vink dit aan voor weergave van [SECOND_LIFE]&apos;s oudere klassieke wolken als toevoeging op WindLight&apos;s wolken.
-	</notification>
-	<notification name="HelpWaterFogColor">
-		Kiest de kleur van de onder water nevel.
-	</notification>
-	<notification name="HelpWaterFogDensity">
-		Bepaald hoe dicht de water nevel is en hoe ver u kunt zien onder water.
-	</notification>
-	<notification name="HelpUnderWaterFogMod">
-		Past het effect aan van de Nevel Dichtheid Exponent om zo te bepalen hoe ver uw avatar onder water kan zien.
-	</notification>
-	<notification name="HelpWaterGlow">
-		Bepaald hoeveel het oppervlak van het water gloeit.
-	</notification>
-	<notification name="HelpWaterNormalScale">
-		Bepaald de schaling van de drie wavelets (golf patronen) die samen water vormen.
-	</notification>
-	<notification name="HelpWaterFresnelScale">
-		Bepaald hoeveel licht er wordt gereflecteerd onder verschillende hoeken.
-	</notification>
-	<notification name="HelpWaterFresnelOffset">
-		Bepaald de hoeveelheid licht intensiteit welke wordt gereflecteerd.
-	</notification>
-	<notification name="HelpWaterScaleAbove">
-		Bepaald hoeveel licht er wordt weerkaatst wanneer van bovenop het water oppervlak gezien.
-	</notification>
-	<notification name="HelpWaterScaleBelow">
-		Bepaald hoeveel licht er wordt weerkaatst wanneer van onder het water oppervlak gezien.
-	</notification>
-	<notification name="HelpWaterBlurMultiplier">
-		Bepaald hoe golven en reflectie worden ge mixed.
-	</notification>
-	<notification name="HelpWaterNormalMap">
-		Bepaald welke Normaal map gelaagd is over het water om de reflectie/weerkaatsing te bepalen.
-	</notification>
-	<notification name="HelpWaterWave1">
-		Bepaald waar en hoe snel de grote schaal versie van de Normaal map beweegt in X en Y richting.
-	</notification>
-	<notification name="HelpWaterWave2">
-		Bepaald waar en hoe snel de kleine schaal versie van de Normaal map beweegt in X en Y richting.
-	</notification>
-	<notification name="NewSkyPreset">
-		Geef een naam op voor de nieuwe lucht.
-		<form name="form">
-			<input name="message">
-				Nieuwe Voorinstelling
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification name="ExistsSkyPresetAlert">
-		Voorinstelling bestaat al!
-	</notification>
-	<notification name="NewWaterPreset">
-		Geef een naam voor de nieuwe voorinstelling van water.
-		<form name="form">
-			<input name="message">
-				Nieuwe Voorinstelling
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification name="ExistsWaterPresetAlert">
-		Voorinstelling bestaat al!
-	</notification>
-	<notification name="WaterNoEditDefault">
-		u kunt de standaard voorinstelling niet wijzigen of verwijderen.
-	</notification>
-	<notification name="ChatterBoxSessionStartError">
-		Kan geen nieuwe chat sessie starten met [RECIPIENT].
-[REASON]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ChatterBoxSessionEventError">
-		[EVENT]
-[REASON]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ForceCloseChatterBoxSession">
-		Uw chat sessie met [NAME] zal moeten worden gesloten.
-[REASON]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="Cannot_Purchase_an_Attachment">
-		Items kunnen niet worden gekocht indien ze deel uit maken van een Bevestiging.
-	</notification>
-	<notification label="Over verzoeken voor debet permissies" name="DebitPermissionDetails">
-		Toestemming geven aan dit script geeft het object een onbeperkte permissie om Linden dollars (L$) uit uw account te nemen!
-Om dit recht in te trekken, moet de object eigenaar het object verwijderen of de scripts in het object opnieuw instellen.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AutoWearNewClothing">
-		Wilt u de kleding items die u maakt automatisch aantrekken?
-		<usetemplate ignoretext="Automatisch nieuwe kleding aantrekken" name="okcancelignore" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="NotAgeVerified">
-		U moet leeftijd geverifieerd zijn om toegang te verkrijgen tot dit perceel.
-Wilt u de [SECOND_LIFE] website bezoeken om uw leeftijd te verifiëren?
-
-[_URL]
-		<url name="url" option="0">
-			https://secondlife.com/account/verification.php
-		</url>
-		<usetemplate ignoretext="Waarschuw voor gebrek aan leeftijd verificatie" name="okcancelignore" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="Cannot enter parcel: no payment info on file">
-		Dit perceel verlangd dat u betaal informatie geregistreerd hebt staan alvorens toegang te verkrijgen.
-Wilt u de [SECOND_LIFE] website bezoeken om dit in te stellen?
-
-[_URL]
-		<url name="url" option="0">
-			https://secondlife.com/account/index.php?lang=nl
-		</url>
-		<usetemplate ignoretext="Waarschuw voor gebrek aan betaal informatie" name="okcancelignore" notext="Nee" yestext="Ja"/>
-	</notification>
-	<notification name="MissingString">
-		De tekst [STRING_NAME] ontbreekt in strings.xml
-	</notification>
-	<notification name="SystemMessageTip">
-		[MESSAGE]
-	</notification>
-	<notification name="Cancelled">
-		Geannuleerd
-	</notification>
-	<notification name="CancelledSit">
-		Zitten geannuleerd
-	</notification>
-	<notification name="CancelledAttach">
-		Bevestigen geannuleerd
-	</notification>
-	<notification name="ReplacedMissingWearable">
-		Missend kleding/lichaamsdeel is vervangen door standaard.
-	</notification>
-	<notification name="GroupNotice">
-		Onderwerp: [SUBJECT], Bericht: [MESSAGE]
-	</notification>
-	<notification name="FriendOnline">
-		[NAME] is Online
-	</notification>
-	<notification name="FriendOffline">
-		[NAME] is Offline
-	</notification>
-	<notification name="AddSelfFriend">
-		U kunt uzelf niet als vriend toevoegen.
-	</notification>
-	<notification name="UploadingAuctionSnapshot">
-		In-wereld en website foto&apos;s worden geüpload...
-(Duurt ongeveer 5 minuten.)
-	</notification>
-	<notification name="UploadPayment">
-		U heeft L$[AMOUNT] betaald om te uploaden.
-	</notification>
-	<notification name="UploadWebSnapshotDone">
-		Upload van website foto is gereed.
-	</notification>
-	<notification name="UploadSnapshotDone">
-		Upload van in-wereld foto is gereed.
-	</notification>
-	<notification name="TerrainDownloaded">
-		Terrain.raw gedownload
-	</notification>
-	<notification name="GestureMissing">
-		Gebaar [NAME] mist in de database.
-	</notification>
-	<notification name="UnableToLoadGesture">
-		Kan gebaar [NAME] niet laden. Probeer het a.u.b. opnieuw.
-	</notification>
-	<notification name="LandmarkMissing">
-		Landmarkering mist in de database.
-	</notification>
-	<notification name="UnableToLoadLandmark">
-		Kan landmarkering niet laden. Probeer het a.u.b. opnieuw.
-	</notification>
-	<notification name="CapsKeyOn">
-		Uw Caps Lock toets staat aan. Aangezien dit effect heeft op het wachtwoord dat u intypt, zult u het wellicht willen uitzetten.
-	</notification>
-	<notification name="NotecardMissing">
-		Notitiekaart mist in de database.
-	</notification>
-	<notification name="NotecardNoPermissions">
-		Onvoldoende permissies om de notitiekaart te bekijken.
-	</notification>
-	<notification name="RezItemNoPermissions">
-		Onvoldoende permissies om het object te rezzen.
-	</notification>
-	<notification name="UnableToLoadNotecard">
-		Kan op dit moment notitiekaart inhoud niet laden.
-	</notification>
-	<notification name="ScriptMissing">
-		Script mist in de database.
-	</notification>
-	<notification name="ScriptNoPermissions">
-		Onvoldoende permissies om het script te bekijken.
-	</notification>
-	<notification name="UnableToLoadScript">
-		Kan script niet laden. Probeer het a.u.b. opnieuw.
-	</notification>
-	<notification name="IncompleteInventory">
-		De complete inhoud die u aanbiedt is nog niet lokaal beschikbaar. Probeer die items over een minuut nogmaals aan te bieden.
-	</notification>
-	<notification name="CannotModifyProtectedCategories">
-		U kunt geen beschermde categorieën wijzigen.
-	</notification>
-	<notification name="CannotRemoveProtectedCategories">
-		U kunt geen beschermde categorieën verwijderen.
-	</notification>
-	<notification name="UnableToBuyWhileDownloading">
-		Niet mogelijk te kopen terwijl objectdata wordt gedownload. Probeer het alstublieft opnieuw.
-	</notification>
-	<notification name="UnableToLinkWhileDownloading">
-		Niet mogelijk om te koppelen terwijl objectdata wordt gedownload. Probeer het alstublieft opnieuw.
-	</notification>
-	<notification name="CannotBuyObjectsFromDifferentOwners">
-		Kan geen objecten van meerdere eigenaren op hetzelfde moment kopen. Selecteer alstublieft een enkel object.
-	</notification>
-	<notification name="ObjectNotForSale">
-		Object lijkt niet te koop.
-	</notification>
-	<notification name="EnteringGodMode">
-		God modus binnengaan, niveau [LEVEL]
-	</notification>
-	<notification name="LeavingGodMode">
-		God modus verlaten, niveau [LEVEL]
-	</notification>
-	<notification name="CopyFailed">
-		Kopiëren mislukt omdat u geen kopieerpermissie bezit.
-	</notification>
-	<notification name="InventoryAccepted">
-		[NAME] heeft uw inventarisaanbod geaccepteerd.
-	</notification>
-	<notification name="InventoryDeclined">
-		[NAME] heeft uw inventarisaanbod afgewezen.
-	</notification>
-	<notification name="ObjectMessage">
-		[NAME]: [MESSAGE]
-	</notification>
-	<notification name="CallingCardAccepted">
-		Uw visitekaartje is geaccepteerd.
-	</notification>
-	<notification name="CallingCardDeclined">
-		Uw visite kaart is afgewezen.
-	</notification>
-	<notification name="TeleportToLandmark">
-		Nu u het mainland bereikt heeft, kunt u teleporteren naar locaties als &apos;[NAME]&apos; door op de Inventaris knop rechtsonder in uw scherm te klikken en dan de Landmarkeringen map te selecteren. Dubbelklik op de landmarkering en klik op Teleport om ernaartoe te reizen.
-	</notification>
-	<notification name="TeleportToPerson">
-		Nu u het mainland bereikt heeft, kunt u contact opnemen met inwoners als &apos;[NAME]&apos; door op de Inventaris knop rechtsonder in uw scherm te klikken en dan de Visitekaartjes map te selecteren. Dubbelklik op het visitekaartje, klik op Instant Message en type een bericht.
-	</notification>
-	<notification name="CantSelectLandFromMultipleRegions">
-		Kan geen land selecteren over servergrenzen.
-Probeer een kleiner stuk land te selecteren.
-	</notification>
-	<notification name="SearchWordBanned">
-		Sommige termen in uw zoekopdracht werden uitgesloten vanwege inhoudbeperkingen zoals beschreven in de Gemeenschap Standaarden.
-	</notification>
-	<notification name="NoContentToSearch">
-		Selecteer alstublieft minstens een type inhoud om te zoeken (PG, Mature of Adult).
-	</notification>
-	<notification name="GroupVote">
-		[NAME] heeft voorgesteld om te stemmen over:
-[MESSAGE]
-		<form name="form">
-			<button name="VoteNow" text="Stem Nu"/>
-			<button name="Later" text="Later"/>
-		</form>
-	</notification>
-	<notification name="SystemMessage">
-		[MESSAGE]
-	</notification>
-	<notification name="EventNotification">
-		Evenement Bericht:
-
-[NAME]
-[DATE]
-		<form name="form">
-			<button name="Details" text="Omschrijving"/>
-			<button name="Cancel" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification name="TransferObjectsHighlighted">
-		Alle objecten op dit perceel die zullen worden overgedragen aan de koper van dit perceel zijn nu opgelicht.
-
-* Bomen en grassen die worden overgedragen zijn niet opgelicht.
-		<form name="form">
-			<button name="Done" text="Gereed"/>
-		</form>
-	</notification>
-	<notification name="DeactivatedGesturesTrigger">
-		Deactiveren van gebaren met dezelfde trigger:
-[NAMES]
-	</notification>
-	<notification name="NoQuickTime">
-		De QuickTime software van Apple schijnt niet op uw systeem geïnstalleerd te zijn.
-Indien u streaming media wilt zien op percelen die dit ondersteunen, dient u naar de QuickTime webpagina te gaan (http://www.apple.com/QuickTime) en de QuickTime Player te installeren.
-	</notification>
-	<notification name="OwnedObjectsReturned">
-		De objecten die uw eigendom zijn op het geselecteerde perceel zijn geretourneerd naar uw inventaris.
-	</notification>
-	<notification name="OtherObjectsReturned">
-		De objecten op het geselecteerde perceel dat het eigendom is van [NAME], zijn geretourneerd naar zijn of haar inventaris.
-	</notification>
-	<notification name="OtherObjectsReturned2">
-		De objecten op het geselecteerde perceel dat het eigendom is van inwoner &apos;[NAME]&apos;, zijn geretourneerd naar hun eigenaar.
-	</notification>
-	<notification name="GroupObjectsReturned">
-		De objecten op het geselecteerde perceel dat gedeeld is met de groep [GROUPNAME] zijn geretourneerd naar de inventaris van hun eigenaar.
-Overdraagbare objecten die eigendom zijn van de groep zijn geretourneerd naar hun voormalige eigenaren.
-Niet-overdraagbare objecten die eigendom zijn van de groep zijn verwijderd.
-	</notification>
-	<notification name="UnOwnedObjectsReturned">
-		De objecten op het geselecteerde perceel die NIET uw eigendom zijn, zijn geretourneerd naar hun eigenaren.
-	</notification>
-	<notification name="NotSafe">
-		Op dit land is letsel ingeschakeld (&apos;niet veilig&apos;).
-U kunt hier letsel oplopen. Indien u sterft, zult u naar uw thuis locatie worden geteleporteerd.
-	</notification>
-	<notification name="NoFly">
-		Op dit land is vliegen uitgeschakeld (&apos;niet vliegen&apos;).
-U kunt hier niet vliegen.
-	</notification>
-	<notification name="PushRestricted">
-		Dit land is &apos;Niet Duwen&apos;.
-U kunt geen anderen duwen, tenzij u het land bezit.
-	</notification>
-	<notification name="NoVoice">
-		Op dit land is voice uitgeschakeld.
-	</notification>
-	<notification name="NoBuild">
-		Op dit land is bouwen uitgeschakeld (&apos;niet bouwen&apos;).
-U kunt hier geen objecten creëren.
-	</notification>
-	<notification name="ScriptsStopped">
-		Een beheerder heeft scripts in deze regio tijdelijk gestopt.
-	</notification>
-	<notification name="ScriptsNotRunning">
-		In deze regio worden geen scripts uitgevoerd.
-	</notification>
-	<notification name="NoOutsideScripts">
-		Op dit land zijn externe scripts uitgeschakeld (geen externe scripts).
-Geen scripts zullen worden uitgevoerd, behalve scripts die toebehoren aan de landeigenaar.
-	</notification>
-	<notification name="ClaimPublicLand">
-		Kan alleen publiek land claimen in de regio waar u aanwezig bent.
-	</notification>
-	<notification name="RegionTPAccessBlocked">
-		U bent niet toegestaan in die regio vanwege uw inhoudscategorie. Wellicht dient u uw leeftijd te valideren en/of de nieuwste viewer te installeren. 
-
-Gaat u alstublieft naar de kennisbank voor details over het betreden van gebieden met deze inhoudscategorie.
-	</notification>
-	<notification name="URBannedFromRegion">
-		U bent uit deze regio verbannen.
-	</notification>
-	<notification name="NoTeenGridAccess">
-		Uw account kan geen verbinding maken met deze teen grid regio.
-	</notification>
-	<notification name="NoHelpIslandTP">
-		U kunt niet terug teleporteren naar Help Island. Ga naar &apos;Help Island Public&apos; om de handleiding te herhalen.
-	</notification>
-	<notification name="ImproperPaymentStatus">
-		U heeft niet de juiste betalingstatus om deze regio binnen te gaan.
-	</notification>
-	<notification name="MustGetAgeRegion">
-		U moet leeftijd geverifieerd zijn om deze regio binnen te gaan.
-	</notification>
-	<notification name="MustGetAgeParcel">
-		U moet leeftijd geverifieerd zijn om dit perceel binnen te gaan.
-	</notification>
-	<notification name="NoDestRegion">
-		Geen bestemmingsregio gevonden.
-	</notification>
-	<notification name="NotAllowedInDest">
-		U wordt niet op de bestemming toegelaten.
-	</notification>
-	<notification name="RegionParcelBan">
-		Kan niet naar de regio oversteken in een verbannen perceel. Probeer het op een andere manier.
-	</notification>
-	<notification name="TelehubRedirect">
-		U bent doorverwezen naar een telehub.
-	</notification>
-	<notification name="CouldntTPCloser">
-		Kan niet dichter bij bestemming teleporteren.
-	</notification>
-	<notification name="TPCancelled">
-		Teleport geannuleerd.
-	</notification>
-	<notification name="FullRegionTryAgain">
-		De regio die u probeert binnen te gaan is momenteel vol. 
-Probeer het alstublieft opnieuw over enkele ogenblikken.
-	</notification>
-	<notification name="GeneralFailure">
-		Algemene fout.
-	</notification>
-	<notification name="RoutedWrongRegion">
-		Gerouteerd naar de verkeerde regio. Probeer het alstublieft opnieuw.
-	</notification>
-	<notification name="NoValidAgentID">
-		Geen geldige agent ID.
-	</notification>
-	<notification name="NoValidSession">
-		Geen geldige sessie ID.
-	</notification>
-	<notification name="NoValidCircuit">
-		Geen geldige circuit code.
-	</notification>
-	<notification name="NoValidTimestamp">
-		Geen geldige tijdstempel.
-	</notification>
-	<notification name="NoPendingConnection">
-		Kan wachtende verbinding niet maken.
-	</notification>
-	<notification name="InternalUsherError">
-		Er is een interne fout opgetreden terwijl geprobeerd werd u naar uw teleportbestemming te begeleiden. [SECOND_LIFE] heeft op dit moment mogelijk problemen met de dienstverlening.
-	</notification>
-	<notification name="NoGoodTPDestination">
-		Kan geen goede teleportbestemming vinden in deze regio.
-	</notification>
-	<notification name="InternalErrorRegionResolver">
-		Er is een interne fout opgetreden terwijl de globale coördinaten voor uw teleportverzoek werden bepaald. [SECOND_LIFE] heeft op dit moment mogelijk problemen met de dienstverlening.
-	</notification>
-	<notification name="NoValidLanding">
-		Er kon geen geldig landingspunt worden gevonden.
-	</notification>
-	<notification name="NoValidParcel">
-		Geen geldig perceel kon gevonden worden.
-	</notification>
-	<notification name="ObjectGiveItem">
-		Een object genaamd &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, eigendom van [NAME_SLURL], heeft u een [OBJECTTYPE] genaamd &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt; gegeven.
-		<form name="form">
-			<button name="Keep" text="Behouden"/>
-			<button name="Discard" text="Afwijzen"/>
-			<button name="Mute" text="Negeren"/>
-		</form>
-	</notification>
-	<notification name="ObjectGiveItemUnknownUser">
-		Een object genaamd [OBJECTFROMNAME], eigendom van (een onbekende gebruiker), heeft u een [OBJECTTYPE] genaamd [OBJECTNAME] gegeven.
-		<form name="form">
-			<button name="Keep" text="Behouden"/>
-			<button name="Discard" text="Afwijzen"/>
-			<button name="Mute" text="Negeren"/>
-		</form>
-	</notification>
-	<notification name="UserGiveItem">
-		[NAME] heeft u een [OBJECTTYPE] genaamd &apos;[OBJECTNAME]&apos; gegeven.
-		<form name="form">
-			<button name="Keep" text="Behouden"/>
-			<button name="Discard" text="Afwijzen"/>
-			<button name="Mute" text="Negeren"/>
-		</form>
-	</notification>
-	<notification name="GodMessage">
-		[NAME]
-[MESSAGE]
-	</notification>
-	<notification name="JoinGroup">
-		[MESSAGE]
-		<form name="form">
-			<button name="Join" text="Deelnemen"/>
-			<button name="Decline" text="Afwijzen"/>
-			<button name="Info" text="Info"/>
-		</form>
-	</notification>
-	<notification name="TeleportOffered">
-		[NAME] heeft aangeboden u te teleporteren naar zijn of haar locatie:
-
-[MESSAGE]
-		<form name="form">
-			<button name="Teleport" text="Teleport"/>
-			<button name="Cancel" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification name="GotoURL">
-		[MESSAGE]
-[URL]
-		<form name="form">
-			<button name="Later" text="Later"/>
-			<button name="GoNow..." text="Ga Nu..."/>
-		</form>
-	</notification>
-	<notification name="OfferFriendship">
-		[NAME] biedt vriendschap aan.
-
-[MESSAGE]
-
-(Standaard zult u in staat zijn om elkaars online status te zien.)
-		<form name="form">
-			<button name="Accept" text="Accepteren"/>
-			<button name="Decline" text="Afwijzen"/>
-		</form>
-	</notification>
-	<notification name="OfferFriendshipNoMessage">
-		[NAME] biedt vriendschap aan.
-
-(Standaard zult u in staat zijn om elkaars online status te zien.)
-		<form name="form">
-			<button name="Accept" text="Accepteren"/>
-			<button name="Decline" text="Afwijzen"/>
-		</form>
-	</notification>
-	<notification name="FriendshipAccepted">
-		[NAME] heeft uw vriendschapsaanbod geaccepteerd.
-	</notification>
-	<notification name="FriendshipDeclined">
-		[NAME] heeft uw vriendschapsaanbod afgewezen.
-	</notification>
-	<notification name="OfferCallingCard">
-		[NAME] biedt zijn/haar visitekaartje aan.
-Dit zal een bladwijzer in uw inventaris toevoegen zodat u deze inwoner snel kunt een IM kunt sturen.
-		<form name="form">
-			<button name="Accept" text="Accepteren"/>
-			<button name="Decline" text="Afwijzen"/>
-		</form>
-	</notification>
-	<notification name="RegionRestartMinutes">
-		De regio zal over [MINUTES] minuten herstarten.
-Indien u in deze regio blijft, zult u worden uitgelogd.
-	</notification>
-	<notification name="RegionRestartSeconds">
-		De regio zal over [SECONDS] seconden herstarten.
-Indien u in deze regio blijft, zult u worden uitgelogd.
-	</notification>
-	<notification name="LoadWebPage">
-		Laad webpagina [URL]?
-
-[MESSAGE]
-
-Van object: [OBJECTNAME], eigenaar: [NAME]?
-		<form name="form">
-			<button name="Gotopage" text="Laden"/>
-			<button name="Cancel" text="Annuleren"/>
-		</form>
-	</notification>
-	<notification name="FailedToFindWearableUnnamed">
-		Kon [TYPE] niet in de database vinden.
-	</notification>
-	<notification name="FailedToFindWearable">
-		Kon [TYPE] genaamd [DESC] niet in de database vinden.
-	</notification>
-	<notification name="InvalidWearable">
-		Het item dat u probeert te dragen gebruikt een kenmerk dat uw viewer niet kan lezen. Upgrade u alstublieft uw versie van [APP_NAME] om dit item te dragen.
-	</notification>
-	<notification name="ScriptQuestion">
-		[OBJECTNAME]&apos;, een object van &apos;[NAME]&apos;, wil graag:
-
-[QUESTIONS]
-Is dit OK?
-		<form name="form">
-			<button name="Yes" text="Ja"/>
-			<button name="No" text="Nee"/>
-			<button name="Mute" text="Negeren"/>
-		</form>
-	</notification>
-	<notification name="ScriptQuestionCaution">
-		[OBJECTNAME]&apos;, een object van &apos;[NAME]&apos;, wil graag
-
-[QUESTIONS]
-Indien u dit object en zijn maker niet vertrouwt, zou u het verzoek moeten weigeren. Klik de Details knop voor additionele informatie.
-
-Dit verzoek inwilligen?
-		<form name="form">
-			<button name="Grant" text="Inwilligen"/>
-			<button name="Deny" text="Weigeren"/>
-			<button name="Details" text="Details..."/>
-		</form>
-	</notification>
-	<notification name="ScriptDialog">
-		[NAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
-[MESSAGE]
-		<form name="form">
-			<button name="Ignore" text="Negeren"/>
-		</form>
-	</notification>
-	<notification name="ScriptDialogGroup">
-		[GROUPNAME]&apos;s &apos;[TITLE]&apos;
-[MESSAGE]
-		<form name="form">
-			<button name="Ignore" text="Negeren"/>
-		</form>
-	</notification>
-	<notification name="FirstBalanceIncrease">
-		U heeft zojuist L$[AMOUNT] ontvangen.
-Objecten en andere gebruikers kunnen u L$ geven.
-Uw saldo wordt in de rechterbovenhoek van het scherm getoond.
-	</notification>
-	<notification name="FirstBalanceDecrease">
-		U heeft zojuist L$[AMOUNT] betaald.
-Uw saldo wordt in de rechterbovenhoek van het scherm getoond.
-	</notification>
-	<notification name="FirstSit">
-		U zit.
-Gebruik de pijltjestoetsen (of AWSD) of uw gezichtsveld te wijzigen.
-Klik de &apos;Sta Op&apos; knop om op te staan.
-	</notification>
-	<notification name="FirstMap">
-		Klik en sleep om de kaart te verplaatsen.
-Dubbelklik om te teleporteren.
-Gebruik de bedieningselementen aan de rechterkant om dingen te vinden en verschillende achtergronden te tonen.
-	</notification>
-	<notification name="FirstBuild">
-		U kunt nieuwe objecten bouwen in sommige gebieden van [SECOND_LIFE].
-Gebruik de gereedschappen in de linkerbovenhoek om te bouwen en probeer Ctrl en Alt ingedrukt te houden om snel tussen gereedschappen te wisselen.
-Druk Esc om te stoppen met bouwen.
-	</notification>
-	<notification name="FirstLeftClickNoHit">
-		Links-klikken werkt in op speciale objecten.
-Indien de muisaanwijzer verandert in een hand, kunt u interacteren met het object.
-Rechts-klikken toont altijd een menu van dingen die u kunt doen.
-	</notification>
-	<notification name="FirstTeleport">
-		Deze regio staat geen point-to-point teleport toe, dus u bent naar de dichtstbijzijnde telehub getransporteerd.
-Uw bestemming is gemarkeerd met een groot baken.
-Volg de rode pijl naar het baken, of klik de pijl om het baken te verwijderen.
-	</notification>
-	<notification name="FirstOverrideKeys">
-		Uw bewegingstoetsen worden nu door een object afgehandeld.
-Probeer de pijltjestoetsen of AWSD om te zien wat ze doen.
-Sommige objecten (zoals geweren) vereisen dat u in mouselook gaat om ze te gebruiken.
-Druk &apos;M&apos; om dit te doen.
-	</notification>
-	<notification name="FirstAppearance">
-		U bent uw uiterlijk aan het bewerken.
-Gebruik de pijltjestoetsen om uw gezichtsveld te draaien en te zoomen.
-Druk &apos;Alles Opslaan&apos; om uw uiterlijk op te slaan wanneer u klaar bent.
-U kunt uw uiterlijk zo vaak als u wil bewerken.
-	</notification>
-	<notification name="FirstInventory">
-		Dit is uw inventaris, die objecten, notitiekaarten, kleding en andere eigendommen bevat.
-* Om een object of een kleding-map te dragen, sleep het op uzelf.
-* Om een object in de wereld te brengen, sleep het op de grond.
-* Om een notitiekaart te lezen, dubbelklik erop.
-	</notification>
-	<notification name="FirstSandbox">
-		Dit is een zandbak regio.
-Objecten die u hier bouwt, kunnen worden verwijderd nadat u het gebied verlaat. Zandbakken schonen op regelmatige basis, kijk alstublieft naar de informatie aan de bovenkant van het scherm, naast de regionaam.
-
-Zandbak regio&apos;s zijn ongewoon en gemarkeerd met borden.
-	</notification>
-	<notification name="FirstFlexible">
-		Dit object is flexibel.
-Flexibele objecten mogen niet fysiek zijn en moeten fantoom zijn tot de &apos;flexibel&apos; checkbox wordt uitgezet.
-	</notification>
-	<notification name="FirstDebugMenus">
-		U heeft het menu Geavanceerd geactiveerd.
-Dit menu bevat opties die handig zijn voor ontwikkelaars tijdens het debuggen van [SECOND_LIFE].
-Om dit menu in en uit te schakelen drukt u binnen Windows Ctrl+Alt+D. Met een Mac drukt u &#8997;&#8984;D.
-	</notification>
-	<notification name="FirstSculptedPrim">
-		U bent een sculpted prim aan het bewerken.
-Sculpted prims vereisen een speciaal textuur om hun vorm te bepalen.
-U kunt voorbeelden van sculpt-texturen in de inventaris bibliotheek vinden.
-	</notification>
-	<notification name="FirstMedia">
-		U bent begonnen met het afspelen van media. In het Voorkeurenvenster, onder Audio / Video, kan media worden ingesteld om automatisch te beginnen met afspelen. Let op dat dit een beveiligingsrisico kan zijn voor media sites die u niet vertrouwt.
-	</notification>
-	<notification name="MaxListSelectMessage">
-		U mag slecht maximaal [MAX_SELECT] items van deze lijst kiezen.
-	</notification>
-	<notification name="VoiceInviteP2P">
-		[NAME] nodigt u uit voor een Voice chat gesprek.
-Klik Accepteren om deel te nemen aan dit gesprek of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren.
-		<form name="form">
-			<button name="Accept" text="Accepteren"/>
-			<button name="Decline" text="Afwijzen"/>
-			<button name="Mute" text="Negeren"/>
-		</form>
-	</notification>
-	<notification name="AutoUnmuteByIM">
-		Er is een instant message naar [NAME] gestuurd, waardoor deze automatisch van de negeerlijst is gehaald.
-	</notification>
-	<notification name="AutoUnmuteByMoney">
-		Er is geld gegeven aan [NAME], waardoor deze automatisch van de negeerlijst is gehaald.
-	</notification>
-	<notification name="AutoUnmuteByInventory">
-		Er is inventaris aangeboden aan [NAME], waardoor deze automatisch van de negeerlijst is gehaald.
-	</notification>
-	<notification name="VoiceInviteGroup">
-		[NAME] doet nu mee met een Voice chat gesprek binnen de groep [GROUP].
-Klik Accepteren om deel te nemen aan het gesprek of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren.
-		<form name="form">
-			<button name="Accept" text="Accepteren"/>
-			<button name="Decline" text="Afwijzen"/>
-			<button name="Mute" text="Negeren"/>
-		</form>
-	</notification>
-	<notification name="VoiceInviteAdHoc">
-		[NAME] doet nu mee met een Voice chat gesprek binnen een conferentie chat.
-Klik Accepteren om deel te nemen aan het gesprek of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren.
-		<form name="form">
-			<button name="Accept" text="Accepteren"/>
-			<button name="Decline" text="Afwijzen"/>
-			<button name="Mute" text="Negeren"/>
-		</form>
-	</notification>
-	<notification name="InviteAdHoc">
-		[NAME] nodigt u uit voor een conferentie chat.
-Klik Accepteren om deel te nemen aan de chat of Afwijzen om de uitnodiging af te wijzen. Klik Negeren om deze persoon te negeren.
-		<form name="form">
-			<button name="Accept" text="Accepteren"/>
-			<button name="Decline" text="Afwijzen"/>
-			<button name="Mute" text="Negeren"/>
-		</form>
-	</notification>
-	<notification name="VoiceChannelFull">
-		Het voice gesprek waaraan u probeert deel te nemen, [VOICE_CHANNEL_NAME], heeft zijn maximale capaciteit bereikt. Probeert u het alstublieft later nog een keer.
-	</notification>
-	<notification name="ProximalVoiceChannelFull">
-		Onze excuses. Dit gebied heeft zijn maximale capaciteit voor voice conversaties bereikt. Probeert u alstublieft voice te gebruiken in een ander gebied.
-	</notification>
-	<notification name="VoiceChannelDisconnected">
-		U bent niet meer verbonden met [VOICE_CHANNEL_NAME].  U zult weer worden verbonden met spatiale voice chat.
-	</notification>
-	<notification name="VoiceChannelDisconnectedP2P">
-		[VOICE_CHANNEL_NAME] heeft het gesprek beëindigd. U zult weer worden verbonden met spatiale voice chat.
-	</notification>
-	<notification name="P2PCallDeclined">
-		[VOICE_CHANNEL_NAME] heeft uw oproep afgewezen. U zult weer worden verbonden met spatiale voice chat.
-	</notification>
-	<notification name="P2PCallNoAnswer">
-		[VOICE_CHANNEL_NAME] is niet beschikbaar om uw oproep aan te nemen. U zult weer worden verbonden met spatiale voice chat.
-	</notification>
-	<notification name="VoiceChannelJoinFailed">
-		Verbinden met [VOICE_CHANNEL_NAME] is mislukt, probeert u het later alstublieft nog een keer. U zult weer worden verbonden met spatiale voice chat.
-	</notification>
-	<notification name="VoiceLoginRetry">
-		We zijn bezig om een voice kanaal voor u te maken. Dit kan tot een minuut duren.
-	</notification>
-	<notification name="Cannot enter parcel: not a group member">
-		Kan het perceel niet betreden, u bent geen lid van de juiste groep.
-	</notification>
-	<notification name="Cannot enter parcel: banned">
-		Kan het perceel niet betreden, u bent verbannen.
-	</notification>
-	<notification name="Cannot enter parcel: not on access list">
-		Kan het perceel niet betreden, u staat niet op de toegangslijst.
-	</notification>
-	<notification name="VoiceNotAllowed">
-		U heeft geen permissie om met voice chat te verbinden voor [VOICE_CHANNEL_NAME].
-	</notification>
-	<notification name="VoiceCallGenericError">
-		Er is een fout opgetreden tijdens het verbinden met voice chat voor [VOICE_CHANNEL_NAME]. Probeert u het later alstublieft opnieuw.
-	</notification>
-	<notification name="UnableToOpenCommandURL">
-		De URL die u heeft geklikt kan niet binnen deze webbrowser worden geopend.
-	</notification>
-	<global name="UnsupportedCPU">
-		- Uw Processor snelheid (CPU) voldoet niet aan de minimale eisen.
-	</global>
-	<global name="UnsupportedGLRequirements">
-		U heeft mogelijk niet de vereiste hardware voor [APP_NAME]. [APP_NAME] verlangd een OpenGL grafische kaart die multi-texture ondersteund. Indien dat het geval is, overtuig u er dan van dat u de laatste stuurprogramma&apos;s voor uw grafische kaart, service packs en patches voor uw Operating systeem heeft.
-
-Indien u problemen blijft houden, bezoek dan: http://www.secondlife.com/support
-	</global>
-	<global name="UnsupportedCPUAmount">
-		796
-	</global>
-	<global name="UnsupportedRAMAmount">
-		510
-	</global>
-	<global name="UnsupportedGPU">
-		- Uw grafische kaart voldoet niet aan de minimale eisen.
-	</global>
-	<global name="UnsupportedRAM">
-		- Uw systeem geheugen voldoet niet aan de minimale eisen.
-	</global>
-	<global name="PermYes">
-		Ja
-	</global>
-	<global name="PermNo">
-		Nee
-	</global>
-</notifications>
diff --git a/indra/newview/skins/default/xui/nl/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/nl/panel_block_list_sidetray.xml
deleted file mode 100644
index 38018a3626aef1db4c62fe823572cdfc09981eba..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_block_list_sidetray.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="block_list_panel">
-	<text name="title_text">
-		Blokkeer Lijst
-	</text>
-	<scroll_list name="blocked" tool_tip="Lijst van momenteel geblokkeerde bewoners"/>
-	<button label="Blokkeer Bewoner..." label_selected="Blokkeer Bewoner..." name="Block resident..." tool_tip="Kies een bewoner om te blokkeren"/>
-	<button label="Blokkeer object bij naam..." label_selected="Blokkeer object bij naam..." name="Block object by name..."/>
-	<button label="Deblokkeren" label_selected="Deblokkeren" name="Unblock" tool_tip="Verweider bewoner of object uit blokkeer lijst"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_edit_profile.xml b/indra/newview/skins/default/xui/nl/panel_edit_profile.xml
deleted file mode 100644
index fffdb9e8dfd9b71e656aff5a575ea7f874fb3c1d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_edit_profile.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel name="edit_profile_panel">
-   <string name="CaptionTextAcctInfo">
-       [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION]
-   </string>
-   <string name="AcctTypeResident"
-    value="Inwoner" />
-   <string name="AcctTypeTrial"
-    value="Proef" />
-   <string name="AcctTypeCharterMember"
-    value="Charter lid" />
-   <string name="AcctTypeEmployee"
-    value="Linden Lab werknemer" />
-   <string name="PaymentInfoUsed"
-    value="Betalingsinformatie gebruikt" />
-   <string name="PaymentInfoOnFile"
-    value="Betalingsinformatie aanwezig" />
-   <string name="NoPaymentInfoOnFile"
-    value="Geen betalingsinfo aanwezig" />
-   <string name="AgeVerified"
-    value="Leeftijd geverifieerd" />
-   <string name="NotAgeVerified"
-    value="Leeftijd niet geverifieerd" />
-   <string name="partner_edit_link_url">
-       http://www.secondlife.com/account/partners.php?lang=nl
-   </string>
-    <panel name="scroll_content_panel">
-    <panel name="data_panel" >
-     <panel name="lifes_images_panel">
-          <panel name="second_life_image_panel">
-              <text name="second_life_photo_title_text">
-			[SECOND_LIFE]:
-              </text>
-          </panel>
-      </panel>
-        <text name="title_partner_text" value="Partner:"/>
-        <panel name="partner_data_panel">
-            <text name="partner_text"/>
-         </panel>
-      <text name="text_box3">
-	Antwoord bij Niet Storen:
-      </text>
-    </panel>
-    </panel>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_group_general.xml b/indra/newview/skins/default/xui/nl/panel_group_general.xml
deleted file mode 100644
index 2a0fe032321fce92871d157fa3c0be73dd666746..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_group_general.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Algemeen" name="general_tab">
-	<string name="help_text">
-		Het tabblad Algemeen bevat algemene informatie over deze groep, een lijst met eigenaren en zichtbare leden, algemene groepsvoorkeuren en ledenopties. 
-
-Laat uw muis boven de opties zweven voor meer help.
-	</string>
-	<string name="group_info_unchanged">
-		Algemene groepsinformatie is gewijzigd.
-	</string>
-	<button label="?" label_selected="?" name="help_button"/>
-	<line_editor label="Typ uw nieuwe groepsnaam hier" name="group_name_editor"/>
-	<text name="group_name">
-		Typ uw nieuwe groepsnaam hier
-	</text>
-	<text name="prepend_founded_by">
-		Opgericht door
-	</text>
-	<text name="founder_name" left_delta="84">
-		(wachten)
-	</text>
-	<text name="group_charter_label" width="244">
-		Groepcharter
-	</text>
-	<texture_picker label="Groepinsigne" name="insignia" tool_tip="Klik om een afbeelding te kiezen"/>
-	<text_editor name="charter" width="244">
-		Groepcharter
-	</text_editor>
-	<button label="Deelnemen (L$0)" label_selected="Deelnemen (L$0)" name="join_button"/>
-	<button label="Gedetailleerde weergave" label_selected="Gedetailleerde weergave" name="info_button" width="154"/>
-	<text name="text_owners_and_visible_members">
-		Eigenaren en zichtbare leden
-	</text>
-	<text name="text_owners_are_shown_in_bold">
-		(Eigenaren worden vet getoond)
-	</text>
-	<name_list name="visible_members">
-		<name_list.columns label="Lidnaam" name="name"/>
-		<name_list.columns label="Titel" name="title"/>
-		<name_list.columns label="Laatste login" name="online"/>
-	</name_list>
-	<text name="text_group_preferences">
-		Groepvoorkeuren
-	</text>
-	<panel name="preferences_container">
-		<check_box label="Toon in zoeken" name="show_in_group_list" tool_tip="Stelt in of deze groep zichtbaar is in de zoekresultaten."/>
-		<check_box label="Vrije toegang" name="open_enrollement" tool_tip="Stelt in of deze groep toestaat dat nieuwe leden lid kunnen worden zonder uitgenodigd te zijn."/>
-		<check_box label="Contributiebijdrage:" name="check_enrollment_fee" tool_tip="Stelt in of er een contributiebijdrage vereist is om lid te worden van de groep."/>
-		<spinner name="spin_enrollment_fee" tool_tip="Nieuwe leden moeten deze bijdrage betalen om deel te nemen aan de groep wanneer &quot;Contributie bijdrage&quot; is aangevinkt." width="58" left_delta="142"/>
-		<combo_box name="group_mature_check" tool_tip="Stelt in of uw groepsinformatie als mature beschouwd wordt.">
-			<combo_box.item name="select_mature" label="- Selecteer -"/>
-			<combo_box.item name="mature" label="Mature inhoud"/>
-			<combo_box.item name="pg" label="PG inhoud"/>
-		</combo_box>
-		<panel name="title_container">
-			<text name="active_title_label">
-				Mijn actieve titel
-			</text>
-			<combo_box name="active_title" tool_tip="Stelt de titel in die in uw avatar&apos;s naamlabel verschijnt wanneer deze groep actief is."/>
-		</panel>
-		<check_box label="Ontvang groepsberichten" name="receive_notices" tool_tip="Stelt in of u berichten van deze groep wilt ontvangen. Verwijder het vinkje wanneer u spam ontvangt van deze groep." left_delta="-4"/>
-		<check_box label="Toon deze groep in mijn profiel" name="list_groups_in_profile" tool_tip="Stelt in of u deze groep in uw profiel wil laten zien"/>
-	</panel>
-	<string name="incomplete_member_data_str">
-		Ledendata ophalen
-	</string>
-	<string name="confirm_group_create_str">
-		Het maken van deze groep zal u L$ 100 kosten. Weet u ECHT héél zeker dat u L$ 100 wilt betalen om deze groep te maken?
-
-WEES U ER VAN BEWUST, dat als er niemand binnen 48 uur lid wordt van deze groep, deze weer ontmanteld zal worden. Hierbij zal ook de groepsnaam onbeschikbaar blijven voor toekomstig gebruik!
-	</string>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_group_invite.xml b/indra/newview/skins/default/xui/nl/panel_group_invite.xml
deleted file mode 100644
index e012d88ff5900f2ff6a2e0509de43f5f4920b72d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_group_invite.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Nodig een lid uit" name="invite_panel">
-	<text name="help_text">
-		U kunt meerdere inwoners selecteren 
-om voor uw groep uit te nodigen. Klik 
-&apos;Open inwonerkiezer&apos; om te starten.
-	</text>
-	<button label="Open inwonerkiezer" name="add_button" tool_tip=""/>
-	<name_list name="invitee_list" tool_tip="Houd de Ctrl-toets vast en klik de namen van de inwoners om meerdere te selecteren."/>
-	<button label="Verwijder geselecteerden van lijst" name="remove_button" tool_tip="Verwijderd hierboven geselecteerde inwoners van de uitnodigingslijst."/>
-	<text name="role_text">
-		Kies welke rol aan hen wordt 
-toegewezen:
-	</text>
-	<combo_box name="role_name" tool_tip="Kies uit de lijst met rollen waarvoor u toestemming heeft om leden toe te wijzen." bottom_delta="-30"/>
-	<button label="Verzend uitnodigingen" name="ok_button"/>
-	<button label="Annuleren" name="cancel_button"/>
-	<string name="confirm_invite_owner_str">
-		Weet u zeker dat u een (een) nieuwe eigenaar(s) wilt uitnodigen? Deze actie is permanent!
-	</string>
-	<string name="loading">
-		(laden...)
-	</string>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_group_land_money.xml b/indra/newview/skins/default/xui/nl/panel_group_land_money.xml
deleted file mode 100644
index 43babafdf8db798902bd747591ef64d986761de7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_group_land_money.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Land &amp; L$" name="land_money_tab">
-	<string name="help_text">
-		Percelen in groepseigendom worden getoond, samen met bijdragedetails. Een waarschuwing verschijnt totdat Totaal Land In Gebruik minder dan of gelijk aan de totale bijdrage is. De Planning, Details en Verkopen tabbladen verschaffen meer informatie over de financiën van de groep.
-	</string>
-	<button label="?" name="help_button"/>
-	<string name="cant_view_group_land_text">
-		U heeft geen permissie om land te bekijken dat eigendom van de groep is.
-	</string>
-	<string name="cant_view_group_accounting_text">
-		U heeft geen permissie om accounting informatie van de groep te bekijken.
-	</string>
-	<string name="loading_txt">
-		Laden...
-	</string>
-	<text name="group_land_heading" width="260">
-		Land in eigendom van groep
-	</text>
-	<scroll_list name="group_parcel_list">
-		<column label="Perceelnaam" name="name"/>
-		<column label="Regio" name="location"/>
-		<column label="Type" name="type"/>
-		<column label="Gebied" name="area"/>
-	</scroll_list>
-	<button label="Toon op kaart" label_selected="Toon op kaart" name="map_button"/>
-	<text name="total_contributed_land_label">
-		Totale bijdrage:
-	</text>
-	<text name="total_contributed_land_value" width="200">
-		[AREA] m²
-	</text>
-	<text name="total_land_in_use_label">
-		Totaal land in gebruik:
-	</text>
-	<text name="total_land_in_use_value">
-		[AREA] m²
-	</text>
-	<text name="land_available_label">
-		Land beschikbaar:
-	</text>
-	<text name="land_available_value">
-		[AREA] m²
-	</text>
-	<text name="your_contribution_label">
-		Uw bijdrage:
-	</text>
-	<string name="land_contrib_error">
-		Niet in staat uw landbijdrage in te stellen.
-	</string>
-	<text name="your_contribution_units">
-		( m² )
-	</text>
-	<text name="your_contribution_max_value">
-		([AMOUNT] max)
-	</text>
-	<text name="group_over_limit_text">
-		Groepsleden moeten landcredits bijdragen om het gebruikte land
-te ondersteunen.
-	</text>
-	<text name="group_money_heading">
-		Groep L$
-	</text>
-	<tab_container name="group_money_tab_container">
-		<panel label="Planning" name="group_money_planning_tab">
-			<text_editor name="group_money_planning_text">
-				Berekenen...
-			</text_editor>
-		</panel>
-		<panel label="Details" name="group_money_details_tab">
-			<text_editor name="group_money_details_text">
-				Berekenen...
-			</text_editor>
-			<button label="&lt; Eerder" label_selected="&lt; Eerder" name="earlier_details_button" tool_tip="Ga terug in de tijd"/>
-			<button label="Later &gt;" label_selected="Later &gt;" name="later_details_button" tool_tip="Ga vooruit in de tijd"/>
-		</panel>
-		<panel label="Verkopen" name="group_money_sales_tab">
-			<text_editor name="group_money_sales_text">
-				Berekenen...
-			</text_editor>
-			<button label="&lt; Eerder" label_selected="&lt; Eerder" name="earlier_sales_button" tool_tip="Ga terug in de tijd"/>
-			<button label="Later &gt;" label_selected="Later &gt;" name="later_sales_button" tool_tip="Ga vooruit in de tijd"/>
-		</panel>
-	</tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_group_notices.xml b/indra/newview/skins/default/xui/nl/panel_group_notices.xml
deleted file mode 100644
index a1929bb5e1224ea6803d7fb2364f70bb3f50a66f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_group_notices.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Berichten" name="notices_tab">
-	<string name="help_text">
-		Berichten vormen een snelle manier om met een groep te communiceren door een bericht en optioneel een bevestigd item af te leveren. Berichten gaan alleen naar groepsleden in rollen die de mogelijkheid hebben om berichten te ontvangen. U kunt berichten uitzetten in de tab Algemeen.
-	</string>
-	<string name="no_notices_text">
-		Er zijn geen oude berichten.
-	</string>
-	<button label="?" label_selected="?" name="help_button"/>
-	<text name="lbl">
-		Groepsberichtenarchief
-	</text>
-	<text name="lbl2">
-		Berichten worden 14 dagen bewaard. Berichtenlijsten zijn gelimiteerd tot 200 berichten groep per dag.
-	</text>
-	<scroll_list name="notice_list">
-		<column label="Onderwerp" name="subject"/>
-		<column label="Van" name="from"/>
-		<column label="Datum" name="date"/>
-	</scroll_list>
-	<text name="notice_list_none_found">
-		Geen gevonden.
-	</text>
-	<button label="Maak nieuw bericht" label_selected="Maak nieuw bericht" name="create_new_notice"/>
-	<button label="Verversen" label_selected="Ververs lijst" name="refresh_notices"/>
-	<panel label="Maak nieuw bericht" name="panel_create_new_notice">
-		<text name="lbl">
-			Maak een bericht
-		</text>
-		<text name="lbl2">
-			U kunt een enkel item aan een bericht toevoegen door het van uw inventaris naar dit paneel te slepen. Bevestigde items moeten kopieerbaar en overdraagbaar zijn en u kunt geen mappen versturen.
-		</text>
-		<text name="lbl3">
-			Onderwerp:
-		</text>
-		<text name="lbl4">
-			Bericht:
-		</text>
-		<text name="lbl5">
-			Bevestig:
-		</text>
-		<button label="Verwijder bevestiging" label_selected="Verwijder bevestiging" name="remove_attachment"/>
-		<button label="Verzend bericht" label_selected="Verzend bericht" name="send_notice"/>
-		<panel name="drop_target" tool_tip="Sleep een inventarisitem op het berichtvenster om het met het bericht mee te sturen. U dient permissie te hebben om het object te kopiëren en over te dragen wilt u het met het bericht mee kunnen sturen."/>
-	</panel>
-	<panel label="Bekijk oud bericht" name="panel_view_past_notice">
-		<text name="lbl">
-			Gearchiveerd bericht
-		</text>
-		<text name="lbl2">
-			Om een nieuw bericht te sturen, klik de &apos;Maak nieuw bericht&apos; knop hierboven.
-		</text>
-		<text name="lbl3">
-			Onderwerp:
-		</text>
-		<text name="lbl4">
-			Bericht:
-		</text>
-		<button label="Open bevestiging" label_selected="Open bevestiging" name="open_attachment" width="118"/>
-		<line_editor left="128" name="view_inventory_name" width="256"/>
-	</panel>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_group_roles.xml b/indra/newview/skins/default/xui/nl/panel_group_roles.xml
deleted file mode 100644
index 507906c0d7c601a63ef561908c5d47903431ec18..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_group_roles.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Leden &amp; Rollen" name="roles_tab">
-	<panel.string name="default_needs_apply_text">
-		Er zijn niet opgeslagen veranderingen op de huidige tab
-	</panel.string>
-	<panel.string name="want_apply_text">
-		Wilt u deze wijzigingen opslaan?
-	</panel.string>
-	<tab_container height="164" name="roles_tab_container">
-		<panel height="148" label="LEDEN" name="members_sub_tab" tool_tip="Leden">
-			<panel.string name="help_text">
-				U kunt Rollen aan Leden toewijzen of van Leden afnemen. Selecteer meerdere Leden door de Ctrl toets ingedrukt te houden en op hun namen te klikken.
-			</panel.string>
-			<filter_editor label="Filter Leden" name="filter_input"/>
-			<name_list bottom_delta="-105" height="104" name="member_list">
-				<name_list.columns label="Lid Naam" name="name"/>
-				<name_list.columns label="Donaties" name="donated"/>
-				<name_list.columns label="Laatste Login" name="online"/>
-			</name_list>
-			<button label="Uitnodigen" name="member_invite"/>
-			<button label="Uitwerpen" name="member_eject"/>
-		</panel>
-		<panel height="148" label="ROLLEN" name="roles_sub_tab">
-			<panel.string name="help_text">
-				Rollen hebben een titel en een toegestane lijst met Vaardigheden die Leden kunnen uitvoeren. Leden kunnen tot 1 of meer Rollen behoren. Een groep kan tot 10 Rollen bevatten, inclusief de Iedereen en Eigenaren Rollen.
-			</panel.string>
-			<panel.string name="cant_delete_role">
-				De &apos;Iedereen&apos; en &apos;Eigenaren&apos; Rollen zijn speciaal en kunnen niet verwijderd worden.
-			</panel.string>
-			<panel.string name="power_folder_icon">
-				Inv_FolderClosed
-			</panel.string>
-			<filter_editor label="Filter Rollen" name="filter_input"/>
-			<scroll_list bottom_delta="-104" height="104" name="role_list">
-				<scroll_list.columns label="Rol" name="name"/>
-				<scroll_list.columns label="Titel" name="title"/>
-				<scroll_list.columns label="Leden" name="members"/>
-			</scroll_list>
-			<button label="Nieuwe Rol..." name="role_create"/>
-			<button label="Rol Verwijderen" name="role_delete"/>
-		</panel>
-		<panel height="148" label="VAARDIGHEDEN" name="actions_sub_tab" tool_tip="Je kan een vaardigheid&apos;s beschrijving en welke Rollen en Leden kunnen uitvoeren van de Vaardigheid.">
-			<panel.string name="help_text">
-				Mogelijkheden stellen leden in staat om specifieke dingen in een groep te doen. Er is een brede variëteit aan Mogelijkheden.
-			</panel.string>
-			<filter_editor label="Filter Vaardigheden" name="filter_input"/>
-			<scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Selecteer een Vaardigheid om meer details te bekijken"/>
-		</panel>
-	</tab_container>
-	<panel name="members_footer">
-		<text name="static">
-			Toegekende Rollen
-		</text>
-		<text name="static2">
-			Toegestane Mogelijkheden
-		</text>
-		<scroll_list name="member_allowed_actions" tool_tip="Voor details van elke Toegestane Vaardigheid in de Mogelijkheden tab"/>
-	</panel>
-	<panel name="roles_footer">
-		<text name="static">
-			Naam
-		</text>
-		<line_editor name="role_name">
-			Werknemers
-		</line_editor>
-		<text name="static3">
-			Titel
-		</text>
-		<line_editor name="role_title">
-			(wachten)
-		</line_editor>
-		<text name="static2">
-			Omschrijving
-		</text>
-		<text_editor name="role_description">
-			(wachten)
-		</text_editor>
-		<text name="static4">
-			Toegewezen Rollen
-		</text>
-		<check_box label="Leden Onthullen" name="role_visible_in_list" tool_tip="Bepaalt of leden van deze rol zichtbaar zijn in de Algemeen tab voor mensen buiten de groep."/>
-		<text name="static5" tool_tip="Een lijst met Mogelijkheden die de geselecteerd rol kan uitvoeren.">
-			Toegestane Mogelijkheden
-		</text>
-		<scroll_list name="role_allowed_actions" tool_tip="For details of each allowed ability see the abilities tab"/>
-	</panel>
-	<panel name="actions_footer">
-		<text name="static">
-			Vaardigheid omschrijving
-		</text>
-		<text_editor name="action_description">
-			Dit is de Mogelijkheid &apos;Werp Leden uit deze Groep&apos;. Alleen een Eigenaar kan een andere Eigenaar uitwerpen.
-		</text_editor>
-		<text name="static2">
-			Rollen met deze vaardigheid
-		</text>
-		<text name="static3">
-			Leden met deze vaardigheid
-		</text>
-	</panel>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_login.xml b/indra/newview/skins/default/xui/nl/panel_login.xml
deleted file mode 100644
index bcc888061f9de9ef697b7d1ac7e7369bae7aa1aa..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_login.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
-	<panel.string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=nl-NL
-	</panel.string>
-	<panel.string name="forgot_password_url">
-		http://secondlife.com/account/request.php?lang=nl-NL
-	</panel.string>
-	<panel name="login_widgets">
-		<text name="first_name_text">
-			Voornaam:
-		</text>
-		<line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] Voornaam"/>
-		<text name="last_name_text">
-			Achternaam:
-		</text>
-		<line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] Achternaam"/>
-		<text name="password_text">
-			Paswoord:
-		</text>
-		<button label="Inloggen" label_selected="Inloggen" name="connect_btn"/>
-		<text name="start_location_text">
-			Start locatie:
-		</text>
-		<combo_box name="start_location_combo">
-			<combo_box.item label="Mijn Laatste Locatie" name="MyLastLocation"/>
-			<combo_box.item label="Mijn Thuis" name="MyHome"/>
-			<combo_box.item label="&lt;Tik regio naam&gt;" name="Typeregionname"/>
-		</combo_box>
-		<check_box label="Onthoud paswoord" name="remember_check"/>
-		<text name="create_new_account_text">
-			Maak een nieuwe account
-		</text>
-		<text name="forgot_password_text">
-			Naam of paswoord vergeten?
-		</text>
-		<text name="channel_text">
-			[VERSION]
-		</text>
-	</panel>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_main_inventory.xml b/indra/newview/skins/default/xui/nl/panel_main_inventory.xml
deleted file mode 100644
index c533cc20c0a39449c2b05e78bf91611dcbe7553a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_main_inventory.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Dingen" name="main inventory panel">
-	<panel.string name="Title">
-		Dingen
-	</panel.string>
-	<filter_editor label="Filter" name="inventory search editor"/>
-	<tab_container name="inventory filter tabs">
-		<inventory_panel label="Alle Voorwerpen" name="All Items"/>
-		<inventory_panel label="Recente Voorwerpen" name="Recent Items"/>
-	</tab_container>
-	<panel name="bottom_panel">
-		<button name="options_gear_btn" tool_tip="Toon extra opties"/>
-		<button name="add_btn" tool_tip="Voeg nieuw voorwerp toe"/>
-		<dnd_button name="trash_btn" tool_tip="Remove selected item"/>
-	</panel>
-	<menu_bar name="Inventory Menu">
-		<menu label="Bestand" name="File">
-			<menu_item_call label="Open" name="Open"/>
-			<menu label="Upload" name="upload">
-				<menu_item_call label="Plaatje (L$[COST])..." name="Upload Image"/>
-				<menu_item_call label="Geluid (L$[COST])..." name="Upload Sound"/>
-				<menu_item_call label="Animatie (L$[COST])..." name="Upload Animation"/>
-				<menu_item_call label="Bulk (L$[COST] per bestand)..." name="Bulk Upload"/>
-			</menu>
-			<menu_item_call label="Nieuw Venster" name="New Window"/>
-			<menu_item_call label="Toon Filters" name="Show Filters"/>
-			<menu_item_call label="Reset Filters" name="Reset Current"/>
-			<menu_item_call label="Sluit Alle Mappen" name="Close All Folders"/>
-			<menu_item_call label="Prullenbak Leegmaken" name="Empty Trash"/>
-			<menu_item_call label="Leeg Verloren En Gevonden" name="Empty Lost And Found"/>
-		</menu>
-		<menu label="Maken" name="Create">
-			<menu_item_call label="Nieuwe Map" name="New Folder"/>
-			<menu_item_call label="Nieuw Script" name="New Script"/>
-			<menu_item_call label="Nieuwe Notitie" name="New Note"/>
-			<menu_item_call label="Nieuw Gebaar" name="New Gesture"/>
-			<menu label="Nieuwe Kleding" name="New Clothes">
-				<menu_item_call label="Nieuw Overhemd" name="New Shirt"/>
-				<menu_item_call label="Nieuwe Broek" name="New Pants"/>
-				<menu_item_call label="Nieuwe Schoenen" name="New Shoes"/>
-				<menu_item_call label="Nieuwe Sokken" name="New Socks"/>
-				<menu_item_call label="Nieuwe Jas" name="New Jacket"/>
-				<menu_item_call label="Nieuwe Rok" name="New Skirt"/>
-				<menu_item_call label="Nieuwe Handschoenen" name="New Gloves"/>
-				<menu_item_call label="Nieuw Hemd" name="New Undershirt"/>
-				<menu_item_call label="Nieuwe Onderbroek" name="New Underpants"/>
-				<menu_item_call label="Nieuwe Alpha" name="New Alpha"/>
-				<menu_item_call label="Nieuwe Tattoo" name="New Tattoo"/>
-			</menu>
-			<menu label="Nieuwe Lichaamsdelen" name="New Body Parts">
-				<menu_item_call label="Nieuwe Vorm" name="New Shape"/>
-				<menu_item_call label="Nieuwe Huid" name="New Skin"/>
-				<menu_item_call label="Nieuw Haar" name="New Hair"/>
-				<menu_item_call label="Nieuwe Ogen" name="New Eyes"/>
-			</menu>
-		</menu>
-		<menu label="Sorteer" name="Sort">
-			<menu_item_check label="Bij Naam" name="By Name"/>
-			<menu_item_check label="Bij Datum" name="By Date"/>
-			<menu_item_check label="Mappen Altijd Op Naam" name="Folders Always By Name"/>
-			<menu_item_check label="Syteemmappen Naar Boven" name="System Folders To Top"/>
-		</menu>
-	</menu_bar>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/nl/panel_preferences_advanced.xml
deleted file mode 100644
index 6626c57472427e89b4239feb4f095c1530b4aea7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_advanced.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<panel name="advanced">
-	<panel.string name="resolution_format">
-		[RES_X] x [RES_Y]
-	</panel.string>
-	<panel.string name="aspect_ratio_text">
-		[NUM]:[DEN]
-	</panel.string>
-	<check_box label="Bubble chat" name="bubble_text_chat"/>
-	<color_swatch name="background" tool_tip="Kies kleur voor bubble chat"/>
-	<slider label="Opaciteit" name="bubble_chat_opacity"/>
-	<text name="AspectRatioLabel1" tool_tip="breedte / hoogte">
-		Beeldverhouding
-	</text>
-	<combo_box name="aspect_ratio" tool_tip="breedte / hoogte">
-		<combo_box.item label="4:3 (Standaard beeldbuis)" name="item1"/>
-		<combo_box.item label="5:4 (1280x1024 LCD)" name="item2"/>
-		<combo_box.item label="8:5 (Breedbeeld)" name="item3"/>
-		<combo_box.item label="16:9 (Breedbeeld)" name="item4"/>
-	</combo_box>
-	<check_box label="Automatisch detecteren" name="aspect_auto_detect"/>
-	<text name="heading1">
-		Camera:
-	</text>
-	<slider label="Kijkhoek" name="camera_fov"/>
-	<slider label="Afstand" name="camera_offset_scale"/>
-	<text name="heading2">
-		Automatisch positionering voor:
-	</text>
-	<check_box label="Maken/Bewerken" name="edit_camera_movement" tool_tip="Gebruik automatische camera positionering bij ingaan en verlaten van Bewerk modus."/>
-	<check_box label="Uiterlijk" name="appearance_camera_movement" tool_tip="Gebruik automatische camera positionering wanneer in bewerk modus"/>
-	<text name="heading3">
-		Avatars:
-	</text>
-	<check_box label="Toon mij in Muis Modus" name="first_person_avatar_visible"/>
-	<check_box label="Pijltjestoetsen bewegen mij altijd" name="arrow_keys_move_avatar_check"/>
-	<check_box label="Tik-tik-vasthouden om te rennen" name="tap_tap_hold_to_run"/>
-	<check_box label="Beweeg avatar lippen tijdens het praten" name="enable_lip_sync"/>
-	<check_box label="Toon script fouten" name="show_script_errors"/>
-	<radio_group name="show_location">
-		<radio_item label="In chat" name="0"/>
-		<radio_item label="In een venster" name="1"/>
-	</radio_group>
-	<check_box label="Toggle modus voor microfoon wanneer ik de spreek toets indruk:" name="push_to_talk_toggle_check" tool_tip="Wanneer in toggle mode, drukt u éénmaal op de ontspanner toets om de microfoon in-of uitschakelen. Wanneer niet in toggle mode, kan de microfoon uitzendingen uw stem alleen tijdens de ontspanner wordt ingedrukt."/>
-	<line_editor label="Push-to-Speak trigger" name="modifier_combo"/>
-	<button label="Plaats Toets" name="set_voice_hotkey_button"/>
-	<button label="Middelste Muis Knop" name="set_voice_middlemouse_button"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/nl/panel_preferences_alerts.xml
deleted file mode 100644
index d3174a703d7ef3e5f4b94e98f342ed915d48d53a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_alerts.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Pop-ups" name="popups" title="Pop-ups">
-	<text name="tell_me_label">
-		Vertel mij:
-	</text>
-	<check_box label="Wanneer ik L$ spendeer of krijg" name="notify_money_change_checkbox"/>
-	<check_box label="Wanneer mijn vrienden in- of uit-loggen" name="friends_online_notify_checkbox"/>
-	<text name="show_label">
-		Toon altijd deze waarschuwingen:
-	</text>
-	<text name="dont_show_label">
-		Toon nooit deze waarschuwingen:
-	</text>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_chat.xml b/indra/newview/skins/default/xui/nl/panel_preferences_chat.xml
deleted file mode 100644
index 84f385c86bcb40bfdaa5b1e1912de5da1a5efbad..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_chat.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Tekst chat" name="chat">
-	<radio_group name="chat_font_size">
-		<radio_item label="Klein" name="radio"/>
-		<radio_item label="Middel" name="radio2"/>
-		<radio_item label="Groot" name="radio3"/>
-	</radio_group>
-	<color_swatch label="U" name="user"/>
-	<text name="text_box1">
-		U
-	</text>
-	<color_swatch label="Anderen" name="agent"/>
-	<text name="text_box2">
-		Anderen
-	</text>
-	<color_swatch label="IM" name="im"/>
-	<text name="text_box3">
-		IM
-	</text>
-	<color_swatch label="Systeem" name="system"/>
-	<text name="text_box4">
-		Systeem
-	</text>
-	<color_swatch label="Fouten" name="script_error"/>
-	<text name="text_box5">
-		Fouten
-	</text>
-	<color_swatch label="Objecten" name="objects"/>
-	<text name="text_box6">
-		Objecten
-	</text>
-	<color_swatch label="Eigenaar" name="owner"/>
-	<text name="text_box7">
-		Eigenaar
-	</text>
-	<color_swatch label="URL&apos;s" name="links"/>
-	<text name="text_box9">
-		URL&apos;s
-	</text>
-	<check_box initial_value="true" label="Speel typeanimatie tijdens chat" name="play_typing_animation"/>
-	<check_box label="Email mij IMs wanneer ik offline ben" name="send_im_to_email"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_general.xml b/indra/newview/skins/default/xui/nl/panel_preferences_general.xml
deleted file mode 100644
index 7be570b27f35bb957a8e61225ac8bc0176e61a36..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_general.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Algemeen" name="general_panel">
-	<combo_box name="start_location_combo">
-		<combo_box.item name="MyHome" tool_tip="Log standaard in op mijn thuislocatie." label="Mijn thuis"/>
-		<combo_box.item name="MyLastLocation" tool_tip="Log standaard in op mijn laatste locatie." label="Mijn laatste locatie"/>
-	</combo_box>
-	<check_box label="Toon startlocatie op loginscherm" name="show_location_checkbox"/>
-	<combo_box name="fade_out_combobox">
-		<combo_box.item name="Never" label="Nooit"/>
-		<combo_box.item name="Show Temporarily" label="Toon tijdelijk"/>
-		<combo_box.item name="Always" label="Altijd"/>
-	</combo_box>
-	<check_box label="Kleine avatarnamen" name="small_avatar_names_checkbox"/>
-	<check_box label="Verberg mijn naam op mijn scherm" name="show_my_name_checkbox"/>
-	<text name="group_titles_textbox">
-		Groepstitels:
-	</text>
-	<check_box label="Verberg alle groepstitels" name="show_all_title_checkbox"/>
-	<check_box label="Verberg mijn groepstitel" name="show_my_title_checkbox"/>
-	<color_swatch label="" name="effect_color_swatch" tool_tip="Klik om de kleurkiezer te openen"/>
-	<text name="UI Size:">
-		UI grootte:
-	</text>
-	<check_box label="Gebruik resolutie onafhankelijke schaal" name="ui_auto_scale"/>
-	<spinner label="Afwezigheidtijdsduur:" name="afk_timeout_spinner"/>
-	<check_box label="Waarschuwen wanneer L$ worden uitgegeven of ontvangen" name="notify_money_change_checkbox"/>
-	<text name="maturity_desired_label">
-		Inhoudscategorie:
-	</text>
-	<text name="maturity_desired_prompt">
-		Ik wil toegang tot inhoud die is beoordeeld als:
-	</text>
-	<combo_box name="maturity_desired_combobox">
-		<combo_box.item name="Desired_Adult" label="PG, Mature en Adult"/>
-		<combo_box.item name="Desired_Mature" label="PG en Mature"/>
-		<combo_box.item name="Desired_PG" label="PG"/>
-	</combo_box>
-	<text name="maturity_desired_textbox">
-		PG
-	</text>
-	<text name="start_location_textbox">
-		Startlocatie:
-	</text>
-	<text name="show_names_textbox">
-		Toon namen:
-	</text>
-	<text name="effects_color_textbox">
-		Kleur voor mijn effecten:
-	</text>
-	<text name="seconds_textbox">
-		seconden
-	</text>
-	<text name="crash_report_textbox">
-		Crash rapporten:
-	</text>
-	<text name="language_textbox">
-		Taal:
-	</text>
-	<text name="language_textbox2">
-		(Vereist herstart)
-	</text>
-	<string name="region_name_prompt">
-		&lt; Type regionaam &gt;
-	</string>
-	<combo_box name="crash_behavior_combobox">
-		<combo_box.item name="Askbeforesending" label="Vraag voor verzenden"/>
-		<combo_box.item name="Alwayssend" label="Altijd verzenden"/>
-		<combo_box.item name="Neversend" label="Nooit verzenden"/>
-	</combo_box>
-	<combo_box name="language_combobox">
-		<combo_box.item name="System Default Language" label="Systeemstandaard"/>
-		<combo_box.item name="English" label="Engels (English)"/>
-		<combo_box.item name="Danish" label="Dansk (Deens) - Bèta"/>
-		<combo_box.item name="Deutsch(German)" label="Deutsch (Duits) - Bèta"/>
-		<combo_box.item name="Spanish" label="Español (Spaans) - Bèta"/>
-		<combo_box.item name="French" label="Français (Frans) - Bèta"/>
-		<combo_box.item name="Italian" label="Italiano (Italiaans) - Bèta"/>
-		<combo_box.item name="Hungarian" label="Magyar (Hongaars) - Bèta"/>
-		<combo_box.item name="Dutch" label="Nederlands - Bèta"/>
-		<combo_box.item name="Polish" label="Polski (Pools) - Bèta"/>
-		<combo_box.item name="Portugese" label="Português (Portugees) - Bèta"/>
-		<combo_box.item name="Russian" label="Русский (Russisch) - Bèta"/>
-		<combo_box.item name="Turkish" label="Türkçe (Turks) - Bèta"/>
-		<combo_box.item name="Ukrainian" label="Українська (Oekraïens) - Bèta"/>
-		<combo_box.item name="Chinese" label="中文 (简体) (Chinees) - Bèta"/>
-		<combo_box.item name="(Japanese)" label="日本語 (Japans) - Bèta"/>
-		<combo_box.item name="(Korean)" label="한국어 (Koreaans) - Bèta"/>
-	</combo_box>
-	<check_box label="Deel taal met objecten" name="language_is_public" tool_tip="Dit laat in-wereld objecten uw voorkeurstaal weten."/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/nl/panel_preferences_graphics1.xml
deleted file mode 100644
index 8f4244e2222d2382aab31dd39ceebee6d7c84932..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_graphics1.xml
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Grafisch" name="Display panel">
-	<button label="?" name="GraphicsPreferencesHelpButton"/>
-	<check_box label="Voer Second Life uit in een venster" name="windowed mode"/>
-	<text_editor name="FullScreenInfo" bottom="-56" height="40" width="480">
-		Wanneer niet aangevinkt, zal de viewer in volledig-scherm modus getoond worden wanneer u inlogt.
-	</text_editor>
-	<text name="WindowSizeLabel">
-		Venstergrootte:
-	</text>
-	<combo_box name="windowsize combo" left="115" >
-		<combo_box.item name="640x480" label="640x480"/>
-		<combo_box.item name="800x600" label="800x600"/>
-		<combo_box.item name="720x480" label="720x480 (NTSC)"/>
-		<combo_box.item name="768x576" label="768x576 (PAL)"/>
-		<combo_box.item name="1024x768" label="1024x768"/>
-	</combo_box>
-	<text name="DisplayResLabel" width="100">
-		Weergaveresolutie:
-	</text>
-	<combo_box left="115" name="fullscreen combo" />
-	<text name="AspectRatioLabel1" tool_tip="breedte / hoogte" width="100">
-		Beeldverhouding:
-	</text>
-	<combo_box name="aspect_ratio" tool_tip="breedte / hoogte" left="115" >
-		<combo_box.item name="4:3(StandardCRT)" label="4:3 (Standaard beeldbuis)"/>
-		<combo_box.item name="5:4(1280x1024LCD)" label="5:4 (1280x1024 LCD)"/>
-		<combo_box.item name="8:5(Widescreen)" label="8:5 (Breedbeeld)"/>
-		<combo_box.item name="16:9(Widescreen)" label="16:9 (Breedbeeld)"/>
-	</combo_box>
-	<check_box label="Verhouding automatisch detecteren" name="aspect_auto_detect" left="275" />
-	<text name="HigherText">
-		Kwaliteit en
-	</text>
-	<text name="QualityText">
-		Prestatie:
-	</text>
-	<text name="FasterText">
-		Sneller
-	</text>
-	<text name="ShadersPrefText">
-		Laag
-	</text>
-	<text name="ShadersPrefText2">
-		Middel
-	</text>
-	<text name="ShadersPrefText3">
-		Hoog
-	</text>
-	<text name="ShadersPrefText4">
-		Ultra
-	</text>
-	<text name="HigherText2">
-		Hogere
-	</text>
-	<text name="QualityText2">
-		Kwaliteit
-	</text>
-	<check_box label="Aangepast" name="CustomSettings"/>
-	<panel name="CustomGraphics Panel">
-	<text name="ShadersText">
-		Shaders:
-	</text>
-	<check_box label="Bump mapping en glans" name="BumpShiny"/>
-	<check_box label="Basis shaders" name="BasicShaders" tool_tip="Het uitschakelen van deze optie kan voorkomen dat sommige drivers voor grafische kaarten crashen."/>
-	<check_box label="Atmosferische shaders" name="WindLightUseAtmosShaders"/>
-	<check_box label="Waterreflecties" name="Reflections"/>
-	<text name="ReflectionDetailText">
-		Reflectiedetail:
-	</text>
-	<radio_group name="ReflectionDetailRadio">
-		<radio_item name="0" label="Terrein en bomen" />
-		<radio_item name="1" label="Alle statische objecten" />
-		<radio_item name="2" label="Alle avatars en objecten" />
-		<radio_item name="3" label="Alles" />
-	</radio_group>
-	<text name="AvatarRenderingText">
-		Avatarweergave:
-	</text>
-	<check_box label="Avatar schimmen" name="AvatarImpostors"/>
-	<check_box label="Hardware Skinning" name="AvatarVertexProgram"/>
-	<check_box label="Avatar kleding" name="AvatarCloth"/>
-	<text name="DrawDistanceMeterText1">
-		m
-	</text>
-	<text name="DrawDistanceMeterText2">
-		m
-	</text>
-	<slider label="Zichtbereik:" name="DrawDistance"/>
-	<slider label="Max. aantal particles:" name="MaxParticleCount"/>
-	<slider label="Nabewerkingskwaliteit:" name="RenderPostProcess"/>
-	<text name="MeshDetailText">
-		Maasdetail:
-	</text>
-	<slider label="  Objecten:" name="ObjectMeshDetail"/>
-	<slider label="  Flexibele prims:" name="FlexibleMeshDetail"/>
-	<slider label="  Bomen:" name="TreeMeshDetail"/>
-	<slider label="  Avatars:" name="AvatarMeshDetail"/>
-	<slider label="  Terrein:" name="TerrainMeshDetail"/>
-	<slider label="  Lucht:" name="SkyMeshDetail"/>
-	<text name="PostProcessText">
-		Laag
-	</text>
-	<text name="ObjectMeshDetailText">
-		Laag
-	</text>
-	<text name="FlexibleMeshDetailText">
-		Laag
-	</text>
-	<text name="TreeMeshDetailText">
-		Laag
-	</text>
-	<text name="AvatarMeshDetailText">
-		Laag
-	</text>
-	<text name="TerrainMeshDetailText">
-		Laag
-	</text>
-	<text name="SkyMeshDetailText">
-		Laag
-	</text>
-	<text name="LightingDetailText">
-		Lichtdetail:
-	</text>
-	<radio_group name="LightingDetailRadio">
-		<radio_item name="SunMoon" label="Alleen zon en maan" />
-		<radio_item name="LocalLights" label="Lokale lichten in de buurt" />
-	</radio_group>
-	<text name="TerrainDetailText">
-		Terreindetail:
-	</text>
-	<radio_group name="TerrainDetailRadio">
-		<radio_item name="0" label="Laag" />
-		<radio_item name="2" label="Hoog" />
-	</radio_group>
-	</panel>
-	<button label="Aanbevolen instellingen" name="Defaults"/>
-	<button label="Hardware opties" label_selected="Hardware opties" name="GraphicsHardwareButton"/>
-	<panel.string name="resolution_format">
-		[RES_X] x [RES_Y]
-	</panel.string>
-	<panel.string name="aspect_ratio_text">
-		[NUM]:[DEN]
-	</panel.string>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/nl/panel_preferences_privacy.xml
deleted file mode 100644
index c2014bf0cb9308feab54fbdde08e0f4393c88679..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_privacy.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Communicatie" name="im">
-	<text name="text_box">
-		Mijn online status:
-	</text>
-	<check_box left="140" label="Allen mijn vrienden en groepen kunnen zien wanneer ik online ben" name="online_visibility"/>
-	<text name="text_box2">
-		IM opties:
-	</text>
-	<string name="log_in_to_change">
-		log in om te wijzigen
-	</string>
-	<check_box left="140" label="Stuur IM naar Email ([EMAIL])" name="send_im_to_email"/>
-	<check_box left="140" label="Voeg IM toe in chatconsole" name="include_im_in_chat_console"/>
-	<check_box left="140" label="Toon tijdstempels in IM" name="show_timestamps_check"/>
-	<check_box left="140" label="Toon melding bij vriend online" name="friends_online_notify_checkbox"/>
-	<text name="text_box3">
-		Antwoord bij
-Niet Storen:
-	</text>
-	<text name="text_box4">
-		Log opties:
-	</text>
-	<check_box label="Bewaar een log van IM op mijn computer" name="log_instant_messages"/>
-	<check_box label="Toon tijdstempels in IM-log" name="log_instant_messages_timestamp"/>
-	<check_box label="Toon het einde van de laatste IM conversatie" name="log_show_history"/>
-	<check_box label="Bewaar een log van lokale chat op mijn computer" name="log_chat"/>
-	<check_box label="Toon tijdstempels in lokale chatlog" name="log_chat_timestamp"/>
-	<check_box label="Toon binnenkomende IM in lokale chatlog" name="log_chat_IM"/>
-	<check_box label="Voeg datum toe aan tijdstempels" name="log_date_timestamp"/>
-	<button label="Wijzig pad" label_selected="Wijzig pad" name="log_path_button"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_setup.xml b/indra/newview/skins/default/xui/nl/panel_preferences_setup.xml
deleted file mode 100644
index f9f58befe88a82a63dbcbb43104c8563bed3e594..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_setup.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Invoer &amp; Camera" name="Input panel">
-	<text name=" Mouselook Options:">
-		Mouselook opties:
-	</text>
-	<text name=" Mouse Sensitivity:">
-		Muis gevoeligheid:
-	</text>
-	<check_box label="Muisbeweging omkeren" name="invert_mouse"/>
-	<text name=" Auto Fly Options:">
-		Automatisch vliegen
-opties:
-	</text>
-	<check_box label="Vlieg/Land bij indrukken Page Up/Page Down" name="automatic_fly"/>
-	<text name=" Camera Options:">
-		Camera opties:
-	</text>
-	<text name="camera_fov_label">
-		Camera Zichthoek
-	</text>
-	<text name="Camera Follow Distance:">
-		Camera volgafstand:
-	</text>
-	<check_box label="Automatische camerabeweging bij bewerken" name="edit_camera_movement" tool_tip="Gebruik automatische camerapositionering bij het betreden en verlaten van de bewerken modus"/>
-	<check_box label="Automatische camerabeweging bij uiterlijk bewerken" name="appearance_camera_movement" tool_tip="Gebruik automatische camerapositionering in de bewerken modus"/>
-	<text name="text2">
-		Avatar weergave opties:
-	</text>
-	<check_box label="Toon avatar in mouselook" name="first_person_avatar_visible"/>
-	<button label="Joystick instellingen" name="joystick_setup_button"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_preferences_sound.xml b/indra/newview/skins/default/xui/nl/panel_preferences_sound.xml
deleted file mode 100644
index 5ded0158688f35daa5a588613c4d086a9dac8879..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_preferences_sound.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Geluid" name="Preference Media panel">
-	<slider label="Hoofd volume" name="System Volume"/>
-	<check_box initial_value="true" name="mute_when_minimized"/>
-	<text name="mute_chb_label">Dempen indien geminimaliseerd</text>
-	<slider label="Omliggend" name="Wind Volume"/>
-	<slider label="Knoppen" name="UI Volume"/>
-	<slider label="Media" name="Media Volume"/>
-	<slider label="Geluids effecten" name="SFX Volume"/>
-	<slider label="Streamen van muziek" name="Music Volume"/>
-	<check_box label="Voice" name="enable_voice_check"/>
-	<slider label="Voice" name="Voice Volume"/>
-	<text name="Listen from">
-		Luisteren vanuit:
-	</text>
-	<radio_group name="ear_location">
-		<radio_item label="Camera positie" name="0"/>
-		<radio_item label="Avatar positie" name="1"/>
-	</radio_group>
-	<button label="Input/Output Apparaten" name="device_settings_btn"/>
-	<panel label="Apparaat Instellingen" name="device_settings_panel">
-		<panel.string name="default_text">
-			Standaard
-		</panel.string>
-		<text name="Input">
-			Input
-		</text>
-		<text name="My volume label">
-			Mijn volume:
-		</text>
-		<slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Verander de volume door gebruik te nemen van deze schuifknop"/>
-		<text name="wait_text">
-			Even geduld
-		</text>
-		<text name="Output">
-			Output
-		</text>
-	</panel>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_region_covenant.xml b/indra/newview/skins/default/xui/nl/panel_region_covenant.xml
deleted file mode 100644
index adfc62dd2262a152a1033964e9437d6873da7a63..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_region_covenant.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Convenant" name="Covenant">
-	<text name="estate_section_lbl">
-		Estate:
-	</text>
-	<text name="estate_name_lbl">
-		Naam:
-	</text>
-	<text name="estate_name_text">
-		mainland
-	</text>
-	<text name="estate_owner_lbl">
-		Eigenaar:
-	</text>
-	<text name="estate_owner_text">
-		(geen)
-	</text>
-	<text name="estate_cov_lbl">
-		Convenant:
-	</text>
-	<text name="covenant_timestamp_text">
-		Laatst gewijzigd Wed Dec 31 16:00:00 1969
-	</text>
-	<button label="?" name="covenant_help"/>
-	<text_editor name="covenant_editor" bottom="-247" height="162">
-		Er is geen convenant voor deze estate.
-	</text_editor>
-	<button label="Opnieuw instellen" name="reset_covenant" right="460" width="110"/>
-	<text name="covenant_help_text" bottom="-25">
-		Wijzigingen in het convenant zullen in alle percelen van het estate
-      zichtbaar zijn.
-	</text>
-	<text name="covenant_instructions" bottom_delta="-36" >
-		Sleep en deponeer een notitiekaart om het convenant voor deze
-      estate te wijzigen.
-	</text>
-	<text name="region_section_lbl" bottom_delta="-36" >
-		Regio:
-	</text>
-	<text name="region_name_lbl">
-		Naam:
-	</text>
-	<text name="region_name_text">
-		leyla
-	</text>
-	<text name="region_landtype_lbl">
-		Type:
-	</text>
-	<text name="region_landtype_text">
-		Mainland / Homestead
-	</text>
-	<text name="region_maturity_lbl">
-		Inhoudscategorie:
-	</text>
-	<text name="region_maturity_text">
-		Adult
-	</text>
-	<text name="resellable_lbl">
-		Doorverkopen:
-	</text>
-	<text name="resellable_clause">
-		Land in deze regio mag niet worden doorverkocht.
-	</text>
-	<text name="changeable_lbl">
-		Opsplitsen:
-	</text>
-	<text name="changeable_clause">
-		Land in deze regio mag niet worden samengevoegd/opgesplitst.
-	</text>
-	<string name="can_resell">
-		Aangekocht land in deze regio mag worden doorverkocht.
-	</string>
-	<string name="can_not_resell">
-		Aangekocht land in deze regio mag niet worden doorverkocht.
-	</string>
-	<string name="can_change">
-		Aangekocht land in deze regio mag worden gecombineerd of
-opgedeeld.
-	</string>
-	<string name="can_not_change">
-		Aangekocht land in deze regio mag niet worden gecombineerd
-of opgedeeld.
-	</string>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_region_debug.xml b/indra/newview/skins/default/xui/nl/panel_region_debug.xml
deleted file mode 100644
index 9fad8e478aaa7dbab897065c170e9d52b904efa6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_region_debug.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Debug" name="Debug">
-	<text name="region_text_lbl">
-		Regio:
-	</text>
-	<text name="region_text">
-		onbekend
-	</text>
-	<check_box label="Schakel scripts uit" name="disable_scripts_check" tool_tip="Schakel alle scripts in deze regio uit"/>
-	<button label="?" name="disable_scripts_help"/>
-	<check_box label="Schakel botsingen uit" name="disable_collisions_check" tool_tip="Schakel alle niet-avatar botsingen in deze regio uit"/>
-	<button label="?" name="disable_collisions_help"/>
-	<check_box label="Fysiek uitschakelen" name="disable_physics_check" tool_tip="Alle fysiek in deze regio uitschakelen"/>
-	<button label="?" name="disable_physics_help"/>
-	<button label="Toepassen" name="apply_btn"/>
-	<text name="objret_text_lbl">
-		Object retourneren
-	</text>
-	<text name="resident_text_lbl">
-		Inwoner:
-	</text>
-	<line_editor name="target_avatar_name">
-		(none)
-	</line_editor>
-	<button label="Kies..." name="choose_avatar_btn"/>
-	<text name="options_text_lbl">
-		Opties:
-	</text>
-	<check_box label="Retourneer alleen objecten die scripts bevatten." name="return_scripts" tool_tip="Retourneer alleen objecten met scripts."/>
-	<check_box label="Retourneer alleen die objecten op het land van iemand anders" name="return_other_land" tool_tip="Retourneer alleen objecten die zich op land bevinden dat aan iemand anders toebehoort"/>
-	<check_box label="Retourneer objecten in alle regio&apos;s van dit estate" name="return_estate_wide" tool_tip="Retourneer objecten in alle regio&apos;s van dit estate"/>
-	<button label="Retourneren" name="return_btn"/>
-	<button label="Toon top botsingen..." name="top_colliders_btn" tool_tip="Lijst met objecten die de meeste mogelijke botsingen ondergaan"/>
-	<button label="?" name="top_colliders_help"/>
-	<button label="Toon top scripts..." name="top_scripts_btn" tool_tip="Lijst met objecten die de meeste tijd besteden met het uitvoeren van scripts"/>
-	<button label="?" name="top_scripts_help"/>
-	<button label="Herstart regio" name="restart_btn" tool_tip="Geef een 2 minuten afteltijd en herstart de regio."/>
-	<button label="?" name="restart_help"/>
-	<button label="Vertraag herstart" name="cancel_restart_btn" tool_tip="Vertraag herstart met een uur"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_region_estate.xml b/indra/newview/skins/default/xui/nl/panel_region_estate.xml
deleted file mode 100644
index 08b68c8d3059d0a40f9c963406011d1f155825ff..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_region_estate.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Estate" name="Estate">
-	<text name="estate_help_text">
-		Wijzigingen van instellingen op dit tabblad
-zullen alle regio&apos;s in de estate beïnvloeden.
-	</text>
-	<text name="estate_text">
-		Estate:
-	</text>
-	<text name="estate_name">
-		(onbekend)
-	</text>
-	<text name="owner_text">
-		Eigenaar:
-	</text>
-	<text name="estate_owner">
-		(onbekend)
-	</text>
-	<check_box label="Gebruik globale tijd" name="use_global_time_check"/>
-	<button label="?" name="use_global_time_help"/>
-	<check_box label="Vaste zon" name="fixed_sun_check"/>
-	<button label="?" name="fixed_sun_help"/>
-	<slider label="Fase" name="sun_hour_slider"/>
-	<check_box label="Publieke toegang toestaan" name="externally_visible_check"/>
-	<button label="?" name="externally_visible_help"/>
-	<text name="Only Allow">
-		Beperk toegang tot:
-	</text>
-	<check_box label="Inwoners met betalingsinformatie opgeslagen" name="limit_payment" tool_tip="Verban ongeïdentificeerde inwoners."/>
-	<check_box label="Leeftijdgeverifieerde volwassenen" name="limit_age_verified" tool_tip="Verban inwoners die hun leeftijd niet geverifieerd hebben. Zie support.secondlife.com voor meer informatie." bottom_delta="-30"/>
-	<check_box label="Voice chat toestaan" name="voice_chat_check"/>
-	<button label="?" name="voice_chat_help"/>
-	<check_box label="Directe teleport toestaan" name="allow_direct_teleport"/>
-	<button label="?" name="allow_direct_teleport_help"/>
-	<text name="abuse_email_text" bottom_delta="-23">
-		Misbruik e-mail adres:
-	</text>
-	<line_editor bottom_delta="-14" name="abuse_email_address" />
-	<string name="email_unsupported">
-		Optie niet ondersteund
-	</string>
-	<button label="?" name="abuse_email_address_help"/>
-	<button label="Toepassen" name="apply_btn" bottom_delta="-22"/>
-	<button label="Gebruiker verwijderen van estate..." name="kick_user_from_estate_btn"/>
-	<button label="Zend bericht naar estate..." name="message_estate_btn"/>
-	<text name="estate_manager_label">
-		Estate beheerders:
-	</text>
-	<button label="?" name="estate_manager_help"/>
-	<button label="Verwijderen..." name="remove_estate_manager_btn"/>
-	<button label="Toevoegen..." name="add_estate_manager_btn"/>
-	<text name="allow_resident_label">
-		Toegestane inwoners:
-	</text>
-	<button label="?" name="allow_resident_help"/>
-	<button label="Verwijderen..." name="remove_allowed_avatar_btn"/>
-	<button label="Toevoegen..." name="add_allowed_avatar_btn"/>
-	<text name="allow_group_label">
-		Toegestane groepen
-	</text>
-	<button label="?" name="allow_group_help"/>
-	<button label="Verwijderen..." name="remove_allowed_group_btn"/>
-	<button label="Toevoegen..." name="add_allowed_group_btn"/>
-	<text name="ban_resident_label">
-		Verbannen inwoners:
-	</text>
-	<button label="?" name="ban_resident_help"/>
-	<button label="Verwijderen..." name="remove_banned_avatar_btn"/>
-	<button label="Toevoegen..." name="add_banned_avatar_btn"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_region_general.xml b/indra/newview/skins/default/xui/nl/panel_region_general.xml
deleted file mode 100644
index 74480ed0a49ffb513422d7ac91f88ca75050793d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_region_general.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Regio" name="General">
-	<text name="region_text_lbl">
-		Regio:
-	</text>
-	<text name="region_text">
-		onbekend
-	</text>
-	<text name="version_channel_text_lbl">
-		Versie:
-	</text>
-	<text name="version_channel_text">
-		onbekend
-	</text>
-	<text name="region_type_lbl">
-		Type:
-	</text>
-	<text name="region_type">
-		onbekend
-	</text>
-	<check_box label="Blokkeer terreinbewerking" name="block_terraform_check"/>
-	<button label="?" name="terraform_help"/>
-	<check_box label="Blokkeer vliegen" name="block_fly_check"/>
-	<button label="?" name="fly_help"/>
-	<check_box label="Letsel toestaan" name="allow_damage_check"/>
-	<button label="?" name="damage_help"/>
-	<check_box label="Duwen Uitschakelen" name="restrict_pushobject"/>
-	<button label="?" name="restrict_pushobject_help"/>
-	<check_box label="Landverkoop toestaan" name="allow_land_resell_check"/>
-	<button label="?" name="land_resell_help"/>
-	<check_box label="Samenvoegen/opsplitsen land toestaan" name="allow_parcel_changes_check"/>
-	<button label="?" name="parcel_changes_help" left="240"/>
-	<check_box label="Blokkeer zichtbaarheid land in zoeken" name="block_parcel_search_check" tool_tip="Laat mensen deze regio en zijn percelen in zoekresultaten zien"/>
-	<button label="?" name="parcel_search_help" left="240"/>
-	<spinner label="Agent limiet" name="agent_limit_spin"/>
-	<button label="?" name="agent_limit_help"/>
-	<spinner label="Object bonus" name="object_bonus_spin"/>
-	<button label="?" name="object_bonus_help"/>
-	<text label="Volwassenheid" name="access_text">
-		Inhoudscategorie:
-	</text>
-	<combo_box label="Mature" name="access_combo">
-		<combo_box.item label="Adult" name="Adult"/>
-		<combo_box.item label="Mature" name="Mature"/>
-		<combo_box.item label="PG" name="PG"/>
-	</combo_box>
-	<button label="?" name="access_help"/>
-	<button label="Toepassen" name="apply_btn"/>
-	<button label="Teleport één gebruiker naar thuislocatie…" name="kick_btn"/>
-	<button label="Teleport alle gebruikers naar thuislocatie…" name="kick_all_btn"/>
-	<button label="Zend bericht naar regio…" name="im_btn"/>
-	<button label="Beheer telehub…" name="manage_telehub_btn"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_region_terrain.xml b/indra/newview/skins/default/xui/nl/panel_region_terrain.xml
deleted file mode 100644
index a79bcc0eb595a5352030245e13b285bf19cc855d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_region_terrain.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Terrein" name="Terrain">
-	<text name="region_text_lbl">
-		Regio:
-	</text>
-	<text name="region_text">
-		onbekend
-	</text>
-	<spinner label="Waterhoogte" name="water_height_spin"/>
-	<button label="?" name="water_height_help"/>
-	<spinner label="Terrein verhooglimiet" name="terrain_raise_spin"/>
-	<button label="?" name="terrain_raise_help"/>
-	<spinner label="Terrein verlaaglimiet" name="terrain_lower_spin"/>
-	<button label="?" name="terrain_lower_help"/>
-	<check_box label="Gebruik estate zon" name="use_estate_sun_check"/>
-	<button label="?" name="use_estate_sun_help"/>
-	<check_box label="Vaste zon" name="fixed_sun_check"/>
-	<button label="?" name="fixed_sun_help"/>
-	<slider label="Fase" name="sun_hour_slider"/>
-	<button label="Toepassen" name="apply_btn"/>
-	<button label="Download RAW terrein..." name="download_raw_btn" tool_tip="Alleen beschikbaar voor estate-eigenaren, niet beheerders"/>
-	<button label="?" name="download_raw_help"/>
-	<button label="Upload RAW terrein..." name="upload_raw_btn" tool_tip="Alleen beschikbaar voor estate-eigenaren, niet beheerders"/>
-	<button label="?" name="upload_raw_help"/>
-	<button label="Bake terrein" name="bake_terrain_btn" tool_tip="Huidig terrein instellen als middelpunt voor verhoog/verlaag limieten"/>
-	<button label="?" name="bake_terrain_help"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_region_texture.xml b/indra/newview/skins/default/xui/nl/panel_region_texture.xml
deleted file mode 100644
index ff10e20b7ce8e3ef7558fc59b9c1ac38eb96c4d6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_region_texture.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Grond texturen" name="Textures">
-	<text name="region_text_lbl">
-		Regio:
-	</text>
-	<text name="region_text">
-		onbekend
-	</text>
-	<text name="detail_texture_text">
-		Terreintexturen (vereist 512x512, 24 bit .tga bestanden)
-	</text>
-	<text name="height_text_lbl">
-		1 (Laag)
-	</text>
-	<text name="height_text_lbl2">
-		2
-	</text>
-	<text name="height_text_lbl3">
-		3
-	</text>
-	<text name="height_text_lbl4">
-		4 (Hoog)
-	</text>
-	<text name="height_text_lbl5">
-		Textuur hoogtebereiken
-	</text>
-	<text name="height_text_lbl6">
-		Zuidwest
-	</text>
-	<text name="height_text_lbl7">
-		Noordwest
-	</text>
-	<text name="height_text_lbl8">
-		Zuidoost
-	</text>
-	<text name="height_text_lbl9">
-		Noordoost
-	</text>
-	<spinner label="Laag" name="height_start_spin_0"/>
-	<spinner label="Laag" name="height_start_spin_1"/>
-	<spinner label="Laag" name="height_start_spin_2"/>
-	<spinner label="Laag" name="height_start_spin_3"/>
-	<spinner label="Hoog" name="height_range_spin_0"/>
-	<spinner label="Hoog" name="height_range_spin_1"/>
-	<spinner label="Hoog" name="height_range_spin_2"/>
-	<spinner label="Hoog" name="height_range_spin_3"/>
-	<text name="height_text_lbl10">
-		Deze waardes vertegenwoordigen het mengbereik voor bovenstaande texturen.
-	</text>
-	<text name="height_text_lbl11">
-		Gemeten in meters, is de LOW waarde de MAXIMUM hoogte van textuur #1,
-	</text>
-	<text name="height_text_lbl12">
-		en de HIGH waarde is de MINIMUM hoogte van textuur #4.
-	</text>
-	<button label="Toepassen" name="apply_btn"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_scrolling_param.xml b/indra/newview/skins/default/xui/nl/panel_scrolling_param.xml
deleted file mode 100644
index 8487ff999a9b206900aaf5f37b2dbf41480405fc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_scrolling_param.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="LLScrollingPanelParam">
-	<text name="Loading...">
-		Laden...
-	</text>
-	<text name="Loading...2">
-		Laden...
-	</text>
-	<slider label="[DESC]" name="param slider"/>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_status_bar.xml b/indra/newview/skins/default/xui/nl/panel_status_bar.xml
deleted file mode 100644
index 1d68d25f66e5afc849ee1162e01014563f8146b6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_status_bar.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
-	<text name="ParcelNameText" tool_tip="Naam van het landperceel waar u staat. Klik voor &apos;Over land&apos;.">
-		Hier komt de naam van het perceel
-	</text>
-	<text name="BalanceText" tool_tip="Account saldo">
-		Laden...
-	</text>
-	<button label="" label_selected="" name="buycurrency" tool_tip="Koop valuta"/>
-	<text name="TimeText" tool_tip="Huidige tijd (Pacifisch)">
-		-3
-	</text>
-	<string name="StatBarDaysOfWeek">
-		Zondag:Maandag:Dinsdag:Woensdag:Donderdag:Vrijdag:Zaterdag
-	</string>
-	<string name="StatBarMonthsOfYear">
-		Januari:Februari:Maart:April:Mei:Juni:Juli:Augustus:September:Oktober:November:December
-	</string>
-	<button label="" label_selected="" name="scriptout" tool_tip="Script waarschuwingen en fouten"/>
-	<button label="" label_selected="" name="health" tool_tip="Letsel"/>
-	<text name="HealthText" tool_tip="Letsel">
-		1
-	</text>
-	<button label="" label_selected="" name="no_fly" tool_tip="Vliegen niet toegestaan"/>
-	<button label="" label_selected="" name="no_build" tool_tip="Bouwen/rezzen niet toegestaan"/>
-	<button label="" label_selected="" name="no_scripts" tool_tip="Scripts niet toegestaan"/>
-	<button label="" label_selected="" name="restrictpush" tool_tip="Niet duwen"/>
-	<button label="" label_selected="" name="status_no_voice" tool_tip="Voice is niet beschikbaar hier"/>
-	<button label="" label_selected="" name="buyland" tool_tip="Koop dit perceel"/>
-	<line_editor label="Zoeken" name="search_editor" tool_tip="Doorzoek [SECOND_LIFE]"/>
-	<button label="" label_selected="" name="search_btn" tool_tip="Doorzoek [SECOND_LIFE]"/>
-	<string name="packet_loss_tooltip">
-		Pakketten verlies
-	</string>
-	<string name="bandwidth_tooltip">
-		Bandbreedte
-	</string>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/panel_world_map.xml b/indra/newview/skins/default/xui/nl/panel_world_map.xml
deleted file mode 100644
index d9a0b66fbcc528ef5b4baaa3d7346663cd429ae9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/panel_world_map.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="world_map">
-	<panel.string name="Loading">
-		Laden...
-	</panel.string>
-	<panel.string name="InvalidLocation">
-		Ongeldige Locatie
-	</panel.string>
-	<panel.string name="world_map_north">
-		N
-	</panel.string>
-	<panel.string name="world_map_east">
-		O
-	</panel.string>
-	<panel.string name="world_map_west">
-		W
-	</panel.string>
-	<panel.string name="world_map_south">
-		Z
-	</panel.string>
-	<panel.string name="world_map_southeast">
-		ZO
-	</panel.string>
-	<panel.string name="world_map_northeast">
-		NO
-	</panel.string>
-	<panel.string name="world_map_southwest">
-		ZW
-	</panel.string>
-	<panel.string name="world_map_northwest">
-		NW
-	</panel.string>
-	<text label="N" name="floater_map_north" text="N">
-		N
-	</text>
-	<text label="O" name="floater_map_east" text="O">
-		O
-	</text>
-	<text label="W" name="floater_map_west" text="W">
-		W
-	</text>
-	<text label="Z" name="floater_map_south" text="Z">
-		Z
-	</text>
-	<text label="ZO" name="floater_map_southeast" text="ZO">
-		ZO
-	</text>
-	<text label="NO" name="floater_map_northeast" text="NO">
-		NO
-	</text>
-	<text label="ZW" name="floater_map_southwest" text="ZW">
-		ZW
-	</text>
-	<text label="NW" name="floater_map_northwest" text="NW">
-		NW
-	</text>
-</panel>
diff --git a/indra/newview/skins/default/xui/nl/role_actions.xml b/indra/newview/skins/default/xui/nl/role_actions.xml
deleted file mode 100644
index 1f0a6e423501d248972f2f8c2f79b6520c62ca87..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/role_actions.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<role_actions>
-	<action_set description="Deze Mogelijkheden regelen het toevoegen en verwijderen van Groepsleden, en om aan te geven dat nieuwe Leden lid kunnen worden zonder uitnodiging." name="Membership">
-		<action description="Personen uitnodigen voor deze Groep" longdescription="Personen uitnodigen voor deze Groep door de 'Uitnodigen Nieuwe Leden...' knop in de leden &amp; Rollen tab &gt; Leden sub-tab." name="member invite"/>
-		<action description="Leden uit deze Groep zetten" longdescription="Leden uit deze Groep zetten door de 'Uit Groep Zetten' knop in de leden tab &amp; Rollen tab &gt; Leden sub-tab. Een Eigenaar kan iedereen uit de groep zetten behalve een andere Eigenaar. Als je geen Eigenaar bent, kan een Lid worden uitgezet als, en alleen als, het Lid deel uitmaakt van de Iedereen Rol, en NIET van andere Rollen. Om Leden uit Rollen te verwijderen, moet je de 'Leden uit Rollen Verwijderen' mogelijkheid hebben." name="member eject"/>
-		<action description="Selecteer 'Vrije Toegang' en wijzig 'Contibutie Bijdrage'" longdescription="Selecteer 'Vrije Toegang' zodat nieuwe Leden lid kunnen worden zonder uitnodiging, en wijzig 'Contributie Bijdrage' in de Groep Voorkeuren sectie van de Algemene tab." name="member options"/>
-	</action_set>
-	<action_set description="Deze Mogelijkheden regelen het toevoegen, verwijderen, en wijzigen van Groepsrollen, toevoegen en verwijderen van Leden in Rollen, en toewijzen van Mogelijkheden aan Rollen." name="Roles">
-		<action description="Creëren nieuwe Rollen" longdescription="Creëren nieuwe Rollen in de Leden &amp; Rollen tab &gt; Rollen sub-tab." name="role create"/>
-		<action description="Verwijderen Rollen" longdescription="Verwijderen Rollen in de Leden &amp; Rollen tab &gt; Rollen sub-tab." name="role delete"/>
-		<action description="Wijzigen Rol-naam, titel, beschrijving, en of de Rol leden publiekelijk zichtbaar zijn" longdescription="Wijzigen Rol-naam, titel, beschrijving, en of de Rol leden publiekelijk zichtbaar zijn. Dit kan worden gedaan onderaan de de Leden &amp; Rollen tab &gt; Rollen sub-tab na de selectie van een rol." name="role properties"/>
-		<action description="Toewijzen Leden aan Toewijzers Rollen" longdescription="Toewijzen Leden aan Rollen in de Toegewezen Rollen sectie van de Leden &amp; Rol tab &gt; Leden sub-tab. Een Lid met deze Mogelijkheid kan alleen Leden toevoegen aan een Rol waartoe men zelf al behoort." name="role assign member limited"/>
-		<action description="Toewijzen Leden aan Alle Rollen" longdescription="Toewijzen van Leden aan Alle Rollen in the Toegewezen Rollen sectie van de Leden &amp; Rollen tab &gt; Leden sub-tab. *WAARSCHUWING* Ieder Lid in een Rol met deze Mogelijkheid kan zichzelf--en ieder ander niet-Eigenaar Lid--toewijzen aan rollen met meer rechten dan zijzelf op dat moment hebben, hierdoor ontstaat de mogelijkheid om zichzelf bijna-Eigenaar rechten toewijzen. Wees er zeker van en controleer voordat deze Mogelijkheid wordt toegekend." name="role assign member"/>
-		<action description="Verwijderen Leden uit Rollen" longdescription="Verwijderen Leden uit Rollen in the Toegewezen Rollen sectie van de Leden &amp; Rollen tab &gt; Leden sub-tab. Eigenaars kunnen niet worcen verwijderd." name="role remove member"/>
-		<action description="Toewijzen en Verwijderen Mogelijkheden in Rollen" longdescription="Toewijzen en Verwijderen Mogelijkheden in Rollen in de Toegestane Mogelijkheden van de Leden &amp; Rollen tab &gt; Leden sub-tab. *WAARSCHUWING* Ieder Lid in een Rol met deze Mogelijkheid kan kan zichzelf--en ieder ander niet-Eigenaar Lid--toewijzen aan rollen met meer rechten dan zijzelf op dat moment hebben, hierdoor ontstaat de mogelijkheid om zichzelf bijna-Eigenaar rechten toewijzen. Wees er zeker van en controleer voordat deze Mogelijkheid wordt toegekend." name="role change actions"/>
-	</action_set>
-	<action_set description="Deze Mogelijkheden regelen het wijzigen van de Groepsidentiteit, zoals het veranderen van publieke zichtbaarheid, charter en insigne." name="Group Identity">
-		<action description="Wijzigen Charter, Insigne, en 'Toon in zoeken'" longdescription="Wijzigen Charter, Insigne, en 'Toon in zoeken'. Dit kan worden gedaan in de Algemeen tab." name="group change identity"/>
-	</action_set>
-	<action_set description="Deze Mogelijkheden regelen het overdragen, wijzigen, en verkopen van land dat in bezit is van deze groep. Om naar het Over Land venster te gaan, rechts-klik de grond selecteer 'Over Land...', of klik op de perceel info in de menubalk." name="Parcel Management">
-		<action description="Land overdragen en land kopen voor groep" longdescription="Land overdragen en land kopen voor groep. Dit kan worden gedaan in Over Land &gt; Algemeen tab." name="land deed"/>
-		<action description="Land overdragen aan Govenor Linden" longdescription="Land overdragen aan Govenor Linden. *WAARSCHUWING* Ieder Lid in een Rol met deze Mogelijkheid kan land in eigendom van de groep laten vervallen in Over Land &gt; Algemeen tab, teruggeven in Linden eigendom zonder verkoop! Wees er zeker van en controleer voordat deze Mogelijkheid wordt toegekend." name="land release"/>
-		<action description="Activeer land te koop info" longdescription="Activeer land te koop info. *WAARSCHUWING* Ieder Lid in een Rol met deze Mogelijkheid kan land in eigendom van de groep verkopen in Over Land &gt; Algemeen tab als ze dat willen! Wees er zeker van en controleer voordat deze Mogelijkheid wordt toegekend." name="land set sale info"/>
-		<action description="Opdelen en samenvoegen van percelen" longdescription="Opdelen en samenvoegen van percelen. Dit kan worden gedaan door rechts klikken op de grond, 'Terrein Bewerken, en de muis te slepen naar het land om een selectie te maken. Om te verdelen, selecteer wat je wil splitsen en klik 'Opdelen...'. Om samen te voegen, selecteer twee of meer aaneengesloten percelen en klik 'Samenvoegen...'." name="land divide join"/>
-	</action_set>
-	<action_set description="Deze Mogelijkheden regelen het veranderen van de perceelnaam en publicatie instelling, zichtbaarheid in 'Tonen in zoeken', en landingspunt &amp; TP routering." name="Parcel Identity">
-		<action description="Selecteer 'Tonen in zoeken' en instellen categorie" longdescription="Selecteer 'Tonen in zoeken' en instellen van de categorie voor een perceel in Over Land &gt; Opties tab." name="land find places"/>
-		<action description="Veranderen perceel naam, omschrijving, en 'Tonen in zoeken' instellingen" longdescription="Veranderen perceel naam, omschrijving en 'Tonen in zoeken' instellingen. Dit kan worden gedaan in Overland &gt; Opties tab." name="land change identity"/>
-		<action description="Instellen landingsplaats en instellen teleport routering" longdescription="Op een perceel in groepseigendom, Leden in een Rol met die mogelijkheid kunnen een landingsplaats instellen om te bepalen waar inkomende teleports aankomen, en ook een teleport routering instelling voor meer controle. Dit kan worden gedaan in About Land &gt; Opties tab." name="land set landing point"/>
-	</action_set>
-	<action_set description="Deze Mogelijkheden regelen het aanpassen van perceel opties, zoals 'Maak Objecten', 'Bewerken Terrein', en muziek &amp; media instellingen." name="Parcel Settings">
-		<action description="Veranderen muziek &amp; media instellingen" longdescription="Veranderen streaming muziek en film instellingen in Over Land&gt; Media tab." name="land change media"/>
-		<action description="Instellen 'Bewerken Terrein'" longdescription="Instellen 'Bewerken Terrein'. *WAARSCHUWING* Over Land &gt; Opties tab &gt; Bewerken Terrein staat toe dat iedereen de vorm van het terrein kan aanpassen, en Linden planten kan plaatsen en verplaatsen. Wees er zeker van en controleer voordat deze Mogelijkheid wordt toegekend. Bewerken terrein kan worden aangezet in Over Land&gt; Opties tab." name="land edit"/>
-		<action description="Instellen diversen Over Land &gt; Optie instellingen" longdescription="Instellen 'Veilig (geen letsel)', 'Vliegen' and andere Inwoners toestaan om: 'Objecten te maken', 'Terrein te bewerken', en 'Scripts uit te voeren' op land in groepseigendom in Over Land &gt; Opties tab." name="land options"/>
-	</action_set>
-	<action_set description="Deze Mogelijkheden regelend de toestemming voor leden om beperkingen te omzeilen op percelen in groepseigendom." name="Parcel Powers">
-		<action description="'Bewerken Terrein' altijd toestaan" longdescription="Leden in een Rol met deze Mogelijkheid kunnen terrein bewerken op een perceel in groepseigendom, zelfs als de optie uitstaat in Over Land &gt; Opties tab." name="land allow edit land"/>
-		<action description="'Vliegen' altijd toestaan" longdescription="Leden in een Rol met deze Mogelijkheid kunnen vliegen op een perceel in groepseigendom, zelfs als de optie uitstaat in Over Land &gt; Opties tab." name="land allow fly"/>
-		<action description="'Maak Objecten' altijd toestaan" longdescription="Leden in een Rol met deze Mogelijkheid kunnen objecten maken op een perceel in groepseigendom, zelfs als de optie uitstaat in Over Land &gt; Opties tab." name="land allow create"/>
-		<action description="'Maak Landmarkering' altijd toestaan" longdescription="Leden in een Rol met deze Mogelijkheid kunnen een landmarkering maken op een perceel in groepseigendom, zelfs als de optie uitstaat in Over Land &gt; Opties tab." name="land allow landmark"/>
-		<action description="Toestaan 'Thuis hier Instellen' op land in groepseigendom" longdescription="Leden in een Rol met deze Mogelijkheid kunnen gebruik maken van Wereld menu &gt; Thuis hier Instellen op een perceel afgestaan aan deze groep." name="land allow set home"/>
-	</action_set>
-	<action_set description="Deze Mogelijkheden regelen het toestaan of beperken van toegang van percelen in groepseigendom, inclusief het bevriezen en verbannen van Inwoners." name="Parcel Access">
-		<action description="Beheren perceel Toegang lijsten" longdescription="Beheren perceel Toegang lijsten in Over Land &gt; Toegang tab." name="land manage allowed"/>
-		<action description="Beheren perceel Verbannen lijst" longdescription="Beheren perceel Verbannen lijst in Over Land &gt; Verbannen tab." name="land manage banned"/>
-		<action description="Veranderen perceel 'Verkoop toegangspassen...' instellingen" longdescription="Verandere perceel 'Verkoop toegangspassen...'instellingen" name="land manage passes"/>
-		<action description="Uitwerpen en bevriezen Inwoners op percelen" longdescription="Leden in een Rol met deze mogelijkheid kunnen een onwelkome Inwoners aanpakken op een perceel in groepseigendom door een rechter-klik op deze inwoner &gt; en 'Uitwerpen...'of 'Bevriezen...'te selecteren." name="land admin"/>
-	</action_set>
-	<action_set description="Deze Mogelijkheden regelen de toestemming voor leden om objecten te retourneren en Linden planten te plaatsen en te verplaatsen. Dit is nuttig voor Leden om rommel op te ruimen en landschappen te maken, echter het moet ook met omzichtigheid worden gebruikt, omdat er geen herstelfunktie is voor retourneren objecten." name="Parcel Content">
-		<action description="Retourneren objecten in groepseigendom" longdescription="Retourneren van objecten die in eigendom zijn van de groep op percelen in groepseigendom in Over Land &gt; Objecten tab." name="land return group owned"/>
-		<action description="Retourneren objecten toegewezen aan de groep" longdescriotion="Retourneren van objecten die aan de groep zijn toegewezen op percelen in groepseigendom in Over Land &gt; Objecten tab." name="land return group set"/>
-		<action description="Retourneren objecten die niet van de groep zijn" longdescription="Retourneren objecten die niet van de groep zijn op percelen in groepeigendom in Over Land &gt; Objecten tab." name="land return non group"/>
-		<action description="Landschappen maken met Linden planten" longdescription="Landschappen maken om Linden bomen, planten en grassen te plaatsen en te verplaatsen. Deze opties zijn te vinden in de inventaris Library &gt; Objects folder of ze kunnen worden gemaakt via de Bouwen knop." name="land gardening"/>
-	</action_set>
-	<action_set description="Deze Mogelijkheden regelen het afstaan, wijzigen, en verkopen van objecten in groepseigendom. Deze veranderingen worden gedaan in Bewerken Gereedschap &gt; Algemeen tab. Rechts-klik een object en selecteer Bewerken om de instellingen ervan  te bekijken." name="Object Management">
-		<action description="Overdragen objecten aan groep" longdescription="Overdragen objecten aan groep in de Bewerkings Hulpmiddelen &gt; Algemeen tab." name="object deed"/>
-		<action description="Manipuleren (verplaatsen, copieren, wijzigen) van objecten in groepseigendom" longdescription="Manipuleren (verplaatsen, copieren, wijzigen) van objecten in groepseigendom in de Bewerkings Hulpmiddelen &gt; Algemeen tab." name="object manipulate"/>
-		<action description="Te koop zetten van objecten in groepseigendom" longdescription="Te koop zetten van objecten in groepseigendom in de Bewerkings Hulpmiddelen &gt; Algemeen tab." name="object set sale"/>
-	</action_set>
-	<action_set description="Deze Mogelijkheden regelen dat Leden groepsverplichtingen betalen en groepsdividenden ontvangen, en toegang beperken tot de financiele historie van de groep." name="Accounting">
-		<action description="Betalen groepsverplichtingen en ontvangen van groepsdividenden" longdescription="Leden in een Rol met deze mogelijkheid betalen groepsverplichtingen en ontvangen groepsdividenden automatisch. Dit betekent dat ze een deel ontvangen van de verkoop van land in groepseigendom die dagelijks worden verdeeld, maar ook dat ze bijdragen aan zaken zoals lijstbijdrage voor het perceel." name="accounting accountable"/>
-	</action_set>
-	<action_set description="Deze Mogelijkheden regelen de toestemming dat Leden Groepsberichten kunnen versturen, ontvangen en inzien." name="Notices">
-		<action description="Versturen Berichten" longdescription="Leden in een Rol met deze Mogelijkheid kunnen Berichten versturen in Groep Informatie &gt; Berichten tab." name="notices send"/>
-		<action description="Ontvangen Berichten en inzien van oude Berichten" longdescription="Leden in een Rol met deze Mogelijkheid kunnen Berichten ontvangen en oude Berichten inzien in Groep Informatie &gt; Berichten tab." name="notices receive"/>
-	</action_set>
-	<action_set description="Deze Mogelijkheden regelen de toestemming dat Leden Voorstellen kunnen maken, Voorstellen kunnen inzien, en het stemverloop kunnen bekijken." name="Proposals">
-		<action description="Maken Voorstellen" longdescription="Leden in een Rol met deze Mogelijkheid kunnen Voorstellen maken waarop kan worden gestemd in Groep Informatie &gt; Voorstellen tab." name="proposal start"/>
-		<action description="Stemmen op Voorstellen" longdescription="Leden in een Rol met deze Mogelijkheid kunnen stemmen op Voorstellen in Groep Informatie &gt; Voorstellen tab." name="proposal vote"/>	
-	</action_set>
-	<action_set description="Deze Mogelijkheden regelen de toegang (en de beperking ervan) tot groep chat sessies en groep voice chat." name="Chat">
-		<action description="Deelname aan Groep Chat" longdescription="Leden in een Rol met deze Mogelijkheid kunnen deelnemen aan groep chat sessies, zowel voor tekst als voice." name="join group chat"/>
-		<action description="Deelname aan Groep Voice Chat" longdescription="Leden in een Rol met deze Mogelijkheid kunnen deelnemen aan groep voice chat sessies. OPMERKING: De Deelname Group Chat is vereist om toegang te krijgen to de voice chat sessie." name="join voice chat"/>	
-		<action description="Modereren Groep Chat" longdescription="Leden in een Rol met deze Mogelijkheid kunnen toegang en deelname controleren in groep voice en tekst chat sessies." name="moderate group chat"/>
-	</action_set>
-</role_actions>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/nl/strings.xml b/indra/newview/skins/default/xui/nl/strings.xml
deleted file mode 100644
index ca6b8eb521b82fcfe92b6b2e142d25b7d3885eef..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/strings.xml
+++ /dev/null
@@ -1,3247 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- This file contains strings that used to be hardcoded in the source.
-     It is only for those strings which do not belong in a floater.
-     For example, the strings used in avatar chat bubbles, and strings 
-     that are returned from one component and may appear in many places-->
-<strings>
-	<string name="SUPPORT_SITE">
-		Second Life Ondersteunings Portaal
-	</string>
-	<string name="StartupDetectingHardware">
-		Detecteert hardware...
-	</string>
-	<string name="StartupLoading">
-		Laden
-	</string>
-	<string name="LoginInProgress">
-		Inloggen. Het kan lijken dat [APP_NAME] is vastgelopen. Wacht u alstublieft... .
-	</string>
-	<string name="LoginInProgressNoFrozen">
-		Inloggen...
-	</string>
-	<string name="LoginAuthenticating">
-		Authenticeren
-	</string>
-	<string name="LoginMaintenance">
-		Account onderhoud wordt uitgevoerd...
-	</string>
-	<string name="LoginAttempt">
-		Vorige loginpoging is mislukt. Inloggen, poging [NUMBER]
-	</string>
-	<string name="LoginPrecaching">
-		Wereld laden...
-	</string>
-	<string name="LoginInitializingBrowser">
-		Geïntegreerde web browser initialiseren...
-	</string>
-	<string name="LoginInitializingMultimedia">
-		Multimedia initialiseren...
-	</string>
-	<string name="LoginInitializingFonts">
-		Lettertypen laden...
-	</string>
-	<string name="LoginVerifyingCache">
-		Veriveren cache bestanden (kan 60-90 seconden duren)...
-	</string>
-	<string name="LoginProcessingResponse">
-		Reactie Verwerken...
-	</string>
-	<string name="LoginInitializingWorld">
-		Wereld initialiseren...
-	</string>
-	<string name="LoginDecodingImages">
-		Afbeeldingen decoderen...
-	</string>
-	<string name="LoginInitializingQuicktime">
-		QuickTime initialiseren...
-	</string>
-	<string name="LoginQuicktimeNotFound">
-		QuickTime niet gevonden - kan niet initialiseren.
-	</string>
-	<string name="LoginQuicktimeOK">
-		QuickTime succesvol geïnitialiseerd.
-	</string>
-	<string name="LoginWaitingForRegionHandshake">
-		Wachten op overeenstemming met regio...
-	</string>
-	<string name="LoginConnectingToRegion">
-		Verbinden met regio...
-	</string>
-	<string name="LoginDownloadingClothing">
-		Kleding downloaden...
-	</string>
-	<string name="LoginFailedNoNetwork">
-		Netwerk Fout: Kon geen verbinding maken, kijk uw nerwerk connectie na alstublieft.
-	</string>
-	<string name="Quit">
-		Afsluiten
-	</string>
-	<string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=nl-NL
-	</string>
-	<string name="AgentLostConnection">
-		Deze regio kan problemen ondervinden. Controleer alstublieft uw verbinding met het internet.
-	</string>
-	<string name="TooltipPerson">
-		Persoon
-	</string>
-	<string name="TooltipNoName">
-		(geen naam)
-	</string>
-	<string name="TooltipOwner">
-		Eigenaar:
-	</string>
-	<string name="TooltipPublic">
-		Openbaar
-	</string>
-	<string name="TooltipIsGroup">
-		(Groep)
-	</string>
-	<string name="TooltipForSaleL$">
-		Te koop: L$[AMOUNT]
-	</string>
-	<string name="TooltipFlagGroupBuild">
-		Groep bouwen
-	</string>
-	<string name="TooltipFlagNoBuild">
-		Niet bouwen
-	</string>
-	<string name="TooltipFlagNoEdit">
-		Groep bouwen
-	</string>
-	<string name="TooltipFlagNotSafe">
-		Niet veilig
-	</string>
-	<string name="TooltipFlagNoFly">
-		Niet vliegen
-	</string>
-	<string name="TooltipFlagGroupScripts">
-		Groep scripts
-	</string>
-	<string name="TooltipFlagNoScripts">
-		Geen scripts
-	</string>
-	<string name="TooltipLand">
-		Land:
-	</string>
-	<string name="TooltipMustSingleDrop">
-		Slechts een enkel item kan hier naartoe gesleept worden
-	</string>
-	<string name="TooltipHttpUrl">
-		Klik om deze web pagina te bekijken
-	</string>
-	<string name="TooltipSLURL">
-		Klik om deze locatie informatie te bekijken
-	</string>
-	<string name="TooltipAgentUrl">
-		Klik om deze inwoner zijn profiel te bekijken
-	</string>
-	<string name="TooltipGroupUrl">
-		Klik om deze groeps informatie te bekijken
-	</string>
-	<string name="TooltipEventUrl">
-		Klik om deze evenement informatie te bekijken
-	</string>
-	<string name="TooltipClassifiedUrl">
-		Klik om deze advertentie te bekijken
-	</string>
-	<string name="TooltipParcelUrl">
-		Klik om deze perceel informatie te bekijken
-	</string>
-	<string name="TooltipTeleportUrl">
-		Klik om  naar deze lokatie te teleporteren
-	</string>
-	<string name="TooltipObjectIMUrl">
-		Klik om deze object informatie te bekijken
-	</string>
-	<string name="TooltipMapUrl">
-		Klik om deze locatie op een map te bekijken
-	</string>
-	<string name="TooltipSLAPP">
-		Klik om het secondlife:// commando te starten
-	</string>
-	<string name="CurrentURL" value="HuidigeURL: [HuidigeURL]"/>
-	<string name="SLurlLabelTeleport">
-		Teleporteer naar
-	</string>
-	<string name="SLurlLabelShowOnMap">
-		Toon Map voor
-	</string>
-	<string name="BUTTON_CLOSE_DARWIN">
-		Sluiten (⌘W)
-	</string>
-	<string name="BUTTON_CLOSE_WIN">
-		Sluiten (Ctrl+W)
-	</string>
-	<string name="BUTTON_RESTORE">
-		Restore
-	</string>
-	<string name="BUTTON_MINIMIZE">
-		Minimaliseren
-	</string>
-	<string name="BUTTON_TEAR_OFF">
-		Afscheuren
-	</string>
-	<string name="BUTTON_DOCK">
-		Koppelen
-	</string>
-	<string name="BUTTON_UNDOCK">
-		Loskoppelen
-	</string>
-	<string name="BUTTON_HELP">
-		Toon Help
-	</string>
-	<string name="Searching">
-		Zoeken...
-	</string>
-	<string name="NoneFound">
-		Geen gevonden.
-	</string>
-	<string name="RetrievingData">
-		Ophalen...
-	</string>
-	<string name="ReleaseNotes">
-		Release Notes
-	</string>
-	<string name="LoadingData">
-		Laden...
-	</string>
-	<string name="AvatarNameNobody">
-		(niemand)
-	</string>
-	<string name="AvatarNameWaiting">
-		(wachten)
-	</string>
-	<string name="AvatarNameHippos">
-		(hippos)
-	</string>
-	<string name="GroupNameNone">
-		(geen)
-	</string>
-	<string name="AssetErrorNone">
-		Geen fout
-	</string>
-	<string name="AssetErrorRequestFailed">
-		Asset verzoek: mislukt
-	</string>
-	<string name="AssetErrorNonexistentFile">
-		Asset verzoek: niet-bestaand bestand
-	</string>
-	<string name="AssetErrorNotInDatabase">
-		Asset verzoek: asset niet gevonden in de database
-	</string>
-	<string name="AssetErrorEOF">
-		Einde van bestand
-	</string>
-	<string name="AssetErrorCannotOpenFile">
-		Kan bestand niet openen
-	</string>
-	<string name="AssetErrorFileNotFound">
-		Bestand niet gevonden
-	</string>
-	<string name="AssetErrorTCPTimeout">
-		Bestandsoverdracht time-out
-	</string>
-	<string name="AssetErrorCircuitGone">
-		Circuit verdwenen
-	</string>
-	<string name="AssetErrorPriceMismatch">
-		Viewer en server zijn het niet eens over de prijs.
-	</string>
-	<string name="AssetErrorUnknownStatus">
-		Onbekende status
-	</string>
-	<string name="texture">
-		textuur
-	</string>
-	<string name="sound">
-		geluid
-	</string>
-	<string name="calling card">
-		visitekaart
-	</string>
-	<string name="landmark">
-		landmarkering
-	</string>
-	<string name="legacy script">
-		legacy script
-	</string>
-	<string name="clothing">
-		kleding
-	</string>
-	<string name="object">
-		object
-	</string>
-	<string name="note card">
-		notecard
-	</string>
-	<string name="folder">
-		map
-	</string>
-	<string name="root">
-		root
-	</string>
-	<string name="lsl2 script">
-		LSL2 script
-	</string>
-	<string name="lsl bytecode">
-		LSL bytecode
-	</string>
-	<string name="tga texture">
-		tga textuur
-	</string>
-	<string name="body part">
-		lichaamsdeel
-	</string>
-	<string name="snapshot">
-		foto
-	</string>
-	<string name="lost and found">
-		Verloren en Gevonden
-	</string>
-	<string name="targa image">
-		targa plaatje
-	</string>
-	<string name="trash">
-		Prullenbak
-	</string>
-	<string name="jpeg image">
-		jpeg plaatje
-	</string>
-	<string name="animation">
-		animatie
-	</string>
-	<string name="gesture">
-		gebaar
-	</string>
-	<string name="simstate">
-		simstate
-	</string>
-	<string name="favorite">
-		favorieten
-	</string>
-	<string name="symbolic link">
-		link
-	</string>
-	<string name="AvatarAway">
-		Afwezig
-	</string>
-	<string name="AvatarBusy">
-		Bezet
-	</string>
-	<string name="AvatarMuted">
-		Genegeerd
-	</string>
-	<string name="anim_express_afraid">
-		Bang
-	</string>
-	<string name="anim_express_anger">
-		Boos
-	</string>
-	<string name="anim_away">
-		Afwezig
-	</string>
-	<string name="anim_backflip">
-		Salto achterwaarts
-	</string>
-	<string name="anim_express_laugh">
-		Daverende lach
-	</string>
-	<string name="anim_express_toothsmile">
-		Grote lach
-	</string>
-	<string name="anim_blowkiss">
-		Blaas kus
-	</string>
-	<string name="anim_express_bored">
-		Verveeld
-	</string>
-	<string name="anim_bow">
-		Buigen
-	</string>
-	<string name="anim_clap">
-		Klappen
-	</string>
-	<string name="anim_courtbow">
-		Hof buiging
-	</string>
-	<string name="anim_express_cry">
-		Huilen
-	</string>
-	<string name="anim_dance1">
-		Dansen 1
-	</string>
-	<string name="anim_dance2">
-		Dansen 2
-	</string>
-	<string name="anim_dance3">
-		Dansen 3
-	</string>
-	<string name="anim_dance4">
-		Dansen 4
-	</string>
-	<string name="anim_dance5">
-		Dansen 5
-	</string>
-	<string name="anim_dance6">
-		Dansen 6
-	</string>
-	<string name="anim_dance7">
-		Dansen 7
-	</string>
-	<string name="anim_dance8">
-		Dansen 8
-	</string>
-	<string name="anim_express_disdain">
-		Minachting
-	</string>
-	<string name="anim_drink">
-		Drinken
-	</string>
-	<string name="anim_express_embarrased">
-		Beschaamd
-	</string>
-	<string name="anim_angry_fingerwag">
-		Vinger opsteken
-	</string>
-	<string name="anim_fist_pump">
-		Vuist pompen
-	</string>
-	<string name="anim_yoga_float">
-		Zwevende Yoga
-	</string>
-	<string name="anim_express_frown">
-		Fronsen
-	</string>
-	<string name="anim_impatient">
-		Ongeduldig
-	</string>
-	<string name="anim_jumpforjoy">
-		Vreugdesprong
-	</string>
-	<string name="anim_kissmybutt">
-		Kus mijn reet
-	</string>
-	<string name="anim_express_kiss">
-		Kussen
-	</string>
-	<string name="anim_laugh_short">
-		Lachen
-	</string>
-	<string name="anim_musclebeach">
-		Spieren tonen
-	</string>
-	<string name="anim_no_unhappy">
-		Nee (ongelukkig)
-	</string>
-	<string name="anim_no_head">
-		Nee
-	</string>
-	<string name="anim_nyanya">
-		Nya-nya-nya
-	</string>
-	<string name="anim_punch_onetwo">
-		Een-twee stomp
-	</string>
-	<string name="anim_express_open_mouth">
-		Open mond
-	</string>
-	<string name="anim_peace">
-		Vrede
-	</string>
-	<string name="anim_point_you">
-		Wijzen naar ander
-	</string>
-	<string name="anim_point_me">
-		Wijzen naar jezelf
-	</string>
-	<string name="anim_punch_l">
-		Stomp links
-	</string>
-	<string name="anim_punch_r">
-		Stomp rechts
-	</string>
-	<string name="anim_rps_countdown">
-		SPS tellen
-	</string>
-	<string name="anim_rps_paper">
-		SPS papier
-	</string>
-	<string name="anim_rps_rock">
-		SPS steen
-	</string>
-	<string name="anim_rps_scissors">
-		SPS schaar
-	</string>
-	<string name="anim_express_repulsed">
-		Afkeer
-	</string>
-	<string name="anim_kick_roundhouse_r">
-		Ronddraaiende trap
-	</string>
-	<string name="anim_express_sad">
-		Droevig
-	</string>
-	<string name="anim_salute">
-		Groet
-	</string>
-	<string name="anim_shout">
-		Roepen
-	</string>
-	<string name="anim_express_shrug">
-		Schouders ophalen
-	</string>
-	<string name="anim_express_smile">
-		Glimlachen
-	</string>
-	<string name="anim_smoke_idle">
-		Roken inactief
-	</string>
-	<string name="anim_smoke_inhale">
-		Roken inhaleren
-	</string>
-	<string name="anim_smoke_throw_down">
-		Roken neergooien
-	</string>
-	<string name="anim_express_surprise">
-		Verrassing
-	</string>
-	<string name="anim_sword_strike_r">
-		Zwaardslag
-	</string>
-	<string name="anim_angry_tantrum">
-		Woedeaanval
-	</string>
-	<string name="anim_express_tongue_out">
-		Tong uitsteken
-	</string>
-	<string name="anim_hello">
-		Zwaaien
-	</string>
-	<string name="anim_whisper">
-		Fluisteren
-	</string>
-	<string name="anim_whistle">
-		Fluiten
-	</string>
-	<string name="anim_express_wink">
-		Knipogen
-	</string>
-	<string name="anim_wink_hollywood">
-		Knipogen (Hollywood)
-	</string>
-	<string name="anim_express_worry">
-		Bezorgd
-	</string>
-	<string name="anim_yes_happy">
-		Ja (vrolijk)
-	</string>
-	<string name="anim_yes_head">
-		Ja
-	</string>
-	<string name="texture_loading">
-		Laden...
-	</string>
-	<string name="worldmap_offline">
-		Off line
-	</string>
-	<string name="worldmap_results_none_found">
-		Geen gevonden.
-	</string>
-	<string name="Ok">
-		OK
-	</string>
-	<string name="Premature end of file">
-		Vroegtijdig eind van bestand
-	</string>
-	<string name="ST_NO_JOINT">
-		Kan niet ROOT of JOINT vinden.
-	</string>
-	<string name="whisper">
-		fluistert:
-	</string>
-	<string name="shout">
-		schreeuwt:
-	</string>
-	<string name="ringing">
-		Verbinden met in-wereld voice chat...
-	</string>
-	<string name="connected">
-		Verbonden
-	</string>
-	<string name="unavailable">
-		Voice is niet beschikbaar op uw huidige locatie
-	</string>
-	<string name="hang_up">
-		Verbinding met in-wereld voicechat verbroken
-	</string>
-	<string name="ScriptQuestionCautionChatGranted">
-		&apos;[OBJECTNAME]&apos;, een object van &apos;[OWNERNAME]&apos;, gevestigd in [REGIONNAME] op [REGIONPOS], is toestemming verleend om te: [PERMISSIONS].
-	</string>
-	<string name="ScriptQuestionCautionChatDenied">
-		&apos;[OBJECTNAME]&apos;, een object van &apos;[OWNERNAME]&apos;, gevestigd in [REGIONNAME] op [REGIONPOS], is toestemming geweigerd om te: [PERMISSIONS].
-	</string>
-	<string name="ScriptTakeMoney">
-		Linden dollars (L$) van u wegnemen
-	</string>
-	<string name="ActOnControlInputs">
-		Acteren op uw bedieningsinvoer
-	</string>
-	<string name="RemapControlInputs">
-		Uw bedieningsinvoer herdefiniëren
-	</string>
-	<string name="AnimateYourAvatar">
-		Animeer uw avatar
-	</string>
-	<string name="AttachToYourAvatar">
-		Bevestig aan uw avatar
-	</string>
-	<string name="ReleaseOwnership">
-		Eigendom vrijgeven en openbaar worden
-	</string>
-	<string name="LinkAndDelink">
-		Koppelen met en ontkoppelen van andere objecten
-	</string>
-	<string name="AddAndRemoveJoints">
-		Toevoegen en verwijderen koppelingen met andere objecten
-	</string>
-	<string name="ChangePermissions">
-		Wijzig zijn permissies
-	</string>
-	<string name="TrackYourCamera">
-		Volg uw camera
-	</string>
-	<string name="ControlYourCamera">
-		Bedien uw camera
-	</string>
-	<string name="SIM_ACCESS_PG">
-		PG
-	</string>
-	<string name="SIM_ACCESS_MATURE">
-		Mature
-	</string>
-	<string name="SIM_ACCESS_ADULT">
-		Adult
-	</string>
-	<string name="SIM_ACCESS_DOWN">
-		Offline
-	</string>
-	<string name="SIM_ACCESS_MIN">
-		Onbekend
-	</string>
-	<string name="land_type_unknown">
-		(onbekend)
-	</string>
-	<string name="all_files">
-		Alle bestanden
-	</string>
-	<string name="sound_files">
-		Geluiden
-	</string>
-	<string name="animation_files">
-		Animaties
-	</string>
-	<string name="image_files">
-		Afbeeldingen
-	</string>
-	<string name="save_file_verb">
-		Opslaan
-	</string>
-	<string name="load_file_verb">
-		Laden
-	</string>
-	<string name="targa_image_files">
-		Targa afbeeldingen
-	</string>
-	<string name="bitmap_image_files">
-		Bitmap afbeeldingen
-	</string>
-	<string name="avi_movie_file">
-		AVI Film bestand
-	</string>
-	<string name="xaf_animation_file">
-		XAF Anim bestand
-	</string>
-	<string name="xml_file">
-		XML bestand
-	</string>
-	<string name="raw_file">
-		RAW bestand
-	</string>
-	<string name="compressed_image_files">
-		Gecomprimeerde afbeeldingen
-	</string>
-	<string name="load_files">
-		Laad bestanden
-	</string>
-	<string name="choose_the_directory">
-		Kies folder
-	</string>
-	<string name="AvatarSetNotAway">
-		Niet Afwezig Instellen
-	</string>
-	<string name="AvatarSetAway">
-		Afwezig Instellen
-	</string>
-	<string name="AvatarSetNotBusy">
-		Niet Bezig Instellen
-	</string>
-	<string name="AvatarSetBusy">
-		Bezig Instellen
-	</string>
-	<string name="shape">
-		Postuur
-	</string>
-	<string name="skin">
-		Huid
-	</string>
-	<string name="hair">
-		Haar
-	</string>
-	<string name="eyes">
-		Ogen
-	</string>
-	<string name="shirt">
-		Hemd
-	</string>
-	<string name="pants">
-		Broek
-	</string>
-	<string name="shoes">
-		Schoenen
-	</string>
-	<string name="socks">
-		Sokken
-	</string>
-	<string name="jacket">
-		Jas
-	</string>
-	<string name="gloves">
-		Handschoenen
-	</string>
-	<string name="undershirt">
-		onderhemd
-	</string>
-	<string name="underpants">
-		Onderbroek
-	</string>
-	<string name="skirt">
-		Rok
-	</string>
-	<string name="alpha">
-		Alpha
-	</string>
-	<string name="tattoo">
-		Tattoo
-	</string>
-	<string name="invalid">
-		ongeldig
-	</string>
-	<string name="next">
-		Volgende
-	</string>
-	<string name="ok">
-		OK
-	</string>
-	<string name="GroupNotifyGroupNotice">
-		Groep Mededeling
-	</string>
-	<string name="GroupNotifyGroupNotices">
-		Groep Mededelingen
-	</string>
-	<string name="GroupNotifySentBy">
-		Verzonden Door:
-	</string>
-	<string name="GroupNotifyAttached">
-		Bijgevoegt:
-	</string>
-	<string name="GroupNotifyViewPastNotices">
-		Bekijk alle mededelingen en bijlages van verzonden Mededelingen in het verleden
-	</string>
-	<string name="GroupNotifyOpenAttachment">
-		Open Bijlage
-	</string>
-	<string name="GroupNotifySaveAttachment">
-		Sla Bijlage Op
-	</string>
-	<string name="TeleportOffer">
-		Teleporteer Aanbieding
-	</string>
-	<string name="StartUpNotification">
-		[%d] Nieuwe mededelingen aangekomen terwijl u weg was ...
-	</string>
-	<string name="StartUpNotifications">
-		[%d] Nieuwe mededelingen aangekomen terwijl u weg was ...
-	</string>
-	<string name="OverflowInfoChannelString">
-		U heeft [%d] meer mededelingen
-	</string>
-	<string name="BodyPartsRightArm">
-		Rechter Arm
-	</string>
-	<string name="BodyPartsHead">
-		Hoofd
-	</string>
-	<string name="BodyPartsLeftArm">
-		Linker Arm
-	</string>
-	<string name="BodyPartsLeftLeg">
-		Linker Been
-	</string>
-	<string name="BodyPartsTorso">
-		Torso
-	</string>
-	<string name="BodyPartsRightLeg">
-		Rechter Been
-	</string>
-	<string name="GraphicsQualityLow">
-		Laag
-	</string>
-	<string name="GraphicsQualityMid">
-		Middel
-	</string>
-	<string name="GraphicsQualityHigh">
-		Hoog
-	</string>
-	<string name="LeaveMouselook">
-		Druk op ESC om terug te keren naar Wereld Zicht
-	</string>
-	<string name="InventoryNoMatchingItems">
-		Geen overeenkomende objecten gevonden in de voorraad.
-	</string>
-	<string name="InventoryNoTexture">
-		Je hebt geen kopie van deze texture in je inventaris
-	</string>
-	<string name="no_transfer" value="(no transfer)"/>
-	<string name="no_modify" value="(no modify)"/>
-	<string name="no_copy" value="(no copy)"/>
-	<string name="worn" value="(worn)"/>
-	<string name="link" value="(link)"/>
-	<string name="broken_link" value="(broken_link)&quot;"/>
-	<string name="LoadingContents">
-		Loading contents...
-	</string>
-	<string name="NoContents">
-		No contents
-	</string>
-	<string name="WornOnAttachmentPoint" value="(worn on [ATTACHMENT_POINT])"/>
-	<string name="Chat" value="Chat :"/>
-	<string name="Sound" value="Geluid :"/>
-	<string name="Wait" value="--- Wachten :"/>
-	<string name="AnimFlagStop" value="Stop Animatie :"/>
-	<string name="AnimFlagStart" value="Start Animatie :"/>
-	<string name="Wave" value="Wave"/>
-	<string name="HelloAvatar" value="Hallo, avatar!"/>
-	<string name="ViewAllGestures" value="Bekijk alles &gt;"/>
-	<string name="Animations" value="Animaties,"/>
-	<string name="Calling Cards" value="Calling Cards,"/>
-	<string name="Clothing" value="Kleding,"/>
-	<string name="Gestures" value="Gestures,"/>
-	<string name="Landmarks" value="Landmarks,"/>
-	<string name="Notecards" value="Notecards,"/>
-	<string name="Objects" value="Objecten,"/>
-	<string name="Scripts" value="Scripts,"/>
-	<string name="Sounds" value="Geluiden,"/>
-	<string name="Textures" value="Textures,"/>
-	<string name="Snapshots" value="Snapshots,"/>
-	<string name="No Filters" value="Nee"/>
-	<string name="Since Logoff" value="- Sinds Afmelden"/>
-	<string name="InvFolder My Inventory">
-		Mijn Inventaris
-	</string>
-	<string name="InvFolder Library">
-		Bibliotheek
-	</string>
-	<string name="InvFolder Textures">
-		Textures
-	</string>
-	<string name="InvFolder Sounds">
-		Geluiden
-	</string>
-	<string name="InvFolder Calling Cards">
-		Calling Cards
-	</string>
-	<string name="InvFolder Landmarks">
-		Landmarks
-	</string>
-	<string name="InvFolder Scripts">
-		Scripts
-	</string>
-	<string name="InvFolder Clothing">
-		Kleding
-	</string>
-	<string name="InvFolder Objects">
-		Objecten
-	</string>
-	<string name="InvFolder Notecards">
-		Notecards
-	</string>
-	<string name="InvFolder New Folder">
-		Nieuwe Map
-	</string>
-	<string name="InvFolder Inventory">
-		Inventaris
-	</string>
-	<string name="InvFolder Uncompressed Images">
-		Ongecomprimeerde Afbeeldingen
-	</string>
-	<string name="InvFolder Body Parts">
-		Lichaams Delen
-	</string>
-	<string name="InvFolder Trash">
-		Afval
-	</string>
-	<string name="InvFolder Photo Album">
-		Foto Album
-	</string>
-	<string name="InvFolder Lost And Found">
-		Verloren en Gevonden
-	</string>
-	<string name="InvFolder Uncompressed Sounds">
-		Ongecomprimeerde Geluiden
-	</string>
-	<string name="InvFolder Animations">
-		Animaties
-	</string>
-	<string name="InvFolder Gestures">
-		Gebaren
-	</string>
-	<string name="InvFolder Favorite">
-		Mijn Favorieten
-	</string>
-	<string name="InvFolder favorite">
-		Mijn Favorieten
-	</string>
-	<string name="InvFolder Current Outfit">
-		Huidige Uitrusting
-	</string>
-	<string name="InvFolder My Outfits">
-		Mijn Uitrustingen
-	</string>
-	<string name="InvFolder Friends">
-		Vrienden
-	</string>
-	<string name="InvFolder All">
-		Alles
-	</string>
-	<string name="Buy">
-		Koop
-	</string>
-	<string name="BuyforL$">
-		Koop voor L$
-	</string>
-	<string name="Stone">
-		Steen
-	</string>
-	<string name="Metal">
-		Metaal
-	</string>
-	<string name="Glass">
-		Glas
-	</string>
-	<string name="Wood">
-		Hout
-	</string>
-	<string name="Flesh">
-		Vlees
-	</string>
-	<string name="Plastic">
-		Plastic
-	</string>
-	<string name="Rubber">
-		Rubber
-	</string>
-	<string name="Light">
-		Licht
-	</string>
-	<string name="KBShift">
-		Shift
-	</string>
-	<string name="KBCtrl">
-		Ctrl
-	</string>
-	<string name="Chest">
-		Borstkas
-	</string>
-	<string name="Skull">
-		Schedel
-	</string>
-	<string name="Left Shoulder">
-		Linker Schouder
-	</string>
-	<string name="Right Shoulder">
-		Rechter Schouder
-	</string>
-	<string name="Left Hand">
-		Linker Hand
-	</string>
-	<string name="Right Hand">
-		Rechter Hand
-	</string>
-	<string name="Left Foot">
-		Linker Voet
-	</string>
-	<string name="Right Foot">
-		Rechter Voet
-	</string>
-	<string name="Spine">
-		Ruggegraat
-	</string>
-	<string name="Pelvis">
-		Bekken
-	</string>
-	<string name="Mouth">
-		Mond
-	</string>
-	<string name="Chin">
-		Kin
-	</string>
-	<string name="Left Ear">
-		Linker Oor
-	</string>
-	<string name="Right Ear">
-		Rechter Oor
-	</string>
-	<string name="Left Eyeball">
-		Linker Oogbal
-	</string>
-	<string name="Right Eyeball">
-		Rechter Oogbal
-	</string>
-	<string name="Nose">
-		Neus
-	</string>
-	<string name="R Upper Arm">
-		R Boven Arm
-	</string>
-	<string name="R Forearm">
-		R Onder Arm
-	</string>
-	<string name="L Upper Arm">
-		L Boven Arm
-	</string>
-	<string name="L Forearm">
-		L Onder Arm
-	</string>
-	<string name="Right Hip">
-		Rechter Heup
-	</string>
-	<string name="R Upper Leg">
-		R Boven Been
-	</string>
-	<string name="R Lower Leg">
-		R Onder Been
-	</string>
-	<string name="Left Hip">
-		Linker Heub
-	</string>
-	<string name="L Upper Leg">
-		L Boven Been
-	</string>
-	<string name="L Lower Leg">
-		L Onder Been
-	</string>
-	<string name="Stomach">
-		Maag
-	</string>
-	<string name="Left Pec">
-		Left Pec
-	</string>
-	<string name="Right Pec">
-		Right Pec
-	</string>
-	<string name="YearsMonthsOld">
-		[AGEYEARS] [AGEMONTHS] oud
-	</string>
-	<string name="YearsOld">
-		[AGEYEARS] oud
-	</string>
-	<string name="MonthsOld">
-		[AGEMONTHS] oud
-	</string>
-	<string name="WeeksOld">
-		[AGEWEEKS] oud
-	</string>
-	<string name="DaysOld">
-		[AGEDAYS] oud
-	</string>
-	<string name="TodayOld">
-		Vandaag toegetreden
-	</string>
-	<string name="AgeYearsA">
-		[COUNT] jaar
-	</string>
-	<string name="AgeYearsB">
-		[COUNT] jaar
-	</string>
-	<string name="AgeYearsC">
-		[COUNT] jaar
-	</string>
-	<string name="AgeMonthsA">
-		[COUNT] maand
-	</string>
-	<string name="AgeMonthsB">
-		[COUNT] maanden
-	</string>
-	<string name="AgeMonthsC">
-		[COUNT] maanden
-	</string>
-	<string name="AgeWeeksA">
-		[COUNT] week
-	</string>
-	<string name="AgeWeeksB">
-		[COUNT] weken
-	</string>
-	<string name="AgeWeeksC">
-		[COUNT] weken
-	</string>
-	<string name="AgeDaysA">
-		[COUNT] dag
-	</string>
-	<string name="AgeDaysB">
-		[COUNT] dagen
-	</string>
-	<string name="AgeDaysC">
-		[COUNT] dagen
-	</string>
-	<string name="GroupMembersA">
-		[COUNT] lid
-	</string>
-	<string name="GroupMembersB">
-		[COUNT] leden
-	</string>
-	<string name="GroupMembersC">
-		[COUNT] leden
-	</string>
-	<string name="AcctTypeResident">
-		bewoner
-	</string>
-	<string name="AcctTypeTrial">
-		Trial
-	</string>
-	<string name="AcctTypeCharterMember">
-		Charter Member
-	</string>
-	<string name="AcctTypeEmployee">
-		Linden Lab Werknemer
-	</string>
-	<string name="PaymentInfoUsed">
-		Betalings info gebruikt
-	</string>
-	<string name="PaymentInfoOnFile">
-		Betalings info op bestand
-	</string>
-	<string name="NoPaymentInfoOnFile">
-		Geen betalings info op bestand
-	</string>
-	<string name="AgeVerified">
-		Leeftijd gecontroleerd
-	</string>
-	<string name="NotAgeVerified">
-		Niet leeftijd gecontroleerd
-	</string>
-	<string name="Center 2">
-		Centrum 2
-	</string>
-	<string name="Top Right">
-		Rechts Boven
-	</string>
-	<string name="Top">
-		Boven
-	</string>
-	<string name="Top Left">
-		Links Boven
-	</string>
-	<string name="Center">
-		Centrum
-	</string>
-	<string name="Bottom Left">
-		Links beneden
-	</string>
-	<string name="Bottom">
-		Beneden
-	</string>
-	<string name="Bottom Right">
-		Rechts beneden
-	</string>
-	<string name="CompileQueueDownloadedCompiling">
-		Dedownload, nu samenstellen
-	</string>
-	<string name="CompileQueueScriptNotFound">
-		Script niet gevonden op server.
-	</string>
-	<string name="CompileQueueProblemDownloading">
-		Problem downloading
-	</string>
-	<string name="CompileQueueInsufficientPermDownload">
-		Onvoldoende rechten om een script te downloaden.
-	</string>
-	<string name="CompileQueueInsufficientPermFor">
-		Onvoldoende rechten voor
-	</string>
-	<string name="CompileQueueUnknownFailure">
-		Onbekende fout te downloaden
-	</string>
-	<string name="CompileQueueTitle">
-		Hercompilatie vooruitgang
-	</string>
-	<string name="CompileQueueStart">
-		Hercompilatie
-	</string>
-	<string name="ResetQueueTitle">
-		Reset Vooruitgang
-	</string>
-	<string name="ResetQueueStart">
-		reset
-	</string>
-	<string name="RunQueueTitle">
-		Set Running Progress
-	</string>
-	<string name="RunQueueStart">
-		set running
-	</string>
-	<string name="NotRunQueueTitle">
-		Set Not Running Progress
-	</string>
-	<string name="NotRunQueueStart">
-		set not running
-	</string>
-	<string name="CompileSuccessful">
-		Compileren succesvol!
-	</string>
-	<string name="CompileSuccessfulSaving">
-		Compileren succesvol, opslaan...
-	</string>
-	<string name="SaveComplete">
-		Opslaan gereed.
-	</string>
-	<string name="ObjectOutOfRange">
-		Script (object buiten het bereik)
-	</string>
-	<string name="GodToolsObjectOwnedBy">
-		Object [OBJECT] eigendom van [OWNER]
-	</string>
-	<string name="GroupsNone">
-		geen
-	</string>
-	<string name="Group" value="(group)"/>
-	<string name="Unknown">
-		(Unknown)
-	</string>
-	<string name="SummaryForTheWeek" value="Samenvatting voor deze week, vanaf "/>
-	<string name="NextStipendDay" value=". The next stipend day is "/>
-	<string name="GroupIndividualShare" value="Groep       Individueel Aandeel"/>
-	<string name="Balance">
-		Banksaldo
-	</string>
-	<string name="Credits">
-		Credits
-	</string>
-	<string name="Debits">
-		Debiteert
-	</string>
-	<string name="Total">
-		Totaal
-	</string>
-	<string name="NoGroupDataFound">
-		Geen groep gegevens gevonden voor groep
-	</string>
-	<string name="IMParentEstate">
-		parent estate
-	</string>
-	<string name="IMMainland">
-		mainland
-	</string>
-	<string name="IMTeen">
-		tiener
-	</string>
-	<string name="RegionInfoError">
-		fout
-	</string>
-	<string name="RegionInfoAllEstatesOwnedBy">
-		all estates owned by [OWNER]
-	</string>
-	<string name="RegionInfoAllEstatesYouOwn">
-		all estates that you own
-	</string>
-	<string name="RegionInfoAllEstatesYouManage">
-		all estates that you manage for [OWNER]
-	</string>
-	<string name="RegionInfoAllowedResidents">
-		Toegestane bewoners: ([ALLOWEDAGENTS], max [MAXACCESS])
-	</string>
-	<string name="RegionInfoAllowedGroups">
-		Toegestane groepen: ([ALLOWEDGROUPS], max [MAXACCESS])
-	</string>
-	<string name="CursorPos">
-		Lijn [LINE], Column [COLUMN]
-	</string>
-	<string name="PanelDirCountFound">
-		[COUNT] gevonden
-	</string>
-	<string name="PanelContentsNewScript">
-		Nieuw Script
-	</string>
-	<string name="MuteByName">
-		(by name)
-	</string>
-	<string name="MuteAgent">
-		(resident)
-	</string>
-	<string name="MuteObject">
-		(object)
-	</string>
-	<string name="MuteGroup">
-		(group)
-	</string>
-	<string name="RegionNoCovenant">
-		There is no Covenant provided for this Estate.
-	</string>
-	<string name="RegionNoCovenantOtherOwner">
-		There is no Covenant provided for this Estate. The land on this estate is being sold by the Estate owner, not Linden Lab.  Please contact the Estate Owner for sales details.
-	</string>
-	<string name="covenant_last_modified" value="Laatst bewerkt: " />
-	<string name="none_text" value="(none)"/>
-	<string name="never_text" value="(never)"/>
-	<string name="GroupOwned">
-		Groep Eigendom
-	</string>
-	<string name="Public">
-		Openbaar
-	</string>
-	<string name="ClassifiedClicksTxt">
-		Klikken: [TELEPORT] teleport, [MAP] map, [PROFILE] profiel
-	</string>
-	<string name="ClassifiedUpdateAfterPublish">
-		(zal bijwerken na publiceren)
-	</string>
-	<string name="MultiPreviewTitle">
-		Preview
-	</string>
-	<string name="MultiPropertiesTitle">
-		Eigenschappen
-	</string>
-	<string name="InvOfferAnObjectNamed">
-		Een object genaamd
-	</string>
-	<string name="InvOfferOwnedByGroup">
-		Eigendom van groep
-	</string>
-	<string name="InvOfferOwnedByUnknownGroup">
-		Eigendom van een onbekende groep
-	</string>
-	<string name="InvOfferOwnedBy">
-		Eigendom van
-	</string>
-	<string name="InvOfferOwnedByUnknownUser">
-		Eigendom van onbekende gebruiker
-	</string>
-	<string name="InvOfferGaveYou">
-		gaf je
-	</string>
-	<string name="InvOfferYouDecline">
-		You decline
-	</string>
-	<string name="InvOfferFrom">
-		van
-	</string>
-	<string name="GroupMoneyTotal">
-		Totaal
-	</string>
-	<string name="GroupMoneyBought">
-		kocht
-	</string>
-	<string name="GroupMoneyPaidYou">
-		betaald u
-	</string>
-	<string name="GroupMoneyPaidInto">
-		gestort
-	</string>
-	<string name="GroupMoneyBoughtPassTo">
-		bought pass to
-	</string>
-	<string name="GroupMoneyPaidFeeForEvent">
-		betaalde vergoeding voor evenement
-	</string>
-	<string name="GroupMoneyPaidPrizeForEvent">
-		betaalde prijs voor evenement
-	</string>
-	<string name="GroupMoneyBalance">
-		Banksaldo
-	</string>
-	<string name="GroupMoneyCredits">
-		Credits
-	</string>
-	<string name="GroupMoneyDebits">
-		Debiteert
-	</string>
-	<string name="ViewerObjectContents">
-		Inhoud
-	</string>
-	<string name="AcquiredItems">
-		Verworven objecten
-	</string>
-	<string name="Cancel">
-		Annuleren
-	</string>
-	<string name="UploadingCosts">
-		Uploading [%s] kosten
-	</string>
-	<string name="UnknownFileExtension">
-		Onbekende extensie [.%s]
-Verwacht .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
-	</string>
-	<string name="AddLandmarkNavBarMenu">
-		Voeg Landmark toe...
-	</string>
-	<string name="EditLandmarkNavBarMenu">
-		Bewerk Landmark...
-	</string>
-	<string name="accel-mac-control">
-		⌃
-	</string>
-	<string name="accel-mac-command">
-		⌘
-	</string>
-	<string name="accel-mac-option">
-		⌥
-	</string>
-	<string name="accel-mac-shift">
-		⇧
-	</string>
-	<string name="accel-win-control">
-		Ctrl+
-	</string>
-	<string name="accel-win-alt">
-		Alt+
-	</string>
-	<string name="accel-win-shift">
-		Shift+
-	</string>
-	<string name="FileSaved">
-		Bestand Opgeslagen
-	</string>
-	<string name="Receiving">
-		Ontvangen
-	</string>
-	<string name="AM">
-		AM
-	</string>
-	<string name="PM">
-		PM
-	</string>
-	<string name="PST">
-		PST
-	</string>
-	<string name="PDT">
-		PDT
-	</string>
-	<string name="Direction_Forward">
-		Vooruit
-	</string>
-	<string name="Direction_Left">
-		Links
-	</string>
-	<string name="Direction_Right">
-		Rechts
-	</string>
-	<string name="Direction_Back">
-		Achteruit
-	</string>
-	<string name="Direction_North">
-		Noord
-	</string>
-	<string name="Direction_South">
-		Zuid
-	</string>
-	<string name="Direction_West">
-		West
-	</string>
-	<string name="Direction_East">
-		Oost
-	</string>
-	<string name="Direction_Up">
-		Omhoog
-	</string>
-	<string name="Direction_Down">
-		Omlaag
-	</string>
-	<string name="Any Category">
-		Elke Categorie
-	</string>
-	<string name="Shopping">
-		Boodschappen
-	</string>
-	<string name="Land Rental">
-		Land Verhuur
-	</string>
-	<string name="Property Rental">
-		Verhuur van onroerend goed
-	</string>
-	<string name="Special Attraction">
-		Speciale Attractie
-	</string>
-	<string name="New Products">
-		Nieuwe Producten
-	</string>
-	<string name="Employment">
-		Employment
-	</string>
-	<string name="Wanted">
-		Gezocht
-	</string>
-	<string name="Service">
-		Service
-	</string>
-	<string name="Personal">
-		Personal
-	</string>
-	<string name="None">
-		Geen
-	</string>
-	<string name="Linden Location">
-		Linden locatie
-	</string>
-	<string name="Adult">
-		Adult
-	</string>
-	<string name="Arts&amp;Culture">
-		Kunst &amp; Cultuur
-	</string>
-	<string name="Business">
-		Zakelijk
-	</string>
-	<string name="Educational">
-		Educatief
-	</string>
-	<string name="Gaming">
-		Spelen
-	</string>
-	<string name="Hangout">
-		Ontmoetingsplaats
-	</string>
-	<string name="Newcomer Friendly">
-		Nieuwkomervriendelijk
-	</string>
-	<string name="Parks&amp;Nature">
-		Parken &amp; natuur
-	</string>
-	<string name="Residential">
-		Woongebied
-	</string>
-	<string name="Stage">
-		Stage
-	</string>
-	<string name="Other">
-		Anders
-	</string>
-	<string name="Any">
-		Any
-	</string>
-	<string name="You">
-		Jij
-	</string>
-	<string name="Multiple Media">
-		Meerdere Media
-	</string>
-	<string name="Play Media">
-		Play/Pause Media
-	</string>
-	<string name="MBCmdLineError">
-		An error was found parsing the command line.
-Please see: http://wiki.secondlife.com/wiki/Client_parameters
-Error:
-	</string>
-	<string name="MBCmdLineUsg">
-		[APP_NAME] Command line usage:
-	</string>
-	<string name="MBUnableToAccessFile">
-		[APP_NAME] is unable to access a file that it needs.
-
-This can be because you somehow have multiple copies running, or your system incorrectly thinks a file is open.
-If this message persists, restart your computer and try again.
-If it continues to persist, you may need to completely uninstall [APP_NAME] and reinstall it.
-	</string>
-	<string name="MBFatalError">
-		Fatal Error
-	</string>
-	<string name="MBRequiresAltiVec">
-		[APP_NAME] requires a processor with AltiVec (G4 or later).
-	</string>
-	<string name="MBAlreadyRunning">
-		[APP_NAME] is already running.
-Check your task bar for a minimized copy of the program.
-If this message persists, restart your computer.
-	</string>
-	<string name="MBFrozenCrashed">
-		[APP_NAME] appears to have frozen or crashed on the previous run.
-Would you like to send a crash report?
-	</string>
-	<string name="MBAlert">
-		Alert
-	</string>
-	<string name="MBNoDirectX">
-		[APP_NAME] is unable to detect DirectX 9.0b or greater.
-[APP_NAME] uses DirectX to detect hardware and/or outdated drivers that can cause stability problems, poor performance and crashes.  While you can run [APP_NAME] without it, we highly recommend running with DirectX 9.0b.
-
-Do you wish to continue?
-	</string>
-	<string name="MBWarning">
-		Warning
-	</string>
-	<string name="MBNoAutoUpdate">
-		Automatic updating is not yet implemented for Linux.
-Please download the latest version from www.secondlife.com.
-	</string>
-	<string name="MBRegClassFailed">
-		RegisterClass failed
-	</string>
-	<string name="MBError">
-		Error
-	</string>
-	<string name="MBFullScreenErr">
-		Unable to run fullscreen at [WIDTH] x [HEIGHT].
-Running in window.
-	</string>
-	<string name="MBDestroyWinFailed">
-		Shutdown Error while destroying window (DestroyWindow() failed)
-	</string>
-	<string name="MBShutdownErr">
-		Shutdown Error
-	</string>
-	<string name="MBDevContextErr">
-		Can&apos;t make GL device context
-	</string>
-	<string name="MBPixelFmtErr">
-		Can&apos;t find suitable pixel format
-	</string>
-	<string name="MBPixelFmtDescErr">
-		Can&apos;t get pixel format description
-	</string>
-	<string name="MBTrueColorWindow">
-		[APP_NAME] requires True Color (32-bit) to run.
-Please go to your computer&apos;s display settings and set the color mode to 32-bit.
-	</string>
-	<string name="MBAlpha">
-		[APP_NAME] is unable to run because it can&apos;t get an 8 bit alpha channel.  Usually this is due to video card driver issues.
-Please make sure you have the latest video card drivers installed.
-Also be sure your monitor is set to True Color (32-bit) in Control Panels &gt; Display &gt; Settings.
-If you continue to receive this message, contact the [SUPPORT_SITE].
-	</string>
-	<string name="MBPixelFmtSetErr">
-		Can&apos;t set pixel format
-	</string>
-	<string name="MBGLContextErr">
-		Can&apos;t create GL rendering context
-	</string>
-	<string name="MBGLContextActErr">
-		Can&apos;t activate GL rendering context
-	</string>
-	<string name="MBVideoDrvErr">
-		[APP_NAME] is unable to run because your video card drivers did not install properly, are out of date, or are for unsupported hardware. Please make sure you have the latest video card drivers and even if you do have the latest, try reinstalling them.
-
-If you continue to receive this message, contact the [SUPPORT_SITE].
-	</string>
-	<string name="5 O&apos;Clock Shadow">
-		Stoppels
-	</string>
-	<string name="All White">
-		Alles Wit
-	</string>
-	<string name="Anime Eyes">
-		Ogen Animeren
-	</string>
-	<string name="Arced">
-		Gebogen
-	</string>
-	<string name="Arm Length">
-		Arm Lengte
-	</string>
-	<string name="Attached">
-		Bijgevoegt
-	</string>
-	<string name="Attached Earlobes">
-		Bijgevoegde Oorlellen
-	</string>
-	<string name="Back Bangs">
-		Achterkant Pony
-	</string>
-	<string name="Back Bangs Down">
-		Achterkant Pony Neer
-	</string>
-	<string name="Back Bangs Up">
-		Achterkant Pony Omhoog
-	</string>
-	<string name="Back Fringe">
-		Achterkant Franje
-	</string>
-	<string name="Back Hair">
-		Achterkant Haar
-	</string>
-	<string name="Back Hair Down">
-		Achterkant Haar Neer
-	</string>
-	<string name="Back Hair Up">
-		Achterkant Haar Omhoog
-	</string>
-	<string name="Baggy">
-		Oogwallen
-	</string>
-	<string name="Bangs">
-		Pony
-	</string>
-	<string name="Bangs Down">
-		Pony Neer
-	</string>
-	<string name="Bangs Up">
-		Pony Omhoog
-	</string>
-	<string name="Beady Eyes">
-		Kraaloogjes
-	</string>
-	<string name="Belly Size">
-		Buik Grootte
-	</string>
-	<string name="Big">
-		Groot
-	</string>
-	<string name="Big Butt">
-		Grote Kont
-	</string>
-	<string name="Big Eyeball">
-		Grote Oogbol
-	</string>
-	<string name="Big Hair Back">
-		Haar Volume Achter
-	</string>
-	<string name="Big Hair Front">
-		Haar Volume Voor
-	</string>
-	<string name="Big Hair Top">
-		Haar Volume Boven
-	</string>
-	<string name="Big Head">
-		Groot Hoofd
-	</string>
-	<string name="Big Pectorals">
-		Groote Borstspieren
-	</string>
-	<string name="Big Spikes">
-		Grote Stekels
-	</string>
-	<string name="Black">
-		Zwart
-	</string>
-	<string name="Blonde">
-		Blond
-	</string>
-	<string name="Blonde Hair">
-		Blond Haar
-	</string>
-	<string name="Blush">
-		Blozen
-	</string>
-	<string name="Blush Color">
-		Bloos Kleur
-	</string>
-	<string name="Blush Opacity">
-		Bloos Opaciteit
-	</string>
-	<string name="Body Definition">
-		Lichaam Definitie
-	</string>
-	<string name="Body Fat">
-		Lichaam vet
-	</string>
-	<string name="Body Freckles">
-		Lichaam Sproeten
-	</string>
-	<string name="Body Thick">
-		Lichaam Dik
-	</string>
-	<string name="Body Thickness">
-		Lichaam Dikte
-	</string>
-	<string name="Body Thin">
-		Lichaam Dun
-	</string>
-	<string name="Bow Legged">
-		Boog Benen
-	</string>
-	<string name="Breast Buoyancy">
-		Borst Drijfvermogen
-	</string>
-	<string name="Breast Cleavage">
-		Borst Splijting
-	</string>
-	<string name="Breast Size">
-		Borst Grootte
-	</string>
-	<string name="Bridge Width">
-		Brug Breedte
-	</string>
-	<string name="Broad">
-		Breed
-	</string>
-	<string name="Brow Size">
-		Wenkbrauw Grootte
-	</string>
-	<string name="Bug Eyes">
-		Insect Ogen
-	</string>
-	<string name="Bugged Eyes">
-		Insect Ogen
-	</string>
-	<string name="Bulbous">
-		Bolle
-	</string>
-	<string name="Bulbous Nose">
-		Bolle Neus
-	</string>
-	<string name="Bushy Eyebrows">
-		Borstelige Wenkbrauwen
-	</string>
-	<string name="Bushy Hair">
-		Borstelig Haar
-	</string>
-	<string name="Butt Size">
-		Kont Grootte
-	</string>
-	<string name="bustle skirt">
-		Bustle Skirt
-	</string>
-	<string name="no bustle">
-		No Bustle
-	</string>
-	<string name="more bustle">
-		More Bustle
-	</string>
-	<string name="Chaplin">
-		Smalle Snor
-	</string>
-	<string name="Cheek Bones">
-		Jukbeenderen
-	</string>
-	<string name="Chest Size">
-		Borst Grootte
-	</string>
-	<string name="Chin Angle">
-		Kin Hoek
-	</string>
-	<string name="Chin Cleft">
-		Gespleten Kin
-	</string>
-	<string name="Chin Curtains">
-		Kin Gordijnen
-	</string>
-	<string name="Chin Depth">
-		Kin Diepte
-	</string>
-	<string name="Chin Heavy">
-		Kin Zware
-	</string>
-	<string name="Chin In">
-		Kin In
-	</string>
-	<string name="Chin Out">
-		Kin uit
-	</string>
-	<string name="Chin-Neck">
-		Kin-Nek
-	</string>
-	<string name="Clear">
-		Opschonen
-	</string>
-	<string name="Cleft">
-		Gespleten
-	</string>
-	<string name="Close Set Eyes">
-		Close Set Eyes
-	</string>
-	<string name="Closed">
-		Gesloten
-	</string>
-	<string name="Closed Back">
-		Gesloten Achterkant
-	</string>
-	<string name="Closed Front">
-		Gesloten Voorkant
-	</string>
-	<string name="Closed Left">
-		Gesloten Links
-	</string>
-	<string name="Closed Right">
-		Gesloten Rechts
-	</string>
-	<string name="Coin Purse">
-		Verminder Grootte
-	</string>
-	<string name="Collar Back">
-		Kraag Achterkant
-	</string>
-	<string name="Collar Front">
-		Kraag Voorkant
-	</string>
-	<string name="Corner Down">
-		Hoek Omlaag
-	</string>
-	<string name="Corner Normal">
-		Hoek Normaal
-	</string>
-	<string name="Corner Up">
-		Hoek Omhoog
-	</string>
-	<string name="Creased">
-		Gevouwen
-	</string>
-	<string name="Crooked Nose">
-		Kromte Neus
-	</string>
-	<string name="Cropped Hair">
-		Bijgesneden Haar
-	</string>
-	<string name="Cuff Flare">
-		Cuff Flare
-	</string>
-	<string name="Dark">
-		Donker
-	</string>
-	<string name="Dark Green">
-		Donker Groen
-	</string>
-	<string name="Darker">
-		Donkerder
-	</string>
-	<string name="Deep">
-		Diep
-	</string>
-	<string name="Default Heels">
-		Standaard Hielen
-	</string>
-	<string name="Default Toe">
-		Standaard Teen
-	</string>
-	<string name="Dense">
-		Dicht
-	</string>
-	<string name="Dense hair">
-		Dicht haar
-	</string>
-	<string name="Double Chin">
-		Dubbele Kin
-	</string>
-	<string name="Downturned">
-		Downturned
-	</string>
-	<string name="Duffle Bag">
-		Vergroot Grootte
-	</string>
-	<string name="Ear Angle">
-		Oor Hoek
-	</string>
-	<string name="Ear Size">
-		Oor Grootte
-	</string>
-	<string name="Ear Tips">
-		Oor Punten
-	</string>
-	<string name="Egg Head">
-		Ei Hoofd
-	</string>
-	<string name="Eye Bags">
-		Oog Zakken
-	</string>
-	<string name="Eye Color">
-		Oog Kleur
-	</string>
-	<string name="Eye Depth">
-		Oog Diepte
-	</string>
-	<string name="Eye Lightness">
-		Oog Lichtheid
-	</string>
-	<string name="Eye Opening">
-		Oog Opening
-	</string>
-	<string name="Eye Pop">
-		Asymmetrisch
-	</string>
-	<string name="Eye Size">
-		Oog Grootte
-	</string>
-	<string name="Eye Spacing">
-		Oog Afstand
-	</string>
-	<string name="Eyeball Size">
-		Oogbal Grootte
-	</string>
-	<string name="Eyebrow Arc">
-		Wenkbrauw Boog
-	</string>
-	<string name="Eyebrow Density">
-		Wenkbrauw Dichtheid
-	</string>
-	<string name="Eyebrow Height">
-		Wenkbrauw Hoogte
-	</string>
-	<string name="Eyebrow Points">
-		Wenkbrauw Punten
-	</string>
-	<string name="Eyebrow Size">
-		Eyebrow Grootte
-	</string>
-	<string name="Eyelash Length">
-		Eyelash Lengte
-	</string>
-	<string name="Eyeliner">
-		Eyeliner
-	</string>
-	<string name="Eyeliner Color">
-		Eyeliner Kleur
-	</string>
-	<string name="Eyes Back">
-		Ogen Achteruit
-	</string>
-	<string name="Eyes Bugged">
-		Insect Ogen
-	</string>
-	<string name="Eyes Forward">
-		Ogen Vooruit
-	</string>
-	<string name="Eyes Long Head">
-		Eyes Long Head
-	</string>
-	<string name="Eyes Shear Left Up">
-		Eyes Shear Left Up
-	</string>
-	<string name="Eyes Shear Right Up">
-		Eyes Shear Right Up
-	</string>
-	<string name="Eyes Short Head">
-		Eyes Short Head
-	</string>
-	<string name="Eyes Spread">
-		Eyes Spread
-	</string>
-	<string name="Eyes Sunken">
-		Ingevallen Ogen
-	</string>
-	<string name="Eyes Together">
-		Ogen Bij Elkaar
-	</string>
-	<string name="Face Shear">
-		Gezicht Gelijkheid
-	</string>
-	<string name="Facial Definition">
-		Gezichts Definitie
-	</string>
-	<string name="Far Set Eyes">
-		Ogen Uit Elkaar
-	</string>
-	<string name="Fat">
-		Dik
-	</string>
-	<string name="Fat Head">
-		Dik Hoofd
-	</string>
-	<string name="Fat Lips">
-		Dikke Lippen
-	</string>
-	<string name="Fat Lower">
-		Fat Lower
-	</string>
-	<string name="Fat Lower Lip">
-		Fat Lower Lip
-	</string>
-	<string name="Fat Torso">
-		Fat Torso
-	</string>
-	<string name="Fat Upper">
-		Fat Upper
-	</string>
-	<string name="Fat Upper Lip">
-		Dikke Boven Lip
-	</string>
-	<string name="Female">
-		Vrouw
-	</string>
-	<string name="Fingerless">
-		Vingerloos
-	</string>
-	<string name="Fingers">
-		Vingers
-	</string>
-	<string name="Flared Cuffs">
-		Verbrede Vorm
-	</string>
-	<string name="Flat">
-		Plat
-	</string>
-	<string name="Flat Butt">
-		Platte Kont
-	</string>
-	<string name="Flat Head">
-		Plat Hoofd
-	</string>
-	<string name="Flat Toe">
-		Platte Teen
-	</string>
-	<string name="Foot Size">
-		Voet Grootte
-	</string>
-	<string name="Forehead Angle">
-		Voorhoofd Hoek
-	</string>
-	<string name="Forehead Heavy">
-		Zwaar Voorhoofd
-	</string>
-	<string name="Freckles">
-		Sproeten
-	</string>
-	<string name="Front Bangs Down">
-		Voorkant Pony Omlaag
-	</string>
-	<string name="Front Bangs Up">
-		Voorkant Pony Omhoog
-	</string>
-	<string name="Front Fringe">
-		Voorste Rand
-	</string>
-	<string name="Front Hair">
-		Gezichtshaar
-	</string>
-	<string name="Front Hair Down">
-		Gezichtshaar Omlaag
-	</string>
-	<string name="Front Hair Up">
-		Gezichtshaar Omhoog
-	</string>
-	<string name="Full Back">
-		Volle Achterkant
-	</string>
-	<string name="Full Eyeliner">
-		Volle Eyeliner
-	</string>
-	<string name="Full Front">
-		Volle Voorkant
-	</string>
-	<string name="Full Hair Sides">
-		Full Hair Sides
-	</string>
-	<string name="Full Sides">
-		Volle Zijkanten
-	</string>
-	<string name="Glossy">
-		Glanzend
-	</string>
-	<string name="Glove Fingers">
-		Vinger Handschoenen
-	</string>
-	<string name="Glove Length">
-		Handschoen Lengte
-	</string>
-	<string name="Hair">
-		Haar
-	</string>
-	<string name="Hair Back">
-		Haar: Zwart
-	</string>
-	<string name="Hair Front">
-		Haar: Voorkant
-	</string>
-	<string name="Hair Sides">
-		Haar: Zijkant
-	</string>
-	<string name="Hair Sweep">
-		Hair Sweep
-	</string>
-	<string name="Hair Thickess">
-		Haar Dikheid
-	</string>
-	<string name="Hair Thickness">
-		Hair Dikheid
-	</string>
-	<string name="Hair Tilt">
-		Hair Tilt
-	</string>
-	<string name="Hair Tilted Left">
-		Hair Tilted Left
-	</string>
-	<string name="Hair Tilted Right">
-		Hair Tilted Right
-	</string>
-	<string name="Hair Volume">
-		Haar: Volume
-	</string>
-	<string name="Hand Size">
-		Hand Grootte
-	</string>
-	<string name="Handlebars">
-		Handlebars
-	</string>
-	<string name="Head Length">
-		Hoofd Lengte
-	</string>
-	<string name="Head Shape">
-		Hoofd Vorm
-	</string>
-	<string name="Head Size">
-		Hooft Grootte
-	</string>
-	<string name="Head Stretch">
-		Hoofd Uitrekken
-	</string>
-	<string name="Heel Height">
-		Hiel Hoogte
-	</string>
-	<string name="Heel Shape">
-		Hiel Vorm
-	</string>
-	<string name="Height">
-		Hoogte
-	</string>
-	<string name="High">
-		Hoog
-	</string>
-	<string name="High Heels">
-		Hoge Hielen
-	</string>
-	<string name="High Jaw">
-		Hoge Kaak
-	</string>
-	<string name="High Platforms">
-		High Platforms
-	</string>
-	<string name="High and Tight">
-		Hoog en Strak
-	</string>
-	<string name="Higher">
-		Hoger
-	</string>
-	<string name="Hip Length">
-		Heup Lengte
-	</string>
-	<string name="Hip Width">
-		Heup Breedte
-	</string>
-	<string name="In">
-		Naar Binnen
-	</string>
-	<string name="In Shdw Color">
-		Binnenste Schaduw Kleur
-	</string>
-	<string name="In Shdw Opacity">
-		Binnenste Schaduw Opaciteit
-	</string>
-	<string name="Inner Eye Corner">
-		Binnenste Oog Hoek
-	</string>
-	<string name="Inner Eye Shadow">
-		Binnenste Oog Schaduw
-	</string>
-	<string name="Inner Shadow">
-		Binnenste Schaduw
-	</string>
-	<string name="Jacket Length">
-		Jas Lengte
-	</string>
-	<string name="Jacket Wrinkles">
-		Jas Rimpels
-	</string>
-	<string name="Jaw Angle">
-		Kaak Hoek
-	</string>
-	<string name="Jaw Jut">
-		Jaw Jut
-	</string>
-	<string name="Jaw Shape">
-		Kaak Vorm
-	</string>
-	<string name="Join">
-		Samenvoegen
-	</string>
-	<string name="Jowls">
-		Kaken
-	</string>
-	<string name="Knee Angle">
-		Knie Hoek
-	</string>
-	<string name="Knock Kneed">
-		Knieën Naar binnen
-	</string>
-	<string name="Large">
-		Fors
-	</string>
-	<string name="Large Hands">
-		Grote Handen
-	</string>
-	<string name="Left Part">
-		Linker Deel
-	</string>
-	<string name="Leg Length">
-		Been Lengte
-	</string>
-	<string name="Leg Muscles">
-		Been Spieren
-	</string>
-	<string name="Less">
-		Minder
-	</string>
-	<string name="Less Body Fat">
-		Minder Lichaams Vet
-	</string>
-	<string name="Less Curtains">
-		Less Curtains
-	</string>
-	<string name="Less Freckles">
-		Minder Sproeten
-	</string>
-	<string name="Less Full">
-		Minder Vol
-	</string>
-	<string name="Less Gravity">
-		Minder Zwaartekracht
-	</string>
-	<string name="Less Love">
-		Less Love
-	</string>
-	<string name="Less Muscles">
-		Minder Spieren
-	</string>
-	<string name="Less Muscular">
-		Minder Spieren
-	</string>
-	<string name="Less Rosy">
-		Minder Rooskleurig
-	</string>
-	<string name="Less Round">
-		Minder Rond
-	</string>
-	<string name="Less Saddle">
-		Minder Heupen
-	</string>
-	<string name="Less Square">
-		Minder Vierkant
-	</string>
-	<string name="Less Volume">
-		Minder Volume
-	</string>
-	<string name="Less soul">
-		Minder Ziel
-	</string>
-	<string name="Lighter">
-		Lichter
-	</string>
-	<string name="Lip Cleft">
-		Gespleten Lip
-	</string>
-	<string name="Lip Cleft Depth">
-		Gespleten Lip Diepte
-	</string>
-	<string name="Lip Fullness">
-		Lip Volheid
-	</string>
-	<string name="Lip Pinkness">
-		Rozeheid Lippen
-	</string>
-	<string name="Lip Ratio">
-		Lip Ratio
-	</string>
-	<string name="Lip Thickness">
-		Lip Dikheid
-	</string>
-	<string name="Lip Width">
-		Lip Breedte
-	</string>
-	<string name="Lipgloss">
-		Lipgloss
-	</string>
-	<string name="Lipstick">
-		Lipstick
-	</string>
-	<string name="Lipstick Color">
-		Lipstick Kleur
-	</string>
-	<string name="Long">
-		Lang
-	</string>
-	<string name="Long Head">
-		Lang Hoofd
-	</string>
-	<string name="Long Hips">
-		Lange Heupen
-	</string>
-	<string name="Long Legs">
-		Lange Benen
-	</string>
-	<string name="Long Neck">
-		Lange Nek
-	</string>
-	<string name="Long Pigtails">
-		Long Pigtails
-	</string>
-	<string name="Long Ponytail">
-		Lange Paardenstaart
-	</string>
-	<string name="Long Torso">
-		Lang Torso
-	</string>
-	<string name="Long arms">
-		Lange Armen
-	</string>
-	<string name="Longcuffs">
-		Longcuffs
-	</string>
-	<string name="Loose Pants">
-		Losse Broek
-	</string>
-	<string name="Loose Shirt">
-		Los Shirt
-	</string>
-	<string name="Loose Sleeves">
-		Losse Mouwen
-	</string>
-	<string name="Love Handles">
-		Love Handles
-	</string>
-	<string name="Low">
-		Laag
-	</string>
-	<string name="Low Heels">
-		Lage Hielen
-	</string>
-	<string name="Low Jaw">
-		Lage Kaak
-	</string>
-	<string name="Low Platforms">
-		Lage Platforms
-	</string>
-	<string name="Low and Loose">
-		Laag en Los
-	</string>
-	<string name="Lower">
-		Lager
-	</string>
-	<string name="Lower Bridge">
-		Lagere Brug
-	</string>
-	<string name="Lower Cheeks">
-		Lagere Wangen
-	</string>
-	<string name="Male">
-		Man
-	</string>
-	<string name="Middle Part">
-		Middelste Deel
-	</string>
-	<string name="More">
-		Meer
-	</string>
-	<string name="More Blush">
-		Meer Blozen
-	</string>
-	<string name="More Body Fat">
-		Meer Lichaams Vet
-	</string>
-	<string name="More Curtains">
-		More Curtains
-	</string>
-	<string name="More Eyeshadow">
-		Meer Oogshadow
-	</string>
-	<string name="More Freckles">
-		Meer Sproeten
-	</string>
-	<string name="More Full">
-		Meer Vol
-	</string>
-	<string name="More Gravity">
-		Meer Zwaartekracht
-	</string>
-	<string name="More Lipstick">
-		Meer Lippenstift
-	</string>
-	<string name="More Love">
-		Meer Lovehandels
-	</string>
-	<string name="More Lower Lip">
-		Meer Onder Lip
-	</string>
-	<string name="More Muscles">
-		Meer Spieren
-	</string>
-	<string name="More Muscular">
-		Meer Spieren
-	</string>
-	<string name="More Rosy">
-		More Rosy
-	</string>
-	<string name="More Round">
-		Meer Rond
-	</string>
-	<string name="More Saddle">
-		Meer Heupen
-	</string>
-	<string name="More Sloped">
-		Meer Hellend
-	</string>
-	<string name="More Square">
-		Meer Vierkant
-	</string>
-	<string name="More Upper Lip">
-		Meer Boven Lip
-	</string>
-	<string name="More Vertical">
-		Meer Verticaal
-	</string>
-	<string name="More Volume">
-		Meer Volume
-	</string>
-	<string name="More soul">
-		Meer ziel
-	</string>
-	<string name="Moustache">
-		Snor
-	</string>
-	<string name="Mouth Corner">
-		Mond Hoek
-	</string>
-	<string name="Mouth Position">
-		Mond Positie
-	</string>
-	<string name="Mowhawk">
-		Hanekam
-	</string>
-	<string name="Muscular">
-		Gespiert
-	</string>
-	<string name="Mutton Chops">
-		Mutton Chops
-	</string>
-	<string name="Nail Polish">
-		Nagel Lak
-	</string>
-	<string name="Nail Polish Color">
-		Nagel Lak Kleur
-	</string>
-	<string name="Narrow">
-		Smal
-	</string>
-	<string name="Narrow Back">
-		Smalle Achterkant
-	</string>
-	<string name="Narrow Front">
-		Smalle Voorkant
-	</string>
-	<string name="Narrow Lips">
-		Smalle Lippen
-	</string>
-	<string name="Natural">
-		Natural
-	</string>
-	<string name="Neck Length">
-		Nek Lengte
-	</string>
-	<string name="Neck Thickness">
-		Nek Dikheid
-	</string>
-	<string name="No Blush">
-		Geen Bloos
-	</string>
-	<string name="No Eyeliner">
-		Geen Eyeliner
-	</string>
-	<string name="No Eyeshadow">
-		Geen Oogschaduw
-	</string>
-	<string name="No Heels">
-		Geen Hakken
-	</string>
-	<string name="No Lipgloss">
-		Geen Lipgloss
-	</string>
-	<string name="No Lipstick">
-		Geen Lippenstift
-	</string>
-	<string name="No Part">
-		Geen Deel
-	</string>
-	<string name="No Polish">
-		Geen Glans
-	</string>
-	<string name="No Red">
-		Geen Rood
-	</string>
-	<string name="No Spikes">
-		Geen Stekels
-	</string>
-	<string name="No White">
-		Geen Wit
-	</string>
-	<string name="No Wrinkles">
-		Geen Rimpels
-	</string>
-	<string name="Normal Lower">
-		Normaal Onder
-	</string>
-	<string name="Normal Upper">
-		Normaal Boven
-	</string>
-	<string name="Nose Left">
-		Neus Links
-	</string>
-	<string name="Nose Right">
-		Neus Rechts
-	</string>
-	<string name="Nose Size">
-		Neus Grootte
-	</string>
-	<string name="Nose Thickness">
-		Neus Dickheid
-	</string>
-	<string name="Nose Tip Angle">
-		Neus Top Hoek
-	</string>
-	<string name="Nose Tip Shape">
-		Neus Top Vorm
-	</string>
-	<string name="Nose Width">
-		Neus Breedte
-	</string>
-	<string name="Nostril Division">
-		Nostril Division
-	</string>
-	<string name="Nostril Width">
-		Neusgat Breedte
-	</string>
-	<string name="Old">
-		Oud
-	</string>
-	<string name="Opaque">
-		Ondoorzichtig
-	</string>
-	<string name="Open">
-		Open
-	</string>
-	<string name="Open Back">
-		Open Achterkant
-	</string>
-	<string name="Open Front">
-		Open Voorkant
-	</string>
-	<string name="Open Left">
-		Open Links
-	</string>
-	<string name="Open Right">
-		Open Rechts
-	</string>
-	<string name="Orange">
-		Oranje
-	</string>
-	<string name="Out">
-		Uit
-	</string>
-	<string name="Out Shdw Color">
-		Buitenste Schaduw Kleur
-	</string>
-	<string name="Out Shdw Opacity">
-		Buitenste Schaduw Opaciteit
-	</string>
-	<string name="Outer Eye Corner">
-		Buitenste Oog Hoek
-	</string>
-	<string name="Outer Eye Shadow">
-		Buitenste Oog Schaduw
-	</string>
-	<string name="Outer Shadow">
-		Buitenste Schaduw
-	</string>
-	<string name="Overbite">
-		Overbeet
-	</string>
-	<string name="Package">
-		Genitaliën
-	</string>
-	<string name="Painted Nails">
-		Gelakte Nagels
-	</string>
-	<string name="Pale">
-		Dof
-	</string>
-	<string name="Pants Crotch">
-		Broek Kruis
-	</string>
-	<string name="Pants Fit">
-		Broek Passend
-	</string>
-	<string name="Pants Length">
-		Broek Lengte
-	</string>
-	<string name="Pants Waist">
-		Broek Teille
-	</string>
-	<string name="Pants Wrinkles">
-		Broek Rimpels
-	</string>
-	<string name="Part">
-		Deel
-	</string>
-	<string name="Part Bangs">
-		Part Bangs
-	</string>
-	<string name="Pectorals">
-		Borstspieren
-	</string>
-	<string name="Pigment">
-		Pigment
-	</string>
-	<string name="Pigtails">
-		Pigtails
-	</string>
-	<string name="Pink">
-		Roze
-	</string>
-	<string name="Pinker">
-		Rozer
-	</string>
-	<string name="Platform Height">
-		Platform Hoogte
-	</string>
-	<string name="Platform Width">
-		Platform Breedte
-	</string>
-	<string name="Pointy">
-		Puntig
-	</string>
-	<string name="Pointy Heels">
-		Puntige Hielen
-	</string>
-	<string name="Pointy Toe">
-		Puntige Tenen
-	</string>
-	<string name="Ponytail">
-		Paardenstaard
-	</string>
-	<string name="Poofy Skirt">
-		Poofy Skirt
-	</string>
-	<string name="Pop Left Eye">
-		Asymmetrisch Links
-	</string>
-	<string name="Pop Right Eye">
-		Asymmetrisch Rechts
-	</string>
-	<string name="Puffy">
-		Opgezwollen
-	</string>
-	<string name="Puffy Eyelids">
-		Opgezwollen Oogleden
-	</string>
-	<string name="Rainbow Color">
-		Regenboog Kleur
-	</string>
-	<string name="Red Hair">
-		Rood Haar
-	</string>
-	<string name="Red Skin">
-		Rode Huid
-	</string>
-	<string name="Regular">
-		Normaal
-	</string>
-	<string name="Regular Muscles">
-		Normale Spieren
-	</string>
-	<string name="Right Part">
-		Rechter Deel
-	</string>
-	<string name="Rosy Complexion">
-		Rosy Complexion
-	</string>
-	<string name="Round">
-		Rond
-	</string>
-	<string name="Round Forehead">
-		Rond Voorhoofd
-	</string>
-	<string name="Ruddiness">
-		Rossige kleur
-	</string>
-	<string name="Ruddy">
-		Rossig
-	</string>
-	<string name="Rumpled Hair">
-		Rumpled Hair
-	</string>
-	<string name="Saddle Bags">
-		Saddle Bags
-	</string>
-	<string name="Saddlebags">
-		Saddlebags
-	</string>
-	<string name="Scrawny">
-		Magere
-	</string>
-	<string name="Scrawny Leg">
-		Mager Been
-	</string>
-	<string name="Separate">
-		Scheiden
-	</string>
-	<string name="Shading">
-		Shading
-	</string>
-	<string name="Shadow hair">
-		Schaduw Haar
-	</string>
-	<string name="Shallow">
-		Ondiep
-	</string>
-	<string name="Shear Back">
-		Shear Back
-	</string>
-	<string name="Shear Face">
-		Shear Face
-	</string>
-	<string name="Shear Front">
-		Shear Front
-	</string>
-	<string name="Shear Left">
-		Shear Left
-	</string>
-	<string name="Shear Left Up">
-		Shear Left Up
-	</string>
-	<string name="Shear Right">
-		Shear Right
-	</string>
-	<string name="Shear Right Up">
-		Shear Right Up
-	</string>
-	<string name="Sheared Back">
-		Sheared Back
-	</string>
-	<string name="Sheared Front">
-		Sheared Front
-	</string>
-	<string name="Shift Left">
-		Verplaats Links
-	</string>
-	<string name="Shift Mouth">
-		Verplaats Mond
-	</string>
-	<string name="Shift Right">
-		Verplaats Rechts
-	</string>
-	<string name="Shirt Bottom">
-		Hemd Onderkant
-	</string>
-	<string name="Shirt Fit">
-		Hemd Passend
-	</string>
-	<string name="Shirt Wrinkles">
-		Hemd Rimpels
-	</string>
-	<string name="Shoe Height">
-		Schoen Hoogte
-	</string>
-	<string name="Short">
-		Kort
-	</string>
-	<string name="Short Arms">
-		Korte Armen
-	</string>
-	<string name="Short Legs">
-		Korte Benen
-	</string>
-	<string name="Short Neck">
-		Korte Nek
-	</string>
-	<string name="Short Pigtails">
-		Short Pigtails
-	</string>
-	<string name="Short Ponytail">
-		Korte Paardenstaart
-	</string>
-	<string name="Short Sideburns">
-		Korte Bakkebaarden
-	</string>
-	<string name="Short Torso">
-		Korte Torso
-	</string>
-	<string name="Short hips">
-		Korte Heupen
-	</string>
-	<string name="Shoulders">
-		Shouders
-	</string>
-	<string name="Side Bangs">
-		Side Bangs
-	</string>
-	<string name="Side Bangs Down">
-		Side Bangs Down
-	</string>
-	<string name="Side Bangs Up">
-		Side Bangs Up
-	</string>
-	<string name="Side Fringe">
-		Side Fringe
-	</string>
-	<string name="Sideburns">
-		Bakkebaarden
-	</string>
-	<string name="Sides Hair">
-		Sides Hair
-	</string>
-	<string name="Sides Hair Down">
-		Sides Hair Down
-	</string>
-	<string name="Sides Hair Up">
-		Sides Hair Up
-	</string>
-	<string name="Skinny">
-		Broodmager
-	</string>
-	<string name="Skinny Neck">
-		Smalle Nek
-	</string>
-	<string name="Skirt Fit">
-		Skirt Fit
-	</string>
-	<string name="Skirt Length">
-		Rok Lengte
-	</string>
-	<string name="Slanted Forehead">
-		Schuin voorhoofd
-	</string>
-	<string name="Sleeve Length">
-		Mouw Lengte
-	</string>
-	<string name="Sleeve Looseness">
-		Mouw Losheid
-	</string>
-	<string name="Slit Back">
-		Spleet: Achter
-	</string>
-	<string name="Slit Front">
-		Spleet: Voor
-	</string>
-	<string name="Slit Left">
-		Spleet: Links
-	</string>
-	<string name="Slit Right">
-		Spleet: Rechts
-	</string>
-	<string name="Small">
-		Klein
-	</string>
-	<string name="Small Hands">
-		Kleine Handen
-	</string>
-	<string name="Small Head">
-		Klein Hoofd
-	</string>
-	<string name="Smooth">
-		Glad
-	</string>
-	<string name="Smooth Hair">
-		Glad Haar
-	</string>
-	<string name="Socks Length">
-		Sok Lengte
-	</string>
-	<string name="Some">
-		enkele
-	</string>
-	<string name="Soulpatch">
-		Soulpatch
-	</string>
-	<string name="Sparse">
-		Schaars
-	</string>
-	<string name="Spiked Hair">
-		Puntig Haar
-	</string>
-	<string name="Square">
-		Vierkant
-	</string>
-	<string name="Square Toe">
-		Vierkante Teen
-	</string>
-	<string name="Squash Head">
-		Squash Head
-	</string>
-	<string name="Squash/Stretch Head">
-		Squash/Stretch Head
-	</string>
-	<string name="Stretch Head">
-		Uitgerekt Hoofd
-	</string>
-	<string name="Sunken">
-		Verzonken
-	</string>
-	<string name="Sunken Chest">
-		Verzonken Borstkas
-	</string>
-	<string name="Sunken Eyes">
-		Verzonken Ogen
-	</string>
-	<string name="Sweep Back">
-		Sweep Back
-	</string>
-	<string name="Sweep Forward">
-		Sweep Forward
-	</string>
-	<string name="Swept Back">
-		Swept Back
-	</string>
-	<string name="Swept Back Hair">
-		Swept Back Hair
-	</string>
-	<string name="Swept Forward">
-		Swept Forward
-	</string>
-	<string name="Swept Forward Hair">
-		Swept Forward Hair
-	</string>
-	<string name="Tall">
-		Lang
-	</string>
-	<string name="Taper Back">
-		Spits Achter
-	</string>
-	<string name="Taper Front">
-		Spits Voor
-	</string>
-	<string name="Thick Heels">
-		Dikke Hielen
-	</string>
-	<string name="Thick Neck">
-		Dikke Nek
-	</string>
-	<string name="Thick Toe">
-		Dikke Teen
-	</string>
-	<string name="Thickness">
-		Dikheid
-	</string>
-	<string name="Thin">
-		Dun
-	</string>
-	<string name="Thin Eyebrows">
-		Dunne Wenkbrouwen
-	</string>
-	<string name="Thin Lips">
-		Dunne Lippen
-	</string>
-	<string name="Thin Nose">
-		Dunne Neus
-	</string>
-	<string name="Tight Chin">
-		Strakke Kin
-	</string>
-	<string name="Tight Cuffs">
-		Strakke Manchetten
-	</string>
-	<string name="Tight Pants">
-		Strakke Broek
-	</string>
-	<string name="Tight Shirt">
-		Strak Hemd
-	</string>
-	<string name="Tight Skirt">
-		Strakke Rok
-	</string>
-	<string name="Tight Sleeves">
-		Strakke Mouwen
-	</string>
-	<string name="Tilt Left">
-		Tilt Left
-	</string>
-	<string name="Tilt Right">
-		Tilt Right
-	</string>
-	<string name="Toe Shape">
-		Teen Vorm
-	</string>
-	<string name="Toe Thickness">
-		Teen Dikheid
-	</string>
-	<string name="Torso Length">
-		Borstkas Lengte
-	</string>
-	<string name="Torso Muscles">
-		Borstkas Spieren
-	</string>
-	<string name="Torso Scrawny">
-		Magere Borstkas
-	</string>
-	<string name="Unattached">
-		Niet Verbonden
-	</string>
-	<string name="Uncreased">
-		Uncreased
-	</string>
-	<string name="Underbite">
-		onderbeet
-	</string>
-	<string name="Unnatural">
-		Onnatuurlijk
-	</string>
-	<string name="Upper Bridge">
-		Boven Brug
-	</string>
-	<string name="Upper Cheeks">
-		Bovenste Wangen
-	</string>
-	<string name="Upper Chin Cleft">
-		Bovenste Kin Gespleten
-	</string>
-	<string name="Upper Eyelid Fold">
-		Bovenste Ooglid Gevouwen
-	</string>
-	<string name="Upturned">
-		Omgekeerde
-	</string>
-	<string name="Very Red">
-		Erg Rood
-	</string>
-	<string name="Waist Height">
-		Taille Hoogte
-	</string>
-	<string name="Well-Fed">
-		Goed Gevoed
-	</string>
-	<string name="White Hair">
-		Wit Haar
-	</string>
-	<string name="Wide">
-		Breed
-	</string>
-	<string name="Wide Back">
-		Breede Achterkant
-	</string>
-	<string name="Wide Front">
-		Breed Voorkant
-	</string>
-	<string name="Wide Lips">
-		Breed Lippen
-	</string>
-	<string name="Wild">
-		Wild
-	</string>
-	<string name="Wrinkles">
-		Rimpels
-	</string>
-	<string name="LocationCtrlAddLandmarkTooltip">
-		Add to My Landmarks
-	</string>
-	<string name="LocationCtrlEditLandmarkTooltip">
-		Edit My Landmark
-	</string>
-	<string name="LocationCtrlInfoBtnTooltip">
-		See more info about the current location
-	</string>
-	<string name="LocationCtrlComboBtnTooltip">
-		My location history
-	</string>
-	<string name="UpdaterWindowTitle">
-		[APP_NAME] Update
-	</string>
-	<string name="UpdaterNowUpdating">
-		Now updating [APP_NAME]...
-	</string>
-	<string name="UpdaterNowInstalling">
-		Installing [APP_NAME]...
-	</string>
-	<string name="UpdaterUpdatingDescriptive">
-		Your [APP_NAME] Viewer is being updated to the latest release.  This may take some time, so please be patient.
-	</string>
-	<string name="UpdaterProgressBarTextWithEllipses">
-		Downloading update...
-	</string>
-	<string name="UpdaterProgressBarText">
-		Downloading update
-	</string>
-	<string name="UpdaterFailDownloadTitle">
-		Failed to download update
-	</string>
-	<string name="UpdaterFailUpdateDescriptive">
-		An error occurred while updating [APP_NAME]. Please download the latest version from www.secondlife.com.
-	</string>
-	<string name="UpdaterFailInstallTitle">
-		Failed to install update
-	</string>
-	<string name="UpdaterFailStartTitle">
-		Failed to start viewer
-	</string>
-	<string name="IM_logging_string">
-		-- Instant message logging enabled --
-	</string>
-	<string name="IM_typing_start_string">
-		[NAME] is typing...
-	</string>
-	<string name="Unnamed">
-		(Unnamed)
-	</string>
-	<string name="IM_moderated_chat_label">
-		(Moderated: Voices off by default)
-	</string>
-	<string name="IM_unavailable_text_label">
-		Text chat is not available for this call.
-	</string>
-	<string name="IM_muted_text_label">
-		Your text chat has been disabled by a Group Moderator.
-	</string>
-	<string name="IM_default_text_label">
-		Click here to instant message.
-	</string>
-	<string name="IM_to_label">
-		To
-	</string>
-	<string name="IM_moderator_label">
-		(Moderator)
-	</string>
-	<string name="only_user_message">
-		U bent de enige gebruiker in deze sessie.
-	</string>
-	<string name="offline_message">
-		[NAME] is offline.
-	</string>
-	<string name="invite_message">
-		Klik de [BUTTON NAME] knop om deze voicechat te accepteren/verbinden.
-	</string>
-	<string name="generic_request_error">
-		Fout tijdens het maken van het verzoek, probeer het later nog een keer.
-	</string>
-	<string name="insufficient_perms_error">
-		U heeft niet voldoende permissies.
-	</string>
-	<string name="session_does_not_exist_error">
-		De sessie bestaat niet meer
-	</string>
-	<string name="no_ability_error">
-		U beschikt niet over die mogelijkheid.
-	</string>
-	<string name="no_ability">
-		U beschikt niet over die mogelijkheid.
-	</string>
-	<string name="not_a_mod_error">
-		U bent geen sessie moderateur
-	</string>
-	<string name="muted_error">
-		Een groepsmoderator heeft uw textchat uitgeschakeld.
-	</string>
-	<string name="add_session_event">
-		Kan geen gebruikers toevoegen aan chatsessie met [RECIPIENT].
-	</string>
-	<string name="message_session_event">
-		Kan uw bericht niet versturen naar de chatsessie met [RECIPIENT].
-	</string>
-	<string name="removed_from_group">
-		U bent verwijderd uit de groep.
-	</string>
-	<string name="close_on_no_ability">
-		U heeft niet langer de mogelijkheid om in deze chatsessie te zijn.
-	</string>
-</strings>
diff --git a/indra/newview/skins/default/xui/nl/teleport_strings.xml b/indra/newview/skins/default/xui/nl/teleport_strings.xml
deleted file mode 100644
index 12a81447c0d81feffeefc4c1dab4aba54f53b0e9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/nl/teleport_strings.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<teleport_messages>
-	<message_set name="errors">
-		<message name="invalid_tport">
-			Probleem ondervonden bij het verwerken van uw verzoek voor een teleport. Het kan nodig zijn om opnieuw in te loggen voordat u kunt teleporteren. 
-Als u dit bericht blijft krijgen, controleert u dan alstublieft [SUPPORT_SITE].
-		</message>
-		<message name="invalid_region_handoff">
-			Er is een probleem opgetreden bij het oversteken naar een andere regio. U dient wellicht opnieuw in te loggen voor uw kunt oversteken naar andere regio&apos;s.
-Als u dit bericht blijft krijgen, controleert u dan alstublieft [SUPPORT_SITE].
-		</message>
-		<message name="blocked_tport">
-			Sorry, teleport is momenteel geblokkeerd. Probeer het zo meteen opnieuw. Indien u nog steeds niet kunt teleporteren, log dan alstublieft uit en weer in om het probleem te verhelpen.
-		</message>
-		<message name="nolandmark_tport">
-			Sorry, het systeem was niet in staat de bestemming van  de landmarkering te vinden.
-		</message>
-		<message name="timeout_tport">
-			Sorry, het systeem was niet in staat om de teleport verbinding af te ronden. Probeer het zo meteen nog een keer.
-		</message>
-		<message name="noaccess_tport">
-			Sorry, u heeft geen toegang tot die teleportbestemming.
-		</message>
-		<message name="missing_attach_tport">
-			Uw bevestigingen zijn nog niet gearriveerd. Probeer nog een aantal seconden te wachten of log uit en weer in voor u probeert te teleporteren.
-		</message>
-		<message name="too_many_uploads_tport">
-			De assetwachtrij in deze regio is momenteel volgelopen, dus uw teleportverzoek zal niet tijdig afgerond kunnen worden. Probeer het alstublieft opnieuw over een aantal minuten of ga naar een minder druk gebied.
-		</message>
-		<message name="expired_tport">
-			Sorry, het systeem was niet in staat uw teleportverzoek tijdig af te ronden. Probeer het alstublieft opnieuw over een aantal minuten.
-		</message>
-		<message name="expired_region_handoff">
-			Sorry, het systeem was niet in staat om het oversteken naar een andere regio tijdig af te ronden. Probeer het alstublieft opnieuw over een aantal minuten.
-		</message>
-		<message name="no_host">
-			Kan teleportbestemming niet vinden. De bestemming is mogelijk tijdelijk niet beschikbaar of bestaat niet meer. Probeer het alstublieft opnieuw over een aantal minuten.
-		</message>
-		<message name="no_inventory_host">
-			Het inventarissysteem is momenteel niet beschikbaar.
-		</message>
-	</message_set>
-	<message_set name="progress">
-		<message name="sending_dest">
-			Verzenden naar bestemming
-		</message>
-		<message name="redirecting">
-			U wordt doorverwezen naar andere locatie.
-		</message>
-		<message name="relaying">
-			Omschakelen naar bestemming.
-		</message>
-		<message name="sending_home">
-			Thuislocatieverzoek verzenden
-		</message>
-		<message name="sending_landmark">
-			Landmarkeringlocatieverzoek verzenden
-		</message>
-		<message name="completing">
-			Teleport voltooien
-		</message>
-		<message name="resolving">
-			Bestemming bepalen.
-		</message>
-		<message name="contacting">
-			Contact maken met nieuwe regio.
-		</message>
-		<message name="arriving">
-			Arriveren…
-		</message>
-		<message name="requesting">
-			Teleport aanvragen…
-		</message>
-	</message_set>
-</teleport_messages>
diff --git a/indra/newview/skins/default/xui/pl/floater_about.xml b/indra/newview/skins/default/xui/pl/floater_about.xml
index 637325ddd022758643998bf8b51b227afc888be9..409429ffaa64b2f5584ed937ebbce14fac9dc3fb 100644
--- a/indra/newview/skins/default/xui/pl/floater_about.xml
+++ b/indra/newview/skins/default/xui/pl/floater_about.xml
@@ -10,7 +10,7 @@
 	<floater.string name="AboutPosition">
 		Położenie [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] w [REGION] zlokalizowanym w &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		Procesor: [CPU]
diff --git a/indra/newview/skins/default/xui/pl/floater_buy_currency.xml b/indra/newview/skins/default/xui/pl/floater_buy_currency.xml
index f2a6579dc37181eedc74074c72b4474582f42738..3e51761b37e9daa430c1dade09ba890244d50589 100644
--- a/indra/newview/skins/default/xui/pl/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/pl/floater_buy_currency.xml
@@ -46,7 +46,7 @@
 		[AMT]L$
 	</text>
 	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php metoda płatności] | [http://www.secondlife.com/my/account/currency.php waluta] | [http://www.secondlife.com/my/account/exchange_rates.php kurs wymiany]
+		[http://www.secondlife.com/my/account/payment_method_management.php metoda płatności] | [http://www.secondlife.com/my/account/currency.php waluta]
 	</text>
 	<text name="exchange_rate_note">
 		Wpisz ponownie kwotę aby zobaczyć ostatni kurs wymiany.
diff --git a/indra/newview/skins/default/xui/pl/floater_camera.xml b/indra/newview/skins/default/xui/pl/floater_camera.xml
index 5b9dd476160be1619e0ac4f9a28820d726ba8df5..60f3cd0fffda088f6bfaee9f83e32e0bc71deb27 100644
--- a/indra/newview/skins/default/xui/pl/floater_camera.xml
+++ b/indra/newview/skins/default/xui/pl/floater_camera.xml
@@ -9,15 +9,6 @@
 	<floater.string name="move_tooltip">
 		Poruszaj kamerą w dół/górę oraz w prawo/lewo
 	</floater.string>
-	<floater.string name="camera_modes_title">
-		Ustawienia
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		W prawo lub w lewo
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		Ustaw widok
-	</floater.string>
 	<floater.string name="free_mode_title">
 		Zobacz obiekt
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml b/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml
index 7dc3e1f22ef6ae6136fa3e980f0d76abcd7f117e..214d465f1cc1052b63719a5a217cb92d730e252b 100644
--- a/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="nearby_chat" title="CZAT LOKALNY">
-	<check_box label="TÅ‚umaczenie czatu (wspierane przez Google)" name="translate_chat_checkbox"/>
+	<check_box label="TÅ‚umaczenie czatu" name="translate_chat_checkbox"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml
index fe4662c5a2462321731258cc196ced8a5a7ded53..24c961fa2659b0096c9563329c12831a0d7d9f62 100644
--- a/indra/newview/skins/default/xui/pl/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml
@@ -20,8 +20,6 @@
 			<menu_item_call label="Tryb oddalenia" name="Set Away"/>
 			<menu_item_call label="Tryb pracy" name="Set Busy"/>
 		</menu>
-		<menu_item_call label="Zażądaj statusu administratora" name="Request Admin Options"/>
-		<menu_item_call label="Wyłącz atatus administratora" name="Leave Admin Options"/>
 		<menu_item_call label="Wyłącz [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Komunikacja" name="Communicate">
@@ -36,11 +34,10 @@
 		<menu_item_check label="Szukaj" name="Search"/>
 		<menu_item_call label="Zrób zdjęcie" name="Take Snapshot"/>
 		<menu_item_call label="Zapamiętaj to miejsce (LM)" name="Create Landmark Here"/>
-		<menu label="Miejsce" name="Land">
-			<menu_item_call label="Profil miejsca" name="Place Profile"/>
-			<menu_item_call label="O posiadłości" name="About Land"/>
-			<menu_item_call label="Region/MajÄ…tek" name="Region/Estate"/>
-		</menu>
+		<menu_item_separator/>
+		<menu_item_call label="Profil miejsca" name="Place Profile"/>
+		<menu_item_call label="O posiadłości" name="About Land"/>
+		<menu_item_call label="Region/MajÄ…tek" name="Region/Estate"/>
 		<menu_item_call label="Kup posiadłość" name="Buy Land"/>
 		<menu_item_call label="Moje posiadłości" name="My Land"/>
 		<menu label="Pokaż" name="LandShow">
@@ -56,7 +53,7 @@
 		</menu>
 		<menu_item_call label="Teleportuj do Miejsca Startu" name="Teleport Home"/>
 		<menu_item_call label="Ustaw Miejsce Startu" name="Set Home to Here"/>
-		<menu label="Słońce" name="Environment Settings">
+		<menu label="Słońce" name="Sun">
 			<menu_item_call label="Wschód Słońca" name="Sunrise"/>
 			<menu_item_call label="Południe" name="Noon"/>
 			<menu_item_call label="Zachód Słońca" name="Sunset"/>
@@ -119,6 +116,7 @@
 			<menu_item_call label="dźwięk (L$[COST])..." name="Upload Sound"/>
 			<menu_item_call label="animacjÄ™ (L$[COST])..." name="Upload Animation"/>
 			<menu_item_call label="zbiór plików (L$[COST] za jeden plik)..." name="Bulk Upload"/>
+			<menu_item_call label="Ustaw domyślne pozwolenia ładowania" name="perm prefs"/>
 		</menu>
 		<menu_item_call label="Cofnij" name="Undo"/>
 		<menu_item_call label="Ponów" name="Redo"/>
@@ -152,22 +150,22 @@
 			<menu_item_check label="Pokaż celownik myszki" name="ShowCrosshairs"/>
 		</menu>
 		<menu label="Rodzaje renderowania" name="Rendering Types">
-			<menu_item_check label="Podstawowe" name="Simple"/>
-			<menu_item_check label="Maska alpha" name="Alpha"/>
-			<menu_item_check label="Drzewo" name="Tree"/>
-			<menu_item_check label="Awatary" name="Character"/>
-			<menu_item_check label="PÅ‚aszczyzna powierzchni" name="SurfacePath"/>
-			<menu_item_check label="Niebo" name="Sky"/>
-			<menu_item_check label="Woda" name="Water"/>
-			<menu_item_check label="Ziemia" name="Ground"/>
-			<menu_item_check label="Głośność" name="Volume"/>
-			<menu_item_check label="Trawa" name="Grass"/>
-			<menu_item_check label="Chmury" name="Clouds"/>
-			<menu_item_check label="CzÄ…steczki" name="Particles"/>
-			<menu_item_check label="Zderzenie" name="Bump"/>
+			<menu_item_check label="Podstawowe" name="Rendering Type Simple"/>
+			<menu_item_check label="Maska alpha" name="Rendering Type Alpha"/>
+			<menu_item_check label="Drzewo" name="Rendering Type Tree"/>
+			<menu_item_check label="Awatary" name="Rendering Type Character"/>
+			<menu_item_check label="PÅ‚aszczyzna powierzchni" name="Rendering Type Surface Patch"/>
+			<menu_item_check label="Niebo" name="Rendering Type Sky"/>
+			<menu_item_check label="Woda" name="Rendering Type Water"/>
+			<menu_item_check label="Ziemia" name="Rendering Type Ground"/>
+			<menu_item_check label="Głośność" name="Rendering Type Volume"/>
+			<menu_item_check label="Trawa" name="Rendering Type Grass"/>
+			<menu_item_check label="Chmury" name="Rendering Type Clouds"/>
+			<menu_item_check label="CzÄ…steczki" name="Rendering Type Particles"/>
+			<menu_item_check label="Zderzenie" name="Rendering Type Bump"/>
 		</menu>
 		<menu label="Opcje renderowania" name="Rendering Features">
-			<menu_item_check label="UI" name="UI"/>
+			<menu_item_check label="UI" name="ToggleUI"/>
 			<menu_item_check label="Zaznaczone" name="Selected"/>
 			<menu_item_check label="Podświetlenie" name="Highlighted"/>
 			<menu_item_check label="Tekstury dynamiczne" name="Dynamic Textures"/>
@@ -179,10 +177,7 @@
 		<menu_item_call label="Wyczyść bufor danych grupy" name="ClearGroupCache"/>
 		<menu_item_check label="Wygładzanie ruchu myszki" name="Mouse Smoothing"/>
 		<menu label="Skróty" name="Shortcuts">
-			<menu_item_call label="Obraz (L$[COST])..." name="Upload Image"/>
-			<menu_item_check label="Szukaj" name="Search"/>
 			<menu_item_call label="Zwolnij klawisze" name="Release Keys"/>
-			<menu_item_call label="Domyślne ustawienia rozmiaru interfejsu" name="Set UI Size to Default"/>
 			<menu_item_check label="Pokaż menu Zaawansowane - skrót" name="Show Advanced Menu - legacy shortcut"/>
 			<menu_item_call label="Zamknij okno" name="Close Window"/>
 			<menu_item_call label="Zamknij wszystkie okna" name="Close All Windows"/>
@@ -191,13 +186,6 @@
 			<menu_item_check label="Wolna kamera" name="Joystick Flycam"/>
 			<menu_item_call label="Reset widoku" name="Reset View"/>
 			<menu_item_call label="Zobacz ostatniego rozmówcę" name="Look at Last Chatter"/>
-			<menu label="Wybierz narzędzie budowania" name="Select Tool">
-				<menu_item_call label="Narzędzie ogniskowej" name="Focus"/>
-				<menu_item_call label="Narzędzie ruchu" name="Move"/>
-				<menu_item_call label="Narzędzie edycji" name="Edit"/>
-				<menu_item_call label="Stwórz narzędzie" name="Create"/>
-				<menu_item_call label="Narzędzia posiadłości" name="Land"/>
-			</menu>
 			<menu_item_call label="Przybliż" name="Zoom In"/>
 			<menu_item_call label="Domyślne przybliżenie" name="Zoom Default"/>
 			<menu_item_call label="Oddal" name="Zoom Out"/>
@@ -266,9 +254,8 @@
 			<menu_item_call label="Upuść pakiet pamięci" name="Drop a Packet"/>
 		</menu>
 		<menu_item_call label="Zderzenia, popchnięcia &amp;  uderzenia" name="Bumps, Pushes &amp;amp; Hits"/>
-		<menu label="Åšwiat" name="World">
+		<menu label="Åšwiat" name="DevelopWorld">
 			<menu_item_check label="Domyślne ustawienia środowiska Regionu" name="Sim Sun Override"/>
-			<menu_item_check label="Efekty emiterów" name="Cheesy Beacon"/>
 			<menu_item_check label="Ustalona pogoda" name="Fixed Weather"/>
 			<menu_item_call label="Zachowaj bufor pamięci obiektów regionu" name="Dump Region Object Cache"/>
 		</menu>
@@ -290,11 +277,11 @@
 		</menu>
 		<menu label="Awatar" name="Character">
 			<menu label="Przesuń bakowaną teksturę" name="Grab Baked Texture">
-				<menu_item_call label="Tęczówka oka" name="Iris"/>
-				<menu_item_call label="GÅ‚owa" name="Head"/>
-				<menu_item_call label="Górna część ciała" name="Upper Body"/>
-				<menu_item_call label="Dolna część ciała" name="Lower Body"/>
-				<menu_item_call label="Spódnica" name="Skirt"/>
+				<menu_item_call label="Tęczówka oka" name="Grab Iris"/>
+				<menu_item_call label="GÅ‚owa" name="Grab Head"/>
+				<menu_item_call label="Górna część ciała" name="Grab Upper Body"/>
+				<menu_item_call label="Dolna część ciała" name="Grab Lower Body"/>
+				<menu_item_call label="Spódnica" name="Grab Skirt"/>
 			</menu>
 			<menu label="Testy postaci" name="Character Tests">
 				<menu_item_call label="Przesuń geometrię postaci" name="Toggle Character Geometry"/>
@@ -315,8 +302,8 @@
 		<menu_item_check label="Pokaż menu administratora" name="View Admin Options"/>
 	</menu>
 	<menu label="Administrator" name="Admin">
-		<menu label="Object">
-			<menu_item_call label="Weź kopię" name="Take Copy"/>
+		<menu label="Object" name="AdminObject">
+			<menu_item_call label="Weź kopię" name="Admin Take Copy"/>
 			<menu_item_call label="Reset właściciela" name="Force Owner To Me"/>
 			<menu_item_call label="Reset przyzwolenia właściciela" name="Force Owner Permissive"/>
 			<menu_item_call label="Usuń" name="Delete"/>
diff --git a/indra/newview/skins/default/xui/pl/notifications.xml b/indra/newview/skins/default/xui/pl/notifications.xml
index 7d3225ea317839b66700c36c29f78e301ad21ecc..019429364226712b613395ea9700cc8589a824e3 100644
--- a/indra/newview/skins/default/xui/pl/notifications.xml
+++ b/indra/newview/skins/default/xui/pl/notifications.xml
@@ -946,7 +946,7 @@ Zaproponować znajomość [NAME]?
 		</form>
 	</notification>
 	<notification name="RemoveFromFriends">
-		Czy chcesz usunąć [NAME] z listy znajomych?
+		Czy chcesz usunąć &lt;nolink&gt;[NAME]&lt;/nolink&gt; z listy znajomych?
 		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
 	</notification>
 	<notification name="RemoveMultipleFromFriends">
@@ -1385,7 +1385,7 @@ W celu instalacji aktualizacji musi zostać wykonany restart [APP_NAME].
 		<usetemplate ignoretext="Potwierdź zanim zwrócisz obiekty do ich właścicieli" name="okcancelignore" notext="Anuluj" yestext="OK"/>
 	</notification>
 	<notification name="GroupLeaveConfirmMember">
-		Jesteś członkiem grupy [GROUP].
+		Jesteś członkiem grupy &lt;nolink&gt;[GROUP]&lt;/nolink&gt;.
 Chcesz opuścić grupę?
 		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
 	</notification>
@@ -2078,10 +2078,10 @@ Zamieść go na stronie internetowej żeby umożliwić innym łatwy dostęp do t
 		Temat: [SUBJECT], Treść: [MESSAGE]
 	</notification>
 	<notification name="FriendOnline">
-		[NAME] jest w Second Life
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; jest w Second Life
 	</notification>
 	<notification name="FriendOffline">
-		[NAME] opuszcza Second Life
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; opuszcza Second Life
 	</notification>
 	<notification name="AddSelfFriend">
 		Nie możesz dodać siebie do listy znajomych.
@@ -2458,10 +2458,10 @@ Spróbuj ponowanie za kilka minut.
 		</form>
 	</notification>
 	<notification name="FriendshipAccepted">
-		Twoja propozycja znajomości została przyjęta przez [NAME].
+		Twoja propozycja znajomości została przyjęta przez &lt;nolink&gt;[NAME]&lt;/nolink&gt;.
 	</notification>
 	<notification name="FriendshipDeclined">
-		Twoja propozycja znajomości została odrzucona przez [NAME].
+		Twoja propozycja znajomości została odrzucona przez &lt;nolink&gt;[NAME]&lt;/nolink&gt;.
 	</notification>
 	<notification name="FriendshipAcceptedByMe">
 		Propozycja znajomości została zaakceptowana.
diff --git a/indra/newview/skins/default/xui/pl/panel_my_profile.xml b/indra/newview/skins/default/xui/pl/panel_my_profile.xml
deleted file mode 100644
index cdc833241d650d51815debdb80f2d59b37a65bce..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/pl/panel_my_profile.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
-	<string name="no_partner_text" value="Żadne"/>
-	<string name="no_group_text" value="Żadne"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="scroll_content_panel">
-					<panel name="second_life_image_panel">
-						<text name="display_name_descr_text">
-							Nazwa użytkownika
-						</text>
-						<text name="name_descr_text">
-							Wyświetlana nazwa
-						</text>
-						<button label="Profil" name="see_profile_btn" tool_tip="Zobacz profil tego awatara"/>
-					</panel>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_notes.xml b/indra/newview/skins/default/xui/pl/panel_notes.xml
deleted file mode 100644
index 571171d64c73f4a9eff1bda49fe5069b63410c39..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/pl/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Notatki &amp; Prywatność" name="panel_notes">
-	<layout_stack name="layout">
-		<layout_panel name="notes_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<text name="status_message" value="Notatki:"/>
-					<text name="status_message2" value="Pozwól tej osobie na:"/>
-					<check_box label="Widzenie mojego statusu" name="status_check"/>
-					<check_box label="Lokalizowanie mnie na mapie" name="map_check"/>
-					<check_box label="Edytowanie, kasowanie lub zabieranie moich obiektów" name="objects_check"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-		<layout_panel name="notes_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="Dodaj do Znajomych" name="add_friend" tool_tip="Zaoferuj znajomość Rezydentowi"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="IM" name="im" tool_tip="Otwórz wiadomości IM"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="Dzwoń" name="call" tool_tip="Zadzwoń do Rezydenta"/>
-				</layout_panel>
-				<layout_panel name="show_on_map_btn_lp">
-					<button label="Mapa" name="show_on_map_btn" tool_tip="Pokaż Rezydenta na mapie"/>
-				</layout_panel>
-				<layout_panel name="teleport_btn_lp">
-					<button label="Teleportuj" name="teleport" tool_tip="Teleportuj"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
index 3251099f747ed9372e995ebac33cf4ebfd924281..7fd1029e6acda23bc7119d231c8514d549583871 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml
@@ -31,7 +31,7 @@
 	<spinner label="Czas znikania czatu w pobliżu:" name="nearby_toasts_fadingtime"/>
 	<check_box name="translate_chat_checkbox"/>
 	<text name="translate_chb_label">
-		Użyj translatora podczas rozmowy (wspierany przez Google)
+		Użyj translatora podczas rozmowy
 	</text>
 	<text name="translate_language_text">
 		Przetłumacz czat na:
@@ -51,7 +51,7 @@
 		<combo_box.item label="Русский (Rosyjski)" name="Russian"/>
 		<combo_box.item label="Türkçe (Turecki)" name="Turkish"/>
 		<combo_box.item label="Українська (Ukraiński)" name="Ukrainian"/>
-		<combo_box.item label="中文 (简体) (Chiński)" name="Chinese"/>
+		<combo_box.item label="中文 (正體) (Chiński)" name="Chinese"/>
 		<combo_box.item label="日本語 (Japoński)" name="Japanese"/>
 		<combo_box.item label="한국어 (Koreański)" name="Korean"/>
 	</combo_box>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_general.xml b/indra/newview/skins/default/xui/pl/panel_preferences_general.xml
index 44dcb2112c845b292f336e05a3bc3fae5f5c283b..fff56eab6e17288b0826a2d8d75a05c478ee42ca 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_general.xml
@@ -11,7 +11,6 @@
 		<combo_box.item label="Español (Hiszpański) - Beta" name="Spanish"/>
 		<combo_box.item label="Français (Francuski) - Beta" name="French"/>
 		<combo_box.item label="Italiano (WÅ‚oski) - Beta" name="Italian"/>
-		<combo_box.item label="Nederlands (Niderlandzki) - Beta" name="Dutch"/>
 		<combo_box.item label="Polski - Beta" name="Polish"/>
 		<combo_box.item label="Português (Portugalski) - Beta" name="Portugese"/>
 		<combo_box.item label="日本語 (Japoński) - Beta" name="(Japanese)"/>
diff --git a/indra/newview/skins/default/xui/pl/panel_profile.xml b/indra/newview/skins/default/xui/pl/panel_profile.xml
deleted file mode 100644
index 77dd951bc42b9acd8842beae2dc97ef3b5b96704..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/pl/panel_profile.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Profil" name="panel_profile">
-	<string name="no_partner_text" value="Brak"/>
-	<string name="no_group_text" value="Żadne"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<panel name="second_life_image_panel">
-						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
-					</panel>
-					<panel name="first_life_image_panel">
-						<text name="title_rw_descr_text" value="Życie#1:"/>
-					</panel>
-					<text name="title_member_text" value="Urodziny:"/>
-					<text name="title_acc_status_text" value="Konto:"/>
-					<text name="title_partner_text" value="Partner:"/>
-					<panel name="partner_data_panel">
-						<text initial_value="(przetwarzanie)" name="partner_text"/>
-					</panel>
-					<text name="title_groups_text" value="Grupy:"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-	<layout_stack name="layout_verb_buttons">
-		<layout_panel name="profile_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="Poznaj" name="add_friend" tool_tip="Zaproponuj znajomość Rezydentowi"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="IM" name="im" tool_tip="Otwórz wiadomości IM"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="Dzwoń" name="call" tool_tip="Zadzwoń do tego Rezydenta"/>
-				</layout_panel>
-				<layout_panel name="chat_btn_lp">
-					<button label="Teleportuj" name="teleport" tool_tip="Teleportuj"/>
-				</layout_panel>
-				<layout_panel name="overflow_btn_lp">
-					<menu_button label="▼" name="overflow_btn" tool_tip="Zapłać lub udostępnij obiekt Rezydentowi"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="profile_me_buttons_panel">
-			<button label="Edytuj profil" name="edit_profile_btn" tool_tip="Edytuj informacje o sobie"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_profile_view.xml b/indra/newview/skins/default/xui/pl/panel_profile_view.xml
deleted file mode 100644
index 1fd6bc1d109140f31d380d12552cd86e9a85338f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/pl/panel_profile_view.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
-	<string name="status_online">
-		Obecnie w SL
-	</string>
-	<string name="status_offline">
-		Nieaktywny
-	</string>
-	<text name="display_name_label" value="Wyświetlana nazwa:"/>
-	<text name="solo_username_label" value="Nazwa użytkownika:"/>
-	<text name="status" value="Obecnie w SL"/>
-	<text name="user_name_small" value="Jack oh look at me this is a super duper long name"/>
-	<button name="copy_to_clipboard" tool_tip="Kopiuj do schowka"/>
-	<text name="user_label" value="Nazwa użytkownika:"/>
-	<tab_container name="tabs">
-		<panel label="PROFIL" name="panel_profile"/>
-		<panel label="ULUBIONE" name="panel_picks"/>
-		<panel label="NOTATKI &amp; PRYWATNOŚĆ" name="panel_notes"/>
-	</tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml
index 6a8309cca52800f3e8b7fe772e92921adeedb653..f6dec8536bae4e6805f145fb49057482825528ff 100644
--- a/indra/newview/skins/default/xui/pl/strings.xml
+++ b/indra/newview/skins/default/xui/pl/strings.xml
@@ -423,6 +423,9 @@
 	<string name="symbolic folder link">
 		link folderu
 	</string>
+	<string name="AvatarEditingAppearance">
+		(Edycja WyglÄ…d)
+	</string>
 	<string name="AvatarAway">
 		Åšpi
 	</string>
diff --git a/indra/newview/skins/default/xui/pl/teleport_strings.xml b/indra/newview/skins/default/xui/pl/teleport_strings.xml
index 57fb55bf4ca5d731e649b681b3e9bb417dc163cb..0366c3fdbcf35ebf6c23acf47d67b1a369a407b8 100644
--- a/indra/newview/skins/default/xui/pl/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/pl/teleport_strings.xml
@@ -19,6 +19,10 @@ Jeśli nadal nie możesz się teleportować wyloguj się i ponownie zaloguj.
 		<message name="timeout_tport">
 			Przepraszamy, ale nie udało się przeprowadzić teleportacji. Spróbuj jeszcze raz.
 		</message>
+		<message name="NoHelpIslandTP">
+		Brak możliwości ponownej teleportacji do Welcome Island.
+Odwiedź &apos;Welcome Island Public&apos; by powtórzyć szkolenie.
+		</message>
 		<message name="noaccess_tport">
 			Przepraszamy, ale nie masz dostępu do miejsca docelowego.
 		</message>
diff --git a/indra/newview/skins/default/xui/pt/floater_about.xml b/indra/newview/skins/default/xui/pt/floater_about.xml
index 508635cd6e7a2f814cffbf93a793af8b9a0eb02d..e843e56090b46fb7bb0df99835e6fd98ba49d316 100644
--- a/indra/newview/skins/default/xui/pt/floater_about.xml
+++ b/indra/newview/skins/default/xui/pt/floater_about.xml
@@ -7,9 +7,9 @@
 		Construído com [COMPILER] versão [COMPILER_VERSION]
 	</floater.string>
 	<floater.string name="AboutPosition">
-		Você está em [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] em [REGION] localizado em &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt;([HOSTIP])
+		Você está em [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] em [REGION] localizado em [HOSTNAME]&lt;/nolink&gt;([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		CPU: [CPU]
@@ -36,6 +36,9 @@ Versão do servidor de voz: [VOICE_VERSION]
 	<floater.string name="AboutTraffic">
 		Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
 	</floater.string>
+	<floater.string name="ErrorFetchingServerReleaseNotesURL">
+		Erro ao obter URL de notas de versão do servidor.
+	</floater.string>
 	<tab_container name="about_tab">
 		<panel label="Info" name="support_panel">
 			<button label="Copiar" name="copy_btn"/>
@@ -62,13 +65,35 @@ Versão do servidor de voz: [VOICE_VERSION]
 		</panel>
 		<panel label="Licenças" name="licenses_panel">
 			<text_editor name="credits_editor">
-				3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion APR Copyright (C) 2000-2004 The Apache Software Foundation Collada DOM Copyright 2005 Sony Computer Entertainment Inc. cURL Copyright (C) 1996-2002, 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, The FreeType Project (www.freetype.org). 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) 2001, Xiphophorus OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. PCRE Copyright (c) 1997-2008 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-2002 Jean-loup Gailly and Mark Adler. google-perftools Copyright (c) 2005, Google Inc.
+				3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion
+        APR Copyright (C) 2000-2004 The Apache Software Foundation
+        Collada DOM Copyright 2005 Sony Computer Entertainment Inc.
+        cURL Copyright (C) 1996-2002, 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, The FreeType Project (www.freetype.org).
+        GL Copyright (C) 1999-2004 Brian Paul.
+        GLOD Copyright (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University e 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) 2001, Xiphophorus
+        OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
+        PCRE Copyright (c) 1997-2008 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-2002 Jean-loup Gailly and Mark Adler.
+        google-perftools Copyright (c) 2005, Google Inc.
+
+        O Visualizador do Second Life usa Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (e seus Licenciantes). Todos os direitos reservados. Consulte www.havok.com para obter detalhes.
 
-O Second Life Viewer usa Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (e licenciadores). Todos os direitos reservados. Mais detalhes em www.havok.com
+        Este software contém código fonte fornecido pela NVIDIA Corporation.
 
-Todos os direitos reservados.  Mais detalhes em licenses.txt.
+        Todos os direitos reservados.  Consulte licenses.txt para obter detalhes.
 
-Codificação do áudio de bate-papo de voz: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
+        Codificação de áudio da conversa com voz: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
 			</text_editor>
 		</panel>
 	</tab_container>
diff --git a/indra/newview/skins/default/xui/pt/floater_about_land.xml b/indra/newview/skins/default/xui/pt/floater_about_land.xml
index 514c7382f83d92faabe369e915ae21fa8e5e0cab..30d4b0290c093437311709f633549e2f9e381e2a 100644
--- a/indra/newview/skins/default/xui/pt/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml
@@ -130,7 +130,7 @@ Vá para o menu Mundo &gt; Sobre o terreno ou selecione outro lote para mostrar
 				Tráfego:
 			</text>
 			<text name="DwellText">
-				0
+				Carregando...
 			</text>
 			<button label="Comprar terreno..." label_selected="Comprar terreno..." left="130" name="Buy Land..." width="125"/>
 			<button label="Venda Linden" name="Linden Sale..." tool_tip="O terreno precisa ser possuído, estar com o conteúdo configurado e não estar pronto para leilão."/>
@@ -213,19 +213,19 @@ Vá para o menu Mundo &gt; Sobre o terreno ou selecione outro lote para mostrar
 				Fator de bônus para objetos na região: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				Uso de prims:
+				Capacidade da região:
 			</text>
 			<text name="objects_available">
 				[COUNT] de [MAX] ([AVAILABLE] disponíveis)
 			</text>
 			<text name="Primitives parcel supports:">
-				Prims suportados pelo lote:
+				Capacidade do lote do terreno:
 			</text>
 			<text name="object_contrib_text">
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
-				Prims no lote:
+				Impacto no lote do terreno:
 			</text>
 			<text name="total_objects_text">
 				[COUNT]
@@ -309,13 +309,15 @@ Apenas lotes maiores podem ser listados na busca.
 				Proibido empurrar (regulamento da região)
 			</panel.string>
 			<panel.string name="see_avs_text">
-				Veja e bata papo com os residentes deste terreno
+				Avatares em outros lotes podem ver
 			</panel.string>
 			<text name="allow_label">
 				Autorizar outros residentes a:
 			</text>
-			<check_box label="Editar terreno" name="edit land check" tool_tip="Se ativado, qualquer um pode modificar o terreno. É melhor deixar esta opção desativada, uma vez que você sempre pode editar seu próprio terreno."/>
-			<check_box label="Voar" name="check fly" tool_tip="Se ativado,  residentes podem voar sobre seu terreno. Se desativado, eles podem voar apenas até chegar ou sobrevoar o seu terreno."/>
+			<text name="allow_label0">
+				Voar:
+			</text>
+			<check_box label="Todos" name="check fly" tool_tip="Se ativado,  residentes podem voar sobre seu terreno. Se desativado, eles podem voar apenas até chegar ou sobrevoar o seu terreno."/>
 			<text name="allow_label2">
 				Criar objetos:
 			</text>
@@ -331,9 +333,6 @@ Apenas lotes maiores podem ser listados na busca.
 			</text>
 			<check_box label="Residentes" name="check other scripts"/>
 			<check_box label="Grupo" name="check group scripts"/>
-			<text name="land_options_label">
-				Opções do terreno:
-			</text>
 			<check_box label="Seguro (sem danos)" name="check safe" tool_tip="Se ativado, ajusta o terreno para Seguro, impedindo lutas com danos. Se não ativado, lutas com danos é habilitado."/>
 			<check_box label="Proibido empurrar" name="PushRestrictCheck" tool_tip="Evita scripts que empurram. Ativar essa opção ajuda a prevenir comportamentos desordeiros no seu terreno."/>
 			<check_box label="Mostrar terreno nos resultados de busca (L$30/semana)" name="ShowDirectoryCheck" tool_tip="Permitir que as pessoas vejam este terreno nos resultados de busca"/>
@@ -374,9 +373,9 @@ Apenas lotes maiores podem ser listados na busca.
 			</text>
 			<texture_picker label="" name="snapshot_ctrl" tool_tip="Clique para escolher uma imagem"/>
 			<text name="allow_label5">
-				Permitir que residentes de outros terrenos:
+				e bater papo com avatares neste lote
 			</text>
-			<check_box label="Ver avatares" name="SeeAvatarsCheck" tool_tip="Permite que residentes de outros terrenos vejam e conversem com os residentes deste terreno e vice-versa."/>
+			<check_box label="Ver avatares" name="SeeAvatarsCheck" tool_tip="Permite que os avatares em outros lotes vejam e batam papo com avatares neste lote. Você poderá vê-los e conversar com eles."/>
 			<text name="landing_point">
 				Ponto de Aterrissagem: [LANDING]
 			</text>
diff --git a/indra/newview/skins/default/xui/pt/floater_avatar.xml b/indra/newview/skins/default/xui/pt/floater_avatar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..168cdacae1ea4c586de670ec3503dbf6a703560f
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="ESCOLHA UM AVATAR"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml
index a737212b50c4d0815489e9c4782b074747a5966f..2845a29e1da5c19a03d6c295bc2f8da3c8d43b2d 100644
--- a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml
@@ -46,7 +46,7 @@
 		L$ [AMT]
 	</text>
 	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+		[http://www.secondlife.com/my/account/payment_method_management.php método de pagamento] | [http://www.secondlife.com/my/account/currency.php moeda]
 	</text>
 	<text name="exchange_rate_note">
 		Digite o valor novamente para ver o câmbio atual.
diff --git a/indra/newview/skins/default/xui/pt/floater_camera.xml b/indra/newview/skins/default/xui/pt/floater_camera.xml
index 4f3729c6231702ccdcd02f133468838076d31d6b..9cda01c187d1a0d318a93237ffbc4dc609f132be 100644
--- a/indra/newview/skins/default/xui/pt/floater_camera.xml
+++ b/indra/newview/skins/default/xui/pt/floater_camera.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
+<floater name="camera_floater" title="CONTROLES DA CÂMERA">
 	<floater.string name="rotate_tooltip">
 		Girar a Câmera ao redor do Foco
 	</floater.string>
@@ -9,15 +9,6 @@
 	<floater.string name="move_tooltip">
 		Mover a Câmera para Cima e para Baixo, para a Esquerda e para a Direita
 	</floater.string>
-	<floater.string name="camera_modes_title">
-		Modos de câmera
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		Pan zoom orbital
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		Ângulos predefinidos
-	</floater.string>
 	<floater.string name="free_mode_title">
 		Visualizar objeto
 	</floater.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
new file mode 100644
index 0000000000000000000000000000000000000000..72016c6b40627ace932c2d865fd552350187ce6f
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" 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"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_destinations.xml b/indra/newview/skins/default/xui/pt/floater_destinations.xml
new file mode 100644
index 0000000000000000000000000000000000000000..df18698d2fdf72b24538012fd39076e96204eeeb
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="DESTINOS"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_fast_timers.xml b/indra/newview/skins/default/xui/pt/floater_fast_timers.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eeb39583efcb84bc612d653da49fcfc3bbf60f2f
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+	<string name="pause">
+		Pausa
+	</string>
+	<string name="run">
+		Correr
+	</string>
+	<button label="Pausa" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml b/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml
index 8c95a3b5482e6302a2000dea0a26f9951a5c81de..1bc2bce76856766925cae3862232ff10eda78943 100644
--- a/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml
+++ b/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml
@@ -4,7 +4,7 @@
 		Filtragem:
 	</text>
 	<check_box label="Filtragem Anisotrópica (mais lento quando habilitada)" name="ani"/>
-	<text name="Antialiasing:">
+	<text name="antialiasing label">
 		Suavização:
 	</text>
 	<combo_box label="Suavização" name="fsaa" width="94">
diff --git a/indra/newview/skins/default/xui/pt/floater_how_to.xml b/indra/newview/skins/default/xui/pt/floater_how_to.xml
new file mode 100644
index 0000000000000000000000000000000000000000..15c4946cb036486f519c4fcd30667445a45e2d02
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="COMO"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_map.xml b/indra/newview/skins/default/xui/pt/floater_map.xml
index faf9c7c1704599cb622edd107747c0a51db7a836..8233f2a43f3e8dd6466ba5cf335e185393dbc295 100644
--- a/indra/newview/skins/default/xui/pt/floater_map.xml
+++ b/indra/newview/skins/default/xui/pt/floater_map.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Map" title="">
+<floater name="Map" title="MINI MAPA">
 	<floater.string name="ToolTipMsg">
 		[REGION](Clique duas vezes para abrir o mapa, shift+arraste para a visão pan)
 	</floater.string>
@@ -7,7 +7,7 @@
 		[REGION](Clique duas vezes para teletransportar, shift+arraste para a visão pan)
 	</floater.string>
 	<floater.string name="mini_map_caption">
-		MINIMAPA
+		Mini Mapa
 	</floater.string>
 	<text label="N" name="floater_map_north" text="N">
 		N
diff --git a/indra/newview/skins/default/xui/pt/floater_model_preview.xml b/indra/newview/skins/default/xui/pt/floater_model_preview.xml
index 4a537fafb1aa07511dae4f8d256586877a78954c..89605008313663e229ac6554b080686ac6b9cda3 100644
--- a/indra/newview/skins/default/xui/pt/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/pt/floater_model_preview.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Model Preview" title="Carregar modelo">
-	<string name="status_idle">
-		Inativo
-	</string>
+<floater name="Model Preview" title="CARREGAR MODELO">
+	<string name="status_idle"/>
 	<string name="status_parse_error">
-		Dae parsing - erro, detalhes no log.
+		Erro: Problema ao analisar .dae - consulte log para obter detalhes.
+	</string>
+	<string name="status_material_mismatch">
+		Erro: o material do modelo não é um subconjunto do modelo de referência.
 	</string>
 	<string name="status_reading_file">
 		Carregando...
@@ -51,6 +52,9 @@
 	<string name="mesh_status_missing_lod">
 		Falta o nível de detalhamento necessário.
 	</string>
+	<string name="mesh_status_invalid_material_list">
+		Materiais LOD não são um subconjunto de modelo de referência.
+	</string>
 	<string name="layer_all">
 		Tudo
 	</string>
@@ -63,188 +67,211 @@
 	<string name="tbd">
 		A ser definido
 	</string>
-	<text name="name_label">
-		Nome:
-	</text>
-	<text name="lod_label">
-		Visualizar
-	</text>
-	<combo_box name="preview_lod_combo" tool_tip="LOD para ver no renderizador de pré-visualização">
-		<combo_item name="high">
-			Nível de detalhamento: Alto
-		</combo_item>
-		<combo_item name="medium">
-			Nível de detalhamento: Média
-		</combo_item>
-		<combo_item name="low">
-			Nível de detalhamento: Baixo
-		</combo_item>
-		<combo_item name="lowest">
-			Nível de detalhamento: Mais baixo
-		</combo_item>
-	</combo_box>
-	<text name="warning_title">
-		AVISO:
-	</text>
-	<text name="warning_message">
-		Não será possível concluir o upload final desse modelo para os servidores do Second Life. [[VURL] Saiba como] ativar o upload de modelos mesh.
-	</text>
-	<text name="weights_text">
-		Download:
-Físico:
-Servidor:
-
-Equivalente em prims:
-	</text>
-	<text name="weights">
-		[ST]
-[PH]
-[SIM]
-
-[EQ]
-	</text>
-	<tab_container name="import_tab">
-		<panel label="Nível de detalhamento:" name="lod_panel">
-			<text name="lod_table_header">
-				Selecione o nível de detalhamento:
-			</text>
-			<text name="high_label" value="Alto"/>
-			<text name="high_triangles" value="0"/>
-			<text name="high_vertices" value="0"/>
-			<text name="medium_label" value="Médio"/>
-			<text name="medium_triangles" value="0"/>
-			<text name="medium_vertices" value="0"/>
-			<text name="low_label" value="Baixo"/>
-			<text name="low_triangles" value="0"/>
-			<text name="low_vertices" value="0"/>
-			<text name="lowest_label" value="Mais baixo"/>
-			<text name="lowest_triangles" value="0"/>
-			<text name="lowest_vertices" value="0"/>
-			<text name="lod_table_footer">
-				Nível de detalhamento: [DETAIL]
-			</text>
-			<radio_group name="lod_file_or_limit" value="lod_from_file">
-				<radio_item label="Carregar de arquivo" name="lod_from_file"/>
-				<radio_item label="Gerar automaticamente" name="lod_auto_generate"/>
-				<radio_item label="Nenhum" name="lod_none"/>
-			</radio_group>
-			<button label="Procurar..." name="lod_browse"/>
-			<combo_box name="lod_mode">
-				<combo_item name="triangle_limit">
-					Limite de triângulo
-				</combo_item>
-				<combo_item name="error_threshold">
-					Limite de erro
-				</combo_item>
-			</combo_box>
-			<text name="build_operator_text">
-				Operador de construção:
-			</text>
-			<text name="queue_mode_text">
-				Modo de fila:
-			</text>
-			<combo_box name="build_operator">
-				<combo_item name="edge_collapse">
-					Queda na borda
-				</combo_item>
-				<combo_item name="half_edge_collapse">
-					Meia queda na borda
-				</combo_item>
-			</combo_box>
-			<combo_box name="queue_mode">
-				<combo_item name="greedy">
-					Egoísta
-				</combo_item>
-				<combo_item name="lazy">
-					Preguiçoso
-				</combo_item>
-				<combo_item name="independent">
-					Independente
-				</combo_item>
-			</combo_box>
-			<text name="border_mode_text">
-				Modo da borda:
+	<panel name="left_panel">
+		<panel name="model_name_representation_panel">
+			<text name="name_label">
+				Nome do modelo:
 			</text>
-			<text name="share_tolderance_text">
-				Tolerância com compartilhamento:
+			<text name="model_category_label">
+				Esse modelo representa...
 			</text>
-			<combo_box name="border_mode">
-				<combo_item name="border_unlock">
-					Desbloquear
-				</combo_item>
-				<combo_item name="border_lock">
-					Bloquear
-				</combo_item>
+			<combo_box name="model_category_combo">
+				<combo_item label="Escolher uma..." name="Choose one"/>
+				<combo_item label="Forma do avatar" name="Avatar shape"/>
+				<combo_item label="Anexo de avatar" name="Avatar attachment"/>
+				<combo_item label="Objeto em movimento (veículo, animal)" name="Moving object (vehicle, animal)"/>
+				<combo_item label="Material de construção" name="Building Component"/>
+				<combo_item label="Grande, sem movimentação etc" name="Large, non moving etc"/>
+				<combo_item label="Menor, sem movimentação etc" name="Smaller, non-moving etc"/>
+				<combo_item label="Nenhuma dessas, na verdade" name="Not really any of these"/>
 			</combo_box>
-			<text name="crease_label">
-				Ângulo da dobra:
-			</text>
-			<spinner name="crease_angle" value="75"/>
 		</panel>
-		<panel label="Física" name="physics_panel">
-			<panel name="physics geometry">
-				<radio_group name="physics_load_radio" value="physics_load_from_file">
-					<radio_item label="Arquivo:" name="physics_load_from_file"/>
-					<radio_item label="Nível de detalhamento:" name="physics_use_lod"/>
-				</radio_group>
-				<combo_box name="physics_lod_combo" tool_tip="LOD para forma física">
-					<combo_item name="physics_lowest">
-						Mais baixo
-					</combo_item>
-					<combo_item name="physics_low">
-						Baixo
-					</combo_item>
-					<combo_item name="physics_medium">
-						Médio
-					</combo_item>
-					<combo_item name="physics_high">
-						Alto
-					</combo_item>
-				</combo_box>
-				<button label="Procurar..." name="physics_browse"/>
-			</panel>
-			<panel name="physics analysis">
-				<slider label="Alisar:" name="Smooth"/>
-				<check_box label="Tapar buracos (lento)" name="Close Holes (Slow)"/>
-				<button label="Analisar" name="Decompose"/>
-				<button label="Cancelar" name="decompose_cancel"/>
+		<tab_container name="import_tab">
+			<panel label="Nível de detalhe" name="lod_panel" title="Nível de detalhe">
+				<text initial_value="Origem" name="source" value="Origem"/>
+				<text initial_value="Triângulos" name="triangles" value="Triângulos"/>
+				<text initial_value="Vértices" name="vertices" value="Vértices"/>
+				<text initial_value="Alto" name="high_label" value="Alto"/>
+				<button label="Procurar..." name="lod_browse_high"/>
+				<text initial_value="0" name="high_triangles" value="0"/>
+				<text initial_value="0" name="high_vertices" value="0"/>
+				<text initial_value="Médio" name="medium_label" value="Médio"/>
+				<button label="Procurar..." name="lod_browse_medium"/>
+				<text initial_value="0" name="medium_triangles" value="0"/>
+				<text initial_value="0" name="medium_vertices" value="0"/>
+				<text initial_value="Baixo" name="low_label" value="Baixo"/>
+				<button label="Procurar..." name="lod_browse_low"/>
+				<text initial_value="0" name="low_triangles" value="0"/>
+				<text initial_value="0" name="low_vertices" value="0"/>
+				<text initial_value="Mais baixo" name="lowest_label" value="Mais baixo"/>
+				<button label="Procurar..." name="lod_browse_lowest"/>
+				<text initial_value="0" name="lowest_triangles" value="0"/>
+				<text initial_value="0" name="lowest_vertices" value="0"/>
+				<check_box label="Gerar normais" name="gen_normals"/>
+				<text initial_value="Ângulo de dobra:" name="crease_label" value="Ângulo de dobra:"/>
+				<spinner name="crease_angle" value="75"/>
 			</panel>
-			<panel name="physics simplification">
-				<slider label="Demãos:" name="Combine Quality"/>
-				<slider label="Escala do detalhamento:" name="Detail Scale"/>
-				<slider label="Manter:" name="Retain%"/>
-				<button label="Simplificar" name="Simplify"/>
-				<button label="Cancelar" name="simplify_cancel"/>
+			<panel label="Físico" name="physics_panel">
+				<panel name="physics geometry">
+					<text name="first_step_name">
+						Etapa 1: Nível de detalhe
+					</text>
+					<combo_box name="physics_lod_combo" tool_tip="LOD a ser usada para forma física">
+						<combo_item name="choose_one">
+							Escolher uma...
+						</combo_item>
+						<combo_item name="physics_high">
+							Alto
+						</combo_item>
+						<combo_item name="physics_medium">
+							Médio
+						</combo_item>
+						<combo_item name="physics_low">
+							Baixo
+						</combo_item>
+						<combo_item name="physics_lowest">
+							Mais baixo
+						</combo_item>
+						<combo_item name="load_from_file">
+							Do arquivo
+						</combo_item>
+					</combo_box>
+					<button label="Procurar..." name="physics_browse"/>
+				</panel>
+				<panel name="physics analysis">
+					<text name="method_label">
+						Etapa 2: Analisar
+					</text>
+					<text name="analysis_method_label">
+						Método:
+					</text>
+					<text name="quality_label">
+						Qualidade:
+					</text>
+					<text name="smooth_method_label">
+						Liso:
+					</text>
+					<check_box label="Fechar orifícios" name="Close Holes (Slow)"/>
+					<button label="Analisar" name="Decompose"/>
+					<button label="Cancelar" name="decompose_cancel"/>
+				</panel>
+				<panel name="physics simplification">
+					<text name="second_step_label">
+						Etapa 3: Simplificar
+					</text>
+					<text name="simp_method_header">
+						Método:
+					</text>
+					<text name="pass_method_header">
+						Passes:
+					</text>
+					<text name="Detail Scale label">
+						Escala de detalhes:
+					</text>
+					<text name="Retain%_label">
+						Reter:
+					</text>
+					<combo_box name="Combine Quality" value="1"/>
+					<button label="Simplificar" name="Simplify"/>
+					<button label="Cancelar" name="simplify_cancel"/>
+				</panel>
+				<panel name="physics info">
+					<text name="results_text">
+						Resultados:
+					</text>
+					<text name="physics_triangles">
+						Triângulos: [TRIANGLES],
+					</text>
+					<text name="physics_points">
+						Vértices: [POINTS],
+					</text>
+					<text name="physics_hulls">
+						Corpos: [HULLS]
+					</text>
+				</panel>
 			</panel>
-			<panel name="physics info">
-				<slider label="Visualizar:" name="physics_explode"/>
-				<text name="physics_triangles">
-					Triângulos: [TRIANGLES]
+			<panel label="Carregar opções" name="modifiers_panel">
+				<text name="scale_label">
+					Escala (1=sem escala):
 				</text>
-				<text name="physics_points">
-					Vértices: [POINTS]
+				<spinner name="import_scale" value="1.0"/>
+				<text name="dimensions_label">
+					Dimensões:
 				</text>
-				<text name="physics_hulls">
-					Hulls: [HULLS]
+				<text name="import_dimensions">
+					[X] X [Y] X [Z]
 				</text>
+				<check_box label="Incluir texturas" name="upload_textures"/>
+				<text name="include_label">
+					Somente para modelos de avatar:
+				</text>
+				<check_box label="Incluir peso da pele" name="upload_skin"/>
+				<check_box label="Incluir posições de junções" name="upload_joints"/>
+				<text name="pelvis_offset_label">
+					Desvio Z (subir ou baixar avatar):
+				</text>
+				<spinner name="pelvis_offset" value="0.0"/>
 			</panel>
-		</panel>
-		<panel label="Modificadores" name="modifiers_panel">
-			<spinner name="import_scale" value="1.0"/>
-			<text name="import_dimensions">
-				[X] x [Y] x [Z] m
+		</tab_container>
+		<panel name="weights_and_warning_panel">
+			<button label="Calcular pesos e tarifa" name="calculate_btn" tool_tip="Calcular pesos e tarifa"/>
+			<button label="Cancelar" name="cancel_btn"/>
+			<button label="Upload" name="ok_btn" tool_tip="Carregar no simulador"/>
+			<button label="Limpar configurações e redefinir formulário" name="reset_btn"/>
+			<text name="upload_fee">
+				Tarifa de upload: L$ [FEE]
+			</text>
+			<text name="prim_weight">
+				Impacto no terreno: [EQ]
+			</text>
+			<text name="download_weight">
+				Download: [ST]
+			</text>
+			<text name="physics_weight">
+				Físico: [PH]
+			</text>
+			<text name="server_weight">
+				Servidor: [SIM]
+			</text>
+			<text name="warning_title">
+				NOTA:
+			</text>
+			<text name="warning_message">
+				Você não tem direito para fazer upload de modelos mesh. [[VURL] Saiba como] obter certificado.
+			</text>
+			<text name="status">
+				[STATUS]
 			</text>
-			<check_box label="Texturas" name="upload_textures"/>
-			<check_box label="Peso da pele" name="upload_skin"/>
-			<check_box label="Posição das juntas" name="upload_joints"/>
-			<spinner name="pelvis_offset" value="0.0"/>
 		</panel>
-	</tab_container>
-	<text name="upload_fee">
-		Tarifa de upload: L$ [FEE]
+	</panel>
+	<text name="lod_label">
+		Visualizar
 	</text>
-	<button label="Definir como padrão" name="reset_btn" tool_tip="Definir como padrão"/>
-	<button label="Calcular pesos e tarifa" name="calculate_btn" tool_tip="Calcular pesos e tarifa"/>
-	<button label="Upload" name="ok_btn" tool_tip="Carregar no simulador"/>
-	<button label="Cancelar" name="cancel_btn"/>
+	<panel name="right_panel">
+		<combo_box name="preview_lod_combo" tool_tip="LOD para exibir na renderização de visualização">
+			<combo_item name="high">
+				Alto
+			</combo_item>
+			<combo_item name="medium">
+				Médio
+			</combo_item>
+			<combo_item name="low">
+				Baixo
+			</combo_item>
+			<combo_item name="lowest">
+				Mais baixo
+			</combo_item>
+		</combo_box>
+		<text name="label_display">
+			Visualização...
+		</text>
+		<check_box label="Limites" name="show_edges"/>
+		<check_box label="Físico" name="show_physics"/>
+		<check_box label="Texturas" name="show_textures"/>
+		<check_box label="Pesos de pele" name="show_skin_weight"/>
+		<check_box label="Junções" name="show_joint_positions"/>
+		<text name="physics_explode_label">
+			Visualizar extensão:
+		</text>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_model_wizard.xml b/indra/newview/skins/default/xui/pt/floater_model_wizard.xml
index a67a66a446fae074cef51dbd58544f785fe286ae..498058f93372db6e48f6f7df02d4eae0fd924a0f 100644
--- a/indra/newview/skins/default/xui/pt/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/pt/floater_model_wizard.xml
@@ -6,26 +6,23 @@
 	<button label="2. Otimizar" name="optimize_btn"/>
 	<button label="1. Selecionra arquivo" name="choose_file_btn"/>
 	<panel name="choose_file_panel">
-		<panel name="choose_file_header_panel">
-			<text name="choose_file_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Escolher arquivo de modelo
 			</text>
 		</panel>
-		<panel name="choose_file_content_panel">
+		<panel name="content">
 			<text name="advanced_users_text">
 				Usuários avançados: se você estiver familiarizado com ferramentas de criação de conteúdo 3D, use o Advanced Uploader.
 			</text>
 			<button label="Trocar para avançado" name="switch_to_advanced"/>
-			<text name="choose_model_file_label">
+			<text name="Cache location">
 				Escolha o arquivo de modelo para upload
 			</text>
 			<button label="Procurar..." label_selected="Procurar..." name="browse"/>
-			<text name="support_collada_text">
+			<text name="Model types">
 				O Second Life oferece suporte a arquivos COLLADA (.dae)
 			</text>
-			<text name="dimensions_label">
-				Dimensões (metros):
-			</text>
 			<text name="dimensions">
 				X         Y         Z
 			</text>
@@ -38,18 +35,15 @@
 		</panel>
 	</panel>
 	<panel name="optimize_panel">
-		<panel name="optimize_header_panel">
-			<text name="optimize_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Otimizar modelo
 			</text>
 		</panel>
-		<text name="optimize_hint">
+		<text name="description">
 			O modelo foi ajustado para desempenho. Faça novos ajustes, se desejar.
 		</text>
-		<panel name="optimize_content_panel">
-			<text name="generating_lod_label">
-				Gerar nível de detalhes
-			</text>
+		<panel name="content">
 			<text name="high_detail_text">
 				Gerar nível de detalhes: Alto
 			</text>
@@ -64,123 +58,64 @@
 			</text>
 		</panel>
 		<panel name="content2">
-			<text name="optimize_performance_text">
-				Desempenho
-			</text>
-			<text name="optimize_faster_rendering_text">
-				Renderização mais rápida
-Menos detalhes
-Peso menor do prim
-			</text>
-			<text name="optimize_accuracy_text">
-				Precisão
-			</text>
-			<text name="optimize_slower_rendering_text">
-				Renderização mais lenta
-Mais detalhes
-Peso maior do prim
-			</text>
-			<text name="accuracy_slider_mark1">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark2">
-				&apos;
-			</text>
-			<text name="accuracy_slider_mark3">
-				&apos;
-			</text>
 			<button label="Recalcular geometria" name="recalculate_geometry_btn"/>
-			<text name="geometry_preview_label">
+			<text name="lod_label">
 				Visualização da geometria
 			</text>
 			<combo_box name="preview_lod_combo" tool_tip="LOD para exibir na renderização de visualização">
-				<combo_item name="preview_lod_high">
+				<combo_item name="high">
 					Máximo de detalhes
 				</combo_item>
-				<combo_item name="preview_lod_medium">
+				<combo_item name="medium">
 					Detalhes médios
 				</combo_item>
-				<combo_item name="preview_lod_low">
+				<combo_item name="low">
 					Poucos detalhes
 				</combo_item>
-				<combo_item name="preview_lod_lowest">
+				<combo_item name="lowest">
 					Mínimo de detalhes
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="physics_panel">
-		<panel name="physics_header_panel">
-			<text name="physics_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Ajustar físico
 			</text>
 		</panel>
-		<text name="physics_hint">
+		<text name="description">
 			Criaremos uma forma para o corpo externo do modelo. Ajuste o nível de detalhes como necessário para a finalidade desejada de seu modelo.
 		</text>
-		<panel name="physics_content_panel">
-			<text name="physics_performance_text">
-				Desempenho
-			</text>
-			<text name="physics_faster_rendering_text">
-				Renderização mais rápida
-Menos detalhes
-Peso menor do prim
-			</text>
-			<text name="physics_accuracy_text">
-				Precisão
-			</text>
-			<text name="physics_slower_dendering_text">
-				Renderização mais lenta
-Mais detalhes
-Peso maior do prim
-			</text>
-			<text name="physics_example_1">
-				Exemplos:
-Objetos em movimento
-Objetos voadores
-Veículos
-			</text>
-			<text name="physics_example_2">
-				Exemplos:
-Objetos estáticos pequenos
-Objetos menos detalhados
-Mobília simples
-			</text>
-			<text name="physics_example_3">
-				Exemplos:
-Objetos estáticos
-Objetos detalhados
-Construções
-			</text>
+		<panel name="content">
 			<button label="Recalcular físico" name="recalculate_physics_btn"/>
 			<button label="Recalculando..." name="recalculating_physics_btn"/>
-			<text name="physics_preview_label">
+			<text name="lod_label">
 				Visualização do físico
 			</text>
 			<combo_box name="preview_lod_combo2" tool_tip="LOD para exibir na renderização de visualização">
-				<combo_item name="preview_lod2_high">
+				<combo_item name="high">
 					Máximo de detalhes
 				</combo_item>
-				<combo_item name="preview_lod2_medium">
+				<combo_item name="medium">
 					Detalhes médios
 				</combo_item>
-				<combo_item name="preview_lod2_low">
+				<combo_item name="low">
 					Poucos detalhes
 				</combo_item>
-				<combo_item name="preview_lod2_lowest">
+				<combo_item name="lowest">
 					Mínimo de detalhes
 				</combo_item>
 			</combo_box>
 		</panel>
 	</panel>
 	<panel name="review_panel">
-		<panel name="review_header_panel">
-			<text name="review_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Revisar
 			</text>
 		</panel>
-		<panel name="review_content_panel">
+		<panel name="content">
 			<text name="review_prim_equiv">
 				Impacto no lote/região: [EQUIV] equivalentes de prim
 			</text>
@@ -193,8 +128,8 @@ Construções
 		</panel>
 	</panel>
 	<panel name="upload_panel">
-		<panel name="upload_header_panel">
-			<text name="upload_header_text">
+		<panel name="header_panel">
+			<text name="header_text">
 				Upload concluído
 			</text>
 		</panel>
diff --git a/indra/newview/skins/default/xui/pt/floater_moveview.xml b/indra/newview/skins/default/xui/pt/floater_moveview.xml
index b1dc65e3af00ba655c5fcab5d6815a9379e94e12..728357a400fd18083ade4587bb4e22b2fa08876c 100644
--- a/indra/newview/skins/default/xui/pt/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/pt/floater_moveview.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="move_floater">
+<floater name="move_floater" title="ANDAR/CORRER/VOAR">
 	<string name="walk_forward_tooltip">
 		Andar para frente (flecha para cima ou W)
 	</string>
@@ -58,14 +58,14 @@
 		Voar
 	</string>
 	<panel name="panel_actions">
-		<button label="" label_selected="" name="move up btn" tool_tip="Voar para cima (tecla E)"/>
 		<button label="" label_selected="" name="turn left btn" tool_tip="Virar à esquerda (flecha ESQ ou A)"/>
 		<joystick_slide name="move left btn" tool_tip="Andar para a esquerda (Shift + Seta esquerda ou A)"/>
-		<button label="" label_selected="" name="move down btn" tool_tip="Voar para baixo (tecla C)"/>
 		<button label="" label_selected="" name="turn right btn" tool_tip="Virar à direita (flecha DIR ou D)"/>
 		<joystick_slide name="move right btn" tool_tip="Andar para a direita (Shift + Seta direita ou D)"/>
 		<joystick_turn name="forward btn" tool_tip="Andar para frente (flecha para cima ou W)"/>
 		<joystick_turn name="backward btn" tool_tip="Andar para trás (flecha para baixo ou S)"/>
+		<button label="" label_selected="" name="move up btn" tool_tip="Voar para cima (tecla E)"/>
+		<button label="" label_selected="" name="move down btn" tool_tip="Voar para baixo (tecla C)"/>
 	</panel>
 	<panel name="panel_modes">
 		<button label="" name="mode_walk_btn" tool_tip="Modo caminhar"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_my_appearance.xml b/indra/newview/skins/default/xui/pt/floater_my_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..38e06d2aed2bbaa3e4dd0a91672e20a24e500d17
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="APARÊNCIA">
+	<panel label="Editar aparência" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_my_inventory.xml b/indra/newview/skins/default/xui/pt/floater_my_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..71d8682758542d2db2e64c342a93b4ac856cb043
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="INVENTÁRIO"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml b/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml
index 60edfa505fe43df2dc76ab4db7e4daf5e66d526d..653861f7d80e48c63c35bb1c94e5ea633ee3319f 100644
--- a/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="nearby_chat" title="Bate-papo local">
-	<check_box label="Traduzir bate-papo (via Google)" name="translate_chat_checkbox"/>
+	<check_box label="Traduzir bate-papo" name="translate_chat_checkbox"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_object_weights.xml b/indra/newview/skins/default/xui/pt/floater_object_weights.xml
new file mode 100644
index 0000000000000000000000000000000000000000..45bd1c712745ecac69b6533db09703195eca6105
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="AVANÇADO">
+	<floater.string name="nothing_selected" value="--"/>
+	<text name="selected_text" value="SELECIONADO"/>
+	<text name="objects" value="--"/>
+	<text name="objects_label" value="Objetos"/>
+	<text name="prims" value="--"/>
+	<text name="prims_label" value="Prims"/>
+	<text name="weights_of_selected_text" value="PESOS DOS SELECIONADOS"/>
+	<text name="download" value="--"/>
+	<text name="download_label" value="Baixar"/>
+	<text name="physics" value="--"/>
+	<text name="physics_label" value="Físico"/>
+	<text name="server" value="--"/>
+	<text name="server_label" value="Servidor"/>
+	<text name="display" value="--"/>
+	<text name="display_label" value="Visualização"/>
+	<text name="land_impacts_text" value="IMPACTOS NO TERRENO"/>
+	<text name="selected" value="--"/>
+	<text name="selected_label" value="Selecionado"/>
+	<text name="rezzed_on_land" value="--"/>
+	<text name="rezzed_on_land_label" value="Resolução no terreno"/>
+	<text name="remaining_capacity" value="--"/>
+	<text name="remaining_capacity_label" value="Capacidade restante"/>
+	<text name="total_capacity" value="--"/>
+	<text name="total_capacity_label" value="Capacidade total"/>
+	<text name="help_SLURL" value="[secondlife:///app/help/object_weights What is all this?...]"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..60d4d3dc5c3bd40cda896e0b3fd28e6ae59b7d1a
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_outfit_save_as.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container" title="SALVAR LOOK"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_people.xml b/indra/newview/skins/default/xui/pt/floater_people.xml
new file mode 100644
index 0000000000000000000000000000000000000000..10a516ee361a2de43bba93846711b8530868659b
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="PESSOAS">
+	<panel_container name="main_panel">
+		<panel label="Perfil do grupo" name="panel_group_info_sidetray"/>
+		<panel label="Residentes e objetos bloqueados" name="panel_block_list_sidetray"/>
+	</panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_picks.xml b/indra/newview/skins/default/xui/pt/floater_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9766196319af3430471de50b0057d697b4d6de14
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Destaques"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_places.xml b/indra/newview/skins/default/xui/pt/floater_places.xml
new file mode 100644
index 0000000000000000000000000000000000000000..12c6548205fb3a2bb018095f55c9502ca05dd2b7
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="LUGARES">
+	<panel label="Lugares" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_snapshot.xml b/indra/newview/skins/default/xui/pt/floater_snapshot.xml
index d62fe3dd20ae1f3866d4448a3f19ab3b1da04a5b..4110e690686ea8185f31f255f02bd944034ca8bb 100644
--- a/indra/newview/skins/default/xui/pt/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/pt/floater_snapshot.xml
@@ -3,73 +3,63 @@
 	<floater.string name="unknown">
 		desconhecido
 	</floater.string>
-	<radio_group label="Tipo de foto" name="snapshot_type_radio">
-		<radio_item label="Email" name="postcard"/>
-		<radio_item label="Meu inventário (L$[AMOUNT])" name="texture"/>
-		<radio_item label="Salvar no meu PC" name="local"/>
-	</radio_group>
+	<string name="postcard_progress_str">
+		Enviando e-mail
+	</string>
+	<string name="profile_progress_str">
+		Postando
+	</string>
+	<string name="inventory_progress_str">
+		Salvando no inventário
+	</string>
+	<string name="local_progress_str">
+		Salvo no computador
+	</string>
+	<string name="profile_succeeded_str">
+		Imagem carregada
+	</string>
+	<string name="postcard_succeeded_str">
+		E-mail enviado!
+	</string>
+	<string name="inventory_succeeded_str">
+		Salvo no inventário!
+	</string>
+	<string name="local_succeeded_str">
+		Salvo no computador!
+	</string>
+	<string name="profile_failed_str">
+		Falha ao carregar a imagem no feed do seu perfil.
+	</string>
+	<string name="postcard_failed_str">
+		Falha ao enviar e-mail.
+	</string>
+	<string name="inventory_failed_str">
+		Falha ao salvar no inventário.
+	</string>
+	<string name="local_failed_str">
+		Falha ao salvar no computador.
+	</string>
+	<button name="advanced_options_btn" tool_tip="Opções avançadas"/>
+	<text name="image_res_text">
+		[WIDTH] x [HEIGHT] px
+	</text>
 	<text name="file_size_label">
 		[TAMANHO] KB
 	</text>
-	<button label="Atualizar a foto" name="new_snapshot_btn"/>
-	<button label="Enviar" name="send_btn"/>
-	<button label="Economize (L$[AMOUNT])" name="upload_btn"/>
-	<flyout_button label="Salvar" name="save_btn" tool_tip="Salvar imagem em um arquivo">
-		<flyout_button.item label="Salvar" name="save_item"/>
-		<flyout_button.item label="Salvar como..." name="saveas_item"/>
-	</flyout_button>
-	<button label="Mais" name="more_btn" tool_tip="Opções avançadas"/>
-	<button label="Menos" name="less_btn" tool_tip="Opções avançadas"/>
-	<button label="Cancelar" name="discard_btn"/>
-	<text name="type_label2">
-		Tamanho
-	</text>
-	<text name="format_label">
-		Formato
-	</text>
-	<combo_box label="Resolução" name="postcard_size_combo">
-		<combo_box.item label="Janela atual" name="CurrentWindow"/>
-		<combo_box.item label="640x480" name="640x480"/>
-		<combo_box.item label="800x600" name="800x600"/>
-		<combo_box.item label="1024x768" name="1024x768"/>
-		<combo_box.item label="Customizado" name="Custom"/>
-	</combo_box>
-	<combo_box label="Resolução" name="texture_size_combo">
-		<combo_box.item label="Janela atual" name="CurrentWindow"/>
-		<combo_box.item label="Pequeno (128x128)" name="Small(128x128)"/>
-		<combo_box.item label="Médio (256x256)" name="Medium(256x256)"/>
-		<combo_box.item label="Grande (512x512)" name="Large(512x512)"/>
-		<combo_box.item label="Customizado" name="Custom"/>
-	</combo_box>
-	<combo_box label="Resolução" name="local_size_combo">
-		<combo_box.item label="Janela atual" name="CurrentWindow"/>
-		<combo_box.item label="320x240" name="320x240"/>
-		<combo_box.item label="640x480" name="640x480"/>
-		<combo_box.item label="800x600" name="800x600"/>
-		<combo_box.item label="1024x768" name="1024x768"/>
-		<combo_box.item label="1280x1024" name="1280x1024"/>
-		<combo_box.item label="1600x1200" name="1600x1200"/>
-		<combo_box.item label="Customizado" name="Custom"/>
-	</combo_box>
-	<combo_box label="Formato" name="local_format_combo">
-		<combo_box.item label="PNG" name="PNG"/>
-		<combo_box.item label="JPEG" name="JPEG"/>
-		<combo_box.item label="BMP" name="BMP"/>
-	</combo_box>
-	<spinner label="Largura" name="snapshot_width"/>
-	<spinner label="Altura" name="snapshot_height"/>
-	<check_box label="Limitar proproções" name="keep_aspect_check"/>
-	<slider label="Qualidade da imagem" name="image_quality_slider"/>
-	<text name="layer_type_label">
-		Capturar:
-	</text>
-	<combo_box label="Camadas da imagem" name="layer_types">
-		<combo_box.item label="Cores" name="Colors"/>
-		<combo_box.item label="Profundidade" name="Depth"/>
-	</combo_box>
-	<check_box label="Interface" name="ui_check"/>
-	<check_box label="HUDs" name="hud_check"/>
-	<check_box label="Deixar aberto depois de salvo" name="keep_open_check"/>
-	<check_box label="Gerar quadro (tela inteira)" name="freeze_frame_check"/>
-	<check_box label="Atualizar" name="auto_snapshot_check"/>
+	<panel name="advanced_options_panel">
+		<text name="advanced_options_label">
+			OPÇÕES AVANÇADAS
+		</text>
+		<text name="layer_type_label">
+			Capturar:
+		</text>
+		<combo_box label="Camadas da imagem" name="layer_types">
+			<combo_box.item label="Cores" name="Colors"/>
+			<combo_box.item label="Profundidade" name="Depth"/>
+		</combo_box>
+		<check_box label="Interface" name="ui_check"/>
+		<check_box label="HUDs" name="hud_check"/>
+		<check_box label="Gerar quadro (tela inteira)" name="freeze_frame_check"/>
+		<check_box label="Atualização automática" name="auto_snapshot_check"/>
+	</panel>
 </floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_sound_devices.xml b/indra/newview/skins/default/xui/pt/floater_sound_devices.xml
index 0e6d923778dc33effb74808a7ea6e7232ebcf744..948d727540438a240baed6a0bb0ff6e1254cbd0a 100644
--- a/indra/newview/skins/default/xui/pt/floater_sound_devices.xml
+++ b/indra/newview/skins/default/xui/pt/floater_sound_devices.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_sound_devices" title="Dispositivos de áudio">
+<floater name="floater_sound_devices" title="DISPOSITIVOS DE SOM">
 	<text name="voice_label">
 		Bate-papo de voz
 	</text>
diff --git a/indra/newview/skins/default/xui/pt/floater_stats.xml b/indra/newview/skins/default/xui/pt/floater_stats.xml
index 11589b31b60f74f32e8eac648cb11c06c7f65c6f..f0a053ebe3ed0c61514b989257f670f2cc9b9e24 100644
--- a/indra/newview/skins/default/xui/pt/floater_stats.xml
+++ b/indra/newview/skins/default/xui/pt/floater_stats.xml
@@ -10,8 +10,8 @@
 			</stat_view>
 			<stat_view label="Avançado" name="advanced">
 				<stat_view label="Render" name="render">
-					<stat_bar label="KTris Drawn" name="ktrisframe"/>
-					<stat_bar label="KTris Drawn" name="ktrissec"/>
+					<stat_bar label="KTris desenhados por quadro" name="ktrisframe"/>
+					<stat_bar label="KTris desenhados por segundo" name="ktrissec"/>
 					<stat_bar label="Total Objects" name="objs"/>
 					<stat_bar label="New Objects" name="newobjs"/>
 				</stat_view>
@@ -32,7 +32,7 @@
 					<stat_bar label="Layers" name="layerskbitstat"/>
 					<stat_bar label="Actual In" name="actualinkbitstat"/>
 					<stat_bar label="Actual Out" name="actualoutkbitstat"/>
-					<stat_bar label="VFS Pending Ops" name="vfspendingoperations"/>
+					<stat_bar label="Operações pendentes do VFS" name="vfspendingoperations"/>
 				</stat_view>
 			</stat_view>
 			<stat_view label="Simulator" name="sim">
@@ -43,18 +43,6 @@
 					<stat_bar label="Pinned Objects" name="physicspinnedtasks"/>
 					<stat_bar label="Low LOD Objects" name="physicslodtasks"/>
 					<stat_bar label="Memory Allocated" name="physicsmemoryallocated"/>
-					<stat_bar label="Agent Updates/Sec" name="simagentups"/>
-					<stat_bar label="Main Agents" name="simmainagents"/>
-					<stat_bar label="Child Agents" name="simchildagents"/>
-					<stat_bar label="Objects" name="simobjects"/>
-					<stat_bar label="Active Objects" name="simactiveobjects"/>
-					<stat_bar label="Active Scripts" name="simactivescripts"/>
-					<stat_bar label="Script Events" name="simscripteps"/>
-					<stat_bar label="Packets In" name="siminpps"/>
-					<stat_bar label="Packets Out" name="simoutpps"/>
-					<stat_bar label="Pending Downloads" name="simpendingdownloads"/>
-					<stat_bar label="Pending Uploads" name="simpendinguploads"/>
-					<stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/>
 				</stat_view>
 				<stat_view label="Time (ms)" name="simperf">
 					<stat_bar label="Total Frame Time" name="simframemsec"/>
@@ -64,6 +52,14 @@
 					<stat_bar label="Agent Time" name="simagentmsec"/>
 					<stat_bar label="Images Time" name="simimagesmsec"/>
 					<stat_bar label="Script Time" name="simscriptmsec"/>
+					<stat_bar label="Tempo restante" name="simsparemsec"/>
+					<stat_view label="Detalhes de tempo (ms)" name="timedetails">
+						<stat_bar label="Etapa física" name="simsimphysicsstepmsec"/>
+						<stat_bar label="Atualizar formas físicas" name="simsimphysicsshapeupdatemsec"/>
+						<stat_bar label="Física - outros" name="simsimphysicsothermsec"/>
+						<stat_bar label="Tempo de espera" name="simsleepmsec"/>
+						<stat_bar label="Bombear ES" name="simpumpiomsec"/>
+					</stat_view>
 				</stat_view>
 			</stat_view>
 		</container_view>
diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml
index 6850bf2d7c56319d56c1678360c0dd8ab1c867b4..f35f31f5f7e067996887a72ec1865372a4287a02 100644
--- a/indra/newview/skins/default/xui/pt/floater_tools.xml
+++ b/indra/newview/skins/default/xui/pt/floater_tools.xml
@@ -25,10 +25,10 @@
 		Clicar e arrastar para selecionar a terra
 	</floater.string>
 	<floater.string name="status_selectcount">
-		[OBJ_COUNT] objetos ( [PRIM_COUNT] prims[PE_STRING] ) selecionados
+		[OBJ_COUNT] objetos selecionados, impacto no terreno [LAND_IMPACT]
 	</floater.string>
-	<floater.string name="status_selectprimequiv">
-		, [SEL_WEIGHT] equivalentes de prims
+	<floater.string name="status_remaining_capacity">
+		Capacidade restante [LAND_CAPACITY].
 	</floater.string>
 	<button label="" label_selected="" name="button focus" tool_tip="Foco"/>
 	<button label="" label_selected="" name="button move" tool_tip="Mover"/>
@@ -105,8 +105,8 @@
 	<text name="selection_empty">
 		Nada selecionado.
 	</text>
-	<text name="selection_weight">
-		Peso do físico [PHYS_WEIGHT], custo de renderização [DISP_WEIGHT].
+	<text name="remaining_capacity">
+		[CAPACITY_STRING] [secondlife:///app/openfloater/object_weights More info]
 	</text>
 	<tab_container name="Object Info Tabs" tab_max_width="60" tab_min_width="30" width="288">
 		<panel label="Comum" name="General">
@@ -319,7 +319,6 @@
 				Tipo costura
 			</text>
 			<combo_box name="sculpt type control">
-				<combo_box.item label="(nenhum)" name="None"/>
 				<combo_box.item label="Esfera" name="Sphere"/>
 				<combo_box.item label="Toróide" name="Torus"/>
 				<combo_box.item label="Plano" name="Plane"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_toybox.xml b/indra/newview/skins/default/xui/pt/floater_toybox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3677c3b1f5523b308d9f9b8b51ca84087626825f
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_toybox.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="BOTÕES DA BARRA DE FERRAMENTAS">
+	<text name="toybox label 1">
+		Adicione ou remova botões arrastando-os para dentro ou para fora das barras de ferramentas.
+	</text>
+	<text name="toybox label 2">
+		Os botões aparecerão como mostrado ou somente como ícone, dependendo das configurações de cada barra de ferramentas.
+	</text>
+	<button label="Limpar todas as barras de ferramentas" label_selected="Limpar todas as barras de ferramentas" name="btn_clear_all"/>
+	<button label="Restaurar padrão" label_selected="Restaurar padrão" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_translation_settings.xml b/indra/newview/skins/default/xui/pt/floater_translation_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1955599a8182244d8ac8c7e966fbdcf1c10fffbc
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/floater_translation_settings.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_translation_settings" title="CONFIGURAÇÕES DE TRADUÇÃO DE BATE-PAPO">
+	<string name="bing_api_key_not_verified">
+		appID do Bing não verificada. Tente novamente.
+	</string>
+	<string name="google_api_key_not_verified">
+		Chave do API do Google não verificada. Tente novamente.
+	</string>
+	<string name="bing_api_key_verified">
+		appID do Bing verificada.
+	</string>
+	<string name="google_api_key_verified">
+		Chave do API do Google verificada.
+	</string>
+	<check_box label="Permitir a tradução de máquina durante o bate-papo" name="translate_chat_checkbox"/>
+	<text name="translate_language_label">
+		Traduzir bate-papo para:
+	</text>
+	<combo_box name="translate_language_combo">
+		<combo_box.item label="Padrão" name="System Default Language"/>
+		<combo_box.item label="Inglês" name="English"/>
+		<combo_box.item label="Dansk (Dinamarquês)" name="Danish"/>
+		<combo_box.item label="Deutsch (Alemão)" name="German"/>
+		<combo_box.item label="Español (Espanhol)" name="Spanish"/>
+		<combo_box.item label="Français (Francês)" name="French"/>
+		<combo_box.item label="Italiano (Italiano)" name="Italian"/>
+		<combo_box.item label="Magyar (Húngaro)" name="Hungarian"/>
+		<combo_box.item label="Nederlands (Holandês)" name="Dutch"/>
+		<combo_box.item label="Polski (Polonês)" name="Polish"/>
+		<combo_box.item label="Português (Português)" name="Portugese"/>
+		<combo_box.item label="Русский (Russo)" name="Russian"/>
+		<combo_box.item label="Türkçe (Turco)" name="Turkish"/>
+		<combo_box.item label="Українська (Ucraniano)" name="Ukrainian"/>
+		<combo_box.item label="中文 (简体) (Chinês)" name="Chinese"/>
+		<combo_box.item label="日本語 (Japonês)" name="Japanese"/>
+		<combo_box.item label="한국어 (Coreano)" name="Korean"/>
+	</combo_box>
+	<text name="tip">
+		Escolha o serviço de tradução:
+	</text>
+	<radio_group name="translation_service_rg">
+		<radio_item initial_value="bing" label="Bing Translator" name="bing"/>
+		<radio_item initial_value="google" label="Google Translate" name="google"/>
+	</radio_group>
+	<text name="bing_api_key_label">
+		[http://www.bing.com/developers/createapp.aspx AppID] do Bing:
+	</text>
+	<button label="Verificar" name="verify_bing_api_key_btn"/>
+	<text name="google_api_key_label">
+		[http://code.google.com/apis/language/translate/v2/getting_started.html#auth Chave API] do Google:
+	</text>
+	<button label="Verificar" name="verify_google_api_key_btn"/>
+	<text name="google_links_text">
+		[http://code.google.com/apis/language/translate/v2/pricing.html Preços] | [https://code.google.com/apis/console Estatísticas]
+	</text>
+	<button label="OK" name="ok_btn"/>
+	<button label="Cancelar" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_voice_controls.xml b/indra/newview/skins/default/xui/pt/floater_voice_controls.xml
index fed60c9afab2329cda8de4790668fe5e9d90678f..745a7d0e00bb4ef6993fb69a43ecfbccb63d2a5a 100644
--- a/indra/newview/skins/default/xui/pt/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/pt/floater_voice_controls.xml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Controles de voz">
+<floater name="floater_voice_controls" title="CONTROLES DE VOZ">
 	<string name="title_nearby">
-		VOZ LOCAL
+		CONFIGURAÇÕES DE VOZ
 	</string>
 	<string name="title_group">
-		Ligação de grupo com [GROUP]
+		LIGAÇÃO DE GRUPO COM [GROUP]
 	</string>
 	<string name="title_adhoc">
-		Teleconferência
+		TELECONFERÊNCIA
 	</string>
 	<string name="title_peer_2_peer">
-		Ligação para [NAME]
+		LIGAÇÃO PARA [NAME]
 	</string>
 	<string name="no_one_near">
 		Ninguém por perto ativou a voz
diff --git a/indra/newview/skins/default/xui/pt/inspect_avatar.xml b/indra/newview/skins/default/xui/pt/inspect_avatar.xml
index a199c58c152ebbe58c9ad5de78a8044ff1d85f6b..19244d9b279d8f4c437afca929c420ba3db3d0f0 100644
--- a/indra/newview/skins/default/xui/pt/inspect_avatar.xml
+++ b/indra/newview/skins/default/xui/pt/inspect_avatar.xml
@@ -5,10 +5,10 @@
 -->
 <floater name="inspect_avatar">
 	<string name="Subtitle">
-		[IDADE]
+		[AGE]
 	</string>
 	<string name="Details">
-		[PERFIL_SL]
+		[SL_PROFILE]
 	</string>
 	<text name="user_details">
 		This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
diff --git a/indra/newview/skins/default/xui/pt/menu_bottomtray.xml b/indra/newview/skins/default/xui/pt/menu_bottomtray.xml
index 758516095443f71d8eae72d50a37543ebaf71791..4598b8ab252ded84bd91e0ee926d11b3ea67a73a 100644
--- a/indra/newview/skins/default/xui/pt/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/pt/menu_bottomtray.xml
@@ -8,7 +8,7 @@
 	<menu_item_check label="Botão Construir" name="ShowBuildButton"/>
 	<menu_item_check label="Botão Buscar" name="ShowSearchButton"/>
 	<menu_item_check label="Botão Mapa" name="ShowWorldMapButton"/>
-	<menu_item_check label="Botão do Mini Mapa" name="ShowMiniMapButton"/>
+	<menu_item_check label="Botão do Mini mapa" name="ShowMiniMapButton"/>
 	<menu_item_call label="Cortar" name="NearbyChatBar_Cut"/>
 	<menu_item_call label="Copiar" name="NearbyChatBar_Copy"/>
 	<menu_item_call label="Colar" name="NearbyChatBar_Paste"/>
diff --git a/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml b/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml
index c2b063193ec5fc637c609bc48eccda1edc63d7f4..5f6bd096a86ae105cb93868e4f1bab9a89712e6c 100644
--- a/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml
+++ b/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="hide_navbar_menu">
-	<menu_item_check label="Mostrar barra de navegação" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="Mostrar barra de navegação e de favoritos" name="ShowNavbarNavigationPanel"/>
 	<menu_item_check label="Mostrar barra de favoritos" name="ShowNavbarFavoritesPanel"/>
 	<menu_item_check label="Mostrar minibarra de localização" name="ShowMiniLocationPanel"/>
 </menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_login.xml b/indra/newview/skins/default/xui/pt/menu_login.xml
index 1d3fa48fb32137c129fe637c8baadafefd2e187c..94195f1b8c5c42a4e0681c9518a93c58d121bc8d 100644
--- a/indra/newview/skins/default/xui/pt/menu_login.xml
+++ b/indra/newview/skins/default/xui/pt/menu_login.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Login Menu">
 	<menu label="Eu" name="File">
-		<menu_item_call label="Preferências" name="Preferences..."/>
+		<menu_item_call label="Preferências..." name="Preferences..."/>
 		<menu_item_call label="Sair do [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Ajuda" name="Help">
diff --git a/indra/newview/skins/default/xui/pt/menu_toolbars.xml b/indra/newview/skins/default/xui/pt/menu_toolbars.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b58a1a6e4f5775c1031b8ac2889aed5e4a2fe1fd
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/menu_toolbars.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+	<menu_item_call label="Remover este botão" name="Remove button"/>
+	<menu_item_call label="Botões da barra de ferramentas..." name="Choose Buttons"/>
+	<menu_item_check label="Ícones e rótulos" name="icons_with_text"/>
+	<menu_item_check label="Somente ícones" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml
index e1d066261ab6b666c0d9e7b90dfab80c10cbd00a..119a3bdcfe7276877f0ab8e036f5d87fc09173b8 100644
--- a/indra/newview/skins/default/xui/pt/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml
@@ -1,54 +1,60 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu_bar name="Main Menu">
 	<menu label="Eu" name="Me">
-		<menu_item_call label="Preferências" name="Preferences"/>
-		<menu_item_call label="Meu painel" name="Manage My Account">
-			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=pt"/>
-		</menu_item_call>
-		<menu_item_call label="Comprar L$" name="Buy and Sell L$"/>
-		<menu_item_call label="Meu perfil" name="Profile"/>
-		<menu_item_call label="Minha aparência" name="ChangeOutfit"/>
-		<menu_item_check label="Meu inventário" name="Inventory"/>
-		<menu_item_check label="Meu inventário" name="ShowSidetrayInventory"/>
-		<menu_item_check label="Meus gestos" name="Gestures"/>
-		<menu_item_check label="Minha voz" name="ShowVoice"/>
+		<menu_item_call label="Perfil..." name="Profile"/>
+		<menu_item_call label="Aparência..." name="ChangeOutfit"/>
+		<menu_item_call label="Selecione um avatar..." name="Avatar Picker"/>
+		<menu_item_check label="Inventário..." name="Inventory"/>
+		<menu_item_call label="Nova janela de inventário" name="NewInventoryWindow"/>
+		<menu_item_call label="Lugares..." name="Places"/>
+		<menu_item_call label="Destaques..." name="Picks"/>
+		<menu_item_call label="Controles da câmera..." name="Camera Controls"/>
 		<menu label="Movimentos" name="Movement">
 			<menu_item_call label="Sentar" name="Sit Down Here"/>
 			<menu_item_check label="Voar" name="Fly"/>
 			<menu_item_check label="Correr sempre" name="Always Run"/>
 			<menu_item_call label="Parar minha animação" name="Stop Animating My Avatar"/>
 		</menu>
-		<menu label="Meu 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="Request Admin Status" name="Request Admin Options"/>
 		<menu_item_call label="Sair do modo admin" name="Leave Admin Options"/>
+		<menu_item_call label="Comprar L$" name="Buy and Sell L$"/>
+		<menu_item_call label="Painel da conta..." name="Manage My Account">
+			<menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=pt"/>
+		</menu_item_call>
+		<menu_item_call label="Preferências..." name="Preferences"/>
+		<menu_item_call label="Botões da barra de ferramentas..." name="Toolbars"/>
+		<menu_item_call label="Ocultar todos os controles" name="Hide UI"/>
 		<menu_item_call label="Sair do [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="Comunicar" name="Communicate">
-		<menu_item_call label="Meus amigos" name="My Friends"/>
-		<menu_item_call label="Meus grupos" name="My Groups"/>
-		<menu_item_check label="Bate-papo local" name="Nearby Chat"/>
-		<menu_item_call label="Pessoas por perto" name="Active Speakers"/>
-		<menu_item_check label="Voz por perto" name="Nearby Voice"/>
+		<menu_item_check label="Bate-papo..." 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_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>
 	<menu label="Mundo" name="World">
-		<menu_item_check label="Mini Mapa" name="Mini-Map"/>
+		<menu_item_call label="Criar marco deste lugar" name="Create Landmark Here"/>
+		<menu_item_call label="Destinos..." name="Destinations"/>
 		<menu_item_check label="Mapa-múndi" name="World Map"/>
+		<menu_item_check label="Mini Mapa" name="Mini-Map"/>
 		<menu_item_check label="Busca" name="Search"/>
+		<menu_item_call label="Teletransportar para início" name="Teleport Home"/>
+		<menu_item_call label="Definir como casa" name="Set Home to Here"/>
 		<menu_item_call label="Foto" name="Take Snapshot"/>
-		<menu_item_call label="Criar marco deste lugar" name="Create Landmark Here"/>
-		<menu label="Perfil da região" name="Land">
-			<menu_item_call label="Perfil da região" name="Place Profile"/>
-			<menu_item_call label="Sobre terrenos" name="About Land"/>
-			<menu_item_call label="Região/Propriedade" name="Region/Estate"/>
-		</menu>
+		<menu_item_call label="Perfil da região" name="Place Profile"/>
+		<menu_item_call label="Sobre terrenos" name="About Land"/>
+		<menu_item_call label="Região/Propriedade" name="Region/Estate"/>
+		<menu_item_call label="Meus terrenos..." name="My Land"/>
 		<menu_item_call label="Comprar este terreno" name="Buy Land"/>
-		<menu_item_call label="Meus terrenos" name="My Land"/>
 		<menu label="Mostrar" name="LandShow">
-			<menu_item_check label="Controles de movimento" name="Movement Controls"/>
-			<menu_item_check label="Ver controles" name="Camera Controls"/>
 			<menu_item_check label="Limites" name="Ban Lines"/>
 			<menu_item_check label="Balizas" name="beacons"/>
 			<menu_item_check label="Limites do imóvel" name="Property Lines"/>
@@ -57,30 +63,29 @@
 			<menu_item_check label="Propriedades do lote" name="Parcel Properties"/>
 			<menu_item_check label="Menu avançado" name="Show Advanced Menu"/>
 		</menu>
-		<menu_item_call label="Teletransportar para meu início" name="Teleport Home"/>
-		<menu_item_call label="Definir como Início" name="Set Home to Here"/>
 		<menu label="Sol" name="Environment Settings">
 			<menu_item_call label="Amanhecer" name="Sunrise"/>
 			<menu_item_call label="Meio-dia" name="Noon"/>
 			<menu_item_call label="Pôr-do-Sol" name="Sunset"/>
 			<menu_item_call label="Meia-noite" name="Midnight"/>
-		</menu>
-		<menu label="Editor de ambientes" name="Enviroment Editor">
-			<menu_item_call label="Configurações de ambiente..." name="Enviroment Settings"/>
-			<menu label="Pré-configurações de água" name="Water Presets">
-				<menu_item_call label="Nova pré-configuração..." name="new_water_preset"/>
-				<menu_item_call label="Editar pré-configuração..." name="edit_water_preset"/>
-				<menu_item_call label="Excluir pré-configuração..." name="delete_water_preset"/>
+			<menu_item_call label="Usar configurações da região" name="Use Region Settings"/>
+		</menu>
+		<menu label="Editor de ambientes" name="Environment Editor">
+			<menu_item_call label="Configurações do ambiente..." name="Environment Settings"/>
+			<menu label="Predefinições da água" name="Water Presets">
+				<menu_item_call label="Nova predefinição..." name="new_water_preset"/>
+				<menu_item_call label="Editar predefinição..." name="edit_water_preset"/>
+				<menu_item_call label="Excluir predefinição..." name="delete_water_preset"/>
 			</menu>
-			<menu label="Pré-configurações de céu" name="Sky Presets">
-				<menu_item_call label="Nova pré-configuração..." name="new_sky_preset"/>
-				<menu_item_call label="Editar pré-configuração..." name="edit_sky_preset"/>
-				<menu_item_call label="Excluir pré-configuração..." name="delete_sky_preset"/>
+			<menu label="Predefinições de céu" name="Sky Presets">
+				<menu_item_call label="Nova predefinição..." name="new_sky_preset"/>
+				<menu_item_call label="Editar predefinição..." name="edit_sky_preset"/>
+				<menu_item_call label="Excluir predefinição..." name="delete_sky_preset"/>
 			</menu>
-			<menu label="Pré-configurações de dias" name="Day Presets">
-				<menu_item_call label="Nova pré-configuração..." name="new_day_preset"/>
-				<menu_item_call label="Editar pré-configuração..." name="edit_day_preset"/>
-				<menu_item_call label="Excluir pré-configuração..." name="delete_day_preset"/>
+			<menu label="Predefinições do dia" name="Day Presets">
+				<menu_item_call label="Nova predefinição..." name="new_day_preset"/>
+				<menu_item_call label="Editar predefinição..." name="edit_day_preset"/>
+				<menu_item_call label="Excluir predefinição..." name="delete_day_preset"/>
 			</menu>
 		</menu>
 	</menu>
@@ -95,7 +100,7 @@
 		</menu>
 		<menu_item_call label="Link" name="Link"/>
 		<menu_item_call label="Desconectar links" name="Unlink"/>
-		<menu_item_check label="Edit Linked Parts" name="Edit Linked Parts"/>
+		<menu_item_check label="Editar partes linkadas" name="Edit Linked Parts"/>
 		<menu label="Selecionar partes conectadas" name="Select Linked Parts">
 			<menu_item_call label="Selecionar próxima parte" name="Select Next Part"/>
 			<menu_item_call label="Selecionar parte anterior" name="Select Previous Part"/>
@@ -109,7 +114,7 @@
 			<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="Save Back to Object Contents" name="Save Object Back to Object Contents"/>
+			<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>
 		<menu label="Scripts" name="Scripts">
@@ -139,13 +144,14 @@
 			<menu_item_call label="Animação (L$[COST])..." name="Upload Animation"/>
 			<menu_item_call label="Modelar..." name="Upload Model"/>
 			<menu_item_call label="Volume (L$[COST] por arquivo)..." name="Bulk Upload"/>
+			<menu_item_call label="Autorizações de upload padrão" name="perm prefs"/>
 		</menu>
 		<menu_item_call label="Desfazer" name="Undo"/>
 		<menu_item_call label="Repetir" name="Redo"/>
 	</menu>
 	<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_check label="Ativar dicas" name="Enable Hints"/>
 		<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"/>
@@ -161,11 +167,11 @@
 		<menu label="Ferramentas de desempenho" name="Performance Tools">
 			<menu_item_call label="Medidor de lag" name="Lag Meter"/>
 			<menu_item_check label="Barra de estatísticas" name="Statistics Bar"/>
-			<menu_item_check label="Carga de renderização de avatar" name="Avatar Rendering Cost"/>
+			<menu_item_check label="Mostrar peso do desenho para avatares" name="Avatar Rendering Cost"/>
 		</menu>
 		<menu label="Realces e visibilidade" name="Highlighting and Visibility">
 			<menu_item_check label="Efeito baliza piscando" name="Cheesy Beacon"/>
-			<menu_item_check label="Hide Particles" name="Hide Particles"/>
+			<menu_item_check label="Esconder partículas" name="Hide Particles"/>
 			<menu_item_check label="Ocultar seleções" name="Hide Selected"/>
 			<menu_item_check label="Realçar transparentes" name="Highlight Transparent"/>
 			<menu_item_check label="Mostrar anexos HUD" name="Show HUD Attachments"/>
@@ -183,7 +189,7 @@
 			<menu_item_check label="Volume" name="Volume"/>
 			<menu_item_check label="Grama" name="Grass"/>
 			<menu_item_check label="Nuvens" name="Clouds"/>
-			<menu_item_check label="Particles" name="Particles"/>
+			<menu_item_check label="Partículas" name="Particles"/>
 			<menu_item_check label="Elevação" name="Bump"/>
 		</menu>
 		<menu label="Recursos de renderização" name="Rendering Features">
@@ -198,11 +204,10 @@
 		<menu_item_check label="Usar plugin de leitura de threads" name="Use Plugin Read Thread"/>
 		<menu_item_call label="Limpar cache de grupo" name="ClearGroupCache"/>
 		<menu_item_check label="Smoothing de mouse" name="Mouse Smoothing"/>
+		<menu_item_call label="Liberar teclas" name="Release Keys"/>
 		<menu label="Atalhos" name="Shortcuts">
 			<menu_item_call label="Imagem (L$[COST])..." name="Upload Image"/>
 			<menu_item_check label="Busca" name="Search"/>
-			<menu_item_call label="Soltar objeto" name="Release Keys"/>
-			<menu_item_call label="Interface tamanho padrão" name="Set UI Size to Default"/>
 			<menu_item_check label="Mostrar menu avançado - atalho antigo" name="Show Advanced Menu - legacy shortcut"/>
 			<menu_item_call label="Fechar janela" name="Close Window"/>
 			<menu_item_call label="Fechar todas as janelas" name="Close All Windows"/>
@@ -271,6 +276,8 @@
 			<menu_item_check label="Tipo de atualização" name="Update Type"/>
 			<menu_item_check label="Dados LOD" name="LOD Info"/>
 			<menu_item_check label="Fila de construção" name="Build Queue"/>
+			<menu_item_check label="Vetores de vento" name="Wind Vectors"/>
+			<menu_item_check label="Renderizar complexidade" name="rendercomplexity"/>
 			<menu_item_check label="Esculpir" name="Sculpt"/>
 		</menu>
 		<menu label="Rendering" name="Rendering">
@@ -279,7 +286,6 @@
 			<menu_item_check label="Iluminação e sombras" name="Lighting and Shadows"/>
 			<menu_item_check label="Sombras da projeção do sol/lua" name="Shadows from Sun/Moon/Projectors"/>
 			<menu_item_check label="SSAO e sombra suave" name="SSAO and Shadow Smoothing"/>
-			<menu_item_check label="Iluminação global (fase experimental)" name="Global Illumination"/>
 			<menu_item_check label="Máscaras alpha automáticas (adiadas)" name="Automatic Alpha Masks (deferred)"/>
 			<menu_item_check label="Máscaras alpha automáticas (sem adiar)" name="Automatic Alpha Masks (non-deferred)"/>
 			<menu_item_check label="Texturas de animação" name="Animation Textures"/>
diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml
index 70d882822ddf6eadb61c4a3236813b9cd0daeffc..2c5ccd6e1913362605a66410595d515e9ec5cc44 100644
--- a/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/indra/newview/skins/default/xui/pt/notifications.xml
@@ -973,7 +973,7 @@ Oferecer amizade para [NAME]?
 		</form>
 	</notification>
 	<notification name="RemoveFromFriends">
-		Remover [NAME] da sua lista de amigos?
+		Deseja remover &lt;nolink&gt;[NAME]&lt;/nolink&gt; da sua lista de amigos?
 		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Remover"/>
 	</notification>
 	<notification name="RemoveMultipleFromFriends">
@@ -1099,8 +1099,13 @@ Doar este terreno de [AREA] m² para o grupo &apos;[GROUP_NAME]&apos;?
 	<notification name="DisplaySetToSafe">
 		Configurações de display foram ajustadas para níveis de segurança porque você especificou -- opção de segurança.
 	</notification>
-	<notification name="DisplaySetToRecommended">
-		Configurações de display foram ajustadas para nível recomendado baseado na configuração do seu sistema.
+	<notification name="DisplaySetToRecommendedGPUChange">
+		As configurações de tela foram definidas nos níveis recomendados porque sua placa de vídeo foi alterada
+de &apos;[LAST_GPU]&apos;
+para &apos;[THIS_GPU]&apos;
+	</notification>
+	<notification name="DisplaySetToRecommendedFeatureChange">
+		As configurações de tela foram definidas nos níveis recomendados por causa de uma alteração no subsistema de renderização.
 	</notification>
 	<notification name="ErrorMessage">
 		[ERROR_MESSAGE]
@@ -1419,7 +1424,7 @@ Para instalar a atualização, será preciso reiniciar o [APP_NAME].
 		<usetemplate ignoretext="Confirmar antes de devolver objetos a seus donos" name="okcancelignore" notext="Cancelar" yestext="Retornar"/>
 	</notification>
 	<notification name="GroupLeaveConfirmMember">
-		Você é atualmente um membro do grupo [GROUP].
+		Você é atualmente um membro do grupo &lt;nolink&gt;[GROUP]&lt;/nolink&gt;.
 Sair do grupo?
 		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sair"/>
 	</notification>
@@ -1899,6 +1904,18 @@ Mover para o inventário o(s) item(s)?
 		Tem certeza que deseja sair?
 		<usetemplate ignoretext="Confirmar antes de sair" name="okcancelignore" notext="Não sair" yestext="Sair"/>
 	</notification>
+	<notification name="ConfirmRestoreToybox">
+		Essa ação irá restaurar os botões e barras de ferramenta padrão.
+
+Não é possível desfazer essa ação.
+		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmClearAllToybox">
+		Essa ação fará com que todos os botões voltem para a caixa de ferramentas e suas barras de ferramentas ficarão vazias.
+    
+Não é possível desfazer essa ação.
+		<usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
+	</notification>
 	<notification name="DeleteItems">
 		[QUESTION]
 		<usetemplate ignoretext="Confirmar antes de excluir" name="okcancelignore" notext="Cancelar" yestext="OK"/>
@@ -2103,10 +2120,10 @@ Isso abrirá o seu navegador.
 		Assunto: [SUBJECT], Mensagem: [MESSAGE]
 	</notification>
 	<notification name="FriendOnline">
-		[NAME] está online
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; está online
 	</notification>
 	<notification name="FriendOffline">
-		[NAME] está offline
+		&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).
@@ -2219,14 +2236,16 @@ Selecione só um objeto.
 		Seu cartão de visita foi negado.
 	</notification>
 	<notification name="TeleportToLandmark">
-		Para se teletransportar para lugares como &apos;[NAME]&apos;, abra o painel &apos;Lugares&apos; à direita da tela e selecione a guia Marcos.  
-Basta clicar em qualquer marco e depois clicar em &apos;Teletransportar&apos; na parte inferior da tela. 
-(Também é possível clicar duas vezes no marco, ou clicar no marco com o botão direito e selecionar &apos;Teletransportar&apos;.)
+		Para se teletransportar para locais como &apos;[NAME]&apos;, clique no botão &quot;Lugares&quot;,
+    e selecione a guia Marcos na janela que é exibida. Clique em qualquer
+    marco para selecioná-lo e em seguida em &apos;Teletransportar&apos; na parte inferior da tela.
+    (Também é possível clicar duas vezes sobre o marco ou clicar com o botão direito do mouse sobre ele
+    e selecionar &apos;Teletransportar&apos;.)
 	</notification>
 	<notification name="TeleportToPerson">
-		Para entrar em contato com residentes como &apos;&apos;[NAME]&apos;,  abra o painel &apos;Pessoas&apos; à direita da tela.
-Selecione o residente da lista e clique em &apos;MI&apos; na parte de baixo do painel.
-(Também é possível clicar duas vezes no nome, ou clicar no nome com o botão direito e selecionar &apos;MI&apos;.)
+		Para entrar em contato com residentes como &apos;[NAME]&apos;, clique no botão &quot;Pessoas&quot;, selecione um residente na janela que é exibida e clique em &apos;MI&apos; na
+    parte inferior da janela.
+    (Também é possível clicar duas vezes no nome, ou clicar no nome com o botão direito e selecionar &apos;MI&apos;.)
 	</notification>
 	<notification name="CantSelectLandFromMultipleRegions">
 		Impossível selecionar terra nas fronteiras do servidor. Tente selecionar um pedaço menor de terra.
@@ -2246,6 +2265,9 @@ Selecione o residente da lista e clique em &apos;MI&apos; na parte de baixo do p
 	<notification name="PaymentSent">
 		[MESSAGE]
 	</notification>
+	<notification name="PaymentFailure">
+		[MESSAGE]
+	</notification>
 	<notification name="EventNotification">
 		Notificação de evento:
 
@@ -2495,10 +2517,10 @@ Cada um pode ver o status do outro (definição padrão).
 		</form>
 	</notification>
 	<notification name="FriendshipAccepted">
-		[NAME] aceitou seu convite de amizade.
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; aceitou sua oferta de amizade.
 	</notification>
 	<notification name="FriendshipDeclined">
-		[NAME] recusou seu convite de amizade
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; rejeitou sua oferta de amizade.
 	</notification>
 	<notification name="FriendshipAcceptedByMe">
 		Oferta de amizada aceita.
@@ -2976,10 +2998,6 @@ Se o botão Falar for ocultado, o recurso de voz será desabilitado.
 			<button name="cancel" text="Cancelar"/>
 		</form>
 	</notification>
-	<notification label="" name="ModeChange">
-		Para alterar o modo, é preciso fechar e reiniciar.
-		<usetemplate name="okcancelbuttons" notext="Não sair" yestext="Sair"/>
-	</notification>
 	<notification label="" name="NoClassifieds">
 		É preciso usar o modo Avançado para criar e editar anúncios classificados.  Desejar sair para mudar o modo? Selecione o modo na tela de login.
 		<usetemplate name="okcancelbuttons" notext="Não sair" yestext="Sair"/>
@@ -3024,6 +3042,10 @@ Se o botão Falar for ocultado, o recurso de voz será desabilitado.
 		É preciso estar no modo Avançado para fazer pesquisas. Deseja sair para mudar o modo?
 		<usetemplate name="okcancelbuttons" notext="Não sair" yestext="Sair"/>
 	</notification>
+	<notification label="" name="ConfirmHideUI">
+		Essa ação irá ocultar todos os itens de menu e botões. Para trazê-los de volta, clique em [SHORTCUT] novamente.
+		<usetemplate ignoretext="Confirmar antes de ocultar interface" name="okcancelignore" notext="Cancelar" yestext="OK"/>
+	</notification>
 	<global name="UnsupportedGLRequirements">
 		Aparentemente a sua máquina não atende os requisitos de hardware do [APP_NAME].  [APP_NAME] requer placas de vídeo OpenGL com suporte a multitexturas.  Se sua place de vídeo tiver este perfil, atualize o driver da placa de vídeo, assim como patches e service packs do sistema operacional. 
 
diff --git a/indra/newview/skins/default/xui/pt/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/pt/panel_chiclet_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0551d9cba6030929acaccd69cb306e34b7e211bf
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="Conversas"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="Notificações"/>
+			</chiclet_notification>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_skin.xml b/indra/newview/skins/default/xui/pt/panel_edit_skin.xml
index f3d88123f2ebb4c46587b4153a98530b470984e0..d00aa2dc66247bad105db68d9187b7f2deb6382f 100644
--- a/indra/newview/skins/default/xui/pt/panel_edit_skin.xml
+++ b/indra/newview/skins/default/xui/pt/panel_edit_skin.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_skin_panel">
 	<panel name="avatar_skin_color_panel">
-		<texture_picker label="Tatuagens na cabeça" name="Head Tattoos" tool_tip="Selecionar imagem"/>
-		<texture_picker label="Tatuagem parte de cima" name="Upper Tattoos" tool_tip="Selecionar imagem"/>
-		<texture_picker label="Tatuagem de baixo" name="Lower Tattoos" tool_tip="Selecionar imagem"/>
+		<texture_picker label="Cabeça" name="Head" tool_tip="Selecionar imagem"/>
+		<texture_picker label="Cintura acima" name="Upper Body" tool_tip="Selecionar imagem"/>
+		<texture_picker label="Cintura para baixo" name="Lower Body" tool_tip="Selecionar imagem"/>
 	</panel>
 	<panel name="accordion_panel">
 		<accordion name="wearable_accordion">
diff --git a/indra/newview/skins/default/xui/pt/panel_me.xml b/indra/newview/skins/default/xui/pt/panel_me.xml
index 412f75ca78e7477b013b5effbab7eddfbe47fb98..281c886bd490c440f1de2d63c734469a62995a17 100644
--- a/indra/newview/skins/default/xui/pt/panel_me.xml
+++ b/indra/newview/skins/default/xui/pt/panel_me.xml
@@ -1,7 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel label="Meu perfil" name="panel_me">
-	<tab_container name="tabs">
-		<panel label="MEU PERFIL" name="panel_profile"/>
-		<panel label="MEUS DESTAQUES" name="panel_picks"/>
-	</tab_container>
+	<panel label="MEUS DESTAQUES" name="panel_picks"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_my_profile.xml b/indra/newview/skins/default/xui/pt/panel_my_profile.xml
deleted file mode 100644
index aa15a2445d236e491446f8b7aacfb7a0e6831510..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/pt/panel_my_profile.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Perfil" name="panel_profile">
-	<string name="no_partner_text" value="Nenhum"/>
-	<string name="no_group_text" value="Nenhum"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="scroll_content_panel">
-					<panel name="second_life_image_panel">
-						<text name="display_name_descr_text">
-							Nome de usuário
-						</text>
-						<text name="name_descr_text">
-							Nome de tela
-						</text>
-						<button label="Perfil" name="see_profile_btn" tool_tip="Ver o perfil deste avatar"/>
-					</panel>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml b/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml
index 01930bf3b359fab76b6cca756aa29f9968c37dba..4fa5436805099f45d14dd02d2876c8099bb3c50e 100644
--- a/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml
@@ -1,18 +1,23 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="Voltar para região anterior"/>
-		<pull_button name="forward_btn" tool_tip="Avançar uma região"/>
-		<button name="home_btn" tool_tip="Teletransportar para meu início"/>
-		<location_input label="Onde" name="location_combo"/>
-		<search_combo_box label="Busca" name="search_combo_box" tool_tip="Busca">
-			<combo_editor label="Buscar no [SECOND_LIFE]" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="Arraste marcos para cá para acessar seus lugares preferidos do Second Life!">
-		<label name="favorites_bar_label" tool_tip="Arraste marcos para cá para acessar seus lugares preferidos do Second Life!">
-			Barra Destaques
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="Mostrar mais favoritos"/>
-	</favorites_bar>
+	<layout_stack name="nvp_stack">
+		<layout_panel name="navigation_layout_panel">
+			<panel name="navigation_panel">
+				<pull_button name="back_btn" tool_tip="Voltar para região anterior"/>
+				<pull_button name="forward_btn" tool_tip="Avançar uma região"/>
+				<button name="home_btn" tool_tip="Teletransportar para meu início"/>
+				<location_input label="Onde" name="location_combo"/>
+			</panel>
+		</layout_panel>
+		<layout_panel name="favorites_layout_panel">
+			<favorites_bar name="favorite" tool_tip="Arraste marcos para cá para acessar seus lugares preferidos do Second Life!">
+				<label name="favorites_bar_label" tool_tip="Arraste marcos para cá para acessar seus lugares preferidos do Second Life!">
+					Barra Destaques
+				</label>
+				<more_button name="&gt;&gt;" tool_tip="Mostrar mais favoritos">
+					Mais â–¼
+				</more_button>
+			</favorites_bar>
+		</layout_panel>
+	</layout_stack>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml b/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..15470dc94a182224a2f71ee6d7a7f192ec54fbc3
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+	<check_box label="Traduzir bate-papo" name="translate_chat_checkbox"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_notes.xml b/indra/newview/skins/default/xui/pt/panel_notes.xml
deleted file mode 100644
index c15e838b34f34ecfbd99d3c0b1301e822279db72..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/pt/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Anotações e Privacidade" name="panel_notes">
-	<layout_stack name="layout">
-		<layout_panel name="notes_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<text name="status_message" value="Minhas anotações privadas:"/>
-					<text name="status_message2" value="Deixar esta pessoa:"/>
-					<check_box label="Ver meu status" name="status_check"/>
-					<check_box label="Ver minha localização no mapa" name="map_check"/>
-					<check_box label="Pegar, editar ou excluir objetos meus" name="objects_check"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-		<layout_panel name="notes_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="Adicionar amigo" name="add_friend" tool_tip="Oferecer amizade ao residente"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="MI" name="im" tool_tip="Abrir sessão de mensagem instantânea"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="Ligar" name="call" tool_tip="Ligar para este residente"/>
-				</layout_panel>
-				<layout_panel name="show_on_map_btn_lp">
-					<button label="Mapa" name="show_on_map_btn" tool_tip="Exibir o residente no mapa"/>
-				</layout_panel>
-				<layout_panel name="teleport_btn_lp">
-					<button label="Teletransportar" name="teleport" tool_tip="Oferecer teletransporte"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_postcard_message.xml b/indra/newview/skins/default/xui/pt/panel_postcard_message.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9cde81043028e5e839777ea48b399b70112babb4
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_postcard_message.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_message">
+	<text name="to_label">
+		Para:
+	</text>
+	<text name="name_label">
+		De:
+	</text>
+	<text name="subject_label">
+		Assunto:
+	</text>
+	<line_editor label="Digite aqui o assunto." name="subject_form"/>
+	<text name="msg_label">
+		Mensagem:
+	</text>
+	<text_editor name="msg_form">
+		Digite aqui a mensagem.
+	</text_editor>
+	<button label="Cancelar" name="cancel_btn"/>
+	<button label="Enviar" name="send_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_postcard_settings.xml b/indra/newview/skins/default/xui/pt/panel_postcard_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3088b9a99626e1be6d9a6be46086da7ffac2bab8
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_postcard_settings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_settings">
+	<combo_box label="Resolução" name="postcard_size_combo">
+		<combo_box.item label="Janela atual" name="CurrentWindow"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="Customizado" name="Custom"/>
+	</combo_box>
+	<layout_stack name="postcard_image_params_ls">
+		<layout_panel name="postcard_image_size_lp">
+			<spinner label="Largura" name="postcard_snapshot_width"/>
+			<spinner label="Altura" name="postcard_snapshot_height"/>
+			<check_box label="Limitar proporções" name="postcard_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="postcard_image_format_quality_lp">
+			<slider label="Qualidade da imagem" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+</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 e5aa42aae0cb4bd00d55a7367a32f4ba146b5dbd..c5a4febb0e3ced8e2480eb99cd1c48d1e9579464 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
@@ -29,30 +29,5 @@
 	<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"/>
-	<check_box name="translate_chat_checkbox"/>
-	<text name="translate_chb_label">
-		Traduzir bate-papo automaticamente (via Google)
-	</text>
-	<text name="translate_language_text">
-		Traduzir bate-papo para:
-	</text>
-	<combo_box name="translate_language_combobox">
-		<combo_box.item label="Padrão" name="System Default Language"/>
-		<combo_box.item label="English (Inglês)" name="English"/>
-		<combo_box.item label="Dansk (Dinamarquês)" name="Danish"/>
-		<combo_box.item label="Deutsch (Alemão)" name="German"/>
-		<combo_box.item label="Español (Espanhol)" name="Spanish"/>
-		<combo_box.item label="Français (Francês)" name="French"/>
-		<combo_box.item label="Italiano (Italiano)" name="Italian"/>
-		<combo_box.item label="Magyar (Húngaro)" name="Hungarian"/>
-		<combo_box.item label="Nederlands (Holandês)" name="Dutch"/>
-		<combo_box.item label="Polski (Polonês)" name="Polish"/>
-		<combo_box.item label="Português (Português)" name="Portugese"/>
-		<combo_box.item label="Русский (Russo)" name="Russian"/>
-		<combo_box.item label="Türkçe (Turco)" name="Turkish"/>
-		<combo_box.item label="Українська (Ucraniano)" name="Ukrainian"/>
-		<combo_box.item label="中文 (简体) (Chinês)" name="Chinese"/>
-		<combo_box.item label="日本語 (Japonês)" name="Japanese"/>
-		<combo_box.item label="한국어 (Coreano)" name="Korean"/>
-	</combo_box>
+	<button label="Configurações de tradução de bate-papo" name="ok_btn"/>
 </panel>
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 deeb917e82d248f951a111d7a21c7ae4e914fabf..c53aa7d5f70e72ecc45c06b5ac72ee0e69743960 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
@@ -11,10 +11,12 @@
 		<combo_box.item label="Español (Espanhol) - Beta" name="Spanish"/>
 		<combo_box.item label="Français (Francês) - Beta" name="French"/>
 		<combo_box.item label="Italiano - Beta" name="Italian"/>
-		<combo_box.item label="Nederlands (Holandês) - Beta" name="Dutch"/>
 		<combo_box.item label="Polski (Polonês) - Beta" name="Polish"/>
 		<combo_box.item label="Português (Português) - Beta" name="Portugese"/>
+		<combo_box.item label="Русский (Russo) - Beta" name="Russian"/>
+		<combo_box.item label="Türkçe (Turco) - Beta" name="Turkish"/>
 		<combo_box.item label="日本語 (Japonês) - Beta" name="(Japanese)"/>
+		<combo_box.item label="正體中文 (Chinês tradicional) - Beta" name="Traditional Chinese"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(Reinicie para trocar de idioma)
@@ -49,7 +51,6 @@
 	<check_box label="Cargos do grupo" name="show_all_title_checkbox1" tool_tip="Mostrar os títulos de cargos, como membro ou diretor"/>
 	<check_box label="Realçar amigos" name="show_friends" tool_tip="Realçar nomes de tela de amigos"/>
 	<check_box label="Ver nomes de tela" name="display_names_check" tool_tip="Usar nome de tela no bate-papo, MI, etc."/>
-	<check_box label="Exibir dicas da interface" name="viewer_hints_check"/>
 	<text name="inworld_typing_rg_label">
 		Teclas de letras:
 	</text>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_move.xml b/indra/newview/skins/default/xui/pt/panel_preferences_move.xml
index 1a4c27182736133a919f2d14ca71d85430d24f0e..fa6f5f5851a5937e39f4a2365acdcced182a1326 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_move.xml
@@ -7,18 +7,33 @@
 	</text>
 	<check_box label="Construir/Editar" name="edit_camera_movement" tool_tip="Use o posicionamento automático da câmera quando entrar e sair do modo de edição"/>
 	<check_box label="Aparência" name="appearance_camera_movement" tool_tip="Use o posicionamento automático da câmera quando em modo de edição"/>
-	<check_box initial_value="verdadeiro" label="Barra lateral" name="appearance_sidebar_positioning" tool_tip="Usar posicionamento automático da câmera na barra lateral"/>
+	<text name="keyboard_lbl">
+		Teclado:
+	</text>
+	<check_box label="Teclas de seta sempre me movem" name="arrow_keys_move_avatar_check"/>
+	<check_box label="Dê dois toques e pressione para correr" name="tap_tap_hold_to_run"/>
+	<text name="mouse_lbl">
+		Mouse:
+	</text>
 	<check_box label="Mostre-me em visão de mouse" name="first_person_avatar_visible"/>
 	<text name=" Mouse Sensitivity">
 		Sensibilidade do mouse:
 	</text>
 	<check_box label="Inverter" name="invert_mouse"/>
-	<check_box label="Teclas de seta sempre me movem" name="arrow_keys_move_avatar_check"/>
-	<check_box label="Dê dois toques e pressione para correr" name="tap_tap_hold_to_run"/>
-	<check_box label="Dar dois cliques para:" name="double_click_chkbox"/>
-	<radio_group name="double_click_action">
-		<radio_item label="Teletransportar" name="radio_teleport"/>
-		<radio_item label="Piloto automático" name="radio_autopilot"/>
-	</radio_group>
+	<text name="single_click_action_lbl">
+		Clique único no terreno:
+	</text>
+	<combo_box name="single_click_action_combo">
+		<combo_box.item label="Nenhuma ação" name="0"/>
+		<combo_box.item label="Mover para ponto clicado" name="1"/>
+	</combo_box>
+	<text name="double_click_action_lbl">
+		Clique duplo no terreno:
+	</text>
+	<combo_box name="double_click_action_combo">
+		<combo_box.item label="Nenhuma ação" name="0"/>
+		<combo_box.item label="Mover para ponto clicado" name="1"/>
+		<combo_box.item label="Teletransportar para ponto clicado" name="2"/>
+	</combo_box>
 	<button label="Outros dispositivos" name="joystick_setup_button"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
index 9259c0ed5634f896f71b0ecb2d58dceb24da632b..ebbd63138a59bf6dba998400c8315588f4e21532 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
@@ -15,7 +15,7 @@
 		Web:
 	</text>
 	<radio_group name="use_external_browser">
-		<radio_item label="Usar meu navegador (IE, Firefox, Safari)" name="external" tool_tip="Use o navegador incluso para consultar a ajuda, abrir links da web, etc. Uso em tela inteira não recomendado." value="1"/>
+		<radio_item label="Usar meu navegador (IE, Firefox, Safari)" name="external" tool_tip="Use o navegador incluso para consultar a ajuda, abrir links da web, etc. Uso em tela inteira não recomendado." value="true"/>
 		<radio_item label="Usar navegador incluso" name="internal" tool_tip="Use este navegador para consultar a ajuda, abrir links da web, etc. As janelas abrem dentro do [APP_NAME]." value=""/>
 	</radio_group>
 	<check_box initial_value="true" label="Habilitar plugins" name="browser_plugins_enabled"/>
diff --git a/indra/newview/skins/default/xui/pt/panel_profile.xml b/indra/newview/skins/default/xui/pt/panel_profile.xml
deleted file mode 100644
index 075ef55dee56999f8b0972bb9dee0ea2dd353fb3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/pt/panel_profile.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Perfil" name="panel_profile">
-	<string name="CaptionTextAcctInfo">
-		[ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
-	</string>
-	<string name="payment_update_link_url">
-		http://www.secondlife.com/account/billing.php?lang=pt-BR
-	</string>
-	<string name="partner_edit_link_url">
-		http://www.secondlife.com/account/partners.php?lang=pt
-	</string>
-	<string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=pt-BR"/>
-	<string name="no_partner_text" value="Ninguém"/>
-	<string name="no_group_text" value="Nenhum"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<panel name="second_life_image_panel">
-						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
-					</panel>
-					<panel name="first_life_image_panel">
-						<text name="title_rw_descr_text" value="Mundo real:"/>
-					</panel>
-					<text name="title_member_text" value="Residente desde:"/>
-					<text name="title_acc_status_text" value="Conta:"/>
-					<text name="title_partner_text" value="Parceiro(a):"/>
-					<panel name="partner_data_panel">
-						<text initial_value="(pesquisando)" name="partner_text"/>
-					</panel>
-					<text name="title_groups_text" value="Grupos:"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-	<layout_stack name="layout_verb_buttons">
-		<layout_panel name="profile_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="Adicionar amigo" name="add_friend" tool_tip="Oferecer amizade ao residente"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="MI" name="im" tool_tip="Abrir sessão de mensagem instantânea"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="Ligar" name="call" tool_tip="Ligar para este residente"/>
-				</layout_panel>
-				<layout_panel name="chat_btn_lp">
-					<button label="Teletransportar" name="teleport" tool_tip="Oferecer teletransporte"/>
-				</layout_panel>
-				<layout_panel name="overflow_btn_lp">
-					<menu_button label="▼" name="overflow_btn" tool_tip="Pagar ou compartilhar inventário com o residente"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-		<layout_panel name="profile_me_buttons_panel">
-			<button label="Editar perfil" name="edit_profile_btn" tool_tip="Editar dados pessoais"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_profile_view.xml b/indra/newview/skins/default/xui/pt/panel_profile_view.xml
deleted file mode 100644
index d81ee08e6cf8f3982ac3e3a0c1d11ff74d719bd0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/pt/panel_profile_view.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
-	<string name="status_online">
-		Conectado
-	</string>
-	<string name="status_offline">
-		Desconectado
-	</string>
-	<text name="display_name_label" value="Nome de tela:"/>
-	<text name="solo_username_label" value="Nome de usuário:"/>
-	<text name="status" value="Conectado"/>
-	<text name="user_name_small" value="Jack oh look at me this is a super duper long name"/>
-	<button name="copy_to_clipboard" tool_tip="Copiar para área de transferência"/>
-	<text name="user_label" value="Nome de usuário:"/>
-	<tab_container name="tabs">
-		<panel label="PERFIL" name="panel_profile"/>
-		<panel label="DESTAQUES" name="panel_picks"/>
-		<panel label="ANOTAÇÕES E PRIVACIDADE" name="panel_notes"/>
-	</tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3c4bb186877bd26353c29ce7d4d52853dd06d9ef
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_snapshot_inventory.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_inventory">
+	<text name="title">
+		Salvar no meu inventário
+	</text>
+	<text name="hint_lbl">
+		Salvar uma imagem em seu inventário custa L$[UPLOAD_COST]. Para salvar sua imagem como uma textura, selecione um dos formatos quadrados.
+	</text>
+	<combo_box label="Resolução" name="texture_size_combo">
+		<combo_box.item label="Janela atual" name="CurrentWindow"/>
+		<combo_box.item label="Pequeno (128x128)" name="Small(128x128)"/>
+		<combo_box.item label="Médio (256x256)" name="Medium(256x256)"/>
+		<combo_box.item label="Grande (512x512)" name="Large(512x512)"/>
+		<combo_box.item label="Customizado" name="Custom"/>
+	</combo_box>
+	<spinner label="Largura" name="inventory_snapshot_width"/>
+	<spinner label="Altura" name="inventory_snapshot_height"/>
+	<check_box label="Limitar proporções" name="inventory_keep_aspect_check"/>
+	<button label="Cancelar" name="cancel_btn"/>
+	<button label="Salvar" name="save_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_local.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_local.xml
new file mode 100644
index 0000000000000000000000000000000000000000..36b5b0cbe6b46b0f7bd7902ba405be142ddd1abb
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_snapshot_local.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_local">
+	<text name="title">
+		Salvar no meu PC
+	</text>
+	<combo_box label="Resolução" name="local_size_combo">
+		<combo_box.item label="Janela atual" name="CurrentWindow"/>
+		<combo_box.item label="320x240" name="320x240"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="1280x1024" name="1280x1024"/>
+		<combo_box.item label="1600x1200" name="1600x1200"/>
+		<combo_box.item label="Customizado" name="Custom"/>
+	</combo_box>
+	<layout_stack name="local_image_params_ls">
+		<layout_panel name="local_image_size_lp">
+			<spinner label="Largura" name="local_snapshot_width"/>
+			<spinner label="Altura" name="local_snapshot_height"/>
+			<check_box label="Limitar proporções" name="local_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="local_image_format_quality_lp">
+			<combo_box label="Formato" name="local_format_combo">
+				<combo_box.item label="PNG (sem perda)" name="PNG"/>
+				<combo_box.item label="JPEG" name="JPEG"/>
+				<combo_box.item label="BMP (sem perda)" name="BMP"/>
+			</combo_box>
+			<slider label="Qualidade da imagem" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+	<button label="Cancelar" name="cancel_btn"/>
+	<flyout_button label="Salvar" name="save_btn" tool_tip="Salvar imagem em um arquivo">
+		<flyout_button.item label="Salvar" name="save_item"/>
+		<flyout_button.item label="Salvar como..." name="saveas_item"/>
+	</flyout_button>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7f1452e9926765e97adcfb7d6138d9d2b43e7c2c
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_snapshot_options.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_options">
+	<button label="Postar no feed do meu perfil" name="save_to_profile_btn"/>
+	<button label="E-mail" name="save_to_email_btn"/>
+	<button label="Salvar em Meu inventário (L$[AMOUNT])" name="save_to_inventory_btn"/>
+	<button label="Salvar no meu PC" name="save_to_computer_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_postcard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..12a648f600bc47c3f573caeb77c12023e55ea195
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_snapshot_postcard.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_postcard">
+	<string name="default_subject">
+		Postal do [SECOND_LIFE].
+	</string>
+	<string name="default_message">
+		Confira!
+	</string>
+	<string name="upload_message">
+		Enviando...
+	</string>
+	<text name="title">
+		E-mail
+	</text>
+	<button label="Mensagem" name="message_btn"/>
+	<button label="Configurações" name="settings_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..095b8fc75d5c8c05ed40f5120d8d3637103a817f
--- /dev/null
+++ b/indra/newview/skins/default/xui/pt/panel_snapshot_profile.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_profile">
+	<text name="title">
+		Postar no feed do meu perfil
+	</text>
+	<combo_box label="Resolução" name="profile_size_combo">
+		<combo_box.item label="Janela atual" name="CurrentWindow"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="Customizado" name="Custom"/>
+	</combo_box>
+	<layout_stack name="profile_image_params_ls">
+		<layout_panel name="profile_image_size_lp">
+			<spinner label="Largura" name="profile_snapshot_width"/>
+			<spinner label="Altura" name="profile_snapshot_height"/>
+			<check_box label="Limitar proporções" name="profile_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="profile_image_metadata_lp">
+			<text name="caption_label">
+				Legenda:
+			</text>
+			<check_box initial_value="true" label="Incluir local" name="add_location_cb"/>
+		</layout_panel>
+	</layout_stack>
+	<button label="Cancelar" name="cancel_btn"/>
+	<button label="Postar" name="post_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_status_bar.xml b/indra/newview/skins/default/xui/pt/panel_status_bar.xml
index 0d0f8cbf19370071183a2b6c0020f1445eb92ae6..22853f0643cd32d1deaa7e9ccaaf52530f54e07f 100644
--- a/indra/newview/skins/default/xui/pt/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/pt/panel_status_bar.xml
@@ -18,11 +18,8 @@
 	<panel name="balance_bg">
 		<text name="balance" tool_tip="Atualizar saldo de L$" value="L$20"/>
 		<button label="Comprar L$" name="buyL" tool_tip="Comprar mais L$"/>
+		<button label="Comprar" name="goShop" tool_tip="Abrir Mercado do Second Life" width="80"/>
 	</panel>
-	<combo_box name="mode_combo" tool_tip="Selecione o modo. O modo Básico é mais rápido e ideal para explorar e conversar. Use o modo Avançado para acessar mais recursos.">
-		<combo_box.item label="Modo básico" name="Basic"/>
-		<combo_box.item label="Modo avançado" name="Advanced"/>
-	</combo_box>
 	<text name="TimeText" tool_tip="Hora atual (Pacífico)">
 		24:00 AM PST
 	</text>
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index cffe92461ba72d56bfbbbec33d62a16cbdb87bb4..4babd9cc43e90ea4d2355cba649c146b91b3fb9f 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -34,6 +34,9 @@
 	<string name="ProgressChangingResolution">
 		Alterando a resolução...
 	</string>
+	<string name="Fullbright">
+		Fullbright (antigo)
+	</string>
 	<string name="LoginInProgress">
 		Fazendo login. [APP_NAME] pode parecer congelado. Por favor, aguarde.
 	</string>
@@ -116,7 +119,7 @@
 		A assinatura do certificado dado pelo servidor do Grid não pôde ser verificada.  Contate o administrador do seu Grid.
 	</string>
 	<string name="LoginFailedNoNetwork">
-		Erro de rede: Não foi possível estabelecer a conexão, verifique sua conexão de rede.
+		Erro de rede: Falha de conexão: verifique sua conexão à internet.
 	</string>
 	<string name="LoginFailed">
 		Falha do login.
@@ -544,6 +547,9 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar
 	<string name="mesh">
 		mesh
 	</string>
+	<string name="AvatarEditingAppearance">
+		(Edição Aparência)
+	</string>
 	<string name="AvatarAway">
 		Distante
 	</string>
@@ -1154,7 +1160,7 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar
 		Você não possui uma cópia desta textura no seu inventário
 	</string>
 	<string name="InventoryInboxNoItems">
-		Compras do marketplace serão entregues aqui.
+		Quando você comprar ou receber um item, ele aparecerá aqui para que você possa arrastá-lo para uma pasta em seu inventário ou excluí-lo caso não queira mantê-lo.
 	</string>
 	<string name="MarketplaceURL">
 		http://marketplace.[DOMAIN_NAME]
@@ -1216,6 +1222,9 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar
 	<string name="Marketplace Error Internal Import">
 		Erro: ocorreu um problema com este item. Tente novamente mais tarde.
 	</string>
+	<string name="Open landmarks">
+		Marcos abertos
+	</string>
 	<string name="no_transfer" value="(não transferível)"/>
 	<string name="no_modify" value="(não modificável)"/>
 	<string name="no_copy" value="(não copiável)"/>
@@ -1343,6 +1352,9 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar
 	<string name="no_attachments">
 		Nenhum anexo vestido
 	</string>
+	<string name="Attachments remain">
+		Anexos ([COUNT] slots permanecem)
+	</string>
 	<string name="Buy">
 		Comprar
 	</string>
@@ -1469,6 +1481,12 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar
 	<string name="Right Pec">
 		Peitoral D
 	</string>
+	<string name="Neck">
+		Pescoço
+	</string>
+	<string name="Avatar Center">
+		Centro do avatar
+	</string>
 	<string name="Invalid Attachment">
 		Ponto de encaixe inválido
 	</string>
@@ -3877,16 +3895,28 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		[NAME] lhe pagou L$ [AMOUNT]
 	</string>
 	<string name="you_paid_ldollars">
-		You pagou L$[AMOUNT] por [REASON] a [NAME].
+		Você pagou L$[AMOUNT] por [REASON] a [NAME].
 	</string>
 	<string name="you_paid_ldollars_no_info">
 		Você acaba de pagar L$[AMOUNT].
 	</string>
 	<string name="you_paid_ldollars_no_reason">
-		You pagou L$[AMOUNT] a [NAME].
+		Você pagou L$[AMOUNT] a [NAME].
 	</string>
 	<string name="you_paid_ldollars_no_name">
-		You pagou L$[AMOUNT] por [REASON].
+		Você pagou L$[AMOUNT] por [REASON].
+	</string>
+	<string name="you_paid_failure_ldollars">
+		Você não pagou L$[AMOUNT] a [NAME] referentes a [REASON].
+	</string>
+	<string name="you_paid_failure_ldollars_no_info">
+		Você não pagou L$[AMOUNT].
+	</string>
+	<string name="you_paid_failure_ldollars_no_reason">
+		Você não pagou L$[AMOUNT] a [NAME].
+	</string>
+	<string name="you_paid_failure_ldollars_no_name">
+		Você não pagou L$[AMOUNT] referentes a [REASON].
 	</string>
 	<string name="for item">
 		por [ITEM]
@@ -4115,7 +4145,7 @@ Denunciar abuso
 	<string name="Female - Wow">
 		Wow - feminino
 	</string>
-	<string name="/bow1">
+	<string name="/bow">
 		/reverência
 	</string>
 	<string name="/clap">
@@ -4298,6 +4328,12 @@ Tente colocar o caminho do editor entre aspas.
 	<string name="ExternalEditorFailedToRun">
 		Falha de execução do editor externo.
 	</string>
+	<string name="TranslationFailed">
+		Falha na tradução: [REASON]
+	</string>
+	<string name="TranslationResponseParseError">
+		Erro ao analisar resposta de tradução.
+	</string>
 	<string name="Esc">
 		Esc
 	</string>
@@ -4628,4 +4664,196 @@ Tente colocar o caminho do editor entre aspas.
 	<string name="ParticleHiding">
 		Ocultar partículas
 	</string>
+	<string name="Command_AboutLand_Label">
+		Sobre terrenos
+	</string>
+	<string name="Command_Appearance_Label">
+		Aparência
+	</string>
+	<string name="Command_Avatar_Label">
+		Avatar
+	</string>
+	<string name="Command_Build_Label">
+		Construir
+	</string>
+	<string name="Command_Chat_Label">
+		Bate-papo
+	</string>
+	<string name="Command_Compass_Label">
+		Bússola
+	</string>
+	<string name="Command_Destinations_Label">
+		Destinos
+	</string>
+	<string name="Command_Gestures_Label">
+		Gestos
+	</string>
+	<string name="Command_HowTo_Label">
+		Como
+	</string>
+	<string name="Command_Inventory_Label">
+		Inventário
+	</string>
+	<string name="Command_Map_Label">
+		Mapa
+	</string>
+	<string name="Command_Marketplace_Label">
+		Mercado
+	</string>
+	<string name="Command_MiniMap_Label">
+		Mini Mapa
+	</string>
+	<string name="Command_Move_Label">
+		Andar/correr/voar
+	</string>
+	<string name="Command_People_Label">
+		Pessoas
+	</string>
+	<string name="Command_Picks_Label">
+		Destaques
+	</string>
+	<string name="Command_Places_Label">
+		Lugares
+	</string>
+	<string name="Command_Preferences_Label">
+		Preferências
+	</string>
+	<string name="Command_Profile_Label">
+		Perfil
+	</string>
+	<string name="Command_Search_Label">
+		Buscar
+	</string>
+	<string name="Command_Snapshot_Label">
+		Foto
+	</string>
+	<string name="Command_Speak_Label">
+		Falar
+	</string>
+	<string name="Command_View_Label">
+		Controles da câmera
+	</string>
+	<string name="Command_Voice_Label">
+		Configurações de voz
+	</string>
+	<string name="Command_AboutLand_Tooltip">
+		Informações sobre o terreno que você está visitando
+	</string>
+	<string name="Command_Appearance_Tooltip">
+		Mudar seu avatar
+	</string>
+	<string name="Command_Avatar_Tooltip">
+		Escolha um avatar completo
+	</string>
+	<string name="Command_Build_Tooltip">
+		Construindo objetos e redimensionando terreno
+	</string>
+	<string name="Command_Chat_Tooltip">
+		Bater papo com pessoas próximas usando texto
+	</string>
+	<string name="Command_Compass_Tooltip">
+		Bússola
+	</string>
+	<string name="Command_Destinations_Tooltip">
+		Destinos de interesse
+	</string>
+	<string name="Command_Gestures_Tooltip">
+		Gestos para seu avatar
+	</string>
+	<string name="Command_HowTo_Tooltip">
+		Como executar tarefas comuns
+	</string>
+	<string name="Command_Inventory_Tooltip">
+		Exibir e usar seus pertences
+	</string>
+	<string name="Command_Map_Tooltip">
+		Mapa-múndi
+	</string>
+	<string name="Command_Marketplace_Tooltip">
+		Faça compras
+	</string>
+	<string name="Command_MiniMap_Tooltip">
+		Mostrar quem está aqui
+	</string>
+	<string name="Command_Move_Tooltip">
+		Movendo seu avatar
+	</string>
+	<string name="Command_People_Tooltip">
+		Amigos, grupos e pessoas próximas
+	</string>
+	<string name="Command_Picks_Tooltip">
+		Lugares mostrados como favoritos em seu perfil
+	</string>
+	<string name="Command_Places_Tooltip">
+		Lugares salvos
+	</string>
+	<string name="Command_Preferences_Tooltip">
+		Preferências
+	</string>
+	<string name="Command_Profile_Tooltip">
+		Edite ou visualize seu perfil
+	</string>
+	<string name="Command_Search_Tooltip">
+		Encontre lugares, eventos, pessoas
+	</string>
+	<string name="Command_Snapshot_Tooltip">
+		Tirar uma foto
+	</string>
+	<string name="Command_Speak_Tooltip">
+		Fale com pessoas próximas usando seu microfone
+	</string>
+	<string name="Command_View_Tooltip">
+		Alterar o ângulo da câmera
+	</string>
+	<string name="Command_Voice_Tooltip">
+		Controles de volume das chamadas e pessoas próximas a você no mundo virtual
+	</string>
+	<string name="Toolbar_Bottom_Tooltip">
+		atualmente na sua barra de ferramentas inferior
+	</string>
+	<string name="Toolbar_Left_Tooltip">
+		atualmente na sua barra de ferramentas esquerda
+	</string>
+	<string name="Toolbar_Right_Tooltip">
+		atualmente na sua barra de ferramentas direita
+	</string>
+	<string name="Retain%">
+		Reter%
+	</string>
+	<string name="Detail">
+		Detalhe
+	</string>
+	<string name="Better Detail">
+		Detalhamento maior
+	</string>
+	<string name="Surface">
+		Superfície
+	</string>
+	<string name="Solid">
+		Sólido
+	</string>
+	<string name="Wrap">
+		Conclusão
+	</string>
+	<string name="Preview">
+		Visualizar
+	</string>
+	<string name="Normal">
+		Normal
+	</string>
+	<string name="snapshot_quality_very_low">
+		Muito baixo
+	</string>
+	<string name="snapshot_quality_low">
+		Baixo
+	</string>
+	<string name="snapshot_quality_medium">
+		Médio
+	</string>
+	<string name="snapshot_quality_high">
+		Alto
+	</string>
+	<string name="snapshot_quality_very_high">
+		Muito alto
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/pt/teleport_strings.xml b/indra/newview/skins/default/xui/pt/teleport_strings.xml
index 11ea0f419595623b7a35eb8dd8441d457eb38d72..3fb77a02d26d59f10a3f75468bd1f68a98a47112 100644
--- a/indra/newview/skins/default/xui/pt/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/pt/teleport_strings.xml
@@ -18,6 +18,10 @@ Se você continuar a receber esta mensagem, por favor consulte o [SUPPORT_SITE].
 		<message name="timeout_tport">
 			Desculpe, não foi possível para o sistema executar o teletransporte. Tente novamente dentro de alguns instantes.
 		</message>
+		<message name="NoHelpIslandTP">
+			Não é possível se teletransportar de volta à Ilha Welcome.
+Vá para a &apos;Ilha Welcome Pública&apos; para repetir o tutorial.
+		</message>
 		<message name="noaccess_tport">
 			Desculpe, você não tem acesso ao destino deste teletransporte.
 		</message>
diff --git a/indra/newview/skins/default/xui/ru/floater_aaa.xml b/indra/newview/skins/default/xui/ru/floater_aaa.xml
new file mode 100644
index 0000000000000000000000000000000000000000..aa18a4a4a38208b35156d5920fcd859d68be3630
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_aaa.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Test Floater" title="ТЕСТИРОВАТЬ ОКНО">
+	<string name="test_the_vlt">
+		Эта строка CHANGE2 извлечена.
+	</string>
+	<string name="testing_eli">
+		Проверка изменений.
+	</string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_about.xml b/indra/newview/skins/default/xui/ru/floater_about.xml
new file mode 100644
index 0000000000000000000000000000000000000000..119f104906e3a956f162677815922f8f2e9d0714
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_about.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_about" title="О [CAPITALIZED_APP_NAME]">
+	<floater.string name="AboutHeader">
+		[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
+[[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]]
+	</floater.string>
+	<floater.string name="AboutCompiler">
+		Использован компилятор [COMPILER], версия [COMPILER_VERSION]
+	</floater.string>
+	<floater.string name="AboutPosition">
+		Вы в точке [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] в регионе «[REGION]», расположенном на &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
+[SERVER_VERSION]
+[SERVER_RELEASE_NOTES_URL]
+	</floater.string>
+	<floater.string name="AboutSystem">
+		ЦП: [CPU]
+Память: [MEMORY_MB] МБ
+Версия ОС: [OS_VERSION]
+Производитель графической платы: [GRAPHICS_CARD_VENDOR]
+Графическая плата: [GRAPHICS_CARD]
+	</floater.string>
+	<floater.string name="AboutDriver">
+		Версия графического драйвера Windows: [GRAPHICS_DRIVER_VERSION]
+	</floater.string>
+	<floater.string name="AboutLibs">
+		Версия OpenGL: [OPENGL_VERSION]
+Версия libcurl: [LIBCURL_VERSION]
+Версия декодера J2C: [J2C_VERSION]
+Версия драйвера звука: [AUDIO_DRIVER_VERSION]
+Версия Qt Webkit: [QT_WEBKIT_VERSION]
+Версия голосового сервера: [VOICE_VERSION]
+	</floater.string>
+	<floater.string name="none">
+		(нет)
+	</floater.string>
+	<floater.string name="AboutTraffic">
+		Потеряно пакетов: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
+	</floater.string>
+	<floater.string name="ErrorFetchingServerReleaseNotesURL">
+		Ошибка при получении URL-адреса заметок о выпуске сервера.
+	</floater.string>
+	<tab_container name="about_tab">
+		<panel label="Данные" name="support_panel">
+			<button label="Копировать в буфер обмена" name="copy_btn"/>
+		</panel>
+		<panel label="Создатели" name="credits_panel">
+			<text name="linden_intro">
+				Игра Second Life разработана лабораторией Lindens:
+			</text>
+			<text name="contrib_intro">
+				в написании открытого кода участвовали:
+			</text>
+			<text_editor name="contrib_names">
+				Псевдо-имя изменено при запуске
+			</text_editor>
+			<text name="trans_intro">
+				перевод:
+			</text>
+			<text_editor name="trans_names">
+				Псевдо-имя изменено при запуске
+			</text_editor>
+		</panel>
+		<panel label="Лицензии" name="licenses_panel">
+			<text_editor name="credits_editor">
+				3Dconnexion SDK (C) 1992-2007 3Dconnexion
+        APR (C) 2000-2004 The Apache Software Foundation
+        Collada DOM (C) 2005 Sony Computer Entertainment Inc.
+        cURL (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se)
+        DBus/dbus-glib (C) 2002, 2003  CodeFactory AB / (C) 2003, 2004 Red Hat, Inc.
+        expat (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
+        FreeType (C) 1996-2002, The FreeType Project (www.freetype.org).
+        GL (C) 1999-2004 Brian Paul.
+        GLOD (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Университет Джона Гопкинса и David Luebke, Brenden Schubert, Университет Вирджинии.
+        google-perftools (c) 2005, Google Inc.
+        Havok.com(TM) (C) 1999-2001, Telekinesys Research Limited.
+        jpeg2000 (C) 2001, David Taubman, Университет Нового Южного Уэльса (UNSW)
+        jpeglib (C) 1991-1998, Thomas G. Lane.
+        ogg/vorbis (C) 2001, Xiphophorus
+        OpenSSL (C) 1998-2002 The OpenSSL Project.
+        PCRE (c) 1997-2008, Кембриджский университет
+        SDL (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
+        SSLeay (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+        xmlrpc-epi (C) 2000 Epinions, Inc.
+        zlib (C) 1995-2002 Jean-loup Gailly и Mark Adler.
+        google-perftools (c) 2005, Google Inc.
+
+        В клиенте Second Life используется технология Havok (TM) Physics. (C) 1999-2010 Havok.com Inc. (и лицензиары компании). Все права защищены. Подробнее см. веб-сайт www.havok.com.
+
+        Это программное обеспечение содержит исходный код, предоставленный корпорацией NVIDIA.
+
+        Все права защищены.  Подробные сведения см. в файле licenses.txt.
+
+        Кодирование звука для голосового чата: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
+			</text_editor>
+		</panel>
+	</tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_about_land.xml b/indra/newview/skins/default/xui/ru/floater_about_land.xml
new file mode 100644
index 0000000000000000000000000000000000000000..46414a530aa9b9b4dd6455938c6fc6f2bb23d625
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_about_land.xml
@@ -0,0 +1,489 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floaterland" title="О ЗЕМЛЕ">
+	<floater.string name="maturity_icon_general">
+		&quot;Parcel_PG_Dark&quot;
+	</floater.string>
+	<floater.string name="maturity_icon_moderate">
+		&quot;Parcel_M_Dark&quot;
+	</floater.string>
+	<floater.string name="maturity_icon_adult">
+		&quot;Parcel_R_Dark&quot;
+	</floater.string>
+	<floater.string name="Minutes">
+		[MINUTES] мин
+	</floater.string>
+	<floater.string name="Minute">
+		минута
+	</floater.string>
+	<floater.string name="Seconds">
+		[SECONDS] с
+	</floater.string>
+	<floater.string name="Remaining">
+		осталось
+	</floater.string>
+	<tab_container name="landtab">
+		<panel label="ОСНОВНЫЕ" name="land_general_panel">
+			<panel.string name="new users only">
+				Только новые жители
+			</panel.string>
+			<panel.string name="anyone">
+				Все
+			</panel.string>
+			<panel.string name="area_text">
+				Площадь
+			</panel.string>
+			<panel.string name="area_size_text">
+				[AREA] м²
+			</panel.string>
+			<panel.string name="auction_id_text">
+				ID аукциона: [ID]
+			</panel.string>
+			<panel.string name="need_tier_to_modify">
+				Вы должны подтвердить покупку, чтобы изменять эту землю.
+			</panel.string>
+			<panel.string name="group_owned_text">
+				(Собственность группы)
+			</panel.string>
+			<panel.string name="profile_text">
+				Профиль
+			</panel.string>
+			<panel.string name="info_text">
+				Информация
+			</panel.string>
+			<panel.string name="public_text">
+				(публичное)
+			</panel.string>
+			<panel.string name="none_text">
+				(нет)
+			</panel.string>
+			<panel.string name="sale_pending_text">
+				(Ожидание продажи)
+			</panel.string>
+			<panel.string name="no_selection_text">
+				Участок не выбран.
+			</panel.string>
+			<panel.string name="time_stamp_template">
+				[wkday,datetime,local], [day,datetime,local] [mth,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+			</panel.string>
+			<text name="Name:">
+				Название:
+			</text>
+			<text name="Description:">
+				Описание:
+			</text>
+			<text name="LandType">
+				Тип:
+			</text>
+			<text name="LandTypeText">
+				Материк / поместье
+			</text>
+			<text name="ContentRating">
+				Рейтинг:
+			</text>
+			<text name="ContentRatingText">
+				Взрослый
+			</text>
+			<text name="Owner:">
+				Владелец:
+			</text>
+			<text name="Group:">
+				Группа:
+			</text>
+			<button label="Задать" name="Set..."/>
+			<check_box label="Разрешить передачу земли группе" name="check deed" tool_tip="Должностное лицо группы может передать эту землю группе с учетом существующего взноса."/>
+			<button label="Сделка" name="Deed..." tool_tip="Вы можете передать землю только если вы являетесь должностным лицом выбранной группы."/>
+			<check_box label="Владелец делает взносы при передаче" name="check contrib" tool_tip="Когда земля передается группе, бывший владелец делает взнос, достаточный для поддержки земли."/>
+			<text name="For Sale:">
+				Для продажи:
+			</text>
+			<text name="Not for sale.">
+				Не для продажи
+			</text>
+			<text name="For Sale: Price L$[PRICE].">
+				Цена: L$[PRICE] (L$[PRICE_PER_SQM]/м²)
+			</text>
+			<button label="Продать землю" name="Sell Land..."/>
+			<text name="For sale to">
+				Продажа для: [BUYER]
+			</text>
+			<text name="Sell with landowners objects in parcel.">
+				Объекты продаются вместе с землей
+			</text>
+			<text name="Selling with no objects in parcel.">
+				Объекты не продаются вместе с землей
+			</text>
+			<button label="Отменить продажу земли" label_selected="Отменить продажу земли" name="Cancel Land Sale"/>
+			<text name="Claimed:">
+				Собственность с:
+			</text>
+			<text name="DateClaimText">
+				Вт 15 Авг 13:47:25 2006
+			</text>
+			<text name="PriceLabel">
+				Площадь:
+			</text>
+			<text name="PriceText">
+				4048 м²
+			</text>
+			<text name="Traffic:">
+				Посещаемость:
+			</text>
+			<text name="DwellText">
+				Загрузка...
+			</text>
+			<button label="Купить землю" name="Buy Land..."/>
+			<button label="Продать для Linden" name="Linden Sale..." tool_tip="Земля должна быть в собственности, иметь заданное содержимое и не быть выставленной на аукцион,"/>
+			<button label="Информация о скриптах" name="Scripts..."/>
+			<button label="Купить для группы" name="Buy For Group..."/>
+			<button label="Купить пропуск" name="Buy Pass..." tool_tip="Пропуск дает вам временный доступ на эту землю."/>
+			<button label="Отказаться от земли" name="Abandon Land..."/>
+			<button label="Присвоить землю" name="Reclaim Land..."/>
+		</panel>
+		<panel label="СОГЛАШЕНИЕ" name="land_covenant_panel">
+			<panel.string name="can_resell">
+				Купленная в этом регионе земля может быть перепродана.
+			</panel.string>
+			<panel.string name="can_not_resell">
+				Купленная в этом регионе земля не может быть перепродана.
+			</panel.string>
+			<panel.string name="can_change">
+				Купленная в этом регионе земля может быть объединена или разделена.
+			</panel.string>
+			<panel.string name="can_not_change">
+				Купленная в этом регионе земля не может быть объединена или разделена.
+			</panel.string>
+			<text name="estate_section_lbl">
+				Землевладение:
+			</text>
+			<text name="estate_name_text">
+				материк
+			</text>
+			<text name="estate_owner_lbl">
+				Владелец:
+			</text>
+			<text name="estate_owner_text">
+				(нет)
+			</text>
+			<text_editor name="covenant_editor">
+				Нет соглашения для этого землевладения.
+			</text_editor>
+			<text name="covenant_timestamp_text">
+				Последние изменения Ср 31 Дек 16:00:00 1969
+			</text>
+			<text name="region_section_lbl">
+				Регион:
+			</text>
+			<text name="region_name_text">
+				Эрикавиль
+			</text>
+			<text name="region_landtype_lbl">
+				Тип:
+			</text>
+			<text name="region_landtype_text">
+				Материк / поместье
+			</text>
+			<text name="region_maturity_lbl">
+				Рейтинг:
+			</text>
+			<text name="region_maturity_text">
+				Взрослый
+			</text>
+			<text name="resellable_lbl">
+				Перепродажа:
+			</text>
+			<text name="resellable_clause">
+				Земля в этом регионе не может быть перепродана.
+			</text>
+			<text name="changeable_lbl">
+				Разделение:
+			</text>
+			<text name="changeable_clause">
+				Земля в этом регионе не может быть объединена или разделена.
+			</text>
+		</panel>
+		<panel label="ОБЪЕКТЫ" name="land_objects_panel">
+			<panel.string name="objects_available_text">
+				[COUNT] из [MAX] ([AVAILABLE] доступно)
+			</panel.string>
+			<panel.string name="objects_deleted_text">
+				[COUNT] из [MAX] ([DELETED] будет удалено)
+			</panel.string>
+			<text name="parcel_object_bonus">
+				Бонусный множитель для объектов: [BONUS]
+			</text>
+			<text name="Simulator primitive usage:">
+				Емкость региона:
+			</text>
+			<text name="objects_available">
+				[COUNT] из [MAX] ([AVAILABLE] доступно)
+			</text>
+			<text name="Primitives parcel supports:">
+				Емкость участка:
+			</text>
+			<text name="object_contrib_text">
+				[COUNT]
+			</text>
+			<text name="Primitives on parcel:">
+				Воздействие участка:
+			</text>
+			<text name="total_objects_text">
+				[COUNT]
+			</text>
+			<text name="Owned by parcel owner:">
+				Собственность владельца:
+			</text>
+			<text name="owner_objects_text">
+				[COUNT]
+			</text>
+			<button label="Показать" label_selected="Показать" name="ShowOwner"/>
+			<button label="Возврат" name="ReturnOwner..." tool_tip="Вернуть объекты их владельцам."/>
+			<text name="Set to group:">
+				Установлено группой:
+			</text>
+			<text name="group_objects_text">
+				[COUNT]
+			</text>
+			<button label="Показать" label_selected="Показать" name="ShowGroup"/>
+			<button label="Возврат" name="ReturnGroup..." tool_tip="Вернуть объекты их владельцам."/>
+			<text name="Owned by others:">
+				Собственность других:
+			</text>
+			<text name="other_objects_text">
+				[COUNT]
+			</text>
+			<button label="Показать" label_selected="Показать" name="ShowOther"/>
+			<button label="Возврат" name="ReturnOther..." tool_tip="Вернуть объекты их владельцам."/>
+			<text name="Selected / sat upon:">
+				Выбрано / транспорт:
+			</text>
+			<text name="selected_objects_text">
+				[COUNT]
+			</text>
+			<text name="Autoreturn">
+				Автовозвращение объектов других жителей (в минутах, 0 – отключено):
+			</text>
+			<text name="Object Owners:">
+				Владельцы объектов:
+			</text>
+			<button name="Refresh List" tool_tip="Обновить список объектов"/>
+			<button label="Вернуть объекты" name="Return objects..."/>
+			<name_list name="owner list">
+				<name_list.columns label="Тип" name="type"/>
+				<name_list.columns label="Название" name="name"/>
+				<name_list.columns label="Кол-во" name="count"/>
+				<name_list.columns label="Последний объект" name="mostrecent"/>
+			</name_list>
+		</panel>
+		<panel label="НАСТРОЙКИ" name="land_options_panel">
+			<panel.string name="search_enabled_tooltip">
+				Позволить людям видеть участок в результатах поиска
+			</panel.string>
+			<panel.string name="search_disabled_small_tooltip">
+				Этот параметр недоступен, потому площадь участка не превышает 128 м².
+Только большие участки могут быть показаны в поиске.
+			</panel.string>
+			<panel.string name="search_disabled_permissions_tooltip">
+				Этот параметр недоступен, потому что вы не можете изменять его на этом участке.
+			</panel.string>
+			<panel.string name="mature_check_mature">
+				Умеренный контент
+			</panel.string>
+			<panel.string name="mature_check_adult">
+				Контент для взрослых
+			</panel.string>
+			<panel.string name="mature_check_mature_tooltip">
+				Информация или содержимое вашего участка расценивается как moderate.
+			</panel.string>
+			<panel.string name="mature_check_adult_tooltip">
+				Информация или содержимое вашего участка расценивается как adult.
+			</panel.string>
+			<panel.string name="landing_point_none">
+				(нет)
+			</panel.string>
+			<panel.string name="push_restrict_text">
+				Не толкать
+			</panel.string>
+			<panel.string name="push_restrict_region_text">
+				Не толкать (настройки региона)
+			</panel.string>
+			<panel.string name="see_avs_text">
+				Аватары с других участков могут видеть
+			</panel.string>
+			<text name="allow_label">
+				Позволить другим жителям:
+			</text>
+			<text name="allow_label0">
+				Полет:
+			</text>
+			<check_box label="Все" name="check fly" tool_tip="Если отмечено, жители смогут летать над вашей землей. Если не отметить, они смогут только прилетать и пролетать мимо земли."/>
+			<text name="allow_label2">
+				Строительство:
+			</text>
+			<check_box label="Все" name="edit objects check"/>
+			<check_box label="Группа" name="edit group objects check"/>
+			<text name="allow_label3">
+				Проникновение объектов:
+			</text>
+			<check_box label="Все" name="all object entry check"/>
+			<check_box label="Группа" name="group object entry check"/>
+			<text name="allow_label4">
+				Запускать скрипты:
+			</text>
+			<check_box label="Все" name="check other scripts"/>
+			<check_box label="Группа" name="check group scripts"/>
+			<check_box label="Безопасно (нет повреждений)" name="check safe" tool_tip="Если отмечено, то земля считается безопасной, отключены боевые повреждения. Если не отмечено, то боевые повреждения включены."/>
+			<check_box label="Не толкать" name="PushRestrictCheck" tool_tip="Запрещает скриптам функцию толкания. Этот параметр может оказаться полезным для предотвращения нежелательного поведения на вашей земле."/>
+			<check_box label="Показать место в поиске (L$30/неделя)" name="ShowDirectoryCheck" tool_tip="Позволить людям видеть участок в результатах поиска"/>
+			<combo_box name="land category with adult">
+				<combo_box.item label="Любая категория" name="item0"/>
+				<combo_box.item label="Место Linden" name="item1"/>
+				<combo_box.item label="Взрослый" name="item2"/>
+				<combo_box.item label="Искусство и культура" name="item3"/>
+				<combo_box.item label="Бизнес" name="item4"/>
+				<combo_box.item label="Образование" name="item5"/>
+				<combo_box.item label="Игры" name="item6"/>
+				<combo_box.item label="Места встреч" name="item7"/>
+				<combo_box.item label="Для новичков" name="item8"/>
+				<combo_box.item label="Парки и природа" name="item9"/>
+				<combo_box.item label="Проживание" name="item10"/>
+				<combo_box.item label="Покупки" name="item11"/>
+				<combo_box.item label="Аренда" name="item13"/>
+				<combo_box.item label="Другое" name="item12"/>
+			</combo_box>
+			<combo_box name="land category">
+				<combo_box.item label="Любая категория" name="item0"/>
+				<combo_box.item label="Место Linden" name="item1"/>
+				<combo_box.item label="Искусство и культура" name="item3"/>
+				<combo_box.item label="Бизнес" name="item4"/>
+				<combo_box.item label="Образование" name="item5"/>
+				<combo_box.item label="Игры" name="item6"/>
+				<combo_box.item label="Места встреч" name="item7"/>
+				<combo_box.item label="Для новичков" name="item8"/>
+				<combo_box.item label="Парки и природа" name="item9"/>
+				<combo_box.item label="Проживание" name="item10"/>
+				<combo_box.item label="Покупки" name="item11"/>
+				<combo_box.item label="Аренда" name="item13"/>
+				<combo_box.item label="Другое" name="item12"/>
+			</combo_box>
+			<check_box label="Умеренный контент" name="MatureCheck" tool_tip=" "/>
+			<text name="Snapshot:">
+				Снимок:
+			</text>
+			<texture_picker name="snapshot_ctrl" tool_tip="Щелкните для выбора изображения"/>
+			<text name="allow_label5">
+				аватары на этом участке и общаться с ними
+			</text>
+			<check_box label="Видны аватары" name="SeeAvatarsCheck" tool_tip="Аватары с других участков смогут видеть аватары на этом участке и общаться с ними в чате, а вы также сможете видеть их и общаться с ними."/>
+			<text name="landing_point">
+				В точку телепортации: [LANDING]
+			</text>
+			<button label="Задать" label_selected="Задать" name="Set" tool_tip="Установить точку телепортации, в которую будут прибывать посетители, Ставится в месте вашего аватара на этом участке."/>
+			<button label="Чисто" label_selected="Чисто" name="Clear" tool_tip="Удалить данные о точке телепортации"/>
+			<text name="Teleport Routing: ">
+				Вариант телепортации:
+			</text>
+			<combo_box name="landing type" tool_tip="Вариант телепортации – выберите, каким образом будет производиться телепортация на вашу землю">
+				<combo_box.item label="В черном списке" name="Blocked"/>
+				<combo_box.item label="В точку телепортации" name="LandingPoint"/>
+				<combo_box.item label="В любое место" name="Anywhere"/>
+			</combo_box>
+		</panel>
+		<panel label="МЕДИА" name="land_media_panel">
+			<text name="with media:">
+				Тип:
+			</text>
+			<combo_box name="media type" tool_tip="Укажите, чем является ссылка – видео, веб-страница или другое медиа"/>
+			<text name="at URL:">
+				Дом. страница:
+			</text>
+			<button label="Задать" name="set_media_url"/>
+			<text name="Description:">
+				Описание:
+			</text>
+			<line_editor name="url_description" tool_tip="Текст, показываемый рядом с кнопкой проигрывания/загрузки"/>
+			<text name="Media texture:">
+				Замена текстуры:
+			</text>
+			<texture_picker name="media texture" tool_tip="Щелкните для выбора изображения"/>
+			<text name="replace_texture_help">
+				Объект, использующий эту текстуру, будет показывать видео или веб-страницу после нажатия  кнопки проигрывания.  Щелкните на миниатюре для выбора другой текстуры.
+			</text>
+			<check_box label="Автомасштабирование" name="media_auto_scale" tool_tip="В результате установки этого флажка контент для этого участка автоматически масштабируется. Это происходит немного медленнее и в более низком качестве изображения, но не требуется масштабирование и выравнивание текстуры."/>
+			<text name="media_size" tool_tip="Размер отображения веб-медиа, по умолчанию – 0.">
+				Размер:
+			</text>
+			<spinner name="media_size_width" tool_tip="Размер отображения веб-медиа, по умолчанию – 0."/>
+			<spinner name="media_size_height" tool_tip="Размер отображения веб-медиа, по умолчанию – 0."/>
+			<text name="pixels">
+				пикс.
+			</text>
+			<text name="Options:">
+				Опции:
+			</text>
+			<check_box label="Цикл" name="media_loop" tool_tip="Проигрывать медиа в цикле.  По завершении проигрывания медиа оно запустится с начала."/>
+		</panel>
+		<panel label="ЗВУК" name="land_audio_panel">
+			<text name="MusicURL:">
+				URL музыки:
+			</text>
+			<text name="Sound:">
+				Звук:
+			</text>
+			<check_box label="Запретить звуки от жестов и объектов на этом участке" name="check sound local"/>
+			<text name="Avatar Sounds:">
+				Звуки аватара:
+			</text>
+			<check_box label="Все" name="all av sound check"/>
+			<check_box label="Группа" name="group av sound check"/>
+			<text name="Voice settings:">
+				Голос:
+			</text>
+			<check_box label="Включить голос" name="parcel_enable_voice_channel"/>
+			<check_box label="Разрешить голосовое общение (установлено на землевладении)" name="parcel_enable_voice_channel_is_estate_disabled"/>
+			<check_box label="Запретить голосовое общение на этом участке" name="parcel_enable_voice_channel_local"/>
+		</panel>
+		<panel label="ДОСТУП" name="land_access_panel">
+			<panel.string name="access_estate_defined">
+				(Определено на землевладении)
+			</panel.string>
+			<panel.string name="allow_public_access">
+				Разрешить общий доступ ([MATURITY]) (Снятие приведет к созданию линий запрета)
+			</panel.string>
+			<panel.string name="estate_override">
+				Часть этих параметров установлена на уровне землевладения
+			</panel.string>
+			<text name="Limit access to this parcel to:">
+				Доступ на этот участок
+			</text>
+			<text name="Only Allow">
+				Разрешить доступ только жителям, у которых:
+			</text>
+			<check_box label="Записана информация об оплате [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Банить нераспознанных жителей."/>
+			<check_box label="Проверка возраста [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Банить жителей, не прошедших проверку возраста. Более подробная информация находится здесь: [SUPPORT_SITE]."/>
+			<check_box label="Разрешить доступ группе: [GROUP]" name="GroupCheck" tool_tip="Группа устанавливается на основной вкладке."/>
+			<check_box label="Продать доступ:" name="PassCheck" tool_tip="Разрешить временный доступ к участку."/>
+			<combo_box name="pass_combo">
+				<combo_box.item label="Все" name="Anyone"/>
+				<combo_box.item label="Группа" name="Group"/>
+			</combo_box>
+			<spinner label="Цена в L$:" name="PriceSpin"/>
+			<spinner label="Часы доступа:" name="HoursSpin"/>
+			<panel name="Allowed_layout_panel">
+				<text label="Всегда разрешено" name="AllowedText">
+					Допущенные жители
+				</text>
+				<name_list name="AccessList" tool_tip="([LISTED] в списке, [MAX] максимум)"/>
+				<button label="Добавить" name="add_allowed"/>
+				<button label="Удалить" label_selected="Удалить" name="remove_allowed"/>
+			</panel>
+			<panel name="Banned_layout_panel">
+				<text label="Бан" name="BanCheck">
+					Забаненные жители
+				</text>
+				<name_list name="BannedList" tool_tip="([LISTED] в списке, [MAX] максимум)"/>
+				<button label="Добавить" name="add_banned"/>
+				<button label="Удалить" label_selected="Удалить" name="remove_banned"/>
+			</panel>
+		</panel>
+	</tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_activeim.xml b/indra/newview/skins/default/xui/ru/floater_activeim.xml
new file mode 100644
index 0000000000000000000000000000000000000000..adfa277822a28c53fe6a009c71c1fc36a3bd1108
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_activeim.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_activeim" title="АКТИВНОЕ СООБЩЕНИЕ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_animation_preview.xml b/indra/newview/skins/default/xui/ru/floater_animation_preview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b7075fbf97a7bc5dc686f784fdd5c9c723e7aaba
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_animation_preview.xml
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Animation Preview">
+	<floater.string name="failed_to_initialize">
+		Невозможно инициализировать движение
+	</floater.string>
+	<floater.string name="anim_too_long">
+		Длина файла анимации: [LENGTH] с.
+Максимальная длина анимации: [MAX_LENGTH] с.
+	</floater.string>
+	<floater.string name="failed_file_read">
+		Невозможно прочитать файл анимации.
+[STATUS]
+	</floater.string>
+	<floater.string name="E_ST_OK">
+		ОК
+	</floater.string>
+	<floater.string name="E_ST_EOF">
+		Преждевременный конец файла.
+	</floater.string>
+	<floater.string name="E_ST_NO_CONSTRAINT">
+		Не могу прочитать определение ограничений.
+	</floater.string>
+	<floater.string name="E_ST_NO_FILE">
+		Не удалось открыть BVH-файл.
+	</floater.string>
+	<floater.string name="E_ST_NO_HIER">
+		Неправильный заголовок HIERARCHY.
+	</floater.string>
+	<floater.string name="E_ST_NO_JOINT">
+		Не удалось найти ROOT или JOINT.
+	</floater.string>
+	<floater.string name="E_ST_NO_NAME">
+		Не удалось получить имя JOINT.
+	</floater.string>
+	<floater.string name="E_ST_NO_OFFSET">
+		Не удалось найти OFFSET.
+	</floater.string>
+	<floater.string name="E_ST_NO_CHANNELS">
+		Не удалось найти CHANNELS.
+	</floater.string>
+	<floater.string name="E_ST_NO_ROTATION">
+		Не удалось получить порядок вращения.
+	</floater.string>
+	<floater.string name="E_ST_NO_AXIS">
+		Не удалось получить оси вращения.
+	</floater.string>
+	<floater.string name="E_ST_NO_MOTION">
+		Не удалось найти MOTION.
+	</floater.string>
+	<floater.string name="E_ST_NO_FRAMES">
+		Не удалось получить количество кадров.
+	</floater.string>
+	<floater.string name="E_ST_NO_FRAME_TIME">
+		Не удалось получить время кадра.
+	</floater.string>
+	<floater.string name="E_ST_NO_POS">
+		Не удалось получить значения position.
+	</floater.string>
+	<floater.string name="E_ST_NO_ROT">
+		Не удалось получить значения rotation.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_FILE">
+		Не удалось открыть файл перевода.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_HEADER">
+		Не удалось прочитать заголовок перевода.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_NAME">
+		Не удалось прочитать имена перевода.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_IGNORE">
+		Не удалось прочитать значение перевода ignore.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_RELATIVE">
+		Не удалось прочитать значение перевода relative.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_OUTNAME">
+		Не удалось прочитать значение перевода outname.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_MATRIX">
+		Не удалось прочитать матрицу перевода.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_MERGECHILD">
+		Не удалось получить имя mergechild.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_MERGEPARENT">
+		Не удалось получить имя mergeparent.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_PRIORITY">
+		Не удалось получить значение priority.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_LOOP">
+		Не удалось получить значение loop.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_EASEIN">
+		Не удалось получить значения easeIn.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_EASEOUT">
+		Не удалось получить значения easeOut.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_HAND">
+		Не удалось получить значение hand morph.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_EMOTE">
+		Не удалось прочитать имя emote.
+	</floater.string>
+	<floater.string name="E_ST_BAD_ROOT">
+		Неверное имя корневого соединения, должно быть «hip».
+	</floater.string>
+	<text name="name_label">
+		Название:
+	</text>
+	<text name="description_label">
+		Описание:
+	</text>
+	<spinner label="Приоритет" name="priority" tool_tip="Управляет тем, как другие анимации могут перекрываться этой"/>
+	<check_box label="Цикл" name="loop_check" tool_tip="Делает анимацию зацикленной"/>
+	<spinner label="Начало(%)" name="loop_in_point" tool_tip="Устанавливает точку возврата цикла"/>
+	<spinner label="Конец(%)" name="loop_out_point" tool_tip="Устанавливает точку конца цикла"/>
+	<text name="hand_label">
+		Положение пальцев
+	</text>
+	<combo_box name="hand_pose_combo" tool_tip="Контролирует положение пальцев во время анимации">
+		<combo_box.item label="Разведены" name="Spread"/>
+		<combo_box.item label="Расслаблены" name="Relaxed"/>
+		<combo_box.item label="Указывают" name="PointBoth"/>
+		<combo_box.item label="Сжаты в кулаки" name="Fist"/>
+		<combo_box.item label="Левые расслаблены" name="RelaxedLeft"/>
+		<combo_box.item label="Левые указывают" name="PointLeft"/>
+		<combo_box.item label="Левые в кулак" name="FistLeft"/>
+		<combo_box.item label="Правые расслаблены" name="RelaxedRight"/>
+		<combo_box.item label="Правые указывают" name="PointRight"/>
+		<combo_box.item label="Правые в кулак" name="FistRight"/>
+		<combo_box.item label="Правые в приветствии" name="SaluteRight"/>
+		<combo_box.item label="Печатают" name="Typing"/>
+		<combo_box.item label="Правые «V»" name="PeaceRight"/>
+	</combo_box>
+	<text name="emote_label">
+		Выражение лица
+	</text>
+	<combo_box name="emote_combo" tool_tip="Контролирует выражение лица во время анимации">
+		<item label="(нет)" name="[None]" value=""/>
+		<item label="Ааааах" name="Aaaaah" value="Ааааах"/>
+		<item label="Боится" name="Afraid" value="Боится"/>
+		<item label="Злится" name="Angry" value="Злится"/>
+		<item label="Широко улыбается" name="BigSmile" value="Широко улыбается"/>
+		<item label="Скучает" name="Bored" value="Скучает"/>
+		<item label="Плачет" name="Cry" value="Плачет"/>
+		<item label="Презирает" name="Disdain" value="Презирает"/>
+		<item label="Смущается" name="Embarrassed" value="Смущается"/>
+		<item label="Хмурится" name="Frown" value="Хмурится"/>
+		<item label="Целует" name="Kiss" value="Целует"/>
+		<item label="Смеется" name="Laugh" value="Смеется"/>
+		<item label="Дразнится" name="Plllppt" value="Дразнится"/>
+		<item label="Не соглашается" name="Repulsed" value="Не соглашается"/>
+		<item label="Грустит" name="Sad" value="Грустит"/>
+		<item label="Не понимает" name="Shrug" value="Не понимает"/>
+		<item label="Улыбается" name="Smile" value="Улыбается"/>
+		<item label="Удивляется" name="Surprise" value="Удивляется"/>
+		<item label="Подмигивает" name="Wink" value="Подмигивает"/>
+		<item label="Беспокоится" name="Worry" value="Беспокоится"/>
+	</combo_box>
+	<text name="preview_label">
+		Просмотр во время
+	</text>
+	<combo_box name="preview_base_anim" tool_tip="Просмотр вашей анимации во время выполнения аватаром действий.">
+		<item label="Стояние" name="Standing" value="Стояние"/>
+		<item label="Ходьба" name="Walking" value="Ходьба"/>
+		<item label="Сидение" name="Sitting" value="Сидение"/>
+		<item label="Полет" name="Flying" value="Полет"/>
+	</combo_box>
+	<spinner label="Вход (сек.)" name="ease_in_time" tool_tip="Количество времени (в секундах) для входа в стартовое положение"/>
+	<spinner label="Выход (сек.)" name="ease_out_time" tool_tip="Количество времени (в секундах) для выхода из анимации"/>
+	<button name="play_btn" tool_tip="Проиграть анимацию"/>
+	<button name="pause_btn" tool_tip="Приостановить анимацию"/>
+	<button name="stop_btn" tool_tip="Остановить проигрывание анимации"/>
+	<text name="bad_animation_text">
+		Невозможно прочитать файл анимации.
+Рекомендуется использовать BVH-файлы, экспортированные из Poser 4.
+	</text>
+	<button label="Передать (L$[AMOUNT])" name="ok_btn"/>
+	<button label="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_auction.xml b/indra/newview/skins/default/xui/ru/floater_auction.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d84dc2e941247dfc4f0f934e24100e5e0b0dcfb4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_auction.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_auction" title="НАЧАТЬ ПРОДАЖУ ЗЕМЛИ ЛИНДЕНОВ">
+	<floater.string name="already for sale">
+		Нельзя выставить на аукцион участки, которые уже продаются.
+	</floater.string>
+	<check_box initial_value="истина" label="Включая желтую ограду вокруг выбранного участка" name="fence_check"/>
+	<button label="Снимок" label_selected="Снимок" name="snapshot_btn"/>
+	<button label="Купить может каждый" label_selected="Купить может каждый" name="sell_to_anyone_btn"/>
+	<button label="Очистить настройки" label_selected="Очистить настройки" name="reset_parcel_btn"/>
+	<button label="Начать аукцион" label_selected="Начать аукцион" name="start_auction_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_avatar.xml b/indra/newview/skins/default/xui/ru/floater_avatar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b480af9345d3891a073f6b8229c0f9eb82f895b5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="ВЫБЕРИТЕ АВАТАР"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_avatar_picker.xml b/indra/newview/skins/default/xui/ru/floater_avatar_picker.xml
new file mode 100644
index 0000000000000000000000000000000000000000..edcc35d2b9eeec2c9d610406f88e9d6e127b863c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_avatar_picker.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="avatarpicker" title="ВЫБЕРИТЕ ЖИТЕЛЯ">
+	<floater.string name="not_found">
+		Текст «[TEXT]» не найден
+	</floater.string>
+	<floater.string name="no_one_near">
+		Рядом никого нет
+	</floater.string>
+	<floater.string name="no_results">
+		Нет результатов
+	</floater.string>
+	<floater.string name="searching">
+		Поиск...
+	</floater.string>
+	<string name="Select">
+		Выбрать
+	</string>
+	<string name="Close">
+		Закрыть
+	</string>
+	<tab_container name="ResidentChooserTabs">
+		<panel label="Поиск" name="SearchPanel">
+			<text name="InstructSearchResidentName">
+				Наберите часть имени жителя:
+			</text>
+			<button label="Перейти" label_selected="Перейти" name="Find"/>
+			<scroll_list name="SearchResults">
+				<columns label="Название" name="name"/>
+				<columns label="Имя пользователя" name="username"/>
+			</scroll_list>
+		</panel>
+		<panel label="Друзья" name="FriendsPanel">
+			<text name="InstructSelectFriend">
+				Выберите жителя:
+			</text>
+		</panel>
+		<panel label="Рядом со мной" name="NearMePanel">
+			<text name="InstructSelectResident">
+				Выберите жителя поблизости:
+			</text>
+			<slider label="Расстояние" name="near_me_range"/>
+			<text name="meters">
+				Метров
+			</text>
+			<scroll_list name="NearMe">
+				<columns label="Название" name="name"/>
+				<columns label="Имя пользователя" name="username"/>
+			</scroll_list>
+		</panel>
+	</tab_container>
+	<button label="ОК" label_selected="ОК" name="ok_btn"/>
+	<button label="Отмена" label_selected="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_avatar_textures.xml b/indra/newview/skins/default/xui/ru/floater_avatar_textures.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cb39f66247a6f445600b584e57e0014c2ad333f1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_avatar_textures.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="avatar_texture_debug" title="ТЕКСТУРЫ АВАТАРА">
+	<floater.string name="InvalidAvatar">
+		НЕПРАВИЛЬНЫЙ АВАТАР
+	</floater.string>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<text name="label">
+				Сброшенные
+Текстуры
+			</text>
+			<text name="composite_label">
+				Сложные
+Текстуры
+			</text>
+			<button label="Вывод ID на консоль" label_selected="Вывод" name="Dump"/>
+			<panel name="scroll_content_panel">
+				<texture_picker label="Волосы" name="hair-baked"/>
+				<texture_picker label="Волосы" name="hair_grain"/>
+				<texture_picker label="Альфа волос" name="hair_alpha"/>
+				<texture_picker label="Голова" name="head-baked"/>
+				<texture_picker label="Макияж" name="head_bodypaint"/>
+				<texture_picker label="Альфа головы" name="head_alpha"/>
+				<texture_picker label="Тату головы" name="head_tattoo"/>
+				<texture_picker label="Глаза" name="eyes-baked"/>
+				<texture_picker label="Глаз" name="eyes_iris"/>
+				<texture_picker label="Альфа глаз" name="eyes_alpha"/>
+				<texture_picker label="Верхняя часть тела" name="upper-baked"/>
+				<texture_picker label="Раскраска верхней части тела" name="upper_bodypaint"/>
+				<texture_picker label="Майка" name="upper_undershirt"/>
+				<texture_picker label="Перчатки" name="upper_gloves"/>
+				<texture_picker label="Рубашка" name="upper_shirt"/>
+				<texture_picker label="Верх пиджака" name="upper_jacket"/>
+				<texture_picker label="Альфа верха" name="upper_alpha"/>
+				<texture_picker label="Тату верха" name="upper_tattoo"/>
+				<texture_picker label="Нижняя часть тела" name="lower-baked"/>
+				<texture_picker label="Раскраска нижней части тела" name="lower_bodypaint"/>
+				<texture_picker label="Трусы" name="lower_underpants"/>
+				<texture_picker label="Носки" name="lower_socks"/>
+				<texture_picker label="Обувь" name="lower_shoes"/>
+				<texture_picker label="Брюки" name="lower_pants"/>
+				<texture_picker label="Пиджак" name="lower_jacket"/>
+				<texture_picker label="Альфа низа" name="lower_alpha"/>
+				<texture_picker label="Тату низа" name="lower_tattoo"/>
+				<texture_picker label="Юбка" name="skirt-baked"/>
+				<texture_picker label="Юбка" name="skirt"/>
+			</panel>
+		</panel>
+	</scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_beacons.xml b/indra/newview/skins/default/xui/ru/floater_beacons.xml
new file mode 100644
index 0000000000000000000000000000000000000000..38d257ff8187a0b647914da41954282e35b09a57
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_beacons.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="beacons" title="МЕТКИ">
+	<panel name="beacons_panel">
+		<text name="label_show">
+			Показать:
+		</text>
+		<check_box label="Метки" name="beacons"/>
+		<check_box label="Подсветку" name="highlights"/>
+		<text name="beacon_width_label" tool_tip="Ширина меток">
+			Ширина:
+		</text>
+		<text name="label_objects">
+			Для этих объектов:
+		</text>
+		<check_box label="Физический" name="physical"/>
+		<check_box label="Скриптовые" name="scripted"/>
+		<check_box label="Только касание" name="touch_only"/>
+		<check_box label="Источники звука" name="sounds"/>
+		<check_box label="Источники частиц" name="particles"/>
+		<check_box label="Источники медиа" name="moapbeacon"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_build_options.xml b/indra/newview/skins/default/xui/ru/floater_build_options.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9dd01dc823322631dd49ef05c498a95f7b6c5a24
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_build_options.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="build options floater" title="НАСТРОЙКИ СЕТКИ">
+	<floater.string name="grid_screen_text">
+		Экран
+	</floater.string>
+	<floater.string name="grid_local_text">
+		Локальная
+	</floater.string>
+	<floater.string name="grid_world_text">
+		Мир
+	</floater.string>
+	<floater.string name="grid_reference_text">
+		Точка отсчета
+	</floater.string>
+	<floater.string name="grid_attachment_text">
+		Присоединение
+	</floater.string>
+	<text name="grid_mode_label" tool_tip="Прозрачность сетки">
+		Режим
+	</text>
+	<combo_box name="combobox grid mode" tool_tip="Выберите тип линейки сетки для размещения объекта">
+		<combo_box.item label="Всемирная" name="World"/>
+		<combo_box.item label="Локальная сетка" name="Local"/>
+		<combo_box.item label="Координатная сетка" name="Reference"/>
+	</combo_box>
+	<spinner label="Единицы (метры)" name="GridResolution"/>
+	<spinner label="Пространство (метры)" name="GridDrawSize"/>
+	<check_box label="Привязывать к субъячейкам" name="GridSubUnit"/>
+	<check_box label="Показывать плоскость пересечения" name="GridCrossSection"/>
+	<text name="grid_opacity_label" tool_tip="Прозрачность сетки">
+		Прозрачность:
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml b/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ccf13cf02abb68321879ed8c65d189be0df893a4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_bulk_perms.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floaterbulkperms" title="ИЗМЕНИТЬ РАЗРЕШЕНИЯ НА ИСПОЛЬЗОВАНИЕ КОНТЕНТА">
+	<floater.string name="nothing_to_modify_text">
+		В выбранной области нет контента, который можно изменять.
+	</floater.string>
+	<floater.string name="status_text">
+		Задание разрешений для [NAME]
+	</floater.string>
+	<floater.string name="start_text">
+		Создание запроса на изменение разрешений...
+	</floater.string>
+	<floater.string name="done_text">
+		Выполненные запросы на изменение разрешений.
+	</floater.string>
+	<icon name="icon_animation" tool_tip="Анимация"/>
+	<icon name="icon_bodypart" tool_tip="Части тела"/>
+	<icon name="icon_clothing" tool_tip="Одежда"/>
+	<icon name="icon_gesture" tool_tip="Жесты"/>
+	<icon name="icon_notecard" tool_tip="Заметки"/>
+	<icon name="icon_object" tool_tip="Объекты"/>
+	<icon name="icon_script" tool_tip="Скрипты"/>
+	<icon name="icon_sound" tool_tip="Звуки"/>
+	<icon name="icon_texture" tool_tip="Текстуры"/>
+	<button label="√ Все" name="check_all"/>
+	<button label="Очистить" label_selected="Нет" name="check_none"/>
+	<text name="newperms">
+		Новые разрешения на контент
+	</text>
+	<text name="GroupLabel">
+		Группа:
+	</text>
+	<check_box label="Поделиться" name="share_with_group"/>
+	<text name="AnyoneLabel">
+		Все:
+	</text>
+	<check_box label="Копировать" name="everyone_copy"/>
+	<text name="NextOwnerLabel">
+		Следующий владелец:
+	</text>
+	<check_box label="Изменять" name="next_owner_modify"/>
+	<check_box label="Копировать" name="next_owner_copy"/>
+	<check_box initial_value="истина" label="Передать" name="next_owner_transfer" tool_tip="Следующий владелец может отдать или перепродать объект"/>
+	<button label="ОК" name="apply"/>
+	<button label="Отмена" name="close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_bumps.xml b/indra/newview/skins/default/xui/ru/floater_bumps.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f81f72829014473be355c280876315f29ea4a64a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_bumps.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_bumps" title="СТОЛКНОВЕНИЯ, ТОЛЧКИ И УДАРЫ">
+	<floater.string name="none_detected">
+		Ничего не обнаружено
+	</floater.string>
+	<floater.string name="bump">
+		[TIME] [NAME] столкнулся с вами
+	</floater.string>
+	<floater.string name="llpushobject">
+		[TIME] [NAME] толкнул вас с помощью скрипта
+	</floater.string>
+	<floater.string name="selected_object_collide">
+		[TIME] [NAME] ударил вас объектом
+	</floater.string>
+	<floater.string name="scripted_object_collide">
+		[TIME] [NAME] ударил вас скриптовым объектом
+	</floater.string>
+	<floater.string name="physical_object_collide">
+		[TIME] [NAME] ударил вас физическим объектом
+	</floater.string>
+	<floater.string name="timeStr">
+		[[hour,datetime,slt]:[min,datetime,slt]]
+	</floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_buy_contents.xml b/indra/newview/skins/default/xui/ru/floater_buy_contents.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b1d66ae14dbc5ea89b1f395caae8b95d7f5360b3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_buy_contents.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_buy_contents" title="ПОКУПКА СОДЕРЖИМОГО">
+	<floater.string name="no_copy_text">
+		(не копируется)
+	</floater.string>
+	<floater.string name="no_modify_text">
+		(не изменяется)
+	</floater.string>
+	<floater.string name="no_transfer_text">
+		(не передается)
+	</floater.string>
+	<text name="contains_text">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; содержит:
+	</text>
+	<text name="buy_text">
+		Купить за L$[AMOUNT] у жителя [NAME]?
+	</text>
+	<check_box label="Надеть одежду сейчас" name="wear_check"/>
+	<button label="Купить" label_selected="Купить" name="buy_btn"/>
+	<button label="Отмена" label_selected="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_buy_currency.xml b/indra/newview/skins/default/xui/ru/floater_buy_currency.xml
new file mode 100644
index 0000000000000000000000000000000000000000..87e8bd524e95b070fd4fb481a8296b252537591b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_buy_currency.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="buy currency" title="КУПИТЬ L$">
+	<floater.string name="buy_currency">
+		Купить L$ [LINDENS] примерно за [LOCALAMOUNT]
+	</floater.string>
+	<text name="info_need_more">
+		Вам нужно больше L$
+	</text>
+	<text name="contacting">
+		Соединение с LindeX...
+	</text>
+	<text name="info_buying">
+		Купить L$
+	</text>
+	<text name="balance_label">
+		У меня есть
+	</text>
+	<text name="balance_amount">
+		L$ [AMT]
+	</text>
+	<text name="currency_action">
+		Я хочу купить
+	</text>
+	<text name="currency_label">
+		L$
+	</text>
+	<line_editor label="L$" name="currency_amt">
+		1234
+	</line_editor>
+	<text name="buying_label">
+		По цене
+	</text>
+	<text name="currency_est">
+		примерно [LOCALAMOUNT]
+	</text>
+	<text name="getting_data">
+		Подсчет...
+	</text>
+	<text name="buy_action">
+		[ACTION]
+	</text>
+	<text name="total_label">
+		Мой новый баланс будет
+	</text>
+	<text name="total_amount">
+		L$ [AMT]
+	</text>
+	<text name="currency_links">
+		[http://www.secondlife.com/my/account/payment_method_management.php способ оплаты] | [http://www.secondlife.com/my/account/currency.php деньги]
+	</text>
+	<text name="exchange_rate_note">
+		Повторно введите сумму, чтобы увидеть новый обменный курс.
+	</text>
+	<text name="purchase_warning_repurchase">
+		Подтверждение этой сделки приведет к покупке L$, а не объектов.
+	</text>
+	<text name="purchase_warning_notenough">
+		Вы не приобрели достаточного количества L$. Увеличьте количество.
+	</text>
+	<button label="Приобрести" name="buy_btn"/>
+	<button label="Отмена" name="cancel_btn"/>
+	<text name="info_cannot_buy">
+		Нельзя купить
+	</text>
+	<button label="Продолжить в Интернете" name="error_web"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..ac8ad469fb99e405a83cc06b0566260b28d8035d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_buy_currency_html.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_buy_currency_html" title="КУПИТЬ ВАЛЮТУ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_buy_land.xml b/indra/newview/skins/default/xui/ru/floater_buy_land.xml
new file mode 100644
index 0000000000000000000000000000000000000000..907a7953931edde4afc802c0076c39d1a28b3792
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_buy_land.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="buy land" title="КУПИТЬ ЗЕМЛЮ">
+	<floater.string name="can_resell">
+		Может быть перепродана.
+	</floater.string>
+	<floater.string name="can_not_resell">
+		Не может быть перепродана.
+	</floater.string>
+	<floater.string name="can_change">
+		Может быть объединена или разделена.
+	</floater.string>
+	<floater.string name="can_not_change">
+		Не может быть объединена или разделена.
+	</floater.string>
+	<floater.string name="cant_buy_for_group">
+		У вас нет прав на покупку земли для вашей активной группы.
+	</floater.string>
+	<floater.string name="no_land_selected">
+		Нет выбранной земли.
+	</floater.string>
+	<floater.string name="multiple_parcels_selected">
+		Выбрано несколько разных участков. 
+Попробуйте выбрать область поменьше.
+	</floater.string>
+	<floater.string name="no_permission">
+		У вас нет прав на покупку земли для вашей активной группы.
+	</floater.string>
+	<floater.string name="parcel_not_for_sale">
+		Выбранный участок земли не для продажи.
+	</floater.string>
+	<floater.string name="group_already_owns">
+		Группа уже владеет участком.
+	</floater.string>
+	<floater.string name="you_already_own">
+		Вы уже владеете участком.
+	</floater.string>
+	<floater.string name="set_to_sell_to_other">
+		Выбранный участок земли выставлен на продажу для других людей.
+	</floater.string>
+	<floater.string name="no_public_land">
+		В выбранной области нет публичных земель.
+	</floater.string>
+	<floater.string name="not_owned_by_you">
+		Выбрана земля, принадлежащая другому жителю. 
+Попробуйте выбрать область поменьше.
+	</floater.string>
+	<floater.string name="processing">
+		Обработка вашей покупки...
+ 
+(это может занять несколько минут).
+	</floater.string>
+	<floater.string name="fetching_error">
+		Возникла ошибка при запросе информации о покупке земли.
+	</floater.string>
+	<floater.string name="buying_will">
+		Покупка этой земли будет:
+	</floater.string>
+	<floater.string name="buying_for_group">
+		Покупка земли для группы будет:
+	</floater.string>
+	<floater.string name="cannot_buy_now">
+		Сейчас купить нельзя:
+	</floater.string>
+	<floater.string name="not_for_sale">
+		Не для продажи:
+	</floater.string>
+	<floater.string name="none_needed">
+		не требуется
+	</floater.string>
+	<floater.string name="must_upgrade">
+		Ваш аккаунт должен быть улучшен для способности владения землей.
+	</floater.string>
+	<floater.string name="cant_own_land">
+		Ваш аккаунт позволяет владеть землей.
+	</floater.string>
+	<floater.string name="land_holdings">
+		Вы владеете [BUYER] м² земли.
+	</floater.string>
+	<floater.string name="pay_to_for_land">
+		Заплатить продавцу [SELLER] L$[AMOUNT] за эту землю
+	</floater.string>
+	<floater.string name="buy_for_US">
+		Купить L$ [AMOUNT] примерно за [LOCAL_AMOUNT],
+	</floater.string>
+	<floater.string name="parcel_meters">
+		Размер участка – [AMOUNT] м²
+	</floater.string>
+	<floater.string name="premium_land">
+		Эта земля – премиум-класса, и будет засчитана как [AMOUNT] м².
+	</floater.string>
+	<floater.string name="discounted_land">
+		Эта земля со скидкой, и будет засчитана как [AMOUNT] м².
+	</floater.string>
+	<floater.string name="meters_supports_object">
+		[AMOUNT] м²
+поддерживает [AMOUNT2] объектов
+	</floater.string>
+	<floater.string name="sold_with_objects">
+		продано с объектами
+	</floater.string>
+	<floater.string name="sold_without_objects">
+		объекты не включены
+	</floater.string>
+	<floater.string name="info_price_string">
+		L$ [PRICE]
+(L$ [PRICE_PER_SQM]/м²)
+[SOLD_WITH_OBJECTS]
+	</floater.string>
+	<floater.string name="insufficient_land_credits">
+		Группе [GROUP] понадобится выплатить достаточную сумму для поддержки этой земли, чтобы покрыть участок до завершения покупки.
+	</floater.string>
+	<floater.string name="have_enough_lindens">
+		У вас есть L$ [AMOUNT], которых достаточно для покупки этой земли.
+	</floater.string>
+	<floater.string name="not_enough_lindens">
+		У вас есть только L$ [AMOUNT], не хватает L$ [AMOUNT2].
+	</floater.string>
+	<floater.string name="balance_left">
+		После покупки у вас останется L$ [AMOUNT].
+	</floater.string>
+	<floater.string name="balance_needed">
+		Вам нужно приобрести как минимум L$ [AMOUNT], чтобы позволить себе эту землю.
+	</floater.string>
+	<floater.string name="no_parcel_selected">
+		(участок не выбран)
+	</floater.string>
+	<text name="region_name_label">
+		Регион:
+	</text>
+	<text name="region_name_text">
+		(неизвестно)
+	</text>
+	<text name="region_type_label">
+		Тип:
+	</text>
+	<text name="region_type_text">
+		(неизвестно)
+	</text>
+	<text name="estate_name_label">
+		Землевладение:
+	</text>
+	<text name="estate_name_text">
+		(неизвестно)
+	</text>
+	<text name="estate_owner_label">
+		Землевладелец:
+	</text>
+	<text name="estate_owner_text">
+		(неизвестно)
+	</text>
+	<text name="resellable_changeable_label">
+		Приобретенная в этом регионе земля:
+	</text>
+	<text name="resellable_clause">
+		Может или не может быть перепродана.
+	</text>
+	<text name="changeable_clause">
+		Может или не может быть объединена или разделена.
+	</text>
+	<text name="covenant_text">
+		Вы должны принять соглашение по землевладению:
+	</text>
+	<text_editor name="covenant_editor">
+		Загрузка...
+	</text_editor>
+	<check_box label="Я принимаю соглашение, определенное выше." name="agree_covenant"/>
+	<text name="info_parcel_label">
+		Участок:
+	</text>
+	<text name="info_parcel">
+		Scotopteryx 138,204
+	</text>
+	<text name="info_size_label">
+		Размер:
+	</text>
+	<text name="info_size">
+		1024 м²
+	</text>
+	<text name="info_price_label">
+		Цена:
+	</text>
+	<text name="info_price">
+		L$ 1500
+(L$ 1,1/м²)
+продано с объектами
+	</text>
+	<text name="info_action">
+		Покупка этой земли будет:
+	</text>
+	<text name="error_message">
+		Что-то не правильно.
+	</text>
+	<button label="Перейти на сайт" name="error_web"/>
+	<text name="account_action">
+		Улучшить ваш аккаунт до уровня Premium.
+	</text>
+	<text name="account_reason">
+		Только премиум-участники могут владеть землей.
+	</text>
+	<combo_box name="account_level">
+		<combo_box.item label="9,95 долл. США/мес, оплачивается ежемесячно" name="US$9.95/month,billedmonthly"/>
+		<combo_box.item label="7,50 долл. США/мес, оплачивается ежеквартально" name="US$7.50/month,billedquarterly"/>
+		<combo_box.item label="6,00 долл. США/мес, оплачивается ежегодно" name="US$6.00/month,billedannually"/>
+	</combo_box>
+	<text name="land_use_action">
+		Увеличит вашу месячную оплату на US$ 40/мес.
+	</text>
+	<text name="land_use_reason">
+		Вы владеете 1309 м² земли.
+В этом участке 512 м² земли.
+	</text>
+	<text name="purchase_action">
+		Заплатить жителю Joe L$ 4000 за землю
+	</text>
+	<text name="currency_reason">
+		У вас L$ 2100.
+	</text>
+	<text name="currency_action">
+		Покупка L$
+	</text>
+	<line_editor name="currency_amt">
+		1000
+	</line_editor>
+	<text name="currency_est">
+		обойдется примерно в [LOCAL_AMOUNT]
+	</text>
+	<text name="currency_balance">
+		У вас L$ 2100.
+	</text>
+	<check_box label="Удалить [AMOUNT] м² взноса из группы." name="remove_contribution"/>
+	<button label="Покупка" name="buy_btn"/>
+	<button label="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_buy_object.xml b/indra/newview/skins/default/xui/ru/floater_buy_object.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d25f9eccc2255673ef9c49087952be3cbd77ce1c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_buy_object.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="contents" title="КУПИТЬ КОПИЮ ОБЪЕКТА">
+	<floater.string name="title_buy_text">
+		Купить
+	</floater.string>
+	<floater.string name="title_buy_copy_text">
+		Купить копию
+	</floater.string>
+	<floater.string name="no_copy_text">
+		(не копируется)
+	</floater.string>
+	<floater.string name="no_modify_text">
+		(не изменяется)
+	</floater.string>
+	<floater.string name="no_transfer_text">
+		(не передается)
+	</floater.string>
+	<text name="contents_text">
+		Содержимое:
+	</text>
+	<text name="buy_text">
+		Купить за L$[AMOUNT] у пользователя:
+	</text>
+	<text name="buy_name_text">
+		[NAME]?
+	</text>
+	<button label="Купить" label_selected="Купить" name="buy_btn"/>
+	<button label="Отмена" label_selected="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_camera.xml b/indra/newview/skins/default/xui/ru/floater_camera.xml
new file mode 100644
index 0000000000000000000000000000000000000000..52e7c62e06edbe9ef76b84ca19c80ea6f09a0a67
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_camera.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="camera_floater" title="УПРАВЛЕНИЕ КАМЕРОЙ">
+	<floater.string name="rotate_tooltip">
+		Повернуть камеру вокруг точки фокусировки
+	</floater.string>
+	<floater.string name="zoom_tooltip">
+		Приблизить/отдалить камеру относительно точки фокусировки
+	</floater.string>
+	<floater.string name="move_tooltip">
+		Переместить камеру вверх, вниз, влево или вправо
+	</floater.string>
+	<floater.string name="free_mode_title">
+		Смотреть на объект
+	</floater.string>
+	<panel name="controls">
+		<panel name="preset_views_list">
+			<panel_camera_item name="front_view">
+				<panel_camera_item.text name="front_view_text">
+					Вид спереди
+				</panel_camera_item.text>
+			</panel_camera_item>
+			<panel_camera_item name="group_view">
+				<panel_camera_item.text name="side_view_text">
+					Вид сбоку
+				</panel_camera_item.text>
+			</panel_camera_item>
+			<panel_camera_item name="rear_view">
+				<panel_camera_item.text name="rear_view_text">
+					Вид сзади
+				</panel_camera_item.text>
+			</panel_camera_item>
+		</panel>
+		<panel name="camera_modes_list">
+			<panel_camera_item name="object_view">
+				<panel_camera_item.text name="object_view_text">
+					Осмотр объекта
+				</panel_camera_item.text>
+			</panel_camera_item>
+			<panel_camera_item name="mouselook_view">
+				<panel_camera_item.text name="mouselook_view_text">
+					Обзор с помощью мыши
+				</panel_camera_item.text>
+			</panel_camera_item>
+		</panel>
+		<panel name="zoom">
+			<joystick_rotate name="cam_rotate_stick" tool_tip="Повернуть камеру вокруг точки фокусировки"/>
+			<slider_bar name="zoom_slider" tool_tip="Приблизить/отдалить камеру относительно точки фокусировки"/>
+			<joystick_track name="cam_track_stick" tool_tip="Переместить камеру вверх, вниз, влево или вправо"/>
+		</panel>
+	</panel>
+	<panel name="buttons">
+		<button label="" name="presets_btn" tool_tip="Стандартные настройки"/>
+		<button label="" name="pan_btn" tool_tip="Вращение, приближение, сдвиг"/>
+		<button label="" name="avatarview_btn" tool_tip="Режимы камеры"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_chat_bar.xml b/indra/newview/skins/default/xui/ru/floater_chat_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..79b7b033fb663933aed996d29ed3b561b3d4feb4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" title="ЛОКАЛЬНЫЙ ЧАТ">
+	<panel name="bottom_panel">
+		<line_editor label="Щелкните здесь для общения." name="chat_box" tool_tip="Нажмите Enter, чтобы сказать, Ctrl+Enter, чтобы прокричать"/>
+		<button name="show_nearby_chat" tool_tip="Показать/скрыть лог локального чата"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_choose_group.xml b/indra/newview/skins/default/xui/ru/floater_choose_group.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ab8350f5392dc93328dd5d31966304e1ffca43f1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_choose_group.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="groups" title="ГРУППЫ">
+	<text name="groupdesc">
+		Выберите группу:
+	</text>
+	<button label="OK" label_selected="OK" name="OK"/>
+	<button label="Отмена" label_selected="Отмена" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_color_picker.xml b/indra/newview/skins/default/xui/ru/floater_color_picker.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b7034bef0b1b8dfd0a9e508e3adc4f03139f15eb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_color_picker.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="ColorPicker" title="ВЫБОР ЦВЕТА">
+	<text name="r_val_text">
+		Красный:
+	</text>
+	<text name="g_val_text">
+		Зеленый:
+	</text>
+	<text name="b_val_text">
+		Синий:
+	</text>
+	<text name="h_val_text">
+		Оттенок:
+	</text>
+	<text name="s_val_text">
+		Насыщен.:
+	</text>
+	<text name="l_val_text">
+		Яркость:
+	</text>
+	<check_box label="Применить сейчас" name="apply_immediate"/>
+	<button label="ОК" label_selected="ОК" name="select_btn"/>
+	<button label="Отмена" label_selected="Отмена" name="cancel_btn"/>
+	<text name="Current color:">
+		Текущий цвет:
+	</text>
+	<text name="(Drag below to save.)">
+		(Перетащите вниз для сохранения)
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_critical.xml b/indra/newview/skins/default/xui/ru/floater_critical.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bc64f3a83e27b95ed30849a7e45842e4c796cb90
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_critical.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container">
+	<button label="Продолжить" label_selected="Продолжить" name="Continue"/>
+	<text name="tos_heading">
+		Внимательно прочитайте следующее сообщение.
+	</text>
+	<text_editor name="tos_text">
+		TOS_TEXT
+	</text_editor>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..3303a4f4c138bfb7378ee2675aa51e3ce8b7863e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_delete_env_preset.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<floater name="Delete Env Preset" title="УДАЛЕНИЕ НАСТРОЙКИ СРЕДЫ">
+	<string name="title_water">
+		Удалить настройку воды
+	</string>
+	<string name="title_sky">
+		Удалить настройку неба
+	</string>
+	<string name="title_day_cycle">
+		Удалить суточный цикл
+	</string>
+	<string name="label_water">
+		Настройка:
+	</string>
+	<string name="label_sky">
+		Настройка:
+	</string>
+	<string name="label_day_cycle">
+		Суточный цикл:
+	</string>
+	<string name="msg_confirm_deletion">
+		Действительно удалить выбранную настройку?
+	</string>
+	<string name="msg_sky_is_referenced">
+		Нельзя удалить настройку, которая используется в суточных циклах.
+	</string>
+	<string name="combo_label">
+		-Выбор настройки-
+	</string>
+	<text name="label">
+		Настройка:
+	</text>
+	<button label="Удалить" name="delete"/>
+	<button label="Отмена" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_destinations.xml b/indra/newview/skins/default/xui/ru/floater_destinations.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5ba0841564fb66241ec8f127a9854ad7eb34514f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="ПУНКТЫ"/>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/ru/floater_display_name.xml b/indra/newview/skins/default/xui/ru/floater_display_name.xml
new file mode 100644
index 0000000000000000000000000000000000000000..feb8a2721f9fb61b0db682bb47a5d45d837d9cae
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_display_name.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Display Name" title="СМЕНА ЭКРАННОГО ИМЕНИ">
+	<text name="info_text">
+		Имя, которое вы даете аватару, называется экранным именем. Вы можете менять его раз в неделю.
+	</text>
+	<text name="lockout_text">
+		Вы не можете менять экранное имя до: [TIME].
+	</text>
+	<text name="set_name_label">
+		Новое экранное имя:
+	</text>
+	<text name="name_confirm_label">
+		Наберите новое имя еще раз для подтверждения:
+	</text>
+	<button label="Сохранить" name="save_btn" tool_tip="Сохранить ваше новое экранное имя"/>
+	<button label="Сброс" name="reset_btn" tool_tip="Сменить экранное имя на имя пользователя"/>
+	<button label="Отмена" name="cancel_btn"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..61d708c567b459dfe13c87cb322f804c0c6e26c9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_edit_day_cycle.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Day cycle" title="Изменить суточный цикл">
+	<string name="title_new">
+		Создать суточный цикл
+	</string>
+	<string name="title_edit">
+		Изменить суточный цикл
+	</string>
+	<string name="hint_new">
+		Введите имя суточного цикла, задайте его параметры с помощью элементов управления и нажмите кнопку «Сохранить».
+	</string>
+	<string name="hint_edit">
+		Чтобы изменить суточный цикл, задайте его параметры с помощью элементов управления ниже и нажмите кнопку «Сохранить».
+	</string>
+	<string name="combo_label">
+		-Выбор настройки-
+	</string>
+	<text name="label">
+		Имя настройки:
+	</text>
+	<text name="note">
+		Примечание. Если изменить имя настройки, будет создана новая настройка, а изменения в существующей не будут сохранены.
+	</text>
+	<text name="hint_item1">
+		- Для изменения настроек неба и времени выберите соответствующую вкладку.
+	</text>
+	<text name="hint_item2">
+		- Чтобы задать время переходов, перетаскивайте вкладки.
+	</text>
+	<text name="hint_item3">
+		- Скребок служит для просмотра суточного цикла.
+	</text>
+	<panel name="day_cycle_slider_panel">
+		<multi_slider initial_value="0" name="WLTimeSlider"/>
+		<multi_slider initial_value="0" name="WLDayCycleKeys"/>
+		<button label="+ отметку" label_selected="+ отметку" name="WLAddKey"/>
+		<button label="- отметку" label_selected="- отметку" name="WLDeleteKey"/>
+		<text name="WL12am">
+			12 ночи
+		</text>
+		<text name="WL3am">
+			3 ночи
+		</text>
+		<text name="WL6am">
+			6 утра
+		</text>
+		<text name="WL9amHash">
+			9 утра
+		</text>
+		<text name="WL12pmHash">
+			12 дня
+		</text>
+		<text name="WL3pm">
+			3 дня
+		</text>
+		<text name="WL6pm">
+			6 вечера
+		</text>
+		<text name="WL9pm">
+			9 вечера
+		</text>
+		<text name="WL12am2">
+			12 ночи
+		</text>
+		<text name="WL12amHash">
+			|
+		</text>
+		<text name="WL3amHash">
+			I
+		</text>
+		<text name="WL6amHash">
+			|
+		</text>
+		<text name="WL9amHash2">
+			I
+		</text>
+		<text name="WL12pmHash2">
+			|
+		</text>
+		<text name="WL3pmHash">
+			I
+		</text>
+		<text name="WL6pmHash">
+			|
+		</text>
+		<text name="WL9pmHash">
+			I
+		</text>
+		<text name="WL12amHash2">
+			|
+		</text>
+	</panel>
+	<text name="WLCurKeyPresetText">
+		Небо:
+	</text>
+	<combo_box label="Стандарт" name="WLSkyPresets"/>
+	<text name="WLCurKeyTimeText">
+		Время:
+	</text>
+	<time name="time" value="6:00"/>
+	<check_box label="Установить как новый суточный цикл" name="make_default_cb"/>
+	<button label="Сохранить" name="save"/>
+	<button label="Отмена" name="cancel"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..354120ea72de0dad805aec0c319cd16f0461e641
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_edit_sky_preset.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Sky Preset" title="Изменить настройку неба">
+	<string name="title_new">
+		Создать настройку неба
+	</string>
+	<string name="title_edit">
+		Изменить настройку неба
+	</string>
+	<string name="hint_new">
+		Введите имя настройки, задайте ее параметры с помощью элементов управления и нажмите кнопку «Сохранить».
+	</string>
+	<string name="hint_edit">
+		Чтобы изменить настройку неба, задайте ее параметры с помощью элементов управления и нажмите кнопку «Сохранить».
+	</string>
+	<string name="combo_label">
+		-Выбор настройки-
+	</string>
+	<text name="hint">
+		Чтобы изменить настройку, задайте ее параметры с помощью элементов управления и нажмите кнопку «Сохранить».
+	</text>
+	<text name="label">
+		Имя настройки:
+	</text>
+	<text name="note">
+		Примечание. Если изменить имя настройки, будет создана новая настройка, а изменения в существующей не будут сохранены.
+	</text>
+	<tab_container name="WindLight Tabs">
+		<panel label="АТМОСФЕРА" name="Atmosphere">
+			<text name="BHText">
+				Голубой горизонт
+			</text>
+			<text name="BDensText">
+				Дымка на горизонте
+			</text>
+			<text name="BDensText2">
+				Насыщенность голубого
+			</text>
+			<text name="HDText">
+				Плотность дымки
+			</text>
+			<text name="DensMultText">
+				Коэффициент плотности
+			</text>
+			<text name="WLDistanceMultText">
+				Коэффициент расстояния
+			</text>
+			<text name="MaxAltText">
+				Максимальная высота
+			</text>
+		</panel>
+		<panel label="ОСВЕЩЕНИЕ" name="Lighting">
+			<text name="SLCText">
+				Цвет солнца/луны
+			</text>
+			<text name="WLAmbientText">
+				Рассеянное
+			</text>
+			<text name="SunGlowText">
+				Сияние солнца
+			</text>
+			<slider label="Фокус" name="WLGlowB"/>
+			<slider label="Размер" name="WLGlowR"/>
+			<text name="WLStarText">
+				Яркость звезд
+			</text>
+			<text name="SceneGammaText">
+				Гамма-коррекция сцены
+			</text>
+			<text name="TODText">
+				Положение солнца/луны
+			</text>
+			<multi_slider initial_value="0" name="WLSunPos"/>
+			<text name="WL12amHash">
+				|
+			</text>
+			<text name="WL6amHash">
+				|
+			</text>
+			<text name="WL12pmHash2">
+				|
+			</text>
+			<text name="WL6pmHash">
+				|
+			</text>
+			<text name="WL12amHash2">
+				|
+			</text>
+			<text name="WL12am">
+				12 ночи
+			</text>
+			<text name="WL6am">
+				6 утра
+			</text>
+			<text name="WL12pmHash">
+				12 дня
+			</text>
+			<text name="WL6pm">
+				6 вечера
+			</text>
+			<text name="WL12am2">
+				12 ночи
+			</text>
+			<time name="WLDayTime" value="6:00"/>
+			<text name="WLEastAngleText">
+				Смещение отн. востока
+			</text>
+		</panel>
+		<panel label="ОБЛАКА" name="Clouds">
+			<text name="WLCloudColorText">
+				Цвет
+			</text>
+			<text name="WLCloudColorText2">
+				Положение и плотность
+			</text>
+			<slider label="X" name="WLCloudX"/>
+			<slider label="Y" name="WLCloudY"/>
+			<slider label="П" name="WLCloudDensity"/>
+			<text name="WLCloudCoverageText">
+				Облачность
+			</text>
+			<text name="WLCloudScaleText">
+				Размеры
+			</text>
+			<text name="WLCloudDetailText">
+				Детали (положение/плотность)
+			</text>
+			<slider label="X" name="WLCloudDetailX"/>
+			<slider label="Y" name="WLCloudDetailY"/>
+			<slider label="П" name="WLCloudDetailDensity"/>
+			<text name="WLCloudScrollXText">
+				Скорость по X
+			</text>
+			<check_box label="На месте" name="WLCloudLockX"/>
+			<text name="WLCloudScrollYText">
+				Скорость по Y
+			</text>
+			<check_box label="На месте" name="WLCloudLockY"/>
+		</panel>
+	</tab_container>
+	<check_box label="Применить эту настройку неба" name="make_default_cb"/>
+	<button label="Сохранить" name="save"/>
+	<button label="Отмена" name="cancel"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..f6def8638003f0c07861a8c5431698eff0c10fb0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_edit_water_preset.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Water Preset" title="Изменить настройку воды">
+	<string name="title_new">
+		Создать настройку воды
+	</string>
+	<string name="title_edit">
+		Изменение настройки воды
+	</string>
+	<string name="hint_new">
+		Введите имя настройки, задайте ее параметры с помощью элементов управления и нажмите кнопку «Сохранить».
+	</string>
+	<string name="hint_edit">
+		Чтобы изменить настройку воды, задайте параметры с помощью элементов управления и нажмите кнопку «Сохранить».
+	</string>
+	<string name="combo_label">
+		-Выбор настройки-
+	</string>
+	<text name="hint">
+		Чтобы изменить настройку, задайте ее параметры с помощью элементов управления и нажмите кнопку «Сохранить».
+	</text>
+	<text name="label">
+		Имя настройки:
+	</text>
+	<text name="note">
+		Примечание. Если изменить имя настройки, будет создана новая настройка, а изменения в существующей не будут сохранены.
+	</text>
+	<panel name="panel_water_preset">
+		<text name="water_color_label">
+			Оттенок
+		</text>
+		<text name="water_fog_density_label">
+			Прозрачность
+		</text>
+		<text name="underwater_fog_modifier_label">
+			Изменение прозрачности
+		</text>
+		<text name="BHText">
+			Направление больших волн
+		</text>
+		<slider label="X" name="WaterWave1DirX"/>
+		<slider label="Y" name="WaterWave1DirY"/>
+		<text name="BDensText">
+			Степень отражения зыби
+		</text>
+		<text name="HDText">
+			Отражение
+		</text>
+		<text name="FresnelOffsetText">
+			Угловая зависимость
+		</text>
+		<text name="BHText2">
+			Направление ряби
+		</text>
+		<slider label="X" name="WaterWave2DirX"/>
+		<slider label="Y" name="WaterWave2DirY"/>
+		<text name="DensMultText">
+			Преломление (над водой)
+		</text>
+		<text name="WaterScaleBelowText">
+			Преломление (под водой)
+		</text>
+		<text name="MaxAltText">
+			Размытие
+		</text>
+		<text name="BHText3">
+			Карта поверхности
+		</text>
+	</panel>
+	<check_box label="Применить эту настройку воды" name="make_default_cb"/>
+	<button label="Сохранить" name="save"/>
+	<button label="Отмена" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_env_settings.xml b/indra/newview/skins/default/xui/ru/floater_env_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a3e77d61de25c352b702abb9534742de9271924f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_env_settings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Environment Editor Floater" title="РЕДАКТОР СРЕДЫ">
+	<floater.string name="timeStr">
+		[hour,datetime,utc]:[min,datetime,utc]
+	</floater.string>
+	<text name="EnvTimeText">
+		Время суток
+	</text>
+	<text name="EnvTimeText2">
+		12:00
+	</text>
+	<text name="EnvCloudText">
+		Облачность
+	</text>
+	<text name="EnvWaterColorText">
+		Цвет воды
+	</text>
+	<color_swatch name="EnvWaterColor" tool_tip="Щелкните для выбора цвета"/>
+	<text name="EnvWaterFogText">
+		Водный туман
+	</text>
+	<button label="Использовать время в землевладении" name="EnvUseEstateTimeButton"/>
+	<button label="Улучшенное небо" name="EnvAdvancedSkyButton"/>
+	<button label="Улучшенная вода" name="EnvAdvancedWaterButton"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_environment_settings.xml b/indra/newview/skins/default/xui/ru/floater_environment_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d752c08cbb98abeab5fc23e6902aa4fe67c56050
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_environment_settings.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Environment Editor Floater" title="НАСТРОЙКИ СРЕДЫ">
+	<text name="note">
+		Приведенные ниже параметры позволяют настроить среду клиента.
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="Использовать настройки региона" name="use_region_settings"/>
+		<radio_item label="Настроить среду" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="note">
+			Примечание. Ваши персональные настройки не видны другим пользователям.
+		</text>
+		<text name="water_settings_title">
+			Настройка воды
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="-Выбор настройки-" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			Небо и суточный цикл
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="Небо не меняется" name="my_sky_settings"/>
+			<radio_item label="Суточный цикл" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="-Выбор настройки-" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="-Выбор настройки-" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="ОК" name="ok_btn"/>
+	<button label="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_event.xml b/indra/newview/skins/default/xui/ru/floater_event.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5c5bcc6d09d2f65c06e6a3ca068c3c61cf15e4f0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_event.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="Событие" name="Event" title="СВЕДЕНИЯ О СОБЫТИИ">
+	<floater.string name="loading_text">
+		Загрузка...
+	</floater.string>
+	<floater.string name="done_text">
+		Готово
+	</floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_fast_timers.xml b/indra/newview/skins/default/xui/ru/floater_fast_timers.xml
new file mode 100644
index 0000000000000000000000000000000000000000..20936b8494fff4a843401ee6c1891b798a1c0d26
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+	<string name="pause">
+		Пауза
+	</string>
+	<string name="run">
+		Бег
+	</string>
+	<button label="Пауза" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_font_test.xml b/indra/newview/skins/default/xui/ru/floater_font_test.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b51732d3f1081a05c77b1550dd2fbb104020d256
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_font_test.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="contents" title="ТЕСТ ШРИФТОВ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_gesture.xml b/indra/newview/skins/default/xui/ru/floater_gesture.xml
new file mode 100644
index 0000000000000000000000000000000000000000..759d81b2c6ab49f4c3ebd800471f501eefe9ff0b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_gesture.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="Места" name="gestures" title="ЖЕСТЫ">
+	<floater.string name="loading">
+		Загрузка...
+	</floater.string>
+	<floater.string name="playing">
+		(проигрывается)
+	</floater.string>
+	<floater.string name="copy_name">
+		Копия [COPY_NAME]
+	</floater.string>
+	<scroll_list name="gesture_list">
+		<scroll_list.columns label="Название" name="name"/>
+		<scroll_list.columns label="Чат" name="trigger"/>
+		<scroll_list.columns label="Клавиша" name="shortcut"/>
+	</scroll_list>
+	<panel label="bottom_panel" name="bottom_panel">
+		<menu_button name="gear_btn" tool_tip="Дополнительные параметры"/>
+		<button name="new_gesture_btn" tool_tip="Создать новый жест"/>
+		<button name="activate_btn" tool_tip="Активировать/деактивировать выбранный жест"/>
+		<button name="del_btn" tool_tip="Удалить этот жест"/>
+	</panel>
+	<button label="Изменить" name="edit_btn"/>
+	<button label="Проиграть" name="play_btn"/>
+	<button label="Стоп" name="stop_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_god_tools.xml b/indra/newview/skins/default/xui/ru/floater_god_tools.xml
new file mode 100644
index 0000000000000000000000000000000000000000..81329475aa3cdd609cb657b44fc04a65c6b40131
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_god_tools.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="godtools floater" title="ИНСТРУМЕНТЫ ТВОРЦА">
+	<tab_container name="GodTools Tabs">
+		<panel label="Сетка" name="grid">
+			<button label="Обновить кэш данных карты этого региона" label_selected="Обновить кэш данных карты этого региона" name="Flush This Region&apos;s Map Visibility Caches"/>
+		</panel>
+		<panel label="Регион" name="region">
+			<text name="Region Name:">
+				Название региона:
+			</text>
+			<check_box label="Буферная зона" name="check prelude" tool_tip="Сделать этот регион буферной зоной"/>
+			<check_box label="Солнце на месте" name="check fixed sun" tool_tip="Фиксация положения солнца (как в меню «Регион/Землевладение &gt; Ландшафт»)"/>
+			<check_box label="Сброс дома при телепортации" name="check reset home" tool_tip="Дом жителей, которые телепортируются отсюда, будет там, куда они телепортируются."/>
+			<check_box label="Видимый" name="check visible" tool_tip="Сделать регион видимым не только для творцов"/>
+			<check_box label="Повреждения" name="check damage" tool_tip="Сделать возможными повреждения в регионе"/>
+			<check_box label="Блокировать отслеживание трафика" name="block dwell" tool_tip="Выберите, чтобы для региона не отслеживался трафик"/>
+			<check_box label="Запретить терраформирование" name="block terraform" tool_tip="Выберите, чтобы жители не могли изменять ландшафт своей земли"/>
+			<check_box label="Песочница" name="is sandbox" tool_tip="Выберите, является ли этот регион «песочницей»"/>
+			<button label="Зафиксировать пределы" label_selected="Зафиксировать пределы" name="Bake Terrain" tool_tip="Сохранить текущий ландшафт как стандартный"/>
+			<button label="Вернуть ландшафт" label_selected="Вернуть ландшафт" name="Revert Terrain" tool_tip="Заменить текущий ландшафт ландшафтом по умолчанию"/>
+			<button label="Поменять ландшафты" label_selected="Поменять ландшафты" name="Swap Terrain" tool_tip="Поменять местами текущий ландшафт и ландшафт по умолчанию"/>
+			<text name="estate id">
+				ИД землевладения:
+			</text>
+			<text name="parent id">
+				ИД родового объекта:
+			</text>
+			<line_editor name="parentestate" tool_tip="Родовое землевладение для этого региона"/>
+			<text name="Grid Pos: ">
+				Полож. сетки:
+			</text>
+			<line_editor name="gridposx" tool_tip="Положение сетки по оси x для этого региона"/>
+			<line_editor name="gridposy" tool_tip="Положение сетки по оси y для этого региона"/>
+			<text name="Redirect to Grid: ">
+				Перенаправить на сетку:
+			</text>
+			<text name="billable factor text">
+				Ценовой коэффициент:
+			</text>
+			<text name="land cost text">
+				L$ за м²:
+			</text>
+			<button label="Обновить" label_selected="Обновить" name="Refresh" tool_tip="Обновление приведенной выше информации"/>
+			<button label="Применить" label_selected="Применить" name="Apply" tool_tip="Применить все изменения выше"/>
+			<button label="Выбрать регион" label_selected="Выбрать регион" name="Select Region" tool_tip="Выбор всего региона с помощью инструмента изменения ландшафта"/>
+			<button label="Автосохранение" label_selected="Автосохранение" name="Autosave now" tool_tip="Сохранить в каталоге автосохранения состояние в архиве Gzip"/>
+		</panel>
+		<panel label="Объекты" name="objects">
+			<panel.string name="no_target">
+				(нет персонажа)
+			</panel.string>
+			<text name="Region Name:">
+				Название региона:
+			</text>
+			<text name="region name">
+				Уэльс
+			</text>
+			<check_box label="Отключить скрипты" name="disable scripts" tool_tip="Отключение всех скриптов в этом регионе"/>
+			<check_box label="Отключить столкновения" name="disable collisions" tool_tip="Отключение столкновений не-агентов в этом регионе"/>
+			<check_box label="Отключить физику" name="disable physics" tool_tip="Отключение всех физических параметров в этом регионе"/>
+			<button label="Применить" label_selected="Применить" name="Apply" tool_tip="Применить все изменения выше"/>
+			<button label="Задать персонаж" label_selected="Задать персонаж" name="Set Target" tool_tip="Выберите аватар-персонаж для удаления объекта"/>
+			<text name="target_avatar_name">
+				(нет персонажа)
+			</text>
+			<button label="Удалить принадлежащие персонажу объекты со скриптами на чужой земле" label_selected="Удалить принадлежащие персонажу объекты со скриптами на чужой земле" name="Delete Target&apos;s Scripted Objects On Others Land" tool_tip="Удаление всех объектов со скриптами, принадлежащих персонажу, на земле, не принадлежащей персонажу. «Не копируемые» объекты будут возвращены."/>
+			<button label="Удалить принадлежащие персонажу объекты со скриптами на *всех* землях" label_selected="Удалить принадлежащие персонажу объекты со скриптами на *всех* землях" name="Delete Target&apos;s Scripted Objects On *Any* Land" tool_tip="Удаление всех объектов со скриптами, принадлежащих персонажу, в этом регионе. «Не копируемые» объекты будут возвращены."/>
+			<button label="Удалить *ВСЕ* объекты персонажа" label_selected="Удалить *ВСЕ* объекты персонажа" name="Delete *ALL* Of Target&apos;s Objects" tool_tip="Удаление всех объектов, принадлежащих персонажу, в этом регионе. «Не копируемые» объекты будут возвращены."/>
+			<button label="Самые активные участники столкновений" label_selected="Самые активные участники столкновений" name="Get Top Colliders" tool_tip="Список объектов, для которых наблюдается больше всего детализированных обратных вызовов"/>
+			<button label="Загрузить лучшие скрипты" label_selected="Загрузить лучшие скрипты" name="Get Top Scripts" tool_tip="Список объектов, в которых скрипты выполняются дольше всего"/>
+			<button label="Сводка по скриптам" label_selected="Сводка по скриптам" name="Scripts digest" tool_tip="Список всех скриптов с числом использований по каждому из них"/>
+		</panel>
+		<panel label="Запрос" name="request">
+			<text name="Destination:">
+				Пункт назначения:
+			</text>
+			<combo_box name="destination">
+				<combo_box.item label="назначенный" name="item1"/>
+				<combo_box.item label="текущий регион" name="item2"/>
+			</combo_box>
+			<text name="Request:">
+				Запрос:
+			</text>
+			<combo_box name="request">
+				<combo_box.item label="участники столкновений &lt;steps&gt;" name="item1"/>
+				<combo_box.item label="скрипты: &lt;count&gt;,&lt;optional pattern&gt;" name="item2"/>
+				<combo_box.item label="объекты &lt;pattern&gt;" name="item3"/>
+				<combo_box.item label="выложить &lt;asset_id&gt;" name="item4"/>
+			</combo_box>
+			<text name="Parameter:">
+				Параметр:
+			</text>
+			<button label="сделать запрос" label_selected="Сделать запрос" name="Make Request"/>
+		</panel>
+	</tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml b/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7400f1df3b5fb48d5a26f4f3a4ecdf3ddeb280ad
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_hardware_settings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Hardware Settings Floater" title="АППАРАТНЫЕ НАСТРОЙКИ">
+	<text name="Filtering:">
+		Фильтрация:
+	</text>
+	<check_box label="Анизотропная фильтрация (медленнее, если включено)" name="ani"/>
+	<text name="antialiasing label">
+		Сглаживание:
+	</text>
+	<combo_box label="Сглаживание" name="fsaa">
+		<combo_box.item label="Выключено" name="FSAADisabled"/>
+		<combo_box.item label="2x" name="2x"/>
+		<combo_box.item label="4x" name="4x"/>
+		<combo_box.item label="8x" name="8x"/>
+		<combo_box.item label="16x" name="16x"/>
+	</combo_box>
+	<text name="antialiasing restart">
+		(требуется перезапуск)
+	</text>
+	<spinner label="Гамма:" name="gamma"/>
+	<text name="(brightness, lower is brighter)">
+		(чем меньше, тем ярче. 0 – яркость по умолчанию)
+	</text>
+	<text name="Enable VBO:">
+		Включить VBO:
+	</text>
+	<check_box initial_value="истина" label="Включить объекты вершинных буферов OpenGL" name="vbo" tool_tip="Включение этого параметра на современном оборудовании даст увеличение производительности.  Однако на старом оборудовании это может привести к сбою приложения."/>
+	<slider label="Память для текстур (Мб):" name="GraphicsCardTextureMemory" tool_tip="Количество памяти, отводимое для текстур. По умолчанию равно памяти видеокарты. Уменьшение поможет увеличить производительность, но текстуры могут стать размытыми."/>
+	<spinner label="Дистанция тумана:" name="fog"/>
+	<button label="OK" label_selected="OK" name="OK"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_help_browser.xml b/indra/newview/skins/default/xui/ru/floater_help_browser.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2f560340ed27ac641f2dd7d9464509994bb3ef90
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_help_browser.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_help_browser" title="ОБЗОР СПРАВКИ">
+	<floater.string name="loading_text">
+		Загрузка...
+	</floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_how_to.xml b/indra/newview/skins/default/xui/ru/floater_how_to.xml
new file mode 100644
index 0000000000000000000000000000000000000000..52525e5d333929f50122af78610aa22caf256156
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="ПОМОЩЬ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_hud.xml b/indra/newview/skins/default/xui/ru/floater_hud.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b05113bfe0fa6da0ff5dcfa891749e07a8b275e9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_hud.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_hud" title="УЧЕБНИК"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_im_container.xml b/indra/newview/skins/default/xui/ru/floater_im_container.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b147cfa2b320bf3168cd7c5b53424c41c8719e09
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_im_container.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<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
new file mode 100644
index 0000000000000000000000000000000000000000..604d9dc6d3315bd233432cd7172e07198e1b701a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_im_session.xml
@@ -0,0 +1,8 @@
+<?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>
diff --git a/indra/newview/skins/default/xui/ru/floater_image_preview.xml b/indra/newview/skins/default/xui/ru/floater_image_preview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dbc4c32b98e5c46c3b58319d8f4f0b651371b586
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_image_preview.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Image Preview">
+	<text name="name_label">
+		Название:
+	</text>
+	<text name="description_label">
+		Описание:
+	</text>
+	<text name="preview_label">
+		Показать изображение как:
+	</text>
+	<combo_box label="Тип одежды" name="clothing_type_combo">
+		<item label="Изображение" name="Image" value="Изображение"/>
+		<item label="Волосы" name="Hair" value="Волосы"/>
+		<item label="Женская голова" name="FemaleHead" value="Женская голова"/>
+		<item label="Верхняя часть тела женщины" name="FemaleUpperBody" value="Верхняя часть тела женщины"/>
+		<item label="Нижняя часть тела женщины" name="FemaleLowerBody" value="Нижняя часть тела женщины"/>
+		<item label="Мужская голова" name="MaleHead" value="Мужская голова"/>
+		<item label="Верхняя часть тела мужчины" name="MaleUpperBody" value="Верхняя часть тела мужчины"/>
+		<item label="Нижняя часть тела мужчины" name="MaleLowerBody" value="Нижняя часть тела мужчины"/>
+		<item label="Юбка" name="Skirt" value="Юбка"/>
+		<item label="Скульптурный примитив" name="SculptedPrim" value="Скульптурный примитив"/>
+	</combo_box>
+	<text name="bad_image_text">
+		Невозможно прочитать изображение.
+Попробуйте сохранить изображение как 24-битный TGA-файл (Targa).
+	</text>
+	<check_box label="Использовать сжатие без потерь" name="lossless_check"/>
+	<button label="Отмена" name="cancel_btn"/>
+	<button label="Передать (L$[AMOUNT])" name="ok_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_import_collada.xml b/indra/newview/skins/default/xui/ru/floater_import_collada.xml
new file mode 100644
index 0000000000000000000000000000000000000000..122315cb26c33378ce119dee0dbb5ae837526da1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_import_collada.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Import Collada" title="Импорт сцены">
+	<text name="mesh count">
+		Мешей: [COUNT]
+	</text>
+	<text name="texture count">
+		Текстур: [COUNT]
+	</text>
+	<text name="status">
+		Статус: [STATUS]
+	</text>
+	<button label="Отмена" name="cancel"/>
+	<button label="ОК" name="ok"/>
+	<string name="status_idle">
+		Неактивно
+	</string>
+	<string name="status_uploading">
+		Передается [NAME]
+	</string>
+	<string name="status_creating">
+		Создается объект [NAME]
+	</string>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..072c20147df7f5e95abdd2b505cc79c238812464
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_incoming_call.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="incoming call" title="Входящий звонок">
+	<floater.string name="lifetime">
+		5
+	</floater.string>
+	<floater.string name="localchat">
+		Локальный голосовой чат
+	</floater.string>
+	<floater.string name="anonymous">
+		анонимно
+	</floater.string>
+	<floater.string name="VoiceInviteP2P">
+		вызывает.
+	</floater.string>
+	<floater.string name="VoiceInviteAdHoc">
+		теперь участвует в групповом голосовом чате.
+	</floater.string>
+	<floater.string name="VoiceInviteGroup">
+		присоединился (-лась) к голосовому каналу «[GROUP]».
+	</floater.string>
+	<floater.string name="VoiceInviteQuestionGroup">
+		Хотите выйти из чата «[CURRENT_CHAT]» и присоединиться к звонку «[GROUP]»?
+	</floater.string>
+	<floater.string name="VoiceInviteQuestionDefault">
+		Хотите выйти из чата «[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"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_inspect.xml b/indra/newview/skins/default/xui/ru/floater_inspect.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f7bb98157573c774a5f91ecf0840d0fa1da1463e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_inspect.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="inspect" title="ИНСПЕКТИРОВАНИЕ ОБЪЕКТОВ">
+	<floater.string name="timeStamp">
+		[wkday,datetime,local], [day,datetime,local] [mth,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+	</floater.string>
+	<scroll_list name="object_list" tool_tip="Выбор объекта из этого списка приведет к его подсветке">
+		<scroll_list.columns label="Название объекта" name="object_name"/>
+		<scroll_list.columns label="Имя владельца" name="owner_name"/>
+		<scroll_list.columns label="Имя создателя" name="creator_name"/>
+		<scroll_list.columns label="Дата создания" name="creation_date"/>
+	</scroll_list>
+	<button label="Профиль владельца..." name="button owner" tool_tip="Показывает профиль владельца подсвеченного объекта"/>
+	<button label="Профиль создателя..." name="button creator" tool_tip="Показывает профиль создателя подсвеченного объекта"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_inventory.xml b/indra/newview/skins/default/xui/ru/floater_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35cbcf177d2db112f163fc257d9e8f4540f511aa
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_inventory.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Inventory" title="МОЙ ИНВЕНТАРЬ">
+	<panel label="Панель инвентаря" name="Inventory Panel"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..9021b71fe2367bd037a10c070bb6be92d10df37b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_inventory_item_properties.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="item properties" title="СВОЙСТВА ПРЕДМЕТА">
+	<floater.string name="unknown">
+		(неизвестно)
+	</floater.string>
+	<floater.string name="public">
+		(публичное)
+	</floater.string>
+	<floater.string name="you_can">
+		Вы можете:
+	</floater.string>
+	<floater.string name="owner_can">
+		Владелец может:
+	</floater.string>
+	<floater.string name="acquiredDate">
+		[wkday,datetime,local], [day,datetime,local] [mth,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+	</floater.string>
+	<text name="LabelItemNameTitle">
+		Название:
+	</text>
+	<text name="LabelItemDescTitle">
+		Описание:
+	</text>
+	<text name="LabelCreatorTitle">
+		Создатель:
+	</text>
+	<button label="Профиль…" name="BtnCreator"/>
+	<text name="LabelOwnerTitle">
+		Владелец:
+	</text>
+	<button label="Профиль…" name="BtnOwner"/>
+	<text name="LabelAcquiredTitle">
+		Приобретено:
+	</text>
+	<text name="LabelAcquiredDate">
+		Ср 24 Май 12:50:46 2006
+	</text>
+	<text name="OwnerLabel">
+		Ð’Ñ‹:
+	</text>
+	<check_box label="Изменить" name="CheckOwnerModify"/>
+	<check_box label="Копировать" name="CheckOwnerCopy"/>
+	<check_box label="Перепродать" name="CheckOwnerTransfer"/>
+	<text name="AnyoneLabel">
+		Все:
+	</text>
+	<check_box label="Копировать" name="CheckEveryoneCopy"/>
+	<text name="GroupLabel">
+		Группа:
+	</text>
+	<check_box label="Поделиться" name="CheckShareWithGroup"/>
+	<text name="NextOwnerLabel">
+		Следующий владелец:
+	</text>
+	<check_box label="Изменить" name="CheckNextOwnerModify"/>
+	<check_box label="Копировать" name="CheckNextOwnerCopy"/>
+	<check_box label="Перепродать" name="CheckNextOwnerTransfer"/>
+	<check_box label="Для продажи" name="CheckPurchase"/>
+	<combo_box name="combobox sale copy">
+		<combo_box.item label="Копировать" name="Copy"/>
+		<combo_box.item label="Оригинал" name="Original"/>
+	</combo_box>
+	<spinner label="Цена:" name="Edit Cost"/>
+	<text name="CurrencySymbol">
+		L$
+	</text>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..02068c57b8a10dffab6ede49855dd33568348762
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_inventory_view_finder.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Inventory Finder" title="INVENTORY_RECENT_ITEMS">
+	<check_box label="Анимация" name="check_animation"/>
+	<check_box label="Визитки" name="check_calling_card"/>
+	<check_box label="Одежда" name="check_clothing"/>
+	<check_box label="Жесты" name="check_gesture"/>
+	<check_box label="Закладки" name="check_landmark"/>
+	<check_box label="Меши" name="check_mesh"/>
+	<check_box label="Заметки" name="check_notecard"/>
+	<check_box label="Объекты" name="check_object"/>
+	<check_box label="Скрипты" name="check_script"/>
+	<check_box label="Звуки" name="check_sound"/>
+	<check_box label="Текстуры" name="check_texture"/>
+	<check_box label="Снимки" name="check_snapshot"/>
+	<button label="Все" label_selected="Все" name="All"/>
+	<button label="Нет" label_selected="Нет" name="None"/>
+	<check_box label="Всегда показывать папки" name="check_show_empty"/>
+	<check_box label="С момента выхода" name="check_since_logoff"/>
+	<text name="- OR -">
+		- ИЛИ -
+	</text>
+	<spinner label="Часов назад" name="spin_hours_ago"/>
+	<spinner label="Дней назад" name="spin_days_ago"/>
+	<button label="Закрыть" label_selected="Закрыть" name="Close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_joystick.xml b/indra/newview/skins/default/xui/ru/floater_joystick.xml
new file mode 100644
index 0000000000000000000000000000000000000000..66568563daa3fed87d783b76bd428c13bbbdd6c8
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_joystick.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Joystick" title="КОНФИГУРАЦИЯ ДЖОЙСТИКА">
+	<floater.string name="NoDevice">
+		устройство не выбрано
+	</floater.string>
+	<check_box label="Вкл. джойстик:" name="enable_joystick"/>
+	<spinner label="Наложение по X" name="JoystickAxis1"/>
+	<spinner label="Наложение по Y" name="JoystickAxis2"/>
+	<spinner label="Наложение по Z" name="JoystickAxis0"/>
+	<spinner label="Н. уклонов" name="JoystickAxis4"/>
+	<spinner label="Н. сгибов" name="JoystickAxis5"/>
+	<spinner label="Н. вращения" name="JoystickAxis3"/>
+	<spinner label="Н. масштабир." name="JoystickAxis6"/>
+	<check_box label="Масштабирование" name="ZoomDirect"/>
+	<check_box label="3D курсор" name="Cursor3D"/>
+	<check_box label="Автоуровень" name="AutoLeveling"/>
+	<text name="Control Modes:">
+		Режимы управления:
+	</text>
+	<check_box label="Аватар" name="JoystickAvatarEnabled"/>
+	<check_box label="Стройка" name="JoystickBuildEnabled"/>
+	<check_box label="Камера" name="JoystickFlycamEnabled"/>
+	<stat_view label="Монитор джойстика" name="axis_view">
+		<stat_bar label="Ось 0" name="axis0"/>
+		<stat_bar label="Ось 1" name="axis1"/>
+		<stat_bar label="Ось 2" name="axis2"/>
+		<stat_bar label="Ось 3" name="axis3"/>
+		<stat_bar label="Ось 4" name="axis4"/>
+		<stat_bar label="Ось 5" name="axis5"/>
+	</stat_view>
+	<text name="XScale">
+		Масштаб по X
+	</text>
+	<text name="YScale">
+		Масштаб по Y
+	</text>
+	<text name="ZScale">
+		Масштаб по Z
+	</text>
+	<text name="PitchScale">
+		Масштаб уклона
+	</text>
+	<text name="YawScale">
+		Масштаб сгиба
+	</text>
+	<text name="RollScale">
+		Масштаб вращения
+	</text>
+	<text name="XDeadZone">
+		Невидимая зона по X
+	</text>
+	<text name="YDeadZone">
+		Невидимая зона по Y
+	</text>
+	<text name="ZDeadZone">
+		Невидимая зона по Z
+	</text>
+	<text name="PitchDeadZone">
+		Невид. зона уклона
+	</text>
+	<text name="YawDeadZone">
+		Невид. зона сгиба
+	</text>
+	<text name="RollDeadZone">
+		Невид. зона вращения
+	</text>
+	<text name="Feathering">
+		Размывка краев
+	</text>
+	<text name="ZoomScale2">
+		Масштаб
+	</text>
+	<text name="ZoomDeadZone">
+		Невид. зона масшт.
+	</text>
+	<button label="Стандартные значения SpaceNavigator" name="SpaceNavigatorDefaults"/>
+	<button label="OK" label_selected="OK" name="ok_btn"/>
+	<button label="Отмена" label_selected="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_lagmeter.xml b/indra/newview/skins/default/xui/ru/floater_lagmeter.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c420006a03c394e955f543a1bdae6486bd0a2832
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_lagmeter.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_lagmeter" title="УРОВЕНЬ ЛАГОВ">
+	<floater.string name="max_title_msg">
+		Уровень лагов
+	</floater.string>
+	<floater.string name="max_width_px">
+		360
+	</floater.string>
+	<floater.string name="min_title_msg">
+		Лаг
+	</floater.string>
+	<floater.string name="min_width_px">
+		90
+	</floater.string>
+	<floater.string name="client_text_msg">
+		Клиент
+	</floater.string>
+	<floater.string name="client_frame_rate_critical_fps">
+		10
+	</floater.string>
+	<floater.string name="client_frame_rate_warning_fps">
+		15
+	</floater.string>
+	<floater.string name="client_frame_time_window_bg_msg">
+		Нормально, окно в фоне
+	</floater.string>
+	<floater.string name="client_frame_time_critical_msg">
+		Частота кадров клиента ниже [CLIENT_FRAME_RATE_CRITICAL]
+	</floater.string>
+	<floater.string name="client_frame_time_warning_msg">
+		Частота кадров клиента от [CLIENT_FRAME_RATE_CRITICAL] до [CLIENT_FRAME_RATE_WARNING]
+	</floater.string>
+	<floater.string name="client_frame_time_normal_msg">
+		Нормально
+	</floater.string>
+	<floater.string name="client_draw_distance_cause_msg">
+		Возможная причина: дальность отрисовки слишком велика
+	</floater.string>
+	<floater.string name="client_texture_loading_cause_msg">
+		Возможная причина: загрузка изображений
+	</floater.string>
+	<floater.string name="client_texture_memory_cause_msg">
+		Возможная причина: слишком много изображений в памяти
+	</floater.string>
+	<floater.string name="client_complex_objects_cause_msg">
+		Возможная причина: слишком много сложных объектов в сцене
+	</floater.string>
+	<floater.string name="network_text_msg">
+		Сеть
+	</floater.string>
+	<floater.string name="network_packet_loss_critical_pct">
+		10
+	</floater.string>
+	<floater.string name="network_packet_loss_warning_pct">
+		5
+	</floater.string>
+	<floater.string name="network_packet_loss_critical_msg">
+		Сеть теряет более [NETWORK_PACKET_LOSS_CRITICAL]% пакетов
+	</floater.string>
+	<floater.string name="network_packet_loss_warning_msg">
+		Сеть теряет [NETWORK_PACKET_LOSS_WARNING]–[NETWORK_PACKET_LOSS_CRITICAL]% пакетов
+	</floater.string>
+	<floater.string name="network_performance_normal_msg">
+		Нормально
+	</floater.string>
+	<floater.string name="network_ping_critical_ms">
+		600
+	</floater.string>
+	<floater.string name="network_ping_warning_ms">
+		300
+	</floater.string>
+	<floater.string name="network_ping_critical_msg">
+		Пинг соединения более [NETWORK_PING_CRITICAL] мс
+	</floater.string>
+	<floater.string name="network_ping_warning_msg">
+		Пинг соединения [NETWORK_PING_WARNING]–[NETWORK_PING_CRITICAL] мс
+	</floater.string>
+	<floater.string name="network_packet_loss_cause_msg">
+		Возможно, плохое соединение, или параметр «Ширина канала» слишком велик.
+	</floater.string>
+	<floater.string name="network_ping_cause_msg">
+		Возможно, плохое соединение или есть работающие файлообменные программы.
+	</floater.string>
+	<floater.string name="server_text_msg">
+		Сервер
+	</floater.string>
+	<floater.string name="server_frame_rate_critical_fps">
+		20
+	</floater.string>
+	<floater.string name="server_frame_rate_warning_fps">
+		30
+	</floater.string>
+	<floater.string name="server_single_process_max_time_ms">
+		20
+	</floater.string>
+	<floater.string name="server_frame_time_critical_msg">
+		Частота кадров сервера ниже [SERVER_FRAME_RATE_CRITICAL]
+	</floater.string>
+	<floater.string name="server_frame_time_warning_msg">
+		Частота кадров сервера [SERVER_FRAME_RATE_CRITICAL]–[SERVER_FRAME_RATE_WARNING]
+	</floater.string>
+	<floater.string name="server_frame_time_normal_msg">
+		Нормально
+	</floater.string>
+	<floater.string name="server_physics_cause_msg">
+		Возможная причина: слишком много физических объектов
+	</floater.string>
+	<floater.string name="server_scripts_cause_msg">
+		Возможная причина: слишком много скриптовых объектов
+	</floater.string>
+	<floater.string name="server_net_cause_msg">
+		Возможная причина: слишком большой сетевой трафик
+	</floater.string>
+	<floater.string name="server_agent_cause_msg">
+		Возможная причина: слишком много людей в регионе
+	</floater.string>
+	<floater.string name="server_images_cause_msg">
+		Возможная причина: слишком много изображений
+	</floater.string>
+	<floater.string name="server_generic_cause_msg">
+		Возможная причина: сервер сильно загружен
+	</floater.string>
+	<floater.string name="smaller_label">
+		&gt;&gt;
+	</floater.string>
+	<floater.string name="bigger_label">
+		&lt;&lt;
+	</floater.string>
+	<button name="client_lagmeter" tool_tip="Уровень лагов клиента"/>
+	<text name="client">
+		Клиент
+	</text>
+	<text name="client_text">
+		Нормально
+	</text>
+	<button name="network_lagmeter" tool_tip="Уровень лагов сети"/>
+	<text name="network">
+		Сеть
+	</text>
+	<text name="network_text">
+		Нормально
+	</text>
+	<button name="server_lagmeter" tool_tip="Уровень лагов сервера"/>
+	<text name="server">
+		Сервер
+	</text>
+	<text name="server_text">
+		Нормально
+	</text>
+	<button label="&gt;&gt;" name="minimize" tool_tip="Переключение размера"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_land_holdings.xml b/indra/newview/skins/default/xui/ru/floater_land_holdings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..17d347867d0d5ae11d91ce3f2d6f10661b41e9bb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_land_holdings.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="land holdings floater" title="МОЯ ЗЕМЛЯ">
+	<floater.string name="area_string">
+		[AREA] м²
+	</floater.string>
+	<scroll_list name="parcel list">
+		<scroll_list.columns label="Участок" name="name"/>
+		<scroll_list.columns label="Регион" name="location"/>
+		<scroll_list.columns label="Тип" name="type"/>
+		<scroll_list.columns label="Площадь" name="area"/>
+	</scroll_list>
+	<button label="Телепорт" label_selected="Телепорт" name="Teleport" tool_tip="Телепортироваться в центр этой земли."/>
+	<button label="Карта" label_selected="Карта" name="Show on Map" tool_tip="Показать эту землю на карте мира."/>
+	<text name="contrib_label">
+		Ваши вложения в группы:
+	</text>
+	<scroll_list name="grant list">
+		<scroll_list.columns label="Группа" name="group"/>
+		<scroll_list.columns label="Площадь" name="area"/>
+	</scroll_list>
+	<text name="allowed_label">
+		Разрешенный размер владений для текущего плана оплат:
+	</text>
+	<text name="allowed_text">
+		[AREA] м²
+	</text>
+	<text name="current_label">
+		Текущий размер владений:
+	</text>
+	<text name="current_text">
+		[AREA] м²
+	</text>
+	<text name="available_label">
+		Доступно для приобретения:
+	</text>
+	<text name="available_text">
+		[AREA] м²
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d8047fc0453b37f902cfe5fb9aa362293392e22c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_live_lsleditor.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script ed float" title="СКРИПТ: СОЗДАТЬ СКРИПТ">
+	<floater.string name="not_allowed">
+		Вы не можете просматривать и изменять этот скрипт, поскольку для него выбрана категория «не копируемые». Для просмотра или изменения скрипта в объекте нужны полные права доступа.
+	</floater.string>
+	<floater.string name="script_running">
+		Выполняется
+	</floater.string>
+	<floater.string name="Title">
+		СКРИПТ: [NAME]
+	</floater.string>
+	<button label="Сброс" label_selected="Сброс" name="Reset"/>
+	<check_box initial_value="истина" label="Выполняется" name="running"/>
+	<check_box initial_value="истина" label="Моно" name="mono"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_lsl_guide.xml b/indra/newview/skins/default/xui/ru/floater_lsl_guide.xml
new file mode 100644
index 0000000000000000000000000000000000000000..95a3b8b2a058c80756943ee2d8ef6e67b5abdfba
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_lsl_guide.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script ed float" title="СПРАВКА ПО LSL">
+	<check_box label="Курсор" name="lock_check"/>
+	<combo_box label="Блокировка" name="history_combo"/>
+	<button label="Назад" name="back_btn"/>
+	<button label="Вперед" name="fwd_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_map.xml b/indra/newview/skins/default/xui/ru/floater_map.xml
new file mode 100644
index 0000000000000000000000000000000000000000..59ceb0a773bd8e0b54e7016719fe534815593767
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_map.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Map" title="МИНИКАРТА">
+	<floater.string name="ToolTipMsg">
+		[REGION](Двойной щелчок открывает карту, shift+перетягивание – обзор)
+	</floater.string>
+	<floater.string name="AltToolTipMsg">
+		[REGION](Двойной щелчок – телепортация, shift+перетягивание – обзор)
+	</floater.string>
+	<floater.string name="mini_map_caption">
+		Миникарта
+	</floater.string>
+	<text label="С" name="floater_map_north">
+		С
+	</text>
+	<text label="E" name="floater_map_east">
+		E
+	</text>
+	<text label="З" name="floater_map_west">
+		З
+	</text>
+	<text label="Ю" name="floater_map_south">
+		Ю
+	</text>
+	<text label="ЮВ" name="floater_map_southeast">
+		ЮВ
+	</text>
+	<text label="СВ" name="floater_map_northeast">
+		СВ
+	</text>
+	<text label="ЮЗ" name="floater_map_southwest">
+		ЮЗ
+	</text>
+	<text label="СЗ" name="floater_map_northwest">
+		СЗ
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_media_browser.xml b/indra/newview/skins/default/xui/ru/floater_media_browser.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d1fc105046ea3e609b8e72a3c933a64c07c18840
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_media_browser.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_about" title="БРАУЗЕР ДЛЯ ПРОСМОТРА МЕДИА">
+	<floater.string name="home_page_url">
+		http://www.secondlife.com
+	</floater.string>
+	<floater.string name="support_page_url">
+		http://support.secondlife.com
+	</floater.string>
+	<layout_stack name="stack1">
+		<layout_panel name="nav_controls">
+			<button label="Назад" name="back"/>
+			<button label="Вперед" name="forward"/>
+			<button label="Обновить" name="reload"/>
+			<button label="Перейти" name="go"/>
+		</layout_panel>
+		<layout_panel name="time_controls">
+			<button label="назад" name="rewind"/>
+			<button label="остановить" name="stop"/>
+			<button label="вперед" name="seek"/>
+		</layout_panel>
+		<layout_panel name="parcel_owner_controls">
+			<button label="Отправить текущую страницу на участок" name="assign"/>
+		</layout_panel>
+		<layout_panel name="external_controls">
+			<button label="Открыть в моем браузере" name="open_browser"/>
+			<check_box label="Всегда открывать в моем браузере" name="open_always"/>
+			<button label="Закрыть" name="close"/>
+		</layout_panel>
+	</layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_media_settings.xml b/indra/newview/skins/default/xui/ru/floater_media_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1515cbb3b883de23aefc3f686a7c555b856e2809
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_media_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="media_settings" title="НАСТРОЙКИ МЕДИА">
+	<button label="OK" label_selected="OK" name="OK"/>
+	<button label="Отмена" label_selected="Отмена" name="Cancel"/>
+	<button label="Применить" label_selected="Применить" name="Apply"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_mem_leaking.xml b/indra/newview/skins/default/xui/ru/floater_mem_leaking.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7aa5c27cdea69526c89dfb72e7f1a1e3a8c10018
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_mem_leaking.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="MemLeak" title="ИМИТАЦИЯ УТЕЧКИ ПАМЯТИ">
+	<spinner label="Скорость утечки (байтов за кадр):" name="leak_speed"/>
+	<spinner label="Максимальная утечка памяти (Мб):" name="max_leak"/>
+	<text name="total_leaked_label">
+		Текущая утечка памяти: [SIZE] КБ
+	</text>
+	<text name="note_label_1">
+		[NOTE1]
+	</text>
+	<text name="note_label_2">
+		[NOTE2]
+	</text>
+	<button label="Старт" name="start_btn"/>
+	<button label="Стоп" name="stop_btn"/>
+	<button label="Освободить" name="release_btn"/>
+	<button label="Закрыть" name="close_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_model_preview.xml b/indra/newview/skins/default/xui/ru/floater_model_preview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5bb96b8de450493f431869f587283d125aec663e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_model_preview.xml
@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Model Preview" title="ПЕРЕДАЧА МОДЕЛИ">
+	<string name="status_idle"/>
+	<string name="status_parse_error">
+		Ошибка. Проблема при анализе файла DAE – см. подробности в журнале.
+	</string>
+	<string name="status_material_mismatch">
+		Ошибка. Материал модели не входит в эталонную модель.
+	</string>
+	<string name="status_reading_file">
+		Загрузка...
+	</string>
+	<string name="status_generating_meshes">
+		Создаются меши...
+	</string>
+	<string name="status_vertex_number_overflow">
+		Ошибка. Число вершин превышает 65534. Прервано.
+	</string>
+	<string name="bad_element">
+		Ошибка: недопустимый элемент
+	</string>
+	<string name="high">
+		Высокий
+	</string>
+	<string name="medium">
+		Средний
+	</string>
+	<string name="low">
+		Низкий
+	</string>
+	<string name="lowest">
+		Самый низкий
+	</string>
+	<string name="mesh_status_good">
+		Доставлено!
+	</string>
+	<string name="mesh_status_na">
+		Н/Д
+	</string>
+	<string name="mesh_status_none">
+		Нет
+	</string>
+	<string name="mesh_status_submesh_mismatch">
+		Отличается число текстурируемых граней на уровнях детализации.
+	</string>
+	<string name="mesh_status_mesh_mismatch">
+		Отличается число экземпляров меша на уровнях детализации.
+	</string>
+	<string name="mesh_status_too_many_vertices">
+		Слишком много вершин на уровне детализации.
+	</string>
+	<string name="mesh_status_missing_lod">
+		Отсутствует необходимый уровень детализации.
+	</string>
+	<string name="mesh_status_invalid_material_list">
+		Материалы уровня детализации не входят в эталонную модель.
+	</string>
+	<string name="layer_all">
+		Все
+	</string>
+	<string name="decomposing">
+		Анализ...
+	</string>
+	<string name="simplifying">
+		Упрощение...
+	</string>
+	<string name="tbd">
+		Позже
+	</string>
+	<panel name="left_panel">
+		<panel name="model_name_representation_panel">
+			<text name="name_label">
+				Имя модели:
+			</text>
+			<text name="model_category_label">
+				Эта модель представляет...
+			</text>
+			<combo_box name="model_category_combo">
+				<combo_item label="Выберите вариант..." name="Choose one"/>
+				<combo_item label="Форма аватара" name="Avatar shape"/>
+				<combo_item label="Присоединение аватара" name="Avatar attachment"/>
+				<combo_item label="Подвижный объект (машина, животное)" name="Moving object (vehicle, animal)"/>
+				<combo_item label="Строительный компонент" name="Building Component"/>
+				<combo_item label="Большая, неподвижная и т.д." name="Large, non moving etc"/>
+				<combo_item label="Малая, неподвижная и т.д." name="Smaller, non-moving etc"/>
+				<combo_item label="Ни один из них" name="Not really any of these"/>
+			</combo_box>
+		</panel>
+		<tab_container name="import_tab">
+			<panel label="Уровень детализации" name="lod_panel" title="Уровень детализации">
+				<text initial_value="Источник" name="source" value="Источник"/>
+				<text initial_value="Треугольники" name="triangles" value="Треугольники"/>
+				<text initial_value="Вершины" name="vertices" value="Вершины"/>
+				<text initial_value="Высокий" name="high_label" value="Высокий"/>
+				<button label="Обзор..." name="lod_browse_high"/>
+				<text initial_value="0" name="high_triangles" value="0"/>
+				<text initial_value="0" name="high_vertices" value="0"/>
+				<text initial_value="Средний" name="medium_label" value="Средний"/>
+				<button label="Обзор..." name="lod_browse_medium"/>
+				<text initial_value="0" name="medium_triangles" value="0"/>
+				<text initial_value="0" name="medium_vertices" value="0"/>
+				<text initial_value="Низкий" name="low_label" value="Низкий"/>
+				<button label="Обзор..." name="lod_browse_low"/>
+				<text initial_value="0" name="low_triangles" value="0"/>
+				<text initial_value="0" name="low_vertices" value="0"/>
+				<text initial_value="Самый низкий" name="lowest_label" value="Самый низкий"/>
+				<button label="Обзор..." name="lod_browse_lowest"/>
+				<text initial_value="0" name="lowest_triangles" value="0"/>
+				<text initial_value="0" name="lowest_vertices" value="0"/>
+				<check_box label="Генерировать нормали" name="gen_normals"/>
+				<text initial_value="Угол сгиба:" name="crease_label" value="Угол сгиба:"/>
+				<spinner name="crease_angle" value="75"/>
+			</panel>
+			<panel label="Физика" name="physics_panel">
+				<panel name="physics geometry">
+					<text name="first_step_name">
+						Шаг 1. Уровень детализации
+					</text>
+					<combo_box name="physics_lod_combo" tool_tip="Уровень детализации для физической формы">
+						<combo_item name="choose_one">
+							Выберите вариант...
+						</combo_item>
+						<combo_item name="physics_high">
+							Высокое
+						</combo_item>
+						<combo_item name="physics_medium">
+							Средний
+						</combo_item>
+						<combo_item name="physics_low">
+							Низкий
+						</combo_item>
+						<combo_item name="physics_lowest">
+							Самый низкий
+						</combo_item>
+						<combo_item name="load_from_file">
+							Из файла
+						</combo_item>
+					</combo_box>
+					<button label="Обзор..." name="physics_browse"/>
+				</panel>
+				<panel name="physics analysis">
+					<text name="method_label">
+						2 этап. Анализ
+					</text>
+					<text name="analysis_method_label">
+						Метод:
+					</text>
+					<text name="quality_label">
+						Качество:
+					</text>
+					<text name="smooth_method_label">
+						Гладкость:
+					</text>
+					<check_box label="Закрыть отверстия" name="Close Holes (Slow)"/>
+					<button label="Анализ" name="Decompose"/>
+					<button label="Отмена" name="decompose_cancel"/>
+				</panel>
+				<panel name="physics simplification">
+					<text name="second_step_label">
+						Шаг 3. Упрощение
+					</text>
+					<text name="simp_method_header">
+						Метод:
+					</text>
+					<text name="pass_method_header">
+						Проходов:
+					</text>
+					<text name="Detail Scale label">
+						Масштаб деталей:
+					</text>
+					<text name="Retain%_label">
+						Сохранять:
+					</text>
+					<combo_box name="Combine Quality" value="1"/>
+					<button label="Упрощение" name="Simplify"/>
+					<button label="Отмена" name="simplify_cancel"/>
+				</panel>
+				<panel name="physics info">
+					<text name="results_text">
+						Результаты:
+					</text>
+					<text name="physics_triangles">
+						Треугольников: [TRIANGLES],
+					</text>
+					<text name="physics_points">
+						Вершин: [POINTS],
+					</text>
+					<text name="physics_hulls">
+						Оболочек: [HULLS]
+					</text>
+				</panel>
+			</panel>
+			<panel label="Параметры передачи" name="modifiers_panel">
+				<text name="scale_label">
+					Масштаб (1=не масштабировать):
+				</text>
+				<spinner name="import_scale" value="1.0"/>
+				<text name="dimensions_label">
+					Размеры:
+				</text>
+				<text name="import_dimensions">
+					[X] X [Y] X [Z]
+				</text>
+				<check_box label="Включить текстуры" name="upload_textures"/>
+				<text name="include_label">
+					Только для моделей аватаров:
+				</text>
+				<check_box label="Включить вес кожи" name="upload_skin"/>
+				<check_box label="Включить положения суставов" name="upload_joints"/>
+				<text name="pelvis_offset_label">
+					Смещение по Z (поднять или опустить аватар):
+				</text>
+				<spinner name="pelvis_offset" value="0.0"/>
+			</panel>
+		</tab_container>
+		<panel name="weights_and_warning_panel">
+			<button label="Рассчитать вес и плату" name="calculate_btn" tool_tip="Рассчитать вес и плату"/>
+			<button label="Отмена" name="cancel_btn"/>
+			<button label="Передать" name="ok_btn" tool_tip="Передать в симулятор"/>
+			<button label="Очистить настройки и сбросить форму" name="reset_btn"/>
+			<text name="upload_fee">
+				Плата за передачу: L$ [FEE]
+			</text>
+			<text name="prim_weight">
+				Влияние земли: [EQ]
+			</text>
+			<text name="download_weight">
+				Загрузка: [ST]
+			</text>
+			<text name="physics_weight">
+				Физика: [PH]
+			</text>
+			<text name="server_weight">
+				Сервер: [SIM]
+			</text>
+			<text name="warning_title">
+				ПРИМЕЧАНИЕ.
+			</text>
+			<text name="warning_message">
+				У вас нет прав на передачу сеточных моделей. [[VURL] Узнайте, как] получить их.
+			</text>
+			<text name="status">
+				[STATUS]
+			</text>
+		</panel>
+	</panel>
+	<text name="lod_label">
+		Просмотр:
+	</text>
+	<panel name="right_panel">
+		<combo_box name="preview_lod_combo" tool_tip="Уровень детализации при предварительном просмотре">
+			<combo_item name="high">
+				Высокий
+			</combo_item>
+			<combo_item name="medium">
+				Среднее
+			</combo_item>
+			<combo_item name="low">
+				Низкий
+			</combo_item>
+			<combo_item name="lowest">
+				Самый низкий
+			</combo_item>
+		</combo_box>
+		<text name="label_display">
+			Показать...
+		</text>
+		<check_box label="Ребра" name="show_edges"/>
+		<check_box label="Физика" name="show_physics"/>
+		<check_box label="Текстуры" name="show_textures"/>
+		<check_box label="Вес кожи" name="show_skin_weight"/>
+		<check_box label="Суставы" name="show_joint_positions"/>
+		<text name="physics_explode_label">
+			Просмотр разложения:
+		</text>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_model_wizard.xml b/indra/newview/skins/default/xui/ru/floater_model_wizard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5b03dd2c73163cb60c98dff3175a86efcfd16f75
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_model_wizard.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Model Wizard" title="ПЕРЕДАТЬ МАСТЕР МОДЕЛИРОВАНИЯ">
+	<button label="5. Передать" name="upload_btn"/>
+	<button label="4. Просмотр" name="review_btn"/>
+	<button label="3. Физика" name="physics_btn"/>
+	<button label="2. Оптимизировать" name="optimize_btn"/>
+	<button label="1. Выбрать файл" name="choose_file_btn"/>
+	<panel name="choose_file_panel">
+		<panel name="header_panel">
+			<text name="header_text">
+				Выберите файл модели
+			</text>
+		</panel>
+		<panel name="content">
+			<text name="advanced_users_text">
+				Пользователям в расширенном режиме: если вы умеете создавать трехмерные графические объекты, то, возможно, захотите воспользоваться средством Advanced Uploader, которое предоставляет расширенные возможности передачи объектов.
+			</text>
+			<button label="Перейти в расширенный режим" name="switch_to_advanced"/>
+			<text name="Cache location">
+				Выберите файл модели для передачи
+			</text>
+			<button label="Обзор..." label_selected="Обзор..." name="browse"/>
+			<text name="Model types">
+				В Second Life поддерживаются файлы COLLADA (.dae)
+			</text>
+			<text name="dimensions">
+				X         Y         Z
+			</text>
+			<text name="warning_label">
+				ВНИМАНИЕ!
+			</text>
+			<text name="warning_text">
+				Вы не сможете завершить передачу этой модели на серверы Second Life. [secondlife:///app/floater/learn_more Узнайте, как] настроить в вашем аккаунте передачу сеточных моделей.
+			</text>
+		</panel>
+	</panel>
+	<panel name="optimize_panel">
+		<panel name="header_panel">
+			<text name="header_text">
+				Оптимизировать модель
+			</text>
+		</panel>
+		<text name="description">
+			Мы оптимизировали модель для повышения быстродействия. По желанию можно выполнить дополнительную настройку.
+		</text>
+		<panel name="content">
+			<text name="high_detail_text">
+				Создать уровень детализации: высокий
+			</text>
+			<text name="medium_detail_text">
+				Создать уровень детализации: средний
+			</text>
+			<text name="low_detail_text">
+				Создать уровень детализации: низкий
+			</text>
+			<text name="lowest_detail_text">
+				Создать уровень детализации: самый низкий
+			</text>
+		</panel>
+		<panel name="content2">
+			<button label="Пересчитать геометрию" name="recalculate_geometry_btn"/>
+			<text name="lod_label">
+				Просмотр геометрии
+			</text>
+			<combo_box name="preview_lod_combo" tool_tip="Детализация при предварительном просмотре">
+				<combo_item name="high">
+					Детально
+				</combo_item>
+				<combo_item name="medium">
+					Средняя детализация
+				</combo_item>
+				<combo_item name="low">
+					Мало деталей
+				</combo_item>
+				<combo_item name="lowest">
+					Минимум деталей
+				</combo_item>
+			</combo_box>
+		</panel>
+	</panel>
+	<panel name="physics_panel">
+		<panel name="header_panel">
+			<text name="header_text">
+				Настроить физику
+			</text>
+		</panel>
+		<text name="description">
+			Мы создадим форму для внешнего каркаса модели. Настройте уровень детализации формы в соответствии с целями, для которых предназначена модель.
+		</text>
+		<panel name="content">
+			<button label="Пересчитать физику" name="recalculate_physics_btn"/>
+			<button label="Пересчет..." name="recalculating_physics_btn"/>
+			<text name="lod_label">
+				Просмотр физики
+			</text>
+			<combo_box name="preview_lod_combo2" tool_tip="Уровень детализации при предварительном просмотре">
+				<combo_item name="high">
+					Детально
+				</combo_item>
+				<combo_item name="medium">
+					Средняя детализация
+				</combo_item>
+				<combo_item name="low">
+					Мало деталей
+				</combo_item>
+				<combo_item name="lowest">
+					Минимум деталей
+				</combo_item>
+			</combo_box>
+		</panel>
+	</panel>
+	<panel name="review_panel">
+		<panel name="header_panel">
+			<text name="header_text">
+				Просмотр
+			</text>
+		</panel>
+		<panel name="content">
+			<text name="review_prim_equiv">
+				Воздействие на участок/регион: эквивалент в примитивах: [EQUIV]
+			</text>
+			<text name="review_fee">
+				За передачу с вашего счета будет снята плата в размере L$[FEE].
+			</text>
+			<text name="review_confirmation">
+				Нажав кнопку «Передать», вы подтверждаете, что у вас есть надлежащие права на все составляющие модели.
+			</text>
+		</panel>
+	</panel>
+	<panel name="upload_panel">
+		<panel name="header_panel">
+			<text name="header_text">
+				Передача завершена
+			</text>
+		</panel>
+		<text name="model_uploaded_text">
+			Ваша модель передана.
+		</text>
+		<text name="inventory_text">
+			Находится в папке «Объекты» вашего инвентаря.
+		</text>
+		<text name="charged_fee">
+			С вашего счета снято: L$[FEE].
+		</text>
+	</panel>
+	<button label="&lt;&lt; Назад" name="back"/>
+	<button label="Далее &gt;&gt;" name="next"/>
+	<button label="Рассчитать вес и плату &gt;&gt;" name="calculate"/>
+	<button label="Расчет..." name="calculating"/>
+	<button label="Передать" name="upload" tool_tip="Передать в симулятор"/>
+	<button label="Отмена" name="cancel"/>
+	<button label="Закрыть" name="close"/>
+	<spinner name="import_scale" value="1.0"/>
+	<string name="status_idle">
+		Неактивно
+	</string>
+	<string name="status_parse_error">
+		Проблема при анализе файла DAE – см. подробности в журнале.
+	</string>
+	<string name="status_reading_file">
+		Загрузка...
+	</string>
+	<string name="status_generating_meshes">
+		Создаются меши...
+	</string>
+	<string name="status_vertex_number_overflow">
+		Ошибка. Число вершин превышает 65534. Прервано.
+	</string>
+	<string name="bad_element">
+		Ошибка: недопустимый элемент
+	</string>
+	<string name="high">
+		высокий
+	</string>
+	<string name="medium">
+		средний
+	</string>
+	<string name="low">
+		низкий
+	</string>
+	<string name="lowest">
+		самый низкий
+	</string>
+	<string name="mesh_status_good">
+		Доставлено!
+	</string>
+	<string name="mesh_status_na">
+		Н/Д
+	</string>
+	<string name="mesh_status_none">
+		Нет
+	</string>
+	<string name="mesh_status_submesh_mismatch">
+		Отличается число текстурируемых граней на уровнях детализации.
+	</string>
+	<string name="mesh_status_mesh_mismatch">
+		Отличается число экземпляров меша на уровнях детализации.
+	</string>
+	<string name="mesh_status_too_many_vertices">
+		Слишком много вершин на уровне детализации.
+	</string>
+	<string name="mesh_status_missing_lod">
+		Отсутствует необходимый уровень детализации.
+	</string>
+	<string name="layer_all">
+		Все
+	</string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_moveview.xml b/indra/newview/skins/default/xui/ru/floater_moveview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cb1fda1a1f3b7e040f459e425b2ffd7798cf75af
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_moveview.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="move_floater" title="ХОДЬБА / БЕГ / ПОЛЕТ">
+	<string name="walk_forward_tooltip">
+		Идти вперед (нажмите стрелку вверх или клавишу W)
+	</string>
+	<string name="walk_back_tooltip">
+		Идти назад (нажмите стрелку вниз или клавишу S)
+	</string>
+	<string name="walk_left_tooltip">
+		Идти налево (нажмите Shift + стрелку влево или клавишу A)
+	</string>
+	<string name="walk_right_tooltip">
+		Идти направо (нажмите Shift + стрелку вправо или клавишу D)
+	</string>
+	<string name="run_forward_tooltip">
+		Бежать вперед (нажмите стрелку вверх или клавишу W)
+	</string>
+	<string name="run_back_tooltip">
+		Бежать назад (нажмите стрелку вниз или клавишу S)
+	</string>
+	<string name="run_left_tooltip">
+		Бежать налево (нажмите Shift + стрелку влево или клавишу A)
+	</string>
+	<string name="run_right_tooltip">
+		Бежать направо (нажмите Shift + стрелку вправо или клавишу D)
+	</string>
+	<string name="fly_forward_tooltip">
+		Лететь вперед (нажмите стрелку вверх или клавишу W)
+	</string>
+	<string name="fly_back_tooltip">
+		Лететь назад (нажмите стрелку вниз или клавишу S)
+	</string>
+	<string name="fly_left_tooltip">
+		Лететь налево (нажмите Shift + стрелку влево или клавишу A)
+	</string>
+	<string name="fly_right_tooltip">
+		Лететь направо (нажмите Shift + стрелку вправо или клавишу D)
+	</string>
+	<string name="fly_up_tooltip">
+		Лететь вверх (нажмите клавишу E)
+	</string>
+	<string name="fly_down_tooltip">
+		Лететь вниз (нажмите клавишу C)
+	</string>
+	<string name="jump_tooltip">
+		Прыгнуть (нажмите клавишу E)
+	</string>
+	<string name="crouch_tooltip">
+		Присесть (нажмите клавишу C)
+	</string>
+	<string name="walk_title">
+		Ходьба
+	</string>
+	<string name="run_title">
+		Бег
+	</string>
+	<string name="fly_title">
+		Полет
+	</string>
+	<panel name="panel_actions">
+		<button name="turn left btn" tool_tip="Поворот налево (нажмите стрелку влево или клавишу A)"/>
+		<joystick_slide name="move left btn" tool_tip="Идти налево (нажмите Shift + стрелку влево или клавишу A)"/>
+		<button name="turn right btn" tool_tip="Поворот направо (нажмите стрелку вправо или клавишу D)"/>
+		<joystick_slide name="move right btn" tool_tip="Идти направо (нажмите Shift + стрелку вправо или клавишу D)"/>
+		<joystick_turn name="forward btn" tool_tip="Идти вперед (нажмите стрелку вверх или клавишу W)"/>
+		<joystick_turn name="backward btn" tool_tip="Идти назад (нажмите стрелку вниз или клавишу S)"/>
+		<button name="move up btn" tool_tip="Лететь вверх (нажмите клавишу E)"/>
+		<button name="move down btn" tool_tip="Лететь вниз (нажмите клавишу C)"/>
+	</panel>
+	<panel name="panel_modes">
+		<button label="" name="mode_walk_btn" tool_tip="Режим ходьбы"/>
+		<button label="" name="mode_run_btn" tool_tip="Режим бега"/>
+		<button label="" name="mode_fly_btn" tool_tip="Режим полета"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_mute_object.xml b/indra/newview/skins/default/xui/ru/floater_mute_object.xml
new file mode 100644
index 0000000000000000000000000000000000000000..44177acb53c5645c698769218a6d329897c953fb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_mute_object.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="block by name" title="В ЧЕРНЫЙ СПИСОК">
+	<text name="message">
+		Внести в черный список объект:
+	</text>
+	<line_editor name="object_name">
+		Название объекта
+	</line_editor>
+	<text name="note">
+		* Блокируются только сообщения объекта, но не звуки
+	</text>
+	<button label="ОК" name="OK"/>
+	<button label="Отмена" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_my_appearance.xml b/indra/newview/skins/default/xui/ru/floater_my_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b90d80f3fdd7e3769a649c23921a644b882e975f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="ВНЕШНОСТЬ">
+	<panel label="Изменить внешний вид" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_my_inventory.xml b/indra/newview/skins/default/xui/ru/floater_my_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..534d2a5774a97fcecdf2c6be0f0552ee52709859
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="ИНВЕНТАРЬ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_nearby_chat.xml b/indra/newview/skins/default/xui/ru/floater_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..184c753e400b0f99c30c5d2a417bacc694416e8e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="nearby_chat" title="ЛОКАЛЬНЫЙ ЧАТ">
+	<check_box label="Перевод чата" name="translate_chat_checkbox"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_notification.xml b/indra/newview/skins/default/xui/ru/floater_notification.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c3e299202c1be8360c5ae22bd65b45e32940d1db
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_notification.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="notification" title="КОНСОЛЬ УВЕДОМЛЕНИЙ">
+	<text_editor name="payload">
+		Загрузка...
+	</text_editor>
+	<combo_box label="Ответ" name="response"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_notifications_console.xml b/indra/newview/skins/default/xui/ru/floater_notifications_console.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bd836590e180191a8519f9311ce3619785476ba8
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_notifications_console.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="notifications_console" title="КОНСОЛЬ УВЕДОМЛЕНИЙ">
+	<combo_box label="Выбор типа уведомления" name="notification_types"/>
+	<button label="Добавить" name="add_notification"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_object_weights.xml b/indra/newview/skins/default/xui/ru/floater_object_weights.xml
new file mode 100644
index 0000000000000000000000000000000000000000..41e01187320e1273dbaa05d25e05b7c4ee3af371
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="ДОПОЛНИТЕЛЬНО">
+	<floater.string name="nothing_selected" value="--"/>
+	<text name="selected_text" value="ВЫБРАНО"/>
+	<text name="objects" value="--"/>
+	<text name="objects_label" value="Объекты"/>
+	<text name="prims" value="--"/>
+	<text name="prims_label" value="Примитивы"/>
+	<text name="weights_of_selected_text" value="ВЕС ВЫБРАННОГО"/>
+	<text name="download" value="--"/>
+	<text name="download_label" value="Загрузить"/>
+	<text name="physics" value="--"/>
+	<text name="physics_label" value="Физика"/>
+	<text name="server" value="--"/>
+	<text name="server_label" value="Сервер"/>
+	<text name="display" value="--"/>
+	<text name="display_label" value="Показать"/>
+	<text name="land_impacts_text" value="ВОЗДЕЙСТВИЕ НА ЗЕМЛЮ"/>
+	<text name="selected" value="--"/>
+	<text name="selected_label" value="Выбрано"/>
+	<text name="rezzed_on_land" value="--"/>
+	<text name="rezzed_on_land_label" value="Выложено на землю"/>
+	<text name="remaining_capacity" value="--"/>
+	<text name="remaining_capacity_label" value="Остаток емкости"/>
+	<text name="total_capacity" value="--"/>
+	<text name="total_capacity_label" value="Общая емкость"/>
+	<text name="help_SLURL" value="[secondlife:///app/help/object_weights Что это такое?...]"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_openobject.xml b/indra/newview/skins/default/xui/ru/floater_openobject.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5da308eecb63f3ebf27cf75842c87eed80df0b22
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_openobject.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="objectcontents" title="СОДЕРЖИМОЕ ОБЪЕКТА">
+	<text name="object_name">
+		[DESC]:
+	</text>
+	<button label="Копировать в инвентарь" label_selected="Копировать в инвентарь" name="copy_to_inventory_button"/>
+	<button label="Копировать и надеть" label_selected="Копировать и надеть" name="copy_and_wear_button"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..301206e473a4e68343da7bf9774adc68c43fb7e0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_outfit_save_as.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container" title="СОХРАНИТЬ КОСТЮМ">
+	<button label="Сохранить" label_selected="Сохранить" name="Save"/>
+	<button label="Отмена" label_selected="Отмена" name="Cancel"/>
+	<text name="Save item as:">
+		Сохранить текущую одежду
+как новый костюм
+	</text>
+	<line_editor name="name ed">
+		[DESC] (новый)
+	</line_editor>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_outgoing_call.xml b/indra/newview/skins/default/xui/ru/floater_outgoing_call.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5e50a75b85d51fb884e688a519480e3a0ad9d7be
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_outgoing_call.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="outgoing call" title="ЗВОНОК">
+	<floater.string name="lifetime">
+		5
+	</floater.string>
+	<floater.string name="localchat">
+		Ближайший голосовой чат
+	</floater.string>
+	<floater.string name="anonymous">
+		анонимный
+	</floater.string>
+	<floater.string name="VoiceInviteP2P">
+		звонит.
+	</floater.string>
+	<floater.string name="VoiceInviteAdHoc">
+		присоединился к сеансу голосового чата с конференцией.
+	</floater.string>
+	<text name="connecting">
+		Подключение к [CALLEE_NAME]
+	</text>
+	<text name="calling">
+		Вызов [CALLEE_NAME]
+	</text>
+	<text name="noanswer">
+		Нет ответа.  Повторите попытку позже.
+	</text>
+	<text name="nearby">
+		Вы были отключены от [VOICE_CHANNEL_NAME].  [RECONNECT_NEARBY]
+	</text>
+	<text name="nearby_P2P_by_other">
+		Вызов завершен.  [RECONNECT_NEARBY]
+	</text>
+	<text name="nearby_P2P_by_agent">
+		Вы завершили вызов.  [RECONNECT_NEARBY]
+	</text>
+	<text name="leaving">
+		Выход из [CURRENT_CHAT].
+	</text>
+	<button label="Отмена" label_selected="Отмена" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_pay.xml b/indra/newview/skins/default/xui/ru/floater_pay.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1471a7e13351b7cf2805400c36ebafde9e8df918
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_pay.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Give Money">
+	<string name="payee_group">
+		Заплатить группе
+	</string>
+	<string name="payee_resident">
+		Заплатить жителю
+	</string>
+	<text name="payee_name">
+		Слишком длинное тестовое имя для проверки обрезания
+	</text>
+	<button label="L$1" label_selected="L$1" name="fastpay 1"/>
+	<button label="L$5" label_selected="L$5" name="fastpay 5"/>
+	<button label="L$10" label_selected="L$10" name="fastpay 10"/>
+	<button label="L$20" label_selected="L$20" name="fastpay 20"/>
+	<text name="amount text">
+		Или введите количество:
+	</text>
+	<button label="Заплатить" label_selected="Заплатить" name="pay btn"/>
+	<button label="Отмена" label_selected="Отмена" name="cancel btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_pay_object.xml b/indra/newview/skins/default/xui/ru/floater_pay_object.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7d2da44ac13a9bdb358706ec7c82f1fc5049daf5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_pay_object.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Give Money">
+	<string name="payee_group">
+		Заплатить группе
+	</string>
+	<string name="payee_resident">
+		Заплатить жителю
+	</string>
+	<text name="payee_name">
+		Ericacita Moostopolison
+	</text>
+	<text name="object_name_label">
+		Через объект:
+	</text>
+	<icon name="icon_object" tool_tip="Объекты"/>
+	<text name="object_name_text">
+		Мой офигенный объект с неэпически длинным названием
+	</text>
+	<button label="L$1" label_selected="L$1" name="fastpay 1"/>
+	<button label="L$5" label_selected="L$5" name="fastpay 5"/>
+	<button label="L$10" label_selected="L$10" name="fastpay 10"/>
+	<button label="L$20" label_selected="L$20" name="fastpay 20"/>
+	<text name="amount text">
+		Или введите количество:
+	</text>
+	<button label="Заплатить" label_selected="Заплатить" name="pay btn"/>
+	<button label="Отмена" label_selected="Отмена" name="cancel btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_people.xml b/indra/newview/skins/default/xui/ru/floater_people.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7abc34986afacff922c682262d4f897be5f8b156
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="ЛЮДИ">
+	<panel_container name="main_panel">
+		<panel label="Профиль группы" name="panel_group_info_sidetray"/>
+		<panel label="Черный список жителей и объектов" name="panel_block_list_sidetray"/>
+	</panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml b/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a704b87bd1667b50aaa0374e463395c549982941
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_perm_prefs.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="perm prefs" title="СТАНДАРТНЫЕ РАЗРЕШЕНИЯ НА ПЕРЕДАЧУ">
+	<panel label="Разрешения" name="permissions">
+		<check_box label="Поделиться с группой" name="share_with_group"/>
+		<check_box label="Разрешить всем копировать" name="everyone_copy"/>
+		<text name="NextOwnerLabel">
+			Следующий владелец может:
+		</text>
+		<check_box label="изменять" name="next_owner_modify"/>
+		<check_box label="копировать" name="next_owner_copy"/>
+		<check_box initial_value="истина" label="перепродавать/отдавать" name="next_owner_transfer"/>
+	</panel>
+	<button label="ОК" label_selected="ОК" name="ok"/>
+	<button label="Отмена" label_selected="Отмена" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_picks.xml b/indra/newview/skins/default/xui/ru/floater_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e0ae8d6f0346c828fd2e50ca44451846f01b5519
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Подборка"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_places.xml b/indra/newview/skins/default/xui/ru/floater_places.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2a22a855ef0f230c444f0890f23f53adaac2c4e1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="МЕСТА">
+	<panel label="Места" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_post_process.xml b/indra/newview/skins/default/xui/ru/floater_post_process.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ae9767054825c7b4f69ef5cbd1ff39916cb3058a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_post_process.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Post-Process Floater" title="НАСТРОЙКИ ПОСЛЕДУЮЩЕЙ ОБРАБОТКИ">
+	<tab_container name="Post-Process Tabs">
+		<panel label="Цветовой фильтр" name="wmiColorFilterPanel">
+			<check_box label="Вкл." name="wmiColorFilterToggle"/>
+			<text name="wmiColorFilterBrightnessText">
+				Яркость
+			</text>
+			<text name="wmiColorFilterSaturationText">
+				Насыщенность
+			</text>
+			<text name="wmiColorFilterContrastText">
+				Контрастность
+			</text>
+			<text name="wmiColorFilterBaseText">
+				Основной цвет контрастности
+			</text>
+			<slider label="К" name="wmiColorFilterBaseR"/>
+			<slider label="З" name="wmiColorFilterBaseG"/>
+			<slider label="С" name="wmiColorFilterBaseB"/>
+			<slider label="И" name="wmiColorFilterBaseI"/>
+		</panel>
+		<panel label="Ночное видение" name="wmiNightVisionPanel">
+			<check_box label="Вкл." name="wmiNightVisionToggle"/>
+			<text name="wmiNightVisionBrightMultText">
+				Коэффициент усиления света
+			</text>
+			<text name="wmiNightVisionNoiseSizeText">
+				Размер искажений
+			</text>
+			<text name="wmiNightVisionNoiseStrengthText">
+				Мощность искажений
+			</text>
+		</panel>
+		<panel label="Ореол" name="wmiBloomPanel">
+			<check_box label="Вкл." name="wmiBloomToggle"/>
+			<text name="wmiBloomExtractText">
+				Яркость света
+			</text>
+			<text name="wmiBloomSizeText">
+				Размер ореола
+			</text>
+			<text name="wmiBloomStrengthText">
+				Мощность ореола
+			</text>
+		</panel>
+		<panel label="Дополнительно" name="Extras">
+			<button label="Загрузить эффект" label_selected="Загрузить эффект" name="PPLoadEffect"/>
+			<button label="Сохранить эффект" label_selected="Сохранить эффект" name="PPSaveEffect"/>
+			<line_editor label="Название эффекта" name="PPEffectNameEditor"/>
+		</panel>
+	</tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_postcard.xml b/indra/newview/skins/default/xui/ru/floater_postcard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..889d219511448ce5ef774b3f6513befb64556b0b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_postcard.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Postcard" title="ПОСЛАТЬ СНИМОК ПО EMAIL">
+	<floater.string name="default_subject">
+		Открытка из [SECOND_LIFE].
+	</floater.string>
+	<floater.string name="default_message">
+		Побывай здесь!
+	</floater.string>
+	<floater.string name="upload_message">
+		Отправка...
+	</floater.string>
+	<text name="to_label">
+		Email получателя:
+	</text>
+	<text name="from_label">
+		Ваш Email:
+	</text>
+	<text name="name_label">
+		Ваше имя:
+	</text>
+	<text name="subject_label">
+		Тема:
+	</text>
+	<line_editor label="Введите тему письма." name="subject_form"/>
+	<text name="msg_label">
+		Сообщение:
+	</text>
+	<text_editor name="msg_form">
+		Введите текст письма.
+	</text_editor>
+	<button label="Отмена" name="cancel_btn"/>
+	<button label="Отправить" name="send_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_preferences.xml b/indra/newview/skins/default/xui/ru/floater_preferences.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fc244b9d8b483c00c316f9f1093c257f3b96fc9e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_preferences.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Preferences" title="НАСТРОЙКИ">
+	<button label="ОК" label_selected="ОК" name="OK"/>
+	<button label="Отмена" label_selected="Отмена" name="Cancel"/>
+	<tab_container name="pref core">
+		<panel label="Общие" name="general"/>
+		<panel label="Графика" name="display"/>
+		<panel label="Звук и медиа" name="audio"/>
+		<panel label="Чат" name="chat"/>
+		<panel label="Движение и обзор" name="move"/>
+		<panel label="Уведомления" name="msgs"/>
+		<panel label="Цвета" name="colors"/>
+		<panel label="Приватность" name="im"/>
+		<panel label="Конфигурация" name="input"/>
+		<panel label="Дополнительно" name="advanced1"/>
+	</tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4eecfedf172becc2241775d8d9c49ff7837240ec
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_preferences_proxy.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Proxy Settings Floater" title="Настройки прокси-сервера">
+	<check_box initial_value="ложь" label="Использовать HTTP-прокси для веб-страниц" name="web_proxy_enabled"/>
+	<text name="http_proxy_label">
+		HTTP-прокси:
+	</text>
+	<line_editor name="web_proxy_editor" tool_tip="Имя DNS или IP-адрес HTTP-прокси, который следует использовать."/>
+	<spinner label="Номер порта:" name="web_proxy_port" tool_tip="Порт HTTP-прокси, который следует использовать."/>
+	<check_box label="Использовать для трафика UDP прокси-сервер SOCKS 5" name="socks_proxy_enabled"/>
+	<text name="socks5_proxy_label">
+		Сервер SOCKS 5:
+	</text>
+	<line_editor name="socks_proxy_editor" tool_tip="Имя DNS или IP-адрес прокси-сервера SOCKS 5, который следует использовать."/>
+	<spinner label="Номер порта:" name="socks_proxy_port" tool_tip="Порт прокси-сервера SOCKS 5, который следует использовать."/>
+	<text name="socks_auth_label">
+		Аутентификация SOCKS:
+	</text>
+	<radio_group name="socks5_auth_type">
+		<radio_item label="Без аутентификации" name="Socks5NoAuth" tool_tip="Аутентификация на прокси-сервере SOCKS 5 не требуется." value="Нет"/>
+		<radio_item label="Имя пользователя/пароль" name="Socks5UserPass" tool_tip="На прокси-сервере SOCKS 5 требуется аутентификация (имя пользователя и пароль)." value="UserPass"/>
+	</radio_group>
+	<text name="socks5_username_label">
+		Имя пользователя:
+	</text>
+	<text name="socks5_password_label">
+		Пароль:
+	</text>
+	<line_editor name="socks5_username" tool_tip="Имя пользователя для аутентификации на сервере SOCKS 5"/>
+	<line_editor name="socks5_password" tool_tip="Пароль для аутентификации на сервере SOCKS 5"/>
+	<text name="other_proxy_label">
+		Другой прокси-сервер HTTP-трафика:
+	</text>
+	<radio_group name="other_http_proxy_type">
+		<radio_item label="Не использовать прокси" name="OtherNoProxy" tool_tip="HTTP-трафик, не связанный с веб-сайтами, НЕ будет передаваться на прокси-сервер." value="Нет"/>
+		<radio_item label="Использовать HTTP-прокси" name="OtherHTTPProxy" tool_tip="HTTP-трафик, не связанный с веб-узлами, будет передаваться через настроенный веб-прокси." value="Веб"/>
+		<radio_item label="Использовать сервер SOCKS 5" name="OtherSocksProxy" tool_tip="HTTP-трафик, не связанный с веб-узлами, будет передаваться через настроенный сервер Socks 5." value="SOCKS"/>
+	</radio_group>
+	<button label="ОК" label_selected="ОК" name="OK"/>
+	<button label="Отмена" label_selected="Отмена" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_animation.xml b/indra/newview/skins/default/xui/ru/floater_preview_animation.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a1fabedb85f49a09cf9c6268593f8e81fff6d2ae
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_preview_animation.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_anim">
+	<floater.string name="Title">
+		Анимация: [NAME]
+	</floater.string>
+	<text name="desc txt">
+		Описание:
+	</text>
+	<button label="Проиграть для всех" label_selected="Стоп" name="Anim play btn" tool_tip="Проигрывание этой анимации могут видеть другие участники"/>
+	<button label="Проиграть для себя" label_selected="Стоп" name="Anim audition btn" tool_tip="Проигрывание этой анимации можете видеть только вы"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_gesture.xml b/indra/newview/skins/default/xui/ru/floater_preview_gesture.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fde2cea00eb7d64d558eab2abbff222594c2015e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_preview_gesture.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="gesture_preview">
+	<floater.string name="step_anim">
+		Воспроизвести анимацию:
+	</floater.string>
+	<floater.string name="step_sound">
+		Воспроизвести звук:
+	</floater.string>
+	<floater.string name="step_chat">
+		Сказать в чат:
+	</floater.string>
+	<floater.string name="step_wait">
+		Ждать:
+	</floater.string>
+	<floater.string name="stop_txt">
+		Стоп
+	</floater.string>
+	<floater.string name="preview_txt">
+		Предварительный просмотр
+	</floater.string>
+	<floater.string name="none_text">
+		- Ничего -
+	</floater.string>
+	<floater.string name="Title">
+		Жест: [NAME]
+	</floater.string>
+	<text name="desc_label">
+		Описание:
+	</text>
+	<text name="trigger_label">
+		Сигнал:
+	</text>
+	<text name="replace_text" tool_tip="Заменить сигнальное слово этими словами. Например, если сигнал – «здравствуйте», а заменитель – «привет», то при вводе в чат фразы «Я хотел сказать здравствуйте» появится «Я хотел сказать привет» вместе с жестом.">
+		Заменитель:
+	</text>
+	<line_editor name="replace_editor" tool_tip="Заменить сигнальное слово этими словами. Например, если сигнал – «здравствуйте», а заменитель – «привет», то при вводе в чат фразы «Я хотел сказать здравствуйте» появится «Я хотел сказать привет» вместе с жестом."/>
+	<text name="key_label">
+		Горячая клавиша:
+	</text>
+	<combo_box label="Нет" name="modifier_combo"/>
+	<combo_box label="Нет" name="key_combo"/>
+	<text name="library_label">
+		Библиотека:
+	</text>
+	<scroll_list name="library_list">
+		<scroll_list.rows name="action_animation" value="Анимация"/>
+		<scroll_list.rows name="action_sound" value="Звук"/>
+		<scroll_list.rows name="action_chat" value="Чат"/>
+		<scroll_list.rows name="action_wait" value="Ожидание"/>
+	</scroll_list>
+	<button label="Добавить &gt;&gt;" name="add_btn"/>
+	<text name="steps_label">
+		Шаги:
+	</text>
+	<button label="Вверх" name="up_btn"/>
+	<button label="Вниз" name="down_btn"/>
+	<button label="Удалить" name="delete_btn"/>
+	<text name="options_text">
+		(параметры)
+	</text>
+	<radio_group name="animation_trigger_type">
+		<radio_item label="Старт" name="start"/>
+		<radio_item label="Стоп" name="stop"/>
+	</radio_group>
+	<check_box label="до завершения анимации" name="wait_anim_check"/>
+	<check_box label="время в секундах:" name="wait_time_check"/>
+	<text name="help_label">
+		Все шаги выполняются одновременно, если только вы не добавите шаги ожидания.
+	</text>
+	<check_box label="Активный" name="active_check" tool_tip="Активные жесты можно включить путем ввода их триггеров в чат или нажатием горячих клавиш.  Жесты обычно становятся неактивными, если возникает конфликт клавиш."/>
+	<button label="Предварительный просмотр" name="preview_btn"/>
+	<button label="Сохранить" name="save_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml b/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2f39d4a4a4e049a24354b33ae6f35d76da52f441
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_preview_notecard.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview notecard" title="ЗАМЕТКА:">
+	<floater.string name="no_object">
+		Невозможно найти объект, содержащий эту заметку.
+	</floater.string>
+	<floater.string name="not_allowed">
+		У вас нет прав для просмотра заметки.
+	</floater.string>
+	<floater.string name="Title">
+		Заметка: [NAME]
+	</floater.string>
+	<text name="desc txt">
+		Описание:
+	</text>
+	<text_editor name="Notecard Editor">
+		Загрузка...
+	</text_editor>
+	<button label="Сохранить" label_selected="Сохранить" name="Save"/>
+	<button label="Удалить" label_selected="Удалить" name="Delete"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_sound.xml b/indra/newview/skins/default/xui/ru/floater_preview_sound.xml
new file mode 100644
index 0000000000000000000000000000000000000000..691b2f3e82cb4e660beb7b02c562eeb228adae9e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_preview_sound.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_sound">
+	<floater.string name="Title">
+		Звук: [NAME]
+	</floater.string>
+	<text name="desc txt">
+		Описание:
+	</text>
+	<button label="Проиграть для всех" label_selected="Проиграть для всех" name="Sound play btn" tool_tip="Воспроизведение этого звука могут слышать другие участники"/>
+	<button label="Проиграть для себя" label_selected="Проиграть для себя" name="Sound audition btn" tool_tip="Воспроизведение этого звука могу слышать только я"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_preview_texture.xml b/indra/newview/skins/default/xui/ru/floater_preview_texture.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c9cb87282a032e856f132543a3bef76b28fbadba
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_preview_texture.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_texture">
+	<floater.string name="Title">
+		Текстура: [NAME]
+	</floater.string>
+	<floater.string name="Copy">
+		Копировать в инвентарь
+	</floater.string>
+	<text name="desc txt">
+		Описание:
+	</text>
+	<text name="dimensions">
+		[WIDTH]x[HEIGHT] пикселей
+	</text>
+	<text name="aspect_ratio">
+		Соотношение сторон
+	</text>
+	<combo_box name="combo_aspect_ratio" tool_tip="Просмотр изображения с другим соотношением сторон">
+		<combo_item name="Unconstrained">
+			Без ограничения
+		</combo_item>
+		<combo_item name="1:1" tool_tip="Символ группы или профиль в реальном мире">
+			1:1
+		</combo_item>
+		<combo_item name="4:3" tool_tip="Профиль для [SECOND_LIFE]">
+			4:3
+		</combo_item>
+		<combo_item name="10:7" tool_tip="Реклама, поиск и закладки">
+			10:7
+		</combo_item>
+		<combo_item name="3:2" tool_tip="О земле">
+			3:2
+		</combo_item>
+		<combo_item name="16:10">
+			16:10
+		</combo_item>
+		<combo_item name="16:9" tool_tip="Профиль подборки">
+			16:9
+		</combo_item>
+		<combo_item name="2:1">
+			2:1
+		</combo_item>
+	</combo_box>
+	<button label="OK" name="Keep"/>
+	<button label="Удалить" name="Discard"/>
+	<button label="Сохранить как" name="save_tex_btn"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..fd513c8cdb54bf53dae424d4caf646547efdae06
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_price_for_listing.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="price_for_listing" title="ОПУБЛИКОВАТЬ РЕКЛАМУ">
+	<text name="explanation_text">
+		Ваша реклама будет действительна в течение недели с момента публикации.
+
+Позиция объявления определяется уплаченной за него суммой.
+
+Чем выше плата за объявление, тем выше оно расположено в списке и тем легче его найти.
+	</text>
+	<text name="price_text">
+		Цена за объявление:
+	</text>
+	<text name="price_symbol">
+		L$
+	</text>
+	<button label="ОК" name="set_price_btn"/>
+	<button label="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_publish_classified.xml b/indra/newview/skins/default/xui/ru/floater_publish_classified.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b9e33d6e22cb01e317654e14cd054065d3fe3f51
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_publish_classified.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="publish_classified" title="Публикация рекламы">
+	<text name="explanation_text">
+		Ваша реклама будет действительна в течение недели с момента публикации.
+        
+Помните, оплата за рекламу не возвращается.
+	</text>
+	<spinner label="Цена: L$" name="price_for_listing" tool_tip="Цена за размещение." value="50"/>
+	<button label="Опубликовать" name="publish_btn"/>
+	<button label="Отмена" name="cancel_btn"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..d413a0bdcc98512d26722ce356ad3f846076b6cc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_region_debug_console.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="region_debug_console" title="Отладка региона"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_region_info.xml b/indra/newview/skins/default/xui/ru/floater_region_info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..011b58e38506f3dca64797bbba0d80d81b1e637f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_region_info.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="regioninfo" title="РЕГИОН/ЗЕМЛЕВЛАДЕНИЕ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_report_abuse.xml b/indra/newview/skins/default/xui/ru/floater_report_abuse.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6fdbdacadc573a7e498a9dda15de25c481eaf3a5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_report_abuse.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_report_abuse" title="ПОЖАЛОВАТЬСЯ">
+	<floater.string name="Screenshot">
+		Снимок
+	</floater.string>
+	<check_box label="Использовать этот снимок" name="screen_check"/>
+	<text name="reporter_title">
+		Автор:
+	</text>
+	<text name="sim_title">
+		Регион:
+	</text>
+	<text name="sim_field">
+		Название региона
+	</text>
+	<text name="pos_title">
+		Координаты:
+	</text>
+	<text name="pos_field">
+		{128.1, 128.1, 15.4}
+	</text>
+	<text name="select_object_label">
+		Нажмите кнопку, затем объект-нарушитель:
+	</text>
+	<button name="pick_btn" tool_tip="Захват объекта – определяет объект как субъект этого сообщения"/>
+	<text name="object_name_label">
+		Объект:
+	</text>
+	<text name="owner_name_label">
+		Владелец:
+	</text>
+	<combo_box name="category_combo" tool_tip="Категория – выберите категорию, наиболее подходящую по типу нарушения">
+		<combo_box.item label="Выберите категорию" name="Select_category"/>
+		<combo_box.item label="Возраст &gt; Игровой возраст" name="Age__Age_play"/>
+		<combo_box.item label="Возраст &gt; Взрослый житель в Second Life для подростков" name="Age__Adult_resident_on_Teen_Second_Life"/>
+		<combo_box.item label="Возраст &gt; Малолетний житель в Second Life для подростков" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
+		<combo_box.item label="Нападение &gt; Боевая «песочница»/небезопасная область" name="Assault__Combat_sandbox___unsafe_area"/>
+		<combo_box.item label="Нападение &gt; Безопасная область" name="Assault__Safe_area"/>
+		<combo_box.item label="Нападение &gt; «Песочница» испытания оружия" name="Assault__Weapons_testing_sandbox"/>
+		<combo_box.item label="Коммерция &gt; Не удалось доставить продукт или услугу" name="Commerce__Failure_to_deliver_product_or_service"/>
+		<combo_box.item label="Раскрытие &gt; Информация о реальном мире" name="Disclosure__Real_world_information"/>
+		<combo_box.item label="Раскрытие &gt; Удаленный контроль чата" name="Disclosure__Remotely_monitoring chat"/>
+		<combo_box.item label="Раскрытие &gt; Информация/чат/мгновенные сообщения Second Life" name="Disclosure__Second_Life_information_chat_IMs"/>
+		<combo_box.item label="Нарушение порядка &gt; Недобросовестное использование ресурсов региона" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
+		<combo_box.item label="Нарушение порядка &gt; Избыточно скриптовые объекты" name="Disturbing_the_peace__Excessive_scripted_objects"/>
+		<combo_box.item label="Нарушение порядка &gt; Разбрасывание объектов" name="Disturbing_the_peace__Object_littering"/>
+		<combo_box.item label="Нарушение порядка &gt; Постоянный спам" name="Disturbing_the_peace__Repetitive_spam"/>
+		<combo_box.item label="Нарушение порядка &gt; Нежелательная реклама" name="Disturbing_the_peace__Unwanted_advert_spam"/>
+		<combo_box.item label="Мошенничество &gt; L$" name="Fraud__L$"/>
+		<combo_box.item label="Мошенничество &gt; Земля" name="Fraud__Land"/>
+		<combo_box.item label="Мошенничество &gt; «Пирамида» или «письмо счастья»" name="Fraud__Pyramid_scheme_or_chain_letter"/>
+		<combo_box.item label="Мошенничество &gt; US$" name="Fraud__US$"/>
+		<combo_box.item label="Беспокойство &gt; Рекламная ферма/видимый спам" name="Harassment__Advert_farms___visual_spam"/>
+		<combo_box.item label="Беспокойство &gt; Клевета на отдельных лиц или группы" name="Harassment__Defaming_individuals_or_groups"/>
+		<combo_box.item label="Беспокойство &gt; Препятствие движению" name="Harassment__Impeding_movement"/>
+		<combo_box.item label="Беспокойство &gt; Сексуальное домогательство" name="Harassment__Sexual_harassment"/>
+		<combo_box.item label="Беспокойство &gt; Подстрекательство
/призыв к нарушению лицензионного соглашения" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
+		<combo_box.item label="Беспокойство &gt; Оскорбление словом" name="Harassment__Verbal_abuse"/>
+		<combo_box.item label="Непристойность &gt; Откровенно оскорбительное содержимое или поведение" name="Indecency__Broadly_offensive_content_or_conduct"/>
+		<combo_box.item label="Непристойность &gt; Некорректное имя аватара" name="Indecency__Inappropriate_avatar_name"/>
+		<combo_box.item label="Непристойность &gt; Некорректное содержимое или поведение в регионе PG" name="Indecency__Mature_content_in_PG_region"/>
+		<combo_box.item label="Непристойность &gt; Некорректное содержимое или поведение в регионе Moderate" name="Indecency__Inappropriate_content_in_Mature_region"/>
+		<combo_box.item label="Нарушение прав интеллектуальной собственности &gt; Удаление содержимого" name="Intellectual_property_infringement_Content_Removal"/>
+		<combo_box.item label="Нарушение прав интеллектуальной собственности &gt; CopyBot или нарушение разрешений" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
+		<combo_box.item label="Нетерпимость" name="Intolerance"/>
+		<combo_box.item label="Земля &gt; Злоупотребление ресурсами «песочницы»" name="Land__Abuse_of_sandbox_resources"/>
+		<combo_box.item label="Земля &gt; Посягательство &gt; Объекты/текстуры" name="Land__Encroachment__Objects_textures"/>
+		<combo_box.item label="Земля &gt; Посягательство &gt; Частицы" name="Land__Encroachment__Particles"/>
+		<combo_box.item label="Земля &gt; Посягательство &gt; Деревья/растения" name="Land__Encroachment__Trees_plants"/>
+		<combo_box.item label="Пари/азартные игры" name="Wagering_gambling"/>
+		<combo_box.item label="Другое" name="Other"/>
+	</combo_box>
+	<text name="abuser_name_title">
+		Имя нарушителя:
+	</text>
+	<button label="Выбор" name="select_abuser" tool_tip="Выбор имени нарушителя из списка"/>
+	<text name="abuser_name_title2">
+		Место нарушения:
+	</text>
+	<text name="sum_title">
+		Краткое описание:
+	</text>
+	<text name="dscr_title">
+		Подробности:
+	</text>
+	<text name="bug_aviso">
+		Опишите проблему максимально подробно
+	</text>
+	<text name="incomplete_title">
+		* Неполные заявления не будут рассматриваться
+	</text>
+	<button label="Жалоба" label_selected="Жалоба" name="send_btn"/>
+	<button label="Отмена" label_selected="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_script_debug.xml b/indra/newview/skins/default/xui/ru/floater_script_debug.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b91fc4e4ffe70c1f50eb2bf81d1b23487dc46fe4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_script_debug.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<multi_floater name="script debug floater" title="Предупреждения/ошибки скриптов"/>
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
new file mode 100644
index 0000000000000000000000000000000000000000..e70a30fa24af183134e2d78048bbf57a39cbc917
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_script_debug_panel.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script" short_title="[ALL SCRIPTS]" title="[ALL SCRIPTS]"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_script_limits.xml b/indra/newview/skins/default/xui/ru/floater_script_limits.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7805eac03b55dad34e3328524428f208e91f1a3f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_script_limits.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="scriptlimits" title="ИНФОРМАЦИЯ О СКРИПТАХ"/>
diff --git a/indra/newview/skins/default/xui/ru/floater_script_preview.xml b/indra/newview/skins/default/xui/ru/floater_script_preview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..78cefb7aa7b70beba416da365c5407222e917dd1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_script_preview.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview lsl text" title="СКРИПТ: ROTATION SCRIPT">
+	<floater.string name="Title">
+		СКРИПТ: [NAME]
+	</floater.string>
+	<text name="desc txt">
+		Описание:
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_script_queue.xml b/indra/newview/skins/default/xui/ru/floater_script_queue.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4f2e389b19f944b913a2cdc5ed73bc4ad4191d55
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_script_queue.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="queue" title="СБРОСИТЬ ПРОГРЕСС">
+	<floater.string name="Starting">
+		Запуск [START] объектов (объектов: [COUNT]).
+	</floater.string>
+	<floater.string name="Done">
+		Готово.
+	</floater.string>
+	<floater.string name="Resetting">
+		Сброс
+	</floater.string>
+	<floater.string name="Running">
+		Запущен
+	</floater.string>
+	<floater.string name="NotRunning">
+		Не запущен
+	</floater.string>
+	<button label="Закрыть" label_selected="Закрыть" name="close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_script_search.xml b/indra/newview/skins/default/xui/ru/floater_script_search.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fc040f6593314d69105c7c41bd9a781e07d7a468
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_script_search.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script search" title="ПОИСК В СКРИПТЕ">
+	<check_box label="Без учета регистра" name="case_text"/>
+	<button label="Поиск" label_selected="Поиск" name="search_btn"/>
+	<button label="Заменить" label_selected="Заменить" name="replace_btn"/>
+	<button label="Заменить все" label_selected="Заменить все" name="replace_all_btn"/>
+	<text name="txt">
+		Поиск
+	</text>
+	<text name="txt2">
+		Заменить
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_search.xml b/indra/newview/skins/default/xui/ru/floater_search.xml
new file mode 100644
index 0000000000000000000000000000000000000000..405a6598ac62177c3964427de6453e8e5432db13
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_search.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_search" title="">
+	<floater.string name="loading_text">
+		Загрузка...
+	</floater.string>
+	<floater.string name="done_text">
+		Готово
+	</floater.string>
+	<layout_stack name="stack1">
+		<layout_panel name="browser_layout">
+			<text name="refresh_search">
+				Повторить поиск, чтобы показать текущий уровень творца
+			</text>
+		</layout_panel>
+	</layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_select_key.xml b/indra/newview/skins/default/xui/ru/floater_select_key.xml
new file mode 100644
index 0000000000000000000000000000000000000000..99c2b9a2c48e9dcbc7545b814973dbb7a1461b17
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_select_key.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container">
+	<text name="Save item as:">
+			Нажмите клавишу для включения/выключения речи.
+	</text>
+	<button label="Отмена" label_selected="Отмена" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_sell_land.xml b/indra/newview/skins/default/xui/ru/floater_sell_land.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e15f76110177855fc8cc5f1587184056c5779c8d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_sell_land.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="sell land" title="ПРОДАЖА ЗЕМЛИ">
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<text name="info_parcel_label">
+				Участок:
+			</text>
+			<text name="info_parcel">
+				НАЗВАНИЕ УЧАСТКА
+			</text>
+			<text name="info_size_label">
+				Размер:
+			</text>
+			<text name="info_size">
+				[AREA] м²
+			</text>
+			<text name="info_action">
+				Чтобы продать этот участок:
+			</text>
+			<text name="price_label">
+				1. Назначьте цену:
+			</text>
+			<text name="price_text">
+				Установите устраивающую вас цену.
+			</text>
+			<text name="price_ld">
+				L$
+			</text>
+			<line_editor name="price">
+				0
+			</line_editor>
+			<text name="price_per_m">
+				(L$[PER_METER] за м²)
+			</text>
+			<text name="sell_to_label">
+				2. Продажа земли:
+			</text>
+			<text name="sell_to_text">
+				Укажите, кому будете продавать землю.
+			</text>
+			<combo_box name="sell_to">
+				<combo_box.item label="- выберите -" name="--selectone--"/>
+				<combo_box.item label="Все" name="Anyone"/>
+				<combo_box.item label="Конкретному жителю:" name="Specificuser:"/>
+			</combo_box>
+			<button label="Выбрать" name="sell_to_select_agent"/>
+			<text name="sell_objects_label">
+				3. Продать объекты вместе с землей?
+			</text>
+			<text name="sell_objects_text">
+				Перемещаемые объекты хозяина этой земли изменят владельца?
+			</text>
+			<radio_group name="sell_objects">
+				<radio_item label="Нет, сохранить владение объектами" name="no"/>
+				<radio_item label="Да, продать объекты вместе с землей" name="yes"/>
+			</radio_group>
+			<button label="Показать объекты" name="show_objects"/>
+			<text name="nag_message_label">
+				ПОМНИТЕ: продажи нельзя отменить.
+			</text>
+			<button label="Выставить землю на продажу" name="sell_btn"/>
+			<button label="Отмена" name="cancel_btn"/>
+		</panel>
+	</scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_settings_debug.xml b/indra/newview/skins/default/xui/ru/floater_settings_debug.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7db014ef53d5e7120623ef43cdaed85e03d09f46
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_settings_debug.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="settings_debug" title="НАСТРОЙКИ ОТЛАДКИ">
+	<radio_group name="boolean_combo">
+		<radio_item label="ИСТИНА" name="TRUE" value="истина"/>
+		<radio_item label="ЛОЖЬ" name="FALSE" value=""/>
+	</radio_group>
+	<color_swatch label="Цвет" name="val_color_swatch"/>
+	<spinner label="x" name="val_spinner_1"/>
+	<spinner label="x" name="val_spinner_2"/>
+	<spinner label="x" name="val_spinner_3"/>
+	<spinner label="x" name="val_spinner_4"/>
+	<button label="Сброс в стандартное значение" name="default_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_snapshot.xml b/indra/newview/skins/default/xui/ru/floater_snapshot.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7e88630b32ecf4bc713da041c2567896bb659625
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_snapshot.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Snapshot" title="ПРОСМОТР СНИМКА">
+	<floater.string name="unknown">
+		неизвестно
+	</floater.string>
+	<string name="postcard_progress_str">
+		Отправка письма
+	</string>
+	<string name="profile_progress_str">
+		Публикация
+	</string>
+	<string name="inventory_progress_str">
+		Сохранение в -инвентарь
+	</string>
+	<string name="local_progress_str">
+		Сохранение на компьютере
+	</string>
+	<string name="profile_succeeded_str">
+		Изображение отправлено
+	</string>
+	<string name="postcard_succeeded_str">
+		Письмо отправлено!
+	</string>
+	<string name="inventory_succeeded_str">
+		Сохранено в инвентаре!
+	</string>
+	<string name="local_succeeded_str">
+		Сохранено на компьютере!
+	</string>
+	<string name="profile_failed_str">
+		Не удалось передать изображение в ваш профиль.
+	</string>
+	<string name="postcard_failed_str">
+		Не удалось отправить письмо.
+	</string>
+	<string name="inventory_failed_str">
+		Не удалось сохранить в инвентаре.
+	</string>
+	<string name="local_failed_str">
+		Не удалось сохранить на компьютере.
+	</string>
+	<button name="advanced_options_btn" tool_tip="Дополнительные параметры"/>
+	<text name="image_res_text">
+		[WIDTH] x [HEIGHT] пикс.
+	</text>
+	<text name="file_size_label">
+		[SIZE] КБ
+	</text>
+	<panel name="advanced_options_panel">
+		<text name="advanced_options_label">
+			ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ
+		</text>
+		<text name="layer_type_label">
+			Захват:
+		</text>
+		<combo_box label="Слои изображения" name="layer_types">
+			<combo_box.item label="Цвета" name="Colors"/>
+			<combo_box.item label="Глубина" name="Depth"/>
+		</combo_box>
+		<check_box label="Интерфейс" name="ui_check"/>
+		<check_box label="Данные в игре" name="hud_check"/>
+		<check_box label="Стоп-кадр (полноэкранный)" name="freeze_frame_check"/>
+		<check_box label="Автообновление" name="auto_snapshot_check"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_sound_devices.xml b/indra/newview/skins/default/xui/ru/floater_sound_devices.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fc8de858cd245e9a4697c3855ead936cf1500b8d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_sound_devices.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_sound_devices" title="ЗВУКОВЫЕ УСТРОЙСТВА">
+	<text name="voice_label">
+		Голосовой чат
+	</text>
+	<check_box label="Включен" name="enable_voice"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_sound_preview.xml b/indra/newview/skins/default/xui/ru/floater_sound_preview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6fdb12b76b665027626e7452abae4b9fbc06b4ce
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_sound_preview.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Sound Preview" title="SOUND.WAV">
+	<text name="name_label">
+		Название:
+	</text>
+	<text name="description_label">
+		Описание:
+	</text>
+	<button label="Передать (L$[AMOUNT])" name="ok_btn"/>
+	<button label="Отмена" label_selected="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_stats.xml b/indra/newview/skins/default/xui/ru/floater_stats.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b1f60c8029be566bbb76584419a1ac0af9b5be03
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_stats.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Statistics" title="СТАТИСТИКА">
+	<scroll_container name="statistics_scroll">
+		<container_view name="statistics_view">
+			<stat_view label="Базовая" name="basic">
+				<stat_bar label="Кадров/с" name="fps"/>
+				<stat_bar label="Ширина канала" name="bandwidth"/>
+				<stat_bar label="Потери пакетов" name="packet_loss"/>
+				<stat_bar label="Пинг" name="ping"/>
+			</stat_view>
+			<stat_view label="Дополнительно" name="advanced">
+				<stat_view label="Отрисовка" name="render">
+					<stat_bar label="Треугольников на кадр" name="ktrisframe"/>
+					<stat_bar label="Треугольников в секунду" name="ktrissec"/>
+					<stat_bar label="Всего объектов" name="objs"/>
+					<stat_bar label="Новых объектов" name="newobjs"/>
+				</stat_view>
+				<stat_view label="Текстура" name="texture">
+					<stat_bar label="Количество" name="numimagesstat"/>
+					<stat_bar label="Необраб. изображений" name="numrawimagesstat"/>
+					<stat_bar label="Память GL" name="gltexmemstat"/>
+					<stat_bar label="Форматированная память" name="formattedmemstat"/>
+					<stat_bar label="Неформатированная память" name="rawmemstat"/>
+					<stat_bar label="Ограничение памяти" name="glboundmemstat"/>
+				</stat_view>
+				<stat_view label="Сеть" name="network">
+					<stat_bar label="Входящие пакеты" name="packetsinstat"/>
+					<stat_bar label="Исходящие пакеты" name="packetsoutstat"/>
+					<stat_bar label="Объекты" name="objectkbitstat"/>
+					<stat_bar label="Текстура" name="texturekbitstat"/>
+					<stat_bar label="Актив" name="assetkbitstat"/>
+					<stat_bar label="Слои" name="layerskbitstat"/>
+					<stat_bar label="Действительный ввод" name="actualinkbitstat"/>
+					<stat_bar label="Действительный вывод" name="actualoutkbitstat"/>
+					<stat_bar label="Ожидающие операции VFS" name="vfspendingoperations"/>
+				</stat_view>
+			</stat_view>
+			<stat_view label="Симулятор" name="sim">
+				<stat_bar label="Замедление времени" name="simtimedilation"/>
+				<stat_bar label="Симуляция: кадров/с" name="simfps"/>
+				<stat_bar label="Физика: кадров/с" name="simphysicsfps"/>
+				<stat_view label="Физические данные" name="physicsdetail">
+					<stat_bar label="Закрепленные объекты" name="physicspinnedtasks"/>
+					<stat_bar label="Объекты с низкой детализацией" name="physicslodtasks"/>
+					<stat_bar label="Выделенная память" name="physicsmemoryallocated"/>
+				</stat_view>
+				<stat_bar label="Обновлений агента/с" name="simagentups"/>
+				<stat_bar label="Основные агенты" name="simmainagents"/>
+				<stat_bar label="Дочерние агенты" name="simchildagents"/>
+				<stat_bar label="Объекты" name="simobjects"/>
+				<stat_bar label="Активные объекты" name="simactiveobjects"/>
+				<stat_bar label="Активные скрипты" name="simactivescripts"/>
+				<stat_bar label="События скрипта" name="simscripteps"/>
+				<stat_bar label="Входящие пакеты" name="siminpps"/>
+				<stat_bar label="Исходящие пакеты" name="simoutpps"/>
+				<stat_bar label="Отложенные загрузки" name="simpendingdownloads"/>
+				<stat_bar label="Отложенные передачи" name="simpendinguploads"/>
+				<stat_bar label="Общий нераспакованный объем (байт)" name="simtotalunackedbytes"/>
+				<stat_view label="Время (мс)" name="simperf">
+					<stat_bar label="Общее время кадра" name="simframemsec"/>
+					<stat_bar label="Чистое время" name="simnetmsec"/>
+					<stat_bar label="Время на физику" name="simsimphysicsmsec"/>
+					<stat_bar label="Время на симуляцию" name="simsimothermsec"/>
+					<stat_bar label="Время на клиент" name="simagentmsec"/>
+					<stat_bar label="Время на изображения" name="simimagesmsec"/>
+					<stat_bar label="Время на скрипт" name="simscriptmsec"/>
+					<stat_bar label="Резервное время" name="simsparemsec"/>
+					<stat_view label="Данные времени (мс)" name="timedetails">
+						<stat_bar label="Шаг физики" name="simsimphysicsstepmsec"/>
+						<stat_bar label="Обновить физ. формы" name="simsimphysicsshapeupdatemsec"/>
+						<stat_bar label="Физика - прочее" name="simsimphysicsothermsec"/>
+						<stat_bar label="Время сна" name="simsleepmsec"/>
+						<stat_bar label="Ввод/вывод" name="simpumpiomsec"/>
+					</stat_view>
+				</stat_view>
+			</stat_view>
+		</container_view>
+	</scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_sys_well.xml b/indra/newview/skins/default/xui/ru/floater_sys_well.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b6975ac9abc205fcbdd473e96d3ef2875f513544
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_sys_well.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="sys_well_window" title="УВЕДОМЛЕНИЯ">
+	<string name="title_im_well_window">
+		ОБЩЕНИЕ
+	</string>
+	<string name="title_notification_well_window">
+		УВЕДОМЛЕНИЯ
+	</string>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_telehub.xml b/indra/newview/skins/default/xui/ru/floater_telehub.xml
new file mode 100644
index 0000000000000000000000000000000000000000..799fd57b5b95955d1b868f331262e1b379bdfb9b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_telehub.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Explicit left edge to avoid overlapping build tools -->
+<floater name="telehub" title="ТЕЛЕХАБ">
+	<text name="status_text_connected">
+		Телехаб подключен к объекту [OBJECT]
+	</text>
+	<text name="status_text_not_connected">
+		Телехаб не подключен.
+	</text>
+	<text name="help_text_connected">
+		Для удаления нажмите «Отключить».
+	</text>
+	<text name="help_text_not_connected">
+		Выберите объект и нажмите «Подключить телехаб».
+	</text>
+	<button label="Подключить телехаб" name="connect_btn"/>
+	<button label="Отключить" name="disconnect_btn"/>
+	<text name="spawn_points_text">
+		Точки появления (позиции, а не объекты):
+	</text>
+	<button label="Добавить точку появления" name="add_spawn_point_btn"/>
+	<button label="Удалить точку появления" name="remove_spawn_point_btn"/>
+	<text name="spawn_point_help">
+		Выберите объект и нажмите «Добавить точку появления», чтобы указать позицию.
+Затем объект можно будет переместить или удалить.
+Позиции связаны с центром телехаба.
+Выберите вещь в списке, чтобы выделить ее в мире.
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d55daea836533fccf58663971741aca954e754bb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_texture_ctrl.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="texture picker" title="ВЫБРАТЬ: ТЕКСТУРУ">
+	<floater.string name="choose_picture">
+		Щелкните для выбора изображения
+	</floater.string>
+	<floater.string name="pick title">
+		Выбрать:
+	</floater.string>
+	<text name="Multiple">
+		Несколько текстур
+	</text>
+	<text name="unknown">
+		Размер: [DIMENSIONS]
+	</text>
+	<button label="По умолчанию" label_selected="По умолчанию" name="Default"/>
+	<button label="Нет" label_selected="Нет" name="None"/>
+	<button label="Очистить" label_selected="Очистить" name="Blank"/>
+	<check_box initial_value="истина" label="Применить сейчас" name="apply_immediate_check"/>
+	<filter_editor label="Фильтровать текстуры" name="inventory search editor"/>
+	<check_box initial_value="ложь" label="Показывать папки" name="show_folders_check"/>
+	<button label="ОК" label_selected="ОК" name="Select"/>
+	<button label="Отмена" label_selected="Отмена" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_tools.xml b/indra/newview/skins/default/xui/ru/floater_tools.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eb9083f7fc81f003399182f6cd0406c7970fbaf3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_tools.xml
@@ -0,0 +1,491 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="toolbox floater" short_title="ИНСТРУМЕНТЫ ДЛЯ СТРОИТЕЛЬСТВА">
+	<floater.string name="status_rotate">
+		Перетягивайте цветные полосы для вращения объекта
+	</floater.string>
+	<floater.string name="status_scale">
+		Щелкните и перетащите для растяжения выбранной стороны
+	</floater.string>
+	<floater.string name="status_move">
+		Перемещение: перетащить, копирование: перетащить при нажатой клавише Shift
+	</floater.string>
+	<floater.string name="status_modifyland">
+		Щелкните и удерживайте для изменения земли
+	</floater.string>
+	<floater.string name="status_camera">
+		Щелкните и перетащите для перемещения камеры
+	</floater.string>
+	<floater.string name="status_grab">
+		Перемещение: перетащить, подъем: нажать Ctrl, вращение: нажать Ctrl+Shift
+	</floater.string>
+	<floater.string name="status_place">
+		Щелкните для создания
+	</floater.string>
+	<floater.string name="status_selectland">
+		Щелкните и перетащите для выделения земли
+	</floater.string>
+	<floater.string name="status_selectcount">
+		Выбрано объектов: [OBJ_COUNT], влияние на землю [LAND_IMPACT]
+	</floater.string>
+	<floater.string name="status_remaining_capacity">
+		Остаток емкости [LAND_CAPACITY].
+	</floater.string>
+	<button name="button focus" tool_tip="Фокус"/>
+	<button name="button move" tool_tip="Переместить"/>
+	<button name="button edit" tool_tip="Изменить"/>
+	<button name="button create" tool_tip="Создать"/>
+	<button name="button land" tool_tip="Земля"/>
+	<text name="text status">
+		Перемещение: перетащить, копирование: перетащить при нажатой клавише Shift
+	</text>
+	<radio_group name="focus_radio_group">
+		<radio_item label="Увеличение" name="radio zoom"/>
+		<radio_item label="Вращение (Ctrl)" name="radio orbit"/>
+		<radio_item label="Сдвиг (Ctrl+Shift)" name="radio pan"/>
+	</radio_group>
+	<slider_bar initial_value="0.125" name="slider zoom"/>
+	<radio_group name="move_radio_group">
+		<radio_item label="Переместить" name="radio move"/>
+		<radio_item label="Подъем (Ctrl)" name="radio lift"/>
+		<radio_item label="Вращение (Ctrl+Shift)" name="radio spin"/>
+	</radio_group>
+	<radio_group name="edit_radio_group">
+		<radio_item label="Переместить" name="radio position"/>
+		<radio_item label="Вращение (Ctrl)" name="radio rotate"/>
+		<radio_item label="Растяжка (Ctrl+Shift)" name="radio stretch"/>
+		<radio_item label="Выбор грани" name="radio select face"/>
+	</radio_group>
+	<check_box label="Редактировать объединенные" name="checkbox edit linked parts"/>
+	<button label="Объединить" name="link_btn"/>
+	<button label="Разъединить" name="unlink_btn"/>
+	<text label="Растяжка обеих сторон" name="checkbox uniform label">
+		Растяжка обеих сторон
+	</text>
+	<check_box initial_value="истина" label="Растягивать текстуры" name="checkbox stretch textures"/>
+	<check_box initial_value="истина" label="Привязка" name="checkbox snap to grid"/>
+	<button label="Параметры..." name="Options..." tool_tip="Дополнительные параметры сетки"/>
+	<button name="ToolCube" tool_tip="Куб"/>
+	<button name="ToolPrism" tool_tip="Призма"/>
+	<button name="ToolPyramid" tool_tip="Пирамида"/>
+	<button name="ToolTetrahedron" tool_tip="Тетраэдр"/>
+	<button name="ToolCylinder" tool_tip="Цилиндр"/>
+	<button name="ToolHemiCylinder" tool_tip="Полуцилиндр"/>
+	<button name="ToolCone" tool_tip="Конус"/>
+	<button name="ToolHemiCone" tool_tip="Полуконус"/>
+	<button name="ToolSphere" tool_tip="Сфера"/>
+	<button name="ToolHemiSphere" tool_tip="Полусфера"/>
+	<button name="ToolTorus" tool_tip="Тор"/>
+	<button name="ToolTube" tool_tip="Труба"/>
+	<button name="ToolRing" tool_tip="Кольцо"/>
+	<button name="ToolTree" tool_tip="Дерево"/>
+	<button name="ToolGrass" tool_tip="Трава"/>
+	<check_box label="Держать инструмент" name="checkbox sticky"/>
+	<check_box label="Копировать выдел." name="checkbox copy selection"/>
+	<check_box initial_value="истина" label="Центрир. копию" name="checkbox copy centers"/>
+	<check_box label="Повернуть копию" name="checkbox copy rotates"/>
+	<radio_group name="land_radio_group">
+		<radio_item label="Выбрать землю" name="radio select land"/>
+		<radio_item label="Выровнять" name="radio flatten"/>
+		<radio_item label="Поднять" name="radio raise"/>
+		<radio_item label="Ниже" name="radio lower"/>
+		<radio_item label="Гладко" name="radio smooth"/>
+		<radio_item label="Огрубить" name="radio noise"/>
+		<radio_item label="Восстановить" name="radio revert"/>
+	</radio_group>
+	<text name="Bulldozer:">
+		Бульдозер:
+	</text>
+	<text name="Dozer Size:">
+		Размер
+	</text>
+	<slider_bar initial_value="2.0" name="slider brush size"/>
+	<text name="Strength:">
+		Сила
+	</text>
+	<slider_bar initial_value="0.00" name="slider force"/>
+	<button label="Применить" label_selected="Применить" name="button apply to selection" tool_tip="Изменить выбранную землю"/>
+	<text name="selection_empty">
+		Не выбрано.
+	</text>
+	<text name="remaining_capacity">
+		[CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Дополнительная информация]
+	</text>
+	<tab_container name="Object Info Tabs">
+		<panel label="Общие" name="General">
+			<panel.string name="text deed continued">
+				Сделка
+			</panel.string>
+			<panel.string name="text deed">
+				Сделка
+			</panel.string>
+			<panel.string name="text modify info 1">
+				Этот объект можно изменять
+			</panel.string>
+			<panel.string name="text modify info 2">
+				Эти объекты можно изменять
+			</panel.string>
+			<panel.string name="text modify info 3">
+				Этот объект нельзя изменять
+			</panel.string>
+			<panel.string name="text modify info 4">
+				Эти объекты нельзя изменять
+			</panel.string>
+			<panel.string name="text modify warning">
+				Чтобы задать права доступа, нужно выделить объект целиком
+			</panel.string>
+			<panel.string name="Cost Default">
+				Цена: L$
+			</panel.string>
+			<panel.string name="Cost Total">
+				Всего: L$
+			</panel.string>
+			<panel.string name="Cost Per Unit">
+				Цена за: L$
+			</panel.string>
+			<panel.string name="Cost Mixed">
+				Смешанная цена
+			</panel.string>
+			<panel.string name="Sale Mixed">
+				Смешанная продажа
+			</panel.string>
+			<text name="Name:">
+				Название:
+			</text>
+			<text name="Description:">
+				Описание:
+			</text>
+			<text name="Creator:">
+				Создатель:
+			</text>
+			<text name="Owner:">
+				Владелец:
+			</text>
+			<text name="Group:">
+				Группа:
+			</text>
+			<name_box initial_value="Загрузка..." name="Group Name Proxy"/>
+			<button name="button set group" tool_tip="Выберите группу для передачи ей прав доступа к объекту"/>
+			<check_box label="Поделиться" name="checkbox share with group" tool_tip="Позволить всем участникам выбранной группы получить установленные вам права на этот объект. Для включения ролевых ограничений необходимо произвести сделку."/>
+			<button label="Сделка" label_selected="Сделка" name="button deed" tool_tip="В результате сделки объект передается группе, при этом права на него будут соответствовать правам следующего владельца. Переданный группе объект может передаваться должностным лицом группы."/>
+			<text name="label click action">
+				По щелчку:
+			</text>
+			<combo_box name="clickaction">
+				<combo_box.item label="Коснуться (по умолчанию)" name="Touch/grab(default)"/>
+				<combo_box.item label="Сесть на объект" name="Sitonobject"/>
+				<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>
+			<check_box label="Для продажи:" name="checkbox for sale"/>
+			<combo_box name="sale type">
+				<combo_box.item label="Копировать" name="Copy"/>
+				<combo_box.item label="Контент" name="Contents"/>
+				<combo_box.item label="Оригинал" name="Original"/>
+			</combo_box>
+			<spinner label="Цена: L$" name="Edit Cost"/>
+			<check_box label="Показать в поиске" name="search_check" tool_tip="Показывать объект в результатах поиска"/>
+			<panel name="perms_build">
+				<text name="perm_modify">
+					Этот объект можно изменять
+				</text>
+				<text name="Anyone can:">
+					Все:
+				</text>
+				<check_box label="Переместить" name="checkbox allow everyone move"/>
+				<check_box label="Копировать" name="checkbox allow everyone copy"/>
+				<text name="Next owner can:">
+					Следующий владелец:
+				</text>
+				<check_box label="Изменять" name="checkbox next owner can modify"/>
+				<check_box label="Копировать" name="checkbox next owner can copy"/>
+				<check_box label="Передать" name="checkbox next owner can transfer" tool_tip="Следующий владелец может отдать или перепродать объект"/>
+				<text name="B:">
+					Н:
+				</text>
+				<text name="O:">
+					O:
+				</text>
+				<text name="G:">
+					G:
+				</text>
+				<text name="E:">
+					Ð’:
+				</text>
+				<text name="N:">
+					С:
+				</text>
+				<text name="F:">
+					F:
+				</text>
+			</panel>
+		</panel>
+		<panel label="Объект" name="Object">
+			<check_box label="Фиксированный" name="checkbox locked" tool_tip="Предотвращение перемещения или удаления объекта. Обычно эта функция полезна во время стройки для избежания нежелательных изменений."/>
+			<check_box label="Физический" name="Physical Checkbox Ctrl" tool_tip="Позволяет толкать объект. Также на объект будет воздействовать гравитация."/>
+			<check_box label="Временный" name="Temporary Checkbox Ctrl" tool_tip="Приводит к автоматическому удалению объекта через минуту после создания."/>
+			<check_box label="Фантомный" name="Phantom Checkbox Ctrl" tool_tip="Предотвращает столкновение объекта с другими объектами или аватарами."/>
+			<text name="label position">
+				Позиция (метры)
+			</text>
+			<spinner label="X" name="Pos X"/>
+			<spinner label="Y" name="Pos Y"/>
+			<spinner label="Z" name="Pos Z"/>
+			<text name="label size">
+				Размер (метры)
+			</text>
+			<spinner label="X" name="Scale X"/>
+			<spinner label="Y" name="Scale Y"/>
+			<spinner label="Z" name="Scale Z"/>
+			<text name="label rotation">
+				Поворот (градусы)
+			</text>
+			<spinner label="X" name="Rot X"/>
+			<spinner label="Y" name="Rot Y"/>
+			<spinner label="Z" name="Rot Z"/>
+			<combo_box name="comboBaseType">
+				<combo_box.item label="Коробка" name="Box"/>
+				<combo_box.item label="Цилиндр" name="Cylinder"/>
+				<combo_box.item label="Призма" name="Prism"/>
+				<combo_box.item label="Сфера" name="Sphere"/>
+				<combo_box.item label="Тор" name="Torus"/>
+				<combo_box.item label="Труба" name="Tube"/>
+				<combo_box.item label="Кольцо" name="Ring"/>
+				<combo_box.item label="Скульптурный" name="Sculpted"/>
+			</combo_box>
+			<text name="text cut">
+				Разрез (начало/конец)
+			</text>
+			<spinner label="B" name="cut begin"/>
+			<spinner label="Ð’" name="cut end"/>
+			<text name="text hollow">
+				Полость
+			</text>
+			<text name="text skew">
+				Спираль
+			</text>
+			<text name="Hollow Shape">
+				Форма полости
+			</text>
+			<combo_box name="hole">
+				<combo_box.item label="По умолчанию" name="Default"/>
+				<combo_box.item label="Круглая" name="Circle"/>
+				<combo_box.item label="Квадратная" name="Square"/>
+				<combo_box.item label="Треугольная" name="Triangle"/>
+			</combo_box>
+			<text name="text twist">
+				Скручивание
+			</text>
+			<spinner label="С" name="Twist Begin"/>
+			<spinner label="E" name="Twist End"/>
+			<text name="scale_taper">
+				Конусный срез
+			</text>
+			<text name="scale_hole">
+				Размер отверстия
+			</text>
+			<spinner label="X" name="Taper Scale X"/>
+			<spinner label="Y" name="Taper Scale Y"/>
+			<text name="text topshear">
+				Сдвиг вершины
+			</text>
+			<spinner label="X" name="Shear X"/>
+			<spinner label="Y" name="Shear Y"/>
+			<text name="advanced_cut">
+				Разрез от центра
+			</text>
+			<text name="advanced_dimple">
+				Конический вырез
+			</text>
+			<text name="advanced_slice">
+				Доля
+			</text>
+			<spinner label="С" name="Path Limit Begin"/>
+			<spinner label="E" name="Path Limit End"/>
+			<text name="text taper2">
+				Конусный срез
+			</text>
+			<spinner label="X" name="Taper X"/>
+			<spinner label="Y" name="Taper Y"/>
+			<text name="text radius delta">
+				Радиус
+			</text>
+			<text name="text revolutions">
+				Обороты
+			</text>
+			<texture_picker label="Текстура скульптуры" name="sculpt texture control" tool_tip="Щелкните для выбора изображения"/>
+			<check_box label="Отраженное" name="sculpt mirror control" tool_tip="Отразить скульптурный примитив по оси X"/>
+			<check_box label="Наизнанку" name="sculpt invert control" tool_tip="Инвертировать нормали скульптурного примитива, «вывернув» его наизнанку"/>
+			<text name="label sculpt type">
+				Тип стыковки
+			</text>
+			<combo_box name="sculpt type control">
+				<combo_box.item label="По сфере" name="Sphere"/>
+				<combo_box.item label="По тору" name="Torus"/>
+				<combo_box.item label="По плоскости" name="Plane"/>
+				<combo_box.item label="По цилиндру" name="Cylinder"/>
+			</combo_box>
+		</panel>
+		<panel label="Особенности" name="Features">
+			<panel.string name="None">
+				Нет
+			</panel.string>
+			<panel.string name="Prim">
+				Примитив
+			</panel.string>
+			<panel.string name="Convex Hull">
+				Сложная оболочка
+			</panel.string>
+			<text name="select_single">
+				Выберите только один примитив для изменения особенностей.
+			</text>
+			<text name="edit_object">
+				Изменение особенностей объекта:
+			</text>
+			<check_box label="Гибкость" name="Flexible1D Checkbox Ctrl" tool_tip="Объект может изгибаться по оси Z (настройки на стороне клиента)"/>
+			<spinner label="Мягкость" name="FlexNumSections"/>
+			<spinner label="Гравитация" name="FlexGravity"/>
+			<spinner label="Парусность" name="FlexFriction"/>
+			<spinner label="Ветер" name="FlexWind"/>
+			<spinner label="Упругость" name="FlexTension"/>
+			<spinner label="X-действие" name="FlexForceX"/>
+			<spinner label="Y-действие" name="FlexForceY"/>
+			<spinner label="Z-действие" name="FlexForceZ"/>
+			<check_box label="Свет" name="Light Checkbox Ctrl" tool_tip="Объект будет излучать свет"/>
+			<color_swatch name="colorswatch" tool_tip="Щелкните для выбора цвета"/>
+			<texture_picker label="" name="light texture control" tool_tip="Щелкните для выбора проецируемого изображения (действует только с включенной отложенной отрисовкой)"/>
+			<spinner label="Интенсивность" name="Light Intensity"/>
+			<spinner label="Угол обзора" name="Light FOV"/>
+			<spinner label="Радиус" name="Light Radius"/>
+			<spinner label="Фокус" name="Light Focus"/>
+			<spinner label="Ослабление" name="Light Falloff"/>
+			<spinner label="Окружение" name="Light Ambiance"/>
+			<text name="label physicsshapetype">
+				Тип физич. формы:
+			</text>
+			<combo_box name="Physics Shape Type Combo Ctrl" tool_tip="Выберите тип физической формы"/>
+			<combo_box name="material">
+				<combo_box.item label="Камень" name="Stone"/>
+				<combo_box.item label="Металл" name="Metal"/>
+				<combo_box.item label="Стекло" name="Glass"/>
+				<combo_box.item label="Дерево" name="Wood"/>
+				<combo_box.item label="Плоть" name="Flesh"/>
+				<combo_box.item label="Пластик" name="Plastic"/>
+				<combo_box.item label="Резина" name="Rubber"/>
+			</combo_box>
+			<spinner label="Гравитация" name="Physics Gravity"/>
+			<spinner label="Трение" name="Physics Friction"/>
+			<spinner label="Плотность в 100 кг/м^3" name="Physics Density"/>
+			<spinner label="Восстанавливаемость" name="Physics Restitution"/>
+		</panel>
+		<panel label="Текстура" name="Texture">
+			<panel.string name="string repeats per meter">
+				Повторений на метр
+			</panel.string>
+			<panel.string name="string repeats per face">
+				Повторений на грань
+			</panel.string>
+			<texture_picker label="Текстура" name="texture control" tool_tip="Щелкните для выбора изображения"/>
+			<color_swatch label="Цвет" name="colorswatch" tool_tip="Щелкните для выбора цвета"/>
+			<text name="color trans">
+				Прозрачность %
+			</text>
+			<text name="glow label">
+				Свечение
+			</text>
+			<check_box label="Собств. яркость" name="checkbox fullbright"/>
+			<text name="tex gen">
+				Наложение
+			</text>
+			<combo_box name="combobox texgen">
+				<combo_box.item label="По умолчанию" name="Default"/>
+				<combo_box.item label="На плоскость" name="Planar"/>
+			</combo_box>
+			<text name="label shininess">
+				Блеск
+			</text>
+			<combo_box name="combobox shininess">
+				<combo_box.item label="Нет" name="None"/>
+				<combo_box.item label="Низко" name="Low"/>
+				<combo_box.item label="Средний" name="Medium"/>
+				<combo_box.item label="Высоко" name="High"/>
+			</combo_box>
+			<text name="label bumpiness">
+				Рельефность
+			</text>
+			<combo_box name="combobox bumpiness">
+				<combo_box.item label="Нет" name="None"/>
+				<combo_box.item label="Яркость" name="Brightness"/>
+				<combo_box.item label="По темному" name="Darkness"/>
+				<combo_box.item label="дерево" name="woodgrain"/>
+				<combo_box.item label="кора" name="bark"/>
+				<combo_box.item label="кирпич" name="bricks"/>
+				<combo_box.item label="шахматная доска" name="checker"/>
+				<combo_box.item label="бетон" name="concrete"/>
+				<combo_box.item label="старая плитка" name="crustytile"/>
+				<combo_box.item label="тесаный камень" name="cutstone"/>
+				<combo_box.item label="диски" name="discs"/>
+				<combo_box.item label="гравий" name="gravel"/>
+				<combo_box.item label="чашка Петри" name="petridish"/>
+				<combo_box.item label="сайдинг" name="siding"/>
+				<combo_box.item label="каменная плитка" name="stonetile"/>
+				<combo_box.item label="штукатурка" name="stucco"/>
+				<combo_box.item label="присоска" name="suction"/>
+				<combo_box.item label="переплетение" name="weave"/>
+			</combo_box>
+			<check_box initial_value="ложь" label="Согласование" name="checkbox planar align" tool_tip="Согласование текстур на всех выбранных граних по последней выбранной грани. Должно быть выбрано наложение по плоскостям."/>
+			<text name="rpt">
+				Повторов на грань
+			</text>
+			<spinner label="По горизонтали (U)" name="TexScaleU"/>
+			<check_box label="Разворот" name="checkbox flip s"/>
+			<spinner label="По вертикали (V)" name="TexScaleV"/>
+			<check_box label="Разворот" name="checkbox flip t"/>
+			<spinner label="Вращение˚" name="TexRot"/>
+			<spinner label="Повторов на метр" name="rptctrl"/>
+			<button label="Применить" label_selected="Применить" name="button apply"/>
+			<text name="tex offset">
+				Сдвиг текстуры
+			</text>
+			<spinner label="По горизонтали (U)" name="TexOffsetU"/>
+			<spinner label="По вертикали (V)" name="TexOffsetV"/>
+			<panel name="Add_Media">
+				<text name="media_tex">
+					Медиа
+				</text>
+				<button name="add_media" tool_tip="Добавить медиа"/>
+				<button name="delete_media" tool_tip="Удалить медиа-текстуру"/>
+				<button name="edit_media" tool_tip="Редактировать медиа"/>
+				<button label="Выровнять" label_selected="Выровнять медиа" name="button align" tool_tip="Масштабирование медиа-текстуры (сначала нужно загрузить)"/>
+			</panel>
+		</panel>
+		<panel label="Контент" name="Contents">
+			<button label="Создать скрипт" label_selected="Создать скрипт" name="button new script"/>
+			<button label="Разрешения" name="button permissions"/>
+		</panel>
+	</tab_container>
+	<panel name="land info panel">
+		<text name="label_parcel_info">
+			Даные об участке
+		</text>
+		<text name="label_area_price">
+			Цена: L$[PRICE] за [AREA] м²
+		</text>
+		<text name="label_area">
+			Площадь: [AREA] м²
+		</text>
+		<button label="О земле" label_selected="О земле" name="button about land"/>
+		<check_box label="Показать владельцев" name="checkbox show owners" tool_tip="Цвет участка в зависимости от типа владения: зеленый = ваша земля; голубой = земля вашей группы; красный = чужая земля; желтый = для продажи; фиолетовый = для аукциона; серый = общая"/>
+		<text name="label_parcel_modify">
+			Изменение участка
+		</text>
+		<button label="Разделить" label_selected="Разделить" name="button subdivide land"/>
+		<button label="Объединить" label_selected="Объединить" name="button join land"/>
+		<text name="label_parcel_trans">
+			Действия с землей
+		</text>
+		<button label="Купить землю" label_selected="Купить землю" name="button buy land"/>
+		<button label="Отказаться от земли" label_selected="Отказаться от земли" name="button abandon land"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_top_objects.xml b/indra/newview/skins/default/xui/ru/floater_top_objects.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a6ffe5c030eaee24ed81e421cc9884c2c25ac52e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_top_objects.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="top_objects" title="Лучшие объекты">
+	<floater.string name="top_scripts_title">
+		Лучшие скрипты
+	</floater.string>
+	<floater.string name="top_scripts_text">
+		[COUNT] скриптов длительностью [TIME] мс
+	</floater.string>
+	<floater.string name="scripts_score_label">
+		Время
+	</floater.string>
+	<floater.string name="scripts_mono_time_label">
+		Время моно
+	</floater.string>
+	<floater.string name="top_colliders_title">
+		Лучшие столкновения
+	</floater.string>
+	<floater.string name="top_colliders_text">
+		Лучшие [COUNT] объектов, подвергающиеся потенциальным столкновениям
+	</floater.string>
+	<floater.string name="colliders_score_label">
+		Очки
+	</floater.string>
+	<floater.string name="none_descriptor">
+		Не найдено.
+	</floater.string>
+	<text name="title_text">
+		Загрузка...
+	</text>
+	<scroll_list name="objects_list">
+		<scroll_list.columns label="Очки" name="score"/>
+		<scroll_list.columns label="Название" name="name"/>
+		<scroll_list.columns label="Владелец" name="owner"/>
+		<scroll_list.columns label="Место" name="location"/>
+		<scroll_list.columns label="Время" name="time"/>
+		<scroll_list.columns label="Время моно" name="mono_time"/>
+		<scroll_list.columns label="URL-адреса" name="URLs"/>
+	</scroll_list>
+	<text name="id_text">
+		ID объекта:
+	</text>
+	<button label="Показать метку" name="show_beacon_btn"/>
+	<text name="obj_name_text">
+		Название объекта:
+	</text>
+	<button label="Фильтр" name="filter_object_btn"/>
+	<text name="owner_name_text">
+		Владелец:
+	</text>
+	<button label="Фильтр" name="filter_owner_btn"/>
+	<button label="Вернуть выбранное" name="return_selected_btn"/>
+	<button label="Вернуть все" name="return_all_btn"/>
+	<button label="Отключить выбранное" name="disable_selected_btn"/>
+	<button label="Отключить все" name="disable_all_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_tos.xml b/indra/newview/skins/default/xui/ru/floater_tos.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bd72f6b30872e82c1ae2bf41b3a7f6dc76023769
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_tos.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container">
+	<floater.string name="real_url">
+		http://secondlife.com/app/tos/
+	</floater.string>
+	<floater.string name="loading_url">
+		data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E Loading %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E
+	</floater.string>
+	<button label="Продолжить" label_selected="Продолжить" name="Continue"/>
+	<button label="Отмена" label_selected="Отмена" name="Cancel"/>
+	<check_box label="Я принимаю условия Пользовательского соглашения и Политики конфиденциальности" name="agree_chk"/>
+	<text name="tos_heading">
+		Внимательно прочитайте Пользовательское соглашение и Политику конфиденциальности. Для входа в [SECOND_LIFE] вы должны согласиться с условиями соглашения.
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_toybox.xml b/indra/newview/skins/default/xui/ru/floater_toybox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a4754ad7abf637eacdf157f0a4a2728cdf02a301
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_toybox.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="КНОПКИ ПАНЕЛИ ИНСТРУМЕНТОВ">
+	<text name="toybox label 1">
+		Добавьте или удалите кнопки, перетягивая их на панели инструментов или с них.
+	</text>
+	<text name="toybox label 2">
+		Кнопки будут отображены в исходном виде или в виде значков, в зависимости от настроек каждой панели инструментов.
+	</text>
+	<button label="Очистить все панели" label_selected="Очистить все панели" name="btn_clear_all"/>
+	<button label="Вернуть стандартные" label_selected="Вернуть стандартные" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_translation_settings.xml b/indra/newview/skins/default/xui/ru/floater_translation_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ad280a50dd6255e4e0ddc122aa01fe75beb17cf6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_translation_settings.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_translation_settings" title="НАСТРОЙКИ ПЕРЕВОДА ЧАТА">
+	<string name="bing_api_key_not_verified">
+		Bing appID не подтвержден. Повторите попытку.
+	</string>
+	<string name="google_api_key_not_verified">
+		Ключ Google API не подтвержден. Повторите попытку.
+	</string>
+	<string name="bing_api_key_verified">
+		Bing appID подтвержден.
+	</string>
+	<string name="google_api_key_verified">
+		Ключ Google API подтвержден.
+	</string>
+	<check_box label="Включить машинный перевод при чате" name="translate_chat_checkbox"/>
+	<text name="translate_language_label">
+		Переводить чат на:
+	</text>
+	<combo_box name="translate_language_combo">
+		<combo_box.item label="язык системы" name="System Default Language"/>
+		<combo_box.item label="английский" name="English"/>
+		<combo_box.item label="датский" name="Danish"/>
+		<combo_box.item label="немецкий" name="German"/>
+		<combo_box.item label="испанский" name="Spanish"/>
+		<combo_box.item label="французский" name="French"/>
+		<combo_box.item label="итальянский" name="Italian"/>
+		<combo_box.item label="венгерский" name="Hungarian"/>
+		<combo_box.item label="нидерландский" name="Dutch"/>
+		<combo_box.item label="польский" name="Polish"/>
+		<combo_box.item label="португальский" name="Portugese"/>
+		<combo_box.item label="русский" name="Russian"/>
+		<combo_box.item label="турецкий" name="Turkish"/>
+		<combo_box.item label="украинский" name="Ukrainian"/>
+		<combo_box.item label="китайский" name="Chinese"/>
+		<combo_box.item label="японский" name="Japanese"/>
+		<combo_box.item label="корейский" name="Korean"/>
+	</combo_box>
+	<text name="tip">
+		Выберите сервис перевода:
+	</text>
+	<radio_group name="translation_service_rg">
+		<radio_item initial_value="bing" label="Bing Translator" name="bing"/>
+		<radio_item initial_value="google" label="Google Translate" name="google"/>
+	</radio_group>
+	<text name="bing_api_key_label">
+		Bing [http://www.bing.com/developers/createapp.aspx AppID]:
+	</text>
+	<button label="Подтвердить" name="verify_bing_api_key_btn"/>
+	<text name="google_api_key_label">
+		Google [http://code.google.com/apis/language/translate/v2/getting_started.html#auth Ключ API]:
+	</text>
+	<button label="Подтвердить" name="verify_google_api_key_btn"/>
+	<text name="google_links_text">
+		[http://code.google.com/apis/language/translate/v2/pricing.html Цены] | [https://code.google.com/apis/console Статистика]
+	</text>
+	<button label="OK" name="ok_btn"/>
+	<button label="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_url_entry.xml b/indra/newview/skins/default/xui/ru/floater_url_entry.xml
new file mode 100644
index 0000000000000000000000000000000000000000..59f8dd0c317ff72eec34cfe7ab763111e5233bfb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_url_entry.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="url_entry">
+	<text name="media_label">
+		URL-адрес мультимедийного ресурса:
+	</text>
+	<button label="ОК" name="ok_btn"/>
+	<button label="Отмена" name="cancel_btn"/>
+	<button label="Очистить" name="clear_btn"/>
+	<text name="loading_label">
+		Загрузка...
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_voice_controls.xml b/indra/newview/skins/default/xui/ru/floater_voice_controls.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2b23086062483a1f435d7bc42ac2f2516c1920ae
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_voice_controls.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_controls" title="УПРАВЛЕНИЕ ГОЛОСОМ">
+	<string name="title_nearby">
+		НАСТРОЙКИ ГОЛОСА
+	</string>
+	<string name="title_group">
+		ЗВОНОК ГРУППЕ [GROUP]
+	</string>
+	<string name="title_adhoc">
+		КОНФЕРЕНЦИЯ
+	</string>
+	<string name="title_peer_2_peer">
+		ЗВОНОК ПОЛЬЗОВАТЕЛЮ [NAME]
+	</string>
+	<string name="no_one_near">
+		Нет никого с включенным голосом
+	</string>
+	<layout_stack name="my_call_stack">
+		<layout_panel name="my_panel">
+			<text name="user_text" value="Мой аватар:"/>
+		</layout_panel>
+		<layout_panel name="leave_call_panel">
+			<layout_stack name="voice_effect_and_leave_call_stack">
+				<layout_panel name="leave_call_btn_panel">
+					<button label="Прервать звонок" name="leave_call_btn"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+	</layout_stack>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..d4bf615fe45b9f4b13cdd8a7a9115e31dacec812
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_voice_effect.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="Места" name="voice_effects" title="ИЗМЕНЕНИЕ ГОЛОСА">
+	<string name="no_voice_effect">
+		(Нет изменения голоса)
+	</string>
+	<string name="active_voice_effect">
+		(Активно)
+	</string>
+	<string name="unsubscribed_voice_effect">
+		(Нет подписки)
+	</string>
+	<string name="new_voice_effect">
+		(Новый!)
+	</string>
+	<string name="effect_Arena">
+		Arena
+	</string>
+	<string name="effect_Beast">
+		Beast
+	</string>
+	<string name="effect_Buff">
+		Buff
+	</string>
+	<string name="effect_Buzz">
+		Buzz
+	</string>
+	<string name="effect_Camille">
+		Camille
+	</string>
+	<string name="effect_Creepy">
+		Creepy
+	</string>
+	<string name="effect_CreepyBot">
+		CreepyBot
+	</string>
+	<string name="effect_Cyber">
+		Cyber
+	</string>
+	<string name="effect_DeepBot">
+		DeepBot
+	</string>
+	<string name="effect_Demon">
+		Demon
+	</string>
+	<string name="effect_Flirty">
+		Flirty
+	</string>
+	<string name="effect_Foxy">
+		Foxy
+	</string>
+	<string name="effect_Halloween_2010_Bonus">
+		Бонус_за_Хэллоуин_2010
+	</string>
+	<string name="effect_Helium">
+		Helium
+	</string>
+	<string name="effect_Husky">
+		Husky
+	</string>
+	<string name="effect_Intercom">
+		Внутренняя связь
+	</string>
+	<string name="effect_Macho">
+		Macho
+	</string>
+	<string name="effect_Micro">
+		Micro
+	</string>
+	<string name="effect_Mini">
+		Mini
+	</string>
+	<string name="effect_Nano">
+		Nano
+	</string>
+	<string name="effect_Nightmare">
+		Nightmare
+	</string>
+	<string name="effect_PopBot">
+		PopBot
+	</string>
+	<string name="effect_Rachel">
+		Rachel
+	</string>
+	<string name="effect_Radio">
+		Radio
+	</string>
+	<string name="effect_Robot">
+		Robot
+	</string>
+	<string name="effect_Roxanne">
+		Roxanne
+	</string>
+	<string name="effect_Sabrina">
+		Sabrina
+	</string>
+	<string name="effect_Samantha">
+		Samantha
+	</string>
+	<string name="effect_Sexy">
+		Sexy
+	</string>
+	<string name="effect_Shorty">
+		Shorty
+	</string>
+	<string name="effect_Sneaky">
+		Sneaky
+	</string>
+	<string name="effect_Stallion">
+		Stallion
+	</string>
+	<string name="effect_Sultry">
+		Sultry
+	</string>
+	<string name="effect_Thunder">
+		Thunder
+	</string>
+	<string name="effect_Vixen">
+		Vixen
+	</string>
+	<string name="effect_WhinyBot">
+		WhinyBot
+	</string>
+	<text name="preview_text">
+		Прослушивание
+	</text>
+	<text name="status_text">
+		Запишите образец, затем щелкните, чтобы услышать, как будет звучать голос.
+	</text>
+	<button label="Запись" name="record_btn" tool_tip="Записать образец вашего голоса."/>
+	<button label="Стоп" name="record_stop_btn"/>
+	<text name="voice_morphing_link">
+		[[URL] Подписаться]
+	</text>
+	<scroll_list name="voice_effect_list" tool_tip="Запишите образец вашего голоса, затем щелкните, чтобы прослушать эффект.">
+		<scroll_list.columns label="Название голоса" name="name"/>
+		<scroll_list.columns label="Истекает" name="expires"/>
+	</scroll_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_water.xml b/indra/newview/skins/default/xui/ru/floater_water.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5030351f5b57db0851c69f52037fdce47d5dab7e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_water.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Water Floater" title="РАСШИРЕННЫЙ РЕДАКТОР ВОДЫ">
+	<floater.string name="WLDefaultWaterNames">
+		По умолчанию:глянец:пруд:туман:Second Plague:SNAKE!!!:Valdez
+	</floater.string>
+	<text name="KeyFramePresetsText">
+		Настройки воды:
+	</text>
+	<button label="Создать" label_selected="Создать" name="WaterNewPreset"/>
+	<button label="Сохранить" label_selected="Сохранить" name="WaterSavePreset"/>
+	<button label="Удалить" label_selected="Удалить" name="WaterDeletePreset"/>
+	<tab_container name="Water Tabs">
+		<panel label="НАСТРОЙКИ" name="Settings">
+			<text name="BHText">
+				Цвет водного тумана
+			</text>
+			<color_swatch name="WaterFogColor" tool_tip="Щелкните для выбора цвета"/>
+			<text name="WaterFogDensText">
+				Плотность тумана
+			</text>
+			<text name="WaterUnderWaterFogModText">
+				Подводный туман
+			</text>
+			<text name="BDensText">
+				Уровень отражения волн
+			</text>
+			<slider label="1" name="WaterNormalScaleX"/>
+			<slider label="2" name="WaterNormalScaleY"/>
+			<slider label="3" name="WaterNormalScaleZ"/>
+			<text name="HDText">
+				Масштаб Френеля
+			</text>
+			<text name="FresnelOffsetText">
+				Сдвиг Френеля
+			</text>
+			<text name="DensMultText">
+				Преломление над водой
+			</text>
+			<text name="WaterScaleBelowText">
+				Преломление под водой
+			</text>
+			<text name="MaxAltText">
+				Коэффициент размытия
+			</text>
+		</panel>
+		<panel label="ИЗОБРАЖЕНИЕ" name="Waves">
+			<text name="BHText">
+				Направление больших волн
+			</text>
+			<text name="WaterWave1DirXText">
+				X
+			</text>
+			<text name="WaterWave1DirYText">
+				Y
+			</text>
+			<text name="BHText2">
+				Направление маленьких волн
+			</text>
+			<text name="WaterWave2DirXText">
+				X
+			</text>
+			<text name="WaterWave2DirYText">
+				Y
+			</text>
+			<text name="BHText3">
+				Карта поверхности
+			</text>
+		</panel>
+	</tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_web_content.xml b/indra/newview/skins/default/xui/ru/floater_web_content.xml
new file mode 100644
index 0000000000000000000000000000000000000000..403ab0ef5dcdf5aa81cd650c2e30d94ed4ef835c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_web_content.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_web_content" title="">
+	<layout_stack name="stack1">
+		<layout_panel name="nav_controls">
+			<button name="back" tool_tip="Назад"/>
+			<button name="forward" tool_tip="Вперед"/>
+			<button name="stop" tool_tip="Остановить"/>
+			<button name="reload" tool_tip="Обновить"/>
+			<combo_box name="address" tool_tip="Введите URL-адрес страницы"/>
+			<icon name="media_secure_lock_flag" tool_tip="Безопасный просмотр"/>
+			<button name="popexternal" tool_tip="Открыть текущий URL-адрес в вашем браузере"/>
+		</layout_panel>
+	</layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/ru/floater_whitelist_entry.xml
new file mode 100644
index 0000000000000000000000000000000000000000..811a2756faf6e4a13255a622087c9475db10a368
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_whitelist_entry.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="whitelist_entry" title="БЕЛЫЙ СПИСОК">
+	<text name="media_label">
+		Введите URL-адрес или шаблон URL-адреса для добавления в список разрешенных доменов
+	</text>
+	<line_editor name="whitelist_entry" tool_tip="Введите URL-адрес или шаблон URL-адреса в белый список"/>
+	<button label="OK" name="ok_btn"/>
+	<button label="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_windlight_options.xml b/indra/newview/skins/default/xui/ru/floater_windlight_options.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bbb37aaaa0e35728aaf7df16e0ea52559563a7ed
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_windlight_options.xml
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="WindLight floater" title="РАСШИРЕННЫЙ РЕДАКТОР НЕБА">
+	<floater.string name="WLDefaultSkyNames">
+		A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor&apos;s Delight:Sheer Sensuality
+	</floater.string>
+	<text name="KeyFramePresetsText">
+		Настройки неба:
+	</text>
+	<button label="Новая" label_selected="Новая" name="WLNewPreset"/>
+	<button label="Сохранить" label_selected="Сохранить" name="WLSavePreset"/>
+	<button label="Удалить" label_selected="Удалить" name="WLDeletePreset"/>
+	<button label="Редактор суточных циклов" label_selected="Редактор суточных циклов" name="WLDayCycleMenuButton"/>
+	<tab_container name="WindLight Tabs">
+		<panel label="АТМОСФЕРА" name="Atmosphere">
+			<text name="BHText">
+				Голубой горизонт
+			</text>
+			<text name="BHText2">
+				R
+			</text>
+			<text name="BHText3">
+				G
+			</text>
+			<text name="BHText4">
+				B
+			</text>
+			<text name="BHText5">
+				I
+			</text>
+			<text name="BDensText">
+				Дымка на горизонте
+			</text>
+			<text name="BDensText2">
+				Насыщенность голубого
+			</text>
+			<text name="BHText6">
+				R
+			</text>
+			<text name="BHText7">
+				G
+			</text>
+			<text name="BHText8">
+				B
+			</text>
+			<text name="BHText9">
+				I
+			</text>
+			<text name="HDText">
+				Плотность дымки
+			</text>
+			<text name="DensMultText">
+				Коэффициент плотности
+			</text>
+			<text name="WLDistanceMultText">
+				Коэффициент расстояния
+			</text>
+			<text name="MaxAltText">
+				Максимальная высота
+			</text>
+		</panel>
+		<panel label="ОСВЕЩЕНИЕ" name="Lighting">
+			<text name="SLCText">
+				Цвет солнца/луны
+			</text>
+			<text name="BHText">
+				R
+			</text>
+			<text name="BHText2">
+				G
+			</text>
+			<text name="BHText3">
+				B
+			</text>
+			<text name="BHText4">
+				I
+			</text>
+			<text name="TODText">
+				Положение солнца/луны
+			</text>
+			<text name="WLAmbientText">
+				Рассеянное
+			</text>
+			<text name="BHText5">
+				R
+			</text>
+			<text name="BHText6">
+				G
+			</text>
+			<text name="BHText7">
+				B
+			</text>
+			<text name="BHText8">
+				I
+			</text>
+			<text name="WLEastAngleText">
+				Смещение относительно востока
+			</text>
+			<text name="SunGlowText">
+				Сияние солнца
+			</text>
+			<slider label="Фокус" name="WLGlowB"/>
+			<slider label="Размер" name="WLGlowR"/>
+			<text name="SceneGammaText">
+				Гамма-коррекция сцены
+			</text>
+			<text name="WLStarText">
+				Яркость звезд
+			</text>
+		</panel>
+		<panel label="ОБЛАКА" name="Clouds">
+			<text name="WLCloudColorText">
+				Цвет
+			</text>
+			<text name="BHText">
+				R
+			</text>
+			<text name="BHText2">
+				G
+			</text>
+			<text name="BHText3">
+				B
+			</text>
+			<text name="BHText4">
+				I
+			</text>
+			<text name="WLCloudColorText2">
+				Положение и плотность
+			</text>
+			<text name="BHText5">
+				X
+			</text>
+			<text name="BHText6">
+				Y
+			</text>
+			<text name="BHText7">
+				П
+			</text>
+			<text name="WLCloudCoverageText">
+				Облачность
+			</text>
+			<text name="WLCloudScaleText">
+				Размеры
+			</text>
+			<text name="WLCloudDetailText">
+				Детализация (положение/плотность)
+			</text>
+			<text name="BHText8">
+				X
+			</text>
+			<text name="BHText9">
+				Y
+			</text>
+			<text name="BHText10">
+				П
+			</text>
+			<text name="WLCloudScrollXText">
+				Скорость по X
+			</text>
+			<check_box label="На месте" name="WLCloudLockX"/>
+			<text name="WLCloudScrollYText">
+				Скорость по Y
+			</text>
+			<check_box label="На месте" name="WLCloudLockY"/>
+			<check_box label="Создать классические облака" name="DrawClassicClouds"/>
+		</panel>
+	</tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_window_size.xml b/indra/newview/skins/default/xui/ru/floater_window_size.xml
new file mode 100644
index 0000000000000000000000000000000000000000..24865a6ba5df0facb48c715c3fedbae249274ec4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_window_size.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="window_size" title="РАЗМЕР ОКНА">
+	<string name="resolution_format">
+		[RES_X] x [RES_Y]
+	</string>
+	<text name="windowsize_text">
+		Задать размер окна:
+	</text>
+	<combo_box name="window_size_combo" tool_tip="ширина x высота">
+		<combo_box.item label="1000 x 700 (по умолчанию)" name="item0"/>
+		<combo_box.item label="1024 x 768" name="item1"/>
+		<combo_box.item label="1280 x 720 (720p)" name="item2"/>
+		<combo_box.item label="1920 x 1080 (1080p)" name="item3"/>
+	</combo_box>
+	<button label="Задать" name="set_btn"/>
+	<button label="Отмена" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/floater_world_map.xml b/indra/newview/skins/default/xui/ru/floater_world_map.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ef8dfe22ae9352343c980d4bd0f2528bbacd960a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/floater_world_map.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="worldmap" title="КАРТА МИРА">
+	<panel name="layout_panel_1">
+		<text name="events_label">
+			Обозначения
+		</text>
+	</panel>
+	<panel name="layout_panel_2">
+		<button name="Show My Location" tool_tip="Центрировать карту на позиции моего аватара"/>
+		<text name="me_label">
+			Я
+		</text>
+		<text name="person_label">
+			Люди
+		</text>
+		<text name="infohub_label">
+			Инфохаб
+		</text>
+		<text name="land_sale_label">
+			Продажа земли
+		</text>
+		<text name="auction_label">
+			с аукциона
+		</text>
+		<text name="by_owner_label">
+			владельцем
+		</text>
+		<button name="Go Home" tool_tip="Телепортация домой"/>
+		<text name="Home_label">
+			Дом
+		</text>
+		<text name="events_label">
+			События:
+		</text>
+		<text name="pg_label">
+			Общие
+		</text>
+		<check_box initial_value="истина" name="events_mature_chk"/>
+		<text name="events_mature_label">
+			Умеренные
+		</text>
+		<text name="events_adult_label">
+			Для взрослых
+		</text>
+	</panel>
+	<panel name="layout_panel_3">
+		<text name="find_on_map_label">
+			Найти на карте
+		</text>
+	</panel>
+	<panel name="layout_panel_4">
+		<combo_box label="Друзья онлайн" name="friend combo" tool_tip="Показать друзей на карте">
+			<combo_box.item label="Мои друзья онлайн" name="item1"/>
+		</combo_box>
+		<combo_box label="Мои закладки" name="landmark combo" tool_tip="Показать на карте мои закладки">
+			<combo_box.item label="Мои закладки" name="item1"/>
+		</combo_box>
+		<search_editor label="Название региона" name="location" tool_tip="Введите название региона"/>
+		<button label="Поиск" name="DoSearch" tool_tip="Поиск региона"/>
+		<button name="Clear" tool_tip="Очистить отслеживание и сбросить карту до стандартного вида"/>
+		<text name="events_label">
+			Место:
+		</text>
+		<button label="Телепортация" name="Teleport" tool_tip="Телепортация в выбранное место"/>
+		<button label="Копировать URL SL" name="copy_slurl" tool_tip="Копировать текущее место в виде URL-адреса SL для использования в интернете."/>
+		<button label="Показать выбранное" name="Show Destination" tool_tip="Центрировать карту на выбранном месте"/>
+	</panel>
+	<panel name="layout_panel_5">
+		<text name="zoom_label">
+			Увеличение
+		</text>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/inspect_avatar.xml b/indra/newview/skins/default/xui/ru/inspect_avatar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e38ae967cc979f961a6c4361378cdc5f02dcf299
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/inspect_avatar.xml
@@ -0,0 +1,25 @@
+<?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="inspect_avatar">
+	<string name="Subtitle">
+		[AGE]
+	</string>
+	<string name="Details">
+		[SL_PROFILE]
+	</string>
+	<text name="user_subtitle" value="11 месяцев и 3 дня назад"/>
+	<text name="user_details">
+		Это мое описание Second Life и я думаю, что оно великолепно. Но почему-то из-за моей любви к долгим разговорам оно оказалось слишком длинным
+	</text>
+	<slider name="volume_slider" tool_tip="Громкость голоса" value="0.5"/>
+	<button label="Добавить в друзья" name="add_friend_btn"/>
+	<button label="IM" name="im_btn"/>
+	<button label="Профиль" name="view_profile_btn"/>
+	<panel name="moderator_panel">
+		<button label="Отключить голос" name="disable_voice"/>
+		<button label="Включить голос" name="enable_voice"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/inspect_group.xml b/indra/newview/skins/default/xui/ru/inspect_group.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ca600b0a1f171ac2839164719bb084cbf92b0dfa
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/inspect_group.xml
@@ -0,0 +1,32 @@
+<?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="inspect_group">
+	<string name="PrivateGroup">
+		Частная группа
+	</string>
+	<string name="FreeToJoin">
+		Бесплатное вступление
+	</string>
+	<string name="CostToJoin">
+		L$[AMOUNT] за вступление
+	</string>
+	<string name="YouAreMember">
+		Вы участник группы
+	</string>
+	<text name="group_subtitle">
+		123 участника
+	</text>
+	<text name="group_details">
+		Группа жителей, которые могут создавать комнату с лосем.
+Бойся лося!  Бойся!  И мангуста тоже!
+	</text>
+	<text name="group_cost">
+		L$123 за вступление
+	</text>
+	<button label="Вступить" name="join_btn"/>
+	<button label="Покинуть" name="leave_btn"/>
+	<button label="Смотреть профиль" name="view_profile_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/inspect_object.xml b/indra/newview/skins/default/xui/ru/inspect_object.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1a43357cd31a11708504d03a17b8e2607848751a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/inspect_object.xml
@@ -0,0 +1,44 @@
+<?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="inspect_object">
+	<string name="Creator">
+		От [CREATOR]
+	</string>
+	<string name="CreatorAndOwner">
+		От [CREATOR]
+Владелец [OWNER]
+	</string>
+	<string name="Price">
+		L$[AMOUNT]
+	</string>
+	<string name="PriceFree">
+		Бесплатно!
+	</string>
+	<string name="Touch">
+		Коснуться
+	</string>
+	<string name="Sit">
+		Сесть
+	</string>
+	<text name="object_creator">
+		от secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
+владелец secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
+	</text>
+	<text name="price_text">
+		L$30,000
+	</text>
+	<icon name="secure_browsing" tool_tip="Безопасный просмотр"/>
+	<text name="object_media_url">
+		http://www.superdupertest.com
+	</text>
+	<button label="Купить" name="buy_btn"/>
+	<button label="Заплатить" name="pay_btn"/>
+	<button label="Взять копию" name="take_free_copy_btn"/>
+	<button label="Коснуться" name="touch_btn"/>
+	<button label="Сесть" name="sit_btn"/>
+	<button label="Открыто" name="open_btn"/>
+	<button label="Больше" name="more_info_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/ru/inspect_remote_object.xml b/indra/newview/skins/default/xui/ru/inspect_remote_object.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eec4817f02c36c734dcbd2626114aa9feedee3ce
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/inspect_remote_object.xml
@@ -0,0 +1,22 @@
+<?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="inspect_remote_object">
+	<text name="object_name">
+		Проверка очень длинного имени объекта. О боже, поверить не могу что имя этого объекта может быть таким длинным, честно!
+	</text>
+	<text name="object_owner_label">
+		Владелец:
+	</text>
+	<text name="object_owner">
+		Длинноеимяаватара Джонсонзначитсынджона
+	</text>
+	<text name="object_slurl">
+		http://slurl.com/Ahern/50/50/50
+	</text>
+	<button label="Карта" name="map_btn"/>
+	<button label="Заблокировать" name="block_btn"/>
+	<button label="Закрыть" name="close_btn"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..786e571527ee701ab61d1bc2d3a1dbf16b35235b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_add_wearable_gear.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Add Wearable Gear Menu">
+	<menu_item_check label="Сортировать по времени" name="sort_by_most_recent"/>
+	<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_attachment_other.xml b/indra/newview/skins/default/xui/ru/menu_attachment_other.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fb1c24448bd5a8229c55f4a9f3931974e4c3d352
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_attachment_other.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_avatar_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="Смотреть профиль" name="Profile..."/>
+	<menu_item_call label="В друзья" name="Add Friend"/>
+	<menu_item_call label="IM" name="Send IM..."/>
+	<menu_item_call label="Звонок" name="Call"/>
+	<menu_item_call label="Пригласить в группу" name="Invite..."/>
+	<menu_item_call label="Заблокировать" name="Avatar Mute"/>
+	<menu_item_call label="Пожаловаться" name="abuse"/>
+	<menu_item_call label="Заморозить" name="Freeze..."/>
+	<menu_item_call label="Выкинуть" name="Eject..."/>
+	<menu_item_call label="Отладка текстур" name="Debug..."/>
+	<menu_item_call label="Приблизить" name="Zoom In"/>
+	<menu_item_call label="Заплатить" name="Pay..."/>
+	<menu_item_call label="Профиль объекта" name="Object Inspect"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_attachment_self.xml b/indra/newview/skins/default/xui/ru/menu_attachment_self.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f241b48871280ddd219b81f694adc6fce35fe15b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_attachment_self.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Attachment Pie">
+	<menu_item_call label="Коснуться" name="Attachment Object Touch"/>
+	<menu_item_call label="Изменить" name="Edit..."/>
+	<menu_item_call label="Отсоединить" name="Detach"/>
+	<menu_item_call label="Сесть" name="Sit Down Here"/>
+	<menu_item_call label="Встать" name="Stand Up"/>
+	<menu_item_call label="Мой внешний вид" name="Change Outfit"/>
+	<menu_item_call label="Изменить костюм" name="Edit Outfit"/>
+	<menu_item_call label="Изменить фигуру" name="Edit My Shape"/>
+	<menu_item_call label="Мои друзья" name="Friends..."/>
+	<menu_item_call label="Мои группы" name="Groups..."/>
+	<menu_item_call label="Мой профиль" name="Profile..."/>
+	<menu_item_call label="Отладка текстур" name="Debug..."/>
+	<menu_item_call label="Бросить" name="Drop"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_icon.xml b/indra/newview/skins/default/xui/ru/menu_avatar_icon.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ac2b4be0035bc5cc4eefda36a69c84d50897c929
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_avatar_icon.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Avatar Icon Menu">
+	<menu_item_call label="Открыть профиль" name="Show Profile"/>
+	<menu_item_call label="Отправить сообщение..." name="Send IM"/>
+	<menu_item_call label="Добавить в друзья..." name="Add Friend"/>
+	<menu_item_call label="Удалить из друзей..." name="Remove Friend"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_other.xml b/indra/newview/skins/default/xui/ru/menu_avatar_other.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fb283c9d800919a8734642609d0275e58bc1e27d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_avatar_other.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_attachment_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="Смотреть профиль" name="Profile..."/>
+	<menu_item_call label="В друзья" name="Add Friend"/>
+	<menu_item_call label="IM" name="Send IM..."/>
+	<menu_item_call label="Звонок" name="Call"/>
+	<menu_item_call label="Пригласить в группу" name="Invite..."/>
+	<menu_item_call label="Заблокировать" name="Avatar Mute"/>
+	<menu_item_call label="Пожаловаться" name="abuse"/>
+	<menu_item_call label="Заморозить" name="Freeze..."/>
+	<menu_item_call label="Выкинуть" name="Eject..."/>
+	<menu_item_call label="Отладка текстур" name="Debug..."/>
+	<menu_item_call label="Приблизить" name="Zoom In"/>
+	<menu_item_call label="Заплатить" name="Pay..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_avatar_self.xml b/indra/newview/skins/default/xui/ru/menu_avatar_self.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b72f3dcc427b7443ca818a4f89bf3cfb52804298
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_avatar_self.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Self Pie">
+	<menu_item_call label="Сесть" name="Sit Down Here"/>
+	<menu_item_call label="Встать" name="Stand Up"/>
+	<context_menu label="Снять" name="Take Off &gt;">
+		<context_menu label="одежду" name="Clothes &gt;">
+			<menu_item_call label="рубашку" name="Shirt"/>
+			<menu_item_call label="брюки" name="Pants"/>
+			<menu_item_call label="юбку" name="Skirt"/>
+			<menu_item_call label="обувь" name="Shoes"/>
+			<menu_item_call label="носки" name="Socks"/>
+			<menu_item_call label="пиджак" name="Jacket"/>
+			<menu_item_call label="перчатки" name="Gloves"/>
+			<menu_item_call label="майку" name="Self Undershirt"/>
+			<menu_item_call label="трусы" name="Self Underpants"/>
+			<menu_item_call label="тату" name="Self Tattoo"/>
+			<menu_item_call label="физические данные" name="Self Physics"/>
+			<menu_item_call label="альфа-маску" name="Self Alpha"/>
+			<menu_item_call label="всю одежду" name="All Clothes"/>
+		</context_menu>
+		<context_menu label="данные в игре" name="Object Detach HUD"/>
+		<context_menu label="Отсоединить" name="Object Detach"/>
+		<menu_item_call label="Отсоединить все" name="Detach All"/>
+	</context_menu>
+	<menu_item_call label="Мой внешний вид" name="Chenge Outfit"/>
+	<menu_item_call label="Изменить костюм" name="Edit Outfit"/>
+	<menu_item_call label="Изменить фигуру" name="Edit My Shape"/>
+	<menu_item_call label="Мои друзья" name="Friends..."/>
+	<menu_item_call label="Мои группы" name="Groups..."/>
+	<menu_item_call label="Мой профиль" name="Profile..."/>
+	<menu_item_call label="Отладка текстур" name="Debug..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_bottomtray.xml b/indra/newview/skins/default/xui/ru/menu_bottomtray.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fa3558945b09586759049dc04009e4887ea10fb0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_bottomtray.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="hide_camera_move_controls_menu">
+	<menu_item_check label="Кнопка разговора" name="EnableVoiceChat"/>
+	<menu_item_check label="Кнопка жестов" name="ShowGestureButton"/>
+	<menu_item_check label="Кнопка движения" name="ShowMoveButton"/>
+	<menu_item_check label="Кнопка камеры" name="ShowCameraButton"/>
+	<menu_item_check label="Кнопка снимка" name="ShowSnapshotButton"/>
+	<menu_item_check label="Кнопка строительства" name="ShowBuildButton"/>
+	<menu_item_check label="Кнопка поиска" name="ShowSearchButton"/>
+	<menu_item_check label="Кнопка карты" name="ShowWorldMapButton"/>
+	<menu_item_check label="Кнопка миникарты" name="ShowMiniMapButton"/>
+	<menu_item_call label="Вырезать" name="NearbyChatBar_Cut"/>
+	<menu_item_call label="Копировать" name="NearbyChatBar_Copy"/>
+	<menu_item_call label="Вставить" name="NearbyChatBar_Paste"/>
+	<menu_item_call label="Удалить" name="NearbyChatBar_Delete"/>
+	<menu_item_call label="Выделить все" name="NearbyChatBar_Select_All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml b/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml
new file mode 100644
index 0000000000000000000000000000000000000000..72d1bc52b539f2e4c0d299ecd605f5da5c0797f5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_cof_attachment.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="COF Attachment">
+	<menu_item_call label="Отсоединить" name="detach"/>
+</context_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..ee0a0c70ed0af1dedbd5cd28b6c57815d1dad73c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_cof_body_part.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="COF Body">
+	<menu_item_call label="Заменить" name="replace"/>
+	<menu_item_call label="Изменить" name="edit"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_cof_clothing.xml b/indra/newview/skins/default/xui/ru/menu_cof_clothing.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bbdf4fd0d4d4ce9b723afe8c1f20db4de2cfdc98
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_cof_clothing.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="COF Clothing">
+	<menu_item_call label="Снять" name="take_off"/>
+	<menu_item_call label="Изменить" name="edit"/>
+	<menu_item_call label="Заменить" name="replace"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_cof_gear.xml b/indra/newview/skins/default/xui/ru/menu_cof_gear.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0332c03a0465961f30623fe919c2e2c998a3940c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_cof_gear.xml
@@ -0,0 +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"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_edit.xml b/indra/newview/skins/default/xui/ru/menu_edit.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0dddea9c045683ccda20b548545052c110250055
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_edit.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu label="Изменить" name="Edit">
+	<menu_item_call label="Отменить" name="Undo"/>
+	<menu_item_call label="Вернуть" name="Redo"/>
+	<menu_item_call label="Вырезать" name="Cut"/>
+	<menu_item_call label="Копировать" name="Copy"/>
+	<menu_item_call label="Вставить" name="Paste"/>
+	<menu_item_call label="Удалить" name="Delete"/>
+	<menu_item_call label="Дублировать" name="Duplicate"/>
+	<menu_item_call label="Выделить все" name="Select All"/>
+	<menu_item_call label="Отменить выделение" name="Deselect"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_favorites.xml b/indra/newview/skins/default/xui/ru/menu_favorites.xml
new file mode 100644
index 0000000000000000000000000000000000000000..074be06ba96fc6406c6741c05a686f9a31ac152e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_favorites.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+	<menu_item_call label="Телепорт" name="Teleport To Landmark"/>
+	<menu_item_call label="Смотреть/изменить закладку" name="Landmark Open"/>
+	<menu_item_call label="Копировать URL-адрес SL" name="Copy slurl"/>
+	<menu_item_call label="Показать на карте" name="Show On Map"/>
+	<menu_item_call label="Копировать" name="Landmark Copy"/>
+	<menu_item_call label="Вставить" name="Landmark Paste"/>
+	<menu_item_call label="Удалить" name="Delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml b/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d0b68cefbd38252e03c747964e643bb7eaf240e1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_gesture_gear.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_gesture_gear">
+	<menu_item_call label="Добавить в избранное/удалить" name="activate"/>
+	<menu_item_call label="Копировать" name="copy_gesture"/>
+	<menu_item_call label="Вставить" name="paste"/>
+	<menu_item_call label="Копировать UUID" name="copy_uuid"/>
+	<menu_item_call label="Сохранить в текущий костюм" name="save_to_outfit"/>
+	<menu_item_call label="Изменить" name="edit_gesture"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_group_plus.xml b/indra/newview/skins/default/xui/ru/menu_group_plus.xml
new file mode 100644
index 0000000000000000000000000000000000000000..edd012b964c16d326bc1a5f985e3cfa151284627
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_group_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_call label="Присоединиться к группе..." name="item_join"/>
+	<menu_item_call label="Новая группа..." name="item_new"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..34e5f4c0e4a6226684c7ffd7b85de2e57a555b20
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_hide_navbar.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="hide_navbar_menu">
+	<menu_item_check label="Показать панель навигации и избранного" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="Показать панель избранного" name="ShowNavbarFavoritesPanel"/>
+	<menu_item_check label="Показать мини-панель местоположения" name="ShowMiniLocationPanel"/>
+</menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..5a5bde61b99cc384e6ade7abb36f7118d10e1e48
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_im_well_button.xml
@@ -0,0 +1,4 @@
+<?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/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/ru/menu_imchiclet_adhoc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8b60a585ab5b64a6286bede4b96e4d134174a20f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_imchiclet_adhoc.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet AdHoc Menu">
+	<menu_item_call label="Завершить сеанс" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/ru/menu_imchiclet_group.xml
new file mode 100644
index 0000000000000000000000000000000000000000..766b3847a76113b03724ac04da2bad992db0570d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_imchiclet_group.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet Group Menu">
+	<menu_item_call label="Информация о группе" name="Show Profile"/>
+	<menu_item_call label="Показать сеанс" name="Chat"/>
+	<menu_item_call label="Завершить сеанс" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/ru/menu_imchiclet_p2p.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a33f6d5be842874ecb03fb217fbc75f3b8b313c9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_imchiclet_p2p.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet P2P Menu">
+	<menu_item_call label="Смотреть профиль" name="Show Profile"/>
+	<menu_item_call label="В друзья" name="Add Friend"/>
+	<menu_item_call label="Показать сеанс" name="Send IM"/>
+	<menu_item_call label="Завершить сеанс" name="End Session"/>
+</menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..957609a7a392d32c61984382aec7a81fdf7580d1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_inspect_avatar_gear.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<toggleable_menu name="Gear Menu">
+	<menu_item_call label="Смотреть профиль" name="view_profile"/>
+	<menu_item_call label="В друзья" name="add_friend"/>
+	<menu_item_call label="IM" name="im"/>
+	<menu_item_call label="Звонок" name="call"/>
+	<menu_item_call label="Телепорт" name="teleport"/>
+	<menu_item_call label="Пригласить в группу" name="invite_to_group"/>
+	<menu_item_call label="Заблокировать" name="block"/>
+	<menu_item_call label="Разблокировать" name="unblock"/>
+	<menu_item_call label="Пожаловаться" name="report"/>
+	<menu_item_call label="Заморозить" name="freeze"/>
+	<menu_item_call label="Выкинуть" name="eject"/>
+	<menu_item_call label="Выкинуть" name="kick"/>
+	<menu_item_call label="Поддержка" name="csr"/>
+	<menu_item_call label="Отладка текстур" name="debug"/>
+	<menu_item_call label="Найти на карте" name="find_on_map"/>
+	<menu_item_call label="Приблизить" name="zoom_in"/>
+	<menu_item_call label="Заплатить" name="pay"/>
+	<menu_item_call label="Поделиться" name="share"/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..a72b2bef2392dedfe8597db4e03a84e31cfde443
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_inspect_object_gear.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<toggleable_menu name="Gear Menu">
+	<menu_item_call label="Коснуться" name="touch"/>
+	<menu_item_call label="Сесть" name="sit"/>
+	<menu_item_call label="Заплатить" name="pay"/>
+	<menu_item_call label="Купить" name="buy"/>
+	<menu_item_call label="Взять" name="take"/>
+	<menu_item_call label="Взять копию" name="take_copy"/>
+	<menu_item_call label="Открыть" name="open"/>
+	<menu_item_call label="Изменить" name="edit"/>
+	<menu_item_call label="Надеть" name="wear"/>
+	<menu_item_call label="Добавить" name="add"/>
+	<menu_item_call label="Пожаловаться" name="report"/>
+	<menu_item_call label="Заблокировать" name="block"/>
+	<menu_item_call label="Приблизить" name="zoom_in"/>
+	<menu_item_call label="Удалить" name="remove"/>
+	<menu_item_call label="Дополнительная информация" name="more_info"/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..901bb615e06ba3c759f68cb1e039208d4b964c80
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_inspect_self_gear.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Self Pie">
+	<menu_item_call label="Сесть" name="Sit Down Here"/>
+	<menu_item_call label="Встать" name="Stand Up"/>
+	<context_menu label="Снять" name="Take Off &gt;">
+		<context_menu label="одежду" name="Clothes &gt;">
+			<menu_item_call label="рубашку" name="Shirt"/>
+			<menu_item_call label="брюки" name="Pants"/>
+			<menu_item_call label="юбку" name="Skirt"/>
+			<menu_item_call label="обувь" name="Shoes"/>
+			<menu_item_call label="носки" name="Socks"/>
+			<menu_item_call label="пиджак" name="Jacket"/>
+			<menu_item_call label="перчатки" name="Gloves"/>
+			<menu_item_call label="майку" name="Self Undershirt"/>
+			<menu_item_call label="трусы" name="Self Underpants"/>
+			<menu_item_call label="тату" name="Self Tattoo"/>
+			<menu_item_call label="альфа-маску" name="Self Alpha"/>
+			<menu_item_call label="всю одежду" name="All Clothes"/>
+		</context_menu>
+		<context_menu label="данные в игре" name="Object Detach HUD"/>
+		<context_menu label="Отсоединить" name="Object Detach"/>
+		<menu_item_call label="Отсоединить все" name="Detach All"/>
+	</context_menu>
+	<menu_item_call label="Сменить костюм" name="Chenge Outfit"/>
+	<menu_item_call label="Изменить костюм" name="Edit Outfit"/>
+	<menu_item_call label="Изменить фигуру" name="Edit My Shape"/>
+	<menu_item_call label="Мои друзья" name="Friends..."/>
+	<menu_item_call label="Мои группы" name="Groups..."/>
+	<menu_item_call label="Мой профиль" name="Profile..."/>
+	<menu_item_call label="Отладка текстур" name="Debug..."/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..95d162d7fe686321722356e9c3e403be9758d7c4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_inv_offer_chiclet.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="InvOfferChiclet Menu">
+	<menu_item_call label="Закрыть" name="Close"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_inventory.xml b/indra/newview/skins/default/xui/ru/menu_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4eeb1e46c2f40989f0b4b56de0f364f7f5c0967f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_inventory.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+	<menu_item_call label="Поделиться" name="Share"/>
+	<menu_item_call label="Купить" name="Task Buy"/>
+	<menu_item_call label="Открыть" name="Task Open"/>
+	<menu_item_call label="Воспроизвести" name="Task Play"/>
+	<menu_item_call label="Свойства" name="Task Properties"/>
+	<menu_item_call label="Переименовать" name="Task Rename"/>
+	<menu_item_call label="Удалить" name="Task Remove"/>
+	<menu_item_call label="Очистить корзину" name="Empty Trash"/>
+	<menu_item_call label="Очистить бюро находок" name="Empty Lost And Found"/>
+	<menu_item_call label="Новая папка" name="New Folder"/>
+	<menu_item_call label="Новый скрипт" name="New Script"/>
+	<menu_item_call label="Новая заметка" name="New Note"/>
+	<menu_item_call label="Новый жест" name="New Gesture"/>
+	<menu label="Новая одежда" name="New Clothes">
+		<menu_item_call label="Новая рубашка" name="New Shirt"/>
+		<menu_item_call label="Новые брюки" name="New Pants"/>
+		<menu_item_call label="Новая обувь" name="New Shoes"/>
+		<menu_item_call label="Новые носки" name="New Socks"/>
+		<menu_item_call label="Новый пиджак" name="New Jacket"/>
+		<menu_item_call label="Новая юбка" name="New Skirt"/>
+		<menu_item_call label="Новые перчатки" name="New Gloves"/>
+		<menu_item_call label="Новая майка" name="New Undershirt"/>
+		<menu_item_call label="Новые трусы" name="New Underpants"/>
+		<menu_item_call label="Новая альфа-маска" name="New Alpha Mask"/>
+		<menu_item_call label="Новое тату" name="New Tattoo"/>
+		<menu_item_call label="Новая физика" name="New Physics"/>
+	</menu>
+	<menu label="Новые части тела" name="New Body Parts">
+		<menu_item_call label="Новая фигура" name="New Shape"/>
+		<menu_item_call label="Новая кожа" name="New Skin"/>
+		<menu_item_call label="Новые волосы" name="New Hair"/>
+		<menu_item_call label="Новые глаза" name="New Eyes"/>
+	</menu>
+	<menu label="Сменить тип" name="Change Type">
+		<menu_item_call label="По умолчанию" name="Default"/>
+		<menu_item_call label="Перчатки" name="Gloves"/>
+		<menu_item_call label="Пиджак" name="Jacket"/>
+		<menu_item_call label="Брюки" name="Pants"/>
+		<menu_item_call label="Фигура" name="Shape"/>
+		<menu_item_call label="Обувь" name="Shoes"/>
+		<menu_item_call label="Рубашка" name="Shirt"/>
+		<menu_item_call label="Юбка" name="Skirt"/>
+		<menu_item_call label="Трусы" name="Underpants"/>
+		<menu_item_call label="Майка" name="Undershirt"/>
+	</menu>
+	<menu_item_call label="Телепорт" name="Landmark Open"/>
+	<menu_item_call label="Открыть" name="Animation Open"/>
+	<menu_item_call label="Открыть" name="Sound Open"/>
+	<menu_item_call label="Сменить текущий костюм" name="Replace Outfit"/>
+	<menu_item_call label="Добавить к текущему костюму" name="Add To Outfit"/>
+	<menu_item_call label="Убрать из текущего костюма" name="Remove From Outfit"/>
+	<menu_item_call label="Найти оригинал" name="Find Original"/>
+	<menu_item_call label="Удалить навсегда" name="Purge Item"/>
+	<menu_item_call label="Восстановить вещь" name="Restore Item"/>
+	<menu_item_call label="Открыть" name="Open"/>
+	<menu_item_call label="Открыть оригинал" name="Open Original"/>
+	<menu_item_call label="Свойства" name="Properties"/>
+	<menu_item_call label="Переименовать" name="Rename"/>
+	<menu_item_call label="Копировать UUID актива" name="Copy Asset UUID"/>
+	<menu_item_call label="Копировать" name="Copy"/>
+	<menu_item_call label="Вставить" name="Paste"/>
+	<menu_item_call label="Вставить как ссылку" name="Paste As Link"/>
+	<menu_item_call label="Удалить" name="Remove Link"/>
+	<menu_item_call label="Удалить" name="Delete"/>
+	<menu_item_call label="Удалить системную папку" name="Delete System Folder"/>
+	<menu_item_call label="Начать конференцию" name="Conference Chat Folder"/>
+	<menu_item_call label="Воспроизвести" name="Sound Play"/>
+	<menu_item_call label="О закладке" name="About Landmark"/>
+	<menu_item_call label="Проиграть для всех" name="Animation Play"/>
+	<menu_item_call label="Проиграть для себя" name="Animation Audition"/>
+	<menu_item_call label="Отправить IM-сообщение" name="Send Instant Message"/>
+	<menu_item_call label="Предложить телепортацию..." name="Offer Teleport..."/>
+	<menu_item_call label="Начать конференцию" name="Conference Chat"/>
+	<menu_item_call label="Активировать" name="Activate"/>
+	<menu_item_call label="Деактивировать" name="Deactivate"/>
+	<menu_item_call label="Сохранить как" name="Save As"/>
+	<menu_item_call label="Отсоединить от себя" name="Detach From Yourself"/>
+	<menu_item_call label="Надеть" name="Wearable And Object Wear"/>
+	<menu label="Присоединить к" name="Attach To"/>
+	<menu label="Присоединить к данным в игре" name="Attach To HUD"/>
+	<menu_item_call label="Изменить" name="Wearable Edit"/>
+	<menu_item_call label="Добавить" name="Wearable Add"/>
+	<menu_item_call label="Снять" name="Take Off"/>
+	<menu_item_call label="Копировать в «Торговые исходящие»" name="Merchant Copy"/>
+	<menu_item_call label="Переместить в «Торговые исходящие»" name="Merchant Move"/>
+	<menu_item_call label="- нет действий -" name="--no options--"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_inventory_add.xml b/indra/newview/skins/default/xui/ru/menu_inventory_add.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9a240c653e60bee7e77a033bc9ec7dcba5b61d38
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_inventory_add.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_inventory_add">
+	<menu label="Передать" name="upload">
+		<menu_item_call label="Изображение (L$[COST])..." name="Upload Image"/>
+		<menu_item_call label="Звук (L$[COST])..." name="Upload Sound"/>
+		<menu_item_call label="Анимация (L$[COST])..." name="Upload Animation"/>
+		<menu_item_call label="Модель..." name="Upload Model"/>
+		<menu_item_call label="Мастер моделирования..." name="Upload Model Wizard"/>
+		<menu_item_call label="Все сразу (L$[COST] за файл)..." name="Bulk Upload"/>
+		<menu_item_call label="Установить разрешения на передачу по умолчанию" name="perm prefs"/>
+	</menu>
+	<menu_item_call label="Новая папка" name="New Folder"/>
+	<menu_item_call label="Новый скрипт" name="New Script"/>
+	<menu_item_call label="Новая заметка" name="New Note"/>
+	<menu_item_call label="Новый жест" name="New Gesture"/>
+	<menu label="Новая одежда" name="New Clothes">
+		<menu_item_call label="Новая рубашка" name="New Shirt"/>
+		<menu_item_call label="Новые брюки" name="New Pants"/>
+		<menu_item_call label="Новая обувь" name="New Shoes"/>
+		<menu_item_call label="Новые носки" name="New Socks"/>
+		<menu_item_call label="Новый пиджак" name="New Jacket"/>
+		<menu_item_call label="Новая юбка" name="New Skirt"/>
+		<menu_item_call label="Новые перчатки" name="New Gloves"/>
+		<menu_item_call label="Новая майка" name="New Undershirt"/>
+		<menu_item_call label="Новые трусы" name="New Underpants"/>
+		<menu_item_call label="Новая альфа-маска" name="New Alpha"/>
+		<menu_item_call label="Новое тату" name="New Tattoo"/>
+		<menu_item_call label="Новая физика" name="New Physics"/>
+	</menu>
+	<menu label="Новые части тела" name="New Body Parts">
+		<menu_item_call label="Новая фигура" name="New Shape"/>
+		<menu_item_call label="Новая кожа" name="New Skin"/>
+		<menu_item_call label="Новые волосы" name="New Hair"/>
+		<menu_item_call label="Новые глаза" name="New Eyes"/>
+	</menu>
+</menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..9fc0b6d44ebac2ab0b5952607fbad8af2c7d0742
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_inventory_gear_default.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_gear_default">
+	<menu_item_call label="Новое окно инвентаря" name="new_window"/>
+	<menu_item_check label="Сортировать по имени" name="sort_by_name"/>
+	<menu_item_check label="Сортировать по времени" name="sort_by_recent"/>
+	<menu_item_check label="Всегда сортировать папки по имени" name="sort_folders_by_name"/>
+	<menu_item_check label="Показывать системные папки вверху" name="sort_system_folders_to_top"/>
+	<menu_item_call label="Показать фильтры" name="show_filters"/>
+	<menu_item_call label="Сбросить фильтры" name="reset_filters"/>
+	<menu_item_call label="Закрыть все папки" name="close_folders"/>
+	<menu_item_call label="Очистить бюро находок" name="empty_lostnfound"/>
+	<menu_item_call label="Сохранить текстуру как" name="Save Texture As"/>
+	<menu_item_call label="Поделиться" name="Share"/>
+	<menu_item_call label="Найти оригинал" name="Find Original"/>
+	<menu_item_call label="Найти все ссылки" name="Find All Links"/>
+	<menu_item_call label="Очистить корзину" name="empty_trash"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_land.xml b/indra/newview/skins/default/xui/ru/menu_land.xml
new file mode 100644
index 0000000000000000000000000000000000000000..89889d7bf64676519fb5e80c6e3bda3296cdd3d0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_land.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Land Pie">
+	<menu_item_call label="О земле" name="Place Information..."/>
+	<menu_item_call label="Сесть здесь" name="Sit Here"/>
+	<menu_item_call label="Купить эту землю" name="Land Buy"/>
+	<menu_item_call label="Купить пропуск" name="Land Buy Pass"/>
+	<menu_item_call label="Строительство" name="Create"/>
+	<menu_item_call label="Изменить ландшафт" name="Edit Terrain"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_landmark.xml b/indra/newview/skins/default/xui/ru/menu_landmark.xml
new file mode 100644
index 0000000000000000000000000000000000000000..24b60f9d867af7c13adc34b11be89b12ab1b89f1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_landmark.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="landmark_overflow_menu">
+	<menu_item_call label="Копировать URL SL" name="copy"/>
+	<menu_item_call label="Удалить" name="delete"/>
+	<menu_item_call label="Создать подборку" name="pick"/>
+	<menu_item_call label="Добавить в любимые" name="add_to_favbar"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_login.xml b/indra/newview/skins/default/xui/ru/menu_login.xml
new file mode 100644
index 0000000000000000000000000000000000000000..aa3570f1765557afaf7fe9abd946a02da3cf1a42
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_login.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu_bar name="Login Menu">
+	<menu label="Я" name="File">
+		<menu_item_call label="Настройки..." name="Preferences..."/>
+		<menu_item_call label="Выход из [APP_NAME]" name="Quit"/>
+	</menu>
+	<menu label="Справка" name="Help">
+		<menu_item_call label="Справка [SECOND_LIFE]" name="Second Life Help"/>
+		<menu_item_call label="О [APP_NAME]" name="About Second Life"/>
+	</menu>
+	<menu_item_check label="Показать меню отладки" name="Show Debug Menu"/>
+	<menu label="Отладка" name="Debug">
+		<menu_item_call label="Настройки отладки" name="Debug Settings"/>
+		<menu_item_call label="Настройки интерфейса/цвета" name="UI/Color Settings"/>
+		<menu_item_call label="Просмотр XUI" name="UI Preview Tool"/>
+		<menu label="Тест UI" name="UI Tests"/>
+		<menu_item_call label="Задать размер окна..." name="Set Window Size..."/>
+		<menu_item_call label="Показать лицензионное соглашение" name="TOS"/>
+		<menu_item_call label="Показать сообщение об ошибке" name="Critical"/>
+		<menu_item_call label="Проверка медиабраузера" name="Web Browser Test"/>
+		<menu_item_call label="Тест отладки плавающего окна с веб-контентом" name="Web Content Floater Debug Test"/>
+		<menu_item_check label="Выбор сетки" name="Show Grid Picker"/>
+		<menu_item_call label="Консоль уведомлений" name="Show Notifications Console"/>
+	</menu>
+</menu_bar>
diff --git a/indra/newview/skins/default/xui/ru/menu_media_ctrl.xml b/indra/newview/skins/default/xui/ru/menu_media_ctrl.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d7485b02af77b796c1f36ecefbac7d35a9dd7c2a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_media_ctrl.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="media ctrl context menu">
+	<menu_item_call label="Вырезать" name="Cut"/>
+	<menu_item_call label="Копировать" name="Copy"/>
+	<menu_item_call label="Вставить" name="Paste"/>
+	<menu_item_call label="Открыть веб-инспектор" name="open_webinspector"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_mini_map.xml b/indra/newview/skins/default/xui/ru/menu_mini_map.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6b3db1160908c8c43a18d184600e7b7cdd63fa5b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_mini_map.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+	<menu_item_call label="Близко" name="Zoom Close"/>
+	<menu_item_call label="Средне" name="Zoom Medium"/>
+	<menu_item_call label="Далеко" name="Zoom Far"/>
+	<menu_item_call label="Сбросить увеличение" name="Zoom Default"/>
+	<menu_item_check label="Вращать карту" name="Rotate Map"/>
+	<menu_item_check label="Автоцентрирование" name="Auto Center"/>
+	<menu_item_call label="Остановить слежение" name="Stop Tracking"/>
+	<menu_item_call label="Карта мира" name="World Map"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_mode_change.xml b/indra/newview/skins/default/xui/ru/menu_mode_change.xml
new file mode 100644
index 0000000000000000000000000000000000000000..25d6e9af27f7b8c9cec9b3d4519e20f235b46a17
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_mode_change.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Mode Change">
+	<menu_item_check label="Основной" name="BasicMode"/>
+	<menu_item_check label="Расширенный" name="AdvancedMode"/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..5ae5e7dfbc7bdbc9b25dd1b21945b3db566f1254
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_model_import_gear_default.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="model_menu_gear_default">
+	<menu_item_check label="Показать грани" name="show_edges"/>
+	<menu_item_check label="Показать физику" name="show_physics"/>
+	<menu_item_check label="Показать текстуры" name="show_textures"/>
+	<menu_item_check label="Показать вес кожи" name="show_skin_weight"/>
+	<menu_item_check label="Показать положение сочленений" name="show_joint_positions"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_navbar.xml b/indra/newview/skins/default/xui/ru/menu_navbar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2dd0c0df36564218759a500a9f7146fb1cc1939e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_navbar.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Navbar Menu">
+	<menu_item_check label="Показать координаты" name="Show Coordinates"/>
+	<menu_item_check label="Показать свойства участка" name="Show Parcel Properties"/>
+	<menu_item_call label="Закладка" name="Landmark"/>
+	<menu_item_call label="Вырезать" name="Cut"/>
+	<menu_item_call label="Копировать" name="Copy"/>
+	<menu_item_call label="Вставить" name="Paste"/>
+	<menu_item_call label="Удалить" name="Delete"/>
+	<menu_item_call label="Выделить все" name="Select All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_nearby_chat.xml b/indra/newview/skins/default/xui/ru/menu_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4b5346d08337379ccbc2f6e4e7223d8ce1a498b7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_nearby_chat.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="NearBy Chat Menu">
+	<menu_item_call label="Показать находящихся неподалеку людей..." name="nearby_people"/>
+	<menu_item_check label="Показать блокируемый текст" name="muted_text"/>
+	<menu_item_check label="Показать значки друзей" name="show_buddy_icons"/>
+	<menu_item_check label="Показать имена" name="show_names"/>
+	<menu_item_check label="Показать значки и имена" name="show_icons_and_names"/>
+	<menu_item_call label="Размер шрифта" name="font_size"/>
+</menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..4d067e232a95309abb5ceebe14dbfeef6476a603
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_notification_well_button.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Notification Well Button Context Menu">
+	<menu_item_call label="Закрыть все" name="Close All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_object.xml b/indra/newview/skins/default/xui/ru/menu_object.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d6abfd12a2dcf27478eb437b0470e6a477a19688
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_object.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Object Pie">
+	<menu_item_call label="Коснуться" name="Object Touch"/>
+	<menu_item_call label="Изменить" name="Edit..."/>
+	<menu_item_call label="Строительство" name="Build"/>
+	<menu_item_call label="Открыто" name="Open"/>
+	<menu_item_call label="Сесть здесь" name="Object Sit"/>
+	<menu_item_call label="Встать" name="Object Stand Up"/>
+	<menu_item_call label="Профиль объекта" name="Object Inspect"/>
+	<menu_item_call label="Приблизить" name="Zoom In"/>
+	<context_menu label="Надеть" name="Put On">
+		<menu_item_call label="Надеть" name="Wear"/>
+		<menu_item_call label="Добавить" name="Add"/>
+		<context_menu label="Присоединить" name="Object Attach"/>
+		<context_menu label="Присоединить HUD" name="Object Attach HUD"/>
+	</context_menu>
+	<context_menu label="Управление" name="Remove">
+		<menu_item_call label="Жалоба" name="Report Abuse..."/>
+		<menu_item_call label="Заблокировать" name="Object Mute"/>
+		<menu_item_call label="Возврат" name="Return..."/>
+	</context_menu>
+	<menu_item_call label="Взять" name="Pie Object Take"/>
+	<menu_item_call label="Взять копию" name="Take Copy"/>
+	<menu_item_call label="Заплатить" name="Pay..."/>
+	<menu_item_call label="Купить" name="Buy..."/>
+	<menu_item_call label="Удалить" name="Delete"/>
+</context_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
new file mode 100644
index 0000000000000000000000000000000000000000..6229b2e72fe59af4b5e378b72a761ae217b5b3b6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_object_icon.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Object Icon Menu">
+	<menu_item_call label="Профиль объекта..." name="Object Profile"/>
+	<menu_item_call label="Блокировать..." name="Block"/>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..93dbd7d6a7a68bb33224d026e425b7e295c7fa3e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_outfit_gear.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Gear Outfit">
+	<menu_item_call label="Надеть – Заменить текущий костюм" name="wear"/>
+	<menu_item_call label="Надеть – Добавить к текущему костюму" name="wear_add"/>
+	<menu_item_call label="Снять – Убрать из текущего костюма" name="take_off"/>
+	<menu label="Новая одежда" name="New Clothes">
+		<menu_item_call label="Новая рубашка" name="New Shirt"/>
+		<menu_item_call label="Новые брюки" name="New Pants"/>
+		<menu_item_call label="Новая обувь" name="New Shoes"/>
+		<menu_item_call label="Новые носки" name="New Socks"/>
+		<menu_item_call label="Новый пиджак" name="New Jacket"/>
+		<menu_item_call label="Новая юбка" name="New Skirt"/>
+		<menu_item_call label="Новые перчатки" name="New Gloves"/>
+		<menu_item_call label="Новая майка" name="New Undershirt"/>
+		<menu_item_call label="Новые трусы" name="New Underpants"/>
+		<menu_item_call label="Новая альфа-маска" name="New Alpha"/>
+		<menu_item_call label="Новая физика" name="New Physics"/>
+		<menu_item_call label="Новое тату" name="New Tattoo"/>
+	</menu>
+	<menu label="Новые части тела" name="New Body Parts">
+		<menu_item_call label="Новая фигура" name="New Shape"/>
+		<menu_item_call label="Новая кожа" name="New Skin"/>
+		<menu_item_call label="Новые волосы" name="New Hair"/>
+		<menu_item_call label="Новые глаза" name="New Eyes"/>
+	</menu>
+	<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_outfit_tab.xml b/indra/newview/skins/default/xui/ru/menu_outfit_tab.xml
new file mode 100644
index 0000000000000000000000000000000000000000..46404195b9bfa533f1e170f4c21a7a016248b960
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_outfit_tab.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Outfit">
+	<menu_item_call label="Надеть – Заменить текущий костюм" name="wear_replace"/>
+	<menu_item_call label="Надеть – Добавить к текущему костюму" name="wear_add"/>
+	<menu_item_call label="Снять – Убрать из текущего костюма" name="take_off"/>
+	<menu_item_call label="Изменить костюм" name="edit"/>
+	<menu_item_call label="Переименовать костюм" name="rename"/>
+	<menu_item_call label="Удалить костюм" name="delete"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_participant_list.xml b/indra/newview/skins/default/xui/ru/menu_participant_list.xml
new file mode 100644
index 0000000000000000000000000000000000000000..932ad5bacf065b97b0a0b019a0c3b085200bb4f1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_participant_list.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Participant List Context Menu">
+	<menu_item_check label="Сортировать по имени" name="SortByName"/>
+	<menu_item_check label="Сортировать по недавно говорившим" name="SortByRecentSpeakers"/>
+	<menu_item_call label="Открыть профиль" name="View Profile"/>
+	<menu_item_call label="Добавить в друзья" name="Add 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_check label="Показывать значки участников" name="View Icons"/>
+	<menu_item_check label="Блокировать голос" name="Block/Unblock"/>
+	<menu_item_check label="Блокировать текст" name="MuteText"/>
+	<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>
+</context_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..0fa252aa99d59f3f5eae2321b3df13127d2359c6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_friends_view_sort.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_call label="Показать черный список" name="show_blocked_list"/>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..e734a83ef08e1c1f9fc2088001cd4861b6c4b029
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_groups.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<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="Activate"/>
+	<menu_item_call label="Покинуть" name="Leave"/>
+</menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..0358068db971defb6b4abada81ebfc142a67f6bf
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_groups_view_sort.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_group_plus">
+	<menu_item_check label="Показывать значки группы" name="Display Group Icons"/>
+	<menu_item_call label="Покинуть выбранную группу" name="Leave Selected Group"/>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..ebce959044da2e73e079a3c102876c144f9ddf94
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_nearby.xml
@@ -0,0 +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="В друзья" 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
new file mode 100644
index 0000000000000000000000000000000000000000..0e8e0d4053764f7040c0f1287c70ff26fa4a1384
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_nearby_multiselect.xml
@@ -0,0 +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"/>
+</context_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..4589815f6b70f0eb7588a3a87e90da92ebfec496
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_nearby_view_sort.xml
@@ -0,0 +1,9 @@
+<?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"/>
+	<menu_item_call label="Показать черный список жителей и объектов" name="show_blocked_list"/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..2ac83ffe52b59ca5364e565d3d420fb643d5898d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_people_recent_view_sort.xml
@@ -0,0 +1,7 @@
+<?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"/>
+	<menu_item_call label="Показать черный список" name="show_blocked_list"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_picks.xml b/indra/newview/skins/default/xui/ru/menu_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..839c7411a6f82c3e4cc92726fe483503fbb694b2
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_picks.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Picks">
+	<menu_item_call label="Данные" name="pick_info"/>
+	<menu_item_call label="Изменить" name="pick_edit"/>
+	<menu_item_call label="Телепорт" name="pick_teleport"/>
+	<menu_item_call label="Карта" name="pick_map"/>
+	<menu_item_call label="Удалить" name="pick_delete"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_picks_plus.xml b/indra/newview/skins/default/xui/ru/menu_picks_plus.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1bc407817993e4e03205be58b0fbeeb14b0018af
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_picks_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="picks_plus_menu">
+	<menu_item_call label="Новая подборка" name="create_pick"/>
+	<menu_item_call label="Новая реклама" name="create_classified"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_place.xml b/indra/newview/skins/default/xui/ru/menu_place.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ee8878c1312ec171ab093cfa395c1a884590c86e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_place.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="place_overflow_menu">
+	<menu_item_call label="Поставить закладку" name="landmark"/>
+	<menu_item_call label="Создать подборку" name="pick"/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..b1a38fb9eb50807a9909280feb01985f7ad07d4d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_place_add_button.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_folder_gear">
+	<menu_item_call label="Добавить папку" name="add_folder"/>
+	<menu_item_call label="Добавить закладку" name="add_landmark"/>
+</menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..25df8c5d1949273236a30633582c3e3e24e82edb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_places_gear_folder.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_folder_gear">
+	<menu_item_call label="Добавить закладку" name="add_landmark"/>
+	<menu_item_call label="Добавить папку" name="add_folder"/>
+	<menu_item_call label="Восстановить предмет" name="restore_item"/>
+	<menu_item_call label="Вырезать" name="cut"/>
+	<menu_item_call label="Копировать" name="copy_folder"/>
+	<menu_item_call label="Вставить" name="paste"/>
+	<menu_item_call label="Переименовать" name="rename"/>
+	<menu_item_call label="Удалить" name="delete"/>
+	<menu_item_call label="Открыть" name="expand"/>
+	<menu_item_call label="Закрыть" name="collapse"/>
+	<menu_item_call label="Открыть все папки" name="expand_all"/>
+	<menu_item_call label="Закрыть все папки" name="collapse_all"/>
+	<menu_item_check label="Сортировать по дате" name="sort_by_date"/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..b1ebd4af83dcf1a82c219cf666bb16e6cc31a5c9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_places_gear_landmark.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_ladmark_gear">
+	<menu_item_call label="Телепорт" name="teleport"/>
+	<menu_item_call label="Подробнее" name="more_info"/>
+	<menu_item_call label="Показать на карте" name="show_on_map"/>
+	<menu_item_call label="Добавить закладку" name="add_landmark"/>
+	<menu_item_call label="Добавить папку" name="add_folder"/>
+	<menu_item_call label="Восстановить вещь" name="restore_item"/>
+	<menu_item_call label="Вырезать" name="cut"/>
+	<menu_item_call label="Копировать закладку" name="copy_landmark"/>
+	<menu_item_call label="Копировать URL SL" name="copy_slurl"/>
+	<menu_item_call label="Вставить" name="paste"/>
+	<menu_item_call label="Переименовать" name="rename"/>
+	<menu_item_call label="Удалить" name="delete"/>
+	<menu_item_call label="Развернуть все папки" name="expand_all"/>
+	<menu_item_call label="Свернуть все папки" name="collapse_all"/>
+	<menu_item_check label="Сортировать по дате" name="sort_by_date"/>
+	<menu_item_call label="Создать подборку" name="create_pick"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml b/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1865fead7bc32dd56fc0881a37024b98a889938b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_profile_overflow.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="profile_overflow_menu">
+	<menu_item_call label="Карта" name="show_on_map"/>
+	<menu_item_call label="Заплатить" name="pay"/>
+	<menu_item_call label="Поделиться" name="share"/>
+	<menu_item_call label="Заблокировать" name="block"/>
+	<menu_item_call label="Разблокировать" name="unblock"/>
+	<menu_item_call label="Выкинуть" name="kick"/>
+	<menu_item_call label="Заморозить" name="freeze"/>
+	<menu_item_call label="Разморозить" name="unfreeze"/>
+	<menu_item_call label="CSR" name="csr"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_save_outfit.xml b/indra/newview/skins/default/xui/ru/menu_save_outfit.xml
new file mode 100644
index 0000000000000000000000000000000000000000..88947e1433710653a2326cd6a4d344b028302557
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_save_outfit.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="save_outfit_menu">
+	<menu_item_call label="Сохранить" name="save_outfit"/>
+	<menu_item_call label="Сохранить как" name="save_as_new_outfit"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_script_chiclet.xml b/indra/newview/skins/default/xui/ru/menu_script_chiclet.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6cacff387099d94c6ee5c4480b825087a99025af
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_script_chiclet.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="ScriptChiclet Menu">
+	<menu_item_call label="Закрыть" name="Close"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_slurl.xml b/indra/newview/skins/default/xui/ru/menu_slurl.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f02549055c412d367185a7ebacb61e6010bd3ceb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_slurl.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+	<menu_item_call label="О ссылке" name="about_url"/>
+	<menu_item_call label="Телепортироваться по ссылке" name="teleport_to_url"/>
+	<menu_item_call label="Карта" name="show_on_map"/>
+</menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..332f2784b94796928c7b2db67a01f8c25378f124
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_teleport_history_gear.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Teleport History Gear Context Menu">
+	<menu_item_call label="Открыть все папки" name="Expand all folders"/>
+	<menu_item_call label="Закрыть все папки" name="Collapse all folders"/>
+	<menu_item_call label="Очистить историю телепортаций" name="Clear Teleport History"/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..6a22fd00dc0eb45c4cd6a2ac456ff06e2bbfcbb6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_teleport_history_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Teleport History Item Context Menu">
+	<menu_item_call label="Телепорт" name="Teleport"/>
+	<menu_item_call label="Информация" name="More Information"/>
+	<menu_item_call label="Копировать в буфер обмена" name="CopyToClipboard"/>
+</context_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..9b2434a31033c93fe9b28ccd32227cae5a637c6a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_teleport_history_tab.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Teleport History Item Context Menu">
+	<menu_item_call label="Открыть" name="TabOpen"/>
+	<menu_item_call label="Закрыть" name="TabClose"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_text_editor.xml b/indra/newview/skins/default/xui/ru/menu_text_editor.xml
new file mode 100644
index 0000000000000000000000000000000000000000..113dd85318ea915909cb8218295e590089cf118b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_text_editor.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Text editor context menu">
+	<menu_item_call label="Вырезать" name="Cut"/>
+	<menu_item_call label="Копировать" name="Copy"/>
+	<menu_item_call label="Вставить" name="Paste"/>
+	<menu_item_call label="Удалить" name="Delete"/>
+	<menu_item_call label="Выделить все" name="Select All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_toolbars.xml b/indra/newview/skins/default/xui/ru/menu_toolbars.xml
new file mode 100644
index 0000000000000000000000000000000000000000..aa05dbc390e87e53af646aa739d4b0cbd5270ee5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_toolbars.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+	<menu_item_call label="Удалить эту кнопку" name="Remove button"/>
+	<menu_item_call label="Кнопки панели инструментов..." name="Choose Buttons"/>
+	<menu_item_check label="Значки и подписи" name="icons_with_text"/>
+	<menu_item_check label="Только значки" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_topinfobar.xml b/indra/newview/skins/default/xui/ru/menu_topinfobar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..76cadbe5a4a59d13de723c2a20bd517277b8ddca
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_topinfobar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_topinfobar">
+	<menu_item_check label="Показать координаты" name="Show Coordinates"/>
+	<menu_item_check label="Показать свойства участка" name="Show Parcel Properties"/>
+	<menu_item_call label="Закладка" name="Landmark"/>
+	<menu_item_call label="Копировать" name="Copy"/>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..0ba3ee152a5c2dcf4508e712395b1f28c57d3587
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_url_agent.xml
@@ -0,0 +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="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_group.xml b/indra/newview/skins/default/xui/ru/menu_url_group.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f25e2a7eb8d134598076ce30e0cd847b57f8f69a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_url_group.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Показать информацию группы" name="show_group"/>
+	<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_http.xml b/indra/newview/skins/default/xui/ru/menu_url_http.xml
new file mode 100644
index 0000000000000000000000000000000000000000..781211b16fbc2b038fd12e703fcb527a392fc4d7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_url_http.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Открыть веб-страницу" name="url_open"/>
+	<menu_item_call label="Открыть во внутреннем браузере" name="url_open_internal"/>
+	<menu_item_call label="Открыть во внешнем браузере" name="url_open_external"/>
+	<menu_item_call label="Копировать URL-адрес в буфер обмена" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_inventory.xml b/indra/newview/skins/default/xui/ru/menu_url_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6127bf9868a652ee2045ee99437618978c8dd4b0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_url_inventory.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Показать вещь из инвентаря" name="show_item"/>
+	<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_map.xml b/indra/newview/skins/default/xui/ru/menu_url_map.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bbf64f20e95d79a8b8665ff20e54efc145189e6c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_url_map.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Показать на карте" name="show_on_map"/>
+	<menu_item_call label="Телепорт в местоположение" name="teleport_to_location"/>
+	<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
new file mode 100644
index 0000000000000000000000000000000000000000..6e7800d3f5d22d2b70e8b255b534e9256bdeb119
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_url_objectim.xml
@@ -0,0 +1,8 @@
+<?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_on_map"/>
+	<menu_item_call label="Телепорт в местоположение объекта" name="teleport_to_object"/>
+	<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_parcel.xml b/indra/newview/skins/default/xui/ru/menu_url_parcel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..84a679703a7f3ab45bb4f22fddbc5e0b23372b9c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_url_parcel.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Показать информацию об участке" name="show_parcel"/>
+	<menu_item_call label="Показать на карте" name="show_on_map"/>
+	<menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_slapp.xml b/indra/newview/skins/default/xui/ru/menu_url_slapp.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3d582ea2c50d3af644dd298c0062f50ea55c52bb
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_url_slapp.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Выполнить команду" name="run_slapp"/>
+	<menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_slurl.xml b/indra/newview/skins/default/xui/ru/menu_url_slurl.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cbceafea21b37225e8a8a89f5c5454dee0df2d63
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_url_slurl.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Показать информацию о месте" name="show_place"/>
+	<menu_item_call label="Показать на карте" name="show_on_map"/>
+	<menu_item_call label="Телепорт в местоположение" name="teleport_to_location"/>
+	<menu_item_call label="Копировать URL-адрес SL в буфер обмена" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_url_teleport.xml b/indra/newview/skins/default/xui/ru/menu_url_teleport.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2ecde09383c4d556e7ffb901394100baf180f6be
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_url_teleport.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Телепортация в это место" name="teleport"/>
+	<menu_item_call label="Показать на карте" name="show_on_map"/>
+	<menu_item_call label="Копировать URL-адрес SL в буфер" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_viewer.xml b/indra/newview/skins/default/xui/ru/menu_viewer.xml
new file mode 100644
index 0000000000000000000000000000000000000000..93d0166568d667187c1e24631e922dd12ee8d01d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_viewer.xml
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu_bar name="Main Menu">
+	<menu label="Я" name="Me">
+		<menu_item_call label="Профиль…" name="Profile"/>
+		<menu_item_call label="Внешность..." name="ChangeOutfit"/>
+		<menu_item_call label="Выберите аватар..." name="Avatar Picker"/>
+		<menu_item_check label="Инвентарь..." name="Inventory"/>
+		<menu_item_call label="Новое окно инвентаря" name="NewInventoryWindow"/>
+		<menu_item_call label="Места..." name="Places"/>
+		<menu_item_call label="Подборка..." name="Picks"/>
+		<menu_item_call label="Управление камерой..." name="Camera Controls"/>
+		<menu label="Движение" name="Movement">
+			<menu_item_call label="Сесть" name="Sit Down Here"/>
+			<menu_item_check label="Полет" name="Fly"/>
+			<menu_item_check label="Всегда бегать" name="Always Run"/>
+			<menu_item_call label="Остановить анимацию" name="Stop Animating My Avatar"/>
+		</menu>
+		<menu label="Статус" name="Status">
+			<menu_item_call label="Нет на месте" name="Set Away"/>
+			<menu_item_call label="Не беспокоить" name="Set Busy"/>
+		</menu>
+		<menu_item_call label="Запрос статуса администратора" name="Request Admin Options"/>
+		<menu_item_call label="Выход из статуса администратора" name="Leave Admin Options"/>
+		<menu_item_call label="Купить L$" name="Buy and Sell L$"/>
+		<menu_item_call label="Информационная панель аккаунта..." name="Manage My Account"/>
+		<menu_item_call label="Настройки..." name="Preferences"/>
+		<menu_item_call label="Кнопки панели инструментов..." name="Toolbars"/>
+		<menu_item_call label="Скрыть все элементы управления" name="Hide UI"/>
+		<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="Speak"/>
+		<menu_item_check label="Настройки голоса..." name="Nearby Voice"/>
+		<menu_item_check label="Изменение голоса..." name="ShowVoice"/>
+		<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>
+	<menu label="Мир" name="World">
+		<menu_item_call label="Добавить закладку на это место" name="Create Landmark Here"/>
+		<menu_item_call label="Пункты..." name="Destinations"/>
+		<menu_item_check label="Карта мира" name="World Map"/>
+		<menu_item_check label="Миникарта" name="Mini-Map"/>
+		<menu_item_check label="Поиск" name="Search"/>
+		<menu_item_call label="Телепортация домой" name="Teleport Home"/>
+		<menu_item_call label="Установить дом здесь" name="Set Home to Here"/>
+		<menu_item_call label="Снимок" name="Take Snapshot"/>
+		<menu_item_call label="Профиль места" name="Place Profile"/>
+		<menu_item_call label="О земле" name="About Land"/>
+		<menu_item_call label="Регион/землевладение" name="Region/Estate"/>
+		<menu_item_call label="Мои владения..." name="My Land"/>
+		<menu_item_call label="Купить эту землю" name="Buy Land"/>
+		<menu label="Показать" name="LandShow">
+			<menu_item_check label="Линии запрета" name="Ban Lines"/>
+			<menu_item_check label="Метки" name="beacons"/>
+			<menu_item_check label="Границы собственности" name="Property Lines"/>
+			<menu_item_check label="Владельцы земли" name="Land Owners"/>
+			<menu_item_check label="Координаты" name="Coordinates"/>
+			<menu_item_check label="Свойства участка" name="Parcel Properties"/>
+			<menu_item_check label="Меню «Дополнительно»" name="Show Advanced Menu"/>
+		</menu>
+		<menu label="Солнце" name="Environment Settings">
+			<menu_item_call label="Восход" name="Sunrise"/>
+			<menu_item_call label="Полдень" name="Noon"/>
+			<menu_item_call label="Закат" name="Sunset"/>
+			<menu_item_call label="Полночь" name="Midnight"/>
+			<menu_item_call label="Использовать настройки региона" name="Use Region Settings"/>
+		</menu>
+		<menu label="Редактор среды" name="Environment Editor">
+			<menu_item_call label="Настройки среды..." name="Environment Settings"/>
+			<menu label="Настройки воды" name="Water Presets">
+				<menu_item_call label="Создать настройку..." name="new_water_preset"/>
+				<menu_item_call label="Изменить настройку..." name="edit_water_preset"/>
+				<menu_item_call label="Удалить настройку..." name="delete_water_preset"/>
+			</menu>
+			<menu label="Настройки неба" name="Sky Presets">
+				<menu_item_call label="Создать настройку..." name="new_sky_preset"/>
+				<menu_item_call label="Изменить настройку..." name="edit_sky_preset"/>
+				<menu_item_call label="Удалить настройку..." name="delete_sky_preset"/>
+			</menu>
+			<menu label="Суточные настройки" name="Day Presets">
+				<menu_item_call label="Создать настройку..." name="new_day_preset"/>
+				<menu_item_call label="Изменить настройку..." name="edit_day_preset"/>
+				<menu_item_call label="Удалить настройку..." name="delete_day_preset"/>
+			</menu>
+		</menu>
+	</menu>
+	<menu label="Строительство" name="BuildTools">
+		<menu_item_check label="Строительство" name="Show Build Tools"/>
+		<menu label="Выбрать инструменты" name="Select Tool">
+			<menu_item_call label="Фокус" name="Focus"/>
+			<menu_item_call label="Перемещение" name="Move"/>
+			<menu_item_call label="Редактирование" name="Edit"/>
+			<menu_item_call label="Создание" name="Create"/>
+			<menu_item_call label="Земля" name="Land"/>
+		</menu>
+		<menu_item_call label="Объединить" name="Link"/>
+		<menu_item_call label="Разъединить" name="Unlink"/>
+		<menu_item_check label="Редактировать объединенные части" name="Edit Linked Parts"/>
+		<menu label="Выбрать объединенные части" name="Select Linked Parts">
+			<menu_item_call label="Выбрать следующую" name="Select Next Part"/>
+			<menu_item_call label="Выбрать предыдущую" name="Select Previous Part"/>
+			<menu_item_call label="Включить следующую" name="Include Next Part"/>
+			<menu_item_call label="Включить предыдущую" name="Include Previous Part"/>
+		</menu>
+		<menu_item_call label="Фокус на выбранном" name="Focus on Selection"/>
+		<menu_item_call label="Приблизить к выбранному" name="Zoom to Selection"/>
+		<menu label="Объект" name="Object">
+			<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>
+		<menu label="Скрипты" name="Scripts">
+			<menu_item_call label="Перекомпилировать скрипты (Mono)" name="Mono"/>
+			<menu_item_call label="Перекомпилировать скрипты (LSL)" name="LSL"/>
+			<menu_item_call label="Сброс скриптов" name="Reset Scripts"/>
+			<menu_item_call label="Запустить скрипты" name="Set Scripts to Running"/>
+			<menu_item_call label="Остановить скрипты" name="Set Scripts to Not Running"/>
+		</menu>
+		<menu label="Параметры" name="Options">
+			<menu_item_check label="Показать расширенные разрешения" name="DebugPermissions"/>
+			<menu_item_check label="Выбирать только мои объекты" name="Select Only My Objects"/>
+			<menu_item_check label="Выбирать только перемещаемые объекты" name="Select Only Movable Objects"/>
+			<menu_item_check label="Выбор близлежащих" name="Select By Surrounding"/>
+			<menu_item_check label="Выделять контуры выбранного" name="Show Selection Outlines"/>
+			<menu_item_check label="Показывать скрытые выбранные объекты" name="Show Hidden Selection"/>
+			<menu_item_check label="Показать радиус освещения для выбранных" name="Show Light Radius for Selection"/>
+			<menu_item_check label="Показать луч выбора" name="Show Selection Beam"/>
+			<menu_item_check label="Привязка к сетке" name="Snap to Grid"/>
+			<menu_item_call label="Сдвиг к ближайшему узлу XY сетки" name="Snap Object XY to Grid"/>
+			<menu_item_call label="Использовать выбранное для сетки" name="Use Selection for Grid"/>
+			<menu_item_call label="Параметры сетки" name="Grid Options"/>
+		</menu>
+		<menu label="Передача" name="Upload">
+			<menu_item_call label="Изображение (L$[COST])..." name="Upload Image"/>
+			<menu_item_call label="Звук (L$[COST])..." name="Upload Sound"/>
+			<menu_item_call label="Анимация (L$[COST])..." name="Upload Animation"/>
+			<menu_item_call label="Модель..." name="Upload Model"/>
+			<menu_item_call label="Все сразу (L$[COST] за файл)..." name="Bulk Upload"/>
+			<menu_item_call label="Установить разрешения на передачу по умолчанию" name="perm prefs"/>
+		</menu>
+		<menu_item_call label="Отменить" name="Undo"/>
+		<menu_item_call label="Вернуть" name="Redo"/>
+	</menu>
+	<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="Report Abuse"/>
+		<menu_item_call label="Сообщить об ошибке" name="Report Bug"/>
+		<menu_item_call label="О [APP_NAME]" name="About Second Life"/>
+	</menu>
+	<menu label="Дополнительно" name="Advanced">
+		<menu_item_call label="Обновить текстуры" name="Rebake Texture"/>
+		<menu_item_call label="Сбросить размер интерфейса" name="Set UI Size to Default"/>
+		<menu_item_call label="Задать размер окна..." name="Set Window Size..."/>
+		<menu_item_check label="Ограничение расстояния выбора" name="Limit Select Distance"/>
+		<menu_item_check label="Отключить ограничение камеры" name="Disable Camera Distance"/>
+		<menu_item_check label="Снимок высокого разрешения" name="HighResSnapshot"/>
+		<menu_item_check label="Тихое создание снимка" name="QuietSnapshotsToDisk"/>
+		<menu label="Производительность" name="Performance Tools">
+			<menu_item_call label="Запаздывание" name="Lag Meter"/>
+			<menu_item_check label="Статистика" name="Statistics Bar"/>
+			<menu_item_check label="Показать вес отрисовки для аватаров" name="Avatar Rendering Cost"/>
+		</menu>
+		<menu label="Подсветка и видимость" name="Highlighting and Visibility">
+			<menu_item_check label="Мигающий маяк" name="Cheesy Beacon"/>
+			<menu_item_check label="Скрыть частицы" name="Hide Particles"/>
+			<menu_item_check label="Скрыть выбранное" name="Hide Selected"/>
+			<menu_item_check label="Подсветка прозрачного" name="Highlight Transparent"/>
+			<menu_item_check label="Показывать присоединения HUD" name="Show HUD Attachments"/>
+			<menu_item_check label="Показывать прицел при обзоре мышью" name="ShowCrosshairs"/>
+		</menu>
+		<menu label="Типы визуализации" name="Rendering Types">
+			<menu_item_check label="Обычная" name="Simple"/>
+			<menu_item_check label="Альфа" name="Alpha"/>
+			<menu_item_check label="Дерево" name="Tree"/>
+			<menu_item_check label="Аватары" name="Character"/>
+			<menu_item_check label="Исправление поверхности" name="Surface Patch"/>
+			<menu_item_check label="Небо" name="Sky"/>
+			<menu_item_check label="Вода" name="Water"/>
+			<menu_item_check label="Земля" name="Ground"/>
+			<menu_item_check label="Объем" name="Volume"/>
+			<menu_item_check label="Трава" name="Grass"/>
+			<menu_item_check label="Облака" name="Clouds"/>
+			<menu_item_check label="Частицы" name="Particles"/>
+			<menu_item_check label="Рельефное" name="Bump"/>
+		</menu>
+		<menu label="Функции визуализации" name="Rendering Features">
+			<menu_item_check label="Интерфейс пользователя" name="UI"/>
+			<menu_item_check label="Выбрано" name="Selected"/>
+			<menu_item_check label="Выделено" name="Highlighted"/>
+			<menu_item_check label="Динамические текстуры" name="Dynamic Textures"/>
+			<menu_item_check label="Тени от ног" name="Foot Shadows"/>
+			<menu_item_check label="Туман" name="Fog"/>
+			<menu_item_check label="Проверить данные FR" name="Test FRInfo"/>
+			<menu_item_check label="Гибкие объекты" name="Flexible Objects"/>
+		</menu>
+		<menu_item_check label="Использовать поток для чтения подключаемых модулей" name="Use Plugin Read Thread"/>
+		<menu_item_call label="Очистить кэш группы" name="ClearGroupCache"/>
+		<menu_item_check label="Сглаживание мышью" name="Mouse Smoothing"/>
+		<menu_item_call label="Освободить клавиши" name="Release Keys"/>
+		<menu label="Горячие клавиши" name="Shortcuts">
+			<menu_item_call label="Изображение (L$[COST])..." name="Upload Image"/>
+			<menu_item_check label="Поиск" name="Search"/>
+			<menu_item_check label="Показать меню «Дополнительно» - старое сочетание клавиш" name="Show Advanced Menu - legacy shortcut"/>
+			<menu_item_call label="Закрыть окно" name="Close Window"/>
+			<menu_item_call label="Закрыть все окна" name="Close All Windows"/>
+			<menu_item_call label="Сохранить снимок на диске" name="Snapshot to Disk"/>
+			<menu_item_call label="Обзор мышью" name="Mouselook"/>
+			<menu_item_check label="Обзор джойстиком" name="Joystick Flycam"/>
+			<menu_item_call label="Сброс обзора" name="Reset View"/>
+			<menu_item_call label="Смотреть на последнего говорившего" name="Look at Last Chatter"/>
+			<menu label="Выбрать инструменты" name="Select Tool">
+				<menu_item_call label="Фокус" name="Focus"/>
+				<menu_item_call label="Перемещение" name="Move"/>
+				<menu_item_call label="Редактирование" name="Edit"/>
+				<menu_item_call label="Создание" name="Create"/>
+				<menu_item_call label="Земля" name="Land"/>
+			</menu>
+			<menu_item_call label="Приблизить" name="Zoom In"/>
+			<menu_item_call label="Стандартный масштаб" name="Zoom Default"/>
+			<menu_item_call label="Отодвинуть" name="Zoom Out"/>
+		</menu>
+		<menu_item_call label="Отладочные настройки" name="Debug Settings"/>
+		<menu_item_check label="Показать меню разработчика" name="Debug Mode"/>
+	</menu>
+	<menu label="Разработка" name="Develop">
+		<menu label="Консоли" name="Consoles">
+			<menu_item_check label="Консоль текстур" name="Texture Console"/>
+			<menu_item_check label="Консоль отладки" name="Debug Console"/>
+			<menu_item_call label="Консоль уведомлений" name="Notifications"/>
+			<menu_item_check label="Консоль размера текстуры" name="Texture Size"/>
+			<menu_item_check label="Консоль категории текстуры" name="Texture Category"/>
+			<menu_item_check label="Оперативные таймеры" name="Fast Timers"/>
+			<menu_item_check label="Память" name="Memory"/>
+			<menu_item_check label="Статистика по сцене" name="Scene Statistics"/>
+			<menu_item_call label="Данные о регионе на консоль отладки" name="Region Info to Debug Console"/>
+			<menu_item_call label="Данны о группе на консоль отладки" name="Group Info to Debug Console"/>
+			<menu_item_call label="Данные о способностях на консоль отладки" name="Capabilities Info to Debug Console"/>
+			<menu_item_check label="Камера" name="Camera"/>
+			<menu_item_check label="Ветер" name="Wind"/>
+			<menu_item_check label="Угол обзора" name="FOV"/>
+			<menu_item_check label="Значок" name="Badge"/>
+		</menu>
+		<menu label="Показать данные" name="Display Info">
+			<menu_item_check label="Показать время" name="Show Time"/>
+			<menu_item_check label="Показывать цену передачи" name="Show Upload Cost"/>
+			<menu_item_check label="Показать данные по отрисовке" name="Show Render Info"/>
+			<menu_item_check label="Показать данные о текстурах" name="Show Texture Info"/>
+			<menu_item_check label="Показать матрицы" name="Show Matrices"/>
+			<menu_item_check label="Показать цвет под курсором" name="Show Color Under Cursor"/>
+			<menu_item_check label="Показать память" name="Show Memory"/>
+			<menu_item_check label="Показать закрытые данные о памяти" name="Show Private Mem Info"/>
+			<menu_item_check label="Показать изменения объектов" name="Show Updates"/>
+		</menu>
+		<menu label="Принудительно вызвать ошибку" name="Force Errors">
+			<menu_item_call label="Принудительно перейти в точку останова" name="Force Breakpoint"/>
+			<menu_item_call label="Принудительно вызвать ошибку LL и сбой" name="Force LLError And Crash"/>
+			<menu_item_call label="Принудительный неправильный доступ к памяти" name="Force Bad Memory Access"/>
+			<menu_item_call label="Принудительное зацикливание" name="Force Infinite Loop"/>
+			<menu_item_call label="Принудительный сбой драйвера" name="Force Driver Carsh"/>
+			<menu_item_call label="Принудительное исключение" name="Force Software Exception"/>
+			<menu_item_call label="Принудительно отключить клиент" name="Force Disconnect Viewer"/>
+			<menu_item_call label="Имитировать утечку памяти" name="Memory Leaking Simulation"/>
+		</menu>
+		<menu label="Тесты визуализации" name="Render Tests">
+			<menu_item_check label="Сдвиг камеры" name="Camera Offset"/>
+			<menu_item_check label="Случайная частота кадров" name="Randomize Framerate"/>
+			<menu_item_check label="Периодическое замедление кадров" name="Periodic Slow Frame"/>
+			<menu_item_check label="Тест кадров" name="Frame Test"/>
+		</menu>
+		<menu label="Визуализировать метаданные" name="Render Metadata">
+			<menu_item_check label="Рамки" name="Bounding Boxes"/>
+			<menu_item_check label="Нормали" name="Normals"/>
+			<menu_item_check label="Октадерево" name="Octree"/>
+			<menu_item_check label="Тень от усеченной пирамиды" name="Shadow Frusta"/>
+			<menu_item_check label="Физические формы" name="Physics Shapes"/>
+			<menu_item_check label="Смыкание" name="Occlusion"/>
+			<menu_item_check label="Визуализация порциями" name="Render Batches"/>
+			<menu_item_check label="Тип обновления" name="Update Type"/>
+			<menu_item_check label="Анимация текстуры" name="Texture Anim"/>
+			<menu_item_check label="Приоритет текстуры" name="Texture Priority"/>
+			<menu_item_check label="Площадь текстуры" name="Texture Area"/>
+			<menu_item_check label="Площадь грани" name="Face Area"/>
+			<menu_item_check label="Данные об уровнях детализации" name="LOD Info"/>
+			<menu_item_check label="Очередь построителя" name="Build Queue"/>
+			<menu_item_check label="Освещение" name="Lights"/>
+			<menu_item_check label="Каркас столкновений" name="Collision Skeleton"/>
+			<menu_item_check label="Лучи" name="Raycast"/>
+			<menu_item_check label="Направления ветра" name="Wind Vectors"/>
+			<menu_item_check label="Сложность визуализации" name="rendercomplexity"/>
+			<menu_item_check label="Лепка" name="Sculpt"/>
+		</menu>
+		<menu label="Визуализация" name="Rendering">
+			<menu_item_check label="Оси" name="Axes"/>
+			<menu_item_check label="Касательный базис" name="Tangent Basis"/>
+			<menu_item_call label="Выбранная текстура в основе" name="Selected Texture Info Basis"/>
+			<menu_item_check label="Каркас" name="Wireframe"/>
+			<menu_item_check label="Смыкание объектов" name="Object-Object Occlusion"/>
+			<menu_item_check label="Освещение и тени" name="Lighting and Shadows"/>
+			<menu_item_check label="Тени от солнца, луны и прожекторов" name="Shadows from Sun/Moon/Projectors"/>
+			<menu_item_check label="SSAO и сглаживание теней" name="SSAO and Shadow Smoothing"/>
+			<menu_item_check label="Отладка GL" name="Debug GL"/>
+			<menu_item_check label="Отладка конвейера" name="Debug Pipeline"/>
+			<menu_item_check label="Автоматические альфа-маски (отложенные)" name="Automatic Alpha Masks (deferred)"/>
+			<menu_item_check label="Автоматические альфа-маски (не отложенные)" name="Automatic Alpha Masks (non-deferred)"/>
+			<menu_item_check label="Текстуры анимаций" name="Animation Textures"/>
+			<menu_item_check label="Отключить текстуры" name="Disable Textures"/>
+			<menu_item_check label="Текстуры в полном разрешении" name="Rull Res Textures"/>
+			<menu_item_check label="Проверить текстуры" name="Audit Textures"/>
+			<menu_item_check label="Атлас текстур (экспериментальная функция)" name="Texture Atlas"/>
+			<menu_item_check label="Визуализация присоединенных источников света" name="Render Attached Lights"/>
+			<menu_item_check label="Визуализация присоединенных частиц" name="Render Attached Particles"/>
+			<menu_item_check label="Парящие светящиеся объекты" name="Hover Glow Objects"/>
+		</menu>
+		<menu label="Сеть" name="Network">
+			<menu_item_check label="Приостановить клиент" name="AgentPause"/>
+			<menu_item_call label="Включить журнал сообщений" name="Enable Message Log"/>
+			<menu_item_call label="Отключить журнал сообщений" name="Disable Message Log"/>
+			<menu_item_check label="Скорость интерполяции объектов" name="Velocity Interpolate Objects"/>
+			<menu_item_check label="Прикрепить объекты для интерполяции" name="Ping Interpolate Object Positions"/>
+			<menu_item_call label="Опустить пакет" name="Drop a Packet"/>
+		</menu>
+		<menu_item_call label="Дамп камеры со скриптами" name="Dump Scripted Camera"/>
+		<menu_item_call label="Столкновения, толчки и удары" name="Bumps, Pushes &amp;amp; Hits"/>
+		<menu label="Диктофон" name="Recorder">
+			<menu_item_call label="Начать воспроизведение" name="Start Playback"/>
+			<menu_item_call label="Остановить воспроизведение" name="Stop Playback"/>
+			<menu_item_check label="Зациклить воспроизведение" name="Loop Playback"/>
+			<menu_item_call label="Начать запись" name="Start Record"/>
+			<menu_item_call label="Остановить запись" name="Stop Record"/>
+		</menu>
+		<menu label="Мир" name="World">
+			<menu_item_check label="Перекрытие солнца в симуляторе" name="Sim Sun Override"/>
+			<menu_item_check label="Мигающий маяк" name="Cheesy Beacon"/>
+			<menu_item_check label="Неизменная погода" name="Fixed Weather"/>
+			<menu_item_call label="Вывод кэша региональных объектов" name="Dump Region Object Cache"/>
+		</menu>
+		<menu label="Интерфейс пользователя" name="UI">
+			<menu_item_call label="Проверка медиабраузера" name="Web Browser Test"/>
+			<menu_item_call label="Браузер для просмотра веб-контента" name="Web Content Browser"/>
+			<menu_item_call label="Вывод SelectMgr" name="Dump SelectMgr"/>
+			<menu_item_call label="Вывод инвентаря" name="Dump Inventory"/>
+			<menu_item_call label="Вывод таймеров" name="Dump Timers"/>
+			<menu_item_call label="Вывод средства фокусировки" name="Dump Focus Holder"/>
+			<menu_item_call label="Печать информации о выбранных объектах" name="Print Selected Object Info"/>
+			<menu_item_call label="Печать информации об агенте" name="Print Agent Info"/>
+			<menu_item_call label="Статистическая информация о памяти" name="Memory Stats"/>
+			<menu_item_check label="Консоль отладки региона" name="Region Debug Console"/>
+			<menu_item_check label="Отладка SelectMgr" name="Debug SelectMgr"/>
+			<menu_item_check label="Отладка щелчков мышью" name="Debug Clicks"/>
+			<menu_item_check label="Отладка обзора" name="Debug Views"/>
+			<menu_item_check label="Отладка контекстных окон к названиям" name="Debug Name Tooltips"/>
+			<menu_item_check label="Отладка выполняемых с помощью мыши действий" name="Debug Mouse Events"/>
+			<menu_item_check label="Отладка клавиш" name="Debug Keys"/>
+			<menu_item_check label="Отладка WindowProc" name="Debug WindowProc"/>
+		</menu>
+		<menu label="XUI" name="XUI">
+			<menu_item_call label="Обновить настройки цветов" name="Reload Color Settings"/>
+			<menu_item_call label="Показать проверку шрифтов" name="Show Font Test"/>
+			<menu_item_check label="Показать имена XUI" name="Show XUI Names"/>
+			<menu_item_call label="Отправить тестовое сообщение" name="Send Test IMs"/>
+			<menu_item_call label="Очистить кэши имен" name="Flush Names Caches"/>
+		</menu>
+		<menu label="Аватар" name="Character">
+			<menu label="Захват запеченных текстур" name="Grab Baked Texture">
+				<menu_item_call label="Радужка" name="Iris"/>
+				<menu_item_call label="Голова" name="Head"/>
+				<menu_item_call label="Верхняя часть тела" name="Upper Body"/>
+				<menu_item_call label="Нижняя часть тела" name="Lower Body"/>
+				<menu_item_call label="Юбка" name="Skirt"/>
+			</menu>
+			<menu label="Проверка персонажа" name="Character Tests">
+				<menu_item_call label="Внешний вид в XML" name="Appearance To XML"/>
+				<menu_item_call label="Активировать геометрию персонажа" name="Toggle Character Geometry"/>
+				<menu_item_call label="Проверка мужчины" name="Test Male"/>
+				<menu_item_call label="Проверка женщины" name="Test Female"/>
+				<menu_item_call label="Активировать PG-контент" name="Toggle PG"/>
+				<menu_item_check label="Разрешить выбор аватара" name="Allow Select Avatar"/>
+			</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"/>
+			<menu_item_check label="Отключить детализацию" name="Disable LOD"/>
+			<menu_item_check label="Отладка видимости персонажа" name="Debug Character Vis"/>
+			<menu_item_check label="Показать скелет" name="Show Collision Skeleton"/>
+			<menu_item_check label="Отобразить действие агента" name="Display Agent Target"/>
+			--&gt;
+			<menu_item_call label="Вывод присоединений" name="Dump Attachments"/>
+			<menu_item_call label="Отладка текстур аватара" name="Debug Avatar Textures"/>
+			<menu_item_call label="Вывод локальных текстур" name="Dump Local Textures"/>
+		</menu>
+		<menu_item_check label="Текстуры HTTP" name="HTTP Textures"/>
+		<menu_item_check label="Инвентарь HTTP" name="HTTP Inventory"/>
+		<menu_item_call label="Сжатие изображений" name="Compress Images"/>
+		<menu_item_check label="Вывод минидампа при отладке" name="Output Debug Minidump"/>
+		<menu_item_check label="Окно консоли при следующем запуске" name="Console Window"/>
+		<menu_item_call label="Запрос статуса администратора" name="Request Admin Options"/>
+		<menu_item_call label="Выход из статуса администратора" name="Leave Admin Options"/>
+		<menu_item_check label="Показать меню администратора" name="View Admin Options"/>
+	</menu>
+	<menu label="Администратор" name="Admin">
+		<menu label="Object">
+			<menu_item_call label="Взять копию" name="Take Copy"/>
+			<menu_item_call label="Назначить себя владельцем" name="Force Owner To Me"/>
+			<menu_item_call label="Назначить полноправным владельцем" name="Force Owner Permissive"/>
+			<menu_item_call label="Удалить" name="Delete"/>
+			<menu_item_call label="На месте" name="Lock"/>
+			<menu_item_call label="Получить ID активов" name="Get Assets IDs"/>
+		</menu>
+		<menu label="Участок" name="Parcel">
+			<menu_item_call label="Назначить себя владельцем" name="Owner To Me"/>
+			<menu_item_call label="Задать для контента Linden" name="Set to Linden Content"/>
+			<menu_item_call label="Претензия на публичную землю" name="Claim Public Land"/>
+		</menu>
+		<menu label="Регион" name="Region">
+			<menu_item_call label="Вывод временных данных актива" name="Dump Temp Asset Data"/>
+			<menu_item_call label="Сохранить состояние региона" name="Save Region State"/>
+		</menu>
+		<menu_item_call label="Инструменты творца" name="God Tools"/>
+	</menu>
+	<menu label="Администратор" name="Deprecated">
+		<menu label="Присоединить объект" name="Attach Object"/>
+		<menu label="Отсоединить объект" name="Detach Object"/>
+		<menu label="Снять одежду" name="Take Off Clothing">
+			<menu_item_call label="Рубашка" name="Shirt"/>
+			<menu_item_call label="Брюки" name="Pants"/>
+			<menu_item_call label="Обувь" name="Shoes"/>
+			<menu_item_call label="Носки" name="Socks"/>
+			<menu_item_call label="Пиджак" name="Jacket"/>
+			<menu_item_call label="Перчатки" name="Gloves"/>
+			<menu_item_call label="Майка" name="Menu Undershirt"/>
+			<menu_item_call label="Трусы" name="Menu Underpants"/>
+			<menu_item_call label="Юбка" name="Skirt"/>
+			<menu_item_call label="Альфа" name="Alpha"/>
+			<menu_item_call label="Тату" name="Tattoo"/>
+			<menu_item_call label="Физика" name="Physics"/>
+			<menu_item_call label="Вся одежда" name="All Clothes"/>
+		</menu>
+		<menu label="Справка" name="Help">
+			<menu_item_call label="Официальный блог Linden" name="Official Linden Blog"/>
+			<menu_item_call label="Портал скриптов" name="Scripting Portal"/>
+			<menu label="Сообщение об ошибке" name="Bug Reporting">
+				<menu_item_call label="Общедоступное средство отслеживания проблем" name="Public Issue Tracker"/>
+				<menu_item_call label="Справка по общедоступному средству отслеживания проблем" name="Publc Issue Tracker Help"/>
+				<menu_item_call label="Сообщение об ошибке 101" name="Bug Reporing 101"/>
+				<menu_item_call label="Проблемы безопасности" name="Security Issues"/>
+				<menu_item_call label="QA Wiki" name="QA Wiki"/>
+			</menu>
+		</menu>
+	</menu>
+</menu_bar>
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
new file mode 100644
index 0000000000000000000000000000000000000000..2832e17b7d0f77e6e67ce97e73ffb9987be92b19
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_wearable_list_item.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Outfit Wearable Context Menu">
+	<menu_item_call label="Заменить" name="wear_replace"/>
+	<menu_item_call label="Надеть" name="wear_wear"/>
+	<menu_item_call label="Добавить" name="wear_add"/>
+	<menu_item_call label="Снять / отсоединить" name="take_off_or_detach"/>
+	<menu_item_call label="Отсоединить" name="detach"/>
+	<context_menu label="Присоединить" name="wearable_attach_to"/>
+	<context_menu label="Присоединить к данным в игре" name="wearable_attach_to_hud"/>
+	<menu_item_call label="Снять" name="take_off"/>
+	<menu_item_call label="Изменить" name="edit"/>
+	<menu_item_call label="Профиль объекта" name="object_profile"/>
+	<menu_item_call label="Показать оригинал" name="show_original"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml b/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c2351fbfff7a04f00755393e7b523834de8047ed
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_wearing_gear.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Gear Wearing">
+	<menu_item_call label="Изменить костюм" name="edit"/>
+	<menu_item_call label="Снять" name="takeoff"/>
+	<menu_item_call label="Копировать список костюмов в буфер обмена" name="copy"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml b/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f178b39c774d858d0844db878b4dbde16742f01d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/menu_wearing_tab.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Wearing">
+	<menu_item_call label="Снять" name="take_off"/>
+	<menu_item_call label="Отсоединить" name="detach"/>
+	<menu_item_call label="Изменить костюм" name="edit"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/ru/mime_types.xml b/indra/newview/skins/default/xui/ru/mime_types.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7ed23b5d535c7687785d7b17d77c474b07cec934
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/mime_types.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Веб-контент
+		</label>
+		<tooltip name="web_tooltip">
+			В этом месте есть веб-контент
+		</tooltip>
+		<playtip name="web_playtip">
+			Показать веб-контент
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			Видео
+		</label>
+		<tooltip name="movie_tooltip">
+			Здесь есть видео
+		</tooltip>
+		<playtip name="movie_playtip">
+			Показать видео
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			Картинка
+		</label>
+		<tooltip name="image_tooltip">
+			В этом месте есть картинка
+		</tooltip>
+		<playtip name="image_playtip">
+			Показать картинку для этого места
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			Звук
+		</label>
+		<tooltip name="audio_tooltip">
+			В этом месте есть звук
+		</tooltip>
+		<playtip name="audio_playtip">
+			Воспроизвести звук для этого места
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			Поток RealTime
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- Ничего -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- Ничего -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			Звук
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			Видео
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			Картинка
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			Видео (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Звук/видео Ogg
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			Документ PDF
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Документ Postscript
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			Документ RTF
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			Документ SMIL
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Веб-страница (XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			Macromedia Director
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			Звук (MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			Звук (MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			Звук (AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			Звук (WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			Изображение (BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			Изображение (GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			Изображение (JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			Изображение (PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			Изображение (SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			Изображение (TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Веб-страница
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			Текст
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			Видео (MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			Видео (MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			Видео (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			Видео (Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			Видео (Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			Видео (AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/ru/mime_types_linux.xml b/indra/newview/skins/default/xui/ru/mime_types_linux.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a42b0bb9cc5f65ff833495b9fae63316e9e7d109
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/mime_types_linux.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Веб-контент
+		</label>
+		<tooltip name="web_tooltip">
+			В этом месте есть веб-контент
+		</tooltip>
+		<playtip name="web_playtip">
+			Показать веб-контент
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			Видео
+		</label>
+		<tooltip name="movie_tooltip">
+			Здесь есть видео
+		</tooltip>
+		<playtip name="movie_playtip">
+			Показать видео
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			Изображение
+		</label>
+		<tooltip name="image_tooltip">
+			В этом месте есть картинка
+		</tooltip>
+		<playtip name="image_playtip">
+			Показать картинку для этого места
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			Звук
+		</label>
+		<tooltip name="audio_tooltip">
+			В этом месте есть звук
+		</tooltip>
+		<playtip name="audio_playtip">
+			Воспроизвести звук для этого места
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			Поток RealTime
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- Ничего -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- Ничего -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			Звук
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			Видео
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			Изображение
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			Видео (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Звук/видео Ogg
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			Документ PDF
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Документ Postscript
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			Документ RTF
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			Документ SMIL
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Веб-страница (XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			Macromedia Director
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			Звук (MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			Звук (MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			Звук (AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			Звук (WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			Изображение (BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			Изображение (GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			Изображение (JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			Изображение (PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			Изображение (SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			Изображение (TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Веб-страница
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			Текст
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			Видео (MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			Видео (MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			Видео (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			Видео (Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			Видео (Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			Видео (AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/ru/mime_types_mac.xml b/indra/newview/skins/default/xui/ru/mime_types_mac.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7ed23b5d535c7687785d7b17d77c474b07cec934
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/mime_types_mac.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Веб-контент
+		</label>
+		<tooltip name="web_tooltip">
+			В этом месте есть веб-контент
+		</tooltip>
+		<playtip name="web_playtip">
+			Показать веб-контент
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			Видео
+		</label>
+		<tooltip name="movie_tooltip">
+			Здесь есть видео
+		</tooltip>
+		<playtip name="movie_playtip">
+			Показать видео
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			Картинка
+		</label>
+		<tooltip name="image_tooltip">
+			В этом месте есть картинка
+		</tooltip>
+		<playtip name="image_playtip">
+			Показать картинку для этого места
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			Звук
+		</label>
+		<tooltip name="audio_tooltip">
+			В этом месте есть звук
+		</tooltip>
+		<playtip name="audio_playtip">
+			Воспроизвести звук для этого места
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			Поток RealTime
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- Ничего -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- Ничего -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			Звук
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			Видео
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			Картинка
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			Видео (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Звук/видео Ogg
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			Документ PDF
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Документ Postscript
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			Документ RTF
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			Документ SMIL
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Веб-страница (XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			Macromedia Director
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			Звук (MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			Звук (MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			Звук (AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			Звук (WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			Изображение (BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			Изображение (GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			Изображение (JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			Изображение (PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			Изображение (SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			Изображение (TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Веб-страница
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			Текст
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			Видео (MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			Видео (MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			Видео (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			Видео (Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			Видео (Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			Видео (AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/ru/notifications.xml b/indra/newview/skins/default/xui/ru/notifications.xml
new file mode 100644
index 0000000000000000000000000000000000000000..04f2f6b486bc870478c4385a5009c28582c19b55
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/notifications.xml
@@ -0,0 +1,3092 @@
+<?xml version="1.0" encoding="utf-8"?>
+<notifications>
+	<global name="skipnexttime">
+		Больше не показывать
+	</global>
+	<global name="alwayschoose">
+		Всегда выбирать эту опцию
+	</global>
+	<global name="implicitclosebutton">
+		Закрыть
+	</global>
+	<template name="okbutton">
+		<form>
+			<button name="OK_okbutton" text="$yestext"/>
+		</form>
+	</template>
+	<template name="okignore">
+		<form>
+			<button name="OK_okignore" text="$yestext"/>
+		</form>
+	</template>
+	<template name="okcancelbuttons">
+		<form>
+			<button name="OK_okcancelbuttons" text="$yestext"/>
+			<button name="Cancel_okcancelbuttons" text="$notext"/>
+		</form>
+	</template>
+	<template name="okcancelignore">
+		<form>
+			<button name="OK_okcancelignore" text="$yestext"/>
+			<button name="Cancel_okcancelignore" text="$notext"/>
+		</form>
+	</template>
+	<template name="okhelpbuttons">
+		<form>
+			<button name="OK_okhelpbuttons" text="$yestext"/>
+			<button name="Help" text="$helptext"/>
+		</form>
+	</template>
+	<template name="yesnocancelbuttons">
+		<form>
+			<button name="Yes" text="$yestext"/>
+			<button name="No" text="$notext"/>
+			<button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
+		</form>
+	</template>
+	<notification label="Неизвестное уведомление" name="MissingAlert">
+		Ваша версия [APP_NAME] не знает, как отобразить полученное уведомление. Убедитесь, что у вас установлена последняя версия клиента.
+
+Подробности ошибки: уведомление под названием «[_NAME]» не было найдено в notifications.xml.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="FloaterNotFound">
+		Ошибка окна: не найдены следующие элементы управления:
+
+[CONTROLS]
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="TutorialNotFound">
+		Сейчас нет доступных учебников.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="GenericAlert">
+		[MESSAGE]
+	</notification>
+	<notification name="GenericAlertYesCancel">
+		[MESSAGE]
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="Да"/>
+	</notification>
+	<notification name="BadInstallation">
+		Произошла ошибка при обновлении [APP_NAME]. [http://get.secondlife.com Загрузите последнюю версию] клиента.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="LoginFailedNoNetwork">
+		Не удалось подключиться к [SECOND_LIFE_GRID].
+    «[DIAGNOSTIC]»
+Убедитесь, что подключение к интернету работает нормально.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="MessageTemplateNotFound">
+		Шаблон сообщения [PATH] не найден.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="WearableSave">
+		Сохранить изменения теперешней одежды/части тела?
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Не сохранять" yestext="Сохранить"/>
+	</notification>
+	<notification name="ConfirmNoCopyToOutbox">
+		У вас нет прав для копирования этого элемента в исходящую папку магазина. Вы действительно хотите переместить следующий элемент?
+        [ITEM_NAME]
+		<usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="OutboxUploadComplete">
+		Передача магазина завершена.
+		<usetemplate name="okbutton" yestext="Ура!"/>
+	</notification>
+	<notification name="OutboxUploadHadErrors">
+		Передача магазина выполнена с ошибками!  Устраните проблемы в исходящей папке и повторите передачу.  Спасибо!
+		<usetemplate name="okbutton" yestext="Бу-у-у!"/>
+	</notification>
+	<notification name="CompileQueueSaveText">
+		Ошибка при передаче текста скрипта по следующей причине: [REASON]. Повторите попытку позже.
+	</notification>
+	<notification name="CompileQueueSaveBytecode">
+		Ошибка при передаче скомпилированного скрипта по следующей причине: [REASON]. Повторите попытку позже.
+	</notification>
+	<notification name="WriteAnimationFail">
+		Ошибка при записи данных анимации. Повторите попытку позже.
+	</notification>
+	<notification name="UploadAuctionSnapshotFail">
+		Ошибка при передаче снимка аукциона по следующей причине: [REASON]
+	</notification>
+	<notification name="UnableToViewContentsMoreThanOne">
+		Невозможно просмотреть содержимое нескольких объектов одновременно.
+Выберите один объект и повторите попытку.
+	</notification>
+	<notification name="SaveClothingBodyChanges">
+		Сохранить все изменения в одежде/частях тела?
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Не сохранять" yestext="Сохранить все"/>
+	</notification>
+	<notification name="FriendsAndGroupsOnly">
+		Жители, которые не являются вашими друзьями, не будут знать, что вы игнорируете их звонки и сообщения.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="FavoritesOnLogin">
+		Примечание. После включения этой опции все пользователи данного компьютера смогут увидеть список ваших избранных мест.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="GrantModifyRights">
+		Предоставление другому жителю прав на изменение позволит ему изменять, удалять или брать ЛЮБЫЕ ваши объекты. Будьте ОЧЕНЬ осторожны с предоставлением такого разрешения.
+Дать пользователю [NAME] права на изменение?
+		<usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="GrantModifyRightsMultiple">
+		Предоставление другому жителю прав на изменение позволит ему изменять ЛЮБЫЕ ваши объекты. Будьте ОЧЕНЬ осторожны с предоставлением такого разрешения.
+Дать права на изменение выбранным жителям?
+		<usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="RevokeModifyRights">
+		Отобрать у пользователя [NAME] права на изменение?
+		<usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="RevokeModifyRightsMultiple">
+		Отобрать у выбранных жителей права на изменение?
+		<usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="UnableToCreateGroup">
+		Невозможно создать группу.
+[MESSAGE]
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="PanelGroupApply">
+		[NEEDS_APPLY_MESSAGE]
+[WANT_APPLY_MESSAGE]
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Игнорировать изменения" yestext="Применить изменения"/>
+	</notification>
+	<notification name="MustSpecifyGroupNoticeSubject">
+		Необходимо указать тему для отправки группового уведомления.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="AddGroupOwnerWarning">
+		Вы собираетесь добавить участников группы в роль [ROLE_NAME].
+Удалить участников из этой роли нельзя.
+Участники сами должны отказаться от нее.
+Продолжить?
+		<usetemplate ignoretext="Подтверждать перед добавлением нового владельца группы" name="okcancelignore" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="AssignDangerousActionWarning">
+		Вы собираетесь добавить способность «[ACTION_NAME]» к роли «[ROLE_NAME]».
+
+ *ПРЕДУПРЕЖДЕНИЕ*
+ Все участники роли с этой способностью могут присваивать себе и всем другим участникам более высокие роли, чем у них сейчас есть, и даже подниматься до уровня владельца. Прежде чем назначить эту способность, убедитесь в целесообразности этого.
+
+Добавить эту способность к роли «[ROLE_NAME]»?
+		<usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="AssignDangerousAbilityWarning">
+		Вы собираетесь добавить способность «[ACTION_NAME]» к роли «[ROLE_NAME]».
+
+ *ПРЕДУПРЕЖДЕНИЕ*
+ Все участники роли с этой способностью могут присваивать себе и всем другим участникам все способности и даже подниматься до уровня владельца.
+
+Добавить эту способность к роли «[ROLE_NAME]»?
+		<usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="AttachmentDrop">
+		Вы собираетесь сбросить свое присоединение.
+    Продолжить?
+		<usetemplate ignoretext="Подтверждать перед сбросом присоединений" name="okcancelignore" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="JoinGroupCanAfford">
+		Вступление в эту группу стоит L$[COST].
+Продолжить?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="Вступить"/>
+	</notification>
+	<notification name="JoinGroupNoCost">
+		Вы вступаете в группу [NAME].
+Продолжить?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="Вступить"/>
+	</notification>
+	<notification name="JoinGroupCannotAfford">
+		Вступление в эту группу стоит L$[COST].
+У вас не хватает L$ для вступления.
+	</notification>
+	<notification name="CreateGroupCost">
+		Создание этой группы стоит L$100.
+В группе должно быть более одного участника, иначе она будет удалена.
+Пригласите участников в ближайшие 48 часов.
+		<usetemplate canceltext="Отмена" name="okcancelbuttons" notext="Отмена" yestext="Создать группу за L$100"/>
+	</notification>
+	<notification name="LandBuyPass">
+		За L$[COST] вы можете находиться на этой земле («[PARCEL_NAME]») в течение [TIME] часов.  Купить пропуск?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="SalePriceRestriction">
+		При продаже любому пользователю цена продажи должна быть больше L$0.
+Выберите пользователя, чтобы продать ему за L$0.
+	</notification>
+	<notification name="ConfirmLandSaleChange">
+		Выбранные [LAND_SIZE] м² земли выставляются на продажу.
+Ваша цена продажи: $[SALE_PRICE], разрешена продажа для [NAME].
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmLandSaleToAnyoneChange">
+		ВНИМАНИЕ! При выборе «продавать кому угодно» ваша земля станет доступной всему сообществу [SECOND_LIFE], даже тем, кто находится не в этом регионе.
+
+Выбранные [LAND_SIZE] м² земли выставляются на продажу.
+Ваша цена продажи: $[SALE_PRICE], разрешена продажа для [NAME].
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ReturnObjectsDeededToGroup">
+		Вы действительно хотите вернуть все объекты, переданные группе «[NAME]» на этом земельном участке, обратно в инвентарь их прежних владельцев?
+
+*ПРЕДУПРЕЖДЕНИЕ* Все непереносимые объекты, предоставленные этой группе, будут удалены!
+
+Объекты: [N]
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ReturnObjectsOwnedByUser">
+		Вы действительно хотите вернуть все объекты, принадлежащие жителю «[NAME]» на этом земельном участке, в его инвентарь?
+
+Объекты: [N]
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ReturnObjectsOwnedBySelf">
+		Вы действительно хотите вернуть все принадлежащие вам объекты на этом земельном участке в свой инвентарь?
+
+Объекты: [N]
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ReturnObjectsNotOwnedBySelf">
+		Вы действительно хотите вернуть все НЕ принадлежащие вам объекты на этом участке в инвентарь их владельцев?
+Переносимые объекты, предоставленные группе, будут возвращены прежним владельцам.
+
+*ПРЕДУПРЕЖДЕНИЕ* Все непереносимые объекты, предоставленные этой группе, будут удалены!
+
+Объекты: [N]
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ReturnObjectsNotOwnedByUser">
+		Вы действительно хотите вернуть все объекты, НЕ принадлежащие пользователю [NAME], на этом земельном участке, обратно в инвентарь их владельцев?
+Переносимые объекты, предоставленные группе, будут возвращены прежним владельцам.
+
+*ПРЕДУПРЕЖДЕНИЕ* Все непереносимые объекты, предоставленные этой группе, будут удалены!
+
+Объекты: [N]
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ReturnAllTopObjects">
+		Вы действительно хотите вернуть все объекты из списка в инвентарь их владельцев?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="DisableAllTopObjects">
+		Вы действительно хотите отключить все объекты в этом регионе?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ReturnObjectsNotOwnedByGroup">
+		Вернуть все объекты на этом земельном участке, НЕ переданные группе «[NAME]», их владельцам?
+
+Объекты: [N]
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="UnableToDisableOutsideScripts">
+		Нельзя отключить скрипты.
+Во всем этом регионе включены боевые повреждения.
+Чтобы оружие действовало, скрипты должны выполняться.
+	</notification>
+	<notification name="MultipleFacesSelected">
+		Выбрано несколько граней.
+Если продолжить это действие, на каждой выбранной грани объекта будет размещено по отдельному экземпляру медиа.
+Чтобы поместить медиа только на одну грань, выберите команду «Выбор грани» и щелкните нужную грань объекта, затем нажмите «Добавить».
+		<usetemplate ignoretext="Медиа будет помещено на несколько выбранных граней" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="MustBeInParcel">
+		Чтобы установить точку телепортации, вы должны находиться на участке.
+	</notification>
+	<notification name="PromptRecipientEmail">
+		Введите правильный адрес email получателя.
+	</notification>
+	<notification name="PromptSelfEmail">
+		Введите свой адрес email.
+	</notification>
+	<notification name="PromptMissingSubjMsg">
+		Отправить снимок с темой или сообщением по умолчанию?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ErrorProcessingSnapshot">
+		Ошибка при обработке данных снимка
+	</notification>
+	<notification name="ErrorEncodingSnapshot">
+		Ошибка при кодировке снимка.
+	</notification>
+	<notification name="ErrorUploadingPostcard">
+		Ошибка при отправке снимка по следующей причине: [REASON]
+	</notification>
+	<notification name="ErrorUploadingReportScreenshot">
+		Ошибка при передаче снимка отчета по следующей причине: [REASON]
+	</notification>
+	<notification name="MustAgreeToLogIn">
+		Для входа в [SECOND_LIFE] вы должны принять условия Пользовательского соглашения.
+	</notification>
+	<notification name="CouldNotPutOnOutfit">
+		Не удалось надеть костюм.
+Папка костюмов не содержит одежды, частей тела или присоединений.
+	</notification>
+	<notification name="CannotWearTrash">
+		Нельзя надеть одежду или часть тела, если они находятся в корзине
+	</notification>
+	<notification name="MaxAttachmentsOnOutfit">
+		Не удалось присоединить объект.
+Превышен лимит присоединений ([MAX_ATTACHMENTS] объектов). Сначала отсоедините другой объект.
+	</notification>
+	<notification name="CannotWearInfoNotComplete">
+		Нельзя надеть эту вещь, так как она еще не загружена. Повторите попытку через минуту.
+	</notification>
+	<notification name="MustHaveAccountToLogIn">
+		Ай-яй-яй! Что-то осталось незаполненным.
+Необходимо ввести имя пользователя для вашего аватара.
+
+Для входа в [SECOND_LIFE] нужен аккаунт. Создать его?
+		<url name="url">
+			http://join.secondlife.com/
+		</url>
+		<usetemplate name="okcancelbuttons" notext="Повторить попытку" yestext="Создать новый аккаунт"/>
+	</notification>
+	<notification name="InvalidCredentialFormat">
+		Введите имя пользователя или имя и фамилию вашего аватара в поле «Имя пользователя», затем снова войдите в программу.
+	</notification>
+	<notification name="DeleteClassified">
+		Удалить рекламу «[NAME]»?
+Плата за нее не будет возвращена.
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="DeleteMedia">
+		Вы собираетесь удалить медиа, связанное с этой гранью.
+Продолжить?
+		<usetemplate ignoretext="Подтверждать перед удалением медиа из объекта" name="okcancelignore" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="ClassifiedSave">
+		Сохранить изменения в рекламе [NAME]?
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Не сохранять" yestext="Сохранить"/>
+	</notification>
+	<notification name="ClassifiedInsufficientFunds">
+		Недостаточно денег для создания рекламы.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="DeleteAvatarPick">
+		Удалить подборку &lt;nolink&gt;[PICK]&lt;/nolink&gt;?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="DeleteOutfits">
+		Удалить выбранный костюм?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="PromptGoToEventsPage">
+		Перейти на веб-страницу событий [SECOND_LIFE]?
+		<url name="url">
+			http://secondlife.com/events/
+		</url>
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="SelectProposalToView">
+		Выберите предложение для просмотра.
+	</notification>
+	<notification name="SelectHistoryItemToView">
+		Выберите пункт журнала для просмотра.
+	</notification>
+	<notification name="CacheWillClear">
+		Кэш будет очищен после перезапуска [APP_NAME].
+	</notification>
+	<notification name="CacheWillBeMoved">
+		Кэш будет перемещен после перезапуска [APP_NAME].
+Примечание. При этом кэш будет очищен.
+	</notification>
+	<notification name="ChangeConnectionPort">
+		Настройки порта начнут действовать после перезапуска [APP_NAME].
+	</notification>
+	<notification name="ChangeSkin">
+		Новая кожа будет видна после перезапуска [APP_NAME].
+	</notification>
+	<notification name="ChangeLanguage">
+		Смена языка вступит в силу после перезапуска [APP_NAME].
+	</notification>
+	<notification name="GoToAuctionPage">
+		Перейти на веб-страницу [SECOND_LIFE], чтобы посмотреть подробности аукциона или сделать ставку?
+		<url name="url">
+			http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]
+		</url>
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="SaveChanges">
+		Сохранить изменения?
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Не сохранять" yestext="Сохранить"/>
+	</notification>
+	<notification name="GestureSaveFailedTooManySteps">
+		Не удалось сохранить жест.
+Жест содержит слишком много этапов.
+Попробуйте удалить некоторые этапы и повторите сохранение.
+	</notification>
+	<notification name="GestureSaveFailedTryAgain">
+		Не удалось сохранить жест.  Повторите попытку через минуту.
+	</notification>
+	<notification name="GestureSaveFailedObjectNotFound">
+		Не удалось сохранить жест: не найден объект или связанный с ним инвентарь.
+Возможно, объект находится вне допустимого диапазона или удален.
+	</notification>
+	<notification name="GestureSaveFailedReason">
+		Ошибка при сохранении жеста по следующей причине: [REASON].  Попробуйте сохранить жест через некоторое время.
+	</notification>
+	<notification name="SaveNotecardFailObjectNotFound">
+		Не удалось сохранить заметку: не найден объект или связанный с ним инвентарь.
+Возможно, объект находится вне допустимого диапазона или удален.
+	</notification>
+	<notification name="SaveNotecardFailReason">
+		Ошибка при сохранении заметки по следующей причине: [REASON].  Попробуйте сохранить заметку через некоторое время.
+	</notification>
+	<notification name="ScriptCannotUndo">
+		Не удалось отменить все изменения в вашей версии скрипта.
+Загрузить последнюю сохраненную на сервере версию?
+(**Предупреждение** Эту операцию нельзя отменить.)
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="SaveScriptFailReason">
+		Ошибка при сохранении скрипта по следующей причине: [REASON].  Попробуйте сохранить скрипт через некоторое время.
+	</notification>
+	<notification name="SaveScriptFailObjectNotFound">
+		Не удалось сохранить скрипт: не найден объект, в котором он находится.
+Возможно, объект находится вне допустимого диапазона или удален.
+	</notification>
+	<notification name="SaveBytecodeFailReason">
+		Ошибка при сохранении скомпилированного скрипта по следующей причине: [REASON].  Попробуйте сохранить скрипт через некоторое время.
+	</notification>
+	<notification name="StartRegionEmpty">
+		Ай-яй-яй, ваш стартовый регион не определен.
+Введите название региона в поле «Место старта» или выберите в качестве места старта «Мое последнее местоположение» или «Мой дом».
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="CouldNotStartStopScript">
+		Не удается запустить или остановить скрипт: не найден объект, в котором он находится.
+Возможно, объект находится вне допустимого диапазона или удален.
+	</notification>
+	<notification name="CannotDownloadFile">
+		Невозможно загрузить файл
+	</notification>
+	<notification name="CannotWriteFile">
+		Невозможно записать файл [[FILE]]
+	</notification>
+	<notification name="UnsupportedHardware">
+		К вашему сведению: ваш компьютер не соответствует минимальным системным требованиям [APP_NAME]. Это может привести к снижению производительности. К сожалению, [SUPPORT_SITE] не оказывает техническую поддержку для неподдерживаемых конфигураций систем.
+
+Найти более подробную информацию на [_URL]?
+		<url name="url">
+			http://www.secondlife.com/corporate/sysreqs.php
+		</url>
+		<usetemplate ignoretext="Оборудование моего компьютера не поддерживается" name="okcancelignore" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="UnknownGPU">
+		В вашей системе установлена графическая карта, которую [APP_NAME] не может распознать.
+Так часто бывает, если новое оборудование еще не было проверено на работу с [APP_NAME].  Скорее всего, оно будет работать нормально, но, возможно, придется отрегулировать параметры графики.
+(Я &gt; Настройки &gt; Графика).
+		<form name="form">
+			<ignore name="ignore" text="Не удается определить мою графическую карту"/>
+		</form>
+	</notification>
+	<notification name="DisplaySettingsNoShaders">
+		Произошел сбой [APP_NAME] при инициализации графического драйвера.
+Будет установлено низкое качество графики, чтобы избежать некоторых распространенных ошибок графики. При этом некоторые графические функции не будут работать.
+Рекомендуем обновить драйверы графической карты.
+Повысить качество графики можно в меню «Настройки &gt; Графика».
+	</notification>
+	<notification name="RegionNoTerraforming">
+		В регионе [REGION] не разрешен терраформинг.
+	</notification>
+	<notification name="CannotCopyWarning">
+		У вас нет разрешения на копирование следующих предметов:
+[ITEMS]
+Если вы отдадите эти вещи, их больше не будет в вашем инвентаре. Вы действительно хотите предложить эти предметы?
+		<usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="CannotGiveItem">
+		Невозможно отдать предмет из инвентаря.
+	</notification>
+	<notification name="TransactionCancelled">
+		Сделка отменена.
+	</notification>
+	<notification name="TooManyItems">
+		Нельзя передать более 42 предметов за одну пересылку.
+	</notification>
+	<notification name="NoItems">
+		У вас нет разрешения на передачу выбранных предметов.
+	</notification>
+	<notification name="CannotCopyCountItems">
+		У вас нет разрешения на копирование [COUNT] выбранных предметов. Эти предметы исчезнут из вашего инвентаря.
+Вы действительно хотите отдать их?
+		<usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="CannotGiveCategory">
+		У вас нет разрешения на передачу выбранной папки.
+	</notification>
+	<notification name="FreezeAvatar">
+		Заморозить этот аватар?
+У него временно исчезнет способность перемещаться, говорить и взаимодействовать с миром.
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Разморозить" yestext="Заморозить"/>
+	</notification>
+	<notification name="FreezeAvatarFullname">
+		Заморозить [AVATAR_NAME]?
+У него временно исчезнет способность перемещаться, говорить и взаимодействовать с миром.
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Разморозить" yestext="Заморозить"/>
+	</notification>
+	<notification name="EjectAvatarFullname">
+		Выкинуть [AVATAR_NAME] с вашей земли?
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Выкинуть и запретить доступ" yestext="Выкинуть"/>
+	</notification>
+	<notification name="EjectAvatarNoBan">
+		Выкинуть этот аватар с вашей земли?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="Выкинуть"/>
+	</notification>
+	<notification name="EjectAvatarFullnameNoBan">
+		Выкинуть [AVATAR_NAME] с вашей земли?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="Выкинуть"/>
+	</notification>
+	<notification name="EjectAvatarFromGroup">
+		Вы исключили аватар [AVATAR_NAME] из группы [GROUP_NAME]
+	</notification>
+	<notification name="AcquireErrorTooManyObjects">
+		ОШИБКА ПРИОБРЕТЕНИЯ: выбрано слишком много объектов.
+	</notification>
+	<notification name="AcquireErrorObjectSpan">
+		ОШИБКА ПРИОБРЕТЕНИЯ: объекты охватывают более одного региона.
+Переместите все приобретаемые объекты в один регион.
+	</notification>
+	<notification name="PromptGoToCurrencyPage">
+		[EXTRA]
+
+Найти информацию по покупке L$ на [_URL]?
+		<url name="url">
+			http://secondlife.com/app/currency/
+		</url>
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="UnableToLinkObjects">
+		Невозможно объединить эти [COUNT] объектов.
+Можно объединять не более [MAX] объектов.
+	</notification>
+	<notification name="CannotLinkIncompleteSet">
+		Можно объединять только полные наборы объектов, и для этого следует выбрать более одного объекта.
+	</notification>
+	<notification name="CannotLinkModify">
+		Невозможно объединить объекты: у вас нет прав на изменение всех объектов.
+
+Убедитесь, что все объекты разблокированы и что вы владеете всеми ими.
+	</notification>
+	<notification name="CannotLinkDifferentOwners">
+		Невозможно объединить объекты: не у всех объектов один владелец.
+
+Убедитесь, что вы владеете всеми выбранными объектами.
+	</notification>
+	<notification name="NoFileExtension">
+		У файла отсутствует расширение: «[FILE]»
+
+Убедитесь, что файл имеет правильное расширение.
+	</notification>
+	<notification name="InvalidFileExtension">
+		Неверное расширение файла [EXTENSION]
+Ожидается [VALIDS]
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="CannotUploadSoundFile">
+		Не удалось открыть для чтения загруженный звуковой файл:
+[FILE]
+	</notification>
+	<notification name="SoundFileNotRIFF">
+		По-видимому, это не файл RIFF WAVE:
+[FILE]
+	</notification>
+	<notification name="SoundFileNotPCM">
+		По-видимому, это не звуковой файл PCM WAVE:
+[FILE]
+	</notification>
+	<notification name="SoundFileInvalidChannelCount">
+		В файле неправильное количество каналов (должно быть моно или стерео):
+[FILE]
+	</notification>
+	<notification name="SoundFileInvalidSampleRate">
+		По-видимому, файл не имеет поддерживаемой частоты дискретизации (должна быть 44,1 кГц):
+[FILE]
+	</notification>
+	<notification name="SoundFileInvalidWordSize">
+		По-видимому, в файле используется неподдерживаемый размер слова (должен быть 8 или 16 бит):
+[FILE]
+	</notification>
+	<notification name="SoundFileInvalidHeader">
+		Не найден фрагмент «data» в заголовке WAV-файла:
+[FILE]
+	</notification>
+	<notification name="SoundFileInvalidChunkSize">
+		Неправильный размер фрагмента в WAV-файле:
+[FILE]
+	</notification>
+	<notification name="SoundFileInvalidTooLong">
+		Аудиофайл слишком длинный (максимум 10 секунд):
+[FILE]
+	</notification>
+	<notification name="ProblemWithFile">
+		Проблема с файлом [FILE]:
+
+[ERROR]
+	</notification>
+	<notification name="CannotOpenTemporarySoundFile">
+		Не удалось открыть для записи временно сжатый звуковой файл: [FILE]
+	</notification>
+	<notification name="UnknownVorbisEncodeFailure">
+		Неизвестная ошибка кодировки Vorbis в файле: [FILE]
+	</notification>
+	<notification name="CannotEncodeFile">
+		Невозможно закодировать файл: [FILE]
+	</notification>
+	<notification name="CorruptedProtectedDataStore">
+		Невозможно ввести ваши имя пользователя и пароль.  Возможно, вы изменили настройки сети.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="CorruptResourceFile">
+		Поврежден файл ресурсов: [FILE]
+	</notification>
+	<notification name="UnknownResourceFileVersion">
+		Неизвестная версия файла ресурсов Linden: [FILE]
+	</notification>
+	<notification name="UnableToCreateOutputFile">
+		Невозможно создать выходной файл: [FILE]
+	</notification>
+	<notification name="DoNotSupportBulkAnimationUpload">
+		[APP_NAME] пока не поддерживает массовую передачу файлов анимации.
+	</notification>
+	<notification name="CannotUploadReason">
+		Невозможно передать [FILE] по следующей причине: [REASON]
+Повторите попытку позже.
+	</notification>
+	<notification name="LandmarkCreated">
+		Вы добавили закладку «[LANDMARK_NAME]» в свою папку [FOLDER_NAME].
+	</notification>
+	<notification name="LandmarkAlreadyExists">
+		На это место уже поставлена закладка.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="CannotCreateLandmarkNotOwner">
+		Вы не можете поставить здесь закладку: владелец земли не разрешает этого.
+	</notification>
+	<notification name="CannotRecompileSelectObjectsNoScripts">
+		Невозможно произвести перекомпиляцию.
+Выберите объект со сценарием.
+	</notification>
+	<notification name="CannotRecompileSelectObjectsNoPermission">
+		Невозможно произвести перекомпиляцию.
+
+Выберите объекты со сценариями, которые вам разрешено изменять.
+	</notification>
+	<notification name="CannotResetSelectObjectsNoScripts">
+		Невозможно произвести сброс.
+
+Выберите объекты со сценариями.
+	</notification>
+	<notification name="CannotResetSelectObjectsNoPermission">
+		Невозможно произвести сброс.
+
+Выберите объекты со сценариями, которые вам разрешено изменять.
+	</notification>
+	<notification name="CannotOpenScriptObjectNoMod">
+		Невозможно открыть скрипт в объекте с запрещенным изменением.
+	</notification>
+	<notification name="CannotSetRunningSelectObjectsNoScripts">
+		Невозможно запустить скрипты.
+
+Выберите объекты со сценариями.
+	</notification>
+	<notification name="CannotSetRunningNotSelectObjectsNoScripts">
+		Невозможно остановить скрипты.
+
+Выберите объекты со сценариями.
+	</notification>
+	<notification name="NoFrontmostFloater">
+		Нет самого переднего окна для сохранения.
+	</notification>
+	<notification name="SeachFilteredOnShortWords">
+		Ваш поисковый запрос был изменен, и слишком короткие слова были удалены.
+
+Выполнен поиск: [FINALQUERY]
+	</notification>
+	<notification name="SeachFilteredOnShortWordsEmpty">
+		Ваша поисковая фраза была слишком короткой. Поиск не был выполнен.
+	</notification>
+	<notification name="CouldNotTeleportReason">
+		Ошибка телепортации.
+[REASON]
+	</notification>
+	<notification name="invalid_tport">
+		При запросе телепортации возникла проблема. Возможно, для телепортации придется повторить вход в программу.
+Если данное сообщение повторится, посетите сайт [SUPPORT_SITE].
+	</notification>
+	<notification name="invalid_region_handoff">
+		При пересечении границы региона возникла проблема. Возможно, для пересечения границы придется повторить вход в программу.
+Если данное сообщение повторится, посетите сайт [SUPPORT_SITE].
+	</notification>
+	<notification name="blocked_tport">
+		Телепортация сейчас заблокирована. Повторите попытку позже.  Если все равно не удается телепортироваться, выйдите из программы и войдите снова, чтобы устранить проблему.
+	</notification>
+	<notification name="nolandmark_tport">
+		Системе не удалось определить пункт назначения закладки.
+	</notification>
+	<notification name="timeout_tport">
+		Системе не удалось выполнить подключение телепорта.  Повторите попытку позже.
+	</notification>
+	<notification name="noaccess_tport">
+		У вас нет доступа в пункт назначения этого телепорта.
+	</notification>
+	<notification name="missing_attach_tport">
+		Ваши присоединения еще не доставлены. Подождите несколько секунд либо выйдите из программы и войдите снова, прежде чем повторить попытку телепортации.
+	</notification>
+	<notification name="too_many_uploads_tport">
+		Очередь активов в данном регионе заполнена, поэтому ваш запрос на телепортацию не будет выполнен своевременно. Повторите попытку через несколько минут или перейдите в менее загруженный регион.
+	</notification>
+	<notification name="expired_tport">
+		Системе не удалось своевременно выполнить ваш запрос на телепортацию. Повторите попытку через несколько минут.
+	</notification>
+	<notification name="expired_region_handoff">
+		Системе не удалось своевременно выполнить ваше пересечение границы. Повторите попытку через несколько минут.
+	</notification>
+	<notification name="no_host">
+		Не удалось найти точку назначения телепорта. Возможно, пункт назначения временно недоступен или уже не существует. Повторите попытку через несколько минут.
+	</notification>
+	<notification name="no_inventory_host">
+		Система инвентаря сейчас недоступна.
+	</notification>
+	<notification name="CannotSetLandOwnerNothingSelected">
+		Невозможно назначить владельца земли:
+Участок не выбран.
+	</notification>
+	<notification name="CannotSetLandOwnerMultipleRegions">
+		Невозможно установить владение над землей, потому что выделение захватывает несколько регионов. Выберите меньшую область и повторите попытку.
+	</notification>
+	<notification name="ForceOwnerAuctionWarning">
+		Этот участок выставлен на аукцион. При попытке завладеть землей аукцион будет отменен и, возможно, некоторые жители понесут ущерб, если ставки уже были сделаны.
+Завладеть?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="CannotContentifyNothingSelected">
+		Невозможно удовлетворить требование:
+Участок не выбран.
+	</notification>
+	<notification name="CannotContentifyNoRegion">
+		Невозможно удовлетворить требование:
+Регион не выбран.
+	</notification>
+	<notification name="CannotReleaseLandNothingSelected">
+		Невозможно отказаться от земли:
+Участок не выбран.
+	</notification>
+	<notification name="CannotReleaseLandNoRegion">
+		Невозможно отказаться от земли:
+Регион не найден.
+	</notification>
+	<notification name="CannotBuyLandNothingSelected">
+		Невозможно купить землю:
+Участок не выбран.
+	</notification>
+	<notification name="CannotBuyLandNoRegion">
+		Невозможно купить землю:
+Не удается найти регион, в котором находится эта земля.
+	</notification>
+	<notification name="CannotCloseFloaterBuyLand">
+		Нельзя закрыть окно покупки земли, пока [APP_NAME] определяет стоимость этой транзакции.
+	</notification>
+	<notification name="CannotDeedLandNothingSelected">
+		Невозможно передать землю:
+Участок не выбран.
+	</notification>
+	<notification name="CannotDeedLandNoGroup">
+		Невозможно передать землю:
+Группа не выбрана.
+	</notification>
+	<notification name="CannotDeedLandNoRegion">
+		Невозможно передать землю:
+Не удается найти регион, в котором находится эта земля.
+	</notification>
+	<notification name="CannotDeedLandMultipleSelected">
+		Невозможно передать землю:
+Выбрано несколько участков.
+
+Попробуйте выбрать один участок.
+	</notification>
+	<notification name="CannotDeedLandWaitingForServer">
+		Невозможно передать землю:
+Ожидание, пока сервер сообщит о владении.
+
+Повторите попытку.
+	</notification>
+	<notification name="CannotDeedLandNoTransfer">
+		Невозможно передать землю:
+В регионе [REGION] не разрешена передача земли.
+	</notification>
+	<notification name="CannotReleaseLandWatingForServer">
+		Невозможно отказаться от земли:
+Ожидание, пока сервер обновит информацию об участке.
+
+Повторите попытку через несколько секунд.
+	</notification>
+	<notification name="CannotReleaseLandSelected">
+		Невозможно отказаться от земли:
+Вы не владеете всеми выбранными участками.
+
+Выберите один участок.
+	</notification>
+	<notification name="CannotReleaseLandDontOwn">
+		Невозможно отказаться от земли:
+У вас нет прав на освобождение этого участка.
+Участки, которыми вы владеете, показаны зеленым цветом.
+	</notification>
+	<notification name="CannotReleaseLandRegionNotFound">
+		Невозможно отказаться от земли:
+Не удается найти регион, в котором находится эта земля.
+	</notification>
+	<notification name="CannotReleaseLandNoTransfer">
+		Невозможно отказаться от земли:
+В регионе [REGION] не разрешена передача земли.
+	</notification>
+	<notification name="CannotReleaseLandPartialSelection">
+		Невозможно отказаться от земли:
+Чтобы освободить участок, нужно выбрать его целиком.
+
+Выберите весь участок или сначала разделите его.
+	</notification>
+	<notification name="ReleaseLandWarning">
+		Вы собираетесь отказаться от [AREA] м² земли.
+При освобождении этого участка он будет исключен из ваших владений, но не принесет вам L$.
+
+Освободить эту землю?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="CannotDivideLandNothingSelected">
+		Невозможно разделить землю:
+
+Участки не выбраны.
+	</notification>
+	<notification name="CannotDivideLandPartialSelection">
+		Невозможно разделить землю:
+
+Выбран весь участок.
+Попробуйте выбрать часть участка.
+	</notification>
+	<notification name="LandDivideWarning">
+		Разделение этой земли приведет к разделению участка надвое, и для каждого участка можно будет задать отдельные настройки. Некоторые настройки после разделения будут возвращены к значениям по умолчанию.
+
+Разделить землю?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="CannotDivideLandNoRegion">
+		Невозможно разделить землю:
+Не удается найти регион, в котором находится эта земля.
+	</notification>
+	<notification name="CannotJoinLandNoRegion">
+		Невозможно объединить землю:
+Не удается найти регион, в котором находится эта земля.
+	</notification>
+	<notification name="CannotJoinLandNothingSelected">
+		Невозможно объединить землю:
+Участки не выбраны.
+	</notification>
+	<notification name="CannotJoinLandEntireParcelSelected">
+		Невозможно объединить землю:
+Выбран только один участок.
+
+Выберите землю на обоих участках.
+	</notification>
+	<notification name="CannotJoinLandSelection">
+		Невозможно объединить землю:
+Следует выбрать более одного участка.
+
+Выберите землю на обоих участках.
+	</notification>
+	<notification name="JoinLandWarning">
+		Объединение земли приведет к созданию одного большого участка изо всех участков, пересекающих выбранный прямоугольник.
+Потребуется сбросить имя и настройки нового участка.
+
+Объединить землю?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmNotecardSave">
+		Эта заметка должна быть сохранена до того, как предмет сможет быть скопирован или просмотрен. Сохранить заметку?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmItemCopy">
+		Копировать этот предмет в ваш инвентарь?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="Копировать"/>
+	</notification>
+	<notification name="ResolutionSwitchFail">
+		Не удалось сменить разрешение на [RESX] х [RESY]
+	</notification>
+	<notification name="ErrorUndefinedGrasses">
+		Ошибка. Не определена трава: [SPECIES]
+	</notification>
+	<notification name="ErrorUndefinedTrees">
+		Ошибка. Не определены деревья: [SPECIES]
+	</notification>
+	<notification name="CannotSaveWearableOutOfSpace">
+		Невозможно сохранить «[NAME]» в файл одежды.  Освободите место на компьютере и сохраните одежду снова.
+	</notification>
+	<notification name="CannotSaveToAssetStore">
+		Невозможно сохранить «[NAME]» в центральном хранилище активов.
+Обычно это временная неполадка. Исправьте настройки и сохраните одежду снова через несколько минут.
+	</notification>
+	<notification name="YouHaveBeenLoggedOut">
+		Черт! Вас выкинуло из [SECOND_LIFE]
+            [MESSAGE]
+		<usetemplate name="okcancelbuttons" notext="Выйти" yestext="Просмотреть IM и чат"/>
+	</notification>
+	<notification name="OnlyOfficerCanBuyLand">
+		Невозможно купить землю для группы:
+У вас нет прав на покупку земли для вашей активной группы.
+	</notification>
+	<notification label="Добавить друга" name="AddFriendWithMessage">
+		Друзья могут давать разрешения для отслеживания своего положения на карте и приема обновлений статуса в сети.
+
+Предложить дружбу жителю [NAME]?
+		<form name="form">
+			<input name="message">
+				Хочешь быть моим другом?
+			</input>
+			<button name="Offer" text="OK"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification label="Сохранить костюм" name="SaveOutfitAs">
+		Сохранить текущую одежду как новый костюм:
+		<form name="form">
+			<input name="message">
+				[DESC] (новый)
+			</input>
+			<button name="OK" text="OK"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification label="Сохранить одежду?" name="SaveWearableAs">
+		Сохранить предмет в инвентаре как:
+		<form name="form">
+			<input name="message">
+				[DESC] (новый)
+			</input>
+			<button name="OK" text="OK"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification label="Переименовать костюм" name="RenameOutfit">
+		Новое название костюма:
+		<form name="form">
+			<input name="new_name">
+				[NAME]
+			</input>
+			<button name="OK" text="OK"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification name="RemoveFromFriends">
+		Удалить жителя &lt;nolink&gt;[NAME]&lt;/nolink&gt; из вашего списка друзей?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="RemoveMultipleFromFriends">
+		Удалить нескольких жителей из вашего списка друзей?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="GodDeleteAllScriptedPublicObjectsByUser">
+		Вы действительно хотите удалить все скриптовые объекты, принадлежащие
+** [AVATAR_NAME] **
+на всей остальной земле в этом симуляторе?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="GodDeleteAllScriptedObjectsByUser">
+		Вы действительно хотите УДАЛИТЬ ВСЕ скриптовые объекты, принадлежащие
+** [AVATAR_NAME] **
+на ВСЕЙ ЗЕМЛЕ в этом симуляторе?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="GodDeleteAllObjectsByUser">
+		Вы действительно хотите УДАЛИТЬ ВСЕ объекты (скриптовые и прочие), принадлежащие
+** [AVATAR_NAME] **
+на ВСЕЙ ЗЕМЛЕ в этом симуляторе?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="BlankClassifiedName">
+		Необходимо указать имя для вашей рекламы.
+	</notification>
+	<notification name="MinClassifiedPrice">
+		Стоимость размещения рекламы должна быть как минимум L$[MIN_PRICE].
+
+Введите более высокую цену.
+	</notification>
+	<notification name="ConfirmItemDeleteHasLinks">
+		Имеется ссылка, указывающая как минимум на один из выбранных вами предметов.  Если удалить этот предмет, его ссылки перестанут работать.  Настоятельно рекомендуется сначала удалить ссылки.
+
+Действительно удалить эти предметы?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmObjectDeleteLock">
+		Как минимум один из выбранных вами предметов является фиксированным.
+
+Действительно удалить эти предметы?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmObjectDeleteNoCopy">
+		Как минимум один из выбранных вами предметов не является копируемым.
+
+Действительно удалить эти предметы?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmObjectDeleteNoOwn">
+		Как минимум один из выбранных вами предметов не принадлежит вам.
+
+Действительно удалить эти предметы?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmObjectDeleteLockNoCopy">
+		Как минимум один объект фиксирован.
+Как минимум один объект не копируемый.
+
+Действительно удалить эти предметы?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmObjectDeleteLockNoOwn">
+		Как минимум один объект фиксирован.
+Вы не владеете по крайней мере одним объектом.
+
+Действительно удалить эти предметы?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmObjectDeleteNoCopyNoOwn">
+		Как минимум один объект не копируемый.
+Вы не владеете по крайней мере одним объектом.
+
+Действительно удалить эти предметы?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
+		Как минимум один объект фиксирован.
+Как минимум один объект не копируемый.
+Вы не владеете по крайней мере одним объектом.
+
+Действительно удалить эти предметы?
+		<usetemplate name="okcancelbuttons" notext="отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmObjectTakeLock">
+		Как минимум один объект фиксирован.
+
+Действительно взять эти предметы?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmObjectTakeNoOwn">
+		Вы не являетесь владельцем всех объектов, которые собираетесь взять.
+Если продолжить, будут применены разрешения следующего владельца, которые могут ограничить вашу способность изменять или копировать эти объекты.
+
+Действительно взять эти предметы?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmObjectTakeLockNoOwn">
+		Как минимум один объект фиксирован.
+Вы не являетесь владельцем всех объектов, которые собираетесь взять.
+Если продолжить, будут применены разрешения следующего владельца, которые могут ограничить вашу способность изменять или копировать эти объекты.
+В то же время вы можете взять объекты, выбранные сейчас.
+
+Действительно взять эти предметы?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="CantBuyLandAcrossMultipleRegions">
+		Невозможно купить землю, потому что выделение охватывает несколько регионов.
+
+Выберите меньшую область и повторите попытку.
+	</notification>
+	<notification name="DeedLandToGroup">
+		После передачи этого участка группе потребуется достаточное количество финансов для поддержки данной земли.
+Стоимость покупки земли не возвращается владельцу. Если переданный участок продается, выручка за нее равномерно распределяется между участниками группы.
+
+Передать эти [AREA] м² земли группе «[GROUP_NAME]»?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="DeedLandToGroupWithContribution">
+		После передачи этого участка группе потребуется достаточное количество финансов для поддержки данной земли.
+Передача будет включать одновременный земельный взнос в группу от жителя «[NAME]».
+Стоимость покупки земли не возвращается владельцу. Если переданный участок продается, выручка за нее равномерно распределяется между участниками группы.
+
+Передать эти [AREA] м² земли группе «[GROUP_NAME]»?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="DisplaySetToSafe">
+		Установлен безопасный уровень настроек отображения, так как указан параметр -safe.
+	</notification>
+	<notification name="DisplaySetToRecommendedGPUChange">
+		Установлен рекомендуемый уровень настроек отображения, так как графическая карта изменена:
+с «[LAST_GPU]»
+на «[THIS_GPU]»
+	</notification>
+	<notification name="DisplaySetToRecommendedFeatureChange">
+		Установлен рекомендуемый уровень настроек отображения, так как подсистема визуализации изменена.
+	</notification>
+	<notification name="ErrorMessage">
+		[ERROR_MESSAGE]
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="AvatarMovedDesired">
+		Требуемое вами местоположение сейчас недоступно.
+Вы перемещены в соседний регион.
+	</notification>
+	<notification name="AvatarMovedLast">
+		Ваше последнее местоположение сейчас недоступно.
+Вы перемещены в соседний регион.
+	</notification>
+	<notification name="AvatarMovedHome">
+		Ваше домашнее местоположение сейчас недоступно.
+Вы перемещены в соседний регион.
+Возможно, потребуется задать новое домашнее местоположение.
+	</notification>
+	<notification name="ClothingLoading">
+		Ваша одежда все еще загружается.
+Вы можете использовать [SECOND_LIFE] как обычно, другие пользователи будут видеть вас нормально.
+		<form name="form">
+			<ignore name="ignore" text="Загрузка одежды занимает значительное время"/>
+		</form>
+	</notification>
+	<notification name="FirstRun">
+		Установка [APP_NAME] завершена.
+
+Если вы используете [SECOND_LIFE] впервые, для входа в программу вам потребуется создать аккаунт.
+Вернуться на [http://join.secondlife.com secondlife.com] для создания аккаунта?
+		<usetemplate name="okcancelbuttons" notext="Продолжить" yestext="Создать аккаунт..."/>
+	</notification>
+	<notification name="LoginPacketNeverReceived">
+		Возникли неполадки при подключении. Возможно, проблема с вашим подключением к интернету или [SECOND_LIFE_GRID].
+
+Варианты ваших действий: проверьте подключение к интернету и повторите попытку через несколько минут, нажмите кнопку «Справка» для перехода к [SUPPORT_SITE] или кнопку «Телепортация», чтобы телепортироваться домой.
+		<url name="url">
+			http://secondlife.com/support/
+		</url>
+		<form name="form">
+			<button name="OK" text="OK"/>
+			<button name="Help" text="Справка"/>
+			<button name="Teleport" text="Телепортация"/>
+		</form>
+	</notification>
+	<notification name="WelcomeChooseSex">
+		Ваш персонаж появится через мгновение.
+
+Для ходьбы нажимайте клавиши со стрелками.
+В любой момент можно нажать клавишу F1 для получения справки или информации о [SECOND_LIFE].
+Выберите мужской или женский аватар. Этот выбор затем можно будет изменить.
+		<usetemplate name="okcancelbuttons" notext="Женщина" yestext="Мужчина"/>
+	</notification>
+	<notification name="CantTeleportToGrid">
+		Не удалось телепортироваться в [SLURL]: это место находится на другой сетке ([GRID]), а не на текущей ([CURRENT_GRID]). Закройте программу и попробуйте еще раз.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="GeneralCertificateError">
+		Не удалось подключиться к серверу.
+[REASON]
+
+Тема: [SUBJECT_NAME_STRING]
+Издатель: [ISSUER_NAME_STRING]
+Действительно с: [VALID_FROM]
+Действительно по: [VALID_TO]
+Отпечаток MD5: [SHA1_DIGEST]
+Отпечаток SHA1: [MD5_DIGEST]
+Использование ключа: [KEYUSAGE]
+Расширенное использование ключа: [EXTENDEDKEYUSAGE]
+Идентификатор ключа темы: [SUBJECTKEYIDENTIFIER]
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="TrustCertificateError">
+		Центр сертификации для этого сервера неизвестен.
+
+Сведения о сертификате:
+Тема: [SUBJECT_NAME_STRING]
+Издатель: [ISSUER_NAME_STRING]
+Действительно с: [VALID_FROM]
+Действительно по: [VALID_TO]
+Отпечаток MD5: [SHA1_DIGEST]
+Отпечаток SHA1: [MD5_DIGEST]
+Использование ключа: [KEYUSAGE]
+Расширенное использование ключа: [EXTENDEDKEYUSAGE]
+Идентификатор ключа темы: [SUBJECTKEYIDENTIFIER]
+
+Доверять этому центру сертификации?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="Доверять"/>
+	</notification>
+	<notification name="NotEnoughCurrency">
+		[NAME] L$ [PRICE] У вас недостаточно L$ для этого.
+	</notification>
+	<notification name="GrantedModifyRights">
+		[NAME] дал(а) вам разрешение на редактирование своих объектов.
+	</notification>
+	<notification name="RevokedModifyRights">
+		Ваше право на изменение объектов [NAME] отозвано
+	</notification>
+	<notification name="FlushMapVisibilityCaches">
+		Кэши карт данного региона будут очищены.
+Это полезно только для целей отладки.
+(В рабочей версии надо подождать 5 минут, затем карта каждого пользователя будет обновлена после входа в программу.)
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="BuyOneObjectOnly">
+		Нельзя купить несколько объектов одновременно.  Выберите один объект и повторите попытку.
+	</notification>
+	<notification name="OnlyCopyContentsOfSingleItem">
+		Нельзя копировать содержимое нескольких объектов одновременно.
+Выберите один объект и повторите попытку.
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="KickUsersFromRegion">
+		Телепортировать всех жителей в этом регионе домой?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="EstateObjectReturn">
+		Вы действительно хотите вернуть объекты, принадлежащие [USER_NAME]?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="InvalidTerrainBitDepth">
+		Не удалось задать текстуры региона:
+у текстуры [TEXTURE_NUM] неправильная битовая глубина [TEXTURE_BIT_DEPTH].
+
+Замените текстуру [TEXTURE_NUM] на 24-битное изображение размером 512x512 или меньше и снова нажмите кнопку «Применить».
+	</notification>
+	<notification name="InvalidTerrainSize">
+		Не удалось задать текстуры региона:
+у текстуры [TEXTURE_NUM] слишком большой размер [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y].
+
+Замените текстуру [TEXTURE_NUM] на 24-битное изображение размером 512x512 или меньше и снова нажмите кнопку «Применить».
+	</notification>
+	<notification name="RawUploadStarted">
+		Началась передача. Она может занять до двух минут, в зависимости от скорости соединения.
+	</notification>
+	<notification name="ConfirmBakeTerrain">
+		Вы действительно хотите зафиксировать текущий ландшафт, сделать его высоту средней точкой для верхней и нижней точек ландшафта и принять по умолчанию для функции «Вернуть»?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="MaxAllowedAgentOnRegion">
+		У вас может быть не более [MAX_AGENTS] допущенных жителей.
+	</notification>
+	<notification name="MaxBannedAgentsOnRegion">
+		У вас может быть не более [MAX_BANNED] забаненных жителей.
+	</notification>
+	<notification name="MaxAgentOnRegionBatch">
+		Не удалось добавить [NUM_ADDED] агентов:
+превышен лимит [MAX_AGENTS] [LIST_TYPE] на [NUM_EXCESS].
+	</notification>
+	<notification name="MaxAllowedGroupsOnRegion">
+		У вас может быть не более [MAX_GROUPS] допущенных групп.
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="Зафиксировать"/>
+	</notification>
+	<notification name="MaxManagersOnRegion">
+		У вас может быть не более [MAX_MANAGER] менеджеров землевладения.
+	</notification>
+	<notification name="OwnerCanNotBeDenied">
+		Нельзя добавить землевладельца в список забаненных жителей его же земли.
+	</notification>
+	<notification name="CanNotChangeAppearanceUntilLoaded">
+		Нельзя изменять внешность, пока загружаются одежда и фигура.
+	</notification>
+	<notification name="ClassifiedMustBeAlphanumeric">
+		Название вашей рекламы должно начинаться с буквы A - Z или цифры. Использовать знаки препинания не разрешено.
+	</notification>
+	<notification name="CantSetBuyObject">
+		Невозможно задать покупку объекта, потому что этот объект не для продажи.
+Задайте продажу объекта и повторите попытку.
+	</notification>
+	<notification name="FinishedRawDownload">
+		Завершена загрузка файла ландшафта:
+[DOWNLOAD_PATH].
+	</notification>
+	<notification name="DownloadWindowsMandatory">
+		Появилась новая версия [APP_NAME].
+[MESSAGE]
+Это обновление необходимо загрузить для использования [APP_NAME].
+		<usetemplate name="okcancelbuttons" notext="Выйти" yestext="Загрузить"/>
+	</notification>
+	<notification name="DownloadWindows">
+		Появилось обновление для [APP_NAME].
+[MESSAGE]
+Устанавливать это обновление не обязательно, но рекомендуется для повышения производительности и стабильности.
+		<usetemplate name="okcancelbuttons" notext="Продолжить" yestext="Загрузить"/>
+	</notification>
+	<notification name="DownloadWindowsReleaseForDownload">
+		Появилось обновление для [APP_NAME].
+[MESSAGE]
+Устанавливать это обновление не обязательно, но рекомендуется для повышения производительности и стабильности.
+		<usetemplate name="okcancelbuttons" notext="Продолжить" yestext="Загрузить"/>
+	</notification>
+	<notification name="DownloadLinuxMandatory">
+		Появилась новая версия [APP_NAME].
+[MESSAGE]
+Это обновление необходимо загрузить для использования [APP_NAME].
+		<usetemplate name="okcancelbuttons" notext="Выйти" yestext="Загрузить"/>
+	</notification>
+	<notification name="DownloadLinux">
+		Появилось обновление для [APP_NAME].
+[MESSAGE]
+Устанавливать это обновление не обязательно, но рекомендуется для повышения производительности и стабильности.
+		<usetemplate name="okcancelbuttons" notext="Продолжить" yestext="Загрузить"/>
+	</notification>
+	<notification name="DownloadLinuxReleaseForDownload">
+		Появилось обновление для [APP_NAME].
+[MESSAGE]
+Устанавливать это обновление не обязательно, но рекомендуется для повышения производительности и стабильности.
+		<usetemplate name="okcancelbuttons" notext="Продолжить" yestext="Загрузить"/>
+	</notification>
+	<notification name="DownloadMacMandatory">
+		Появилась новая версия [APP_NAME].
+[MESSAGE]
+Это обновление необходимо загрузить для использования [APP_NAME].
+
+Загрузить его в папку приложений?
+		<usetemplate name="okcancelbuttons" notext="Выйти" yestext="Загрузить"/>
+	</notification>
+	<notification name="DownloadMac">
+		Появилось обновление для [APP_NAME].
+[MESSAGE]
+Устанавливать это обновление не обязательно, но рекомендуется для повышения производительности и стабильности.
+
+Загрузить его в папку приложений?
+		<usetemplate name="okcancelbuttons" notext="Продолжить" yestext="Загрузить"/>
+	</notification>
+	<notification name="DownloadMacReleaseForDownload">
+		Появилось обновление для [APP_NAME].
+[MESSAGE]
+Устанавливать это обновление не обязательно, но рекомендуется для повышения производительности и стабильности.
+
+Загрузить его в папку приложений?
+		<usetemplate name="okcancelbuttons" notext="Продолжить" yestext="Загрузить"/>
+	</notification>
+	<notification name="FailedUpdateInstall">
+		Произошла ошибка при установке обновления.
+Загрузите новую версию программы на сайте
+http://secondlife.com/download.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="FailedRequiredUpdateInstall">
+		Не удалось установить обязательное обновление. 
+Вы не сможете войти в [APP_NAME], пока обновление не будет установлено.
+
+Загрузите новую версию программы на сайте
+http://secondlife.com/download.
+		<usetemplate name="okbutton" yestext="Выйти"/>
+	</notification>
+	<notification name="UpdaterServiceNotRunning">
+		Появились обязательные обновления для вашей версии Second Life.
+
+Загрузите это обновление на сайте http://www.secondlife.com/downloads
+или установите его сейчас.
+		<usetemplate name="okcancelbuttons" notext="Выйти из Second Life" yestext="Загрузить и установить сейчас"/>
+	</notification>
+	<notification name="DownloadBackgroundTip">
+		Загружено обновление для вашей версии [APP_NAME].
+Версия [VERSION]. [[RELEASE_NOTES_FULL_URL] Сведения об этом обновлении]
+		<usetemplate name="okcancelbuttons" notext="Позже..." yestext="Установите обновление и перезапустите [APP_NAME]"/>
+	</notification>
+	<notification name="DownloadBackgroundDialog">
+		Загружено обновление для вашей версии [APP_NAME].
+Версия [VERSION]. [[RELEASE_NOTES_FULL_URL] Сведения об этом обновлении]
+		<usetemplate name="okcancelbuttons" notext="Позже..." yestext="Установите обновление и перезапустите [APP_NAME]"/>
+	</notification>
+	<notification name="RequiredUpdateDownloadedVerboseDialog">
+		Загружено обязательное обновление.
+Версия [VERSION]
+
+Необходимо перезапустить [APP_NAME] для установки обновления.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="RequiredUpdateDownloadedDialog">
+		Необходимо перезапустить [APP_NAME] для установки обновления.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="DeedObjectToGroup">
+		В результате передачи этого объекта группа:
+* Получит L$ в уплату за объект
+		<usetemplate ignoretext="Подтверждать перед передачей объекта группе" name="okcancelignore" notext="Отмена" yestext="Передать"/>
+	</notification>
+	<notification name="WebLaunchExternalTarget">
+		Открыть браузер для просмотра этого контента?
+		<usetemplate ignoretext="Запустить браузер для просмотра веб-страницы" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="WebLaunchJoinNow">
+		Перейти на [http://secondlife.com/account/ информационную панель] для управления вашим аккаунтом?
+		<usetemplate ignoretext="Запустить браузер для управления аккаунтом" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="WebLaunchSecurityIssues">
+		Прочитайте на вики-странице [SECOND_LIFE] о том, как сообщить о проблеме с безопасностью.
+		<usetemplate ignoretext="Запустить браузер для просмотра инструкций в случае проблем с безопасностью" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="WebLaunchQAWiki">
+		Посетите вики-страницу вопросов и ответов по [SECOND_LIFE].
+		<usetemplate ignoretext="Запустить браузер для просмотра вики-страницы вопросов и ответов" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="WebLaunchPublicIssue">
+		Посетите страницу общедоступного средства исследования проблем [SECOND_LIFE], на котором можно сообщить об ошибках и других проблемах.
+		<usetemplate ignoretext="Запустить браузер для использования общедоступного средства исследования проблем" name="okcancelignore" notext="Отмена" yestext="Перейти на страницу"/>
+	</notification>
+	<notification name="WebLaunchSupportWiki">
+		Перейти на официальный блог Linden для просмотра свежих новостей и прочей информации.
+		<usetemplate ignoretext="Запустить браузер для просмотра блога" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="WebLaunchLSLGuide">
+		Открыть руководство по скриптам для получения справки?
+		<usetemplate ignoretext="Запустить браузер для просмотра руководства по скриптам" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="WebLaunchLSLWiki">
+		Посетить портал LSL для получения справки по скриптам?
+		<usetemplate ignoretext="Запустить браузер для просмотра портала LSL" name="okcancelignore" notext="Отмена" yestext="Перейти на страницу"/>
+	</notification>
+	<notification name="ReturnToOwner">
+		Вы действительно хотите вернуть выбранные объекты их владельцам? Переносимые переданные объекты будут возвращены прежним владельцам.
+
+*ПРЕДУПРЕЖДЕНИЕ* Непереносимые переданные объекты будут удалены!
+		<usetemplate ignoretext="Подтверждать перед возвратом объектов владельцам" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="GroupLeaveConfirmMember">
+		Вы являетесь участником группы &lt;nolink&gt;[GROUP]&lt;/nolink&gt;.
+Хотите покинуть группу?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmKick">
+		Вы ДЕЙСТВИТЕЛЬНО хотите выбросить всех жителей с сетки?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="Выбросить всех жителей"/>
+	</notification>
+	<notification name="MuteLinden">
+		Заблокировать Linden нельзя.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="CannotStartAuctionAlreadyForSale">
+		Нельзя выставить на аукцион участок, который уже продается.  Отмените продажу участка, если действительно хотите начать аукцион.
+	</notification>
+	<notification label="Не удалось блокировать объект по имени" name="MuteByNameFailed">
+		Вы уже внесли это имя в черный список.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="RemoveItemWarn">
+		Удаление содержимого, хотя это и разрешено, может повредить объект. Хотите удалить этот предмет?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="CantOfferCallingCard">
+		Сейчас невозможно предложить визитку. Повторите попытку через минуту.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="CantOfferFriendship">
+		Сейчас невозможно предложить дружбу. Повторите попытку через минуту.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="BusyModeSet">
+		Установлен режим «Занят».
+Сообщения чата и IM будут скрыты. На IM-сообщения будет возвращаться заданный ответ в режиме «Занят». Все предложения телепортации будут отклоняться. Все предложения инвентаря будут направлены в корзину.
+		<usetemplate ignoretext="Смена моего статуса на режим «Занят»" name="okignore" yestext="OK"/>
+	</notification>
+	<notification name="JoinedTooManyGroupsMember">
+		Достигнуто максимальное количество групп. Выйдите из другой группы, прежде чем вступать в эту, или отклоните предложение.
+[NAME] пригласил(а) вас в группу.
+		<usetemplate name="okcancelbuttons" notext="Отклонить" yestext="Вступить"/>
+	</notification>
+	<notification name="JoinedTooManyGroups">
+		Достигнуто максимальное количество групп. Выйдите из другой группы, прежде чем вступать в эту или создавать новую группу.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="KickUser">
+		Выбросить этого жителя с таким сообщением?
+		<form name="form">
+			<input name="message">
+				Администратор вывел вас из программы.
+			</input>
+			<button name="OK" text="OK"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification name="KickAllUsers">
+		Выбросить всех жителей, которые сейчас есть на сетке, с таким сообщением?
+		<form name="form">
+			<input name="message">
+				Администратор вывел вас из программы.
+			</input>
+			<button name="OK" text="OK"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification name="FreezeUser">
+		Заморозить этого жителя с таким сообщением?
+		<form name="form">
+			<input name="message">
+				Вы заморожены. Вы не можете двигаться и беседовать в чате. Администратор свяжется с вами в сеансе мгновенных сообщений (IM).
+			</input>
+			<button name="OK" text="OK"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification name="UnFreezeUser">
+		Разморозить этого жителя с таким сообщением?
+		<form name="form">
+			<input name="message">
+				Вы больше не заморожены.
+			</input>
+			<button name="OK" text="OK"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification name="SetDisplayNameSuccess">
+		Привет, [DISPLAY_NAME]!
+
+Как и в реальной жизни, должно пройти какое-то время, прежде чем все узнают ваше новое имя.  Подождите несколько дней, пока [http://wiki.secondlife.com/wiki/Setting_your_display_name ваше имя не будет обновлено] в объектах, скриптах, поиске и т.д.
+	</notification>
+	<notification name="SetDisplayNameBlocked">
+		Вы не можете сменить свое экранное имя. Если вы считаете, что это ошибка, обратитесь в службу поддержки.
+	</notification>
+	<notification name="SetDisplayNameFailedLength">
+		Это имя слишком длинное. Экранное имя может содержать не более [LENGTH] символов.
+
+Сократите имя.
+	</notification>
+	<notification name="SetDisplayNameFailedGeneric">
+		Не удалось сменить ваше экранное имя. Повторите попытку позже.
+	</notification>
+	<notification name="SetDisplayNameMismatch">
+		Введенные экранные имена не совпадают. Введите их еще раз.
+	</notification>
+	<notification name="AgentDisplayNameUpdateThresholdExceeded">
+		Вам надо подождать, прежде чем вы сможете сменить свое экранное имя.
+
+См. http://wiki.secondlife.com/wiki/Setting_your_display_name
+
+Повторите попытку позже.
+	</notification>
+	<notification name="AgentDisplayNameSetBlocked">
+		Нельзя задать указанное вами имя. Оно содержит запрещенное слово.
+ 
+ Попробуйте указать другое имя.
+	</notification>
+	<notification name="AgentDisplayNameSetInvalidUnicode">
+		Выбранное вами экранное имя содержит недопустимые символы.
+	</notification>
+	<notification name="AgentDisplayNameSetOnlyPunctuation">
+		Ваше экранное имя кроме знаков препинания должно содержать буквы.
+	</notification>
+	<notification name="DisplayNameUpdate">
+		[OLD_NAME] ([SLID]) теперь носит имя [NEW_NAME].
+	</notification>
+	<notification name="OfferTeleport">
+		Предложить телепортацию к вам с отправкой сообщения?
+		<form name="form">
+			<input name="message">
+				Присоединиться ко мне в [REGION]
+			</input>
+			<button name="OK" text="OK"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification name="TooManyTeleportOffers">
+		Попытка сделать [OFFERS] предложений телепортации, что больше лимита ([LIMIT]).
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="OfferTeleportFromGod">
+		Творец вызывает жителя к вам?
+		<form name="form">
+			<input name="message">
+				Присоединиться ко мне в [REGION]
+			</input>
+			<button name="OK" text="OK"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification name="TeleportFromLandmark">
+		Вы действительно хотите телепортироваться в &lt;nolink&gt;[LOCATION]&lt;/nolink&gt;?
+		<usetemplate ignoretext="Подтверждать телепортацию на закладку" name="okcancelignore" notext="Отмена" yestext="Телепортация"/>
+	</notification>
+	<notification name="TeleportToPick">
+		Телепортироваться в [PICK]?
+		<usetemplate ignoretext="Подтверждать телепортацию на место в подборке" name="okcancelignore" notext="Отмена" yestext="Телепортация"/>
+	</notification>
+	<notification name="TeleportToClassified">
+		Телепортироваться в [CLASSIFIED]?
+		<usetemplate ignoretext="Подтверждать телепортацию на место в рекламном объявлении" name="okcancelignore" notext="Отмена" yestext="Телепортация"/>
+	</notification>
+	<notification name="TeleportToHistoryEntry">
+		Телепортироваться в [HISTORY_ENTRY]?
+		<usetemplate ignoretext="Подтверждать телепортацию на место в журнале" name="okcancelignore" notext="Отмена" yestext="Телепортация"/>
+	</notification>
+	<notification label="Сообщение всем в моем землевладении" name="MessageEstate">
+		Введите краткое объявление для всех жителей, которые сейчас находятся в вашем землевладении.
+		<form name="form">
+			<button name="OK" text="OK"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification label="Изменить землевладение Linden" name="ChangeLindenEstate">
+		Вы собираетесь изменить землевладение, которое принадлежит компании Linden (материк, сетку для подростков, ориентацию и т.д.).
+
+Это ОЧЕНЬ ОПАСНО, так как серьезно повлияет на огромное количество жителей.  Ваше изменение распространится на тысячи регионов материка и вызовет сбой сервера.
+
+Начать?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification label="Изменить доступ к землевладению Linden" name="ChangeLindenAccess">
+		Вы собираетесь изменить список доступа к землевладению, которое принадлежит компании Linden (материк, сетка для подростков, ориентация и т.д.).
+
+Это действие ОПАСНО и допускается только для устранения нарушения, которое позволяет вводить и выводить объекты и L$ из сетки.
+Ваше изменение распространится на тысячи регионов и вызовет сбой сервера.
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification label="Выбрать землевладение" name="EstateAllowedAgentAdd">
+		Внести в список допущенных только для этого землевладения или для [ALL_ESTATES]?
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+	</notification>
+	<notification label="Выбрать землевладение" name="EstateAllowedAgentRemove">
+		Удалить из списка допущенных только для этого землевладения или для [ALL_ESTATES]?
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+	</notification>
+	<notification label="Выбрать землевладение" name="EstateAllowedGroupAdd">
+		Внести в групповой список допущенных только для этого землевладения или для [ALL_ESTATES]?
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+	</notification>
+	<notification label="Выбрать землевладение" name="EstateAllowedGroupRemove">
+		Удалить из группового списка допущенных только для этого землевладения или для [ALL_ESTATES]?
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+	</notification>
+	<notification label="Выбрать землевладение" name="EstateBannedAgentAdd">
+		Запретить доступ только для этого землевладения или для [ALL_ESTATES]?
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+	</notification>
+	<notification label="Выбрать землевладение" name="EstateBannedAgentRemove">
+		Удалить этого жителя из списка запрета доступа только для этого землевладения или для [ALL_ESTATES]?
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+	</notification>
+	<notification label="Выбрать землевладение" name="EstateManagerAdd">
+		Добавить менеджера только для этого землевладения или для [ALL_ESTATES]?
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+	</notification>
+	<notification label="Выбрать землевладение" name="EstateManagerRemove">
+		Удалить менеджера только для этого землевладения или для [ALL_ESTATES]?
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Для всех землевладений" yestext="Для этого землевладения"/>
+	</notification>
+	<notification label="Подтвердить выбрасывание" name="EstateKickUser">
+		Выбросить пользователя [EVIL_USER] из этого землевладения?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="EstateChangeCovenant">
+		Вы действительно хотите изменить соглашение по землевладению?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="RegionEntryAccessBlocked">
+		Вам нельзя быть в этом регионе из-за вашего рейтинга зрелости. Возможно, это результат недостатка информации, подтверждающей ваш возраст.
+
+Убедитесь, что у вас установлена последняя версия клиента, и прочитайте в Базе знаний о доступе к областям с этим рейтингом зрелости.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="RegionEntryAccessBlocked_KB">
+		Вам нельзя быть в этом регионе из-за вашего рейтинга зрелости.
+
+Перейти в Базу знаний и ознакомиться с рейтингами зрелости?
+		<url name="url">
+			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
+		</url>
+		<usetemplate ignoretext="Я не могу войти в этот регион из-за ограничений по рейтингу зрелости" name="okcancelignore" notext="Закрыть" yestext="Перейти в Базу знаний"/>
+	</notification>
+	<notification name="RegionEntryAccessBlocked_Notify">
+		Вам нельзя быть в этом регионе из-за вашего рейтинга зрелости.
+	</notification>
+	<notification name="RegionEntryAccessBlocked_Change">
+		Вам нельзя быть в этом регионе из-за вашей настройки рейтинга зрелости.
+
+Для входа в желаемый регион измените настройку рейтинга зрелости. После этого вам будет разрешено искать и просматривать контент [REGIONMATURITY]. Для отмены изменений выберите команды «Я &gt; Настройки &gt; Общие».
+		<form name="form">
+			<button name="OK" text="Изменить настройку"/>
+			<button name="Cancel" text="Закрыть"/>
+			<ignore name="ignore" text="Выбранная мной настройка рейтинга запрещает мне вход в регион"/>
+		</form>
+	</notification>
+	<notification name="PreferredMaturityChanged">
+		Теперь ваша настройка рейтинга зрелости: [RATING].
+	</notification>
+	<notification name="LandClaimAccessBlocked">
+		Вы не можете претендовать на эту землю из-за вашего рейтинга зрелости. Возможно, это результат недостатка информации, подтверждающей ваш возраст.
+
+Убедитесь, что у вас установлена последняя версия клиента, и прочитайте в Базе знаний о доступе к областям с этим рейтингом зрелости.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="LandClaimAccessBlocked_KB">
+		Вы не можете претендовать на эту землю из-за вашего рейтинга зрелости.
+
+Перейти в Базу знаний и ознакомиться с рейтингами зрелости?
+		<url name="url">
+			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
+		</url>
+		<usetemplate ignoretext="Я не могу претендовать на эту землю из-за ограничений по рейтингу зрелости" name="okcancelignore" notext="Закрыть" yestext="Перейти в Базу знаний"/>
+	</notification>
+	<notification name="LandClaimAccessBlocked_Notify">
+		Вы не можете претендовать на эту землю из-за вашего рейтинга зрелости.
+	</notification>
+	<notification name="LandClaimAccessBlocked_Change">
+		Вы не можете претендовать на эту землю из-за вашей настройки рейтинга зрелости.
+
+Нажмите кнопку «Изменить настройку», чтобы повысить свой рейтинг зрелости. После этого вам будет разрешено искать и просматривать контент [REGIONMATURITY]. Если в будущем понадобится отменить это изменение, выберите команды «Я &gt; Настройки &gt; Общие».
+		<usetemplate ignoretext="Выбранная мной настройка рейтинга запрещает мне претендовать на землю" name="okcancelignore" notext="Закрыть" yestext="Изменить настройку"/>
+	</notification>
+	<notification name="LandBuyAccessBlocked">
+		Вы не можете купить эту землю из-за вашего рейтинга зрелости. Возможно, это результат недостатка информации, подтверждающей ваш возраст.
+
+Убедитесь, что у вас установлена последняя версия клиента, и прочитайте в Базе знаний о доступе к областям с этим рейтингом зрелости.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="LandBuyAccessBlocked_KB">
+		Вы не можете купить эту землю из-за вашего рейтинга зрелости.
+
+Перейти в Базу знаний и ознакомиться с рейтингами зрелости?
+		<url name="url">
+			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
+		</url>
+		<usetemplate ignoretext="Я не могу купить эту землю из-за ограничений по рейтингу зрелости" name="okcancelignore" notext="Закрыть" yestext="Перейти в Базу знаний"/>
+	</notification>
+	<notification name="LandBuyAccessBlocked_Notify">
+		Вы не можете купить эту землю из-за вашего рейтинга зрелости.
+	</notification>
+	<notification name="LandBuyAccessBlocked_Change">
+		Вы не можете купить эту землю из-за выбранного вами рейтинга зрелости.
+
+Нажмите кнопку «Изменить настройку», чтобы повысить свой рейтинг зрелости. После этого вам будет разрешено искать и просматривать контент [REGIONMATURITY]. Если в будущем понадобится отменить это изменение, выберите команды «Я &gt; Настройки &gt; Общие».
+		<usetemplate ignoretext="Выбранная мной настройка рейтинга запрещает мне покупать землю" name="okcancelignore" notext="Закрыть" yestext="Изменить настройку"/>
+	</notification>
+	<notification name="TooManyPrimsSelected">
+		Выбрано слишком много примитивов.  Выберите [MAX_PRIM_COUNT] или меньше примитивов и повторите попытку.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="ProblemImportingEstateCovenant">
+		Проблема при импорте соглашения о землевладении.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="ProblemAddingEstateManager">
+		Проблема при добавлении нового менеджера землевладения.  Возможно, в одном или нескольких землевладениях список менеджеров уже заполнен.
+	</notification>
+	<notification name="ProblemAddingEstateGeneric">
+		Проблема при добавлении в этот список землевладения.  Возможно, в одном или нескольких землевладениях список уже заполнен.
+	</notification>
+	<notification name="UnableToLoadNotecardAsset">
+		Сейчас невозможно загрузить актив заметки.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="NotAllowedToViewNotecard">
+		Недостаточно прав для просмотра заметки, связанной с требуемым идентификатором актива.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="MissingNotecardAssetID">
+		Идентификатор актива для заметки отсутствует в базе данных.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="PublishClassified">
+		Помните, что плата за рекламу не возвращается.
+
+Опубликовать это рекламное объявление за L$[AMOUNT]?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="SetClassifiedMature">
+		Содержит ли эта реклама умеренный контент?
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="SetGroupMature">
+		Содержит ли эта группа умеренный контент?
+		<usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification label="Подтвердить перезапуск" name="ConfirmRestart">
+		Вы действительно хотите перезапустить этот регион через 2 минуты?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification label="Сообщение для всех в этом регионе" name="MessageRegion">
+		Введите краткое объявление для всех жителей в этом регионе.
+		<form name="form">
+			<button name="OK" text="OK"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification label="Изменен рейтинг зрелости региона" name="RegionMaturityChange">
+		Рейтинг зрелости для этого региона будет обновлен.
+Отображение этого изменения на карте может занять некоторое время.
+
+Для входа в регионы для взрослых у жителя должен быть подтвержденный аккаунт: либо с подтверждением возраста, либо с подтверждением оплаты.
+	</notification>
+	<notification label="Несоответствие версии голоса" name="VoiceVersionMismatch">
+		Данная версия [APP_NAME] несовместима с функцией голосового чата в этом регионе. Для правильной работы голосового чата необходимо обновить [APP_NAME].
+	</notification>
+	<notification label="Нельзя купить объекты" name="BuyObjectOneOwner">
+		Нельзя купить объекты одновременно у разных владельцев.
+Выберите один объект и повторите попытку.
+	</notification>
+	<notification label="Нельзя купить содержимое" name="BuyContentsOneOnly">
+		Нельзя купить содержимое нескольких объектов одновременно.
+Выберите один объект и повторите попытку.
+	</notification>
+	<notification label="Нельзя купить содержимое" name="BuyContentsOneOwner">
+		Нельзя купить объекты одновременно у разных владельцев.
+Выберите один объект и повторите попытку.
+	</notification>
+	<notification name="BuyOriginal">
+		Купить оригинальный объект от [OWNER] за L$[PRICE]?
+Вы станете владельцем этого объекта.
+Вы сможете:
+ изменять: [MODIFYPERM]
+ копировать: [COPYPERM]
+ перепродавать или отдавать объект: [RESELLPERM]
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="BuyOriginalNoOwner">
+		Купить оригинальный объект за L$[PRICE]?
+Вы станете владельцем этого объекта.
+Вы сможете:
+ изменять: [MODIFYPERM]
+ копировать: [COPYPERM]
+ перепродавать или отдавать объект: [RESELLPERM]
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="BuyCopy">
+		Купить копию от [OWNER] за L$[PRICE]?
+Объект будет скопирован в ваш инвентарь.
+Вы сможете:
+ изменять: [MODIFYPERM]
+ копировать: [COPYPERM]
+ перепродавать или отдавать объект: [RESELLPERM]
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="BuyCopyNoOwner">
+		Купить копию за L$[PRICE]?
+Объект будет скопирован в ваш инвентарь.
+Вы сможете:
+ изменять: [MODIFYPERM]
+ копировать: [COPYPERM]
+ перепродавать или отдавать объект: [RESELLPERM]
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="BuyContents">
+		Купить содержимое от [OWNER] за L$[PRICE]?
+Оно будет скопировано в ваш инвентарь.
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="BuyContentsNoOwner">
+		Купить содержимое за L$[PRICE]?
+Оно будет скопировано в ваш инвентарь.
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmPurchase">
+		Действие этой транзакции:
+[ACTION]
+
+Действительно совершить эту покупку?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmPurchasePassword">
+		Действие этой транзакции:
+[ACTION]
+
+Действительно совершить эту покупку?
+Введите свой пароль и нажмите «OK».
+		<form name="form">
+			<button name="ConfirmPurchase" text="OK"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification name="SetPickLocation">
+		Примечание.
+Вы изменили местоположение этой подборки, но остальные данные сохранили прежние значения.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="MoveInventoryFromObject">
+		Вы выбрали «не копируемые» предметы.
+Они будут перемещены в ваш инвентарь, а не скопированы.
+
+Переместить предмет(ы)?
+		<usetemplate ignoretext="Предупреждать перед перемещением «не копируемых» предметов из объекта" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="MoveInventoryFromScriptedObject">
+		Вы выбрали «не копируемые» предметы.  Они будут перемещены в ваш инвентарь, а не скопированы.
+Так как объект является скриптовым, перемещение предметов в ваш инвентарий может вызвать ошибки скрипта.
+
+Переместить предмет(ы)?
+		<usetemplate ignoretext="Предупреждать перед перемещением «не копируемых» предметов, которые могут повредить скриптовый объект" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ClickActionNotPayable">
+		Предупреждение. Задано действие по щелчку «Заплатить за объект», но оно будет работать, только если добавлен скрипт с событием money().
+		<form name="form">
+			<ignore name="ignore" text="Установлено действие «Заплатить за объект» при построении объекта без скрипта money()"/>
+		</form>
+	</notification>
+	<notification name="OpenObjectCannotCopy">
+		В этом объекте нет вещей, которые вам разрешено копировать.
+	</notification>
+	<notification name="WebLaunchAccountHistory">
+		Перейти на [http://secondlife.com/account/ информационную панель], чтобы увидеть историю аккаунта?
+		<usetemplate ignoretext="Запустить браузер для просмотра истории аккаунта" name="okcancelignore" notext="Отмена" yestext="Перейти на страницу"/>
+	</notification>
+	<notification name="ConfirmQuit">
+		Выйти из программы?
+		<usetemplate ignoretext="Подтверждать перед выходом" name="okcancelignore" notext="Не выходить" yestext="Выйти"/>
+	</notification>
+	<notification name="ConfirmRestoreToybox">
+		Это действие приведет к восстановлению стандартных кнопок и панелей инструментов.
+
+Это действие нельзя отменить.
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmClearAllToybox">
+		Это действие возвращает все кнопки в инструментарий, а панели инструментов становятся пустыми.
+    
+Это действие нельзя отменить.
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="DeleteItems">
+		[QUESTION]
+		<usetemplate ignoretext="Подтверждать перед удалением предметов" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="HelpReportAbuseEmailLL">
+		Этот инструмент служит для уведомления о нарушениях [http://secondlife.com/corporate/tos.php Пользовательского соглашения] и [http://secondlife.com/corporate/cs.php стандартов сообщества].
+
+Все нарушения, о которых поступили такие уведомления, расследуются и устраняются.
+	</notification>
+	<notification name="HelpReportAbuseSelectCategory">
+		Выберите категорию для этого уведомления о нарушении.
+Категории облегчают регистрацию и обработку уведомлений.
+	</notification>
+	<notification name="HelpReportAbuseAbuserNameEmpty">
+		Введите имя нарушителя.
+Точность указания облегчает регистрацию и обработку уведомлений.
+	</notification>
+	<notification name="HelpReportAbuseAbuserLocationEmpty">
+		Укажите место, в котором произошло нарушение.
+Точность указания облегчает регистрацию и обработку уведомлений.
+	</notification>
+	<notification name="HelpReportAbuseSummaryEmpty">
+		Введите краткое описание нарушения.
+Точность описания облегчает регистрацию и обработку уведомлений.
+	</notification>
+	<notification name="HelpReportAbuseDetailsEmpty">
+		Введите подробное описание нарушения.
+Укажите как можно больше конкретных деталей, включая имена и подробности происшествия, о котором вы сообщаете.
+Точность описания облегчает регистрацию и обработку уведомлений.
+	</notification>
+	<notification name="HelpReportAbuseContainsCopyright">
+		Уважаемый житель!
+
+Вы уведомляете о нарушении прав интеллектуальной собственности. Убедитесь, что ваше уведомление составлено правильно:
+
+(1) Процесс регистрации нарушения. Вы можете отправить уведомление о нарушении, если считаете, что какой-либо житель злоупотребляет системой разрешений [SECOND_LIFE], например, с помощью CopyBot или аналогичных инструментов копирования, и нарушает таким образом права интеллектуальной собственности. Наш отдел борьбы с нарушениями расследует такие случаи и принимает соответствующие дисциплинарные меры к нарушителям [http://secondlife.com/corporate/tos.php Пользовательского соглашения] или [http://secondlife.com/corporate/cs.php стандартов сообщества] [SECOND_LIFE] . Однако отдел борьбы с нарушениями не рассматривает просьбы об удалении контента из мира [SECOND_LIFE] и не отвечает на них.
+
+(2) Процесс DMCA или удаления контента. Для запроса об удалении контента из [SECOND_LIFE] следует ОБЯЗАТЕЛЬНО представить действительное уведомление о нарушении в соответствии с требованиями нашей [http://secondlife.com/corporate/dmca.php политики DMCA].
+
+Если вы все же хотите продолжить процесс регистрации нарушения, закройте это окно, составьте уведомление и отправьте его.  При необходимости выберите категорию «CopyBot или нарушение разрешений».
+
+С уважением,
+
+компания Linden Lab
+	</notification>
+	<notification name="FailedRequirementsCheck">
+		[FLOATER] не содержит следующих обязательных компонентов:
+[COMPONENTS]
+	</notification>
+	<notification label="Замена существующего присоединения" name="ReplaceAttachment">
+		К этой точке вашего тела уже присоединен другой объект.
+Заменить его выбранным объектом?
+		<form name="form">
+			<ignore name="ignore" text="Замена существующего присоединения выбранным предметом"/>
+			<button ignore="Заменять автоматически" name="Yes" text="OK"/>
+			<button ignore="Не заменять" name="No" text="Отмена"/>
+		</form>
+	</notification>
+	<notification label="Предупреждение о режиме «Занят»" name="BusyModePay">
+		У вас включен режим «Занят», поэтому вы не получите никаких предметов, предлагаемых в обмен на этот платеж.
+
+Хотите отключить режим «Занят» до завершения этой транзакции?
+		<form name="form">
+			<ignore name="ignore" text="Я собираюсь заплатить за пользователя или объект, когда включен режим «Занят»"/>
+			<button ignore="Всегда отключать режим «Занят»" name="Yes" text="OK"/>
+			<button ignore="Не отключать режим «Занят»" name="No" text="Отмена"/>
+		</form>
+	</notification>
+	<notification name="ConfirmDeleteProtectedCategory">
+		Папка «[FOLDERNAME]» является системной. Удаление системных папок может привести к нестабильности.  Действительно удалить эту папку?
+		<usetemplate ignoretext="Подтверждать перед удалением системной папки" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmEmptyTrash">
+		Вы действительно хотите необратимо удалить содержимое корзины?
+		<usetemplate ignoretext="Подтверждать перед опорожнением корзины инвентаря" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmClearBrowserCache">
+		Вы действительно хотите удалить журнал своих перемещений, веб-страниц и поиска?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmClearCache">
+		Вы действительно хотите очистить кэш программы?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ConfirmClearCookies">
+		Вы действительно хотите удалить файлы cookie?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="Да"/>
+	</notification>
+	<notification name="ConfirmClearMediaUrlList">
+		Вы действительно хотите очистить список сохраненных URL-адресов?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="Да"/>
+	</notification>
+	<notification name="ConfirmEmptyLostAndFound">
+		Вы действительно хотите необратимо удалить содержимое Бюро находок?
+		<usetemplate ignoretext="Подтверждать перед опорожнением Бюро находок инвентаря" name="okcancelignore" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="CopySLURL">
+		Данный SLurl был скопирован в буфер обмена:
+ [SLURL]
+
+Создайте ссылку на него на веб-странице для облегчения доступа к этому месту или самостоятельно вставьте его в адресную строку любого браузера.
+		<form name="form">
+			<ignore name="ignore" text="SLurl скопирован в буфер обмена"/>
+		</form>
+	</notification>
+	<notification name="WLSavePresetAlert">
+		Хотите заменить сохраненные настройки?
+		<usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="WLNoEditDefault">
+		Вы не можете редактировать или удалять настройку по умолчанию.
+	</notification>
+	<notification name="WLMissingSky">
+		Этот файл суточного цикла ссылается на отсутствующий файл неба: [SKY].
+	</notification>
+	<notification name="WLRegionApplyFail">
+		Не удалось применить настройки к региону.  Попробуйте покинуть регион, а затем вернуться в него.  Причина неполадки: [FAIL_REASON]
+	</notification>
+	<notification name="EnvCannotDeleteLastDayCycleKey">
+		Невозможно удалить последний ключ в этом суточном цикле: пустой суточный цикл не разрешен.  Следует изменить последний оставшийся ключ, а не удалять его и создавать новый.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="DayCycleTooManyKeyframes">
+		В этот суточный цикл больше нельзя добавлять ключевые кадры.  Суточные циклы области [SCOPE] могут содержать не больше [MAX] ключевых кадров.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="EnvUpdateRate">
+		Настройки окружающей среды региона можно обновлять не чаще, чем раз в [WAIT] секунд.  Подождите это время или дольше и повторите попытку.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="PPSaveEffectAlert">
+		Существует эффект пост-процессинга. Заменить его?
+		<usetemplate name="okcancelbuttons" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="ChatterBoxSessionStartError">
+		Невозможно начать новый сеанс чата с [RECIPIENT].
+[REASON]
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="ChatterBoxSessionEventError">
+		[EVENT]
+[REASON]
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="ForceCloseChatterBoxSession">
+		Ваш сеанс чата с [NAME] будет закрыт.
+[REASON]
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="Cannot_Purchase_an_Attachment">
+		Вы не можете купить объект, пока он присоединен.
+	</notification>
+	<notification label="О запросах на разрешение дебетования" name="DebitPermissionDetails">
+		Принятие этого запроса дает скрипту постоянное разрешение на снятие Linden-долларов (L$) с вашего счета. Для отзыва этого разрешения владелец объекта должен удалить объект или сбросить скрипты в нем.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="AutoWearNewClothing">
+		Вы хотите автоматически надевать создаваемую вами одежду?
+		<usetemplate ignoretext="Надевать одежду, создаваемую при редактировании моей внешности" name="okcancelignore" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="NotAgeVerified">
+		Доступ к контенту и областям для взрослых в Second Life разрешен только с 18 лет. Посетите нашу страницу проверки возраста и подтвердите, что вам уже исполнилось 18. 
+Страница будет открыта в браузере.
+
+[_URL]
+		<url name="url">
+			https://secondlife.com/my/account/verification.php
+		</url>
+		<usetemplate ignoretext="Мой возраст не подтвержден" name="okcancelignore" notext="Отмена" yestext="Перейти к проверке возраста"/>
+	</notification>
+	<notification name="Cannot enter parcel: no payment info on file">
+		Для посещения этой области необходимо зарегистрировать платеж.  Перейти на веб-сайт [SECOND_LIFE] и ввести эту информацию?
+
+[_URL]
+		<url name="url">
+			https://secondlife.com/account/
+		</url>
+		<usetemplate ignoretext="У меня не зарегистрирована информация о платежах" name="okcancelignore" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="MissingString">
+		Строка [STRING_NAME] отсутствует в strings.xml
+	</notification>
+	<notification name="SystemMessageTip">
+		[MESSAGE]
+	</notification>
+	<notification name="IMSystemMessageTip">
+		[MESSAGE]
+	</notification>
+	<notification name="Cancelled">
+		Отменено
+	</notification>
+	<notification name="CancelledSit">
+		Отмененная посадка
+	</notification>
+	<notification name="CancelledAttach">
+		Отмененное присоединение
+	</notification>
+	<notification name="ReplacedMissingWearable">
+		Отсутствующая одежда/часть тела заменена вещью по умолчанию.
+	</notification>
+	<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>
+	<notification name="AddSelfFriend">
+		Вы лучше всех, но нельзя добавить в друзья себя самого.
+	</notification>
+	<notification name="UploadingAuctionSnapshot">
+		Передача снимков мира и веб-сайта...
+(Занимает около 5 мин.)
+	</notification>
+	<notification name="UploadPayment">
+		Вы заплатили L$[AMOUNT] за передачу.
+	</notification>
+	<notification name="UploadWebSnapshotDone">
+		Передача снимка веб-сайта завершена.
+	</notification>
+	<notification name="UploadSnapshotDone">
+		Передача снимка мира завершена.
+	</notification>
+	<notification name="TerrainDownloaded">
+		Загрузка Terrain.raw завершена
+	</notification>
+	<notification name="GestureMissing">
+		Жеста [NAME] нет в базе данных.
+	</notification>
+	<notification name="UnableToLoadGesture">
+		Невозможно загрузить жест [NAME].
+	</notification>
+	<notification name="LandmarkMissing">
+		Закладки нет в базе данных.
+	</notification>
+	<notification name="UnableToLoadLandmark">
+		Невозможно загрузить закладку.  Повторите попытку.
+	</notification>
+	<notification name="CapsKeyOn">
+		Включен режим CAPS LOCK.
+Пароль может быть введен неправильно.
+	</notification>
+	<notification name="NotecardMissing">
+		Заметки нет в базе данных.
+	</notification>
+	<notification name="NotecardNoPermissions">
+		У вас нет прав для просмотра этой заметки.
+	</notification>
+	<notification name="RezItemNoPermissions">
+		Недостаточно разрешений для выкладывания объекта.
+	</notification>
+	<notification name="IMAcrossParentEstates">
+		Невозможно отправить сообщение из одного родительского землевладения в другое.
+	</notification>
+	<notification name="TransferInventoryAcrossParentEstates">
+		Невозможно перенести инвентарь из одного родительского землевладения в другое.
+	</notification>
+	<notification name="UnableToLoadNotecard">
+		Невозможно загрузить заметку.
+Повторите попытку.
+	</notification>
+	<notification name="ScriptMissing">
+		Скрипта нет в базе данных.
+	</notification>
+	<notification name="ScriptNoPermissions">
+		Недостаточно разрешений для просмотра скрипта.
+	</notification>
+	<notification name="UnableToLoadScript">
+		Невозможно загрузить скрипт.  Повторите попытку.
+	</notification>
+	<notification name="IncompleteInventory">
+		Все предлагаемое вами содержимое еще не доступно в данном месте. Попробуйте вновь предложить эти вещи через минуту.
+	</notification>
+	<notification name="CannotModifyProtectedCategories">
+		Защищенные категории нельзя изменять.
+	</notification>
+	<notification name="CannotRemoveProtectedCategories">
+		Защищенные категории нельзя удалять.
+	</notification>
+	<notification name="UnableToBuyWhileDownloading">
+		Покупка во время загрузки данных объекта невозможна.
+Повторите попытку.
+	</notification>
+	<notification name="UnableToLinkWhileDownloading">
+		Создание связи во время загрузки данных объекта невозможно.
+Повторите попытку.
+	</notification>
+	<notification name="CannotBuyObjectsFromDifferentOwners">
+		Можно купить объекты за один раз только у одного владельца.
+Выберите один объект.
+	</notification>
+	<notification name="ObjectNotForSale">
+		Этот объект не для продажи.
+	</notification>
+	<notification name="EnteringGodMode">
+		Переход в режим творца, уровень [LEVEL]
+	</notification>
+	<notification name="LeavingGodMode">
+		Переход из режима творца, уровень [LEVEL]
+	</notification>
+	<notification name="CopyFailed">
+		У вас нет прав на копирование этого предмета.
+	</notification>
+	<notification name="InventoryAccepted">
+		[NAME] получил(а) ваше предложение инвентаря.
+	</notification>
+	<notification name="InventoryDeclined">
+		[NAME] отклонил(а) ваше предложение инвентаря.
+	</notification>
+	<notification name="ObjectMessage">
+		[NAME]: [MESSAGE]
+	</notification>
+	<notification name="CallingCardAccepted">
+		Ваша визитка принята.
+	</notification>
+	<notification name="CallingCardDeclined">
+		Ваша визитка отклонена.
+	</notification>
+	<notification name="TeleportToLandmark">
+		Для телепортации в другое место, например «[NAME]», нажмите кнопку «Места»,
+    затем в открывшемся окне выберите вкладку «Закладки». Щелкните любую
+    закладку, чтобы выбрать ее, а затем нажмите кнопку «Телепортация» внизу окна.
+    (Также можно дважды щелкнуть закладку или щелкнуть ее правой кнопкой мыши и
+    выбрать команду «Телепортация».)
+	</notification>
+	<notification name="TeleportToPerson">
+		Чтобы обратиться к жителю, например «[NAME]», нажмите кнопку «Люди», выберите жителя в появившемся окне и нажмите кнопку
+    «IM» внизу окна.
+    (Также можно дважды щелкнуть имя жителя в списке или щелкнуть его правой кнопкой мыши и выбрать команду «IM».)
+	</notification>
+	<notification name="CantSelectLandFromMultipleRegions">
+		Нельзя выбрать землю с обеих сторон границы между серверами.
+Попробуйте выбрать участок поменьше.
+	</notification>
+	<notification name="SearchWordBanned">
+		Некоторые слова исключены из вашего поискового запроса из-за ограничений контента, установленных в стандартах сообщества.
+	</notification>
+	<notification name="NoContentToSearch">
+		Выберите хотя бы один тип контента для поиска («Общий», «Умеренный» или «Для взрослых»).
+	</notification>
+	<notification name="SystemMessage">
+		[MESSAGE]
+	</notification>
+	<notification name="PaymentReceived">
+		[MESSAGE]
+	</notification>
+	<notification name="PaymentSent">
+		[MESSAGE]
+	</notification>
+	<notification name="PaymentFailure">
+		[MESSAGE]
+	</notification>
+	<notification name="EventNotification">
+		Уведомление о событии:
+
+[NAME]
+[DATE]
+		<form name="form">
+			<button name="Details" text="Подробности"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification name="TransferObjectsHighlighted">
+		Все объекты на этом участке, которые будут переданы его покупателю, выделены цветом.
+
+* Передаваемые деревья и трава не выделяются.
+		<form name="form">
+			<button name="Done" text="Готово"/>
+		</form>
+	</notification>
+	<notification name="DeactivatedGesturesTrigger">
+		Деактивированные жесты с тем же триггером:
+[NAMES]
+	</notification>
+	<notification name="NoQuickTime">
+		В вашей системе не установлено программное обеспечение Apple QuickTime.
+Для просмотра потокового медиа на участках, которые поддерживают его, перейдите на сайт [http://www.apple.com/quicktime QuickTime] и установите QuickTime Player.
+	</notification>
+	<notification name="NoPlugin">
+		Не найден медиа-плагин для обработки данных типа MIME «[MIME_TYPE]».  Медиа этого типа будет недоступно.
+	</notification>
+	<notification name="MediaPluginFailed">
+		Ошибка следующего медиа-плагина:
+    [PLUGIN]
+
+Переустановите плагин или обратитесь к его разработчику, если ошибки возникают снова.
+		<form name="form">
+			<ignore name="ignore" text="Не удалось запустить медиа-плагин"/>
+		</form>
+	</notification>
+	<notification name="OwnedObjectsReturned">
+		Принадлежащие вам объекты на выбранном земельном участке возвращены в ваш инвентарь.
+	</notification>
+	<notification name="OtherObjectsReturned">
+		Принадлежащие [NAME] объекты на выбранном земельном участке возвращены в его инвентарь.
+	</notification>
+	<notification name="OtherObjectsReturned2">
+		Принадлежащие жителю «[NAME]» объекты на выбранном земельном участке возвращены владельцу.
+	</notification>
+	<notification name="GroupObjectsReturned">
+		Переданные группе [GROUPNAME] объекты на выбранном земельном участке возвращены в инвентарь владельцев.
+Переносимые переданные объекты возвращены прежним владельцам.
+Непереносимые объекты, переданные группе, удалены.
+	</notification>
+	<notification name="UnOwnedObjectsReturned">
+		Объекты на выбранном земельном участке, НЕ принадлежащие вам, возвращены владельцам.
+	</notification>
+	<notification name="ServerObjectMessage">
+		Сообщение от [NAME]:
+&lt;nolink&gt;[MSG]&lt;/nolink&gt;
+	</notification>
+	<notification name="NotSafe">
+		На этой земле разрешены повреждения.
+Здесь вы можете пострадать. Если вы умрете, вы будете телепортированы в ваше домашнее местоположение.
+	</notification>
+	<notification name="NoFly">
+		В этой области запрещены полеты.
+Вы не сможете здесь летать.
+	</notification>
+	<notification name="PushRestricted">
+		В этой области запрещено толкаться. Здесь вы не можете никого толкать, только если не являетесь владельцем земли.
+	</notification>
+	<notification name="NoVoice">
+		В этой области запрещен голосовой чат. Здесь вы не услышите ничью речь.
+	</notification>
+	<notification name="NoBuild">
+		В этой области запрещено строительство. Здесь вы не сможете строить или выкладывать объекты.
+	</notification>
+	<notification name="SeeAvatars">
+		На этом участке аватары и текстовый чат скрыты от другого участка.   Жителей за пределами этого участка не будет видно, а они не будут видеть вас.  Обычный текстовый чат на канале 0 также блокируется.
+	</notification>
+	<notification name="ScriptsStopped">
+		Администратор временно остановил все скрипты в этом регионе.
+	</notification>
+	<notification name="ScriptsNotRunning">
+		В этом регионе не работают любые скрипты.
+	</notification>
+	<notification name="NoOutsideScripts">
+		На этой земле запрещены внешние скрипты.
+
+Здесь будут работать только скрипты, принадлежащие владельцу земли.
+	</notification>
+	<notification name="ClaimPublicLand">
+		Вы можете претендовать на публичную землю только в регионе, в котором вы находитесь.
+	</notification>
+	<notification name="RegionTPAccessBlocked">
+		Вам нельзя быть в этом регионе из-за вашего рейтинга зрелости. Подтвердите свой возраст и/или установите последнюю версию клиента.
+
+Прочитайте в Базе знаний о доступе к областям с этим рейтингом зрелости.
+	</notification>
+	<notification name="URBannedFromRegion">
+		Вы забанены в регионе.
+	</notification>
+	<notification name="NoTeenGridAccess">
+		Ваш аккаунт не может подключиться к этому региону сетки для подростков.
+	</notification>
+	<notification name="ImproperPaymentStatus">
+		У вас нет необходимого статуса оплаты для входа в этот регион.
+	</notification>
+	<notification name="MustGetAgeRgion">
+		Для входа в этот регион необходимо подтверждение возраста.
+	</notification>
+	<notification name="MustGetAgeParcel">
+		Для входа на этот участок необходимо подтверждение возраста.
+	</notification>
+	<notification name="NoDestRegion">
+		Не найден регион назначения.
+	</notification>
+	<notification name="NotAllowedInDest">
+		Вам не разрешен доступ в пункт назначения.
+	</notification>
+	<notification name="RegionParcelBan">
+		Нельзя пересечь границу региона по пути на забаненный участок. Выберите другой путь.
+	</notification>
+	<notification name="TelehubRedirect">
+		Вы перенаправлены на телехаб.
+	</notification>
+	<notification name="CouldntTPCloser">
+		Не удалось телепортироваться ближе к пункту назначения.
+	</notification>
+	<notification name="TPCancelled">
+		Телепортация отменена.
+	</notification>
+	<notification name="FullRegionTryAgain">
+		Попытка входа в регион, который сейчас заполнен.
+Повторите попытку через несколько минут.
+	</notification>
+	<notification name="GeneralFailure">
+		Общий сбой.
+	</notification>
+	<notification name="RoutedWrongRegion">
+		Направление в неверный регион. Повторите попытку.
+	</notification>
+	<notification name="NoValidAgentID">
+		Нет подходящего идентификатора агента.
+	</notification>
+	<notification name="NoValidSession">
+		Нет подходящего идентификатора сеанса.
+	</notification>
+	<notification name="NoValidCircuit">
+		Нет подходящего кода канала.
+	</notification>
+	<notification name="NoValidTimestamp">
+		Нет подходящей метки времени.
+	</notification>
+	<notification name="NoPendingConnection">
+		Невозможно создать отложенное соединение.
+	</notification>
+	<notification name="InternalUsherError">
+		Внутренняя ошибка при попытке подключить агента-провожатого.
+	</notification>
+	<notification name="NoGoodTPDestination">
+		Не удалось найти подходящую точку назначения телепорта в этом регионе.
+	</notification>
+	<notification name="InternalErrorRegionResolver">
+		Внутренняя ошибка при попытке активировать распознавателя региона.
+	</notification>
+	<notification name="NoValidLanding">
+		Не удалось найти подходящую точку приземления.
+	</notification>
+	<notification name="NoValidParcel">
+		Не удалось найти подходящий участок.
+	</notification>
+	<notification name="ObjectGiveItem">
+		Объект &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, которым владеет [NAME_SLURL], дал вам этот [OBJECTTYPE]:
+&lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;
+		<form name="form">
+			<button name="Keep" text="Оставить"/>
+			<button name="Discard" text="Удалить"/>
+			<button name="Mute" text="Блокировать владельца"/>
+		</form>
+	</notification>
+	<notification name="OwnObjectGiveItem">
+		Ваш объект &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; дал вам этот [OBJECTTYPE]:
+&lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;
+		<form name="form">
+			<button name="Keep" text="Оставить"/>
+			<button name="Discard" text="Удалить"/>
+		</form>
+	</notification>
+	<notification name="UserGiveItem">
+		[NAME_SLURL] дал(а) вам этот [OBJECTTYPE]:
+[ITEM_SLURL]
+		<form name="form">
+			<button name="Show" text="Показать"/>
+			<button name="Discard" text="Удалить"/>
+			<button name="Mute" text="Заблокировать"/>
+		</form>
+	</notification>
+	<notification name="GodMessage">
+		[NAME]
+
+[MESSAGE]
+	</notification>
+	<notification name="JoinGroup">
+		[MESSAGE]
+		<form name="form">
+			<button name="Join" text="Вступить"/>
+			<button name="Decline" text="Отклонить"/>
+			<button name="Info" text="Информация"/>
+		</form>
+	</notification>
+	<notification name="TeleportOffered">
+		[NAME_SLURL] предложил(а) телепортировать вас к себе:
+
+[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
+		<form name="form">
+			<button name="Teleport" text="Телепортация"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification name="TeleportOfferSent">
+		Предложение телепортации отправлено [TO_NAME]
+	</notification>
+	<notification name="GotoURL">
+		[MESSAGE]
+[URL]
+		<form name="form">
+			<button name="Later" text="Позже"/>
+			<button name="GoNow..." text="Перейти сейчас..."/>
+		</form>
+	</notification>
+	<notification name="OfferFriendship">
+		[NAME_SLURL] предлагает дружить.
+
+[MESSAGE]
+
+(По умолчанию вы будете видеть статус друг друга.)
+		<form name="form">
+			<button name="Accept" text="Принять"/>
+			<button name="Decline" text="Отклонить"/>
+		</form>
+	</notification>
+	<notification name="FriendshipOffered">
+		Вы предложили дружить пользователю [TO_NAME]
+	</notification>
+	<notification name="OfferFriendshipNoMessage">
+		[NAME_SLURL] предлагает дружить.
+
+(По умолчанию вы будете видеть статус друг друга.)
+		<form name="form">
+			<button name="Accept" text="Принять"/>
+			<button name="Decline" text="Отклонить"/>
+		</form>
+	</notification>
+	<notification name="FriendshipAccepted">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; принял(а) ваше предложение дружить.
+	</notification>
+	<notification name="FriendshipDeclined">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; отклонил(а) ваше предложение дружить.
+	</notification>
+	<notification name="FriendshipAcceptedByMe">
+		Предложение дружить принято.
+	</notification>
+	<notification name="FriendshipDeclinedByMe">
+		Предложение дружить отклонено.
+	</notification>
+	<notification name="OfferCallingCard">
+		[NAME] предлагает свою визитку.
+При этом в вашем инвентаре появится закладка для быстрой связи с этим жителем.
+		<form name="form">
+			<button name="Accept" text="Принять"/>
+			<button name="Decline" text="Отклонить"/>
+		</form>
+	</notification>
+	<notification name="RegionRestartMinutes">
+		Этот регион будет перезапущен через [MINUTES] мин.
+Если вы останетесь в этом регионе, вы выйдете из программы.
+	</notification>
+	<notification name="RegionRestartSeconds">
+		Этот регион будет перезапущен через [SECONDS] сек.
+Если вы останетесь в этом регионе, вы выйдете из программы.
+	</notification>
+	<notification name="LoadWebPage">
+		Загрузить веб-страницу [URL]?
+
+[MESSAGE]
+
+Из объекта: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, владелец: [NAME]?
+		<form name="form">
+			<button name="Gotopage" text="Перейти на страницу"/>
+			<button name="Cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification name="FailedToFindWearableUnnamed">
+		Не удалось найти [TYPE] в базе данных.
+	</notification>
+	<notification name="FailedToFindWearable">
+		Не удалось найти [TYPE] с именем [DESC] в базе данных.
+	</notification>
+	<notification name="InvalidWearable">
+		Попытка надеть предмет, функцию которого программа не может распознать. Обновите свою версию [APP_NAME] для пользования этим предметом.
+	</notification>
+	<notification name="ScriptQuestion">
+		Объект «&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;», владелец которого – «[NAME]», желает:
+
+[QUESTIONS]
+Это правильно?
+		<form name="form">
+			<button name="Yes" text="Да"/>
+			<button name="No" text="Нет"/>
+			<button name="Mute" text="Заблокировать"/>
+		</form>
+	</notification>
+	<notification name="ScriptQuestionCaution">
+		Объект «&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;», владелец которого – «[NAME]», желает:
+
+[QUESTIONS]
+Если вы не доверяете этому объекту или его создателю, отклоните запрос.
+
+Принять этот запрос?
+		<form name="form">
+			<button name="Grant" text="Принять"/>
+			<button name="Deny" text="Отклонить"/>
+			<button name="Details" text="Подробности..."/>
+		</form>
+	</notification>
+	<notification name="ScriptDialog">
+		[NAME] – «&lt;nolink&gt;[TITLE]&lt;/nolink&gt;»
+[MESSAGE]
+		<form name="form">
+			<button name="Mute" text="Блокировать"/>
+			<button name="Ignore" text="Игнорировать"/>
+		</form>
+	</notification>
+	<notification name="ScriptDialogGroup">
+		[GROUPNAME] – «&lt;nolink&gt;[TITLE]&lt;/nolink&gt;»
+[MESSAGE]
+		<form name="form">
+			<button name="Mute" text="Блокировать"/>
+			<button name="Ignore" text="Игнорировать"/>
+		</form>
+	</notification>
+	<notification name="BuyLindenDollarSuccess">
+		Благодарим за оплату!
+
+По окончании обработки баланс вашего счета в L$ будет обновлен. Если обработка займет более 20 мин, ваша транзакция может быть отменена. В этом случае сумма платежа будет записана на ваш баланс в долларах США.
+
+Состояние ваших платежей можно проверить на странице «Журнал транзакций» на вашей [http://secondlife.com/account/ информационной панели].
+	</notification>
+	<notification name="FirstOverrideKeys">
+		Ваши клавиши перемещения теперь обрабатываются объектом.
+Попробуйте использовать клавиши со стрелками или AWSD.
+Для использования некоторых объектов (например, оружия) необходимо перейти в режим обзора мышью.
+Для этого нажмите клавишу «M».
+	</notification>
+	<notification name="FirstSandbox">
+		Это область-песочница, в которой жители учатся строительству.
+
+Построенные вами предметы удаляются при вашем выходе из песочницы, поэтому не забывайте щелкать их правой кнопкой мыши и выбирать команду «Взять» для переноса ваших творений в инвентарь.
+	</notification>
+	<notification name="MaxListSelectMessage">
+		В этом списке можно выбрать не более [MAX_SELECT] пунктов.
+	</notification>
+	<notification name="VoiceInviteP2P">
+		[NAME] приглашает вас в голосовой чат.
+Нажмите кнопку «Принять» для присоединения к чату или «Отклонить» для отказа от приглашения. Нажмите «Заблокировать» для блокировки этого абонента.
+		<form name="form">
+			<button name="Accept" text="Принять"/>
+			<button name="Decline" text="Отклонить"/>
+			<button name="Mute" text="Заблокировать"/>
+		</form>
+	</notification>
+	<notification name="AutoUnmuteByIM">
+		[NAME] отправил(а) вам мгновенное сообщение и был(а) автоматически разблокирован(а).
+	</notification>
+	<notification name="AutoUnmuteByMoney">
+		[NAME] получил(а) деньги и был(а) автоматически разблокирован(а).
+	</notification>
+	<notification name="AutoUnmuteByInventory">
+		[NAME] предложил(а) инвентарь и был(а) автоматически разблокирован(а).
+	</notification>
+	<notification name="VoiceInviteGroup">
+		[NAME] вступил(а) в голосовой чат с группой [GROUP].
+Нажмите кнопку «Принять» для присоединения к чату или «Отклонить» для отказа от приглашения. Нажмите «Заблокировать» для блокировки этого абонента.
+		<form name="form">
+			<button name="Accept" text="Принять"/>
+			<button name="Decline" text="Отклонить"/>
+			<button name="Mute" text="Заблокировать"/>
+		</form>
+	</notification>
+	<notification name="VoiceInviteAdHoc">
+		[NAME] вступил(а) в голосовой чат с конференцией.
+Нажмите кнопку «Принять» для присоединения к чату или «Отклонить» для отказа от приглашения. Нажмите «Заблокировать» для блокировки этого абонента.
+		<form name="form">
+			<button name="Accept" text="Принять"/>
+			<button name="Decline" text="Отклонить"/>
+			<button name="Mute" text="Заблокировать"/>
+		</form>
+	</notification>
+	<notification name="InviteAdHoc">
+		[NAME] приглашает вас в чат с конференцией.
+Нажмите кнопку «Принять» для присоединения к чату или «Отклонить» для отказа от приглашения. Нажмите «Заблокировать» для блокировки этого абонента.
+		<form name="form">
+			<button name="Accept" text="Принять"/>
+			<button name="Decline" text="Отклонить"/>
+			<button name="Mute" text="Заблокировать"/>
+		</form>
+	</notification>
+	<notification name="VoiceChannelFull">
+		Вы пытаетесь подключиться к голосовому чату [VOICE_CHANNEL_NAME], в котором уже достигнута максимальная емкость. Повторите попытку позже.
+	</notification>
+	<notification name="ProximalVoiceChannelFull">
+		Приносим извинения.  В этой области уже достигнута максимальная емкость голосовых чатов.  Попробуйте использовать голос в другой области.
+	</notification>
+	<notification name="VoiceChannelDisconnected">
+		Вы были отключены от [VOICE_CHANNEL_NAME].  Будет установлено подключение к локальному голосовому чату.
+	</notification>
+	<notification name="VoiceChannelDisconnectedP2P">
+		[VOICE_CHANNEL_NAME] завершил вызов.  Будет установлено подключение к локальному голосовому чату.
+	</notification>
+	<notification name="P2PCallDeclined">
+		[VOICE_CHANNEL_NAME] отклонил ваш вызов.  Будет установлено подключение к локальному голосовому чату.
+	</notification>
+	<notification name="P2PCallNoAnswer">
+		[VOICE_CHANNEL_NAME] не может принять ваш вызов.  Будет установлено подключение к локальному голосовому чату.
+	</notification>
+	<notification name="VoiceChannelJoinFailed">
+		Не удалось подключиться к [VOICE_CHANNEL_NAME], повторите попытку позже.  Будет установлено подключение к локальному голосовому чату.
+	</notification>
+	<notification name="VoiceLoginRetry">
+		Создается голосовой канал для вас. Создание займет не больше минуты.
+	</notification>
+	<notification name="VoiceEffectsExpired">
+		Истек срок действия одного или нескольких типов изменения голоса, на которые вы подписаны.
+[[URL] Щелкните здесь], чтобы обновить подписку.
+	</notification>
+	<notification name="VoiceEffectsExpiredInUse">
+		Истек срок действия активного типа изменения голоса, применены настройки вашего обычного голоса.
+[[URL] Щелкните здесь], чтобы обновить подписку.
+	</notification>
+	<notification name="VoiceEffectsWillExpire">
+		Срок действия одного или нескольких ваших типов изменения голоса истекает через [INTERVAL] дней или раньше.
+[[URL] Щелкните здесь], чтобы обновить подписку.
+	</notification>
+	<notification name="VoiceEffectsNew">
+		Появились новые типы изменения голоса!
+	</notification>
+	<notification name="Cannot enter parcel: not a group member">
+		Эту область могут посещать только участники определенной группы.
+	</notification>
+	<notification name="Cannot enter parcel: banned">
+		Нельзя войти на участок, вы забанены.
+	</notification>
+	<notification name="Cannot enter parcel: not on access list">
+		Нельзя войти на участок, вас нет в списке доступа.
+	</notification>
+	<notification name="VoiceNotAllowed">
+		У вас нет разрешения на подключение к голосовому чату для [VOICE_CHANNEL_NAME].
+	</notification>
+	<notification name="VoiceCallGenericError">
+		Ошибка при попытке подключения к голосовому чату для [VOICE_CHANNEL_NAME].  Повторите попытку позже.
+	</notification>
+	<notification name="UnsupportedCommandSLURL">
+		Щелчок на неподдерживаемом SLurl.
+	</notification>
+	<notification name="BlockedSLURL">
+		SLurl получен от ненадежного браузера и заблокирован по соображениям безопасности.
+	</notification>
+	<notification name="ThrottledSLURL">
+		Несколько SLurl получены от ненадежного браузера за короткое время.
+Для безопасности они будут заблокированы на несколько секунд.
+	</notification>
+	<notification name="IMToast">
+		[MESSAGE]
+		<form name="form">
+			<button name="respondbutton" text="Ответить"/>
+		</form>
+	</notification>
+	<notification name="ConfirmCloseAll">
+		Вы действительно хотите закрыть все окна IM?
+		<usetemplate ignoretext="Подтверждать перед закрытием всех окон IM" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="AttachmentSaved">
+		Присоединение сохранено.
+	</notification>
+	<notification name="UnableToFindHelpTopic">
+		Невозможно найти раздел справки для этого элемента.
+	</notification>
+	<notification name="ObjectMediaFailure">
+		Ошибка сервера: обновление или ошибка медиа.
+«[ERROR]»
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="TextChatIsMutedByModerator">
+		Ваш текстовый чат заглушен модератором.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="VoiceIsMutedByModerator">
+		Ваш голос заглушен модератором.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="UploadCostConfirmation">
+		Эта передача будет стоить L$[PRICE]. Продолжить передачу?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="Передать"/>
+	</notification>
+	<notification name="ConfirmClearTeleportHistory">
+		Вы действительно хотите удалить свой журнал телепортаций?
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="BottomTrayButtonCanNotBeShown">
+		Выбранная кнопка не может быть показана сейчас.
+Кнопка появится, когда для нее будет достаточно места.
+	</notification>
+	<notification name="ShareNotification">
+		Выберите жителей, чтобы поделиться с ними.
+	</notification>
+	<notification name="MeshUploadError">
+		Не удалось передать [LABEL]: [MESSAGE] [IDENTIFIER] 
+
+Подробности см. в файле журнала.
+	</notification>
+	<notification name="MeshUploadPermError">
+		Ошибка при запросе разрешений на передачу меша.
+	</notification>
+	<notification name="RegionCapabilityRequestError">
+		Не удается получить возможность региона &apos;[CAPABILITY]&apos;.
+	</notification>
+	<notification name="ShareItemsConfirmation">
+		Вы действительно хотите поделиться предметами:
+
+&lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
+
+Со следующими жителями:
+
+[RESIDENTS]
+		<usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification name="ItemsShared">
+		Предметы успешно розданы.
+	</notification>
+	<notification name="DeedToGroupFail">
+		Передача группе не удалась.
+	</notification>
+	<notification name="ReleaseLandThrottled">
+		Сейчас нельзя отказаться от участка «[PARCEL_NAME]».
+	</notification>
+	<notification name="ReleasedLandWithReclaim">
+		Земельный участок «[PARCEL_NAME]» площадью [AREA] м² освобожден.
+
+У вас есть [RECLAIM_PERIOD] ч, чтобы вернуть его за L$0. После этого участок будет выставлен на свободную продажу.
+	</notification>
+	<notification name="ReleasedLandNoReclaim">
+		Земельный участок «[PARCEL_NAME]» площадью [AREA] м² освобожден.
+
+Теперь его может купить кто угодно.
+	</notification>
+	<notification name="AvatarRezNotification">
+		( [EXISTENCE] сек. жизни )
+Аватар «[NAME]» стал виден через [TIME] сек.
+	</notification>
+	<notification name="AvatarRezSelfBakedDoneNotification">
+		( [EXISTENCE] сек. жизни )
+Вы закончили приготовление своего костюма через [TIME] сек.
+	</notification>
+	<notification name="AvatarRezSelfBakedUpdateNotification">
+		( [EXISTENCE] сек. жизни )
+Вы отправили обновление своей внешности через [TIME] сек.
+[STATUS]
+	</notification>
+	<notification name="AvatarRezCloudNotification">
+		( [EXISTENCE] сек. жизни )
+Аватар «[NAME]» стал облаком.
+	</notification>
+	<notification name="AvatarRezArrivedNotification">
+		( [EXISTENCE] сек. жизни )
+Аватар «[NAME]» появился.
+	</notification>
+	<notification name="AvatarRezLeftCloudNotification">
+		( [EXISTENCE] сек. жизни )
+Аватар «[NAME]» стал облаком через [TIME] сек.
+	</notification>
+	<notification name="AvatarRezEnteredAppearanceNotification">
+		( [EXISTENCE] сек. жизни )
+Аватар «[NAME]» перешел в режим внешности.
+	</notification>
+	<notification name="AvatarRezLeftAppearanceNotification">
+		( [EXISTENCE] сек. жизни )
+Аватар «[NAME]» вышел из режима внешности.
+	</notification>
+	<notification name="NoConnect">
+		Возникли проблемы соединения при использовании [PROTOCOL] [HOSTID].
+Проверьте настройки сети и брандмауэра.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="NoVoiceConnect">
+		Возникли проблемы соединения с голосовым сервером:
+
+[HOSTID]
+
+Голосовая связь будет недоступна.
+Проверьте настройки сети и брандмауэра.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="AvatarRezLeftNotification">
+		( [EXISTENCE] сек. жизни )
+Аватар «[NAME]» полностью загружен.
+	</notification>
+	<notification name="AvatarRezSelfBakedTextureUploadNotification">
+		( [EXISTENCE] сек. жизни )
+Вы передали готовую текстуру [RESOLUTION] для «[BODYREGION]» через [TIME] сек.
+	</notification>
+	<notification name="AvatarRezSelfBakedTextureUpdateNotification">
+		( [EXISTENCE] сек. жизни )
+Вы локально обновили готовую текстуру [RESOLUTION] для «[BODYREGION]» через [TIME] сек.
+	</notification>
+	<notification name="ConfirmLeaveCall">
+		Действительно покинуть этот разговор?
+		<usetemplate ignoretext="Подтверждать перед выходом из разговора" name="okcancelignore" notext="Нет" yestext="Да"/>
+	</notification>
+	<notification name="ConfirmMuteAll">
+		Вы решили заглушить всех участников группового разговора.
+В результате будут заглушены также все жители, которые присоединились к разговору
+позже, даже после того, как вы покинули разговор.
+
+Заглушить всех?
+		<usetemplate ignoretext="Подтверждать перед заглушением всех участников группового разговора" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<notification label="Чат" name="HintChat">
+		Чтобы присоединиться к чату, введите слова в поле чата ниже.
+	</notification>
+	<notification label="Встать" name="HintSit">
+		Чтобы встать на ноги и покинуть сидячее положение, нажмите кнопку «Встать».
+	</notification>
+	<notification label="Говорить" name="HintSpeak">
+		Нажмите кнопку «Говорить», чтобы включить или выключить микрофон.
+
+Щелкните направленную вверх стрелку, чтобы открыть панель управления голосом.
+
+При скрытии кнопки «Говорить» голосовая функция отключается.
+	</notification>
+	<notification label="Исследование мира" name="HintDestinationGuide">
+		Путеводитель по пунктам назначения содержит тысячи новых мест, в которых вы можете побывать. Выберите место и нажмите кнопку «Телепортация», чтобы начать исследование.
+	</notification>
+	<notification label="Боковая панель" name="HintSidePanel">
+		Быстрый доступ к вашему инвентарю, костюмам, профилю и многому другому открывается на боковой панели.
+	</notification>
+	<notification label="Перемещение" name="HintMove">
+		Чтобы пойти или побежать, откройте панель перемещения и используйте кнопки со стрелками. Также можно нажимать клавиши со стрелками на клавиатуре.
+	</notification>
+	<notification label="" name="HintMoveClick">
+		1. Щелкните для перехода
+Щелкните какую-нибудь точку на земле, чтобы перейти в это место.
+
+2. Щелкните и перетащите для поворота поля зрения
+Щелкните любую точку в мире и перетащите ее мышью, чтобы повернуть поле зрения.
+	</notification>
+	<notification label="Экранное имя" name="HintDisplayName">
+		Задайте здесь свое экранное имя. Это имя можно изменять, в отличие от вашего уникального имени пользователя. Отображение для вас имен других людей можно изменить в ваших настройках.
+	</notification>
+	<notification label="Камера" name="HintView">
+		Для изменения вида из камеры используйте инструменты «Вращение» и «Сдвиг». При нажатии клавиши Esc или переходе вид из камеры возвращается к исходному состоянию.
+	</notification>
+	<notification label="Инвентарь" name="HintInventory">
+		В вашем инвентаре можно искать разнообразные вещи. Самые новые вещи представлены на вкладке «Недавние».
+	</notification>
+	<notification label="Вы получили Linden-доллары!" name="HintLindenDollar">
+		Вот ваш текущий баланс в L$. Чтобы купить еще Linden-долларов, щелкните  «Купить L$».
+	</notification>
+	<notification name="LowMemory">
+		Недостаточный размер пула памяти. Некоторые функции Second Life отключены во избежание сбоя приложения. Закройте другие приложения. Если неполадка не исчезнет, перезапустите SL.
+	</notification>
+	<notification name="ForceQuitDueToLowMemory">
+		Через 30 секунд Second Life завершит работу: нехватка памяти.
+	</notification>
+	<notification name="PopupAttempt">
+		Всплывающее окно нельзя открыть.
+		<form name="form">
+			<ignore name="ignore" text="Разрешить все всплывающие окна"/>
+			<button name="open" text="Открыть всплывающее окно"/>
+		</form>
+	</notification>
+	<notification name="SOCKS_NOT_PERMITTED">
+		Прокси SOCKS 5 &quot;[HOST]:[PORT]&quot; отклонил попытку подключения; не разрешено набором правил.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="SOCKS_CONNECT_ERROR">
+		Прокси SOCKS 5 &quot;[HOST]:[PORT]&quot; отклонил попытку подключения; не удалось открыть канал TCP.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="SOCKS_NOT_ACCEPTABLE">
+		Прокси SOCKS 5 &quot;[HOST]:[PORT]&quot; отклонил выбранную систему проверки подлинности.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="SOCKS_AUTH_FAIL">
+		Прокси SOCKS 5 &quot;[HOST]:[PORT]&quot; сообщает, что ваши учетные данные неверны.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="SOCKS_UDP_FWD_NOT_GRANTED">
+		Прокси SOCKS 5 &quot;[HOST]:[PORT]&quot; отклонил запрос объединения UDP.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="SOCKS_HOST_CONNECT_FAILED">
+		Не удалось подключиться к прокси-серверу SOCKS 5 &quot;[HOST]:[PORT]&quot;.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="SOCKS_UNKNOWN_STATUS">
+		Неизвестная ошибка прокси с сервером &quot;[HOST]:[PORT]&quot;.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="SOCKS_INVALID_HOST">
+		Неверный адрес прокси SOCKS или порт &quot;[HOST]:[PORT]&quot;.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="SOCKS_BAD_CREDS">
+		Неверное имя пользователя или пароль SOCKS 5.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="PROXY_INVALID_HTTP_HOST">
+		Неверный адрес прокси HTTP или порт &quot;[HOST]:[PORT]&quot;.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="PROXY_INVALID_SOCKS_HOST">
+		Неверный адрес прокси SOCKS или порт &quot;[HOST]:[PORT]&quot;.
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="ChangeProxySettings">
+		Настройки прокси начнут действовать после перезапуска [APP_NAME].
+		<usetemplate name="okbutton" yestext="OK"/>
+	</notification>
+	<notification name="AuthRequest">
+		Сайт по адресу «&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;» в царстве «in realm &apos;[REALM]» требует имени пользователя и пароля.
+		<form name="form">
+			<input name="username" text="Имя пользователя"/>
+			<input name="password" text="Пароль"/>
+			<button name="ok" text="Отослать"/>
+			<button name="cancel" text="Отмена"/>
+		</form>
+	</notification>
+	<notification label="" name="NoClassifieds">
+		Создание и редактирование рекламы доступно только в расширенном режиме. Выйти из программы и сменить режим? Меню смены режима находится на экране входа.
+		<usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
+	</notification>
+	<notification label="" name="NoGroupInfo">
+		Создание и редактирование групп доступно только в расширенном режиме. Выйти из программы и сменить режим? Меню смены режима находится на экране входа.
+		<usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
+	</notification>
+	<notification label="" name="NoPlaceInfo">
+		Просмотр профиля места доступен только в расширенном режиме. Выйти из программы и сменить режим? Меню смены режима находится на экране входа.
+		<usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выход"/>
+	</notification>
+	<notification label="" name="NoPicks">
+		Создание и редактирование подборки доступно только в расширенном режиме. Выйти из программы и сменить режим? Меню смены режима находится на экране входа.
+		<usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
+	</notification>
+	<notification label="" name="NoWorldMap">
+		Просмотр карты мира доступен только в расширенном режиме. Выйти из программы и сменить режим? Меню смены режима находится на экране входа.
+		<usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
+	</notification>
+	<notification label="" name="NoVoiceCall">
+		Голосовые вызовы доступны только в расширенном режиме. Выйти из программы и сменить режим?
+		<usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
+	</notification>
+	<notification label="" name="NoAvatarShare">
+		Общее пользование доступно только в расширенном режиме. Выйти из программы и сменить режим?
+		<usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
+	</notification>
+	<notification label="" name="NoAvatarPay">
+		Платежи другим жителям доступны только в расширенном режиме. Выйти из программы и сменить режим?
+		<usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выйти"/>
+	</notification>
+	<notification label="" name="NoInventory">
+		Просмотр инвентаря доступен только в расширенном режиме. Выйти из программы и сменить режим?
+		<usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выход"/>
+	</notification>
+	<notification label="" name="NoAppearance">
+		Редактор внешнего вида доступен только в расширенном режиме. Выйти из программы и сменить режим?
+		<usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выход"/>
+	</notification>
+	<notification label="" name="NoSearch">
+		Поиск доступен только в расширенном режиме. Выйти из программы и сменить режим?
+		<usetemplate name="okcancelbuttons" notext="Не выходить" yestext="Выход"/>
+	</notification>
+	<notification label="" name="ConfirmHideUI">
+		Это действие приведет к скрытию всех меню и кнопок. Чтобы вернуть их, щелкните [SHORTCUT] снова.
+		<usetemplate ignoretext="Подтверждать перед скрытием интерфейса" name="okcancelignore" notext="Отмена" yestext="OK"/>
+	</notification>
+	<global name="UnsupportedGLRequirements">
+		По-видимому, ваше оборудование не удовлетворяет требованиям [APP_NAME]. Для работы [APP_NAME] необходима графическая карта OpenGL с поддержкой мультитекстур. Если у вас есть такая карта, убедитесь, что установлены новейшие версии драйверов для нее и пакеты обновлений и исправления для операционной системы.
+
+Если неполадки продолжаются, посетите сайт [SUPPORT_SITE].
+	</global>
+	<global name="UnsupportedCPUAmount">
+		796
+	</global>
+	<global name="UnsupportedRAMAmount">
+		510
+	</global>
+	<global name="UnsupportedGPU">
+		- Графическая карта вашего компьютера не удовлетворяет минимальным требованиям.
+	</global>
+	<global name="UnsupportedRAM">
+		- Системная память вашего компьютера не удовлетворяет минимальным требованиям.
+	</global>
+	<global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
+		Если у вас есть участок земли, вы можете сделать его своим домом (домашним местоположением).
+Если нет, посмотрите на карту и найдите места, подписанные «Инфохаб».
+	</global>
+	<global name="You died and have been teleported to your home location">
+		Вы умерли и были телепортированы в ваше домашнее местоположение.
+	</global>
+</notifications>
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
new file mode 100644
index 0000000000000000000000000000000000000000..825f9a62290fe7be4455122dc11eba1050af7c6e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_active_object_row.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_activeim_row">
+	<text name="object_name">
+		Объект без имени
+	</text>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..ae2240593da09de38eec502d23ce3488375d2250
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_adhoc_control_panel.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+	<layout_stack name="vertical_stack">
+		<layout_panel name="call_btn_panel">
+			<button label="Звонок" name="call_btn"/>
+		</layout_panel>
+		<layout_panel name="end_call_btn_panel">
+			<button label="Прервать звонок" name="end_call_btn"/>
+		</layout_panel>
+		<layout_panel name="voice_ctrls_btn_panel">
+			<button label="Управление голосом" name="voice_ctrls_btn"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..75e396222f93e7e510822561b872ad6f54e88e3d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_avatar_list_item.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="avatar_list_item">
+	<string name="FormatSeconds">
+		[COUNT] с
+	</string>
+	<string name="FormatMinutes">
+		[COUNT] мин
+	</string>
+	<string name="FormatHours">
+		[COUNT] ч
+	</string>
+	<string name="FormatDays">
+		[COUNT] д
+	</string>
+	<string name="FormatWeeks">
+		[COUNT] нед
+	</string>
+	<string name="FormatMonths">
+		[COUNT] мес
+	</string>
+	<string name="FormatYears">
+		[COUNT] г
+	</string>
+	<text name="avatar_name" value="(загрузка)"/>
+	<text name="last_interaction" value="0 с"/>
+	<icon name="permission_edit_theirs_icon" tool_tip="Вы можете изменять объекты этого друга"/>
+	<icon name="permission_edit_mine_icon" tool_tip="Этот друг может изменять, удалять или брать ваши объекты"/>
+	<icon name="permission_map_icon" tool_tip="Этот друг может видеть вас на карте"/>
+	<icon name="permission_online_icon" tool_tip="Этот друг может видеть ваш статус в сети"/>
+	<button name="profile_btn" tool_tip="Смотреть профиль"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_avatar_tag.xml b/indra/newview/skins/default/xui/ru/panel_avatar_tag.xml
new file mode 100644
index 0000000000000000000000000000000000000000..03c164affde7ea9f92ba9763f525e9643d27960e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_avatar_tag.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="avatar_tag_notification">
+	<panel name="msg_caption">
+		<text name="sender_tag_name">
+			Тестер Анжела
+		</text>
+		<text name="tag_time" value="23:30"/>
+	</panel>
+	<text_editor name="msg_text">
+		Шустрый бурый лис перепрыгивает через ленивого пса.
+	</text_editor>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..214ca8bf3a95e1fdfb916744788427c06134f204
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_block_list_sidetray.xml
@@ -0,0 +1,10 @@
+<?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>
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
new file mode 100644
index 0000000000000000000000000000000000000000..20a99500b66526a04cda1d1a8c7abc81a0b589d3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_body_parts_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="wearable_item">
+	<text name="item_name" value="..."/>
+	<panel name="btn_lock" tool_tip="У вас нет прав для изменения"/>
+	<panel name="btn_edit_panel">
+		<button name="btn_edit" tool_tip="Изменить фигуру"/>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..f7d31813f9e77d8ab2ed1a22a91e13a1cfa0ebbd
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_bodyparts_list_button_bar.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="clothing_list_button_bar_panel">
+	<button label="Перейти" name="switch_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_bottomtray.xml b/indra/newview/skins/default/xui/ru/panel_bottomtray.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ebf6c4264b7fd9e0b930dc12aae1952a5749aac4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_bottomtray.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="bottom_tray">
+	<string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
+	<string name="SpeakBtnToolTip" value="Включить/выключить микрофон"/>
+	<string name="VoiceControlBtnToolTip" value="Показать/скрыть панель управления голосом"/>
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="speak_panel">
+			<talk_button name="talk">
+				<speak_button label="Говорить" label_selected="Говорить" name="speak_btn"/>
+			</talk_button>
+		</layout_panel>
+		<layout_panel name="gesture_panel">
+			<gesture_combo_list label="Жесты" name="Gesture" tool_tip="Показать/скрыть жесты"/>
+		</layout_panel>
+		<layout_panel name="movement_panel">
+			<bottomtray_button label="Перемещение" name="movement_btn" tool_tip="Показать/скрыть панель управления движением"/>
+		</layout_panel>
+		<layout_panel name="cam_panel">
+			<bottomtray_button label="Камера" name="camera_btn" tool_tip="Показать/скрыть управление камерой"/>
+		</layout_panel>
+		<layout_panel name="snapshot_panel">
+			<bottomtray_button name="snapshots" tool_tip="Сделать снимок"/>
+		</layout_panel>
+		<layout_panel name="build_btn_panel">
+			<bottomtray_button label="Строительство" name="build_btn" tool_tip="Показать/скрыть инструменты"/>
+		</layout_panel>
+		<layout_panel name="search_btn_panel">
+			<bottomtray_button label="Поиск" name="search_btn" tool_tip="Показать/скрыть поиск"/>
+		</layout_panel>
+		<layout_panel name="world_map_btn_panel">
+			<bottomtray_button label="Карта" name="world_map_btn" tool_tip="Показать/скрыть карту мира"/>
+		</layout_panel>
+		<layout_panel name="mini_map_btn_panel">
+			<bottomtray_button label="Миникарта" name="mini_map_btn" tool_tip="Показать/скрыть миникарту"/>
+		</layout_panel>
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="Общение"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="Уведомления"/>
+			</chiclet_notification>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/ru/panel_bottomtray_lite.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bcdff112c563a465d39b8ee052826b8b743f3701
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_bottomtray_lite.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="bottom_tray_lite">
+	<layout_stack name="toolbar_stack_lite">
+		<layout_panel name="gesture_panel">
+			<gesture_combo_list label="Жесты" name="Gesture" tool_tip="Показать/скрыть жесты"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_chat_header.xml b/indra/newview/skins/default/xui/ru/panel_chat_header.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7916bf5155aa4d15b741094ca413575a3d7e529b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_chat_header.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="im_header" name="im_header">
+	<text name="time_box" value="23:30"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f203ecde4bbbf678349f741a4165202e238d6331
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="Разговоры"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="Уведомления"/>
+			</chiclet_notification>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_classified_info.xml b/indra/newview/skins/default/xui/ru/panel_classified_info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c7fd0ad42f1a930387327cc3d912c86195410012
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_classified_info.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_classified_info">
+	<panel.string name="type_mature">
+		Moderate-контент
+	</panel.string>
+	<panel.string name="type_pg">
+		General-контент
+	</panel.string>
+	<panel.string name="l$_price">
+		L$[PRICE]
+	</panel.string>
+	<panel.string name="click_through_text_fmt">
+		Телепорт [TELEPORT], карта [MAP], профиль [PROFILE]
+	</panel.string>
+	<panel.string name="date_fmt">
+		[day,datetime,slt].[mthnum,datetime,slt].[year,datetime,slt]
+	</panel.string>
+	<panel.string name="auto_renew_on">
+		Включено
+	</panel.string>
+	<panel.string name="auto_renew_off">
+		Выключено
+	</panel.string>
+	<text name="title" value="Информация о рекламе"/>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<text_editor name="classified_name" value="[название]"/>
+			<text name="classified_location_label" value="Место:"/>
+			<text_editor name="classified_location" value="[загрузка...]"/>
+			<text name="content_type_label" value="Тип контента:"/>
+			<text_editor name="content_type" value="[тип контента]"/>
+			<text name="category_label" value="Категория:"/>
+			<text_editor name="category" value="[категория]"/>
+			<text name="creation_date_label" value="Дата создания:"/>
+			<text_editor name="creation_date" tool_tip="Дата создания" value="[дата]"/>
+			<text name="price_for_listing_label" value="Стоимость размещения:"/>
+			<text_editor name="price_for_listing" tool_tip="Стоимость размещения." value="[цена]"/>
+			<layout_stack name="descr_stack">
+				<layout_panel name="clickthrough_layout_panel">
+					<text name="click_through_label" value="Переходы:"/>
+					<text_editor name="click_through_text" tool_tip="Информация о переходах" value="[переходы]"/>
+				</layout_panel>
+				<layout_panel name="price_layout_panel">
+					<text name="auto_renew_label" value="Автооплата:"/>
+					<text name="auto_renew" value="Включено"/>
+				</layout_panel>
+				<layout_panel name="descr_layout_panel">
+					<text name="classified_desc_label" value="Описание:"/>
+					<text_editor name="classified_desc" value="[описание]"/>
+				</layout_panel>
+			</layout_stack>
+		</panel>
+	</scroll_container>
+	<panel name="buttons">
+		<layout_stack name="layout_stack1">
+			<layout_panel name="layout_panel1">
+				<button label="Телепортация" name="teleport_btn"/>
+			</layout_panel>
+			<layout_panel name="show_on_map_btn_lp">
+				<button label="Карта" name="show_on_map_btn"/>
+			</layout_panel>
+			<layout_panel name="edit_btn_lp">
+				<button label="Изменить" name="edit_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..cc3f7feb831b11f99f5daef678c5fc87e4708118
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_clothing_list_button_bar.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="clothing_list_button_bar_panel">
+	<button label="Добавить +" name="add_btn"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..98d4fd8b472b1127ba7c855b2a87c48dd07dff57
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_clothing_list_item.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="wearable_item">
+	<button name="btn_delete" tool_tip="Убрать из костюма"/>
+	<text name="item_name" value="..."/>
+	<panel name="btn_lock" tool_tip="У вас нет прав для изменения"/>
+	<panel name="btn_edit_panel">
+		<button name="btn_edit" tool_tip="Изменить предметы одежды"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_cof_wearables.xml b/indra/newview/skins/default/xui/ru/panel_cof_wearables.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9e1bc4b5c476dd0c375cae0f448f8bd9a9e23267
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_cof_wearables.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="cof_wearables">
+	<accordion name="cof_wearables_accordion">
+		<accordion_tab name="tab_clothing" title="Одежда"/>
+		<accordion_tab name="tab_attachments" title="Присоединения"/>
+		<accordion_tab name="tab_body_parts" title="Части тела"/>
+	</accordion>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..762baa205211143328af0a5f8df8f154f325a356
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_deletable_wearable_list_item.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="deletable_wearable_item">
+	<button name="btn_delete" tool_tip="Убрать из костюма"/>
+	<text name="item_name" value="..."/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..dc9d678edde3a26777bbd51bbc311e2e2adc52fc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_dummy_clothing_list_item.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="dummy_clothing_item">
+	<text name="item_name" value="..."/>
+	<panel name="btn_add_panel">
+		<button name="btn_add" tool_tip="Добавить другие вещи этого типа"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_alpha.xml b/indra/newview/skins/default/xui/ru/panel_edit_alpha.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7cde4099ef3387ef7ebd76ee75357bd71ec944d7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_alpha.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_alpha_panel">
+	<scroll_container name="avatar_alpha_color_panel_scroll">
+		<panel name="avatar_alpha_color_panel">
+			<texture_picker label="Альфа низа" name="Lower Alpha" tool_tip="Щелкните для выбора изображения"/>
+			<texture_picker label="Альфа верха" name="Upper Alpha" tool_tip="Щелкните для выбора изображения"/>
+			<texture_picker label="Альфа головы" name="Head Alpha" tool_tip="Щелкните для выбора изображения"/>
+			<texture_picker label="Альфа глаз" name="Eye Alpha" tool_tip="Щелкните для выбора изображения"/>
+			<texture_picker label="Альфа волос" name="Hair Alpha" tool_tip="Щелкните для выбора изображения"/>
+		</panel>
+	</scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_classified.xml b/indra/newview/skins/default/xui/ru/panel_edit_classified.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a2f06dbadfe6c31c387cc94e61f3ff9c95a2fcd2
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_classified.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Изменить рекламу" name="panel_edit_classified">
+	<panel.string name="location_notice">
+		(будет обновлено после сохранения)
+	</panel.string>
+	<string name="publish_label">
+		Опубликовать
+	</string>
+	<string name="save_label">
+		Сохранить
+	</string>
+	<text name="title">
+		Изменить рекламу
+	</text>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<panel name="snapshot_panel">
+				<icon label="" name="edit_icon" tool_tip="Щелкните для выбора изображения"/>
+			</panel>
+			<text name="Name:">
+				Название:
+			</text>
+			<text name="description_label">
+				Описание:
+			</text>
+			<text name="location_label">
+				Место:
+			</text>
+			<text name="classified_location">
+				загрузка...
+			</text>
+			<button label="Использовать текущее место" name="set_to_curr_location_btn"/>
+			<text name="category_label" value="Категория:"/>
+			<text name="content_type_label" value="Тип контента:"/>
+			<icons_combo_box label="General-контент" name="content_type">
+				<icons_combo_box.item label="Moderate-контент" name="mature_ci" value="Mature-контент"/>
+				<icons_combo_box.item label="General-контент" name="pg_ci" value="PG-контент"/>
+			</icons_combo_box>
+			<check_box label="Автоматическая оплата каждую неделю" name="auto_renew"/>
+			<text name="price_for_listing_label" value="Стоимость размещения:"/>
+			<spinner label="L$" name="price_for_listing" tool_tip="Стоимость размещения." value="50"/>
+		</panel>
+	</scroll_container>
+	<panel label="bottom_panel" name="bottom_panel">
+		<layout_stack name="bottom_panel_ls">
+			<layout_panel name="save_changes_btn_lp">
+				<button label="[LABEL]" name="save_changes_btn"/>
+			</layout_panel>
+			<layout_panel name="show_on_map_btn_lp">
+				<button label="Отмена" name="cancel_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_eyes.xml b/indra/newview/skins/default/xui/ru/panel_edit_eyes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..84e1204b5d4f0083f0182691ceca494560b7e80a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_eyes.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_eyes_panel">
+	<panel name="avatar_eye_color_panel">
+		<texture_picker label="Радужка" name="Iris" tool_tip="Щелкните для выбора изображения"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="eyes_main_tab" title="Глаза"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_gloves.xml b/indra/newview/skins/default/xui/ru/panel_edit_gloves.xml
new file mode 100644
index 0000000000000000000000000000000000000000..561777745ece01b718dfdca6067a112ca4234107
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_gloves.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_gloves_panel">
+	<panel name="avatar_gloves_color_panel">
+		<texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+		<color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="gloves_main_tab" title="Перчатки"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_hair.xml b/indra/newview/skins/default/xui/ru/panel_edit_hair.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d5e67ddf872490eb66bc9d9ccf74ead25d471923
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_hair.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_hair_panel">
+	<panel name="avatar_hair_color_panel">
+		<texture_picker label="Текстура" name="Texture" tool_tip="Щелкните для выбора изображения"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="hair_color_tab" title="Цвет"/>
+			<accordion_tab name="hair_style_tab" title="Стиль"/>
+			<accordion_tab name="hair_eyebrows_tab" title="Брови"/>
+			<accordion_tab name="hair_facial_tab" title="Волосы на лице"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_jacket.xml b/indra/newview/skins/default/xui/ru/panel_edit_jacket.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2f5a437e6943338ef9df60566c6acd55ea7e95fa
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_jacket.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_jacket_panel">
+	<panel name="avatar_jacket_color_panel">
+		<texture_picker label="Текстура верха" name="Upper Fabric" tool_tip="Щелкните для выбора изображения"/>
+		<texture_picker label="Текстура низа" name="Lower Fabric" tool_tip="Щелкните для выбора изображения"/>
+		<color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="jacket_main_tab" title="Пиджак"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_pants.xml b/indra/newview/skins/default/xui/ru/panel_edit_pants.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4970c9380117cd7e5540dd5ef180a50afb06a016
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_pants.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_pants_panel">
+	<panel name="avatar_pants_color_panel">
+		<texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+		<color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="pants_main_tab" title="Брюки"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_physics.xml b/indra/newview/skins/default/xui/ru/panel_edit_physics.xml
new file mode 100644
index 0000000000000000000000000000000000000000..da4ebb154dbde29759c2507498830ab9bba86d1a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_physics.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_physics_panel">
+	<panel label="" name="accordion_panel">
+		<accordion name="physics_accordion">
+			<accordion_tab name="physics_breasts_updown_tab" title="Груди прыгают"/>
+			<accordion_tab name="physics_breasts_inout_tab" title="Ложбинка между грудей"/>
+			<accordion_tab name="physics_breasts_leftright_tab" title="Груди покачиваются"/>
+			<accordion_tab name="physics_belly_tab" title="Живот прыгает"/>
+			<accordion_tab name="physics_butt_tab" title="Ягодицы прыгают"/>
+			<accordion_tab name="physics_butt_leftright_tab" title="Ягодицы покачиваются"/>
+			<accordion_tab name="physics_advanced_tab" title="Дополнительные параметры"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_pick.xml b/indra/newview/skins/default/xui/ru/panel_edit_pick.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6be1448ac5f66c1cabaabfead9d19855adfed1aa
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_pick.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Изменить подборку" name="panel_edit_pick">
+	<panel.string name="location_notice">
+		(будет обновлено после сохранения)
+	</panel.string>
+	<text name="title">
+		Изменить подборку
+	</text>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<icon label="" name="edit_icon" tool_tip="Щелкните для выбора изображения"/>
+			<text name="Name:">
+				Название:
+			</text>
+			<text name="description_label">
+				Описание:
+			</text>
+			<text name="location_label">
+				Место:
+			</text>
+			<text name="pick_location">
+				загрузка…
+			</text>
+			<button label="Поставить текущее место" name="set_to_curr_location_btn"/>
+		</panel>
+	</scroll_container>
+	<panel label="bottom_panel" name="bottom_panel">
+		<layout_stack name="layout_stack1">
+			<layout_panel name="layout_panel1">
+				<button label="Сохранить подборку" name="save_changes_btn"/>
+			</layout_panel>
+			<layout_panel name="layout_panel2">
+				<button label="Отмена" name="cancel_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_profile.xml b/indra/newview/skins/default/xui/ru/panel_edit_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e9a6a781db055648f37950bbf34051ee40208a26
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_profile.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Редактирование профиля" name="edit_profile_panel">
+	<string name="CaptionTextAcctInfo">
+		[ACCTTYPE]
+[PAYMENTINFO] [AGEVERIFICATION]
+	</string>
+	<string name="RegisterDateFormat">
+		[REG_DATE] ([AGE])
+	</string>
+	<string name="AcctTypeResident" value="Житель"/>
+	<string name="AcctTypeTrial" value="Гость"/>
+	<string name="AcctTypeCharterMember" value="Учредитель"/>
+	<string name="AcctTypeEmployee" value="Сотрудник Linden Lab"/>
+	<string name="PaymentInfoUsed" value="Использована информация о платежах"/>
+	<string name="PaymentInfoOnFile" value="Зарегистрирована информация о платежах"/>
+	<string name="NoPaymentInfoOnFile" value="Не зарегистрирована информация о платежах"/>
+	<string name="AgeVerified" value="Возраст проверен"/>
+	<string name="NotAgeVerified" value="Возраст не проверен"/>
+	<string name="partner_edit_link_url">
+		http://www.secondlife.com/account/partners.php?lang=en
+	</string>
+	<string name="my_account_link_url">
+		http://secondlife.com/my
+	</string>
+	<string name="no_partner_text" value="Нет"/>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<panel name="data_panel">
+				<text name="display_name_label" value="Экранное имя:"/>
+				<text name="solo_username_label" value="Имя пользователя:"/>
+				<button name="set_name" tool_tip="Задать экранное имя"/>
+				<text name="user_label" value="Имя пользователя:"/>
+				<panel name="lifes_images_panel">
+					<panel name="second_life_image_panel">
+						<text name="second_life_photo_title_text" value="[SECOND_LIFE]:"/>
+					</panel>
+					<icon label="" name="2nd_life_edit_icon" tool_tip="Щелкните для выбора изображения"/>
+				</panel>
+				<panel name="first_life_image_panel">
+					<text name="real_world_photo_title_text" value="Реальный мир:"/>
+				</panel>
+				<icon label="" name="real_world_edit_icon" tool_tip="Щелкните для выбора изображения"/>
+				<text name="title_homepage_text">
+					Домашняя страница:
+				</text>
+				<line_editor name="homepage_edit" value="http://"/>
+				<text name="title_acc_status_text" value="Мой аккаунт:"/>
+				<text_editor name="acc_status_text" value="Житель. В файле нет информации о платежах."/>
+				<text name="my_account_link" value="[[URL] Перейти на информационную панель]"/>
+				<text name="title_partner_text" value="Мой партнер:"/>
+				<panel name="partner_data_panel">
+					<text initial_value="(получение информации)" name="partner_text"/>
+				</panel>
+				<text name="partner_edit_link" value="[[URL] Редактировать]"/>
+			</panel>
+		</panel>
+	</scroll_container>
+	<panel name="profile_me_buttons_panel">
+		<layout_stack name="bottom_panel_ls">
+			<layout_panel name="save_changes_btn_lp">
+				<button label="Сохранить изменения" name="save_btn"/>
+			</layout_panel>
+			<layout_panel name="show_on_map_btn_lp">
+				<button label="Отмена" name="cancel_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_shape.xml b/indra/newview/skins/default/xui/ru/panel_edit_shape.xml
new file mode 100644
index 0000000000000000000000000000000000000000..312ad593a185cb3bf146340dc9acaa9fa6f5b7da
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_shape.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shape_panel">
+	<string name="meters">
+		м
+	</string>
+	<string name="feet">
+		футов
+	</string>
+	<string name="height">
+		Рост:
+	</string>
+	<panel label="Рубашка" name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="shape_body_tab" title="Тело"/>
+			<accordion_tab name="shape_head_tab" title="Голова"/>
+			<accordion_tab name="shape_eyes_tab" title="Глаза"/>
+			<accordion_tab name="shape_ears_tab" title="Уши"/>
+			<accordion_tab name="shape_nose_tab" title="Нос"/>
+			<accordion_tab name="shape_mouth_tab" title="Рот"/>
+			<accordion_tab name="shape_chin_tab" title="Подбородок"/>
+			<accordion_tab name="shape_torso_tab" title="Торс"/>
+			<accordion_tab name="shape_legs_tab" title="Ноги"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_shirt.xml b/indra/newview/skins/default/xui/ru/panel_edit_shirt.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d576a2cd2ffb132cbf89d3489398cfd50e2a6bb1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_shirt.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shirt_panel">
+	<panel name="avatar_shirt_color_panel">
+		<texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+		<color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="shirt_main_tab" title="Рубашка"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_shoes.xml b/indra/newview/skins/default/xui/ru/panel_edit_shoes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f6d7029108051de03f3b62628ff066d5c6305de2
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_shoes.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shoes_panel">
+	<panel name="avatar_shoes_color_panel">
+		<texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+		<color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="shoes_main_tab" title="Обувь"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_skin.xml b/indra/newview/skins/default/xui/ru/panel_edit_skin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f5a5339afe9ff08b57e69519b531cf3ed1670dfc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_skin.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skin_panel">
+	<panel name="avatar_skin_color_panel">
+		<texture_picker label="Голова" name="Head" tool_tip="Щелкните для выбора изображения"/>
+		<texture_picker label="Верхняя часть тела" name="Upper Body" tool_tip="Щелкните для выбора изображения"/>
+		<texture_picker label="Нижняя часть тела" name="Lower Body" tool_tip="Щелкните для выбора изображения"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="skin_color_tab" title="Цвет кожи"/>
+			<accordion_tab name="skin_face_tab" title="Особенности лица"/>
+			<accordion_tab name="skin_makeup_tab" title="Макияж"/>
+			<accordion_tab name="skin_body_tab" title="Особенности тела"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_skirt.xml b/indra/newview/skins/default/xui/ru/panel_edit_skirt.xml
new file mode 100644
index 0000000000000000000000000000000000000000..909946e5773d8e50af5fa1c236de585ed5be50b3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_skirt.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skirt_panel">
+	<panel name="avatar_skirt_color_panel">
+		<texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+		<color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="skirt_main_tab" title="Юбка"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_socks.xml b/indra/newview/skins/default/xui/ru/panel_edit_socks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2827fbc028b1f600396ebc8b70467fcd8bc1458a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_socks.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_socks_panel">
+	<panel name="avatar_socks_color_panel">
+		<texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+		<color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="socks_main_tab" title="Носки"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/ru/panel_edit_tattoo.xml
new file mode 100644
index 0000000000000000000000000000000000000000..874d5f8bc4a8ed0ee7d10e1a96281693293bff6d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_tattoo.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_tattoo_panel">
+	<panel name="avatar_tattoo_color_panel">
+		<texture_picker label="Тату на голове" name="Head Tattoo" tool_tip="Щелкните картинку, чтобы выбрать ее"/>
+		<texture_picker label="Тату вверху" name="Upper Tattoo" tool_tip="Щелкните картинку, чтобы выбрать ее"/>
+		<texture_picker label="Тату внизу" name="Lower Tattoo" tool_tip="Щелкните картинку, чтобы выбрать ее"/>
+		<color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_underpants.xml b/indra/newview/skins/default/xui/ru/panel_edit_underpants.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f2f6e5e516f23f80a84e34b0384277174ccbd1dc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_underpants.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_underpants_panel">
+	<panel name="avatar_underpants_color_panel">
+		<texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+		<color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="underpants_main_tab" title="Трусы"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/ru/panel_edit_undershirt.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6f84c6cec2edfae216c72a71ded18e270a4137cc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_undershirt.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_undershirt_panel">
+	<panel name="avatar_undershirt_color_panel">
+		<texture_picker label="Текстура" name="Fabric" tool_tip="Щелкните для выбора изображения"/>
+		<color_swatch label="Цвет/оттенок" name="Color/Tint" tool_tip="Щелкните для выбора цвета"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="undershirt_main_tab" title="Майка"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_edit_wearable.xml b/indra/newview/skins/default/xui/ru/panel_edit_wearable.xml
new file mode 100644
index 0000000000000000000000000000000000000000..79130a9c80e350ff5bd9b908ec36051d7fc6303d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_edit_wearable.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Можно надеть" name="panel_edit_wearable">
+	<string name="edit_shape_title">
+		Изменение фигуры
+	</string>
+	<string name="edit_skin_title">
+		Изменение кожи
+	</string>
+	<string name="edit_hair_title">
+		Изменение волос
+	</string>
+	<string name="edit_eyes_title">
+		Изменение глаз
+	</string>
+	<string name="edit_shirt_title">
+		Изменение рубашки
+	</string>
+	<string name="edit_pants_title">
+		Изменение брюк
+	</string>
+	<string name="edit_shoes_title">
+		Изменение обуви
+	</string>
+	<string name="edit_socks_title">
+		Изменение носков
+	</string>
+	<string name="edit_jacket_title">
+		Изменение пиджака
+	</string>
+	<string name="edit_skirt_title">
+		Изменение юбки
+	</string>
+	<string name="edit_gloves_title">
+		Изменение перчаток
+	</string>
+	<string name="edit_undershirt_title">
+		Изменение майки
+	</string>
+	<string name="edit_underpants_title">
+		Изменение трусов
+	</string>
+	<string name="edit_alpha_title">
+		Изменение альфа-маски
+	</string>
+	<string name="edit_tattoo_title">
+		Изменение тату
+	</string>
+	<string name="edit_physics_title">
+		Изменение физики
+	</string>
+	<string name="shape_desc_text">
+		Фигура:
+	</string>
+	<string name="skin_desc_text">
+		Кожа:
+	</string>
+	<string name="hair_desc_text">
+		Волосы:
+	</string>
+	<string name="eyes_desc_text">
+		Глаза:
+	</string>
+	<string name="shirt_desc_text">
+		Рубашка:
+	</string>
+	<string name="pants_desc_text">
+		Брюки:
+	</string>
+	<string name="shoes_desc_text">
+		Обувь:
+	</string>
+	<string name="socks_desc_text">
+		Носки:
+	</string>
+	<string name="jacket_desc_text">
+		Пиджак:
+	</string>
+	<string name="skirt_desc_text">
+		Юбка:
+	</string>
+	<string name="gloves_desc_text">
+		Перчатки:
+	</string>
+	<string name="undershirt_desc_text">
+		Майка:
+	</string>
+	<string name="underpants_desc_text">
+		Трусы:
+	</string>
+	<string name="alpha_desc_text">
+		Альфа-маска:
+	</string>
+	<string name="tattoo_desc_text">
+		Тату:
+	</string>
+	<string name="physics_desc_text">
+		Физика:
+	</string>
+	<labeled_back_button label="Сохранить" name="back_btn" tool_tip="Вернуться к изменению костюма"/>
+	<text name="edit_wearable_title" value="Изменение фигуры"/>
+	<panel label="Рубашка" name="wearable_type_panel">
+		<text name="description_text" value="Фигура:"/>
+		<radio_group name="sex_radio">
+			<radio_item label="" name="sex_male" tool_tip="Мужчина" value="1"/>
+			<radio_item label="" name="sex_female" tool_tip="Женщина" value="0"/>
+		</radio_group>
+		<icon name="male_icon" tool_tip="Мужчина"/>
+		<icon name="female_icon" tool_tip="Женщина"/>
+	</panel>
+	<panel name="button_panel">
+		<layout_stack name="button_panel_ls">
+			<layout_panel name="save_as_btn_lp">
+				<button label="Сохранить как" name="save_as_button"/>
+			</layout_panel>
+			<layout_panel name="revert_btn_lp">
+				<button label="Отменить изменения" name="revert_button"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..2e6f3502b6a9d63070d057cd0bbd11964c315576
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_control_panel.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+	<layout_stack name="vertical_stack">
+		<layout_panel name="group_info_btn_panel">
+			<button label="Профиль группы" name="group_info_btn"/>
+		</layout_panel>
+		<layout_panel name="call_btn_panel">
+			<button label="Звонок группе" name="call_btn"/>
+		</layout_panel>
+		<layout_panel name="end_call_btn_panel">
+			<button label="Прервать звонок" name="end_call_btn"/>
+		</layout_panel>
+		<layout_panel name="voice_ctrls_btn_panel">
+			<button label="Открыть голосовое управление" name="voice_ctrls_btn"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_general.xml b/indra/newview/skins/default/xui/ru/panel_group_general.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4d7e1c9fffcaa19867bc0c05efa5036f774aa530
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_general.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Общие" name="general_tab">
+	<panel.string name="help_text">
+		Вкладка «Общие» содержит общие сведения о данной группе, список участников, общие настройки группы и параметры участников.
+Чтобы получить справку, наведите курсор мыши на параметр.
+	</panel.string>
+	<panel.string name="group_info_unchanged">
+		Общая информация о группе изменена
+	</panel.string>
+	<panel.string name="incomplete_member_data_str">
+		Получение данных участника
+	</panel.string>
+	<panel name="group_info_top">
+		<texture_picker label="" name="insignia" tool_tip="Щелкните для выбора изображения"/>
+		<text name="prepend_founded_by">
+			Основатель:
+		</text>
+		<text name="join_cost_text">
+			Бесплатно
+		</text>
+		<button label="ПРИСОЕДИНИТЬСЯ!" name="btn_join"/>
+	</panel>
+	<text_editor name="charter">
+		Устав группы
+	</text_editor>
+	<name_list name="visible_members">
+		<name_list.columns label="Участник" name="name"/>
+		<name_list.columns label="Титул" name="title"/>
+		<name_list.columns label="Статус" name="status"/>
+	</name_list>
+	<text name="my_group_settngs_label">
+		Я
+	</text>
+	<text name="active_title_label">
+		Титул:
+	</text>
+	<combo_box name="active_title" tool_tip="Установить титул, который будет показан вместе с вашим именем, когда эта группа активна."/>
+	<check_box label="Получать уведомления от группы" name="receive_notices" tool_tip="Включите, если хотите получать уведомления от этой группы.  Снимите этот флажок, если группа шлет вам нежелательные сообщения."/>
+	<check_box label="Показывать в моем профиле" name="list_groups_in_profile" tool_tip="Включите, если хотите, чтобы группа отображалась в вашем профиле"/>
+	<panel name="preferences_container">
+		<text name="group_settngs_label">
+			Группа
+		</text>
+		<check_box label="Открытая регистрация" name="open_enrollement" tool_tip="Устанавливается, если в этой группе можно зарегистрироваться без приглашения."/>
+		<check_box label="Платная регистрация" name="check_enrollment_fee" tool_tip="Устанавливается, если в этой группе требуется оплата за вступление."/>
+		<spinner label="L$" name="spin_enrollment_fee" tool_tip="Новые участники должны будут оплатить взнос, если регистрация платная."/>
+		<combo_box name="group_mature_check" tool_tip="Устанавливает, содержит ли группа информацию категории умеренной дозволенности">
+			<combo_item name="select_mature">
+				- Выберите рейтинг зрелости -
+			</combo_item>
+			<combo_box.item label="Умеренный контент" name="mature"/>
+			<combo_box.item label="Общий контент" name="pg"/>
+		</combo_box>
+		<check_box initial_value="истина" label="Показать в поиске" name="show_in_group_list" tool_tip="Позволить людям видеть эту группу в результатах поиска"/>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..d8cf1b4756030dd3f0becec14ceff4fa72b6b319
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_info_sidetray.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Профиль группы" name="GroupInfo">
+	<panel.string name="default_needs_apply_text">
+		Есть несохраненные изменения
+	</panel.string>
+	<panel.string name="want_apply_text">
+		Вы хотите сохранить эти изменения?
+	</panel.string>
+	<panel.string name="group_join_btn">
+		Присоединиться (L$[AMOUNT])
+	</panel.string>
+	<panel.string name="group_join_free">
+		Бесплатно
+	</panel.string>
+	<panel name="group_info_top">
+		<text_editor name="group_name" value="(Загрузка...)"/>
+		<line_editor label="Введите здесь название новой группы" name="group_name_editor"/>
+	</panel>
+	<layout_stack name="layout">
+		<layout_panel name="group_accordions">
+			<accordion name="groups_accordion">
+				<accordion_tab name="group_general_tab" title="Общие"/>
+				<accordion_tab name="group_roles_tab" title="Роли"/>
+				<accordion_tab name="group_notices_tab" title="Уведомления"/>
+				<accordion_tab name="group_land_tab" title="Земля/активы"/>
+			</accordion>
+		</layout_panel>
+	</layout_stack>
+	<layout_stack name="button_row_ls">
+		<layout_panel name="btn_chat_lp">
+			<button label="Чат" name="btn_chat"/>
+		</layout_panel>
+		<layout_panel name="call_btn_lp">
+			<button label="Звонок группе" name="btn_call" tool_tip="Звонок этой группе"/>
+		</layout_panel>
+		<layout_panel name="btn_apply_lp">
+			<button label="Сохранить" label_selected="Сохранить" name="btn_apply"/>
+			<button label="Создать группу" name="btn_create" tool_tip="Создать новую группу"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_invite.xml b/indra/newview/skins/default/xui/ru/panel_group_invite.xml
new file mode 100644
index 0000000000000000000000000000000000000000..304104604194070f20df74bfd891020a290210cd
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_invite.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Пригласить участника" name="invite_panel">
+	<panel.string name="confirm_invite_owner_str">
+		Вы уверены, что хотите пригласить новых владельцев? Это действие нельзя отменить.
+	</panel.string>
+	<panel.string name="loading">
+		(загрузка…)
+	</panel.string>
+	<panel.string name="already_in_group">
+		Несколько выбранных жителей уже состоят в группе. Им приглашения не были отправлены.
+	</panel.string>
+	<text name="help_text">
+		Можно выбрать несколько жителей для приглашения в группу. Чтобы начать, щелкните «Выбрать жителей».
+	</text>
+	<button label="Выбрать жителей" name="add_button"/>
+	<name_list name="invitee_list" tool_tip="Чтобы выбрать несколько жителей, нажмите и удерживайте клавишу CTRL, а затем щелкните их имена"/>
+	<button label="Удалить выбранных из списка" name="remove_button" tool_tip="Удаление выбранных жителей из списка приглашенных"/>
+	<text name="role_text">
+		Выберите назначаемую им роль:
+	</text>
+	<combo_box name="role_name" tool_tip="Выберите в списке роли, которые вы можете назначать участникам"/>
+	<button label="Отправить приглашения" name="ok_button"/>
+	<button label="Отмена" name="cancel_button"/>
+	<string name="GroupInvitation">
+		Групповое приглашение
+	</string>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..9235aa2f697a5063c5e3a4c971e8278b6f0aa81b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_land_money.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Земля и L$" name="land_money_tab">
+	<panel.string name="help_text">
+		Если общее количество использованной земли не превышает общий взнос, отобразится предупреждение.
+	</panel.string>
+	<panel.string name="cant_view_group_land_text">
+		У вас нет прав для просмотра принадлежащей группе земли
+	</panel.string>
+	<panel.string name="epmty_view_group_land_text">
+		Нет данных
+	</panel.string>
+	<panel.string name="cant_view_group_accounting_text">
+		У вас нет прав для просмотра информации о счетах группы.
+	</panel.string>
+	<panel.string name="loading_txt">
+		Загрузка...
+	</panel.string>
+	<panel.string name="land_contrib_error">
+		Не удается задать ваш земельный взнос
+	</panel.string>
+	<panel name="layout_panel_landmoney">
+		<scroll_list name="group_parcel_list">
+			<scroll_list.columns label="Участок" name="name"/>
+			<scroll_list.columns label="Регион" name="location"/>
+			<scroll_list.columns label="Тип" name="type"/>
+			<scroll_list.columns label="Площадь" name="area"/>
+			<scroll_list.columns label="Скрыто" name="hidden"/>
+		</scroll_list>
+		<text name="total_contributed_land_label">
+			Общий взнос:
+		</text>
+		<text name="total_contributed_land_value">
+			[AREA] м²
+		</text>
+		<button label="Карта" label_selected="Карта" name="map_button"/>
+		<text name="total_land_in_use_label">
+			Всего используется земли:
+		</text>
+		<text name="total_land_in_use_value">
+			[AREA] м²
+		</text>
+		<text name="land_available_label">
+			Доступно земли:
+		</text>
+		<text name="land_available_value">
+			[AREA] м²
+		</text>
+		<text name="your_contribution_label">
+			Ваш взнос:
+		</text>
+		<text name="your_contribution_units">
+			м²
+		</text>
+		<text name="your_contribution_max_value">
+			(максимум: [AMOUNT])
+		</text>
+		<text name="group_over_limit_text">
+			Для эффективного использования земли нужно больше земельных кредитов
+		</text>
+		<text name="group_money_heading">
+			Группы L$
+		</text>
+	</panel>
+	<tab_container name="group_money_tab_container">
+		<panel label="ПЛАНИРОВАНИЕ" name="group_money_planning_tab">
+			<text_editor name="group_money_planning_text">
+				Загрузка...
+			</text_editor>
+		</panel>
+		<panel label="ДАННЫЕ" name="group_money_details_tab">
+			<text_editor name="group_money_details_text">
+				Загрузка...
+			</text_editor>
+			<button name="earlier_details_button" tool_tip="Назад"/>
+			<button name="later_details_button" tool_tip="Далее"/>
+		</panel>
+		<panel label="ПРОДАЖИ" name="group_money_sales_tab">
+			<text_editor name="group_money_sales_text">
+				Загрузка...
+			</text_editor>
+			<button name="earlier_sales_button" tool_tip="Назад"/>
+			<button name="later_sales_button" tool_tip="Далее"/>
+		</panel>
+	</tab_container>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..7f000fb5a0d8dc724f5bfceb5e5ee1aae2c9980b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_list_item.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="group_list_item">
+	<text name="group_name" value="Неизвестно"/>
+	<button name="profile_btn" tool_tip="Смотреть профиль"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_notices.xml b/indra/newview/skins/default/xui/ru/panel_group_notices.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8d20c4a96bdb401d8e99b123a163c59add24f5d7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_notices.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Уведомления" name="notices_tab">
+	<panel.string name="help_text">
+		Уведомления позволяют отправлять сообщения и вложенные объекты.
+Уведомления получают только участники групп с ролями, которые дают право на получение уведомлений.
+Вы можете отключить получение уведомлений на вкладке «Общие».
+	</panel.string>
+	<panel.string name="no_notices_text">
+		Нет старых уведомлений
+	</panel.string>
+	<text name="lbl2">
+		Уведомления хранятся 14 дней.
+Максимум 200 уведомлений ежедневно
+	</text>
+	<scroll_list name="notice_list">
+		<scroll_list.columns label="Тема" name="subject"/>
+		<scroll_list.columns label="От кого" name="from"/>
+		<scroll_list.columns label="Дата" name="date"/>
+	</scroll_list>
+	<text name="notice_list_none_found">
+		Не найдено
+	</text>
+	<button label="Новое уведомление" name="create_new_notice" tool_tip="Создать уведомление"/>
+	<button name="refresh_notices" tool_tip="Обновить список уведомлений"/>
+	<panel label="Создать уведомление" name="panel_create_new_notice">
+		<text name="lbl">
+			Создать уведомление
+		</text>
+		<text name="lbl3">
+			Тема:
+		</text>
+		<text name="lbl4">
+			Сообщение:
+		</text>
+		<text name="lbl5">
+			Вложение:
+		</text>
+		<text name="string">
+			Перетащите сюда предмет, чтобы вложить его:
+		</text>
+		<button label="Инвентарь" name="open_inventory" tool_tip="Открыть инвентарь"/>
+		<button name="remove_attachment" tool_tip="Удалить вложение из уведомления"/>
+		<button label="Послать" label_selected="Послать" name="send_notice"/>
+		<group_drop_target name="drop_target" tool_tip="Перетащите из инвентаря на эту панель предмет, чтобы отправить его вместе с сообщением. У вас должно быть разрешение на копирование и передачу этого предмета."/>
+	</panel>
+	<panel label="Смотреть старые уведомления" name="panel_view_past_notice">
+		<text name="lbl">
+			Архивные уведомления
+		</text>
+		<text name="lbl2">
+			Чтобы послать новое уведомление, нажмите кнопку +
+		</text>
+		<text name="lbl3">
+			Тема:
+		</text>
+		<text name="lbl4">
+			Сообщение:
+		</text>
+		<button label="Открыть вложение" name="open_attachment"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_notify.xml b/indra/newview/skins/default/xui/ru/panel_group_notify.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1aee7a7f61d4b840dbf74119a781cf524d9449b1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_notify.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="instant_message" name="panel_group_notify">
+	<string name="message_max_lines_count" value="7"/>
+	<string name="subject_font" value="SANSSERIF_BIG"/>
+	<string name="date_font" value="SANSSERIF"/>
+	<panel label="заголовок" name="header">
+		<text name="title" value="Имя отправителя/название группы"/>
+	</panel>
+	<text_editor name="message" value="сообщение"/>
+	<text name="attachment" value="Вложение"/>
+	<button label="ОК" name="btn_ok"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_group_roles.xml b/indra/newview/skins/default/xui/ru/panel_group_roles.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c57f21679fab712c7a142325d27811ed87675ac4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_group_roles.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Участники и роли" name="roles_tab">
+	<panel.string name="default_needs_apply_text">
+		Есть несохраненные изменения
+	</panel.string>
+	<panel.string name="want_apply_text">
+		Хотите сохранить изменения?
+	</panel.string>
+	<tab_container name="roles_tab_container">
+		<panel label="УЧАСТНИКИ" name="members_sub_tab" tool_tip="Участники">
+			<panel.string name="help_text">
+				Можно добавлять или удалять роли, назначенные участникам.
+Чтобы выбрать несколько участников, удерживайте клавишу CTRL и
+щелкайте нужные имена.
+			</panel.string>
+			<panel.string name="donation_area">
+				[AREA] м²
+			</panel.string>
+			<filter_editor label="Фильтр участников" name="filter_input"/>
+			<name_list name="member_list">
+				<name_list.columns label="Участник" name="name"/>
+				<name_list.columns label="Вклад" name="donated"/>
+				<name_list.columns label="Статус" name="online"/>
+			</name_list>
+			<button label="Пригласить" name="member_invite"/>
+			<button label="Выкинуть" name="member_eject"/>
+		</panel>
+		<panel label="РОЛИ" name="roles_sub_tab">
+			<panel.string name="help_text">
+				У ролей есть название и список способностей,
+доступных участникам. У участников может быть
+одна или несколько ролей. У группы может быть до 10 ролей,
+в том числе роли «Все» и «Владелец».
+			</panel.string>
+			<panel.string name="cant_delete_role">
+				Роли «Все» и «Владелец» являются особыми и не могут быть удалены.
+			</panel.string>
+			<filter_editor label="Фильтр ролей" name="filter_input"/>
+			<scroll_list name="role_list">
+				<scroll_list.columns label="Роль" name="name"/>
+				<scroll_list.columns label="Название" name="title"/>
+				<scroll_list.columns label="#" name="members"/>
+			</scroll_list>
+			<button label="Создать роль" name="role_create"/>
+			<button label="Удалить роль" name="role_delete"/>
+		</panel>
+		<panel label="СПОСОБНОСТИ" name="actions_sub_tab" tool_tip="Можно просмотреть описание способности, а также какие участники и роли ею обладают.">
+			<panel.string name="help_text">
+				Способности позволяют участникам, которым назначены соответствующие роли, выполнять особые
+действия в группе. Имеется широкий выбор способностей.
+			</panel.string>
+			<filter_editor label="Фильтр способностей" name="filter_input"/>
+			<scroll_list name="action_list" tool_tip="Выберите способность, чтобы просмотреть данные о ней"/>
+		</panel>
+	</tab_container>
+	<panel name="members_footer">
+		<text name="static">
+			Назначенные роли
+		</text>
+		<text name="static2">
+			Доступные способности
+		</text>
+		<scroll_list name="member_allowed_actions" tool_tip="Данные о каждой доступной способности см. на вкладке «Способности»"/>
+	</panel>
+	<panel name="roles_footer">
+		<text name="static">
+			Имя роли
+		</text>
+		<text name="static3">
+			Название роли
+		</text>
+		<text name="static2">
+			Описание
+		</text>
+		<text name="static4">
+			Назначенные участники
+		</text>
+		<check_box label="Показывать участников" name="role_visible_in_list" tool_tip="Определяет, будут ли участники этой роли видны на вкладке «Основные» жителям, которые не входят в группу."/>
+		<text name="static5">
+			Доступные способности
+		</text>
+		<scroll_list name="role_allowed_actions" tool_tip="Данные о каждой доступной способности см. на вкладке «Способности»"/>
+	</panel>
+	<panel name="actions_footer">
+		<text_editor name="action_description">
+			Это способность «Исключать участников из группы». Владельца может исключить только другой владелец.
+		</text_editor>
+		<text name="static2">
+			Роли с этой способностью
+		</text>
+		<text name="static3">
+			Участники с этой способностью
+		</text>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..2a23cdb8000a3edd0386e6998ff0daf4d0fca33d
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_im_control_panel.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+	<layout_stack name="button_stack">
+		<layout_panel name="view_profile_btn_panel">
+			<button label="Профиль" name="view_profile_btn"/>
+		</layout_panel>
+		<layout_panel name="add_friend_btn_panel">
+			<button label="Добавить в друзья" name="add_friend_btn"/>
+		</layout_panel>
+		<layout_panel name="teleport_btn_panel">
+			<button label="Телепортация" name="teleport_btn" tool_tip="Предложить телепортацию этому жителю"/>
+		</layout_panel>
+		<layout_panel name="share_btn_panel">
+			<button label="Поделиться" name="share_btn"/>
+		</layout_panel>
+		<layout_panel name="pay_btn_panel">
+			<button label="Заплатить" name="pay_btn"/>
+		</layout_panel>
+		<layout_panel name="call_btn_panel">
+			<button label="Звонок" name="call_btn"/>
+		</layout_panel>
+		<layout_panel name="end_call_btn_panel">
+			<button label="Завершить звонок" name="end_call_btn"/>
+		</layout_panel>
+		<layout_panel name="voice_ctrls_btn_panel">
+			<button label="Управление голосом" name="voice_ctrls_btn"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_instant_message.xml b/indra/newview/skins/default/xui/ru/panel_instant_message.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cf9bc7fccb7aae564f2789e005b10e840a49deff
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_instant_message.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="im_panel" name="im_panel">
+	<string name="message_max_lines_count">
+		6
+	</string>
+	<panel label="im_header" name="im_header">
+		<text name="time_box" value="23:30"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_inventory_item.xml b/indra/newview/skins/default/xui/ru/panel_inventory_item.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d18047fbcfaff5835094aa3aeb54e1f0ba47c183
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_inventory_item.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="inventory_item">
+	<text name="item_name" value="..."/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_landmark_info.xml b/indra/newview/skins/default/xui/ru/panel_landmark_info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f4febd49cd0479484801ed76f8b2a194703a06da
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_landmark_info.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="landmark_info">
+	<string name="title_create_landmark" value="Создать закладку"/>
+	<string name="title_edit_landmark" value="Изменить закладку"/>
+	<string name="title_landmark" value="Закладка"/>
+	<string name="not_available" value="(неизвестно)"/>
+	<string name="unknown" value="(неизвестно)"/>
+	<string name="public" value="(публичное)"/>
+	<string name="server_update_text">
+		Необходимо обновление сервера, чтобы информация стала доступна.
+	</string>
+	<string name="server_error_text">
+		Информация об этом месте сейчас недоступна. Повторите попытку позже.
+	</string>
+	<string name="server_forbidden_text">
+		Информация об этом месте недоступна, поскольку у вас нет прав на ее просмотр.  Узнайте о своих правах, связавшись с владельцем участка.
+	</string>
+	<string name="acquired_date">
+		[wkday,datetime,local], [day,datetime,local] [mth,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+	</string>
+	<button name="back_btn" tool_tip="Назад"/>
+	<text name="title" value="Профиль места"/>
+	<scroll_container name="place_scroll">
+		<panel name="scrolling_panel">
+			<text name="region_title" value="Образец_региона"/>
+			<text name="parcel_title" value="Пример участка, длина имени (145, 228, 26)"/>
+			<expandable_text name="description" value="Du waltz die spritz"/>
+			<text name="maturity_value" value="неизвестно"/>
+			<panel name="landmark_info_panel">
+				<text name="owner_label" value="Владелец:"/>
+				<text name="creator_label" value="Создатель:"/>
+				<text name="created_label" value="Создано:"/>
+			</panel>
+			<panel name="landmark_edit_panel">
+				<text name="title_label" value="Название:"/>
+				<text name="notes_label" value="Мои заметки:"/>
+				<text name="folder_label" value="Расположение закладки:"/>
+			</panel>
+		</panel>
+	</scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_landmarks.xml b/indra/newview/skins/default/xui/ru/panel_landmarks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7d684cd479a56b689151e15d6ed69dcc52382e22
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_landmarks.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Landmarks">
+	<accordion name="landmarks_accordion">
+		<accordion_tab name="tab_favorites" title="Избранное"/>
+		<accordion_tab name="tab_landmarks" title="Мои закладки"/>
+		<accordion_tab name="tab_inventory" title="Мой инвентарь"/>
+		<accordion_tab name="tab_library" title="Библиотека"/>
+	</accordion>
+	<panel name="bottom_panel">
+		<layout_stack name="bottom_panel">
+			<layout_panel name="options_gear_btn_panel">
+				<menu_button name="options_gear_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="trash_btn" tool_tip="Удалить выбранную закладку"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_login.xml b/indra/newview/skins/default/xui/ru/panel_login.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7928191fa63b74463c04d2d7aaeb59b8e20576da
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_login.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_login">
+	<panel.string name="create_account_url">
+		http://join.secondlife.com/
+	</panel.string>
+	<panel.string name="forgot_password_url">
+		http://secondlife.com/account/request.php
+	</panel.string>
+	<layout_stack name="login_widgets">
+		<layout_panel name="login">
+			<text name="username_text">
+				Имя пользователя:
+			</text>
+			<combo_box name="username_combo" tool_tip="Имя пользователя, которое вы выбрали при регистрации, например, «bobsmith12» или «Steller Sunshine»"/>
+			<text name="password_text">
+				Пароль:
+			</text>
+			<check_box label="Запомнить пароль" name="remember_check"/>
+			<button label="Войти" name="connect_btn"/>
+			<text name="mode_selection_text">
+				Режим:
+			</text>
+			<combo_box name="mode_combo" tool_tip="Выберите режим. Основной – для быстрого и простого ознакомления с игрой, а также общения. Расширенный – для доступа к более широким возможностям.">
+				<combo_box.item label="Основной" name="Basic"/>
+				<combo_box.item label="Расширенный" name="Advanced"/>
+			</combo_box>
+			<text name="start_location_text">
+				Место старта:
+			</text>
+			<combo_box name="start_location_combo">
+				<combo_box.item label="Последнее местоположение" name="MyLastLocation"/>
+				<combo_box.item label="Мой дом" name="MyHome"/>
+				<combo_box.item label="&lt;Введите название региона&gt;" name="Typeregionname"/>
+			</combo_box>
+		</layout_panel>
+		<layout_panel name="links">
+			<text name="create_new_account_text">
+				Регистрация
+			</text>
+			<text name="forgot_password_text">
+				Забыли имя или пароль?
+			</text>
+			<text name="login_help">
+				Нужна помощь при входе?
+			</text>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_main_inventory.xml b/indra/newview/skins/default/xui/ru/panel_main_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..80a67371af8c8e44277c925431b71adaaede8eca
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_main_inventory.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Вещи" name="main inventory panel">
+	<panel.string name="ItemcountFetching">
+		Обнаружено [ITEM_COUNT] вещей... [FILTER]
+	</panel.string>
+	<panel.string name="ItemcountCompleted">
+		[ITEM_COUNT] вещей [FILTER]
+	</panel.string>
+	<text name="ItemcountText">
+		Вещи:
+	</text>
+	<filter_editor label="Фильтр для инвентаря" name="inventory search editor"/>
+	<tab_container name="inventory filter tabs">
+		<inventory_panel label="МОЙ ИНВЕНТАРЬ" name="All Items"/>
+		<recent_inventory_panel label="НЕДАВНИЕ" name="Recent Items"/>
+	</tab_container>
+	<layout_stack name="bottom_panel">
+		<layout_panel name="options_gear_btn_panel">
+			<menu_button name="options_gear_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="trash_btn" tool_tip="Удалить выбранную вещь"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_me.xml b/indra/newview/skins/default/xui/ru/panel_me.xml
new file mode 100644
index 0000000000000000000000000000000000000000..21a125af8762868339bb910e5b34da35bf9b36a5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_me.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Мой профиль" name="panel_me">
+	<panel label="МОЯ ПОДБОРКА" name="panel_picks"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..6dc435db20a3fc0aa27df32be7cbf623c177d203
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_media_settings_general.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Общие" name="Media Settings General">
+	<text name="home_label">
+		Домашняя страница:
+	</text>
+	<text name="home_fails_whitelist_label">
+		(Эта страница не определена в белом списке)
+	</text>
+	<line_editor name="home_url" tool_tip="Домашняя страница для этого медиа-источника"/>
+	<text name="preview_label">
+		Предварительный просмотр
+	</text>
+	<text name="current_url_label">
+		Текущая страница:
+	</text>
+	<text name="current_url" tool_tip="Текущая страница для этого медиа-источника" value=""/>
+	<button label="Сброс" name="current_url_reset_btn"/>
+	<check_box initial_value="ложь" label="Автоматическое зацикливание" name="auto_loop"/>
+	<check_box initial_value="ложь" label="Реакция на первый щелчок" name="first_click_interact"/>
+	<check_box initial_value="ложь" label="Автоувеличение" name="auto_zoom"/>
+	<check_box initial_value="ложь" label="Автоматическое проигрывание" name="auto_play"/>
+	<text name="media_setting_note">
+		Примечание. Жители могут переопределять эту настройку.
+	</text>
+	<check_box initial_value="ложь" label="Автомасштабирование на объекте" name="auto_scale"/>
+	<text name="size_label">
+		Размер:
+	</text>
+	<text name="X_label">
+		X
+	</text>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..680cba9c140c0d53df03b381a7cbff3b523edf2c
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_media_settings_permissions.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Настроить" name="Media settings for controls">
+	<text name="controls_label">
+		Элементы управления:
+	</text>
+	<combo_box name="controls">
+		<combo_item name="Standard">
+			Стандарт
+		</combo_item>
+		<combo_item name="Mini">
+			Минимум
+		</combo_item>
+	</combo_box>
+	<text name="owner_label">
+		Владелец
+	</text>
+	<check_box initial_value="ложь" label="Разрешить навигацию и взаимодействие" name="perms_owner_interact"/>
+	<check_box initial_value="ложь" label="Панель управления видна" name="perms_owner_control"/>
+	<text name="group_label">
+		Группа:
+	</text>
+	<check_box initial_value="ложь" label="Разрешить навигацию и взаимодействие" name="perms_group_interact"/>
+	<check_box initial_value="ложь" label="Панель управления видна" name="perms_group_control"/>
+	<text name="anyone_label">
+		всем
+	</text>
+	<check_box initial_value="ложь" label="Разрешить навигацию и взаимодействие" name="perms_anyone_interact"/>
+	<check_box initial_value="ложь" label="Панель управления видна" name="perms_anyone_control"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..6b30dc799cb375b205f7e85cf3f58956cb0d5557
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_media_settings_security.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Безопасность" name="Media Settings Security">
+	<check_box initial_value="ложь" label="Разрешить доступ к ссылкам только по шаблону" name="whitelist_enable"/>
+	<text name="home_url_fails_some_items_in_whitelist">
+		Пункты, не подходящие для домашней страницы, отмечены знаком:
+	</text>
+	<button label="Добавить" name="whitelist_add"/>
+	<button label="Удалить" name="whitelist_del"/>
+	<text name="home_url_fails_whitelist">
+		Внимание! Домашняя страница, указанная на вкладке «Общие», не входит в белый список. Она будет недоступна до тех пор, пока не будет внесена правильная запись.
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_navigation_bar.xml b/indra/newview/skins/default/xui/ru/panel_navigation_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5e3de180f92c589fa951e1902f13455482e8e295
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_navigation_bar.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="navigation_bar">
+	<layout_stack name="nvp_stack">
+		<layout_panel name="navigation_layout_panel">
+			<panel name="navigation_panel">
+				<pull_button name="back_btn" tool_tip="Вернуться в предыдущее место"/>
+				<pull_button name="forward_btn" tool_tip="Перейти в следующее место"/>
+				<button name="home_btn" tool_tip="Телепортация домой"/>
+				<location_input label="Место" name="location_combo"/>
+			</panel>
+		</layout_panel>
+		<layout_panel name="favorites_layout_panel">
+			<favorites_bar name="favorite" tool_tip="Перетаскивайте сюда закладки, чтобы было удобнее переходить в любимые места в Second Life!">
+				<label name="favorites_bar_label" tool_tip="Перетаскивайте сюда закладки, чтобы было удобнее переходить в любимые места в Second Life!">
+					Избранное
+				</label>
+				<more_button name="&gt;&gt;" tool_tip="Показать больше избранного">
+					Больше ▼
+				</more_button>
+			</favorites_bar>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml b/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8e3aac38d2dd356ab3164eba79fc9fcf7df1df00
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+	<check_box label="Переводить чат" name="translate_chat_checkbox"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..804ba7def7538d80fc475e7306695222efbf1ce9
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_nearby_chat_bar.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chat_bar">
+	<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/ru/panel_nearby_media.xml b/indra/newview/skins/default/xui/ru/panel_nearby_media.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3b23fc78f57601a697881fa6d2f2eef6050d63e3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_nearby_media.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_media">
+	<string name="media_item_count_format">
+		(%ld предметов с медиа)
+	</string>
+	<string name="empty_item_text">
+		&lt;пусто&gt;
+	</string>
+	<string name="parcel_media_name">
+		Потоковое видео на участке
+	</string>
+	<string name="parcel_audio_name">
+		Потоковый звук на участке
+	</string>
+	<string name="playing_suffix">
+		(проигрывается)
+	</string>
+	<panel name="minimized_controls">
+		<button label="Выключить все" name="all_nearby_media_disable_btn" tool_tip="Выключить все ближайшее медиа"/>
+		<button label="Включить все" name="all_nearby_media_enable_btn" tool_tip="Включить все ближайшее медиа"/>
+		<button name="open_prefs_btn" tool_tip="Открыть настройки медиа"/>
+		<button label="Больше &gt;&gt;" label_selected="&lt;&lt; Меньше" name="more_btn" tool_tip="Дополнительное управление"/>
+	</panel>
+	<panel name="nearby_media_panel">
+		<text name="nearby_media_title">
+			Ближайшее медиа
+		</text>
+		<text name="show_text">
+			Показать:
+		</text>
+		<combo_box name="show_combo">
+			<combo_box.item label="Все" name="All"/>
+			<combo_box.item label="На этом участке" name="WithinParcel"/>
+			<combo_box.item label="За пределами этого участка" name="OutsideParcel"/>
+			<combo_box.item label="На других аватарах" name="OnOthers"/>
+		</combo_box>
+		<scroll_list name="media_list">
+			<scroll_list.columns label="Расстояние" name="media_proximity"/>
+			<scroll_list.columns label="Видимость" name="media_visibility"/>
+			<scroll_list.columns label="Класс" name="media_class"/>
+			<scroll_list.columns label="Название" name="media_name"/>
+			<scroll_list.columns label="Отладка" name="media_debug"/>
+		</scroll_list>
+		<panel name="media_controls_panel">
+			<layout_stack name="media_controls">
+				<layout_panel name="stop">
+					<button name="stop_btn" tool_tip="Остановить выбранное медиа"/>
+				</layout_panel>
+				<layout_panel name="play">
+					<button name="play_btn" tool_tip="Проиграть выбранное медиа"/>
+				</layout_panel>
+				<layout_panel name="pause">
+					<button name="pause_btn" tool_tip="Приостановить выбранное медиа"/>
+				</layout_panel>
+				<layout_panel name="volume_slider_ctrl">
+					<slider_bar initial_value="0.5" name="volume_slider" tool_tip="Громкость звука выбранного медиа"/>
+				</layout_panel>
+				<layout_panel name="mute">
+					<button name="mute_btn" tool_tip="Заглушить выбранное медиа"/>
+				</layout_panel>
+				<layout_panel name="zoom">
+					<button name="zoom_btn" tool_tip="Приблизить камеру к выбранному медиа"/>
+				</layout_panel>
+				<layout_panel name="unzoom">
+					<button name="unzoom_btn" tool_tip="Отдалить камеру от выбранного медиа"/>
+				</layout_panel>
+			</layout_stack>
+		</panel>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml b/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1ac88a01b31fc32414ec992d01c4dd8fb9a1b135
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_notify_textbox.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="instant_message" name="panel_notify_textbox">
+	<string name="message_max_lines_count" value="7"/>
+	<panel label="info_panel" name="info_panel">
+		<text_editor name="message" value="сообщение"/>
+	</panel>
+	<panel label="control_panel" name="control_panel">
+		<button label="Отослать" name="btn_submit"/>
+		<button label="Игнорировать" name="ignore_btn"/>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..fdc489f375ec6eabd344b633f4fb6eb00c3ccef3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_online_status_toast.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="friend_online_status" name="friend_online_status"/>
diff --git a/indra/newview/skins/default/xui/ru/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/ru/panel_outbox_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0095d48af9f89ef0708ee4d6abcf8a7394ecd610
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_outbox_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<outbox_inventory_panel name="inventory_outbox" tool_tip="Перетащите вещи сюда, чтобы подготовить их для размещения на витрине вашего магазина"/>
diff --git a/indra/newview/skins/default/xui/ru/panel_outfit_edit.xml b/indra/newview/skins/default/xui/ru/panel_outfit_edit.xml
new file mode 100644
index 0000000000000000000000000000000000000000..91c03342a7cd6ae18d02c775dc0b07254ad06200
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_outfit_edit.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Side tray Outfit Edit panel -->
+<panel name="outfit_edit">
+	<string name="No Outfit" value="Нет костюма"/>
+	<string name="unsaved_changes" value="Несохраненные изменения"/>
+	<string name="now_editing" value="Сейчас редактируется"/>
+	<panel.string name="not_available">
+		(нет)
+	</panel.string>
+	<panel.string name="unknown">
+		(неизвестно)
+	</panel.string>
+	<string name="Filter.All" value="Все"/>
+	<string name="Filter.Clothes/Body" value="Одежда/тело"/>
+	<string name="Filter.Objects" value="Объекты"/>
+	<string name="Filter.Clothing" value="Одежда"/>
+	<string name="Filter.Bodyparts" value="Части тела"/>
+	<string name="replace_body_part" value="Щелкните для замены текущей фигуры"/>
+	<text name="title" value="Изменить костюм"/>
+	<panel name="header_panel">
+		<panel name="outfit_name_and_status">
+			<text name="status" value="Сейчас редактируется…"/>
+			<text name="curr_outfit_name" value="[Текущий костюм]"/>
+		</panel>
+	</panel>
+	<layout_stack name="im_panels">
+		<layout_panel name="outfit_wearables_panel">
+			<layout_stack name="filter_panels">
+				<layout_panel name="add_button_and_combobox">
+					<button label="Добавить…" name="show_add_wearables_btn" tool_tip="Открыть/закрыть"/>
+				</layout_panel>
+				<layout_panel name="filter_panel">
+					<filter_editor label="Фильтр для носимого инвентаря" name="look_item_filter"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="add_wearables_panel">
+			<button label="Носимая вещь" name="plus_btn"/>
+		</layout_panel>
+	</layout_stack>
+	<panel name="no_add_wearables_button_bar">
+		<button name="shop_btn_1" tool_tip="Посетите магазин Second Life. Также можно выбрать предмет надетой одежды и щелкнуть здесь, чтобы найти что-то похожее"/>
+	</panel>
+	<panel name="add_wearables_button_bar">
+		<button name="shop_btn_2" tool_tip="Посетите магазин Second Life. Также можно выбрать предмет надетой одежды и щелкнуть здесь, чтобы найти что-то похожее"/>
+	</panel>
+	<panel name="save_revert_button_bar">
+		<layout_stack name="button_bar_ls">
+			<layout_panel name="save_btn_lp">
+				<button label="Сохранить" name="save_btn"/>
+			</layout_panel>
+			<layout_panel name="revert_btn_lp">
+				<button label="Отменить изменения" name="revert_btn" tool_tip="Вернуться к последней сохраненной версии"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4d0e13fca2c883fc75572b904518e30362c86e49
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_outfits_inventory.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Вещи" name="Outfits">
+	<panel.string name="wear_outfit_tooltip">
+		Надеть выбранный костюм
+	</panel.string>
+	<panel.string name="wear_items_tooltip">
+		Надеть выбранные вещи
+	</panel.string>
+	<tab_container name="appearance_tabs">
+		<panel label="МОИ КОСТЮМЫ" name="outfitslist_tab"/>
+		<panel label="НАДЕТО" name="cof_tab"/>
+	</tab_container>
+	<panel name="bottom_panel">
+		<layout_stack name="bottom_panel_ls">
+			<layout_panel name="save_btn_lp">
+				<button label="Сохранить как" name="save_btn"/>
+			</layout_panel>
+			<layout_panel name="wear_btn_lp">
+				<button label="Надеть" name="wear_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..96f4b4a893e1786854058b65adae1b14c812177b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_outfits_inventory_gear_default.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gear_default">
+	<menu_item_call label="Сменить текущий костюм" name="wear"/>
+	<menu_item_call label="Убрать из текущего костюма" name="remove"/>
+	<menu_item_call label="Переименовать" name="rename"/>
+	<menu_item_call label="Удалить ссылку" name="remove_link"/>
+	<menu_item_call label="Удалить костюм" name="delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_list.xml b/indra/newview/skins/default/xui/ru/panel_outfits_list.xml
new file mode 100644
index 0000000000000000000000000000000000000000..74551e4274cddc89f5d6d62914c915de5174a0fc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_outfits_list.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Outfits">
+	<accordion name="outfits_accordion">
+		<no_matched_tabs_text name="no_matched_outfits_msg" value="Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/all/[SEARCH_TERM] поиском]."/>
+		<no_visible_tabs_text name="no_outfits_msg" value="У вас пока нет никаких костюмов. Воспользуйтесь [secondlife:///app/search/all/ поиском]."/>
+	</accordion>
+	<panel name="bottom_panel">
+		<menu_button name="options_gear_btn" tool_tip="Показать дополнительные параметры"/>
+		<button name="trash_btn" tool_tip="Удалить выбранный костюм"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7ed6bf35c047f8d1a908aa8278d6ee3a43b512a4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_outfits_wearing.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Wearing">
+	<panel name="bottom_panel">
+		<menu_button name="options_gear_btn" tool_tip="Показать дополнительные параметры"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_people.xml b/indra/newview/skins/default/xui/ru/panel_people.xml
new file mode 100644
index 0000000000000000000000000000000000000000..607921f2d6940de5615b03e51245481606d4bb59
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_people.xml
@@ -0,0 +1,94 @@
+<?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 картой мира]."/>
+	<string name="no_filtered_recent_people" value="Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/people/[SEARCH_TERM] поиском]."/>
+	<string name="no_one_near" value="Никого нет рядом. Ищете, с кем пообщаться? Воспользуйтесь [secondlife:///app/search/people поиском] или [secondlife:///app/worldmap картой мира]."/>
+	<string name="no_one_filtered_near" value="Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/people/[SEARCH_TERM] поиском]."/>
+	<string name="no_friends_online" value="Нет друзей онлайн"/>
+	<string name="no_friends" value="Нет друзей"/>
+	<string name="no_friends_msg">
+		Найдите друзей с помощью [secondlife:///app/search/people поиска] или добавьте жителей в друзья с помощью правой кнопки мыши.
+Ищете, с кем пообщаться? Воспользуйтесь [secondlife:///app/worldmap картой мира].
+	</string>
+	<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>
+		</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="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="bottom_panel">
+				<menu_button name="recent_viewsort_btn" tool_tip="Опции"/>
+				<button name="add_friend_btn" tool_tip="Добавить выбранного жителя в список друзей"/>
+			</panel>
+		</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_pick_info.xml b/indra/newview/skins/default/xui/ru/panel_pick_info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..373cf211fbf407a1f4ea7be38e1b829507951392
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_pick_info.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_pick_info">
+	<text name="title" value="О подборке"/>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<text_editor name="pick_name" value="[название]"/>
+			<text_editor name="pick_location" value="[загрузка...]"/>
+			<text_editor name="pick_desc" value="[описание]"/>
+		</panel>
+	</scroll_container>
+	<panel name="buttons">
+		<layout_stack name="layout_stack1">
+			<layout_panel name="layout_panel1">
+				<button label="Телепорт" name="teleport_btn"/>
+			</layout_panel>
+			<layout_panel name="show_on_map_btn_lp">
+				<button label="Карта" name="show_on_map_btn"/>
+			</layout_panel>
+			<layout_panel name="edit_btn_lp">
+				<button label="Изменить" name="edit_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_picks.xml b/indra/newview/skins/default/xui/ru/panel_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d6770e0eeb876f736baee2e61864545e73c00f4a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_picks.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Подборка" name="panel_picks">
+	<string name="no_picks" value="Нет подборки"/>
+	<string name="no_classifieds" value="Нет рекламы"/>
+	<accordion name="accordion">
+		<accordion_tab name="tab_picks" title="Подборка"/>
+		<accordion_tab name="tab_classifieds" title="Реклама"/>
+	</accordion>
+	<panel label="bottom_panel" name="edit_panel">
+		<layout_stack name="edit_panel_ls">
+			<layout_panel name="gear_menu_btn">
+				<button name="new_btn" tool_tip="Создать подборку или рекламу на этом месте"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+	<panel name="buttons_cucks">
+		<layout_stack name="buttons_cucks_ls">
+			<layout_panel name="info_btn_lp">
+				<button label="Данные" name="info_btn" tool_tip="Показать данные о подборке"/>
+			</layout_panel>
+			<layout_panel name="teleport_btn_lp">
+				<button label="Телепортироваться" name="teleport_btn" tool_tip="Телепортация в соответствующую область"/>
+			</layout_panel>
+			<layout_panel name="show_on_map_btn_lp">
+				<button label="Карта" name="show_on_map_btn" tool_tip="Показать соответствующую область на карте мира"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_place_profile.xml b/indra/newview/skins/default/xui/ru/panel_place_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b486b918eda148846e8eeaf87cdd31d6ee18c21f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_place_profile.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="place_profile">
+	<string name="on" value="Вкл."/>
+	<string name="off" value="Выкл."/>
+	<string name="anyone" value="Все"/>
+	<string name="available" value="доступно"/>
+	<string name="allocated" value="расположено"/>
+	<string name="title_place" value="Профиль места"/>
+	<string name="title_teleport_history" value="История телепортов"/>
+	<string name="not_available" value="(нет)"/>
+	<string name="unknown" value="(неизвестно)"/>
+	<string name="public" value="(публичное)"/>
+	<string name="none_text" value="(нет)"/>
+	<string name="sale_pending_text" value="(Ожидание продажи)"/>
+	<string name="group_owned_text" value="(Собственность группы)"/>
+	<string name="price_text" value="L$"/>
+	<string name="area_text" value="м²"/>
+	<string name="all_residents_text" value="Все жители"/>
+	<string name="group_text" value="Группа"/>
+	<string name="can_resell">
+		Приобретенная в этом регионе земля может быть перепродана.
+	</string>
+	<string name="can_not_resell">
+		Приобретенная в этом регионе земля не может быть перепродана.
+	</string>
+	<string name="can_change">
+		Приобретенная в этом регионе земля может быть объединена или разделена.
+	</string>
+	<string name="can_not_change">
+		Приобретенная в этом регионе земля не может быть объединена или разделена.
+	</string>
+	<string name="server_update_text">
+		Информация о месте недоступна без обновления сервера.
+	</string>
+	<string name="server_error_text">
+		Информация об этом месте сейчас недоступна. Повторите попытку позже.
+	</string>
+	<string name="server_forbidden_text">
+		Информация об этом месте недоступна из-за ограничений доступа.  Согласуйте свой уровень доступа с владельцем участка.
+	</string>
+	<string name="acquired_date">
+		[wkday,datetime,local], [day,datetime,local] [mth,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+	</string>
+	<button name="back_btn" tool_tip="Назад"/>
+	<text name="title" value="Профиль места"/>
+	<scroll_container name="place_scroll">
+		<panel name="scrolling_panel">
+			<text name="region_title" value="Образец_региона"/>
+			<text name="parcel_title" value="Образец_участка, название Long (145, 228, 26)"/>
+			<expandable_text name="description" value="Du waltz die spritz"/>
+			<text name="owner_label" value="Владелец:"/>
+			<text name="owner_value" value="Алексей Сверхдлинноеимянов"/>
+			<text name="maturity_value" value="неизвестен"/>
+			<accordion name="advanced_info_accordion">
+				<accordion_tab name="parcel_characteristics_tab" title="Участок">
+					<panel name="parcel_characteristics_panel">
+						<text name="rating_label" value="Рейтинг:"/>
+						<text name="rating_value" value="неизвестен"/>
+						<text name="voice_label" value="Голос:"/>
+						<text name="voice_value" value="Вкл."/>
+						<text name="fly_label" value="Полет:"/>
+						<text name="fly_value" value="Вкл."/>
+						<text name="push_label" value="Толкание:"/>
+						<text name="push_value" value="Выкл."/>
+						<text name="build_label" value="Строительство:"/>
+						<text name="build_value" value="Вкл."/>
+						<text name="scripts_label" value="Скрипты:"/>
+						<text name="scripts_value" value="Вкл."/>
+						<text name="damage_label" value="Повреждения:"/>
+						<text name="damage_value" value="Выкл."/>
+						<text name="see_avatars_label" value="Видеть аватары:"/>
+						<text name="see_avatars_value" value="Выкл."/>
+						<button label="О земле" name="about_land_btn"/>
+					</panel>
+				</accordion_tab>
+				<accordion_tab name="region_information_tab" title="Регион">
+					<panel name="region_information_panel">
+						<text name="region_name_label" value="Регион:"/>
+						<text name="region_name" value="Лососево"/>
+						<text name="region_type_label" value="Тип:"/>
+						<text name="region_type" value="Лосось"/>
+						<text name="region_rating_label" value="Рейтинг:"/>
+						<text name="region_rating" value="Взрослый"/>
+						<text name="region_owner_label" value="Владелец:"/>
+						<text name="region_owner" value="лосось Ван Лосось очень длинное имя лосось"/>
+						<text name="region_group_label" value="Группа:"/>
+						<text name="region_group">
+							Крепкий лосось из Лососево под Усть-Лососинском
+						</text>
+						<button label="Регион/землевладение" name="region_info_btn"/>
+					</panel>
+				</accordion_tab>
+				<accordion_tab name="estate_information_tab" title="Землевладение">
+					<panel name="estate_information_panel">
+						<text name="estate_name_label" value="Землевладение:"/>
+						<text name="estate_rating_label" value="Рейтинг:"/>
+						<text name="estate_owner_label" value="Владелец:"/>
+						<text name="estate_owner" value="Длина имени владельца теста (длинное имя)"/>
+						<text name="covenant_label" value="Соглашение:"/>
+					</panel>
+				</accordion_tab>
+				<accordion_tab name="sales_tab" title="Для продажи">
+					<panel name="sales_panel">
+						<text name="sales_price_label" value="Цена:"/>
+						<text name="area_label" value="Площадь:"/>
+						<text name="traffic_label" value="Посещаемость:"/>
+						<text name="primitives_label" value="Примитивы:"/>
+						<text name="parcel_scripts_label" value="Скрипты:"/>
+						<text name="terraform_limits_label" value="Терраформирование:"/>
+						<text name="subdivide_label" value="Способность разделения/объединения:"/>
+						<text name="resale_label" value="Способность перепродажи:"/>
+						<text name="sale_to_label" value="Продажа для:"/>
+					</panel>
+				</accordion_tab>
+			</accordion>
+		</panel>
+	</scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_places.xml b/indra/newview/skins/default/xui/ru/panel_places.xml
new file mode 100644
index 0000000000000000000000000000000000000000..54837d3c0b83215918b111f7647f1ba997859437
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_places.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Места" name="places panel">
+	<string name="landmarks_tab_title" value="МОИ ЗАКЛАДКИ"/>
+	<string name="teleport_history_tab_title" value="ИСТОРИЯ ТЕЛЕПОРТАЦИЙ"/>
+	<filter_editor label="Фильтр для закладок" name="Filter"/>
+	<panel name="button_panel">
+		<layout_stack name="bottom_bar_ls0">
+			<layout_panel name="lp1">
+				<layout_stack name="bottom_bar_ls1">
+					<layout_panel name="teleport_btn_lp">
+						<button label="Телепортация" name="teleport_btn" tool_tip="Телепортироваться в выбранную область"/>
+					</layout_panel>
+					<layout_panel name="chat_btn_lp">
+						<button label="Карта" name="map_btn" tool_tip="Показать соответствующую область на карте мира"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="lp2">
+				<layout_stack name="bottom_bar_ls3">
+					<layout_panel name="edit_btn_lp">
+						<button label="Изменить" name="edit_btn" tool_tip="Редактировать информацию о закладке"/>
+					</layout_panel>
+					<layout_panel name="overflow_btn_lp">
+						<menu_button name="overflow_btn" tool_tip="Показать дополнительные параметры"/>
+					</layout_panel>
+				</layout_stack>
+				<layout_stack name="bottom_bar_profile_ls">
+					<layout_panel name="profile_btn_lp">
+						<button label="Профиль" name="profile_btn" tool_tip="Показать профиль места"/>
+					</layout_panel>
+				</layout_stack>
+				<layout_stack name="bottom_bar_close_ls3">
+					<layout_panel name="close_btn_lp">
+						<button label="Закрыть" name="close_btn"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+		<layout_stack name="bottom_bar_ls2">
+			<layout_panel name="save_btn_lp">
+				<button label="Сохранить" name="save_btn"/>
+			</layout_panel>
+			<layout_panel name="cancel_btn_lp">
+				<button label="Отмена" name="cancel_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_postcard_message.xml b/indra/newview/skins/default/xui/ru/panel_postcard_message.xml
new file mode 100644
index 0000000000000000000000000000000000000000..70587d809003fe62d42dbf93421b0b65e906d038
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_postcard_message.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_message">
+	<text name="to_label">
+		Кому:
+	</text>
+	<text name="name_label">
+		От:
+	</text>
+	<text name="subject_label">
+		Тема:
+	</text>
+	<line_editor label="Введите тему письма." name="subject_form"/>
+	<text name="msg_label">
+		Сообщение:
+	</text>
+	<text_editor name="msg_form">
+		Введите текст письма.
+	</text_editor>
+	<button label="Отмена" name="cancel_btn"/>
+	<button label="Послать" name="send_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_postcard_settings.xml b/indra/newview/skins/default/xui/ru/panel_postcard_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dc9d59008f158635890d7df9a871501b5b6c3f12
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_postcard_settings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_settings">
+	<combo_box label="Размер" name="postcard_size_combo">
+		<combo_box.item label="Текущее окно" name="CurrentWindow"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="Задать" name="Custom"/>
+	</combo_box>
+	<layout_stack name="postcard_image_params_ls">
+		<layout_panel name="postcard_image_size_lp">
+			<spinner label="Ширина" name="postcard_snapshot_width"/>
+			<spinner label="Высота" name="postcard_snapshot_height"/>
+			<check_box label="Сохранять пропорции" name="postcard_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="postcard_image_format_quality_lp">
+			<slider label="Качество изображения" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7d8ee96924feb5739458e2c8d5b611848c63f929
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_advanced.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Дополнительно" name="advanced">
+	<panel.string name="aspect_ratio_text">
+		[NUM]:[DEN]
+	</panel.string>
+	<text name="Cache:">
+		Кэш:
+	</text>
+	<spinner label="Размер кэша (64 - 9984 МБ)" name="cachesizespinner"/>
+	<text name="text_box5">
+		МБ
+	</text>
+	<button label="Очистить кэш" label_selected="Очистить кэш" name="clear_cache"/>
+	<text name="Cache location">
+		Расположение кэша:
+	</text>
+	<button label="Обзор" label_selected="Обзор" name="set_cache"/>
+	<button label="Расположение по умолчанию" label_selected="Расположение по умолчанию" name="default_cache_location"/>
+	<text name="UI Size:">
+		Интерфейс:
+	</text>
+	<check_box label="Показывать ошибки скрипта в:" name="show_script_errors"/>
+	<radio_group name="show_location">
+		<radio_item label="локальном чате" name="0"/>
+		<radio_item label="отдельном окне" name="1"/>
+	</radio_group>
+	<check_box label="Разрешить работу нескольких клиентов" name="allow_multiple_viewer_check"/>
+	<check_box label="Выбор сетки при входе" name="show_grid_selection_check"/>
+	<check_box label="Показывать расширенное меню" name="show_advanced_menu_check"/>
+	<check_box label="Показывать меню разработчика" name="show_develop_menu_check"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9d7ae546fd4e78fc36206478d5ce117bd3288233
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_alerts.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Всплывающие окна" name="popups">
+	<text name="tell_me_label">
+		Сообщать мне:
+	</text>
+	<check_box label="о расходах и доходах" name="notify_money_change_checkbox"/>
+	<check_box label="о входе и выходе моих друзей" name="friends_online_notify_checkbox"/>
+	<text name="show_label">
+		Всегда показывать:
+	</text>
+	<text name="dont_show_label">
+		Никогда не показывать:
+	</text>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..a9d5569c7f3da4933b736fe89302097d83f3dd8e
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_chat.xml
@@ -0,0 +1,33 @@
+<?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"/>
+	<button label="Настройки перевода чата" name="ok_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml b/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml
new file mode 100644
index 0000000000000000000000000000000000000000..48c34fcbb283ef1138ed5a534d434a9c9f7d1cc7
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_colors.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Цвета" name="colors_panel">
+	<text name="effects_color_textbox">
+		Мои эффекты (луч выбора):
+	</text>
+	<color_swatch name="effect_color_swatch" tool_tip="Щелкните для выбора цвета"/>
+	<text name="font_colors">
+		Цвета шрифтов чата:
+	</text>
+	<text name="text_box1">
+		Я
+	</text>
+	<text name="text_box2">
+		Другие
+	</text>
+	<text name="text_box3">
+		Объекты
+	</text>
+	<text name="text_box4">
+		Система
+	</text>
+	<text name="text_box5">
+		Ошибки
+	</text>
+	<text name="text_box10">
+		Прямо
+	</text>
+	<text name="text_box7">
+		Владелец
+	</text>
+	<text name="text_box9">
+		URL-адреса
+	</text>
+	<text name="bubble_chat">
+		Цвет фона тегов имен (также для чата в пузырьках):
+	</text>
+	<color_swatch name="background" tool_tip="Выберите цвет для тегов имен"/>
+	<slider label="Видимость:" name="bubble_chat_opacity" tool_tip="Задайте непрозрачность тегов имен"/>
+	<text name="floater_opacity">
+		Непрозрачность окон:
+	</text>
+	<slider label="Активные:" name="active"/>
+	<slider label="Неактивные:" name="inactive"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_general.xml b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d1bfedf2d85db2ff1d349c3820523aab63d9470f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_general.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Общие" name="general_panel">
+	<text name="language_textbox">
+		Язык:
+	</text>
+	<combo_box name="language_combobox">
+		<combo_box.item label="Язык системы" name="System Default Language"/>
+		<combo_box.item label="English - Английский" name="English"/>
+		<combo_box.item label="Dansk – датский (бета-версия)" name="Danish"/>
+		<combo_box.item label="Deutsch – немецкий (бета-версия)" name="Deutsch(German)"/>
+		<combo_box.item label="Español – испанский (бета-версия)" name="Spanish"/>
+		<combo_box.item label="Français – французский (бета-версия)" name="French"/>
+		<combo_box.item label="Italiano – итальянский (бета-версия)" name="Italian"/>
+		<combo_box.item label="Polski – польский (бета-версия)" name="Polish"/>
+		<combo_box.item label="Português – португальский (бета-версия)" name="Portugese"/>
+		<combo_box.item label="Русский (бета-версия)" name="Russian"/>
+		<combo_box.item label="Türkçe - турецкий (бета-версия)" name="Turkish"/>
+		<combo_box.item label="日本語 – японский (бета-версия)" name="(Japanese)"/>
+		<combo_box.item label="китайский, традиционное письмо - бета-версия" name="Traditional Chinese"/>
+	</combo_box>
+	<text name="language_textbox2">
+		(Требуется перезапуск)
+	</text>
+	<text name="maturity_desired_prompt">
+		Показывать контент:
+	</text>
+	<combo_box name="maturity_desired_combobox">
+		<combo_box.item label="Общий, умеренный, для взрослых" name="Desired_Adult"/>
+		<combo_box.item label="Общий и умеренный" name="Desired_Mature"/>
+		<combo_box.item label="Общий" name="Desired_PG"/>
+	</combo_box>
+	<text name="start_location_textbox">
+		Место старта:
+	</text>
+	<combo_box name="start_location_combo">
+		<combo_box.item label="Мое последнее место" name="MyLastLocation"/>
+		<combo_box.item label="Мой дом" name="MyHome"/>
+	</combo_box>
+	<check_box initial_value="истина" label="Показывать на экране входа" name="show_location_checkbox"/>
+	<text name="name_tags_textbox">
+		Теги имен:
+	</text>
+	<radio_group name="Name_Tag_Preference">
+		<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 label="Мое имя" name="show_my_name_checkbox1"/>
+	<check_box label="Имена пользователей" name="show_slids" tool_tip="Показывать имя пользователя, например, bobsmith123"/>
+	<check_box label="Титулы групп" name="show_all_title_checkbox1" tool_tip="Показывать титулы групп, например, Officer или Member"/>
+	<check_box label="Подсветка друзей" name="show_friends" tool_tip="Подсвечивать теги имен ваших друзей"/>
+	<check_box label="Экранные имена" name="display_names_check" tool_tip="Показывать экранные имена в чате, IM, тегах имен и пр."/>
+	<text name="inworld_typing_rg_label">
+		Нажатие клавиш с буквами:
+	</text>
+	<radio_group name="inworld_typing_preference">
+		<radio_item label="Начинает локальный чат" name="radio_start_chat" value="1"/>
+		<radio_item label="Приводит к перемещению (т. е. WASD)" name="radio_move" value="0"/>
+	</radio_group>
+	<text name="title_afk_text">
+		Задержка режима «Отошел»:
+	</text>
+	<combo_box label="Задержка режима «Отошел»:" name="afk">
+		<combo_box.item label="2 мин" name="item0"/>
+		<combo_box.item label="5 мин" name="item1"/>
+		<combo_box.item label="10 мин" name="item2"/>
+		<combo_box.item label="30 мин" name="item3"/>
+		<combo_box.item label="никогда" name="item4"/>
+	</combo_box>
+	<text name="text_box3">
+		Ответ в режиме «Занят»:
+	</text>
+	<text_editor name="busy_response">
+		log_in_to_change
+	</text_editor>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a7e826f5fcb625d7d83e9f4973200e9e092cf83f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_graphics1.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Графика" name="Display panel">
+	<text name="QualitySpeed">
+		Качество и скорость:
+	</text>
+	<text name="FasterText">
+		Быстрее
+	</text>
+	<text name="BetterText">
+		Качественней
+	</text>
+	<text name="ShadersPrefText">
+		Низко
+	</text>
+	<text name="ShadersPrefText2">
+		Средне
+	</text>
+	<text name="ShadersPrefText3">
+		Высоко
+	</text>
+	<text name="ShadersPrefText4">
+		Ультра
+	</text>
+	<panel label="Выбор графики" name="CustomGraphics Panel">
+		<text name="ShadersText">
+			Шейдеры:
+		</text>
+		<check_box initial_value="истина" label="Прозрачность воды" name="TransparentWater"/>
+		<check_box initial_value="истина" label="Рельефность и сияние" name="BumpShiny"/>
+		<check_box initial_value="истина" label="Локальный свет" name="LocalLights"/>
+		<check_box initial_value="истина" label="Базовые шейдеры" name="BasicShaders" tool_tip="Отключение этого параметра может предотвратить зависание некоторых видеокарт"/>
+		<check_box initial_value="истина" label="Атмосферные шейдеры" name="WindLightUseAtmosShaders"/>
+		<check_box initial_value="истина" label="Освещение и тени" name="UseLightShaders"/>
+		<check_box initial_value="истина" label="Объемный свет" name="UseSSAO"/>
+		<check_box initial_value="истина" label="Глубина поля" name="UseDoF"/>
+		<text name="shadows_label">
+			Тени:
+		</text>
+		<combo_box name="ShadowDetail">
+			<combo_box.item label="Нет" name="0"/>
+			<combo_box.item label="Солнце/луна" name="1"/>
+			<combo_box.item label="Солнце/луна + осветители" name="2"/>
+		</combo_box>
+		<text name="reflection_label">
+			Вода отражает:
+		</text>
+		<combo_box name="Reflections">
+			<combo_box.item label="Минимум" name="0"/>
+			<combo_box.item label="Ландшафт и деревья" name="1"/>
+			<combo_box.item label="Все статичные объекты" name="2"/>
+			<combo_box.item label="Все аватары и объекты" name="3"/>
+			<combo_box.item label="Все" name="4"/>
+		</combo_box>
+		<slider label="Физика аватара:" name="AvatarPhysicsDetail"/>
+		<text name="AvatarPhysicsDetailText">
+			Низко
+		</text>
+		<slider label="Дальность отрисовки:" name="DrawDistance"/>
+		<text name="DrawDistanceMeterText2">
+			м
+		</text>
+		<slider label="Макс. количество частиц:" name="MaxParticleCount"/>
+		<slider label="Макс. количество 3D-аватаров:" name="MaxNumberAvatarDrawn"/>
+		<slider label="Качество постобработки:" name="RenderPostProcess"/>
+		<text name="MeshDetailText">
+			Детализация меша:
+		</text>
+		<slider label="Объекты:" name="ObjectMeshDetail"/>
+		<slider label="Гибкие примитивы:" name="FlexibleMeshDetail"/>
+		<slider label="Деревья:" name="TreeMeshDetail"/>
+		<slider label="Аватары:" name="AvatarMeshDetail"/>
+		<slider label="Ландшафт:" name="TerrainMeshDetail"/>
+		<slider label="Небо:" name="SkyMeshDetail"/>
+		<text name="PostProcessText">
+			Низко
+		</text>
+		<text name="ObjectMeshDetailText">
+			Низко
+		</text>
+		<text name="FlexibleMeshDetailText">
+			Низко
+		</text>
+		<text name="TreeMeshDetailText">
+			Низко
+		</text>
+		<text name="AvatarMeshDetailText">
+			Низко
+		</text>
+		<text name="TerrainMeshDetailText">
+			Низко
+		</text>
+		<text name="SkyMeshDetailText">
+			Низко
+		</text>
+		<text name="AvatarRenderingText">
+			Отрисовка аватара:
+		</text>
+		<check_box initial_value="истина" label="Плоские аватары" name="AvatarImpostors"/>
+		<check_box initial_value="истина" label="Аппаратная отрисовка" name="AvatarVertexProgram"/>
+		<check_box initial_value="истина" label="Одежда аватара" name="AvatarCloth"/>
+		<text name="TerrainDetailText">
+			Ландшафт:
+		</text>
+		<radio_group name="TerrainDetailRadio">
+			<radio_item label="Грубо" name="0"/>
+			<radio_item label="Детально" name="2"/>
+		</radio_group>
+		--&gt;
+	</panel>
+	<button label="Применить" label_selected="Применить" name="Apply"/>
+	<button label="Сброс" name="Defaults"/>
+	<button label="Дополнительно" name="Advanced"/>
+	<button label="Аппаратура" label_selected="Аппаратура" name="GraphicsHardwareButton"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_move.xml b/indra/newview/skins/default/xui/ru/panel_preferences_move.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a6e9b00f2ab1e1e2e47e62f4965e0ba893de0408
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_move.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Перемещение" name="move_panel">
+	<slider label="Угол обзора" name="camera_fov"/>
+	<slider label="Расстояние" name="camera_offset_scale"/>
+	<text name="heading2">
+		Автоматическая установка позиции для:
+	</text>
+	<check_box label="создания/редактирования" name="edit_camera_movement" tool_tip="Автоматическое позиционирование камеры при входе в режим редактирования и выходе из него"/>
+	<check_box label="внешности" name="appearance_camera_movement" tool_tip="Автоматическое позиционирование камеры в режиме редактирования"/>
+	<text name="keyboard_lbl">
+		Клавиатура:
+	</text>
+	<check_box label="Клавиши со стрелками всегда перемещают меня" name="arrow_keys_move_avatar_check"/>
+	<check_box label="Бег после двойного нажатия клавиши" name="tap_tap_hold_to_run"/>
+	<text name="mouse_lbl">
+		Мышь:
+	</text>
+	<check_box label="Показывать меня при обзоре мышью" name="first_person_avatar_visible"/>
+	<text name=" Mouse Sensitivity">
+		Чувствительность мыши:
+	</text>
+	<check_box label="Инвертировать" name="invert_mouse"/>
+	<text name="single_click_action_lbl">
+		Один щелчок на земле:
+	</text>
+	<combo_box name="single_click_action_combo">
+		<combo_box.item label="Без действия" name="0"/>
+		<combo_box.item label="Перемещение в точку щелчка" name="1"/>
+	</combo_box>
+	<text name="double_click_action_lbl">
+		Двойной щелчок на земле:
+	</text>
+	<combo_box name="double_click_action_combo">
+		<combo_box.item label="Без действия" name="0"/>
+		<combo_box.item label="Перемещение в точку щелчка" name="1"/>
+		<combo_box.item label="Телепортация в точку щелчка" name="2"/>
+	</combo_box>
+	<button label="Другие устройства" name="joystick_setup_button"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml
new file mode 100644
index 0000000000000000000000000000000000000000..20bb839eedeff1832ee7e89b3eca4d9dd16963fc
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_privacy.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Коммуникация" name="im">
+	<panel.string name="log_in_to_change">
+		войти для редактирования
+	</panel.string>
+	<button label="Очистить журнал" name="clear_cache" tool_tip="Удалить картинку при входе, последнее местоположение, журнал телепортаций, кэш веб-документов и текстур"/>
+	<text name="cache_size_label_l">
+		(Места, картинки, страницы, журнал поиска)
+	</text>
+	<check_box label="Показывать меня в результатах поиска" name="online_searchresults"/>
+	<check_box label="Только друзья и группы видят, когда я на связи" name="online_visibility"/>
+	<check_box label="Только друзья и группы могут звонить мне и отправлять IM" name="voice_call_friends_only_check"/>
+	<check_box label="Отключать микрофон по окончании разговора" name="auto_disengage_mic_check"/>
+	<check_box label="Показывать любимые закладки при входе (в меню «Место старта»)" name="favorites_on_login_check"/>
+	<text name="Logs:">
+		Журналы чатов:
+	</text>
+	<check_box label="Хранить журналы чата на компьютере" name="log_nearby_chat"/>
+	<check_box label="Хранить журналы IM на компьютере" name="log_instant_messages"/>
+	<check_box label="Метка времени в каждой строке журнала чата" name="show_timestamps_check_im"/>
+	<check_box label="Метка времени в имени файла журнала." name="logfile_name_datestamp"/>
+	<text name="log_path_desc">
+		Папка журналов:
+	</text>
+	<button label="Обзор" label_selected="Обзор" name="log_path_button"/>
+	<button label="Черный список" name="block_list"/>
+	<text name="block_list_label">
+		(Люди и (или) объекты, заблокированные вами)
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8e7fc71f0d5503c41d3f96785e243808110e1c2f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Конфигурация" name="Input panel">
+	<text name="Network:">
+		Сеть:
+	</text>
+	<text name="Maximum bandwidth">
+		Макс. ширина канала
+	</text>
+	<text name="text_box2">
+		Кбит/с
+	</text>
+	<check_box label="Выбор порта" name="connection_port_enabled"/>
+	<spinner label="Номер порта:" name="connection_port"/>
+	<text name="Web:">
+		Браузер:
+	</text>
+	<radio_group name="use_external_browser">
+		<radio_item label="Использовать мой браузер (IE, Firefox, Safari)" name="external" tool_tip="Будет использоваться браузер, заданный в системе по умолчанию. Не рекомендуется, если [APP_NAME] работает в полноэкранном режиме." value="true"/>
+		<radio_item label="Использовать встроенный браузер" name="internal" tool_tip="Для просмотра справки, ссылок на веб-страницы и т. д. будет использоваться встроенный браузер. Этот браузер открывается как новое окно в [APP_NAME]." value=""/>
+	</radio_group>
+	<check_box initial_value="истина" label="Разрешить плагины" name="browser_plugins_enabled"/>
+	<check_box initial_value="истина" label="Принимать файлы cookie" name="cookies_enabled"/>
+	<check_box initial_value="истина" label="Разрешить Javascript" name="browser_javascript_enabled"/>
+	<check_box initial_value="ложь" label="Разрешить всплывающие окна" name="media_popup_enabled"/>
+	<text name="Software updates:">
+		Обновления ПО:
+	</text>
+	<combo_box name="updater_service_combobox">
+		<combo_box.item label="Устанавливать автоматически" name="Install_automatically"/>
+		<combo_box.item label="Загружать и устанавливать обновления вручную" name="Install_manual"/>
+	</combo_box>
+	<text name="Proxy Settings:">
+		Настройки прокси-сервера:
+	</text>
+	<button label="Задать настройки" label_selected="Обзор" name="set_proxy"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bf673750d22b3ec811cfdf91a1e687d0ad865bc6
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_sound.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Звуки" name="Preference Media panel">
+	<panel.string name="middle_mouse">
+		среднюю кнопку мыши
+	</panel.string>
+	<slider label="Общая громкость" name="System Volume"/>
+	<check_box initial_value="истина" name="mute_when_minimized"/>
+	<text name="mute_chb_label">
+		Заглушать, когда свернуто
+	</text>
+	<slider label="Кнопки" name="UI Volume"/>
+	<slider label="Окружение" name="Wind Volume"/>
+	<slider label="Звуковые эффекты" name="SFX Volume"/>
+	<slider label="Потоковая музыка" name="Music Volume"/>
+	<check_box label="Включено" name="enable_music"/>
+	<slider label="Медиа" name="Media Volume"/>
+	<check_box label="Включено" name="enable_media"/>
+	<slider label="Голосовой чат" name="Voice Volume"/>
+	<check_box label="Включено" name="enable_voice_check"/>
+	<check_box label="Разрешить автовоспроизведение медиа" name="media_auto_play_btn" tool_tip="Установка флажка позволит вам автоматически воспроизводить медиа" value="истина"/>
+	<check_box label="Воспроизводить медиа, присоединенные к другому аватару" name="media_show_on_others_btn" tool_tip="Снятие флажка скроет медиа, присоединенные к другому аватару" value="истина"/>
+	<check_box label="Сопровождать жесты звуками" name="gesture_audio_play_btn" tool_tip="Установите флажок, чтобы слышать звуки при жестах" value="истина"/>
+	<text name="voice_chat_settings">
+		Настройки голосового чата
+	</text>
+	<text name="Listen from">
+		Слушать с:
+	</text>
+	<radio_group name="ear_location">
+		<radio_item label="Камеры" name="0"/>
+		<radio_item label="Аватара" name="1"/>
+	</radio_group>
+	<check_box label="Губы аватара двигаются при разговоре" name="enable_lip_sync"/>
+	<check_box label="Включать/выключать микрофон, когда я нажимаю:" name="push_to_talk_toggle_check" tool_tip="В режиме переключения ОДНОКРАТНОЕ нажатие и отпускание данной клавиши включает/выключает микрофон. Если режим переключения отключен, то микрофон передает голос, только когда клавиша нажата."/>
+	<line_editor label="Триггер Push-to-Speak" name="modifier_combo"/>
+	<button label="Задать клавишу" name="set_voice_hotkey_button"/>
+	<button name="set_voice_middlemouse_button" tool_tip="Сброс на среднюю кнопку мыши"/>
+	<button label="Устройства ввода-вывода" name="device_settings_btn"/>
+	<panel label="Настройки устройства" name="device_settings_panel"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..76bb6518e9d99960c07e2d4e6eb72999ddb56730
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_prim_media_controls.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="MediaControls">
+	<string name="control_background_image_name">
+		Inspector_Background
+	</string>
+	<string name="skip_step">
+		0.2
+	</string>
+	<string name="min_width">
+		300
+	</string>
+	<string name="min_height">
+		75
+	</string>
+	<string name="zoom_near_padding">
+		1.0
+	</string>
+	<string name="zoom_medium_padding">
+		1.1
+	</string>
+	<string name="zoom_far_padding">
+		1.5
+	</string>
+	<string name="top_world_view_avoid_zone">
+		50
+	</string>
+	<layout_stack name="progress_indicator_area">
+		<layout_panel name="media_progress_indicator">
+			<progress_bar name="media_progress_bar" tool_tip="Медиа загружается"/>
+		</layout_panel>
+	</layout_stack>
+	<layout_stack name="media_controls">
+		<layout_panel name="back">
+			<button name="back_btn" tool_tip="Назад"/>
+		</layout_panel>
+		<layout_panel name="fwd">
+			<button name="fwd_btn" tool_tip="Вперед"/>
+		</layout_panel>
+		<layout_panel name="home">
+			<button name="home_btn" tool_tip="Домашняя страница"/>
+		</layout_panel>
+		<layout_panel name="media_stop">
+			<button name="media_stop_btn" tool_tip="Остановить медиа"/>
+		</layout_panel>
+		<layout_panel name="reload">
+			<button name="reload_btn" tool_tip="Обновить"/>
+		</layout_panel>
+		<layout_panel name="stop">
+			<button name="stop_btn" tool_tip="Остановить загрузку"/>
+		</layout_panel>
+		<layout_panel name="play">
+			<button name="play_btn" tool_tip="Проиграть медиа"/>
+		</layout_panel>
+		<layout_panel name="pause">
+			<button name="pause_btn" tool_tip="Поставить на паузу"/>
+		</layout_panel>
+		<layout_panel name="media_address">
+			<line_editor name="media_address_url" tool_tip="Ссылка на медиа"/>
+			<layout_stack name="media_address_url_icons">
+				<layout_panel>
+					<icon name="media_whitelist_flag" tool_tip="Включен белый список"/>
+				</layout_panel>
+				<layout_panel>
+					<icon name="media_secure_lock_flag" tool_tip="Безопасный просмотр"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="media_play_position">
+			<slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Выполнение просмотра видео"/>
+		</layout_panel>
+		<layout_panel name="skip_back">
+			<button name="skip_back_btn" tool_tip="Шаг назад"/>
+		</layout_panel>
+		<layout_panel name="skip_forward">
+			<button name="skip_forward_btn" tool_tip="Шаг вперед"/>
+		</layout_panel>
+		<layout_panel name="media_volume">
+			<button name="media_mute_button" tool_tip="Приглушить медиа"/>
+			<slider name="volume_slider" tool_tip="Громкость медиа"/>
+		</layout_panel>
+		<layout_panel name="zoom_frame">
+			<button name="zoom_frame_btn" tool_tip="Приблизить к медиа"/>
+		</layout_panel>
+		<layout_panel name="close">
+			<button name="close_btn" tool_tip="Отодвинуть назад"/>
+		</layout_panel>
+		<layout_panel name="new_window">
+			<button name="new_window_btn" tool_tip="Открыть ссылку в браузере"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_region_covenant.xml b/indra/newview/skins/default/xui/ru/panel_region_covenant.xml
new file mode 100644
index 0000000000000000000000000000000000000000..706a38f1100515dcba13f8eaa4cedc02991a2036
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_region_covenant.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Соглашение" name="Covenant">
+	<panel.string name="can_resell">
+		Приобретенная в этом регионе земля может быть перепродана.
+	</panel.string>
+	<panel.string name="can_not_resell">
+		Приобретенная в этом регионе земля не может быть перепродана.
+	</panel.string>
+	<panel.string name="can_change">
+		Приобретенная в этом регионе земля может быть объединена или разделена.
+	</panel.string>
+	<panel.string name="can_not_change">
+		Приобретенная в этом регионе земля не может быть объединена или разделена.
+	</panel.string>
+	<text name="estate_section_lbl">
+		Землевладение
+	</text>
+	<text name="estate_name_lbl">
+		Название:
+	</text>
+	<text name="estate_name_text">
+		материк
+	</text>
+	<text name="estate_owner_lbl">
+		Владелец:
+	</text>
+	<text name="estate_owner_text">
+		(нет)
+	</text>
+	<text name="estate_cov_lbl">
+		Соглашение:
+	</text>
+	<text name="covenant_timestamp_text">
+		Последнее изменение: 31 декабря 1969 г., среда, 16:00:00
+	</text>
+	<text_editor name="covenant_editor">
+		Нет соглашения для этого землевладения.
+	</text_editor>
+	<button label="Сброс" name="reset_covenant"/>
+	<text name="covenant_help_text">
+		Изменения в соглашении будут показаны на всех участках этого землевладения.
+	</text>
+	<text name="covenant_instructions">
+		Перетащите сюда заметку, чтобы изменить соглашение для этого землевладения.
+	</text>
+	<text name="region_section_lbl">
+		Регион
+	</text>
+	<text name="region_name_lbl">
+		Название:
+	</text>
+	<text name="region_name_text">
+		Эрика
+	</text>
+	<text name="region_landtype_lbl">
+		Тип:
+	</text>
+	<text name="region_landtype_text">
+		Материк/поместье
+	</text>
+	<text name="region_maturity_lbl">
+		Рейтинг:
+	</text>
+	<text name="region_maturity_text">
+		Для взрослых
+	</text>
+	<text name="resellable_lbl">
+		Перепродажа:
+	</text>
+	<text name="resellable_clause">
+		Земля в этом регионе не может быть перепродана.
+	</text>
+	<text name="changeable_lbl">
+		Разделение:
+	</text>
+	<text name="changeable_clause">
+		Земля в этом регионе не может быть объединена или разделена.
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_region_debug.xml b/indra/newview/skins/default/xui/ru/panel_region_debug.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c21d2d70519391824e4c6b0733ce08d3fcbd6352
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_region_debug.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Отладка" name="Debug">
+	<text name="region_text_lbl">
+		Регион:
+	</text>
+	<text name="region_text">
+		неизвестно
+	</text>
+	<check_box label="Отключить скрипты" name="disable_scripts_check" tool_tip="Отключить все скрипты в этом регионе"/>
+	<check_box label="Отключить столкновения" name="disable_collisions_check" tool_tip="Отключить столкновения не-аватаров в этом регионе"/>
+	<check_box label="Отключить физику" name="disable_physics_check" tool_tip="Выключить всю физику в этом регионе"/>
+	<button label="Применить" name="apply_btn"/>
+	<text name="objret_text_lbl">
+		Возврат объектов
+	</text>
+	<text name="resident_text_lbl">
+		Житель:
+	</text>
+	<line_editor name="target_avatar_name">
+		(нет)
+	</line_editor>
+	<button label="Выбор" name="choose_avatar_btn"/>
+	<text name="options_text_lbl">
+		Параметры:
+	</text>
+	<check_box label="Со скриптами" name="return_scripts" tool_tip="Возвращаются только объекты со скриптами"/>
+	<check_box label="На чужой земле" name="return_other_land" tool_tip="Возвращаются только объекты, расположенные на чужой земле"/>
+	<check_box label="С каждого региона этого землевладения" name="return_estate_wide" tool_tip="Возвращаются объекты со всех регионов, образующих это землевладение"/>
+	<button label="Возврат" name="return_btn"/>
+	<button label="Самые активные участники столкновений..." name="top_colliders_btn" tool_tip="Список объектов, для которых столкновения наиболее вероятны"/>
+	<button label="Список лучших скриптов..." name="top_scripts_btn" tool_tip="Объекты, в которых скрипты выполняются дольше всего"/>
+	<button label="Перезагрузить регион" name="restart_btn" tool_tip="Отсчитать 2 минуты и перезагрузить регион"/>
+	<button label="Отложить перезагрузку" name="cancel_restart_btn" tool_tip="Отложить перезагрузку региона на час"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_region_environment.xml b/indra/newview/skins/default/xui/ru/panel_region_environment.xml
new file mode 100644
index 0000000000000000000000000000000000000000..85be8f63bdac3a750bb0efb10b72dd2f4fd284ac
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_region_environment.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Среда" name="panel_env_info">
+	<text name="water_settings_title">
+		Настройки воды и неба/суточного цикла определяют, каким посетители увидят ваш регион.  Дополнительно
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="Использовать настройки Second Life по умолчанию" name="use_sl_default_settings"/>
+		<radio_item label="Использовать следующие настройки" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="water_settings_title">
+			Настройка воды
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="-Выбор настройки-" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			Небо/суточный цикл
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="Небо не меняется" name="my_sky_settings"/>
+			<radio_item label="Суточный цикл" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="-Выбор настройки-" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="-Выбор настройки-" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="Применить" name="apply_btn"/>
+	<button label="Отмена" name="cancel_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_region_estate.xml b/indra/newview/skins/default/xui/ru/panel_region_estate.xml
new file mode 100644
index 0000000000000000000000000000000000000000..27ec10b323e8c5cd019745bf06d2354103876188
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_region_estate.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Землевладение" name="Estate">
+	<text name="estate_help_text">
+		Изменение параметров на этой вкладке повлияет на все регионы этого землевладения.
+	</text>
+	<text name="estate_text">
+		Землевладение:
+	</text>
+	<text name="estate_name">
+		(неизвестно)
+	</text>
+	<text name="owner_text">
+		Землевладелец:
+	</text>
+	<text name="estate_owner">
+		(неизвестно)
+	</text>
+	<check_box label="Глобальное время" name="use_global_time_check"/>
+	<check_box label="Фиксированное" name="fixed_sun_check"/>
+	<slider label="Фаза" name="sun_hour_slider"/>
+	<check_box label="Разрешить общий доступ" name="externally_visible_check"/>
+	<text name="Only Allow">
+		Разрешить доступ только аккаунтам с подтверждением:
+	</text>
+	<check_box label="Информации об оплате в файле" name="limit_payment" tool_tip="Банить нераспознанных жителей"/>
+	<check_box label="Проверка возраста" name="limit_age_verified" tool_tip="Банить жителей, не прошедших проверку возраста. Более подробная информация находится здесь: [SUPPORT_SITE]."/>
+	<check_box label="Разрешить голосовое общение" name="voice_chat_check"/>
+	<check_box label="Разрешить прямой телепорт" name="allow_direct_teleport"/>
+	<button label="Применить" name="apply_btn"/>
+	<button label="Сообщение в землевладение..." name="message_estate_btn"/>
+	<button label="Выкинуть жителя с землевладения..." name="kick_user_from_estate_btn"/>
+	<text name="estate_manager_label">
+		Менеджеры землевладения:
+	</text>
+	<button label="Удалить..." name="remove_estate_manager_btn"/>
+	<button label="Добавить..." name="add_estate_manager_btn"/>
+	<text name="allow_resident_label">
+		Допущенные жители:
+	</text>
+	<button label="Удалить..." name="remove_allowed_avatar_btn"/>
+	<button label="Добавить..." name="add_allowed_avatar_btn"/>
+	<text name="allow_group_label">
+		Допущенные группы:
+	</text>
+	<button label="Удалить..." name="remove_allowed_group_btn"/>
+	<button label="Добавить..." name="add_allowed_group_btn"/>
+	<text name="ban_resident_label">
+		Забаненные жители:
+	</text>
+	<button label="Удалить..." name="remove_banned_avatar_btn"/>
+	<button label="Добавить..." name="add_banned_avatar_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_region_general.xml b/indra/newview/skins/default/xui/ru/panel_region_general.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8559be6c9eb3f712d6f7dddee8addd8889ed7383
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_region_general.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Регион" name="General">
+	<text name="region_text_lbl">
+		Регион:
+	</text>
+	<text name="region_text">
+		неизвестно
+	</text>
+	<text name="version_channel_text_lbl">
+		Версия:
+	</text>
+	<text name="version_channel_text">
+		неизвестно
+	</text>
+	<text name="region_type_lbl">
+		Тип:
+	</text>
+	<text name="region_type">
+		неизвестно
+	</text>
+	<check_box label="Запретить терраформирование" name="block_terraform_check"/>
+	<check_box label="Запретить полеты" name="block_fly_check"/>
+	<check_box label="Разрешить повреждения" name="allow_damage_check"/>
+	<check_box label="Запретить толкание" name="restrict_pushobject"/>
+	<check_box label="Разрешить перепродажу земли" name="allow_land_resell_check"/>
+	<check_box label="Разрешить объединение/разделение земли" name="allow_parcel_changes_check"/>
+	<check_box label="Не показывать землю в поиске" name="block_parcel_search_check" tool_tip="Отображать регион и его участки в результатах поиска"/>
+	<check_box label="Разрешить меши-объекты" name="mesh_rez_enabled_check" tool_tip="Разрешить жителям выкладывать меши в этом регионе"/>
+	<spinner label="Лимит агентов" name="agent_limit_spin"/>
+	<spinner label="Льгота для объекта" name="object_bonus_spin"/>
+	<text label="Дозволенность" name="access_text">
+		Категория:
+	</text>
+	<icons_combo_box label="Умеренный" name="access_combo">
+		<icons_combo_box.item label="Для взрослых" name="Adult" value="42"/>
+		<icons_combo_box.item label="Умеренный" name="Mature" value="21"/>
+		<icons_combo_box.item label="Общий" name="PG" value="13"/>
+	</icons_combo_box>
+	<button label="Применить" name="apply_btn"/>
+	<button label="Телепортировать домой одного жителя..." name="kick_btn"/>
+	<button label="Телепортировать домой всех жителей..." name="kick_all_btn"/>
+	<button label="Отправить сообщение в регион..." name="im_btn"/>
+	<button label="Управление телехабом..." name="manage_telehub_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_region_terrain.xml b/indra/newview/skins/default/xui/ru/panel_region_terrain.xml
new file mode 100644
index 0000000000000000000000000000000000000000..af255652263855b21d710d6a215912e0b1a5cdf1
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_region_terrain.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Ландшафт" name="Terrain">
+	<text name="region_text_lbl">
+		Регион:
+	</text>
+	<text name="region_text">
+		неизвестен
+	</text>
+	<spinner label="Уровень воды" name="water_height_spin"/>
+	<spinner label="Верх. точка ландшафта" name="terrain_raise_spin"/>
+	<spinner label="Ниж. точка ландшафта" name="terrain_lower_spin"/>
+	<text name="detail_texture_text">
+		Текстуры ландшафта (требования: 512x512, 24-битные, TGA)
+	</text>
+	<text name="height_text_lbl">
+		1 (Низ)
+	</text>
+	<text name="height_text_lbl2">
+		2
+	</text>
+	<text name="height_text_lbl3">
+		3
+	</text>
+	<text name="height_text_lbl4">
+		4 (Верх)
+	</text>
+	<text name="height_text_lbl5">
+		Диапазон высот текстур
+	</text>
+	<text name="height_text_lbl10">
+		Эти значения определяют степень смешивания наложенных текстур.
+	</text>
+	<text name="height_text_lbl11">
+		Измеряются в метрах. Значение «Низ» – это МАКСИМАЛЬНАЯ высота текстуры №1, а значение «Верх» – это МИНИМАЛЬНАЯ высота текстуры №4.
+	</text>
+	<text name="height_text_lbl6">
+		Северо-запад
+	</text>
+	<text name="height_text_lbl7">
+		Северо-восток
+	</text>
+	<spinner label="Низ" name="height_start_spin_1"/>
+	<spinner label="Низ" name="height_start_spin_3"/>
+	<spinner label="Верх" name="height_range_spin_1"/>
+	<spinner label="Верх" name="height_range_spin_3"/>
+	<text name="height_text_lbl8">
+		Юго-запад
+	</text>
+	<text name="height_text_lbl9">
+		Юго-восток
+	</text>
+	<spinner label="Низ" name="height_start_spin_0"/>
+	<spinner label="Низ" name="height_start_spin_2"/>
+	<spinner label="Верх" name="height_range_spin_0"/>
+	<spinner label="Верх" name="height_range_spin_2"/>
+	<button label="Загрузить ландшафт RAW..." name="download_raw_btn" tool_tip="Доступно только землевладельцам, не менеджерам"/>
+	<button label="Передать ландшафт RAW..." name="upload_raw_btn" tool_tip="Доступно только землевладельцам, не менеджерам"/>
+	<button label="Зафиксировать пределы" name="bake_terrain_btn" tool_tip="Установить высоту ландшафта по средней точке между верхней и нижней точками"/>
+	<button label="Применить" name="apply_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_region_texture.xml b/indra/newview/skins/default/xui/ru/panel_region_texture.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c4b35a536d1a343ffd1a500339c0eafe91f00910
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_region_texture.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Текстуры земли" name="Textures">
+	<text name="region_text_lbl">
+		Регион:
+	</text>
+	<text name="region_text">
+		неизвестен
+	</text>
+	<text name="detail_texture_text">
+		Текстуры ландшафта (требования: 512x512, 24-битные TGA-файлы)
+	</text>
+	<text name="height_text_lbl">
+		1 (низ)
+	</text>
+	<text name="height_text_lbl2">
+		2
+	</text>
+	<text name="height_text_lbl3">
+		3
+	</text>
+	<text name="height_text_lbl4">
+		4 (верх)
+	</text>
+	<text name="height_text_lbl5">
+		Диапазон высот текстур
+	</text>
+	<text name="height_text_lbl6">
+		Северо-запад
+	</text>
+	<text name="height_text_lbl7">
+		Северо-восток
+	</text>
+	<spinner label="Низ" name="height_start_spin_1"/>
+	<spinner label="Низ" name="height_start_spin_3"/>
+	<spinner label="Верх" name="height_range_spin_1"/>
+	<spinner label="Верх" name="height_range_spin_3"/>
+	<text name="height_text_lbl8">
+		Юго-запад
+	</text>
+	<text name="height_text_lbl9">
+		Юго-восток
+	</text>
+	<spinner label="Низ" name="height_start_spin_0"/>
+	<spinner label="Низ" name="height_start_spin_2"/>
+	<spinner label="Верх" name="height_range_spin_0"/>
+	<spinner label="Верх" name="height_range_spin_2"/>
+	<text name="height_text_lbl10">
+		Эти значения отображают диапазон перекрытия вышеуказанных текстур.
+	</text>
+	<text name="height_text_lbl11">
+		Измеряется в метрах, значение «Низ» – это МАКСИМАЛЬНАЯ высота текстуры №1, значение «Верх» – это МИНИМАЛЬНАЯ высота текстуры №4.
+	</text>
+	<button label="Применить" name="apply_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_script_ed.xml b/indra/newview/skins/default/xui/ru/panel_script_ed.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1a9c512147901fb4dd263c70f23f1f7a95cfd410
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_script_ed.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="script panel">
+	<panel.string name="loading">
+		Загрузка...
+	</panel.string>
+	<panel.string name="can_not_view">
+		Вы не можете просматривать и изменять этот скрипт, поскольку для него выбрана категория «не копируемые». Для просмотра или изменения скрипта в объекте нужны полные права доступа.
+	</panel.string>
+	<panel.string name="public_objects_can_not_run">
+		Общедоступные объекты не могут запускать скрипты
+	</panel.string>
+	<panel.string name="script_running">
+		Выполняется
+	</panel.string>
+	<panel.string name="Title">
+		Скрипт: [NAME]
+	</panel.string>
+	<panel.string name="external_editor_not_set">
+		Выберите редактор, задав переменную среды LL_SCRIPT_EDITOR или параметр ExternalEditor.
+	</panel.string>
+	<menu_bar name="script_menu">
+		<menu label="Файл" name="File">
+			<menu_item_call label="Сохранить" name="Save"/>
+			<menu_item_call label="Отменить все изменения" name="Revert All Changes"/>
+		</menu>
+		<menu label="Изменить" name="Edit">
+			<menu_item_call label="Отменить" name="Undo"/>
+			<menu_item_call label="Вернуть" name="Redo"/>
+			<menu_item_call label="Вырезать" name="Cut"/>
+			<menu_item_call label="Копировать" name="Copy"/>
+			<menu_item_call label="Вставить" name="Paste"/>
+			<menu_item_call label="Выделить все" name="Select All"/>
+			<menu_item_call label="Снять выделение" name="Deselect"/>
+			<menu_item_call label="Поиск и замена..." name="Search / Replace..."/>
+		</menu>
+		<menu label="Справка" name="Help">
+			<menu_item_call label="Справка..." name="Help..."/>
+			<menu_item_call label="Справка по ключевым словам..." name="Keyword Help..."/>
+		</menu>
+	</menu_bar>
+	<text_editor name="Script Editor">
+		Загрузка...
+	</text_editor>
+	<combo_box label="Вставить..." name="Insert..."/>
+	<button label="Сохранить" label_selected="Сохранить" name="Save_btn"/>
+	<button label="Изменить..." name="Edit_btn"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..a06c465a2bced069f68d3deff57668c4f7b0ab7a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_script_limits_my_avatar.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="МОЙ АВАТАР" name="script_limits_my_avatar_panel">
+	<text name="script_memory">
+		Память под скрипты аватара
+	</text>
+	<text name="loading_text">
+		Загрузка...
+	</text>
+	<scroll_list name="scripts_list">
+		<scroll_list.columns label="Размер (КБ)" name="size"/>
+		<scroll_list.columns label="URL-адреса" name="urls"/>
+		<scroll_list.columns label="Название объекта" name="name"/>
+		<scroll_list.columns label="Место" name="location"/>
+	</scroll_list>
+	<button label="Обновить список" name="refresh_list_btn"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..189e21fd2fe62eee25d32a1596982568f49201a4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_script_limits_region_memory.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="ПАМЯТЬ РЕГИОНА" name="script_limits_region_memory_panel">
+	<text name="script_memory">
+		Память под скрипты на участке
+	</text>
+	<text name="loading_text">
+		Загрузка...
+	</text>
+	<scroll_list name="scripts_list">
+		<scroll_list.columns label="Размер (Кб)" name="size"/>
+		<scroll_list.columns label="URL-адреса" name="urls"/>
+		<scroll_list.columns label="Название объекта" name="name"/>
+		<scroll_list.columns label="Владелец объекта" name="owner"/>
+		<scroll_list.columns label="Участок" name="parcel"/>
+		<scroll_list.columns label="Место" name="location"/>
+	</scroll_list>
+	<button label="Обновить список" name="refresh_list_btn"/>
+	<button label="Подсветить" name="highlight_btn"/>
+	<button label="Возврат" name="return_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_scrolling_param.xml b/indra/newview/skins/default/xui/ru/panel_scrolling_param.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c25f92cb8dffdbedafd2af7fa14ac02a2a418ac4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_scrolling_param.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="LLScrollingPanelParam">
+	<text name="Loading...">
+		Загрузка...
+	</text>
+	<text name="Loading...2">
+		Загрузка...
+	</text>
+	<slider label="[DESC]" name="param slider"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..fa659040eaa57c1c5e325093dcc427058ea160b3
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_scrolling_param_base.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="LLScrollingPanelParamBase">
+	<slider label="[DESC]" name="param slider"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_side_tray.xml b/indra/newview/skins/default/xui/ru/panel_side_tray.xml
new file mode 100644
index 0000000000000000000000000000000000000000..10c5775291a11026739bdd78160ef64d406b4968
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_side_tray.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Side tray cannot show background because it is always
+	partially on screen to hold tab buttons. -->
+<side_tray name="sidebar">
+	<sidetray_tab description="Открыть/закрыть боковую панель" name="sidebar_openclose" tab_title="Открыть/закрыть боковую панель"/>
+	<sidetray_tab description="Дом." name="sidebar_home" tab_title="Дом">
+		<panel label="дом" name="panel_home"/>
+	</sidetray_tab>
+	<sidetray_tab description="Изменение своего профиля и подборки." name="sidebar_me" tab_title="Мой профиль">
+		<panel_container name="panel_container">
+			<panel label="Я" name="panel_me"/>
+		</panel_container>
+	</sidetray_tab>
+	<sidetray_tab description="Поиск друзей, контактов и находящихся поблизости людей." name="sidebar_people" tab_title="Люди">
+		<panel_container name="panel_container">
+			<panel label="Профиль группы" name="panel_group_info_sidetray"/>
+			<panel label="Черный список жителей и объектов" name="panel_block_list_sidetray"/>
+		</panel_container>
+	</sidetray_tab>
+	<sidetray_tab description="Поиск мест, которые можно было бы посетить или которые вы уже посещали ранее." label="Места" name="sidebar_places" tab_title="Места">
+		<panel label="Места" name="panel_places"/>
+	</sidetray_tab>
+	<sidetray_tab description="Просмотрите свой инвентарь." name="sidebar_inventory" tab_title="Мой инвентарь">
+		<panel label="Изменить инвентарь" name="sidepanel_inventory"/>
+	</sidetray_tab>
+	<sidetray_tab description="Изменение внешнего вида и текущего образа." name="sidebar_appearance" tab_title="Мой внешний вид">
+		<panel label="Изменить внешний вид" name="sidepanel_appearance"/>
+	</sidetray_tab>
+</side_tray>
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
new file mode 100644
index 0000000000000000000000000000000000000000..1a260dc31ffa2c87dfca311b7b0b0c826776b6ea
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_side_tray_tab_caption.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="sidetray_tab_panel">
+	<text name="sidetray_tab_title" value="Боковая панель"/>
+	<button name="undock" tool_tip="Отсоединить"/>
+	<button name="dock" tool_tip="Присоединить"/>
+	<button name="show_help" tool_tip="Показать справку"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..53a150c9f9e0230122a1ca5f1a43bfc2f1529e67
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_snapshot_inventory.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_inventory">
+	<text name="title">
+		Сохранить в моем инвентаре
+	</text>
+	<text name="hint_lbl">
+		Сохранение изображения в инвентаре стоит L$[UPLOAD_COST]. Чтобы сохранить его как текстуру, выберите один из квадратных форматов.
+	</text>
+	<combo_box label="Размер" name="texture_size_combo">
+		<combo_box.item label="Текущее окно" name="CurrentWindow"/>
+		<combo_box.item label="Маленький (128x128)" name="Small(128x128)"/>
+		<combo_box.item label="Средний (256x256)" name="Medium(256x256)"/>
+		<combo_box.item label="Большой (512x512)" name="Large(512x512)"/>
+		<combo_box.item label="Задать" name="Custom"/>
+	</combo_box>
+	<spinner label="Ширина" name="inventory_snapshot_width"/>
+	<spinner label="Высота" name="inventory_snapshot_height"/>
+	<check_box label="Сохранять пропорции" name="inventory_keep_aspect_check"/>
+	<button label="Отмена" name="cancel_btn"/>
+	<button label="Сохранить" name="save_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_local.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_local.xml
new file mode 100644
index 0000000000000000000000000000000000000000..446b9bb2fd367de13a0d71ec2cbcde61dc823c16
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_snapshot_local.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_local">
+	<text name="title">
+		Сохранить на моем компьютере
+	</text>
+	<combo_box label="Размер" name="local_size_combo">
+		<combo_box.item label="Текущее окно" name="CurrentWindow"/>
+		<combo_box.item label="320x240" name="320x240"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="1280x1024" name="1280x1024"/>
+		<combo_box.item label="1600x1200" name="1600x1200"/>
+		<combo_box.item label="Задать" name="Custom"/>
+	</combo_box>
+	<layout_stack name="local_image_params_ls">
+		<layout_panel name="local_image_size_lp">
+			<spinner label="Ширина" name="local_snapshot_width"/>
+			<spinner label="Высота" name="local_snapshot_height"/>
+			<check_box label="Сохранять пропорции" name="local_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="local_image_format_quality_lp">
+			<combo_box label="Формат" name="local_format_combo">
+				<combo_box.item label="PNG (без потерь)" name="PNG"/>
+				<combo_box.item label="JPEG" name="JPEG"/>
+				<combo_box.item label="BMP (без потерь)" name="BMP"/>
+			</combo_box>
+			<slider label="Качество изображения" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+	<button label="Отмена" name="cancel_btn"/>
+	<flyout_button label="Сохранить" name="save_btn" tool_tip="Сохранить изображение в файл">
+		<flyout_button.item label="Сохранить" name="save_item"/>
+		<flyout_button.item label="Сохранить как..." name="saveas_item"/>
+	</flyout_button>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml
new file mode 100644
index 0000000000000000000000000000000000000000..250a76cd213ffd6bac5387e3db54902a04a4bda0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_snapshot_options.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_options">
+	<button label="Поместить в мой профиль" name="save_to_profile_btn"/>
+	<button label="Отправить по почте" name="save_to_email_btn"/>
+	<button label="Сохранить в моем инвентаре (L$[AMOUNT])" name="save_to_inventory_btn"/>
+	<button label="Сохранить на моем компьютере" name="save_to_computer_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_postcard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..47f4caf8e385e2befb5b2c15435f504eeb1876e8
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_snapshot_postcard.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_postcard">
+	<string name="default_subject">
+		Открытка из [SECOND_LIFE].
+	</string>
+	<string name="default_message">
+		Побывай здесь!
+	</string>
+	<string name="upload_message">
+		Отправка...
+	</string>
+	<text name="title">
+		Электронное письмо
+	</text>
+	<button label="Сообщение" name="message_btn"/>
+	<button label="Настройки" name="settings_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..79a9ef58d035b122640455b7d9f03bb047692473
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_snapshot_profile.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_profile">
+	<text name="title">
+		Поместить в мой профиль
+	</text>
+	<combo_box label="Размер" name="profile_size_combo">
+		<combo_box.item label="Текущее окно" name="CurrentWindow"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="Задать" name="Custom"/>
+	</combo_box>
+	<layout_stack name="profile_image_params_ls">
+		<layout_panel name="profile_image_size_lp">
+			<spinner label="Ширина" name="profile_snapshot_width"/>
+			<spinner label="Высота" name="profile_snapshot_height"/>
+			<check_box label="Сохранять пропорции" name="profile_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="profile_image_metadata_lp">
+			<text name="caption_label">
+				Подпись:
+			</text>
+			<check_box initial_value="true" label="Включить расположение" name="add_location_cb"/>
+		</layout_panel>
+	</layout_stack>
+	<button label="Отмена" name="cancel_btn"/>
+	<button label="Опубликовать" name="post_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_sound_devices.xml b/indra/newview/skins/default/xui/ru/panel_sound_devices.xml
new file mode 100644
index 0000000000000000000000000000000000000000..98dab288a36c7e623faff66a90980893d5193de5
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_sound_devices.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Настройки устройства" name="device_settings_panel">
+	<panel.string name="default_text">
+		По умолчанию
+	</panel.string>
+	<string name="name_no_device">
+		Нет устройства
+	</string>
+	<string name="name_default_system_device">
+		Системное устройство по умолчанию
+	</string>
+	<text name="Input">
+		Вход
+	</text>
+	<text name="Output">
+		Выход
+	</text>
+	<text name="My volume label">
+		Моя громкость:
+	</text>
+	<slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Измените значение, используя ползунок"/>
+	<text name="wait_text">
+		Подождите
+	</text>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..81a2175fc3402ff8ad5c25b8c0a730506b6b1937
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_stand_stop_flying.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml-->
+<panel name="panel_stand_stop_flying">
+	<button label="Встать" name="stand_btn" tool_tip="Щелкните здесь, чтобы встать."/>
+	<button label="Прекратить полет" name="stop_fly_btn" tool_tip="Прекратить полет"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_status_bar.xml b/indra/newview/skins/default/xui/ru/panel_status_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..babe5811acefa94369de93156ac3a53ae4fc778f
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_status_bar.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="status">
+	<panel.string name="packet_loss_tooltip">
+		Потери пакетов
+	</panel.string>
+	<panel.string name="bandwidth_tooltip">
+		Ширина канала
+	</panel.string>
+	<panel.string name="time">
+		[hour, datetime, slt]:[min, datetime, slt] [timezone,datetime, slt]
+	</panel.string>
+	<panel.string name="timeTooltip">
+		[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
+	</panel.string>
+	<panel.string name="buycurrencylabel">
+		L$ [AMT]
+	</panel.string>
+	<panel name="balance_bg">
+		<text name="balance" tool_tip="Щелкните для обновления вашего баланса L$" value="L$20"/>
+		<button label="Купить L$" name="buyL" tool_tip="Щелкните для покупки L$"/>
+		<button label="Торговый центр" name="goShop" tool_tip="Открыть торговый центр Second Life" width="121"/>
+	</panel>
+	<text name="TimeText" tool_tip="Текущее время (тихоокеанское)">
+		00:00 (тихоокеанское время)
+	</text>
+	<button name="media_toggle_btn" tool_tip="Запуск/остановка всех медиа (музыка, видео, веб-страницы)"/>
+	<button name="volume_btn" tool_tip="Регулятор громкости"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_teleport_history.xml b/indra/newview/skins/default/xui/ru/panel_teleport_history.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c457bc2269eafbbebfa203b1a86d7d87be357d4b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_teleport_history.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Teleport History">
+	<accordion name="history_accordion">
+		<no_matched_tabs_text name="no_matched_teleports_msg" value="Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/places/[SEARCH_TERM] поиском]."/>
+		<no_visible_tabs_text name="no_teleports_msg" value="История телепортов пуста. Воспользуйтесь [secondlife:///app/search/places/ поиском]."/>
+		<accordion_tab name="today" title="Сегодня"/>
+		<accordion_tab name="yesterday" title="Вчера"/>
+		<accordion_tab name="2_days_ago" title="2 дня назад"/>
+		<accordion_tab name="3_days_ago" title="3 дня назад"/>
+		<accordion_tab name="4_days_ago" title="4 дня назад"/>
+		<accordion_tab name="5_days_ago" title="5 дней назад"/>
+		<accordion_tab name="6_days_and_older" title="6 дней назад и раньше"/>
+		<accordion_tab name="1_month_and_older" title="1 месяц назад и раньше"/>
+		<accordion_tab name="6_months_and_older" title="6 месяцев назад и раньше"/>
+	</accordion>
+	<panel name="bottom_panel">
+		<menu_button name="gear_btn" tool_tip="Показать дополнительные параметры"/>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..90fb7200680b921abb1c11e2234af2b5206d7359
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_teleport_history_item.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="teleport_history_item">
+	<text name="region" value="..."/>
+	<button name="profile_btn" tool_tip="Показать информацию"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_voice_effect.xml b/indra/newview/skins/default/xui/ru/panel_voice_effect.xml
new file mode 100644
index 0000000000000000000000000000000000000000..de0b38198f72173e33bb47c7a5357dc6761b9be4
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_voice_effect.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_voice_effect">
+	<string name="no_voice_effect">
+		Изменение голоса отключено
+	</string>
+	<string name="preview_voice_effects">
+		Прослушать изменение голоса  ▶
+	</string>
+	<string name="get_voice_effects">
+		Приобрести изменение голоса  ▶
+	</string>
+	<combo_box name="voice_effect" tool_tip="Выбор типа изменения для своего голоса">
+		<combo_box.item label="Изменение голоса отключено" name="no_voice_effect"/>
+	</combo_box>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/panel_world_map.xml b/indra/newview/skins/default/xui/ru/panel_world_map.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0ab87201857b8a7c941abc421f778ca1cc820a81
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/panel_world_map.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="world_map">
+	<panel.string name="Loading">
+		Загрузка...
+	</panel.string>
+	<panel.string name="InvalidLocation">
+		Неправильное место
+	</panel.string>
+	<panel.string name="world_map_north">
+		С
+	</panel.string>
+	<panel.string name="world_map_east">
+		Ð’
+	</panel.string>
+	<panel.string name="world_map_west">
+		З
+	</panel.string>
+	<panel.string name="world_map_south">
+		Ю
+	</panel.string>
+	<panel.string name="world_map_southeast">
+		ЮВ
+	</panel.string>
+	<panel.string name="world_map_northeast">
+		СВ
+	</panel.string>
+	<panel.string name="world_map_southwest">
+		ЮЗ
+	</panel.string>
+	<panel.string name="world_map_northwest">
+		СЗ
+	</panel.string>
+	<panel.string name="world_map_person">
+		1 человек
+	</panel.string>
+	<panel.string name="world_map_people">
+		Людей: [NUMBER]
+	</panel.string>
+	<text label="С" name="floater_map_north">
+		С
+	</text>
+	<text label="Ð’" name="floater_map_east">
+		Ð’
+	</text>
+	<text label="З" name="floater_map_west">
+		З
+	</text>
+	<text label="Ю" name="floater_map_south">
+		Ю
+	</text>
+	<text label="ЮВ" name="floater_map_southeast">
+		ЮВ
+	</text>
+	<text label="СВ" name="floater_map_northeast">
+		СВ
+	</text>
+	<text label="ЮЗ" name="floater_map_southwest">
+		ЮЗ
+	</text>
+	<text label="СЗ" name="floater_map_northwest">
+		СЗ
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/role_actions.xml b/indra/newview/skins/default/xui/ru/role_actions.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b6ba818abd85bd81e4147d994391e2c01df591d0
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/role_actions.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<role_actions>
+	<action_set description="Эти способности позволяют добавлять и удалять участников группы, а также вступать в группы без приглашения." name="Membership">
+		<action description="Приглашение людей в эту группу" longdescription="Пригласите людей в группу с помощью кнопки «Пригласить» в разделе «Роли» на вкладке «Участники»." name="member invite" value="1"/>
+		<action description="Удаление участников из группы" longdescription="Удалите участников из группы с помощью кнопки «Выкинуть» в разделе «Роли» на вкладке «Участники». Владелец может удалять всех, кроме другого владельца. Если вы не владелец, то удалить участника из группы можно только в том случае, если ему назначена ТОЛЬКО роль «Все». Чтобы удалять участников из ролей, необходима способность «Удаление участников из ролей»." name="member eject" value="2"/>
+		<action description="Включение-отключение свободного вступления и изменение платы за вступление" longdescription="Включение-отключение свободного вступления, что обеспечит вступление новых участников без приглашения, а также изменение платы за вступление в разделе «Общие»." name="member options" value="3"/>
+	</action_set>
+	<action_set description="Эти способности позволяют добавлять, удалять и изменять роли группы, добавлять и удалять участников ролей, а также назначать ролям способности." name="Roles">
+		<action description="Создание ролей" longdescription="Создавайте новые роли в разделе «Роли» на вкладке «Роли»." name="role create" value="4"/>
+		<action description="Удаление ролей" longdescription="Удаляйте роли в разделе «Роли» на вкладке «Роли»." name="role delete" value="5"/>
+		<action description="Изменение названий, титулов, описаний ролей, а также настройка публичности их участников" longdescription="Изменение названий, титулов, описаний ролей, а также настройка публичности их участников. Это можно сделать в разделе «Роли», в нижней части вкладки «Роли» для выбранной роли." name="role properties" value="6"/>
+		<action description="Назначение участникам ролей назначающего" longdescription="Назначьте участникам роли в списке «Назначенные роли» (раздел «Роли» &gt; вкладка «Участники»). Участник с этой способностью может добавлять участников только той роли, в которой состоит он сам." name="role assign member limited" value="7"/>
+		<action description="Назначение участников любой роли" longdescription="Назначение участникам любой роли в списке «Назначенные роли» (раздел «Роли» &gt; вкладка «Участники»). *ПРЕДУПРЕЖДЕНИЕ* Любой участник роли с этой способностью может назначить себе (и любому другому участнику, кроме владельца) роли с большими возможностями, чем он имеет, и подняться практически до уровня владельца. Прежде чем назначить эту способность, убедитесь в целесообразности этого." name="role assign member" value="8"/>
+		<action description="Удаление участников из ролей" longdescription="Удаляйте участников из ролей в списке «Назначенные роли» (раздел «Роли» &gt; вкладка «Участники»). Владельцев удалять нельзя." name="role remove member" value="9"/>
+		<action description="Назначение и удаление способностей ролей" longdescription="Назначайте и удаляйте способности для ролей в списке «Доступные способности» (раздел «Роли» &gt; вкладка «Роли»). *ПРЕДУПРЕЖДЕНИЕ* Любой участник роли с такой способностью может назначить себе (и любому другому участнику, кроме владельца) все роли, потенциально поднимаясь практически до уровня владельца. Прежде чем назначить эту способность, убедитесь в целесообразности этого." name="role change actions" value="10"/>
+	</action_set>
+	<action_set description="К этим способностям относится способность изменить характер группы, в том числе общедоступность, устав и символ." name="Group Identity">
+		<action description="Изменение устава, символа и параметра «Показать в поиске»" longdescription="Изменение устава, символа и параметра «Показать в поиске». Это можно выполнить в разделе «Общие»." name="group change identity" value="11"/>
+	</action_set>
+	<action_set description="К этим способностям относится передача, изменение и продажа земли из владений группы. Чтобы открыть окно «О земле», щелкните правой кнопкой мыши землю и выберите «О земле» либо щелкните значок «i» на панели навигации." name="Parcel Management">
+		<action description="Передача земли и покупка земли для группы" longdescription="Передача земли и покупка земли для группы. Это можно выполнить в окне «О земле» на вкладке «Общие»." name="land deed" value="12"/>
+		<action description="Отказ от земли в пользу владелицы Linden" longdescription="Отказ от земли в пользу владелицы Linden. *ПРЕДУПРЕЖДЕНИЕ* Любой участник роли с этой способностью может отказаться от земли группы в окне «О земле» на вкладке «Общие», вернув ее во владение Linden без продажи. Прежде чем назначить эту способность, убедитесь в целесообразности этого." name="land release" value="13"/>
+		<action description="Настройка сведений о продаже земли" longdescription="Настройка сведений о продаже земли. *ПРЕДУПРЕЖДЕНИЕ* Любой участник роли с этой способностью при желании может продать землю группы в окне «О земле» на вкладке «Общие». Прежде чем назначить эту способность, убедитесь в целесообразности этого." name="land set sale info" value="14"/>
+		<action description="Разделение и объединение участков" longdescription="Разделение и объединение участков. Необходимо щелкнуть землю правой кнопкой мыши, выбрать пункт «Изменить ландшафт» и переместить курсор на выбираемую землю. Чтобы выполнить разделение, выберите разделяемый участок и щелкните «Разделить». Чтобы выполнить объединение, выберите несколько граничащих участков и щелкните «Объединить»." name="land divide join" value="15"/>
+	</action_set>
+	<action_set description="К этим способностям относится изменение названия участка и публикация настроек, поиск видимых каталогов, а также настройки точек и вариантов телепортации." name="Parcel Identity">
+		<action description="Включение-отключение показа места в результатах поиска и настройка категории" longdescription="Включить-отключить показ места в результатах поиска и настроить категорию участка можно в окне «О земле» на вкладке «Параметры»." name="land find places" value="17"/>
+		<action description="Изменение названия или описания участка, настройки «Показать место в поиске»" longdescription="Изменение названия или описания участка, настройки «Показать место в поиске». Это можно выполнить в окне «О земле» на вкладке «Параметры»." name="land change identity" value="18"/>
+		<action description="Установка конечной точки и варианта телепортации" longdescription="Участники роли с этой способностью могут установить конечную точку телепортации на участке группы, а также задать вариант телепортации для усиления контроля. Это можно выполнить в окне «О земле» на вкладке «Параметры»." name="land set landing point" value="19"/>
+	</action_set>
+	<action_set description="К этим способностям относится изменение настроек участка, в т. ч. «Создать объекты», «Изменить ландшафт», а также настройки музыки и медиа." name="Parcel Settings">
+		<action description="Изменение настроек музыки и медиа" longdescription="Измените настройки потоковой музыки и фильмов в окне «О земле» на вкладке «Медиа»." name="land change media" value="20"/>
+		<action description="Включение-отключение изменения ландшафта" longdescription="Включение-отключение изменения ландшафта. *ПРЕДУПРЕЖДЕНИЕ* Выбрав параметры «О земле» &gt; вкладка «Параметры» &gt; «Изменить ландшафт», любой пользователь может изменить форму земли, а также размещать или перемещать растения Linden. Прежде чем назначить эту способность, убедитесь в целесообразности этого. Изменить ландшафт можно в окне «О земле» на вкладке «Параметры»." name="land edit" value="21"/>
+		<action description="Включение-отключение различных настроек «О земле &gt; Параметры»" longdescription="В окне «О земле» на вкладке «Параметры» можно включить-отключить параметр «Безопасно (нет повреждений)», «Полет» и разрешить другим жителям изменять ландшафт, строительство, создавать закладки и запускать скрипты для земли группы." name="land options" value="22"/>
+	</action_set>
+	<action_set description="К этим способностям относится разрешение участникам обходить ограничения на участках группы." name="Parcel Powers">
+		<action description="Всегда разрешено изменение ландшафта" longdescription="Участники роли с этой способностью могут изменять ландшафт участка группы, даже если это отключено в окне «О земле» на вкладке «Параметры»." name="land allow edit land" value="23"/>
+		<action description="Всегда разрешен полет" longdescription="Участники роли с этой способностью могут летать над участком группы, даже если это отключено в окне «О земле» на вкладке «Параметры»." name="land allow fly" value="24"/>
+		<action description="Всегда разрешено создавать объекты" longdescription="Участники роли с этой способностью могут создавать объекты на участке группы, даже если это отключено в окне «О земле» на вкладке «Параметры»." name="land allow create" value="25"/>
+		<action description="Всегда разрешено создавать закладки" longdescription="Участники роли с этой способностью могут поместить закладку на участке группы, даже если это отключено в окне «О земле» на вкладке «Параметры»." name="land allow landmark" value="26"/>
+		<action description="Разрешено установить дом на земле группы" longdescription="Участники роли с такой способностью могут использовать меню «Мир &gt; Закладки &gt; Установить дом здесь» для участка, переданного этой группе." name="land allow set home" value="28"/>
+		<action description="Разрешена орагнизация событий на земле группы" longdescription="Участники роли с этой способностью могут выбрать участки группы в качестве любимого места при организации события." name="land allow host event" value="41"/>
+	</action_set>
+	<action_set description="К этим способностям относится разрешение или ограничение доступа к участкам группы, в т ч. заморозка и выбрасывание жителей." name="Parcel Access">
+		<action description="Управление списками доступа к участку" longdescription="Управлять списками доступа к участку можно в окне «О земле» на вкладке «Доступ»." name="land manage allowed" value="29"/>
+		<action description="Управление списками запрета доступа к участку" longdescription="Управлять списками запрета доступа к участку можно в окне «О земле» на вкладке «Доступ»." name="land manage banned" value="30"/>
+		<action description="Изменение настроек продажи пропусков на участок" longdescription="Изменить настройки продажи пропусков на участок можно в окне «О земле» на вкладке «Доступ»." name="land manage passes" value="31"/>
+		<action description="Выбрасывание и заморозка жителей на участках" longdescription="Участники роли с этой способностью могут оперировать нежелательными жителями на участке группы, выбрав их правой кнопкой мыши и щелкнув «Выкинуть» или «Заморозить»." name="land admin" value="32"/>
+	</action_set>
+	<action_set description="К этим способностям относится разрешение участникам возвращать объекты, размещать и перемещать растения Linden. Это удобно при уборке разбросанных объектов и формировании ландшафта, но следует соблюдать осторожность, так как возврат объектов не отменяется." name="Parcel Content">
+		<action description="Возврат объектов группы" longdescription="Вернуть объекты, принадлежащие группе, на участки группы можно в окне «О земле» на вкладке «Объекты»." name="land return group owned" value="48"/>
+		<action description="Возврат объектов, назначенных группе" longdescription="Вернуть объекты, назначенные группе, на участки группы можно в окне «О земле» на вкладке «Объекты»." name="land return group set" value="33"/>
+		<action description="Возврат объектов, не принадлежащих группе" longdescription="Вернуть объекты, не принадлежащие группе, на участки группы можно в окне «О земле» на вкладке «Объекты»." name="land return non group" value="34"/>
+		<action description="Формирование ландшафта с помощью растений Linden" longdescription="Способность формировать ландшафт и перемещать деревья, растения и траву Linden. Эти вещи находятся в папке инвентаря «Библиотека &gt; Объекты», либо их можно создать с помощью меню «Строительство»." name="land gardening" value="35"/>
+	</action_set>
+	<action_set description="К этим способностям относится передача, изменение и продажа объектов группы. Для изменения используется вкладка «Общие» в группе «Инструменты для строительства». Чтобы просмотреть настройки, щелкните объект правой кнопкой и выберите пункт «Изменить»." name="Object Management">
+		<action description="Передача объектов группе" longdescription="Передать объекты группе можно на вкладке «Общие» в группе «Инструменты для строительства»." name="object deed" value="36"/>
+		<action description="Оперирование (перемещение, копирование, изменение) объектами группы" longdescription="Оперировать (перемещать, копировать, изменять) объекты группы можно на вкладке «Общие» в группе «Инструменты для строительства»." name="object manipulate" value="38"/>
+		<action description="Выбор объектов группы на продажу" longdescription="Выбрать объекты группы на продажу можно на вкладке «Общие» в группе «Инструменты для строительства»." name="object set sale" value="39"/>
+	</action_set>
+	<action_set description="Эти способности обязывают участников выплачивать задолженности и дают право получать прибыли группы, а также ограничивают доступ к журналу аккаунтов группы." name="Accounting">
+		<action description="Выплата задолженностей и получение прибыли группы" longdescription="Участники роли с этой способностью будут автоматически выплачивать задолженности и получать прибыль группы. Они будут получать часть прибыли от продажи земель группы, которая распределяется ежедневно, а также вносить плату, например, за список участков." name="accounting accountable" value="40"/>
+	</action_set>
+	<action_set description="К этим способностям относится разрешение участникам отправлять, получать и просматривать уведомления от группы." name="Notices">
+		<action description="Отправка уведомлений" longdescription="Участники роли с этой способностью могут отправлять уведомления, выбрав «Группа» &gt; раздел «Уведомления»." name="notices send" value="42"/>
+		<action description="Получение новых и просмотр старых уведомлений" longdescription="Участники роли с этой способностью могут получать новые и просматривать старые уведомления, выбрав «Группа» &gt; раздел «Уведомления»." name="notices receive" value="43"/>
+	</action_set>
+	<action_set description="К этим способностям относится разрешение или ограничение доступа к сеансам чата  и голосовому чату группы." name="Chat">
+		<action description="Присоединение к чату группы" longdescription="Участники роли с этой способностью могут присоединяться к сеансам чата группы (текстового и голосового)." name="join group chat" value="16"/>
+		<action description="Присоединение к голосовому чату группы" longdescription="Участники роли с этой способностью могут присоединяться к сеансам голосового чата группы.  ПРИМЕЧАНИЕ. Способность «Присоединение к чату группы» необходима для доступа к сеансам голосового чата." name="join voice chat" value="27"/>
+		<action description="Moderate-чат группы" longdescription="Участники роли с этой способностью могут контролировать доступ и участие в сеансах текстового и голосового чата группы." name="moderate group chat" value="37"/>
+	</action_set>
+</role_actions>
diff --git a/indra/newview/skins/default/xui/ru/sidepanel_appearance.xml b/indra/newview/skins/default/xui/ru/sidepanel_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a23f6134f24331d45a228cc81ad1d064444fd52a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/sidepanel_appearance.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Костюмы" name="appearance panel">
+	<string name="No Outfit" value="Нет костюма"/>
+	<string name="Unsaved Changes" value="Не сохраненные изменения"/>
+	<string name="Now Wearing" value="Сейчас надето..."/>
+	<string name="Changing outfits" value="Смена костюмов"/>
+	<panel name="panel_currentlook">
+		<button label="E" name="editappearance_btn"/>
+		<button label="O" name="openoutfit_btn"/>
+		<text name="currentlook_status">
+			(Статус)
+		</text>
+		<text name="currentlook_name">
+			Мой костюм с очень длинным названием, например, ЛОСОСЬ
+		</text>
+		<button label="" name="edit_outfit_btn" tool_tip="Изменить костюм"/>
+	</panel>
+	<filter_editor label="Фильтр для костюмов" name="Filter"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a4150f6e2fdb5bcd3ef1720aa789af0a0396279a
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/sidepanel_inventory.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Вещи" name="objects panel">
+	<panel label="" name="sidepanel__inventory_panel">
+		<layout_stack name="inventory_layout_stack">
+			<layout_panel name="inbox_outbox_layout_panel">
+				<layout_stack name="inbox_outbox_layout_stack">
+					<layout_panel name="inbox_layout_panel">
+						<panel label="" name="marketplace_inbox">
+							<string name="InboxLabelWithArg">
+								Полученные вещи ([NUM])
+							</string>
+							<string name="InboxLabelNoArg">
+								Полученные вещи
+							</string>
+							<button label="Полученные вещи" name="inbox_btn"/>
+							<text name="inbox_fresh_new_count">
+								Новых: [NUM]
+							</text>
+							<panel tool_tip="Drag and drop items to your inventory to manage and use them">
+								<text name="inbox_inventory_placeholder">
+									Покупки из торгового центра будут доставлены сюда.
+								</text>
+							</panel>
+						</panel>
+					</layout_panel>
+					<layout_panel name="outbox_layout_panel">
+						<panel label="" name="marketplace_outbox">
+							<string name="OutboxLabelWithArg">
+								Торговые исходящие ([NUM])
+							</string>
+							<string name="OutboxLabelNoArg">
+								Торговые исходящие
+							</string>
+							<button label="Торговые исходящие" name="outbox_btn"/>
+							<button label="" name="outbox_sync_btn" tool_tip="Выставить на витрину моего магазина"/>
+							<panel>
+								<panel name="outbox_inventory_placeholder_panel">
+									<text name="outbox_inventory_placeholder_title">
+										Загрузка...
+									</text>
+								</panel>
+							</panel>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+		<panel name="button_panel">
+			<layout_stack name="button_panel_ls">
+				<layout_panel name="info_btn_lp">
+					<button label="Профиль" name="info_btn" tool_tip="Показать профиль объекта"/>
+				</layout_panel>
+				<layout_panel name="share_btn_lp">
+					<button label="Поделиться" name="share_btn" tool_tip="Поделиться вещью из инвентаря"/>
+				</layout_panel>
+				<layout_panel name="shop_btn_lp">
+					<button label="Торговый центр" name="shop_btn" tool_tip="Открыть страницу торгового центра"/>
+					<button label="Надеть" name="wear_btn" tool_tip="Надеть выбранный костюм"/>
+					<button label="Проиграть" name="play_btn"/>
+					<button label="Телепорт" name="teleport_btn" tool_tip="Телепортироваться в выбранную область"/>
+				</layout_panel>
+			</layout_stack>
+		</panel>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml b/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..62095acbafea43f7c9531963e4338a28f497d804
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/sidepanel_item_info.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="item properties" title="Профиль объекта">
+	<panel.string name="unknown">
+		(неизвестно)
+	</panel.string>
+	<panel.string name="public">
+		(публичное)
+	</panel.string>
+	<panel.string name="you_can">
+		Вы можете:
+	</panel.string>
+	<panel.string name="owner_can">
+		Владелец может:
+	</panel.string>
+	<panel.string name="acquiredDate">
+		[wkday,datetime,local], [day,datetime,local] [mth,datetime,local] [year,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local]
+	</panel.string>
+	<panel.string name="origin_inventory">
+		(инвентарь)
+	</panel.string>
+	<panel.string name="origin_inworld">
+		(в мире)
+	</panel.string>
+	<text name="title" value="Профиль объекта"/>
+	<text name="origin" value="(инвентарь)"/>
+	<scroll_container name="item_profile_scroll">
+		<panel label="" name="item_profile">
+			<text name="LabelItemNameTitle">
+				Название:
+			</text>
+			<text name="LabelItemDescTitle">
+				Описание:
+			</text>
+			<text name="LabelCreatorTitle">
+				Создатель:
+			</text>
+			<text name="LabelOwnerTitle">
+				Владелец:
+			</text>
+			<text name="LabelAcquiredTitle">
+				Приобретено:
+			</text>
+			<panel name="perms_inv">
+				<text name="perm_modify">
+					Вы можете:
+				</text>
+				<check_box label="Изменять" name="CheckOwnerModify"/>
+				<check_box label="Копировать" name="CheckOwnerCopy"/>
+				<check_box label="Передать" name="CheckOwnerTransfer"/>
+				<text name="AnyoneLabel">
+					Все:
+				</text>
+				<check_box label="Копировать" name="CheckEveryoneCopy"/>
+				<text name="GroupLabel">
+					Группа:
+				</text>
+				<check_box label="Поделиться" name="CheckShareWithGroup" tool_tip="Позволить всем участникам выбранной группы получить установленные вам права на этот объект. Для включения ролевых ограничений необходимо произвести сделку."/>
+				<text name="NextOwnerLabel">
+					Следующий владелец:
+				</text>
+				<check_box label="Изменять" name="CheckNextOwnerModify"/>
+				<check_box label="Копировать" name="CheckNextOwnerCopy"/>
+				<check_box label="Передать" name="CheckNextOwnerTransfer" tool_tip="Следующий владелец может отдать или перепродать объект"/>
+			</panel>
+			<check_box label="Для продажи" name="CheckPurchase"/>
+			<combo_box name="combobox sale copy">
+				<combo_box.item label="Копировать" name="Copy"/>
+				<combo_box.item label="Оригинал" name="Original"/>
+			</combo_box>
+			<spinner label="Цена: L$" name="Edit Cost"/>
+		</panel>
+	</scroll_container>
+	<panel name="button_panel">
+		<button label="Отмена" name="cancel_btn"/>
+	</panel>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..8e56dd80c07e3af410ca8885e21840842896cb9b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/sidepanel_task_info.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="object properties" title="Профиль объекта">
+	<panel.string name="text deed continued">
+		Сделка
+	</panel.string>
+	<panel.string name="text deed">
+		Сделка
+	</panel.string>
+	<panel.string name="text modify info 1">
+		Этот объект можно изменять
+	</panel.string>
+	<panel.string name="text modify info 2">
+		Эти объекты можно изменять
+	</panel.string>
+	<panel.string name="text modify info 3">
+		Этот объект нельзя изменять
+	</panel.string>
+	<panel.string name="text modify info 4">
+		Эти объекты нельзя изменять
+	</panel.string>
+	<panel.string name="text modify warning">
+		Этот объект содержит объединенные части
+	</panel.string>
+	<panel.string name="Cost Default">
+		Цена: L$
+	</panel.string>
+	<panel.string name="Cost Total">
+		Всего: L$
+	</panel.string>
+	<panel.string name="Cost Per Unit">
+		Цена за: L$
+	</panel.string>
+	<panel.string name="Cost Mixed">
+		Смешанная цена
+	</panel.string>
+	<panel.string name="Sale Mixed">
+		Смешанная продажа
+	</panel.string>
+	<text name="title" value="Профиль объекта"/>
+	<text name="where" value="(в мире)"/>
+	<panel label="" name="properties_panel">
+		<text name="Name:">
+			Название:
+		</text>
+		<text name="Description:">
+			Описание:
+		</text>
+		<text name="CreatorNameLabel">
+			Создатель:
+		</text>
+		<text name="Owner:">
+			Владелец:
+		</text>
+		<text name="Group_label">
+			Группа:
+		</text>
+		<button name="button set group" tool_tip="Выберите группу для передачи ей прав доступа к объекту"/>
+		<name_box initial_value="Загрузка..." name="Group Name Proxy"/>
+		<button label="Сделка" label_selected="Сделка" name="button deed" tool_tip="В результате сделки объект передается группе, при этом права на него будут соответствовать правам следующего владельца. Переданный группе объект может передаваться должностным лицом группы."/>
+		<text name="label click action">
+			Действие по щелчку:
+		</text>
+		<combo_box name="clickaction">
+			<combo_box.item label="Коснуться (по умолчанию)" name="Touch/grab(default)"/>
+			<combo_box.item label="Сесть на объект" name="Sitonobject"/>
+			<combo_box.item label="Купить объект" name="Buyobject"/>
+			<combo_box.item label="Заплатить за объект" name="Payobject"/>
+			<combo_box.item label="Открыть" name="Open"/>
+		</combo_box>
+		<panel name="perms_inv">
+			<text name="perm_modify">
+				Этот объект можно изменять
+			</text>
+			<text name="Anyone can:">
+				Все:
+			</text>
+			<check_box label="Копировать" name="checkbox allow everyone copy"/>
+			<check_box label="Переместить" name="checkbox allow everyone move"/>
+			<text name="GroupLabel">
+				Группа:
+			</text>
+			<check_box label="Поделиться" name="checkbox share with group" tool_tip="Позволить всем участникам выбранной группы получить установленные вам права на этот объект. Для включения ролевых ограничений необходимо произвести сделку."/>
+			<text name="NextOwnerLabel">
+				Следующий владелец:
+			</text>
+			<check_box label="Изменять" name="checkbox next owner can modify"/>
+			<check_box label="Копировать" name="checkbox next owner can copy"/>
+			<check_box label="Передать" name="checkbox next owner can transfer" tool_tip="Следующий владелец может отдать или перепродать объект"/>
+		</panel>
+		<check_box label="Для продажи" name="checkbox for sale"/>
+		<combo_box name="sale type">
+			<combo_box.item label="Копировать" name="Copy"/>
+			<combo_box.item label="Контент" name="Contents"/>
+			<combo_box.item label="Оригинал" name="Original"/>
+		</combo_box>
+		<spinner label="Цена: L$" name="Edit Cost"/>
+		<check_box label="Показать в результатах поиска" name="search_check" tool_tip="Показывать объект в результатах поиска"/>
+		<text name="B:">
+			Н:
+		</text>
+		<text name="O:">
+			O:
+		</text>
+		<text name="G:">
+			G:
+		</text>
+		<text name="E:">
+			Ð’:
+		</text>
+		<text name="N:">
+			С:
+		</text>
+		<text name="F:">
+			F:
+		</text>
+	</panel>
+	<panel name="button_panel">
+		<button label="Открыть" name="open_btn"/>
+		<button label="Заплатить" name="pay_btn"/>
+		<button label="Купить" name="buy_btn"/>
+		<button label="Подробности" name="details_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6d954139ffa0e3a106d001bf9a5b1c45f9a5e60b
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/strings.xml
@@ -0,0 +1,4997 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- This file contains strings that used to be hardcoded in the source.
+     It is only for those strings which do not belong in a floater.
+     For example, the strings used in avatar chat bubbles, and strings
+     that are returned from one component and may appear in many places-->
+<strings>
+	<string name="SECOND_LIFE">
+		Second Life
+	</string>
+	<string name="APP_NAME">
+		Second Life
+	</string>
+	<string name="CAPITALIZED_APP_NAME">
+		SECOND LIFE
+	</string>
+	<string name="SECOND_LIFE_GRID">
+		Сетка Second Life
+	</string>
+	<string name="SUPPORT_SITE">
+		Портал поддержки Second Life
+	</string>
+	<string name="StartupDetectingHardware">
+		Проверка оборудования...
+	</string>
+	<string name="StartupLoading">
+		Загружается [APP_NAME]...
+	</string>
+	<string name="StartupClearingCache">
+		Очистка кэша...
+	</string>
+	<string name="StartupInitializingTextureCache">
+		Инициализация кэша текстур...
+	</string>
+	<string name="StartupInitializingVFS">
+		Инициализация виртуальной файловой системы...
+	</string>
+	<string name="StartupRequireDriverUpdate">
+		Ошибка инициализации графики. Обновите графический драйвер!
+	</string>
+	<string name="ProgressRestoring">
+		Восстановление...
+	</string>
+	<string name="ProgressChangingResolution">
+		Изменение разрешения...
+	</string>
+	<string name="Fullbright">
+		Собственная яркость (устаревший параметр)
+	</string>
+	<string name="LoginInProgress">
+		Вход... Может показаться, что программа [APP_NAME] зависла.  Ожидайте.
+	</string>
+	<string name="LoginInProgressNoFrozen">
+		Вход...
+	</string>
+	<string name="LoginAuthenticating">
+		Аутентификация
+	</string>
+	<string name="LoginMaintenance">
+		Идет обслуживание аккаунта...
+	</string>
+	<string name="LoginAttempt">
+		Предыдущая попытка входа была неудачной. Вход: попытка № [NUMBER]
+	</string>
+	<string name="LoginPrecaching">
+		Загрузка мира...
+	</string>
+	<string name="LoginInitializingBrowser">
+		Инициализация встроенного веб-браузера...
+	</string>
+	<string name="LoginInitializingMultimedia">
+		Инициализация мультимедиа...
+	</string>
+	<string name="LoginInitializingFonts">
+		Загрузка шрифтов...
+	</string>
+	<string name="LoginVerifyingCache">
+		Проверка файлов кэша (может занять 60-90 с)...
+	</string>
+	<string name="LoginProcessingResponse">
+		Обработка ответа...
+	</string>
+	<string name="LoginInitializingWorld">
+		Инициализация мира...
+	</string>
+	<string name="LoginDecodingImages">
+		Декодирование изображений...
+	</string>
+	<string name="LoginInitializingQuicktime">
+		Инициализация QuickTime...
+	</string>
+	<string name="LoginQuicktimeNotFound">
+		QuickTime не найден – ошибка инициализации.
+	</string>
+	<string name="LoginQuicktimeOK">
+		Успешная инициализация QuickTime.
+	</string>
+	<string name="LoginRequestSeedCapGrant">
+		Запрос возможностей региона...
+	</string>
+	<string name="LoginRetrySeedCapGrant">
+		Запрос возможностей региона, попытка [NUMBER]...
+	</string>
+	<string name="LoginWaitingForRegionHandshake">
+		Устанавливается связь с регионом...
+	</string>
+	<string name="LoginConnectingToRegion">
+		Подключение к региону...
+	</string>
+	<string name="LoginDownloadingClothing">
+		Загрузка одежды...
+	</string>
+	<string name="InvalidCertificate">
+		Сервер возвратил недействительный или поврежденный сертификат. Обратитесь к администратору сетки.
+	</string>
+	<string name="CertInvalidHostname">
+		Для доступа к серверу использовалось недействительное имя узла. Проверьте URL-адрес SL или имя узла в сетке.
+	</string>
+	<string name="CertExpired">
+		Судя по всему, истек срок действия сертификата, возвращенного сеткой.  Проверьте время, установленное в системе, или обратитесь к администратору сетки.
+	</string>
+	<string name="CertKeyUsage">
+		Не удалось использовать в протоколе SSL сертификат, возвращенный сервером.  Обратитесь к администратору сетки.
+	</string>
+	<string name="CertBasicConstraints">
+		В цепочке сертификатов серверов слишком много сертификатов.  Обратитесь к администратору сетки.
+	</string>
+	<string name="CertInvalidSignature">
+		Не удалось проверить подпись сертификата, возвращенного сервером сетки.  Обратитесь к администратору сетки.
+	</string>
+	<string name="LoginFailedNoNetwork">
+		Ошибка сети: не удалось установить соединение. Проверьте подключение к сети.
+	</string>
+	<string name="LoginFailed">
+		Ошибка входа.
+	</string>
+	<string name="Quit">
+		Выйти
+	</string>
+	<string name="create_account_url">
+		http://join.secondlife.com/
+	</string>
+	<string name="LoginFailedViewerNotPermitted">
+		У клиента, которым вы пользуетесь, больше нет доступа к игре Second Life. Загрузить новую версию клиента можно по адресу
+http://secondlife.com/download
+
+Дополнительные сведения см. в разделе вопросов и ответов по адресу
+http://secondlife.com/viewer-access-faq
+	</string>
+	<string name="LoginIntermediateOptionalUpdateAvailable">
+		Доступно необязательное обновление клиента: [VERSION]
+	</string>
+	<string name="LoginFailedRequiredUpdate">
+		Необходимо обновить клиент: [VERSION]
+	</string>
+	<string name="LoginFailedAlreadyLoggedIn">
+		С этого клиента уже выполнен вход.
+	</string>
+	<string name="LoginFailedAuthenticationFailed">
+		Извините! Не удается обеспечить ваш вход.
+Убедитесь, что вы правильно ввели:
+    * имя пользователя (например, bobsmith12 или steller.sunshine)
+    * пароль
+Кроме того, убедитесь, что режим Caps Lock отключен.
+	</string>
+	<string name="LoginFailedPasswordChanged">
+		В качестве меры предосторожности ваш пароль изменен.
+Перейдите на страницу своего аккаунта по адресу http://secondlife.com/password
+и ответьте на контрольный вопрос, чтобы восстановить свой пароль
+Приносим извинения за неудобство.
+	</string>
+	<string name="LoginFailedPasswordReset">
+		В нашу систему внесены изменения, поэтому вам следует восстановить свой пароль.
+Перейдите на страницу своего аккаунта по адресу http://secondlife.com/password
+и ответьте на контрольный вопрос, чтобы восстановить свой пароль
+Приносим извинения за неудобство.
+	</string>
+	<string name="LoginFailedEmployeesOnly">
+		Сайт Second Life временно закрыт на техническое обслуживание.
+В данное время входить могут только сотрудники.
+Обновление состояния см. на веб-странице www.secondlife.com/status.
+	</string>
+	<string name="LoginFailedPremiumOnly">
+		Вход в Second Life временно ограничен, чтобы обеспечить наилучшее времяпровождение в игровом мире.
+	 	
+В это время у пользователей с бесплатными аккаунтами не будет доступа к Second Life, чтобы у тех, кто заплатил, было больше места.
+	</string>
+	<string name="LoginFailedComputerProhibited">
+		Нельзя входить в игру Second Life на этом компьютере.
+Если вы считаете, что это ошибка, отправьте сообщение по адресу
+support@secondlife.com.
+	</string>
+	<string name="LoginFailedAcountSuspended">
+		Ваш аккаунт не будет доступен до
+[TIME] по тихоокеанскому времени.
+	</string>
+	<string name="LoginFailedAccountDisabled">
+		В данное время нам не удается выполнить ваш запрос.
+Обратитесь за помощью в службу поддержки Second Life по адресу http://secondlife.com/support.
+Если вам не удается изменить свой пароль, позвоните по телефону (866) 476-9763.
+	</string>
+	<string name="LoginFailedTransformError">
+		При входе обнаружена несогласованность данных.
+Напишите сообщения по адресу support@secondlife.com.
+	</string>
+	<string name="LoginFailedAccountMaintenance">
+		Выполняется небольшое обслуживание вашего аккаунта.
+Ваш аккаунт не будет доступен до
+[TIME] по тихоокеанскому времени.
+Если вы считаете, что это ошибка, отправьте сообщение по адресу support@secondlife.com.
+	</string>
+	<string name="LoginFailedPendingLogoutFault">
+		В ответ на запрос выхода симулятор возвратил сообщение о сбое.
+	</string>
+	<string name="LoginFailedPendingLogout">
+		В системе выполняется выход для вашего аккаунта.
+Она будет недоступна до
+[TIME] по тихоокеанскому времени.
+	</string>
+	<string name="LoginFailedUnableToCreateSession">
+		Не удается создать допустимый сеанс.
+	</string>
+	<string name="LoginFailedUnableToConnectToSimulator">
+		Не удается подключиться к симулятору.
+	</string>
+	<string name="LoginFailedRestrictedHours">
+		Вы можете входить в Second Life только
+от [START] до [END] по тихоокеанскому времени.
+Заходите в это время.
+Если вы считаете, что это ошибка, отправьте сообщение по адресу support@secondlife.com.
+	</string>
+	<string name="LoginFailedIncorrectParameters">
+		Неправильные параметры.
+Если вы считаете, что это ошибка, отправьте сообщение по адресу support@secondlife.com.
+	</string>
+	<string name="LoginFailedFirstNameNotAlphanumeric">
+		Имя должно состоять только из букв и цифр.
+Если вы считаете, что это ошибка, отправьте сообщение по адресу support@secondlife.com.
+	</string>
+	<string name="LoginFailedLastNameNotAlphanumeric">
+		Фамилия должна состоять только из букв и цифр.
+Если вы считаете, что это ошибка, отправьте сообщение по адресу support@secondlife.com.
+	</string>
+	<string name="LogoutFailedRegionGoingOffline">
+		Регион переходит в автономный режим.
+Попробуйте повторно войти через минуту.
+	</string>
+	<string name="LogoutFailedAgentNotInRegion">
+		Агент отсутствует в регионе.
+Попробуйте повторно войти через минуту.
+	</string>
+	<string name="LogoutFailedPendingLogin">
+		Вход в регион выполнен в другом сеансе.
+Попробуйте повторно войти через минуту.
+	</string>
+	<string name="LogoutFailedLoggingOut">
+		Для региона выполнен выход в предыдущем сеансе.
+Попробуйте повторно войти через минуту.
+	</string>
+	<string name="LogoutFailedStillLoggingOut">
+		Для региона все еще выполняется выход в предыдущем сеансе.
+Попробуйте повторно войти через минуту.
+	</string>
+	<string name="LogoutSucceeded">
+		В последнем сеансе для региона выполнен выход.
+Попробуйте повторно войти через минуту.
+	</string>
+	<string name="LogoutFailedLogoutBegun">
+		Для региона начат процесс выхода.
+Попробуйте повторно войти через минуту.
+	</string>
+	<string name="LoginFailedLoggingOutSession">
+		Во время вашего последнего сеанса система начала процедуру выхода.
+Попробуйте повторно войти через минуту.
+	</string>
+	<string name="AgentLostConnection">
+		Возможно, в этом регионе возникли проблемы.  Проверьте подключение к Интернету.
+	</string>
+	<string name="SavingSettings">
+		Сохранение настроек...
+	</string>
+	<string name="LoggingOut">
+		Выполняется выход...
+	</string>
+	<string name="ShuttingDown">
+		Игра закрывается...
+	</string>
+	<string name="YouHaveBeenDisconnected">
+		Произошло отключение от региона, в котором вы находились.
+	</string>
+	<string name="SentToInvalidRegion">
+		Вы отправлены в недействительный регион.
+	</string>
+	<string name="TestingDisconnect">
+		Тестирование отключения клиента
+	</string>
+	<string name="TooltipPerson">
+		Человек
+	</string>
+	<string name="TooltipNoName">
+		(нет имени)
+	</string>
+	<string name="TooltipOwner">
+		Владелец:
+	</string>
+	<string name="TooltipPublic">
+		Общедоступно
+	</string>
+	<string name="TooltipIsGroup">
+		(группа)
+	</string>
+	<string name="TooltipForSaleL$">
+		Продается: L$[AMOUNT]
+	</string>
+	<string name="TooltipFlagGroupBuild">
+		Стройка в составе группы
+	</string>
+	<string name="TooltipFlagNoBuild">
+		Стройка запрещена
+	</string>
+	<string name="TooltipFlagNoEdit">
+		Стройка в составе группы
+	</string>
+	<string name="TooltipFlagNotSafe">
+		Небезопасно
+	</string>
+	<string name="TooltipFlagNoFly">
+		Полеты запрещены
+	</string>
+	<string name="TooltipFlagGroupScripts">
+		Скрипты для группы
+	</string>
+	<string name="TooltipFlagNoScripts">
+		Скрипты запрещены
+	</string>
+	<string name="TooltipLand">
+		Земля:
+	</string>
+	<string name="TooltipMustSingleDrop">
+		Сюда можно перетащить только одну вещь
+	</string>
+	<string name="TooltipPrice" value="L$[AMOUNT]:"/>
+	<string name="TooltipOutboxNoTransfer">
+		Часть этих объектов нельзя продать, или они переданы другому пользователю.
+	</string>
+	<string name="TooltipOutboxWorn">
+		Часть этих объектов на вас. Снимите их со своего аватара и попробуйте переместить их еще раз.
+	</string>
+	<string name="TooltipOutboxFolderLevels">
+		В этой папке слишком много уровней вложенных папок. Измените структуру вложенных папок, ограничив ее глубину 4 уровнями (корневая папка, вложенные папки уровня А, вложенные в них папки уровня Б, вложенные в них папки уровня В).
+	</string>
+	<string name="TooltipOutboxTooManyObjects">
+		Эта папка содержит более 200 объектов. Сложите некоторые вещи в коробки, чтобы уменьшить число объектов.
+	</string>
+	<string name="TooltipHttpUrl">
+		Щелкните, чтобы просмотреть эту веб-страницу
+	</string>
+	<string name="TooltipSLURL">
+		Щелкните, чтобы просмотреть информацию об этом месте
+	</string>
+	<string name="TooltipAgentUrl">
+		Щелкните, чтобы просмотреть профиль этого жителя
+	</string>
+	<string name="TooltipAgentInspect">
+		Узнать больше об этом жителе
+	</string>
+	<string name="TooltipAgentMute">
+		Щелкните, чтобы не слышать этого жителя
+	</string>
+	<string name="TooltipAgentUnmute">
+		Щелкните, чтобы слышать этого жителя
+	</string>
+	<string name="TooltipAgentIM">
+		Щелкните, чтобы открыть личный чат с этим жителем
+	</string>
+	<string name="TooltipAgentPay">
+		Щелкните, чтобы заплатить жителю
+	</string>
+	<string name="TooltipAgentOfferTeleport">
+		Щелкните, чтобы предложить этому жителю телепортацию
+	</string>
+	<string name="TooltipAgentRequestFriend">
+		Щелкните, чтобы предложить этому жителю дружбу
+	</string>
+	<string name="TooltipGroupUrl">
+		Щелкните, чтобы просмотреть описание группы
+	</string>
+	<string name="TooltipEventUrl">
+		Щелкните, чтобы просмотреть описание события
+	</string>
+	<string name="TooltipClassifiedUrl">
+		Щелкните, чтобы просмотреть эту рекламу
+	</string>
+	<string name="TooltipParcelUrl">
+		Щелкните, чтобы посмотреть описание участка
+	</string>
+	<string name="TooltipTeleportUrl">
+		Щелкните, чтобы телепортироваться в это место
+	</string>
+	<string name="TooltipObjectIMUrl">
+		Щелкните, открыть описание этого объекта
+	</string>
+	<string name="TooltipMapUrl">
+		Щелкните, чтобы посмотреть это место на карте
+	</string>
+	<string name="TooltipSLAPP">
+		Щелкните, чтобы выполнить команду secondlife://
+	</string>
+	<string name="CurrentURL" value="Текущий URL-адрес: [CurrentURL]"/>
+	<string name="SLurlLabelTeleport">
+		Телепортироваться в
+	</string>
+	<string name="SLurlLabelShowOnMap">
+		Показать карту для
+	</string>
+	<string name="SLappAgentMute">
+		Откл. звук
+	</string>
+	<string name="SLappAgentUnmute">
+		Вкл. звук
+	</string>
+	<string name="SLappAgentIM">
+		IM
+	</string>
+	<string name="SLappAgentPay">
+		Заплатить
+	</string>
+	<string name="SLappAgentOfferTeleport">
+		Предложить телепортацию в
+	</string>
+	<string name="SLappAgentRequestFriend">
+		Предложить дружбу
+	</string>
+	<string name="BUTTON_CLOSE_DARWIN">
+		Закрыть (⌘W)
+	</string>
+	<string name="BUTTON_CLOSE_WIN">
+		Закрыть (Ctrl+W)
+	</string>
+	<string name="BUTTON_CLOSE_CHROME">
+		Закрыть
+	</string>
+	<string name="BUTTON_RESTORE">
+		Развернуть
+	</string>
+	<string name="BUTTON_MINIMIZE">
+		Свернуть
+	</string>
+	<string name="BUTTON_TEAR_OFF">
+		Отделить
+	</string>
+	<string name="BUTTON_DOCK">
+		Присоединить
+	</string>
+	<string name="BUTTON_HELP">
+		Показать справку
+	</string>
+	<string name="Searching">
+		Поиск...
+	</string>
+	<string name="NoneFound">
+		Ничего не найдено.
+	</string>
+	<string name="RetrievingData">
+		Получение...
+	</string>
+	<string name="ReleaseNotes">
+		Заметки о выпуске
+	</string>
+	<string name="LoadingData">
+		Загрузка...
+	</string>
+	<string name="AvatarNameNobody">
+		(без имени)
+	</string>
+	<string name="AvatarNameWaiting">
+		(ожидание)
+	</string>
+	<string name="AvatarNameMultiple">
+		(несколько)
+	</string>
+	<string name="GroupNameNone">
+		(нет)
+	</string>
+	<string name="AvalineCaller">
+		[ORDER] абонента Avaline
+	</string>
+	<string name="AssetErrorNone">
+		Ошибок нет
+	</string>
+	<string name="AssetErrorRequestFailed">
+		Запрос актива: сбой
+	</string>
+	<string name="AssetErrorNonexistentFile">
+		Запрос актива: файл не существует
+	</string>
+	<string name="AssetErrorNotInDatabase">
+		Запрос актива: актив не найден в базе данных
+	</string>
+	<string name="AssetErrorEOF">
+		Конец файла
+	</string>
+	<string name="AssetErrorCannotOpenFile">
+		Не удается открыть файл
+	</string>
+	<string name="AssetErrorFileNotFound">
+		Файл не найден
+	</string>
+	<string name="AssetErrorTCPTimeout">
+		Вышло время передачи файла
+	</string>
+	<string name="AssetErrorCircuitGone">
+		Обрыв в канале
+	</string>
+	<string name="AssetErrorPriceMismatch">
+		Не достигнута договоренность по цене между клиентом и сервером
+	</string>
+	<string name="AssetErrorUnknownStatus">
+		Неизвестный статус
+	</string>
+	<string name="texture">
+		текстуру
+	</string>
+	<string name="sound">
+		звук
+	</string>
+	<string name="calling card">
+		визитку
+	</string>
+	<string name="landmark">
+		закладку
+	</string>
+	<string name="legacy script">
+		старый скрипт
+	</string>
+	<string name="clothing">
+		одежду
+	</string>
+	<string name="object">
+		объект
+	</string>
+	<string name="note card">
+		заметку
+	</string>
+	<string name="folder">
+		папку
+	</string>
+	<string name="root">
+		корневой каталог
+	</string>
+	<string name="lsl2 script">
+		скрипт LSL2
+	</string>
+	<string name="lsl bytecode">
+		байт-код LSL
+	</string>
+	<string name="tga texture">
+		текстуру TGA
+	</string>
+	<string name="body part">
+		часть тела
+	</string>
+	<string name="snapshot">
+		снимок
+	</string>
+	<string name="lost and found">
+		найденные вещи
+	</string>
+	<string name="targa image">
+		изображение TGA
+	</string>
+	<string name="trash">
+		содержимое корзины
+	</string>
+	<string name="jpeg image">
+		изображение JPEG
+	</string>
+	<string name="animation">
+		анимацию
+	</string>
+	<string name="gesture">
+		жест
+	</string>
+	<string name="simstate">
+		состояние симуляции
+	</string>
+	<string name="favorite">
+		избранное
+	</string>
+	<string name="symbolic link">
+		ссылку
+	</string>
+	<string name="symbolic folder link">
+		ссылку на папку
+	</string>
+	<string name="mesh">
+		сетка
+	</string>
+	<string name="AvatarEditingAppearance">
+		(внешний вид редактируется)
+	</string>
+	<string name="AvatarAway">
+		Нет на месте
+	</string>
+	<string name="AvatarBusy">
+		Не беспокоить
+	</string>
+	<string name="AvatarMuted">
+		В черном списке
+	</string>
+	<string name="anim_express_afraid">
+		Страх
+	</string>
+	<string name="anim_express_anger">
+		Гнев
+	</string>
+	<string name="anim_away">
+		Нет на месте
+	</string>
+	<string name="anim_backflip">
+		Сальто назад
+	</string>
+	<string name="anim_express_laugh">
+		Хохот
+	</string>
+	<string name="anim_express_toothsmile">
+		Широкая улыбка
+	</string>
+	<string name="anim_blowkiss">
+		Воздушный поцелуй
+	</string>
+	<string name="anim_express_bored">
+		Скука
+	</string>
+	<string name="anim_bow">
+		Поклон
+	</string>
+	<string name="anim_clap">
+		Хлопок
+	</string>
+	<string name="anim_courtbow">
+		Учтивый поклон
+	</string>
+	<string name="anim_express_cry">
+		Плач
+	</string>
+	<string name="anim_dance1">
+		Танец 1
+	</string>
+	<string name="anim_dance2">
+		Танец 2
+	</string>
+	<string name="anim_dance3">
+		Танец 3
+	</string>
+	<string name="anim_dance4">
+		Танец 4
+	</string>
+	<string name="anim_dance5">
+		Танец 5
+	</string>
+	<string name="anim_dance6">
+		Танец 6
+	</string>
+	<string name="anim_dance7">
+		Танец 7
+	</string>
+	<string name="anim_dance8">
+		Танец 8
+	</string>
+	<string name="anim_express_disdain">
+		Презрение
+	</string>
+	<string name="anim_drink">
+		Питьё
+	</string>
+	<string name="anim_express_embarrased">
+		Смущение
+	</string>
+	<string name="anim_angry_fingerwag">
+		Погрозить пальцем
+	</string>
+	<string name="anim_fist_pump">
+		Поднимание кулака
+	</string>
+	<string name="anim_yoga_float">
+		Парящий Будда
+	</string>
+	<string name="anim_express_frown">
+		Хмурость
+	</string>
+	<string name="anim_impatient">
+		Нетерпение
+	</string>
+	<string name="anim_jumpforjoy">
+		Прыжок радости
+	</string>
+	<string name="anim_kissmybutt">
+		Поцелуй в зад
+	</string>
+	<string name="anim_express_kiss">
+		Поцелуй
+	</string>
+	<string name="anim_laugh_short">
+		Смех
+	</string>
+	<string name="anim_musclebeach">
+		Демонстрация мускулов
+	</string>
+	<string name="anim_no_unhappy">
+		Грустный отказ
+	</string>
+	<string name="anim_no_head">
+		Отказ
+	</string>
+	<string name="anim_nyanya">
+		Ня-ня-ня
+	</string>
+	<string name="anim_punch_onetwo">
+		Двойка руками
+	</string>
+	<string name="anim_express_open_mouth">
+		Открывание рта
+	</string>
+	<string name="anim_peace">
+		Дружелюбие
+	</string>
+	<string name="anim_point_you">
+		Указывание на кого-то
+	</string>
+	<string name="anim_point_me">
+		Указывание на себя
+	</string>
+	<string name="anim_punch_l">
+		Удар левой рукой
+	</string>
+	<string name="anim_punch_r">
+		Удар правой рукой
+	</string>
+	<string name="anim_rps_countdown">
+		Счет в КНБ
+	</string>
+	<string name="anim_rps_paper">
+		КНБ – бумага
+	</string>
+	<string name="anim_rps_rock">
+		КНБ – камень
+	</string>
+	<string name="anim_rps_scissors">
+		КНБ – ножницы
+	</string>
+	<string name="anim_express_repulsed">
+		Отказ
+	</string>
+	<string name="anim_kick_roundhouse_r">
+		«Вертушка»
+	</string>
+	<string name="anim_express_sad">
+		Грусть
+	</string>
+	<string name="anim_salute">
+		Приветствие
+	</string>
+	<string name="anim_shout">
+		Крик
+	</string>
+	<string name="anim_express_shrug">
+		Пожимание плечами
+	</string>
+	<string name="anim_express_smile">
+		Улыбка
+	</string>
+	<string name="anim_smoke_idle">
+		Курение не в затяжку
+	</string>
+	<string name="anim_smoke_inhale">
+		Курение в затяжку
+	</string>
+	<string name="anim_smoke_throw_down">
+		Бросить сигарету
+	</string>
+	<string name="anim_express_surprise">
+		Удивление
+	</string>
+	<string name="anim_sword_strike_r">
+		Удар мечом
+	</string>
+	<string name="anim_angry_tantrum">
+		Вспышка гнева
+	</string>
+	<string name="anim_express_tongue_out">
+		Показ языка
+	</string>
+	<string name="anim_hello">
+		Приветствие рукой
+	</string>
+	<string name="anim_whisper">
+		Шепот
+	</string>
+	<string name="anim_whistle">
+		Свист
+	</string>
+	<string name="anim_express_wink">
+		Подмигивание
+	</string>
+	<string name="anim_wink_hollywood">
+		Подмигивание по-голливудски
+	</string>
+	<string name="anim_express_worry">
+		Беспокойство
+	</string>
+	<string name="anim_yes_happy">
+		Радостное согласие
+	</string>
+	<string name="anim_yes_head">
+		Согласие
+	</string>
+	<string name="texture_loading">
+		Загрузка...
+	</string>
+	<string name="worldmap_offline">
+		Не в сети
+	</string>
+	<string name="worldmap_item_tooltip_format">
+		[AREA] м² L$[PRICE]
+	</string>
+	<string name="worldmap_results_none_found">
+		Ничего не найдено.
+	</string>
+	<string name="Ok">
+		ОК
+	</string>
+	<string name="Premature end of file">
+		Преждевременный конец файла
+	</string>
+	<string name="ST_NO_JOINT">
+		Не удается найти объект ROOT или JOINT.
+	</string>
+	<string name="whisper">
+		шепчет:
+	</string>
+	<string name="shout">
+		кричит:
+	</string>
+	<string name="ringing">
+		Подключение к голосовому чату...
+	</string>
+	<string name="connected">
+		Подключение установлено
+	</string>
+	<string name="unavailable">
+		В этом месте голосовая связь недоступна
+	</string>
+	<string name="hang_up">
+		Отключение от общего голосового чата
+	</string>
+	<string name="reconnect_nearby">
+		Будет установлено подключение к локальному голосовому чату
+	</string>
+	<string name="ScriptQuestionCautionChatGranted">
+		Объекту «[OBJECTNAME]», который принадлежит пользователю «[OWNERNAME]» и находится в [REGIONPOS] в регионе «[REGIONNAME]», предоставлено разрешение: [PERMISSIONS].
+	</string>
+	<string name="ScriptQuestionCautionChatDenied">
+		Объекту «[OBJECTNAME]», который принадлежит пользователю «[OWNERNAME]» и находится в [REGIONPOS] в регионе «[REGIONNAME]», отказано в разрешении: [PERMISSIONS].
+	</string>
+	<string name="ScriptTakeMoney">
+		У вас берут Linden-деньги
+	</string>
+	<string name="ActOnControlInputs">
+		Действия при активации элементов управления
+	</string>
+	<string name="RemapControlInputs">
+		Новое сопоставление элементов управления
+	</string>
+	<string name="AnimateYourAvatar">
+		Анимировать ваш аватар
+	</string>
+	<string name="AttachToYourAvatar">
+		Прикрепить к аватару
+	</string>
+	<string name="ReleaseOwnership">
+		Отказаться от владения, сделать всеобщим
+	</string>
+	<string name="LinkAndDelink">
+		Связать или отменить связь с другими объектами
+	</string>
+	<string name="AddAndRemoveJoints">
+		Добавление и удаление связей с другими объектами
+	</string>
+	<string name="ChangePermissions">
+		Изменить разрешения
+	</string>
+	<string name="TrackYourCamera">
+		Следить за камерой
+	</string>
+	<string name="ControlYourCamera">
+		Управлять камерой
+	</string>
+	<string name="NotConnected">
+		Нет подключения
+	</string>
+	<string name="SIM_ACCESS_PG">
+		Общий
+	</string>
+	<string name="SIM_ACCESS_MATURE">
+		Умеренный
+	</string>
+	<string name="SIM_ACCESS_ADULT">
+		Для взрослых
+	</string>
+	<string name="SIM_ACCESS_DOWN">
+		Не в сети
+	</string>
+	<string name="SIM_ACCESS_MIN">
+		Неизвестно
+	</string>
+	<string name="land_type_unknown">
+		(неизвестно)
+	</string>
+	<string name="Estate / Full Region">
+		Землевладение/весь регион
+	</string>
+	<string name="Estate / Homestead">
+		Землевладение/поместье
+	</string>
+	<string name="Mainland / Homestead">
+		Материк/поместье
+	</string>
+	<string name="Mainland / Full Region">
+		Материк/весь регион
+	</string>
+	<string name="all_files">
+		Все файлы
+	</string>
+	<string name="sound_files">
+		Звуки
+	</string>
+	<string name="animation_files">
+		Анимация
+	</string>
+	<string name="image_files">
+		Изображения
+	</string>
+	<string name="save_file_verb">
+		Сохранить
+	</string>
+	<string name="load_file_verb">
+		Загрузить
+	</string>
+	<string name="targa_image_files">
+		Изображения TGA
+	</string>
+	<string name="bitmap_image_files">
+		Изображения BMP
+	</string>
+	<string name="avi_movie_file">
+		Видео AVI
+	</string>
+	<string name="xaf_animation_file">
+		Анимация XAF
+	</string>
+	<string name="xml_file">
+		XML-файл
+	</string>
+	<string name="raw_file">
+		RAW-файл
+	</string>
+	<string name="compressed_image_files">
+		Несжатые изображения
+	</string>
+	<string name="load_files">
+		Загрузить файлы
+	</string>
+	<string name="choose_the_directory">
+		Выбрать каталог
+	</string>
+	<string name="AvatarSetNotAway">
+		На месте
+	</string>
+	<string name="AvatarSetAway">
+		Нет на месте
+	</string>
+	<string name="AvatarSetNotBusy">
+		Не занят(а)
+	</string>
+	<string name="AvatarSetBusy">
+		Не беспокоить
+	</string>
+	<string name="shape">
+		Фигура
+	</string>
+	<string name="skin">
+		Кожа
+	</string>
+	<string name="hair">
+		Волосы
+	</string>
+	<string name="eyes">
+		Глаза
+	</string>
+	<string name="shirt">
+		Рубашка
+	</string>
+	<string name="pants">
+		Брюки
+	</string>
+	<string name="shoes">
+		Обувь
+	</string>
+	<string name="socks">
+		Носки
+	</string>
+	<string name="jacket">
+		Пиджак
+	</string>
+	<string name="gloves">
+		Перчатки
+	</string>
+	<string name="undershirt">
+		Майка
+	</string>
+	<string name="underpants">
+		Трусы
+	</string>
+	<string name="skirt">
+		Юбка
+	</string>
+	<string name="alpha">
+		Альфа-маска
+	</string>
+	<string name="tattoo">
+		Тату
+	</string>
+	<string name="physics">
+		Физические данные
+	</string>
+	<string name="invalid">
+		ошибка
+	</string>
+	<string name="none">
+		нет
+	</string>
+	<string name="shirt_not_worn">
+		Рубашка не надета
+	</string>
+	<string name="pants_not_worn">
+		Брюки не надеты
+	</string>
+	<string name="shoes_not_worn">
+		Обувь не надета
+	</string>
+	<string name="socks_not_worn">
+		Носки не надеты
+	</string>
+	<string name="jacket_not_worn">
+		Пиджак не надет
+	</string>
+	<string name="gloves_not_worn">
+		Перчатки не надеты
+	</string>
+	<string name="undershirt_not_worn">
+		Майка не надета
+	</string>
+	<string name="underpants_not_worn">
+		Трусы не надеты
+	</string>
+	<string name="skirt_not_worn">
+		Юбка не надета
+	</string>
+	<string name="alpha_not_worn">
+		Альфа-маска не надета
+	</string>
+	<string name="tattoo_not_worn">
+		Тату не надето
+	</string>
+	<string name="physics_not_worn">
+		Физика не учитывается
+	</string>
+	<string name="invalid_not_worn">
+		ошибка
+	</string>
+	<string name="create_new_shape">
+		Создать фигуру
+	</string>
+	<string name="create_new_skin">
+		Создать кожу
+	</string>
+	<string name="create_new_hair">
+		Создать волосы
+	</string>
+	<string name="create_new_eyes">
+		Создать глаза
+	</string>
+	<string name="create_new_shirt">
+		Создать рубашку
+	</string>
+	<string name="create_new_pants">
+		Создать брюки
+	</string>
+	<string name="create_new_shoes">
+		Создать обувь
+	</string>
+	<string name="create_new_socks">
+		Создать носки
+	</string>
+	<string name="create_new_jacket">
+		Создать пиджак
+	</string>
+	<string name="create_new_gloves">
+		Создать перчатки
+	</string>
+	<string name="create_new_undershirt">
+		Создать майку
+	</string>
+	<string name="create_new_underpants">
+		Создать трусы
+	</string>
+	<string name="create_new_skirt">
+		Создать юбку
+	</string>
+	<string name="create_new_alpha">
+		Создать альфа-маску
+	</string>
+	<string name="create_new_tattoo">
+		Создать тату
+	</string>
+	<string name="create_new_physics">
+		Создать физику
+	</string>
+	<string name="create_new_invalid">
+		ошибка
+	</string>
+	<string name="NewWearable">
+		Создать [WEARABLE_ITEM]
+	</string>
+	<string name="next">
+		Далее
+	</string>
+	<string name="ok">
+		ОК
+	</string>
+	<string name="GroupNotifyGroupNotice">
+		Групповое уведомление
+	</string>
+	<string name="GroupNotifyGroupNotices">
+		Групповые уведомления
+	</string>
+	<string name="GroupNotifySentBy">
+		Отправитель
+	</string>
+	<string name="GroupNotifyAttached">
+		Вложение:
+	</string>
+	<string name="GroupNotifyViewPastNotices">
+		Здесь можно просмотреть последние уведомления или отказаться от их получения.
+	</string>
+	<string name="GroupNotifyOpenAttachment">
+		Открыть вложение
+	</string>
+	<string name="GroupNotifySaveAttachment">
+		Сохранить вложение
+	</string>
+	<string name="TeleportOffer">
+		Предложена телепортация
+	</string>
+	<string name="StartUpNotifications">
+		Пока вы отсутствовали, пришли новые уведомления.
+	</string>
+	<string name="OverflowInfoChannelString">
+		Других уведомлений: %d
+	</string>
+	<string name="BodyPartsRightArm">
+		Правая рука
+	</string>
+	<string name="BodyPartsHead">
+		Голова
+	</string>
+	<string name="BodyPartsLeftArm">
+		Левая рука
+	</string>
+	<string name="BodyPartsLeftLeg">
+		Левая нога
+	</string>
+	<string name="BodyPartsTorso">
+		Торс
+	</string>
+	<string name="BodyPartsRightLeg">
+		Правая нога
+	</string>
+	<string name="GraphicsQualityLow">
+		низкая
+	</string>
+	<string name="GraphicsQualityMid">
+		средняя
+	</string>
+	<string name="GraphicsQualityHigh">
+		высокая
+	</string>
+	<string name="LeaveMouselook">
+		Нажмите ESC, чтобы вернуться к обычному обзору
+	</string>
+	<string name="InventoryNoMatchingItems">
+		Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/all/[SEARCH_TERM] поиском].
+	</string>
+	<string name="PlacesNoMatchingItems">
+		Не нашли того, что вам нужно? Воспользуйтесь [secondlife:///app/search/places/[SEARCH_TERM] поиском].
+	</string>
+	<string name="FavoritesNoMatchingItems">
+		Перетащите сюда закладку, чтобы добавить ее в список избранного.
+	</string>
+	<string name="InventoryNoTexture">
+		В вашем инвентаре нет копии этой текстуры
+	</string>
+	<string name="InventoryInboxNoItems">
+		Если вы купите или как-то иначе получите предмет, он появится здесь. Его можно будет перетащить в папку вашего инвентаря или удалить, если он больше не нужен.
+	</string>
+	<string name="MarketplaceURL">
+		http://marketplace.[DOMAIN_NAME]
+	</string>
+	<string name="MarketplaceURL_CreateStore">
+		http://marketplace.[DOMAIN_NAME]/create_store
+	</string>
+	<string name="MarketplaceURL_LearnMore">
+		http://marketplace.[DOMAIN_NAME]/learn_more
+	</string>
+	<string name="InventoryOutboxCreationErrorTitle">
+		Папка «Торговые исходящие» настроена неправильно
+	</string>
+	<string name="InventoryOutboxCreationErrorTooltip">
+		Ошибка конфигурации папки «Торговые исходящие»
+	</string>
+	<string name="InventoryOutboxCreationError">
+		Чтобы исправить эту проблему, обратитесь в службу поддержки.
+	</string>
+	<string name="InventoryOutboxNotMerchantTitle">
+		Продавать вещи в торговом центре может кто угодно
+	</string>
+	<string name="InventoryOutboxNotMerchantTooltip">
+		Станьте торговцем!
+	</string>
+	<string name="InventoryOutboxNotMerchant">
+		[[MARKETPLACE_URL] Торговый центр Second Life] предлагает на продажу более миллиона виртуальных продуктов, и все они созданы жителями Second Life. Вы тоже можете продавать созданные вами вещи, а также некоторые из вещей, купленных вами. Это совсем несложно. Настройка выполняется бесплатно.  [[LEARN_MORE_URL] Узнайте подробности] или [[CREATE_STORE_URL] создайте магазин] в торговом центре, чтобы начать торговлю.
+	</string>
+	<string name="InventoryOutboxNoItemsTitle">
+		Новый способ отправки вещей в торговый центр
+	</string>
+	<string name="InventoryOutboxNoItemsTooltip">
+		Перетащите вещи сюда, чтобы подготовить их для продажи в торговом центре
+	</string>
+	<string name="InventoryOutboxNoItems">
+		Перетаскивайте в эту область вещи и папки, которые хотите продать.  При перетаскивании создается копия вещи (за исключением вещей, недоступных для копирования), поэтому инвентарь не изменяется.  Когда все готово для отправки вещей в торговый центр, нажмите кнопку «Передать». Вещи, перемещенные в инвентарь магазина, исчезают из этой папки.
+	</string>
+	<string name="Marketplace Error None">
+		Ошибок нет
+	</string>
+	<string name="Marketplace Error Not Merchant">
+		Ошибка. Прежде чем отправлять вещи в магазин, необходимо зарегистрироваться как торговец (бесплатно).
+	</string>
+	<string name="Marketplace Error Empty Folder">
+		Ошибка. В этой папке нет контента.
+	</string>
+	<string name="Marketplace Error Unassociated Products">
+		Ошибка. Не удается передать эту вещь, поскольку в вашем торговом аккаунте слишком много вещей, не связанных с продуктами.  Чтобы исправить эту ошибку, войдите на веб-сайт торгового центра и уменьшите число своих вещей, которые ни с чем не связаны.
+	</string>
+	<string name="Marketplace Error Object Limit">
+		Ошибка. Эта вещь содержит слишком много объектов.  Исправьте эту ошибку, сложив объекты в коробки и уменьшив их общее число (должно быть меньше 200).
+	</string>
+	<string name="Marketplace Error Folder Depth">
+		Ошибка. Эта вещь содержит слишком много уровней вложенных папок.  Измените структуру так, чтобы уровней вложенных папок было не более 3.
+	</string>
+	<string name="Marketplace Error Unsellable Item">
+		Ошибка. Эту вещь нельзя продать в магазине.
+	</string>
+	<string name="Marketplace Error Internal Import">
+		Ошибка. Эта вещь создает проблему.  Повторите попытку позже.
+	</string>
+	<string name="Open landmarks">
+		Открыть закладки
+	</string>
+	<string name="no_transfer" value="(не передается)"/>
+	<string name="no_modify" value="(не изменяется)"/>
+	<string name="no_copy" value="(не копируется)"/>
+	<string name="worn" value="(носится)"/>
+	<string name="link" value="(ссылка)"/>
+	<string name="broken_link" value="(broken_link)"/>
+	<string name="LoadingContents">
+		Загрузка содержимого...
+	</string>
+	<string name="NoContents">
+		Нет контента
+	</string>
+	<string name="WornOnAttachmentPoint" value="(где носится: [ATTACHMENT_POINT])"/>
+	<string name="ActiveGesture" value="[GESLABEL] (активно)"/>
+	<string name="PermYes">
+		Да
+	</string>
+	<string name="PermNo">
+		Нет
+	</string>
+	<string name="Chat Message" value="Чат:"/>
+	<string name="Sound" value="Звук:"/>
+	<string name="Wait" value="--- Ждите:"/>
+	<string name="AnimFlagStop" value="Остановить анимацию:"/>
+	<string name="AnimFlagStart" value="Начать анимацию:"/>
+	<string name="Wave" value="Приветствие рукой"/>
+	<string name="GestureActionNone" value="Нет"/>
+	<string name="HelloAvatar" value="Привет, аватар!"/>
+	<string name="ViewAllGestures" value="Просмотреть все &gt;&gt;"/>
+	<string name="GetMoreGestures" value="Дополнительно &gt;&gt;"/>
+	<string name="Animations" value="Анимация,"/>
+	<string name="Calling Cards" value="Визитки,"/>
+	<string name="Clothing" value="Одежда,"/>
+	<string name="Gestures" value="Жесты,"/>
+	<string name="Landmarks" value="Закладки,"/>
+	<string name="Notecards" value="Заметки,"/>
+	<string name="Objects" value="Объекты,"/>
+	<string name="Scripts" value="Скрипты,"/>
+	<string name="Sounds" value="Звуки,"/>
+	<string name="Textures" value="Текстуры,"/>
+	<string name="Snapshots" value="Снимки,"/>
+	<string name="No Filters" value="Нет"/>
+	<string name="Since Logoff" value="- С момента выхода"/>
+	<string name="InvFolder My Inventory">
+		Мой инвентарь
+	</string>
+	<string name="InvFolder Library">
+		Библиотека
+	</string>
+	<string name="InvFolder Textures">
+		Текстуры
+	</string>
+	<string name="InvFolder Sounds">
+		Звуки
+	</string>
+	<string name="InvFolder Calling Cards">
+		Визитки
+	</string>
+	<string name="InvFolder Landmarks">
+		Закладки
+	</string>
+	<string name="InvFolder Scripts">
+		Скрипты
+	</string>
+	<string name="InvFolder Clothing">
+		Одежда
+	</string>
+	<string name="InvFolder Objects">
+		Объекты
+	</string>
+	<string name="InvFolder Notecards">
+		Заметки
+	</string>
+	<string name="InvFolder New Folder">
+		Новая папка
+	</string>
+	<string name="InvFolder Inventory">
+		Инвентарь
+	</string>
+	<string name="InvFolder Uncompressed Images">
+		Несжатые изображения
+	</string>
+	<string name="InvFolder Body Parts">
+		Части тела
+	</string>
+	<string name="InvFolder Trash">
+		Корзина
+	</string>
+	<string name="InvFolder Photo Album">
+		Фотоальбом
+	</string>
+	<string name="InvFolder Lost And Found">
+		Бюро находок
+	</string>
+	<string name="InvFolder Uncompressed Sounds">
+		Несжатые звуки
+	</string>
+	<string name="InvFolder Animations">
+		Анимация
+	</string>
+	<string name="InvFolder Gestures">
+		Жесты
+	</string>
+	<string name="InvFolder Favorite">
+		Мое избранное
+	</string>
+	<string name="InvFolder favorite">
+		Мое избранное
+	</string>
+	<string name="InvFolder Current Outfit">
+		Текущий костюм
+	</string>
+	<string name="InvFolder Initial Outfits">
+		Начальные костюмы
+	</string>
+	<string name="InvFolder My Outfits">
+		Мои костюмы
+	</string>
+	<string name="InvFolder Accessories">
+		Аксессуары
+	</string>
+	<string name="InvFolder Meshes">
+		Меши
+	</string>
+	<string name="InvFolder Friends">
+		Друзья
+	</string>
+	<string name="InvFolder All">
+		Все
+	</string>
+	<string name="no_attachments">
+		Нет прикрепленных объектов
+	</string>
+	<string name="Attachments remain">
+		Присоединения (осталось гнезд: [COUNT])
+	</string>
+	<string name="Buy">
+		Купить
+	</string>
+	<string name="BuyforL$">
+		Купить за L$
+	</string>
+	<string name="Stone">
+		Камень
+	</string>
+	<string name="Metal">
+		Металл
+	</string>
+	<string name="Glass">
+		Стекло
+	</string>
+	<string name="Wood">
+		Дерево
+	</string>
+	<string name="Flesh">
+		Плоть
+	</string>
+	<string name="Plastic">
+		Пластик
+	</string>
+	<string name="Rubber">
+		Резина
+	</string>
+	<string name="Light">
+		Светлый
+	</string>
+	<string name="KBShift">
+		SHIFT
+	</string>
+	<string name="KBCtrl">
+		CTRL
+	</string>
+	<string name="Chest">
+		Грудь
+	</string>
+	<string name="Skull">
+		Череп
+	</string>
+	<string name="Left Shoulder">
+		Левое плечо
+	</string>
+	<string name="Right Shoulder">
+		Правое плечо
+	</string>
+	<string name="Left Hand">
+		Левая кисть
+	</string>
+	<string name="Right Hand">
+		Правая кисть
+	</string>
+	<string name="Left Foot">
+		Левая ступня
+	</string>
+	<string name="Right Foot">
+		Правая ступня
+	</string>
+	<string name="Spine">
+		Позвоночник
+	</string>
+	<string name="Pelvis">
+		Таз
+	</string>
+	<string name="Mouth">
+		Рот
+	</string>
+	<string name="Chin">
+		Подбородок
+	</string>
+	<string name="Left Ear">
+		Левое ухо
+	</string>
+	<string name="Right Ear">
+		Правое ухо
+	</string>
+	<string name="Left Eyeball">
+		Левый глаз
+	</string>
+	<string name="Right Eyeball">
+		Правый глаз
+	</string>
+	<string name="Nose">
+		Нос
+	</string>
+	<string name="R Upper Arm">
+		Правое плечо
+	</string>
+	<string name="R Forearm">
+		Правое предплечье
+	</string>
+	<string name="L Upper Arm">
+		Левое плечо
+	</string>
+	<string name="L Forearm">
+		Левое предплечье
+	</string>
+	<string name="Right Hip">
+		Правое бедро
+	</string>
+	<string name="R Upper Leg">
+		Правое колено
+	</string>
+	<string name="R Lower Leg">
+		Правая голень
+	</string>
+	<string name="Left Hip">
+		Левое бедро
+	</string>
+	<string name="L Upper Leg">
+		Левое колено
+	</string>
+	<string name="L Lower Leg">
+		Левая голень
+	</string>
+	<string name="Stomach">
+		Живот
+	</string>
+	<string name="Left Pec">
+		Левая грудь
+	</string>
+	<string name="Right Pec">
+		Правая грудь
+	</string>
+	<string name="Neck">
+		Шея
+	</string>
+	<string name="Avatar Center">
+		Центр аватара
+	</string>
+	<string name="Invalid Attachment">
+		Неверная точка присоединения
+	</string>
+	<string name="YearsMonthsOld">
+		[AGEYEARS] [AGEMONTHS]
+	</string>
+	<string name="YearsOld">
+		[AGEYEARS]
+	</string>
+	<string name="MonthsOld">
+		[AGEMONTHS]
+	</string>
+	<string name="WeeksOld">
+		[AGEWEEKS]
+	</string>
+	<string name="DaysOld">
+		[AGEDAYS]
+	</string>
+	<string name="TodayOld">
+		Сегодня
+	</string>
+	<string name="AgeYearsA">
+		[COUNT] год
+	</string>
+	<string name="AgeYearsB">
+		[COUNT] года
+	</string>
+	<string name="AgeYearsC">
+		[COUNT] лет
+	</string>
+	<string name="AgeMonthsA">
+		[COUNT] месяц
+	</string>
+	<string name="AgeMonthsB">
+		[COUNT] месяца
+	</string>
+	<string name="AgeMonthsC">
+		[COUNT] месяцев
+	</string>
+	<string name="AgeWeeksA">
+		[COUNT] неделя
+	</string>
+	<string name="AgeWeeksB">
+		[COUNT] недели
+	</string>
+	<string name="AgeWeeksC">
+		[COUNT] недель
+	</string>
+	<string name="AgeDaysA">
+		[COUNT] день
+	</string>
+	<string name="AgeDaysB">
+		[COUNT] дня
+	</string>
+	<string name="AgeDaysC">
+		[COUNT] дней
+	</string>
+	<string name="GroupMembersA">
+		[COUNT] участник
+	</string>
+	<string name="GroupMembersB">
+		[COUNT] участника
+	</string>
+	<string name="GroupMembersC">
+		[COUNT] участников
+	</string>
+	<string name="AcctTypeResident">
+		Житель
+	</string>
+	<string name="AcctTypeTrial">
+		Гость
+	</string>
+	<string name="AcctTypeCharterMember">
+		Учредитель
+	</string>
+	<string name="AcctTypeEmployee">
+		Сотрудник Linden Lab
+	</string>
+	<string name="PaymentInfoUsed">
+		Есть информация о платежах
+	</string>
+	<string name="PaymentInfoOnFile">
+		Есть зарегистрир. информация о платежах
+	</string>
+	<string name="NoPaymentInfoOnFile">
+		Нет информации о платежах
+	</string>
+	<string name="AgeVerified">
+		Возраст проверен
+	</string>
+	<string name="NotAgeVerified">
+		Возраст не проверен
+	</string>
+	<string name="Center 2">
+		В центре 2
+	</string>
+	<string name="Top Right">
+		Вверху справа
+	</string>
+	<string name="Top">
+		Вверху
+	</string>
+	<string name="Top Left">
+		Вверху слева
+	</string>
+	<string name="Center">
+		В центре
+	</string>
+	<string name="Bottom Left">
+		Внизу слева
+	</string>
+	<string name="Bottom">
+		Внизу
+	</string>
+	<string name="Bottom Right">
+		Внизу справа
+	</string>
+	<string name="CompileQueueDownloadedCompiling">
+		Загружено, компилируется
+	</string>
+	<string name="CompileQueueScriptNotFound">
+		Скрипт не найден на сервере.
+	</string>
+	<string name="CompileQueueProblemDownloading">
+		Проблема при загрузке
+	</string>
+	<string name="CompileQueueInsufficientPermDownload">
+		Недостаточно разрешений для загрузки скрипта.
+	</string>
+	<string name="CompileQueueInsufficientPermFor">
+		Недостаточно разрешений для
+	</string>
+	<string name="CompileQueueUnknownFailure">
+		Неизвестный сбой загрузки
+	</string>
+	<string name="CompileQueueTitle">
+		Ход повторной компиляции
+	</string>
+	<string name="CompileQueueStart">
+		скомпилировать повторно
+	</string>
+	<string name="ResetQueueTitle">
+		Ход сброса
+	</string>
+	<string name="ResetQueueStart">
+		сброс
+	</string>
+	<string name="RunQueueTitle">
+		Ход запуска
+	</string>
+	<string name="RunQueueStart">
+		запустить
+	</string>
+	<string name="NotRunQueueTitle">
+		Ход остановки выполнения
+	</string>
+	<string name="NotRunQueueStart">
+		прекратить выполнение
+	</string>
+	<string name="CompileSuccessful">
+		Компиляция успешно выполнена!
+	</string>
+	<string name="CompileSuccessfulSaving">
+		Компиляция успешно выполнена, сохраняется...
+	</string>
+	<string name="SaveComplete">
+		Сохранение завершено.
+	</string>
+	<string name="ObjectOutOfRange">
+		Скрипт (объект вне области)
+	</string>
+	<string name="GodToolsObjectOwnedBy">
+		Объект [OBJECT] пользователя [OWNER]
+	</string>
+	<string name="GroupsNone">
+		нет
+	</string>
+	<string name="Group" value="(группа)"/>
+	<string name="Unknown">
+		(Неизвестно)
+	</string>
+	<string name="SummaryForTheWeek" value="Сводка за неделю, начиная с"/>
+	<string name="NextStipendDay" value="Дата очередного жалования:"/>
+	<string name="GroupPlanningDate">
+		[day,datetime,utc].[mthnum,datetime,utc].[year,datetime,utc]
+	</string>
+	<string name="GroupIndividualShare" value="Для группы       Персонально Совместно"/>
+	<string name="GroupColumn" value="Группа"/>
+	<string name="Balance">
+		Баланс
+	</string>
+	<string name="Credits">
+		Расход
+	</string>
+	<string name="Debits">
+		Приход
+	</string>
+	<string name="Total">
+		Итого
+	</string>
+	<string name="NoGroupDataFound">
+		Не найдены данные для группы
+	</string>
+	<string name="IMParentEstate">
+		родовое землевладение
+	</string>
+	<string name="IMMainland">
+		материк
+	</string>
+	<string name="IMTeen">
+		подростковый
+	</string>
+	<string name="Anyone">
+		все
+	</string>
+	<string name="RegionInfoError">
+		ошибка
+	</string>
+	<string name="RegionInfoAllEstatesOwnedBy">
+		все землевладения пользователя [OWNER]
+	</string>
+	<string name="RegionInfoAllEstatesYouOwn">
+		все ваши землевладения
+	</string>
+	<string name="RegionInfoAllEstatesYouManage">
+		все землевладения пользователя [OWNER], которыми вы управляете
+	</string>
+	<string name="RegionInfoAllowedResidents">
+		Допущенные жители: ([ALLOWEDAGENTS], не более [MAXACCESS])
+	</string>
+	<string name="RegionInfoAllowedGroups">
+		Допущенные группы: ([ALLOWEDGROUPS], не более [MAXACCESS])
+	</string>
+	<string name="ScriptLimitsParcelScriptMemory">
+		Память под скрипты на участке
+	</string>
+	<string name="ScriptLimitsParcelsOwned">
+		Участков в списке: [PARCELS]
+	</string>
+	<string name="ScriptLimitsMemoryUsed">
+		Используется памяти: [COUNT] КБ из [MAX] КБ; доступно: [AVAILABLE] КБ
+	</string>
+	<string name="ScriptLimitsMemoryUsedSimple">
+		Используется памяти: [COUNT] КБ
+	</string>
+	<string name="ScriptLimitsParcelScriptURLs">
+		URL-адреса скрипта участков
+	</string>
+	<string name="ScriptLimitsURLsUsed">
+		Используется URL-адресов: [COUNT] из [MAX] (доступно: [AVAILABLE])
+	</string>
+	<string name="ScriptLimitsURLsUsedSimple">
+		Используется URL-адресов: [COUNT]
+	</string>
+	<string name="ScriptLimitsRequestError">
+		Ошибка при запросе данных
+	</string>
+	<string name="ScriptLimitsRequestNoParcelSelected">
+		Участок не выбран
+	</string>
+	<string name="ScriptLimitsRequestWrongRegion">
+		Ошибка. Сведения о скрипте доступны только в текущем регионе
+	</string>
+	<string name="ScriptLimitsRequestWaiting">
+		Получение данных...
+	</string>
+	<string name="ScriptLimitsRequestDontOwnParcel">
+		У вас нет прав для исследования этого участка
+	</string>
+	<string name="SITTING_ON">
+		Сидит на
+	</string>
+	<string name="ATTACH_CHEST">
+		Грудь
+	</string>
+	<string name="ATTACH_HEAD">
+		Голова
+	</string>
+	<string name="ATTACH_LSHOULDER">
+		Левое плечо
+	</string>
+	<string name="ATTACH_RSHOULDER">
+		Правое плечо
+	</string>
+	<string name="ATTACH_LHAND">
+		Левая кисть
+	</string>
+	<string name="ATTACH_RHAND">
+		Правая кисть
+	</string>
+	<string name="ATTACH_LFOOT">
+		Левая ступня
+	</string>
+	<string name="ATTACH_RFOOT">
+		Правая ступня
+	</string>
+	<string name="ATTACH_BACK">
+		Спина
+	</string>
+	<string name="ATTACH_PELVIS">
+		Таз
+	</string>
+	<string name="ATTACH_MOUTH">
+		Рот
+	</string>
+	<string name="ATTACH_CHIN">
+		Подбородок
+	</string>
+	<string name="ATTACH_LEAR">
+		Левое ухо
+	</string>
+	<string name="ATTACH_REAR">
+		Правое ухо
+	</string>
+	<string name="ATTACH_LEYE">
+		Левый глаз
+	</string>
+	<string name="ATTACH_REYE">
+		Правый глаз
+	</string>
+	<string name="ATTACH_NOSE">
+		Нос
+	</string>
+	<string name="ATTACH_RUARM">
+		Правое плечо
+	</string>
+	<string name="ATTACH_RLARM">
+		Правое предплечье
+	</string>
+	<string name="ATTACH_LUARM">
+		Левое плечо
+	</string>
+	<string name="ATTACH_LLARM">
+		Левое предплечье
+	</string>
+	<string name="ATTACH_RHIP">
+		Правое бедро
+	</string>
+	<string name="ATTACH_RULEG">
+		Правое колено
+	</string>
+	<string name="ATTACH_RLLEG">
+		Правая голень
+	</string>
+	<string name="ATTACH_LHIP">
+		Левое бедро
+	</string>
+	<string name="ATTACH_LULEG">
+		Левое колено
+	</string>
+	<string name="ATTACH_LLLEG">
+		Левая голень
+	</string>
+	<string name="ATTACH_BELLY">
+		Живот
+	</string>
+	<string name="ATTACH_RPEC">
+		Правая грудь
+	</string>
+	<string name="ATTACH_LPEC">
+		Левая грудь
+	</string>
+	<string name="ATTACH_HUD_CENTER_2">
+		Данные в игре в центре 2
+	</string>
+	<string name="ATTACH_HUD_TOP_RIGHT">
+		Данные в игре вверху справа
+	</string>
+	<string name="ATTACH_HUD_TOP_CENTER">
+		Данные в игре вверху в центре
+	</string>
+	<string name="ATTACH_HUD_TOP_LEFT">
+		Данные в игре вверху слева
+	</string>
+	<string name="ATTACH_HUD_CENTER_1">
+		Данные в игре в центре 1
+	</string>
+	<string name="ATTACH_HUD_BOTTOM_LEFT">
+		Данные в игре внизу слева
+	</string>
+	<string name="ATTACH_HUD_BOTTOM">
+		Данные в игре внизу
+	</string>
+	<string name="ATTACH_HUD_BOTTOM_RIGHT">
+		Данные в игре внизу справа
+	</string>
+	<string name="CursorPos">
+		Строка [LINE], столбец [COLUMN]
+	</string>
+	<string name="PanelDirCountFound">
+		Найдено: [COUNT]
+	</string>
+	<string name="PanelDirTimeStr">
+		[hour,datetime,slt]:[min,datetime,slt]
+	</string>
+	<string name="PanelDirEventsDateText">
+		[day,datetime,slt].[mthnum,datetime,slt]
+	</string>
+	<string name="PanelContentsTooltip">
+		Подключение к объекту
+	</string>
+	<string name="PanelContentsNewScript">
+		Новый скрипт
+	</string>
+	<string name="BusyModeResponseDefault">
+		У адресата вашего сообщения задан статус «Не беспокоить».  Ваше сообщение все равно будет отображено на панели IM для просмотра позже.
+	</string>
+	<string name="MuteByName">
+		(по имени)
+	</string>
+	<string name="MuteAgent">
+		(для жителя)
+	</string>
+	<string name="MuteObject">
+		(для объекта)
+	</string>
+	<string name="MuteGroup">
+		(для группы)
+	</string>
+	<string name="MuteExternal">
+		(внешний)
+	</string>
+	<string name="RegionNoCovenant">
+		Нет соглашения для этого землевладения.
+	</string>
+	<string name="RegionNoCovenantOtherOwner">
+		Нет соглашения для этого землевладения. Земля в этом землевладении продается его владельцем, а не компанией Linden Lab.  Чтобы узнать подробности о продаже, обратитесь к землевладельцу.
+	</string>
+	<string name="covenant_last_modified" value="Дата последнего изменения:"/>
+	<string name="none_text" value="(нет)"/>
+	<string name="never_text" value="(никогда)"/>
+	<string name="GroupOwned">
+		Собственность группы
+	</string>
+	<string name="Public">
+		Общая собственность
+	</string>
+	<string name="LocalSettings">
+		Локальные настройки
+	</string>
+	<string name="RegionSettings">
+		Региональные настройки
+	</string>
+	<string name="ClassifiedClicksTxt">
+		Щелчки: телепорт [TELEPORT], карта [MAP], профиль [PROFILE]
+	</string>
+	<string name="ClassifiedUpdateAfterPublish">
+		(будет обновлено после публикации)
+	</string>
+	<string name="NoPicksClassifiedsText">
+		Вы не создали подборки или рекламы. Нажмите кнопку со знаком «плюс» ниже, чтобы создать подборку или рекламу
+	</string>
+	<string name="NoAvatarPicksClassifiedsText">
+		У жителя нет подборки или рекламы
+	</string>
+	<string name="PicksClassifiedsLoadingText">
+		Загрузка...
+	</string>
+	<string name="MultiPreviewTitle">
+		Предварительный просмотр
+	</string>
+	<string name="MultiPropertiesTitle">
+		Свойства
+	</string>
+	<string name="InvOfferAnObjectNamed">
+		Объект с именем
+	</string>
+	<string name="InvOfferOwnedByGroup">
+		принадлежит группе
+	</string>
+	<string name="InvOfferOwnedByUnknownGroup">
+		принадлежит известной группе
+	</string>
+	<string name="InvOfferOwnedBy">
+		принадлежит
+	</string>
+	<string name="InvOfferOwnedByUnknownUser">
+		принадлежит неизвестному пользователю
+	</string>
+	<string name="InvOfferGaveYou">
+		дал(а) вам
+	</string>
+	<string name="InvOfferDecline">
+		Вы не приняли [DESC] от жителя &lt;nolink&gt;[NAME]&lt;/nolink&gt;.
+	</string>
+	<string name="GroupMoneyTotal">
+		Итого
+	</string>
+	<string name="GroupMoneyBought">
+		куплено
+	</string>
+	<string name="GroupMoneyPaidYou">
+		уплачено вам
+	</string>
+	<string name="GroupMoneyPaidInto">
+		уплачено в
+	</string>
+	<string name="GroupMoneyBoughtPassTo">
+		куплен пропуск в
+	</string>
+	<string name="GroupMoneyPaidFeeForEvent">
+		уплачено за событие
+	</string>
+	<string name="GroupMoneyPaidPrizeForEvent">
+		выплачено призовых за событие
+	</string>
+	<string name="GroupMoneyBalance">
+		Баланс
+	</string>
+	<string name="GroupMoneyCredits">
+		Расход
+	</string>
+	<string name="GroupMoneyDebits">
+		Приход
+	</string>
+	<string name="GroupMoneyDate">
+		[weekday,datetime,utc], [day,datetime,utc] [mth,datetime,utc] [year,datetime,utc]
+	</string>
+	<string name="ViewerObjectContents">
+		Контент
+	</string>
+	<string name="AcquiredItems">
+		Купленные вещи
+	</string>
+	<string name="Cancel">
+		Отмена
+	</string>
+	<string name="UploadingCosts">
+		Передача [NAME] стоит L$[AMOUNT]
+	</string>
+	<string name="BuyingCosts">
+		Стоимость покупки: L$[AMOUNT]
+	</string>
+	<string name="UnknownFileExtension">
+		Неизвестное расширение файла .%s
+Ожидаются расширения: WAV, TGA, BMP, JPG, JPEG или BVH
+	</string>
+	<string name="MuteObject2">
+		Заблокировать
+	</string>
+	<string name="MuteAvatar">
+		Заблокировать
+	</string>
+	<string name="UnmuteObject">
+		Разблокировать
+	</string>
+	<string name="UnmuteAvatar">
+		Разблокировать
+	</string>
+	<string name="AddLandmarkNavBarMenu">
+		Добавить в мои закладки...
+	</string>
+	<string name="EditLandmarkNavBarMenu">
+		Изменить мою закладку...
+	</string>
+	<string name="accel-mac-control">
+		⌃
+	</string>
+	<string name="accel-mac-command">
+		⌘
+	</string>
+	<string name="accel-mac-option">
+		⌥
+	</string>
+	<string name="accel-mac-shift">
+		⇧
+	</string>
+	<string name="accel-win-control">
+		CTRL+
+	</string>
+	<string name="accel-win-alt">
+		ALT+
+	</string>
+	<string name="accel-win-shift">
+		SHIFT+
+	</string>
+	<string name="FileSaved">
+		Файл сохранен
+	</string>
+	<string name="Receiving">
+		Получение
+	</string>
+	<string name="AM">
+		до полудня
+	</string>
+	<string name="PM">
+		после полудня
+	</string>
+	<string name="PST">
+		Тихоокеанское время
+	</string>
+	<string name="PDT">
+		Летнее тихоокеанское время
+	</string>
+	<string name="Direction_Forward">
+		Вперед
+	</string>
+	<string name="Direction_Left">
+		Влево
+	</string>
+	<string name="Direction_Right">
+		Вправо
+	</string>
+	<string name="Direction_Back">
+		Назад
+	</string>
+	<string name="Direction_North">
+		Север
+	</string>
+	<string name="Direction_South">
+		Юг
+	</string>
+	<string name="Direction_West">
+		Запад
+	</string>
+	<string name="Direction_East">
+		Восток
+	</string>
+	<string name="Direction_Up">
+		Вверх
+	</string>
+	<string name="Direction_Down">
+		Вниз
+	</string>
+	<string name="Any Category">
+		Все категории
+	</string>
+	<string name="Shopping">
+		Покупки
+	</string>
+	<string name="Land Rental">
+		Земельная рента
+	</string>
+	<string name="Property Rental">
+		Аренда имущества
+	</string>
+	<string name="Special Attraction">
+		Особое событие
+	</string>
+	<string name="New Products">
+		Новые продукты
+	</string>
+	<string name="Employment">
+		Род занятий
+	</string>
+	<string name="Wanted">
+		Хочу найти
+	</string>
+	<string name="Service">
+		Услуги
+	</string>
+	<string name="Personal">
+		Личное сообщение
+	</string>
+	<string name="None">
+		Нет
+	</string>
+	<string name="Linden Location">
+		Место Linden
+	</string>
+	<string name="Adult">
+		Для взрослых
+	</string>
+	<string name="Arts&amp;Culture">
+		Искусство и культура
+	</string>
+	<string name="Business">
+		Бизнес
+	</string>
+	<string name="Educational">
+		Образование
+	</string>
+	<string name="Gaming">
+		Игры
+	</string>
+	<string name="Hangout">
+		Места встреч
+	</string>
+	<string name="Newcomer Friendly">
+		Для новичков
+	</string>
+	<string name="Parks&amp;Nature">
+		Парки и природа
+	</string>
+	<string name="Residential">
+		Проживание
+	</string>
+	<string name="Stage">
+		Стадия
+	</string>
+	<string name="Other">
+		Другое
+	</string>
+	<string name="Rental">
+		Аренда
+	</string>
+	<string name="Any">
+		Все
+	</string>
+	<string name="You">
+		Ð’Ñ‹
+	</string>
+	<string name=":">
+		:
+	</string>
+	<string name=",">
+		,
+	</string>
+	<string name="...">
+		...
+	</string>
+	<string name="***">
+		***
+	</string>
+	<string name="(">
+		(
+	</string>
+	<string name=")">
+		)
+	</string>
+	<string name=".">
+		.
+	</string>
+	<string name="&apos;">
+		&apos;
+	</string>
+	<string name="---">
+		---
+	</string>
+	<string name="Multiple Media">
+		Несколько источников мультимедиа
+	</string>
+	<string name="Play Media">
+		Мультимедиа – воспроизведение/пауза
+	</string>
+	<string name="MBCmdLineError">
+		Ошибка при анализе командной строки.
+См.: http://wiki.secondlife.com/wiki/Client_parameters
+Ошибка:
+	</string>
+	<string name="MBCmdLineUsg">
+		Использование командной строки [APP_NAME]:
+	</string>
+	<string name="MBUnableToAccessFile">
+		Приложению [APP_NAME] не удается получить доступ к нужному файлу.
+Возможно, выполняется несколько копий или в системе неправильно открыт файл.
+Если это сообщение по-прежнему будет отображаться, перезагрузите компьютер и повторите попытку.
+Если и это не поможет, возможно, придется повторно установить приложение [APP_NAME].
+	</string>
+	<string name="MBFatalError">
+		Неустранимая ошибка
+	</string>
+	<string name="MBRequiresAltiVec">
+		Для работы [APP_NAME] необходим процессор с поддержкой AltiVec (версии G4 или более поздней).
+	</string>
+	<string name="MBAlreadyRunning">
+		[APP_NAME] уже выполняется.
+Поищите значок программы на панели задач.
+Если это сообщение по-прежнему будет отображаться, перезагрузите компьютер.
+	</string>
+	<string name="MBFrozenCrashed">
+		По-видимому, при предыдущем запуске приложения [APP_NAME] оно зависло или в нем возник сбой.
+Отправить отчет о сбое?
+	</string>
+	<string name="MBAlert">
+		Уведомление
+	</string>
+	<string name="MBNoDirectX">
+		Приложению [APP_NAME] не удается обнаружить DirectX 9.0b или более поздних версий.
+В приложении [APP_NAME] используется DirectX для проверки оборудования и выявления устаревших драйверов, из-за которых может снизиться стабильность работы и быстродействие, а также возникнуть сбои.  Настоятельно рекомендуется установить DirectX 9.0b, хотя приложение [APP_NAME] работает и без этого компонента.
+Продолжить?
+	</string>
+	<string name="MBWarning">
+		Внимание!
+	</string>
+	<string name="MBNoAutoUpdate">
+		В ОС Linux автоматическое обновление еще не реализовано.
+Загрузите новую версию на сайте www.secondlife.com.
+	</string>
+	<string name="MBRegClassFailed">
+		Ошибка RegisterClass
+	</string>
+	<string name="MBError">
+		Ошибка
+	</string>
+	<string name="MBFullScreenErr">
+		Невозможна работа в полноэкранном режиме на экране [WIDTH] x [HEIGHT].
+Запущено в окне.
+	</string>
+	<string name="MBDestroyWinFailed">
+		Ошибка завершения работы при удалении окна (сбой функции DestroyWindow())
+	</string>
+	<string name="MBShutdownErr">
+		Ошибка завершения работы
+	</string>
+	<string name="MBDevContextErr">
+		Не удается создать контекст устройства GL
+	</string>
+	<string name="MBPixelFmtErr">
+		Не удается найти подходящий формат пикселей
+	</string>
+	<string name="MBPixelFmtDescErr">
+		Не удается получить описание формата пикселей
+	</string>
+	<string name="MBTrueColorWindow">
+		Для работы [APP_NAME] необходим режим True Color (32 бита).
+Задайте в настройках дисплея 32-битный режим цвета.
+	</string>
+	<string name="MBAlpha">
+		Не удается запустить [APP_NAME] из-за отсутствия доступа к 8-битному альфа-каналу.  Обычно эта проблема возникает из-за неполадок с драйвером видеокарты.
+Установите новые драйверы видеокарты.
+Также задайте для монитора 32-битный режим True Color (Панель управления &gt; Экран &gt; Параметры).
+Если это сообщение продолжает отображаться, обратитесь на сайт [SUPPORT_SITE].
+	</string>
+	<string name="MBPixelFmtSetErr">
+		Не удается задать формат пикселей
+	</string>
+	<string name="MBGLContextErr">
+		Не удается создать контекст визуализации GL
+	</string>
+	<string name="MBGLContextActErr">
+		Не удается активировать контекст визуализации GL
+	</string>
+	<string name="MBVideoDrvErr">
+		Не удается запустить приложение [APP_NAME], поскольку драйверы видеокарты неправильно установлены, устарели или предназначены для оборудования, которое не поддерживается. Установите или переустановите последние драйверы видеокарты.
+Если это сообщение продолжает отображаться, обратитесь на сайт [SUPPORT_SITE].
+	</string>
+	<string name="5 O&apos;Clock Shadow">
+		Жидкие
+	</string>
+	<string name="All White">
+		Полностью белые
+	</string>
+	<string name="Anime Eyes">
+		Глаза как в аниме
+	</string>
+	<string name="Arced">
+		Дугой
+	</string>
+	<string name="Arm Length">
+		Длина рук
+	</string>
+	<string name="Attached">
+		Прикреплено
+	</string>
+	<string name="Attached Earlobes">
+		Приросшие мочки
+	</string>
+	<string name="Back Fringe">
+		Затылок
+	</string>
+	<string name="Baggy">
+		С мешками
+	</string>
+	<string name="Bangs">
+		Челки
+	</string>
+	<string name="Beady Eyes">
+		Бусинки
+	</string>
+	<string name="Belly Size">
+		Размер живота
+	</string>
+	<string name="Big">
+		Большой
+	</string>
+	<string name="Big Butt">
+		Большой зад
+	</string>
+	<string name="Big Hair Back">
+		Пышные волосы: сзади
+	</string>
+	<string name="Big Hair Front">
+		Пышные волосы: спереди
+	</string>
+	<string name="Big Hair Top">
+		Пышные волосы: сверху
+	</string>
+	<string name="Big Head">
+		Большая голова
+	</string>
+	<string name="Big Pectorals">
+		Выпуклая грудь
+	</string>
+	<string name="Big Spikes">
+		Большие «шипы»
+	</string>
+	<string name="Black">
+		Черный
+	</string>
+	<string name="Blonde">
+		Светлый
+	</string>
+	<string name="Blonde Hair">
+		Светлые волосы
+	</string>
+	<string name="Blush">
+		Румяна
+	</string>
+	<string name="Blush Color">
+		Цвет румян
+	</string>
+	<string name="Blush Opacity">
+		Прозрачность румян
+	</string>
+	<string name="Body Definition">
+		Тип тела
+	</string>
+	<string name="Body Fat">
+		Жировая прослойка
+	</string>
+	<string name="Body Freckles">
+		Веснушки
+	</string>
+	<string name="Body Thick">
+		Полное тело
+	</string>
+	<string name="Body Thickness">
+		Полнота
+	</string>
+	<string name="Body Thin">
+		Худое тело
+	</string>
+	<string name="Bow Legged">
+		Ноги колесом
+	</string>
+	<string name="Breast Buoyancy">
+		Высота груди
+	</string>
+	<string name="Breast Cleavage">
+		Ложбинка между грудей
+	</string>
+	<string name="Breast Size">
+		Размер груди
+	</string>
+	<string name="Bridge Width">
+		Ширина переносицы
+	</string>
+	<string name="Broad">
+		Широкая
+	</string>
+	<string name="Brow Size">
+		Размер надбровных дуг
+	</string>
+	<string name="Bug Eyes">
+		Выпученные глаза
+	</string>
+	<string name="Bugged Eyes">
+		Выпученные глаза
+	</string>
+	<string name="Bulbous">
+		Картошкой
+	</string>
+	<string name="Bulbous Nose">
+		Нос картошкой
+	</string>
+	<string name="Breast Physics Mass">
+		Масса груди
+	</string>
+	<string name="Breast Physics Smoothing">
+		Гладкость груди
+	</string>
+	<string name="Breast Physics Gravity">
+		Обвислость груди
+	</string>
+	<string name="Breast Physics Drag">
+		Аэродинамика груди
+	</string>
+	<string name="Breast Physics InOut Max Effect">
+		Верхняя граница
+	</string>
+	<string name="Breast Physics InOut Spring">
+		Упругость
+	</string>
+	<string name="Breast Physics InOut Gain">
+		Отклик
+	</string>
+	<string name="Breast Physics InOut Damping">
+		Затухание
+	</string>
+	<string name="Breast Physics UpDown Max Effect">
+		Верхняя граница
+	</string>
+	<string name="Breast Physics UpDown Spring">
+		Упругость
+	</string>
+	<string name="Breast Physics UpDown Gain">
+		Отклик
+	</string>
+	<string name="Breast Physics UpDown Damping">
+		Затухание
+	</string>
+	<string name="Breast Physics LeftRight Max Effect">
+		Верхняя граница
+	</string>
+	<string name="Breast Physics LeftRight Spring">
+		Упругость
+	</string>
+	<string name="Breast Physics LeftRight Gain">
+		Отклик
+	</string>
+	<string name="Breast Physics LeftRight Damping">
+		Затухание
+	</string>
+	<string name="Belly Physics Mass">
+		Масса живота
+	</string>
+	<string name="Belly Physics Smoothing">
+		Гладкость живота
+	</string>
+	<string name="Belly Physics Gravity">
+		Обвислость живота
+	</string>
+	<string name="Belly Physics Drag">
+		Инертность живота
+	</string>
+	<string name="Belly Physics UpDown Max Effect">
+		Верхняя граница
+	</string>
+	<string name="Belly Physics UpDown Spring">
+		Упругость
+	</string>
+	<string name="Belly Physics UpDown Gain">
+		Отклик
+	</string>
+	<string name="Belly Physics UpDown Damping">
+		Затухание
+	</string>
+	<string name="Butt Physics Mass">
+		Масса зада
+	</string>
+	<string name="Butt Physics Smoothing">
+		Гладкость зада
+	</string>
+	<string name="Butt Physics Gravity">
+		Обвислость зада
+	</string>
+	<string name="Butt Physics Drag">
+		Инертность зада
+	</string>
+	<string name="Butt Physics UpDown Max Effect">
+		Верхняя граница
+	</string>
+	<string name="Butt Physics UpDown Spring">
+		Упругость
+	</string>
+	<string name="Butt Physics UpDown Gain">
+		Отклик
+	</string>
+	<string name="Butt Physics UpDown Damping">
+		Затухание
+	</string>
+	<string name="Butt Physics LeftRight Max Effect">
+		Верхняя граница
+	</string>
+	<string name="Butt Physics LeftRight Spring">
+		Упругость
+	</string>
+	<string name="Butt Physics LeftRight Gain">
+		Отклик
+	</string>
+	<string name="Butt Physics LeftRight Damping">
+		Затухание
+	</string>
+	<string name="Bushy Eyebrows">
+		Кустистые брови
+	</string>
+	<string name="Bushy Hair">
+		Пышные
+	</string>
+	<string name="Butt Size">
+		Размер зада
+	</string>
+	<string name="Butt Gravity">
+		Обвислость зада
+	</string>
+	<string name="bustle skirt">
+		Турнюр
+	</string>
+	<string name="no bustle">
+		Без турнюра
+	</string>
+	<string name="more bustle">
+		Большой турнюр
+	</string>
+	<string name="Chaplin">
+		«Чарли Чаплин»
+	</string>
+	<string name="Cheek Bones">
+		Скулы
+	</string>
+	<string name="Chest Size">
+		Размер грудной клетки
+	</string>
+	<string name="Chin Angle">
+		Угол подбородка
+	</string>
+	<string name="Chin Cleft">
+		Ямка на подбородке
+	</string>
+	<string name="Chin Curtains">
+		Шкиперская бородка
+	</string>
+	<string name="Chin Depth">
+		Толщина подбородка
+	</string>
+	<string name="Chin Heavy">
+		Мощный подбородок
+	</string>
+	<string name="Chin In">
+		Подбородок внутрь
+	</string>
+	<string name="Chin Out">
+		Подбородок наружу
+	</string>
+	<string name="Chin-Neck">
+		Переход от подбородка к шее
+	</string>
+	<string name="Clear">
+		Чистый
+	</string>
+	<string name="Cleft">
+		Ямка
+	</string>
+	<string name="Close Set Eyes">
+		Близко посаженные
+	</string>
+	<string name="Closed">
+		Закрыто
+	</string>
+	<string name="Closed Back">
+		Закрыто сзади
+	</string>
+	<string name="Closed Front">
+		Закрыто спереди
+	</string>
+	<string name="Closed Left">
+		Закрыто слева
+	</string>
+	<string name="Closed Right">
+		Закрыто справа
+	</string>
+	<string name="Coin Purse">
+		Кошелек для мелочи
+	</string>
+	<string name="Collar Back">
+		Вырез сзади
+	</string>
+	<string name="Collar Front">
+		Вырез спереди
+	</string>
+	<string name="Corner Down">
+		Уголки опущены
+	</string>
+	<string name="Corner Up">
+		Уголки подняты
+	</string>
+	<string name="Creased">
+		Измятый
+	</string>
+	<string name="Crooked Nose">
+		Искривленный нос
+	</string>
+	<string name="Cuff Flare">
+		Манжеты
+	</string>
+	<string name="Dark">
+		Темный
+	</string>
+	<string name="Dark Green">
+		Темно-зеленый
+	</string>
+	<string name="Darker">
+		Темнее
+	</string>
+	<string name="Deep">
+		Глубоко
+	</string>
+	<string name="Default Heels">
+		Стандартные каблуки
+	</string>
+	<string name="Dense">
+		Густые
+	</string>
+	<string name="Double Chin">
+		Двойной подбородок
+	</string>
+	<string name="Downturned">
+		Вниз
+	</string>
+	<string name="Duffle Bag">
+		Больше
+	</string>
+	<string name="Ear Angle">
+		Оттопыренность ушей
+	</string>
+	<string name="Ear Size">
+		Размер ушей
+	</string>
+	<string name="Ear Tips">
+		Кончики ушей
+	</string>
+	<string name="Egg Head">
+		Яйцеголовость
+	</string>
+	<string name="Eye Bags">
+		Мешки под глазами
+	</string>
+	<string name="Eye Color">
+		Цвет глаз
+	</string>
+	<string name="Eye Depth">
+		Глубина глаз
+	</string>
+	<string name="Eye Lightness">
+		Светлость глаз
+	</string>
+	<string name="Eye Opening">
+		Открытость глаз
+	</string>
+	<string name="Eye Pop">
+		Вытаращить глаз
+	</string>
+	<string name="Eye Size">
+		Размер глаз
+	</string>
+	<string name="Eye Spacing">
+		Расстояние между глазами
+	</string>
+	<string name="Eyebrow Arc">
+		Линия бровей
+	</string>
+	<string name="Eyebrow Density">
+		Густота бровей
+	</string>
+	<string name="Eyebrow Height">
+		Высота бровей
+	</string>
+	<string name="Eyebrow Points">
+		Кончики бровей
+	</string>
+	<string name="Eyebrow Size">
+		Размер бровей
+	</string>
+	<string name="Eyelash Length">
+		Длина ресниц
+	</string>
+	<string name="Eyeliner">
+		Подводка
+	</string>
+	<string name="Eyeliner Color">
+		Цвет подводки
+	</string>
+	<string name="Eyes Bugged">
+		Выпученные глаза
+	</string>
+	<string name="Face Shear">
+		Перекос лица
+	</string>
+	<string name="Facial Definition">
+		Черты лица
+	</string>
+	<string name="Far Set Eyes">
+		Широко расставленные глаза
+	</string>
+	<string name="Fat Lips">
+		Толстые губы
+	</string>
+	<string name="Female">
+		Женщина
+	</string>
+	<string name="Fingerless">
+		Без пальцев
+	</string>
+	<string name="Fingers">
+		С пальцами
+	</string>
+	<string name="Flared Cuffs">
+		С манжетами
+	</string>
+	<string name="Flat">
+		Плоские
+	</string>
+	<string name="Flat Butt">
+		Плоский зад
+	</string>
+	<string name="Flat Head">
+		Плоская голова
+	</string>
+	<string name="Flat Toe">
+		Плоский носок
+	</string>
+	<string name="Foot Size">
+		Размер ступни
+	</string>
+	<string name="Forehead Angle">
+		Наклон лба
+	</string>
+	<string name="Forehead Heavy">
+		Мощный лоб
+	</string>
+	<string name="Freckles">
+		Веснушки
+	</string>
+	<string name="Front Fringe">
+		Челка спереди
+	</string>
+	<string name="Full Back">
+		Полностью назад
+	</string>
+	<string name="Full Eyeliner">
+		Подводка полностью
+	</string>
+	<string name="Full Front">
+		Полностью наперед
+	</string>
+	<string name="Full Hair Sides">
+		Волосы по бокам
+	</string>
+	<string name="Full Sides">
+		По бокам
+	</string>
+	<string name="Glossy">
+		Блестящие
+	</string>
+	<string name="Glove Fingers">
+		Пальцы перчаток
+	</string>
+	<string name="Glove Length">
+		Длина перчаток
+	</string>
+	<string name="Hair">
+		Волосы
+	</string>
+	<string name="Hair Back">
+		Волосы: сзади
+	</string>
+	<string name="Hair Front">
+		Волосы: спереди
+	</string>
+	<string name="Hair Sides">
+		Волосы: по бокам
+	</string>
+	<string name="Hair Sweep">
+		Волосы на глаза
+	</string>
+	<string name="Hair Thickess">
+		Толщина волос
+	</string>
+	<string name="Hair Thickness">
+		Толщина волос
+	</string>
+	<string name="Hair Tilt">
+		Зачес
+	</string>
+	<string name="Hair Tilted Left">
+		Зачес назад
+	</string>
+	<string name="Hair Tilted Right">
+		Зачес вправо
+	</string>
+	<string name="Hair Volume">
+		Волосы: объем
+	</string>
+	<string name="Hand Size">
+		Размер кисти
+	</string>
+	<string name="Handlebars">
+		Длинные усы
+	</string>
+	<string name="Head Length">
+		Длина головы
+	</string>
+	<string name="Head Shape">
+		Форма головы
+	</string>
+	<string name="Head Size">
+		Размер головы
+	</string>
+	<string name="Head Stretch">
+		Вытянутость головы
+	</string>
+	<string name="Heel Height">
+		Высота каблука
+	</string>
+	<string name="Heel Shape">
+		Форма каблука
+	</string>
+	<string name="Height">
+		Рост
+	</string>
+	<string name="High">
+		Высокие
+	</string>
+	<string name="High Heels">
+		Высокий каблук
+	</string>
+	<string name="High Jaw">
+		Челюсть высоко
+	</string>
+	<string name="High Platforms">
+		Высокая платформа
+	</string>
+	<string name="High and Tight">
+		Высокий и плотный
+	</string>
+	<string name="Higher">
+		Выше
+	</string>
+	<string name="Hip Length">
+		Длина бедер
+	</string>
+	<string name="Hip Width">
+		Ширина бедер
+	</string>
+	<string name="In">
+		Внутрь
+	</string>
+	<string name="In Shdw Color">
+		Цвет внутренних теней
+	</string>
+	<string name="In Shdw Opacity">
+		Прозрачность внутр. теней
+	</string>
+	<string name="Inner Eye Corner">
+		Внутренние уголки глаз
+	</string>
+	<string name="Inner Eye Shadow">
+		Тени на внутренних уголках
+	</string>
+	<string name="Inner Shadow">
+		Внутренние тени
+	</string>
+	<string name="Jacket Length">
+		Длина пиджака
+	</string>
+	<string name="Jacket Wrinkles">
+		Смятый пиджак
+	</string>
+	<string name="Jaw Angle">
+		Угол челюсти
+	</string>
+	<string name="Jaw Jut">
+		Выступание челюсти
+	</string>
+	<string name="Jaw Shape">
+		Форма челюсти
+	</string>
+	<string name="Join">
+		Прикрепить
+	</string>
+	<string name="Jowls">
+		Щеки
+	</string>
+	<string name="Knee Angle">
+		Угол колен
+	</string>
+	<string name="Knock Kneed">
+		Колченогие
+	</string>
+	<string name="Large">
+		Больше
+	</string>
+	<string name="Large Hands">
+		Большие кисти
+	</string>
+	<string name="Left Part">
+		Левый пробор
+	</string>
+	<string name="Leg Length">
+		Длина ног
+	</string>
+	<string name="Leg Muscles">
+		Мышцы на ногах
+	</string>
+	<string name="Less">
+		Меньше
+	</string>
+	<string name="Less Body Fat">
+		Меньше жира
+	</string>
+	<string name="Less Curtains">
+		Меньше борода
+	</string>
+	<string name="Less Freckles">
+		Меньше веснушек
+	</string>
+	<string name="Less Full">
+		Менее полное
+	</string>
+	<string name="Less Gravity">
+		Меньше притяжения
+	</string>
+	<string name="Less Love">
+		Меньше
+	</string>
+	<string name="Less Muscles">
+		Меньше мышц
+	</string>
+	<string name="Less Muscular">
+		Меньше мышц
+	</string>
+	<string name="Less Rosy">
+		Меньше румян
+	</string>
+	<string name="Less Round">
+		Меньше округлости
+	</string>
+	<string name="Less Saddle">
+		Меньше
+	</string>
+	<string name="Less Square">
+		Меньше угловатости
+	</string>
+	<string name="Less Volume">
+		Меньше объема
+	</string>
+	<string name="Less soul">
+		Меньше
+	</string>
+	<string name="Lighter">
+		Светлее
+	</string>
+	<string name="Lip Cleft">
+		Ямка между губ
+	</string>
+	<string name="Lip Cleft Depth">
+		Глубина ямки
+	</string>
+	<string name="Lip Fullness">
+		Полнота губ
+	</string>
+	<string name="Lip Pinkness">
+		Розоватость губ
+	</string>
+	<string name="Lip Ratio">
+		Пропорция губ
+	</string>
+	<string name="Lip Thickness">
+		Толщина губ
+	</string>
+	<string name="Lip Width">
+		Ширина губ
+	</string>
+	<string name="Lipgloss">
+		Блеск губ
+	</string>
+	<string name="Lipstick">
+		Губная помада
+	</string>
+	<string name="Lipstick Color">
+		Цвет помады
+	</string>
+	<string name="Long">
+		Длиннее
+	</string>
+	<string name="Long Head">
+		Длинная голова
+	</string>
+	<string name="Long Hips">
+		Длинные бедра
+	</string>
+	<string name="Long Legs">
+		Длинные ноги
+	</string>
+	<string name="Long Neck">
+		Длинная шея
+	</string>
+	<string name="Long Pigtails">
+		Длинные хвосты по бокам
+	</string>
+	<string name="Long Ponytail">
+		Длинный хвост сзади
+	</string>
+	<string name="Long Torso">
+		Длинный торс
+	</string>
+	<string name="Long arms">
+		Длинные руки
+	</string>
+	<string name="Loose Pants">
+		Свободные брюки
+	</string>
+	<string name="Loose Shirt">
+		Свободная рубашка
+	</string>
+	<string name="Loose Sleeves">
+		Свободные рукава
+	</string>
+	<string name="Love Handles">
+		Отложения на талии
+	</string>
+	<string name="Low">
+		Низкие
+	</string>
+	<string name="Low Heels">
+		Низкий каблук
+	</string>
+	<string name="Low Jaw">
+		Челюсть низко
+	</string>
+	<string name="Low Platforms">
+		Низкая платформа
+	</string>
+	<string name="Low and Loose">
+		Низкий и свободный
+	</string>
+	<string name="Lower">
+		Ниже
+	</string>
+	<string name="Lower Bridge">
+		Спинка носа
+	</string>
+	<string name="Lower Cheeks">
+		Щеки ниже
+	</string>
+	<string name="Male">
+		Мужчина
+	</string>
+	<string name="Middle Part">
+		Пробор по центру
+	</string>
+	<string name="More">
+		Больше
+	</string>
+	<string name="More Blush">
+		Больше румян
+	</string>
+	<string name="More Body Fat">
+		Больше жира
+	</string>
+	<string name="More Curtains">
+		Больше борода
+	</string>
+	<string name="More Eyeshadow">
+		Больше теней
+	</string>
+	<string name="More Freckles">
+		Больше веснушек
+	</string>
+	<string name="More Full">
+		Более полное
+	</string>
+	<string name="More Gravity">
+		Большее притяжение
+	</string>
+	<string name="More Lipstick">
+		Больше помады
+	</string>
+	<string name="More Love">
+		Больше
+	</string>
+	<string name="More Lower Lip">
+		Больше нижняя губа
+	</string>
+	<string name="More Muscles">
+		Больше мышц
+	</string>
+	<string name="More Muscular">
+		Больше мышц
+	</string>
+	<string name="More Rosy">
+		Больше румянца
+	</string>
+	<string name="More Round">
+		Больше округлости
+	</string>
+	<string name="More Saddle">
+		Больше
+	</string>
+	<string name="More Sloped">
+		Более наклонный
+	</string>
+	<string name="More Square">
+		Более квадратная
+	</string>
+	<string name="More Upper Lip">
+		Больше верхняя губа
+	</string>
+	<string name="More Vertical">
+		Более вертикальный
+	</string>
+	<string name="More Volume">
+		Больше объема
+	</string>
+	<string name="More soul">
+		Больше
+	</string>
+	<string name="Moustache">
+		Усы
+	</string>
+	<string name="Mouth Corner">
+		Угол рта
+	</string>
+	<string name="Mouth Position">
+		Положение рта
+	</string>
+	<string name="Mowhawk">
+		Ирокез
+	</string>
+	<string name="Muscular">
+		Мускулистое
+	</string>
+	<string name="Mutton Chops">
+		Бакенбарды
+	</string>
+	<string name="Nail Polish">
+		Лак для ногтей
+	</string>
+	<string name="Nail Polish Color">
+		Цвет лака
+	</string>
+	<string name="Narrow">
+		Узко
+	</string>
+	<string name="Narrow Back">
+		Узко сзади
+	</string>
+	<string name="Narrow Front">
+		Узкий перед
+	</string>
+	<string name="Narrow Lips">
+		Узкие губы
+	</string>
+	<string name="Natural">
+		Естественный
+	</string>
+	<string name="Neck Length">
+		Длина шеи
+	</string>
+	<string name="Neck Thickness">
+		Толщина шеи
+	</string>
+	<string name="No Blush">
+		Без румян
+	</string>
+	<string name="No Eyeliner">
+		Без подводки
+	</string>
+	<string name="No Eyeshadow">
+		Без теней
+	</string>
+	<string name="No Lipgloss">
+		Без блеска
+	</string>
+	<string name="No Lipstick">
+		Без помады
+	</string>
+	<string name="No Part">
+		Без пробора
+	</string>
+	<string name="No Polish">
+		Без лака
+	</string>
+	<string name="No Red">
+		Не красные
+	</string>
+	<string name="No Spikes">
+		Без «шипов»
+	</string>
+	<string name="No White">
+		Нет белого
+	</string>
+	<string name="No Wrinkles">
+		Без морщин
+	</string>
+	<string name="Normal Lower">
+		Ниже обычного
+	</string>
+	<string name="Normal Upper">
+		Выше обычного
+	</string>
+	<string name="Nose Left">
+		Нос влево
+	</string>
+	<string name="Nose Right">
+		Нос вправо
+	</string>
+	<string name="Nose Size">
+		Размер носа
+	</string>
+	<string name="Nose Thickness">
+		Толщина носа
+	</string>
+	<string name="Nose Tip Angle">
+		Загнутость кончика носа
+	</string>
+	<string name="Nose Tip Shape">
+		Форма кончика носа
+	</string>
+	<string name="Nose Width">
+		Ширина носа
+	</string>
+	<string name="Nostril Division">
+		Перегородка
+	</string>
+	<string name="Nostril Width">
+		Ширина ноздрей
+	</string>
+	<string name="Opaque">
+		Непрозрачный
+	</string>
+	<string name="Open">
+		Открыто
+	</string>
+	<string name="Open Back">
+		Открыто сзади
+	</string>
+	<string name="Open Front">
+		Открыто спереди
+	</string>
+	<string name="Open Left">
+		Открыто слева
+	</string>
+	<string name="Open Right">
+		Открыто справа
+	</string>
+	<string name="Orange">
+		Оранжевый
+	</string>
+	<string name="Out">
+		Наружу
+	</string>
+	<string name="Out Shdw Color">
+		Цвет внешних теней
+	</string>
+	<string name="Out Shdw Opacity">
+		Прозрачность внеш. теней
+	</string>
+	<string name="Outer Eye Corner">
+		Внешние уголки глаз
+	</string>
+	<string name="Outer Eye Shadow">
+		Тени во внешних уголках
+	</string>
+	<string name="Outer Shadow">
+		Внешние тени
+	</string>
+	<string name="Overbite">
+		Глубокий прикус
+	</string>
+	<string name="Package">
+		Гульфик
+	</string>
+	<string name="Painted Nails">
+		Покрашенные
+	</string>
+	<string name="Pale">
+		Бледный
+	</string>
+	<string name="Pants Crotch">
+		Шаг
+	</string>
+	<string name="Pants Fit">
+		Облегающие брюки
+	</string>
+	<string name="Pants Length">
+		Длина
+	</string>
+	<string name="Pants Waist">
+		Талия брюк
+	</string>
+	<string name="Pants Wrinkles">
+		Смятость брюк
+	</string>
+	<string name="Part">
+		Пробор
+	</string>
+	<string name="Part Bangs">
+		Челка с пробором
+	</string>
+	<string name="Pectorals">
+		Грудные мышцы
+	</string>
+	<string name="Pigment">
+		Пигментация
+	</string>
+	<string name="Pigtails">
+		Хвосты по бокам
+	</string>
+	<string name="Pink">
+		Розовый
+	</string>
+	<string name="Pinker">
+		Розовее
+	</string>
+	<string name="Platform Height">
+		Высота платформы
+	</string>
+	<string name="Platform Width">
+		Ширина платформы
+	</string>
+	<string name="Pointy">
+		Острые
+	</string>
+	<string name="Pointy Heels">
+		Острый каблук
+	</string>
+	<string name="Ponytail">
+		Хвост сзади
+	</string>
+	<string name="Poofy Skirt">
+		Пышная юбка
+	</string>
+	<string name="Pop Left Eye">
+		Левый глаз
+	</string>
+	<string name="Pop Right Eye">
+		Правый глаз
+	</string>
+	<string name="Puffy">
+		Пухлые
+	</string>
+	<string name="Puffy Eyelids">
+		Припухлость век
+	</string>
+	<string name="Rainbow Color">
+		Цвета радуги
+	</string>
+	<string name="Red Hair">
+		Рыжие волосы
+	</string>
+	<string name="Regular">
+		Обычное
+	</string>
+	<string name="Right Part">
+		Правый пробор
+	</string>
+	<string name="Rosy Complexion">
+		Розовое лицо
+	</string>
+	<string name="Round">
+		Круглое
+	</string>
+	<string name="Ruddiness">
+		Румянец
+	</string>
+	<string name="Ruddy">
+		Румяный
+	</string>
+	<string name="Rumpled Hair">
+		Взъерошенные
+	</string>
+	<string name="Saddle Bags">
+		Галифе
+	</string>
+	<string name="Scrawny Leg">
+		Сухопарая нога
+	</string>
+	<string name="Separate">
+		Разделить
+	</string>
+	<string name="Shallow">
+		Мелко
+	</string>
+	<string name="Shear Back">
+		Скос сзади
+	</string>
+	<string name="Shear Face">
+		Перекос лица
+	</string>
+	<string name="Shear Front">
+		Скос спереди
+	</string>
+	<string name="Shear Left Up">
+		Скос влево вверх
+	</string>
+	<string name="Shear Right Up">
+		Скос вправо вверх
+	</string>
+	<string name="Sheared Back">
+		Уменьшено сзади
+	</string>
+	<string name="Sheared Front">
+		Уменьшено спереди
+	</string>
+	<string name="Shift Left">
+		Сдвинуть влево
+	</string>
+	<string name="Shift Mouth">
+		Сдвинуть рот
+	</string>
+	<string name="Shift Right">
+		Сдвинуть вправо
+	</string>
+	<string name="Shirt Bottom">
+		Низ рубашки
+	</string>
+	<string name="Shirt Fit">
+		Облегание рубашки
+	</string>
+	<string name="Shirt Wrinkles">
+		Помятость рубашки
+	</string>
+	<string name="Shoe Height">
+		Высота обуви
+	</string>
+	<string name="Short">
+		Ниже
+	</string>
+	<string name="Short Arms">
+		Короткие руки
+	</string>
+	<string name="Short Legs">
+		Короткие ноги
+	</string>
+	<string name="Short Neck">
+		Короткая шея
+	</string>
+	<string name="Short Pigtails">
+		Короткие хвосты по бокам
+	</string>
+	<string name="Short Ponytail">
+		Короткий хвост сзади
+	</string>
+	<string name="Short Sideburns">
+		Короткие баки
+	</string>
+	<string name="Short Torso">
+		Короткий торс
+	</string>
+	<string name="Short hips">
+		Короткие бедра
+	</string>
+	<string name="Shoulders">
+		Плечи
+	</string>
+	<string name="Side Fringe">
+		Челка набок
+	</string>
+	<string name="Sideburns">
+		Бакенбарды
+	</string>
+	<string name="Sides Hair">
+		Волосы по бокам
+	</string>
+	<string name="Sides Hair Down">
+		Волосы по бокам внизу
+	</string>
+	<string name="Sides Hair Up">
+		Волосы по бокам вверху
+	</string>
+	<string name="Skinny Neck">
+		Худая шея
+	</string>
+	<string name="Skirt Fit">
+		Облегающая юбка
+	</string>
+	<string name="Skirt Length">
+		Длина юбки
+	</string>
+	<string name="Slanted Forehead">
+		Наклонный лоб
+	</string>
+	<string name="Sleeve Length">
+		Длина рукавов
+	</string>
+	<string name="Sleeve Looseness">
+		Ширина рукавов
+	</string>
+	<string name="Slit Back">
+		Разрез: сзади
+	</string>
+	<string name="Slit Front">
+		Разрез: спереди
+	</string>
+	<string name="Slit Left">
+		Разрез: слева
+	</string>
+	<string name="Slit Right">
+		Разрез: справа
+	</string>
+	<string name="Small">
+		Меньше
+	</string>
+	<string name="Small Hands">
+		Маленькие кисти
+	</string>
+	<string name="Small Head">
+		Маленькая голова
+	</string>
+	<string name="Smooth">
+		Гладко
+	</string>
+	<string name="Smooth Hair">
+		Приглаженные
+	</string>
+	<string name="Socks Length">
+		Длина носков
+	</string>
+	<string name="Soulpatch">
+		Эспаньолка
+	</string>
+	<string name="Sparse">
+		Жидкие
+	</string>
+	<string name="Spiked Hair">
+		Прическа «шипами»
+	</string>
+	<string name="Square">
+		Квадратный
+	</string>
+	<string name="Square Toe">
+		Квадратный носок
+	</string>
+	<string name="Squash Head">
+		Голова-тыква
+	</string>
+	<string name="Stretch Head">
+		Вытянутость головы
+	</string>
+	<string name="Sunken">
+		Впалые
+	</string>
+	<string name="Sunken Chest">
+		Впалая грудь
+	</string>
+	<string name="Sunken Eyes">
+		Впалые глаза
+	</string>
+	<string name="Sweep Back">
+		Зачесанные назад
+	</string>
+	<string name="Sweep Forward">
+		Зачесанные вперед
+	</string>
+	<string name="Tall">
+		Выше
+	</string>
+	<string name="Taper Back">
+		Конус сзади
+	</string>
+	<string name="Taper Front">
+		Конус спереди
+	</string>
+	<string name="Thick Heels">
+		Широкий каблук
+	</string>
+	<string name="Thick Neck">
+		Толстая шея
+	</string>
+	<string name="Thick Toe">
+		Толстый носок
+	</string>
+	<string name="Thin">
+		Тонкий
+	</string>
+	<string name="Thin Eyebrows">
+		Тонкие брови
+	</string>
+	<string name="Thin Lips">
+		Тонкие губы
+	</string>
+	<string name="Thin Nose">
+		Тонкий нос
+	</string>
+	<string name="Tight Chin">
+		Тонкий подбородок
+	</string>
+	<string name="Tight Cuffs">
+		Манжеты на резинке
+	</string>
+	<string name="Tight Pants">
+		Облегающие брюки
+	</string>
+	<string name="Tight Shirt">
+		Облегающая рубашка
+	</string>
+	<string name="Tight Skirt">
+		Облегающая юбка
+	</string>
+	<string name="Tight Sleeves">
+		Облегающие рукава
+	</string>
+	<string name="Toe Shape">
+		Форма носка
+	</string>
+	<string name="Toe Thickness">
+		Толщина носка
+	</string>
+	<string name="Torso Length">
+		Длина торса
+	</string>
+	<string name="Torso Muscles">
+		Мускулистость торса
+	</string>
+	<string name="Torso Scrawny">
+		Сухопарость торса
+	</string>
+	<string name="Unattached">
+		Не прикреплено
+	</string>
+	<string name="Uncreased">
+		Без складок
+	</string>
+	<string name="Underbite">
+		Мезиальный прикус
+	</string>
+	<string name="Unnatural">
+		Неестественный
+	</string>
+	<string name="Upper Bridge">
+		Переносица
+	</string>
+	<string name="Upper Cheeks">
+		Щеки выше
+	</string>
+	<string name="Upper Chin Cleft">
+		Ямка на подбородке выше
+	</string>
+	<string name="Upper Eyelid Fold">
+		Складка верхнего века
+	</string>
+	<string name="Upturned">
+		Вверх
+	</string>
+	<string name="Very Red">
+		Очень красные
+	</string>
+	<string name="Waist Height">
+		Высота талии
+	</string>
+	<string name="Well-Fed">
+		Упитанные
+	</string>
+	<string name="White Hair">
+		Белые волосы
+	</string>
+	<string name="Wide">
+		Широко
+	</string>
+	<string name="Wide Back">
+		Широко сзади
+	</string>
+	<string name="Wide Front">
+		Широкий перед
+	</string>
+	<string name="Wide Lips">
+		Широкие губы
+	</string>
+	<string name="Wild">
+		Безумный
+	</string>
+	<string name="Wrinkles">
+		Складки
+	</string>
+	<string name="LocationCtrlAddLandmarkTooltip">
+		Добавить в закладки
+	</string>
+	<string name="LocationCtrlEditLandmarkTooltip">
+		Изменить закладку
+	</string>
+	<string name="LocationCtrlInfoBtnTooltip">
+		Посмотреть подробную информацию о текущем месте
+	</string>
+	<string name="LocationCtrlComboBtnTooltip">
+		Моя история посещений
+	</string>
+	<string name="LocationCtrlForSaleTooltip">
+		Купить эту землю
+	</string>
+	<string name="LocationCtrlVoiceTooltip">
+		Голосовое общение здесь недоступно
+	</string>
+	<string name="LocationCtrlFlyTooltip">
+		Полеты запрещены
+	</string>
+	<string name="LocationCtrlPushTooltip">
+		Нельзя толкаться
+	</string>
+	<string name="LocationCtrlBuildTooltip">
+		Строительство/выкладывание объектов не разрешено
+	</string>
+	<string name="LocationCtrlScriptsTooltip">
+		Запускать скрипты запрещено
+	</string>
+	<string name="LocationCtrlDamageTooltip">
+		Здоровье
+	</string>
+	<string name="LocationCtrlAdultIconTooltip">
+		Область для взрослых
+	</string>
+	<string name="LocationCtrlModerateIconTooltip">
+		Область умеренной дозволенности
+	</string>
+	<string name="LocationCtrlGeneralIconTooltip">
+		Область общей дозволенности
+	</string>
+	<string name="LocationCtrlSeeAVsTooltip">
+		Все жители с других участков могут видеть аватары и общаться в чате
+	</string>
+	<string name="UpdaterWindowTitle">
+		Обновление [APP_NAME]
+	</string>
+	<string name="UpdaterNowUpdating">
+		Обновляется [APP_NAME]...
+	</string>
+	<string name="UpdaterNowInstalling">
+		Устанавливается [APP_NAME]...
+	</string>
+	<string name="UpdaterUpdatingDescriptive">
+		Клиент [APP_NAME] обновляется до последнего выпуска.  Это может занять какое-то время. Проявите терпение.
+	</string>
+	<string name="UpdaterProgressBarTextWithEllipses">
+		Загрузка обновления...
+	</string>
+	<string name="UpdaterProgressBarText">
+		Загружается обновление
+	</string>
+	<string name="UpdaterFailDownloadTitle">
+		Не удалось загрузить обновление
+	</string>
+	<string name="UpdaterFailUpdateDescriptive">
+		При обновлении приложения [APP_NAME] возникла ошибка. Загрузите новую версию на сайте www.secondlife.com.
+	</string>
+	<string name="UpdaterFailInstallTitle">
+		Не удалось установить обновление
+	</string>
+	<string name="UpdaterFailStartTitle">
+		Не удалось запустить клиент
+	</string>
+	<string name="ItemsComingInTooFastFrom">
+		[APP_NAME]: Из-за слишком быстрого поступления элементов с [FROM_NAME] автоматический просмотр отключен на [TIME] с
+	</string>
+	<string name="ItemsComingInTooFast">
+		[APP_NAME]: из-за слишком быстрого поступления элементов автоматический просмотр отключен на [TIME] с
+	</string>
+	<string name="IM_logging_string">
+		-- Включена регистрация сообщений IM --
+	</string>
+	<string name="IM_typing_start_string">
+		[NAME] вводит текст...
+	</string>
+	<string name="Unnamed">
+		(Без имени)
+	</string>
+	<string name="IM_moderated_chat_label">
+		(Модерируется: голоса по умолчанию отключены)
+	</string>
+	<string name="IM_unavailable_text_label">
+		Во время этого звонка текстовый чат недоступен.
+	</string>
+	<string name="IM_muted_text_label">
+		Ваш текстовый чат отключен модератором группы.
+	</string>
+	<string name="IM_default_text_label">
+		Щелкните здесь, чтобы создать IM-сообщение.
+	</string>
+	<string name="IM_to_label">
+		Кому
+	</string>
+	<string name="IM_moderator_label">
+		(Модератор)
+	</string>
+	<string name="Saved_message">
+		(Сохранено [LONG_TIMESTAMP])
+	</string>
+	<string name="answered_call">
+		На ваш звонок ответили
+	</string>
+	<string name="you_started_call">
+		Вы начали голосовую беседу
+	</string>
+	<string name="you_joined_call">
+		Вы присоединились к голосовой беседе
+	</string>
+	<string name="name_started_call">
+		Житель [NAME] начал голосовую беседу
+	</string>
+	<string name="ringing-im">
+		Присоединение к голосовой беседе...
+	</string>
+	<string name="connected-im">
+		Соединение установлено. Выберите команду «Прервать звонок», чтобы повесить трубку
+	</string>
+	<string name="hang_up-im">
+		Голосовой звонок прерван
+	</string>
+	<string name="answering-im">
+		Соединяется...
+	</string>
+	<string name="conference-title">
+		Спонтанная конференция
+	</string>
+	<string name="conference-title-incoming">
+		Конференция с жителем [AGENT_NAME]
+	</string>
+	<string name="inventory_item_offered-im">
+		Предложено пополнить инвентарь
+	</string>
+	<string name="share_alert">
+		Перетаскивайте вещи из инвентаря сюда
+	</string>
+	<string name="no_session_message">
+		(Сеанс IM не существует)
+	</string>
+	<string name="only_user_message">
+		Вы – единственный пользователь в этом сеансе.
+	</string>
+	<string name="offline_message">
+		[NAME] не в сети.
+	</string>
+	<string name="invite_message">
+		Нажмите кнопку [BUTTON NAME], чтобы участвовать в этом голосовом чате.
+	</string>
+	<string name="muted_message">
+		Вы заблокировали этого жителя. Если отправить ему сообщение, блок автоматически снимется.
+	</string>
+	<string name="generic">
+		Ошибка при запросе. Повторите попытку.
+	</string>
+	<string name="generic_request_error">
+		Ошибка при запросе. Повторите попытку.
+	</string>
+	<string name="insufficient_perms_error">
+		У вас недостаточно разрешений.
+	</string>
+	<string name="session_does_not_exist_error">
+		Сеанс больше не существует
+	</string>
+	<string name="no_ability_error">
+		У вас нет этой способности.
+	</string>
+	<string name="no_ability">
+		У вас нет этой способности.
+	</string>
+	<string name="not_a_mod_error">
+		Вы – не модератор сеанса.
+	</string>
+	<string name="muted">
+		Модератор группы отключил для вас текстовый чат.
+	</string>
+	<string name="muted_error">
+		Модератор группы отключил для вас текстовый чат.
+	</string>
+	<string name="add_session_event">
+		Не удается добавить пользователей в сеанс чата с жителем [RECIPIENT].
+	</string>
+	<string name="message">
+		Не удается отправить ваше сообщение в сеанс чата с жителем [RECIPIENT].
+	</string>
+	<string name="message_session_event">
+		Не удается отправить ваше сообщение в сеанс чата с жителем [RECIPIENT].
+	</string>
+	<string name="mute">
+		Ошибка при модерировании.
+	</string>
+	<string name="removed">
+		Вы исключены из группы.
+	</string>
+	<string name="removed_from_group">
+		Вы исключены из группы.
+	</string>
+	<string name="close_on_no_ability">
+		У вас больше нет возможности участвовать в сеансе чата.
+	</string>
+	<string name="unread_chat_single">
+		[SOURCES] сказал что-то новое
+	</string>
+	<string name="unread_chat_multiple">
+		[SOURCES] сказал что-то новое
+	</string>
+	<string name="session_initialization_timed_out_error">
+		Истекло время ожидания инициализации сеанса
+	</string>
+	<string name="Home position set.">
+		Задано положение дома.
+	</string>
+	<string name="voice_morphing_url">
+		http://secondlife.com/landing/voicemorphing
+	</string>
+	<string name="paid_you_ldollars">
+		Житель [NAME] заплатил вам L$[AMOUNT] за [REASON].
+	</string>
+	<string name="paid_you_ldollars_no_reason">
+		Житель [NAME] заплатил вам L$[AMOUNT].
+	</string>
+	<string name="you_paid_ldollars">
+		Вы заплатили жителю [NAME] L$[AMOUNT] за [REASON].
+	</string>
+	<string name="you_paid_ldollars_no_info">
+		Вы заплатили L$[AMOUNT].
+	</string>
+	<string name="you_paid_ldollars_no_reason">
+		Вы заплатили жителю [NAME] L$[AMOUNT].
+	</string>
+	<string name="you_paid_ldollars_no_name">
+		Вы заплатили L$[AMOUNT] за [REASON].
+	</string>
+	<string name="you_paid_failure_ldollars">
+		Вы не смогли заплатить пользователю [NAME] L$[AMOUNT]: [REASON].
+	</string>
+	<string name="you_paid_failure_ldollars_no_info">
+		Вы не смогли заплатить L$[AMOUNT]
+	</string>
+	<string name="you_paid_failure_ldollars_no_reason">
+		Вы не смогли заплатить пользователю [NAME] L$[AMOUNT]
+	</string>
+	<string name="you_paid_failure_ldollars_no_name">
+		Вы не смогли заплатить L$[AMOUNT]: [REASON].
+	</string>
+	<string name="for item">
+		за [ITEM]
+	</string>
+	<string name="for a parcel of land">
+		за земельный участок
+	</string>
+	<string name="for a land access pass">
+		за пропуск на землю
+	</string>
+	<string name="for deeding land">
+		за передачу земли
+	</string>
+	<string name="to create a group">
+		за создание группы
+	</string>
+	<string name="to join a group">
+		за вступление в группу
+	</string>
+	<string name="to upload">
+		за передачу по сети
+	</string>
+	<string name="to publish a classified ad">
+		за публикацию рекламы
+	</string>
+	<string name="giving">
+		Уплата L$[AMOUNT]
+	</string>
+	<string name="uploading_costs">
+		Передача стоит L$[AMOUNT]
+	</string>
+	<string name="this_costs">
+		Это стоит L$[AMOUNT]
+	</string>
+	<string name="buying_selected_land">
+		Покупка выбранной земли за L$[AMOUNT]
+	</string>
+	<string name="this_object_costs">
+		Этот объект стоит L$[AMOUNT]
+	</string>
+	<string name="group_role_everyone">
+		Все
+	</string>
+	<string name="group_role_officers">
+		Должностные лица
+	</string>
+	<string name="group_role_owners">
+		Владельцы
+	</string>
+	<string name="group_member_status_online">
+		В сети
+	</string>
+	<string name="uploading_abuse_report">
+		Загружается...
+  
+Жалоба
+	</string>
+	<string name="New Shape">
+		Новая фигура
+	</string>
+	<string name="New Skin">
+		Новая кожа
+	</string>
+	<string name="New Hair">
+		Новые волосы
+	</string>
+	<string name="New Eyes">
+		Новые глаза
+	</string>
+	<string name="New Shirt">
+		Новая рубашка
+	</string>
+	<string name="New Pants">
+		Новые брюки
+	</string>
+	<string name="New Shoes">
+		Новая обувь
+	</string>
+	<string name="New Socks">
+		Новые носки
+	</string>
+	<string name="New Jacket">
+		Новый пиджак
+	</string>
+	<string name="New Gloves">
+		Новые перчатки
+	</string>
+	<string name="New Undershirt">
+		Новая майка
+	</string>
+	<string name="New Underpants">
+		Новые трусы
+	</string>
+	<string name="New Skirt">
+		Новая юбка
+	</string>
+	<string name="New Alpha">
+		Новая альфа-маска
+	</string>
+	<string name="New Tattoo">
+		Новое тату
+	</string>
+	<string name="New Physics">
+		Новая физика
+	</string>
+	<string name="Invalid Wearable">
+		Нельзя носить
+	</string>
+	<string name="New Gesture">
+		Новый жест
+	</string>
+	<string name="New Script">
+		Новый скрипт
+	</string>
+	<string name="New Note">
+		Новая заметка
+	</string>
+	<string name="New Folder">
+		Новая папка
+	</string>
+	<string name="Contents">
+		Контент
+	</string>
+	<string name="Gesture">
+		Жест
+	</string>
+	<string name="Male Gestures">
+		Мужские жесты
+	</string>
+	<string name="Female Gestures">
+		Женские жесты
+	</string>
+	<string name="Other Gestures">
+		Прочие жесты
+	</string>
+	<string name="Speech Gestures">
+		Жесты в разговорах
+	</string>
+	<string name="Common Gestures">
+		Стандартные жесты
+	</string>
+	<string name="Male - Excuse me">
+		Мужчина – извинение
+	</string>
+	<string name="Male - Get lost">
+		Мужчина – скройтесь
+	</string>
+	<string name="Male - Blow kiss">
+		Мужчина – воздушный поцелуй
+	</string>
+	<string name="Male - Boo">
+		Мужчина – фу!
+	</string>
+	<string name="Male - Bored">
+		Мужчина – скука
+	</string>
+	<string name="Male - Hey">
+		Мужчина – эй!
+	</string>
+	<string name="Male - Laugh">
+		Мужчина – смех
+	</string>
+	<string name="Male - Repulsed">
+		Мужчина – неприятие
+	</string>
+	<string name="Male - Shrug">
+		Мужчина – пожимает плечами
+	</string>
+	<string name="Male - Stick tougue out">
+		Мужчина – показывает язык
+	</string>
+	<string name="Male - Wow">
+		Мужчина – ух ты!
+	</string>
+	<string name="Female - Chuckle">
+		Женщина – смешок
+	</string>
+	<string name="Female - Cry">
+		Женщина – плач
+	</string>
+	<string name="Female - Embarrassed">
+		Женщина – смущение
+	</string>
+	<string name="Female - Excuse me">
+		Женщина – извинение
+	</string>
+	<string name="Female - Get lost">
+		Женщина – скройтесь
+	</string>
+	<string name="Female - Blow kiss">
+		Женщина – воздушный поцелуй
+	</string>
+	<string name="Female - Boo">
+		Женщина – фу!
+	</string>
+	<string name="Female - Bored">
+		Женщина – скука
+	</string>
+	<string name="Female - Hey">
+		Женщина – эй!
+	</string>
+	<string name="Female - Hey baby">
+		Женщина – эй, бейби!
+	</string>
+	<string name="Female - Laugh">
+		Женщина – смех
+	</string>
+	<string name="Female - Looking good">
+		Женщина – хорошо выглядишь
+	</string>
+	<string name="Female - Over here">
+		Женщина – сюда!
+	</string>
+	<string name="Female - Please">
+		Женщина – просьба
+	</string>
+	<string name="Female - Repulsed">
+		Женщина – неприятие
+	</string>
+	<string name="Female - Shrug">
+		Женщина – пожимает плечами
+	</string>
+	<string name="Female - Stick tougue out">
+		Женщина – показывает язык
+	</string>
+	<string name="Female - Wow">
+		Женщина – ух ты!
+	</string>
+	<string name="/bow">
+		/поклониться
+	</string>
+	<string name="/clap">
+		/хлопнуть
+	</string>
+	<string name="/count">
+		/счет
+	</string>
+	<string name="/extinguish">
+		/затушить
+	</string>
+	<string name="/kmb">
+		/поцелуй меня в зад
+	</string>
+	<string name="/muscle">
+		/силач
+	</string>
+	<string name="/no">
+		/нет
+	</string>
+	<string name="/no!">
+		/нет!
+	</string>
+	<string name="/paper">
+		/бумага
+	</string>
+	<string name="/pointme">
+		/показать на себя
+	</string>
+	<string name="/pointyou">
+		/показать на другого
+	</string>
+	<string name="/rock">
+		/камень
+	</string>
+	<string name="/scissor">
+		/ножницы
+	</string>
+	<string name="/smoke">
+		/курить
+	</string>
+	<string name="/stretch">
+		/потянуться
+	</string>
+	<string name="/whistle">
+		/свистнуть
+	</string>
+	<string name="/yes">
+		/да
+	</string>
+	<string name="/yes!">
+		/о да!
+	</string>
+	<string name="afk">
+		отошел
+	</string>
+	<string name="dance1">
+		танец1
+	</string>
+	<string name="dance2">
+		танец2
+	</string>
+	<string name="dance3">
+		танец3
+	</string>
+	<string name="dance4">
+		танец4
+	</string>
+	<string name="dance5">
+		танец5
+	</string>
+	<string name="dance6">
+		танец6
+	</string>
+	<string name="dance7">
+		танец7
+	</string>
+	<string name="dance8">
+		танец8
+	</string>
+	<string name="AvatarBirthDateFormat">
+		[day,datetime,slt].[mthnum,datetime,slt].[year,datetime,slt]
+	</string>
+	<string name="DefaultMimeType">
+		нет/нет
+	</string>
+	<string name="texture_load_dimensions_error">
+		Нельзя загружать изображения, размер которых превышает [WIDTH]*[HEIGHT]
+	</string>
+	<string name="words_separator" value=","/>
+	<string name="server_is_down">
+		Несмотря на наши усилия, что-то неожиданно пошло не так.
+	Ознакомьтесь с описанием известных проблем в работе этой службы на сайте status.secondlifegrid.net.  
+        Если проблемы продолжаются, то проверьте подключение к сети и настройки брандмауэра.
+	</string>
+	<string name="dateTimeWeekdaysNames">
+		Воскресенье:Понедельник:Вторник:Среда:Четверг:Пятница:Суббота
+	</string>
+	<string name="dateTimeWeekdaysShortNames">
+		Вс:Пн:Вт:Ср:Чт:Пт:Сб
+	</string>
+	<string name="dateTimeMonthNames">
+		Январь:Февраль:Март:Апрель:Май:Июнь:Июль:Август:Сентябрь:Октябрь:Ноябрь:Декабрь
+	</string>
+	<string name="dateTimeMonthShortNames">
+		Янв:Фев:Мар:Апр:Май:Июн:Июл:Авг:Сен:Окт:Ноя:Дек
+	</string>
+	<string name="dateTimeDayFormat">
+		[MDAY]
+	</string>
+	<string name="dateTimeAM">
+		до полудня
+	</string>
+	<string name="dateTimePM">
+		после полудня
+	</string>
+	<string name="LocalEstimateUSD">
+		[AMOUNT] US$
+	</string>
+	<string name="Membership">
+		Членство
+	</string>
+	<string name="Roles">
+		Роли
+	</string>
+	<string name="Group Identity">
+		Удостоверение группы
+	</string>
+	<string name="Parcel Management">
+		Управление участком
+	</string>
+	<string name="Parcel Identity">
+		Удостоверение участка
+	</string>
+	<string name="Parcel Settings">
+		Параметры участка
+	</string>
+	<string name="Parcel Powers">
+		Способности для участка
+	</string>
+	<string name="Parcel Access">
+		Доступ к участку
+	</string>
+	<string name="Parcel Content">
+		Содержимое на участке
+	</string>
+	<string name="Object Management">
+		Управление объектами
+	</string>
+	<string name="Accounting">
+		Бухгалтерия
+	</string>
+	<string name="Notices">
+		Уведомления
+	</string>
+	<string name="Chat">
+		Чат
+	</string>
+	<string name="DeleteItems">
+		Удалить выбранные объекты?
+	</string>
+	<string name="DeleteItem">
+		Удалить выбранный объект?
+	</string>
+	<string name="EmptyOutfitText">
+		Для этого костюма нет вещей
+	</string>
+	<string name="ExternalEditorNotSet">
+		Выберите редактор, используя параметр ExternalEditor.
+	</string>
+	<string name="ExternalEditorNotFound">
+		Не удается найти указанный внешний редактор.
+Попробуйте взять путь к редактору в двойные кавычки
+(например &quot;/path to my/editor&quot; &quot;%s&quot;)
+	</string>
+	<string name="ExternalEditorCommandParseError">
+		Ошибка анализа командной строки для внешнего редактора.
+	</string>
+	<string name="ExternalEditorFailedToRun">
+		Не удалось запустить внешний редактор.
+	</string>
+	<string name="TranslationFailed">
+		Ошибка телепортации: [REASON]
+	</string>
+	<string name="TranslationResponseParseError">
+		Ошибка при анализе ответа переводчика.
+	</string>
+	<string name="Esc">
+		ESC
+	</string>
+	<string name="Space">
+		ПРОБЕЛ
+	</string>
+	<string name="Enter">
+		ВВОД
+	</string>
+	<string name="Tab">
+		TAB
+	</string>
+	<string name="Ins">
+		INS
+	</string>
+	<string name="Del">
+		DEL
+	</string>
+	<string name="Backsp">
+		BACKSP
+	</string>
+	<string name="Shift">
+		SHIFT
+	</string>
+	<string name="Ctrl">
+		CTRL
+	</string>
+	<string name="Alt">
+		ALT
+	</string>
+	<string name="CapsLock">
+		CAPSLOCK
+	</string>
+	<string name="Left">
+		Стрелка влево
+	</string>
+	<string name="Right">
+		Стрелка вправо
+	</string>
+	<string name="Up">
+		Стрелка вверх
+	</string>
+	<string name="Down">
+		Стрелка вниз
+	</string>
+	<string name="Home">
+		HOME
+	</string>
+	<string name="End">
+		END
+	</string>
+	<string name="PgUp">
+		PgUp
+	</string>
+	<string name="PgDn">
+		PgDn
+	</string>
+	<string name="F1">
+		F1
+	</string>
+	<string name="F2">
+		F2
+	</string>
+	<string name="F3">
+		F3
+	</string>
+	<string name="F4">
+		F4
+	</string>
+	<string name="F5">
+		F5
+	</string>
+	<string name="F6">
+		F6
+	</string>
+	<string name="F7">
+		F7
+	</string>
+	<string name="F8">
+		F8
+	</string>
+	<string name="F9">
+		F9
+	</string>
+	<string name="F10">
+		F10
+	</string>
+	<string name="F11">
+		F11
+	</string>
+	<string name="F12">
+		F12
+	</string>
+	<string name="Add">
+		+
+	</string>
+	<string name="Subtract">
+		-
+	</string>
+	<string name="Multiply">
+		*
+	</string>
+	<string name="Divide">
+		/
+	</string>
+	<string name="PAD_DIVIDE">
+		PAD_DIVIDE
+	</string>
+	<string name="PAD_LEFT">
+		PAD_LEFT
+	</string>
+	<string name="PAD_RIGHT">
+		PAD_RIGHT
+	</string>
+	<string name="PAD_DOWN">
+		PAD_DOWN
+	</string>
+	<string name="PAD_UP">
+		PAD_UP
+	</string>
+	<string name="PAD_HOME">
+		PAD_HOME
+	</string>
+	<string name="PAD_END">
+		PAD_END
+	</string>
+	<string name="PAD_PGUP">
+		PAD_PGUP
+	</string>
+	<string name="PAD_PGDN">
+		PAD_PGDN
+	</string>
+	<string name="PAD_CENTER">
+		PAD_CENTER
+	</string>
+	<string name="PAD_INS">
+		PAD_INS
+	</string>
+	<string name="PAD_DEL">
+		PAD_DEL
+	</string>
+	<string name="PAD_Enter">
+		PAD_Enter
+	</string>
+	<string name="PAD_BUTTON0">
+		PAD_BUTTON0
+	</string>
+	<string name="PAD_BUTTON1">
+		PAD_BUTTON1
+	</string>
+	<string name="PAD_BUTTON2">
+		PAD_BUTTON2
+	</string>
+	<string name="PAD_BUTTON3">
+		PAD_BUTTON3
+	</string>
+	<string name="PAD_BUTTON4">
+		PAD_BUTTON4
+	</string>
+	<string name="PAD_BUTTON5">
+		PAD_BUTTON5
+	</string>
+	<string name="PAD_BUTTON6">
+		PAD_BUTTON6
+	</string>
+	<string name="PAD_BUTTON7">
+		PAD_BUTTON7
+	</string>
+	<string name="PAD_BUTTON8">
+		PAD_BUTTON8
+	</string>
+	<string name="PAD_BUTTON9">
+		PAD_BUTTON9
+	</string>
+	<string name="PAD_BUTTON10">
+		PAD_BUTTON10
+	</string>
+	<string name="PAD_BUTTON11">
+		PAD_BUTTON11
+	</string>
+	<string name="PAD_BUTTON12">
+		PAD_BUTTON12
+	</string>
+	<string name="PAD_BUTTON13">
+		PAD_BUTTON13
+	</string>
+	<string name="PAD_BUTTON14">
+		PAD_BUTTON14
+	</string>
+	<string name="PAD_BUTTON15">
+		PAD_BUTTON15
+	</string>
+	<string name="-">
+		-
+	</string>
+	<string name="=">
+		=
+	</string>
+	<string name="`">
+		`
+	</string>
+	<string name=";">
+		;
+	</string>
+	<string name="[">
+		[
+	</string>
+	<string name="]">
+		]
+	</string>
+	<string name="\">
+		\
+	</string>
+	<string name="0">
+		0
+	</string>
+	<string name="1">
+		1
+	</string>
+	<string name="2">
+		2
+	</string>
+	<string name="3">
+		3
+	</string>
+	<string name="4">
+		4
+	</string>
+	<string name="5">
+		5
+	</string>
+	<string name="6">
+		6
+	</string>
+	<string name="7">
+		7
+	</string>
+	<string name="8">
+		8
+	</string>
+	<string name="9">
+		9
+	</string>
+	<string name="A">
+		A
+	</string>
+	<string name="B">
+		B
+	</string>
+	<string name="C">
+		C
+	</string>
+	<string name="D">
+		D
+	</string>
+	<string name="E">
+		E
+	</string>
+	<string name="F">
+		F
+	</string>
+	<string name="G">
+		G
+	</string>
+	<string name="H">
+		H
+	</string>
+	<string name="I">
+		I
+	</string>
+	<string name="J">
+		J
+	</string>
+	<string name="K">
+		K
+	</string>
+	<string name="L">
+		L
+	</string>
+	<string name="M">
+		M
+	</string>
+	<string name="N">
+		N
+	</string>
+	<string name="O">
+		O
+	</string>
+	<string name="P">
+		P
+	</string>
+	<string name="Q">
+		Q
+	</string>
+	<string name="R">
+		R
+	</string>
+	<string name="S">
+		S
+	</string>
+	<string name="T">
+		T
+	</string>
+	<string name="U">
+		U
+	</string>
+	<string name="V">
+		V
+	</string>
+	<string name="W">
+		W
+	</string>
+	<string name="X">
+		X
+	</string>
+	<string name="Y">
+		Y
+	</string>
+	<string name="Z">
+		Z
+	</string>
+	<string name="BeaconParticle">
+		Просмотр меток участков (синие)
+	</string>
+	<string name="BeaconPhysical">
+		Просмотр меток физических объектов (зеленые)
+	</string>
+	<string name="BeaconScripted">
+		Просмотр меток объектов со скриптами (красные)
+	</string>
+	<string name="BeaconScriptedTouch">
+		Просмотр меток объектов со скриптами и функцией касания (красные)
+	</string>
+	<string name="BeaconSound">
+		Просмотр звуковых меток (желтые)
+	</string>
+	<string name="BeaconMedia">
+		Просмотр медийных меток (белые)
+	</string>
+	<string name="ParticleHiding">
+		Частицы скрыты
+	</string>
+	<string name="Command_AboutLand_Label">
+		О земле
+	</string>
+	<string name="Command_Appearance_Label">
+		Внешность
+	</string>
+	<string name="Command_Avatar_Label">
+		Аватар
+	</string>
+	<string name="Command_Build_Label">
+		Строительство
+	</string>
+	<string name="Command_Chat_Label">
+		Чат
+	</string>
+	<string name="Command_Compass_Label">
+		Компас
+	</string>
+	<string name="Command_Destinations_Label">
+		Пункты
+	</string>
+	<string name="Command_Gestures_Label">
+		Жесты
+	</string>
+	<string name="Command_HowTo_Label">
+		Инструкции
+	</string>
+	<string name="Command_Inventory_Label">
+		Инвентарь
+	</string>
+	<string name="Command_Map_Label">
+		Карта
+	</string>
+	<string name="Command_Marketplace_Label">
+		Торговый центр
+	</string>
+	<string name="Command_MiniMap_Label">
+		Миникарта
+	</string>
+	<string name="Command_Move_Label">
+		Ходьба / бег / полет
+	</string>
+	<string name="Command_People_Label">
+		Люди
+	</string>
+	<string name="Command_Picks_Label">
+		Подборка
+	</string>
+	<string name="Command_Places_Label">
+		Места
+	</string>
+	<string name="Command_Preferences_Label">
+		Настройки
+	</string>
+	<string name="Command_Profile_Label">
+		Профиль
+	</string>
+	<string name="Command_Search_Label">
+		Поиск
+	</string>
+	<string name="Command_Snapshot_Label">
+		Снимок
+	</string>
+	<string name="Command_Speak_Label">
+		Говорить
+	</string>
+	<string name="Command_View_Label">
+		Управление камерой
+	</string>
+	<string name="Command_Voice_Label">
+		Настройки голоса
+	</string>
+	<string name="Command_AboutLand_Tooltip">
+		Информация о посещаемой вами земле
+	</string>
+	<string name="Command_Appearance_Tooltip">
+		Изменить аватар
+	</string>
+	<string name="Command_Avatar_Tooltip">
+		Выбор аватара
+	</string>
+	<string name="Command_Build_Tooltip">
+		Построение объектов и формирование ландшафта
+	</string>
+	<string name="Command_Chat_Tooltip">
+		Обменивайтесь текстовыми репликами с людьми вокруг вас
+	</string>
+	<string name="Command_Compass_Tooltip">
+		Компас
+	</string>
+	<string name="Command_Destinations_Tooltip">
+		Интересные места
+	</string>
+	<string name="Command_Gestures_Tooltip">
+		Жесты для аватара
+	</string>
+	<string name="Command_HowTo_Tooltip">
+		Выполнение типичных задач
+	</string>
+	<string name="Command_Inventory_Tooltip">
+		Просмотр и использование вашего имущества
+	</string>
+	<string name="Command_Map_Tooltip">
+		Карта мира
+	</string>
+	<string name="Command_Marketplace_Tooltip">
+		Покупки
+	</string>
+	<string name="Command_MiniMap_Tooltip">
+		Показать людей поблизости
+	</string>
+	<string name="Command_Move_Tooltip">
+		Перемещение аватара
+	</string>
+	<string name="Command_People_Tooltip">
+		Друзья, группы и люди поблизости
+	</string>
+	<string name="Command_Picks_Tooltip">
+		Места, которые будут показаны в вашем профиле как избранное
+	</string>
+	<string name="Command_Places_Tooltip">
+		Сохраненные вами места
+	</string>
+	<string name="Command_Preferences_Tooltip">
+		Настройки
+	</string>
+	<string name="Command_Profile_Tooltip">
+		Редактирование или просмотр вашего профиля
+	</string>
+	<string name="Command_Search_Tooltip">
+		Поиск мест, событий, людей
+	</string>
+	<string name="Command_Snapshot_Tooltip">
+		Сделать снимок
+	</string>
+	<string name="Command_Speak_Tooltip">
+		Говорите с людьми вокруг вас с помощью микрофона
+	</string>
+	<string name="Command_View_Tooltip">
+		Изменение угла камеры
+	</string>
+	<string name="Command_Voice_Tooltip">
+		Регулировка громкости вызовов и разговоров с людьми около вас
+	</string>
+	<string name="Toolbar_Bottom_Tooltip">
+		сейчас на нижней панели инструментов
+	</string>
+	<string name="Toolbar_Left_Tooltip">
+		сейчас на левой панели инструментов
+	</string>
+	<string name="Toolbar_Right_Tooltip">
+		сейчас на правой панели инструментов
+	</string>
+	<string name="Retain%">
+		Остаток%
+	</string>
+	<string name="Detail">
+		Детализация
+	</string>
+	<string name="Better Detail">
+		Более детально
+	</string>
+	<string name="Surface">
+		Поверхность
+	</string>
+	<string name="Solid">
+		Сплошной
+	</string>
+	<string name="Wrap">
+		Оболочка
+	</string>
+	<string name="Preview">
+		Предварительный просмотр
+	</string>
+	<string name="Normal">
+		Нормальный
+	</string>
+	<string name="snapshot_quality_very_low">
+		Очень низкий
+	</string>
+	<string name="snapshot_quality_low">
+		Низкий
+	</string>
+	<string name="snapshot_quality_medium">
+		Средний
+	</string>
+	<string name="snapshot_quality_high">
+		Высокий
+	</string>
+	<string name="snapshot_quality_very_high">
+		Очень высокий
+	</string>
+</strings>
diff --git a/indra/newview/skins/default/xui/ru/teleport_strings.xml b/indra/newview/skins/default/xui/ru/teleport_strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..feff28611161a521f734e36be2934e262b9d26f2
--- /dev/null
+++ b/indra/newview/skins/default/xui/ru/teleport_strings.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<teleport_messages>
+	<message_set name="errors">
+		<message name="invalid_tport">
+			При запросе телепортации возникла проблема. Возможно, вам придется повторить вход перед тем, как вы сможете телепортироваться.
+Если данное сообщение повторится, посетите сайт [SUPPORT_SITE].
+		</message>
+		<message name="invalid_region_handoff">
+			При пересечении границы региона возникла проблема. Возможно, вам придется повторить вход перед тем, как вы сможете перейти границу.
+Если данное сообщение повторится, посетите сайт [SUPPORT_SITE].
+		</message>
+		<message name="blocked_tport">
+			Телепортация сейчас заблокирована. Повторите попытку позже.
+Если вам все равно не удается телепортироваться, выйдите и войдите в систему, чтобы устранить проблему.
+		</message>
+		<message name="nolandmark_tport">
+			Системе не удалось определить место назначения закладки.
+		</message>
+		<message name="timeout_tport">
+			Системе не удалось выполнить подключение телепорта.
+Повторите попытку позже.
+		</message>
+		<message name="NoHelpIslandTP">
+			Телепортироваться назад на Остров прибытия нельзя.
+Для повторения учебника перейдите на «Остров прибытия - общий».
+		</message>
+		<message name="noaccess_tport">
+			У вас нет доступа к точке назначения этого телепорта.
+		</message>
+		<message name="missing_attach_tport">
+			Ваши присоединения еще не доставлены. Подождите несколько секунд либо выйдите и войдите в программу, прежде чем повторить попытку телепортации.
+		</message>
+		<message name="too_many_uploads_tport">
+			Очередь активов в данном регионе заполнена, поэтому ваш запрос на телепортацию не будет выполнен своевременно. Повторите попытку через несколько минут или перейдите в менее загруженный регион.
+		</message>
+		<message name="expired_tport">
+			Системе не удалось своевременно выполнить ваш запрос на телепортацию. Повторите попытку через несколько минут.
+		</message>
+		<message name="expired_region_handoff">
+			Системе не удалось своевременно выполнить ваше пересечение границы. Повторите попытку через несколько минут.
+		</message>
+		<message name="no_host">
+			Не удалось найти точку назначения телепорта. Возможно, назначение временно недоступно или уже не существует. Повторите попытку через несколько минут.
+		</message>
+		<message name="no_inventory_host">
+			Система инвентаря сейчас недоступна.
+		</message>
+	</message_set>
+	<message_set name="progress">
+		<message name="sending_dest">
+			Отправка по назначению.
+		</message>
+		<message name="redirecting">
+			Перенаправление в другое место.
+		</message>
+		<message name="relaying">
+			Перенаправление по назначению.
+		</message>
+		<message name="sending_home">
+			Отправка запроса домашнего местоположения.
+		</message>
+		<message name="sending_landmark">
+			Отправка запроса местоположения закладки.
+		</message>
+		<message name="completing">
+			Выполнение телепортации.
+		</message>
+		<message name="completed_from">
+			Выполнена телепоратция из [T_SLURL]
+		</message>
+		<message name="resolving">
+			Определение назначения.
+		</message>
+		<message name="contacting">
+			Соединение с новым регионом.
+		</message>
+		<message name="arriving">
+			Прибытие…
+		</message>
+		<message name="requesting">
+			Запрос телепортации…
+		</message>
+	</message_set>
+</teleport_messages>
diff --git a/indra/newview/skins/default/xui/tr/floater_aaa.xml b/indra/newview/skins/default/xui/tr/floater_aaa.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d663ec1a5b5ef1d576e9021e333e5adf67d4ab06
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_aaa.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Test Floater" title="TEST GEZDÄ°RÄ°CÄ°SÄ°">
+	<string name="test_the_vlt">
+		Bu CHANGE2 dizesi ayıklandı.
+	</string>
+	<string name="testing_eli">
+		Sadece test amaçlı. değişiklikler.
+	</string>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_about.xml b/indra/newview/skins/default/xui/tr/floater_about.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8fa12ea759f43cdb51e7101e4311a74a2116751c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_about.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_about" title="[CAPITALIZED_APP_NAME] HAKKINDA">
+	<floater.string name="AboutHeader">
+		[APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2] ([VIEWER_VERSION_3]) [BUILD_DATE] [BUILD_TIME] ([CHANNEL])
+[[VIEWER_RELEASE_NOTES_URL] [Sürüm Notları]]
+	</floater.string>
+	<floater.string name="AboutCompiler">
+		[COMPILER] [COMPILER_VERSION] sürümü ile oluşturuldu
+	</floater.string>
+	<floater.string name="AboutPosition">
+		&lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP]) üzerinde bulunan [REGION] içerisinde [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] konumundasınız
+[SERVER_VERSION]
+[SERVER_RELEASE_NOTES_URL]
+	</floater.string>
+	<floater.string name="AboutSystem">
+		CPU: [CPU]
+Bellek: [MEMORY_MB] MB
+İşl. Sis. Sürümü: [OS_VERSION]
+Grafik Kartı Üreticisi: [GRAPHICS_CARD_VENDOR]
+Grafik Kartı: [GRAPHICS_CARD]
+	</floater.string>
+	<floater.string name="AboutDriver">
+		Windows Grafik Sürücüsü Sürümü: [GRAPHICS_DRIVER_VERSION]
+	</floater.string>
+	<floater.string name="AboutLibs">
+		OpenGL Sürümü: [OPENGL_VERSION]
+
+libcurl Sürümü: [LIBCURL_VERSION]
+J2C Kod Çözücü Sürümü: [J2C_VERSION]
+Ses Sürücüsü Sürümü: [AUDIO_DRIVER_VERSION]
+Qt Web Kit Sürümü: [QT_WEBKIT_VERSION]
+Ses Sunucusu Sürümü: [VOICE_VERSION]
+	</floater.string>
+	<floater.string name="none">
+		(hiçbiri)
+	</floater.string>
+	<floater.string name="AboutTraffic">
+		Kaybolan Paketler: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%)
+	</floater.string>
+	<floater.string name="ErrorFetchingServerReleaseNotesURL">
+		Sunucu sürümü notları URL&apos;si alınırken hata oluştu.
+	</floater.string>
+	<tab_container name="about_tab">
+		<panel label="Bilgi" name="support_panel">
+			<button label="Panoya Kopyala" name="copy_btn"/>
+		</panel>
+		<panel label="Katkıda Bulunanlar" name="credits_panel">
+			<text name="linden_intro">
+				Second Life, Linden&apos;lar tarafından geliştirilmiştir:
+			</text>
+			<text name="contrib_intro">
+				Açık kaynak kod katkısında bulunanlar:
+			</text>
+			<text_editor name="contrib_names">
+				Geçici Ad çalıştırma sırasında değiştirilir
+			</text_editor>
+			<text name="trans_intro">
+				Çevirileri yapanlar:
+			</text>
+			<text_editor name="trans_names">
+				Geçici Ad çalıştırma sırasında değiştirilir
+			</text_editor>
+		</panel>
+		<panel label="Lisanslar" name="licenses_panel">
+			<text_editor name="credits_editor">
+				3Dconnexion SDK Telif Hakkı (C) 1992-2007 3Dconnexion
+        APR Telif Hakkı (C) 2000-2004 The Apache Software Foundation
+        Collada DOM Telif Hakkı 2005 Sony Computer Entertainment Inc.
+        cURL Telif Hakkı (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se)
+        DBus/dbus-glib Telif Hakkı (C) 2002, 2003  CodeFactory AB / Telif Hakkı (C) 2003, 2004 Red Hat, Inc.
+        expat Telif Hakkı (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
+        FreeType Telif Hakkı (C) 1996-2002, The FreeType Project (www.freetype.org).
+        GL Telif Hakkı (C) 1999-2004 Brian Paul.
+        GLOD Telif Hakkı (C) 2003-04 Jonathan Cohen, Nat Duca, Chris Niski, Johns Hopkins University ve David Luebke, Brenden Schubert, University of Virginia.
+        google-perftools Telif Hakkı (c) 2005, Google Inc.
+        Havok.com(TM) Telif Hakkı (C) 1999-2001, Telekinesys Research Limited.
+        jpeg2000 Telif Hakkı (C) 2001, David Taubman, The University of New South Wales (UNSW)
+        jpeglib Telif Hakkı (C) 1991-1998, Thomas G. Lane.
+        ogg/vorbis Telif Hakkı (C) 2001, Xiphophorus
+        OpenSSL Telif Hakkı (C) 1998-2002 The OpenSSL Project.
+        PCRE Telif Hakkı (c) 1997-2008 University of Cambridge
+        SDL Telif Hakkı (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
+        SSLeay Telif Hakkı (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+        xmlrpc-epi Telif Hakkı (C) 2000 Epinions, Inc.
+        zlib Telif Hakkı (C) 1995-2002 Jean-loup Gailly ve Mark Adler.
+        google-perftools Telif Hakkı (c) 2005, Google Inc.
+
+        Second Life Görüntüleyicisi Havok (TM) Fizik motorunu kullanmaktadır. (c)Telif Hakkı 1999-2010 Havok.com Inc. (ve Lisans Verenleri). Tüm Hakları Saklıdır. Ayrıntılı bilgi için bkz. www.havok.com
+
+        Bu yazılımda NVIDIA Corporation tarafından sağlanan kaynak kod yer almaktadır.
+
+        Tüm hakları saklıdır.  Ayrıntılı bilgi için bkz. licenses.txt
+
+        Sesli sohbet için Ses kodlaması: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
+			</text_editor>
+		</panel>
+	</tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_about_land.xml b/indra/newview/skins/default/xui/tr/floater_about_land.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dde658d64d67ac1a4342a0b37e8861dedaef2cde
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_about_land.xml
@@ -0,0 +1,489 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floaterland" title="ARAZÄ° HAKKINDA">
+	<floater.string name="maturity_icon_general">
+		&quot;Parcel_PG_Dark&quot;
+	</floater.string>
+	<floater.string name="maturity_icon_moderate">
+		&quot;Parcel_M_Dark&quot;
+	</floater.string>
+	<floater.string name="maturity_icon_adult">
+		&quot;Parcel_R_Dark&quot;
+	</floater.string>
+	<floater.string name="Minutes">
+		[MINUTES] dakika
+	</floater.string>
+	<floater.string name="Minute">
+		dakika
+	</floater.string>
+	<floater.string name="Seconds">
+		[SECONDS] saniye
+	</floater.string>
+	<floater.string name="Remaining">
+		kaldı
+	</floater.string>
+	<tab_container name="landtab">
+		<panel label="GENEL" name="land_general_panel">
+			<panel.string name="new users only">
+				Sadece Yeni Sakinler
+			</panel.string>
+			<panel.string name="anyone">
+				Herkes
+			</panel.string>
+			<panel.string name="area_text">
+				Alan
+			</panel.string>
+			<panel.string name="area_size_text">
+				[AREA] m²
+			</panel.string>
+			<panel.string name="auction_id_text">
+				Ä°hale Kimlik: [ID]
+			</panel.string>
+			<panel.string name="need_tier_to_modify">
+				Bu arazide değişiklik yapmak için satın alımınızı onaylamanız gerekir.
+			</panel.string>
+			<panel.string name="group_owned_text">
+				(Sahibi Olunan Grup)
+			</panel.string>
+			<panel.string name="profile_text">
+				Profil
+			</panel.string>
+			<panel.string name="info_text">
+				Bilgi
+			</panel.string>
+			<panel.string name="public_text">
+				(kamuya açık)
+			</panel.string>
+			<panel.string name="none_text">
+				(hiçbiri)
+			</panel.string>
+			<panel.string name="sale_pending_text">
+				(Satış Bekliyor)
+			</panel.string>
+			<panel.string name="no_selection_text">
+				Seçili parsel yok.
+			</panel.string>
+			<panel.string name="time_stamp_template">
+				[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+			</panel.string>
+			<text name="Name:">
+				Ad:
+			</text>
+			<text name="Description:">
+				Açıklama:
+			</text>
+			<text name="LandType">
+				Tür:
+			</text>
+			<text name="LandTypeText">
+				Anakara / Banliyö
+			</text>
+			<text name="ContentRating">
+				Seviye:
+			</text>
+			<text name="ContentRatingText">
+				YetiÅŸkin
+			</text>
+			<text name="Owner:">
+				Sahip:
+			</text>
+			<text name="Group:">
+				Grup:
+			</text>
+			<button label="Ayarla" name="Set..."/>
+			<check_box label="Gruba Devretmeye İzin Ver" name="check deed" tool_tip="Bir gurup görevlisi bu araziyi gruba devredebilir, bu nedenle grubun arazi tahsisiyle desteklenecektir."/>
+			<button label="Devret" name="Deed..." tool_tip="Sadece eğer seçilen grupta bir görevliyseniz arazi devredebilirsiniz."/>
+			<check_box label="Sahip Devirle Katkıda Bulunur" name="check contrib" tool_tip="Arazi gruba devredildiği zaman önceki sahip bunu desteklemek için yeterli miktarda arazi tahsisiyle katkıda bulunur."/>
+			<text name="For Sale:">
+				Satılık:
+			</text>
+			<text name="Not for sale.">
+				Satılık değil
+			</text>
+			<text name="For Sale: Price L$[PRICE].">
+				Fiyat: L$[PRICE] (L$[PRICE_PER_SQM]/m²)
+			</text>
+			<button label="Araziyi Sat" name="Sell Land..."/>
+			<text name="For sale to">
+				Şu Alıcıya Satılık: [BUYER]
+			</text>
+			<text name="Sell with landowners objects in parcel.">
+				Nesneler satışa dahildir
+			</text>
+			<text name="Selling with no objects in parcel.">
+				Nesneler satışa dahil değildir
+			</text>
+			<button label="Arazi Satışını İptal Et" label_selected="Arazi Satışını İptal Et" name="Cancel Land Sale"/>
+			<text name="Claimed:">
+				Alındı:
+			</text>
+			<text name="DateClaimText">
+				15 Ağustos Salı 13:47:25 2006
+			</text>
+			<text name="PriceLabel">
+				Alan:
+			</text>
+			<text name="PriceText">
+				4048 m²
+			</text>
+			<text name="Traffic:">
+				Trafik:
+			</text>
+			<text name="DwellText">
+				Yükleniyor...
+			</text>
+			<button label="Arazi Satın Al" name="Buy Land..."/>
+			<button label="Linden Satışı" name="Linden Sale..." tool_tip="Arazinin sahip olunması, içeriğinin ayarlanması ve ihaleye çıkmamış olması gerekir"/>
+			<button label="Komut Dosyası Bilgileri" name="Scripts..."/>
+			<button label="Grup İçin Satın Al" name="Buy For Group..."/>
+			<button label="Geçiş Hakkı Satın Al" name="Buy Pass..." tool_tip="Geçiş hakkı bu araziye geçici erişiminizi sağlar."/>
+			<button label="Araziyi Terket" name="Abandon Land..."/>
+			<button label="Araziyi Geri Kazan" name="Reclaim Land..."/>
+		</panel>
+		<panel label="SÖZLEŞME" name="land_covenant_panel">
+			<panel.string name="can_resell">
+				Bu bölgede satın alınan arazi tekrar satılabilir.
+			</panel.string>
+			<panel.string name="can_not_resell">
+				Bu bölgede satın alınan arazi tekrar satılamayabilir.
+			</panel.string>
+			<panel.string name="can_change">
+				Bu bölgede satın alınan arazi birleştirilebilir veya bölünebilir.
+			</panel.string>
+			<panel.string name="can_not_change">
+				Bu bölgede satın alınan arazi birleştirilemeyebilir veya bölünemeyebilir.
+			</panel.string>
+			<text name="estate_section_lbl">
+				Gayrimenkul:
+			</text>
+			<text name="estate_name_text">
+				anakara
+			</text>
+			<text name="estate_owner_lbl">
+				Sahip:
+			</text>
+			<text name="estate_owner_text">
+				(hiçbiri)
+			</text>
+			<text_editor name="covenant_editor">
+				Bu Gayrimenkul için Sözleşmesi yok.
+			</text_editor>
+			<text name="covenant_timestamp_text">
+				Son Değiştirme: 31 Ara, Çar 16:00:00 1969
+			</text>
+			<text name="region_section_lbl">
+				Bölge:
+			</text>
+			<text name="region_name_text">
+				EricaVille
+			</text>
+			<text name="region_landtype_lbl">
+				Tür:
+			</text>
+			<text name="region_landtype_text">
+				Anakara / Banliyö
+			</text>
+			<text name="region_maturity_lbl">
+				Seviye:
+			</text>
+			<text name="region_maturity_text">
+				YetiÅŸkin
+			</text>
+			<text name="resellable_lbl">
+				Tekrar Satış:
+			</text>
+			<text name="resellable_clause">
+				Bu bölgedeki arazi tekrar satılamayabilir.
+			</text>
+			<text name="changeable_lbl">
+				Böl:
+			</text>
+			<text name="changeable_clause">
+				Bu bölgedeki arazi birleştirilemeyebilir/bölünemeyebilir.
+			</text>
+		</panel>
+		<panel label="NESNELER" name="land_objects_panel">
+			<panel.string name="objects_available_text">
+				[COUNT] / [MAX] ([AVAILABLE]) uygun
+			</panel.string>
+			<panel.string name="objects_deleted_text">
+				[COUNT] / [MAX] ([SÄ°LÄ°NDÄ°] silinecek)
+			</panel.string>
+			<text name="parcel_object_bonus">
+				Bölge Nesne Bonusu Faktörü: [BONUS]
+			</text>
+			<text name="Simulator primitive usage:">
+				Bölge kapasitesi:
+			</text>
+			<text name="objects_available">
+				[COUNT] / [MAX] ([AVAILABLE]) uygun
+			</text>
+			<text name="Primitives parcel supports:">
+				Parsel arazi kapasitesi:
+			</text>
+			<text name="object_contrib_text">
+				[COUNT]
+			</text>
+			<text name="Primitives on parcel:">
+				Parsel arazi etkisi:
+			</text>
+			<text name="total_objects_text">
+				[COUNT]
+			</text>
+			<text name="Owned by parcel owner:">
+				Parsel sahibinin mülkiyetinde
+			</text>
+			<text name="owner_objects_text">
+				[COUNT]
+			</text>
+			<button label="Göster" label_selected="Göster" name="ShowOwner"/>
+			<button label="Ä°ade Et" name="ReturnOwner..." tool_tip="Nesneleri sahiplerine iade et."/>
+			<text name="Set to group:">
+				Gruba ayarı:
+			</text>
+			<text name="group_objects_text">
+				[COUNT]
+			</text>
+			<button label="Göster" label_selected="Göster" name="ShowGroup"/>
+			<button label="Ä°ade Et" name="ReturnGroup..." tool_tip="Nesneleri sahiplerine iade et."/>
+			<text name="Owned by others:">
+				Başkalarının mülkiyetinde:
+			</text>
+			<text name="other_objects_text">
+				[COUNT]
+			</text>
+			<button label="Göster" label_selected="Göster" name="ShowOther"/>
+			<button label="Ä°ade Et" name="ReturnOther..." tool_tip="Nesneleri sahiplerine iade et."/>
+			<text name="Selected / sat upon:">
+				Seçilen / üzerine oturulan:
+			</text>
+			<text name="selected_objects_text">
+				[COUNT]
+			</text>
+			<text name="Autoreturn">
+				Diğer Sakinlerin nesnelerini otomatik iade (dakika, kapalı için 0):
+			</text>
+			<text name="Object Owners:">
+				Nesne Sahipleri:
+			</text>
+			<button name="Refresh List" tool_tip="Nesne Listesini Yenile"/>
+			<button label="Nesneleri Ä°ade Et" name="Return objects..."/>
+			<name_list name="owner list">
+				<name_list.columns label="Tür" name="type"/>
+				<name_list.columns label="Ad" name="name"/>
+				<name_list.columns label="Sayım" name="count"/>
+				<name_list.columns label="En son" name="mostrecent"/>
+			</name_list>
+		</panel>
+		<panel label="SEÇENEKLER" name="land_options_panel">
+			<panel.string name="search_enabled_tooltip">
+				Arama sonuçlarında bu parsel görünsün
+			</panel.string>
+			<panel.string name="search_disabled_small_tooltip">
+				Bu seçenek etkin değil, çünkü bu parselin alanı 128 m² veya daha küçük.
+Sadece büyük parseller aramada görünür.
+			</panel.string>
+			<panel.string name="search_disabled_permissions_tooltip">
+				Bu seçenek etkin değil, çünkü bu parselin seçeneklerinde değişiklik yapamazsınız.
+			</panel.string>
+			<panel.string name="mature_check_mature">
+				Orta Seviyede İçerik
+			</panel.string>
+			<panel.string name="mature_check_adult">
+				Yetişkin İçeriği
+			</panel.string>
+			<panel.string name="mature_check_mature_tooltip">
+				Parsel bilgileriniz veya içeriğiniz orta olarak değerlendiriliyor.
+			</panel.string>
+			<panel.string name="mature_check_adult_tooltip">
+				Parsel bilgileriniz veya içeriğiniz yetişkin olarak değerlendiriliyor.
+			</panel.string>
+			<panel.string name="landing_point_none">
+				(hiçbiri)
+			</panel.string>
+			<panel.string name="push_restrict_text">
+				Ä°tme Yok
+			</panel.string>
+			<panel.string name="push_restrict_region_text">
+				İtme Yok (Bölge Geçersiz Kılma)
+			</panel.string>
+			<panel.string name="see_avs_text">
+				DiÄŸer parsellerdeki avatarlar bu
+			</panel.string>
+			<text name="allow_label">
+				Sakinlere şunun için izin ver:
+			</text>
+			<text name="allow_label0">
+				Uçma:
+			</text>
+			<check_box label="Herkes" name="check fly" tool_tip="İşaretliyse Sakinler arazinizden uçabilir. İşaretli değilse, sadece arazinize ve arazinizin üzerinde uçabilir."/>
+			<text name="allow_label2">
+				Ä°nÅŸa Et:
+			</text>
+			<check_box label="Herkes" name="edit objects check"/>
+			<check_box label="Grup" name="edit group objects check"/>
+			<text name="allow_label3">
+				Nesne GiriÅŸi:
+			</text>
+			<check_box label="Herkes" name="all object entry check"/>
+			<check_box label="Grup" name="group object entry check"/>
+			<text name="allow_label4">
+				Komut Dosyalarını Çalıştır:
+			</text>
+			<check_box label="Herkes" name="check other scripts"/>
+			<check_box label="Grup" name="check group scripts"/>
+			<check_box label="Güvenli (hasar yok)" name="check safe" tool_tip="İşaretliyse, araziyi Güvenli moda getirerek hasar çarpışmasını etkinsizleştirir İşaretli değilse hasar çarpışması etkinleşir."/>
+			<check_box label="İtme Yok" name="PushRestrictCheck" tool_tip="Komut dosyalarının itmesini önler Bu seçeneğin işaretlenmesi arazinizdeki bozucu davranışları önlemeye yardımcı olabilir."/>
+			<check_box label="Konumu Arama sonuçlarında göster (L$30/hafta)" name="ShowDirectoryCheck" tool_tip="Arama sonuçlarında bu parsel görünsün"/>
+			<combo_box name="land category with adult">
+				<combo_box.item label="Herh. Bir Kategori" name="item0"/>
+				<combo_box.item label="Linden Konumu" name="item1"/>
+				<combo_box.item label="YetiÅŸkin" name="item2"/>
+				<combo_box.item label="Sanat ve Kültür" name="item3"/>
+				<combo_box.item label="Ä°ÅŸ" name="item4"/>
+				<combo_box.item label="EÄŸitim" name="item5"/>
+				<combo_box.item label="Oyun" name="item6"/>
+				<combo_box.item label="UÄŸrak Mekan" name="item7"/>
+				<combo_box.item label="Yeni Gelenlere Yardım Sunan" name="item8"/>
+				<combo_box.item label="Park ve DoÄŸa" name="item9"/>
+				<combo_box.item label="YerleÅŸim" name="item10"/>
+				<combo_box.item label="Alışveriş" name="item11"/>
+				<combo_box.item label="Kiralık" name="item13"/>
+				<combo_box.item label="DiÄŸer" name="item12"/>
+			</combo_box>
+			<combo_box name="land category">
+				<combo_box.item label="Herh. Bir Kategori" name="item0"/>
+				<combo_box.item label="Linden Konumu" name="item1"/>
+				<combo_box.item label="Sanat ve Kültür" name="item3"/>
+				<combo_box.item label="Ä°ÅŸ" name="item4"/>
+				<combo_box.item label="EÄŸitim" name="item5"/>
+				<combo_box.item label="Oyun" name="item6"/>
+				<combo_box.item label="UÄŸrak Mekan" name="item7"/>
+				<combo_box.item label="Yeni Gelenlere Yardım Sunan" name="item8"/>
+				<combo_box.item label="Park ve DoÄŸa" name="item9"/>
+				<combo_box.item label="YerleÅŸim" name="item10"/>
+				<combo_box.item label="Alışveriş" name="item11"/>
+				<combo_box.item label="Kiralık" name="item13"/>
+				<combo_box.item label="DiÄŸer" name="item12"/>
+			</combo_box>
+			<check_box label="Orta Seviyede İçerik" name="MatureCheck" tool_tip=" "/>
+			<text name="Snapshot:">
+				Anlık Görüntü:
+			</text>
+			<texture_picker name="snapshot_ctrl" tool_tip="Bir resim seçmek için tıklayın"/>
+			<text name="allow_label5">
+				bu parseldeki avatarları görebilir ve onlarla sohbet edebilir
+			</text>
+			<check_box label="Avatarları Gör" name="SeeAvatarsCheck" tool_tip="Diğer parsellerdeki avatarların bu parseldeki avatarları görmesine ve onlarla sohbet etmesine, sizin de onları görüp, onlarla sohbet etmenize imkan tanır."/>
+			<text name="landing_point">
+				İniş Noktası: [LANDING]
+			</text>
+			<button label="Ayarla" label_selected="Ayarla" name="Set" tool_tip="İniş noktasını konukların geldiği yere ayarla. avatarınızın konumunu bu parselin içine ayarlar."/>
+			<button label="Temizle" label_selected="Temizle" name="Clear" tool_tip="İniş noktasını temizle"/>
+			<text name="Teleport Routing: ">
+				Işınlama Rotası:
+			</text>
+			<combo_box name="landing type" tool_tip="Işınlama Rotası -- arazinize ışınlamaları nasıl kullanacağınızı seçin">
+				<combo_box.item label="EngellenmiÅŸ" name="Blocked"/>
+				<combo_box.item label="İniş Noktası" name="LandingPoint"/>
+				<combo_box.item label="Herhangi bir yere" name="Anywhere"/>
+			</combo_box>
+		</panel>
+		<panel label="ORTAM" name="land_media_panel">
+			<text name="with media:">
+				Tür:
+			</text>
+			<combo_box name="media type" tool_tip="URL&apos;nin bir film, web sayfası, ya da başka bir ortam olup olmadığını belirtin"/>
+			<text name="at URL:">
+				Ana Sayfa:
+			</text>
+			<button label="Ayarla" name="set_media_url"/>
+			<text name="Description:">
+				Açıklama:
+			</text>
+			<line_editor name="url_description" tool_tip="Yazılar oyna/yükle düğmesinin yanında gösterilir"/>
+			<text name="Media texture:">
+				Doku DeÄŸiÅŸtir:
+			</text>
+			<texture_picker name="media texture" tool_tip="Bir resim seçmek için tıklayın"/>
+			<text name="replace_texture_help">
+				Bu dokuyu kullanan nesneler, oynat okuna bastıktan sonra filmi veya web sayfasını gösterecektir.  Farklı bir doku seçmek için pul resmi seçin.
+			</text>
+			<check_box label="Otomatik ölçekle" name="media_auto_scale" tool_tip="Bu seçeneğin işaretlenmesi bu parselin içeriğini otomatik olarak ölçeklendirecektir. Biraz yavaş ve görsel açıdan kalitesi biraz düşük olabilir, ancak başka doku ölçekleme veya ayarlama gerekmeyecektir."/>
+			<text name="media_size" tool_tip="Web ortamını oluşturmak için boyutlandır, varsayılan için 0 bırak.">
+				Büyüklük:
+			</text>
+			<spinner name="media_size_width" tool_tip="Web ortamını oluşturmak için boyutlandır, varsayılan için 0 bırak."/>
+			<spinner name="media_size_height" tool_tip="Web ortamını oluşturmak için boyutlandır, varsayılan için 0 bırak."/>
+			<text name="pixels">
+				piksel
+			</text>
+			<text name="Options:">
+				Seçenklr.:
+			</text>
+			<check_box label="Döngü" name="media_loop" tool_tip="Ortamı döngüsel olarak oynat.  Ortamın oynatılması bittiğinde baştan tekrar başlayacaktır."/>
+		</panel>
+		<panel label="SES" name="land_audio_panel">
+			<text name="MusicURL:">
+				Müzik URL&apos;si:
+			</text>
+			<text name="Sound:">
+				Ses:
+			</text>
+			<check_box label="Mimik ve nesne seslerini bu parselle sınırla" name="check sound local"/>
+			<text name="Avatar Sounds:">
+				Avatar Sesleri:
+			</text>
+			<check_box label="Herkes" name="all av sound check"/>
+			<check_box label="Grup" name="group av sound check"/>
+			<text name="Voice settings:">
+				Sesli:
+			</text>
+			<check_box label="Sesi EtkinleÅŸtir" name="parcel_enable_voice_channel"/>
+			<check_box label="Sesi Etkinleştir (Gayrimenkul tarafından belirlenir)" name="parcel_enable_voice_channel_is_estate_disabled"/>
+			<check_box label="Sesi bu parselle sınırla" name="parcel_enable_voice_channel_local"/>
+		</panel>
+		<panel label="ERİŞİM" name="land_access_panel">
+			<panel.string name="access_estate_defined">
+				(Gayrimenkul tarafından tanımlanır)
+			</panel.string>
+			<panel.string name="allow_public_access">
+				Kamusal Erişime İzin Ver ([MATURITY]) (Not: İşaret kaldırılırsa yasaklama çizgileri oluşur)
+			</panel.string>
+			<panel.string name="estate_override">
+				Bu seçeneklerden biri veya daha fazlası gayrimenkul düzeyinde ayarlanır
+			</panel.string>
+			<text name="Limit access to this parcel to:">
+				Bu Parsele EriÅŸim
+			</text>
+			<text name="Only Allow">
+				Erişimi şununla doğrulanan Sakinlerle Sınırla:
+			</text>
+			<check_box label="Dosyadaki ödeme bilgileri [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Tanınmayan Sakinleri Yasakla."/>
+			<check_box label="Yaş doğrulama [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Yaşını doğrulamayan Sakinleri yasakla Daha fazla bilgi için [SUPPORT_SITE] adresini ziyaret edin."/>
+			<check_box label="Grup EriÅŸimine Ä°zin Ver: [GROUP]" name="GroupCheck" tool_tip="Genel sekmesinde grup ayarla."/>
+			<check_box label="Geçiş haklr. şuna sat:" name="PassCheck" tool_tip="Bu parsele geçici erişim verir"/>
+			<combo_box name="pass_combo">
+				<combo_box.item label="Herkes" name="Anyone"/>
+				<combo_box.item label="Grup" name="Group"/>
+			</combo_box>
+			<spinner label="L$ olarak Fiyat:" name="PriceSpin"/>
+			<spinner label="EriÅŸim saatleri:" name="HoursSpin"/>
+			<panel name="Allowed_layout_panel">
+				<text label="Her Zaman Ä°zin Ver" name="AllowedText">
+					Ä°zin Verilen Sakinler
+				</text>
+				<name_list name="AccessList" tool_tip="([LISTED] listeli, [MAX] maksimum)"/>
+				<button label="Ekle" name="add_allowed"/>
+				<button label="Kaldır" label_selected="Kaldır" name="remove_allowed"/>
+			</panel>
+			<panel name="Banned_layout_panel">
+				<text label="Yasakla" name="BanCheck">
+					Yasaklı Sakinler
+				</text>
+				<name_list name="BannedList" tool_tip="([LISTED] listeli, [MAX] maksimum)"/>
+				<button label="Ekle" name="add_banned"/>
+				<button label="Kaldır" label_selected="Kaldır" name="remove_banned"/>
+			</panel>
+		</panel>
+	</tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_activeim.xml b/indra/newview/skins/default/xui/tr/floater_activeim.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f3f66b942facd819647d7e6d51211707c717f068
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_activeim.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_activeim" title="ETKÄ°N AÄ°"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_animation_preview.xml b/indra/newview/skins/default/xui/tr/floater_animation_preview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f8800c674d0b54dceae778ef1daea45410e581f0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_animation_preview.xml
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Animation Preview">
+	<floater.string name="failed_to_initialize">
+		Hareket başlatılamadı
+	</floater.string>
+	<floater.string name="anim_too_long">
+		Animasyon dosyası [LENGTH] saniye uzunluğunda.
+
+Maksimum animasyon uzunluÄŸu [LENGTH] saniye.
+	</floater.string>
+	<floater.string name="failed_file_read">
+		Animasyon dosyası okunamadı.
+
+[STATUS]
+	</floater.string>
+	<floater.string name="E_ST_OK">
+		Tamam
+	</floater.string>
+	<floater.string name="E_ST_EOF">
+		Dosyanın zamanından önce sonu.
+	</floater.string>
+	<floater.string name="E_ST_NO_CONSTRAINT">
+		Kısıtlama tanımı okunamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_FILE">
+		BVH dosyası açılamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_HIER">
+		Geçersiz HİYERARŞİ üst bilgisi.
+	</floater.string>
+	<floater.string name="E_ST_NO_JOINT">
+		KÖK veya EKLEM bulunamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_NAME">
+		EKLEM adı alınamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_OFFSET">
+		OFSET bulunamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_CHANNELS">
+		KANALLAR bulunamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_ROTATION">
+		Döndürme sırası alınamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_AXIS">
+		Döndürme ekseni alınamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_MOTION">
+		HAREKET bulunamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_FRAMES">
+		kARE SAYISI alınamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_FRAME_TIME">
+		Kare zamanı alınamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_POS">
+		Konum değerleri alınamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_ROT">
+		Döndürme değerleri alınamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_FILE">
+		Çeviri dosyası açılamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_HEADER">
+		Çeviri üst bilgisi okunamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_NAME">
+		Çeviri adları okunamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_IGNORE">
+		Çeviri yoksay değeri okunamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_RELATIVE">
+		Çeviri nisbi değeri okunamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_OUTNAME">
+		Çeviri çıkış adı değeri okunamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_MATRIX">
+		Çeviri matrisi okunamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_MERGECHILD">
+		Birleştirme alt birim adı alınamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_MERGEPARENT">
+		Birleştirme üst birim adı alınamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_PRIORITY">
+		Öncelik değerleri alınamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_LOOP">
+		Döngü (tekrar) değerleri alınamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_EASEIN">
+		Easln (Yavaş Başlangıç) değerleri alınamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_EASEOUT">
+		EaseOut (Yavaş Bitiş) değerleri alınamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_HAND">
+		El şekillendirme değeri alınamadı.
+	</floater.string>
+	<floater.string name="E_ST_NO_XLT_EMOTE">
+		Duygu ifadesi adı okunamadı.
+	</floater.string>
+	<floater.string name="E_ST_BAD_ROOT">
+		Yanlış kök eklem adı, &quot;kalça&quot; kullanın
+	</floater.string>
+	<text name="name_label">
+		Ad:
+	</text>
+	<text name="description_label">
+		Açıklama:
+	</text>
+	<spinner label="Öncelik" name="priority" tool_tip="Bu animasyonun diğer animasyonları geçersiz kılabileceği kontrolleri"/>
+	<check_box label="Döngü" name="loop_check" tool_tip="Bu animasyonun döngülenmesini (tekrarlanmasını) sağlar"/>
+	<spinner label="İç (%)" name="loop_in_point" tool_tip="Döngünün döndüğü animasyon noktasını belirler"/>
+	<spinner label="Dış (%)" name="loop_out_point" tool_tip="Animasyonda döngünün bittiği noktayı belirler"/>
+	<text name="hand_label">
+		El DuruÅŸu
+	</text>
+	<combo_box name="hand_pose_combo" tool_tip="Ellerin animasyon sırasında neler yaptığını kontrol eder">
+		<combo_box.item label="Yayılım" name="Spread"/>
+		<combo_box.item label="Rahat" name="Relaxed"/>
+		<combo_box.item label="Her Ä°kisi de Ä°ÅŸaret Ediyor" name="PointBoth"/>
+		<combo_box.item label="Yumruk" name="Fist"/>
+		<combo_box.item label="Sol Rahat" name="RelaxedLeft"/>
+		<combo_box.item label="Sol Ä°ÅŸaret Ediyor" name="PointLeft"/>
+		<combo_box.item label="Sol Yumruk" name="FistLeft"/>
+		<combo_box.item label="SaÄŸ Rahat" name="RelaxedRight"/>
+		<combo_box.item label="SaÄŸ Ä°ÅŸaret Ediyor" name="PointRight"/>
+		<combo_box.item label="SaÄŸ Yumruk" name="FistRight"/>
+		<combo_box.item label="Sağı Selamlıyor" name="SaluteRight"/>
+		<combo_box.item label="Yazı Yazıyor" name="Typing"/>
+		<combo_box.item label="Sağ Barış" name="PeaceRight"/>
+	</combo_box>
+	<text name="emote_label">
+		Ä°fade
+	</text>
+	<combo_box name="emote_combo" tool_tip="Yüzün animasyon sırasındaki ifadesini kontrol eder">
+		<item label="(Hiçbiri)" name="[None]" value=""/>
+		<item label="Aaaaah" name="Aaaaah" value="Aaaaah"/>
+		<item label="KorkmuÅŸ" name="Afraid" value="KorkmuÅŸ"/>
+		<item label="Kızgın" name="Angry" value="Kızgın"/>
+		<item label="Yaygın Gülümseyiş" name="BigSmile" value="Yaygın Gülümseyiş"/>
+		<item label="Canı Sıkılmış" name="Bored" value="Canı Sıkılmış"/>
+		<item label="AÄŸlama" name="Cry" value="AÄŸlama"/>
+		<item label="Dudak Bükme" name="Disdain" value="Dudak Bükme"/>
+		<item label="Utanmış" name="Embarrassed" value="Utanmış"/>
+		<item label="Kaş Çatma" name="Frown" value="Kaş Çatma"/>
+		<item label="Öpücük" name="Kiss" value="Öpücük"/>
+		<item label="Gülme" name="Laugh" value="Gülme"/>
+		<item label="Kahkaha" name="Plllppt" value="Kahkaha"/>
+		<item label="TiksinmiÅŸ" name="Repulsed" value="TiksinmiÅŸ"/>
+		<item label="Üzgün" name="Sad" value="Üzgün"/>
+		<item label="Omuz Silkme" name="Shrug" value="Omuz Silkme"/>
+		<item label="Gülümseme" name="Smile" value="Gülümseme"/>
+		<item label="Sürpriz" name="Surprise" value="Sürpriz"/>
+		<item label="Göz Kırpma" name="Wink" value="Göz Kırpma"/>
+		<item label="EndiÅŸelenme" name="Worry" value="EndiÅŸelenme"/>
+	</combo_box>
+	<text name="preview_label">
+		Şu sırada önizle
+	</text>
+	<combo_box name="preview_base_anim" tool_tip="Animasyon davranışınızı avatarınız genel hareketleri yaparken test etmek için bunu kullanın.">
+		<item label="Ayakta Duruyor" name="Standing" value="Ayakta Duruyor"/>
+		<item label="Yürüyor" name="Walking" value="Yürüyor"/>
+		<item label="Oturuyor" name="Sitting" value="Oturuyor"/>
+		<item label="Uçuyor" name="Flying" value="Uçuyor"/>
+	</combo_box>
+	<spinner label="Yavaş Başlangıç (saniye)" name="ease_in_time" tool_tip="Animasyonun kaynaştığı süre (saniye olarak)"/>
+	<spinner label="Yavaş Bitiş (saniye)" name="ease_out_time" tool_tip="Animasyonun ayrıştığı süre (saniye olarak)"/>
+	<button name="play_btn" tool_tip="Animasyonunu oynat"/>
+	<button name="pause_btn" tool_tip="Animasyonunu duraklat"/>
+	<button name="stop_btn" tool_tip="Animasyo oynatmayı durdur"/>
+	<text name="bad_animation_text">
+		Animasyon dosyası okunamadı.
+
+Poser 4&apos;ten aktarılan BHV dosyalarını tavsiye ederiz.
+	</text>
+	<button label="Karşıya Yükle (L$[AMOUNT])" name="ok_btn"/>
+	<button label="Ä°ptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_auction.xml b/indra/newview/skins/default/xui/tr/floater_auction.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3c945a9c964e414d3b35be0145de814ef1b6fe38
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_auction.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_auction" title="LINDEN ARAZÄ° SATIÅžINI BAÅžLAT">
+	<floater.string name="already for sale">
+		Zaten satışa çıkarılmış olan parselleri açık artırmaya sunamazsınız.
+	</floater.string>
+	<check_box initial_value="true" label="Sarı seçim çiti dahil edilsin" name="fence_check"/>
+	<button label="Anlık Görüntü" label_selected="Anlık Görüntü" name="snapshot_btn"/>
+	<button label="Herkese Sat" label_selected="Herkese Sat" name="sell_to_anyone_btn"/>
+	<button label="Ayarları Temizle" label_selected="Ayarları Temizle" name="reset_parcel_btn"/>
+	<button label="Açık Artırmayı Başlat" label_selected="Açık Artırmayı Başlat" name="start_auction_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_avatar.xml b/indra/newview/skins/default/xui/tr/floater_avatar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c6b14ba710565ba39ad9bb34bcb49de95cafe102
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_avatar.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Avatar" title="BİR AVATAR SEÇİN"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_avatar_picker.xml b/indra/newview/skins/default/xui/tr/floater_avatar_picker.xml
new file mode 100644
index 0000000000000000000000000000000000000000..99c2aae5a3d304c5fcc0cc6e8386597f0caf7b02
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_avatar_picker.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="avatarpicker" title="SAKİNİ SEÇ">
+	<floater.string name="not_found">
+		&apos;[TEXT]&apos; bulunamadı
+	</floater.string>
+	<floater.string name="no_one_near">
+		Yakında kimse yok
+	</floater.string>
+	<floater.string name="no_results">
+		Sonuç yok
+	</floater.string>
+	<floater.string name="searching">
+		Arıyor...
+	</floater.string>
+	<string name="Select">
+		Seç
+	</string>
+	<string name="Close">
+		Kapat
+	</string>
+	<tab_container name="ResidentChooserTabs">
+		<panel label="Ara" name="SearchPanel">
+			<text name="InstructSearchResidentName">
+				Bir kişinin adının bir kısmını yazın:
+			</text>
+			<button label="Git" label_selected="Git" name="Find"/>
+			<scroll_list name="SearchResults">
+				<columns label="Ad" name="name"/>
+				<columns label="Kullanıcı Adı" name="username"/>
+			</scroll_list>
+		</panel>
+		<panel label="ArkadaÅŸlar" name="FriendsPanel">
+			<text name="InstructSelectFriend">
+				Bir kişiyi seçin:
+			</text>
+		</panel>
+		<panel label="Bana Yakın" name="NearMePanel">
+			<text name="InstructSelectResident">
+				Yakındaki bir kişiyi seçin:
+			</text>
+			<slider label="Mesafe" name="near_me_range"/>
+			<text name="meters">
+				Metre
+			</text>
+			<scroll_list name="NearMe">
+				<columns label="Ad" name="name"/>
+				<columns label="Kullanıcı Adı" name="username"/>
+			</scroll_list>
+		</panel>
+	</tab_container>
+	<button label="Tamam" label_selected="Tamam" name="ok_btn"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_avatar_textures.xml b/indra/newview/skins/default/xui/tr/floater_avatar_textures.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b519cfa1a9f16d72b81e317095dea13aa0a14968
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_avatar_textures.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="avatar_texture_debug" title="AVATAR DOKULARI">
+	<floater.string name="InvalidAvatar">
+		GEÇERSİZ AVATAR
+	</floater.string>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<text name="label">
+				Kaydeildi
+Dokular
+			</text>
+			<text name="composite_label">
+				BirleÅŸik
+Dokular
+			</text>
+			<button label="Kimlikleri Konsole Yığ" label_selected="Yığ" name="Dump"/>
+			<panel name="scroll_content_panel">
+				<texture_picker label="Saç" name="hair-baked"/>
+				<texture_picker label="Saç" name="hair_grain"/>
+				<texture_picker label="Saç Alfası" name="hair_alpha"/>
+				<texture_picker label="BaÅŸ" name="head-baked"/>
+				<texture_picker label="Makyaj" name="head_bodypaint"/>
+				<texture_picker label="Baş Alfası" name="head_alpha"/>
+				<texture_picker label="Baş Dövmesi" name="head_tattoo"/>
+				<texture_picker label="Gözler" name="eyes-baked"/>
+				<texture_picker label="Göz" name="eyes_iris"/>
+				<texture_picker label="Göz Alfası" name="eyes_alpha"/>
+				<texture_picker label="Üst Gövde" name="upper-baked"/>
+				<texture_picker label="Üst GövdeBoya" name="upper_bodypaint"/>
+				<texture_picker label="Fanila" name="upper_undershirt"/>
+				<texture_picker label="Eldivenler" name="upper_gloves"/>
+				<texture_picker label="Gömlek" name="upper_shirt"/>
+				<texture_picker label="Ãœst Ceket" name="upper_jacket"/>
+				<texture_picker label="Yüksek Alfa" name="upper_alpha"/>
+				<texture_picker label="Üst Gövde Dövmesi" name="upper_tattoo"/>
+				<texture_picker label="Alt Gövde" name="lower-baked"/>
+				<texture_picker label="Alt GövdeBoya" name="lower_bodypaint"/>
+				<texture_picker label="Külot" name="lower_underpants"/>
+				<texture_picker label="Çoraplar" name="lower_socks"/>
+				<texture_picker label="Ayakkabılar" name="lower_shoes"/>
+				<texture_picker label="Pantolon" name="lower_pants"/>
+				<texture_picker label="Ceket" name="lower_jacket"/>
+				<texture_picker label="Düşük Alfa" name="lower_alpha"/>
+				<texture_picker label="Alt Gövde Dövmesi" name="lower_tattoo"/>
+				<texture_picker label="Etek" name="skirt-baked"/>
+				<texture_picker label="Etek" name="skirt"/>
+			</panel>
+		</panel>
+	</scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_beacons.xml b/indra/newview/skins/default/xui/tr/floater_beacons.xml
new file mode 100644
index 0000000000000000000000000000000000000000..08ebf36be51df518ea20a8531ddd2eb512dc2fc9
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_beacons.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="beacons" title="Ä°ÅžARETLER">
+	<panel name="beacons_panel">
+		<text name="label_show">
+			Göster :
+		</text>
+		<check_box label="Ä°ÅŸaretler" name="beacons"/>
+		<check_box label="Vurgulananlar" name="highlights"/>
+		<text name="beacon_width_label" tool_tip="Ä°ÅŸaret geniÅŸliÄŸi">
+			GeniÅŸlik:
+		</text>
+		<text name="label_objects">
+			Bu nesneler için.
+		</text>
+		<check_box label="Fiziksel" name="physical"/>
+		<check_box label="Komut Dosyalı" name="scripted"/>
+		<check_box label="Sadece dokun" name="touch_only"/>
+		<check_box label="Ses kaynakları" name="sounds"/>
+		<check_box label="Parçacık kaynakları" name="particles"/>
+		<check_box label="Ortam kaynakları" name="moapbeacon"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_build_options.xml b/indra/newview/skins/default/xui/tr/floater_build_options.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5e77f6b168e7da1a05f8e92132c051bcaafee05e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_build_options.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="build options floater" title="AĞ SEÇENEKLERİ">
+	<floater.string name="grid_screen_text">
+		Ekran
+	</floater.string>
+	<floater.string name="grid_local_text">
+		Yerel
+	</floater.string>
+	<floater.string name="grid_world_text">
+		Dünya
+	</floater.string>
+	<floater.string name="grid_reference_text">
+		Referans
+	</floater.string>
+	<floater.string name="grid_attachment_text">
+		Aksesuar
+	</floater.string>
+	<text name="grid_mode_label" tool_tip="Ağ geçirgenliği">
+		Mod
+	</text>
+	<combo_box name="combobox grid mode" tool_tip="Nesneyi konumlandırmak için ağ cetvelini seçin">
+		<combo_box.item label="Dünya ağı" name="World"/>
+		<combo_box.item label="Yerel aÄŸ" name="Local"/>
+		<combo_box.item label="Referans ağı" name="Reference"/>
+	</combo_box>
+	<spinner label="Birimler (metre)" name="GridResolution"/>
+	<spinner label="Kapsamlar (metre)" name="GridDrawSize"/>
+	<check_box label="Alt birimlere geç" name="GridSubUnit"/>
+	<check_box label="Çapraz kesitleri göster" name="GridCrossSection"/>
+	<text name="grid_opacity_label" tool_tip="Ağ geçirgenliği">
+		Geçirgenlik:
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml b/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1d929a2dd3d7a238f28c47957e31b56075671cd4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_bulk_perms.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floaterbulkperms" title="İÇERİK İZİNLERİNİ DÜZENLE">
+	<floater.string name="nothing_to_modify_text">
+		Seçim içerisinde düzenlenebilir içerik yok.
+	</floater.string>
+	<floater.string name="status_text">
+		[NAME] üzerinde izinler ayarlanıyor
+	</floater.string>
+	<floater.string name="start_text">
+		İzin değişiklik talepleri başlatılıyor...
+	</floater.string>
+	<floater.string name="done_text">
+		İzin değişiklik talepleri sonlandırıldı.
+	</floater.string>
+	<icon name="icon_animation" tool_tip="Animasyon"/>
+	<icon name="icon_bodypart" tool_tip="Vücut Bölümleri"/>
+	<icon name="icon_clothing" tool_tip="Giysiler"/>
+	<icon name="icon_gesture" tool_tip="Mimikler"/>
+	<icon name="icon_notecard" tool_tip="Not Kartları"/>
+	<icon name="icon_object" tool_tip="Nesneler"/>
+	<icon name="icon_script" tool_tip="Komut Dosyaları"/>
+	<icon name="icon_sound" tool_tip="Sesler"/>
+	<icon name="icon_texture" tool_tip="Dokular"/>
+	<button label="√ Tümü" name="check_all"/>
+	<button label="Temizle" label_selected="Hiçbiri" name="check_none"/>
+	<text name="newperms">
+		Yeni İçerik İzinleri
+	</text>
+	<text name="GroupLabel">
+		Grup:
+	</text>
+	<check_box label="PaylaÅŸ" name="share_with_group"/>
+	<text name="AnyoneLabel">
+		Herkes:
+	</text>
+	<check_box label="Kopyala" name="everyone_copy"/>
+	<text name="NextOwnerLabel">
+		Sonraki sahip:
+	</text>
+	<check_box label="DeÄŸiÅŸtir" name="next_owner_modify"/>
+	<check_box label="Kopyala" name="next_owner_copy"/>
+	<check_box initial_value="true" label="Aktar" name="next_owner_transfer" tool_tip="Sonraki sahibi bu nesneyi verebilir veya tekrar satabilir"/>
+	<button label="Tamam" name="apply"/>
+	<button label="Ä°ptal" name="close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_bumps.xml b/indra/newview/skins/default/xui/tr/floater_bumps.xml
new file mode 100644
index 0000000000000000000000000000000000000000..06ae3a2ec3b16eba2972f5d28c5a1f56aa279b29
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_bumps.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_bumps" title="TOSLAMALAR, Ä°TMELER VE VURMALAR">
+	<floater.string name="none_detected">
+		Hiçbiri tespit edilmedi
+	</floater.string>
+	<floater.string name="bump">
+		[TIME]  [NAME] size tosladı
+	</floater.string>
+	<floater.string name="llpushobject">
+		[TIME]  [NAME] bir komut dosyasıyla sizi itti
+	</floater.string>
+	<floater.string name="selected_object_collide">
+		[TIME]  [NAME] bir nesneyle size vurdu
+	</floater.string>
+	<floater.string name="scripted_object_collide">
+		[TIME]  [NAME] komut doyalı bir nesneyle size vurdu
+	</floater.string>
+	<floater.string name="physical_object_collide">
+		[TIME]  [NAME] fiziki bir nesneyle size vurdu
+	</floater.string>
+	<floater.string name="timeStr">
+		[[hour,datetime,slt]:[min,datetime,slt]]
+	</floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_buy_contents.xml b/indra/newview/skins/default/xui/tr/floater_buy_contents.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9012189ce5c37e9a39fd5d8b87fa29ee594accd7
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_buy_contents.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_buy_contents" title="İÇERİĞİ SATIN AL">
+	<floater.string name="no_copy_text">
+		(kopya yok)
+	</floater.string>
+	<floater.string name="no_modify_text">
+		(deÄŸiÅŸtirme yok)
+	</floater.string>
+	<floater.string name="no_transfer_text">
+		(aktarım yok)
+	</floater.string>
+	<text name="contains_text">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; içeriği:
+	</text>
+	<text name="buy_text">
+		L$[AMOUNT] karşılığında [NAME]&apos;den satın alınsın mı?
+	</text>
+	<check_box label="Giysiyi ÅŸimdi giy" name="wear_check"/>
+	<button label="Satın Al" label_selected="Satın Al" name="buy_btn"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_buy_currency.xml b/indra/newview/skins/default/xui/tr/floater_buy_currency.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d90985dcffeae13f9e372a1b2cf51e66bf7b8e5d
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_buy_currency.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="buy currency" title="L$ SATIN AL">
+	<floater.string name="buy_currency">
+		Yaklaşık [LOCALAMOUNT] karşılığında [LINDENS] L$ satın al
+	</floater.string>
+	<text name="info_need_more">
+		Daha fazla L$&apos;na ihtiyacınız var
+	</text>
+	<text name="contacting">
+		LindeX ile bağlantı kuruluyor...
+	</text>
+	<text name="info_buying">
+		L$ Satın Al
+	</text>
+	<text name="balance_label">
+		Sahip olduÄŸum miktar:
+	</text>
+	<text name="balance_amount">
+		L$ [AMT]
+	</text>
+	<text name="currency_action">
+		Satın almak istediğim miktar:
+	</text>
+	<text name="currency_label">
+		L$
+	</text>
+	<line_editor label="L$" name="currency_amt">
+		1234
+	</line_editor>
+	<text name="buying_label">
+		Fiyatı:
+	</text>
+	<text name="currency_est">
+		yakl. [LOCALAMOUNT]
+	</text>
+	<text name="getting_data">
+		Hesaplanıyor...
+	</text>
+	<text name="buy_action">
+		[ACTION]
+	</text>
+	<text name="total_label">
+		Bakiye param ÅŸu kadar olacak:
+	</text>
+	<text name="total_amount">
+		L$ [AMT]
+	</text>
+	<text name="currency_links">
+		[http://www.secondlife.com/my/account/payment_method_management.php ödeme yöntemi] | [http://www.secondlife.com/my/account/currency.php para birimi]
+	</text>
+	<text name="exchange_rate_note">
+		En son döviz kurunu görmek için miktarı yeniden girin.
+	</text>
+	<text name="purchase_warning_repurchase">
+		Bu satın alma işlemini teyit ettiğinizde nesne değil, L$ satın alırsınız.
+	</text>
+	<text name="purchase_warning_notenough">
+		Yeterli L$ satın almıyorsunuz. Lütfen miktarı artırın.
+	</text>
+	<button label="Şimdi Satın Al" name="buy_btn"/>
+	<button label="Ä°ptal" name="cancel_btn"/>
+	<text name="info_cannot_buy">
+		Satın Alınamıyor
+	</text>
+	<button label="Web&apos;e devam et" name="error_web"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..98aaf50db0c63f6212dfe37095d91fe4b5010bae
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_buy_currency_html.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_buy_currency_html" title="PARA SATIN AL"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_buy_land.xml b/indra/newview/skins/default/xui/tr/floater_buy_land.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7b43af2ea483092629c8ae8060d8393fcb2d7037
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_buy_land.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="buy land" title="ARAZÄ° SATIN AL">
+	<floater.string name="can_resell">
+		Tekrar satılabilir.
+	</floater.string>
+	<floater.string name="can_not_resell">
+		Tekrar satılamaz.
+	</floater.string>
+	<floater.string name="can_change">
+		Eklenebilir veya bölünebilir.
+	</floater.string>
+	<floater.string name="can_not_change">
+		Eklenemez veya bölünemez.
+	</floater.string>
+	<floater.string name="cant_buy_for_group">
+		Etkin grubunuz adına arazi satın almak için gerekli izne sahip değilsiniz.
+	</floater.string>
+	<floater.string name="no_land_selected">
+		Seçili arazi yok.
+	</floater.string>
+	<floater.string name="multiple_parcels_selected">
+		Birden fazla farklı parsel seçildi. 
+Daha küçük bir alan seçmeyi deneyin.
+	</floater.string>
+	<floater.string name="no_permission">
+		Etkin grubunuz adına arazi satın almak için gerekli izne sahip değilsiniz.
+	</floater.string>
+	<floater.string name="parcel_not_for_sale">
+		Seçilen parsel satılık değil.
+	</floater.string>
+	<floater.string name="group_already_owns">
+		Parsel zaten gruba ait.
+	</floater.string>
+	<floater.string name="you_already_own">
+		Parsel zaten size ait.
+	</floater.string>
+	<floater.string name="set_to_sell_to_other">
+		Seçilen parsel başka birisine satılmak için ayrılmış.
+	</floater.string>
+	<floater.string name="no_public_land">
+		Seçilen alanda kamu arazisi yok.
+	</floater.string>
+	<floater.string name="not_owned_by_you">
+		Başka bir Sakine ait arazi seçildi. 
+Daha küçük bir alan seçmeyi deneyin.
+	</floater.string>
+	<floater.string name="processing">
+		Satın alımınız işleniyor...
+ 
+(Bu işlem bir iki dakika sürebilir.)
+	</floater.string>
+	<floater.string name="fetching_error">
+		Arazi alma bilgileri çekilirken hata oluştu.
+	</floater.string>
+	<floater.string name="buying_will">
+		Arazinin satın alınması sonucu:
+	</floater.string>
+	<floater.string name="buying_for_group">
+		Bu arazinin grup için satın alınması sonucu:
+	</floater.string>
+	<floater.string name="cannot_buy_now">
+		Şimdi satın alamaz:
+	</floater.string>
+	<floater.string name="not_for_sale">
+		Satılık değil:
+	</floater.string>
+	<floater.string name="none_needed">
+		hiç ihtiyaç yok
+	</floater.string>
+	<floater.string name="must_upgrade">
+		Arazi sahibi olmak için hesabınızın yükseltilmesi gerekir.
+	</floater.string>
+	<floater.string name="cant_own_land">
+		Hesabınız arazi sahibi olabilir.
+	</floater.string>
+	<floater.string name="land_holdings">
+		Elinizde [BUYER] m² arazi var.
+	</floater.string>
+	<floater.string name="pay_to_for_land">
+		Bu arazi için [SELLER]&apos;e L$[AMOUNT] ödeyin
+	</floater.string>
+	<floater.string name="buy_for_US">
+		Yaklaşık [LOCAL_AMOUNT] için L$[AMOUNT] satın al,
+	</floater.string>
+	<floater.string name="parcel_meters">
+		Bu parsel [AMOUNT] m²
+	</floater.string>
+	<floater.string name="premium_land">
+		Bu parsel primlidir ve [AMOUNT] m² olarak ücretlendirilecektir.
+	</floater.string>
+	<floater.string name="discounted_land">
+		Bu parsel indirimlidir ve [AMOUNT] m² olarak ücretlendirilecektir.
+	</floater.string>
+	<floater.string name="meters_supports_object">
+		[AMOUNT] m²
+[AMOUNT2] nesneyi destekler
+	</floater.string>
+	<floater.string name="sold_with_objects">
+		nesnelerle satılır
+	</floater.string>
+	<floater.string name="sold_without_objects">
+		nesneler dahil deÄŸildir
+	</floater.string>
+	<floater.string name="info_price_string">
+		L$[PRICE]
+(L$ [PRICE_PER_SQM]/m²)
+[SOLD_WITH_OBJECTS]
+	</floater.string>
+	<floater.string name="insufficient_land_credits">
+		[GROUP] grubu, satın almanın gerçekleşmesi için bu parselin fiyatını karşılamak amacıyla yeterli miktarda arazi kullanım kredisine ihtiyaç duyacaktır.
+	</floater.string>
+	<floater.string name="have_enough_lindens">
+		L$ [AMOUNT] sahibisiniz, bu da bu araziyi almaya yeter.
+	</floater.string>
+	<floater.string name="not_enough_lindens">
+		Sadece L$ [AMOUNT] sahibisiniz, L$ [AMOUNT2]  kadar daha ihtiyacınız var.
+	</floater.string>
+	<floater.string name="balance_left">
+		Satın alımdan sonra elinizde L$ [AMOUNT] kalacak.
+	</floater.string>
+	<floater.string name="balance_needed">
+		Bu araziyi alabilmek için en az L$ [AMOUNT] almanız gerekir.
+	</floater.string>
+	<floater.string name="no_parcel_selected">
+		(seçili parsel yok)
+	</floater.string>
+	<text name="region_name_label">
+		Bölge:
+	</text>
+	<text name="region_name_text">
+		(bilinmiyor)
+	</text>
+	<text name="region_type_label">
+		Tür:
+	</text>
+	<text name="region_type_text">
+		(bilinmiyor)
+	</text>
+	<text name="estate_name_label">
+		Gayrimenkul:
+	</text>
+	<text name="estate_name_text">
+		(bilinmiyor)
+	</text>
+	<text name="estate_owner_label">
+		Gayrimenkul Sahibi:
+	</text>
+	<text name="estate_owner_text">
+		(bilinmiyor)
+	</text>
+	<text name="resellable_changeable_label">
+		Bu bölgede satın alınan arazi:
+	</text>
+	<text name="resellable_clause">
+		Tekrar satılabilir veya satılamaz.
+	</text>
+	<text name="changeable_clause">
+		Eklenebilir/bölünebilir veya eklenemez/bölünemez.
+	</text>
+	<text name="covenant_text">
+		Gayrimenkul Sözleşmesini kabul etmelisiniz:
+	</text>
+	<text_editor name="covenant_editor">
+		Yükleniyor...
+	</text_editor>
+	<check_box label="Yukarıda Tanımlanan Sözleşmeyi Kabul Ediyorum." name="agree_covenant"/>
+	<text name="info_parcel_label">
+		Parsel:
+	</text>
+	<text name="info_parcel">
+		Scotopteryx 138,204
+	</text>
+	<text name="info_size_label">
+		Büyüklük:
+	</text>
+	<text name="info_size">
+		1.024 m²
+	</text>
+	<text name="info_price_label">
+		Fiyat:
+	</text>
+	<text name="info_price">
+		L$ 1500
+(L$ 1,1/m²)
+nesnelerle satılır
+	</text>
+	<text name="info_action">
+		Arazinin satın alınması sonucu:
+	</text>
+	<text name="error_message">
+		Bir ÅŸeyler yolunda deÄŸil.
+	</text>
+	<button label="Web sitesine git" name="error_web"/>
+	<text name="account_action">
+		Ücretli üyeliğini yükselt.
+	</text>
+	<text name="account_reason">
+		Sadece ücretli üyeler arazi sahibi olabilir.
+	</text>
+	<combo_box name="account_level">
+		<combo_box.item label="US$9,95/ay, aylık fatura edilir" name="US$9.95/month,billedmonthly"/>
+		<combo_box.item label="US$7,50/ay, üç aylık fatura edilir" name="US$7.50/month,billedquarterly"/>
+		<combo_box.item label="US$6,00/ay, yıllık fatura edilir" name="US$6.00/month,billedannually"/>
+	</combo_box>
+	<text name="land_use_action">
+		Aylık arazi kullanım ücretlerinizi US$40/aya çıkarın.
+	</text>
+	<text name="land_use_reason">
+		Elinizde 1309 m² arazi var.
+Bu parsel 512 m² arazidir.
+	</text>
+	<text name="purchase_action">
+		Arazi için Joe Sakine L$ 4000 ödeme yap
+	</text>
+	<text name="currency_reason">
+		L$ 2.100&apos;ünüz var.
+	</text>
+	<text name="currency_action">
+		İlave L$ satın al
+	</text>
+	<line_editor name="currency_amt">
+		1000
+	</line_editor>
+	<text name="currency_est">
+		yaklaşık [LOCAL_AMOUNT] için
+	</text>
+	<text name="currency_balance">
+		L$ 2.100&apos;ünüz var.
+	</text>
+	<check_box label="[AMOUNT] m² katkıyı gruptan kaldır." name="remove_contribution"/>
+	<button label="Satın Al" name="buy_btn"/>
+	<button label="Ä°ptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_buy_object.xml b/indra/newview/skins/default/xui/tr/floater_buy_object.xml
new file mode 100644
index 0000000000000000000000000000000000000000..91ef05fb292459c58eba0a6c8ef0d42fa30a38ae
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_buy_object.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="contents" title="NESNENÄ°N KOPYASINI SATIN AL">
+	<floater.string name="title_buy_text">
+		Satın Al
+	</floater.string>
+	<floater.string name="title_buy_copy_text">
+		Şunun bir kopyasını satın alın:
+	</floater.string>
+	<floater.string name="no_copy_text">
+		(kopya yok)
+	</floater.string>
+	<floater.string name="no_modify_text">
+		(deÄŸiÅŸtirme yok)
+	</floater.string>
+	<floater.string name="no_transfer_text">
+		(aktarım yok)
+	</floater.string>
+	<text name="contents_text">
+		İçeriği:
+	</text>
+	<text name="buy_text">
+		L$[AMOUNT] karşılığında şuradan satın alın:
+	</text>
+	<text name="buy_name_text">
+		[NAME]?
+	</text>
+	<button label="Satın Al" label_selected="Satın Al" name="buy_btn"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_camera.xml b/indra/newview/skins/default/xui/tr/floater_camera.xml
new file mode 100644
index 0000000000000000000000000000000000000000..22e2aa52c6ba26ca619307a6c4f9db638038a20f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_camera.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="camera_floater" title="KAMERA DENETÄ°MLERÄ°">
+	<floater.string name="rotate_tooltip">
+		Odak Etrafında Kamerayı Döndür
+	</floater.string>
+	<floater.string name="zoom_tooltip">
+		Kamerayı Odağa Yakınlaştır
+	</floater.string>
+	<floater.string name="move_tooltip">
+		Kamerayı Yukarı ve Aşağı, Sola ve Sağa Hareket Ettir
+	</floater.string>
+	<floater.string name="free_mode_title">
+		Nesneyi Göster
+	</floater.string>
+	<panel name="controls">
+		<panel name="preset_views_list">
+			<panel_camera_item name="front_view">
+				<panel_camera_item.text name="front_view_text">
+					Ön Görünüm
+				</panel_camera_item.text>
+			</panel_camera_item>
+			<panel_camera_item name="group_view">
+				<panel_camera_item.text name="side_view_text">
+					Yan Görünüm
+				</panel_camera_item.text>
+			</panel_camera_item>
+			<panel_camera_item name="rear_view">
+				<panel_camera_item.text name="rear_view_text">
+					Arkadan Görünüm
+				</panel_camera_item.text>
+			</panel_camera_item>
+		</panel>
+		<panel name="camera_modes_list">
+			<panel_camera_item name="object_view">
+				<panel_camera_item.text name="object_view_text">
+					Nesne Görünümü
+				</panel_camera_item.text>
+			</panel_camera_item>
+			<panel_camera_item name="mouselook_view">
+				<panel_camera_item.text name="mouselook_view_text">
+					Fare Üzerinden Görünüm
+				</panel_camera_item.text>
+			</panel_camera_item>
+		</panel>
+		<panel name="zoom">
+			<joystick_rotate name="cam_rotate_stick" tool_tip="Kamera odak etrafında yörüngede hareket etsin"/>
+			<slider_bar name="zoom_slider" tool_tip="Kamerayı odağa yakınlaştır"/>
+			<joystick_track name="cam_track_stick" tool_tip="Kamerayı yukarı ve aşağı, sola ve sağa hareket ettir"/>
+		</panel>
+	</panel>
+	<panel name="buttons">
+		<button label="" name="presets_btn" tool_tip="Ön Ayarlı Görünümler"/>
+		<button label="" name="pan_btn" tool_tip="Yörünge Değişimi - Yakınlaştırma - Kamerayı Çevirme"/>
+		<button label="" name="avatarview_btn" tool_tip="Kamera modları"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_chat_bar.xml b/indra/newview/skins/default/xui/tr/floater_chat_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dee17b7bc4c5782070abca38ab439fc63c0b5081
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_chat_bar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="chat_bar" 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"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_choose_group.xml b/indra/newview/skins/default/xui/tr/floater_choose_group.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1bfc772f4a91420360f4bf2833ee173fbd8cc26c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_choose_group.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="groups" title="GRUPLAR">
+	<text name="groupdesc">
+		Bir grup seç:
+	</text>
+	<button label="Tamam" label_selected="Tamam" name="OK"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_color_picker.xml b/indra/newview/skins/default/xui/tr/floater_color_picker.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c9465fff833e9200d87e8b11202c35ccad541241
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_color_picker.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="ColorPicker" title="RENK SEÇİCİ">
+	<text name="r_val_text">
+		Kırmızı:
+	</text>
+	<text name="g_val_text">
+		YeÅŸil:
+	</text>
+	<text name="b_val_text">
+		Mavi:
+	</text>
+	<text name="h_val_text">
+		Ton:
+	</text>
+	<text name="s_val_text">
+		Sat:
+	</text>
+	<text name="l_val_text">
+		Par:
+	</text>
+	<check_box label="Åžimdi uygula" name="apply_immediate"/>
+	<button label="Tamam" label_selected="Tamam" name="select_btn"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="cancel_btn"/>
+	<text name="Current color:">
+		Geçerli renk:
+	</text>
+	<text name="(Drag below to save.)">
+		(Kaydetmek için aşağıya sürükleyin)
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_critical.xml b/indra/newview/skins/default/xui/tr/floater_critical.xml
new file mode 100644
index 0000000000000000000000000000000000000000..041a303baebb894e366c0f71703d92af1b465a36
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_critical.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container">
+	<button label="Devam Et" label_selected="Devam Et" name="Continue"/>
+	<text name="tos_heading">
+		Lütfen aşağıdaki iletiyi dikkatle okuyun.
+	</text>
+	<text_editor name="tos_text">
+		TOS_TEXT
+	</text_editor>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..915770f727d1800c3d22dcceb6b8ce39640ad347
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_delete_env_preset.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<floater name="Delete Env Preset" title="ORTAM ÖN AYARINI SİL">
+	<string name="title_water">
+		Su Ön Ayarını Sil
+	</string>
+	<string name="title_sky">
+		Gökyüzü Ön Ayarını Sil
+	</string>
+	<string name="title_day_cycle">
+		Gün Döngüsünü Sil
+	</string>
+	<string name="label_water">
+		Ön Ayar:
+	</string>
+	<string name="label_sky">
+		Ön Ayar:
+	</string>
+	<string name="label_day_cycle">
+		Gün döngüsü:
+	</string>
+	<string name="msg_confirm_deletion">
+		Seçili ön ayarı silmek istediğinize emin misiniz?
+	</string>
+	<string name="msg_sky_is_referenced">
+		Bazı gün döngüleri tarafından başvurulan bir ön ayar kaldırılamaz.
+	</string>
+	<string name="combo_label">
+		-Bir ön ayar seçin-
+	</string>
+	<text name="label">
+		Ön Ayar:
+	</text>
+	<button label="Sil" name="delete"/>
+	<button label="Ä°ptal" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_destinations.xml b/indra/newview/skins/default/xui/tr/floater_destinations.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4504366d6376cac78f9c7d8b26cc1dde1468de13
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_destinations.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Destinations" title="HEDEF KONUMLAR"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_display_name.xml b/indra/newview/skins/default/xui/tr/floater_display_name.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e39be5a24b6a7df527476fb6a000d22143c0efa9
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_display_name.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Display Name" title="EKRAN ADINI DEĞİŞTİR">
+	<text name="info_text">
+		Avatarınıza verdiğiniz ad, Ekran Adınız olarak değerlendirilir. Bunu haftada bir kere değiştirebilirsiniz.
+	</text>
+	<text name="lockout_text">
+		Ekran Adınızı şu saate kadar değiştiremezsiniz: [TIME].
+	</text>
+	<text name="set_name_label">
+		Yeni Ekran Adı:
+	</text>
+	<text name="name_confirm_label">
+		Onaylamak için yeni adınızı tekrar yazın:
+	</text>
+	<button label="Kaydet" name="save_btn" tool_tip="Yeni Ekran Adınızı kaydedin"/>
+	<button label="Sıfırla" name="reset_btn" tool_tip="Ekran Adını Kullanıcı Adıyla aynı yap"/>
+	<button label="Ä°ptal" name="cancel_btn"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..4be1068dcc4abcd74675f1fe3c876fe2d02f9fc2
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_edit_day_cycle.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Day cycle" title="Gün Döngüsünü Düzenle">
+	<string name="title_new">
+		Yeni Bir Gün Döngüsü Oluştur
+	</string>
+	<string name="title_edit">
+		Gün Döngüsünü Düzenle
+	</string>
+	<string name="hint_new">
+		Gün döngünüzü adlandırın, bunu oluşturmak için denetimleri ayarlayın ve &quot;Kaydet&quot; üzerine tıklayın.
+	</string>
+	<string name="hint_edit">
+		Gün döngünüzü düzenlemek için alttaki denetimleri ayarlayın ve &quot;Kaydet&quot; üzerine tıklayın.
+	</string>
+	<string name="combo_label">
+		-Bir ön ayar seçin-
+	</string>
+	<text name="label">
+		Ön Ayar Adı:
+	</text>
+	<text name="note">
+		Not: Ön ayarınızın adını değiştirirseniz, yeni bir ön ayar oluşturursunuz ve mevcut ön ayar değişmez.
+	</text>
+	<text name="hint_item1">
+		- Birine tıklayarak gökyüzü ayarlarını/zamanı düzenleyin.
+	</text>
+	<text name="hint_item2">
+		- Sekmelere tıklayıp sürükleyerek geçiş sürlrn. ayarlayın.
+	</text>
+	<text name="hint_item3">
+		- Gün döngünüzü önizlemek için fırçayı kullanın.
+	</text>
+	<panel name="day_cycle_slider_panel">
+		<multi_slider initial_value="0" name="WLTimeSlider"/>
+		<multi_slider initial_value="0" name="WLDayCycleKeys"/>
+		<button label="Anahtar Ekle" label_selected="Anahtar Ekle" name="WLAddKey"/>
+		<button label="Anahtarı Sil" label_selected="Anahtarı Sil" name="WLDeleteKey"/>
+		<text name="WL12am">
+			12
+		</text>
+		<text name="WL3am">
+			3
+		</text>
+		<text name="WL6am">
+			6
+		</text>
+		<text name="WL9amHash">
+			9
+		</text>
+		<text name="WL12pmHash">
+			24
+		</text>
+		<text name="WL3pm">
+			15
+		</text>
+		<text name="WL6pm">
+			18
+		</text>
+		<text name="WL9pm">
+			21
+		</text>
+		<text name="WL12am2">
+			12
+		</text>
+		<text name="WL12amHash">
+			|
+		</text>
+		<text name="WL3amHash">
+			I
+		</text>
+		<text name="WL6amHash">
+			|
+		</text>
+		<text name="WL9amHash2">
+			I
+		</text>
+		<text name="WL12pmHash2">
+			|
+		</text>
+		<text name="WL3pmHash">
+			I
+		</text>
+		<text name="WL6pmHash">
+			|
+		</text>
+		<text name="WL9pmHash">
+			I
+		</text>
+		<text name="WL12amHash2">
+			|
+		</text>
+	</panel>
+	<text name="WLCurKeyPresetText">
+		Gökyüzü Ayarı:
+	</text>
+	<combo_box label="Ön Ayar" name="WLSkyPresets"/>
+	<text name="WLCurKeyTimeText">
+		Zaman:
+	</text>
+	<time name="time" value="6:00"/>
+	<check_box label="Bunu yeni gün döngüm yap" name="make_default_cb"/>
+	<button label="Kaydet" name="save"/>
+	<button label="Ä°ptal" name="cancel"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..0e9f86148de3c0b9ad7c37826b0bd8b3ca121f79
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_edit_sky_preset.xml
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Sky Preset" title="Gökyüzü Ön Ayarını Düzenle">
+	<string name="title_new">
+		Yeni Gökyüzü Ön Ayarı Oluştur
+	</string>
+	<string name="title_edit">
+		Gökyüzü Ön Ayarını Düzenle
+	</string>
+	<string name="hint_new">
+		Ön ayarınızı adlandırın, bunu oluşturmak için denetimleri ayarlayın ve &quot;Kaydet&quot; üzerine tıklayın.
+	</string>
+	<string name="hint_edit">
+		Gökyüzü ön ayarınızı düzenlemek için denetimleri ayarlayın ve &quot;Kaydet&quot; üzerine tıklayın.
+	</string>
+	<string name="combo_label">
+		-Bir ön ayar seçin-
+	</string>
+	<text name="hint">
+		Ön ayarınızı düzenlemek için denetimleri ayarlayın, sonra &quot;Kaydet&quot; üzerine tıklayın.
+	</text>
+	<text name="label">
+		Ön Ayar Adı:
+	</text>
+	<text name="note">
+		Not: Ön ayarınızın adını değiştirirseniz, yeni bir ön ayar oluşturursunuz ve mevcut ön ayar değişmez.
+	</text>
+	<tab_container name="WindLight Tabs">
+		<panel label="ATMOSFER" name="Atmosphere">
+			<text name="BHText">
+				Mavi Ufuk
+			</text>
+			<text name="BDensText">
+				Puslu Ufuk
+			</text>
+			<text name="BDensText2">
+				Mavi YoÄŸunluÄŸu
+			</text>
+			<text name="HDText">
+				Pus YoÄŸunluÄŸu
+			</text>
+			<text name="DensMultText">
+				Yoğunluk Çarpanı
+			</text>
+			<text name="WLDistanceMultText">
+				Mesafe Çarpanı
+			</text>
+			<text name="MaxAltText">
+				Maks Ä°rtifa
+			</text>
+		</panel>
+		<panel label="AYDINLATMA" name="Lighting">
+			<text name="SLCText">
+				Güneş/Ay Rengi
+			</text>
+			<text name="WLAmbientText">
+				Ortam
+			</text>
+			<text name="SunGlowText">
+				Güneş Parlaması
+			</text>
+			<slider label="Odak" name="WLGlowB"/>
+			<slider label="Büyüklük" name="WLGlowR"/>
+			<text name="WLStarText">
+				Yıldız Parlaklığı
+			</text>
+			<text name="SceneGammaText">
+				Sahne Gaması
+			</text>
+			<text name="TODText">
+				Güneş/Ay Konumu
+			</text>
+			<multi_slider initial_value="0" name="WLSunPos"/>
+			<text name="WL12amHash">
+				|
+			</text>
+			<text name="WL6amHash">
+				|
+			</text>
+			<text name="WL12pmHash2">
+				|
+			</text>
+			<text name="WL6pmHash">
+				|
+			</text>
+			<text name="WL12amHash2">
+				|
+			</text>
+			<text name="WL12am">
+				12
+			</text>
+			<text name="WL6am">
+				6
+			</text>
+			<text name="WL12pmHash">
+				24
+			</text>
+			<text name="WL6pm">
+				18
+			</text>
+			<text name="WL12am2">
+				12
+			</text>
+			<time name="WLDayTime" value="6:00"/>
+			<text name="WLEastAngleText">
+				Doğu Açısı
+			</text>
+		</panel>
+		<panel label="BULUTLAR" name="Clouds">
+			<text name="WLCloudColorText">
+				Bulut Rengi
+			</text>
+			<text name="WLCloudColorText2">
+				Bulut XY/YoÄŸunluÄŸu
+			</text>
+			<slider label="X" name="WLCloudX"/>
+			<slider label="Y" name="WLCloudY"/>
+			<slider label="D" name="WLCloudDensity"/>
+			<text name="WLCloudCoverageText">
+				Bulut Örtüsü
+			</text>
+			<text name="WLCloudScaleText">
+				Bulut Yüksekliği
+			</text>
+			<text name="WLCloudDetailText">
+				Bulut Ayrıntısı (XY/Yoğunluğu)
+			</text>
+			<slider label="X" name="WLCloudDetailX"/>
+			<slider label="Y" name="WLCloudDetailY"/>
+			<slider label="D" name="WLCloudDetailDensity"/>
+			<text name="WLCloudScrollXText">
+				Bulut Kaydırma X
+			</text>
+			<check_box label="Kilitle" name="WLCloudLockX"/>
+			<text name="WLCloudScrollYText">
+				Bulut Kaydırma Y
+			</text>
+			<check_box label="Kilitle" name="WLCloudLockY"/>
+		</panel>
+	</tab_container>
+	<check_box label="Bu ön ayarı yeni gökyüzü ayarım yap" name="make_default_cb"/>
+	<button label="Kaydet" name="save"/>
+	<button label="Ä°ptal" name="cancel"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..2ddee32bad027b54258a9d927ae3255b0b71a1a9
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_edit_water_preset.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Edit Water Preset" title="Su Ön Ayarını Düzenle">
+	<string name="title_new">
+		Yeni Bir Su Ön Ayarı Oluştur
+	</string>
+	<string name="title_edit">
+		Bir Su Ön Ayarını Düzenle
+	</string>
+	<string name="hint_new">
+		Ön ayarınızı adlandırın, bunu oluşturmak için denetimleri ayarlayın ve &quot;Kaydet&quot; üzerine tıklayın.
+	</string>
+	<string name="hint_edit">
+		Su ön ayarınızı düzenlemek için denetimleri ayarlayın ve &quot;Kaydet&quot; üzerine tıklayın.
+	</string>
+	<string name="combo_label">
+		-Bir ön ayar seçin-
+	</string>
+	<text name="hint">
+		Ön ayarınızı düzenlemek için denetimleri ayarlayın, sonra &quot;Kaydet&quot; üzerine tıklayın.
+	</text>
+	<text name="label">
+		Ön Ayar Adı:
+	</text>
+	<text name="note">
+		Not: Ön ayarınızın adını değiştirirseniz, yeni bir ön ayar oluşturursunuz ve mevcut ön ayar değişmez.
+	</text>
+	<panel name="panel_water_preset">
+		<text name="water_color_label">
+			Su Pus Rengi
+		</text>
+		<text name="water_fog_density_label">
+			Pus Yoğunluk Üssü
+		</text>
+		<text name="underwater_fog_modifier_label">
+			Sualtı Pus Değiştiricisi
+		</text>
+		<text name="BHText">
+			Büyük Dalga Yönü
+		</text>
+		<slider label="X" name="WaterWave1DirX"/>
+		<slider label="Y" name="WaterWave1DirY"/>
+		<text name="BDensText">
+			Yansıma Dalgacığı Ölçeği
+		</text>
+		<text name="HDText">
+			Fresnel Ölçeği
+		</text>
+		<text name="FresnelOffsetText">
+			Fresnel Dengeleyicisi
+		</text>
+		<text name="BHText2">
+			Küçük Dalga Yönü
+		</text>
+		<slider label="X" name="WaterWave2DirX"/>
+		<slider label="Y" name="WaterWave2DirY"/>
+		<text name="DensMultText">
+			Yukarıdan Kırılma Ölçeği
+		</text>
+		<text name="WaterScaleBelowText">
+			Aşağıdan Kırılma Ölçeği
+		</text>
+		<text name="MaxAltText">
+			Bulanıklaştırma Çarpanı
+		</text>
+		<text name="BHText3">
+			Normal Harita
+		</text>
+	</panel>
+	<check_box label="Bu ön ayarı yeni su ayarım yap" name="make_default_cb"/>
+	<button label="Kaydet" name="save"/>
+	<button label="Ä°ptal" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_env_settings.xml b/indra/newview/skins/default/xui/tr/floater_env_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d53629f6fe4b5fed8d2ecf337e391e0e46141c5e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_env_settings.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Environment Editor Floater" title="ÇEVRE DÜZENLEYİCİ">
+	<floater.string name="timeStr">
+		[hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
+	</floater.string>
+	<text name="EnvTimeText">
+		Günün Saati
+	</text>
+	<text name="EnvTimeText2">
+		12:00 PM
+	</text>
+	<text name="EnvCloudText">
+		Bulut Örtüsü
+	</text>
+	<text name="EnvWaterColorText">
+		Su Rengi
+	</text>
+	<color_swatch name="EnvWaterColor" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+	<text name="EnvWaterFogText">
+		Su Sisi
+	</text>
+	<button label="Gayrimenkul Saati Kullan" name="EnvUseEstateTimeButton"/>
+	<button label="Gelişmiş Gökyüzü" name="EnvAdvancedSkyButton"/>
+	<button label="GeliÅŸmiÅŸ Su" name="EnvAdvancedWaterButton"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_environment_settings.xml b/indra/newview/skins/default/xui/tr/floater_environment_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e702da7e1b010703089018e76ad79951779fa277
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_environment_settings.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Environment Editor Floater" title="ORTAM AYARLARI">
+	<text name="note">
+		Görüntüleyiciniz için ortam ayarlarını özelleştirmek isterseniz aşağıdaki seçenekleri kullanın.
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="Bölge ayarlarını kullanın" name="use_region_settings"/>
+		<radio_item label="Ortamımı özelleştir" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="note">
+			Not: Özel ayarlarınız diğer kullanıcılar tarafından görülmez.
+		</text>
+		<text name="water_settings_title">
+			Su Ayarı
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="-Bir ön ayar seçin-" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			Gökyüzü/Gün Dön.
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="Sabit gökyüzü" name="my_sky_settings"/>
+			<radio_item label="Gün döngüsü" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="-Bir ön ayar seçin-" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="-Bir ön ayar seçin-" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="Tamam" name="ok_btn"/>
+	<button label="Ä°ptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_event.xml b/indra/newview/skins/default/xui/tr/floater_event.xml
new file mode 100644
index 0000000000000000000000000000000000000000..60dece124bd1f5e8d33c90b5a4460d446c92a7a8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_event.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="Etkinlik" name="Event" title="ETKÄ°NLÄ°K AYRINTILARI">
+	<floater.string name="loading_text">
+		Yükleniyor...
+	</floater.string>
+	<floater.string name="done_text">
+		Tamamlandı
+	</floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_fast_timers.xml b/indra/newview/skins/default/xui/tr/floater_fast_timers.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5736bda45eb66ff50d5d3bc150f6193e23ace531
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_fast_timers.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="fast_timers">
+	<string name="pause">
+		Duraklat
+	</string>
+	<string name="run">
+		KoÅŸ
+	</string>
+	<button label="Duraklat" name="pause_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_font_test.xml b/indra/newview/skins/default/xui/tr/floater_font_test.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5371d5d2a413090979e2303ce9603c1f1a0ca5a8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_font_test.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="contents" title="FONT TESTÄ°"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_gesture.xml b/indra/newview/skins/default/xui/tr/floater_gesture.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5f5d28ad6c9305254246c847893e692c9493d439
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_gesture.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="Yerler" name="gestures" title="MÄ°MÄ°KLER">
+	<floater.string name="loading">
+		Yükleniyor...
+	</floater.string>
+	<floater.string name="playing">
+		(Oynuyor)
+	</floater.string>
+	<floater.string name="copy_name">
+		[COPY_NAME] kopyası
+	</floater.string>
+	<scroll_list name="gesture_list">
+		<scroll_list.columns label="Ad" name="name"/>
+		<scroll_list.columns label="Sohbet" name="trigger"/>
+		<scroll_list.columns label="Anahtar" name="shortcut"/>
+	</scroll_list>
+	<panel label="bottom_panel" name="bottom_panel">
+		<menu_button name="gear_btn" tool_tip="İlave seçenekler"/>
+		<button name="new_gesture_btn" tool_tip="Yeni mimik yap"/>
+		<button name="activate_btn" tool_tip="Seçilen mimiği Etkinleştir/Devre Dışı Bırak"/>
+		<button name="del_btn" tool_tip="Bu mimiÄŸi sil"/>
+	</panel>
+	<button label="Düzenle" name="edit_btn"/>
+	<button label="Oyna" name="play_btn"/>
+	<button label="Durdur" name="stop_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_god_tools.xml b/indra/newview/skins/default/xui/tr/floater_god_tools.xml
new file mode 100644
index 0000000000000000000000000000000000000000..26e5ebd18b8c6789d2be88ef875761b28dda6a88
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_god_tools.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="godtools floater" title="YÖNETİCİ ARAÇLARI">
+	<tab_container name="GodTools Tabs">
+		<panel label="AÄŸ" name="grid">
+			<button label="Bu Bölgenin Harita Görünürlük Önbelleklerini Temizle" label_selected="Bu Bölgenin Harita Görünürlük Önbelleklerini Temizle" name="Flush This Region&apos;s Map Visibility Caches"/>
+		</panel>
+		<panel label="Bölge" name="region">
+			<text name="Region Name:">
+				Bölge Adı:
+			</text>
+			<check_box label="Başlangıç" name="check prelude" tool_tip="Burayı başlangıç bölgesi yapmak için ayarlayın"/>
+			<check_box label="Sabit Güneş" name="check fixed sun" tool_tip="Güneş konumunu sabitleyin (Bölge/Gayrimenkul &gt; Yüzey için olduğu gibi"/>
+			<check_box label="Işınlanınca Ana Konumu Sıfırla" name="check reset home" tool_tip="Sakin ışınlanarak gittiğinde, ana konumlarını hedef konum olarak sıfırlayın."/>
+			<check_box label="Görünür" name="check visible" tool_tip="Yönetici olmayanların bölgeyi görmesi için bunu ayarlayın"/>
+			<check_box label="Hasar" name="check damage" tool_tip="Bölgede hasara imkan tanımak için bunu ayarlayın"/>
+			<check_box label="Trafik İzlemesini Engelle" name="block dwell" tool_tip="Bölgenin trafiği hesaplamaması için bunu ayarlayın"/>
+			<check_box label="Yer Şekillendirmeyi Engelle" name="block terraform" tool_tip="Kişilerin arazilerini şekillendirmesini engellemek için bunu ayarlayın"/>
+			<check_box label="Korumalı Alan" name="is sandbox" tool_tip="Bunun bir korumalı bölge olmasını açıp/kapayın"/>
+			<button label="Yüzeyi Kaydet" label_selected="Yüzeyi Kaydet" name="Bake Terrain" tool_tip="Mevcut yüzeyi varsayılan olarak kaydet"/>
+			<button label="Yüzeyi Geri Döndür" label_selected="Yüzeyi Geri Döndür" name="Revert Terrain" tool_tip="Mevcut yüzeyin yerine varsayılanı koy"/>
+			<button label="Yüzeyi Değiştir" label_selected="Yüzeyi Değiştir" name="Swap Terrain" tool_tip="Mevcut yüzeyi varsayılanla değiştir"/>
+			<text name="estate id">
+				Gayrimenkul KimliÄŸi:
+			</text>
+			<text name="parent id">
+				Ana Kimlik:
+			</text>
+			<line_editor name="parentestate" tool_tip="Burası bu bölge için ana gayrimenkuldur."/>
+			<text name="Grid Pos: ">
+				AÄŸ Konumu:
+			</text>
+			<line_editor name="gridposx" tool_tip="Burası bu bölge için ağdaki x konumudur"/>
+			<line_editor name="gridposy" tool_tip="Burası bu bölge için ağdaki y konumudur"/>
+			<text name="Redirect to Grid: ">
+				Ağa Tekrar Yönlendir:
+			</text>
+			<text name="billable factor text">
+				Faturalanabilir Çarpan:
+			</text>
+			<text name="land cost text">
+				m² başına L$:
+			</text>
+			<button label="Yenile" label_selected="Yenile" name="Refresh" tool_tip="Yukarıdaki bilgileri yenilemek için buraya tıklayın"/>
+			<button label="Uygula" label_selected="Uygula" name="Apply" tool_tip="Yukarıdaki herhangi bir değişikliği uygulamak için buraya tıklayın"/>
+			<button label="Bölge Seç" label_selected="Bölge Seç" name="Select Region" tool_tip="Arazi aracıyla tüm bölgeyi seçin"/>
+			<button label="Şimdi otomatik kaydet" label_selected="Şimdi otomatik kaydet" name="Autosave now" tool_tip="Gzip ile sıkıştırılmış halini otomatik kaydetme dizinine kaydedin"/>
+		</panel>
+		<panel label="Nesneler" name="objects">
+			<panel.string name="no_target">
+				(hedef yok)
+			</panel.string>
+			<text name="Region Name:">
+				Bölge Adı:
+			</text>
+			<text name="region name">
+				Welsh
+			</text>
+			<check_box label="Komut Dosyalarını Devre Dışı Bırak" name="disable scripts" tool_tip="Bu bölgedeki tüm komut dosyalarını devre dışı bırakmak için bunu ayarlayın"/>
+			<check_box label="Çarpışmaları Devre Dışı Bırak" name="disable collisions" tool_tip="Bu bölgedeki aracı dışı çarpışmaları devre dışı bırakmak için bunu ayarlayın"/>
+			<check_box label="Fiziği Devre Dışı Bırak" name="disable physics" tool_tip="Bu bölgedeki tüm fiziği devre dışı bırakmak için bunu ayarlayın"/>
+			<button label="Uygula" label_selected="Uygula" name="Apply" tool_tip="Yukarıdaki herhangi bir değişikliği uygulamak için buraya tıklayın"/>
+			<button label="Hedefi Ayarla" label_selected="Hedefi Ayarla" name="Set Target" tool_tip="Nesne silinmesi için hedef avatarı ayarlayın"/>
+			<text name="target_avatar_name">
+				(hedef yok)
+			</text>
+			<button label="Başkalarının Arazilerinde Hedefin Komut Dosyalı Nesnelerini Sil" label_selected="Başkalarının Arazilerinde Hedefin Komut Dosyalı Nesnelerini Sil" name="Delete Target&apos;s Scripted Objects On Others Land" tool_tip="Hedefe ait olmayan arazide hedefe ait olan tüm komut dosyalı nesneleri silin. (kopya yok) nesneler geri döndürülür."/>
+			<button label="Hedefin *Herhangi Bir* Arazideki Komut Dosyalı Nesnelerini Sil" label_selected="Hedefin *Herhangi Bir* Arazideki Komut Dosyalı Nesnelerini Sil" name="Delete Target&apos;s Scripted Objects On *Any* Land" tool_tip="Bu bölgede hedefe ait olan tüm komut dosyalı nesneleri silin. (kopya yok) nesneler geri döndürülür."/>
+			<button label="Hedefin *TÜM* Nesnelerini Sil" label_selected="Hedefin *TÜM* Nesnelerini Sil" name="Delete *ALL* Of Target&apos;s Objects" tool_tip="Bu bölgede hedefe ait olan tüm nesneleri silin. (kopya yok) nesneler geri döndürülür."/>
+			<button label="En Çok Çarpışanlar" label_selected="En Çok Çarpışanlar" name="Get Top Colliders" tool_tip="En dar fazda geri aramaları yaşayan nesnelerin listesini alır"/>
+			<button label="En Çok Komut Dsy. Çalştr." label_selected="En Çok Komut Dsy. Çalştr." name="Get Top Scripts" tool_tip="Komut dosyalarını çalıştırırken en çok zaman harcayan nesnelerin listesini alır"/>
+			<button label="Komut dosyaları özeti" label_selected="Komut dosyaları özeti" name="Scripts digest" tool_tip="Tüm komut dosyalarının ve her birinin ne kadar kullanıldığının listesini alır"/>
+		</panel>
+		<panel label="Talep" name="request">
+			<text name="Destination:">
+				Hedef Konum:
+			</text>
+			<combo_box name="destination">
+				<combo_box.item label="Seçim" name="item1"/>
+				<combo_box.item label="Aracı Bölgesi" name="item2"/>
+			</combo_box>
+			<text name="Request:">
+				Talep:
+			</text>
+			<combo_box name="request">
+				<combo_box.item label="çarpışanlar &lt;adımlar&gt;" name="item1"/>
+				<combo_box.item label="komut dosyaları &lt;sayım&gt;,&lt;opsiyonel desen&gt;" name="item2"/>
+				<combo_box.item label="nesneler &lt;desen&gt;" name="item3"/>
+				<combo_box.item label="&lt;asset_id&gt; oluÅŸtur" name="item4"/>
+			</combo_box>
+			<text name="Parameter:">
+				Parametre:
+			</text>
+			<button label="Talepte Bulun" label_selected="Talepte Bulun" name="Make Request"/>
+		</panel>
+	</tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_hardware_settings.xml b/indra/newview/skins/default/xui/tr/floater_hardware_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8e056b9b0d0353bfe45d6c5e389fddcdb2ab5934
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_hardware_settings.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Hardware Settings Floater" title="DONANIM AYARLARI">
+	<text name="Filtering:">
+		Filtreleme:
+	</text>
+	<check_box label="Anisotropik Filtreleme (etkinken daha yavaÅŸ)" name="ani"/>
+	<text name="antialiasing label">
+		Düzgünleştirme:
+	</text>
+	<combo_box label="Antialiasing" name="fsaa">
+		<combo_box.item label="Devre dışı" name="FSAADisabled"/>
+		<combo_box.item label="2x" name="2x"/>
+		<combo_box.item label="4x" name="4x"/>
+		<combo_box.item label="8x" name="8x"/>
+		<combo_box.item label="16x" name="16x"/>
+	</combo_box>
+	<text name="antialiasing restart">
+		(görüntülemeyi eniden başlatma gerekir)
+	</text>
+	<spinner label="Gama:" name="gamma"/>
+	<text name="(brightness, lower is brighter)">
+		(0 = varsayılan parlaklık, düşük = daha parlak)
+	</text>
+	<text name="Enable VBO:">
+		VBO EtkinleÅŸtir:
+	</text>
+	<check_box initial_value="true" label="OpenGL Vertex Tampon Nesnelerini Etkinleştir" name="vbo" tool_tip="Modern donanımlarda bunun etkinleştirilmesi performans artışı sağlar.  Ancak, eski donanımlardaki VBO uygulamaları yetersizdir ve etkinleştirildiğinde bilgisayarınız çökebilir."/>
+	<slider label="Doku Belleği (MB):" name="GraphicsCardTextureMemory" tool_tip="Dokular için tahsis edilecek bellek miktarı. Varsayılan değer video kartı belleğidir. Bu değerin küçültülmesi performansı artırabilir, ama ayrıca dokuları bulanıklaştırabilir."/>
+	<spinner label="Sis Mesafe Oranı:" name="fog"/>
+	<button label="Tamam" label_selected="Tamam" name="OK"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_help_browser.xml b/indra/newview/skins/default/xui/tr/floater_help_browser.xml
new file mode 100644
index 0000000000000000000000000000000000000000..695f838936969572d2cd01720cd3be9dbf48a085
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_help_browser.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_help_browser" title="YARDIM TARAYICISI">
+	<floater.string name="loading_text">
+		Yükleniyor...
+	</floater.string>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_how_to.xml b/indra/newview/skins/default/xui/tr/floater_how_to.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a42fe0b1221080c63dbd045dcd812a475aa38229
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_how_to.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_how_to" title="NASIL YAPILIR"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_hud.xml b/indra/newview/skins/default/xui/tr/floater_hud.xml
new file mode 100644
index 0000000000000000000000000000000000000000..09f119bbc1c5db9b8cd27da86f090cef64379ef4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_hud.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_hud" title="ÖĞRETİCİ"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_im_container.xml b/indra/newview/skins/default/xui/tr/floater_im_container.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4451d1d309bab917af42e9aa4f9b404cf6b62dcb
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_im_container.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<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
new file mode 100644
index 0000000000000000000000000000000000000000..bed08b36c612aef07c8217ef0f924eed62596b6b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_im_session.xml
@@ -0,0 +1,8 @@
+<?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>
diff --git a/indra/newview/skins/default/xui/tr/floater_image_preview.xml b/indra/newview/skins/default/xui/tr/floater_image_preview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a5963bdf63808185522f0e14f35a3e0cf8dbfb99
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_image_preview.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Image Preview">
+	<text name="name_label">
+		Ad:
+	</text>
+	<text name="description_label">
+		Açıklama:
+	</text>
+	<text name="preview_label">
+		Görüntüyü şu şekilde önizle:
+	</text>
+	<combo_box label="Giysi Türü" name="clothing_type_combo">
+		<item label="Görüntü" name="Image" value="Görüntü"/>
+		<item label="Saç" name="Hair" value="Saç"/>
+		<item label="Kadın Kafası" name="FemaleHead" value="Kadın Kafası"/>
+		<item label="Kadın Üst Gövde" name="FemaleUpperBody" value="Kadın Üst Gövde"/>
+		<item label="Kadın Alt Gövde" name="FemaleLowerBody" value="Kadın Alt Gövde"/>
+		<item label="Erkek Kafası" name="MaleHead" value="Erkek Kafası"/>
+		<item label="Erkek Üst Gövde" name="MaleUpperBody" value="Erkek Üst Gövde"/>
+		<item label="Erkek Alt Gövde" name="MaleLowerBody" value="Erkek Alt Gövde"/>
+		<item label="Etek" name="Skirt" value="Etek"/>
+		<item label="ÅžekillendirilmiÅŸ Prim" name="SculptedPrim" value="ÅžekillendirilmiÅŸ Prim"/>
+	</combo_box>
+	<text name="bad_image_text">
+		Görüntü okunamadı
+
+Görüntüyü 24 bit Targa .tga olarak kaydetmeyi dene.
+	</text>
+	<check_box label="Kayıpsız sıkıştırmayı kullan" name="lossless_check"/>
+	<button label="Ä°ptal" name="cancel_btn"/>
+	<button label="Karşıya Yükle (L$[AMOUNT])" name="ok_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_import_collada.xml b/indra/newview/skins/default/xui/tr/floater_import_collada.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1e77d1b3766099b44f174db6b72b81001ffb4305
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_import_collada.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Import Collada" title="Sahneyi İçeri Aktar">
+	<text name="mesh count">
+		Örgüler: [COUNT]
+	</text>
+	<text name="texture count">
+		Dokular: [COUNT]
+	</text>
+	<text name="status">
+		Durum: [STATUS]
+	</text>
+	<button label="Ä°ptal" name="cancel"/>
+	<button label="Tamam" name="ok"/>
+	<string name="status_idle">
+		BoÅŸta
+	</string>
+	<string name="status_uploading">
+		[NAME] karşıya yükleniyor
+	</string>
+	<string name="status_creating">
+		[NAME] nesnesi oluÅŸturuluyor
+	</string>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..adb03c2dff39b0cff65fee16dc045adaa8169d8f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_incoming_call.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="incoming call" title="Gelen arama">
+	<floater.string name="lifetime">
+		5
+	</floater.string>
+	<floater.string name="localchat">
+		Yakındaki Sesli Sohbet
+	</floater.string>
+	<floater.string name="anonymous">
+		anonim
+	</floater.string>
+	<floater.string name="VoiceInviteP2P">
+		arıyor.
+	</floater.string>
+	<floater.string name="VoiceInviteAdHoc">
+		bir Sesli Sohbet aramasına bir konferans araması ile katıldı.
+	</floater.string>
+	<floater.string name="VoiceInviteGroup">
+		&apos;[GROUP]&apos; ses kanalına şimdi katıldı.
+	</floater.string>
+	<floater.string name="VoiceInviteQuestionGroup">
+		[CURRENT_CHAT] sohbetinden ayrılıp, &apos;[GROUP]&apos; aramasına katılmak istiyor musunuz?
+	</floater.string>
+	<floater.string name="VoiceInviteQuestionDefault">
+		[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?
+	</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"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_inspect.xml b/indra/newview/skins/default/xui/tr/floater_inspect.xml
new file mode 100644
index 0000000000000000000000000000000000000000..09130a31f3dd8329e262ecfa077481e9671ebf6b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_inspect.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="inspect" title="NESNELERÄ° Ä°NCELE">
+	<floater.string name="timeStamp">
+		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+	</floater.string>
+	<scroll_list name="object_list" tool_tip="SL dünyasında vurgulamak için bu listedeki bir nesneyi seçin">
+		<scroll_list.columns label="Nesne Adı" name="object_name"/>
+		<scroll_list.columns label="Sahip Adı" name="owner_name"/>
+		<scroll_list.columns label="Oluşturanın Adı" name="creator_name"/>
+		<scroll_list.columns label="OluÅŸturma Tarihi" name="creation_date"/>
+	</scroll_list>
+	<button label="Sahip Profiline Bak..." name="button owner" tool_tip="Vurgulanan nesnenin sahibinin profiline bak"/>
+	<button label="Oluşturan Profiline Bak..." name="button creator" tool_tip="Vurgulanan nesneyi ilk oluşturanın profiline bak"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_inventory.xml b/indra/newview/skins/default/xui/tr/floater_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cfb12d4b68905edbde2254c5ab6daf87e63b99d8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_inventory.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Inventory" title="ENVANTERÄ°M">
+	<panel label="Envanter Paneli" name="Inventory Panel"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..e49fef1f4673ba661e515a88bc18426f1432cf23
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_inventory_item_properties.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="item properties" title="ENVANTER ÖGESİ ÖZELLİKLERİ">
+	<floater.string name="unknown">
+		(bilinmiyor)
+	</floater.string>
+	<floater.string name="public">
+		(kamuya açık)
+	</floater.string>
+	<floater.string name="you_can">
+		Åžunu yapabilirsiniz:
+	</floater.string>
+	<floater.string name="owner_can">
+		Sahip ÅŸunu yapabilir:
+	</floater.string>
+	<floater.string name="acquiredDate">
+		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+	</floater.string>
+	<text name="LabelItemNameTitle">
+		Ad:
+	</text>
+	<text name="LabelItemDescTitle">
+		Açıklama:
+	</text>
+	<text name="LabelCreatorTitle">
+		OluÅŸturan:
+	</text>
+	<button label="Profil..." name="BtnCreator"/>
+	<text name="LabelOwnerTitle">
+		Sahip:
+	</text>
+	<button label="Profil..." name="BtnOwner"/>
+	<text name="LabelAcquiredTitle">
+		Alınan:
+	</text>
+	<text name="LabelAcquiredDate">
+		24 Mayıs Çarş 12:50:46 2006
+	</text>
+	<text name="OwnerLabel">
+		Siz:
+	</text>
+	<check_box label="Düzenle" name="CheckOwnerModify"/>
+	<check_box label="Kopyala" name="CheckOwnerCopy"/>
+	<check_box label="Tekrar Sat" name="CheckOwnerTransfer"/>
+	<text name="AnyoneLabel">
+		Herkes:
+	</text>
+	<check_box label="Kopyala" name="CheckEveryoneCopy"/>
+	<text name="GroupLabel">
+		Grup:
+	</text>
+	<check_box label="PaylaÅŸ" name="CheckShareWithGroup"/>
+	<text name="NextOwnerLabel">
+		Sonraki sahip:
+	</text>
+	<check_box label="Düzenle" name="CheckNextOwnerModify"/>
+	<check_box label="Kopyala" name="CheckNextOwnerCopy"/>
+	<check_box label="Tekrar Sat" name="CheckNextOwnerTransfer"/>
+	<check_box label="Satılık" name="CheckPurchase"/>
+	<combo_box name="combobox sale copy">
+		<combo_box.item label="Kopyala" name="Copy"/>
+		<combo_box.item label="Orijinal" name="Original"/>
+	</combo_box>
+	<spinner label="Fiyat:" name="Edit Cost"/>
+	<text name="CurrencySymbol">
+		L$
+	</text>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..9d1a55675175352fcdcd04f869f3de6fa08586b4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_inventory_view_finder.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Inventory Finder" title="INVENTORY_RECENT_ITEMS">
+	<check_box label="Animasyon" name="check_animation"/>
+	<check_box label="Arama Kartları" name="check_calling_card"/>
+	<check_box label="Giysiler" name="check_clothing"/>
+	<check_box label="Mimikler" name="check_gesture"/>
+	<check_box label="Yer Ä°mleri" name="check_landmark"/>
+	<check_box label="Örgüler" name="check_mesh"/>
+	<check_box label="Not Kartları" name="check_notecard"/>
+	<check_box label="Nesneler" name="check_object"/>
+	<check_box label="Komut Dosyaları" name="check_script"/>
+	<check_box label="Sesler" name="check_sound"/>
+	<check_box label="Dokular" name="check_texture"/>
+	<check_box label="Anlık Görüntüler" name="check_snapshot"/>
+	<button label="Tümü" label_selected="Tümü" name="All"/>
+	<button label="Hiçbiri" label_selected="Hiçbiri" name="None"/>
+	<check_box label="Klasörleri her zaman göster" name="check_show_empty"/>
+	<check_box label="Oturum Kapandıktan Beri" name="check_since_logoff"/>
+	<text name="- OR -">
+		- VEYA -
+	</text>
+	<spinner label="Saat Önce" name="spin_hours_ago"/>
+	<spinner label="Gün Önce" name="spin_days_ago"/>
+	<button label="Kapat" label_selected="Kapat" name="Close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_joystick.xml b/indra/newview/skins/default/xui/tr/floater_joystick.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4a27aac3c193f0f73ea9fc8ce68950c8756b6c69
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_joystick.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Joystick" title="OYUN ÇUBUĞU YAPILANDIRMA">
+	<floater.string name="NoDevice">
+		cihaz tespit edilmedi
+	</floater.string>
+	<check_box label="Oyun Çub. Etkşt:" name="enable_joystick"/>
+	<spinner label="X Eks. Haritalama" name="JoystickAxis1"/>
+	<spinner label="Y Eks. Haritalama" name="JoystickAxis2"/>
+	<spinner label="Z Eks. Haritalama" name="JoystickAxis0"/>
+	<spinner label="EÄŸim Haritalama" name="JoystickAxis4"/>
+	<spinner label="Düşey Sapma Haritalama" name="JoystickAxis5"/>
+	<spinner label="Tilt Haritalama" name="JoystickAxis3"/>
+	<spinner label="Zum Haritalama" name="JoystickAxis6"/>
+	<check_box label="DoÄŸrudan Zum" name="ZoomDirect"/>
+	<check_box label="3B İmleç" name="Cursor3D"/>
+	<check_box label="Otomatik Düzey" name="AutoLeveling"/>
+	<text name="Control Modes:">
+		Kontrol Modları:
+	</text>
+	<check_box label="Avatar" name="JoystickAvatarEnabled"/>
+	<check_box label="Ä°nÅŸa Et" name="JoystickBuildEnabled"/>
+	<check_box label="Flycam" name="JoystickFlycamEnabled"/>
+	<stat_view label="Oyun Çubuğu İzleme" name="axis_view">
+		<stat_bar label="Eksen 0" name="axis0"/>
+		<stat_bar label="Eksen 1" name="axis1"/>
+		<stat_bar label="Eksen 2" name="axis2"/>
+		<stat_bar label="Eksen 3" name="axis3"/>
+		<stat_bar label="Eksen 4" name="axis4"/>
+		<stat_bar label="Eksen 5" name="axis5"/>
+	</stat_view>
+	<text name="XScale">
+		X Ölçeği
+	</text>
+	<text name="YScale">
+		Y Ölçeği
+	</text>
+	<text name="ZScale">
+		Z Ölçeği
+	</text>
+	<text name="PitchScale">
+		Eğim Ölçeği
+	</text>
+	<text name="YawScale">
+		Düşey Sapma Ölçeği
+	</text>
+	<text name="RollScale">
+		Tilt  Ölçeği
+	</text>
+	<text name="XDeadZone">
+		X Ölü Bölge
+	</text>
+	<text name="YDeadZone">
+		Y Ölü Bölge
+	</text>
+	<text name="ZDeadZone">
+		Z Ölü Bölge
+	</text>
+	<text name="PitchDeadZone">
+		Eğim Ölü Bölge
+	</text>
+	<text name="YawDeadZone">
+		Düşey Sapma Ölü Bölge
+	</text>
+	<text name="RollDeadZone">
+		Tilt Ölü Bölge
+	</text>
+	<text name="Feathering">
+		Uçlarda Rötuş
+	</text>
+	<text name="ZoomScale2">
+		Zum Ölçeği
+	</text>
+	<text name="ZoomDeadZone">
+		Zum Ölü Bölge
+	</text>
+	<button label="UzayNavigatörü Varsayılanlar" name="SpaceNavigatorDefaults"/>
+	<button label="Tamam" label_selected="Tamam" name="ok_btn"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_lagmeter.xml b/indra/newview/skins/default/xui/tr/floater_lagmeter.xml
new file mode 100644
index 0000000000000000000000000000000000000000..736c50be90a4a68ef1f2d98e4751017496595b84
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_lagmeter.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_lagmeter" title="GECİKME ÖLÇER">
+	<floater.string name="max_title_msg">
+		Gecikme Ölçer
+	</floater.string>
+	<floater.string name="max_width_px">
+		360
+	</floater.string>
+	<floater.string name="min_title_msg">
+		Gecikme
+	</floater.string>
+	<floater.string name="min_width_px">
+		90
+	</floater.string>
+	<floater.string name="client_text_msg">
+		Ä°stemci
+	</floater.string>
+	<floater.string name="client_frame_rate_critical_fps">
+		10
+	</floater.string>
+	<floater.string name="client_frame_rate_warning_fps">
+		15
+	</floater.string>
+	<floater.string name="client_frame_time_window_bg_msg">
+		Normal, pencere alt zeminde
+	</floater.string>
+	<floater.string name="client_frame_time_critical_msg">
+		İstemci kare hızı [CLIENT_FRAME_RATE_CRITICAL] altında
+	</floater.string>
+	<floater.string name="client_frame_time_warning_msg">
+		İstemci kare hızı [CLIENT_FRAME_RATE_CRITICAL] ile [CLIENT_FRAME_RATE_WARNING] arasınad
+	</floater.string>
+	<floater.string name="client_frame_time_normal_msg">
+		Normal
+	</floater.string>
+	<floater.string name="client_draw_distance_cause_msg">
+		Muhtemel neden: Çizme mesafesi çok yüksek
+	</floater.string>
+	<floater.string name="client_texture_loading_cause_msg">
+		Muhtemel neden: Görüntüler yükleniyor
+	</floater.string>
+	<floater.string name="client_texture_memory_cause_msg">
+		Muhtemel neden: Bellekte çok fazla görüntü
+	</floater.string>
+	<floater.string name="client_complex_objects_cause_msg">
+		Muhtemel neden: Sahnede çok fazla karmaşık nesne
+	</floater.string>
+	<floater.string name="network_text_msg">
+		AÄŸ
+	</floater.string>
+	<floater.string name="network_packet_loss_critical_pct">
+		10
+	</floater.string>
+	<floater.string name="network_packet_loss_warning_pct">
+		5
+	</floater.string>
+	<floater.string name="network_packet_loss_critical_msg">
+		Bağlantı paketlerin % [NETWORK_PACKET_LOSS_CRITICAL]&apos;sinden fazlasını bırakıyor
+	</floater.string>
+	<floater.string name="network_packet_loss_warning_msg">
+		Bağlantı paketlerin % [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]&apos;sini bırakıyor
+	</floater.string>
+	<floater.string name="network_performance_normal_msg">
+		Normal
+	</floater.string>
+	<floater.string name="network_ping_critical_ms">
+		600
+	</floater.string>
+	<floater.string name="network_ping_warning_ms">
+		300
+	</floater.string>
+	<floater.string name="network_ping_critical_msg">
+		Bağlantı ping süresi [NETWORK_PING_CRITICAL] ms.den fazla
+	</floater.string>
+	<floater.string name="network_ping_warning_msg">
+		Bağlantı ping süresi [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms
+	</floater.string>
+	<floater.string name="network_packet_loss_cause_msg">
+		Muhtemel yetersiz bağlantı veya &apos;Bant Genişliği&apos; tercihi çok yüksek.
+	</floater.string>
+	<floater.string name="network_ping_cause_msg">
+		Muhtemel yetersiz bağlantı veya dosya paylaşım uygulaması.
+	</floater.string>
+	<floater.string name="server_text_msg">
+		Sunucu
+	</floater.string>
+	<floater.string name="server_frame_rate_critical_fps">
+		20
+	</floater.string>
+	<floater.string name="server_frame_rate_warning_fps">
+		30
+	</floater.string>
+	<floater.string name="server_single_process_max_time_ms">
+		20
+	</floater.string>
+	<floater.string name="server_frame_time_critical_msg">
+		Simülatör kare hızı [SERVER_FRAME_RATE_CRITICAL] altında
+	</floater.string>
+	<floater.string name="server_frame_time_warning_msg">
+		Simülatör kare hızı [SERVER_FRAME_RATE_CRITICAL] ve [SERVER_FRAME_RATE_WARNING] arasında
+	</floater.string>
+	<floater.string name="server_frame_time_normal_msg">
+		Normal
+	</floater.string>
+	<floater.string name="server_physics_cause_msg">
+		Muhtemel Neden: Çok fazla fiziki nesne
+	</floater.string>
+	<floater.string name="server_scripts_cause_msg">
+		Muhtemel Neden: Çok fazla komut dosyalı nesne
+	</floater.string>
+	<floater.string name="server_net_cause_msg">
+		Muhtemel Neden: Çok fazla ağ trafiği
+	</floater.string>
+	<floater.string name="server_agent_cause_msg">
+		Muhtemel Neden: Bölgede hareket eden çok fazla insan var
+	</floater.string>
+	<floater.string name="server_images_cause_msg">
+		Muhtemel Neden: Çok fazla görüntü hesabı
+	</floater.string>
+	<floater.string name="server_generic_cause_msg">
+		Muhtemel Neden: Simülatör yükü çok ağır
+	</floater.string>
+	<floater.string name="smaller_label">
+		&gt;&gt;
+	</floater.string>
+	<floater.string name="bigger_label">
+		&lt;&lt;
+	</floater.string>
+	<button name="client_lagmeter" tool_tip="Ä°stemci gecikme durumu"/>
+	<text name="client">
+		Ä°stemci
+	</text>
+	<text name="client_text">
+		Normal
+	</text>
+	<button name="network_lagmeter" tool_tip="AÄŸ gecikme durumu"/>
+	<text name="network">
+		AÄŸ
+	</text>
+	<text name="network_text">
+		Normal
+	</text>
+	<button name="server_lagmeter" tool_tip="Sunucu gecikme durumu"/>
+	<text name="server">
+		Sunucu
+	</text>
+	<text name="server_text">
+		Normal
+	</text>
+	<button label="&gt;&gt;" name="minimize" tool_tip="Gezdirici büyüklüğünü değiştir"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_land_holdings.xml b/indra/newview/skins/default/xui/tr/floater_land_holdings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a075a93c1ec6499efac722cedc20eda20671402f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_land_holdings.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="land holdings floater" title="ARAZÄ°M">
+	<floater.string name="area_string">
+		[AREA] m²
+	</floater.string>
+	<scroll_list name="parcel list">
+		<scroll_list.columns label="Parsel" name="name"/>
+		<scroll_list.columns label="Bölge" name="location"/>
+		<scroll_list.columns label="Tür" name="type"/>
+		<scroll_list.columns label="Alan" name="area"/>
+	</scroll_list>
+	<button label="Işınla" label_selected="Işınla" name="Teleport" tool_tip="Bu arazinin merkezine ışınlama yapılsın."/>
+	<button label="Harita" label_selected="Harita" name="Show on Map" tool_tip="Bu arazi dünya haritasında gösterilsin"/>
+	<text name="contrib_label">
+		Gruplarınıza katkılar:
+	</text>
+	<scroll_list name="grant list">
+		<scroll_list.columns label="Grup" name="group"/>
+		<scroll_list.columns label="Alan" name="area"/>
+	</scroll_list>
+	<text name="allowed_label">
+		Mevcut ödeme planı kapsamında sahip olunmasına izin verilen araziler:
+	</text>
+	<text name="allowed_text">
+		[AREA] m²
+	</text>
+	<text name="current_label">
+		Åžu anda sahip olunan araziler:
+	</text>
+	<text name="current_text">
+		[AREA] m²
+	</text>
+	<text name="available_label">
+		Arazi satın alımı için kullanılabilir:
+	</text>
+	<text name="available_text">
+		[AREA] m²
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/tr/floater_live_lsleditor.xml
new file mode 100644
index 0000000000000000000000000000000000000000..34c3e28a0b6b52383ba1064e7e1a5d57c73bb4dc
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_live_lsleditor.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script ed float" title="KOMUT DOSYASI: YENÄ° KOMUT DOSYASI">
+	<floater.string name="not_allowed">
+		Bu komut dosyasını görüntüleyemez veya düzenleyemezsiniz, çünkü &quot;kopyalanamaz&quot; olarak ayarlanmıştır. Bir nesnenin içerisindeki bir komut dosyasını görüntülemek veya düzenlemek için tam izinlere ihtiyacınız var.
+	</floater.string>
+	<floater.string name="script_running">
+		Çalışıyor
+	</floater.string>
+	<floater.string name="Title">
+		KOMUT DOSYASI: [NAME]
+	</floater.string>
+	<button label="Sıfırla" label_selected="Sıfırla" name="Reset"/>
+	<check_box initial_value="true" label="Çalışıyor" name="running"/>
+	<check_box initial_value="true" label="Mono" name="mono"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_lsl_guide.xml b/indra/newview/skins/default/xui/tr/floater_lsl_guide.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0b898d603240a94abac0c6757e82610ffe7eb4b0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_lsl_guide.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script ed float" title="LSL REFERANSI">
+	<check_box label="Ä°mleci izle" name="lock_check"/>
+	<combo_box label="Kilitle" name="history_combo"/>
+	<button label="Geri" name="back_btn"/>
+	<button label="Ä°leri" name="fwd_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_map.xml b/indra/newview/skins/default/xui/tr/floater_map.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7d6c314f04a10d104a49773a42569779b4b81738
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_map.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Map" title="MÄ°NÄ°-HARÄ°TA">
+	<floater.string name="ToolTipMsg">
+		[REGION](Haritayı açmak için çift tıkla, yatay hareket için shift çek)
+	</floater.string>
+	<floater.string name="AltToolTipMsg">
+		[REGION](Işınlamak için çift tıkla, yatay hareket için shift çek)
+	</floater.string>
+	<floater.string name="mini_map_caption">
+		Mini-harita
+	</floater.string>
+	<text label="K" name="floater_map_north">
+		K
+	</text>
+	<text label="E" name="floater_map_east">
+		E
+	</text>
+	<text label="B" name="floater_map_west">
+		B
+	</text>
+	<text label="G" name="floater_map_south">
+		G
+	</text>
+	<text label="GD" name="floater_map_southeast">
+		GD
+	</text>
+	<text label="KD" name="floater_map_northeast">
+		KD
+	</text>
+	<text label="GB" name="floater_map_southwest">
+		GB
+	</text>
+	<text label="KB" name="floater_map_northwest">
+		KB
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_media_browser.xml b/indra/newview/skins/default/xui/tr/floater_media_browser.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6cce4d59b8f3995cf775427bbcec0f6c5c7d6b4b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_media_browser.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_about" title="ORTAM TARAYICISI">
+	<floater.string name="home_page_url">
+		http://www.secondlife.com
+	</floater.string>
+	<floater.string name="support_page_url">
+		http://support.secondlife.com
+	</floater.string>
+	<layout_stack name="stack1">
+		<layout_panel name="nav_controls">
+			<button label="Geri" name="back"/>
+			<button label="Ä°leri" name="forward"/>
+			<button label="Yeniden Yükle" name="reload"/>
+			<button label="Git" name="go"/>
+		</layout_panel>
+		<layout_panel name="time_controls">
+			<button label="baÅŸa sar" name="rewind"/>
+			<button label="durdur" name="stop"/>
+			<button label="ileri" name="seek"/>
+		</layout_panel>
+		<layout_panel name="parcel_owner_controls">
+			<button label="Mevcut Sayfayı Parsele Gönder" name="assign"/>
+		</layout_panel>
+		<layout_panel name="external_controls">
+			<button label="Web Tarayıcımda Aç" name="open_browser"/>
+			<check_box label="Her zaman web tarayıcımda aç" name="open_always"/>
+			<button label="Kapat" name="close"/>
+		</layout_panel>
+	</layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_media_settings.xml b/indra/newview/skins/default/xui/tr/floater_media_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4205a0dbef26ed17cf5f84436749bf04c2ad5a51
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_media_settings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="media_settings" title="ORTAM AYARLARI">
+	<button label="Tamam" label_selected="Tamam" name="OK"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="Cancel"/>
+	<button label="Uygula" label_selected="Uygula" name="Apply"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_mem_leaking.xml b/indra/newview/skins/default/xui/tr/floater_mem_leaking.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ba87ee99a42c0560094ad25781330f6fd77de258
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_mem_leaking.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="MemLeak" title="BİR BELLEK SIZINTISI BENZETİMİNİ GERÇEKLEŞTİR">
+	<spinner label="Sızıntı Hızı (çerçeve başına bayt):" name="leak_speed"/>
+	<spinner label="Maks Sızan Bellek (MB):" name="max_leak"/>
+	<text name="total_leaked_label">
+		Geçerli sızan bellek: [SIZE] KB
+	</text>
+	<text name="note_label_1">
+		[NOTE1]
+	</text>
+	<text name="note_label_2">
+		[NOTE2]
+	</text>
+	<button label="BaÅŸla" name="start_btn"/>
+	<button label="Durdur" name="stop_btn"/>
+	<button label="Bırak" name="release_btn"/>
+	<button label="Kapat" name="close_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_model_preview.xml b/indra/newview/skins/default/xui/tr/floater_model_preview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0c7cabc6ea31456c9901c594f3b2d4ba1df0d944
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_model_preview.xml
@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Model Preview" title="MODELÄ° KARÅžIYA YÃœKLE">
+	<string name="status_idle"/>
+	<string name="status_parse_error">
+		Hata: Tarih ayrıştırma sorunu - ayrıntılar için günlüğe bakın.
+	</string>
+	<string name="status_material_mismatch">
+		Hata: Modelin malzemesi, referans modelin bir alt kümesi değil.
+	</string>
+	<string name="status_reading_file">
+		Yükleniyor...
+	</string>
+	<string name="status_generating_meshes">
+		Örgüler Oluşturuluyor...
+	</string>
+	<string name="status_vertex_number_overflow">
+		Hata: Köşe numarası 65534&apos;ten fazla, işlem durduruldu!
+	</string>
+	<string name="bad_element">
+		Hata: Öğe geçersiz
+	</string>
+	<string name="high">
+		Yüksek
+	</string>
+	<string name="medium">
+		Orta
+	</string>
+	<string name="low">
+		Düşük
+	</string>
+	<string name="lowest">
+		En Düşük
+	</string>
+	<string name="mesh_status_good">
+		Uygula!
+	</string>
+	<string name="mesh_status_na">
+		G/D
+	</string>
+	<string name="mesh_status_none">
+		Hiçbiri
+	</string>
+	<string name="mesh_status_submesh_mismatch">
+		Ayrıntı seviyelerinde farklı sayıda dokulanabilir yüz var.
+	</string>
+	<string name="mesh_status_mesh_mismatch">
+		Ayrıntı seviyelerinde farklı sayıda örgü örneği var.
+	</string>
+	<string name="mesh_status_too_many_vertices">
+		Ayrıntı seviyesinde fazla sayıda köşe var.
+	</string>
+	<string name="mesh_status_missing_lod">
+		Gereken ayrıntı seviyesi eksik.
+	</string>
+	<string name="mesh_status_invalid_material_list">
+		Ayrıntı seviyesi malzemeleri, referans modelin bir alt kümesi değil.
+	</string>
+	<string name="layer_all">
+		Tümü
+	</string>
+	<string name="decomposing">
+		Çözümleniyor...
+	</string>
+	<string name="simplifying">
+		BasitleÅŸtiriliyor...
+	</string>
+	<string name="tbd">
+		ileride belirlenecektir
+	</string>
+	<panel name="left_panel">
+		<panel name="model_name_representation_panel">
+			<text name="name_label">
+				Model adı:
+			</text>
+			<text name="model_category_label">
+				Bu modelin temsil ettiÄŸi...
+			</text>
+			<combo_box name="model_category_combo">
+				<combo_item label="Birini Seçin..." name="Choose one"/>
+				<combo_item label="Avatar ÅŸekli" name="Avatar shape"/>
+				<combo_item label="Avatar aksesuarı" name="Avatar attachment"/>
+				<combo_item label="Hareket eden nesne (araç, hayvan)" name="Moving object (vehicle, animal)"/>
+				<combo_item label="Bina BileÅŸeni" name="Building Component"/>
+				<combo_item label="Büyük, hareketsiz, vs." name="Large, non moving etc"/>
+				<combo_item label="Daha küçük, hareketsiz, vs." name="Smaller, non-moving etc"/>
+				<combo_item label="Bunlardan herhangi biri deÄŸil" name="Not really any of these"/>
+			</combo_box>
+		</panel>
+		<tab_container name="import_tab">
+			<panel label="Ayrıntı Seviyesi" name="lod_panel" title="Ayrıntı Seviyesi">
+				<text initial_value="Kaynak" name="source" value="Kaynak"/>
+				<text initial_value="Üçgenler" name="triangles" value="Üçgenler"/>
+				<text initial_value="Köşeler" name="vertices" value="Köşeler"/>
+				<text initial_value="Yüksek" name="high_label" value="Yüksek"/>
+				<button label="Gözat..." name="lod_browse_high"/>
+				<text initial_value="0" name="high_triangles" value="0"/>
+				<text initial_value="0" name="high_vertices" value="0"/>
+				<text initial_value="Orta" name="medium_label" value="Orta"/>
+				<button label="Gözat..." name="lod_browse_medium"/>
+				<text initial_value="0" name="medium_triangles" value="0"/>
+				<text initial_value="0" name="medium_vertices" value="0"/>
+				<text initial_value="Düşük" name="low_label" value="Düşük"/>
+				<button label="Gözat..." name="lod_browse_low"/>
+				<text initial_value="0" name="low_triangles" value="0"/>
+				<text initial_value="0" name="low_vertices" value="0"/>
+				<text initial_value="En Düşük" name="lowest_label" value="En Düşük"/>
+				<button label="Gözat..." name="lod_browse_lowest"/>
+				<text initial_value="0" name="lowest_triangles" value="0"/>
+				<text initial_value="0" name="lowest_vertices" value="0"/>
+				<check_box label="Normalleri OluÅŸtur" name="gen_normals"/>
+				<text initial_value="Kıvrım Açısı:" name="crease_label" value="Kıvrım Açısı:"/>
+				<spinner name="crease_angle" value="75"/>
+			</panel>
+			<panel label="Fizik" name="physics_panel">
+				<panel name="physics geometry">
+					<text name="first_step_name">
+						1. Adım: Ayrıntı Seviyesi
+					</text>
+					<combo_box name="physics_lod_combo" tool_tip="Fizik şekli için kullanılacak ayrıntı">
+						<combo_item name="choose_one">
+							Birini seçin...
+						</combo_item>
+						<combo_item name="physics_high">
+							Yüksek
+						</combo_item>
+						<combo_item name="physics_medium">
+							Orta
+						</combo_item>
+						<combo_item name="physics_low">
+							Düşük
+						</combo_item>
+						<combo_item name="physics_lowest">
+							En Düşük
+						</combo_item>
+						<combo_item name="load_from_file">
+							Dosyadan
+						</combo_item>
+					</combo_box>
+					<button label="Gözat..." name="physics_browse"/>
+				</panel>
+				<panel name="physics analysis">
+					<text name="method_label">
+						2. Adım: Çözümle
+					</text>
+					<text name="analysis_method_label">
+						Yöntem:
+					</text>
+					<text name="quality_label">
+						Kalite:
+					</text>
+					<text name="smooth_method_label">
+						Düzeltme:
+					</text>
+					<check_box label="Delikleri Kapat" name="Close Holes (Slow)"/>
+					<button label="Çözümle" name="Decompose"/>
+					<button label="Ä°ptal" name="decompose_cancel"/>
+				</panel>
+				<panel name="physics simplification">
+					<text name="second_step_label">
+						3. Adım: Basitleştir
+					</text>
+					<text name="simp_method_header">
+						Yöntem:
+					</text>
+					<text name="pass_method_header">
+						Geçişler:
+					</text>
+					<text name="Detail Scale label">
+						Ayrıntı ölçeği:
+					</text>
+					<text name="Retain%_label">
+						Koru:
+					</text>
+					<combo_box name="Combine Quality" value="1"/>
+					<button label="BasitleÅŸtir" name="Simplify"/>
+					<button label="Ä°ptal" name="simplify_cancel"/>
+				</panel>
+				<panel name="physics info">
+					<text name="results_text">
+						Sonuçlar:
+					</text>
+					<text name="physics_triangles">
+						Üçgenler: [TRIANGLES],
+					</text>
+					<text name="physics_points">
+						Köşeler: [POINTS],
+					</text>
+					<text name="physics_hulls">
+						Gövdeler: [HULLS]
+					</text>
+				</panel>
+			</panel>
+			<panel label="Karşıya yükleme seçenekleri" name="modifiers_panel">
+				<text name="scale_label">
+					Ölçek (1=ölçekleme yok):
+				</text>
+				<spinner name="import_scale" value="1.0"/>
+				<text name="dimensions_label">
+					Boyutlar:
+				</text>
+				<text name="import_dimensions">
+					[X] X [Y] X [Z]
+				</text>
+				<check_box label="Dokuları dahil et" name="upload_textures"/>
+				<text name="include_label">
+					Sadece avatar modelleri için:
+				</text>
+				<check_box label="Dış katman ağırlığını dahil et" name="upload_skin"/>
+				<check_box label="Eklem konumlarını dahil et" name="upload_joints"/>
+				<text name="pelvis_offset_label">
+					Z kayması (avatarı kaldırmak veya indirmek için):
+				</text>
+				<spinner name="pelvis_offset" value="0.0"/>
+			</panel>
+		</tab_container>
+		<panel name="weights_and_warning_panel">
+			<button label="Ağırlıkları ve ücreti hesapla" name="calculate_btn" tool_tip="Ağırlıkları ve ücreti hesapla"/>
+			<button label="Ä°ptal" name="cancel_btn"/>
+			<button label="Karşıya Yükle" name="ok_btn" tool_tip="Simülatöre karşıya yükle"/>
+			<button label="Ayarları temizle ve formu sıfırla" name="reset_btn"/>
+			<text name="upload_fee">
+				Karşıya yükleme ücreti: L$ [FEE]
+			</text>
+			<text name="prim_weight">
+				Arazi etkisi [EQ]
+			</text>
+			<text name="download_weight">
+				Karşıdan Yükle: [ST]
+			</text>
+			<text name="physics_weight">
+				Fizik: [PH]
+			</text>
+			<text name="server_weight">
+				Sunucu: [SIM]
+			</text>
+			<text name="warning_title">
+				NOT:
+			</text>
+			<text name="warning_message">
+				Örgü modellerini karşıya yüklemeye hakkınız yok. Nasıl onaylanacağınızı [[VURL] öğrenin].
+			</text>
+			<text name="status">
+				[STATUS]
+			</text>
+		</panel>
+	</panel>
+	<text name="lod_label">
+		Önizleme:
+	</text>
+	<panel name="right_panel">
+		<combo_box name="preview_lod_combo" tool_tip="Önizleme işlemesinde görülecek ayrıntı seviyesi">
+			<combo_item name="high">
+				Yüksek
+			</combo_item>
+			<combo_item name="medium">
+				Orta
+			</combo_item>
+			<combo_item name="low">
+				Düşük
+			</combo_item>
+			<combo_item name="lowest">
+				En Düşük
+			</combo_item>
+		</combo_box>
+		<text name="label_display">
+			Ekran...
+		</text>
+		<check_box label="Kenarlar" name="show_edges"/>
+		<check_box label="Fizik" name="show_physics"/>
+		<check_box label="Dokular" name="show_textures"/>
+		<check_box label="Dış katman ağırlıkları" name="show_skin_weight"/>
+		<check_box label="Eklemler" name="show_joint_positions"/>
+		<text name="physics_explode_label">
+			Önizleme Yayılımı:
+		</text>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_model_wizard.xml b/indra/newview/skins/default/xui/tr/floater_model_wizard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b3c72ba2da45557de56d7c3067e3686051244932
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_model_wizard.xml
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Model Wizard" title="KARÅžIYA MODEL YÃœKLEME SÄ°HÄ°RBAZI">
+	<button label="5. Karşıya Yükle" name="upload_btn"/>
+	<button label="4. Ä°ncele" name="review_btn"/>
+	<button label="3. Fizik" name="physics_btn"/>
+	<button label="2. Optimize et" name="optimize_btn"/>
+	<button label="1. Dosya Seç" name="choose_file_btn"/>
+	<panel name="choose_file_panel">
+		<panel name="header_panel">
+			<text name="header_text">
+				Model dosyasını seçin
+			</text>
+		</panel>
+		<panel name="content">
+			<text name="advanced_users_text">
+				Gelişmiş kullanıcılar: Eğer 3B içerik oluşturma araçlarını kullanmayı biliyorsanız, Gelişmiş Karşıya Yükleyiciyi kullanmak isteyebilirsiniz.
+			</text>
+			<button label="Gelişmişe geç" name="switch_to_advanced"/>
+			<text name="Cache location">
+				Karşıya yüklenecek model dosyasını seçin
+			</text>
+			<button label="Gözat..." label_selected="Gözat..." name="browse"/>
+			<text name="Model types">
+				Second Life, COLLADA (.dae) dosyalarını destekler
+			</text>
+			<text name="dimensions">
+				X         Y         Z
+			</text>
+			<text name="warning_label">
+				UYARI:
+			</text>
+			<text name="warning_text">
+				Bu modelin Second Life sunucularına nihai karşıya yükleme adımını tamamlayamayacaksınız. Hesabınızı örgü modellerinin karşıya yüklenmesi için ayarlamanın [secondlife:///app/floater/learn_more nasıl yapılacağını öğrenin].
+			</text>
+		</panel>
+	</panel>
+	<panel name="optimize_panel">
+		<panel name="header_panel">
+			<text name="header_text">
+				Modeli optimize et
+			</text>
+		</panel>
+		<text name="description">
+			Modeli performans için optimize ettik. İstiyorsanız daha da ayarlayabilirsiniz.
+		</text>
+		<panel name="content">
+			<text name="high_detail_text">
+				Ayrıntı Seviyesi Oluştur: Yüksek
+			</text>
+			<text name="medium_detail_text">
+				Ayrıntı Seviyesi Oluştur: Orta
+			</text>
+			<text name="low_detail_text">
+				Ayrıntı Seviyesi Oluştur: Düşük
+			</text>
+			<text name="lowest_detail_text">
+				Ayrıntı Seviyesi Oluştur: En Düşük
+			</text>
+		</panel>
+		<panel name="content2">
+			<button label="Geometri hesaplarını tekrar yap" name="recalculate_geometry_btn"/>
+			<text name="lod_label">
+				Geometri önizleme
+			</text>
+			<combo_box name="preview_lod_combo" tool_tip="Önizleme işlemesinde görülecek ayrıntı seviyesi">
+				<combo_item name="high">
+					Çok ayrıntı
+				</combo_item>
+				<combo_item name="medium">
+					Orta düzey ayrıntı
+				</combo_item>
+				<combo_item name="low">
+					Az ayrıntı
+				</combo_item>
+				<combo_item name="lowest">
+					En az ayrıntı
+				</combo_item>
+			</combo_box>
+		</panel>
+	</panel>
+	<panel name="physics_panel">
+		<panel name="header_panel">
+			<text name="header_text">
+				Fizik ayarlarını yap
+			</text>
+		</panel>
+		<text name="description">
+			Modelin dış gövdesi için bir şekil oluşturacağız. Modelinizin amacına uygun olarak şeklin ayrıntı seviyesini belirleyin.
+		</text>
+		<panel name="content">
+			<button label="Fizik hesaplarını tekrar yap" name="recalculate_physics_btn"/>
+			<button label="Tekrar hesaplanıyor..." name="recalculating_physics_btn"/>
+			<text name="lod_label">
+				Fizik önizleme
+			</text>
+			<combo_box name="preview_lod_combo2" tool_tip="Önizleme işlemesinde görülecek ayrıntı seviyesi">
+				<combo_item name="high">
+					Çok ayrıntı
+				</combo_item>
+				<combo_item name="medium">
+					Orta düzey ayrıntı
+				</combo_item>
+				<combo_item name="low">
+					Az ayrıntı
+				</combo_item>
+				<combo_item name="lowest">
+					En az ayrıntı
+				</combo_item>
+			</combo_box>
+		</panel>
+	</panel>
+	<panel name="review_panel">
+		<panel name="header_panel">
+			<text name="header_text">
+				Ä°ncele
+			</text>
+		</panel>
+		<panel name="content">
+			<text name="review_prim_equiv">
+				Parsele/bölgeye etkisi: [EQUIV] prim eşdeğerleri
+			</text>
+			<text name="review_fee">
+				Hesabınızdan L$ [FEE] karşıya yükleme ücreti düşülecektir.
+			</text>
+			<text name="review_confirmation">
+				Karşıya yükleme düğmesine tıkladığınızda, modelde yer alan malzeme için ilgili haklara sahip olduğunuzu teyid edersiniz.
+			</text>
+		</panel>
+	</panel>
+	<panel name="upload_panel">
+		<panel name="header_panel">
+			<text name="header_text">
+				Karşıya yükleme bitti
+			</text>
+		</panel>
+		<text name="model_uploaded_text">
+			Modeliniz karşıya yüklendi.
+		</text>
+		<text name="inventory_text">
+			Bunu, envanterinizdeki Nesneler klasöründe bulacaksınız.
+		</text>
+		<text name="charged_fee">
+			Hesabınızdan L$ [FEE] düşüldü.
+		</text>
+	</panel>
+	<button label="&lt;&lt; Geri" name="back"/>
+	<button label="Sonraki &gt;&gt;" name="next"/>
+	<button label="Ağırlıkları ve ücreti hesapla &gt;&gt;" name="calculate"/>
+	<button label="Hesaplanıyor..." name="calculating"/>
+	<button label="Karşıya Yükle" name="upload" tool_tip="Simülatöre karşıya yükle"/>
+	<button label="Ä°ptal" name="cancel"/>
+	<button label="Kapat" name="close"/>
+	<spinner name="import_scale" value="1.0"/>
+	<string name="status_idle">
+		BoÅŸta
+	</string>
+	<string name="status_parse_error">
+		Dae ayrıştırma sorunu - ayrıntılar için günlüğe bakın.
+	</string>
+	<string name="status_reading_file">
+		Yükleniyor...
+	</string>
+	<string name="status_generating_meshes">
+		Örgüler Oluşturuluyor...
+	</string>
+	<string name="status_vertex_number_overflow">
+		Hata: Köşe numarası 65534&apos;ten fazla, işlem durduruldu!
+	</string>
+	<string name="bad_element">
+		Hata: Öğe geçersiz
+	</string>
+	<string name="high">
+		Yüksek
+	</string>
+	<string name="medium">
+		Orta
+	</string>
+	<string name="low">
+		Düşük
+	</string>
+	<string name="lowest">
+		En Düşük
+	</string>
+	<string name="mesh_status_good">
+		Uygula!
+	</string>
+	<string name="mesh_status_na">
+		G/D
+	</string>
+	<string name="mesh_status_none">
+		Hiçbiri
+	</string>
+	<string name="mesh_status_submesh_mismatch">
+		Ayrıntı seviyelerinde farklı sayıda dokulanabilir yüz var.
+	</string>
+	<string name="mesh_status_mesh_mismatch">
+		Ayrıntı seviyelerinde farklı sayıda örgü örneği var.
+	</string>
+	<string name="mesh_status_too_many_vertices">
+		Ayrıntı seviyesinde fazla sayıda köşe var.
+	</string>
+	<string name="mesh_status_missing_lod">
+		Gereken ayrıntı seviyesi eksik.
+	</string>
+	<string name="layer_all">
+		Tümü
+	</string>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_moveview.xml b/indra/newview/skins/default/xui/tr/floater_moveview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9226218a240d425c71f4e6632966583be9949e3b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_moveview.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="move_floater" title="YÜRÜ / KOŞ / UÇ">
+	<string name="walk_forward_tooltip">
+		İleri Yürü (Yukarı Okuna veya W&apos;ye basın)
+	</string>
+	<string name="walk_back_tooltip">
+		Geri Yürü (Aşağı Okuna veya S&apos;ye basın)
+	</string>
+	<string name="walk_left_tooltip">
+		Sola Yürü (Shift + Sol Oka veya A&apos;ya basın)
+	</string>
+	<string name="walk_right_tooltip">
+		Sağa Yürü (Shift + Sağ Oka veya D&apos;ye basın)
+	</string>
+	<string name="run_forward_tooltip">
+		İleri Koş (Yukarı Okuna veya W&apos;ye basın)
+	</string>
+	<string name="run_back_tooltip">
+		Geri Koş (Aşağı Okuna veya S&apos;ye basın)
+	</string>
+	<string name="run_left_tooltip">
+		Sola Koş (Shift + Sol Oka veya A&apos;ya basın)
+	</string>
+	<string name="run_right_tooltip">
+		Sağa Koş (Shift + Sağ Oka veya D&apos;ye basın)
+	</string>
+	<string name="fly_forward_tooltip">
+		İleri Uç (Yukarı Okuna veya W&apos;ye basın)
+	</string>
+	<string name="fly_back_tooltip">
+		Geri Uç (Aşağı Okuna veya S&apos;ye basın)
+	</string>
+	<string name="fly_left_tooltip">
+		Sola Uç (Shift + Sol Oka veya A&apos;ya basın)
+	</string>
+	<string name="fly_right_tooltip">
+		Sağa Uç (Shift + Sağ Oka veya D&apos;ye basın)
+	</string>
+	<string name="fly_up_tooltip">
+		Yukarı Uç (E&apos;ye basın)
+	</string>
+	<string name="fly_down_tooltip">
+		Aşağı Uç (C&apos;ye basın)
+	</string>
+	<string name="jump_tooltip">
+		Atla (E&apos;ye basın)
+	</string>
+	<string name="crouch_tooltip">
+		Çömel (C&apos;ye basın)
+	</string>
+	<string name="walk_title">
+		Yürü
+	</string>
+	<string name="run_title">
+		KoÅŸ
+	</string>
+	<string name="fly_title">
+		Uç
+	</string>
+	<panel name="panel_actions">
+		<button name="turn left btn" tool_tip="Sola Dön (Sol Oka veya A&apos;ya basın)"/>
+		<joystick_slide name="move left btn" tool_tip="Sola Yürü (Shift + Sol Oka veya A&apos;ya basın)"/>
+		<button name="turn right btn" tool_tip="Sağa Dön (Sağ Oka veya D&apos;ye basın)"/>
+		<joystick_slide name="move right btn" tool_tip="Sağa Yürü (Shift + Sağ Oka veya D&apos;ye basın)"/>
+		<joystick_turn name="forward btn" tool_tip="İleri Yürü (Yukarı Okuna veya W&apos;ye basın)"/>
+		<joystick_turn name="backward btn" tool_tip="Geri Yürü (Aşağı Okuna veya S&apos;ye basın)"/>
+		<button name="move up btn" tool_tip="Yukarı Uç (E&apos;ye basın)"/>
+		<button name="move down btn" tool_tip="Aşağı Uç (C&apos;ye basın)"/>
+	</panel>
+	<panel name="panel_modes">
+		<button label="" name="mode_walk_btn" tool_tip="Yürüme modu"/>
+		<button label="" name="mode_run_btn" tool_tip="KoÅŸma modu"/>
+		<button label="" name="mode_fly_btn" tool_tip="Uçma modu"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_mute_object.xml b/indra/newview/skins/default/xui/tr/floater_mute_object.xml
new file mode 100644
index 0000000000000000000000000000000000000000..becad38a8ed37287465cc1cb95304624e385b785
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_mute_object.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="block by name" title="NESNEYİ ADINA GÖRE ENGELLE">
+	<text name="message">
+		Bir nesneyi engelle
+	</text>
+	<line_editor name="object_name">
+		Nesne adı
+	</line_editor>
+	<text name="note">
+		* Sadece nesne metnini engeller, sesleri engellemez
+	</text>
+	<button label="Tamam" name="OK"/>
+	<button label="Ä°ptal" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_my_appearance.xml b/indra/newview/skins/default/xui/tr/floater_my_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4d71187a1fdd7ec79b5ad6a80e6b5c9a9abf950c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_my_appearance.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_appearance" title="GÖRÜNÜM">
+	<panel label="Görünümü Düzenle" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_my_inventory.xml b/indra/newview/skins/default/xui/tr/floater_my_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8c62692a88a3654db95dd711b6a26a3129e2e7bc
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_my_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_my_inventory" title="ENVANTER"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_nearby_chat.xml b/indra/newview/skins/default/xui/tr/floater_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6b12ad0ef52ca4327dddede566ab111c9c8d445c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="nearby_chat" title="YAKINDAKÄ° SOHBET">
+	<check_box label="Sohbeti çevir" name="translate_chat_checkbox"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_notification.xml b/indra/newview/skins/default/xui/tr/floater_notification.xml
new file mode 100644
index 0000000000000000000000000000000000000000..89a56348f6cf721617dacd6ed913155ae3d55806
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_notification.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="notification" title="BÄ°LDÄ°RÄ°MLER KONSOLU">
+	<text_editor name="payload">
+		Yükleniyor...
+	</text_editor>
+	<combo_box label="Yanıt" name="response"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_notifications_console.xml b/indra/newview/skins/default/xui/tr/floater_notifications_console.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e4eaf2cf9ef345b7557274da34215a4b30d4eafb
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_notifications_console.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="notifications_console" title="BÄ°LDÄ°RÄ°MLER KONSOLU">
+	<combo_box label="Bildirim türünü seç" name="notification_types"/>
+	<button label="Ekle" name="add_notification"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_object_weights.xml b/indra/newview/skins/default/xui/tr/floater_object_weights.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b57943f666ccea22dd59e4e9e4d43d753543a027
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_object_weights.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="object_weights" title="GELÄ°ÅžMÄ°Åž">
+	<floater.string name="nothing_selected" value="--"/>
+	<text name="selected_text" value="SEÇİLİ"/>
+	<text name="objects" value="--"/>
+	<text name="objects_label" value="Nesneler"/>
+	<text name="prims" value="--"/>
+	<text name="prims_label" value="Primler"/>
+	<text name="weights_of_selected_text" value="SEÇİLENLERİN AĞIRLIKLARI"/>
+	<text name="download" value="--"/>
+	<text name="download_label" value="Karşıdan yükle"/>
+	<text name="physics" value="--"/>
+	<text name="physics_label" value="Fizik"/>
+	<text name="server" value="--"/>
+	<text name="server_label" value="Sunucu"/>
+	<text name="display" value="--"/>
+	<text name="display_label" value="Ekran"/>
+	<text name="land_impacts_text" value="ARAZÄ° ETKÄ°LERÄ°"/>
+	<text name="selected" value="--"/>
+	<text name="selected_label" value="Seçili"/>
+	<text name="rezzed_on_land" value="--"/>
+	<text name="rezzed_on_land_label" value="Arazide oluÅŸturulmuÅŸ"/>
+	<text name="remaining_capacity" value="--"/>
+	<text name="remaining_capacity_label" value="Kalan kapasite"/>
+	<text name="total_capacity" value="--"/>
+	<text name="total_capacity_label" value="Toplam kapasite"/>
+	<text name="help_SLURL" value="[secondlife:///app/help/object_weights Bunların tümü ne?...]"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_openobject.xml b/indra/newview/skins/default/xui/tr/floater_openobject.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9980aee97fe14130d7b9ca5460c3287b7d778426
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_openobject.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="objectcontents" title="NESNE İÇERİKLERİ">
+	<text name="object_name">
+		[DESC]:
+	</text>
+	<button label="Envantere Kopyala" label_selected="Envantere Kopyala" name="copy_to_inventory_button"/>
+	<button label="Kopyala ve Giy" label_selected="Kopyala ve Giy" name="copy_and_wear_button"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..7a9f507c936c78aa9cec0c384bb881d71a2fb3d8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_outfit_save_as.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container" title="DIŞ GÖRÜNÜMÜ KAYDET">
+	<button label="Kaydet" label_selected="Kaydet" name="Save"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="Cancel"/>
+	<text name="Save item as:">
+		Ãœzerimdekileri yeni bir
+Dış Görünüm olarak kaydet:
+	</text>
+	<line_editor name="name ed">
+		[DESC] (yeni)
+	</line_editor>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_outgoing_call.xml b/indra/newview/skins/default/xui/tr/floater_outgoing_call.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7ba4580f4fe2db011ebe61101cce649e2f69bac0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_outgoing_call.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="outgoing call" title="ARIYOR">
+	<floater.string name="lifetime">
+		5
+	</floater.string>
+	<floater.string name="localchat">
+		Yakındaki Sesli Sohbet
+	</floater.string>
+	<floater.string name="anonymous">
+		anonim
+	</floater.string>
+	<floater.string name="VoiceInviteP2P">
+		arıyor.
+	</floater.string>
+	<floater.string name="VoiceInviteAdHoc">
+		bir Sesli Sohbet aramasına bir konferans araması ile katıldı.
+	</floater.string>
+	<text name="connecting">
+		[CALLEE_NAME] bağlanıyor
+	</text>
+	<text name="calling">
+		[CALLEE_NAME] aranıyor
+	</text>
+	<text name="noanswer">
+		Cevap Yok.  Lütfen daha sonra tekrar deneyin.
+	</text>
+	<text name="nearby">
+		[VOICE_CHANNEL_NAME] ile bağlantınız kesildi.  [RECONNECT_NEARBY]
+	</text>
+	<text name="nearby_P2P_by_other">
+		Aramanız bitti.  [RECONNECT_NEARBY]
+	</text>
+	<text name="nearby_P2P_by_agent">
+		Aramayı bitirdiniz.  [RECONNECT_NEARBY]
+	</text>
+	<text name="leaving">
+		[CURRENT_CHAT] bırakılıyor.
+	</text>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_pay.xml b/indra/newview/skins/default/xui/tr/floater_pay.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6604e5c37ad6e3dd77529f8ee4255863e0dff812
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_pay.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Give Money">
+	<string name="payee_group">
+		Gruba Öde
+	</string>
+	<string name="payee_resident">
+		Sakine Öde
+	</string>
+	<text name="payee_name">
+		Kırpmayı Kontrol İçin Test Adı Çok Uzun
+	</text>
+	<button label="L$1" label_selected="L$1" name="fastpay 1"/>
+	<button label="L$5" label_selected="L$5" name="fastpay 5"/>
+	<button label="L$10" label_selected="L$10" name="fastpay 10"/>
+	<button label="L$20" label_selected="L$20" name="fastpay 20"/>
+	<text name="amount text">
+		veya tutarı seç:
+	</text>
+	<button label="Öde" label_selected="Öde" name="pay btn"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="cancel btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_pay_object.xml b/indra/newview/skins/default/xui/tr/floater_pay_object.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7772d3b10184f50230ae1bffcb4b5affc3f77866
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_pay_object.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Give Money">
+	<string name="payee_group">
+		Gruba Öde
+	</string>
+	<string name="payee_resident">
+		Sakine Öde
+	</string>
+	<text name="payee_name">
+		Ericacita Moostopolison
+	</text>
+	<text name="object_name_label">
+		Nesne yoluyla:
+	</text>
+	<icon name="icon_object" tool_tip="Nesneler"/>
+	<text name="object_name_text">
+		Harika nesnem gerçekten uzun bir adla
+	</text>
+	<button label="L$1" label_selected="L$1" name="fastpay 1"/>
+	<button label="L$5" label_selected="L$5" name="fastpay 5"/>
+	<button label="L$10" label_selected="L$10" name="fastpay 10"/>
+	<button label="L$20" label_selected="L$20" name="fastpay 20"/>
+	<text name="amount text">
+		veya tutarı seç:
+	</text>
+	<button label="Öde" label_selected="Öde" name="pay btn"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="cancel btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_people.xml b/indra/newview/skins/default/xui/tr/floater_people.xml
new file mode 100644
index 0000000000000000000000000000000000000000..94a27bff5774a20d75c7877e41af67fd9c1c36a6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_people.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_people" title="KİŞİLER">
+	<panel_container name="main_panel">
+		<panel label="Grup Profili" name="panel_group_info_sidetray"/>
+		<panel label="EngellenmiÅŸ Sakinler ve Nesneler" name="panel_block_list_sidetray"/>
+	</panel_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_perm_prefs.xml b/indra/newview/skins/default/xui/tr/floater_perm_prefs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..669b833c26f0df22f8cea32e647a5b655b296ce7
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_perm_prefs.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="perm prefs" title="VARSAYILAN KARÅžIYA YÃœKLEME Ä°ZÄ°NLERÄ°">
+	<panel label="Ä°zinler" name="permissions">
+		<check_box label="Grupla paylaÅŸ" name="share_with_group"/>
+		<check_box label="Herkese kopyalama izni ver" name="everyone_copy"/>
+		<text name="NextOwnerLabel">
+			Sonraki sahip ÅŸunu yapabilir:
+		</text>
+		<check_box label="DeÄŸiÅŸtir" name="next_owner_modify"/>
+		<check_box label="Kopyala" name="next_owner_copy"/>
+		<check_box initial_value="true" label="Tekrar sat/Ver" name="next_owner_transfer"/>
+	</panel>
+	<button label="Tamam" label_selected="Tamam" name="ok"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_picks.xml b/indra/newview/skins/default/xui/tr/floater_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..513a2e319ad3bb89d6e7ecc11f31aa91afb56873
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_picks.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_picks" title="Seçmeler"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_places.xml b/indra/newview/skins/default/xui/tr/floater_places.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4e09a699f6a6ff12db86649d6c0c1ab56d170ada
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_places.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_places" title="YERLER">
+	<panel label="Yerler" name="main_panel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_post_process.xml b/indra/newview/skins/default/xui/tr/floater_post_process.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5e419f8ffa6c160c396273ead19266d1ef702a09
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_post_process.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Post-Process Floater" title="Ä°ÅžLEM SONRASI AYARLARI">
+	<tab_container name="Post-Process Tabs">
+		<panel label="Renk Filtresi" name="wmiColorFilterPanel">
+			<check_box label="EtkinleÅŸtir" name="wmiColorFilterToggle"/>
+			<text name="wmiColorFilterBrightnessText">
+				Parlaklık
+			</text>
+			<text name="wmiColorFilterSaturationText">
+				Doygunluk
+			</text>
+			<text name="wmiColorFilterContrastText">
+				Kontrast
+			</text>
+			<text name="wmiColorFilterBaseText">
+				Kontrast Baz Rengi
+			</text>
+			<slider label="R" name="wmiColorFilterBaseR"/>
+			<slider label="G" name="wmiColorFilterBaseG"/>
+			<slider label="B" name="wmiColorFilterBaseB"/>
+			<slider label="I" name="wmiColorFilterBaseI"/>
+		</panel>
+		<panel label="Gece Görüşü" name="wmiNightVisionPanel">
+			<check_box label="EtkinleÅŸtir" name="wmiNightVisionToggle"/>
+			<text name="wmiNightVisionBrightMultText">
+				Işık Yükseltme Çarpanı
+			</text>
+			<text name="wmiNightVisionNoiseSizeText">
+				Gürültü Büyüklüğü
+			</text>
+			<text name="wmiNightVisionNoiseStrengthText">
+				Gürültü Gücü
+			</text>
+		</panel>
+		<panel label="Işıma" name="wmiBloomPanel">
+			<check_box label="EtkinleÅŸtir" name="wmiBloomToggle"/>
+			<text name="wmiBloomExtractText">
+				Parlaklık Çıkarma
+			</text>
+			<text name="wmiBloomSizeText">
+				Işıma Büyüklüğü
+			</text>
+			<text name="wmiBloomStrengthText">
+				Işıma Gücü
+			</text>
+		</panel>
+		<panel label="Ekstralar" name="Extras">
+			<button label="EfektYükle" label_selected="EfektYükle" name="PPLoadEffect"/>
+			<button label="EfektKaydet" label_selected="EfektKaydet" name="PPSaveEffect"/>
+			<line_editor label="Efekt Adı" name="PPEffectNameEditor"/>
+		</panel>
+	</tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_postcard.xml b/indra/newview/skins/default/xui/tr/floater_postcard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ef11c68afe098707e39d7ec93516c2ae07000d95
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_postcard.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Postcard" title="ANLIK GÖRÜNTÜYÜ E-POSTAYLA GÖNDER">
+	<floater.string name="default_subject">
+		SECOND_LIFE]&apos;dan posta kartı.
+	</floater.string>
+	<floater.string name="default_message">
+		Buna bakın!
+	</floater.string>
+	<floater.string name="upload_message">
+		Gönderiyor...
+	</floater.string>
+	<text name="to_label">
+		Alıcının E-postası:
+	</text>
+	<text name="from_label">
+		E-postanız:
+	</text>
+	<text name="name_label">
+		Adınız:
+	</text>
+	<text name="subject_label">
+		Konu:
+	</text>
+	<line_editor label="Konunuzu buraya yazın." name="subject_form"/>
+	<text name="msg_label">
+		Ä°leti:
+	</text>
+	<text_editor name="msg_form">
+		İletinizi buraya yazın.
+	</text_editor>
+	<button label="Ä°ptal" name="cancel_btn"/>
+	<button label="Gönder" name="send_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_preferences.xml b/indra/newview/skins/default/xui/tr/floater_preferences.xml
new file mode 100644
index 0000000000000000000000000000000000000000..edb3c19b81f04f5d6be58e5fbce45b6624519890
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_preferences.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Preferences" title="TERCÄ°HLER">
+	<button label="Tamam" label_selected="Tamam" name="OK"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="Cancel"/>
+	<tab_container name="pref core">
+		<panel label="Genel" name="general"/>
+		<panel label="Grafikler" name="display"/>
+		<panel label="Ses ve Ortamlar" name="audio"/>
+		<panel label="Sohbet" name="chat"/>
+		<panel label="Hareket ve Görünümler" name="move"/>
+		<panel label="Bildirimler" name="msgs"/>
+		<panel label="Renkler" name="colors"/>
+		<panel label="Gizlilik" name="im"/>
+		<panel label="Ayarlar" name="input"/>
+		<panel label="GeliÅŸmiÅŸ" name="advanced1"/>
+	</tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_preferences_proxy.xml b/indra/newview/skins/default/xui/tr/floater_preferences_proxy.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1c462e6ebf2360c36c4baee70a40c631c735fd6d
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_preferences_proxy.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Proxy Settings Floater" title="Proxy Ayarları">
+	<check_box initial_value="false" label="Web sayfaları için HTTP Proxy kullan" name="web_proxy_enabled"/>
+	<text name="http_proxy_label">
+		HTTP Proxy:
+	</text>
+	<line_editor name="web_proxy_editor" tool_tip="Kullanmak istediğiniz HTTP proxy&apos;nin DNS adı veya IP adresi."/>
+	<spinner label="Port numarası:" name="web_proxy_port" tool_tip="Kullanmak istediğiniz HTTP proxy&apos;nin portu."/>
+	<check_box label="UDP trafiği için SOCKS 5 Proxy kullan" name="socks_proxy_enabled"/>
+	<text name="socks5_proxy_label">
+		SOCKS 5 Proxy:
+	</text>
+	<line_editor name="socks_proxy_editor" tool_tip="Kullanmak istediğiniz SOCKS 5 proxy&apos;nin DNS adı veya IP adresi."/>
+	<spinner label="Port numarası:" name="socks_proxy_port" tool_tip="Kullanmak istediğiniz SOCKS 5 proxy&apos;nin portu."/>
+	<text name="socks_auth_label">
+		SOCKS Kimlik DoÄŸrulama:
+	</text>
+	<radio_group name="socks5_auth_type">
+		<radio_item label="Kimlik Doğrulama Yok" name="Socks5NoAuth" tool_tip="Socks5 proxy&apos;si kimlik doğrulama gerektirmiyor." value="Hiçbiri"/>
+		<radio_item label="Kullanıcı Adı/Parola" name="Socks5UserPass" tool_tip="Socks5 proxy&apos;si kullanıcı adı/parola doğrulaması gerektiriyor." value="UserPass"/>
+	</radio_group>
+	<text name="socks5_username_label">
+		Kullanıcı Adı:
+	</text>
+	<text name="socks5_password_label">
+		Parola:
+	</text>
+	<line_editor name="socks5_username" tool_tip="SOCKS 5 sunucunuzda kimlik doğrulaması yapmak için kullanılan kullanıcı adı"/>
+	<line_editor name="socks5_password" tool_tip="SOCKS 5 sunucunuzda kimlik doğrulaması yapmak için kullanılan parola"/>
+	<text name="other_proxy_label">
+		DiÄŸer HTTP trafiÄŸi proxy&apos;si:
+	</text>
+	<radio_group name="other_http_proxy_type">
+		<radio_item label="Proxy kullanılmasın" name="OtherNoProxy" tool_tip="Web dışı HTTP trafiği herhangi bir proxy&apos;ye gönderilmez." value="Hiçbiri"/>
+		<radio_item label="HTTP Proxy&apos;si kullan" name="OtherHTTPProxy" tool_tip="Web dışı HTTP trafiği yapılandırılmış web proxy&apos;si üzerinden gönderilir." value="Web"/>
+		<radio_item label="SOCKS 5 Proxy&apos;si kullan" name="OtherSocksProxy" tool_tip="Web dışı HTTP trafiği yapılandırılmış Socks 5 proxy&apos;si üzerinden gönderilir." value="Socks"/>
+	</radio_group>
+	<button label="Tamam" label_selected="Tamam" name="OK"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_animation.xml b/indra/newview/skins/default/xui/tr/floater_preview_animation.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1c526c75f9bd73a95f7006ff635183ea0f4d08e0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_preview_animation.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_anim">
+	<floater.string name="Title">
+		Animasyon: [NAME]
+	</floater.string>
+	<text name="desc txt">
+		Açıklama:
+	</text>
+	<button label="SL Dünyasında Oynat" label_selected="Durdur" name="Anim play btn" tool_tip="Bu animasyonu başkaları görebilecek şekilde oynatın"/>
+	<button label="Yerel Olarak Oynat" label_selected="Durdur" name="Anim audition btn" tool_tip="Bu animasyonu sadece kendinizin görebileceği şekilde oynatın"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_gesture.xml b/indra/newview/skins/default/xui/tr/floater_preview_gesture.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dc6f66f65718867cdfb66ff81c3295e023717fa2
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_preview_gesture.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="gesture_preview">
+	<floater.string name="step_anim">
+		Oynatılacak animasyon:
+	</floater.string>
+	<floater.string name="step_sound">
+		Çalınacak ses:
+	</floater.string>
+	<floater.string name="step_chat">
+		KonuÅŸulacak sohbet:
+	</floater.string>
+	<floater.string name="step_wait">
+		Bekle:
+	</floater.string>
+	<floater.string name="stop_txt">
+		Durdur
+	</floater.string>
+	<floater.string name="preview_txt">
+		Önizleme
+	</floater.string>
+	<floater.string name="none_text">
+		-- Hiçbiri --
+	</floater.string>
+	<floater.string name="Title">
+		Mimik: [NAME]
+	</floater.string>
+	<text name="desc_label">
+		Açıklama:
+	</text>
+	<text name="trigger_label">
+		Tetikleyici:
+	</text>
+	<text name="replace_text" tool_tip="Tetikleyici kelimelerinin yerine bunları koyun. Örneğin, &apos;merhaba&apos; yerine &apos;naber&apos; konulması tetikleyicisi ile &quot;merhaba demek istemiştim&quot; sohbeti &quot;naber demek istemiştim olacak ve mimik gerçekleştirilecektir!">
+		Yerine ÅŸunu koy:
+	</text>
+	<line_editor name="replace_editor" tool_tip="Tetikleyici kelimelerinin yerine bunları koyun. Örneğin, &apos;merhaba&apos; yerine &apos;naber&apos; konulması tetikleyicisi ile &quot;merhaba demek istemiştim&quot; sohbeti &quot;naber demek istemiştim olacak ve mimik gerçekleştirilecektir"/>
+	<text name="key_label">
+		Kısayol Tuşu:
+	</text>
+	<combo_box label="Hiçbiri" name="modifier_combo"/>
+	<combo_box label="Hiçbiri" name="key_combo"/>
+	<text name="library_label">
+		Kütüphane:
+	</text>
+	<scroll_list name="library_list">
+		<scroll_list.rows name="action_animation" value="Animasyon"/>
+		<scroll_list.rows name="action_sound" value="Ses"/>
+		<scroll_list.rows name="action_chat" value="Sohbet"/>
+		<scroll_list.rows name="action_wait" value="Bekle"/>
+	</scroll_list>
+	<button label="Ekle &gt;&gt;" name="add_btn"/>
+	<text name="steps_label">
+		Adımlar:
+	</text>
+	<button label="Yukarı" name="up_btn"/>
+	<button label="Aşağı" name="down_btn"/>
+	<button label="Kaldır" name="delete_btn"/>
+	<text name="options_text">
+		(seçenekler)
+	</text>
+	<radio_group name="animation_trigger_type">
+		<radio_item label="BaÅŸla" name="start"/>
+		<radio_item label="Durdur" name="stop"/>
+	</radio_group>
+	<check_box label="tüm animasyonlar bitinceye kadar" name="wait_anim_check"/>
+	<check_box label="saniye olarak zaman:" name="wait_time_check"/>
+	<text name="help_label">
+		Bekleme adımları eklemediğiniz sürece tüm adımlar aynı anda gerçekleşir.
+	</text>
+	<check_box label="Etkin" name="active_check" tool_tip="Etkin mimikleri tetiklemek için tetikleme fazları için sohbet gerçekleştirebilir veya kısayol tuşlarına basabilirsiniz.  Bir anahtar bağlama ihtilafı olduğunda mimikler genellikle inaktif hale geçer."/>
+	<button label="Önizleme" name="preview_btn"/>
+	<button label="Kaydet" name="save_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml b/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..23391249d1962c4a05281be770332047ba82a977
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_preview_notecard.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview notecard" title="NOT KARTI:">
+	<floater.string name="no_object">
+		Bu not kartını içeren nesne bulunamadı.
+	</floater.string>
+	<floater.string name="not_allowed">
+		Bu not kartını görüntüleme izniniz yok.
+	</floater.string>
+	<floater.string name="Title">
+		Not Kartı: [NAME]
+	</floater.string>
+	<text name="desc txt">
+		Açıklama:
+	</text>
+	<text_editor name="Notecard Editor">
+		Yükleniyor...
+	</text_editor>
+	<button label="Kaydet" label_selected="Kaydet" name="Save"/>
+	<button label="Sil" label_selected="Sil" name="Delete"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_sound.xml b/indra/newview/skins/default/xui/tr/floater_preview_sound.xml
new file mode 100644
index 0000000000000000000000000000000000000000..50874f024a33432a803358b90d317a7e9df3dfe4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_preview_sound.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_sound">
+	<floater.string name="Title">
+		Ses: [NAME]
+	</floater.string>
+	<text name="desc txt">
+		Açıklama:
+	</text>
+	<button label="SL Dünyasında Oynat" label_selected="SL Dünyasında Oynat" name="Sound play btn" tool_tip="Bu ses başkaların işitebileceği bir şekilde çalınsın"/>
+	<button label="Yerel Olarak Oynat" label_selected="Yerel Olarak Oynat" name="Sound audition btn" tool_tip="Bu ses sadece sizin işitebileceğiniz bir şekilde çalınsın"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_preview_texture.xml b/indra/newview/skins/default/xui/tr/floater_preview_texture.xml
new file mode 100644
index 0000000000000000000000000000000000000000..79e184130a2734f6ed4a1a0738ca2bafe3309318
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_preview_texture.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview_texture">
+	<floater.string name="Title">
+		Doku: [NAME]
+	</floater.string>
+	<floater.string name="Copy">
+		Envantere Kopyala
+	</floater.string>
+	<text name="desc txt">
+		Açıklama:
+	</text>
+	<text name="dimensions">
+		[WIDTH]px x [HEIGHT]px
+	</text>
+	<text name="aspect_ratio">
+		En boy oranını önizle
+	</text>
+	<combo_box name="combo_aspect_ratio" tool_tip="Sabit en boy oranında önizle">
+		<combo_item name="Unconstrained">
+			Kısıtsız
+		</combo_item>
+		<combo_item name="1:1" tool_tip="Grup iÅŸaretleri veya Real World profili">
+			1:1
+		</combo_item>
+		<combo_item name="4:3" tool_tip="[SECOND_LIFE] profili">
+			4:3
+		</combo_item>
+		<combo_item name="10:7" tool_tip="Ä°lanlar ve arama listeleri, yer imleri">
+			10:7
+		</combo_item>
+		<combo_item name="3:2" tool_tip="Arazi hakkında">
+			3:2
+		</combo_item>
+		<combo_item name="16:10">
+			16:10
+		</combo_item>
+		<combo_item name="16:9" tool_tip="Profil seçmeleri">
+			16:9
+		</combo_item>
+		<combo_item name="2:1">
+			2:1
+		</combo_item>
+	</combo_box>
+	<button label="Tamam" name="Keep"/>
+	<button label="At" name="Discard"/>
+	<button label="Farklı Kaydet" name="save_tex_btn"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..5cdd25b64c99dd9af0b7b12d990a0a2078f1ce33
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_price_for_listing.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="price_for_listing" title="SERÄ° Ä°LAN YAYINLA">
+	<text name="explanation_text">
+		İlanınız yayınlandığı günden itibaren bir hafta boyunca yayında kalacaktır.
+
+İlanınızın seri ilanlar listesindeki yeri, ne kadar ödeme yapmayı seçtiğinize bağlıdır.
+
+En çok ücret ödenen ilanlar listenin tepesinde yer alır ve aramalarda daha yukarı sırada görünür.
+	</text>
+	<text name="price_text">
+		Ä°lan Ãœcreti:
+	</text>
+	<text name="price_symbol">
+		L$
+	</text>
+	<button label="Tamam" name="set_price_btn"/>
+	<button label="Ä°ptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_publish_classified.xml b/indra/newview/skins/default/xui/tr/floater_publish_classified.xml
new file mode 100644
index 0000000000000000000000000000000000000000..572892667b612903d893b358a65bf7d689599940
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_publish_classified.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="publish_classified" title="İlan Yayınlama">
+	<text name="explanation_text">
+		Seri ilanınız yayına verildiği günden itibaren bir hafta boyunca yayında kalacaktır.
+        
+Unutmayın, İlan ücretleri iade edilmez.
+	</text>
+	<spinner label="Fiyat: L$" name="price_for_listing" tool_tip="İlan ücreti." value="50"/>
+	<button label="Yayınla" name="publish_btn"/>
+	<button label="Ä°ptal" name="cancel_btn"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..e2a5e8e86aa5ccfee9a8fc8f539f272340ae0e61
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_region_debug_console.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="region_debug_console" title="Bölge Hata Ayıklama"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_region_info.xml b/indra/newview/skins/default/xui/tr/floater_region_info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2b2e00161bca0f5c5797e7ed3e74b2e0ba24b5dc
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_region_info.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="regioninfo" title="BÖLGE/GAYRİMENKUL"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_report_abuse.xml b/indra/newview/skins/default/xui/tr/floater_report_abuse.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c5765883c43ec510f4d1d95b7af7d7b23b215164
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_report_abuse.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_report_abuse" title="KÖTÜYE KULLANIM BİLDİR">
+	<floater.string name="Screenshot">
+		Anlık görüntü
+	</floater.string>
+	<check_box label="Bu anlık görüntüyü kullan" name="screen_check"/>
+	<text name="reporter_title">
+		Rapor eden:
+	</text>
+	<text name="sim_title">
+		Bölge:
+	</text>
+	<text name="sim_field">
+		Bölge Adı
+	</text>
+	<text name="pos_title">
+		Konum:
+	</text>
+	<text name="pos_field">
+		{128.1, 128.1, 15.4}
+	</text>
+	<text name="select_object_label">
+		Düğmeye, sonra da kötüye kullanılan nesneye tıklayın:
+	</text>
+	<button name="pick_btn" tool_tip="Nesne Seçici - bu raporun konusu olan nesneyi tespit edin"/>
+	<text name="object_name_label">
+		Nesne:
+	</text>
+	<text name="owner_name_label">
+		Sahip:
+	</text>
+	<combo_box name="category_combo" tool_tip="Kategori -- bu raporu en iyi tanımlayan kategoriyi seçin">
+		<combo_box.item label="Kategori seç" name="Select_category"/>
+		<combo_box.item label="Yaş &gt; Yaşı oyna" name="Age__Age_play"/>
+		<combo_box.item label="Yaş &gt; 18 Yaş Altı Second Life&apos;ında Yetişkin Sakin" name="Age__Adult_resident_on_Teen_Second_Life"/>
+		<combo_box.item label="Yaş &gt; 18 Yaş Altı Second Life&apos;ı dışında Reşit Olmayan Sakin" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
+		<combo_box.item label="Saldırı &gt; Çarpışma koruma alanı / güvensiz alan" name="Assault__Combat_sandbox___unsafe_area"/>
+		<combo_box.item label="Saldırı &gt; Güvenli alan" name="Assault__Safe_area"/>
+		<combo_box.item label="Saldırı &gt; Silah test güvenli alanı" name="Assault__Weapons_testing_sandbox"/>
+		<combo_box.item label="Ticaret &gt; Ürün veya hizmet verilemedi" name="Commerce__Failure_to_deliver_product_or_service"/>
+		<combo_box.item label="İfşa &gt; Gerçek dünya bilgileri" name="Disclosure__Real_world_information"/>
+		<combo_box.item label="Ä°fÅŸa &gt; Sohbet uzaktan izleniyor" name="Disclosure__Remotely_monitoring chat"/>
+		<combo_box.item label="Ä°fÅŸa &gt; Second Life bilgileri/sohbet/AÄ°&apos;ler" name="Disclosure__Second_Life_information_chat_IMs"/>
+		<combo_box.item label="Huzuru bozuyor &gt; bölge kaynaklarının haksız kullanımı" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
+		<combo_box.item label="Huzuru bozuyor &gt; aşırı komut dosyalı nesne" name="Disturbing_the_peace__Excessive_scripted_objects"/>
+		<combo_box.item label="Huzuru bozuyor &gt; Nesne dağıtma" name="Disturbing_the_peace__Object_littering"/>
+		<combo_box.item label="Huzuru bozuyor &gt; Tekrarlanan spam" name="Disturbing_the_peace__Repetitive_spam"/>
+		<combo_box.item label="Huzuru bozuyor &gt; İstenmeyen reklam spamı" name="Disturbing_the_peace__Unwanted_advert_spam"/>
+		<combo_box.item label="Dolandırıcılık &gt; L$" name="Fraud__L$"/>
+		<combo_box.item label="Dolandırıcılık &gt; Arazi" name="Fraud__Land"/>
+		<combo_box.item label="Dolandırıcılık &gt; Piramid planı veya zincirleme mektup" name="Fraud__Pyramid_scheme_or_chain_letter"/>
+		<combo_box.item label="Dolandırıcılık &gt; US$" name="Fraud__US$"/>
+		<combo_box.item label="Taciz &gt;  reklam çiftlikleri / görsel spam" name="Harassment__Advert_farms___visual_spam"/>
+		<combo_box.item label="Taciz &gt; Kişi ya da grupları aşağılama" name="Harassment__Defaming_individuals_or_groups"/>
+		<combo_box.item label="Taciz &gt; Tehditkâr hareket" name="Harassment__Impeding_movement"/>
+		<combo_box.item label="Taciz &gt; Cinsel taciz" name="Harassment__Sexual_harassment"/>
+		<combo_box.item label="Taciz &gt; Başkalarını Hizmet Koşullarını ihlal etmeye kışkırtma/teşvik" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
+		<combo_box.item label="Taciz &gt; Sözlü istismar" name="Harassment__Verbal_abuse"/>
+		<combo_box.item label="Uygunsuzluk &gt; Genel anlamda rahatsız edici içerik veya davranış" name="Indecency__Broadly_offensive_content_or_conduct"/>
+		<combo_box.item label="Uygunsuzluk &gt; Uygunsuz avatar adı" name="Indecency__Inappropriate_avatar_name"/>
+		<combo_box.item label="Uygunsuzluk &gt; PG bölgesinde rahatsız edici içerik veya davranış" name="Indecency__Mature_content_in_PG_region"/>
+		<combo_box.item label="Uygunsuzluk &gt; Orta bölgede rahatsız edici içerik veya davranış" name="Indecency__Inappropriate_content_in_Mature_region"/>
+		<combo_box.item label="Fikri mülkiyet ihlali &gt; İçerik Silme" name="Intellectual_property_infringement_Content_Removal"/>
+		<combo_box.item label="Fikri mülkiyet ihlali &gt; CopyBot veya İzinlerin Kötüye Kullanılması" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
+		<combo_box.item label="Tahammülsüzlük" name="Intolerance"/>
+		<combo_box.item label="Arazi &gt; Koruma alanı kaynaklarının istismarı" name="Land__Abuse_of_sandbox_resources"/>
+		<combo_box.item label="Arazi &gt; Tecavvüz &gt; Nesneler/dokular" name="Land__Encroachment__Objects_textures"/>
+		<combo_box.item label="Arazi &gt; Tecavvüz &gt; Parçacıklar" name="Land__Encroachment__Particles"/>
+		<combo_box.item label="Arazi &gt; Tecavvüz &gt; Ağaçlar/bitkiler" name="Land__Encroachment__Trees_plants"/>
+		<combo_box.item label="Bahis oynatma/kumar" name="Wagering_gambling"/>
+		<combo_box.item label="DiÄŸer" name="Other"/>
+	</combo_box>
+	<text name="abuser_name_title">
+		Kötüye kullananın adı:
+	</text>
+	<button label="Seç" name="select_abuser" tool_tip="Kötüye kullananın adını bir listeden seçin"/>
+	<text name="abuser_name_title2">
+		Kötüye Kullanma Konumu
+	</text>
+	<text name="sum_title">
+		Özet:
+	</text>
+	<text name="dscr_title">
+		Ayrıntl:
+	</text>
+	<text name="bug_aviso">
+		Mümkün olduğunca spesifik olun
+	</text>
+	<text name="incomplete_title">
+		* Eksik raporlar incelenmeyecektir
+	</text>
+	<button label="Kötüye Kullanımı Bildir" label_selected="Kötüye Kullanımı Bildir" name="send_btn"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_script_debug.xml b/indra/newview/skins/default/xui/tr/floater_script_debug.xml
new file mode 100644
index 0000000000000000000000000000000000000000..baf0aabd8589f8d4fba06c5563311c4add90c2ff
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_script_debug.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<multi_floater name="script debug floater" title="Komut Dosyası Uyarı/Hata"/>
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
new file mode 100644
index 0000000000000000000000000000000000000000..e70a30fa24af183134e2d78048bbf57a39cbc917
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_script_debug_panel.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script" short_title="[ALL SCRIPTS]" title="[ALL SCRIPTS]"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_script_limits.xml b/indra/newview/skins/default/xui/tr/floater_script_limits.xml
new file mode 100644
index 0000000000000000000000000000000000000000..875599bde3d9a0713f0103b523fc0334f120d6c2
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_script_limits.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="scriptlimits" title="KOMUT DOSYASI BÄ°LGÄ°SÄ°"/>
diff --git a/indra/newview/skins/default/xui/tr/floater_script_preview.xml b/indra/newview/skins/default/xui/tr/floater_script_preview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e193f7c1af2c90ee82f455b6d95ecea60083a8ec
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_script_preview.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="preview lsl text" title="KOMUT DOSYASI: DÖNDÜRME KOMUT DOSYASI">
+	<floater.string name="Title">
+		KOMUT DOSYASI: [NAME]
+	</floater.string>
+	<text name="desc txt">
+		Açıklama:
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_script_queue.xml b/indra/newview/skins/default/xui/tr/floater_script_queue.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c1d98b717adefd8c746381415840bbe2f9bd09de
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_script_queue.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="queue" title="Ä°LERLEMEYÄ° SIFIRLA">
+	<floater.string name="Starting">
+		[COUNT] öğe için [START] başlatılıyor.
+	</floater.string>
+	<floater.string name="Done">
+		Tamamlandı.
+	</floater.string>
+	<floater.string name="Resetting">
+		Sıfırlanıyor
+	</floater.string>
+	<floater.string name="Running">
+		Çalışıyor
+	</floater.string>
+	<floater.string name="NotRunning">
+		Çalışmıyor
+	</floater.string>
+	<button label="Kapat" label_selected="Kapat" name="close"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_script_search.xml b/indra/newview/skins/default/xui/tr/floater_script_search.xml
new file mode 100644
index 0000000000000000000000000000000000000000..54b1d20c8ceba2647e5b5797e0bc77cf5090bd41
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_script_search.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="script search" title="KOMUT DOSYASI ARA">
+	<check_box label="Büyük Küçük Harfe Duyarsız" name="case_text"/>
+	<button label="Ara" label_selected="Ara" name="search_btn"/>
+	<button label="DeÄŸiÅŸtir" label_selected="DeÄŸiÅŸtir" name="replace_btn"/>
+	<button label="Tümünü Değiştir" label_selected="Tümünü Değiştir" name="replace_all_btn"/>
+	<text name="txt">
+		Ara
+	</text>
+	<text name="txt2">
+		DeÄŸiÅŸtir
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_search.xml b/indra/newview/skins/default/xui/tr/floater_search.xml
new file mode 100644
index 0000000000000000000000000000000000000000..08c1e5162c7dbab5bfc83a79ad0e44c1c768af61
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_search.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_search" title="">
+	<floater.string name="loading_text">
+		Yükleniyor...
+	</floater.string>
+	<floater.string name="done_text">
+		Tamamlandı
+	</floater.string>
+	<layout_stack name="stack1">
+		<layout_panel name="browser_layout">
+			<text name="refresh_search">
+				Mevcut Yönetici seviyesini dikkate alarak aramayı yenile
+			</text>
+		</layout_panel>
+	</layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_select_key.xml b/indra/newview/skins/default/xui/tr/floater_select_key.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b828672ec243750b28af042a2c280ddce77487fc
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_select_key.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container">
+	<text name="Save item as:">
+		Konuş düğmesi tetikleyicinizi ayarlamak için bir düğmeye basın.
+	</text>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_sell_land.xml b/indra/newview/skins/default/xui/tr/floater_sell_land.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9bea1e120e3270e2fd21d0b37305a4c77f90b45a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_sell_land.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="sell land" title="ARAZÄ° SAT">
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<text name="info_parcel_label">
+				Parsel:
+			</text>
+			<text name="info_parcel">
+				PARSEL ADI
+			</text>
+			<text name="info_size_label">
+				Büyüklük:
+			</text>
+			<text name="info_size">
+				[AREA] m²
+			</text>
+			<text name="info_action">
+				Bu parseli satmak için:
+			</text>
+			<text name="price_label">
+				1. Fiyat belirle:
+			</text>
+			<text name="price_text">
+				Uygun bir fiyat seçin.
+			</text>
+			<text name="price_ld">
+				L$
+			</text>
+			<line_editor name="price">
+				0
+			</line_editor>
+			<text name="price_per_m">
+				(L$[PER_METER] / m²)
+			</text>
+			<text name="sell_to_label">
+				2. Araziyi şuna satın:
+			</text>
+			<text name="sell_to_text">
+				Herkese mi, yoksa belirli bir alıcıya mı satacağınızı seçin.
+			</text>
+			<combo_box name="sell_to">
+				<combo_box.item label="- Birini seç -" name="--selectone--"/>
+				<combo_box.item label="Herkes" name="Anyone"/>
+				<combo_box.item label="Belirli kiÅŸi:" name="Specificuser:"/>
+			</combo_box>
+			<button label="Seç" name="sell_to_select_agent"/>
+			<text name="sell_objects_label">
+				3. Nesneler araziyle birlikte mi satılacak?
+			</text>
+			<text name="sell_objects_text">
+				Arazi sahibinin parsel üzerindeki devredilebilir nesnelerinin mülkiyeti değişecektir.
+			</text>
+			<radio_group name="sell_objects">
+				<radio_item label="Hayır, nesnelerin mülkiyetini koru" name="no"/>
+				<radio_item label="Evet, nesneleri araziyle birlikte sat" name="yes"/>
+			</radio_group>
+			<button label="Nesneleri Göster" name="show_objects"/>
+			<text name="nag_message_label">
+				UNUTMAYIN: Tüm satışlar kesindir.
+			</text>
+			<button label="Araziyi Satışa Çıkar" name="sell_btn"/>
+			<button label="Ä°ptal" name="cancel_btn"/>
+		</panel>
+	</scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_settings_debug.xml b/indra/newview/skins/default/xui/tr/floater_settings_debug.xml
new file mode 100644
index 0000000000000000000000000000000000000000..65264c57d77908328826114223dfc3ab05c7e763
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_settings_debug.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="settings_debug" title="HATA AYIKLAMA AYARLARI">
+	<radio_group name="boolean_combo">
+		<radio_item label="TRUE" name="TRUE" value="true"/>
+		<radio_item label="FALSE" name="FALSE" value=""/>
+	</radio_group>
+	<color_swatch label="Renk" name="val_color_swatch"/>
+	<spinner label="x" name="val_spinner_1"/>
+	<spinner label="x" name="val_spinner_2"/>
+	<spinner label="x" name="val_spinner_3"/>
+	<spinner label="x" name="val_spinner_4"/>
+	<button label="Varsayılana sıfırla" name="default_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_snapshot.xml b/indra/newview/skins/default/xui/tr/floater_snapshot.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fa51f15d16acb348408d5c4bbca1d59cf7f8e8d3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_snapshot.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Snapshot" title="ANLIK GÖRÜNTÜ ÖNİZLEME">
+	<floater.string name="unknown">
+		bilinmiyor
+	</floater.string>
+	<string name="postcard_progress_str">
+		E-posta Gönderiliyor
+	</string>
+	<string name="profile_progress_str">
+		Yayınlanıyor
+	</string>
+	<string name="inventory_progress_str">
+		Envantere Kaydediliyor
+	</string>
+	<string name="local_progress_str">
+		Bilgisayara Kaydediliyor
+	</string>
+	<string name="profile_succeeded_str">
+		Görüntü yüklendi
+	</string>
+	<string name="postcard_succeeded_str">
+		E-posta Gönderildi!
+	</string>
+	<string name="inventory_succeeded_str">
+		Envantere Kaydedildi!
+	</string>
+	<string name="local_succeeded_str">
+		Bilgisayara Kaydedildi!
+	</string>
+	<string name="profile_failed_str">
+		Görüntü Profil Akışınıza yüklenemedi.
+	</string>
+	<string name="postcard_failed_str">
+		E-posta gönderilemedi.
+	</string>
+	<string name="inventory_failed_str">
+		Envantere kaydedilemedi.
+	</string>
+	<string name="local_failed_str">
+		Bilgisayara kaydedilemedi.
+	</string>
+	<button name="advanced_options_btn" tool_tip="Gelişmiş seçenekler"/>
+	<text name="image_res_text">
+		[WIDTH] x [HEIGHT] px
+	</text>
+	<text name="file_size_label">
+		[SIZE] KB
+	</text>
+	<panel name="advanced_options_panel">
+		<text name="advanced_options_label">
+			GELİŞMİŞ SEÇENEKLER
+		</text>
+		<text name="layer_type_label">
+			Yakala:
+		</text>
+		<combo_box label="Görüntü Katmanları" name="layer_types">
+			<combo_box.item label="Renkler" name="Colors"/>
+			<combo_box.item label="Derinlik" name="Depth"/>
+		</combo_box>
+		<check_box label="Arayüz" name="ui_check"/>
+		<check_box label="BÃœG&apos;ler" name="hud_check"/>
+		<check_box label="Kare dondur (tam ekran)" name="freeze_frame_check"/>
+		<check_box label="Otomatik yenile" name="auto_snapshot_check"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_sound_devices.xml b/indra/newview/skins/default/xui/tr/floater_sound_devices.xml
new file mode 100644
index 0000000000000000000000000000000000000000..470a222d7ecbcce2ab360ff39880837bb988632f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_sound_devices.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_sound_devices" title="SES CÄ°HAZLARI">
+	<text name="voice_label">
+		Sesli Sohbet
+	</text>
+	<check_box label="Etkin" name="enable_voice"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_sound_preview.xml b/indra/newview/skins/default/xui/tr/floater_sound_preview.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1938f184b3074da6a3f0b90d34389e241b4e196a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_sound_preview.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Sound Preview" title="SOUND.WAV">
+	<text name="name_label">
+		Ad:
+	</text>
+	<text name="description_label">
+		Açıklama:
+	</text>
+	<button label="Karşıya Yükle (L$[AMOUNT])" name="ok_btn"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_stats.xml b/indra/newview/skins/default/xui/tr/floater_stats.xml
new file mode 100644
index 0000000000000000000000000000000000000000..17f1166c4681b99b185301fa5daae64cf98080a4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_stats.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Statistics" title="Ä°STATÄ°STÄ°KLER">
+	<scroll_container name="statistics_scroll">
+		<container_view name="statistics_view">
+			<stat_view label="Temel" name="basic">
+				<stat_bar label="FPS" name="fps"/>
+				<stat_bar label="Bant geniÅŸliÄŸi" name="bandwidth"/>
+				<stat_bar label="Paket Kaybı" name="packet_loss"/>
+				<stat_bar label="Sim Pingi" name="ping"/>
+			</stat_view>
+			<stat_view label="GeliÅŸmiÅŸ" name="advanced">
+				<stat_view label="Ä°ÅŸle" name="render">
+					<stat_bar label="Çerçeve Başına Çizilen Üçgenler" name="ktrisframe"/>
+					<stat_bar label="Saniyede Bir Çizilen Üçgenler" name="ktrissec"/>
+					<stat_bar label="Toplam Nesne" name="objs"/>
+					<stat_bar label="Yeni Nesne" name="newobjs"/>
+				</stat_view>
+				<stat_view label="Doku" name="texture">
+					<stat_bar label="Sayım" name="numimagesstat"/>
+					<stat_bar label="Ham Sayım" name="numrawimagesstat"/>
+					<stat_bar label="GL BelleÄŸi" name="gltexmemstat"/>
+					<stat_bar label="Formatlanmış Bellek" name="formattedmemstat"/>
+					<stat_bar label="Ham Bellek" name="rawmemstat"/>
+					<stat_bar label="Bağlı Doku Belleği" name="glboundmemstat"/>
+				</stat_view>
+				<stat_view label="AÄŸ" name="network">
+					<stat_bar label="Gelen Paketler" name="packetsinstat"/>
+					<stat_bar label="Giden Paketler" name="packetsoutstat"/>
+					<stat_bar label="Nesneler" name="objectkbitstat"/>
+					<stat_bar label="Doku" name="texturekbitstat"/>
+					<stat_bar label="Varlık" name="assetkbitstat"/>
+					<stat_bar label="Katmanlar" name="layerskbitstat"/>
+					<stat_bar label="Gerçekte Gelen" name="actualinkbitstat"/>
+					<stat_bar label="Gerçekte Giden" name="actualoutkbitstat"/>
+					<stat_bar label="VFS Bekleyen Ä°ÅŸlemler" name="vfspendingoperations"/>
+				</stat_view>
+			</stat_view>
+			<stat_view label="Simülatör" name="sim">
+				<stat_bar label="Zaman GenleÅŸmesi" name="simtimedilation"/>
+				<stat_bar label="Sim FPS" name="simfps"/>
+				<stat_bar label="Fizik FPS" name="simphysicsfps"/>
+				<stat_view label="Fizik Ayrıntıları" name="physicsdetail">
+					<stat_bar label="SabitlenmiÅŸ Nesneler" name="physicspinnedtasks"/>
+					<stat_bar label="Düşük Ayrıntı Seviyesindeki Nesneler" name="physicslodtasks"/>
+					<stat_bar label="Ayrılan Bellek" name="physicsmemoryallocated"/>
+				</stat_view>
+				<stat_bar label="Aracı Güncelleştirmeleri/sn" name="simagentups"/>
+				<stat_bar label="Ana Aracılar" name="simmainagents"/>
+				<stat_bar label="Alt Aracılar" name="simchildagents"/>
+				<stat_bar label="Nesneler" name="simobjects"/>
+				<stat_bar label="Etkin Nesneler" name="simactiveobjects"/>
+				<stat_bar label="Etkin Komut Dosyaları" name="simactivescripts"/>
+				<stat_bar label="Komut Dosyası Etkinlikleri" name="simscripteps"/>
+				<stat_bar label="Gelen Paketler" name="siminpps"/>
+				<stat_bar label="Giden Paketler" name="simoutpps"/>
+				<stat_bar label="Bekleyen Karşıdan Yüklemeler" name="simpendingdownloads"/>
+				<stat_bar label="Bekleyen Karşıya Yüklemeler" name="simpendinguploads"/>
+				<stat_bar label="Toplam BildirilmiÅŸ Bayt" name="simtotalunackedbytes"/>
+				<stat_view label="Zaman (ms)" name="simperf">
+					<stat_bar label="Toplam Çerçeve Süresi" name="simframemsec"/>
+					<stat_bar label="Net Süre" name="simnetmsec"/>
+					<stat_bar label="Fizik Süresi" name="simsimphysicsmsec"/>
+					<stat_bar label="Simülasyon Süresi" name="simsimothermsec"/>
+					<stat_bar label="Aracı Süresi" name="simagentmsec"/>
+					<stat_bar label="Görüntü Süresi" name="simimagesmsec"/>
+					<stat_bar label="Komut Dosyası Süresi" name="simscriptmsec"/>
+					<stat_bar label="Yedek Zaman" name="simsparemsec"/>
+					<stat_view label="Zaman Ayrıntıları (ms)" name="timedetails">
+						<stat_bar label="Fizik Adımı" name="simsimphysicsstepmsec"/>
+						<stat_bar label="Fizik Şekillerini Güncelle" name="simsimphysicsshapeupdatemsec"/>
+						<stat_bar label="Fizik DiÄŸer" name="simsimphysicsothermsec"/>
+						<stat_bar label="Uyku Zamanı" name="simsleepmsec"/>
+						<stat_bar label="Pompa Giriş Çıkış" name="simpumpiomsec"/>
+					</stat_view>
+				</stat_view>
+			</stat_view>
+		</container_view>
+	</scroll_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_sys_well.xml b/indra/newview/skins/default/xui/tr/floater_sys_well.xml
new file mode 100644
index 0000000000000000000000000000000000000000..301d9af063f929a37d5f404efeebe76cb8f9272b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_sys_well.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="sys_well_window" title="BÄ°LDÄ°RÄ°MLER">
+	<string name="title_im_well_window">
+		SOHBETLER
+	</string>
+	<string name="title_notification_well_window">
+		BÄ°LDÄ°RÄ°MLER
+	</string>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_telehub.xml b/indra/newview/skins/default/xui/tr/floater_telehub.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2cdb464ed0f6400567d44b834d3974a4d755d5f8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_telehub.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Explicit left edge to avoid overlapping build tools -->
+<floater name="telehub" title="IÅžINLAMA Ä°STASYONU">
+	<text name="status_text_connected">
+		Işınlama istasyonu nesneye [OBJECT] bağlandı
+	</text>
+	<text name="status_text_not_connected">
+		Hiçbir ışınlama istasyonu bağlı değil
+	</text>
+	<text name="help_text_connected">
+		Çıkarmak için, Bağlantıyı Kes&apos;e tıkla.
+	</text>
+	<text name="help_text_not_connected">
+		Nesneyi seç ve Işınlama İstasyonuna Bağlan&apos;a tıkla
+	</text>
+	<button label="Işınlanma İstasyonuna Bağlan" name="connect_btn"/>
+	<button label="Bağlantıyı Kes" name="disconnect_btn"/>
+	<text name="spawn_points_text">
+		Üreme Noktaları (konumlar, nesneler değil):
+	</text>
+	<button label="Ãœreme Ekle" name="add_spawn_point_btn"/>
+	<button label="Üreme Çıkar" name="remove_spawn_point_btn"/>
+	<text name="spawn_point_help">
+		Konum belirtmek için nesneyi seç ve &quot;Üreme Ekle&quot;ye tıkla
+Daha sonra nesneyi taşıyabilir veya silebilirsiniz.
+Konumlar ışınlanma istasyonu merkezine görelidir.
+SL dünyasında vurgulamak için listedeki bir ögeyi seçin.
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4ef789f58594c8f700c3da42b9038c4724e2aa91
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_texture_ctrl.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="texture picker" title="SEÇME: DOKU">
+	<floater.string name="choose_picture">
+		Bir resim seçmek için tıklayın
+	</floater.string>
+	<floater.string name="pick title">
+		Seçme:
+	</floater.string>
+	<text name="Multiple">
+		Birden çok doku
+	</text>
+	<text name="unknown">
+		Büyüklük: [DIMENSIONS]
+	</text>
+	<button label="Varsayılan" label_selected="Varsayılan" name="Default"/>
+	<button label="Hiçbiri" label_selected="Hiçbiri" name="None"/>
+	<button label="BoÅŸ" label_selected="BoÅŸ" name="Blank"/>
+	<check_box initial_value="true" label="Åžimdi uygula" name="apply_immediate_check"/>
+	<filter_editor label="Dokuları Filtrele" name="inventory search editor"/>
+	<check_box initial_value="false" label="Klasörleri göster" name="show_folders_check"/>
+	<button label="Tamam" label_selected="Tamam" name="Select"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="Cancel"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_tools.xml b/indra/newview/skins/default/xui/tr/floater_tools.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d4ee9995ddab6d92436e38bb33b63b8d71769030
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_tools.xml
@@ -0,0 +1,491 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="toolbox floater" short_title="İNŞA ET ARAÇLARI">
+	<floater.string name="status_rotate">
+		Nesneyi döndürmek için renkli bantları sürükleyin
+	</floater.string>
+	<floater.string name="status_scale">
+		Seçilen tarafı uzatmak için tıklayın ve sürükleyin
+	</floater.string>
+	<floater.string name="status_move">
+		Hareket ettirmek için sürükleyin, kopyalamak için Shift ile sürükleyin
+	</floater.string>
+	<floater.string name="status_modifyland">
+		Araziyi değiştirmek için tıklayın ve tutun
+	</floater.string>
+	<floater.string name="status_camera">
+		Kamerayı hareket ettirmek için tıklayın ve sürükleyin
+	</floater.string>
+	<floater.string name="status_grab">
+		Hareket ettirmek için sürükleyin, kaldırmak için Ctrl, döndürmek için Ctrl+Shift kullanın
+	</floater.string>
+	<floater.string name="status_place">
+		İnşa etmek için SL dünyası içine tıklayın
+	</floater.string>
+	<floater.string name="status_selectland">
+		Araziyi seçmek için tıklayın ve sürükleyin
+	</floater.string>
+	<floater.string name="status_selectcount">
+		[OBJ_COUNT] nesne seçili, [LAND_IMPACT] arazi etkisi
+	</floater.string>
+	<floater.string name="status_remaining_capacity">
+		Kalan kapasite [LAND_CAPACITY].
+	</floater.string>
+	<button name="button focus" tool_tip="Odak"/>
+	<button name="button move" tool_tip="Hareket Et"/>
+	<button name="button edit" tool_tip="Düzenle"/>
+	<button name="button create" tool_tip="OluÅŸtur"/>
+	<button name="button land" tool_tip="Arazi"/>
+	<text name="text status">
+		Hareket ettirmek için sürükleyin, kopyalamak için Shift ile sürükleyin
+	</text>
+	<radio_group name="focus_radio_group">
+		<radio_item label="Yakınlaştır" name="radio zoom"/>
+		<radio_item label="Yörünge Değişimi (Ctrl)" name="radio orbit"/>
+		<radio_item label="Kamerayı Çevir (Ctrl+Shift)" name="radio pan"/>
+	</radio_group>
+	<slider_bar initial_value="0.125" name="slider zoom"/>
+	<radio_group name="move_radio_group">
+		<radio_item label="Hareket Et" name="radio move"/>
+		<radio_item label="Kaldır (Ctrl)" name="radio lift"/>
+		<radio_item label="Çevir (Ctrl+Shift)" name="radio spin"/>
+	</radio_group>
+	<radio_group name="edit_radio_group">
+		<radio_item label="Hareket Et" name="radio position"/>
+		<radio_item label="Döndür (Ctrl)" name="radio rotate"/>
+		<radio_item label="Uzat (Ctrl+Shift)" name="radio stretch"/>
+		<radio_item label="Yüzü Seç" name="radio select face"/>
+	</radio_group>
+	<check_box label="Bağlantılıları düzenle" name="checkbox edit linked parts"/>
+	<button label="BaÄŸla" name="link_btn"/>
+	<button label="Bağlantıyı Kopar" name="unlink_btn"/>
+	<text label="Her İki Tarafı Uzat" name="checkbox uniform label">
+		Her İki Tarafı Uzat
+	</text>
+	<check_box initial_value="true" label="Dokuları Uzat" name="checkbox stretch textures"/>
+	<check_box initial_value="true" label="Yasla" name="checkbox snap to grid"/>
+	<button label="Seçenekler..." name="Options..." tool_tip="İlave ağ seçeneklerine bak"/>
+	<button name="ToolCube" tool_tip="Küp"/>
+	<button name="ToolPrism" tool_tip="Prizma"/>
+	<button name="ToolPyramid" tool_tip="Piramit"/>
+	<button name="ToolTetrahedron" tool_tip="Üçgen Piramit"/>
+	<button name="ToolCylinder" tool_tip="Silindir"/>
+	<button name="ToolHemiCylinder" tool_tip="Yarı Silindir"/>
+	<button name="ToolCone" tool_tip="Koni"/>
+	<button name="ToolHemiCone" tool_tip="Yarı Koni"/>
+	<button name="ToolSphere" tool_tip="Küre"/>
+	<button name="ToolHemiSphere" tool_tip="Yarı Küre"/>
+	<button name="ToolTorus" tool_tip="Torus"/>
+	<button name="ToolTube" tool_tip="Tüp"/>
+	<button name="ToolRing" tool_tip="Halka"/>
+	<button name="ToolTree" tool_tip="Ağaç"/>
+	<button name="ToolGrass" tool_tip="Çimen"/>
+	<check_box label="Seçili Aracı tut" name="checkbox sticky"/>
+	<check_box label="Seçimi kopyala" name="checkbox copy selection"/>
+	<check_box initial_value="true" label="Kopyayı Merkezle" name="checkbox copy centers"/>
+	<check_box label="Kopyayı Döndür" name="checkbox copy rotates"/>
+	<radio_group name="land_radio_group">
+		<radio_item label="Araziyi Seç" name="radio select land"/>
+		<radio_item label="Düzleştir" name="radio flatten"/>
+		<radio_item label="Yükselt" name="radio raise"/>
+		<radio_item label="Alçalt" name="radio lower"/>
+		<radio_item label="Düzgünleştir" name="radio smooth"/>
+		<radio_item label="Pürüzlendir" name="radio noise"/>
+		<radio_item label="Geri Çevir" name="radio revert"/>
+	</radio_group>
+	<text name="Bulldozer:">
+		Buldozer:
+	</text>
+	<text name="Dozer Size:">
+		Büyüklük
+	</text>
+	<slider_bar initial_value="2.0" name="slider brush size"/>
+	<text name="Strength:">
+		Kuvvet
+	</text>
+	<slider_bar initial_value="0.00" name="slider force"/>
+	<button label="Uygula" label_selected="Uygula" name="button apply to selection" tool_tip="Seçilen araziyi değiştirin"/>
+	<text name="selection_empty">
+		Seçilen bir şey yok.
+	</text>
+	<text name="remaining_capacity">
+		[CAPACITY_STRING] [secondlife:///app/openfloater/object_weights Ek bilgi]
+	</text>
+	<tab_container name="Object Info Tabs">
+		<panel label="Genel" name="General">
+			<panel.string name="text deed continued">
+				Devret
+			</panel.string>
+			<panel.string name="text deed">
+				Devret
+			</panel.string>
+			<panel.string name="text modify info 1">
+				Bu nesneyi deÄŸiÅŸtirebilirsiniz
+			</panel.string>
+			<panel.string name="text modify info 2">
+				Bu nesneleri deÄŸiÅŸtirebilirsiniz
+			</panel.string>
+			<panel.string name="text modify info 3">
+				Bu nesneyi deÄŸiÅŸtiremezsiniz
+			</panel.string>
+			<panel.string name="text modify info 4">
+				Bu nesneleri deÄŸiÅŸtiremezsiniz
+			</panel.string>
+			<panel.string name="text modify warning">
+				İzinleri ayarlamak için tüm nesneyi seçmelisiniz
+			</panel.string>
+			<panel.string name="Cost Default">
+				Fiyat: L$
+			</panel.string>
+			<panel.string name="Cost Total">
+				Toplam Fiyat: L$
+			</panel.string>
+			<panel.string name="Cost Per Unit">
+				Birim Fiyatı: L$
+			</panel.string>
+			<panel.string name="Cost Mixed">
+				Karma Fiyat
+			</panel.string>
+			<panel.string name="Sale Mixed">
+				Karma Satış
+			</panel.string>
+			<text name="Name:">
+				Ad:
+			</text>
+			<text name="Description:">
+				Açıklama:
+			</text>
+			<text name="Creator:">
+				OluÅŸturan:
+			</text>
+			<text name="Owner:">
+				Sahip:
+			</text>
+			<text name="Group:">
+				Grup:
+			</text>
+			<name_box initial_value="Yükleniyor..." name="Group Name Proxy"/>
+			<button name="button set group" tool_tip="Bu nesnenin izinlerini paylaşmak için bir grup seçin"/>
+			<check_box label="Paylaş" name="checkbox share with group" tool_tip="Ayarlanan grubun tüm üyelerinin, bu nesne için değiştirme izinlerinizi paylaşmasına izin verir. Rol kısıtlamalarını etkinleştirmek için Devretme yapmalısınız."/>
+			<button label="Devret" label_selected="Devret" name="button deed" tool_tip="Bu nesne devredilerek verildiğinde, nesnenin sonraki sahibi için izinler geçerli olur. Grup içerisinde paylaşılan nesneler bir grup yetkilisi tarafından devredilebilir."/>
+			<text name="label click action">
+				Şu eylem için tıklayın:
+			</text>
+			<combo_box name="clickaction">
+				<combo_box.item label="Dokun (varsayılan)" name="Touch/grab(default)"/>
+				<combo_box.item label="Nesnenin üzerine otur" name="Sitonobject"/>
+				<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>
+			<check_box label="Satılık:" name="checkbox for sale"/>
+			<combo_box name="sale type">
+				<combo_box.item label="Kopyala" name="Copy"/>
+				<combo_box.item label="İçerik" name="Contents"/>
+				<combo_box.item label="Orijinal" name="Original"/>
+			</combo_box>
+			<spinner label="Fiyat: L$" name="Edit Cost"/>
+			<check_box label="Aramada göster" name="search_check" tool_tip="Kişiler arama sonuçlarında bu nesneyi görebilsin"/>
+			<panel name="perms_build">
+				<text name="perm_modify">
+					Bu nesneyi deÄŸiÅŸtirebilirsiniz
+				</text>
+				<text name="Anyone can:">
+					Herkes:
+				</text>
+				<check_box label="Hareket Et" name="checkbox allow everyone move"/>
+				<check_box label="Kopyala" name="checkbox allow everyone copy"/>
+				<text name="Next owner can:">
+					Sonraki sahip:
+				</text>
+				<check_box label="DeÄŸiÅŸtir" name="checkbox next owner can modify"/>
+				<check_box label="Kopyala" name="checkbox next owner can copy"/>
+				<check_box label="Aktar" name="checkbox next owner can transfer" tool_tip="Sonraki sahibi bu nesneyi verebilir veya tekrar satabilir"/>
+				<text name="B:">
+					B:
+				</text>
+				<text name="O:">
+					O:
+				</text>
+				<text name="G:">
+					G:
+				</text>
+				<text name="E:">
+					E:
+				</text>
+				<text name="N:">
+					N:
+				</text>
+				<text name="F:">
+					F:
+				</text>
+			</panel>
+		</panel>
+		<panel label="Nesne" name="Object">
+			<check_box label="Kilitli" name="checkbox locked" tool_tip="Nesnenin hareket ettirilmesini veya silinmesini engeller. Arzulanmayan düzenlemelerden kaçınmak için inşa işlemleri sırasında oldukça faydalıdır."/>
+			<check_box label="Fiziksel" name="Physical Checkbox Ctrl" tool_tip="Nesnelerin itilmesine ve yerçekiminden etkilenmesine izin verir."/>
+			<check_box label="Geçici" name="Temporary Checkbox Ctrl" tool_tip="Nesnenin oluşturulduktan 1 dakika sonra silinmesine neden olur"/>
+			<check_box label="Fantom" name="Phantom Checkbox Ctrl" tool_tip="Nesnenin diğer nesneler veya avatarlarla çarpışmamasına neden olur"/>
+			<text name="label position">
+				Konum (metre)
+			</text>
+			<spinner label="X" name="Pos X"/>
+			<spinner label="Y" name="Pos Y"/>
+			<spinner label="Z" name="Pos Z"/>
+			<text name="label size">
+				Büyüklük (metre)
+			</text>
+			<spinner label="X" name="Scale X"/>
+			<spinner label="Y" name="Scale Y"/>
+			<spinner label="Z" name="Scale Z"/>
+			<text name="label rotation">
+				Dönüş (derece)
+			</text>
+			<spinner label="X" name="Rot X"/>
+			<spinner label="Y" name="Rot Y"/>
+			<spinner label="Z" name="Rot Z"/>
+			<combo_box name="comboBaseType">
+				<combo_box.item label="Kutu" name="Box"/>
+				<combo_box.item label="Silindir" name="Cylinder"/>
+				<combo_box.item label="Prizma" name="Prism"/>
+				<combo_box.item label="Küre" name="Sphere"/>
+				<combo_box.item label="Torus" name="Torus"/>
+				<combo_box.item label="Tüp" name="Tube"/>
+				<combo_box.item label="Halka" name="Ring"/>
+				<combo_box.item label="ÅžekillendirilmiÅŸ" name="Sculpted"/>
+			</combo_box>
+			<text name="text cut">
+				Yolu Kes (başlangıç/son)
+			</text>
+			<spinner label="B DÄ°KKAT" name="cut begin"/>
+			<spinner label="D - DÄ°KKAT" name="cut end"/>
+			<text name="text hollow">
+				Oyuk
+			</text>
+			<text name="text skew">
+				Çarpıt
+			</text>
+			<text name="Hollow Shape">
+				Oyuk Åžekil
+			</text>
+			<combo_box name="hole">
+				<combo_box.item label="Varsayılan" name="Default"/>
+				<combo_box.item label="Daire" name="Circle"/>
+				<combo_box.item label="Kare" name="Square"/>
+				<combo_box.item label="Üçgen" name="Triangle"/>
+			</combo_box>
+			<text name="text twist">
+				Bük (başlangıç/son)
+			</text>
+			<spinner label="B DÄ°KKAT" name="Twist Begin"/>
+			<spinner label="D - DÄ°KKAT" name="Twist End"/>
+			<text name="scale_taper">
+				Kısalt
+			</text>
+			<text name="scale_hole">
+				Delik Büyüklüğü
+			</text>
+			<spinner label="X" name="Taper Scale X"/>
+			<spinner label="Y" name="Taper Scale Y"/>
+			<text name="text topshear">
+				Üstü Kaydır
+			</text>
+			<spinner label="X" name="Shear X"/>
+			<spinner label="Y" name="Shear Y"/>
+			<text name="advanced_cut">
+				Profili Kes (başlangıç/son)
+			</text>
+			<text name="advanced_dimple">
+				Çukurlaştır (başlangıç/son)
+			</text>
+			<text name="advanced_slice">
+				Dilimle (başlangıç/son)
+			</text>
+			<spinner label="B" name="Path Limit Begin"/>
+			<spinner label="D" name="Path Limit End"/>
+			<text name="text taper2">
+				Kısalt
+			</text>
+			<spinner label="X" name="Taper X"/>
+			<spinner label="Y" name="Taper Y"/>
+			<text name="text radius delta">
+				Yarıçap
+			</text>
+			<text name="text revolutions">
+				Dönüş
+			</text>
+			<texture_picker label="Dokuyu Şekillendir" name="sculpt texture control" tool_tip="Bir resim seçmek için tıklayın"/>
+			<check_box label="Ayna" name="sculpt mirror control" tool_tip="Şekillendirilmiş primi X ekseni etrafında döndürür"/>
+			<check_box label="İçini Dışına Çıkar" name="sculpt invert control" tool_tip="Şekillendirilmiş prim normallerini tersine çevirir, iç kısmı dışarıda gösterir"/>
+			<text name="label sculpt type">
+				Dikiş türü
+			</text>
+			<combo_box name="sculpt type control">
+				<combo_box.item label="Küre" name="Sphere"/>
+				<combo_box.item label="Torus" name="Torus"/>
+				<combo_box.item label="Düzlem" name="Plane"/>
+				<combo_box.item label="Silindir" name="Cylinder"/>
+			</combo_box>
+		</panel>
+		<panel label="Özellikler" name="Features">
+			<panel.string name="None">
+				Hiçbiri
+			</panel.string>
+			<panel.string name="Prim">
+				Prim
+			</panel.string>
+			<panel.string name="Convex Hull">
+				Dışbükey Gövde
+			</panel.string>
+			<text name="select_single">
+				Özelliklerini düzenlemek için sadece bir tane ilkel öğeyi seçin.
+			</text>
+			<text name="edit_object">
+				Nesne özelliklerini düzenleyin:
+			</text>
+			<check_box label="Esnek Yol" name="Flexible1D Checkbox Ctrl" tool_tip="Nesnelerin Z ekseni etrafında esnemesine imkan tanır (sadece istemci tarafında)"/>
+			<spinner label="Yumuşaklık" name="FlexNumSections"/>
+			<spinner label="Yerçekimi" name="FlexGravity"/>
+			<spinner label="Sürükle" name="FlexFriction"/>
+			<spinner label="Rüzgar" name="FlexWind"/>
+			<spinner label="Gerilim" name="FlexTension"/>
+			<spinner label="X Kuvveti" name="FlexForceX"/>
+			<spinner label="Y Kuvveti" name="FlexForceY"/>
+			<spinner label="Z Kuvveti" name="FlexForceZ"/>
+			<check_box label="Işık" name="Light Checkbox Ctrl" tool_tip="Nesnelerin ışık yaymasına neden olur"/>
+			<color_swatch name="colorswatch" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+			<texture_picker label="" name="light texture control" tool_tip="Bir projeksiyon görüntüsü seçmek için tıklayın (sadece ertelenmiş işleme etkinken geçerlidir)"/>
+			<spinner label="YoÄŸunluk" name="Light Intensity"/>
+			<spinner label="Görünüm Alanı" name="Light FOV"/>
+			<spinner label="Yarıçap" name="Light Radius"/>
+			<spinner label="Odak" name="Light Focus"/>
+			<spinner label="Işık Azalması" name="Light Falloff"/>
+			<spinner label="Ambiyans" name="Light Ambiance"/>
+			<text name="label physicsshapetype">
+				Fizik Şekil Türü:
+			</text>
+			<combo_box name="Physics Shape Type Combo Ctrl" tool_tip="Fizik şekil türünü seçin"/>
+			<combo_box name="material">
+				<combo_box.item label="TaÅŸ" name="Stone"/>
+				<combo_box.item label="Metal" name="Metal"/>
+				<combo_box.item label="Cam" name="Glass"/>
+				<combo_box.item label="AhÅŸap" name="Wood"/>
+				<combo_box.item label="Et" name="Flesh"/>
+				<combo_box.item label="Plastik" name="Plastic"/>
+				<combo_box.item label="Lastik" name="Rubber"/>
+			</combo_box>
+			<spinner label="Yerçekimi" name="Physics Gravity"/>
+			<spinner label="Sürtünme" name="Physics Friction"/>
+			<spinner label="100 kg/m3 cinsinden yoÄŸunluk" name="Physics Density"/>
+			<spinner label="Restitüsyon" name="Physics Restitution"/>
+		</panel>
+		<panel label="Doku" name="Texture">
+			<panel.string name="string repeats per meter">
+				Metrede Kaç Kez Tekrarlandığı
+			</panel.string>
+			<panel.string name="string repeats per face">
+				Bir Yüzde Kaç Kez Tekrarlandığı
+			</panel.string>
+			<texture_picker label="Doku" name="texture control" tool_tip="Bir resim seçmek için tıklayın"/>
+			<color_swatch label="Renk" name="colorswatch" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+			<text name="color trans">
+				Saydamlık %
+			</text>
+			<text name="glow label">
+				Parıltı
+			</text>
+			<check_box label="Tam Parlak" name="checkbox fullbright"/>
+			<text name="tex gen">
+				EÅŸleÅŸtirme
+			</text>
+			<combo_box name="combobox texgen">
+				<combo_box.item label="Varsayılan" name="Default"/>
+				<combo_box.item label="Planar" name="Planar"/>
+			</combo_box>
+			<text name="label shininess">
+				Parıldama
+			</text>
+			<combo_box name="combobox shininess">
+				<combo_box.item label="Hiçbiri" name="None"/>
+				<combo_box.item label="Düşük" name="Low"/>
+				<combo_box.item label="Orta" name="Medium"/>
+				<combo_box.item label="Yüksek" name="High"/>
+			</combo_box>
+			<text name="label bumpiness">
+				Yumruluk
+			</text>
+			<combo_box name="combobox bumpiness">
+				<combo_box.item label="Hiçbiri" name="None"/>
+				<combo_box.item label="Parlaklık" name="Brightness"/>
+				<combo_box.item label="Koyuluk" name="Darkness"/>
+				<combo_box.item label="damarlı ahşap" name="woodgrain"/>
+				<combo_box.item label="ağaç kabuğu" name="bark"/>
+				<combo_box.item label="tuÄŸlalar" name="bricks"/>
+				<combo_box.item label="dama tahtası" name="checker"/>
+				<combo_box.item label="beton" name="concrete"/>
+				<combo_box.item label="sert çini" name="crustytile"/>
+				<combo_box.item label="kesilmiÅŸ taÅŸ" name="cutstone"/>
+				<combo_box.item label="diskler" name="discs"/>
+				<combo_box.item label="çakıl" name="gravel"/>
+				<combo_box.item label="petri kabı" name="petridish"/>
+				<combo_box.item label="dış kaplama" name="siding"/>
+				<combo_box.item label="taş çini" name="stonetile"/>
+				<combo_box.item label="stükko" name="stucco"/>
+				<combo_box.item label="vakum" name="suction"/>
+				<combo_box.item label="örgü" name="weave"/>
+			</combo_box>
+			<check_box initial_value="false" label="Planar yüzleri hizala" name="checkbox planar align" tool_tip="Tüm seçili yüzeylerdeki dokuları son seçili yüzdekiyle hizalar. Planar doku eşleştirmesi gerektirir."/>
+			<text name="rpt">
+				Tekrarlar / Yüz
+			</text>
+			<spinner label="Yatay (U)" name="TexScaleU"/>
+			<check_box label="Çevir" name="checkbox flip s"/>
+			<spinner label="Dikey (V)" name="TexScaleV"/>
+			<check_box label="Çevir" name="checkbox flip t"/>
+			<spinner label="Döndürme*" name="TexRot"/>
+			<spinner label="Tekrarlar / Metre" name="rptctrl"/>
+			<button label="Uygula" label_selected="Uygula" name="button apply"/>
+			<text name="tex offset">
+				Doku Dengeleyicisi
+			</text>
+			<spinner label="Yatay (U)" name="TexOffsetU"/>
+			<spinner label="Dikey (V)" name="TexOffsetV"/>
+			<panel name="Add_Media">
+				<text name="media_tex">
+					Ortam
+				</text>
+				<button name="add_media" tool_tip="Ortam Ekle"/>
+				<button name="delete_media" tool_tip="Bu ortam dokusunu sil"/>
+				<button name="edit_media" tool_tip="Bu Ortamı Düzenle"/>
+				<button label="Hizala" label_selected="Ortamı Hizala" name="button align" tool_tip="Ortam dokusunu hizala (önce yüklenmelidir)"/>
+			</panel>
+		</panel>
+		<panel label="İçerik" name="Contents">
+			<button label="Yeni Komut Dosyası" label_selected="Yeni Komut Dosyası" name="button new script"/>
+			<button label="Ä°zinler" name="button permissions"/>
+		</panel>
+	</tab_container>
+	<panel name="land info panel">
+		<text name="label_parcel_info">
+			Parsel Bilgisi
+		</text>
+		<text name="label_area_price">
+			Fiyat: [AREA] m² için L$[PRICE]
+		</text>
+		<text name="label_area">
+			Alan: [AREA] m²
+		</text>
+		<button label="Arazi Hakkında" label_selected="Arazi Hakkında" name="button about land"/>
+		<check_box label="Sahipleri göster" name="checkbox show owners" tool_tip="Sahip türüne göre parselleri renklendir:   Yeşil = Sizin araziniz  Deniz Mavisi = Grubunuzun arazisi  Kırmızı = Başkalarının mülkiyetinde  Sarı = Satılık  Mor = Açık artırmada  Gri = Kamuya açık"/>
+		<text name="label_parcel_modify">
+			Parseli DeÄŸiÅŸtir
+		</text>
+		<button label="Böl" label_selected="Böl" name="button subdivide land"/>
+		<button label="BirleÅŸtir" label_selected="BirleÅŸtir" name="button join land"/>
+		<text name="label_parcel_trans">
+			Arazi Alışverişleri
+		</text>
+		<button label="Arazi Satın Al" label_selected="Arazi Satın Al" name="button buy land"/>
+		<button label="Araziyi Terket" label_selected="Araziyi Terket" name="button abandon land"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_top_objects.xml b/indra/newview/skins/default/xui/tr/floater_top_objects.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e726f583cc43351779b4c1a5bb2e484dfa2b878e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_top_objects.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="top_objects" title="Top Nesneler">
+	<floater.string name="top_scripts_title">
+		Top Komut Dosyaları
+	</floater.string>
+	<floater.string name="top_scripts_text">
+		[COUNT] komut tosyası toplam [TIME] ms sürüyor
+	</floater.string>
+	<floater.string name="scripts_score_label">
+		Süre
+	</floater.string>
+	<floater.string name="scripts_mono_time_label">
+		Mono Süre
+	</floater.string>
+	<floater.string name="top_colliders_title">
+		En Çok Çarpışanlar
+	</floater.string>
+	<floater.string name="top_colliders_text">
+		En çok potansiyel çarpışma yaşayan [COUNT] nesne
+	</floater.string>
+	<floater.string name="colliders_score_label">
+		Skor
+	</floater.string>
+	<floater.string name="none_descriptor">
+		Hiçbiri bulunamadı.
+	</floater.string>
+	<text name="title_text">
+		Yükleniyor...
+	</text>
+	<scroll_list name="objects_list">
+		<scroll_list.columns label="Skor" name="score"/>
+		<scroll_list.columns label="Ad" name="name"/>
+		<scroll_list.columns label="Sahip" name="owner"/>
+		<scroll_list.columns label="Konum" name="location"/>
+		<scroll_list.columns label="Süre" name="time"/>
+		<scroll_list.columns label="Mono Süre" name="mono_time"/>
+		<scroll_list.columns label="URL&apos;ler" name="URLs"/>
+	</scroll_list>
+	<text name="id_text">
+		Nesne KimliÄŸi:
+	</text>
+	<button label="İşareti Göster" name="show_beacon_btn"/>
+	<text name="obj_name_text">
+		Nesne adı:
+	</text>
+	<button label="Filtrele" name="filter_object_btn"/>
+	<text name="owner_name_text">
+		Sahip:
+	</text>
+	<button label="Filtrele" name="filter_owner_btn"/>
+	<button label="Seçileni İade Et" name="return_selected_btn"/>
+	<button label="Tümünü İade Et" name="return_all_btn"/>
+	<button label="Seçileni Devre Dışı Bırak" name="disable_selected_btn"/>
+	<button label="Tümüni Devre Dışı Bırak" name="disable_all_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_tos.xml b/indra/newview/skins/default/xui/tr/floater_tos.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7ff0001ddd56370735c8388e4b968bf992e8e002
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_tos.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="modal container">
+	<floater.string name="real_url">
+		http://secondlife.com/app/tos/
+	</floater.string>
+	<floater.string name="loading_url">
+		data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E Loading %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E
+	</floater.string>
+	<button label="Devam Et" label_selected="Devam Et" name="Continue"/>
+	<button label="Ä°ptal" label_selected="Ä°ptal" name="Cancel"/>
+	<check_box label="Hizmet Koşullarını ve Gizlilik Politikasını Kabul Ediyorum" name="agree_chk"/>
+	<text name="tos_heading">
+		Aşağıdaki Hizmet Koşullarını ve Gizlilik Politikasını dikkatle okuyun. [SECOND_LIFE]&apos;ta oturum açmaya devam etmek için anlaşmayı kabul etmelisiniz.
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_toybox.xml b/indra/newview/skins/default/xui/tr/floater_toybox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e60e176643906795ee9138e8426d8b0ca5b18ac8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_toybox.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Toybox" title="ARAÇ ÇUBUĞU DÜĞMELERİ">
+	<text name="toybox label 1">
+		Düğmeleri araç çubuklarına veya araç çubuklarından sürükleyerek ekleyin ya da kaldırın.
+	</text>
+	<text name="toybox label 2">
+		Her bir araç çubuğunun ayarına göre düğmeler gösterilir veya sadece simgeleri yer alır.
+	</text>
+	<button label="Tüm araç çubuklarını temizle" label_selected="Tüm araç çubuklarını temizle" name="btn_clear_all"/>
+	<button label="Varsayılanları geri yükle" label_selected="Varsayılanları geri yükle" name="btn_restore_defaults"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_translation_settings.xml b/indra/newview/skins/default/xui/tr/floater_translation_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..33ce76bd9a64e7e666fea31fba5ead400db0bb19
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_translation_settings.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_translation_settings" title="SOHBET ÇEVİRİSİ AYARLARI">
+	<string name="bing_api_key_not_verified">
+		Bing uygulama kimliği doğrulanmadı. Lütfen tekrar deneyin.
+	</string>
+	<string name="google_api_key_not_verified">
+		Google API anahtarı doğrulanmadı. Lütfen tekrar deneyin.
+	</string>
+	<string name="bing_api_key_verified">
+		Bing uygulama kimliği doğrulandı.
+	</string>
+	<string name="google_api_key_verified">
+		Google API anahtarı doğrulandı.
+	</string>
+	<check_box label="Sohbet ederken makine çevirisini etkinleştirin" name="translate_chat_checkbox"/>
+	<text name="translate_language_label">
+		Sohbeti şu dile çevir:
+	</text>
+	<combo_box name="translate_language_combo">
+		<combo_box.item label="Sistem Varsayılanı" name="System Default Language"/>
+		<combo_box.item label="Ä°ngilizce" name="English"/>
+		<combo_box.item label="Dansk (Danca)" name="Danish"/>
+		<combo_box.item label="Deutsch (Almanca)" name="German"/>
+		<combo_box.item label="Español (İspanyolca)" name="Spanish"/>
+		<combo_box.item label="Français (Fransızca)" name="French"/>
+		<combo_box.item label="Italiano (Ä°talyanca)" name="Italian"/>
+		<combo_box.item label="Magyar (Macarca)" name="Hungarian"/>
+		<combo_box.item label="Nederlands (Flemenkçe)" name="Dutch"/>
+		<combo_box.item label="Polski (Lehçe)" name="Polish"/>
+		<combo_box.item label="Português (Portekizce)" name="Portugese"/>
+		<combo_box.item label="Русский (Rusça)" name="Russian"/>
+		<combo_box.item label="Türkçe (Türkçe)" name="Turkish"/>
+		<combo_box.item label="Українська (Ukraynaca)" name="Ukrainian"/>
+		<combo_box.item label="中文 (正體) (Çince)" name="Chinese"/>
+		<combo_box.item label="日本語 (Japonca)" name="Japanese"/>
+		<combo_box.item label="한국어 (Korece)" name="Korean"/>
+	</combo_box>
+	<text name="tip">
+		Çeviri hizmetini seçin:
+	</text>
+	<radio_group name="translation_service_rg">
+		<radio_item initial_value="bing" label="Bing Çevirmeni" name="bing"/>
+		<radio_item initial_value="google" label="Google Translate" name="google"/>
+	</radio_group>
+	<text name="bing_api_key_label">
+		Bing [http://www.bing.com/developers/createapp.aspx Uygulama KimliÄŸi]:
+	</text>
+	<button label="DoÄŸrula" name="verify_bing_api_key_btn"/>
+	<text name="google_api_key_label">
+		Google [http://code.google.com/apis/language/translate/v2/getting_started.html#auth API anahtarı]:
+	</text>
+	<button label="DoÄŸrula" name="verify_google_api_key_btn"/>
+	<text name="google_links_text">
+		[http://code.google.com/apis/language/translate/v2/pricing.html Fiyatlandırma] | [https://code.google.com/apis/console İstatistikler]
+	</text>
+	<button label="Tamam" name="ok_btn"/>
+	<button label="Ä°ptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_url_entry.xml b/indra/newview/skins/default/xui/tr/floater_url_entry.xml
new file mode 100644
index 0000000000000000000000000000000000000000..54c5b047a8acc0d3dd6b98f8ad171e91a2d6b65c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_url_entry.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="url_entry">
+	<text name="media_label">
+		Ortam URL&apos;si:
+	</text>
+	<button label="Tamam" name="ok_btn"/>
+	<button label="Ä°ptal" name="cancel_btn"/>
+	<button label="Temizle" name="clear_btn"/>
+	<text name="loading_label">
+		Yükleniyor...
+	</text>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_voice_controls.xml b/indra/newview/skins/default/xui/tr/floater_voice_controls.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5ff0804f177ae5644b6844b4f2655621577b9f4e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_voice_controls.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_voice_controls" title="SES DENETÄ°MLERÄ°">
+	<string name="title_nearby">
+		SES AYARLARI
+	</string>
+	<string name="title_group">
+		[GROUP] Ä°LE GRUP ARAMASI
+	</string>
+	<string name="title_adhoc">
+		KONFERANS ARAMASI
+	</string>
+	<string name="title_peer_2_peer">
+		[NAME] Ä°LE ARAMA
+	</string>
+	<string name="no_one_near">
+		Yakındaki kimsede ses etkin değil
+	</string>
+	<layout_stack name="my_call_stack">
+		<layout_panel name="my_panel">
+			<text name="user_text" value="Avatarım:"/>
+		</layout_panel>
+		<layout_panel name="leave_call_panel">
+			<layout_stack name="voice_effect_and_leave_call_stack">
+				<layout_panel name="leave_call_btn_panel">
+					<button label="Aramadan Ayrıl" name="leave_call_btn"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+	</layout_stack>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..a10da39a69ec04599e3dffbc3dc657e4524ddeba
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_voice_effect.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater label="Yerler" name="voice_effects" title="SES ÅžEKÄ°LLENDÄ°RME">
+	<string name="no_voice_effect">
+		(Ses Åžekillendirme Yok)
+	</string>
+	<string name="active_voice_effect">
+		(Etkin)
+	</string>
+	<string name="unsubscribed_voice_effect">
+		(Abonelik Ä°ptal)
+	</string>
+	<string name="new_voice_effect">
+		(Yeni!)
+	</string>
+	<string name="effect_Arena">
+		Arena
+	</string>
+	<string name="effect_Beast">
+		Yaratık
+	</string>
+	<string name="effect_Buff">
+		Yapılı
+	</string>
+	<string name="effect_Buzz">
+		Vızıltı
+	</string>
+	<string name="effect_Camille">
+		Camille
+	</string>
+	<string name="effect_Creepy">
+		Korkutucu
+	</string>
+	<string name="effect_CreepyBot">
+		KorkutucuBot
+	</string>
+	<string name="effect_Cyber">
+		Siber
+	</string>
+	<string name="effect_DeepBot">
+		DerinBot
+	</string>
+	<string name="effect_Demon">
+		Ä°blis
+	</string>
+	<string name="effect_Flirty">
+		Cilveli
+	</string>
+	<string name="effect_Foxy">
+		Alımlı
+	</string>
+	<string name="effect_Halloween_2010_Bonus">
+		Halloween_2010_Bonus
+	</string>
+	<string name="effect_Helium">
+		Helyum
+	</string>
+	<string name="effect_Husky">
+		Güçlü
+	</string>
+	<string name="effect_Intercom">
+		Ä°nterkom
+	</string>
+	<string name="effect_Macho">
+		Maço
+	</string>
+	<string name="effect_Micro">
+		Mikro
+	</string>
+	<string name="effect_Mini">
+		Mini
+	</string>
+	<string name="effect_Nano">
+		Nano
+	</string>
+	<string name="effect_Nightmare">
+		Kabus
+	</string>
+	<string name="effect_PopBot">
+		PopBot
+	</string>
+	<string name="effect_Rachel">
+		Rachel
+	</string>
+	<string name="effect_Radio">
+		Radyo
+	</string>
+	<string name="effect_Robot">
+		Robot
+	</string>
+	<string name="effect_Roxanne">
+		Roxanne
+	</string>
+	<string name="effect_Sabrina">
+		Sabrina
+	</string>
+	<string name="effect_Samantha">
+		Samantha
+	</string>
+	<string name="effect_Sexy">
+		Seksi
+	</string>
+	<string name="effect_Shorty">
+		Bücür
+	</string>
+	<string name="effect_Sneaky">
+		Sinsi
+	</string>
+	<string name="effect_Stallion">
+		Maskülen
+	</string>
+	<string name="effect_Sultry">
+		İhtiraslı
+	</string>
+	<string name="effect_Thunder">
+		Gök gürültüsü
+	</string>
+	<string name="effect_Vixen">
+		Çekici
+	</string>
+	<string name="effect_WhinyBot">
+		AÄŸlakBot
+	</string>
+	<text name="preview_text">
+		Önizleme için
+	</text>
+	<text name="status_text">
+		Bir örnek kaydettikten sonra sese tıklayarak nasıl olduğunu duyun.
+	</text>
+	<button label="Kaydet" name="record_btn" tool_tip="Sesinizin örneğini kaydedin."/>
+	<button label="Durdur" name="record_stop_btn"/>
+	<text name="voice_morphing_link">
+		[[URL] Hemen Abone Ol]
+	</text>
+	<scroll_list name="voice_effect_list" tool_tip="Sesinizin örneğini kaydettikten sonra önizleme için bir efekte tıklayın.">
+		<scroll_list.columns label="Ses Adı" name="name"/>
+		<scroll_list.columns label="BitiÅŸ Tarihi" name="expires"/>
+	</scroll_list>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_water.xml b/indra/newview/skins/default/xui/tr/floater_water.xml
new file mode 100644
index 0000000000000000000000000000000000000000..66d6c1e30da6f31c59629299202bc17347f59b66
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_water.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="Water Floater" title="GELÄ°ÅžMÄ°Åž SU DÃœZENLEYÄ°CÄ°">
+	<floater.string name="WLDefaultWaterNames">
+		Varsayılan:Camsı:Havuz:çamurlu:İkinci Veba:YILAN!!!:Valdez
+	</floater.string>
+	<text name="KeyFramePresetsText">
+		Su Ön Ayarları:
+	</text>
+	<button label="Yeni" label_selected="Yeni" name="WaterNewPreset"/>
+	<button label="Kaydet" label_selected="Kaydet" name="WaterSavePreset"/>
+	<button label="Sil" label_selected="Sil" name="WaterDeletePreset"/>
+	<tab_container name="Water Tabs">
+		<panel label="AYARLAR" name="Settings">
+			<text name="BHText">
+				Su Sisi Rengi
+			</text>
+			<color_swatch name="WaterFogColor" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+			<text name="WaterFogDensText">
+				Su Yoğunluk Üssü
+			</text>
+			<text name="WaterUnderWaterFogModText">
+				Sualtı Sis Değiştiricisi
+			</text>
+			<text name="BDensText">
+				Yansıma Dalgacığı Ölçeği
+			</text>
+			<slider label="1" name="WaterNormalScaleX"/>
+			<slider label="2" name="WaterNormalScaleY"/>
+			<slider label="3" name="WaterNormalScaleZ"/>
+			<text name="HDText">
+				Fresnel Ölçeği
+			</text>
+			<text name="FresnelOffsetText">
+				Fresnel Dengeleyicisi
+			</text>
+			<text name="DensMultText">
+				Yukarıdan Kırılma Ölçeği
+			</text>
+			<text name="WaterScaleBelowText">
+				Aşağıdan Kırılma Ölçeği
+			</text>
+			<text name="MaxAltText">
+				Bulanıklaştırma Çarpanı
+			</text>
+		</panel>
+		<panel label="GÖRÜNTÜ" name="Waves">
+			<text name="BHText">
+				Büyük Dalga Yönü
+			</text>
+			<text name="WaterWave1DirXText">
+				X
+			</text>
+			<text name="WaterWave1DirYText">
+				Y
+			</text>
+			<text name="BHText2">
+				Küçük Dalga Yönü
+			</text>
+			<text name="WaterWave2DirXText">
+				X
+			</text>
+			<text name="WaterWave2DirYText">
+				Y
+			</text>
+			<text name="BHText3">
+				Normal Harita
+			</text>
+		</panel>
+	</tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_web_content.xml b/indra/newview/skins/default/xui/tr/floater_web_content.xml
new file mode 100644
index 0000000000000000000000000000000000000000..93491b80fbec710248553f8a8036e630ae18efcd
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_web_content.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="floater_web_content" title="">
+	<layout_stack name="stack1">
+		<layout_panel name="nav_controls">
+			<button name="back" tool_tip="Geri Git"/>
+			<button name="forward" tool_tip="Ä°leri Git"/>
+			<button name="stop" tool_tip="Navigasyonu durdur"/>
+			<button name="reload" tool_tip="Sayfayı tekrar yükle"/>
+			<combo_box name="address" tool_tip="URL&apos;yi buraya gir"/>
+			<icon name="media_secure_lock_flag" tool_tip="Güvenli Tarama"/>
+			<button name="popexternal" tool_tip="Mevcut URL&apos;yi masaüstü tarayıcıda aç"/>
+		</layout_panel>
+	</layout_stack>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/tr/floater_whitelist_entry.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1a9f731af0a69611dd4eddec49247785661727d8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_whitelist_entry.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="whitelist_entry" title="GÜVENİLENLER LİSTESİ GİRİŞİ">
+	<text name="media_label">
+		İzin verilen alan adlarının listesine eklemek için bir URL ya da URL örneği girin
+	</text>
+	<line_editor name="whitelist_entry" tool_tip="Güvenilenler Listesine eklemek için bir URL ya da URL örneği girin"/>
+	<button label="Tamam" name="ok_btn"/>
+	<button label="Ä°ptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_windlight_options.xml b/indra/newview/skins/default/xui/tr/floater_windlight_options.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6c5fba374ce5842afe02a8b1ce72b7bd57cb41aa
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_windlight_options.xml
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="WindLight floater" title="GELİŞMİŞ GÖKYÜZÜ DÜZENLEYİCİ">
+	<floater.string name="WLDefaultSkyNames">
+		A-12:A-24:A-3:A-15:A-16.30:A-6:A-18:A-9:A-21:Barselona:Tipi:Mavi Gün Ortası:Sahilde Öğleden Sonra:Sahilde Gün Batımı:Varsayılan:Çölde Gün Batımı:Güzel Bir Gün:Kabarık Büyük Bulutlar:Sisli:Şık Şık:Şık Şık Şık:Dondurma:Hayalet:Uygunsuz Gerçekler:Gün Ortası1:Gün Ortası 2:Gün Ortası 3:Gün Ortası 4:Gece:Korsan:Mor:Denizcinin Keyfi:Saf Tensel
+	</floater.string>
+	<text name="KeyFramePresetsText">
+		Gökyüzü Ön Ayarları:
+	</text>
+	<button label="Yeni" label_selected="Yeni" name="WLNewPreset"/>
+	<button label="Kaydet" label_selected="Kaydet" name="WLSavePreset"/>
+	<button label="Sil" label_selected="Sil" name="WLDeletePreset"/>
+	<button label="Gün Döngüsü Düzenleyici" label_selected="Gün Döngüsü Düzenleyici" name="WLDayCycleMenuButton"/>
+	<tab_container name="WindLight Tabs">
+		<panel label="ATMOSFER" name="Atmosphere">
+			<text name="BHText">
+				Mavi Ufuk
+			</text>
+			<text name="BHText2">
+				R
+			</text>
+			<text name="BHText3">
+				G
+			</text>
+			<text name="BHText4">
+				B
+			</text>
+			<text name="BHText5">
+				I
+			</text>
+			<text name="BDensText">
+				Puslu Ufuk
+			</text>
+			<text name="BDensText2">
+				Mavi YoÄŸunluÄŸu
+			</text>
+			<text name="BHText6">
+				R
+			</text>
+			<text name="BHText7">
+				G
+			</text>
+			<text name="BHText8">
+				B
+			</text>
+			<text name="BHText9">
+				I
+			</text>
+			<text name="HDText">
+				Pus YoÄŸunluÄŸu
+			</text>
+			<text name="DensMultText">
+				Yoğunluk Çarpanı
+			</text>
+			<text name="WLDistanceMultText">
+				Mesafe Çarpanı
+			</text>
+			<text name="MaxAltText">
+				Maks Ä°rtifa
+			</text>
+		</panel>
+		<panel label="AYDINLATMA" name="Lighting">
+			<text name="SLCText">
+				Güneş/Ay Rengi
+			</text>
+			<text name="BHText">
+				R
+			</text>
+			<text name="BHText2">
+				G
+			</text>
+			<text name="BHText3">
+				B
+			</text>
+			<text name="BHText4">
+				I
+			</text>
+			<text name="TODText">
+				Güneş/Ay Konumu
+			</text>
+			<text name="WLAmbientText">
+				Ortam
+			</text>
+			<text name="BHText5">
+				R
+			</text>
+			<text name="BHText6">
+				G
+			</text>
+			<text name="BHText7">
+				B
+			</text>
+			<text name="BHText8">
+				I
+			</text>
+			<text name="WLEastAngleText">
+				Doğu Açısı
+			</text>
+			<text name="SunGlowText">
+				Güneş Parıltısı
+			</text>
+			<slider label="Odak" name="WLGlowB"/>
+			<slider label="Büyüklük" name="WLGlowR"/>
+			<text name="SceneGammaText">
+				Sahne Gaması
+			</text>
+			<text name="WLStarText">
+				Yıldız Parlaklığı
+			</text>
+		</panel>
+		<panel label="BULUTLAR" name="Clouds">
+			<text name="WLCloudColorText">
+				Bulut Rengi
+			</text>
+			<text name="BHText">
+				R
+			</text>
+			<text name="BHText2">
+				G
+			</text>
+			<text name="BHText3">
+				B
+			</text>
+			<text name="BHText4">
+				I
+			</text>
+			<text name="WLCloudColorText2">
+				Bulut XY/YoÄŸunluÄŸu
+			</text>
+			<text name="BHText5">
+				X
+			</text>
+			<text name="BHText6">
+				Y
+			</text>
+			<text name="BHText7">
+				D
+			</text>
+			<text name="WLCloudCoverageText">
+				Bulut Örtüsü
+			</text>
+			<text name="WLCloudScaleText">
+				Bulut Yüksekliği
+			</text>
+			<text name="WLCloudDetailText">
+				Bulut Ayrıntısı (XY/Yoğunluğu)
+			</text>
+			<text name="BHText8">
+				X
+			</text>
+			<text name="BHText9">
+				Y
+			</text>
+			<text name="BHText10">
+				D
+			</text>
+			<text name="WLCloudScrollXText">
+				Bulut Kaydırma X
+			</text>
+			<check_box label="Kilitle" name="WLCloudLockX"/>
+			<text name="WLCloudScrollYText">
+				Bulut Kaydırma Y
+			</text>
+			<check_box label="Kilitle" name="WLCloudLockY"/>
+			<check_box label="Klasik Bulutlar Çiz" name="DrawClassicClouds"/>
+		</panel>
+	</tab_container>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_window_size.xml b/indra/newview/skins/default/xui/tr/floater_window_size.xml
new file mode 100644
index 0000000000000000000000000000000000000000..acc2cc3376fe9087266b5b703216bc0ff808e829
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_window_size.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="window_size" title="PENCERE BÜYÜKLÜĞÜ">
+	<string name="resolution_format">
+		[RES_X] x [RES_Y]
+	</string>
+	<text name="windowsize_text">
+		Pencere büyüklüğünü ayarla:
+	</text>
+	<combo_box name="window_size_combo" tool_tip="genişlik x yükseklik">
+		<combo_box.item label="1000 x 700 (varsayılan)" name="item0"/>
+		<combo_box.item label="1024 x 768" name="item1"/>
+		<combo_box.item label="1280 x 720 (720p)" name="item2"/>
+		<combo_box.item label="1920 x 1080 (1080p)" name="item3"/>
+	</combo_box>
+	<button label="Ayarla" name="set_btn"/>
+	<button label="Ä°ptal" name="cancel_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/floater_world_map.xml b/indra/newview/skins/default/xui/tr/floater_world_map.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e4729c2aedcc52d3d9092b773f29760fa8a528af
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/floater_world_map.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater name="worldmap" title="DÃœNYA HARÄ°TASI">
+	<panel name="layout_panel_1">
+		<text name="events_label">
+			Lejand
+		</text>
+	</panel>
+	<panel name="layout_panel_2">
+		<button name="Show My Location" tool_tip="Haritanın merkezi avatarımın konumu olsun"/>
+		<text name="me_label">
+			Ben
+		</text>
+		<text name="person_label">
+			KiÅŸi
+		</text>
+		<text name="infohub_label">
+			Bilgi Ä°stasyonu
+		</text>
+		<text name="land_sale_label">
+			Arazi Satışı
+		</text>
+		<text name="auction_label">
+			arazi açık artırması
+		</text>
+		<text name="by_owner_label">
+			sahibi tarafından
+		</text>
+		<button name="Go Home" tool_tip="Ana konumuma ışınla"/>
+		<text name="Home_label">
+			Ana konum
+		</text>
+		<text name="events_label">
+			Etkinlikler:
+		</text>
+		<text name="pg_label">
+			Genel
+		</text>
+		<check_box initial_value="true" name="events_mature_chk"/>
+		<text name="events_mature_label">
+			Orta
+		</text>
+		<text name="events_adult_label">
+			YetiÅŸkin
+		</text>
+	</panel>
+	<panel name="layout_panel_3">
+		<text name="find_on_map_label">
+			Haritada Bul
+		</text>
+	</panel>
+	<panel name="layout_panel_4">
+		<combo_box label="Çevrimiçi Arkadaşlar" name="friend combo" tool_tip="Haritada arkadaşlar gösterilsin">
+			<combo_box.item label="Çevrimiçi Arkadaşlarım" name="item1"/>
+		</combo_box>
+		<combo_box label="Yer İmlerim" name="landmark combo" tool_tip="Haritada gösterilecek yer imi">
+			<combo_box.item label="Yer Ä°mlerim" name="item1"/>
+		</combo_box>
+		<search_editor label="Adlarına Göre Bölgeler" name="location" tool_tip="Bir bölgenin adını yazın"/>
+		<button label="Bul" name="DoSearch" tool_tip="Bölge ara"/>
+		<button name="Clear" tool_tip="Takip çizgilerini temizle ve haritayı sıfırla"/>
+		<text name="events_label">
+			Konum:
+		</text>
+		<button label="Işınla" name="Teleport" tool_tip="Seçilen konuma ışınla"/>
+		<button label="SLurl&apos;i Kopyala" name="copy_slurl" tool_tip="Mevcut konumu, web üzerinde kullanılması için SLurl olarak kopyalar."/>
+		<button label="Seçimi Göster" name="Show Destination" tool_tip="Haritanın merkezi seçilen konum olsun"/>
+	</panel>
+	<panel name="layout_panel_5">
+		<text name="zoom_label">
+			Yakınlaştır
+		</text>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/inspect_avatar.xml b/indra/newview/skins/default/xui/tr/inspect_avatar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cb3c7e9282a32312604d462fa00038ce81d63347
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/inspect_avatar.xml
@@ -0,0 +1,25 @@
+<?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="inspect_avatar">
+	<string name="Subtitle">
+		[AGE]
+	</string>
+	<string name="Details">
+		[SL_PROFILE]
+	</string>
+	<text name="user_subtitle" value="11 ay, 3 günlük"/>
+	<text name="user_details">
+		Second Life içerisindeki tanımım bu, harika olduğunu düşünüyorum. Ama nedense tanımım gerçekten çok uzun çünkü çok konuşmayı seviyorum.
+	</text>
+	<slider name="volume_slider" tool_tip="Ses düzeyi" value="0.5"/>
+	<button label="ArkadaÅŸ Ekle" name="add_friend_btn"/>
+	<button label="AÄ°" name="im_btn"/>
+	<button label="Profil" name="view_profile_btn"/>
+	<panel name="moderator_panel">
+		<button label="Sesi Devre Dışı Bırak" name="disable_voice"/>
+		<button label="Sesi EtkinleÅŸtir" name="enable_voice"/>
+	</panel>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/inspect_group.xml b/indra/newview/skins/default/xui/tr/inspect_group.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9b130c9ef66b7f05278b6159e2bb1660cb1b0fd8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/inspect_group.xml
@@ -0,0 +1,32 @@
+<?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="inspect_group">
+	<string name="PrivateGroup">
+		Özel grup
+	</string>
+	<string name="FreeToJoin">
+		Katılım ücretsiz
+	</string>
+	<string name="CostToJoin">
+		Katılmak için L$[AMOUNT] gerekiyor
+	</string>
+	<string name="YouAreMember">
+		Siz üyesiniz
+	</string>
+	<text name="group_subtitle">
+		123 üye
+	</text>
+	<text name="group_details">
+		İçinde geyik olan bir oda oluşturmakla sorumlu bir grup insan.
+Geyikten korkun!  Korkun!  Firavun faresinden de!
+	</text>
+	<text name="group_cost">
+		Katılmak için L$123 gerekiyor
+	</text>
+	<button label="Katıl" name="join_btn"/>
+	<button label="Ayrıl" name="leave_btn"/>
+	<button label="Profili Göster" name="view_profile_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/inspect_object.xml b/indra/newview/skins/default/xui/tr/inspect_object.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bd092673195a06853cdcc08287a862f744ea8744
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/inspect_object.xml
@@ -0,0 +1,44 @@
+<?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="inspect_object">
+	<string name="Creator">
+		[CREATOR] tarafından
+	</string>
+	<string name="CreatorAndOwner">
+		[CREATOR] tarafından
+Sahip [OWNER]
+	</string>
+	<string name="Price">
+		L$[AMOUNT]
+	</string>
+	<string name="PriceFree">
+		Ãœcretsiz!
+	</string>
+	<string name="Touch">
+		Dokun
+	</string>
+	<string name="Sit">
+		Otur
+	</string>
+	<text name="object_creator">
+		şunun tarafından: secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
+sahip: secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
+	</text>
+	<text name="price_text">
+		L$30,000
+	</text>
+	<icon name="secure_browsing" tool_tip="Güvenli Tarama"/>
+	<text name="object_media_url">
+		http://www.superdupertest.com
+	</text>
+	<button label="Satın Al" name="buy_btn"/>
+	<button label="Öde" name="pay_btn"/>
+	<button label="Kopya Al" name="take_free_copy_btn"/>
+	<button label="Dokun" name="touch_btn"/>
+	<button label="Otur" name="sit_btn"/>
+	<button label="Aç" name="open_btn"/>
+	<button label="Daha Fazla" name="more_info_btn"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/tr/inspect_remote_object.xml b/indra/newview/skins/default/xui/tr/inspect_remote_object.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4b696b2ae58f378194dfd6ea331c14047aa66de0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/inspect_remote_object.xml
@@ -0,0 +1,22 @@
+<?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="inspect_remote_object">
+	<text name="object_name">
+		Çok Uzun Test Nesne Adı Aman Tanrım bu gerçekten o kadar uzun bir nesne adı ki bu kadar uzun olduğuna inanmıyorum.
+	</text>
+	<text name="object_owner_label">
+		Sahip:
+	</text>
+	<text name="object_owner">
+		Uzunavataradı Farukkalaycigillerdendegil
+	</text>
+	<text name="object_slurl">
+		http://slurl.com/Ahern/50/50/50
+	</text>
+	<button label="Harita" name="map_btn"/>
+	<button label="Engelle" name="block_btn"/>
+	<button label="Kapat" name="close_btn"/>
+</floater>
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
new file mode 100644
index 0000000000000000000000000000000000000000..dcb46292590e5bcc59eebd76688dcc365f60e5f1
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_add_wearable_gear.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Add Wearable Gear Menu">
+	<menu_item_check label="En Sonunculara Göre Sırala" name="sort_by_most_recent"/>
+	<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_attachment_other.xml b/indra/newview/skins/default/xui/tr/menu_attachment_other.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9ba214ff313a09288e60e117444d86d48c8703ce
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_attachment_other.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_avatar_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="Profili Göster" name="Profile..."/>
+	<menu_item_call label="ArkadaÅŸ Ekle" name="Add Friend"/>
+	<menu_item_call label="AÄ°" name="Send IM..."/>
+	<menu_item_call label="Ara" name="Call"/>
+	<menu_item_call label="Gruba Davet Et" name="Invite..."/>
+	<menu_item_call label="Engelle" name="Avatar Mute"/>
+	<menu_item_call label="Raporla" name="abuse"/>
+	<menu_item_call label="Dondur" name="Freeze..."/>
+	<menu_item_call label="Çıkar" name="Eject..."/>
+	<menu_item_call label="Dokularda Hata Ayıkla" name="Debug..."/>
+	<menu_item_call label="Yakınlaştır" name="Zoom In"/>
+	<menu_item_call label="Öde" name="Pay..."/>
+	<menu_item_call label="Nesne Profili" name="Object Inspect"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_attachment_self.xml b/indra/newview/skins/default/xui/tr/menu_attachment_self.xml
new file mode 100644
index 0000000000000000000000000000000000000000..16d1e3f3568e20d849f3215f67bd4610bdf84d40
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_attachment_self.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Attachment Pie">
+	<menu_item_call label="Dokun" name="Attachment Object Touch"/>
+	<menu_item_call label="Düzenle" name="Edit..."/>
+	<menu_item_call label="Ayır" name="Detach"/>
+	<menu_item_call label="Otur" name="Sit Down Here"/>
+	<menu_item_call label="Kalk" name="Stand Up"/>
+	<menu_item_call label="Görünümüm" name="Change Outfit"/>
+	<menu_item_call label="Dış Görünümümü Düzenle" name="Edit Outfit"/>
+	<menu_item_call label="Şeklimi Düzenle" name="Edit My Shape"/>
+	<menu_item_call label="Arkadaşlarım" name="Friends..."/>
+	<menu_item_call label="Gruplarım" name="Groups..."/>
+	<menu_item_call label="Profilim" name="Profile..."/>
+	<menu_item_call label="Dokularda Hata Ayıkla" name="Debug..."/>
+	<menu_item_call label="Bırak" name="Drop"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml b/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d3ef490735600632fd034952b346fedcfa1980ea
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_avatar_icon.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Avatar Icon Menu">
+	<menu_item_call label="Profili Göster" name="Show Profile"/>
+	<menu_item_call label="Aİ Gönder..." name="Send IM"/>
+	<menu_item_call label="ArkadaÅŸ Ekle..." name="Add Friend"/>
+	<menu_item_call label="Arkadaşı Çıkar..." name="Remove Friend"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_other.xml b/indra/newview/skins/default/xui/tr/menu_avatar_other.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7d691d2ac59b7772c6a29c853089cc6a8777f843
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_avatar_other.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- *NOTE: See also menu_attachment_other.xml -->
+<context_menu name="Avatar Pie">
+	<menu_item_call label="Profili Göster" name="Profile..."/>
+	<menu_item_call label="ArkadaÅŸ Ekle" name="Add Friend"/>
+	<menu_item_call label="AÄ°" name="Send IM..."/>
+	<menu_item_call label="Ara" name="Call"/>
+	<menu_item_call label="Gruba Davet Et" name="Invite..."/>
+	<menu_item_call label="Engelle" name="Avatar Mute"/>
+	<menu_item_call label="Raporla" name="abuse"/>
+	<menu_item_call label="Dondur" name="Freeze..."/>
+	<menu_item_call label="Çıkar" name="Eject..."/>
+	<menu_item_call label="Dokularda Hata Ayıkla" name="Debug..."/>
+	<menu_item_call label="Yakınlaştır" name="Zoom In"/>
+	<menu_item_call label="Öde" name="Pay..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_avatar_self.xml b/indra/newview/skins/default/xui/tr/menu_avatar_self.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c520aff521f3db36ae49d04eebec417d6f887339
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_avatar_self.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Self Pie">
+	<menu_item_call label="Otur" name="Sit Down Here"/>
+	<menu_item_call label="Kalk" name="Stand Up"/>
+	<context_menu label="Çıkar" name="Take Off &gt;">
+		<context_menu label="Giysiler" name="Clothes &gt;">
+			<menu_item_call label="Gömlek" name="Shirt"/>
+			<menu_item_call label="Pantolon" name="Pants"/>
+			<menu_item_call label="Etek" name="Skirt"/>
+			<menu_item_call label="Ayakkabılar" name="Shoes"/>
+			<menu_item_call label="Çoraplar" name="Socks"/>
+			<menu_item_call label="Ceket" name="Jacket"/>
+			<menu_item_call label="Eldivenler" name="Gloves"/>
+			<menu_item_call label="Fanila" name="Self Undershirt"/>
+			<menu_item_call label="Külot" name="Self Underpants"/>
+			<menu_item_call label="Dövme" name="Self Tattoo"/>
+			<menu_item_call label="Fizik" name="Self Physics"/>
+			<menu_item_call label="Alfa" name="Self Alpha"/>
+			<menu_item_call label="Tüm Giysiler" name="All Clothes"/>
+		</context_menu>
+		<context_menu label="BÃœG" name="Object Detach HUD"/>
+		<context_menu label="Ayır" name="Object Detach"/>
+		<menu_item_call label="Tümünü Ayır" name="Detach All"/>
+	</context_menu>
+	<menu_item_call label="Görünümüm" name="Chenge Outfit"/>
+	<menu_item_call label="Dış Görünümümü Düzenle" name="Edit Outfit"/>
+	<menu_item_call label="Şeklimi Düzenle" name="Edit My Shape"/>
+	<menu_item_call label="Arkadaşlarım" name="Friends..."/>
+	<menu_item_call label="Gruplarım" name="Groups..."/>
+	<menu_item_call label="Profilim" name="Profile..."/>
+	<menu_item_call label="Dokularda Hata Ayıkla" name="Debug..."/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_bottomtray.xml b/indra/newview/skins/default/xui/tr/menu_bottomtray.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f17c0f997144c2c5f2a21c943f44ec0e5252bf1a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_bottomtray.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="hide_camera_move_controls_menu">
+	<menu_item_check label="Konuşma Düğmesi" name="EnableVoiceChat"/>
+	<menu_item_check label="Mimik düğmesi" name="ShowGestureButton"/>
+	<menu_item_check label="Taşıma düğmesi" name="ShowMoveButton"/>
+	<menu_item_check label="Görüntüleme düğmesi" name="ShowCameraButton"/>
+	<menu_item_check label="Anlık görüntü düğmesi" name="ShowSnapshotButton"/>
+	<menu_item_check label="İnşa Et düğmesi" name="ShowBuildButton"/>
+	<menu_item_check label="Arama düğmesi" name="ShowSearchButton"/>
+	<menu_item_check label="Harita düğmesi" name="ShowWorldMapButton"/>
+	<menu_item_check label="Mini-harita düğmesi" name="ShowMiniMapButton"/>
+	<menu_item_call label="Kes" name="NearbyChatBar_Cut"/>
+	<menu_item_call label="Kopyala" name="NearbyChatBar_Copy"/>
+	<menu_item_call label="Yapıştır" name="NearbyChatBar_Paste"/>
+	<menu_item_call label="Sil" name="NearbyChatBar_Delete"/>
+	<menu_item_call label="Tümünü Seç" name="NearbyChatBar_Select_All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml b/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d57c43f6c1b0fc39e7abbbe0a78b1f77ba464df6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_cof_attachment.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="COF Attachment">
+	<menu_item_call label="Ayır" name="detach"/>
+</context_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..31f77d834a71220d891099455fd09388a9c3d890
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_cof_body_part.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="COF Body">
+	<menu_item_call label="DeÄŸiÅŸtir" name="replace"/>
+	<menu_item_call label="Düzenle" name="edit"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_cof_clothing.xml b/indra/newview/skins/default/xui/tr/menu_cof_clothing.xml
new file mode 100644
index 0000000000000000000000000000000000000000..784d809d70dedcff4b80c80981dff28ec2651d13
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_cof_clothing.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="COF Clothing">
+	<menu_item_call label="Çıkar" name="take_off"/>
+	<menu_item_call label="Düzenle" name="edit"/>
+	<menu_item_call label="DeÄŸiÅŸtir" name="replace"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_cof_gear.xml b/indra/newview/skins/default/xui/tr/menu_cof_gear.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f910e1fe9103c5801c17625f36e3087eccd83f8e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_cof_gear.xml
@@ -0,0 +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"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_edit.xml b/indra/newview/skins/default/xui/tr/menu_edit.xml
new file mode 100644
index 0000000000000000000000000000000000000000..81cd270af0f670e05e2dabffa29c75bc44b778f7
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_edit.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu label="Düzenle" name="Edit">
+	<menu_item_call label="Geri Al" name="Undo"/>
+	<menu_item_call label="Yinele" name="Redo"/>
+	<menu_item_call label="Kes" name="Cut"/>
+	<menu_item_call label="Kopyala" name="Copy"/>
+	<menu_item_call label="Yapıştır" name="Paste"/>
+	<menu_item_call label="Sil" name="Delete"/>
+	<menu_item_call label="Çoğalt" name="Duplicate"/>
+	<menu_item_call label="Tümünü Seç" name="Select All"/>
+	<menu_item_call label="Seçimi Kaldır" name="Deselect"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_favorites.xml b/indra/newview/skins/default/xui/tr/menu_favorites.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7bb2ed1ddc01a3d11521ffbc6f00f0d984c624a2
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_favorites.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+	<menu_item_call label="Işınla" name="Teleport To Landmark"/>
+	<menu_item_call label="Yer İmini Görüntüle/Düzenle" name="Landmark Open"/>
+	<menu_item_call label="SLurl&apos;i Kopyala" name="Copy slurl"/>
+	<menu_item_call label="Haritada Göster" name="Show On Map"/>
+	<menu_item_call label="Kopyala" name="Landmark Copy"/>
+	<menu_item_call label="Yapıştır" name="Landmark Paste"/>
+	<menu_item_call label="Sil" name="Delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml b/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cb9b678fddce6128a069b15fd46c1ba064c7af89
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_gesture_gear.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_gesture_gear">
+	<menu_item_call label="Favorilere Ekle/Çıkar" name="activate"/>
+	<menu_item_call label="Kopyala" name="copy_gesture"/>
+	<menu_item_call label="Yapıştır" name="paste"/>
+	<menu_item_call label="UUID&apos;yi Kopyala" name="copy_uuid"/>
+	<menu_item_call label="Mevcut dış görünüme kaydet" name="save_to_outfit"/>
+	<menu_item_call label="Düzenle" name="edit_gesture"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_group_plus.xml b/indra/newview/skins/default/xui/tr/menu_group_plus.xml
new file mode 100644
index 0000000000000000000000000000000000000000..82cf7dcf74ec378c2c65b05791088e8537ea1411
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_group_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_group_plus">
+	<menu_item_call label="Gruba Katıl..." name="item_join"/>
+	<menu_item_call label="Yeni Grup..." name="item_new"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d1f213516bc2d8f10557cae101f445dc264c608d
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_hide_navbar.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="hide_navbar_menu">
+	<menu_item_check label="Gezinme ve Favoriler Çubuğunu Göster" name="ShowNavbarNavigationPanel"/>
+	<menu_item_check label="Favoriler Çubuğunu Göster" name="ShowNavbarFavoritesPanel"/>
+	<menu_item_check label="Mini Konum Çubuğunu Göster" name="ShowMiniLocationPanel"/>
+</menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..c3e559a7231d73bf199030929c9137c2e2fdbbaf
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_im_well_button.xml
@@ -0,0 +1,4 @@
+<?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/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/tr/menu_imchiclet_adhoc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0396ad8fb5315980c38e689b66c245cbd68d2723
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_imchiclet_adhoc.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet AdHoc Menu">
+	<menu_item_call label="Oturumu Bitir" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/tr/menu_imchiclet_group.xml
new file mode 100644
index 0000000000000000000000000000000000000000..60a50b114e915b92e1fa0de4a168ed515dee7cb6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_imchiclet_group.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet Group Menu">
+	<menu_item_call label="Grup Bilgisi" name="Show Profile"/>
+	<menu_item_call label="Oturumu Göster" name="Chat"/>
+	<menu_item_call label="Oturumu Bitir" name="End Session"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/tr/menu_imchiclet_p2p.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0ef4471088ed85c9fd1a7895603fece814239b1b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_imchiclet_p2p.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="IMChiclet P2P Menu">
+	<menu_item_call label="Profili Göster" name="Show Profile"/>
+	<menu_item_call label="ArkadaÅŸ Ekle" name="Add Friend"/>
+	<menu_item_call label="Oturumu Göster" name="Send IM"/>
+	<menu_item_call label="Oturumu Bitir" name="End Session"/>
+</menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..69432e967bede7e4260b2b181880a9f461147186
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_inspect_avatar_gear.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<toggleable_menu name="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="AÄ°" name="im"/>
+	<menu_item_call label="Ara" name="call"/>
+	<menu_item_call label="Işınla" name="teleport"/>
+	<menu_item_call label="Gruba Davet Et" name="invite_to_group"/>
+	<menu_item_call label="Engelle" name="block"/>
+	<menu_item_call label="Engellemeyi Kaldır" name="unblock"/>
+	<menu_item_call label="Raporla" name="report"/>
+	<menu_item_call label="Dondur" name="freeze"/>
+	<menu_item_call label="Çıkar" name="eject"/>
+	<menu_item_call label="Çıkar" name="kick"/>
+	<menu_item_call label="CSR" name="csr"/>
+	<menu_item_call label="Dokularda Hata Ayıkla" name="debug"/>
+	<menu_item_call label="Haritada Bul" name="find_on_map"/>
+	<menu_item_call label="Yakınlaştır" name="zoom_in"/>
+	<menu_item_call label="Öde" name="pay"/>
+	<menu_item_call label="PaylaÅŸ" name="share"/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..02e541559801592ce494893bbb91792ca6f6549b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_inspect_object_gear.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<toggleable_menu name="Gear Menu">
+	<menu_item_call label="Dokun" name="touch"/>
+	<menu_item_call label="Otur" name="sit"/>
+	<menu_item_call label="Öde" name="pay"/>
+	<menu_item_call label="Satın Al" name="buy"/>
+	<menu_item_call label="Al" name="take"/>
+	<menu_item_call label="Kopya Al" name="take_copy"/>
+	<menu_item_call label="Aç" name="open"/>
+	<menu_item_call label="Düzenle" name="edit"/>
+	<menu_item_call label="Giy" name="wear"/>
+	<menu_item_call label="Ekle" name="add"/>
+	<menu_item_call label="Raporla" name="report"/>
+	<menu_item_call label="Engelle" name="block"/>
+	<menu_item_call label="Yakınlaştır" name="zoom_in"/>
+	<menu_item_call label="Kaldır" name="remove"/>
+	<menu_item_call label="Ek Bilgi" name="more_info"/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..0655db819662e21162a1a2514e550761a83e0635
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_inspect_self_gear.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Self Pie">
+	<menu_item_call label="Otur" name="Sit Down Here"/>
+	<menu_item_call label="Kalk" name="Stand Up"/>
+	<context_menu label="Çıkar" name="Take Off &gt;">
+		<context_menu label="Giysiler" name="Clothes &gt;">
+			<menu_item_call label="Gömlek" name="Shirt"/>
+			<menu_item_call label="Pantolon" name="Pants"/>
+			<menu_item_call label="Etek" name="Skirt"/>
+			<menu_item_call label="Ayakkabılar" name="Shoes"/>
+			<menu_item_call label="Çoraplar" name="Socks"/>
+			<menu_item_call label="Ceket" name="Jacket"/>
+			<menu_item_call label="Eldivenler" name="Gloves"/>
+			<menu_item_call label="Fanila" name="Self Undershirt"/>
+			<menu_item_call label="Külot" name="Self Underpants"/>
+			<menu_item_call label="Dövme" name="Self Tattoo"/>
+			<menu_item_call label="Alfa" name="Self Alpha"/>
+			<menu_item_call label="Tüm Giysiler" name="All Clothes"/>
+		</context_menu>
+		<context_menu label="BÃœG" name="Object Detach HUD"/>
+		<context_menu label="Ayır" name="Object Detach"/>
+		<menu_item_call label="Tümünü Ayır" name="Detach All"/>
+	</context_menu>
+	<menu_item_call label="Dış Görünümü Değiştir" name="Chenge Outfit"/>
+	<menu_item_call label="Dış Görünümümü Düzenle" name="Edit Outfit"/>
+	<menu_item_call label="Şeklimi Düzenle" name="Edit My Shape"/>
+	<menu_item_call label="Arkadaşlarım" name="Friends..."/>
+	<menu_item_call label="Gruplarım" name="Groups..."/>
+	<menu_item_call label="Profilim" name="Profile..."/>
+	<menu_item_call label="Dokularda Hata Ayıkla" name="Debug..."/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..2e2b17491ad87640778d84916ae9278ef6edba71
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_inv_offer_chiclet.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="InvOfferChiclet Menu">
+	<menu_item_call label="Kapat" name="Close"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_inventory.xml b/indra/newview/skins/default/xui/tr/menu_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f14066fd7b51244acef4daaa36bf6c5d19bac155
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_inventory.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+	<menu_item_call label="PaylaÅŸ" name="Share"/>
+	<menu_item_call label="Satın Al" name="Task Buy"/>
+	<menu_item_call label="Aç" name="Task Open"/>
+	<menu_item_call label="Oyna" name="Task Play"/>
+	<menu_item_call label="Özellikler" name="Task Properties"/>
+	<menu_item_call label="Yeniden Adlandır" name="Task Rename"/>
+	<menu_item_call label="Sil" name="Task Remove"/>
+	<menu_item_call label="Çöpü Boşalt" name="Empty Trash"/>
+	<menu_item_call label="Kaybedip Bulduklarımı Boşalt" name="Empty Lost And Found"/>
+	<menu_item_call label="Yeni Klasör" name="New Folder"/>
+	<menu_item_call label="Yeni Komut Dosyası" name="New Script"/>
+	<menu_item_call label="Yeni Not Kartı" name="New Note"/>
+	<menu_item_call label="Yeni Mimik" name="New Gesture"/>
+	<menu label="Yeni Giysiler" name="New Clothes">
+		<menu_item_call label="Yeni Gömlek" name="New Shirt"/>
+		<menu_item_call label="Yeni Pantolon" name="New Pants"/>
+		<menu_item_call label="Yeni Ayakkabılar" name="New Shoes"/>
+		<menu_item_call label="Yeni Çoraplar" name="New Socks"/>
+		<menu_item_call label="Yeni Ceket" name="New Jacket"/>
+		<menu_item_call label="Yeni Etek" name="New Skirt"/>
+		<menu_item_call label="Yeni Eldivenler" name="New Gloves"/>
+		<menu_item_call label="Yeni Fanila" name="New Undershirt"/>
+		<menu_item_call label="Yeni Külot" name="New Underpants"/>
+		<menu_item_call label="Yeni Alfa Maskesi" name="New Alpha Mask"/>
+		<menu_item_call label="Yeni Dövme" name="New Tattoo"/>
+		<menu_item_call label="Yeni Fizik" name="New Physics"/>
+	</menu>
+	<menu label="Yeni Vücut Bölümleri" name="New Body Parts">
+		<menu_item_call label="Yeni Åžekil" name="New Shape"/>
+		<menu_item_call label="Yeni Dış Katman" name="New Skin"/>
+		<menu_item_call label="Yeni Saç" name="New Hair"/>
+		<menu_item_call label="Yeni Gözler" name="New Eyes"/>
+	</menu>
+	<menu label="Türü Değiştir" name="Change Type">
+		<menu_item_call label="Varsayılan" name="Default"/>
+		<menu_item_call label="Eldivenler" name="Gloves"/>
+		<menu_item_call label="Ceket" name="Jacket"/>
+		<menu_item_call label="Pantolon" name="Pants"/>
+		<menu_item_call label="Åžekil" name="Shape"/>
+		<menu_item_call label="Ayakkabılar" name="Shoes"/>
+		<menu_item_call label="Gömlek" name="Shirt"/>
+		<menu_item_call label="Etek" name="Skirt"/>
+		<menu_item_call label="Külot" name="Underpants"/>
+		<menu_item_call label="Fanila" name="Undershirt"/>
+	</menu>
+	<menu_item_call label="Işınla" name="Landmark Open"/>
+	<menu_item_call label="Aç" name="Animation Open"/>
+	<menu_item_call label="Aç" name="Sound Open"/>
+	<menu_item_call label="Mevcut Dış Görünümü Değiştir" name="Replace Outfit"/>
+	<menu_item_call label="Mevcut Dış Görünüme Ekle" name="Add To Outfit"/>
+	<menu_item_call label="Mevcut Dış Görünümden Kaldır" name="Remove From Outfit"/>
+	<menu_item_call label="Orijinali Bul" name="Find Original"/>
+	<menu_item_call label="Öğeyi Temizle" name="Purge Item"/>
+	<menu_item_call label="Öğeyi Geri Yükle" name="Restore Item"/>
+	<menu_item_call label="Aç" name="Open"/>
+	<menu_item_call label="Orijinali Aç" name="Open Original"/>
+	<menu_item_call label="Özellikler" name="Properties"/>
+	<menu_item_call label="Yeniden Adlandır" name="Rename"/>
+	<menu_item_call label="Varlık UUID&apos;sini Kopyala" name="Copy Asset UUID"/>
+	<menu_item_call label="Kopyala" name="Copy"/>
+	<menu_item_call label="Yapıştır" name="Paste"/>
+	<menu_item_call label="Bağlantı Olarak Yapıştır" name="Paste As Link"/>
+	<menu_item_call label="Sil" name="Remove Link"/>
+	<menu_item_call label="Sil" name="Delete"/>
+	<menu_item_call label="Sistem Klasörünü Sil" name="Delete System Folder"/>
+	<menu_item_call label="Konferans Sohbeti BaÅŸlat" name="Conference Chat Folder"/>
+	<menu_item_call label="Oyna" name="Sound Play"/>
+	<menu_item_call label="Yer İmi Hakkında" name="About Landmark"/>
+	<menu_item_call label="SL Dünyasında Oynat" name="Animation Play"/>
+	<menu_item_call label="Yerel Olarak Oynat" name="Animation Audition"/>
+	<menu_item_call label="Anlık İleti Gönder" name="Send Instant Message"/>
+	<menu_item_call label="Işınlama Teklif Et..." name="Offer Teleport..."/>
+	<menu_item_call label="Konferans Sohbeti BaÅŸlat" name="Conference Chat"/>
+	<menu_item_call label="EtkinleÅŸtir" name="Activate"/>
+	<menu_item_call label="Devre Dışı Bırak" name="Deactivate"/>
+	<menu_item_call label="Farklı Kaydet" name="Save As"/>
+	<menu_item_call label="Kendinizden Ayırın" name="Detach From Yourself"/>
+	<menu_item_call label="Giy" name="Wearable And Object Wear"/>
+	<menu label="Åžuna Ekle:" name="Attach To"/>
+	<menu label="BÃœG&apos;e Ekle" name="Attach To HUD"/>
+	<menu_item_call label="Düzenle" name="Wearable Edit"/>
+	<menu_item_call label="Ekle" name="Wearable Add"/>
+	<menu_item_call label="Çıkar" name="Take Off"/>
+	<menu_item_call label="Satıcı Giden Kutusuna Kopyala" name="Merchant Copy"/>
+	<menu_item_call label="Satıcı Giden Kutusuna Taşı" name="Merchant Move"/>
+	<menu_item_call label="--seçenek yok--" name="--no options--"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_inventory_add.xml b/indra/newview/skins/default/xui/tr/menu_inventory_add.xml
new file mode 100644
index 0000000000000000000000000000000000000000..db2a9a2c8c584d6ee9b25b7238c5fd75922eb2cf
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_inventory_add.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_inventory_add">
+	<menu label="Karşıya Yükle" name="upload">
+		<menu_item_call label="Görüntü (L$[COST])..." name="Upload Image"/>
+		<menu_item_call label="Ses (L$[COST])..." name="Upload Sound"/>
+		<menu_item_call label="Animasyon (L$[COST])..." name="Upload Animation"/>
+		<menu_item_call label="Model..." name="Upload Model"/>
+		<menu_item_call label="Model Sihirbazı..." name="Upload Model Wizard"/>
+		<menu_item_call label="Toplu (dosya başına L$[COST])..." name="Bulk Upload"/>
+		<menu_item_call label="Varsayılan Karşıya Yükleme İzinlerini Ayarla" name="perm prefs"/>
+	</menu>
+	<menu_item_call label="Yeni Klasör" name="New Folder"/>
+	<menu_item_call label="Yeni Komut Dosyası" name="New Script"/>
+	<menu_item_call label="Yeni Not Kartı" name="New Note"/>
+	<menu_item_call label="Yeni Mimik" name="New Gesture"/>
+	<menu label="Yeni Giysiler" name="New Clothes">
+		<menu_item_call label="Yeni Gömlek" name="New Shirt"/>
+		<menu_item_call label="Yeni Pantolon" name="New Pants"/>
+		<menu_item_call label="Yeni Ayakkabılar" name="New Shoes"/>
+		<menu_item_call label="Yeni Çoraplar" name="New Socks"/>
+		<menu_item_call label="Yeni Ceket" name="New Jacket"/>
+		<menu_item_call label="Yeni Etek" name="New Skirt"/>
+		<menu_item_call label="Yeni Eldivenler" name="New Gloves"/>
+		<menu_item_call label="Yeni Fanila" name="New Undershirt"/>
+		<menu_item_call label="Yeni Külot" name="New Underpants"/>
+		<menu_item_call label="Yeni Alfa" name="New Alpha"/>
+		<menu_item_call label="Yeni Dövme" name="New Tattoo"/>
+		<menu_item_call label="Yeni Fizik" name="New Physics"/>
+	</menu>
+	<menu label="Yeni Vücut Bölümleri" name="New Body Parts">
+		<menu_item_call label="Yeni Åžekil" name="New Shape"/>
+		<menu_item_call label="Yeni Dış Katman" name="New Skin"/>
+		<menu_item_call label="Yeni Saç" name="New Hair"/>
+		<menu_item_call label="Yeni Gözler" name="New Eyes"/>
+	</menu>
+</menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..5f3e4e8789b1ada688faff427bf27fa252874271
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_inventory_gear_default.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_gear_default">
+	<menu_item_call label="Yeni Envanter Penceresi" name="new_window"/>
+	<menu_item_check label="Ada Göre Sırala" name="sort_by_name"/>
+	<menu_item_check label="En Sonunculara Göre Sırala" name="sort_by_recent"/>
+	<menu_item_check label="Klasörleri Her Zaman Ada Göre Sırala" name="sort_folders_by_name"/>
+	<menu_item_check label="Sistem Klasörlerini Üste Sırala" name="sort_system_folders_to_top"/>
+	<menu_item_call label="Filtreleri Göster" name="show_filters"/>
+	<menu_item_call label="Filtreleri Sıfırla" name="reset_filters"/>
+	<menu_item_call label="Tüm Klasörleri Kapat" name="close_folders"/>
+	<menu_item_call label="Kaybedip Bulduklarımı Boşalt" name="empty_lostnfound"/>
+	<menu_item_call label="Dokuyu Farklı Kaydet" name="Save Texture As"/>
+	<menu_item_call label="PaylaÅŸ" name="Share"/>
+	<menu_item_call label="Orijinali Bul" name="Find Original"/>
+	<menu_item_call label="Tüm Bağlantıları Bul" name="Find All Links"/>
+	<menu_item_call label="Çöpü Boşalt" name="empty_trash"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_land.xml b/indra/newview/skins/default/xui/tr/menu_land.xml
new file mode 100644
index 0000000000000000000000000000000000000000..db65f1af1ec4fd6ca730e3ed6f7ec855100fde0b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_land.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Land Pie">
+	<menu_item_call label="Arazi Hakkında" name="Place Information..."/>
+	<menu_item_call label="Buraya Otur" name="Sit Here"/>
+	<menu_item_call label="Bu Araziyi Satın Al" name="Land Buy"/>
+	<menu_item_call label="Geçiş Hakkı Satın Al" name="Land Buy Pass"/>
+	<menu_item_call label="Ä°nÅŸa Et" name="Create"/>
+	<menu_item_call label="Yüzeyi Düzenle" name="Edit Terrain"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_landmark.xml b/indra/newview/skins/default/xui/tr/menu_landmark.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c68a2f6a905eabcbfe564b64b1030aa57affce1e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_landmark.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="landmark_overflow_menu">
+	<menu_item_call label="SLurl&apos;i Kopyala" name="copy"/>
+	<menu_item_call label="Sil" name="delete"/>
+	<menu_item_call label="Seçme Oluştur" name="pick"/>
+	<menu_item_call label="Favoriler Çubuğuna Ekle" name="add_to_favbar"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_login.xml b/indra/newview/skins/default/xui/tr/menu_login.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4c3539b38b87181f5fe9db17db60ffb4942edd7f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_login.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu_bar name="Login Menu">
+	<menu label="Ben" name="File">
+		<menu_item_call label="Tercihler..." name="Preferences..."/>
+		<menu_item_call label="[APP_NAME]&apos;den Çık" name="Quit"/>
+	</menu>
+	<menu label="Yardım" name="Help">
+		<menu_item_call label="[SECOND_LIFE] Yardımı" name="Second Life Help"/>
+		<menu_item_call label="[APP_NAME] Hakkında" name="About Second Life"/>
+	</menu>
+	<menu_item_check label="Hata Ayıklama Menüsünü Göster" name="Show Debug Menu"/>
+	<menu label="Hata ayıkla" name="Debug">
+		<menu_item_call label="Hata Ayıklama Ayarlarını Göster" name="Debug Settings"/>
+		<menu_item_call label="KA/Renk Ayarları" name="UI/Color Settings"/>
+		<menu_item_call label="XKA Önizleme Aracı" name="UI Preview Tool"/>
+		<menu label="KA Testleri" name="UI Tests"/>
+		<menu_item_call label="Pencere Büyüklüğünü Ayarla..." name="Set Window Size..."/>
+		<menu_item_call label="Hizmet Şartlarını Göster" name="TOS"/>
+		<menu_item_call label="Kritik İletiyi Göster" name="Critical"/>
+		<menu_item_call label="Ortam Tarayıcı Testi" name="Web Browser Test"/>
+		<menu_item_call label="Web İçeriği Gezdiricisi Hata Ayıklama Testi" name="Web Content Floater Debug Test"/>
+		<menu_item_check label="Izgara Seçiciyi Göster" name="Show Grid Picker"/>
+		<menu_item_call label="Bildirimler Konsolunu Göster" name="Show Notifications Console"/>
+	</menu>
+</menu_bar>
diff --git a/indra/newview/skins/default/xui/tr/menu_media_ctrl.xml b/indra/newview/skins/default/xui/tr/menu_media_ctrl.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8d04e645fdcf8a1ea59e05d6dadfa9a75ad2bf0c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_media_ctrl.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="media ctrl context menu">
+	<menu_item_call label="Kes" name="Cut"/>
+	<menu_item_call label="Kopyala" name="Copy"/>
+	<menu_item_call label="Yapıştır" name="Paste"/>
+	<menu_item_call label="Web Inspector&apos;ı Açın" name="open_webinspector"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_mini_map.xml b/indra/newview/skins/default/xui/tr/menu_mini_map.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9abe78931ec4ad41b3c05f01974dd9d0e44895e5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_mini_map.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+	<menu_item_call label="Yakına Zumla" name="Zoom Close"/>
+	<menu_item_call label="Orta Zumla" name="Zoom Medium"/>
+	<menu_item_call label="UzaÄŸa Zumla" name="Zoom Far"/>
+	<menu_item_call label="Varsayılan Yakınlaştırma" name="Zoom Default"/>
+	<menu_item_check label="Haritayı Dönder" name="Rotate Map"/>
+	<menu_item_check label="Otomatik Ortala" name="Auto Center"/>
+	<menu_item_call label="Ä°zlemeyi Durdur" name="Stop Tracking"/>
+	<menu_item_call label="Dünya Haritası" name="World Map"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_mode_change.xml b/indra/newview/skins/default/xui/tr/menu_mode_change.xml
new file mode 100644
index 0000000000000000000000000000000000000000..678950b633a3cc49de65e5f204abba1bbdd9f940
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_mode_change.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Mode Change">
+	<menu_item_check label="Temel" name="BasicMode"/>
+	<menu_item_check label="GeliÅŸmiÅŸ" name="AdvancedMode"/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..51cf29a4deef049eca1d9f0fdd45ac3ed77c140b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_model_import_gear_default.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="model_menu_gear_default">
+	<menu_item_check label="Kenarları göster" name="show_edges"/>
+	<menu_item_check label="Fiziki temsili göster" name="show_physics"/>
+	<menu_item_check label="Dokuları göster" name="show_textures"/>
+	<menu_item_check label="Dış katman ağırlığını göster" name="show_skin_weight"/>
+	<menu_item_check label="Eklem konumlarını göster" name="show_joint_positions"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_navbar.xml b/indra/newview/skins/default/xui/tr/menu_navbar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b05b816e64d713b3fb2c33c56d591bfa50c9aa4a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_navbar.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Navbar Menu">
+	<menu_item_check label="Koordinatları Göster" name="Show Coordinates"/>
+	<menu_item_check label="Parsel Özelliklerini Göster" name="Show Parcel Properties"/>
+	<menu_item_call label="Yer Ä°mi" name="Landmark"/>
+	<menu_item_call label="Kes" name="Cut"/>
+	<menu_item_call label="Kopyala" name="Copy"/>
+	<menu_item_call label="Yapıştır" name="Paste"/>
+	<menu_item_call label="Sil" name="Delete"/>
+	<menu_item_call label="Tümünü Seç" name="Select All"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_nearby_chat.xml b/indra/newview/skins/default/xui/tr/menu_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b76a736979f8112f55e78483a8944c14115f0b19
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_nearby_chat.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="NearBy Chat Menu">
+	<menu_item_call label="Yakındaki Kişileri Göster..." name="nearby_people"/>
+	<menu_item_check label="Engellenmiş Metni Göster" name="muted_text"/>
+	<menu_item_check label="Arkadaş Simgelerini Göster" name="show_buddy_icons"/>
+	<menu_item_check label="Adları Göster" name="show_names"/>
+	<menu_item_check label="Simgeleri ve Adları Göster" name="show_icons_and_names"/>
+	<menu_item_call label="Font Büyüklüğü" name="font_size"/>
+</menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..39c66268f5300c843c042e3e9e38129e4767bcbe
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_notification_well_button.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Notification 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/menu_object.xml b/indra/newview/skins/default/xui/tr/menu_object.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d60c68e5e9bf4d61e873a72796cc5d00acc8f443
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_object.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Object Pie">
+	<menu_item_call label="Dokun" name="Object Touch"/>
+	<menu_item_call label="Düzenle" name="Edit..."/>
+	<menu_item_call label="Ä°nÅŸa Et" name="Build"/>
+	<menu_item_call label="Aç" name="Open"/>
+	<menu_item_call label="Buraya Otur" name="Object Sit"/>
+	<menu_item_call label="Kalk" name="Object Stand Up"/>
+	<menu_item_call label="Nesne Profili" name="Object Inspect"/>
+	<menu_item_call label="Yakınlaştır" name="Zoom In"/>
+	<context_menu label="Ãœzerine Koy" name="Put On">
+		<menu_item_call label="Giy" name="Wear"/>
+		<menu_item_call label="Ekle" name="Add"/>
+		<context_menu label="Ekle" name="Object Attach"/>
+		<context_menu label="BÃœG Ekle" name="Object Attach HUD"/>
+	</context_menu>
+	<context_menu label="Yönet" name="Remove">
+		<menu_item_call label="Kötüye Kullanımı Bildir" name="Report Abuse..."/>
+		<menu_item_call label="Engelle" name="Object Mute"/>
+		<menu_item_call label="Ä°ade Et" name="Return..."/>
+	</context_menu>
+	<menu_item_call label="Al" name="Pie Object Take"/>
+	<menu_item_call label="Kopya Al" name="Take Copy"/>
+	<menu_item_call label="Öde" name="Pay..."/>
+	<menu_item_call label="Satın Al" name="Buy..."/>
+	<menu_item_call label="Sil" name="Delete"/>
+</context_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
new file mode 100644
index 0000000000000000000000000000000000000000..34a2661d8af00a1dd3a23bb9ac96623e88b7cd24
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_object_icon.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Object Icon Menu">
+	<menu_item_call label="Nesne Profili..." name="Object Profile"/>
+	<menu_item_call label="Engelle..." name="Block"/>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..d2e7e7107aa2f01b376cb0ed9da9bcd0fb6244e4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_outfit_gear.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Gear Outfit">
+	<menu_item_call label="Giysi - Mevcut Dış Görünümü Değiştir" name="wear"/>
+	<menu_item_call label="Giysi - Mevcut Dış Görünüme Ekle" name="wear_add"/>
+	<menu_item_call label="Çıkar - Mevcut Dış Görünümden Kaldır" name="take_off"/>
+	<menu label="Yeni Giysiler" name="New Clothes">
+		<menu_item_call label="Yeni Gömlek" name="New Shirt"/>
+		<menu_item_call label="Yeni Pantolon" name="New Pants"/>
+		<menu_item_call label="Yeni Ayakkabılar" name="New Shoes"/>
+		<menu_item_call label="Yeni Çoraplar" name="New Socks"/>
+		<menu_item_call label="Yeni Ceket" name="New Jacket"/>
+		<menu_item_call label="Yeni Etek" name="New Skirt"/>
+		<menu_item_call label="Yeni Eldivenler" name="New Gloves"/>
+		<menu_item_call label="Yeni Fanila" name="New Undershirt"/>
+		<menu_item_call label="Yeni Külot" name="New Underpants"/>
+		<menu_item_call label="Yeni Alfa" name="New Alpha"/>
+		<menu_item_call label="Yeni Fizik" name="New Physics"/>
+		<menu_item_call label="Yeni Dövme" name="New Tattoo"/>
+	</menu>
+	<menu label="Yeni Vücut Bölümleri" name="New Body Parts">
+		<menu_item_call label="Yeni Åžekil" name="New Shape"/>
+		<menu_item_call label="Yeni Dış Katman" name="New Skin"/>
+		<menu_item_call label="Yeni Saç" name="New Hair"/>
+		<menu_item_call label="Yeni Gözler" name="New Eyes"/>
+	</menu>
+	<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_outfit_tab.xml b/indra/newview/skins/default/xui/tr/menu_outfit_tab.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a48529e462d90b48c0aad7d2d892b290e3b8728f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_outfit_tab.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Outfit">
+	<menu_item_call label="Giysi - Mevcut Dış Görünümü Değiştir" name="wear_replace"/>
+	<menu_item_call label="Giysi - Mevcut Dış Görünüme Ekle" name="wear_add"/>
+	<menu_item_call label="Çıkar - Mevcut Dış Görünümden Kaldır" name="take_off"/>
+	<menu_item_call label="Dış Görünümü Düzenle" name="edit"/>
+	<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"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_participant_list.xml b/indra/newview/skins/default/xui/tr/menu_participant_list.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1d56105e1e7468cc14eaecbc2c637988116807d6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_participant_list.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Participant List Context Menu">
+	<menu_item_check label="Ada Göre Sırala" name="SortByName"/>
+	<menu_item_check label="Son Konuşanlara Göre Sırala" name="SortByRecentSpeakers"/>
+	<menu_item_call label="Profili Göster" name="View Profile"/>
+	<menu_item_call label="ArkadaÅŸ Ekle" name="Add 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_check label="Kişi Simgelerini Göster" name="View Icons"/>
+	<menu_item_check label="Sesi Engelle" name="Block/Unblock"/>
+	<menu_item_check label="Metni Engelle" name="MuteText"/>
+	<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>
+</context_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..404fab17e6abb71c44d27732b6f91b418e2d24fa
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_friends_view_sort.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_call label="Engellenmiş Sakinleri ve Nesneleri Göster" name="show_blocked_list"/>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..9f2946e310ad6862278e0848b35ae8f9777d7e66
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_groups.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<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="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_sort.xml b/indra/newview/skins/default/xui/tr/menu_people_groups_view_sort.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a1e5ad9a508e9a42341a524f5fe0637448cbe1eb
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_groups_view_sort.xml
@@ -0,0 +1,5 @@
+<?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"/>
+	<menu_item_call label="Seçilen Gruptan Ayrıl" name="Leave Selected Group"/>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..ee859a9450d5d159742b7029a2c8d729303e48ff
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_nearby.xml
@@ -0,0 +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="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
new file mode 100644
index 0000000000000000000000000000000000000000..5c89f87906c86dcecf55197a4674d65f8f86bde2
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_nearby_multiselect.xml
@@ -0,0 +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"/>
+</context_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..0ff2111e9ed8fd0393f556921c323f6eb25c75c5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_nearby_view_sort.xml
@@ -0,0 +1,9 @@
+<?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"/>
+	<menu_item_call label="Engellenmiş Sakinleri ve Nesneleri Göster" name="show_blocked_list"/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..adfba5013801f174cdf57d68da4a1fffe70f3a5e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_people_recent_view_sort.xml
@@ -0,0 +1,7 @@
+<?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"/>
+	<menu_item_call label="Engellenmiş Sakinleri ve Nesneleri Göster" name="show_blocked_list"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_picks.xml b/indra/newview/skins/default/xui/tr/menu_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3e5375ecc0c952fbece430f9befd50dca4bf9fd5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_picks.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Picks">
+	<menu_item_call label="Bilgi" name="pick_info"/>
+	<menu_item_call label="Düzenle" name="pick_edit"/>
+	<menu_item_call label="Işınla" name="pick_teleport"/>
+	<menu_item_call label="Harita" name="pick_map"/>
+	<menu_item_call label="Sil" name="pick_delete"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_picks_plus.xml b/indra/newview/skins/default/xui/tr/menu_picks_plus.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d9c4fefc97a2d09e3623a23d7cac3f7606db80f9
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_picks_plus.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="picks_plus_menu">
+	<menu_item_call label="Yeni Seçme" name="create_pick"/>
+	<menu_item_call label="Yeni Ä°lan" name="create_classified"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_place.xml b/indra/newview/skins/default/xui/tr/menu_place.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ad167a328ab9d1af99a8dabc156da87a5c6da66a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_place.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="place_overflow_menu">
+	<menu_item_call label="Yer Ä°mi Yap" name="landmark"/>
+	<menu_item_call label="Seçme Oluştur" name="pick"/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..8e52b3f7f2bab531efcb57f786e74d883b325a23
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_place_add_button.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_folder_gear">
+	<menu_item_call label="Klasör Ekle" name="add_folder"/>
+	<menu_item_call label="Yer Ä°mi Ekle" name="add_landmark"/>
+</menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..b3a298616073a22af3bbd56bc94ed61c2c7c002c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_places_gear_folder.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_folder_gear">
+	<menu_item_call label="Yer Ä°mi Ekle" name="add_landmark"/>
+	<menu_item_call label="Klasör Ekle" name="add_folder"/>
+	<menu_item_call label="Öğeyi Geri Yükle" name="restore_item"/>
+	<menu_item_call label="Kes" name="cut"/>
+	<menu_item_call label="Kopyala" name="copy_folder"/>
+	<menu_item_call label="Yapıştır" name="paste"/>
+	<menu_item_call label="Yeniden Adlandır" name="rename"/>
+	<menu_item_call label="Sil" name="delete"/>
+	<menu_item_call label="GeniÅŸlet" name="expand"/>
+	<menu_item_call label="Daralt" name="collapse"/>
+	<menu_item_call label="Tüm klasörleri genişlet" name="expand_all"/>
+	<menu_item_call label="Tüm klasörleri daralt" name="collapse_all"/>
+	<menu_item_check label="Tarihe Göre Sırala" name="sort_by_date"/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..939ee2c7cb0ad9cb0050379190f2b4bb947ecfcf
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_places_gear_landmark.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="menu_ladmark_gear">
+	<menu_item_call label="Işınla" name="teleport"/>
+	<menu_item_call label="Ek Bilgi" name="more_info"/>
+	<menu_item_call label="Haritada Göster" name="show_on_map"/>
+	<menu_item_call label="Yer Ä°mi Ekle" name="add_landmark"/>
+	<menu_item_call label="Klasör Ekle" name="add_folder"/>
+	<menu_item_call label="Öğeyi Geri Yükle" name="restore_item"/>
+	<menu_item_call label="Kes" name="cut"/>
+	<menu_item_call label="Yer Ä°mini Kopyala" name="copy_landmark"/>
+	<menu_item_call label="SLurl&apos;i Kopyala" name="copy_slurl"/>
+	<menu_item_call label="Yapıştır" name="paste"/>
+	<menu_item_call label="Yeniden Adlandır" name="rename"/>
+	<menu_item_call label="Sil" name="delete"/>
+	<menu_item_call label="Tüm klasörleri genişlet" name="expand_all"/>
+	<menu_item_call label="Tüm klasörleri daralt" name="collapse_all"/>
+	<menu_item_check label="Tarihe Göre Sırala" name="sort_by_date"/>
+	<menu_item_call label="Seçme Oluştur" name="create_pick"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_profile_overflow.xml b/indra/newview/skins/default/xui/tr/menu_profile_overflow.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ed60dec63ad829ddc4f8f6cd5fc4a9f981ed6ffe
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_profile_overflow.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="profile_overflow_menu">
+	<menu_item_call label="Harita" name="show_on_map"/>
+	<menu_item_call label="Öde" name="pay"/>
+	<menu_item_call label="PaylaÅŸ" name="share"/>
+	<menu_item_call label="Engelle" name="block"/>
+	<menu_item_call label="Engellemeyi Kaldır" name="unblock"/>
+	<menu_item_call label="Çıkar" name="kick"/>
+	<menu_item_call label="Dondur" name="freeze"/>
+	<menu_item_call label="Çöz" name="unfreeze"/>
+	<menu_item_call label="CSR" name="csr"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_save_outfit.xml b/indra/newview/skins/default/xui/tr/menu_save_outfit.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b28488fe3079c4682cbc1c50e3967fe5e6906632
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_save_outfit.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="save_outfit_menu">
+	<menu_item_call label="Kaydet" name="save_outfit"/>
+	<menu_item_call label="Farklı Kaydet" name="save_as_new_outfit"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_script_chiclet.xml b/indra/newview/skins/default/xui/tr/menu_script_chiclet.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7c1cefc2d1debc138e4466411079dbaf076ae813
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_script_chiclet.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="ScriptChiclet Menu">
+	<menu_item_call label="Kapat" name="Close"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_slurl.xml b/indra/newview/skins/default/xui/tr/menu_slurl.xml
new file mode 100644
index 0000000000000000000000000000000000000000..73ac068b2676735209807e624dbe0228f1de25ce
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_slurl.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="Popup">
+	<menu_item_call label="URL Hakkında" name="about_url"/>
+	<menu_item_call label="URL&apos;ye Işınla" name="teleport_to_url"/>
+	<menu_item_call label="Harita" name="show_on_map"/>
+</menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..b08423be18ae95c13020f75fe1a0b5dae8d0635c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_teleport_history_gear.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Teleport History Gear Context Menu">
+	<menu_item_call label="Tüm klasörleri genişlet" name="Expand all folders"/>
+	<menu_item_call label="Tüm klasörleri daralt" name="Collapse all folders"/>
+	<menu_item_call label="Işınlama Geçmişini Temizle" name="Clear Teleport History"/>
+</toggleable_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..93984162e7facbf3c5d2b559ba63115f58006e3a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_teleport_history_item.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Teleport History Item Context Menu">
+	<menu_item_call label="Işınla" name="Teleport"/>
+	<menu_item_call label="Ek Bilgi" name="More Information"/>
+	<menu_item_call label="Panoya Kopyala" name="CopyToClipboard"/>
+</context_menu>
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
new file mode 100644
index 0000000000000000000000000000000000000000..b1e801c12313ee4298736fd6e288c426ddf7b334
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_teleport_history_tab.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Teleport History Item Context Menu">
+	<menu_item_call label="Aç" name="TabOpen"/>
+	<menu_item_call label="Kapat" name="TabClose"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_text_editor.xml b/indra/newview/skins/default/xui/tr/menu_text_editor.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ffbf309e84a523497531394b5b9564d3230eec38
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_text_editor.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Text editor context menu">
+	<menu_item_call label="Kes" name="Cut"/>
+	<menu_item_call label="Kopyala" name="Copy"/>
+	<menu_item_call label="Yapıştır" name="Paste"/>
+	<menu_item_call label="Sil" name="Delete"/>
+	<menu_item_call label="Tümünü Seç" name="Select All"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_toolbars.xml b/indra/newview/skins/default/xui/tr/menu_toolbars.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c8523a6ec948f903ddaf5f48fb277b4847c58cee
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_toolbars.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Toolbars Popup">
+	<menu_item_call label="Bu düğmeyi kaldır" name="Remove button"/>
+	<menu_item_call label="Araç çubuğu düğmeleri..." name="Choose Buttons"/>
+	<menu_item_check label="Simgeler ve etiketler" name="icons_with_text"/>
+	<menu_item_check label="Sadece simgeler" name="icons_only"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_topinfobar.xml b/indra/newview/skins/default/xui/tr/menu_topinfobar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d9b8d50f183cf064d7f4ca409c617ef1e5acfc58
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_topinfobar.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_topinfobar">
+	<menu_item_check label="Koordinatları Göster" name="Show Coordinates"/>
+	<menu_item_check label="Parsel Özelliklerini Göster" name="Show Parcel Properties"/>
+	<menu_item_call label="Yer Ä°mi" name="Landmark"/>
+	<menu_item_call label="Kopyala" name="Copy"/>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..d82b52aea8040c8af2cbda5a1d31892ea5113668
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_url_agent.xml
@@ -0,0 +1,6 @@
+<?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="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_group.xml b/indra/newview/skins/default/xui/tr/menu_url_group.xml
new file mode 100644
index 0000000000000000000000000000000000000000..40fa13b4cf239ab6bf09adf146b7774b1544e7a7
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_url_group.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Grup Bilgilerini Göster" name="show_group"/>
+	<menu_item_call label="Grubu 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_http.xml b/indra/newview/skins/default/xui/tr/menu_url_http.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fee8eba150d36bfab649d0c8949e19a1d993b8dc
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_url_http.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Web Sayfasını Aç" name="url_open"/>
+	<menu_item_call label="İnternet Tarayıcıda Aç" name="url_open_internal"/>
+	<menu_item_call label="Harici Tarayıcıda Aç" name="url_open_external"/>
+	<menu_item_call label="URL&apos;yi panoya kopyala" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_url_inventory.xml b/indra/newview/skins/default/xui/tr/menu_url_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3b22c5afecb02bad02673a065f1626019774a234
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_url_inventory.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Envanter Öğesini Göster" name="show_item"/>
+	<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_map.xml b/indra/newview/skins/default/xui/tr/menu_url_map.xml
new file mode 100644
index 0000000000000000000000000000000000000000..770e330516cc6cc534a5f96b35ff03d18659e8d0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_url_map.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Haritada Göster" name="show_on_map"/>
+	<menu_item_call label="Konuma Işınla" name="teleport_to_location"/>
+	<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
new file mode 100644
index 0000000000000000000000000000000000000000..d55e34c11c31bf68e9ba3a67d203a093275feb51
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_url_objectim.xml
@@ -0,0 +1,8 @@
+<?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="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"/>
+	<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_parcel.xml b/indra/newview/skins/default/xui/tr/menu_url_parcel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..eac1d743c32d4cde12078e3b460f302480345fb6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_url_parcel.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Parsel Bilgilerini Göster" name="show_parcel"/>
+	<menu_item_call label="Haritada Göster" name="show_on_map"/>
+	<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_slapp.xml b/indra/newview/skins/default/xui/tr/menu_url_slapp.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a2ecfc6a482f4b24b3b1fc39c7452c5f0f4e1f1f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_url_slapp.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Bu Komutu Çalıştır" name="run_slapp"/>
+	<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_slurl.xml b/indra/newview/skins/default/xui/tr/menu_url_slurl.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3f4e51b36c773e6b6edcf53bed66fee34b0883fc
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_url_slurl.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Yer Bilgilerini Göster" name="show_place"/>
+	<menu_item_call label="Haritada Göster" name="show_on_map"/>
+	<menu_item_call label="Konuma Işınla" name="teleport_to_location"/>
+	<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_teleport.xml b/indra/newview/skins/default/xui/tr/menu_url_teleport.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b7035a4d8f233a27f6392b63804e87e62b5e28a8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_url_teleport.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Url Popup">
+	<menu_item_call label="Bu Konuma Işınla" name="teleport"/>
+	<menu_item_call label="Haritada Göster" name="show_on_map"/>
+	<menu_item_call label="SLurl&apos;yi Panoya Kopyala" name="url_copy"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_viewer.xml b/indra/newview/skins/default/xui/tr/menu_viewer.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ef10d639d7743e95425441321ab3521d0682dad7
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_viewer.xml
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu_bar name="Main Menu">
+	<menu label="Ben" name="Me">
+		<menu_item_call label="Profil..." name="Profile"/>
+		<menu_item_call label="Görünüm..." name="ChangeOutfit"/>
+		<menu_item_call label="Bir avatar seçin..." name="Avatar Picker"/>
+		<menu_item_check label="Envanter..." name="Inventory"/>
+		<menu_item_call label="Yeni Envanter Penceresi" name="NewInventoryWindow"/>
+		<menu_item_call label="Yerler..." name="Places"/>
+		<menu_item_call label="Favoriler..." name="Picks"/>
+		<menu_item_call label="Kamera Denetimleri..." name="Camera Controls"/>
+		<menu label="Hareket" name="Movement">
+			<menu_item_call label="Otur" name="Sit Down Here"/>
+			<menu_item_check label="Uç" name="Fly"/>
+			<menu_item_check label="Daima KoÅŸ" name="Always Run"/>
+			<menu_item_call label="Beni Anime Etmeyi Durdur" name="Stop Animating My Avatar"/>
+		</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_item_call label="Yönetici Durumu Talep Et" name="Request Admin Options"/>
+		<menu_item_call label="Yönetici Durumundan Ayrıl" name="Leave Admin Options"/>
+		<menu_item_call label="L$ Satın Al" name="Buy and Sell L$"/>
+		<menu_item_call label="Hesap kontrol paneli..." name="Manage My Account"/>
+		<menu_item_call label="Tercihler..." name="Preferences"/>
+		<menu_item_call label="Araç çubuğu düğmeleri..." name="Toolbars"/>
+		<menu_item_call label="Tüm denetimleri sakla" name="Hide UI"/>
+		<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="KonuÅŸ" name="Speak"/>
+		<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_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>
+	<menu label="Dünya" name="World">
+		<menu_item_call label="Bu Yeri Yer Ä°mlerine Ekle" name="Create Landmark Here"/>
+		<menu_item_call label="Hedef Konumlar..." name="Destinations"/>
+		<menu_item_check label="Dünya haritası" name="World Map"/>
+		<menu_item_check label="Mini-harita" name="Mini-Map"/>
+		<menu_item_check label="Ara" name="Search"/>
+		<menu_item_call label="Ana konuma ışınlan" name="Teleport Home"/>
+		<menu_item_call label="Ana konumu burası olarak seç" name="Set Home to Here"/>
+		<menu_item_call label="Anlık Görüntü" name="Take Snapshot"/>
+		<menu_item_call label="Profili yerleÅŸtir" name="Place Profile"/>
+		<menu_item_call label="Arazi hakkında" name="About Land"/>
+		<menu_item_call label="Bölge / Gayrimenkul" name="Region/Estate"/>
+		<menu_item_call label="Sahip olduğum arazi parçaları..." name="My Land"/>
+		<menu_item_call label="Bu araziyi satın al" name="Buy Land"/>
+		<menu label="Göster" name="LandShow">
+			<menu_item_check label="Yasaklama Çizgileri" name="Ban Lines"/>
+			<menu_item_check label="Ä°ÅŸaretler" name="beacons"/>
+			<menu_item_check label="Mülkiyet Çizgileri" name="Property Lines"/>
+			<menu_item_check label="Arazi Sahipleri" name="Land Owners"/>
+			<menu_item_check label="Koordinatlar" name="Coordinates"/>
+			<menu_item_check label="Parsel Özellikleri" name="Parcel Properties"/>
+			<menu_item_check label="Gelişmiş Menü" name="Show Advanced Menu"/>
+		</menu>
+		<menu label="Güneş" name="Environment Settings">
+			<menu_item_call label="Gün Doğumu" name="Sunrise"/>
+			<menu_item_call label="Gün Ortası" name="Noon"/>
+			<menu_item_call label="Gün Batımı" name="Sunset"/>
+			<menu_item_call label="Gece Yarısı" name="Midnight"/>
+			<menu_item_call label="Bölge Ayarlarını Kullanın" name="Use Region Settings"/>
+		</menu>
+		<menu label="Ortam Düzenleyici" name="Environment Editor">
+			<menu_item_call label="Ortam Ayarları..." name="Environment Settings"/>
+			<menu label="Su Ön Ayarları" name="Water Presets">
+				<menu_item_call label="Yeni ön ayar..." name="new_water_preset"/>
+				<menu_item_call label="Ön ayarı düzenle..." name="edit_water_preset"/>
+				<menu_item_call label="Ön ayarı sil..." name="delete_water_preset"/>
+			</menu>
+			<menu label="Gökyüzü Ön Ayarları" name="Sky Presets">
+				<menu_item_call label="Yeni ön ayar..." name="new_sky_preset"/>
+				<menu_item_call label="Ön ayarı düzenle..." name="edit_sky_preset"/>
+				<menu_item_call label="Ön ayarı sil..." name="delete_sky_preset"/>
+			</menu>
+			<menu label="Gün Ön Ayarları" name="Day Presets">
+				<menu_item_call label="Yeni ön ayar..." name="new_day_preset"/>
+				<menu_item_call label="Ön ayarı düzenle..." name="edit_day_preset"/>
+				<menu_item_call label="Ön ayarı sil..." name="delete_day_preset"/>
+			</menu>
+		</menu>
+	</menu>
+	<menu label="Ä°nÅŸa Et" name="BuildTools">
+		<menu_item_check label="Ä°nÅŸa Et" name="Show Build Tools"/>
+		<menu label="İnşa Et Aracını Seç" name="Select Tool">
+			<menu_item_call label="Odaklanma Aracı" name="Focus"/>
+			<menu_item_call label="Hareket Ettirme Aracı" name="Move"/>
+			<menu_item_call label="Düzenleme Aracı" name="Edit"/>
+			<menu_item_call label="Oluşturma Aracı" name="Create"/>
+			<menu_item_call label="Arazi Aracı" name="Land"/>
+		</menu>
+		<menu_item_call label="BaÄŸla" name="Link"/>
+		<menu_item_call label="BaÄŸlnty. Kopar" name="Unlink"/>
+		<menu_item_check label="Bağlantılı Parçaları Düzenle" name="Edit Linked Parts"/>
+		<menu label="Bağlantılı Parçaları Seç" name="Select Linked Parts">
+			<menu_item_call label="Sonraki Parçayı Seç" name="Select Next Part"/>
+			<menu_item_call label="Önceki Parçayı Seç" name="Select Previous Part"/>
+			<menu_item_call label="Sonraki Parçayı Dahil Et" name="Include Next Part"/>
+			<menu_item_call label="Önceki Parçayı Dahil Et" name="Include Previous Part"/>
+		</menu>
+		<menu_item_call label="Seçime Odaklan" name="Focus on Selection"/>
+		<menu_item_call label="Seçimi Yakınlaştır" name="Zoom to Selection"/>
+		<menu label="Nesne" name="Object">
+			<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>
+		<menu label="Komut Dosyaları" name="Scripts">
+			<menu_item_call label="Komut Dosyalarını Tekrar Derle (Mono)" name="Mono"/>
+			<menu_item_call label="Komut Dosyalarını Tekrar Derle (LSL)" name="LSL"/>
+			<menu_item_call label="Komut Dosyalarını Sıfırla" name="Reset Scripts"/>
+			<menu_item_call label="Komut Dosyalarını Çalışıyor Olarak Ayarla" name="Set Scripts to Running"/>
+			<menu_item_call label="Komut Dosyalarını Çalışmıyor Olarak Ayarla" name="Set Scripts to Not Running"/>
+		</menu>
+		<menu label="Seçenklr." name="Options">
+			<menu_item_check label="Gelişmiş İzinleri Göster" name="DebugPermissions"/>
+			<menu_item_check label="Sadece Nesnelerimi Seç" name="Select Only My Objects"/>
+			<menu_item_check label="Sadece Hareket Ettirilebilir Nesneleri Seç" name="Select Only Movable Objects"/>
+			<menu_item_check label="Çevreleyerek Seç" name="Select By Surrounding"/>
+			<menu_item_check label="Seçim Ana Hatlarını Göster" name="Show Selection Outlines"/>
+			<menu_item_check label="Gizli Seçimi Göster" name="Show Hidden Selection"/>
+			<menu_item_check label="Seçim İçin Işık Yarı Çapını Göster" name="Show Light Radius for Selection"/>
+			<menu_item_check label="Seçim Işınını Göster" name="Show Selection Beam"/>
+			<menu_item_check label="AÄŸa Uydur" name="Snap to Grid"/>
+			<menu_item_call label="XY Nesnesini AÄŸa Uydur" name="Snap Object XY to Grid"/>
+			<menu_item_call label="Ağ İçin Seçimi Kullan" name="Use Selection for Grid"/>
+			<menu_item_call label="Ağ Seçenekleri" name="Grid Options"/>
+		</menu>
+		<menu label="Karşıya Yükle" name="Upload">
+			<menu_item_call label="Görüntü (L$[COST])..." name="Upload Image"/>
+			<menu_item_call label="Ses (L$[COST])..." name="Upload Sound"/>
+			<menu_item_call label="Animasyon (L$[COST])..." name="Upload Animation"/>
+			<menu_item_call label="Model..." name="Upload Model"/>
+			<menu_item_call label="Toplu (dosya başına L$[COST])..." name="Bulk Upload"/>
+			<menu_item_call label="Varsayılan Karşıya Yükleme İzinlerini Ayarla" name="perm prefs"/>
+		</menu>
+		<menu_item_call label="Geri Al" name="Undo"/>
+		<menu_item_call label="Yinele" name="Redo"/>
+	</menu>
+	<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="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"/>
+	</menu>
+	<menu label="GeliÅŸmiÅŸ" name="Advanced">
+		<menu_item_call label="Dokuları Tekrar Kaydet" name="Rebake Texture"/>
+		<menu_item_call label="KA Büyüklüğünü Varsayılana Ayarla" name="Set UI Size to Default"/>
+		<menu_item_call label="Pencere Büyüklüğünü Ayarla..." name="Set Window Size..."/>
+		<menu_item_check label="Seçim Mesafesini Sınırla" name="Limit Select Distance"/>
+		<menu_item_check label="Kamera Kısıtlarını Devredışı Bırak" name="Disable Camera Distance"/>
+		<menu_item_check label="Yüksek Çöz. Anlık Görüntü" name="HighResSnapshot"/>
+		<menu_item_check label="Sessiz ve Animasyonsuz Anlık Görüntüleri Diske Kaydet" name="QuietSnapshotsToDisk"/>
+		<menu label="Performans Araçları" name="Performance Tools">
+			<menu_item_call label="Gecikme Ölçer" name="Lag Meter"/>
+			<menu_item_check label="İstatistik Çubuğu" name="Statistics Bar"/>
+			<menu_item_check label="Avatarlar İçin Çizim Ağırlığını Göster" name="Avatar Rendering Cost"/>
+		</menu>
+		<menu label="Vurgulama ve Görünürlük" name="Highlighting and Visibility">
+			<menu_item_check label="Yanıp Sönen İşaret" name="Cheesy Beacon"/>
+			<menu_item_check label="Parçacıkları Gizle" name="Hide Particles"/>
+			<menu_item_check label="Seçilenleri Gizle" name="Hide Selected"/>
+			<menu_item_check label="Saydamı Vurgula" name="Highlight Transparent"/>
+			<menu_item_check label="BÜG Aksesuarlarını Göster" name="Show HUD Attachments"/>
+			<menu_item_check label="Fare Üzerinden Görünüm Artı İşaretini Göster" name="ShowCrosshairs"/>
+		</menu>
+		<menu label="İşleme Türleri" name="Rendering Types">
+			<menu_item_check label="Basit" name="Simple"/>
+			<menu_item_check label="Alfa" name="Alpha"/>
+			<menu_item_check label="Ağaç" name="Tree"/>
+			<menu_item_check label="Avatarlar" name="Character"/>
+			<menu_item_check label="Yüzey Yaması" name="Surface Patch"/>
+			<menu_item_check label="Gökyüzü" name="Sky"/>
+			<menu_item_check label="Su" name="Water"/>
+			<menu_item_check label="Toprak" name="Ground"/>
+			<menu_item_check label="Hacim" name="Volume"/>
+			<menu_item_check label="Çimen" name="Grass"/>
+			<menu_item_check label="Bulutlar" name="Clouds"/>
+			<menu_item_check label="Parçacıklar" name="Particles"/>
+			<menu_item_check label="Tümsek" name="Bump"/>
+		</menu>
+		<menu label="İşleme Özellikleri" name="Rendering Features">
+			<menu_item_check label="KA" name="UI"/>
+			<menu_item_check label="Seçili" name="Selected"/>
+			<menu_item_check label="Vurgulanmış" name="Highlighted"/>
+			<menu_item_check label="Dinamik Dokular" name="Dynamic Textures"/>
+			<menu_item_check label="Ayak Hizası Gölgeleri" name="Foot Shadows"/>
+			<menu_item_check label="Pus" name="Fog"/>
+			<menu_item_check label="FRInfo Testi" name="Test FRInfo"/>
+			<menu_item_check label="Esnek Nesneler" name="Flexible Objects"/>
+		</menu>
+		<menu_item_check label="İş Parçacığı Okuma Eklentisini Kullan" name="Use Plugin Read Thread"/>
+		<menu_item_call label="Grup Ön Belleğini Temizle" name="ClearGroupCache"/>
+		<menu_item_check label="Fare Düzleştirme" name="Mouse Smoothing"/>
+		<menu_item_call label="Bırakma Anahtarları" name="Release Keys"/>
+		<menu label="Kısa Yollar" name="Shortcuts">
+			<menu_item_call label="Görüntü (L$[COST])..." name="Upload Image"/>
+			<menu_item_check label="Ara" name="Search"/>
+			<menu_item_check label="Gelişmiş Menüyü Göster - eski kısayol" name="Show Advanced Menu - legacy shortcut"/>
+			<menu_item_call label="Pencereyi Kapat" name="Close Window"/>
+			<menu_item_call label="Tüm Pencereleri Kapat" name="Close All Windows"/>
+			<menu_item_call label="Diske Anlık Görüntü" name="Snapshot to Disk"/>
+			<menu_item_call label="Fare Üzerinden Görünüm" name="Mouselook"/>
+			<menu_item_check label="Oyun Çubuğu Flycam" name="Joystick Flycam"/>
+			<menu_item_call label="Görünümü Sıfırla" name="Reset View"/>
+			<menu_item_call label="Son Sohbet Edene Bak" name="Look at Last Chatter"/>
+			<menu label="İnşa Et Aracını Seç" name="Select Tool">
+				<menu_item_call label="Odaklanma Aracı" name="Focus"/>
+				<menu_item_call label="Hareket Ettirme Aracı" name="Move"/>
+				<menu_item_call label="Düzenleme Aracı" name="Edit"/>
+				<menu_item_call label="Oluşturma Aracı" name="Create"/>
+				<menu_item_call label="Arazi Aracı" name="Land"/>
+			</menu>
+			<menu_item_call label="Yakınlaştır" name="Zoom In"/>
+			<menu_item_call label="Varsayılan Yakınlaştırma" name="Zoom Default"/>
+			<menu_item_call label="Uzaklaştırma" name="Zoom Out"/>
+		</menu>
+		<menu_item_call label="Hata Ayıklama Ayarlarını Göster" name="Debug Settings"/>
+		<menu_item_check label="Geliştirme Menüsünü Göster" name="Debug Mode"/>
+	</menu>
+	<menu label="GeliÅŸtir" name="Develop">
+		<menu label="Konsollar" name="Consoles">
+			<menu_item_check label="Doku Konsolu" name="Texture Console"/>
+			<menu_item_check label="Hata Ayıklama Konsolu" name="Debug Console"/>
+			<menu_item_call label="Bildirimler Konsolu" name="Notifications"/>
+			<menu_item_check label="Doku Büyüklüğü Konsolu" name="Texture Size"/>
+			<menu_item_check label="Doku Kategorisi Konsolu" name="Texture Category"/>
+			<menu_item_check label="Hızlı Zamanlayıcılar" name="Fast Timers"/>
+			<menu_item_check label="Bellek" name="Memory"/>
+			<menu_item_check label="Sahne Ä°statistikleri" name="Scene Statistics"/>
+			<menu_item_call label="Hata Ayıklama Konsoluna giden Bölge Bilgisi" name="Region Info to Debug Console"/>
+			<menu_item_call label="Hata Ayıklama Konsoluna giden Grup Bilgisi" name="Group Info to Debug Console"/>
+			<menu_item_call label="Hata Ayıklama Konsoluna giden Özellikler Bilgisi" name="Capabilities Info to Debug Console"/>
+			<menu_item_check label="Kamera" name="Camera"/>
+			<menu_item_check label="Rüzgar" name="Wind"/>
+			<menu_item_check label="Görünüm Alanı" name="FOV"/>
+			<menu_item_check label="Rozet" name="Badge"/>
+		</menu>
+		<menu label="Bilgiyi Göster" name="Display Info">
+			<menu_item_check label="Zamanı Göster" name="Show Time"/>
+			<menu_item_check label="Karşıya Yükleme Maliyetini Göster" name="Show Upload Cost"/>
+			<menu_item_check label="İşleme Bilgisini Göster" name="Show Render Info"/>
+			<menu_item_check label="Doku Bilgisini Göster" name="Show Texture Info"/>
+			<menu_item_check label="Matrisleri Göster" name="Show Matrices"/>
+			<menu_item_check label="İmlecin Altındaki Rengi Göster" name="Show Color Under Cursor"/>
+			<menu_item_check label="Belleği Göster" name="Show Memory"/>
+			<menu_item_check label="Özel Bellek Bilgisini Göster" name="Show Private Mem Info"/>
+			<menu_item_check label="Nesneler İçin Güncelleştirmeleri Göster" name="Show Updates"/>
+		</menu>
+		<menu label="Bir Hatayı Zorla" name="Force Errors">
+			<menu_item_call label="Kesme Noktasını Zorla" name="Force Breakpoint"/>
+			<menu_item_call label="LLError ve Çökme Zorla" name="Force LLError And Crash"/>
+			<menu_item_call label="Hatalı Bellek Erişimini Zorla" name="Force Bad Memory Access"/>
+			<menu_item_call label="Sonsuz Döngüyü Zorla" name="Force Infinite Loop"/>
+			<menu_item_call label="Sürücü Çökmesini Zorla" name="Force Driver Carsh"/>
+			<menu_item_call label="Yazılım Özel Durumunu Zorla" name="Force Software Exception"/>
+			<menu_item_call label="Görüntüleyici Bağlantısının Kesilmesini Zorla" name="Force Disconnect Viewer"/>
+			<menu_item_call label="Bir Bellek Sızıntısı Benzetimini Gerçekleştir" name="Memory Leaking Simulation"/>
+		</menu>
+		<menu label="Ä°ÅŸleme Testleri" name="Render Tests">
+			<menu_item_check label="Kamera Kayması" name="Camera Offset"/>
+			<menu_item_check label="Çerçeve Hızını Rastgele Seç" name="Randomize Framerate"/>
+			<menu_item_check label="Düzenli Yavaş Çerçeve" name="Periodic Slow Frame"/>
+			<menu_item_check label="Çerçeve Testi" name="Frame Test"/>
+		</menu>
+		<menu label="Meta Verileri Ä°ÅŸle" name="Render Metadata">
+			<menu_item_check label="Sınırlama Kutuları" name="Bounding Boxes"/>
+			<menu_item_check label="Normaller" name="Normals"/>
+			<menu_item_check label="Gölgeleme Ağacı" name="Octree"/>
+			<menu_item_check label="Gölge Kesik Koni" name="Shadow Frusta"/>
+			<menu_item_check label="Fizik Åžekilleri" name="Physics Shapes"/>
+			<menu_item_check label="Gölgeleme" name="Occlusion"/>
+			<menu_item_check label="Toplu Ä°ÅŸleri Ä°ÅŸle" name="Render Batches"/>
+			<menu_item_check label="Güncelleştirme Türü" name="Update Type"/>
+			<menu_item_check label="Doku Animasyonu" name="Texture Anim"/>
+			<menu_item_check label="Doku Önceliği" name="Texture Priority"/>
+			<menu_item_check label="Doku Alanı" name="Texture Area"/>
+			<menu_item_check label="Yüz Alanı" name="Face Area"/>
+			<menu_item_check label="Ayrıntı Seviyesi Bilgisi" name="LOD Info"/>
+			<menu_item_check label="Ä°nÅŸa KuyruÄŸu" name="Build Queue"/>
+			<menu_item_check label="Işıklar" name="Lights"/>
+			<menu_item_check label="Çarpışma İskeleti" name="Collision Skeleton"/>
+			<menu_item_check label="Işın Yayını" name="Raycast"/>
+			<menu_item_check label="Rüzgar Vektörleri" name="Wind Vectors"/>
+			<menu_item_check label="İşleme Karmaşıklığı" name="rendercomplexity"/>
+			<menu_item_check label="Åžekillendir" name="Sculpt"/>
+		</menu>
+		<menu label="Ä°ÅŸleme" name="Rendering">
+			<menu_item_check label="Eksenler" name="Axes"/>
+			<menu_item_check label="Tanjant Temeli" name="Tangent Basis"/>
+			<menu_item_call label="Seçilen Doku Bilgi Temeli" name="Selected Texture Info Basis"/>
+			<menu_item_check label="Telkafes" name="Wireframe"/>
+			<menu_item_check label="Görünen Nesneler İçin Gölgeleme" name="Object-Object Occlusion"/>
+			<menu_item_check label="Işıklandırma ve Gölgeler" name="Lighting and Shadows"/>
+			<menu_item_check label="Güneş/Ay/Projektörlerden Gelen Gölgeler" name="Shadows from Sun/Moon/Projectors"/>
+			<menu_item_check label="SSAO ve Gölge Yumuşatma" name="SSAO and Shadow Smoothing"/>
+			<menu_item_check label="GL Hata Ayıklama" name="Debug GL"/>
+			<menu_item_check label="Ardışık Hata Ayıklama" name="Debug Pipeline"/>
+			<menu_item_check label="Otomatik Alfa Maskeleri (ertelenmiÅŸ)" name="Automatic Alpha Masks (deferred)"/>
+			<menu_item_check label="Otomatik Alfa Maskeleri (ertelenmemiÅŸ)" name="Automatic Alpha Masks (non-deferred)"/>
+			<menu_item_check label="Animasyon Dokuları" name="Animation Textures"/>
+			<menu_item_check label="Dokuları Devre Dışı Bırak" name="Disable Textures"/>
+			<menu_item_check label="Tam Çöz. Dokular" name="Rull Res Textures"/>
+			<menu_item_check label="Dokuları Denetle" name="Audit Textures"/>
+			<menu_item_check label="Doku Atlas (deneysel)" name="Texture Atlas"/>
+			<menu_item_check label="Eklenmiş Işıkları İşle" name="Render Attached Lights"/>
+			<menu_item_check label="Eklenmiş Parçacıkları İşle" name="Render Attached Particles"/>
+			<menu_item_check label="Parıldayan Nesneler Üzerine Gel" name="Hover Glow Objects"/>
+		</menu>
+		<menu label="AÄŸ" name="Network">
+			<menu_item_check label="Aracıyı Durdur" name="AgentPause"/>
+			<menu_item_call label="İleti Günlüğünü Etkinleştir" name="Enable Message Log"/>
+			<menu_item_call label="İleti Günlüğünü Devre Dışı Bırak" name="Disable Message Log"/>
+			<menu_item_check label="Nesnelerin Hızını İnterpole Edin" name="Velocity Interpolate Objects"/>
+			<menu_item_check label="Nesne Konumlarını Ping İle İnterpole Edin" name="Ping Interpolate Object Positions"/>
+			<menu_item_call label="Paket Bırakın" name="Drop a Packet"/>
+		</menu>
+		<menu_item_call label="Komut Dosyalı Kameranın Dökümünü Al" name="Dump Scripted Camera"/>
+		<menu_item_call label="Toslamalar, Ä°tmeler ve Vurmalar" name="Bumps, Pushes &amp;amp; Hits"/>
+		<menu label="Kaydedici" name="Recorder">
+			<menu_item_call label="Oynatmayı Başlat" name="Start Playback"/>
+			<menu_item_call label="Oynatmayı Durdur" name="Stop Playback"/>
+			<menu_item_check label="Döngü Oynatma" name="Loop Playback"/>
+			<menu_item_call label="Kaydı Başlat" name="Start Record"/>
+			<menu_item_call label="Kaydı Durdur" name="Stop Record"/>
+		</menu>
+		<menu label="Dünya" name="World">
+			<menu_item_check label="Sim Güneşi Geçersiz Kıl" name="Sim Sun Override"/>
+			<menu_item_check label="Yanıp Sönen İşaret" name="Cheesy Beacon"/>
+			<menu_item_check label="Sabit Hava Durumu" name="Fixed Weather"/>
+			<menu_item_call label="Bölge Nesne Önbelleğinin Dökümünü Al" name="Dump Region Object Cache"/>
+		</menu>
+		<menu label="KA" name="UI">
+			<menu_item_call label="Ortam Tarayıcı Testi" name="Web Browser Test"/>
+			<menu_item_call label="Web İçerik Tarayıcısı" name="Web Content Browser"/>
+			<menu_item_call label="SelectMgr&apos;i Dökümünü Al" name="Dump SelectMgr"/>
+			<menu_item_call label="Envanterin Dökümünü Al" name="Dump Inventory"/>
+			<menu_item_call label="Zamanlayıcıların Dökümünü Al" name="Dump Timers"/>
+			<menu_item_call label="Odaklayıcı Tutucunun Dökümünü Al" name="Dump Focus Holder"/>
+			<menu_item_call label="Seçilen Nesne Bilgisini Yazdır" name="Print Selected Object Info"/>
+			<menu_item_call label="Aracı Bilgisini Yazdır" name="Print Agent Info"/>
+			<menu_item_call label="Bellek Ä°statistikleri" name="Memory Stats"/>
+			<menu_item_check label="Bölge Hata Ayıklama Konsolu" name="Region Debug Console"/>
+			<menu_item_check label="SelectMgr İçin Hata Ayıklama" name="Debug SelectMgr"/>
+			<menu_item_check label="Tıklamalar İçin Hata Ayıklama" name="Debug Clicks"/>
+			<menu_item_check label="Görünümler için Hata Ayıklama" name="Debug Views"/>
+			<menu_item_check label="Ad Araç İpuçları İçin Hata Ayıklama" name="Debug Name Tooltips"/>
+			<menu_item_check label="Fare Etkinlikleri İçin Hata Ayıklama" name="Debug Mouse Events"/>
+			<menu_item_check label="Anahtarlar İçin Hata Ayıklama" name="Debug Keys"/>
+			<menu_item_check label="WindowProc İçin Hata Ayıklama" name="Debug WindowProc"/>
+		</menu>
+		<menu label="XUI" name="XUI">
+			<menu_item_call label="Renk Ayarlarını Tekrar Yükle" name="Reload Color Settings"/>
+			<menu_item_call label="Fon Testini Göster" name="Show Font Test"/>
+			<menu_item_check label="XUI Adlarını Göster" name="Show XUI Names"/>
+			<menu_item_call label="Test Amaçlı Aİ&apos;ler Gönder" name="Send Test IMs"/>
+			<menu_item_call label="Ad Önbelleklerini Temizle" name="Flush Names Caches"/>
+		</menu>
+		<menu label="Avatar" name="Character">
+			<menu label="KaydedilmiÅŸ Dokuyu Al" name="Grab Baked Texture">
+				<menu_item_call label="Ä°ris" name="Iris"/>
+				<menu_item_call label="BaÅŸ" name="Head"/>
+				<menu_item_call label="Üst Gövde" name="Upper Body"/>
+				<menu_item_call label="Alt Gövde" name="Lower Body"/>
+				<menu_item_call label="Etek" name="Skirt"/>
+			</menu>
+			<menu label="Karakter Testleri" name="Character Tests">
+				<menu_item_call label="XML&apos;de Görünüm" name="Appearance To XML"/>
+				<menu_item_call label="Karakter Geometrisini Aç/Kapa" name="Toggle Character Geometry"/>
+				<menu_item_call label="Test ErkeÄŸi" name="Test Male"/>
+				<menu_item_call label="Test DiÅŸisi" name="Test Female"/>
+				<menu_item_call label="PG&apos;yi Aç/Kapa" name="Toggle PG"/>
+				<menu_item_check label="Avatar Seçimine İzin Ver" name="Allow Select Avatar"/>
+			</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"/>
+			<menu_item_check label="Ayrıntı Seviyesi Bilgisini Devre Dışı Bırak" name="Disable LOD"/>
+			<menu_item_check label="Debug Character Vis" name="Debug Character Vis"/>
+			<menu_item_check label="Çarpışma İskeletini Göster" name="Show Collision Skeleton"/>
+			<menu_item_check label="Aracı Hedefini Göster" name="Display Agent Target"/>
+			--&gt;
+			<menu_item_call label="Aksesuarların Dökümünü Al" name="Dump Attachments"/>
+			<menu_item_call label="Avatar Dokuları İçin Hata Ayıklama" name="Debug Avatar Textures"/>
+			<menu_item_call label="Yerel Dokuların Dökümünü Al" name="Dump Local Textures"/>
+		</menu>
+		<menu_item_check label="HTTP Dokuları" name="HTTP Textures"/>
+		<menu_item_check label="HTTP Envanteri" name="HTTP Inventory"/>
+		<menu_item_call label="Görüntüleri Sıkıştır" name="Compress Images"/>
+		<menu_item_check label="Mini Döküm Dosyası Hata Ayıklama Çıktısı" name="Output Debug Minidump"/>
+		<menu_item_check label="Sonraki Çalışmada Konsol Penceresi" name="Console Window"/>
+		<menu_item_call label="Yönetici Durumu Talep Et" name="Request Admin Options"/>
+		<menu_item_call label="Yönetici Durumundan Ayrıl" name="Leave Admin Options"/>
+		<menu_item_check label="Yönetici Menüsünü Göster" name="View Admin Options"/>
+	</menu>
+	<menu label="Yönetici" name="Admin">
+		<menu label="Object">
+			<menu_item_call label="Kopya Al" name="Take Copy"/>
+			<menu_item_call label="Mülkiyetime Geçir" name="Force Owner To Me"/>
+			<menu_item_call label="İzinlerle Birlikte Mülkiyetime Geçir" name="Force Owner Permissive"/>
+			<menu_item_call label="Sil" name="Delete"/>
+			<menu_item_call label="Kilitle" name="Lock"/>
+			<menu_item_call label="Varlık Kimliklerini Al" name="Get Assets IDs"/>
+		</menu>
+		<menu label="Parsel" name="Parcel">
+			<menu_item_call label="Mülkiyetime Geçir" name="Owner To Me"/>
+			<menu_item_call label="Linden İçeriğine Ayarla" name="Set to Linden Content"/>
+			<menu_item_call label="Kamu Arazisi Ãœzerinde Hak Talep Et" name="Claim Public Land"/>
+		</menu>
+		<menu label="Bölge" name="Region">
+			<menu_item_call label="Geçici Varlık Verilerinin Dökümünü Al" name="Dump Temp Asset Data"/>
+			<menu_item_call label="Bölge Durumunu Kaydet" name="Save Region State"/>
+		</menu>
+		<menu_item_call label="Yönetici Araçları" name="God Tools"/>
+	</menu>
+	<menu label="Yönetici" name="Deprecated">
+		<menu label="Nesneyi Ekle" name="Attach Object"/>
+		<menu label="Nesneyi Ayır" name="Detach Object"/>
+		<menu label="Giysiyi Çıkar" name="Take Off Clothing">
+			<menu_item_call label="Gömlek" name="Shirt"/>
+			<menu_item_call label="Pantolon" name="Pants"/>
+			<menu_item_call label="Ayakkabılar" name="Shoes"/>
+			<menu_item_call label="Çoraplar" name="Socks"/>
+			<menu_item_call label="Ceket" name="Jacket"/>
+			<menu_item_call label="Eldivenler" name="Gloves"/>
+			<menu_item_call label="Fanila" name="Menu Undershirt"/>
+			<menu_item_call label="Külot" name="Menu Underpants"/>
+			<menu_item_call label="Etek" name="Skirt"/>
+			<menu_item_call label="Alfa" name="Alpha"/>
+			<menu_item_call label="Dövme" name="Tattoo"/>
+			<menu_item_call label="Fizik" name="Physics"/>
+			<menu_item_call label="Tüm Giysiler" name="All Clothes"/>
+		</menu>
+		<menu label="Yardım" name="Help">
+			<menu_item_call label="Resmi Linden Blog&apos;u" name="Official Linden Blog"/>
+			<menu_item_call label="Komut Dosyası Portalı" name="Scripting Portal"/>
+			<menu label="Hata Raporlama" name="Bug Reporting">
+				<menu_item_call label="Kamuya Açık Sorun İzleyicisi" name="Public Issue Tracker"/>
+				<menu_item_call label="Kamuya Açık Sorun İzleyicisi Yardımı" name="Publc Issue Tracker Help"/>
+				<menu_item_call label="Hata Raporlama 101" name="Bug Reporing 101"/>
+				<menu_item_call label="Güvenlik Sorunları" name="Security Issues"/>
+				<menu_item_call label="Soru ve Yanıt Wiki Sayfası" name="QA Wiki"/>
+			</menu>
+		</menu>
+	</menu>
+</menu_bar>
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
new file mode 100644
index 0000000000000000000000000000000000000000..448202df873edd8047f570b85da2a1bb64f4cc8b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_wearable_list_item.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Outfit Wearable Context Menu">
+	<menu_item_call label="DeÄŸiÅŸtir" name="wear_replace"/>
+	<menu_item_call label="Giy" name="wear_wear"/>
+	<menu_item_call label="Ekle" name="wear_add"/>
+	<menu_item_call label="Çıkar / Ayır" name="take_off_or_detach"/>
+	<menu_item_call label="Ayır" name="detach"/>
+	<context_menu label="Åžuna ekle" name="wearable_attach_to"/>
+	<context_menu label="BÃœG&apos;e Ekle" name="wearable_attach_to_hud"/>
+	<menu_item_call label="Çıkar" name="take_off"/>
+	<menu_item_call label="Düzenle" name="edit"/>
+	<menu_item_call label="Öğe Profili" name="object_profile"/>
+	<menu_item_call label="Orijinali Göster" name="show_original"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml b/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml
new file mode 100644
index 0000000000000000000000000000000000000000..438e580cd3d5e8a382ec3947ffc6257fe9952db3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_wearing_gear.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Gear Wearing">
+	<menu_item_call label="Dış Görünümü Düzenle" name="edit"/>
+	<menu_item_call label="Çıkar" name="takeoff"/>
+	<menu_item_call label="Dış görünüm listesini panoya kopyala" name="copy"/>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml b/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml
new file mode 100644
index 0000000000000000000000000000000000000000..97965465598eae81cec274e17d29daf2132ccc41
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/menu_wearing_tab.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<context_menu name="Wearing">
+	<menu_item_call label="Çıkar" name="take_off"/>
+	<menu_item_call label="Ayır" name="detach"/>
+	<menu_item_call label="Dış Görünümü Düzenle" name="edit"/>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/tr/mime_types.xml b/indra/newview/skins/default/xui/tr/mime_types.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c37f872a654e28349d2f1698faf2bf0402bc27b5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/mime_types.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Web İçeriği
+		</label>
+		<tooltip name="web_tooltip">
+			Bu konumda Web içeriği var
+		</tooltip>
+		<playtip name="web_playtip">
+			Web içeriğini göster
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			Film
+		</label>
+		<tooltip name="movie_tooltip">
+			Burada oynatılacak bir film var
+		</tooltip>
+		<playtip name="movie_playtip">
+			Filmi oynat
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			Görüntü
+		</label>
+		<tooltip name="image_tooltip">
+			Bu konumda bir görüntü var
+		</tooltip>
+		<playtip name="image_playtip">
+			Bu konumdaki görüntüyü göster
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			Ses
+		</label>
+		<tooltip name="audio_tooltip">
+			Bu konumda ses var
+		</tooltip>
+		<playtip name="audio_playtip">
+			Bu konumdaki sesi çal
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			Gerçek Zamanlı Akış
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- Hiçbiri -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- Hiçbiri -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			Ses
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			Video
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			Görüntü
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			Film (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Ogg Ses/Video
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			PDF Belgesi
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Postscript Belgesi
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			Zengin Metin (RTF)
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			Eşzamanlı Multimedya Tümleştirme Dili (SMIL)
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Web Sayfası (XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			Macromedia Director
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			Ses (MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			Ses (MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			Ses (AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			Ses (WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			Görüntü (BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			Görüntü (GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			Görüntü (JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			Görüntü (PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			Görüntü (SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			Görüntü (TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Web Sayfası
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			Metin
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			Film (MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			Film (MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			Film (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			Film (Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			Film (Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			Film (AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/tr/mime_types_linux.xml b/indra/newview/skins/default/xui/tr/mime_types_linux.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c37f872a654e28349d2f1698faf2bf0402bc27b5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/mime_types_linux.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Web İçeriği
+		</label>
+		<tooltip name="web_tooltip">
+			Bu konumda Web içeriği var
+		</tooltip>
+		<playtip name="web_playtip">
+			Web içeriğini göster
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			Film
+		</label>
+		<tooltip name="movie_tooltip">
+			Burada oynatılacak bir film var
+		</tooltip>
+		<playtip name="movie_playtip">
+			Filmi oynat
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			Görüntü
+		</label>
+		<tooltip name="image_tooltip">
+			Bu konumda bir görüntü var
+		</tooltip>
+		<playtip name="image_playtip">
+			Bu konumdaki görüntüyü göster
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			Ses
+		</label>
+		<tooltip name="audio_tooltip">
+			Bu konumda ses var
+		</tooltip>
+		<playtip name="audio_playtip">
+			Bu konumdaki sesi çal
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			Gerçek Zamanlı Akış
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- Hiçbiri -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- Hiçbiri -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			Ses
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			Video
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			Görüntü
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			Film (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Ogg Ses/Video
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			PDF Belgesi
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Postscript Belgesi
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			Zengin Metin (RTF)
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			Eşzamanlı Multimedya Tümleştirme Dili (SMIL)
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Web Sayfası (XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			Macromedia Director
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			Ses (MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			Ses (MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			Ses (AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			Ses (WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			Görüntü (BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			Görüntü (GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			Görüntü (JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			Görüntü (PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			Görüntü (SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			Görüntü (TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Web Sayfası
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			Metin
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			Film (MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			Film (MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			Film (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			Film (Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			Film (Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			Film (AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/tr/mime_types_mac.xml b/indra/newview/skins/default/xui/tr/mime_types_mac.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c37f872a654e28349d2f1698faf2bf0402bc27b5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/mime_types_mac.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<mimetypes name="default">
+	<widgetset name="web">
+		<label name="web_label">
+			Web İçeriği
+		</label>
+		<tooltip name="web_tooltip">
+			Bu konumda Web içeriği var
+		</tooltip>
+		<playtip name="web_playtip">
+			Web içeriğini göster
+		</playtip>
+	</widgetset>
+	<widgetset name="movie">
+		<label name="movie_label">
+			Film
+		</label>
+		<tooltip name="movie_tooltip">
+			Burada oynatılacak bir film var
+		</tooltip>
+		<playtip name="movie_playtip">
+			Filmi oynat
+		</playtip>
+	</widgetset>
+	<widgetset name="image">
+		<label name="image_label">
+			Görüntü
+		</label>
+		<tooltip name="image_tooltip">
+			Bu konumda bir görüntü var
+		</tooltip>
+		<playtip name="image_playtip">
+			Bu konumdaki görüntüyü göster
+		</playtip>
+	</widgetset>
+	<widgetset name="audio">
+		<label name="audio_label">
+			Ses
+		</label>
+		<tooltip name="audio_tooltip">
+			Bu konumda ses var
+		</tooltip>
+		<playtip name="audio_playtip">
+			Bu konumdaki sesi çal
+		</playtip>
+	</widgetset>
+	<scheme name="rtsp">
+		<label name="rtsp_label">
+			Gerçek Zamanlı Akış
+		</label>
+	</scheme>
+	<mimetype name="blank">
+		<label name="blank_label">
+			- Hiçbiri -
+		</label>
+	</mimetype>
+	<mimetype name="none/none">
+		<label name="none/none_label">
+			- Hiçbiri -
+		</label>
+	</mimetype>
+	<mimetype name="audio/*">
+		<label name="audio2_label">
+			Ses
+		</label>
+	</mimetype>
+	<mimetype name="video/*">
+		<label name="video2_label">
+			Video
+		</label>
+	</mimetype>
+	<mimetype name="image/*">
+		<label name="image2_label">
+			Görüntü
+		</label>
+	</mimetype>
+	<mimetype name="video/vnd.secondlife.qt.legacy">
+		<label name="vnd.secondlife.qt.legacy_label">
+			Film (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="application/javascript">
+		<label name="application/javascript_label">
+			Javascript
+		</label>
+	</mimetype>
+	<mimetype name="application/ogg">
+		<label name="application/ogg_label">
+			Ogg Ses/Video
+		</label>
+	</mimetype>
+	<mimetype name="application/pdf">
+		<label name="application/pdf_label">
+			PDF Belgesi
+		</label>
+	</mimetype>
+	<mimetype name="application/postscript">
+		<label name="application/postscript_label">
+			Postscript Belgesi
+		</label>
+	</mimetype>
+	<mimetype name="application/rtf">
+		<label name="application/rtf_label">
+			Zengin Metin (RTF)
+		</label>
+	</mimetype>
+	<mimetype name="application/smil">
+		<label name="application/smil_label">
+			Eşzamanlı Multimedya Tümleştirme Dili (SMIL)
+		</label>
+	</mimetype>
+	<mimetype name="application/xhtml+xml">
+		<label name="application/xhtml+xml_label">
+			Web Sayfası (XHTML)
+		</label>
+	</mimetype>
+	<mimetype name="application/x-director">
+		<label name="application/x-director_label">
+			Macromedia Director
+		</label>
+	</mimetype>
+	<mimetype name="audio/mid">
+		<label name="audio/mid_label">
+			Ses (MIDI)
+		</label>
+	</mimetype>
+	<mimetype name="audio/mpeg">
+		<label name="audio/mpeg_label">
+			Ses (MP3)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-aiff">
+		<label name="audio/x-aiff_label">
+			Ses (AIFF)
+		</label>
+	</mimetype>
+	<mimetype name="audio/x-wav">
+		<label name="audio/x-wav_label">
+			Ses (WAV)
+		</label>
+	</mimetype>
+	<mimetype name="image/bmp">
+		<label name="image/bmp_label">
+			Görüntü (BMP)
+		</label>
+	</mimetype>
+	<mimetype name="image/gif">
+		<label name="image/gif_label">
+			Görüntü (GIF)
+		</label>
+	</mimetype>
+	<mimetype name="image/jpeg">
+		<label name="image/jpeg_label">
+			Görüntü (JPEG)
+		</label>
+	</mimetype>
+	<mimetype name="image/png">
+		<label name="image/png_label">
+			Görüntü (PNG)
+		</label>
+	</mimetype>
+	<mimetype name="image/svg+xml">
+		<label name="image/svg+xml_label">
+			Görüntü (SVG)
+		</label>
+	</mimetype>
+	<mimetype name="image/tiff">
+		<label name="image/tiff_label">
+			Görüntü (TIFF)
+		</label>
+	</mimetype>
+	<mimetype name="text/html">
+		<label name="text/html_label">
+			Web Sayfası
+		</label>
+	</mimetype>
+	<mimetype name="text/plain">
+		<label name="text/plain_label">
+			Metin
+		</label>
+	</mimetype>
+	<mimetype name="text/xml">
+		<label name="text/xml_label">
+			XML
+		</label>
+	</mimetype>
+	<mimetype name="video/mpeg">
+		<label name="video/mpeg_label">
+			Film (MPEG)
+		</label>
+	</mimetype>
+	<mimetype name="video/mp4">
+		<label name="video/mp4_label">
+			Film (MP4)
+		</label>
+	</mimetype>
+	<mimetype name="video/quicktime">
+		<label name="video/quicktime_label">
+			Film (QuickTime)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-asf">
+		<label name="video/x-ms-asf_label">
+			Film (Windows Media ASF)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-ms-wmv">
+		<label name="video/x-ms-wmv_label">
+			Film (Windows Media WMV)
+		</label>
+	</mimetype>
+	<mimetype name="video/x-msvideo">
+		<label name="video/x-msvideo_label">
+			Film (AVI)
+		</label>
+	</mimetype>
+</mimetypes>
diff --git a/indra/newview/skins/default/xui/tr/notifications.xml b/indra/newview/skins/default/xui/tr/notifications.xml
new file mode 100644
index 0000000000000000000000000000000000000000..631634aa7d14200a12e239136861ec93eff07984
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/notifications.xml
@@ -0,0 +1,3092 @@
+<?xml version="1.0" encoding="utf-8"?>
+<notifications>
+	<global name="skipnexttime">
+		Bunu bir daha gösterme
+	</global>
+	<global name="alwayschoose">
+		Her zaman bu seçeneği seç
+	</global>
+	<global name="implicitclosebutton">
+		Kapat
+	</global>
+	<template name="okbutton">
+		<form>
+			<button name="OK_okbutton" text="$yestext"/>
+		</form>
+	</template>
+	<template name="okignore">
+		<form>
+			<button name="OK_okignore" text="$yestext"/>
+		</form>
+	</template>
+	<template name="okcancelbuttons">
+		<form>
+			<button name="OK_okcancelbuttons" text="$yestext"/>
+			<button name="Cancel_okcancelbuttons" text="$notext"/>
+		</form>
+	</template>
+	<template name="okcancelignore">
+		<form>
+			<button name="OK_okcancelignore" text="$yestext"/>
+			<button name="Cancel_okcancelignore" text="$notext"/>
+		</form>
+	</template>
+	<template name="okhelpbuttons">
+		<form>
+			<button name="OK_okhelpbuttons" text="$yestext"/>
+			<button name="Help" text="$helptext"/>
+		</form>
+	</template>
+	<template name="yesnocancelbuttons">
+		<form>
+			<button name="Yes" text="$yestext"/>
+			<button name="No" text="$notext"/>
+			<button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
+		</form>
+	</template>
+	<notification label="Bilinmeyen Bildirim Ä°letisi" name="MissingAlert">
+		[APP_NAME] sürümünüz alınan bildirimi nasıl görüntüleyeceğini bilmiyor.  Lütfen Görüntüleyicinin en son sürümünü yüklemiş olduğunuzdan emin olun.
+
+Hata ayrıntıları: &apos;[_NAME]&apos; adlı bildirim notifications.xml içinde bulunamadı.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="FloaterNotFound">
+		Gezdirici hatası: Aşağıdaki denetimler bulunamadı:
+
+[CONTROLS]
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="TutorialNotFound">
+		Şu an için kullanılabilir bir öğretici mevcut değil.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="GenericAlert">
+		[MESSAGE]
+	</notification>
+	<notification name="GenericAlertYesCancel">
+		[MESSAGE]
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Evet"/>
+	</notification>
+	<notification name="BadInstallation">
+		[APP_NAME] güncellenirken bir hata oluştu.  Lütfen Görüntüleyici&apos;nin [http://get.secondlife.com son sürümünü karşıdan yükleyin].
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="LoginFailedNoNetwork">
+		[SECOND_LIFE_GRID] ile bağlantı kurulamadı.
+    &apos;[DIAGNOSTIC]&apos;
+İnternet bağlantınızın düzgün çalıştığından emin olun.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="MessageTemplateNotFound">
+		İleti şablonu [PATH] bulunamadı.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="WearableSave">
+		Geçerli giysi/vücut bölümünde yapılan değişiklikler kaydedilsin mi?
+		<usetemplate canceltext="Ä°ptal" name="yesnocancelbuttons" notext="Kaydetme" yestext="Kaydet"/>
+	</notification>
+	<notification name="ConfirmNoCopyToOutbox">
+		Bu öğeyi Pazaryeri Giden Kutunuza kopyalama izniniz yok. Aşağıdaki öğeyi taşımak istediğinize emin misiniz?
+        [ITEM_NAME]
+		<usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="OutboxUploadComplete">
+		Pazaryerinin karşıya yüklenmesi tamamlandı.
+		<usetemplate name="okbutton" yestext="Yaşasın!"/>
+	</notification>
+	<notification name="OutboxUploadHadErrors">
+		Pazaryerinin karşıya yüklenmesi hatalarla tamamlandı!  Lütfen giden kutunuzdaki sorunları düzeltin ve tekrar deneyin.  Teşekkürler.
+		<usetemplate name="okbutton" yestext="Yuh!"/>
+	</notification>
+	<notification name="CompileQueueSaveText">
+		Aşağıdaki nedenden dolayı, bir komut dosyası için metin karşıya yüklenirken bir sorun oluştu: [REASON]. Lütfen daha sonra tekrar deneyin.
+	</notification>
+	<notification name="CompileQueueSaveBytecode">
+		Aşağıdaki nedenden dolayı, derlenen komut dosyası karşıya yüklenirken bir sorun oluştu: [REASON]. Lütfen daha sonra tekrar deneyin.
+	</notification>
+	<notification name="WriteAnimationFail">
+		Animasyon verileri yazılırken bir sorun oluştu.  Lütfen daha sonra tekrar deneyin.
+	</notification>
+	<notification name="UploadAuctionSnapshotFail">
+		Aşağıdaki nedenden dolayı, açık arttırma anlık görüntüsü karşıya yüklenirken bir sorun oluştu: [REASON]
+	</notification>
+	<notification name="UnableToViewContentsMoreThanOne">
+		Aynı anda birden fazla öğenin içeriği görüntülenemiyor.
+Lütfen sadece bir nesne seçin ve tekrar deneyin.
+	</notification>
+	<notification name="SaveClothingBodyChanges">
+		Giysi/vücut bölümlerinde yapılan tüm değişiklikler kaydedilsin mi?
+		<usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Kaydetme" yestext="Tümünü Kaydet"/>
+	</notification>
+	<notification name="FriendsAndGroupsOnly">
+		Arkadaşınız olmayan kişiler onların çağrılarını ve anlık iletilerini yok saydığınızı bilmeyecek.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="FavoritesOnLogin">
+		Not: Bu seçeneği etkinleştirdiğinizde, bu bilgisayarı kullanan herkes en sevdiğiniz konumlar listenizi görebilecek.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="GrantModifyRights">
+		Başka bir Sakine değişiklik yapma hakkı verdiğinizde, SL dünyasında sahip olduğunuz HERHANGİ BİR nesneyi değiştirebilme, silebilme veya alabilmelerine izin vermiş olursunuz. Bu izni verirken ÇOK dikkatli olun.
+[NAME] adlı kişiye değişiklik yapma hakkı vermek istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="GrantModifyRightsMultiple">
+		Başka bir Sakine değişiklik yapma hakkı verdiğinizde, SL dünyasında sahip olduğunuz HERHANGİ BİR nesneyi değiştirebilmelerine izin vermiş olursunuz. Bu izni verirken ÇOK dikkatli olun.
+Seçili Sakinlere değişiklik yapma hakkı vermek istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="RevokeModifyRights">
+		[NAME] adlı kişinin değişiklik yapma hakkını iptal etmek istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="RevokeModifyRightsMultiple">
+		Seçili Sakinlerin değişiklik yapma hakkını iptal etmek istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="UnableToCreateGroup">
+		Grup oluşturulamıyor.
+[MESSAGE]
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="PanelGroupApply">
+		[NEEDS_APPLY_MESSAGE]
+[WANT_APPLY_MESSAGE]
+		<usetemplate canceltext="Ä°ptal" name="yesnocancelbuttons" notext="DeÄŸiÅŸiklikleri Yok Say" yestext="DeÄŸiÅŸiklikleri Uygula"/>
+	</notification>
+	<notification name="MustSpecifyGroupNoticeSubject">
+		Grup notu göndermek için bir konu belirtmelisiniz.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="AddGroupOwnerWarning">
+		Grup üyelerini [ROLE_NAME] rolüne eklemek üzeresiniz.
+Üyeler bu rolden çıkarılamaz.
+Üyeler rolden kendi istekleriyle ayrılabilir.
+Devam etmek istediÄŸinize emin misiniz?
+		<usetemplate ignoretext="Yeni bir grup Sahibi eklemeden önce doğrulama iste" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="AssignDangerousActionWarning">
+		[ROLE_NAME] rolüne &apos;[ACTION_NAME]&apos; Yeteneğini eklemek üzeresiniz.
+
+ *UYARI*
+ Bu Yeteneğe sahip olan bir Roldeki herhangi bir Üye kendisini -- ve istediği diğer üyeleri -- şu anda sahip olduklarından daha fazla güce sahip olan Rollere atayabilir, kendi güçlerini Grup Sahibininkine yakın bir güce yükseltebilir. Bu Yeteneği atamadan önce ne yaptığınızı bildiğinizden emin olun.
+
+Bu Yetenek &apos;[ROLE_NAME]&apos; rolüne eklensin mi?
+		<usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="AssignDangerousAbilityWarning">
+		[ROLE_NAME] rolüne &apos;[ACTION_NAME]&apos; Yeteneğini eklemek üzeresiniz.
+
+ *UYARI*
+ Bu Yeteneğe sahip olan bir Roldeki herhangi bir Üye kendisine -- ve istediği diğer üyelere -- tüm Yetenekleri atayabilir, kendi güçlerini Grup Sahibininkine yakın bir güce yükseltebilir.
+
+Bu Yetenek &apos;[ROLE_NAME]&apos; rolüne eklensin mi?
+		<usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="AttachmentDrop">
+		Aksesuarınızı çıkarmak üzeresiniz.
+    Devam etmek istediÄŸinize emin misiniz?
+		<usetemplate ignoretext="Aksesuarları çıkarmadan önce doğrulama iste" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="JoinGroupCanAfford">
+		Bu gruba katılmanın maliyeti: L$ [COST].
+Devam etmek istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Katıl"/>
+	</notification>
+	<notification name="JoinGroupNoCost">
+		[NAME] grubuna katılıyorsunuz.
+Devam etmek istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Katıl"/>
+	</notification>
+	<notification name="JoinGroupCannotAfford">
+		Bu gruba katılmanın maliyeti: L$ [COST].
+Bu gruba katılmak için yeterli L$&apos;na sahip değilsiniz.
+	</notification>
+	<notification name="CreateGroupCost">
+		Bu grubu oluşturmanın maliyeti: L$ 100.
+Grupların birden fazla üyeye sahip olması gereklidir, aksi takdirde grup kalıcı olarak silinir.
+Lütfen 48 saat içinde diğer üyeleri davet edin.
+		<usetemplate canceltext="İptal" name="okcancelbuttons" notext="İptal" yestext="L$ 100 ödeyerek grubu oluştur"/>
+	</notification>
+	<notification name="LandBuyPass">
+		L$ [COST] ödeyerek (&apos;[PARCEL_NAME]&apos;) arazisine [TIME] saat süreyle girebilirsiniz.  Giriş hakkı satın almak istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="SalePriceRestriction">
+		Herhangi birine satış yaparken satış fiyatı L$ 0&apos;dan daha yüksek bir değere ayarlanmalıdır.
+L$ 0 fiyatla satış yapıyorsanız lütfen satışın yapılacağı kişiyi seçin.
+	</notification>
+	<notification name="ConfirmLandSaleChange">
+		Seçili [LAND_SIZE] m² arazi satışa çıkarılmak üzere ayarlanıyor.
+Satış fiyatınız L$ [SALE_PRICE] olacak ve [NAME] için satışa açık olacaktır.
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmLandSaleToAnyoneChange">
+		DİKKAT: &apos;Herkes için satışa açık&apos; seçeneğinin tıklanması, arazinizi tüm [SECOND_LIFE] topluluğuna açık hale getirir, bu bölgede bulunmayanlar da buna dahildir.
+
+Seçili [LAND_SIZE] m² arazi satışa çıkarılmak üzere ayarlanıyor.
+Satış fiyatınız L$ [SALE_PRICE] olacak ve [NAME] için satışa açık olacaktır.
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ReturnObjectsDeededToGroup">
+		&apos;[NAME]&apos; grubuyla bu arazi parseli üzerinde paylaşılan tüm nesneleri önceki sahiplerinin envanterine iade etmek istediğinize emin misiniz?
+
+*UYARI* Bu eylem, gruba devredilen nesnelerden aktarılması mümkün olmayanları silecektir!
+
+Nesneler: [N]
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ReturnObjectsOwnedByUser">
+		&apos;[NAME]&apos; adlı Sakinin bu arazi parseli üzerinde sahip olduğu tüm nesneleri envanterlerine iade etmek istediğinize emin misiniz? 
+
+Nesneler: [N]
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ReturnObjectsOwnedBySelf">
+		Bu arazi parseli üzerinde sahip olduğunuz tüm nesneleri envanterinize iade etmek istediğinize emin misiniz?
+
+Nesneler: [N]
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ReturnObjectsNotOwnedBySelf">
+		Bu arazi parseli üzerinde sizin sahip OLMADIĞINIZ tüm nesneleri kendi sahiplerinin envanterlerine iade etmek istediğinize emin misiniz?
+Bir gruba devredilen nesnelerden aktarılması mümkün olanlar önceki sahiplerine iade edilecektir.
+
+*UYARI* Bu eylem, gruba devredilen nesnelerden aktarılması mümkün olmayanları silecektir!
+
+Nesneler: [N]
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ReturnObjectsNotOwnedByUser">
+		Bu arazi parseli üzerinde [NAME] adlı kişinin sahip OLMADIĞI tüm nesneleri kendi sahiplerinin envanterlerine iade etmek istediğinize emin misiniz?
+Bir gruba devredilen nesnelerden aktarılması mümkün olanlar önceki sahiplerine iade edilecektir.
+
+*UYARI* Bu eylem, gruba devredilen nesnelerden aktarılması mümkün olmayanları silecektir!
+
+Nesneler: [N]
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ReturnAllTopObjects">
+		Listelenen tüm nesneleri kendi sahiplerinin envanterlerine iade etmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="DisableAllTopObjects">
+		Bu bölgedeki tüm nesneleri devre dışı bırakmak istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ReturnObjectsNotOwnedByGroup">
+		Bu arazi parseli üzerinde [NAME] grubuyla PAYLAŞILMAYAN nesneler sahiplerinin envanterine iade edilsin mi?
+
+Nesneler: [N]
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="UnableToDisableOutsideScripts">
+		Komut dosyaları devre dışı bırakılamıyor.
+Bu bölgenin tamamında hasar özelliği etkin.
+Silahların işlemesi için komut dosyalarının çalışmasına izin verilmelidir.
+	</notification>
+	<notification name="MultipleFacesSelected">
+		Şu anda birden fazla yüz seçili.
+Bu eyleme devam ederseniz, nesnenin birden fazla yüzünde ayrı ortam örnekleri ayarlanacak.
+Ortamı sadece bir yüze yerleştirmek için, Yüz Seç&apos;i seçin ve ardından nesnenin istenen yüzünü tıklayıp Ekle&apos;yi tıklatın.
+		<usetemplate ignoretext="Ortam, seçilen birden fazla yüz üzerinde ayarlanacak" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="MustBeInParcel">
+		İniş Noktasını ayarlamak için arazi parselinin içinde duruyor olmalısınız.
+	</notification>
+	<notification name="PromptRecipientEmail">
+		Lütfen alıcı(lar) için geçerli bir e-posta adresi girin.
+	</notification>
+	<notification name="PromptSelfEmail">
+		Lütfen e-posta adresinizi girin.
+	</notification>
+	<notification name="PromptMissingSubjMsg">
+		Anlık görüntü varsayılan konu ya da iletiyle gönderilsin mi?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ErrorProcessingSnapshot">
+		Anlık görüntü verileri işlenirken hata oluştu
+	</notification>
+	<notification name="ErrorEncodingSnapshot">
+		Anlık görüntü kodlanırken hata oluştu.
+	</notification>
+	<notification name="ErrorUploadingPostcard">
+		Aşağıdaki nedenden dolayı, anlık görüntü gönderilirken bir sorun oluştu: [REASON]
+	</notification>
+	<notification name="ErrorUploadingReportScreenshot">
+		Aşağıdaki nedenden dolayı, bir raporun ekran görüntüsü karşıya yüklenirken bir sorun oluştu: [REASON]
+	</notification>
+	<notification name="MustAgreeToLogIn">
+		[SECOND_LIFE]&apos;ta oturum açmaya devam etmek için Hizmet Sözleşmesi&apos;ni kabul etmelisiniz.
+	</notification>
+	<notification name="CouldNotPutOnOutfit">
+		Dış görünüm eklenemedi.
+Dış görünüm klasöründe hiç giysi, vücut bölümü ya da aksesuar yok.
+	</notification>
+	<notification name="CannotWearTrash">
+		Çöp kutusundaki giysileri veya vücut bölümlerini kullanamazsınız.
+	</notification>
+	<notification name="MaxAttachmentsOnOutfit">
+		Nesne eklenemedi.
+[MAX_ATTACHMENTS] nesnelik aksesuar sınırı aşıldı. Lütfen önce başka bir nesneyi çıkarın.
+	</notification>
+	<notification name="CannotWearInfoNotComplete">
+		Bu öğe henüz yüklenmediği için kullanamazsınız. Lütfen bir dakika sonra tekrar deneyin.
+	</notification>
+	<notification name="MustHaveAccountToLogIn">
+		Hata! Boş bırakılan alan(lar) var.
+Avatarınızın Kullanıcı adını girmeniz gerekmektedir.
+
+[SECOND_LIFE]&apos;a giriş yapmak için bir hesabınız olması gerekir. Şimdi bir hesap oluşturmak ister misiniz?
+		<url name="url">
+			http://join.secondlife.com/
+		</url>
+		<usetemplate name="okcancelbuttons" notext="Tekrar dene" yestext="Yeni bir hesap oluÅŸtur"/>
+	</notification>
+	<notification name="InvalidCredentialFormat">
+		Kullanıcı adı alanına Avatarınızın Kullanıcı adını ya da Ad ve Soyadını girmeniz ve yeniden oturum açmanız gerekmektedir.
+	</notification>
+	<notification name="DeleteClassified">
+		&apos;[NAME]&apos; ilanı silinsin mi?
+Ödenen ücretler iade edilmeyecektir.
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="DeleteMedia">
+		Bu yüzle ilişkili ortamı silmeyi seçtiniz.
+Devam etmek istediÄŸinize emin misiniz?
+		<usetemplate ignoretext="Bir nesneden ortam silmeden önce doğrulama iste" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="ClassifiedSave">
+		[NAME] ilanına yapılan değişiklikler kaydedilsin mi?
+		<usetemplate canceltext="Ä°ptal" name="yesnocancelbuttons" notext="Kaydetme" yestext="Kaydet"/>
+	</notification>
+	<notification name="ClassifiedInsufficientFunds">
+		İlan oluşturmak için yeterli fon yok.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="DeleteAvatarPick">
+		Seçme &lt;nolink&gt;[PICK]&lt;/nolink&gt; silinsin mi?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="DeleteOutfits">
+		Seçili dış görünüm silinsin mi?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="PromptGoToEventsPage">
+		[SECOND_LIFE] etkinlikleri web sayfasına gidilsin mi?
+		<url name="url">
+			http://secondlife.com/events/
+		</url>
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="SelectProposalToView">
+		Lütfen görüntülemek için bir teklif seçin.
+	</notification>
+	<notification name="SelectHistoryItemToView">
+		Lütfen görüntülemek için bir geçmiş öğesi seçin.
+	</notification>
+	<notification name="CacheWillClear">
+		Önbellek, [APP_NAME] uygulamasını yeniden başlattıktan sonra temizlenecek.
+	</notification>
+	<notification name="CacheWillBeMoved">
+		Önbellek, [APP_NAME] uygulamasını yeniden başlattıktan sonra taşınacak.
+Not: Bu işlem önbelleği temizleyecek.
+	</notification>
+	<notification name="ChangeConnectionPort">
+		Port ayarları, [APP_NAME] uygulamasını yeniden başlattıktan sonra geçerli olur.
+	</notification>
+	<notification name="ChangeSkin">
+		Yeni dış katman [APP_NAME] uygulamasını yeniden başlattıktan sonra görüntülenecek.
+	</notification>
+	<notification name="ChangeLanguage">
+		Dil değişikliği, [APP_NAME] uygulamasını yeniden başlattıktan sonra geçerli olacak.
+	</notification>
+	<notification name="GoToAuctionPage">
+		Açık arttırma detaylarını görmek veya teklif vermek için [SECOND_LIFE] web sayfasına gidilsin mi?
+		<url name="url">
+			http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]
+		</url>
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="SaveChanges">
+		DeÄŸiÅŸiklikler Kaydedilsin mi?
+		<usetemplate canceltext="Ä°ptal" name="yesnocancelbuttons" notext="Kaydetme" yestext="Kaydet"/>
+	</notification>
+	<notification name="GestureSaveFailedTooManySteps">
+		Mimik kaydedilemedi.
+Bu mimikte çok fazla adım var.
+Bazı adımları çıkarıp yeniden kaydetmeyi deneyin.
+	</notification>
+	<notification name="GestureSaveFailedTryAgain">
+		Mimik kaydedilemedi.  Lütfen bir dakika sonra tekrar deneyin.
+	</notification>
+	<notification name="GestureSaveFailedObjectNotFound">
+		Nesne veya ilişkili nesne envanteri bulunamadığı için mimik kaydedilemedi.
+Nesne aralık dışında ya da silinmiş olabilir.
+	</notification>
+	<notification name="GestureSaveFailedReason">
+		Aşağıdaki nedenden dolayı, mimik kaydedilirken bir sorun oluştu: [REASON].  Lütfen mimiği kaydetmeyi daha sonra tekrar deneyin.
+	</notification>
+	<notification name="SaveNotecardFailObjectNotFound">
+		Nesne veya ilişkili nesne envanteri bulunamadığı için not kartı kaydedilemedi.
+Nesne aralık dışında ya da silinmiş olabilir.
+	</notification>
+	<notification name="SaveNotecardFailReason">
+		Aşağıdaki nedenden dolayı, not kartı kaydedilirken bir sorun oluştu: [REASON].  Lütfen not kartını kaydetmeyi daha sonra tekrar deneyin.
+	</notification>
+	<notification name="ScriptCannotUndo">
+		Komut dosyası sürümünüzdeki tüm değişiklikler geri alınamadı.
+Sunucunun son kaydedilmiş sürümünü yüklemek ister misiniz?
+(**Uyarı** Bu işlem geri alınamaz.)
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="SaveScriptFailReason">
+		Aşağıdaki nedenden dolayı, komut dosyası kaydedilirken bir sorun oluştu: [REASON].  Lütfen komut dosyasını kaydetmeyi daha sonra tekrar deneyin.
+	</notification>
+	<notification name="SaveScriptFailObjectNotFound">
+		İçinde olduğu nesne bulunamadığından komut dosyası kaydedilemiyor.
+Nesne aralık dışında ya da silinmiş olabilir.
+	</notification>
+	<notification name="SaveBytecodeFailReason">
+		Aşağıdaki nedenden dolayı, derlenen komut dosyası kaydedilirken bir sorun oluştu: [REASON].  Lütfen komut dosyasını kaydetmeyi daha sonra tekrar deneyin.
+	</notification>
+	<notification name="StartRegionEmpty">
+		Hata. Başlangıç Bölgeniz tanımlanmamış.
+Lütfen Başlangıç Konumu kutusuna Bölge adını yazın ya da Son Konumum veya Ana Konumumu Başlangıç Konumu olarak seçin.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="CouldNotStartStopScript">
+		Üzerinde bulunduğu nesne bulunamadığından komut dosyası başlatılamadı veya durdurulamadı.
+Nesne aralık dışında ya da silinmiş olabilir.
+	</notification>
+	<notification name="CannotDownloadFile">
+		Dosya karşıdan yüklenemiyor.
+	</notification>
+	<notification name="CannotWriteFile">
+		[[FILE]] dosyası yazılamıyor.
+	</notification>
+	<notification name="UnsupportedHardware">
+		Bilgisayarınızın [APP_NAME] uygulamasının minimum sistem gereksinimlerini karşılamadığını bildirmek durumundayız. Performans düşüklüğü yaşayabilirsiniz. Ne yazık ki, [SUPPORT_SITE] desteklenmeyen sistem yapılandırmaları için teknik destek verememektedir.
+
+Daha fazla bilgi için [_URL] adresini ziyaret etmek ister misiniz?
+		<url name="url">
+			http://www.secondlife.com/corporate/sysreqs.php
+		</url>
+		<usetemplate ignoretext="Bilgisayar donanımım desteklenmiyor" 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.
+(Ben &gt; Tercihler &gt; Grafikler).
+		<form name="form">
+			<ignore name="ignore" text="Grafik kartım tanımlanamadı."/>
+		</form>
+	</notification>
+	<notification name="DisplaySettingsNoShaders">
+		Grafik sürücüleri başlatılırken [APP_NAME] uygulaması kilitlendi.
+Sık görülen bazı sürücü hatalarından kaçınmak için Grafik Kalitesi Düşük olarak ayarlanacak. Bu işlem bazı grafik özelliklerini devre dışı bırakacak.
+Grafik kartı sürücülerinizi güncellemenizi öneririz.
+Grafik Kalitesi, Tercihler &gt; Grafikler sekmesinden yükseltilebilir.
+	</notification>
+	<notification name="RegionNoTerraforming">
+		[REGION] bölgesi yer şekillendirmeye izin vermiyor.
+	</notification>
+	<notification name="CannotCopyWarning">
+		Aşağıdaki öğeleri kopyalamak için gerekli izne sahip değilsiniz:
+[ITEMS]
+Bu öğeleri verdiğiniz takdirde envanterinizden çıkacaklar. Bu öğeleri teklif etmeyi gerçekten istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="CannotGiveItem">
+		Envanter öğesi verilemiyor.
+	</notification>
+	<notification name="TransactionCancelled">
+		Ä°ÅŸlem iptal edildi.
+	</notification>
+	<notification name="TooManyItems">
+		Tek bir envanter aktarımında 42 öğeden fazlası verilemez.
+	</notification>
+	<notification name="NoItems">
+		Seçili öğeleri aktarmak için gerekli izne sahip değilsiniz.
+	</notification>
+	<notification name="CannotCopyCountItems">
+		Seçili öğelerin [COUNT] tanesini kopyalamak için gerekli izne sahip değilsiniz. Bu öğeler envanterinizden çıkacak.
+Bu öğeleri vermeyi gerçekten istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="CannotGiveCategory">
+		Seçili klasörü aktarmak için gerekli izne sahip değilsiniz.
+	</notification>
+	<notification name="FreezeAvatar">
+		Bu avatar dondurulsun mu?
+Avatar geçici bir süre için hareket etme, sohbet etme veya dünya ile etkileşim kurma yeteneğini kullanamayacak.
+		<usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Çöz" yestext="Dondur"/>
+	</notification>
+	<notification name="FreezeAvatarFullname">
+		[AVATAR_NAME] dondurulsun mu?
+Avatar geçici bir süre için hareket etme, sohbet etme veya dünya ile etkileşim kurma yeteneğini kullanamayacak.
+		<usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Çöz" yestext="Dondur"/>
+	</notification>
+	<notification name="EjectAvatarFullname">
+		[AVATAR_NAME] arazinizden çıkarılsın mı?
+		<usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Çıkar ve Yasakla" yestext="Çıkar"/>
+	</notification>
+	<notification name="EjectAvatarNoBan">
+		Bu avatar arazinizden çıkarılsın mı?
+		<usetemplate name="okcancelbuttons" notext="İptal" yestext="Çıkar"/>
+	</notification>
+	<notification name="EjectAvatarFullnameNoBan">
+		[AVATAR_NAME] arazinizden çıkarılsın mı?
+		<usetemplate name="okcancelbuttons" notext="İptal" yestext="Çıkar"/>
+	</notification>
+	<notification name="EjectAvatarFromGroup">
+		[AVATAR_NAME] adlı kişiyi [GROUP_NAME] grubundan çıkardınız
+	</notification>
+	<notification name="AcquireErrorTooManyObjects">
+		ALMA HATASI: Çok fazla nesne seçilmiş.
+	</notification>
+	<notification name="AcquireErrorObjectSpan">
+		ALMA HATASI: Nesneler bir bölgenin kapsamı dışına yayılıyor.
+Lütfen alınacak tüm nesneleri aynı bölgeye taşıyın.
+	</notification>
+	<notification name="PromptGoToCurrencyPage">
+		[EXTRA]
+
+L$ satın alma ile ilgili bilgi edinmek için [_URL] adresine gidilsin mi?
+		<url name="url">
+			http://secondlife.com/app/currency/
+		</url>
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="UnableToLinkObjects">
+		Bu [COUNT] nesne birbirine bağlanamıyor.
+En fazla [MAX] nesneyi birbirine baÄŸlayabilirsiniz.
+	</notification>
+	<notification name="CannotLinkIncompleteSet">
+		Sadece tamamlanmış nesne kümelerini birbirine bağlayabilirsiniz ve birden fazla nesne seçmelisiniz.
+	</notification>
+	<notification name="CannotLinkModify">
+		Tüm nesneler üzerinde değişiklik yapma izniniz olmadığı için nesneler birbirine bağlanamıyor.
+
+Lütfen hiçbirinin kilitli olmadığından ve hepsine sahip olduğunuzdan emin olun.
+	</notification>
+	<notification name="CannotLinkDifferentOwners">
+		Nesnelerin hepsinin sahibi aynı olmadığı için nesneler birbirine bağlanamıyor.
+
+Lütfen seçili nesnelerin hepsine sahip olduğunuzdan emin olun.
+	</notification>
+	<notification name="NoFileExtension">
+		Aşağıdaki dosyanın dosya uzantısı yok: &apos;[FILE]&apos;
+
+Lütfen dosyanın doğru bir dosya uzantısına sahip olduğundan emin olun..
+	</notification>
+	<notification name="InvalidFileExtension">
+		Geçersiz dosya uzantısı [EXTENSION]
+Beklenen [VALIDS]
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="CannotUploadSoundFile">
+		Karşıya yüklenen ses dosyası okuma için açılamadı:
+[FILE]
+	</notification>
+	<notification name="SoundFileNotRIFF">
+		Dosya bir RIFF WAVE dosyası gibi görünmüyor:
+[FILE]
+	</notification>
+	<notification name="SoundFileNotPCM">
+		Dosya bir PCM WAVE ses dosyası gibi görünmüyor:
+[FILE]
+	</notification>
+	<notification name="SoundFileInvalidChannelCount">
+		Dosyada geçersiz sayıda kanal mevcut (mono ya da stereo olmalı):
+[FILE]
+	</notification>
+	<notification name="SoundFileInvalidSampleRate">
+		Dosya desteklenen bir örnek hızına sahip görünmüyor (44.1k olmalı):
+[FILE]
+	</notification>
+	<notification name="SoundFileInvalidWordSize">
+		Dosya desteklenen bir sözcük boyutuna sahip görünmüyor (8 veya 16 bit olmalı):
+[FILE]
+	</notification>
+	<notification name="SoundFileInvalidHeader">
+		WAV başlığında &apos;veri&apos; öbeği bulunamadı:
+[FILE]
+	</notification>
+	<notification name="SoundFileInvalidChunkSize">
+		WAV dosyasında yanlış öbek boyutu:
+[FILE]
+	</notification>
+	<notification name="SoundFileInvalidTooLong">
+		Ses dosyası çok uzun (En fazla 10 saniye olmalı):
+[FILE]
+	</notification>
+	<notification name="ProblemWithFile">
+		[FILE] dosyasında sorun oluştu:
+
+[ERROR]
+	</notification>
+	<notification name="CannotOpenTemporarySoundFile">
+		Geçici sıkıştırılmış ses dosyası yazma için açılamadı: [FILE]
+	</notification>
+	<notification name="UnknownVorbisEncodeFailure">
+		Şu dosyada bilinmeyen Vorbis kodlama arızası: [FILE]
+	</notification>
+	<notification name="CannotEncodeFile">
+		Şu dosya kodlanamıyor: [FILE]
+	</notification>
+	<notification name="CorruptedProtectedDataStore">
+		Kullanıcı adı ve şifre alanlarınızı dolduramıyoruz.  Bu durum ağ ayarlarınızı değiştirdiğinizde ortaya çıkabilir.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="CorruptResourceFile">
+		Bozuk kaynak dosyası: [FILE]
+	</notification>
+	<notification name="UnknownResourceFileVersion">
+		Şu dosyada bilinmeyen Linden kaynak dosyası sürümü mevcut: [FILE]
+	</notification>
+	<notification name="UnableToCreateOutputFile">
+		Çıkış dosyası oluşturulamıyor: [FILE]
+	</notification>
+	<notification name="DoNotSupportBulkAnimationUpload">
+		[APP_NAME] şu an için animasyon dosyalarının toplu olarak karşıya yüklenmesini desteklemiyor.
+	</notification>
+	<notification name="CannotUploadReason">
+		Aşağıdaki nedenden dolayı [FILE] dosyası karşıya yüklenemedi: [REASON]
+Lütfen daha sonra tekrar deneyin.
+	</notification>
+	<notification name="LandmarkCreated">
+		&quot;[LANDMARK_NAME]&quot; yer imini [FOLDER_NAME] klasörünüze eklediniz.
+	</notification>
+	<notification name="LandmarkAlreadyExists">
+		Bu konum için zaten bir yer iminiz var.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="CannotCreateLandmarkNotOwner">
+		Burada bir yer imi oluşturmazsınız, çünkü arazinin sahibi buna izin vermiyor.
+	</notification>
+	<notification name="CannotRecompileSelectObjectsNoScripts">
+		&apos;Yeniden derleme&apos; gerçekleştirilemiyor.
+Komut dosyası içeren bir nesne seçin.
+	</notification>
+	<notification name="CannotRecompileSelectObjectsNoPermission">
+		&apos;Yeniden derleme&apos; gerçekleştirilemiyor.
+
+Değişiklik yapma izniniz olan komut dosyaları içeren nesneler seçin.
+	</notification>
+	<notification name="CannotResetSelectObjectsNoScripts">
+		&apos;Sıfırlama&apos; gerçekleştirilemiyor.
+
+Komut dosyası içeren nesneler seçin.
+	</notification>
+	<notification name="CannotResetSelectObjectsNoPermission">
+		&apos;Sıfırlama&apos; gerçekleştirilemiyor.
+
+Değişiklik yapma izniniz olan komut dosyaları içeren nesneler seçin.
+	</notification>
+	<notification name="CannotOpenScriptObjectNoMod">
+		Değişiklik yapma izniniz olmadığından nesne içindeki komut dosyası açılamıyor.
+	</notification>
+	<notification name="CannotSetRunningSelectObjectsNoScripts">
+		Hiçbir komut dosyası &apos;çalışır&apos; durumuna ayarlanamıyor.
+
+Komut dosyası içeren nesneler seçin.
+	</notification>
+	<notification name="CannotSetRunningNotSelectObjectsNoScripts">
+		Hiçbir komut dosyası &apos;çalışmaz&apos; durumuna ayarlanamıyor.
+
+Komut dosyası içeren nesneler seçin.
+	</notification>
+	<notification name="NoFrontmostFloater">
+		Kaydedilecek en öndeki gezdirici yok.
+	</notification>
+	<notification name="SeachFilteredOnShortWords">
+		Arama sorgunuz değiştirildi ve çok kısa olan sözcükler kaldırıldı.
+
+Arama yapılan sorgu: [FINALQUERY]
+	</notification>
+	<notification name="SeachFilteredOnShortWordsEmpty">
+		Arama terimleriniz çok kısa olduğu için arama yapılmadı.
+	</notification>
+	<notification name="CouldNotTeleportReason">
+		Işınlama başarısız.
+[REASON]
+	</notification>
+	<notification name="invalid_tport">
+		Işınlama talebiniz işlenirken bir sorunla karşılaşıldı. Işınlanabilmek için yeniden oturum açmanız gerekebilir.
+Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
+	</notification>
+	<notification name="invalid_region_handoff">
+		Bölge değiştirme talebiniz işlenirken sorunla karşılaşıldı. Bölge değiştirmek için yeniden oturum açmanız gerekebilir.
+Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
+	</notification>
+	<notification name="blocked_tport">
+		Üzgünüz, ışınlama şu anda engellenmiş durumda. Bir dakika sonra tekrar deneyin.  Hala ışınlanamıyorsanız, sorunu çözmek için lütfen çıkış yapıp oturumu tekrar açın.
+	</notification>
+	<notification name="nolandmark_tport">
+		Üzgünüz fakat sistem yer imi hedef konumunu bulamadı.
+	</notification>
+	<notification name="timeout_tport">
+		Üzgünüz fakat sistem ışınlama bağlantısını tamamlayamadı.  Bir dakika sonra tekrar deneyin.
+	</notification>
+	<notification name="noaccess_tport">
+		Üzgünüz, bu ışınlanma hedef konumuna erişim hakkına sahip değilsiniz.
+	</notification>
+	<notification name="missing_attach_tport">
+		Aksesuarlarınız henüz ulaşmadı. Işınlanmayı tekrar denemeden önce bir kaç saniye bekleyin veya çıkış yapıp oturumu tekrar açın.
+	</notification>
+	<notification name="too_many_uploads_tport">
+		Bu bölgedeki varlık sırası şu anda yoğunluktan dolayı tıkalı olduğu için ışınlanma talebiniz zamanında gerçekleştirilemeyecek. Lütfen bir kaç dakika sonra tekrar deneyin veya yoğunluğu daha az olan bir bölge seçin.
+	</notification>
+	<notification name="expired_tport">
+		Üzgünüz fakat sistem ışınlanma talebinizi zamanında tamamlayamadı. Lütfen bir kaç dakika sonra tekrar deneyin.
+	</notification>
+	<notification name="expired_region_handoff">
+		Üzgünüz fakat sistem bölge değiştirme talebinizi zamanında tamamlayamadı. Lütfen bir kaç dakika sonra tekrar deneyin.
+	</notification>
+	<notification name="no_host">
+		Işınlanma hedef konumu bulunamıyor. Hedef konumu geçici bir süre için kullanılamıyor ya da artık mevcut değil. Lütfen bir kaç dakika sonra tekrar deneyin.
+	</notification>
+	<notification name="no_inventory_host">
+		Envanter sistemi şu anda kullanılamıyor.
+	</notification>
+	<notification name="CannotSetLandOwnerNothingSelected">
+		Arazi sahibi ayarlanamıyor:
+Seçili parsel yok.
+	</notification>
+	<notification name="CannotSetLandOwnerMultipleRegions">
+		Seçim aralığı birden fazla bölgeyi kapsadığından arazi mülkiyeti alınmaya zorlanamıyor. Lütfen daha küçük bir alan seçin ve tekrar deneyin.
+	</notification>
+	<notification name="ForceOwnerAuctionWarning">
+		Bu parsel açık arttırmada. Mülkiyeti almaya zorlama açık arttırmayı iptal edecek ve açık arttırma için teklif verme başlamışsa büyük olasılıkla bazı Sakinleri mutsuz edecek.
+Mülkiyeti almaya zorlanılsın mı?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="CannotContentifyNothingSelected">
+		İçerik eklenemedi:
+Seçili parsel yok.
+	</notification>
+	<notification name="CannotContentifyNoRegion">
+		İçerik eklenemedi:
+Seçili bölge yok.
+	</notification>
+	<notification name="CannotReleaseLandNothingSelected">
+		Arazi mülkiyeti bırakılamıyor:
+Seçili parsel yok.
+	</notification>
+	<notification name="CannotReleaseLandNoRegion">
+		Arazi mülkiyeti bırakılamıyor:
+Bölge bulunamıyor.
+	</notification>
+	<notification name="CannotBuyLandNothingSelected">
+		Arazi satın alınamıyor:
+Seçili parsel yok.
+	</notification>
+	<notification name="CannotBuyLandNoRegion">
+		Arazi satın alınamıyor:
+Arazinin içinde olduğu bölge bulunamıyor.
+	</notification>
+	<notification name="CannotCloseFloaterBuyLand">
+		[APP_NAME] bu işlemin tutarını hesaplamayı bitirmeden Arazi Satın Al penceresini kapatamazsınız.
+	</notification>
+	<notification name="CannotDeedLandNothingSelected">
+		Arazi devredilemiyor:
+Seçili parsel yok.
+	</notification>
+	<notification name="CannotDeedLandNoGroup">
+		Arazi devredilemiyor:
+Seçili Grup yok.
+	</notification>
+	<notification name="CannotDeedLandNoRegion">
+		Arazi devredilemiyor:
+Arazinin içinde olduğu bölge bulunamıyor.
+	</notification>
+	<notification name="CannotDeedLandMultipleSelected">
+		Arazi devredilemiyor:
+Birden fazla parsel seçili.
+
+Tek bir parsel seçmeyi deneyin.
+	</notification>
+	<notification name="CannotDeedLandWaitingForServer">
+		Arazi devredilemiyor:
+Sunucunun mülkiyet bilgisini bildirmesi bekleniyor.
+
+Lütfen tekrar deneyin.
+	</notification>
+	<notification name="CannotDeedLandNoTransfer">
+		Arazi devredilemiyor:
+[REGION] bölgesi arazi aktarımına izin vermiyor.
+	</notification>
+	<notification name="CannotReleaseLandWatingForServer">
+		Arazi mülkiyeti bırakılamıyor:
+Sunucunun parsel bilgilerini güncellemesi bekleniyor.
+
+Bir kaç saniye sonra tekrar deneyin.
+	</notification>
+	<notification name="CannotReleaseLandSelected">
+		Arazi mülkiyeti bırakılamıyor:
+Seçilen tüm parsellere sahip değilsiniz.
+
+Lütfen tek bir parsel seçin.
+	</notification>
+	<notification name="CannotReleaseLandDontOwn">
+		Arazi mülkiyeti bırakılamıyor:
+Bu parseli bırakma izniniz yok.
+Sahip olduğunuz parseller yeşille gösterilmiştir.
+	</notification>
+	<notification name="CannotReleaseLandRegionNotFound">
+		Arazi mülkiyeti bırakılamıyor:
+Arazinin içinde olduğu bölge bulunamıyor.
+	</notification>
+	<notification name="CannotReleaseLandNoTransfer">
+		Arazi mülkiyeti bırakılamıyor:
+[REGION] bölgesi arazi aktarımına izin vermiyor.
+	</notification>
+	<notification name="CannotReleaseLandPartialSelection">
+		Arazi mülkiyeti bırakılamıyor:
+Bırakmak için bir parselin tamamını seçmelisiniz.
+
+Parselin tamamını seçin veya önce parselinizi bölün.
+	</notification>
+	<notification name="ReleaseLandWarning">
+		[AREA] m² araziyi bırakmak üzeresiniz.
+Bu parseli bırakmak onu sahip olduğunuz arazi parçalarından çıkaracak fakat L$ kazandırmayacak.
+
+Arazi bırakılsın mı?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="CannotDivideLandNothingSelected">
+		Arazi bölünemiyor:
+
+Seçili parsel yok.
+	</notification>
+	<notification name="CannotDivideLandPartialSelection">
+		Arazi bölünemiyor:
+
+Parselin tamamını seçtiniz.
+Parselin bir bölümünü seçmeyi deneyin.
+	</notification>
+	<notification name="LandDivideWarning">
+		Bu parseli bölmek parseli iki parçaya ayıracak ve her bir parselin kendi ayarları olacak. İşlemden sonra bazı ayarlar varsayılan durumlarına sıfırlanacak.
+
+Arazi bölünsün mü?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="CannotDivideLandNoRegion">
+		Arazi bölünemiyor:
+Arazinin içinde olduğu bölge bulunamıyor.
+	</notification>
+	<notification name="CannotJoinLandNoRegion">
+		Arazi birleÅŸtirilemiyor:
+Arazinin içinde olduğu bölge bulunamıyor.
+	</notification>
+	<notification name="CannotJoinLandNothingSelected">
+		Arazi birleÅŸtirilemiyor:
+Seçili parsel yok.
+	</notification>
+	<notification name="CannotJoinLandEntireParcelSelected">
+		Arazi birleÅŸtirilemiyor:
+Sadece bir parsel seçtiniz.
+
+Lütfen iki parseldeki araziyi de seçin.
+	</notification>
+	<notification name="CannotJoinLandSelection">
+		Arazi birleÅŸtirilemiyor:
+Birden fazla parseli seçmelisiniz.
+
+Lütfen iki parseldeki araziyi de seçin.
+	</notification>
+	<notification name="JoinLandWarning">
+		Bu araziyi birleştirmek, seçili dikdörtgenle kesişen tüm parsellerden bir büyük parsel oluşturacak.
+Yeni parselin adını ve seçeneklerini yeniden ayarlamanız gerekecektir.
+
+Arazi birleÅŸtirilsin mi?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmNotecardSave">
+		Öğe kopyalanmadan veya görüntülenmeden önce bu not kartının kaydedilmesi gerekiyor. Not kartı kaydedilsin mi?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmItemCopy">
+		Bu öğe envanterinize kopyalansın mı?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal Et" yestext="Kopyala"/>
+	</notification>
+	<notification name="ResolutionSwitchFail">
+		Çözünürlük [RESX] x [RESY] değerine değiştirilemedi.
+	</notification>
+	<notification name="ErrorUndefinedGrasses">
+		Hata: Tanımlanmamış çimler: [SPECIES]
+	</notification>
+	<notification name="ErrorUndefinedTrees">
+		Hata: Tanımlanmamış ağaçlar: [SPECIES]
+	</notification>
+	<notification name="CannotSaveWearableOutOfSpace">
+		&apos;[NAME]&apos;, giyilebilir öğe dosyasına kaydedilemiyor.  Bilgisayarınızda yer açmalı ve giyilebilir öğeyi yeniden kaydetmelisiniz.
+	</notification>
+	<notification name="CannotSaveToAssetStore">
+		[NAME] ana varlık mağazasına kaydedilemedi.
+Bu genellikle geçici bir arızadır. Lütfen giyilebilir öğeyi birkaç dakika sonra yeniden özelleştirip kaydedin.
+	</notification>
+	<notification name="YouHaveBeenLoggedOut">
+		Üzgünüz. [SECOND_LIFE] oturumunuz kapandı.
+            [MESSAGE]
+		<usetemplate name="okcancelbuttons" notext="Çık" yestext="Anlık İleti ve Sohbeti Görüntüle"/>
+	</notification>
+	<notification name="OnlyOfficerCanBuyLand">
+		Grup adına arazi satın alınamıyor:
+Etkin grubunuz adına arazi satın almak için gerekli izne sahip değilsiniz.
+	</notification>
+	<notification label="ArkadaÅŸ Ekle" name="AddFriendWithMessage">
+		Arkadaşlar birbirini harita üzerinde izleme ve çevrimiçi durumları hakkında güncellemeler almak için birbirine izin verebilir.
+
+[NAME] adlı kişiye arkadaşlık teklif edilsin mi?
+		<form name="form">
+			<input name="message">
+				Arkadaşım olur musun?
+			</input>
+			<button name="Offer" text="Tamam"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification label="Dış Görünümü Kaydet" name="SaveOutfitAs">
+		Üzerimdekileri yeni bir Dış Görünüm olarak kaydet:
+		<form name="form">
+			<input name="message">
+				[DESC] (yeni)
+			</input>
+			<button name="OK" text="Tamam"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification label="Giyilebilir Öğeyi Kaydet" name="SaveWearableAs">
+		Öğeyi envanterime farklı kaydet:
+		<form name="form">
+			<input name="message">
+				[DESC] (yeni)
+			</input>
+			<button name="OK" text="Tamam"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification label="Dış Görünümü Yeniden Adlandır" name="RenameOutfit">
+		Yeni dış görünüm adı:
+		<form name="form">
+			<input name="new_name">
+				[NAME]
+			</input>
+			<button name="OK" text="Tamam"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification name="RemoveFromFriends">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; adlı kişiyi Arkadaş Listenizden çıkarmak istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="RemoveMultipleFromFriends">
+		Birden çok arkadaşınızı Arkadaş Listenizden çıkarmak istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="GodDeleteAllScriptedPublicObjectsByUser">
+		Komut dosyası içeren,
+** [AVATAR_NAME] ** adlı kişiye ait tüm nesneleri
+bu simdeki diğer tüm kişilerin arazisinden silmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="GodDeleteAllScriptedObjectsByUser">
+		Komut dosyası içeren,
+** [AVATAR_NAME] ** adlı kişiye ait TÜM nesneleri
+bu simdeki TÃœM ARAZÄ°LERDEN SÄ°LMEK istediÄŸinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="GodDeleteAllObjectsByUser">
+		Komut dosyası içeren veya içermeyen,
+** [AVATAR_NAME] ** adlı kişiye ait TÜM nesneleri
+bu simdeki TÃœM ARAZÄ°LERDEN SÄ°LMEK istediÄŸinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="BlankClassifiedName">
+		İlanınız için bir ad belirtmelisiniz.
+	</notification>
+	<notification name="MinClassifiedPrice">
+		Listeleme için ödenmesi gereken tutar en az L$ [MIN_PRICE] olmalıdır.
+
+Lütfen daha yüksek bir tutar girin.
+	</notification>
+	<notification name="ConfirmItemDeleteHasLinks">
+		Seçtiğiniz öğelerden en az birinin kendisine işaret eden bağlantılı öğeler var.  Bu öğeyi silerseniz, bağlantıları kalıcı olarak çalışmaz hale gelecek.  Önce bağlantıları silmeniz önemle tavsiye edilir.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmObjectDeleteLock">
+		Seçtiğiniz öğelerin en az birisi kilitli.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmObjectDeleteNoCopy">
+		Seçtiğiniz öğelerin en az birisi kopyalanamıyor.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmObjectDeleteNoOwn">
+		Seçtiğiniz öğelerin en az birisine sahip değilsiniz.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmObjectDeleteLockNoCopy">
+		Nesnelerden en az biri kilitli.
+Nesnelerden en az biri kopyalanamıyor.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmObjectDeleteLockNoOwn">
+		Nesnelerden en az biri kilitli.
+Nesnelerden en az birine sahip deÄŸilsiniz.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmObjectDeleteNoCopyNoOwn">
+		Nesnelerden en az biri kopyalanamıyor.
+Nesnelerden en az birine sahip deÄŸilsiniz.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
+		Nesnelerden en az biri kilitli.
+Nesnelerden en az biri kopyalanamıyor.
+Nesnelerden en az birine sahip deÄŸilsiniz.
+
+Bu öğeleri silmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmObjectTakeLock">
+		Nesnelerden en az biri kilitli.
+
+Bu öğeleri almak istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmObjectTakeNoOwn">
+		Aldığınız nesnelerin hepsine sahip değilsiniz.
+Devam ederseniz, nesnelerin sonraki sahibi için geçerli olan izinler uygulanacak ve büyük olasılıkla bu nesneler üzerinde değişiklik yapma ve onları kopyalama yeteneğiniz kısıtlanacak.
+
+Bu öğeleri almak istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmObjectTakeLockNoOwn">
+		Nesnelerden en az biri kilitli.
+Aldığınız nesnelerin hepsine sahip değilsiniz.
+Devam ederseniz, nesnelerin sonraki sahibi için geçerli olan izinler uygulanacak ve büyük olasılıkla bu nesneler üzerinde değişiklik yapma ve onları kopyalama yeteneğiniz kısıtlanacak.
+Ancak, mevcut seçimi yine de alabilirsiniz.
+
+Bu öğeleri almak istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="CantBuyLandAcrossMultipleRegions">
+		Seçim aralığı birden fazla bölgeyi kapsadığından arazi satın alınamıyor.
+
+Lütfen daha küçük bir alan seçin ve tekrar deneyin.
+	</notification>
+	<notification name="DeedLandToGroup">
+		Bu parseli devrettiğinizde grubun yeterli arazi kulanım kredisine sahip olması ve elinde tutması gerekmektedir.
+Arazinin satış bedeli sahibine geri ödenmez. Devredilen bir parsel satılırsa, satış bedeli grup üyeleri arasında eşit olarak bölünür.
+
+[AREA] m²&apos;lik bu arazi &apos;[GROUP_NAME]&apos; grubuna devredilsin mi?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="DeedLandToGroupWithContribution">
+		Bu parseli devrettiğinizde grubun yeterli arazi kulanım kredisine sahip olması ve elinde tutması gerekmektedir.
+Bu devir eş zamanlı olarak &apos;[NAME]&apos; adlı kişiden gruba arazi katkısı sağlayacaktır.
+Arazinin satış bedeli sahibine geri ödenmez. Devredilen bir parsel satılırsa, satış bedeli grup üyeleri arasında eşit olarak bölünür.
+
+[AREA] m²&apos;lik bu arazi &apos;[GROUP_NAME]&apos; grubuna devredilsin mi?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="DisplaySetToSafe">
+		Güvenli seçeneği seçtiğiniz için görüntüleme ayarları güvenli düzeye ayarlandı.
+	</notification>
+	<notification name="DisplaySetToRecommendedGPUChange">
+		Grafik kartınız değiştiği için görüntü ayarları tavsiye edilen seviyelere ayarlandı
+önceki: &apos;[LAST_GPU]&apos;
+sonraki: &apos;[THIS_GPU]&apos;
+	</notification>
+	<notification name="DisplaySetToRecommendedFeatureChange">
+		İşleme alt sistemindeki bir değişiklik nedeniyle görüntü ayarları tavsiye edilen seviyelere ayarlandı.
+	</notification>
+	<notification name="ErrorMessage">
+		[ERROR_MESSAGE]
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="AvatarMovedDesired">
+		İstediğiniz konum şu anda kullanılamıyor.
+Yakınındaki başka bir bölgeye taşındınız.
+	</notification>
+	<notification name="AvatarMovedLast">
+		Son konumunuz şu anda kullanılamıyor.
+Yakınındaki başka bir bölgeye taşındınız.
+	</notification>
+	<notification name="AvatarMovedHome">
+		Ana konumunuz şu anda kullanılamıyor.
+Yakınındaki başka bir bölgeye taşındınız.
+Yeni bir ana konum ayarlamak isteyebilirsiniz.
+	</notification>
+	<notification name="ClothingLoading">
+		Giysileriniz hala karşıdan yükleniyor.
+[SECOND_LIFE]&apos;ı normal şekilde kullanmaya devam edebilirsiniz, diğer insanlar sizi düzgün bir şekilde görecektir.
+		<form name="form">
+			<ignore name="ignore" text="Giysilerin karşıdan yüklenmesi uzun zaman alıyor"/>
+		</form>
+	</notification>
+	<notification name="FirstRun">
+		[APP_NAME] kurulumu tamamlandı.
+
+[SECOND_LIFE]&apos;ı ilk kez kullanıyorsanız, oturum açmadan önce bir hesap oluşturmalısınız.
+Yeni bir hesap oluşturmak için [http://join.secondlife.com secondlife.com] adresine dönülsün mü?
+		<usetemplate name="okcancelbuttons" notext="Devam" yestext="Yeni Hesap..."/>
+	</notification>
+	<notification name="LoginPacketNeverReceived">
+		Bağlantıda sorun yaşıyoruz. İnternet bağlantınızda ya da [SECOND_LIFE_GRID] uygulamasında bir problem olabilir.
+
+İnternet bağlantınızı kontrol edip bir kaç dakika sonra yeniden bağlanmayı deneyebilir, [SUPPORT_SITE] sayfasına gitmek için Yardım&apos;ı tıklatabilir ya da ana konumunuza ışınlanmak için Işınla&apos;yı tıklatabilirsiniz.
+		<url name="url">
+			http://secondlife.com/support/
+		</url>
+		<form name="form">
+			<button name="OK" text="Tamam"/>
+			<button name="Help" text="Yardım"/>
+			<button name="Teleport" text="Işınla"/>
+		</form>
+	</notification>
+	<notification name="WelcomeChooseSex">
+		Karakteriniz birazdan görünecek.
+
+Yürümek için ok tuşlarını kullanın.
+Yardım almak ya da [SECOND_LIFE] hakkında daha fazla bilgi edinmek için istediğiniz zaman F1 tuşuna basın.
+Lütfen bir erkek ya da kadın avatar seçin. Fikrinizi daha sonra değiştirebilirsiniz.
+		<usetemplate name="okcancelbuttons" notext="Kadın" yestext="Erkek"/>
+	</notification>
+	<notification name="CantTeleportToGrid">
+		Geçerli ağdan ([CURRENT_GRID]) farklı bir ağ ([GRID]) üzerinde bulunduğundan [SLURL] adresine ışınlanma gerçekleştirilemedi.  Lütfen görüntüleyicinizi kapatın ve tekrar deneyin.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="GeneralCertificateError">
+		Sunucu ile bağlantı kurulamadı.
+[REASON]
+
+Konu Adı: [SUBJECT_NAME_STRING]
+Verenin Adı: [ISSUER_NAME_STRING]
+Geçerlilik Başlangıcı: [VALID_FROM]
+Geçerlilik Bitişi: [VALID_TO]
+MD5 Parmak izi: [SHA1_DIGEST]
+SHA1 Parmak izi: [MD5_DIGEST]
+Anahtar Kullanımı: [KEYUSAGE]
+Uzatılmış Anahtar Kullanımı: [EXTENDEDKEYUSAGE]
+Konu Anahtarı Tanımlayıcısı: [SUBJECTKEYIDENTIFIER]
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="TrustCertificateError">
+		Bu sunucunun sertifika yetkilisi bilinmiyor.
+
+Sertifika Bilgileri:
+Konu Adı: [SUBJECT_NAME_STRING]
+Verenin Adı: [ISSUER_NAME_STRING]
+Geçerlilik Başlangıcı: [VALID_FROM]
+Geçerlilik Bitişi: [VALID_TO]
+MD5 Parmak izi: [SHA1_DIGEST]
+SHA1 Parmak izi: [MD5_DIGEST]
+Anahtar Kullanımı: [KEYUSAGE]
+Uzatılmış Anahtar Kullanımı: [EXTENDEDKEYUSAGE]
+Konu Anahtarı Tanımlayıcısı: [SUBJECTKEYIDENTIFIER]
+
+Bu yetkiliye güvenilsin mi?
+		<usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Güven"/>
+	</notification>
+	<notification name="NotEnoughCurrency">
+		[NAME] [PRICE] L$ Bunu yapmaya yetecek L$&apos;nız yok.
+	</notification>
+	<notification name="GrantedModifyRights">
+		[NAME] size kendi nesnelerini düzenleme izni verdi.
+	</notification>
+	<notification name="RevokedModifyRights">
+		[NAME] adlı kişinin nesneleri üzerinde değişiklik yapma ayrıcalığınız iptal edildi.
+	</notification>
+	<notification name="FlushMapVisibilityCaches">
+		Bu işlem bu bölgedeki harita önbelleklerini temizleyecek.
+Gerçekte bu sadece hata ayıklama için işe yarar.
+(İşlem sırasında 5 dakika bekleyin, herkes yeniden oturum açtıktan sonra haritaları güncellenecektir.)
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="BuyOneObjectOnly">
+		Bir seferde birden fazla nesne satın alınamıyor.  Lütfen sadece bir nesne seçin ve tekrar deneyin.
+	</notification>
+	<notification name="OnlyCopyContentsOfSingleItem">
+		Aynı anda birden fazla öğenin içeriği kopyalanamıyor.
+Lütfen sadece bir nesne seçin ve tekrar deneyin.
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="KickUsersFromRegion">
+		Bu bölgedeki tüm Sakinler ana konumlarına ışınlansın mı?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="EstateObjectReturn">
+		[USER_NAME] kullanıcısının sahip olduğu tüm nesneleri iade etmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="InvalidTerrainBitDepth">
+		Bölge dokuları ayarlanamadı:
+[TEXTURE_NUM] numaralı yüzey dokusu geçersiz bir bit derinliğine ([TEXTURE_BIT_DEPTH]) sahip.
+
+[TEXTURE_NUM] numaralı dokuyu 24 bit 512x512 veya daha küçük bir resimle değiştirin ve &quot;Uygula&quot; seçeneğini yeniden tıklatın.
+	</notification>
+	<notification name="InvalidTerrainSize">
+		Bölge dokuları ayarlanamadı:
+[TEXTURE_NUM] numaralı yüzey dokusu çok büyük ([TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]).
+
+[TEXTURE_NUM] numaralı dokuyu 24 bit 512x512 veya daha küçük bir resimle değiştirin ve &quot;Uygula&quot; seçeneğini yeniden tıklatın.
+	</notification>
+	<notification name="RawUploadStarted">
+		Karşıya yükleme başlatıldı. Bağlantı hızına bağlı olarak iki dakika kadar sürebilir.
+	</notification>
+	<notification name="ConfirmBakeTerrain">
+		Geçerli yüzeyi bu şekilde kaydetmeyi, yüzey yükseltme/alçaltma sınırları için merkez olarak kullanmayı ve &apos;Geri Çevir&apos; aracı için varsayılan olarak ayarlamayı gerçekten istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="MaxAllowedAgentOnRegion">
+		Sadece [MAX_AGENTS] tane Ä°zin Verilen Sakin belirleyebilirsiniz.
+	</notification>
+	<notification name="MaxBannedAgentsOnRegion">
+		Sadece [MAX_BANNED] tane Yasaklı Sakin belirleyebilirsiniz.
+	</notification>
+	<notification name="MaxAgentOnRegionBatch">
+		[NUM_ADDED] aracı ekleme girişimi başarısız oldu:
+[MAX_AGENTS] [LIST_TYPE] sınırı [NUM_EXCESS] birim aşıldı.
+	</notification>
+	<notification name="MaxAllowedGroupsOnRegion">
+		Sadece [MAX_GROUPS] tane Ä°zin Verilen Grup belirleyebilirsiniz.
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal Et" yestext="Kaydet"/>
+	</notification>
+	<notification name="MaxManagersOnRegion">
+		Sadece [MAX_MANAGER] tane Gayrimenkul Yöneticisi belirleyebilirsiniz.
+	</notification>
+	<notification name="OwnerCanNotBeDenied">
+		Gayrimenkul sahibi, gayrimenkulün &apos;Yasaklı Sakin&apos; listesine eklenemez.
+	</notification>
+	<notification name="CanNotChangeAppearanceUntilLoaded">
+		Giysi ve şekil yüklenene kadar görünüm değiştirilemez.
+	</notification>
+	<notification name="ClassifiedMustBeAlphanumeric">
+		İlanınızın adı A ile Z arasında bir harfle ya da bir sayıyla başlamalıdır.  Noktalama işaretleri kullanılamaz.
+	</notification>
+	<notification name="CantSetBuyObject">
+		Nesne Satın Al komutu ayarlanamadı, çünkü nesne satılık değil.
+Nesneyi satılık olarak ayarlayıp tekrar deneyin.
+	</notification>
+	<notification name="FinishedRawDownload">
+		İşlenmemiş yüzey dosyasının şu konuma karşıdan yüklenmesi tamamlandı:
+[DOWNLOAD_PATH].
+	</notification>
+	<notification name="DownloadWindowsMandatory">
+		[APP_NAME] uygulamasının yeni bir sürümü mevcut.
+[MESSAGE]
+[APP_NAME] uygulamasını kullanabilmek için bu güncellemeyi karşıdan yüklemelisiniz.
+		<usetemplate name="okcancelbuttons" notext="Çık" yestext="Karşıdan Yükle"/>
+	</notification>
+	<notification name="DownloadWindows">
+		[APP_NAME] uygulamasının güncellenmiş bir sürümü mevcut.
+[MESSAGE]
+Bu güncelleme zorunlu değil, fakat performans ve kararlılığı iyileştirmek için güncellemeyi yüklemenizi öneririz.
+		<usetemplate name="okcancelbuttons" notext="Devam" yestext="Karşıdan Yükle"/>
+	</notification>
+	<notification name="DownloadWindowsReleaseForDownload">
+		[APP_NAME] uygulamasının güncellenmiş bir sürümü mevcut.
+[MESSAGE]
+Bu güncelleme zorunlu değil, fakat performans ve kararlılığı iyileştirmek için güncellemeyi yüklemenizi öneririz.
+		<usetemplate name="okcancelbuttons" notext="Devam" yestext="Karşıdan Yükle"/>
+	</notification>
+	<notification name="DownloadLinuxMandatory">
+		[APP_NAME] uygulamasının yeni bir sürümü mevcut.
+[MESSAGE]
+[APP_NAME] uygulamasını kullanabilmek için bu güncellemeyi karşıdan yüklemelisiniz.
+		<usetemplate name="okcancelbuttons" notext="Çık" yestext="Karşıdan Yükle"/>
+	</notification>
+	<notification name="DownloadLinux">
+		[APP_NAME] uygulamasının güncellenmiş bir sürümü mevcut.
+[MESSAGE]
+Bu güncelleme zorunlu değil, fakat performans ve kararlılığı iyileştirmek için güncellemeyi yüklemenizi öneririz.
+		<usetemplate name="okcancelbuttons" notext="Devam" yestext="Karşıdan Yükle"/>
+	</notification>
+	<notification name="DownloadLinuxReleaseForDownload">
+		[APP_NAME] uygulamasının güncellenmiş bir sürümü mevcut.
+[MESSAGE]
+Bu güncelleme zorunlu değil, fakat performans ve kararlılığı iyileştirmek için güncellemeyi yüklemenizi öneririz.
+		<usetemplate name="okcancelbuttons" notext="Devam" yestext="Karşıdan Yükle"/>
+	</notification>
+	<notification name="DownloadMacMandatory">
+		[APP_NAME] uygulamasının yeni bir sürümü mevcut.
+[MESSAGE]
+[APP_NAME] uygulamasını kullanabilmek için bu güncellemeyi karşıdan yüklemelisiniz.
+
+Uygulamalar klasörünüze karşıdan yüklensin mi?
+		<usetemplate name="okcancelbuttons" notext="Çık" yestext="Karşıdan Yükle"/>
+	</notification>
+	<notification name="DownloadMac">
+		[APP_NAME] uygulamasının güncellenmiş bir sürümü mevcut.
+[MESSAGE]
+Bu güncelleme zorunlu değil, fakat performans ve kararlılığı iyileştirmek için güncellemeyi yüklemenizi öneririz.
+
+Uygulamalar klasörünüze karşıdan yüklensin mi?
+		<usetemplate name="okcancelbuttons" notext="Devam" yestext="Karşıdan Yükle"/>
+	</notification>
+	<notification name="DownloadMacReleaseForDownload">
+		[APP_NAME] uygulamasının güncellenmiş bir sürümü mevcut.
+[MESSAGE]
+Bu güncelleme zorunlu değil, fakat performans ve kararlılığı iyileştirmek için güncellemeyi yüklemenizi öneririz.
+
+Uygulamalar klasörünüze karşıdan yüklensin mi?
+		<usetemplate name="okcancelbuttons" notext="Devam" yestext="Karşıdan Yükle"/>
+	</notification>
+	<notification name="FailedUpdateInstall">
+		Görüntüleyici güncellemesi yüklenirken bir hata oluştu.
+Lütfen en son görüntüleyiciyi şu adresten karşıdan yükleyin ve kurun: 
+http://secondlife.com/download.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="FailedRequiredUpdateInstall">
+		Gerekli bir güncellemeyi yükleyemedik. 
+[APP_NAME] güncellenene kadar oturum açamayacaksınız.
+
+Lütfen en son görüntüleyiciyi şu adresten karşıdan yükleyin ve kurun: 
+http://secondlife.com/download.
+		<usetemplate name="okbutton" yestext="Çık"/>
+	</notification>
+	<notification name="UpdaterServiceNotRunning">
+		Second Life kurulumunuz için gerekli bir güncelleme var.
+
+Bu güncellemeyi http://www.secondlife.com/downloads adresinden karşıdan yükleyebilir
+veya ÅŸimdi kurabilirsiniz.
+		<usetemplate name="okcancelbuttons" notext="Second Life&apos;tan çık" yestext="Karşıdan yükle ve şimdi kur"/>
+	</notification>
+	<notification name="DownloadBackgroundTip">
+		[APP_NAME] kurulumunuz için bir güncellemeyi karşıdan yükledik.
+Sürüm [VERSION] [[RELEASE_NOTES_FULL_URL] Bu güncelleme hakkında ayrıntılı bilgi]
+		<usetemplate name="okcancelbuttons" notext="Sonra..." yestext="Şimdi kur ve [APP_NAME] uygulamasını yeniden başlat"/>
+	</notification>
+	<notification name="DownloadBackgroundDialog">
+		[APP_NAME] kurulumunuz için bir güncellemeyi karşıdan yükledik.
+Sürüm [VERSION] [[RELEASE_NOTES_FULL_URL] Bu güncelleme hakkında ayrıntılı bilgi]
+		<usetemplate name="okcancelbuttons" notext="Sonra..." yestext="Şimdi kur ve [APP_NAME] uygulamasını yeniden başlat"/>
+	</notification>
+	<notification name="RequiredUpdateDownloadedVerboseDialog">
+		Gerekli bir yazılım güncellemesini karşıdan yükledik.
+Sürüm [VERSION]
+
+Güncellemeyi kurmak için [APP_NAME] uygulamasını yeniden başlatmalısınız.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="RequiredUpdateDownloadedDialog">
+		Güncellemeyi kurmak için [APP_NAME] uygulamasını yeniden başlatmalısınız.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="DeedObjectToGroup">
+		Bu nesnenin devredilmesi grubun şunu yapmasına sebep olacak:
+* Nesneye ödenen L$&apos;nı almasına
+		<usetemplate ignoretext="Bir nesneyi bir gruba devretmeden önce doğrulama iste" name="okcancelignore" notext="İptal Et" yestext="Devret"/>
+	</notification>
+	<notification name="WebLaunchExternalTarget">
+		Bu içeriği görüntülemek için Web tarayıcınızı açmak istiyor musunuz?
+		<usetemplate ignoretext="Bir web sayfasını görüntülemek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="WebLaunchJoinNow">
+		Hesabınızı yönetmek için [http://secondlife.com/account/ Kontrol Paneli] adresine gidilsin mi?
+		<usetemplate ignoretext="Hesabımı yönetmek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="WebLaunchSecurityIssues">
+		Bir güvenlik sorununun nasıl bildireceği ile ilgili ayrıntıları öğrenmek için [SECOND_LIFE] Wiki&apos;yi aç.
+		<usetemplate ignoretext="Bir Güvenlik Sorununu bildirme şeklini öğrenmek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="WebLaunchQAWiki">
+		[SECOND_LIFE] Wiki&apos;nin Kalite Güvencesi sayfasını ziyaret edin.
+		<usetemplate ignoretext="Wiki Kalite Güvencesi sayfasını görüntülemek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="WebLaunchPublicIssue">
+		Hataları ve diğer sorunları bildirebileceğiniz [SECOND_LIFE] Kamuya Açık Sorun Takip sayfasını ziyaret edin.
+		<usetemplate ignoretext="Kamuya Açık Sorun Takip hizmetini kullanmak için tarayıcımı başlat" name="okcancelignore" notext="İptal Et" yestext="Sayfaya git"/>
+	</notification>
+	<notification name="WebLaunchSupportWiki">
+		En son haberler ve bilgiler için Resmi Linden Blog&apos;una git.
+		<usetemplate ignoretext="Blog sayfasını görüntülemek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="WebLaunchLSLGuide">
+		Komut dosyası yazma ile ilgili yardım almak için Komut Dosyası Yazma Kılavuzu&apos;nu açmak istiyor musunuz?
+		<usetemplate ignoretext="Komut Dosyası Yazma Kılavuzunu görüntülemek için tarayıcımı başlat" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="WebLaunchLSLWiki">
+		Komut dosyası yazma ile ilgili yardım almak için LSL Portal&apos;ını açmak istiyor musunuz?
+		<usetemplate ignoretext="LSL Portal&apos;ını görüntülemek için tarayıcımı başlat" name="okcancelignore" notext="İptal Et" yestext="Sayfaya git"/>
+	</notification>
+	<notification name="ReturnToOwner">
+		Seçili nesneleri kendi sahiplerine iade etmek istediğinize emin misiniz? Devredilmiş nesnelerin aktarılabilenleri önceki sahiplerine iade edilecektir.
+
+*UYARI* Bu eylem, devredilmiş nesnelerin aktarılamayanlarını silecektir!
+		<usetemplate ignoretext="Nesneleri sahiplerine iade etmeden önce doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="GroupLeaveConfirmMember">
+		Şu anda &lt;nolink&gt;[GROUP]&lt;/nolink&gt; grubunun bir üyesisiniz.
+Gruptan ayrılmak istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmKick">
+		Tüm Sakinleri GERÇEKTEN ağ dışına çıkarmak istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="İptal Et" yestext="Tüm Sakinleri Çıkar"/>
+	</notification>
+	<notification name="MuteLinden">
+		Üzgünüz, bir Linden çalışanını engelleyemezsiniz.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="CannotStartAuctionAlreadyForSale">
+		Satılığa çıkarılmış bir parsel için açık arttırma başlatamazsınız.  Açık arttırma başlatmak istediğinize eminseniz arazi satışını devre dışı bırakın.
+	</notification>
+	<notification label="Nesneyi ada göre engelleme başarısız" name="MuteByNameFailed">
+		Bu adı zaten engellediniz.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="RemoveItemWarn">
+		İzin veriliyor olsa da, içerikleri silmek nesneye zarar verebilir. Bu öğeyi silmek istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="CantOfferCallingCard">
+		Şu anda arama kartı verilemiyor. Lütfen biraz sonra tekrar deneyin.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="CantOfferFriendship">
+		Ş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>
+	<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.
+[NAME] sizi bir gruba üye olarak katılmaya davet etti.
+		<usetemplate name="okcancelbuttons" notext="Reddet" yestext="Katıl"/>
+	</notification>
+	<notification name="JoinedTooManyGroups">
+		Maksimum grup sayısına eriştiniz. Lütfen yeni bir gruba katılmadan ya da yeni bir grup oluşturmadan önce grupların bazılarından ayrılın.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="KickUser">
+		Bu Sakin hangi iletiyle çıkarılsın?
+		<form name="form">
+			<input name="message">
+				Bir yönetici oturumunuzu sonlandırdı.
+			</input>
+			<button name="OK" text="Tamam"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification name="KickAllUsers">
+		Şu anda ağ üzerinde yer alan herkes hangi iletiyle çıkarılsın?
+		<form name="form">
+			<input name="message">
+				Bir yönetici oturumunuzu sonlandırdı.
+			</input>
+			<button name="OK" text="Tamam"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification name="FreezeUser">
+		Bu Sakin hangi iletiyle dondurulsun?
+		<form name="form">
+			<input name="message">
+				Donduruldunuz. Hareket ya da sohbet edemezsiniz. Bir yönetici sizinle anlık ileti (Aİ) yoluyla iletişim kuracak.
+			</input>
+			<button name="OK" text="Tamam"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification name="UnFreezeUser">
+		Bu Sakin hangi iletiyle çözülsün?
+		<form name="form">
+			<input name="message">
+				Artık dondurulmuş durumda değilsiniz.
+			</input>
+			<button name="OK" text="Tamam"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification name="SetDisplayNameSuccess">
+		Merhaba [DISPLAY_NAME]!
+
+Aynı gerçek hayatta olduğu gibi, burada da herkesin yeni bir adı öğrenmesi biraz zaman alacaktır.  Lütfen nesnelerde, komut dosyalarında, arama vb. hizmetlerde [http://wiki.secondlife.com/wiki/Setting_your_display_name adınızın güncellenmesi için] birkaç gün süre tanıyın.
+	</notification>
+	<notification name="SetDisplayNameBlocked">
+		Üzgünüz, ekran adınızı değiştiremezsiniz. Bunun bir hata olduğunu düşünüyorsanız, lütfen destek ekibine başvurun.
+	</notification>
+	<notification name="SetDisplayNameFailedLength">
+		Üzgünüz, bu ad çok uzun.  Ekran adları maksimum [LENGTH] karakter olabilir.
+
+Lütfen daha kısa bir ad deneyin.
+	</notification>
+	<notification name="SetDisplayNameFailedGeneric">
+		Üzgünüz, ekran adınızı ayarlayamadık.  Lütfen daha sonra tekrar deneyin.
+	</notification>
+	<notification name="SetDisplayNameMismatch">
+		Girdiğiniz ekran adları birbiriyle eşleşmiyor. Lütfen yeniden girin.
+	</notification>
+	<notification name="AgentDisplayNameUpdateThresholdExceeded">
+		Üzgünüz, ekran adınızı değiştirebilmeniz için biraz daha beklemeniz gerekiyor.
+
+Bkz. http://wiki.secondlife.com/wiki/Setting_your_display_name
+
+Lütfen daha sonra tekrar deneyin.
+	</notification>
+	<notification name="AgentDisplayNameSetBlocked">
+		Üzgünüz, ekran adınızı ayarlayamadık çünkü kullanılması yasak olan bir kelime içeriyor.
+ 
+ Lütfen başka bir ad deneyin.
+	</notification>
+	<notification name="AgentDisplayNameSetInvalidUnicode">
+		Ayarlamak istediğiniz ekran adı geçersiz karakterler içeriyor.
+	</notification>
+	<notification name="AgentDisplayNameSetOnlyPunctuation">
+		Ekran adınız noktalama işaretlerinin dışında harfler de içermelidir.
+	</notification>
+	<notification name="DisplayNameUpdate">
+		[OLD_NAME] ([SLID]) artık [NEW_NAME] olarak ayarlandı.
+	</notification>
+	<notification name="OfferTeleport">
+		Aşağıdaki iletiyle konumunuza ışınlanma teklif edilsin mi?
+		<form name="form">
+			<input name="message">
+				[REGION] bölgesinde bana katılır mısın?
+			</input>
+			<button name="OK" text="Tamam"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification name="TooManyTeleportOffers">
+		[OFFERS] ışınlama teklif etmeye kalkıştınız, bu [LIMIT] sınırını aşıyor.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="OfferTeleportFromGod">
+		Sakin sizin konumunuza Yönetici Ayrıcalığı kullanılarak getirilsin mi?
+		<form name="form">
+			<input name="message">
+				[REGION] bölgesinde bana katıl
+			</input>
+			<button name="OK" text="Tamam"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification name="TeleportFromLandmark">
+		&lt;nolink&gt;[LOCATION]&lt;/nolink&gt; konumuna ışınlanmak istediğinize emin misiniz?
+		<usetemplate ignoretext="Bir yer imine ışınlanma istediğimde doğrulama iste" name="okcancelignore" notext="İptal Et" yestext="Işınla"/>
+	</notification>
+	<notification name="TeleportToPick">
+		[PICK] konumuna ışınlanılsın mı?
+		<usetemplate ignoretext="Seçme sekmesindeki bir konuma ışınlanma istediğimde doğrulama iste" name="okcancelignore" notext="İptal Et" yestext="Işınla"/>
+	</notification>
+	<notification name="TeleportToClassified">
+		[CLASSIFIED] konumuna ışınlanılsın mı?
+		<usetemplate ignoretext="İlanlardaki bir konuma ışınlanma istediğimde doğrulama iste" name="okcancelignore" notext="İptal Et" yestext="Işınla"/>
+	</notification>
+	<notification name="TeleportToHistoryEntry">
+		[HISTORY_ENTRY] konumuna ışınlanılsın mı?
+		<usetemplate ignoretext="Geçmiş içinde yer alan bir konuma ışınlanma istediğimde doğrulama iste" name="okcancelignore" notext="İptal Et" yestext="Işınla"/>
+	</notification>
+	<notification label="Gayrimenkulünüzdeki herkese ileti gönderme" name="MessageEstate">
+		Şu anda gayrimenkulünüzde bulunan herkese gönderilecek kısa bir duyuru yazın.
+		<form name="form">
+			<button name="OK" text="Tamam"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification label="Bir Linden Gayrimenkulünü değiştirme" name="ChangeLindenEstate">
+		Linden çalışanlarına ait bir gayrimenkulü (anakara, oryantasyon vb.) değiştirmek üzeresiniz.
+
+Bu, Sakinlerin deneyimlerini temelden etkileyebileceği için SON DERECE TEHLİKELİDİR. Anakara üzerinde, binlerce bölgeyi değiştirecek ve alan sunucusunu kesintiye uğratacaktır.
+
+Devam edilsin mi?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification label="Linden Gayrimenkulüne Erişimi değiştirme" name="ChangeLindenAccess">
+		Linden çalışanlarına ait bir gayrimenkul (anakara, oryantasyon vb.) için erişim listesini değiştirmek üzeresiniz.
+
+Bu işlem TEHLİKELİDİR ve sadece saldırıya açık nesnelerin/L$&apos;nın ağ içine/dışına aktarılmasını sağlamak için gerçekleştirilmelidir.
+Binlerce bölgeyi değiştirecek ve alan sunucusunu kesintiye uğratacaktır.
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification label="Gayrimenkul seç" name="EstateAllowedAgentAdd">
+		Sadece bu gayrimenkul için mi izin verilenler listesine eklensin, yoksa [ALL_ESTATES] için mi?
+		<usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+	</notification>
+	<notification label="Gayrimenkul seç" name="EstateAllowedAgentRemove">
+		Sadece bu gayrimenkul için mi izin verilenler listesinden çıkarılsın, yoksa [ALL_ESTATES] için mi?
+		<usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+	</notification>
+	<notification label="Gayrimenkul seç" name="EstateAllowedGroupAdd">
+		Sadece bu gayrimenkul için mi izin verilen grup listesine eklensin, yoksa [ALL_ESTATES] için mi?
+		<usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+	</notification>
+	<notification label="Gayrimenkul seç" name="EstateAllowedGroupRemove">
+		Sadece bu gayrimenkul için mi izin verilen grup listesinden çıkarılsın, yoksa [ALL_ESTATES] için mi?
+		<usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+	</notification>
+	<notification label="Gayrimenkul seç" name="EstateBannedAgentAdd">
+		Sadece bu gayrimenkul için mi erişim engellensin, yoksa [ALL_ESTATES] için mi?
+		<usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+	</notification>
+	<notification label="Gayrimenkul seç" name="EstateBannedAgentRemove">
+		Bu Sakin sadece bu gayrimenkul için mi yasaklı listesinden çıkarılsın, yoksa [ALL_ESTATES] için mi?
+		<usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+	</notification>
+	<notification label="Gayrimenkul seç" name="EstateManagerAdd">
+		Sadece bu gayrimenkul için mi gayrimenkul yöneticisi olarak eklensin, yoksa [ALL_ESTATES] için mi?
+		<usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+	</notification>
+	<notification label="Gayrimenkul seç" name="EstateManagerRemove">
+		Sadece bu gayrimenkul için mi gayrimenkul yöneticiliğinden çıkarılsın, yoksa [ALL_ESTATES] için mi?
+		<usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Tüm Gayrimenkuller" yestext="Bu Gayrimenkul"/>
+	</notification>
+	<notification label="Çıkarmayı Onayla" name="EstateKickUser">
+		[EVIL_USER] bu gayrimenkulden çıkarılsın mı?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="EstateChangeCovenant">
+		Gayrimenkul Sözleşmesini değiştirmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="RegionEntryAccessBlocked">
+		Erişkinlik Seviyesi ayarlarınızdan dolayı bu Bölgeye giremezsiniz. Bu sorun yaşınızı doğrulamak için gerekli bilgilerin eksik olmasından kaynaklanabilir.
+
+Lütfen en son Görüntüleyicinin yüklü olduğunu doğrulayın ve bu erişkinlik seviyesi ile erişilecek alanlar hakkında ayrıntılı bilgi edinmek için Bilgi Bankası&apos;nı ziyaret edin.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="RegionEntryAccessBlocked_KB">
+		Erişkinlik Seviyesi ayarlarınızdan dolayı bu bölgeye giremezsiniz.
+
+Erişkinlik Seviyeleri hakkında daha fazla bilgi edinmek için Bilgi Bankası&apos;nı ziyaret etmek ister misiniz?
+		<url name="url">
+			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
+		</url>
+		<usetemplate ignoretext="Erişkinlik Seviyesi ile ilgili kısıtlamalardan dolayı bu Bölgeye giremiyorum" name="okcancelignore" notext="Kapat" yestext="Bilgi Bankası&apos;na Git"/>
+	</notification>
+	<notification name="RegionEntryAccessBlocked_Notify">
+		Erişkinlik Seviyesi ayarlarınızdan dolayı bu bölgeye giremezsiniz.
+	</notification>
+	<notification name="RegionEntryAccessBlocked_Change">
+		Erişkinlik Seviyesi tercihlerinizden dolayı bu Bölgeye giremezsiniz.
+
+İstenilen bölgeye girmek için, lütfen erişkinlik Seviyesi tercihinizi değiştirin. Bu tercih [REGIONMATURITY] içerikli alanlar içinde arama yapabilmenizi ve bu alanlara erişebilmenizi sağlayacak. Değişiklikleri geri almak için, Ben &gt; Tercihler &gt; Genel sekmesine gidin.
+		<form name="form">
+			<button name="OK" text="Tercihi DeÄŸiÅŸtir"/>
+			<button name="Cancel" text="Kapat"/>
+			<ignore name="ignore" text="Seçtiğim Seviye tercihleri bir bölgeye girmemi engelliyor"/>
+		</form>
+	</notification>
+	<notification name="PreferredMaturityChanged">
+		Erişkinlik Seviyesi tercihiniz artık [RATING].
+	</notification>
+	<notification name="LandClaimAccessBlocked">
+		Erişkinlik Seviyesi ayarlarınızdan dolayı bu arazi üzerinde hak talebinde bulunamazsınız. Bu sorun yaşınızı doğrulamak için gerekli bilgilerin eksik olmasından kaynaklanabilir.
+
+Lütfen en son Görüntüleyicinin yüklü olduğunu doğrulayın ve bu erişkinlik seviyesi ile erişilecek alanlar hakkında ayrıntılı bilgi edinmek için Bilgi Bankası&apos;nı ziyaret edin.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="LandClaimAccessBlocked_KB">
+		Erişkinlik Seviyesi ayarlarınızdan dolayı bu arazi üzerinde hak talebinde bulunamazsınız.
+
+Erişkinlik Seviyeleri hakkında daha fazla bilgi edinmek için Bilgi Bankası&apos;nı ziyaret etmek ister misiniz?
+		<url name="url">
+			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
+		</url>
+		<usetemplate ignoretext="Erişkinlik Seviyesi ile ilgili kısıtlandırmalardan dolayı bu Arazi üzerinde hak talebinde bulunamıyorum." name="okcancelignore" notext="Kapat" yestext="Bilgi Bankası&apos;na Git"/>
+	</notification>
+	<notification name="LandClaimAccessBlocked_Notify">
+		Erişkinlik Seviyesi ayarlarınızdan dolayı bu arazi üzerinde hak talebinde bulunamazsınız.
+	</notification>
+	<notification name="LandClaimAccessBlocked_Change">
+		Erişkinlik Seviyesi tercihinizden dolayı bu arazi üzerinde hak talebinde bulunamazsınız.
+
+Erişkinlik Seviyesi tercihinizi şimdi yükseltmek ve araziye girebilmek için &apos;Tercihi Değiştir&apos; seçeneğini tıklatabilirsiniz. Böylece [REGIONMATURITY] içerikli alanlar içinde arama yapabilecek ve bu alanlara erişebileceksiniz. İleride bu ayarı eski haline döndürmek isterseniz, Ben &gt; Tercihler &gt; Genel sekmesine gidin.
+		<usetemplate ignoretext="Seçtiğim Seviye tercihi Arazi üzerinde hak talebinde bulunmamı engelliyor" name="okcancelignore" notext="Kapat" yestext="Tercihi Değiştir"/>
+	</notification>
+	<notification name="LandBuyAccessBlocked">
+		Erişkinlik Seviyesi ayarlarınızdan dolayı bu araziyi satın alamazsınız. Bu sorun yaşınızı doğrulamak için gerekli bilgilerin eksik olmasından kaynaklanabilir.
+
+Lütfen en son Görüntüleyicinin yüklü olduğunu doğrulayın ve bu erişkinlik seviyesi ile erişilecek alanlar hakkında ayrıntılı bilgi edinmek için Bilgi Bankası&apos;nı ziyaret edin.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="LandBuyAccessBlocked_KB">
+		Erişkinlik Seviyesi ayarlarınızdan dolayı bu araziyi satın alamazsınız.
+
+Erişkinlik Seviyeleri hakkında daha fazla bilgi edinmek için Bilgi Bankası&apos;nı ziyaret etmek ister misiniz?
+		<url name="url">
+			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview
+		</url>
+		<usetemplate ignoretext="Erişkinlik Seviyesi ile ilgili kısıtlandırmalardan dolayı bu Araziyi satın alamıyorum" name="okcancelignore" notext="Kapat" yestext="Bilgi Bankası&apos;na Git"/>
+	</notification>
+	<notification name="LandBuyAccessBlocked_Notify">
+		Erişkinlik Seviyesi ayarlarınızdan dolayı bu araziyi satın alamazsınız.
+	</notification>
+	<notification name="LandBuyAccessBlocked_Change">
+		Erişkinlik Seviyesi tercihinizden dolayı bu araziyi satın alamazsınız.
+
+Erişkinlik Seviyesi tercihinizi şimdi yükseltmek ve araziye girebilmek için &apos;Tercihi Değiştir&apos; seçeneğini tıklatabilirsiniz. Böylece [REGIONMATURITY] içerikli alanlar içinde arama yapabilecek ve bu alanlara erişebileceksiniz. İleride bu ayarı eski haline döndürmek isterseniz, Ben &gt; Tercihler &gt; Genel sekmesine gidin.
+		<usetemplate ignoretext="Seçtiğim Seviye tercihi Araziyi satın almamı engelliyor" name="okcancelignore" notext="Kapat" yestext="Tercihi Değiştir"/>
+	</notification>
+	<notification name="TooManyPrimsSelected">
+		Çok fazla prim seçilmiş. Lütfen [MAX_PRIM_COUNT] ya da daha az prim seçin ve tekrar deneyin
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="ProblemImportingEstateCovenant">
+		Gayrimenkul sözleşmesi içeriye aktarılırken problem oluştu.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="ProblemAddingEstateManager">
+		Yeni bir gayrimenkul yöneticisi eklenirken problem oluştu. Bir veya birden fazla gayrimenkulün yönetici listesi dolu olabilir.
+	</notification>
+	<notification name="ProblemAddingEstateGeneric">
+		Bu gayrimenkul listesine eklenirken problem oluştu. Bir veya birden fazla gayrimenkulün listesi dolu olabilir.
+	</notification>
+	<notification name="UnableToLoadNotecardAsset">
+		Not kartı varlığı şu anda yüklenemedi.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="NotAllowedToViewNotecard">
+		İstenen varlık kimliği ile ilişkili not karını görüntülemek için yeterli izniniz yok.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="MissingNotecardAssetID">
+		Not kartının varlık kimliği veri tabanında yer almıyor.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="PublishClassified">
+		Hatırla: İlan ücretleri iade edilmez.
+
+Şimdi L$ [AMOUNT] ödeyerek bu ilanı yayınlamak istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="SetClassifiedMature">
+		Bu ilan Orta Seviyede içerik barındırıyor mu?
+		<usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="SetGroupMature">
+		Bu grup Orta Seviyede içerik barındırıyor mu?
+		<usetemplate canceltext="İptal" name="yesnocancelbuttons" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification label="Yeniden başlatmayı onayla" name="ConfirmRestart">
+		Bu bölgeyi gerçekten 2 dakika sonra yeniden başlatmak istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification label="Bu bölgedeki herkese ileti gönderme" name="MessageRegion">
+		Bu bölgede bulunan herkese gönderilecek kısa bir duyuru yazın.
+		<form name="form">
+			<button name="OK" text="Tamam"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification label="Bölgenin Erişkinlik Seviyesi Değişti" name="RegionMaturityChange">
+		Bu bölgenin erişkinlik seviyesi güncellendi.
+Değişikliğin harita üzerine yansıtılması biraz zaman alabilir.
+
+Yetişkin bölgelerine girebilmek için, Sakinlerin yaş doğrulama ya da ödeme doğrulama yoluyla Doğrulanmış bir Hesaba sahip olmaları gerekmektedir.
+	</notification>
+	<notification label="Sesli Sohbet Sürüm Uyumsuzluğu" name="VoiceVersionMismatch">
+		[APP_NAME] uygulamasının bu sürümü bu bölgedeki Sesli Sohbet özelliği ile uyumlu değil. Sesli Sohbet özelliğinin düzgün bir şekilde çalışabilmesi için [APP_NAME] uygulamasını güncellemeniz gerekiyor.
+	</notification>
+	<notification label="Nesneler Satın Alınamıyor" name="BuyObjectOneOwner">
+		Farklı sahipleri olan nesneler aynı anda satın alınamaz.
+Lütfen sadece bir nesne seçin ve tekrar deneyin.
+	</notification>
+	<notification label="İçerikler Satın Alınamıyor" name="BuyContentsOneOnly">
+		Aynı anda birden fazla nesnenin içeriği satın alınamaz.
+Lütfen sadece bir nesne seçin ve tekrar deneyin.
+	</notification>
+	<notification label="İçerikler Satın Alınamıyor" name="BuyContentsOneOwner">
+		Farklı sahipleri olan nesneler aynı anda satın alınamaz.
+Lütfen sadece bir nesne seçin ve tekrar deneyin.
+	</notification>
+	<notification name="BuyOriginal">
+		Özgün nesne [OWNER] kullanıcısından L$ [PRICE] karşılığında satın alınsın mı?
+Nesnenin sahibi siz olacaksınız.
+Åžu iÅŸlemleri yapabileceksiniz:
+ DeÄŸiÅŸtirme: [MODIFYPERM]
+ Kopyalama: [COPYPERM]
+ Tekrar satma veya Verme: [RESELLPERM]
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="BuyOriginalNoOwner">
+		Özgün nesne L$ [PRICE] karşılığında satın alınsın mı?
+Nesnenin sahibi siz olacaksınız.
+Åžu iÅŸlemleri yapabileceksiniz:
+ DeÄŸiÅŸtirme: [MODIFYPERM]
+ Kopyalama: [COPYPERM]
+ Tekrar satma veya Verme: [RESELLPERM]
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="BuyCopy">
+		Bir kopyası [OWNER] kullanıcısından L$ [PRICE] karşılığında satın alınsın mı?
+Nesne envanterinize kopyalanacak.
+Åžu iÅŸlemleri yapabileceksiniz:
+ DeÄŸiÅŸtirme: [MODIFYPERM]
+ Kopyalama: [COPYPERM]
+ Tekrar satma veya Verme: [RESELLPERM]
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="BuyCopyNoOwner">
+		Bir kopyası L$ [PRICE] karşılığında satın alınsın mı?
+Nesne envanterinize kopyalanacak.
+Åžu iÅŸlemleri yapabileceksiniz:
+ DeÄŸiÅŸtirme: [MODIFYPERM]
+ Kopyalama: [COPYPERM]
+ Tekrar satma veya Verme: [RESELLPERM]
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="BuyContents">
+		İçerik [OWNER] kullanıcısından L$ [PRICE] karşılığında satın alınsın mı?
+İçerik envanterinize kopyalanacak.
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="BuyContentsNoOwner">
+		İçerik L$ [PRICE] karşılığında satın alınsın mı?
+İçerik envanterinize kopyalanacak.
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmPurchase">
+		Bu işlem şununla sonuçlanacak:
+[ACTION]
+
+Bu satın alma işlemine devam etmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmPurchasePassword">
+		Bu işlem şununla sonuçlanacak:
+[ACTION]
+
+Bu satın alma işlemine devam etmek istediğinize emin misiniz?
+Lütfen parolanızı yeniden girin ve Tamam&apos;ı tıklatın.
+		<form name="form">
+			<button name="ConfirmPurchase" text="Tamam"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification name="SetPickLocation">
+		Not:
+Bu seçmenin konumunu güncellediniz fakat diğer detaylar özgün değerlerini koruyacak.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="MoveInventoryFromObject">
+		&apos;Kopyalanamayan&apos; envanter öğeleri seçtiniz.
+Bu öğeler envanterinize taşınacak, kopyalanmayacak.
+
+Envanter öğesi/öğeleri taşınsın mı?
+		<usetemplate ignoretext="Bir nesneden &apos;kopyalanamayan&apos; öğeleri taşımadan önce beni uyar" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="MoveInventoryFromScriptedObject">
+		&apos;Kopyalanamayan&apos; envanter öğeleri seçtiniz. Bu öğeler envanterinize taşınacak, kopyalanmayacak.
+Bu nesnenin içinde komut dosyası bulunduğundan, bu öğelerin envanterinize taşınması komut dosyasının hatalı çalışmasına neden olabilir.
+
+Envanter öğesi/öğeleri taşınsın mı?
+		<usetemplate ignoretext="İçinde komut dosyası bulunan bir nesneyi parçalayabilecek &apos;kopyalanamayan&apos; öğeleri taşımadan önce beni uyar" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ClickActionNotPayable">
+		Uyarı: &apos;Nesne için ödeme yap&apos; tıklama eylemi ayarlanmış fakat sadece bir komut dosyası bir para() olayı ile eklenirse çalışacak.
+		<form name="form">
+			<ignore name="ignore" text="Para() komut dosyası içermeyen bir nesne oluştururken &apos;Nesne için ödeme yap&apos; eylemi ayarladım"/>
+		</form>
+	</notification>
+	<notification name="OpenObjectCannotCopy">
+		Bu nesne içinde kopyalama izniniz olan bir öğe yok.
+	</notification>
+	<notification name="WebLaunchAccountHistory">
+		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="ConfirmQuit">
+		Çıkmak istediğinize emin misiniz?
+		<usetemplate ignoretext="Çıkmadan önce doğrulama iste" name="okcancelignore" notext="Çıkma" yestext="Çık"/>
+	</notification>
+	<notification name="ConfirmRestoreToybox">
+		Bu eylem, varsayılan düğmelerinizi ve araç çubuklarınızı geri yükleyecek.
+
+Bu eylemi geri alamazsınız.
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmClearAllToybox">
+		Bu eylem ile tüm düğmeler araç kutusuna döner ve araç çubuklarınız boş olur.
+    
+Bu eylemi geri alamazsınız.
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="DeleteItems">
+		[QUESTION]
+		<usetemplate ignoretext="Öğeleri silmeden önce doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="HelpReportAbuseEmailLL">
+		[http://secondlife.com/corporate/tos.php Hizmet Sözleşmesi] ve [http://secondlife.com/corporate/cs.php Topluluk Standartları] ihlallerini bildirmek için bu aracı kullanın.
+
+Bildirilen tüm kötüye kullanımlar incelenir ve çözüme ulaştırılır.
+	</notification>
+	<notification name="HelpReportAbuseSelectCategory">
+		Lütfen bu kötüye kullanım bildirimi için bir kategori seçin.
+Kategori seçimi, kötüye kullanım bildirimlerini dosyalamamıza ve işleme almamıza yardımcı olmaktadır.
+	</notification>
+	<notification name="HelpReportAbuseAbuserNameEmpty">
+		Lütfen kötüye kullanan kişinin adını yazın.
+Doğru değerlerin girilmesi, kötüye kullanım bildirimlerini dosyalamamıza ve işleme almamıza yardımcı olmaktadır.
+	</notification>
+	<notification name="HelpReportAbuseAbuserLocationEmpty">
+		Lütfen kötüye kullanımın gerçekleştiği konumu yazın.
+Doğru değerlerin girilmesi, kötüye kullanım bildirimlerini dosyalamamıza ve işleme almamıza yardımcı olmaktadır.
+	</notification>
+	<notification name="HelpReportAbuseSummaryEmpty">
+		Lütfen kötüye kullanımın nasıl gerçekleştiğini özetleyin.
+Doğru bir özetin girilmesi, kötüye kullanım bildirimlerini dosyalamamıza ve işleme almamıza yardımcı olmaktadır.
+	</notification>
+	<notification name="HelpReportAbuseDetailsEmpty">
+		Lütfen gerçekleşen kötüye kullanımı ayrıntılı bir şekilde anlatın.
+Bildirdiğiniz olayın ayrıntıları ve adlar dahil olmak üzere olabildiğince detaylı bilgi verin.
+Doğru bir anlatım yapılması, kötüye kullanım bildirimlerini dosyalamamıza ve işleme almamıza yardımcı olmaktadır.
+	</notification>
+	<notification name="HelpReportAbuseContainsCopyright">
+		DeÄŸerli Second Life Sakinimiz,
+
+Fikri mülkiyet ihlali konusunda bir bildirim yapıyorsunuz. Konuyu doğru bir şekilde bildirdiğinizden emin olun:
+
+(1) Kötüye Kullanımı Bildirme Süreci. Bir Second Life Sakininin, CopyBot ya da benzeri bir kopyalama aracı kullanma vb. yollarla, fikri mülkiyet haklarını ihlal edecek şekilde [SECOND_LIFE]&apos;ın verdiği izinleri kötüye kullandığını düşünüyorsanız bir kötüye kullanım bildirimi sunabilirsiniz. Kötüye Kullanımla Mücadele Ekibi [SECOND_LIFE] [http://secondlife.com/corporate/tos.php Hizmet Sözleşmesi] veya [http://secondlife.com/corporate/cs.php Topluluk Standartları] kurallarını ihlal eden davranışları inceleyecek ve uygun disiplin cezalarını verecektir. Ancak, Kötüye Kullanımla Mücadele Ekibi, içeriğin [SECOND_LIFE] ortamından kaldırılma taleplerine yanıt vermeyecektir.
+
+(2) DMCA veya İçerik Kaldırma Süreci. İçeriğin [SECOND_LIFE] ortamından kaldırılmasını talep etmek için,  [http://secondlife.com/corporate/dmca.php DMCA İlkeleri]&apos;nde belirtildiği şekilde geçerli bir ihlal bildirimi sunmuş olmanız GEREKLİDİR.
+
+Kötüye kullanım bildirme sürecine devam etmek için, lütfen bu pencereyi kapatın ve bildiriminizi gönderme işlemini tamamlayın. &apos;CopyBot veya İzin İhlali&apos; kategorisini seçmeniz gerekebilir.
+
+Teşekkürler
+
+Linden Lab
+	</notification>
+	<notification name="FailedRequirementsCheck">
+		Aşağıda belirtilen gerekli bileşenler [FLOATER] içinde yok:
+[COMPONENTS]
+	</notification>
+	<notification label="Mevcut Aksesuarı Değiştir" name="ReplaceAttachment">
+		Vücudunuzdaki bu noktaya takılı bir nesne zaten mevcut.
+Bu nesneyi seçilen nesne ile değiştirmek istiyor musunuz?
+		<form name="form">
+			<ignore name="ignore" text="Mevcut aksesuarı seçilen öğe ile değiştir"/>
+			<button ignore="Otomatik Olarak DeÄŸiÅŸtir" name="Yes" text="Tamam"/>
+			<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.
+
+Bu işlemi tamamlamadan önce Meşgul durumundan çıkmak 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"/>
+		</form>
+	</notification>
+	<notification name="ConfirmDeleteProtectedCategory">
+		&apos;[FOLDERNAME]&apos; klasörü bir sistem klasörüdür. Sistem klasörlerini silmek kararsızlığa neden olabilir. Silmek istediğinize emin misiniz?
+		<usetemplate ignoretext="Bir sistem klasörünü silmeden önce doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmEmptyTrash">
+		Çöp kutunuzun içeriğini kalıcı olarak silmek istediğinize emin misiniz?
+		<usetemplate ignoretext="Envanter Çöp Kutusu klasörünü boşaltmadan önce doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmClearBrowserCache">
+		Seyahat, web ve arama geçmişinizi silmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmClearCache">
+		Görüntüleyici önbelleğinizi temizlemek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ConfirmClearCookies">
+		Çerezlerinizi silmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Evet"/>
+	</notification>
+	<notification name="ConfirmClearMediaUrlList">
+		Kayıtlı URL adreslerinizi silmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Evet"/>
+	</notification>
+	<notification name="ConfirmEmptyLostAndFound">
+		Kaybedip Bulduklarım klasörünüzün içeriğini kalıcı olarak silmek istediğinize emin misiniz?
+		<usetemplate ignoretext="Kaybedip Bulduğum envanterler klasörünü boşaltmadan önce doğrulama iste" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="CopySLURL">
+		Aşağıdaki SLurl adresi panonuza kopyalandı:
+ [SLURL]
+
+Diğer kişilerin bu konuma kolayca erişmesini sağlamak için bu adrese bir web sayfası üzerinden bağlantı verin veya herhangi bir web tarayıcısının adres çubuğuna yapıştırarak önce siz deneyin.
+		<form name="form">
+			<ignore name="ignore" text="SLurl adresi panoma kopyalandı"/>
+		</form>
+	</notification>
+	<notification name="WLSavePresetAlert">
+		Kayıtlı ön ayarın üzerine yazmak istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="WLNoEditDefault">
+		Varsayılan olarak ayarlanmış bir ön ayarı değiştiremez ve silemezsiniz.
+	</notification>
+	<notification name="WLMissingSky">
+		Bu gün döngüsü dosyası kayıp bir gökyüzü dosyasına başvuruda bulunuyor: [SKY].
+	</notification>
+	<notification name="WLRegionApplyFail">
+		Üzgünüz, bu ayarlar bölgeye uygulanamadı.  Bölgeden ayrılmak ve sonra geri dönmek sorunu çözebilir.  Gösterilen neden şuydu: [FAIL_REASON]
+	</notification>
+	<notification name="EnvCannotDeleteLastDayCycleKey">
+		Bu gün döngüsündeki son anahtar silinemedi çünkü boş bir gün döngünüz olamaz.  Son kalan anahtarı silmek ve yenisini oluşturmaya kalkışmak yerine bunu değiştirmelisiniz.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="DayCycleTooManyKeyframes">
+		Bu gün döngüsüne daha fazla anahtar kare ekleyemezsiniz.  [SCOPE] kapsamı gün döngüleri için maksimum anahtar kare sayısı [MAX] değerini aşamaz.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="EnvUpdateRate">
+		Ortam ayarlarınızı ancak her [WAIT] saniyede bir güncelleştirebilirsiniz.  En azından bu kadar bekleyin ve tekrar deneyin.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="PPSaveEffectAlert">
+		İşlem Sonrası Efekti mevcut. Hala üzerine yazmak istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="ChatterBoxSessionStartError">
+		[RECIPIENT] ile yeni bir sohbet oturumu başlatılamıyor.
+[REASON]
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="ChatterBoxSessionEventError">
+		[EVENT]
+[REASON]
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="ForceCloseChatterBoxSession">
+		[NAME] ile sürdürdüğünüz sohbet oturumunun kapatılması gerekiyor.
+[REASON]
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="Cannot_Purchase_an_Attachment">
+		Bir nesne bir avatarın üzerinde takılı iken onu satın alamazsınız.
+	</notification>
+	<notification label="Borç Alma İzni Talep Etme Hakkında" name="DebitPermissionDetails">
+		Bu talebi kabul etmek, bir komut dosyasına, hesabınızdan Linden doları (L$) alma konusunda sürekli bir izin verir. Bu izni iptal etmek için, nesne sahibi nesneyi silmeli ya da nesne içindeki komut dosyalarını yeniden ayarlamalıdır.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="AutoWearNewClothing">
+		Oluşturmak üzere olduğunuz giysiyi otomatik olarak giymek ister misiniz?
+		<usetemplate ignoretext="Görünümümü düzenlerken oluşturduğum giysiyi giy" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="NotAgeVerified">
+		Second Life içinde yetişkinlere yönelik içeriğe ve bölgelere erişmek için en az 18 yaşında olmalısınız. 18 yaşından büyük olduğunuzu onaylamak için lütfen yaş doğrulama sayfamızı ziyaret edin. 
+Bu adımda web tarayıcınızın başlatılacağına dikkat edin.
+
+[_URL]
+		<url name="url">
+			https://secondlife.com/my/account/verification.php
+		</url>
+		<usetemplate ignoretext="Yaşımı doğrulatmadım" name="okcancelignore" notext="İptal" yestext="Yaş Doğrulamasına Git"/>
+	</notification>
+	<notification name="Cannot enter parcel: no payment info on file">
+		Bu alanı ziyaret edebilmek için ödeme bilgilerinizin kayıtlı olması gerekir. [SECOND_LIFE] web sitesine gitmek ve bunu ayarlamak istiyor musunuz?
+
+[_URL]
+		<url name="url">
+			https://secondlife.com/account/
+		</url>
+		<usetemplate ignoretext="Ödeme bilgilerim kayıtlı değil" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="MissingString">
+		[STRING_NAME] dizesi strings.xml dosyasında yer almıyor.
+	</notification>
+	<notification name="SystemMessageTip">
+		[MESSAGE]
+	</notification>
+	<notification name="IMSystemMessageTip">
+		[MESSAGE]
+	</notification>
+	<notification name="Cancelled">
+		Ä°ptal Edildi
+	</notification>
+	<notification name="CancelledSit">
+		Oturma Ä°ptal Edildi
+	</notification>
+	<notification name="CancelledAttach">
+		Takma Ä°ptal Edildi
+	</notification>
+	<notification name="ReplacedMissingWearable">
+		Eksik giysi/vücut bölümü varsayılan ile değiştirildi.
+	</notification>
+	<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>
+	<notification name="AddSelfFriend">
+		Çok iyi biri olduğunuza eminiz fakat kendinizi arkadaş olarak ekleyemezsiniz.
+	</notification>
+	<notification name="UploadingAuctionSnapshot">
+		SL dünyası içinde ve web sitesinde yer alan anlık görüntüler karşıya yükleniyor...
+(Yaklaşık 5 dakika sürecektir.)
+	</notification>
+	<notification name="UploadPayment">
+		Karşıya yüklemek için L$ [AMOUNT] ödediniz.
+	</notification>
+	<notification name="UploadWebSnapshotDone">
+		Web sitesinde yer alan anlık görüntülerin karşıya yüklenmesi tamamlandı.
+	</notification>
+	<notification name="UploadSnapshotDone">
+		SL dünyası içinde yer alan anlık görüntülerin karşıya yüklenmesi tamamlandı.
+	</notification>
+	<notification name="TerrainDownloaded">
+		Terrain.raw karşıdan yüklendi
+	</notification>
+	<notification name="GestureMissing">
+		Hmm. [NAME] mimiği veri tabanında yok.
+	</notification>
+	<notification name="UnableToLoadGesture">
+		[NAME] mimiği karşıya yüklenemiyor.
+	</notification>
+	<notification name="LandmarkMissing">
+		Yer imi veri tabanında yok.
+	</notification>
+	<notification name="UnableToLoadLandmark">
+		Yer imi karşıya yüklenemiyor. Lütfen tekrar deneyin.
+	</notification>
+	<notification name="CapsKeyOn">
+		Caps Lock tuşunuz açık.
+Parolanızı yanlış yazmanıza sebep olabilir.
+	</notification>
+	<notification name="NotecardMissing">
+		Not kartı veri tabanında yok.
+	</notification>
+	<notification name="NotecardNoPermissions">
+		Bu not kartını görüntüleme izniniz yok.
+	</notification>
+	<notification name="RezItemNoPermissions">
+		Nesneyi oluşturmak için yetersiz izin.
+	</notification>
+	<notification name="IMAcrossParentEstates">
+		Ana gayrimenkuller arasında Aİ gönderilemiyor.
+	</notification>
+	<notification name="TransferInventoryAcrossParentEstates">
+		Ana gayrimenkuller arasında envanter aktarımı yapılamıyor.
+	</notification>
+	<notification name="UnableToLoadNotecard">
+		Not kartı karşıya yüklenemiyor.
+Lütfen tekrar deneyin.
+	</notification>
+	<notification name="ScriptMissing">
+		Komut dosyası veri tabanında yok.
+	</notification>
+	<notification name="ScriptNoPermissions">
+		Komut dosyasını görüntülemek için yetersiz izin.
+	</notification>
+	<notification name="UnableToLoadScript">
+		Komut dosyası karşıya yüklenemiyor. Lütfen tekrar deneyin.
+	</notification>
+	<notification name="IncompleteInventory">
+		Teklif etmek istediğiniz içeriğin tamamı henüz yerel olarak kullanılabilir değil. Lütfen bu öğeleri bir dakika içerisinde tekrar teklif etmeyi deneyin.
+	</notification>
+	<notification name="CannotModifyProtectedCategories">
+		KorunmuÅŸ kategorileri deÄŸiÅŸtiremezsiniz.
+	</notification>
+	<notification name="CannotRemoveProtectedCategories">
+		Korunmuş kategorileri kaldıramazsınız.
+	</notification>
+	<notification name="UnableToBuyWhileDownloading">
+		Nesne verileri karşıdan yüklenirken satın alınamıyor.
+Lütfen tekrar deneyin.
+	</notification>
+	<notification name="UnableToLinkWhileDownloading">
+		Nesne verileri karşıdan yüklenirken bağlanılamıyor.
+Lütfen tekrar deneyin.
+	</notification>
+	<notification name="CannotBuyObjectsFromDifferentOwners">
+		Aynı anda sadece bir kullanıcının sahip olduğu nesneleri satın alabilirsiniz.
+Lütfen tek bir nesne seçin.
+	</notification>
+	<notification name="ObjectNotForSale">
+		Bu nesne satılık değil.
+	</notification>
+	<notification name="EnteringGodMode">
+		Yönetici ayrıcalıklarına sahip moda giriliyor, seviye [LEVEL]
+	</notification>
+	<notification name="LeavingGodMode">
+		Yönetici ayrıcalıklarına sahip moddan çıkılıyor, seviye [LEVEL]
+	</notification>
+	<notification name="CopyFailed">
+		Bunu kopyalama izniniz yok.
+	</notification>
+	<notification name="InventoryAccepted">
+		[NAME] envanter teklifinizi aldı.
+	</notification>
+	<notification name="InventoryDeclined">
+		[NAME] envanter teklifinizi reddetti.
+	</notification>
+	<notification name="ObjectMessage">
+		[NAME]: [MESSAGE]
+	</notification>
+	<notification name="CallingCardAccepted">
+		Arama kartınız kabul edildi.
+	</notification>
+	<notification name="CallingCardDeclined">
+		Arama kartınız reddedildi.
+	</notification>
+	<notification name="TeleportToLandmark">
+		&apos;[NAME]&apos; gibi konumlara ışınlanmak için &quot;Yerler&quot; düğmesine tıklayın,
+    sonra açılan pencerede Yer İmleri sekmesini seçin. Herhangi bir
+    yer iminin üzerine tıklayarak bunu seçin ve ardından pencerenin en altındaki &apos;Işınla&apos; düğmesine tıklayın.
+    (Ayrıca yer imine çift tıklayabilir veya sağ tıklayarak
+    &apos;Işınla&apos; seçimini yapabilirsiniz.)
+	</notification>
+	<notification name="TeleportToPerson">
+		&apos;[NAME]&apos; gibi sakinlerle bağlantıya geçmek için &quot;Kişiler&quot; düğmesine tıklayın, açılan pencereden bir Sakin seçin ve sonra
+    pencerenin altında &apos;Anlık İleti&quot; üzerine tıklayın.
+    (Listede adlarına çift tıklayarak veya sağ tıklayıp &quot;Anlık İleti&quot;yi seçerek de bunu yapabilirsiniz.)
+	</notification>
+	<notification name="CantSelectLandFromMultipleRegions">
+		Sunucunun sınırları dışındaki arazi seçilemez.
+Daha küçük bir arazi parçası seçmeyi deneyin.
+	</notification>
+	<notification name="SearchWordBanned">
+		Arama sorgunuzdaki bazı kelimeler Topluluk Standartları&apos;nda belirtilen içerik kısıtlamaları nedeniyle aramaya dahil edilmedi.
+	</notification>
+	<notification name="NoContentToSearch">
+		Lütfen arama yapmak için en az bir içerik türü seçin (Genel, Orta Seviye veya Yetişkin)
+	</notification>
+	<notification name="SystemMessage">
+		[MESSAGE]
+	</notification>
+	<notification name="PaymentReceived">
+		[MESSAGE]
+	</notification>
+	<notification name="PaymentSent">
+		[MESSAGE]
+	</notification>
+	<notification name="PaymentFailure">
+		[MESSAGE]
+	</notification>
+	<notification name="EventNotification">
+		Etkinlik Bildirimi
+
+[NAME]
+[DATE]
+		<form name="form">
+			<button name="Details" text="Ayrıntl"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification name="TransferObjectsHighlighted">
+		Bu parsel üzerinde bulunan ve parseli satın alan kişiye aktarılacak olan tüm nesneler vurgulanmıştır.
+
+* Aktarılacak ağaç ve çimler vurgulanmamıştır.
+		<form name="form">
+			<button name="Done" text="Tamamlandı"/>
+		</form>
+	</notification>
+	<notification name="DeactivatedGesturesTrigger">
+		Aynı tetikleyiciye sahip mimikler devre dışı bırakıldı:
+[NAMES]
+	</notification>
+	<notification name="NoQuickTime">
+		Apple Quick Time yazılımı sisteminizde yüklü görünmüyor.
+Destekleyen parsellerde akış ortamını görüntülemek istiyorsanız [http://www.apple.com/quicktime QuickTime sitesine] gitmeli ve QuickTime Player&apos;ı yüklemelisiniz.
+	</notification>
+	<notification name="NoPlugin">
+		&quot;[MIME_TYPE]&quot; mime türüne uygun bir Ortam Eklentisi bulunamadı. Bu türdeki ortam dosyaları kullanılamayacak.
+	</notification>
+	<notification name="MediaPluginFailed">
+		Aşağıdaki Ortam Eklentisi arızalandı:
+  [PLUGIN]
+
+Sorun yaşamaya devam ederseniz lütfen eklentiyi yeniden yükleyin veya satıcı ile iletişim kurun.
+		<form name="form">
+			<ignore name="ignore" text="Bir Ortam Eklentisi çalıştırılamadı"/>
+		</form>
+	</notification>
+	<notification name="OwnedObjectsReturned">
+		Seçili arazi parseli üzerinde sahip olduğunuz nesneler envanterinize iade edildi.
+	</notification>
+	<notification name="OtherObjectsReturned">
+		[NAME] adlı kullanıcının sahip olduğu seçili arazi parseli üzerinde bulunan nesneler kullanıcının envanterine iade edildi.
+	</notification>
+	<notification name="OtherObjectsReturned2">
+		&apos;[NAME]&apos; adlı Sakinin sahip olduğu seçili arazi parseli üzerinde bulunan nesneler kendi sahiplerine iade edildi.
+	</notification>
+	<notification name="GroupObjectsReturned">
+		[GROUPNAME] ile paylaşılan seçili arazi parseli üzerinde bulunan nesneler kendi sahiplerinin envanterlerine iade edildi.
+Devredilmiş nesnelerin aktarılabilenleri önceki sahiplerine iade edildi.
+Gruba devredilen nesnelerden aktarılamayanlar silindi.
+	</notification>
+	<notification name="UnOwnedObjectsReturned">
+		Seçili parsel üzerinde size ait OLMAYAN nesneler kendi sahiplerine iade edildi.
+	</notification>
+	<notification name="ServerObjectMessage">
+		[NAME] adlı kişiden gelen ileti:
+&lt;nolink&gt;[MSG]&lt;/nolink&gt;
+	</notification>
+	<notification name="NotSafe">
+		Bu arazide hasar özelliği etkin.
+Burada zarar görebilirsiniz. Hayatınızı kaybederseniz ana konumunuza ışınlanacaksınız.
+	</notification>
+	<notification name="NoFly">
+		Bu alanda uçma özelliği devre dışı.
+Burada uçamazsınız.
+	</notification>
+	<notification name="PushRestricted">
+		Bu alan başkalarını dışarı itmeye izin vermiyor. Bu arazinin sahibi değilseniz başkalarını dışarı itemezsiniz.
+	</notification>
+	<notification name="NoVoice">
+		Bu alanda sesli sohbet özelliği devre dışı. Kimsenin konuşmasını duyamayacaksınız.
+	</notification>
+	<notification name="NoBuild">
+		Bu alanda inşa etme özelliği devre dışı. Burada nesne inşa edemez ve oluşturamazsınız.
+	</notification>
+	<notification name="SeeAvatars">
+		Bu parsel, avatarları ve metin sohbetini başka bir parselden saklar.   Parselin dışındaki diğer sakinleri göremezsiniz, dışardakiler de sizi göremez.  0. kanaldaki normal metin sohbeti de engellenmiştir.
+	</notification>
+	<notification name="ScriptsStopped">
+		Bir yönetici bu bölgedeki komut dosyalarını geçici olarak durdurdu.
+	</notification>
+	<notification name="ScriptsNotRunning">
+		Bu bölgede hiçbir komut dosyası çalışmıyor.
+	</notification>
+	<notification name="NoOutsideScripts">
+		Bu arazide dış komut dosyaları devre dışı.
+
+Arazi sahibine ait olanlar dışında hiçbir komut dosyası çalışmayacak.
+	</notification>
+	<notification name="ClaimPublicLand">
+		İçinde bulunduğunuz Bölgede sadece kamuya ait araziler üzerinde hak talebinde bulunabilirsiniz.
+	</notification>
+	<notification name="RegionTPAccessBlocked">
+		Erişkinlik Seviyesi ayarlarınızdan dolayı bu Bölgeye giremezsiniz. Yaşınızı doğrulatmanız ve/veya en son Görüntüleyici&apos;yi yüklemeniz gerekebilir.
+
+Lütfen bu erişkinlik Seviyesi ile erişilecek alanlar hakkında ayrıntılı bilgi edinmek için Bilgi Bankası&apos;na gidin.
+	</notification>
+	<notification name="URBannedFromRegion">
+		Bu bölgeye erişiminiz yasaklandı.
+	</notification>
+	<notification name="NoTeenGridAccess">
+		Hesabınız 18 yaş altı kullanıcılar için hazırlanmış olan ağa bağlanamıyor.
+	</notification>
+	<notification name="ImproperPaymentStatus">
+		Bu bölgeye girmek için gerekli ödeme durumuna sahip değilsiniz.
+	</notification>
+	<notification name="MustGetAgeRgion">
+		Bu bölgeye girebilmek için yaş doğrulamanızın yapılmış olması gerekir.
+	</notification>
+	<notification name="MustGetAgeParcel">
+		Bu parsele girebilmek için yaş doğrulamanızın yapılmış olması gerekir.
+	</notification>
+	<notification name="NoDestRegion">
+		Seçili hedef bölge yok.
+	</notification>
+	<notification name="NotAllowedInDest">
+		Hedef konuma girme izniniz yok.
+	</notification>
+	<notification name="RegionParcelBan">
+		Bölge değiştirerek yasaklı bir parsele giriş yapamazsınız. Başka bir yol deneyin.
+	</notification>
+	<notification name="TelehubRedirect">
+		Bir ışınlanma istasyonuna yeniden yönlendirildiniz.
+	</notification>
+	<notification name="CouldntTPCloser">
+		Hedef konuma daha yakın bir bölgeye ışınlanılamadı.
+	</notification>
+	<notification name="TPCancelled">
+		Işınlanma iptal edildi.
+	</notification>
+	<notification name="FullRegionTryAgain">
+		Girmeye çalıştığınız bölge şu anda dolu.
+Lütfen biraz sonra tekrar deneyin.
+	</notification>
+	<notification name="GeneralFailure">
+		Genel arıza.
+	</notification>
+	<notification name="RoutedWrongRegion">
+		Yanlış bölgeye yönlendirildi. Lütfen tekrar deneyin.
+	</notification>
+	<notification name="NoValidAgentID">
+		Geçerli bir aracı kimliği yok.
+	</notification>
+	<notification name="NoValidSession">
+		Geçerli bir oturum kimliği yok.
+	</notification>
+	<notification name="NoValidCircuit">
+		Geçerli bir devre kodu yok.
+	</notification>
+	<notification name="NoValidTimestamp">
+		Geçerli bir zaman damgası yok.
+	</notification>
+	<notification name="NoPendingConnection">
+		Beklemedeki bağlantı oluşturulamıyor.
+	</notification>
+	<notification name="InternalUsherError">
+		Aracı öncüsüne bağlanılmaya çalışılırken dahili bir hata oluştu.
+	</notification>
+	<notification name="NoGoodTPDestination">
+		Bu bölgede iyi bir ışınlanma hedef konumu bulunamıyor.
+	</notification>
+	<notification name="InternalErrorRegionResolver">
+		Bölge çözümleyicisi etkinleştirilmeye çalışılırken dahili bir hata oluştu.
+	</notification>
+	<notification name="NoValidLanding">
+		Geçerli bir iniş noktası bulunamadı.
+	</notification>
+	<notification name="NoValidParcel">
+		Geçerli bir parsel bulunamadı.
+	</notification>
+	<notification name="ObjectGiveItem">
+		Sahibinin [NAME_SLURL] olduğu, &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; adındaki bir nesne size [OBJECTTYPE] türündeki bu nesneyi verdi:
+&lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;
+		<form name="form">
+			<button name="Keep" text="Sakla"/>
+			<button name="Discard" text="At"/>
+			<button name="Mute" text="Sahibi Engelle"/>
+		</form>
+	</notification>
+	<notification name="OwnObjectGiveItem">
+		&lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; adındaki nesneniz size [OBJECTTYPE] türündeki bu nesneyi verdi:
+&lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;
+		<form name="form">
+			<button name="Keep" text="Sakla"/>
+			<button name="Discard" text="At"/>
+		</form>
+	</notification>
+	<notification name="UserGiveItem">
+		[NAME_SLURL] size [OBJECTTYPE] türündeki nesneyi verdi:
+[ITEM_SLURL]
+		<form name="form">
+			<button name="Show" text="Göster"/>
+			<button name="Discard" text="At"/>
+			<button name="Mute" text="Engelle"/>
+		</form>
+	</notification>
+	<notification name="GodMessage">
+		[NAME]
+
+[MESSAGE]
+	</notification>
+	<notification name="JoinGroup">
+		[MESSAGE]
+		<form name="form">
+			<button name="Join" text="Katıl"/>
+			<button name="Decline" text="Reddet"/>
+			<button name="Info" text="Bilgi"/>
+		</form>
+	</notification>
+	<notification name="TeleportOffered">
+		[NAME_SLURL] size kendi konumuna ışınlanmayı teklif etti:
+
+[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
+		<form name="form">
+			<button name="Teleport" text="Işınla"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification name="TeleportOfferSent">
+		Işınlanma teklifi [TO_NAME] adlı kişiye gönderildi
+	</notification>
+	<notification name="GotoURL">
+		[MESSAGE]
+[URL]
+		<form name="form">
+			<button name="Later" text="Sonra"/>
+			<button name="GoNow..." text="Åžimdi Git..."/>
+		</form>
+	</notification>
+	<notification name="OfferFriendship">
+		[NAME_SLURL] arkadaşlık teklif ediyor.
+
+[MESSAGE]
+
+(Varsayılan olarak, birbirinizin çevrimiçi olduğunu görebileceksiniz.)
+		<form name="form">
+			<button name="Accept" text="Kabul Et"/>
+			<button name="Decline" text="Reddet"/>
+		</form>
+	</notification>
+	<notification name="FriendshipOffered">
+		[TO_NAME] adlı kişiye arkadaşlık teklif ettiniz
+	</notification>
+	<notification name="OfferFriendshipNoMessage">
+		[NAME_SLURL] arkadaşlık teklif ediyor.
+
+(Varsayılan olarak, birbirinizin çevrimiçi olduğunu görebileceksiniz.)
+		<form name="form">
+			<button name="Accept" text="Kabul Et"/>
+			<button name="Decline" text="Reddet"/>
+		</form>
+	</notification>
+	<notification name="FriendshipAccepted">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; arkadaşlık teklifinizi kabul etti.
+	</notification>
+	<notification name="FriendshipDeclined">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; arkadaşlık teklifinizi reddetti.
+	</notification>
+	<notification name="FriendshipAcceptedByMe">
+		Arkadaşlık teklifi kabul edildi.
+	</notification>
+	<notification name="FriendshipDeclinedByMe">
+		Arkadaşlık teklifi reddedildi.
+	</notification>
+	<notification name="OfferCallingCard">
+		[NAME] size arama kartı teklif ediyor.
+Kabul ettiğiniz takdirde, bu Sakine hızlı bir şekilde Aİ gönderebilmeniz için envanterinize bir yer imi eklenecek.
+		<form name="form">
+			<button name="Accept" text="Kabul Et"/>
+			<button name="Decline" text="Reddet"/>
+		</form>
+	</notification>
+	<notification name="RegionRestartMinutes">
+		Bu bölge [MINUTES] dakika içinde yeniden başlatılacak.
+Bu bölgede kalmaya devam ederseniz oturumunuz sonlandırılacak.
+	</notification>
+	<notification name="RegionRestartSeconds">
+		Bu bölge [SECONDS] saniye içinde yeniden başlatılacak.
+Bu bölgede kalmaya devam ederseniz oturumunuz sonlandırılacak.
+	</notification>
+	<notification name="LoadWebPage">
+		[URL] web sayfası yüklensin mi?
+
+[MESSAGE]
+
+Åžu nesneden: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, sahibi: [NAME]?
+		<form name="form">
+			<button name="Gotopage" text="Sayfaya git"/>
+			<button name="Cancel" text="Ä°ptal"/>
+		</form>
+	</notification>
+	<notification name="FailedToFindWearableUnnamed">
+		[TYPE] veri tabanında bulunamadı.
+	</notification>
+	<notification name="FailedToFindWearable">
+		[DESC] adlı [TYPE] veri tabanında bulunamadı.
+	</notification>
+	<notification name="InvalidWearable">
+		Giymeye çalıştığınız öğe Görüntüleyicinizin okuyamadığı bir özellik kullanıyor. Bu öğeyi giymek için lütfen [APP_NAME] sürümünüzü yükseltin.
+	</notification>
+	<notification name="ScriptQuestion">
+		&apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, &apos;[NAME]&apos; adlı kişiye ait bir nesne, şunu yapmak istiyor:
+
+[QUESTIONS]
+Kabul ediyor musunuz?
+		<form name="form">
+			<button name="Yes" text="Evet"/>
+			<button name="No" text="Hayır"/>
+			<button name="Mute" text="Engelle"/>
+		</form>
+	</notification>
+	<notification name="ScriptQuestionCaution">
+		&apos;[NAME]&apos; adlı kişiye ait &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos; adındaki bir nesne şunu yapmak istiyor:
+
+[QUESTIONS]
+Bu nesneye ya da onu oluşturan kişiye güvenmiyorsanız, bu talebi reddetmelisiniz.
+
+Talep kabul edilsin mi?
+		<form name="form">
+			<button name="Grant" text="Kabul Et"/>
+			<button name="Deny" text="Reddet"/>
+			<button name="Details" text="Ayrıntılar..."/>
+		</form>
+	</notification>
+	<notification name="ScriptDialog">
+		[NAME] adlı kişiye ait &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
+[MESSAGE]
+		<form name="form">
+			<button name="Mute" text="Engelle"/>
+			<button name="Ignore" text="Yok say"/>
+		</form>
+	</notification>
+	<notification name="ScriptDialogGroup">
+		[GROUPNAME] grubuna ait &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
+[MESSAGE]
+		<form name="form">
+			<button name="Mute" text="Engelle"/>
+			<button name="Ignore" text="Yok say"/>
+		</form>
+	</notification>
+	<notification name="BuyLindenDollarSuccess">
+		Ödeme yaptığınız için teşekkürler!
+
+İşlem tamamlandığında L$ bakiyeniz güncellenecektir. İşlem 20 dakikadan daha uzun sürerse, işlem iptal edilebilir. Bu durumda ödenen miktar US$ bakiyenize iade edilecektir.
+
+Ödemenin durumunu [http://secondlife.com/account/ Kontrol Paneli] üzerinde İşlem Geçmişi sayfanızdan kontrol edebilirsiniz.
+	</notification>
+	<notification name="FirstOverrideKeys">
+		Hareket tuşlarınız şu anda bir nesnenin kontrolünde.
+Ok tuşlarını ya da AWSD tuşlarını deneyin.
+Bazı nesneleri (örneğin silahları) kullanmak için fare üzerinden görünüme geçmeniz gerekir.
+Bunu yapmak için &apos;M&apos; tuşuna basın.
+	</notification>
+	<notification name="FirstSandbox">
+		Burası korumalı bir alandır ve Sakinlerin inşa etmeyi öğrenmelerine yardımcı olmayı amaçlamaktadır.
+
+Burada inşa ettiğiniz şeyler burayı terk ettiğinizde silinir, bu sebeple sağ tıklatıp &apos;Al&apos; seçeneğini seçerek oluşturduğunuz şeyi envanterinize taşımayı unutmayın.
+	</notification>
+	<notification name="MaxListSelectMessage">
+		Bu listeden en fazla [MAX_SELECT] öğe seçebilirsiniz.
+	</notification>
+	<notification name="VoiceInviteP2P">
+		[NAME] sizi bir Sesli Sohbete davet ediyor.
+Katılmak için Kabul Et&apos;i, daveti geri çevirmek için ise Reddet&apos;i tıklatın. Arayan kişiyi engellemek için Engelle&apos;yi tıklatın.
+		<form name="form">
+			<button name="Accept" text="Kabul Et"/>
+			<button name="Decline" text="Reddet"/>
+			<button name="Mute" text="Engelle"/>
+		</form>
+	</notification>
+	<notification name="AutoUnmuteByIM">
+		[NAME] adlı kişiye bir anlık ileti gönderildi ve otomatik olarak engeli kaldırıldı.
+	</notification>
+	<notification name="AutoUnmuteByMoney">
+		[NAME] adlı kişiye para verildi ve otomatik olarak engeli kaldırıldı.
+	</notification>
+	<notification name="AutoUnmuteByInventory">
+		[NAME] adlı kişiye envanter teklif edildi ve otomatik olarak engeli kaldırıldı.
+	</notification>
+	<notification name="VoiceInviteGroup">
+		[NAME], [GROUP] grubu ile bir Sesli Sohbet&apos;e katıldı.
+Katılmak için Kabul Et&apos;i, daveti geri çevirmek için ise Reddet&apos;i tıklatın. Arayan kişiyi engellemek için Engelle&apos;yi tıklatın.
+		<form name="form">
+			<button name="Accept" text="Kabul Et"/>
+			<button name="Decline" text="Reddet"/>
+			<button name="Mute" text="Engelle"/>
+		</form>
+	</notification>
+	<notification name="VoiceInviteAdHoc">
+		[NAME] konferans yoluyla bir sesli sohbete katıldı.
+Katılmak için Kabul Et&apos;i, daveti geri çevirmek için ise Reddet&apos;i tıklatın. Arayan kişiyi engellemek için Engelle&apos;yi tıklatın.
+		<form name="form">
+			<button name="Accept" text="Kabul Et"/>
+			<button name="Decline" text="Reddet"/>
+			<button name="Mute" text="Engelle"/>
+		</form>
+	</notification>
+	<notification name="InviteAdHoc">
+		[NAME] sizi bir konferans görüşmesine davet ediyor.
+Sohbete katılmak için Kabul Et&apos;i, daveti geri çevirmek için ise Reddet&apos;i tıklatın. Arayan kişiyi engellemek için Engelle&apos;yi tıklatın.
+		<form name="form">
+			<button name="Accept" text="Kabul Et"/>
+			<button name="Decline" text="Reddet"/>
+			<button name="Mute" text="Engelle"/>
+		</form>
+	</notification>
+	<notification name="VoiceChannelFull">
+		Katılmaya çalıştığınız sesli arama [VOICE_CHANNEL_NAME] maksimum kapasitesine ulaştı. Lütfen daha sonra tekrar deneyin.
+	</notification>
+	<notification name="ProximalVoiceChannelFull">
+		Üzgünüz. Bu alan sesli sohbet için maksimum kapasitesini aştı. Lütfen başka bir alanda sesli sohbet yapmayı deneyin.
+	</notification>
+	<notification name="VoiceChannelDisconnected">
+		[VOICE_CHANNEL_NAME] ile bağlantınız kesildi. Şimdi Yakındaki bir Sesli Sohbete yeniden bağlanılacaksınız.
+	</notification>
+	<notification name="VoiceChannelDisconnectedP2P">
+		[VOICE_CHANNEL_NAME] aramayı sonlandırdı. Şimdi Yakındaki bir Sesli Sohbete yeniden bağlanılacaksınız.
+	</notification>
+	<notification name="P2PCallDeclined">
+		[VOICE_CHANNEL_NAME] aramanızı reddetti. Şimdi Yakındaki bir Sesli Sohbete yeniden bağlanılacaksınız.
+	</notification>
+	<notification name="P2PCallNoAnswer">
+		[VOICE_CHANNEL_NAME] aramanızı kabul etmek için müsait değil. Şimdi Yakındaki bir Sesli Sohbete yeniden bağlanılacaksınız.
+	</notification>
+	<notification name="VoiceChannelJoinFailed">
+		[VOICE_CHANNEL_NAME] ile bağlantı kurulamadı, lütfen daha sonra tekrar deneyin. Şimdi Yakındaki bir Sesli Sohbete yeniden bağlanılacaksınız.
+	</notification>
+	<notification name="VoiceLoginRetry">
+		Sizin için bir ses kanalı oluşturuyoruz. Bu işlem bir dakika kadar sürebilir.
+	</notification>
+	<notification name="VoiceEffectsExpired">
+		Abone olduğunuz Ses Şekillerinden birinin ya da daha fazlasının süresi dolmuş.
+Aboneliğinizi yenilemek için [[URL] burayı tıklatın].
+	</notification>
+	<notification name="VoiceEffectsExpiredInUse">
+		Etkin Ses Şeklinin süresi dolmuş, normal ses ayarlarınız uygulandı.
+Aboneliğinizi yenilemek için [[URL] burayı tıklatın].
+	</notification>
+	<notification name="VoiceEffectsWillExpire">
+		Abone olduğunuz Ses Şekillerinden birinin ya da daha fazlasının süresi [INTERVAL] gün içinde dolacak.
+Aboneliğinizi yenilemek için [[URL] burayı tıklatın].
+	</notification>
+	<notification name="VoiceEffectsNew">
+		Yeni Ses Şekilleri kullanılabilir!
+	</notification>
+	<notification name="Cannot enter parcel: not a group member">
+		Sadece belli bir grubun üyeleri bu alanı ziyaret edebilir.
+	</notification>
+	<notification name="Cannot enter parcel: banned">
+		Parsele giriş yapamazsınız, erişiminiz yasaklandı.
+	</notification>
+	<notification name="Cannot enter parcel: not on access list">
+		Parsele giriş yapamazsınız, erişim listesinde yer almıyorsunuz.
+	</notification>
+	<notification name="VoiceNotAllowed">
+		[VOICE_CHANNEL_NAME] kanalındaki sesli sohbete bağlanmak için gerekli izne sahip değilsiniz.
+	</notification>
+	<notification name="VoiceCallGenericError">
+		[VOICE_CHANNEL_NAME] kanalındaki sesli sohbete bağlanmaya çalışılırken bir hata oluştu. Lütfen daha sonra tekrar deneyin.
+	</notification>
+	<notification name="UnsupportedCommandSLURL">
+		Tıklattığınız SLurl desteklenmiyor.
+	</notification>
+	<notification name="BlockedSLURL">
+		Güvenilmeyen bir tarayıcıdan bir SLurl alındı ve güvenliğiniz için engellendi.
+	</notification>
+	<notification name="ThrottledSLURL">
+		Güvenilmeyen bir tarayıcıdan kısa bir süre içinde birden fazla SLurl alındı.
+Güvenliğiniz için birkaç saniye engellenecek.
+	</notification>
+	<notification name="IMToast">
+		[MESSAGE]
+		<form name="form">
+			<button name="respondbutton" text="Yanıtla"/>
+		</form>
+	</notification>
+	<notification name="ConfirmCloseAll">
+		Tüm Anlık İletileri kapatmak istediğinize emin misiniz?
+		<usetemplate ignoretext="Tüm Anlık İletileri kapatmadan önce doğrulama iste." name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification name="AttachmentSaved">
+		Aksesuar kaydedildi.
+	</notification>
+	<notification name="UnableToFindHelpTopic">
+		Bu öğe için yardım başlığı bulunamıyor.
+	</notification>
+	<notification name="ObjectMediaFailure">
+		Sunucu Hatası: Ortam güncelleme ya da alma başarısız oldu.
+&apos;[ERROR]&apos;
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="TextChatIsMutedByModerator">
+		Yazılı sohbetiniz moderatör tarafından engellendi.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="VoiceIsMutedByModerator">
+		Sesli sohbetiniz moderatör tarafından engellendi.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="UploadCostConfirmation">
+		Bu karşıya yükleme işleminin maliyeti L$[PRICE] olacak, karşıya yüklemeye devam etmek istiyor musunuz?
+		<usetemplate name="okcancelbuttons" notext="İptal" yestext="Karşıya Yükle"/>
+	</notification>
+	<notification name="ConfirmClearTeleportHistory">
+		Işınlanma geçmişinizi silmek istediğinize emin misiniz?
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="BottomTrayButtonCanNotBeShown">
+		Seçilen düğme şu anda gösterilemiyor.
+Yeterli yer olduğunda düğme gösterilecek.
+	</notification>
+	<notification name="ShareNotification">
+		Paylaşılacak sakinleri seç.
+	</notification>
+	<notification name="MeshUploadError">
+		[LABEL] karşıya yüklenemedi: [MESSAGE] [IDENTIFIER] 
+
+Ayrıntılar için günlük dosyasına bakın.
+	</notification>
+	<notification name="MeshUploadPermError">
+		Karşıya örgü yükleme izinleri talep edilirken hata oluştu.
+	</notification>
+	<notification name="RegionCapabilityRequestError">
+		Bölge özelliği &apos;[CAPABILITY]&apos; alınamadı.
+	</notification>
+	<notification name="ShareItemsConfirmation">
+		Aşağıdaki öğeleri paylaşmak istediğinize emin misiniz?
+
+&lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
+
+Paylaşmanın yapılacağı Sakinler:
+
+[RESIDENTS]
+		<usetemplate name="okcancelbuttons" notext="Ä°ptal" yestext="Tamam"/>
+	</notification>
+	<notification name="ItemsShared">
+		Öğeler başarılı bir şekilde paylaşıldı.
+	</notification>
+	<notification name="DeedToGroupFail">
+		Gruba devretme başarısız oldu.
+	</notification>
+	<notification name="ReleaseLandThrottled">
+		[PARCEL_NAME] parseli ÅŸu anda terkedilemez.
+	</notification>
+	<notification name="ReleasedLandWithReclaim">
+		[AREA] m² alana sahip &apos;[PARCEL_NAME]&apos; parseli serbest bırakıldı.
+
+Başkalarına satışa çıkarılmadan önce L$0 karşılığında geri almak için [RECLAIM_PERIOD] saat süreniz olacak.
+	</notification>
+	<notification name="ReleasedLandNoReclaim">
+		[AREA] m² alana sahip &apos;[PARCEL_NAME]&apos; parseli serbest bırakıldı.
+
+Artık herkes tarafından satın alınabilir.
+	</notification>
+	<notification name="AvatarRezNotification">
+		( [EXISTENCE] saniyedir hayatta )
+&apos;[NAME]&apos; adlı avatar [TIME] saniye sonra bulut şeklinden kurtuldu.
+	</notification>
+	<notification name="AvatarRezSelfBakedDoneNotification">
+		( [EXISTENCE] saniyedir hayatta )
+Dış görünümünüzün kaydedilmesi [TIME] saniye sonra tamamlandı.
+	</notification>
+	<notification name="AvatarRezSelfBakedUpdateNotification">
+		( [EXISTENCE] saniyedir hayatta )
+[TIME] saniye sonra görünümünüzün bir güncellemesini gönderdiniz.
+[STATUS]
+	</notification>
+	<notification name="AvatarRezCloudNotification">
+		( [EXISTENCE] saniyedir hayatta )
+&apos;[NAME]&apos; adlı avatar bulut şekline döndü.
+	</notification>
+	<notification name="AvatarRezArrivedNotification">
+		( [EXISTENCE] saniyedir hayatta )
+&apos;[NAME]&apos; adlı avatar göründü.
+	</notification>
+	<notification name="AvatarRezLeftCloudNotification">
+		( [EXISTENCE] saniyedir hayatta )
+&apos;[NAME]&apos; adlı avatar bulut şeklinde [TIME] saniye göründükten sonra ayrıldı.
+	</notification>
+	<notification name="AvatarRezEnteredAppearanceNotification">
+		( [EXISTENCE] saniyedir hayatta )
+&apos;[NAME]&apos; adlı avatar görünüm moduna girdi.
+	</notification>
+	<notification name="AvatarRezLeftAppearanceNotification">
+		( [EXISTENCE] saniyedir hayatta )
+&apos;[NAME]&apos; adlı avatar görünüm modundan çıktı.
+	</notification>
+	<notification name="NoConnect">
+		[PROTOCOL] [HOSTID] kullanarak bağlantı kurma konusunda sorun yaşıyoruz.
+Lütfen ağ ve güvenlik duvarı ayarlarınızı kontrol edin.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="NoVoiceConnect">
+		Ses sunucunuz ile bağlantı kurma konusunda sorun yaşıyoruz.
+
+[HOSTID]
+
+Ses bağlantıları kullanılamayacak.
+Lütfen ağ ve güvenlik duvarı ayarlarınızı kontrol edin.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="AvatarRezLeftNotification">
+		( [EXISTENCE] saniyedir hayatta )
+&apos;[NAME]&apos; adlı avatar tam olarak yüklenmiş bir şekilde ayrıldı.
+	</notification>
+	<notification name="AvatarRezSelfBakedTextureUploadNotification">
+		( [EXISTENCE] saniyedir hayatta )
+ &apos;[BODYREGION]&apos; için [RESOLUTION] çözünürlükte kaydedilmiş bir dokuyu [TIME] saniye sonra karşıya yüklediniz.
+	</notification>
+	<notification name="AvatarRezSelfBakedTextureUpdateNotification">
+		( [EXISTENCE] saniyedir hayatta )
+ &apos;[BODYREGION]&apos; için [RESOLUTION] çözünürlükte kaydedilmiş bir dokuyu [TIME] saniye sonra yerel olarak güncellediniz.
+	</notification>
+	<notification name="ConfirmLeaveCall">
+		Bu aramadan çıkmak istediğinize emin misiniz?
+		<usetemplate ignoretext="Aramadan çıkmadan önce doğrulama iste" name="okcancelignore" notext="Hayır" yestext="Evet"/>
+	</notification>
+	<notification name="ConfirmMuteAll">
+		Bir grup aramasındaki tüm katılımcıları engellemeyi seçtiniz.
+Bu, siz aramadan çıktıktan sonra bile, aramaya daha sonra katılacak tüm sakinlerin
+engellenmesine yol açacak.
+
+Herkes engellensin mi?
+		<usetemplate ignoretext="Bir grup aramasındaki tüm katılımcıları engellemeden önce doğrulama iste" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<notification label="Sohbet" name="HintChat">
+		Sohbete katılmak için aşağıdaki sohbet alanına yazın.
+	</notification>
+	<notification label="AyaÄŸa Kalk" name="HintSit">
+		Ayağa kalkmak ve oturur konumdan çıkmak için Ayağa Kalk düğmesini tıklatın.
+	</notification>
+	<notification label="KonuÅŸ" name="HintSpeak">
+		Mikrofonunuzu açıp kapatmak için Konuş düğmesini tıklatın.
+
+Ses kontrol panelini görmek için yukarı ok tuşunu tıklatın.
+
+Konuş düğmesinin gizlenmesi ses özelliğini devre dışı bırakır.
+	</notification>
+	<notification label="Dünyayı Keşfet" name="HintDestinationGuide">
+		Hedef Kılavuzu, keşfedecek binlerce yeni yer barındırır. Bir konum seçin ve keşfetmeye başlamak için Işınla&apos;yı tıklatın.
+	</notification>
+	<notification label="Yan Panel" name="HintSidePanel">
+		Envanterinize, dış görünümünüze, profillerinize ve daha fazlasına hızlı erişim için yan paneli kullanın.
+	</notification>
+	<notification label="Hareket Et" name="HintMove">
+		Yürümek ya da koşmak için Hareket Panelini açın ve gezmek için yön oklarını tıklatın. Klavyenizdeki ok tuşlarını da kullanabilirsiniz.
+	</notification>
+	<notification label="" name="HintMoveClick">
+		1. Yürümek için tıklayın
+Zemindeki herhangi bir noktaya gitmek için orayı tıklatın.
+
+2. Görünümü Döndürmek için Tıklatın ve Sürükleyin
+Görünümünüzü döndürmek için dünya üzerindeki herhangi bir yeri tıklatın ve sürükleyin.
+	</notification>
+	<notification label="Ekran Adı" name="HintDisplayName">
+		Özelleştirebileceğiniz ekran adını burada ayarlayın. Ekran Adı, benzersiz ve değiştirilemeyen kullanıcı adınıza ek olarak kullanılır. Diğer insanların adlarını nasıl gördüğünüzü tercihlerinizden değiştirebilirsiniz.
+	</notification>
+	<notification label="Görünüm" name="HintView">
+		Kamera görünümünüzü değiştirmek için Yörünge Değişimi ve Kamerayı Çevirme denetimlerini kullanın. Escape tuşuna basarak ya da yürüyerek görünümü sıfırlayın.
+	</notification>
+	<notification label="Envanter" name="HintInventory">
+		Öğeleri bulmak için envanterinize bakın. Yeni eklenen öğeler Son Eklenenler sekmesinden kolayca bulunabilir.
+	</notification>
+	<notification label="Linden Dolarınız var!" name="HintLindenDollar">
+		L$ hesabınızın mevcut bakiyesini buradan görebilirsiniz. Daha fazla Linden Doları satın almak için L$ Satın Al&apos;ı tıklatın.
+	</notification>
+	<notification name="LowMemory">
+		Bellek havuzunuz yetersiz. Çökmeyi önlemek için SL&apos;nin bazı işlevleri devre dışı bırakıldı. Lütfen diğer uygulamaları kapatın. Bu durum devam ederse SL&apos;yi yeniden başlatın.
+	</notification>
+	<notification name="ForceQuitDueToLowMemory">
+		Yetersiz bellek nedeniyle SL 30 saniye içerisinde kapanacak.
+	</notification>
+	<notification name="PopupAttempt">
+		Açılır bir pencerenin açılması engellendi.
+		<form name="form">
+			<ignore name="ignore" text="Tüm açılır pencerelere izin ver"/>
+			<button name="open" text="Açılır pencereyi aç"/>
+		</form>
+	</notification>
+	<notification name="SOCKS_NOT_PERMITTED">
+		SOCKS 5 proxy&apos;si &quot;[HOST]:[PORT]&quot; bağlantıyı reddetti; kural kümesi izin vermiyor.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="SOCKS_CONNECT_ERROR">
+		SOCKS 5 proxy&apos;si &quot;[HOST]:[PORT]&quot; bağlantıyı reddetti, TCP kanalını açamadı.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="SOCKS_NOT_ACCEPTABLE">
+		SOCKS 5 proxy&apos;si &quot;[HOST]:[PORT]&quot; seçilen kimlik doğrulama sistemini reddetti.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="SOCKS_AUTH_FAIL">
+		SOCKS 5 proxy&apos;si &quot;[HOST]:[PORT]&quot; kimlik bilgilerinizin geçersiz olduğunu bildirdi.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="SOCKS_UDP_FWD_NOT_GRANTED">
+		SOCKS 5 proxy&apos;si &quot;[HOST]:[PORT]&quot; UDP iliÅŸkilendirme talebini reddetti.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="SOCKS_HOST_CONNECT_FAILED">
+		SOCKS 5 proxy sunucusu &quot;[HOST]:[PORT]&quot; ile bağlantı kurulamadı.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="SOCKS_UNKNOWN_STATUS">
+		&quot;[HOST]:[PORT]&quot; sunucusu ile bilinmeyen proxy hatası.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="SOCKS_INVALID_HOST">
+		Geçersiz SOCKS proxy adresi veya &quot;[HOST]:[PORT]&quot; portu.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="SOCKS_BAD_CREDS">
+		Geçersiz SOCKS 5 kullanıcı adı veya parolası.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="PROXY_INVALID_HTTP_HOST">
+		Geçersiz HTTP proxy adresi veya &quot;[HOST]:[PORT]&quot; portu.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="PROXY_INVALID_SOCKS_HOST">
+		Geçersiz SOCKS proxy adresi veya &quot;[HOST]:[PORT]&quot; portu.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="ChangeProxySettings">
+		Proxy ayarları [APP_NAME] uygulamasını yeniden başlattıktan sonra geçerli olur.
+		<usetemplate name="okbutton" yestext="Tamam"/>
+	</notification>
+	<notification name="AuthRequest">
+		&apos;[REALM]&apos; erişim alanında &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; üzerinde bulunan site bir kullanıcı adı ve parola gerektiriyor.
+		<form name="form">
+			<input name="username" text="Kullanıcı Adı"/>
+			<input name="password" text="Parola"/>
+			<button name="ok" text="Gönder"/>
+			<button name="cancel" text="Ä°ptal Et"/>
+		</form>
+	</notification>
+	<notification label="" name="NoClassifieds">
+		İlan oluşturma ve düzenleme sadece Gelişmiş modda kullanılabilir. Uygulamadan çıkıp, mod değiştirmek ister misiniz? Mod seçici oturum açma ekranında bulunabilir.
+		<usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+	</notification>
+	<notification label="" name="NoGroupInfo">
+		Grup oluşturma ve düzenleme sadece Gelişmiş modda kullanılabilir. Uygulamadan çıkıp, mod değiştirmek ister misiniz? Mod seçici oturum açma ekranında bulunabilir.
+		<usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+	</notification>
+	<notification label="" name="NoPlaceInfo">
+		Yer profili görüntülemesi sadece Gelişmiş modda kullanılabilir. Uygulamadan çıkıp, mod değiştirmek ister misiniz? Mod seçici oturum açma ekranında bulunabilir.
+		<usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+	</notification>
+	<notification label="" name="NoPicks">
+		Seçmeleri oluşturma ve düzenleme sadece Gelişmiş modda kullanılabilir. Uygulamadan çıkıp, mod değiştirmek ister misiniz? Mod seçici oturum açma ekranında bulunabilir.
+		<usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+	</notification>
+	<notification label="" name="NoWorldMap">
+		Dünya haritasının görüntülenmesi sadece Gelişmiş modda kullanılabilir. Uygulamadan çıkıp, mod değiştirmek ister misiniz? Mod seçici oturum açma ekranında bulunabilir.
+		<usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+	</notification>
+	<notification label="" name="NoVoiceCall">
+		Sesli aramalar sadece Gelişmiş modda kullanılabilir. Oturumunuzu kapatıp, mod değiştirmek ister misiniz?
+		<usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+	</notification>
+	<notification label="" name="NoAvatarShare">
+		Paylaşma sadece Gelişmiş modda kullanılabilir. Oturumunuzu kapatıp, mod değiştirmek ister misiniz?
+		<usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+	</notification>
+	<notification label="" name="NoAvatarPay">
+		Diğer sakinlere ödeme yapma sadece Gelişmiş modda kullanılabilir. Oturumunuzu kapatıp, mod değiştirmek ister misiniz?
+		<usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+	</notification>
+	<notification label="" name="NoInventory">
+		Envanter görüntülemesi sadece Gelişmiş modda kullanılabilir. Oturumunuzu kapatıp, mod değiştirmek ister misiniz?
+		<usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+	</notification>
+	<notification label="" name="NoAppearance">
+		Görünüm düzenleyici sadece Gelişmiş modda kullanılabilir. Oturumunuzu kapatıp, mod değiştirmek ister misiniz?
+		<usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+	</notification>
+	<notification label="" name="NoSearch">
+		Arama sadece Gelişmiş modda kullanılabilir. Oturumunuzu kapatıp, mod değiştirmek ister misiniz?
+		<usetemplate name="okcancelbuttons" notext="Çıkma" yestext="Çık"/>
+	</notification>
+	<notification label="" name="ConfirmHideUI">
+		Bu eylem tüm menü öğelerini ve düğmelerini gizler. Bunları geri almak için [SHORTCUT] üzerine tekrar tıklayın.
+		<usetemplate ignoretext="KA&apos;ni gizlemeden önce onayla" name="okcancelignore" notext="İptal" yestext="Tamam"/>
+	</notification>
+	<global name="UnsupportedGLRequirements">
+		[APP_NAME] uygulaması için gerekli donanım gereksinimlerine sahip olmadığınız görünüyor. [APP_NAME] çoklu doku desteği sunan bir OpenGL grafik kartı gerektiriyor. Eğer grafik kartınız bu özellikteyse, grafik kartınızın en son sürücülerine ve işletim sisteminiz için gerekli Service Pack ve yamalara sahip olup olmadığınızı kontrol etmeyi deneyebilirsiniz.
+
+Sorun yaşamaya devam ederseniz, lütfen [SUPPORT_SITE] bölümünü ziyaret edin.
+	</global>
+	<global name="UnsupportedCPUAmount">
+		796
+	</global>
+	<global name="UnsupportedRAMAmount">
+		510
+	</global>
+	<global name="UnsupportedGPU">
+		- Grafik kartınız minimum gereksinimleri karşılamıyor.
+	</global>
+	<global name="UnsupportedRAM">
+		- Sistem belleğiniz minimum gereksinimleri karşılamıyor.
+	</global>
+	<global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
+		Bir arazi parçasına sahipseniz burayı ana konumunuz olarak ayarlayabilirsiniz.
+Bir araziye sahip değilseniz, Harita&apos;ya bakıp &quot;Bilgi İstasyonu&quot; olarak işaretlenen yerleri bulabilirsiniz.
+	</global>
+	<global name="You died and have been teleported to your home location">
+		Hayatınızı kaybettiniz ve ana konumunuza ışınlandınız.
+	</global>
+</notifications>
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
new file mode 100644
index 0000000000000000000000000000000000000000..b03ce3ebe5db167a607c91cd9c5bddf1c7524f16
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_active_object_row.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_activeim_row">
+	<text name="object_name">
+		Ä°simsiz Nesne
+	</text>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..602818de94f0fb0040f70ff6f3f8ff4bfa1c9bb4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_adhoc_control_panel.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+	<layout_stack name="vertical_stack">
+		<layout_panel name="call_btn_panel">
+			<button label="Ara" name="call_btn"/>
+		</layout_panel>
+		<layout_panel name="end_call_btn_panel">
+			<button label="Aramadan Ayrıl" name="end_call_btn"/>
+		</layout_panel>
+		<layout_panel name="voice_ctrls_btn_panel">
+			<button label="Ses Denetimleri" name="voice_ctrls_btn"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..7542778acaf68dcf41cfbdfaeacd5f9771a21658
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_avatar_list_item.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="avatar_list_item">
+	<string name="FormatSeconds">
+		[COUNT]sn
+	</string>
+	<string name="FormatMinutes">
+		[COUNT]dk
+	</string>
+	<string name="FormatHours">
+		[COUNT]sa
+	</string>
+	<string name="FormatDays">
+		[COUNT]gn
+	</string>
+	<string name="FormatWeeks">
+		[COUNT]hf
+	</string>
+	<string name="FormatMonths">
+		[COUNT]ay
+	</string>
+	<string name="FormatYears">
+		[COUNT]yl
+	</string>
+	<text name="avatar_name" value="(yükleniyor)"/>
+	<text name="last_interaction" value="0sn"/>
+	<icon name="permission_edit_theirs_icon" tool_tip="Bu arkadaşınızın nesnelerini düzenleyebilirsiniz"/>
+	<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="profile_btn" tool_tip="Profili göster"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_avatar_tag.xml b/indra/newview/skins/default/xui/tr/panel_avatar_tag.xml
new file mode 100644
index 0000000000000000000000000000000000000000..81e04379a1c88d7c0bbcf7151167bafa23b7433b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_avatar_tag.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="avatar_tag_notification">
+	<panel name="msg_caption">
+		<text name="sender_tag_name">
+			Angela Tester
+		</text>
+		<text name="tag_time" value="23:30"/>
+	</panel>
+	<text_editor name="msg_text">
+		Hızlı kahverengi tilki tembel köpeğin üzerinden atlıyor.
+	</text_editor>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..0464b7ec07a1d4886f2703cf02c61e26c90188e3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_block_list_sidetray.xml
@@ -0,0 +1,10 @@
+<?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>
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
new file mode 100644
index 0000000000000000000000000000000000000000..f991c3b68895cbd30c6d61aef54fae720819982e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_body_parts_list_item.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="wearable_item">
+	<text name="item_name" value="..."/>
+	<panel name="btn_lock" tool_tip="Düzenleme izniniz yok"/>
+	<panel name="btn_edit_panel">
+		<button name="btn_edit" tool_tip="Bu şekli düzenle"/>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..6c2478cdb746071cbb7909ef31fbdfdabe6c7eb0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_bodyparts_list_button_bar.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="clothing_list_button_bar_panel">
+	<button label="DeÄŸiÅŸtir" name="switch_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_bottomtray.xml b/indra/newview/skins/default/xui/tr/panel_bottomtray.xml
new file mode 100644
index 0000000000000000000000000000000000000000..26118d8b39907bf4712cc0d4dfb593a7be40bc42
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_bottomtray.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="bottom_tray">
+	<string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
+	<string name="SpeakBtnToolTip" value="Mikrofonu açar/kapatır"/>
+	<string name="VoiceControlBtnToolTip" value="Ses kontrol panelini gösterir/gizler"/>
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="speak_panel">
+			<talk_button name="talk">
+				<speak_button label="KonuÅŸ" label_selected="KonuÅŸ" name="speak_btn"/>
+			</talk_button>
+		</layout_panel>
+		<layout_panel name="gesture_panel">
+			<gesture_combo_list label="Mimik" name="Gesture" tool_tip="Mimikleri gösterir/gizler"/>
+		</layout_panel>
+		<layout_panel name="movement_panel">
+			<bottomtray_button label="Hareket Et" name="movement_btn" tool_tip="Hareket kontrollerini gösterir/gizler"/>
+		</layout_panel>
+		<layout_panel name="cam_panel">
+			<bottomtray_button label="Görünüm" name="camera_btn" tool_tip="Kamera kontrollerini gösterir/gizler"/>
+		</layout_panel>
+		<layout_panel name="snapshot_panel">
+			<bottomtray_button name="snapshots" tool_tip="Anlık görüntü al"/>
+		</layout_panel>
+		<layout_panel name="build_btn_panel">
+			<bottomtray_button label="İnşa Et" name="build_btn" tool_tip="İnşa Et Aracını gösterir/gizler"/>
+		</layout_panel>
+		<layout_panel name="search_btn_panel">
+			<bottomtray_button label="Ara" name="search_btn" tool_tip="Aramayı gösterir/gizler"/>
+		</layout_panel>
+		<layout_panel name="world_map_btn_panel">
+			<bottomtray_button label="Harita" name="world_map_btn" tool_tip="Dünya Haritasını gösterir/gizler"/>
+		</layout_panel>
+		<layout_panel name="mini_map_btn_panel">
+			<bottomtray_button label="Mini-Harita" name="mini_map_btn" tool_tip="Mini Haritayı gösterir/gizler"/>
+		</layout_panel>
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="Sohbetler"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="Bildirimler"/>
+			</chiclet_notification>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/tr/panel_bottomtray_lite.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5d7006af2f98e0c29aae0297cd5891773c8311ca
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_bottomtray_lite.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="bottom_tray_lite">
+	<layout_stack name="toolbar_stack_lite">
+		<layout_panel name="gesture_panel">
+			<gesture_combo_list label="Mimik" name="Gesture" tool_tip="Mimikleri gösterir/gizler"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_chat_header.xml b/indra/newview/skins/default/xui/tr/panel_chat_header.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7916bf5155aa4d15b741094ca413575a3d7e529b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_chat_header.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="im_header" name="im_header">
+	<text name="time_box" value="23:30"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml b/indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a1e8190bbc3f7db060109fb4439a6f308697b472
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_chiclet_bar.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chiclet_bar">
+	<layout_stack name="toolbar_stack">
+		<layout_panel name="im_well_panel">
+			<chiclet_im_well name="im_well">
+				<button name="Unread IM messages" tool_tip="Sohbetler"/>
+			</chiclet_im_well>
+		</layout_panel>
+		<layout_panel name="notification_well_panel">
+			<chiclet_notification name="notification_well">
+				<button name="Unread" tool_tip="Bildirimler"/>
+			</chiclet_notification>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_classified_info.xml b/indra/newview/skins/default/xui/tr/panel_classified_info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d412a03e32f2c4e8c881a922e526049a2218a6ee
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_classified_info.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_classified_info">
+	<panel.string name="type_mature">
+		Orta
+	</panel.string>
+	<panel.string name="type_pg">
+		Genel İçerik
+	</panel.string>
+	<panel.string name="l$_price">
+		L$[PRICE]
+	</panel.string>
+	<panel.string name="click_through_text_fmt">
+		[TELEPORT] ışınlama, [MAP] harita, [PROFILE] profil
+	</panel.string>
+	<panel.string name="date_fmt">
+		[mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt]
+	</panel.string>
+	<panel.string name="auto_renew_on">
+		Etkin
+	</panel.string>
+	<panel.string name="auto_renew_off">
+		Devre dışı
+	</panel.string>
+	<text name="title" value="Ä°lan Bilgisi"/>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<text_editor name="classified_name" value="[ad]"/>
+			<text name="classified_location_label" value="Konum:"/>
+			<text_editor name="classified_location" value="[yükleniyor...]"/>
+			<text name="content_type_label" value="İçerik Türü:"/>
+			<text_editor name="content_type" value="[içerik türü]"/>
+			<text name="category_label" value="Kategori:"/>
+			<text_editor name="category" value="[kategori]"/>
+			<text name="creation_date_label" value="OluÅŸturma tarihi:"/>
+			<text_editor name="creation_date" tool_tip="OluÅŸturma tarihi" value="[tarih]"/>
+			<text name="price_for_listing_label" value="İlan ücreti:"/>
+			<text_editor name="price_for_listing" tool_tip="İlan ücreti." value="[ücret]"/>
+			<layout_stack name="descr_stack">
+				<layout_panel name="clickthrough_layout_panel">
+					<text name="click_through_label" value="Tıklamalar:"/>
+					<text_editor name="click_through_text" tool_tip="Tıklama verileri" value="[tıklamalar]"/>
+				</layout_panel>
+				<layout_panel name="price_layout_panel">
+					<text name="auto_renew_label" value="Otomatik yenileme:"/>
+					<text name="auto_renew" value="Etkin"/>
+				</layout_panel>
+				<layout_panel name="descr_layout_panel">
+					<text name="classified_desc_label" value="Açıklama:"/>
+					<text_editor name="classified_desc" value="[açıklama]"/>
+				</layout_panel>
+			</layout_stack>
+		</panel>
+	</scroll_container>
+	<panel name="buttons">
+		<layout_stack name="layout_stack1">
+			<layout_panel name="layout_panel1">
+				<button label="Işınla" name="teleport_btn"/>
+			</layout_panel>
+			<layout_panel name="show_on_map_btn_lp">
+				<button label="Harita" name="show_on_map_btn"/>
+			</layout_panel>
+			<layout_panel name="edit_btn_lp">
+				<button label="Düzenle" name="edit_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..bb5930ee791eb678faf4b67cbfea23a1c9ec6dd9
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_clothing_list_button_bar.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="clothing_list_button_bar_panel">
+	<button label="Ekle +" name="add_btn"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..e60e291ee8e59f189c3844722440a5872d28695a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_clothing_list_item.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="wearable_item">
+	<button name="btn_delete" tool_tip="Dış görünümden çıkar"/>
+	<text name="item_name" value="..."/>
+	<panel name="btn_lock" tool_tip="Düzenleme izniniz yok"/>
+	<panel name="btn_edit_panel">
+		<button name="btn_edit" tool_tip="Bu giyilebilir ögeyi düzenle"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_cof_wearables.xml b/indra/newview/skins/default/xui/tr/panel_cof_wearables.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7d701775533b37615c18ef82113134c3d1fb1fa5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_cof_wearables.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="cof_wearables">
+	<accordion name="cof_wearables_accordion">
+		<accordion_tab name="tab_clothing" title="Giysiler"/>
+		<accordion_tab name="tab_attachments" title="Aksesuarlar"/>
+		<accordion_tab name="tab_body_parts" title="Vücut Bölümleri"/>
+	</accordion>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..47703136b0fa4ed0d7ba1f6b9e20afe243493f0c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_deletable_wearable_list_item.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="deletable_wearable_item">
+	<button name="btn_delete" tool_tip="Dış görünümden çıkar"/>
+	<text name="item_name" value="..."/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..28e034a357ecb2bb2ef1163cd3601b60816544c9
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_dummy_clothing_list_item.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="dummy_clothing_item">
+	<text name="item_name" value="..."/>
+	<panel name="btn_add_panel">
+		<button name="btn_add" tool_tip="Bu türden ilave öğeler ekle"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_alpha.xml b/indra/newview/skins/default/xui/tr/panel_edit_alpha.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e3ba806b0d50fc641e4e156563397f8ff1e27fae
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_alpha.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_alpha_panel">
+	<scroll_container name="avatar_alpha_color_panel_scroll">
+		<panel name="avatar_alpha_color_panel">
+			<texture_picker label="Düşük Alfa" name="Lower Alpha" tool_tip="Bir resim seçmek için tıklayın"/>
+			<texture_picker label="Yüksek Alfa" name="Upper Alpha" tool_tip="Bir resim seçmek için tıklayın"/>
+			<texture_picker label="Baş Alfası" name="Head Alpha" tool_tip="Bir resim seçmek için tıklayın"/>
+			<texture_picker label="Göz Alfası" name="Eye Alpha" tool_tip="Bir resim seçmek için tıklayın"/>
+			<texture_picker label="Saç Alfası" name="Hair Alpha" tool_tip="Bir resim seçmek için tıklayın"/>
+		</panel>
+	</scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_classified.xml b/indra/newview/skins/default/xui/tr/panel_edit_classified.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7584b754f1328a7f9662f5719232a08e5d70958b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_classified.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="İlanı Düzenle" name="panel_edit_classified">
+	<panel.string name="location_notice">
+		(kaydedildikten sonra güncelleştirilir)
+	</panel.string>
+	<string name="publish_label">
+		Yayınla
+	</string>
+	<string name="save_label">
+		Kaydet
+	</string>
+	<text name="title">
+		İlanı Düzenle
+	</text>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<panel name="snapshot_panel">
+				<icon label="" name="edit_icon" tool_tip="Bir görüntü seçmek için tıklayın"/>
+			</panel>
+			<text name="Name:">
+				Başlık:
+			</text>
+			<text name="description_label">
+				Açıklama:
+			</text>
+			<text name="location_label">
+				Konum:
+			</text>
+			<text name="classified_location">
+				yükleniyor...
+			</text>
+			<button label="Geçerli Konuma Ayarla" name="set_to_curr_location_btn"/>
+			<text name="category_label" value="Kategori:"/>
+			<text name="content_type_label" value="İçerik türü:"/>
+			<icons_combo_box label="Genel İçerik" name="content_type">
+				<icons_combo_box.item label="Orta Seviyede İçerik" name="mature_ci" value="Orta Seviyede"/>
+				<icons_combo_box.item label="Genel İçerik" name="pg_ci" value="PG"/>
+			</icons_combo_box>
+			<check_box label="Her hafta otomatik yenile" name="auto_renew"/>
+			<text name="price_for_listing_label" value="İlan ücreti:"/>
+			<spinner label="L$" name="price_for_listing" tool_tip="İlan ücreti." value="50"/>
+		</panel>
+	</scroll_container>
+	<panel label="bottom_panel" name="bottom_panel">
+		<layout_stack name="bottom_panel_ls">
+			<layout_panel name="save_changes_btn_lp">
+				<button label="[LABEL]" name="save_changes_btn"/>
+			</layout_panel>
+			<layout_panel name="show_on_map_btn_lp">
+				<button label="Ä°ptal" name="cancel_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_eyes.xml b/indra/newview/skins/default/xui/tr/panel_edit_eyes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..42f62b6bbe1299b224ee2be8d3d4e53ee4afe1c6
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_eyes.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_eyes_panel">
+	<panel name="avatar_eye_color_panel">
+		<texture_picker label="İris" name="Iris" tool_tip="Bir resim seçmek için tıklayın"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="eyes_main_tab" title="Gözler"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_gloves.xml b/indra/newview/skins/default/xui/tr/panel_edit_gloves.xml
new file mode 100644
index 0000000000000000000000000000000000000000..be89e94bbf24308a483531cfefb8e4d65d41fb24
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_gloves.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_gloves_panel">
+	<panel name="avatar_gloves_color_panel">
+		<texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+		<color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="gloves_main_tab" title="Eldivenler"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_hair.xml b/indra/newview/skins/default/xui/tr/panel_edit_hair.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f33a6d64020ecdd5ea4d5ffe389bd1410abef71b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_hair.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_hair_panel">
+	<panel name="avatar_hair_color_panel">
+		<texture_picker label="Doku" name="Texture" tool_tip="Bir resim seçmek için tıklayın"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="hair_color_tab" title="Renk"/>
+			<accordion_tab name="hair_style_tab" title="Stil"/>
+			<accordion_tab name="hair_eyebrows_tab" title="KaÅŸlar"/>
+			<accordion_tab name="hair_facial_tab" title="Yüz"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_jacket.xml b/indra/newview/skins/default/xui/tr/panel_edit_jacket.xml
new file mode 100644
index 0000000000000000000000000000000000000000..10bc4278dbe94c2fcd4550f1bb46b96df3af94f4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_jacket.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_jacket_panel">
+	<panel name="avatar_jacket_color_panel">
+		<texture_picker label="Üst Doku" name="Upper Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+		<texture_picker label="Alt Doku" name="Lower Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+		<color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="jacket_main_tab" title="Ceket"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_pants.xml b/indra/newview/skins/default/xui/tr/panel_edit_pants.xml
new file mode 100644
index 0000000000000000000000000000000000000000..06e1b7b4ab6ea2aa6ab7221b07f8ed3b3b351417
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_pants.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_pants_panel">
+	<panel name="avatar_pants_color_panel">
+		<texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+		<color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="pants_main_tab" title="Pantolon"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_physics.xml b/indra/newview/skins/default/xui/tr/panel_edit_physics.xml
new file mode 100644
index 0000000000000000000000000000000000000000..98dbfd8e4298632682e0ddedb9077b7b2cb91ea0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_physics.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_physics_panel">
+	<panel label="" name="accordion_panel">
+		<accordion name="physics_accordion">
+			<accordion_tab name="physics_breasts_updown_tab" title="Göğüs Hoplaması"/>
+			<accordion_tab name="physics_breasts_inout_tab" title="Göğüs Çatalı"/>
+			<accordion_tab name="physics_breasts_leftright_tab" title="Göğüs Sallanması"/>
+			<accordion_tab name="physics_belly_tab" title="Göbek Hoplaması"/>
+			<accordion_tab name="physics_butt_tab" title="Popo Hoplaması"/>
+			<accordion_tab name="physics_butt_leftright_tab" title="Popo Sallanması"/>
+			<accordion_tab name="physics_advanced_tab" title="GeliÅŸmiÅŸ Parametreler"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_pick.xml b/indra/newview/skins/default/xui/tr/panel_edit_pick.xml
new file mode 100644
index 0000000000000000000000000000000000000000..98b02d27df28e5813eb4710b0a8ae8d26736f7d3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_pick.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Favori Düzenle" name="panel_edit_pick">
+	<panel.string name="location_notice">
+		(kaydedildikten sonra güncelleştirilir)
+	</panel.string>
+	<text name="title">
+		Seçme Düzenle
+	</text>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<icon label="" name="edit_icon" tool_tip="Bir görüntü seçmek için tıklayın"/>
+			<text name="Name:">
+				Başlık:
+			</text>
+			<text name="description_label">
+				Açıklama:
+			</text>
+			<text name="location_label">
+				Konum:
+			</text>
+			<text name="pick_location">
+				yükleniyor...
+			</text>
+			<button label="Geçerli Konuma Ayarla" name="set_to_curr_location_btn"/>
+		</panel>
+	</scroll_container>
+	<panel label="bottom_panel" name="bottom_panel">
+		<layout_stack name="layout_stack1">
+			<layout_panel name="layout_panel1">
+				<button label="Seçme Kaydet" name="save_changes_btn"/>
+			</layout_panel>
+			<layout_panel name="layout_panel2">
+				<button label="Ä°ptal" name="cancel_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_profile.xml b/indra/newview/skins/default/xui/tr/panel_edit_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..21f4e419bc90abc68bc55c447dc98be029323b6e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_profile.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Profil Düzenlemesi" name="edit_profile_panel">
+	<string name="CaptionTextAcctInfo">
+		[ACCTTYPE]
+[PAYMENTINFO] [AGEVERIFICATION]
+	</string>
+	<string name="RegisterDateFormat">
+		[REG_DATE] ([AGE])
+	</string>
+	<string name="AcctTypeResident" value="Sakin"/>
+	<string name="AcctTypeTrial" value="Deneme"/>
+	<string name="AcctTypeCharterMember" value="Ayrıcalıklı Üye"/>
+	<string name="AcctTypeEmployee" value="Linden Lab Çalışanı"/>
+	<string name="PaymentInfoUsed" value="Kullanılan Ödeme Bilgisi"/>
+	<string name="PaymentInfoOnFile" value="Dosyadaki Ödeme Bilgisi"/>
+	<string name="NoPaymentInfoOnFile" value="Dosyada Ödeme Bilgisi Yok"/>
+	<string name="AgeVerified" value="Yaşı Doğrulanmış"/>
+	<string name="NotAgeVerified" value="Yaşı Doğrulanmamış"/>
+	<string name="partner_edit_link_url">
+		http://www.secondlife.com/account/partners.php?lang=en
+	</string>
+	<string name="my_account_link_url">
+		http://secondlife.com/my
+	</string>
+	<string name="no_partner_text" value="Hiçbiri"/>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<panel name="data_panel">
+				<text name="display_name_label" value="Ekran Adı:"/>
+				<text name="solo_username_label" value="Kullanıcı Adı:"/>
+				<button name="set_name" tool_tip="Ekran Adını Ayarla"/>
+				<text name="user_label" value="Kullanıcı Adı:"/>
+				<panel name="lifes_images_panel">
+					<panel name="second_life_image_panel">
+						<text name="second_life_photo_title_text" value="[SECOND_LIFE]:"/>
+					</panel>
+					<icon label="" name="2nd_life_edit_icon" tool_tip="Bir görüntü seçmek için tıklayın"/>
+				</panel>
+				<panel name="first_life_image_panel">
+					<text name="real_world_photo_title_text" value="Gerçek Dünya:"/>
+				</panel>
+				<icon label="" name="real_world_edit_icon" tool_tip="Bir görüntü seçmek için tıklayın"/>
+				<text name="title_homepage_text">
+					Ana sayfa:
+				</text>
+				<line_editor name="homepage_edit" value="http://"/>
+				<text name="title_acc_status_text" value="Hesabım:"/>
+				<text_editor name="acc_status_text" value="Sakin. Dosyada ödeme bilgisi yok."/>
+				<text name="my_account_link" value="[[URL] Kontrol Panelime Git]"/>
+				<text name="title_partner_text" value="Partnerim:"/>
+				<panel name="partner_data_panel">
+					<text initial_value="(alınıyor)" name="partner_text"/>
+				</panel>
+				<text name="partner_edit_link" value="[[URL] Düzenle]"/>
+			</panel>
+		</panel>
+	</scroll_container>
+	<panel name="profile_me_buttons_panel">
+		<layout_stack name="bottom_panel_ls">
+			<layout_panel name="save_changes_btn_lp">
+				<button label="DeÄŸiÅŸiklikleri Kaydet" name="save_btn"/>
+			</layout_panel>
+			<layout_panel name="show_on_map_btn_lp">
+				<button label="Ä°ptal" name="cancel_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_shape.xml b/indra/newview/skins/default/xui/tr/panel_edit_shape.xml
new file mode 100644
index 0000000000000000000000000000000000000000..57cd9aca750945bd34ff8da76d9301a4de4abe12
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_shape.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shape_panel">
+	<string name="meters">
+		Metre
+	</string>
+	<string name="feet">
+		Ayak
+	</string>
+	<string name="height">
+		Boy:
+	</string>
+	<panel label="Gömlek" name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="shape_body_tab" title="Beden"/>
+			<accordion_tab name="shape_head_tab" title="BaÅŸ"/>
+			<accordion_tab name="shape_eyes_tab" title="Gözler"/>
+			<accordion_tab name="shape_ears_tab" title="Kulaklar"/>
+			<accordion_tab name="shape_nose_tab" title="Burun"/>
+			<accordion_tab name="shape_mouth_tab" title="Ağız"/>
+			<accordion_tab name="shape_chin_tab" title="Çene"/>
+			<accordion_tab name="shape_torso_tab" title="Gövde"/>
+			<accordion_tab name="shape_legs_tab" title="Bacaklar"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_shirt.xml b/indra/newview/skins/default/xui/tr/panel_edit_shirt.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2dd417afc6e110b032f5ff5bad8a84bddea0c7f5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_shirt.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shirt_panel">
+	<panel name="avatar_shirt_color_panel">
+		<texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+		<color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="shirt_main_tab" title="Gömlek"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_shoes.xml b/indra/newview/skins/default/xui/tr/panel_edit_shoes.xml
new file mode 100644
index 0000000000000000000000000000000000000000..34acb414b0074513b5c87a83e19b6dd7d27e49f8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_shoes.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_shoes_panel">
+	<panel name="avatar_shoes_color_panel">
+		<texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+		<color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="shoes_main_tab" title="Ayakkabılar"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_skin.xml b/indra/newview/skins/default/xui/tr/panel_edit_skin.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fdf75100ed95585219d7ef806a8f552af11f024d
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_skin.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skin_panel">
+	<panel name="avatar_skin_color_panel">
+		<texture_picker label="Baş" name="Head" tool_tip="Bir resim seçmek için tıklayın"/>
+		<texture_picker label="Üst gövde" name="Upper Body" tool_tip="Bir resim seçmek için tıklayın"/>
+		<texture_picker label="Alt gövde" name="Lower Body" tool_tip="Bir resim seçmek için tıklayın"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="skin_color_tab" title="Dış Katman Rengi"/>
+			<accordion_tab name="skin_face_tab" title="Yüz Ayrıntısı"/>
+			<accordion_tab name="skin_makeup_tab" title="Makyaj"/>
+			<accordion_tab name="skin_body_tab" title="Vücut Ayrıntısı"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_skirt.xml b/indra/newview/skins/default/xui/tr/panel_edit_skirt.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2099013fe1d837d8df55750f790071600b599e8f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_skirt.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_skirt_panel">
+	<panel name="avatar_skirt_color_panel">
+		<texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+		<color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="skirt_main_tab" title="Etek"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_socks.xml b/indra/newview/skins/default/xui/tr/panel_edit_socks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d386814d312c8b504ad9a637ad20e4e11bfe8b50
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_socks.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_socks_panel">
+	<panel name="avatar_socks_color_panel">
+		<texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+		<color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="socks_main_tab" title="Çoraplar"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/tr/panel_edit_tattoo.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7f5590a485a25f4113b780e32c4d42c7df6f8b25
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_tattoo.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_tattoo_panel">
+	<panel name="avatar_tattoo_color_panel">
+		<texture_picker label="Baş Dövmesi" name="Head Tattoo" tool_tip="Bir resim seçmek için tıklayın"/>
+		<texture_picker label="Üst Gövde Dövmesi" name="Upper Tattoo" tool_tip="Bir resim seçmek için tıklayın"/>
+		<texture_picker label="Alt Gövde Dövmesi" name="Lower Tattoo" tool_tip="Bir resim seçmek için tıklayın"/>
+		<color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_underpants.xml b/indra/newview/skins/default/xui/tr/panel_edit_underpants.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ed003e1adf7818d1a0bbaed44ae2203e68b04650
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_underpants.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_underpants_panel">
+	<panel name="avatar_underpants_color_panel">
+		<texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+		<color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk seçiciyi açmak için tıklayın"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="underpants_main_tab" title="Külot"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/tr/panel_edit_undershirt.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e0a0be8abb0963c39039ff07cdf08716ad28ca3f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_undershirt.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="edit_undershirt_panel">
+	<panel name="avatar_undershirt_color_panel">
+		<texture_picker label="Doku" name="Fabric" tool_tip="Bir resim seçmek için tıklayın"/>
+		<color_swatch label="Renk/Ton" name="Color/Tint" tool_tip="Renk Seçiciyi açmak için tıklayın"/>
+	</panel>
+	<panel name="accordion_panel">
+		<accordion name="wearable_accordion">
+			<accordion_tab name="undershirt_main_tab" title="Fanila"/>
+		</accordion>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_edit_wearable.xml b/indra/newview/skins/default/xui/tr/panel_edit_wearable.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7a4a09aaedc623ea68b77fb00e760029bf0a5ae2
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_edit_wearable.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Giyilebilir" name="panel_edit_wearable">
+	<string name="edit_shape_title">
+		Şekil Düzenleniyor
+	</string>
+	<string name="edit_skin_title">
+		Dış Katman Düzenleniyor
+	</string>
+	<string name="edit_hair_title">
+		Saç Düzenleniyor
+	</string>
+	<string name="edit_eyes_title">
+		Gözler Düzenleniyor
+	</string>
+	<string name="edit_shirt_title">
+		Gömlek Düzenleniyor
+	</string>
+	<string name="edit_pants_title">
+		Pantolon Düzenleniyor
+	</string>
+	<string name="edit_shoes_title">
+		Ayakkabılar Düzenleniyor
+	</string>
+	<string name="edit_socks_title">
+		Çoraplar Düzenleniyor
+	</string>
+	<string name="edit_jacket_title">
+		Ceket Düzenleniyor
+	</string>
+	<string name="edit_skirt_title">
+		Etek Düzenleniyor
+	</string>
+	<string name="edit_gloves_title">
+		Eldivenler Düzenleniyor
+	</string>
+	<string name="edit_undershirt_title">
+		Fanila Düzenleniyor
+	</string>
+	<string name="edit_underpants_title">
+		Külot Düzenleniyor
+	</string>
+	<string name="edit_alpha_title">
+		Alfa Maskesi Düzenleniyor
+	</string>
+	<string name="edit_tattoo_title">
+		Dövme Düzenleniyor
+	</string>
+	<string name="edit_physics_title">
+		Fizik Düzenleniyor
+	</string>
+	<string name="shape_desc_text">
+		Åžekil:
+	</string>
+	<string name="skin_desc_text">
+		Dış Katman:
+	</string>
+	<string name="hair_desc_text">
+		Saç:
+	</string>
+	<string name="eyes_desc_text">
+		Gözler:
+	</string>
+	<string name="shirt_desc_text">
+		Gömlek:
+	</string>
+	<string name="pants_desc_text">
+		Pantolon:
+	</string>
+	<string name="shoes_desc_text">
+		Ayakkabılar:
+	</string>
+	<string name="socks_desc_text">
+		Çoraplar:
+	</string>
+	<string name="jacket_desc_text">
+		Ceket:
+	</string>
+	<string name="skirt_desc_text">
+		Etek:
+	</string>
+	<string name="gloves_desc_text">
+		Eldivenler:
+	</string>
+	<string name="undershirt_desc_text">
+		Fanila:
+	</string>
+	<string name="underpants_desc_text">
+		Külot:
+	</string>
+	<string name="alpha_desc_text">
+		Alfa Maskesi:
+	</string>
+	<string name="tattoo_desc_text">
+		Dövme:
+	</string>
+	<string name="physics_desc_text">
+		Fizik:
+	</string>
+	<labeled_back_button label="Kaydet" name="back_btn" tool_tip="Dış Görünümü Düzenlemeye Dön"/>
+	<text name="edit_wearable_title" value="Şekil Düzenleniyor"/>
+	<panel label="Gömlek" name="wearable_type_panel">
+		<text name="description_text" value="Åžekil:"/>
+		<radio_group name="sex_radio">
+			<radio_item label="" name="sex_male" tool_tip="Erkek" value="1"/>
+			<radio_item label="" name="sex_female" tool_tip="Kadın" value="0"/>
+		</radio_group>
+		<icon name="male_icon" tool_tip="Erkek"/>
+		<icon name="female_icon" tool_tip="Kadın"/>
+	</panel>
+	<panel name="button_panel">
+		<layout_stack name="button_panel_ls">
+			<layout_panel name="save_as_btn_lp">
+				<button label="Farklı Kaydet" name="save_as_button"/>
+			</layout_panel>
+			<layout_panel name="revert_btn_lp">
+				<button label="DeÄŸiÅŸiklikleri Geri Al" name="revert_button"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..58bb68a5c34c73568427b340344c5b7c1ebd518e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_control_panel.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+	<layout_stack name="vertical_stack">
+		<layout_panel name="group_info_btn_panel">
+			<button label="Grup Profili" name="group_info_btn"/>
+		</layout_panel>
+		<layout_panel name="call_btn_panel">
+			<button label="Grubu Ara" name="call_btn"/>
+		</layout_panel>
+		<layout_panel name="end_call_btn_panel">
+			<button label="Aramadan Ayrıl" name="end_call_btn"/>
+		</layout_panel>
+		<layout_panel name="voice_ctrls_btn_panel">
+			<button label="Ses Denetimlerini Aç" name="voice_ctrls_btn"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_general.xml b/indra/newview/skins/default/xui/tr/panel_group_general.xml
new file mode 100644
index 0000000000000000000000000000000000000000..04620262496437c5606b3cdf8a10be0a507cc721
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_general.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Genel" name="general_tab">
+	<panel.string name="help_text">
+		Genel sekmesinde bu grup hakkında genel bilgiler, üyelerin listesi, genel Grup Tercihleri ve üye seçenekleri yer alır.
+
+Daha fazla yardım edinmek için farenizi seçeneklerin üzerine getirin.
+	</panel.string>
+	<panel.string name="group_info_unchanged">
+		Genel grup bilgileri deÄŸiÅŸti
+	</panel.string>
+	<panel.string name="incomplete_member_data_str">
+		Üye verileri alınıyor
+	</panel.string>
+	<panel name="group_info_top">
+		<texture_picker label="" name="insignia" tool_tip="Bir resim seçmek için tıklayın"/>
+		<text name="prepend_founded_by">
+			Kurucu:
+		</text>
+		<text name="join_cost_text">
+			Ãœcretsiz
+		</text>
+		<button label="ŞİMDİ KATIL!" name="btn_join"/>
+	</panel>
+	<text_editor name="charter">
+		Grup Bildirgesi
+	</text_editor>
+	<name_list name="visible_members">
+		<name_list.columns label="Ãœye" name="name"/>
+		<name_list.columns label="Başlık" name="title"/>
+		<name_list.columns label="Durum" name="status"/>
+	</name_list>
+	<text name="my_group_settngs_label">
+		Ben
+	</text>
+	<text name="active_title_label">
+		Başlığım:
+	</text>
+	<combo_box name="active_title" tool_tip="Bu grup etkin olduğunda avatarınızın ad etiketinde görünecek başlığı belirler."/>
+	<check_box label="Grup bildirimleri al" name="receive_notices" tool_tip="Bu gruptan Bildirim almak isteyip istemediğinizi belirler.  Bu grup size istemediğiniz bildirimler yolluyorsa bu kutudaki işareti kaldırın."/>
+	<check_box label="Profilimde göster" name="list_groups_in_profile" tool_tip="Bu grubu profilinizde göstermeyi isteyip istemediğinizi belirler"/>
+	<panel name="preferences_container">
+		<text name="group_settngs_label">
+			Grup
+		</text>
+		<check_box label="Herkes katılabilir" name="open_enrollement" tool_tip="Bu grubun davet edilmeden yeni üyelerin katılmasına imkan tanıyıp tanımayacağını belirler."/>
+		<check_box label="Katılma ücreti" name="check_enrollment_fee" tool_tip="Bu gruba katılmak için bir kayıt ücretinin gerekip gerekmeyeceğini belirler"/>
+		<spinner label="L$" name="spin_enrollment_fee" tool_tip="Kayıt Ücreti işaretlendiğinde yeni üyeler gruba katılmak için bu ücreti ödemelidir."/>
+		<combo_box name="group_mature_check" tool_tip="Grubunuzun Orta seviyede içeriğe sahip olup olmadığını belirler">
+			<combo_item name="select_mature">
+				- Erişkinlik seviyesini seçin -
+			</combo_item>
+			<combo_box.item label="Orta Seviyede İçerik" name="mature"/>
+			<combo_box.item label="Genel İçerik" name="pg"/>
+		</combo_box>
+		<check_box initial_value="true" label="Aramada göster" name="show_in_group_list" tool_tip="Kişiler arama sonuçlarında bu grubu görebilsin"/>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..32f39da49014f60637e530b2f215ea93ee9e51da
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_info_sidetray.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Grup Profili" name="GroupInfo">
+	<panel.string name="default_needs_apply_text">
+		KaydedilmemiÅŸ deÄŸiÅŸiklikler var
+	</panel.string>
+	<panel.string name="want_apply_text">
+		Bu deÄŸiÅŸiklikleri kaydetmek istiyor musunuz?
+	</panel.string>
+	<panel.string name="group_join_btn">
+		Katıl (L$[AMOUNT])
+	</panel.string>
+	<panel.string name="group_join_free">
+		Ãœcretsiz
+	</panel.string>
+	<panel name="group_info_top">
+		<text_editor name="group_name" value="(yükleniyor...)"/>
+		<line_editor label="Grup adınızı buraya girin" name="group_name_editor"/>
+	</panel>
+	<layout_stack name="layout">
+		<layout_panel name="group_accordions">
+			<accordion name="groups_accordion">
+				<accordion_tab name="group_general_tab" title="Genel"/>
+				<accordion_tab name="group_roles_tab" title="Roller"/>
+				<accordion_tab name="group_notices_tab" title="Bildirimler"/>
+				<accordion_tab name="group_land_tab" title="Arazi/Varlıklar"/>
+			</accordion>
+		</layout_panel>
+	</layout_stack>
+	<layout_stack name="button_row_ls">
+		<layout_panel name="btn_chat_lp">
+			<button label="Sohbet" name="btn_chat"/>
+		</layout_panel>
+		<layout_panel name="call_btn_lp">
+			<button label="Grup Araması" name="btn_call" tool_tip="Bu grubu ara"/>
+		</layout_panel>
+		<layout_panel name="btn_apply_lp">
+			<button label="Kaydet" label_selected="Kaydet" name="btn_apply"/>
+			<button label="Grup OluÅŸtur" name="btn_create" tool_tip="Yeni bir Grup oluÅŸtur"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_invite.xml b/indra/newview/skins/default/xui/tr/panel_group_invite.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9b0c7f799aa3c9c6b8db53f95b2e47da59f44fac
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_invite.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Bir Ãœyeyi Davet Et" name="invite_panel">
+	<panel.string name="confirm_invite_owner_str">
+		Yeni sahipler davet etmek istediğinize emin misiniz? Bu eylem geri döndürülemez!
+	</panel.string>
+	<panel.string name="loading">
+		(yükleniyor...)
+	</panel.string>
+	<panel.string name="already_in_group">
+		Seçtiğiniz bazı Sakinler zaten grupta yer alıyor, bu yüzden bunlara davetiye gönderilmedi.
+	</panel.string>
+	<text name="help_text">
+		Grubunuza davet etmek için birden fazla Sakin seçebilirsiniz. Başlamak için &quot;Sakin Seçiciyi Aç&quot; üzerine tıklayın.
+	</text>
+	<button label="Sakin Seçiciyi Aç" name="add_button"/>
+	<name_list name="invitee_list" tool_tip="Ctrl tuşunu basılı tutun ve seçmek istediğiniz Sakinlerin adlarına tıklayın"/>
+	<button label="Seçilenleri Listeden Çıkar" name="remove_button" tool_tip="Yukarıda seçilen Sakinleri davet listesinden çıkarır"/>
+	<text name="role_text">
+		Onları hala Role atayacağınızı seçin:
+	</text>
+	<combo_box name="role_name" tool_tip="Üyeleri atamanıza izin verilen Roller listesinden seçin"/>
+	<button label="Davetiye Gönder" name="ok_button"/>
+	<button label="Ä°ptal" name="cancel_button"/>
+	<string name="GroupInvitation">
+		Grup Davetiyesi
+	</string>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..e9112a862b4cf985aae95ec677b7ae6563fa89c2
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_land_money.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Arazi ve L$" name="land_money_tab">
+	<panel.string name="help_text">
+		Kullanılan Toplam Arazi, Toplam Katkı&apos;dan daha az veya buna eşit oluncaya kadar bir uyarı görünür.
+	</panel.string>
+	<panel.string name="cant_view_group_land_text">
+		Grupların sahip olduğu araziyi görme izniniz yok
+	</panel.string>
+	<panel.string name="epmty_view_group_land_text">
+		GiriÅŸ yok
+	</panel.string>
+	<panel.string name="cant_view_group_accounting_text">
+		Grubun muhasebe bilgilerini görme izniniz yok.
+	</panel.string>
+	<panel.string name="loading_txt">
+		Yükleniyor...
+	</panel.string>
+	<panel.string name="land_contrib_error">
+		Arazi katkınız ayarlanamıyor
+	</panel.string>
+	<panel name="layout_panel_landmoney">
+		<scroll_list name="group_parcel_list">
+			<scroll_list.columns label="Parsel" name="name"/>
+			<scroll_list.columns label="Bölge" name="location"/>
+			<scroll_list.columns label="Tür" name="type"/>
+			<scroll_list.columns label="Alan" name="area"/>
+			<scroll_list.columns label="Saklı" name="hidden"/>
+		</scroll_list>
+		<text name="total_contributed_land_label">
+			Toplam katkı:
+		</text>
+		<text name="total_contributed_land_value">
+			[AREA] m²
+		</text>
+		<button label="Harita" label_selected="Harita" name="map_button"/>
+		<text name="total_land_in_use_label">
+			Kullanılan toplam arazi:
+		</text>
+		<text name="total_land_in_use_value">
+			[AREA] m²
+		</text>
+		<text name="land_available_label">
+			Kullanılabilir arazi:
+		</text>
+		<text name="land_available_value">
+			[AREA] m²
+		</text>
+		<text name="your_contribution_label">
+			Katkınız:
+		</text>
+		<text name="your_contribution_units">
+			m²
+		</text>
+		<text name="your_contribution_max_value">
+			([AMOUNT] maks)
+		</text>
+		<text name="group_over_limit_text">
+			Kullanılan alanı desteklemek için daha fazla arazi kredisi lazım
+		</text>
+		<text name="group_money_heading">
+			Grup L$
+		</text>
+	</panel>
+	<tab_container name="group_money_tab_container">
+		<panel label="PLANLAMA" name="group_money_planning_tab">
+			<text_editor name="group_money_planning_text">
+				Yükleniyor...
+			</text_editor>
+		</panel>
+		<panel label="AYRINTILAR" name="group_money_details_tab">
+			<text_editor name="group_money_details_text">
+				Yükleniyor...
+			</text_editor>
+			<button name="earlier_details_button" tool_tip="Geri"/>
+			<button name="later_details_button" tool_tip="Sonraki"/>
+		</panel>
+		<panel label="SATIÅžLAR" name="group_money_sales_tab">
+			<text_editor name="group_money_sales_text">
+				Yükleniyor...
+			</text_editor>
+			<button name="earlier_sales_button" tool_tip="Geri"/>
+			<button name="later_sales_button" tool_tip="Sonraki"/>
+		</panel>
+	</tab_container>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..2bc597f2fa9c1e50dba56458232f71479be07ea4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_list_item.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="group_list_item">
+	<text name="group_name" value="Bilinmiyor"/>
+	<button name="profile_btn" tool_tip="Profili göster"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_notices.xml b/indra/newview/skins/default/xui/tr/panel_group_notices.xml
new file mode 100644
index 0000000000000000000000000000000000000000..179b5fff6927d2aceeffd95d8c13986b002b91ee
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_notices.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Bildirimler" name="notices_tab">
+	<panel.string name="help_text">
+		Bildirimler ile bir ileti ve opsiyonel olarak eklenmiş bir öğe gönderebilirsiniz.
+Bildirimler sadece Bildirim alma imkanına sahip olan Rollerdeki grup üyelerine gider.
+Genel sekmesinde Bildirimleri kapatabilirsiniz.
+	</panel.string>
+	<panel.string name="no_notices_text">
+		Eski bildirimler mevcut deÄŸil
+	</panel.string>
+	<text name="lbl2">
+		Bildirimler 14 gün boyunca saklanır.
+Günde grup başına maksimum sınır 200&apos;dür
+	</text>
+	<scroll_list name="notice_list">
+		<scroll_list.columns label="Konu" name="subject"/>
+		<scroll_list.columns label="Kimden" name="from"/>
+		<scroll_list.columns label="Tarih" name="date"/>
+	</scroll_list>
+	<text name="notice_list_none_found">
+		Bildirim yok
+	</text>
+	<button label="Yeni Bildirim" name="create_new_notice" tool_tip="Yeni bir bildirim oluÅŸtur"/>
+	<button name="refresh_notices" tool_tip="Bildirimler listesini yenile"/>
+	<panel label="Yeni Bildirim OluÅŸtur" name="panel_create_new_notice">
+		<text name="lbl">
+			Bildirim OluÅŸtur
+		</text>
+		<text name="lbl3">
+			Konu:
+		</text>
+		<text name="lbl4">
+			Ä°leti:
+		</text>
+		<text name="lbl5">
+			Ekle:
+		</text>
+		<text name="string">
+			Bir öğeyi eklemek için buraya sürükleyin ve bırakın:
+		</text>
+		<button label="Envanter" name="open_inventory" tool_tip="Envanteri Aç"/>
+		<button name="remove_attachment" tool_tip="Bildiriminizden aksesuarı kaldır"/>
+		<button label="Gönder" label_selected="Gönder" name="send_notice"/>
+		<group_drop_target name="drop_target" tool_tip="Bu bildirimle bir envanter öğesini göndermek için öğeyi bu hedef kutuya sürükleyin. Öğeyi eklemek için kopyalama ve aktarma iznine sahip olmalısınız."/>
+	</panel>
+	<panel label="Eski Bildirimi Göster" name="panel_view_past_notice">
+		<text name="lbl">
+			ArÅŸivlenmiÅŸ Bildirim
+		</text>
+		<text name="lbl2">
+			Yeni bir bildirim göndermek için + düğmesine tıklayın
+		</text>
+		<text name="lbl3">
+			Konu:
+		</text>
+		<text name="lbl4">
+			Ä°leti:
+		</text>
+		<button label="Aksesuarı Aç" name="open_attachment"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_notify.xml b/indra/newview/skins/default/xui/tr/panel_group_notify.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bcc5482daade9ae74c37b419c8109ae09ff1e1d9
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_notify.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="instant_message" name="panel_group_notify">
+	<string name="message_max_lines_count" value="7"/>
+	<string name="subject_font" value="SANSSERIF_BIG"/>
+	<string name="date_font" value="SANSSERIF"/>
+	<panel label="başlık" name="header">
+		<text name="title" value="Gönderici Adı / Grup Adı"/>
+	</panel>
+	<text_editor name="message" value="ileti"/>
+	<text name="attachment" value="Aksesuar"/>
+	<button label="Tamam" name="btn_ok"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_group_roles.xml b/indra/newview/skins/default/xui/tr/panel_group_roles.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fb03107da81a80d0a2828349adffa447e4b6611e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_group_roles.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Ãœyeler ve Roller" name="roles_tab">
+	<panel.string name="default_needs_apply_text">
+		KaydedilmemiÅŸ deÄŸiÅŸiklikler var
+	</panel.string>
+	<panel.string name="want_apply_text">
+		DeÄŸiÅŸikliklerinizi kaydetmek istiyor musunuz?
+	</panel.string>
+	<tab_container name="roles_tab_container">
+		<panel label="ÃœYELER" name="members_sub_tab" tool_tip="Ãœyeler">
+			<panel.string name="help_text">
+				Üyelere atanmış Rolleri ekleyebilir veya kaldırabilirsiniz.
+Ctrl tuşuna basıp adlarına tıklayarak birden fazla Üye seçebilirsiniz.
+			</panel.string>
+			<panel.string name="donation_area">
+				[AREA] m²
+			</panel.string>
+			<filter_editor label="Ãœyeleri Filtrele" name="filter_input"/>
+			<name_list name="member_list">
+				<name_list.columns label="Ãœye" name="name"/>
+				<name_list.columns label="Bağış" name="donated"/>
+				<name_list.columns label="Durum" name="online"/>
+			</name_list>
+			<button label="Davet Et" name="member_invite"/>
+			<button label="Çıkar" name="member_eject"/>
+		</panel>
+		<panel label="ROLLER" name="roles_sub_tab">
+			<panel.string name="help_text">
+				Roller, birer başlığa ve Üyelerin gerçekleştirmesine izin verilen Yetenekler listesine sahiptir.
+ Bir Üye bir veya daha fazla sayıda Role ait olabilir.
+ Bir grupta 10&apos;a kadar Rol olabilir, buna Herkes ve Sahip Rolü de dahildir.
+			</panel.string>
+			<panel.string name="cant_delete_role">
+				&apos;Herkes&apos; ve &apos;Sahipler&apos; Rolleri özeldir, silinemez.
+			</panel.string>
+			<filter_editor label="Rolleri Filtrele" name="filter_input"/>
+			<scroll_list name="role_list">
+				<scroll_list.columns label="Rol" name="name"/>
+				<scroll_list.columns label="Başlık" name="title"/>
+				<scroll_list.columns label="#" name="members"/>
+			</scroll_list>
+			<button label="Yeni Rol" name="role_create"/>
+			<button label="Rolü Sil" name="role_delete"/>
+		</panel>
+		<panel label="YETENEKLER" name="actions_sub_tab" tool_tip="Bir Yeteneğin Açıklamasını ve bu Yeteneğe hangi Rollerin ve Üyelerin sahip olabileceğini görebilirsiniz.">
+			<panel.string name="help_text">
+				Yetenekler sayesinde Rollerle ilişkili Üyeler bu grup içerisinde belirli şeyler yapabilir.
+ Yeteneklerin kapsamı oldukça geniştir.
+			</panel.string>
+			<filter_editor label="Yetenekleri Filtrele" name="filter_input"/>
+			<scroll_list name="action_list" tool_tip="Bir Yeteneği seçerek daha çok ayrıntı görebilirsiniz"/>
+		</panel>
+	</tab_container>
+	<panel name="members_footer">
+		<text name="static">
+			Atanmış Roller
+		</text>
+		<text name="static2">
+			Ä°zin Verilen Yetenekler
+		</text>
+		<scroll_list name="member_allowed_actions" tool_tip="İzin verilen her bir yeteneğin ayrıntıları için yetenekler sekmesine bakın"/>
+	</panel>
+	<panel name="roles_footer">
+		<text name="static">
+			Rol Adı
+		</text>
+		<text name="static3">
+			Rol Başlığı
+		</text>
+		<text name="static2">
+			Açıklama
+		</text>
+		<text name="static4">
+			Atanmış Üyeler
+		</text>
+		<check_box label="Üyeleri göster" name="role_visible_in_list" tool_tip="Bu rolün üyelerinin, Genel sekmesinde grup dışındaki kişilere görünüp görünmeyeceğini ayarlar."/>
+		<text name="static5">
+			Ä°zin Verilen Yetenekler
+		</text>
+		<scroll_list name="role_allowed_actions" tool_tip="İzin verilen her bir yeteneğin ayrıntıları için yetenekler sekmesine bakın"/>
+	</panel>
+	<panel name="actions_footer">
+		<text_editor name="action_description">
+			Bu Yetenek &apos;Bu Gruptan Üye Çıkarma&apos;dır. Bir Sahibi sadece başka bir Sahip çıkartabilir.
+		</text_editor>
+		<text name="static2">
+			Bu yeteneÄŸe sahip Roller
+		</text>
+		<text name="static3">
+			Bu yeteneÄŸe sahip Ãœyeler
+		</text>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..aebdc6b48dd944abf6fe0da209b6144b8194f3de
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_im_control_panel.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_im_control_panel">
+	<layout_stack name="button_stack">
+		<layout_panel name="view_profile_btn_panel">
+			<button label="Profil" name="view_profile_btn"/>
+		</layout_panel>
+		<layout_panel name="add_friend_btn_panel">
+			<button label="ArkadaÅŸ Ekle" name="add_friend_btn"/>
+		</layout_panel>
+		<layout_panel name="teleport_btn_panel">
+			<button label="Işınla" name="teleport_btn" tool_tip="Bu kişiyi ışınlamayı teklif et"/>
+		</layout_panel>
+		<layout_panel name="share_btn_panel">
+			<button label="PaylaÅŸ" name="share_btn"/>
+		</layout_panel>
+		<layout_panel name="pay_btn_panel">
+			<button label="Öde" name="pay_btn"/>
+		</layout_panel>
+		<layout_panel name="call_btn_panel">
+			<button label="Ara" name="call_btn"/>
+		</layout_panel>
+		<layout_panel name="end_call_btn_panel">
+			<button label="Aramayı Bitir" name="end_call_btn"/>
+		</layout_panel>
+		<layout_panel name="voice_ctrls_btn_panel">
+			<button label="Ses Denetimleri" name="voice_ctrls_btn"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_instant_message.xml b/indra/newview/skins/default/xui/tr/panel_instant_message.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cf9bc7fccb7aae564f2789e005b10e840a49deff
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_instant_message.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="im_panel" name="im_panel">
+	<string name="message_max_lines_count">
+		6
+	</string>
+	<panel label="im_header" name="im_header">
+		<text name="time_box" value="23:30"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_inventory_item.xml b/indra/newview/skins/default/xui/tr/panel_inventory_item.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d18047fbcfaff5835094aa3aeb54e1f0ba47c183
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_inventory_item.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="inventory_item">
+	<text name="item_name" value="..."/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_landmark_info.xml b/indra/newview/skins/default/xui/tr/panel_landmark_info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2cad753f25a2f33b0d99129cc8783928eb644159
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_landmark_info.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="landmark_info">
+	<string name="title_create_landmark" value="Yer Ä°mi OluÅŸtur"/>
+	<string name="title_edit_landmark" value="Yer İmini Düzenle"/>
+	<string name="title_landmark" value="Yer Ä°mi"/>
+	<string name="not_available" value="(G/D)"/>
+	<string name="unknown" value="(bilinmiyor)"/>
+	<string name="public" value="(kamuya açık)"/>
+	<string name="server_update_text">
+		Sunucu güncelleştirmesi olmadan yer bilgisi mevcut olmaz.
+	</string>
+	<string name="server_error_text">
+		Bu konum hakkında şu anda bilgi mevcut değil, lütfen daha sonra tekrar deneyin.
+	</string>
+	<string name="server_forbidden_text">
+		Erişim kısıtlamaları nedeniyle bu konum hakkında bilgiye erişilemiyor.  Lütfen parsel sahibi nezdinde izinlerinizi kontrol edin.
+	</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="Geri"/>
+	<text name="title" value="Profili YerleÅŸtir"/>
+	<scroll_container name="place_scroll">
+		<panel name="scrolling_panel">
+			<text name="region_title" value="Örnek Bölge"/>
+			<text name="parcel_title" value="Örnek Parsel, Uzun Ad (145, 228, 26)"/>
+			<expandable_text name="description" value="Du waltz die spritz"/>
+			<text name="maturity_value" value="bilinmiyor"/>
+			<panel name="landmark_info_panel">
+				<text name="owner_label" value="Sahip:"/>
+				<text name="creator_label" value="OluÅŸturan:"/>
+				<text name="created_label" value="OluÅŸturuldu:"/>
+			</panel>
+			<panel name="landmark_edit_panel">
+				<text name="title_label" value="Başlık:"/>
+				<text name="notes_label" value="Notlarım:"/>
+				<text name="folder_label" value="Yer imi konumu:"/>
+			</panel>
+		</panel>
+	</scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_landmarks.xml b/indra/newview/skins/default/xui/tr/panel_landmarks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d40d0c15434491b826684269514dc3422a3dcb71
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_landmarks.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Landmarks">
+	<accordion name="landmarks_accordion">
+		<accordion_tab name="tab_favorites" title="Favoriler çubuğu"/>
+		<accordion_tab name="tab_landmarks" title="Yer Ä°mlerim"/>
+		<accordion_tab name="tab_inventory" title="Envanterim"/>
+		<accordion_tab name="tab_library" title="Kütüphane"/>
+	</accordion>
+	<panel name="bottom_panel">
+		<layout_stack name="bottom_panel">
+			<layout_panel name="options_gear_btn_panel">
+				<menu_button name="options_gear_btn" tool_tip="İlave seçenekleri göster"/>
+			</layout_panel>
+			<layout_panel name="add_btn_panel">
+				<button name="add_btn" tool_tip="Yeni yer imi ekle"/>
+			</layout_panel>
+			<layout_panel name="trash_btn_panel">
+				<dnd_button name="trash_btn" tool_tip="Seçilen yer imini sil"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_login.xml b/indra/newview/skins/default/xui/tr/panel_login.xml
new file mode 100644
index 0000000000000000000000000000000000000000..acd6aa1921d5482475f643bf063c581466aee5cf
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_login.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_login">
+	<panel.string name="create_account_url">
+		http://join.secondlife.com/
+	</panel.string>
+	<panel.string name="forgot_password_url">
+		http://secondlife.com/account/request.php
+	</panel.string>
+	<layout_stack name="login_widgets">
+		<layout_panel name="login">
+			<text name="username_text">
+				Kullanıcı Adı:
+			</text>
+			<combo_box name="username_combo" tool_tip="Kaydolduğunuzda seçtiğiniz kullanıcı adı, örn. mustafayalcin12 veya Faruk Gungoren"/>
+			<text name="password_text">
+				Parola:
+			</text>
+			<check_box label="Parolayı hatırla" name="remember_check"/>
+			<button label="Oturum Aç" name="connect_btn"/>
+			<text name="mode_selection_text">
+				Mod:
+			</text>
+			<combo_box name="mode_combo" tool_tip="Modunuzu seçin. Hızlı, kolay keşif yapmak ve sohbet için Temel seçimini yapın. Daha fazla özelliğe erişmek için Gelişmiş seçimini yapın.">
+				<combo_box.item label="Temel" name="Basic"/>
+				<combo_box.item label="GeliÅŸmiÅŸ" name="Advanced"/>
+			</combo_box>
+			<text name="start_location_text">
+				Buradan baÅŸla:
+			</text>
+			<combo_box name="start_location_combo">
+				<combo_box.item label="Son konumum" name="MyLastLocation"/>
+				<combo_box.item label="Ana Konumum" name="MyHome"/>
+				<combo_box.item label="&lt;Bölge adını girin&gt;" name="Typeregionname"/>
+			</combo_box>
+		</layout_panel>
+		<layout_panel name="links">
+			<text name="create_new_account_text">
+				Kaydolun
+			</text>
+			<text name="forgot_password_text">
+				Kullanıcı adınızı veya parolanızı mı unuttunuz?
+			</text>
+			<text name="login_help">
+				Oturum açarken yardım mı gerekiyor?
+			</text>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_main_inventory.xml b/indra/newview/skins/default/xui/tr/panel_main_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c69fb39130cf084df9957fccd2639ad0cd65481a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_main_inventory.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="EÅŸyalar" name="main inventory panel">
+	<panel.string name="ItemcountFetching">
+		[ITEM_COUNT] Öge Alınıyor... [FILTER]
+	</panel.string>
+	<panel.string name="ItemcountCompleted">
+		[ITEM_COUNT] Öge [FILTER]
+	</panel.string>
+	<text name="ItemcountText">
+		Ögeler:
+	</text>
+	<filter_editor label="Envanteri Filtrele" name="inventory search editor"/>
+	<tab_container name="inventory filter tabs">
+		<inventory_panel label="ENVANTERÄ°M" name="All Items"/>
+		<recent_inventory_panel label="SON" name="Recent Items"/>
+	</tab_container>
+	<layout_stack name="bottom_panel">
+		<layout_panel name="options_gear_btn_panel">
+			<menu_button name="options_gear_btn" tool_tip="İlave seçenekleri göster"/>
+		</layout_panel>
+		<layout_panel name="add_btn_panel">
+			<button name="add_btn" tool_tip="Yeni öge ekle"/>
+		</layout_panel>
+		<layout_panel name="trash_btn_panel">
+			<dnd_button name="trash_btn" tool_tip="Seçilen öğeyi sil"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_me.xml b/indra/newview/skins/default/xui/tr/panel_me.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4b911c9ce6acf469a473c6a3c1062c72cf35be10
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_me.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Profilim" name="panel_me">
+	<panel label="SEÇMELERİM" name="panel_picks"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..89e78b75de3b19d4c37f7e6ac3b6ed97184b1764
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_media_settings_general.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Genel" name="Media Settings General">
+	<text name="home_label">
+		Ana Sayfa:
+	</text>
+	<text name="home_fails_whitelist_label">
+		(Bu sayfa belirtilen izin verilenler listesinden geçmez)
+	</text>
+	<line_editor name="home_url" tool_tip="Bu ortam kaynağının ana sayfası"/>
+	<text name="preview_label">
+		Önizleme
+	</text>
+	<text name="current_url_label">
+		Mevcut Sayfa:
+	</text>
+	<text name="current_url" tool_tip="Bu ortam kaynağının şu anki sayfası" value=""/>
+	<button label="Sıfırla" name="current_url_reset_btn"/>
+	<check_box initial_value="false" label="Otomatik Tekrarla" name="auto_loop"/>
+	<check_box initial_value="false" label="İlk Tıklama Etkileşimleri" name="first_click_interact"/>
+	<check_box initial_value="false" label="Otomatik Zumla" name="auto_zoom"/>
+	<check_box initial_value="false" label="Ortamı Otomatik Oynat" name="auto_play"/>
+	<text name="media_setting_note">
+		Not: Sakinler bu ayarı geçersiz kılabilir
+	</text>
+	<check_box initial_value="false" label="Nesne Yüzünde Ortamı Otomatik Ölçekle" name="auto_scale"/>
+	<text name="size_label">
+		Büyüklük:
+	</text>
+	<text name="X_label">
+		X
+	</text>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..6c0b14a88927e737fd3b9f423421372376f9de93
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_media_settings_permissions.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Özelleştir" name="Media settings for controls">
+	<text name="controls_label">
+		Denetimler:
+	</text>
+	<combo_box name="controls">
+		<combo_item name="Standard">
+			Standart
+		</combo_item>
+		<combo_item name="Mini">
+			Mini
+		</combo_item>
+	</combo_box>
+	<text name="owner_label">
+		Sahip
+	</text>
+	<check_box initial_value="false" label="Gezinme ve EtkileÅŸime Ä°zin Ver" name="perms_owner_interact"/>
+	<check_box initial_value="false" label="Denetim Çubuğunu Göster" name="perms_owner_control"/>
+	<text name="group_label">
+		Grup:
+	</text>
+	<check_box initial_value="false" label="Gezinme ve EtkileÅŸime Ä°zin Ver" name="perms_group_interact"/>
+	<check_box initial_value="false" label="Denetim Çubuğunu Göster" name="perms_group_control"/>
+	<text name="anyone_label">
+		Herkes
+	</text>
+	<check_box initial_value="false" label="Gezinme ve EtkileÅŸime Ä°zin Ver" name="perms_anyone_interact"/>
+	<check_box initial_value="false" label="Denetim Çubuğunu Göster" name="perms_anyone_control"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..da3ca1bd29b6814c7fb6878e8f2d601e38160656
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_media_settings_security.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Güvenlik" name="Media Settings Security">
+	<check_box initial_value="false" label="Sadece Belirlenen URL Desenlerine EriÅŸime Ä°zin Ver" name="whitelist_enable"/>
+	<text name="home_url_fails_some_items_in_whitelist">
+		Ana sayfanın başarısız olduğu girişler işaretli:
+	</text>
+	<button label="Ekle" name="whitelist_add"/>
+	<button label="Sil" name="whitelist_del"/>
+	<text name="home_url_fails_whitelist">
+		Uyarı: Genel sekmesinde belirtilen ana sayfa bu beyaz listede yer almıyor. Geçerli bir giriş ekleninceye kadar devre dışı bırakıldı.
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml b/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8d43e3fb5a26afd0f5e1d78accce0fbb08f06ec5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_navigation_bar.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="navigation_bar">
+	<layout_stack name="nvp_stack">
+		<layout_panel name="navigation_layout_panel">
+			<panel name="navigation_panel">
+				<pull_button name="back_btn" tool_tip="Önceki konuma geri git"/>
+				<pull_button name="forward_btn" tool_tip="Bir konum ileri git"/>
+				<button name="home_btn" tool_tip="Ana konumuma ışınla"/>
+				<location_input label="Konum" name="location_combo"/>
+			</panel>
+		</layout_panel>
+		<layout_panel name="favorites_layout_panel">
+			<favorites_bar name="favorite" tool_tip="Second Life içerisinde sık kullandığınız yerlere hızla erişmek için Yer İmlerini buraya sürükleyin!">
+				<label name="favorites_bar_label" tool_tip="Second Life içerisinde sık kullandığınız yerlere hızla erişmek için Yer İmlerini buraya sürükleyin!">
+					Favoriler Çubuğu
+				</label>
+				<more_button name="&gt;&gt;" tool_tip="Favorilerimden daha çok göster">
+					Daha Fazla â–¼
+				</more_button>
+			</favorites_bar>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml b/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c405105e007570dacc5541ba2508f88db2bbb676
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_nearby_chat.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_chat">
+	<check_box label="Sohbeti çevir" name="translate_chat_checkbox"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..fd954475acdb2e6b1aab1ac0be54a80ad2af5697
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_nearby_chat_bar.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="chat_bar">
+	<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/tr/panel_nearby_media.xml b/indra/newview/skins/default/xui/tr/panel_nearby_media.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a654b2ac1471e6ccb5e8d92ab8c65789e3240a98
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_nearby_media.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="nearby_media">
+	<string name="media_item_count_format">
+		(%d ortamı ögesi)
+	</string>
+	<string name="empty_item_text">
+		&lt;boÅŸ&gt;
+	</string>
+	<string name="parcel_media_name">
+		Parsel Akış Ortamı
+	</string>
+	<string name="parcel_audio_name">
+		Parsel Akış Sesi
+	</string>
+	<string name="playing_suffix">
+		(oynatılıyor)
+	</string>
+	<panel name="minimized_controls">
+		<button label="Tümünü Durdur" name="all_nearby_media_disable_btn" tool_tip="Tüm yakın ortamları kapat"/>
+		<button label="Tümünü Başlat" name="all_nearby_media_enable_btn" tool_tip="Tüm yakın ortamları aç"/>
+		<button name="open_prefs_btn" tool_tip="Ortam tercihlerini getirir"/>
+		<button label="Daha Fazla &gt;&gt;" label_selected="&lt;&lt; Daha Az" name="more_btn" tool_tip="GeliÅŸmiÅŸ Kontroller"/>
+	</panel>
+	<panel name="nearby_media_panel">
+		<text name="nearby_media_title">
+			Yakındaki Ortamlar
+		</text>
+		<text name="show_text">
+			Göster :
+		</text>
+		<combo_box name="show_combo">
+			<combo_box.item label="Tümü" name="All"/>
+			<combo_box.item label="Bu Parseldeki" name="WithinParcel"/>
+			<combo_box.item label="Bu Parselin Dışında" name="OutsideParcel"/>
+			<combo_box.item label="DiÄŸer Avatarlarda" name="OnOthers"/>
+		</combo_box>
+		<scroll_list name="media_list">
+			<scroll_list.columns label="Yakınlık" name="media_proximity"/>
+			<scroll_list.columns label="Görünür" name="media_visibility"/>
+			<scroll_list.columns label="Sınıf" name="media_class"/>
+			<scroll_list.columns label="Ad" name="media_name"/>
+			<scroll_list.columns label="Hata ayıkla" name="media_debug"/>
+		</scroll_list>
+		<panel name="media_controls_panel">
+			<layout_stack name="media_controls">
+				<layout_panel name="stop">
+					<button name="stop_btn" tool_tip="Seçilen ortamı durdur"/>
+				</layout_panel>
+				<layout_panel name="play">
+					<button name="play_btn" tool_tip="Seçilen ortamı oynat"/>
+				</layout_panel>
+				<layout_panel name="pause">
+					<button name="pause_btn" tool_tip="Seçilen ortamı duraklat"/>
+				</layout_panel>
+				<layout_panel name="volume_slider_ctrl">
+					<slider_bar initial_value="0.5" name="volume_slider" tool_tip="Seçilen ortamı için ses düzeyi"/>
+				</layout_panel>
+				<layout_panel name="mute">
+					<button name="mute_btn" tool_tip="Seçilen ortamda ses sustur"/>
+				</layout_panel>
+				<layout_panel name="zoom">
+					<button name="zoom_btn" tool_tip="Seçilen ortama yakınlaştır"/>
+				</layout_panel>
+				<layout_panel name="unzoom">
+					<button name="unzoom_btn" tool_tip="Seçilen ortamdan uzaklaştır"/>
+				</layout_panel>
+			</layout_stack>
+		</panel>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml b/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b893da2a71cbd652568a261260ac8217316427c4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_notify_textbox.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="instant_message" name="panel_notify_textbox">
+	<string name="message_max_lines_count" value="7"/>
+	<panel label="info_panel" name="info_panel">
+		<text_editor name="message" value="ileti"/>
+	</panel>
+	<panel label="control_panel" name="control_panel">
+		<button label="Gönder" name="btn_submit"/>
+		<button label="Yok say" name="ignore_btn"/>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..fdc489f375ec6eabd344b633f4fb6eb00c3ccef3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_online_status_toast.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="friend_online_status" name="friend_online_status"/>
diff --git a/indra/newview/skins/default/xui/tr/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/tr/panel_outbox_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a947eee15051bc3291abca4474b1e298bb7370f0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_outbox_inventory.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<outbox_inventory_panel name="inventory_outbox" tool_tip="Öğeleri vitrininizde satışa hazırlamak için sürükleyip buraya bırakın"/>
diff --git a/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml b/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml
new file mode 100644
index 0000000000000000000000000000000000000000..00cd49abcdef2a196150d4fea7381a154bbc277c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_outfit_edit.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Side tray Outfit Edit panel -->
+<panel name="outfit_edit">
+	<string name="No Outfit" value="Dış Görünüm Yok"/>
+	<string name="unsaved_changes" value="KaydedilmemiÅŸ DeÄŸiÅŸiklikler"/>
+	<string name="now_editing" value="Şimdi Düzenleniyor"/>
+	<panel.string name="not_available">
+		(G/D)
+	</panel.string>
+	<panel.string name="unknown">
+		(bilinmiyor)
+	</panel.string>
+	<string name="Filter.All" value="Tümü"/>
+	<string name="Filter.Clothes/Body" value="Giysiler/Gövde"/>
+	<string name="Filter.Objects" value="Nesneler"/>
+	<string name="Filter.Clothing" value="Giysiler"/>
+	<string name="Filter.Bodyparts" value="Vücut bölümleri"/>
+	<string name="replace_body_part" value="Mevcut şeklinizi değiştirmek için tıklayın"/>
+	<text name="title" value="Dış Görünümü Düzenle"/>
+	<panel name="header_panel">
+		<panel name="outfit_name_and_status">
+			<text name="status" value="Şimdi düzenleniyor..."/>
+			<text name="curr_outfit_name" value="[Mevcut Dış Görünüm]"/>
+		</panel>
+	</panel>
+	<layout_stack name="im_panels">
+		<layout_panel name="outfit_wearables_panel">
+			<layout_stack name="filter_panels">
+				<layout_panel name="add_button_and_combobox">
+					<button label="Daha Fazla Ekle..." name="show_add_wearables_btn" tool_tip="Aç/Kapa"/>
+				</layout_panel>
+				<layout_panel name="filter_panel">
+					<filter_editor label="Giyilebilirler Envanterini Filtrele" name="look_item_filter"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="add_wearables_panel">
+			<button label="Ögeyi Giy" name="plus_btn"/>
+		</layout_panel>
+	</layout_stack>
+	<panel name="no_add_wearables_button_bar">
+		<button name="shop_btn_1" tool_tip="SL Pazarını Ziyaret Et. Ayrıca giymekte olduğunuz bir şeyi de seçebilir ve buraya tıklayarak benzer şeylere bakabilirsiniz"/>
+	</panel>
+	<panel name="add_wearables_button_bar">
+		<button name="shop_btn_2" tool_tip="SL Pazarını Ziyaret Et. Ayrıca giymekte olduğunuz bir şeyi de seçebilir ve buraya tıklayarak benzer şeylere bakabilirsiniz"/>
+	</panel>
+	<panel name="save_revert_button_bar">
+		<layout_stack name="button_bar_ls">
+			<layout_panel name="save_btn_lp">
+				<button label="Kaydet" name="save_btn"/>
+			</layout_panel>
+			<layout_panel name="revert_btn_lp">
+				<button label="Değişiklikleri Geri Al" name="revert_btn" tool_tip="Son kaydedilen versiyona dön"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..550f7ebf10588897a47a724c818c44f77cdde497
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_outfits_inventory.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="EÅŸyalar" name="Outfits">
+	<panel.string name="wear_outfit_tooltip">
+		Seçilen dış görünümü giy
+	</panel.string>
+	<panel.string name="wear_items_tooltip">
+		Seçilen öğeleri giy
+	</panel.string>
+	<tab_container name="appearance_tabs">
+		<panel label="DIŞ GÖRÜNÜMLERİM" name="outfitslist_tab"/>
+		<panel label="GÄ°YÄ°LEN" name="cof_tab"/>
+	</tab_container>
+	<panel name="bottom_panel">
+		<layout_stack name="bottom_panel_ls">
+			<layout_panel name="save_btn_lp">
+				<button label="Farklı Kaydet" name="save_btn"/>
+			</layout_panel>
+			<layout_panel name="wear_btn_lp">
+				<button label="Giy" name="wear_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..d222f1a6e3b713e8f46dbabb7f885342700f2661
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_outfits_inventory_gear_default.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<menu name="menu_gear_default">
+	<menu_item_call label="Mevcut Dış Görünümü Değiştir" name="wear"/>
+	<menu_item_call label="Mevcut Dış Görünümden Kaldır" name="remove"/>
+	<menu_item_call label="Yeniden Adlandır" name="rename"/>
+	<menu_item_call label="Bağlantıyı Kaldır" name="remove_link"/>
+	<menu_item_call label="Dış Görünümü Sil" name="delete"/>
+</menu>
diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_list.xml b/indra/newview/skins/default/xui/tr/panel_outfits_list.xml
new file mode 100644
index 0000000000000000000000000000000000000000..60a3576d845dfc3e241588556882b716c75f38e7
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_outfits_list.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Outfits">
+	<accordion name="outfits_accordion">
+		<no_matched_tabs_text name="no_matched_outfits_msg" value="Aradığınızı bulamadınız mı? [secondlife:///app/search/all/[SEARCH_TERM] Arama] yapmayı deneyin."/>
+		<no_visible_tabs_text name="no_outfits_msg" value="Henüz herhangi bir dış görünümünüz yok. Try [secondlife:///app/search/all/ Arama] yapmayı deneyin"/>
+	</accordion>
+	<panel name="bottom_panel">
+		<menu_button name="options_gear_btn" tool_tip="İlave seçenekleri göster"/>
+		<button name="trash_btn" tool_tip="Seçili dış görünümü sil"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml
new file mode 100644
index 0000000000000000000000000000000000000000..462926738f68c3c6cc3c1466e17a6638b8805026
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_outfits_wearing.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Wearing">
+	<panel name="bottom_panel">
+		<menu_button name="options_gear_btn" tool_tip="İlave seçenekleri göster"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_people.xml b/indra/newview/skins/default/xui/tr/panel_people.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1a1e53bac20f28980a07a38a36feda5b0690bed1
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_people.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Side tray panel -->
+<panel label="KiÅŸiler" name="people_panel">
+	<string name="no_recent_people" value="Yakın zamanlı kişi yok. Birlikte takılacak kişiler mi arıyorsunuz? [secondlife:///app/search/people Arayı] veya [secondlife:///app/worldmap Dünya Haritasını] deneyin."/>
+	<string name="no_filtered_recent_people" value="Aradığınızı bulamadınız mı? [secondlife:///app/search/people/[SEARCH_TERM] Ara] deneyin."/>
+	<string name="no_one_near" value="Yakında kimse yok. Birlikte takılacak kişiler mi arıyorsunuz? [secondlife:///app/search/people Arayın] veya [secondlife:///app/worldmap Dünya Haritasını] deneyin."/>
+	<string name="no_one_filtered_near" value="Aradığınızı bulamadınız mı? [secondlife:///app/search/people/[SEARCH_TERM] Ara] deneyin."/>
+	<string name="no_friends_online" value="Çevrimiçi arkadaş yok"/>
+	<string name="no_friends" value="ArkadaÅŸ yok"/>
+	<string name="no_friends_msg">
+		[secondlife:///app/search/people Ara] kullanarak arkadaş bulun veya arkadaş olarak eklemek için bir Sakin üzerine sağ tıklayın.
+Birlikte takılacak kişiler mi arıyorsunuz? [secondlife:///app/worldmap Dünya Haritasını] deneyin.
+	</string>
+	<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>
+		</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="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="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>
+	</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_pick_info.xml b/indra/newview/skins/default/xui/tr/panel_pick_info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f2bbfac232e3e930c711f9172194142894e4b8ad
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_pick_info.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_pick_info">
+	<text name="title" value="Seçme Bilgileri"/>
+	<scroll_container name="profile_scroll">
+		<panel name="scroll_content_panel">
+			<text_editor name="pick_name" value="[ad]"/>
+			<text_editor name="pick_location" value="[yükleniyor...]"/>
+			<text_editor name="pick_desc" value="[açıklama]"/>
+		</panel>
+	</scroll_container>
+	<panel name="buttons">
+		<layout_stack name="layout_stack1">
+			<layout_panel name="layout_panel1">
+				<button label="Işınla" name="teleport_btn"/>
+			</layout_panel>
+			<layout_panel name="show_on_map_btn_lp">
+				<button label="Harita" name="show_on_map_btn"/>
+			</layout_panel>
+			<layout_panel name="edit_btn_lp">
+				<button label="Düzenle" name="edit_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_picks.xml b/indra/newview/skins/default/xui/tr/panel_picks.xml
new file mode 100644
index 0000000000000000000000000000000000000000..26beac7854891238371a4a4b4325398fa2c4e201
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_picks.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Favorilerim" name="panel_picks">
+	<string name="no_picks" value="Seçme Yok"/>
+	<string name="no_classifieds" value="Ä°lan Yok"/>
+	<accordion name="accordion">
+		<accordion_tab name="tab_picks" title="Seçmelerim"/>
+		<accordion_tab name="tab_classifieds" title="Ä°lanlar"/>
+	</accordion>
+	<panel label="bottom_panel" name="edit_panel">
+		<layout_stack name="edit_panel_ls">
+			<layout_panel name="gear_menu_btn">
+				<button name="new_btn" tool_tip="Mevcut konumda yeni bir seçme veya ilan oluşturun"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+	<panel name="buttons_cucks">
+		<layout_stack name="buttons_cucks_ls">
+			<layout_panel name="info_btn_lp">
+				<button label="Bilgi" name="info_btn" tool_tip="Seçme bilgilerini göster"/>
+			</layout_panel>
+			<layout_panel name="teleport_btn_lp">
+				<button label="Işınla" name="teleport_btn" tool_tip="İlişkili alana ışınlanın"/>
+			</layout_panel>
+			<layout_panel name="show_on_map_btn_lp">
+				<button label="Harita" name="show_on_map_btn" tool_tip="İlişkili alanı Dünya Haritasında göster"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_place_profile.xml b/indra/newview/skins/default/xui/tr/panel_place_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f42cde0ace77eb6a1a14814422fffd280bb81f6e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_place_profile.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="place_profile">
+	<string name="on" value="Açık"/>
+	<string name="off" value="Kapalı"/>
+	<string name="anyone" value="Herkes"/>
+	<string name="available" value="kullanılabilir"/>
+	<string name="allocated" value="tahsis edilen"/>
+	<string name="title_place" value="Profili YerleÅŸtir"/>
+	<string name="title_teleport_history" value="Işınlanma Geçmişi"/>
+	<string name="not_available" value="(G/D)"/>
+	<string name="unknown" value="(bilinmiyor)"/>
+	<string name="public" value="(kamuya açık)"/>
+	<string name="none_text" value="(hiçbiri)"/>
+	<string name="sale_pending_text" value="(Satış Bekliyor)"/>
+	<string name="group_owned_text" value="(Sahibi Olunan Grup)"/>
+	<string name="price_text" value="L$"/>
+	<string name="area_text" value="m²"/>
+	<string name="all_residents_text" value="Tüm Second Life Sakinleri"/>
+	<string name="group_text" value="Grup"/>
+	<string name="can_resell">
+		Bu bölgede satın alınan arazi tekrar satılabilir.
+	</string>
+	<string name="can_not_resell">
+		Bu bölgede satın alınan arazi tekrar satılamayabilir.
+	</string>
+	<string name="can_change">
+		Bu bölgede satın alınan arazi birleştirilebilir veya bölünebilir.
+	</string>
+	<string name="can_not_change">
+		Bu bölgede satın alınan arazi birleştirilemeyebilir veya bölünemeyebilir.
+	</string>
+	<string name="server_update_text">
+		Sunucu güncelleştirmesi olmadan yer bilgisi mevcut olmaz.
+	</string>
+	<string name="server_error_text">
+		Bu konum hakkında şu anda bilgi mevcut değil, lütfen daha sonra tekrar deneyin.
+	</string>
+	<string name="server_forbidden_text">
+		Erişim kısıtlamaları nedeniyle bu konum hakkında bilgiye erişilemiyor.  Lütfen parsel sahibi nezdinde izinlerinizi kontrol edin.
+	</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="Geri"/>
+	<text name="title" value="Profili YerleÅŸtir"/>
+	<scroll_container name="place_scroll">
+		<panel name="scrolling_panel">
+			<text name="region_title" value="Örnek Bölge"/>
+			<text name="parcel_title" value="Örnek Parsel, Uzun Ad (145, 228, 26)"/>
+			<expandable_text name="description" value="Du waltz die spritz"/>
+			<text name="owner_label" value="Sahip:"/>
+			<text name="owner_value" value="Alex Superduperlongenamenton"/>
+			<text name="maturity_value" value="bilinmiyor"/>
+			<accordion name="advanced_info_accordion">
+				<accordion_tab name="parcel_characteristics_tab" title="Parsel">
+					<panel name="parcel_characteristics_panel">
+						<text name="rating_label" value="Seviye:"/>
+						<text name="rating_value" value="bilinmiyor"/>
+						<text name="voice_label" value="Sesli:"/>
+						<text name="voice_value" value="Açık"/>
+						<text name="fly_label" value="Uçma:"/>
+						<text name="fly_value" value="Açık"/>
+						<text name="push_label" value="Ä°tme:"/>
+						<text name="push_value" value="Kapalı"/>
+						<text name="build_label" value="Ä°nÅŸa Et:"/>
+						<text name="build_value" value="Açık"/>
+						<text name="scripts_label" value="Komut Dosyaları:"/>
+						<text name="scripts_value" value="Açık"/>
+						<text name="damage_label" value="Hasar:"/>
+						<text name="damage_value" value="Kapalı"/>
+						<text name="see_avatars_label" value="Avatarları Gör:"/>
+						<text name="see_avatars_value" value="Kapalı"/>
+						<button label="Arazi Hakkında" name="about_land_btn"/>
+					</panel>
+				</accordion_tab>
+				<accordion_tab name="region_information_tab" title="Bölge">
+					<panel name="region_information_panel">
+						<text name="region_name_label" value="Bölge:"/>
+						<text name="region_name" value="Geyik arazisi"/>
+						<text name="region_type_label" value="Tür:"/>
+						<text name="region_type" value="Geyik"/>
+						<text name="region_rating_label" value="Seviye:"/>
+						<text name="region_rating" value="YetiÅŸkin"/>
+						<text name="region_owner_label" value="Sahip:"/>
+						<text name="region_owner" value="geyik Can Geyik ekstra uzun ad geyik"/>
+						<text name="region_group_label" value="Grup:"/>
+						<text name="region_group">
+							Geyik Şehrinin Güçlü Geyiği soundvillemoose
+						</text>
+						<button label="Bölge/Gayrimenkul" name="region_info_btn"/>
+					</panel>
+				</accordion_tab>
+				<accordion_tab name="estate_information_tab" title="Gayrimenkul">
+					<panel name="estate_information_panel">
+						<text name="estate_name_label" value="Gayrimenkul:"/>
+						<text name="estate_rating_label" value="Seviye:"/>
+						<text name="estate_owner_label" value="Sahip:"/>
+						<text name="estate_owner" value="Sahip adının uzunluğu uzun adla deneniyor"/>
+						<text name="covenant_label" value="Sözleşme:"/>
+					</panel>
+				</accordion_tab>
+				<accordion_tab name="sales_tab" title="Satılık">
+					<panel name="sales_panel">
+						<text name="sales_price_label" value="Fiyat:"/>
+						<text name="area_label" value="Alan:"/>
+						<text name="traffic_label" value="Trafik:"/>
+						<text name="primitives_label" value="Temel öğeler:"/>
+						<text name="parcel_scripts_label" value="Komut Dosyaları:"/>
+						<text name="terraform_limits_label" value="Yer ÅŸekillendirme limitleri:"/>
+						<text name="subdivide_label" value="Bölme/Katma yeteneği:"/>
+						<text name="resale_label" value="Tekrar Satış yeteneği:"/>
+						<text name="sale_to_label" value="Şu Alıcıya Satılık:"/>
+					</panel>
+				</accordion_tab>
+			</accordion>
+		</panel>
+	</scroll_container>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_places.xml b/indra/newview/skins/default/xui/tr/panel_places.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c2a3acf9c53b4bd4c2c7bb0e595ad595932551cd
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_places.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Yerler" name="places panel">
+	<string name="landmarks_tab_title" value="YER Ä°MLERÄ°M"/>
+	<string name="teleport_history_tab_title" value="IŞINLAMA GEÇMİŞİ"/>
+	<filter_editor label="Yerlerimi Filtrele" name="Filter"/>
+	<panel name="button_panel">
+		<layout_stack name="bottom_bar_ls0">
+			<layout_panel name="lp1">
+				<layout_stack name="bottom_bar_ls1">
+					<layout_panel name="teleport_btn_lp">
+						<button label="Işınla" name="teleport_btn" tool_tip="Seçilen alana ışınla"/>
+					</layout_panel>
+					<layout_panel name="chat_btn_lp">
+						<button label="Harita" name="map_btn" tool_tip="İlişkili alanı Dünya Haritasında göster"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+			<layout_panel name="lp2">
+				<layout_stack name="bottom_bar_ls3">
+					<layout_panel name="edit_btn_lp">
+						<button label="Düzenle" name="edit_btn" tool_tip="Yer imi bilgisini düzenle"/>
+					</layout_panel>
+					<layout_panel name="overflow_btn_lp">
+						<menu_button name="overflow_btn" tool_tip="İlave seçenekleri göster"/>
+					</layout_panel>
+				</layout_stack>
+				<layout_stack name="bottom_bar_profile_ls">
+					<layout_panel name="profile_btn_lp">
+						<button label="Profil" name="profile_btn" tool_tip="Yer profilini göster"/>
+					</layout_panel>
+				</layout_stack>
+				<layout_stack name="bottom_bar_close_ls3">
+					<layout_panel name="close_btn_lp">
+						<button label="Kapat" name="close_btn"/>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+		<layout_stack name="bottom_bar_ls2">
+			<layout_panel name="save_btn_lp">
+				<button label="Kaydet" name="save_btn"/>
+			</layout_panel>
+			<layout_panel name="cancel_btn_lp">
+				<button label="Ä°ptal" name="cancel_btn"/>
+			</layout_panel>
+		</layout_stack>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_postcard_message.xml b/indra/newview/skins/default/xui/tr/panel_postcard_message.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2361f4c1c3ef994e8d50fc81c42b8135928b6761
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_postcard_message.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_message">
+	<text name="to_label">
+		Kime:
+	</text>
+	<text name="name_label">
+		Kimden:
+	</text>
+	<text name="subject_label">
+		Konu:
+	</text>
+	<line_editor label="Konunuzu buraya yazın." name="subject_form"/>
+	<text name="msg_label">
+		Ä°leti:
+	</text>
+	<text_editor name="msg_form">
+		İletinizi buraya yazın.
+	</text_editor>
+	<button label="Ä°ptal" name="cancel_btn"/>
+	<button label="Gönder" name="send_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_postcard_settings.xml b/indra/newview/skins/default/xui/tr/panel_postcard_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bce0b21b9a609ca697e8ca0df1d30bd2854dcea3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_postcard_settings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_postcard_settings">
+	<combo_box label="Çözünürlük" name="postcard_size_combo">
+		<combo_box.item label="Mevcut Pencere" name="CurrentWindow"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="Özel" name="Custom"/>
+	</combo_box>
+	<layout_stack name="postcard_image_params_ls">
+		<layout_panel name="postcard_image_size_lp">
+			<spinner label="GeniÅŸlik" name="postcard_snapshot_width"/>
+			<spinner label="Yükseklik" name="postcard_snapshot_height"/>
+			<check_box label="Oranları koru" name="postcard_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="postcard_image_format_quality_lp">
+			<slider label="Görüntü kalitesi" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml
new file mode 100644
index 0000000000000000000000000000000000000000..770cdc6efd4b2f66c4de8069cbfa0272aeb65530
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_advanced.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="GeliÅŸmiÅŸ" name="advanced">
+	<panel.string name="aspect_ratio_text">
+		[NUM]:[DEN]
+	</panel.string>
+	<text name="Cache:">
+		Önbellek:
+	</text>
+	<spinner label="Önbellek boyutu (64-9984 MB)" name="cachesizespinner"/>
+	<text name="text_box5">
+		MB
+	</text>
+	<button label="Önbelleği Sil" label_selected="Önbelleği Sil" name="clear_cache"/>
+	<text name="Cache location">
+		Önbellek konumu:
+	</text>
+	<button label="Gözat" label_selected="Gözat" name="set_cache"/>
+	<button label="Varsayılan Konum" label_selected="Varsayılan Konum" name="default_cache_location"/>
+	<text name="UI Size:">
+		KA büyüklüğü:
+	</text>
+	<check_box label="Şuradaki komut dosyası hatalarını göster:" name="show_script_errors"/>
+	<radio_group name="show_location">
+		<radio_item label="Yakındaki sohbet" name="0"/>
+		<radio_item label="Ayrı pencere" name="1"/>
+	</radio_group>
+	<check_box label="Birden Çok Görüntüleyiciye İzin Ver" name="allow_multiple_viewer_check"/>
+	<check_box label="Oturum açarken Ağ Seçimini göster" name="show_grid_selection_check"/>
+	<check_box label="Gelişmiş Menüyü Göster" name="show_advanced_menu_check"/>
+	<check_box label="Geliştirici Menüsünü Göster" name="show_develop_menu_check"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/tr/panel_preferences_alerts.xml
new file mode 100644
index 0000000000000000000000000000000000000000..46a4793c5314592d305a1d98b94dbd0fc57a4337
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_alerts.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Açılır Uyarılar" name="popups">
+	<text name="tell_me_label">
+		Bana söyle:
+	</text>
+	<check_box label="L$ harcadığımda veya aldığımda" name="notify_money_change_checkbox"/>
+	<check_box label="Arkadaşlarım oturum açtığında veya kapattığında" name="friends_online_notify_checkbox"/>
+	<text name="show_label">
+		Daima göster:
+	</text>
+	<text name="dont_show_label">
+		Asla gösterme:
+	</text>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..9caf95a122da2229c732437de1473753482844d2
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_chat.xml
@@ -0,0 +1,33 @@
+<?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"/>
+	<button label="Sohbet Çevirisi Ayarları" name="ok_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_colors.xml b/indra/newview/skins/default/xui/tr/panel_preferences_colors.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f6e9d0948cae9436771b016672565052691d5cdb
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_colors.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Renkler" name="colors_panel">
+	<text name="effects_color_textbox">
+		Efektlerim (seçim ışını):
+	</text>
+	<color_swatch name="effect_color_swatch" tool_tip="Renk Seçiciyi açmak için tıklayın"/>
+	<text name="font_colors">
+		Sohbet font renkleri:
+	</text>
+	<text name="text_box1">
+		Ben
+	</text>
+	<text name="text_box2">
+		DiÄŸerleri
+	</text>
+	<text name="text_box3">
+		Nesneler
+	</text>
+	<text name="text_box4">
+		Sistem
+	</text>
+	<text name="text_box5">
+		Hatalar
+	</text>
+	<text name="text_box10">
+		DoÄŸrudan
+	</text>
+	<text name="text_box7">
+		Sahip
+	</text>
+	<text name="text_box9">
+		URL&apos;ler
+	</text>
+	<text name="bubble_chat">
+		Ad etiketinin arka plan rengi (ayrıca Balon Sohbeti de etkiler):
+	</text>
+	<color_swatch name="background" tool_tip="Ad etiketi rengini seç"/>
+	<slider label="Geçirgenlik:" name="bubble_chat_opacity" tool_tip="Ad etiketi geçirgenliğini seç"/>
+	<text name="floater_opacity">
+		Gezdirici Geçirgenliği:
+	</text>
+	<slider label="Etkin:" name="active"/>
+	<slider label="Etkin deÄŸil:" name="inactive"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_general.xml b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4a48b1588c1387bbf62c789b936f0c3d998b1182
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_general.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Genel" name="general_panel">
+	<text name="language_textbox">
+		Dil:
+	</text>
+	<combo_box name="language_combobox">
+		<combo_box.item label="Sistem varsayılanı" name="System Default Language"/>
+		<combo_box.item label="English (Ä°ngilizce)" name="English"/>
+		<combo_box.item label="Dansk (Danca) - Beta" name="Danish"/>
+		<combo_box.item label="Deutsch (Almanca) - Beta" name="Deutsch(German)"/>
+		<combo_box.item label="Español (İspanyolca) - Beta" name="Spanish"/>
+		<combo_box.item label="Français (Fransızca) - Beta" name="French"/>
+		<combo_box.item label="Italiano (Ä°talyanca) - Beta" name="Italian"/>
+		<combo_box.item label="Polski (Lehçe) - Beta" name="Polish"/>
+		<combo_box.item label="Português (Portekizce) - Beta" name="Portugese"/>
+		<combo_box.item label="Русский (Rusça) - Beta" name="Russian"/>
+		<combo_box.item label="Türkçe - Beta" name="Turkish"/>
+		<combo_box.item label="日本語 (Japonca) - Beta" name="(Japanese)"/>
+		<combo_box.item label="正體中文 (Geleneksel Çince) - Beta" name="Traditional Chinese"/>
+	</combo_box>
+	<text name="language_textbox2">
+		(Yeniden baÅŸlatma gerekir)
+	</text>
+	<text name="maturity_desired_prompt">
+		Seviyelndrl. içeriğe erişim istiyorum::
+	</text>
+	<combo_box name="maturity_desired_combobox">
+		<combo_box.item label="Genel, Orta, YetiÅŸkin" name="Desired_Adult"/>
+		<combo_box.item label="Genel ve Orta" name="Desired_Mature"/>
+		<combo_box.item label="Genel" name="Desired_PG"/>
+	</combo_box>
+	<text name="start_location_textbox">
+		Standart konum:
+	</text>
+	<combo_box name="start_location_combo">
+		<combo_box.item label="Son konumum" name="MyLastLocation"/>
+		<combo_box.item label="Ana Konumum" name="MyHome"/>
+	</combo_box>
+	<check_box initial_value="true" label="Oturumu açarken göster" name="show_location_checkbox"/>
+	<text name="name_tags_textbox">
+		Ad etiketleri:
+	</text>
+	<radio_group name="Name_Tag_Preference">
+		<radio_item label="Kapalı" name="radio" value="0"/>
+		<radio_item label="Açık" name="radio2" value="1"/>
+		<radio_item label="Kısaca göster" name="radio3" value="2"/>
+	</radio_group>
+	<check_box label="Adım" name="show_my_name_checkbox1"/>
+	<check_box label="Kullanıcı adları" name="show_slids" tool_tip="Kullanıcı adını göster, bobsmith123 gibi"/>
+	<check_box label="Grup unvanları" name="show_all_title_checkbox1" tool_tip="Grup unvanlarını göster, Görevli veya Üye gibi"/>
+	<check_box label="Arkadaşları vurgula" name="show_friends" tool_tip="Arkadaşlarının ad etiketlerini vurgula"/>
+	<check_box label="Ekran Adlarını Görüntüle" name="display_names_check" tool_tip="Sohbet, Aİ, ad etiketleri, vb.de ekran adlarını kullanmak için işaretle"/>
+	<text name="inworld_typing_rg_label">
+		Basılacak harf tuşları:
+	</text>
+	<radio_group name="inworld_typing_preference">
+		<radio_item label="Yerel sohbet baÅŸlat" name="radio_start_chat" value="1"/>
+		<radio_item label="Hareketi etkiler (yani WASD)" name="radio_move" value="0"/>
+	</radio_group>
+	<text name="title_afk_text">
+		Uzakta süre sonu:
+	</text>
+	<combo_box label="Uzakta süre sonu:" name="afk">
+		<combo_box.item label="2 dakika" name="item0"/>
+		<combo_box.item label="5 dakika" name="item1"/>
+		<combo_box.item label="10 dakika" name="item2"/>
+		<combo_box.item label="30 dakika" name="item3"/>
+		<combo_box.item label="asla" name="item4"/>
+	</combo_box>
+	<text name="text_box3">
+		Meşgul durumu cevabı:
+	</text>
+	<text_editor name="busy_response">
+		log_in_to_change
+	</text_editor>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ddb83ffc695498f7d25da16d98643f0978c67bc0
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_graphics1.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Grafikler" name="Display panel">
+	<text name="QualitySpeed">
+		Kalite ve hız:
+	</text>
+	<text name="FasterText">
+		Daha hızlı
+	</text>
+	<text name="BetterText">
+		Daha iyi
+	</text>
+	<text name="ShadersPrefText">
+		Düşük
+	</text>
+	<text name="ShadersPrefText2">
+		Orta
+	</text>
+	<text name="ShadersPrefText3">
+		Yüksek
+	</text>
+	<text name="ShadersPrefText4">
+		Ultra
+	</text>
+	<panel label="ÖzelGrafikler" name="CustomGraphics Panel">
+		<text name="ShadersText">
+			Gölgelendiriciler:
+		</text>
+		<check_box initial_value="true" label="Saydam Su" name="TransparentWater"/>
+		<check_box initial_value="true" label="Tümsek eşleme ve parlaklık" name="BumpShiny"/>
+		<check_box initial_value="true" label="Yerel Işıklar" name="LocalLights"/>
+		<check_box initial_value="true" label="Temel gölgeleyiciler" name="BasicShaders" tool_tip="Bu seçeneğin devre dışı bırakılması bazı grafik kartlarının sürücülerinin kilitlenmesini önleyebilir"/>
+		<check_box initial_value="true" label="Atmosferik gölgeleyiciler" name="WindLightUseAtmosShaders"/>
+		<check_box initial_value="true" label="Işıklandırma ve Gölgeler" name="UseLightShaders"/>
+		<check_box initial_value="true" label="Ortam Gölgeleme" name="UseSSAO"/>
+		<check_box initial_value="true" label="Alan DerinliÄŸi" name="UseDoF"/>
+		<text name="shadows_label">
+			Gölgeler:
+		</text>
+		<combo_box name="ShadowDetail">
+			<combo_box.item label="Hiçbiri" name="0"/>
+			<combo_box.item label="Güneş/Ay" name="1"/>
+			<combo_box.item label="Güneş/Ay + Projektörler" name="2"/>
+		</combo_box>
+		<text name="reflection_label">
+			Su Yansımaları:
+		</text>
+		<combo_box name="Reflections">
+			<combo_box.item label="Minimal" name="0"/>
+			<combo_box.item label="Yüzey ve ağaçlar" name="1"/>
+			<combo_box.item label="Tüm statik nesneler" name="2"/>
+			<combo_box.item label="Tüm avatarlar ve nesneler" name="3"/>
+			<combo_box.item label="Her ÅŸey" name="4"/>
+		</combo_box>
+		<slider label="Avatar Fzk. Özlk.:" name="AvatarPhysicsDetail"/>
+		<text name="AvatarPhysicsDetailText">
+			Düşük
+		</text>
+		<slider label="Mesafeyi çiz:" name="DrawDistance"/>
+		<text name="DrawDistanceMeterText2">
+			m
+		</text>
+		<slider label="Maks. parçacık sayısı:" name="MaxParticleCount"/>
+		<slider label="Düşük gr. özl. olmayan mks. avatar:" name="MaxNumberAvatarDrawn"/>
+		<slider label="Son iÅŸleme kalitesi:" name="RenderPostProcess"/>
+		<text name="MeshDetailText">
+			Örgü detayı:
+		</text>
+		<slider label="Nesneler:" name="ObjectMeshDetail"/>
+		<slider label="Esnek primler:" name="FlexibleMeshDetail"/>
+		<slider label="Ağaçlar:" name="TreeMeshDetail"/>
+		<slider label="Avatarlar:" name="AvatarMeshDetail"/>
+		<slider label="Yüzey:" name="TerrainMeshDetail"/>
+		<slider label="Gökyüzü:" name="SkyMeshDetail"/>
+		<text name="PostProcessText">
+			Düşük
+		</text>
+		<text name="ObjectMeshDetailText">
+			Düşük
+		</text>
+		<text name="FlexibleMeshDetailText">
+			Düşük
+		</text>
+		<text name="TreeMeshDetailText">
+			Düşük
+		</text>
+		<text name="AvatarMeshDetailText">
+			Düşük
+		</text>
+		<text name="TerrainMeshDetailText">
+			Düşük
+		</text>
+		<text name="SkyMeshDetailText">
+			Düşük
+		</text>
+		<text name="AvatarRenderingText">
+			Avatar Ä°ÅŸleme:
+		</text>
+		<check_box initial_value="true" label="Düşük grafik özellikli avatarlar" name="AvatarImpostors"/>
+		<check_box initial_value="true" label="Donanım ile kaplama" name="AvatarVertexProgram"/>
+		<check_box initial_value="true" label="Avatar giysisi" name="AvatarCloth"/>
+		<text name="TerrainDetailText">
+			Yüzey detayı:
+		</text>
+		<radio_group name="TerrainDetailRadio">
+			<radio_item label="Düşük" name="0"/>
+			<radio_item label="Yüksek" name="2"/>
+		</radio_group>
+		--&gt;
+	</panel>
+	<button label="Uygula" label_selected="Uygula" name="Apply"/>
+	<button label="Sıfırla" name="Defaults"/>
+	<button label="GeliÅŸmiÅŸ" name="Advanced"/>
+	<button label="Donanım" label_selected="Donanım" name="GraphicsHardwareButton"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_move.xml b/indra/newview/skins/default/xui/tr/panel_preferences_move.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c35eaec9c3169f1d03a28e74587761f77aca7e7e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_move.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Hareket Et" name="move_panel">
+	<slider label="Gröünüm açısı" name="camera_fov"/>
+	<slider label="Mesafe" name="camera_offset_scale"/>
+	<text name="heading2">
+		Şunun için otomatik konum:
+	</text>
+	<check_box label="İnşa Et/Düzenle" name="edit_camera_movement" tool_tip="Düzenleme moduna girerken ve düzenleme modundan çıkarken otomatik kamera konumunu kullanın"/>
+	<check_box label="Görünüm" name="appearance_camera_movement" tool_tip="Düzenleme modundayken otomatik kamera konumunu kullan"/>
+	<text name="keyboard_lbl">
+		Klavye:
+	</text>
+	<check_box label="Ok tuşları beni her zaman hareket ettirir" name="arrow_keys_move_avatar_check"/>
+	<check_box label="Koşmak için iki kez dokun ve tut" name="tap_tap_hold_to_run"/>
+	<text name="mouse_lbl">
+		Fare:
+	</text>
+	<check_box label="Fare üzerinden görünümde beni göster" name="first_person_avatar_visible"/>
+	<text name=" Mouse Sensitivity">
+		Fare üzerinden görünümde fare hassasiyeti
+	</text>
+	<check_box label="Tersine çevir" name="invert_mouse"/>
+	<text name="single_click_action_lbl">
+		Arazi üzerine tek tıklama:
+	</text>
+	<combo_box name="single_click_action_combo">
+		<combo_box.item label="Eylem yok" name="0"/>
+		<combo_box.item label="Tıklanan noktaya hareket et" name="1"/>
+	</combo_box>
+	<text name="double_click_action_lbl">
+		Arazi üzerine çift tıklama:
+	</text>
+	<combo_box name="double_click_action_combo">
+		<combo_box.item label="Eylem yok" name="0"/>
+		<combo_box.item label="Tıklanan noktaya hareket et" name="1"/>
+		<combo_box.item label="Tıklanan noktaya ışınla" name="2"/>
+	</combo_box>
+	<button label="Diğer Aygıtlar" name="joystick_setup_button"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9111594979b338fe547fb776e0180476658bfe66
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_privacy.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Ä°letiÅŸim" name="im">
+	<panel.string name="log_in_to_change">
+		değiştirmek için oturum açın
+	</panel.string>
+	<button label="Geçmişi Temizle" name="clear_cache" tool_tip="Oturum açma görüntüsünü, son konumu, ışınlama geçmişini, web ve dokulama önbelleğini temizleyin."/>
+	<text name="cache_size_label_l">
+		(Konumlar, görüntüler, web, arama geçmişi)
+	</text>
+	<check_box label="Arama sonuçlarında beni göster" name="online_searchresults"/>
+	<check_box label="Çevrimiçi olduğumu sadece arkadaşlar ve gruplar bilsin" name="online_visibility"/>
+	<check_box label="Sadece arkadaşlar ve gruplar beni arasın veya Aİ göndersin" name="voice_call_friends_only_check"/>
+	<check_box label="Aramaları sonlandırırken mikrofonu kapat" name="auto_disengage_mic_check"/>
+	<check_box label="Oturum Açarken Favori Yer İmlerimi Göster (&apos;Buradan başla&apos; menüsünden)" name="favorites_on_login_check"/>
+	<text name="Logs:">
+		Sohbet Günlükleri:
+	</text>
+	<check_box label="Yakındaki sohbet günlüklerini bilgisayarımda göster" name="log_nearby_chat"/>
+	<check_box label="Aİ günlüklerini bilgisayarıma kaydet" name="log_instant_messages"/>
+	<check_box label="Sohbet günlüğünde her satıra zaman damgası eklensin" name="show_timestamps_check_im"/>
+	<check_box label="Günlük dosyası adına tarih damgası eklensin." name="logfile_name_datestamp"/>
+	<text name="log_path_desc">
+		Günlüklerin konumu:
+	</text>
+	<button label="Gözat" label_selected="Gözat" name="log_path_button"/>
+	<button label="Listeyi engelle" name="block_list"/>
+	<text name="block_list_label">
+		(EngellediÄŸiniz KiÅŸiler ve/veya Nesneler)
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9d03d9b01d6007681905b00bf148dd5ee7f73e79
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Ayarlar" name="Input panel">
+	<text name="Network:">
+		AÄŸ:
+	</text>
+	<text name="Maximum bandwidth">
+		Maksimum bant geniÅŸliÄŸi
+	</text>
+	<text name="text_box2">
+		kbps
+	</text>
+	<check_box label="Özel port" name="connection_port_enabled"/>
+	<spinner label="Port numarası:" name="connection_port"/>
+	<text name="Web:">
+		Web:
+	</text>
+	<radio_group name="use_external_browser">
+		<radio_item label="Tarayıcımı kullan (IE, Firefox, Safari)" name="external" tool_tip="Yardım, web bağlantıları vs. için sistemin varsayılan web tarayıcısını kullanın. Tam ekran çalıştırılıyorsa tavsiye edilmez." value="true"/>
+		<radio_item label="Yerleşik tarayıcıyı kullan" name="internal" tool_tip="Yardım, web bağlantıları vs. için dahili web tarayıcısını kullanın. Bu tarayıcı [APP_NAME] içerisinde yeni bir pencere olarak açılır." value=""/>
+	</radio_group>
+	<check_box initial_value="true" label="Eklentileri etkinleÅŸtir" name="browser_plugins_enabled"/>
+	<check_box initial_value="true" label="Çerezleri kabul et" name="cookies_enabled"/>
+	<check_box initial_value="true" label="Javascript&apos;i etkinleÅŸtir" name="browser_javascript_enabled"/>
+	<check_box initial_value="false" label="Ortam tarayıcısı açılır pencerelerini etkinleştir" name="media_popup_enabled"/>
+	<text name="Software updates:">
+		Yazılım güncelleştirmeleri:
+	</text>
+	<combo_box name="updater_service_combobox">
+		<combo_box.item label="Otomatik olarak kurulsun" name="Install_automatically"/>
+		<combo_box.item label="Güncelleştirmeler manuel olarak karşıdan yüklensin ve kurulsun" name="Install_manual"/>
+	</combo_box>
+	<text name="Proxy Settings:">
+		Proxy Ayarları:
+	</text>
+	<button label="Proxy ayarlarını yap" label_selected="Gözat" name="set_proxy"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/tr/panel_preferences_sound.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9256f1d32451d4434003ab9a0b0dce46cc6cca7b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_sound.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Sesler" name="Preference Media panel">
+	<panel.string name="middle_mouse">
+		Orta Fare
+	</panel.string>
+	<slider label="Ana ses düzeyi" name="System Volume"/>
+	<check_box initial_value="true" name="mute_when_minimized"/>
+	<text name="mute_chb_label">
+		Küçültüldüğünde sustur
+	</text>
+	<slider label="Düğmeler" name="UI Volume"/>
+	<slider label="Ortam" name="Wind Volume"/>
+	<slider label="Ses Efektleri" name="SFX Volume"/>
+	<slider label="Müzik akışı" name="Music Volume"/>
+	<check_box label="Etkin" name="enable_music"/>
+	<slider label="Ortam" name="Media Volume"/>
+	<check_box label="Etkin" name="enable_media"/>
+	<slider label="Sesli Sohbet" name="Voice Volume"/>
+	<check_box label="Etkin" name="enable_voice_check"/>
+	<check_box label="Ortamı otomatik oynatmaya izin ver" name="media_auto_play_btn" tool_tip="istiyorsa ortamı otomatik oynatmak için bunu işaretleyin" value="true"/>
+	<check_box label="Diğer avatarlara eklenen ortamı oynat" name="media_show_on_others_btn" tool_tip="Yakınlardaki diğer avatarlara eklenen ortamı gizlemek için bunun işaretini kaldırın" value="true"/>
+	<check_box label="Mimiklere ses eşlik etsin" name="gesture_audio_play_btn" tool_tip="Mimiklerle beraber ses duymak için bunu işaretleyin" value="true"/>
+	<text name="voice_chat_settings">
+		Sesli Sohbet Ayarları
+	</text>
+	<text name="Listen from">
+		Åžuradan dinle:
+	</text>
+	<radio_group name="ear_location">
+		<radio_item label="Kamera konumu" name="0"/>
+		<radio_item label="Avatar konumu" name="1"/>
+	</radio_group>
+	<check_box label="Konuşurken avatar dudaklarını hareket ettir" name="enable_lip_sync"/>
+	<check_box label="Aşağıdaki düğmeye bastığımda konuşmayı aç/kapat:" name="push_to_talk_toggle_check" tool_tip="Toggle (dönüşümlü) modda mikrofonunuzu açıp kapatmak için tetikleyici tuşuna BİR KERE basıp bırakın. Toggle (dönüşümlü) modda değilken mikrofonunuz sadece tetikleyici tuş basılı tutulurken sesinizi yayınlar."/>
+	<line_editor label="Bas-KonuÅŸ tetikleyici" name="modifier_combo"/>
+	<button label="TuÅŸ Ayarla" name="set_voice_hotkey_button"/>
+	<button name="set_voice_middlemouse_button" tool_tip="Orta Fare Düğmesine Sıfırla"/>
+	<button label="Giriş/Çıkış cihazları" name="device_settings_btn"/>
+	<panel label="Cihaz Ayarları" name="device_settings_panel"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..0433d0345038cf2623637fddc300be00b9d3c072
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_prim_media_controls.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="MediaControls">
+	<string name="control_background_image_name">
+		Inspector_Background
+	</string>
+	<string name="skip_step">
+		0.2
+	</string>
+	<string name="min_width">
+		300
+	</string>
+	<string name="min_height">
+		75
+	</string>
+	<string name="zoom_near_padding">
+		1.0
+	</string>
+	<string name="zoom_medium_padding">
+		1.1
+	</string>
+	<string name="zoom_far_padding">
+		1.5
+	</string>
+	<string name="top_world_view_avoid_zone">
+		50
+	</string>
+	<layout_stack name="progress_indicator_area">
+		<layout_panel name="media_progress_indicator">
+			<progress_bar name="media_progress_bar" tool_tip="Ortam Yükleniyor"/>
+		</layout_panel>
+	</layout_stack>
+	<layout_stack name="media_controls">
+		<layout_panel name="back">
+			<button name="back_btn" tool_tip="Geri Git"/>
+		</layout_panel>
+		<layout_panel name="fwd">
+			<button name="fwd_btn" tool_tip="Ä°leri Git"/>
+		</layout_panel>
+		<layout_panel name="home">
+			<button name="home_btn" tool_tip="Ana sayfa"/>
+		</layout_panel>
+		<layout_panel name="media_stop">
+			<button name="media_stop_btn" tool_tip="Ortamı durdur"/>
+		</layout_panel>
+		<layout_panel name="reload">
+			<button name="reload_btn" tool_tip="Yeniden Yükle"/>
+		</layout_panel>
+		<layout_panel name="stop">
+			<button name="stop_btn" tool_tip="Yüklemeyi durdur"/>
+		</layout_panel>
+		<layout_panel name="play">
+			<button name="play_btn" tool_tip="Ortamı oynat"/>
+		</layout_panel>
+		<layout_panel name="pause">
+			<button name="pause_btn" tool_tip="Ortamı duraklat"/>
+		</layout_panel>
+		<layout_panel name="media_address">
+			<line_editor name="media_address_url" tool_tip="Ortam URL&apos;si"/>
+			<layout_stack name="media_address_url_icons">
+				<layout_panel>
+					<icon name="media_whitelist_flag" tool_tip="Beyaz Liste etkin"/>
+				</layout_panel>
+				<layout_panel>
+					<icon name="media_secure_lock_flag" tool_tip="Güvenli Tarama"/>
+				</layout_panel>
+			</layout_stack>
+		</layout_panel>
+		<layout_panel name="media_play_position">
+			<slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Filmi oynatma ilerlemesi"/>
+		</layout_panel>
+		<layout_panel name="skip_back">
+			<button name="skip_back_btn" tool_tip="Geriletme"/>
+		</layout_panel>
+		<layout_panel name="skip_forward">
+			<button name="skip_forward_btn" tool_tip="Ä°lerletme"/>
+		</layout_panel>
+		<layout_panel name="media_volume">
+			<button name="media_mute_button" tool_tip="Bu Ortamı Sustur"/>
+			<slider name="volume_slider" tool_tip="Ortam Volümü"/>
+		</layout_panel>
+		<layout_panel name="zoom_frame">
+			<button name="zoom_frame_btn" tool_tip="Ortama yakınlaştır"/>
+		</layout_panel>
+		<layout_panel name="close">
+			<button name="close_btn" tool_tip="Geri Zumla"/>
+		</layout_panel>
+		<layout_panel name="new_window">
+			<button name="new_window_btn" tool_tip="URL&apos;yi Tarayıcıda Aç"/>
+		</layout_panel>
+	</layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_region_covenant.xml b/indra/newview/skins/default/xui/tr/panel_region_covenant.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5c46365aea2b81fcd2e3afeea6a738fbe1793eef
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_region_covenant.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Sözleşme" name="Covenant">
+	<panel.string name="can_resell">
+		Bu bölgede satın alınan arazi tekrar satılabilir.
+	</panel.string>
+	<panel.string name="can_not_resell">
+		Bu bölgede satın alınan arazi tekrar satılamayabilir.
+	</panel.string>
+	<panel.string name="can_change">
+		Bu bölgede satın alınan arazi birleştirilebilir veya bölünebilir.
+	</panel.string>
+	<panel.string name="can_not_change">
+		Bu bölgede satın alınan arazi birleştirilemeyebilir veya bölünemeyebilir.
+	</panel.string>
+	<text name="estate_section_lbl">
+		Gayrimenkul
+	</text>
+	<text name="estate_name_lbl">
+		Ad:
+	</text>
+	<text name="estate_name_text">
+		anakara
+	</text>
+	<text name="estate_owner_lbl">
+		Sahip:
+	</text>
+	<text name="estate_owner_text">
+		(hiçbiri)
+	</text>
+	<text name="estate_cov_lbl">
+		Sözleşme:
+	</text>
+	<text name="covenant_timestamp_text">
+		Son Değiştirme: 31 Ara, Çar 16:00:00 1969
+	</text>
+	<text_editor name="covenant_editor">
+		Bu Gayrimenkul için Sözleşmesi yok.
+	</text_editor>
+	<button label="Sıfırla" name="reset_covenant"/>
+	<text name="covenant_help_text">
+		Sözleşmede yapılan değişiklikler gayrimenkul içerisindeki tüm parsellerde gösterilir.
+	</text>
+	<text name="covenant_instructions">
+		Bu gayrimenkul için Sözleşmeyi değiştirmek amacıyla bir not kartını sürükleyin ve bırakın.
+	</text>
+	<text name="region_section_lbl">
+		Bölge
+	</text>
+	<text name="region_name_lbl">
+		Ad:
+	</text>
+	<text name="region_name_text">
+		Erica
+	</text>
+	<text name="region_landtype_lbl">
+		Tür:
+	</text>
+	<text name="region_landtype_text">
+		Anakara / Banliyö
+	</text>
+	<text name="region_maturity_lbl">
+		Seviye:
+	</text>
+	<text name="region_maturity_text">
+		YetiÅŸkin
+	</text>
+	<text name="resellable_lbl">
+		Tekrar Satış:
+	</text>
+	<text name="resellable_clause">
+		Bu bölgedeki arazi tekrar satılamayabilir.
+	</text>
+	<text name="changeable_lbl">
+		Böl:
+	</text>
+	<text name="changeable_clause">
+		Bu bölgedeki arazi birleştirilemeyebilir/bölünemeyebilir.
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_region_debug.xml b/indra/newview/skins/default/xui/tr/panel_region_debug.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6e15e0f6f6a487e55fedca41c0a0c8c753591266
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_region_debug.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Hata ayıkla" name="Debug">
+	<text name="region_text_lbl">
+		Bölge:
+	</text>
+	<text name="region_text">
+		bilinmiyor
+	</text>
+	<check_box label="Komut Dosyalarını Devre Dışı Bırak" name="disable_scripts_check" tool_tip="Bu bölgedeki tüm komut dosyalarını devre dışı bırak"/>
+	<check_box label="Çarpışmaları Devre Dışı Bırak" name="disable_collisions_check" tool_tip="Bu bölgedeki avatar dışı çarpışmaları devre dışı bırak"/>
+	<check_box label="Fiziği Devre Dışı Bırak" name="disable_physics_check" tool_tip="Bu bölgedeki tüm fiziği devre dışı bırak"/>
+	<button label="Uygula" name="apply_btn"/>
+	<text name="objret_text_lbl">
+		Nesne Ä°adesi
+	</text>
+	<text name="resident_text_lbl">
+		Sakin:
+	</text>
+	<line_editor name="target_avatar_name">
+		(hiçbiri)
+	</line_editor>
+	<button label="Seç" name="choose_avatar_btn"/>
+	<text name="options_text_lbl">
+		Seçenklr.:
+	</text>
+	<check_box label="Komut dosyaları ile" name="return_scripts" tool_tip="Sadece komut dosyaları olan nesneler iade edilsin"/>
+	<check_box label="Başkasına ait arazi üzerinde" name="return_other_land" tool_tip="Sadece başkasına ait arazi üzerinde olan nesneler iade edilsin"/>
+	<check_box label="Bu gayrimenkulu oluşturan bölgelerin tümünde" name="return_estate_wide" tool_tip="Bu gayrimenkulu oluşturan bölgelerin tümündeki nesneler iade edilsin"/>
+	<button label="Ä°ade Et" name="return_btn"/>
+	<button label="En Çok Çarpışanlar..." name="top_colliders_btn" tool_tip="En çok potansiyel çarpışma yaşayan nesnelerin listesi"/>
+	<button label="En Çok Komut Dsy. Çalştr...." name="top_scripts_btn" tool_tip="Komut dosyalarını çalıştırırken en çok zaman harcayan nesnelerin listesi"/>
+	<button label="Bölgeyi Yeniden Başlat" name="restart_btn" tool_tip="2 dakikalık bir geri sayımdan sonra bölgeyi yeniden başlat"/>
+	<button label="Yeniden Başlatmayı Ertele" name="cancel_restart_btn" tool_tip="Bölgenin yeniden başlatılmasını 1 saat ertele"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_region_environment.xml b/indra/newview/skins/default/xui/tr/panel_region_environment.xml
new file mode 100644
index 0000000000000000000000000000000000000000..058ea91b70298753bcfbe6416e94663730b96e2b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_region_environment.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Ortam" name="panel_env_info">
+	<text name="water_settings_title">
+		Bölgenize gelen tüm ziyaretçilerin görmesini istediğiniz Su ve Gökyüzü/Gündüz Döngüsü Ayarlarını seçin.  Ek bilgi
+	</text>
+	<radio_group name="region_settings_radio_group">
+		<radio_item label="Second Life varsayılanını kullan" name="use_sl_default_settings"/>
+		<radio_item label="Aşağıdaki ayarları kullan" name="use_my_settings"/>
+	</radio_group>
+	<panel name="user_environment_settings">
+		<text name="water_settings_title">
+			Su Ayarı
+		</text>
+		<combo_box name="water_settings_preset_combo">
+			<combo_box.item label="-Bir ön ayar seçin-" name="item0"/>
+		</combo_box>
+		<text name="sky_dayc_settings_title">
+			Gökyüzü/Gün Dön.
+		</text>
+		<radio_group name="sky_dayc_settings_radio_group">
+			<radio_item label="Sabit gökyüzü" name="my_sky_settings"/>
+			<radio_item label="Gün döngüsü" name="my_dayc_settings"/>
+		</radio_group>
+		<combo_box name="sky_settings_preset_combo">
+			<combo_box.item label="-Bir ön ayar seçin-" name="item0"/>
+		</combo_box>
+		<combo_box name="dayc_settings_preset_combo">
+			<combo_box.item label="-Bir ön ayar seçin-" name="item0"/>
+		</combo_box>
+	</panel>
+	<button label="Uygula" name="apply_btn"/>
+	<button label="Ä°ptal" name="cancel_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_region_estate.xml b/indra/newview/skins/default/xui/tr/panel_region_estate.xml
new file mode 100644
index 0000000000000000000000000000000000000000..4ba55cafb6eebcacfb796b5a97f24a906d097f36
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_region_estate.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Gayrimenkul" name="Estate">
+	<text name="estate_help_text">
+		Bu sekmedeki ayarlarda yapılan değişiklikler gayrimenkul içerisindeki tüm bölgeleri etkiler.
+	</text>
+	<text name="estate_text">
+		Gayrimenkul:
+	</text>
+	<text name="estate_name">
+		(bilinmiyor)
+	</text>
+	<text name="owner_text">
+		Gayrimenkul sahibi:
+	</text>
+	<text name="estate_owner">
+		(bilinmiyor)
+	</text>
+	<check_box label="Küresel Saati Kullan" name="use_global_time_check"/>
+	<check_box label="Sabit Güneş" name="fixed_sun_check"/>
+	<slider label="Faz" name="sun_hour_slider"/>
+	<check_box label="Kamusal EriÅŸime Ä°zin Ver" name="externally_visible_check"/>
+	<text name="Only Allow">
+		Erişimi şununla doğrulanan hesaplarla sınırla:
+	</text>
+	<check_box label="Dosyadaki Ödeme Bilgileri" name="limit_payment" tool_tip="Tanınmayan Sakinleri Yasakla"/>
+	<check_box label="Yaş Doğrulama" name="limit_age_verified" tool_tip="Yaşını doğrulamayan Sakinleri yasakla Daha fazla bilgi için [SUPPORT_SITE] adresini ziyaret edin."/>
+	<check_box label="Sesli Sohbete Ä°zin Ver" name="voice_chat_check"/>
+	<check_box label="Doğrudan Işınlamaya İzin Ver" name="allow_direct_teleport"/>
+	<button label="Uygula" name="apply_btn"/>
+	<button label="Gayrimenkule İleti Gönder..." name="message_estate_btn"/>
+	<button label="Sakinlerini Gayrimenkulden Çıkar..." name="kick_user_from_estate_btn"/>
+	<text name="estate_manager_label">
+		Gayrimenkul Yöneticileri:
+	</text>
+	<button label="Kaldır..." name="remove_estate_manager_btn"/>
+	<button label="Ekle..." name="add_estate_manager_btn"/>
+	<text name="allow_resident_label">
+		Ä°zin verilen Sakinler:
+	</text>
+	<button label="Kaldır..." name="remove_allowed_avatar_btn"/>
+	<button label="Ekle..." name="add_allowed_avatar_btn"/>
+	<text name="allow_group_label">
+		Ä°zin verilen Gruplar:
+	</text>
+	<button label="Kaldır..." name="remove_allowed_group_btn"/>
+	<button label="Ekle..." name="add_allowed_group_btn"/>
+	<text name="ban_resident_label">
+		Yasaklı Sakinler:
+	</text>
+	<button label="Kaldır..." name="remove_banned_avatar_btn"/>
+	<button label="Ekle..." name="add_banned_avatar_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_region_general.xml b/indra/newview/skins/default/xui/tr/panel_region_general.xml
new file mode 100644
index 0000000000000000000000000000000000000000..37da0f2ccae4e14e0ef96ae9a24bca9ca6f14c2b
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_region_general.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Bölge" name="General">
+	<text name="region_text_lbl">
+		Bölge:
+	</text>
+	<text name="region_text">
+		bilinmiyor
+	</text>
+	<text name="version_channel_text_lbl">
+		Sürüm:
+	</text>
+	<text name="version_channel_text">
+		bilinmiyor
+	</text>
+	<text name="region_type_lbl">
+		Tür:
+	</text>
+	<text name="region_type">
+		bilinmiyor
+	</text>
+	<check_box label="Yer Åžekillendirmeyi Engelle" name="block_terraform_check"/>
+	<check_box label="Uçmayı Engelle" name="block_fly_check"/>
+	<check_box label="Hasara Ä°zin Ver" name="allow_damage_check"/>
+	<check_box label="İtmeyi Kısıtla" name="restrict_pushobject"/>
+	<check_box label="Arazinin Tekrar Satışına İzin Ver" name="allow_land_resell_check"/>
+	<check_box label="Arazinin Birleşmesine/Bölünmesine İzin Ver" name="allow_parcel_changes_check"/>
+	<check_box label="Aramada Arazinin Gösterilmesini Engelle" name="block_parcel_search_check" tool_tip="Arama sonuçlarında bu bölge ve parselleri görünsün"/>
+	<check_box label="Örgü Nesnelere İzin Ver" name="mesh_rez_enabled_check" tool_tip="Bu bölgede insanların örgü nesneleri oluşturmasına izin verilsin"/>
+	<spinner label="Aracı Limiti" name="agent_limit_spin"/>
+	<spinner label="Nesne Bonusu" name="object_bonus_spin"/>
+	<text label="EriÅŸkinlik" name="access_text">
+		Seviye:
+	</text>
+	<icons_combo_box label="Orta" name="access_combo">
+		<icons_combo_box.item label="YetiÅŸkin" name="Adult" value="42"/>
+		<icons_combo_box.item label="Orta" name="Mature" value="21"/>
+		<icons_combo_box.item label="Genel" name="PG" value="13"/>
+	</icons_combo_box>
+	<button label="Uygula" name="apply_btn"/>
+	<button label="Bir Sakini Ana Konuma Işınla..." name="kick_btn"/>
+	<button label="Tüm Sakinleri Ana Konuma Işınla..." name="kick_all_btn"/>
+	<button label="Bölgeye İleti Gönder..." name="im_btn"/>
+	<button label="Işınlanma İstasyonu Yönet..." name="manage_telehub_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_region_terrain.xml b/indra/newview/skins/default/xui/tr/panel_region_terrain.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3226ee008e70635ca0ab4072b4c9c91d7cac040e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_region_terrain.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Yüzey" name="Terrain">
+	<text name="region_text_lbl">
+		Bölge:
+	</text>
+	<text name="region_text">
+		bilinmiyor
+	</text>
+	<spinner label="Su Yüksekliği" name="water_height_spin"/>
+	<spinner label="Yüzey Yükslt. Limiti" name="terrain_raise_spin"/>
+	<spinner label="Yüzey Alçatma Limiti" name="terrain_lower_spin"/>
+	<text name="detail_texture_text">
+		Yüzey Dokuları (512x512, 24 bit .tga dosyalar gerektirir)
+	</text>
+	<text name="height_text_lbl">
+		1 (Düşük)
+	</text>
+	<text name="height_text_lbl2">
+		2
+	</text>
+	<text name="height_text_lbl3">
+		3
+	</text>
+	<text name="height_text_lbl4">
+		4 (Yüksek)
+	</text>
+	<text name="height_text_lbl5">
+		Doku Yükselti Aralıkları
+	</text>
+	<text name="height_text_lbl10">
+		Bu değerler yukarıdaki dokular için karışım aralığını temsil eder.
+	</text>
+	<text name="height_text_lbl11">
+		Metre cinsinden olan bu değerler için, DÜŞÜK değer 1. Dokunun MAKSİMUM yüksekliği, YÜKSEK değer ise 4. Dokunun MİNİMUM yüksekliğidir.
+	</text>
+	<text name="height_text_lbl6">
+		Kuzeybatı
+	</text>
+	<text name="height_text_lbl7">
+		KuzeydoÄŸu
+	</text>
+	<spinner label="Düşük" name="height_start_spin_1"/>
+	<spinner label="Düşük" name="height_start_spin_3"/>
+	<spinner label="Yüksek" name="height_range_spin_1"/>
+	<spinner label="Yüksek" name="height_range_spin_3"/>
+	<text name="height_text_lbl8">
+		Güneybatı
+	</text>
+	<text name="height_text_lbl9">
+		Güneydoğu
+	</text>
+	<spinner label="Düşük" name="height_start_spin_0"/>
+	<spinner label="Düşük" name="height_start_spin_2"/>
+	<spinner label="Yüksek" name="height_range_spin_0"/>
+	<spinner label="Yüksek" name="height_range_spin_2"/>
+	<button label="Ham yüzeyi indir..." name="download_raw_btn" tool_tip="Sadece gayrimenkul sahipleri kullanabilir, yöneticiler kullanamaz"/>
+	<button label="Ham yüzeyi karşıya yükle..." name="upload_raw_btn" tool_tip="Sadece gayrimenkul sahipleri kullanabilir, yöneticiler kullanamaz"/>
+	<button label="Yüzeyi Kaydet" name="bake_terrain_btn" tool_tip="Yükseltme/alçaltma limitleri için  mevcut yüzeyi orta nokta olarak ayarla"/>
+	<button label="Uygula" name="apply_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_region_texture.xml b/indra/newview/skins/default/xui/tr/panel_region_texture.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fd7ca2a893c955c3c1a0115280a2ce7fe8e451ff
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_region_texture.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Zemin Dokuları" name="Textures">
+	<text name="region_text_lbl">
+		Bölge:
+	</text>
+	<text name="region_text">
+		bilinmiyor
+	</text>
+	<text name="detail_texture_text">
+		Yüzey Dokuları (512x512, 24 bit .tga dosyalar gerektirir)
+	</text>
+	<text name="height_text_lbl">
+		1 (Düşük)
+	</text>
+	<text name="height_text_lbl2">
+		2
+	</text>
+	<text name="height_text_lbl3">
+		3
+	</text>
+	<text name="height_text_lbl4">
+		4 (Yüksek)
+	</text>
+	<text name="height_text_lbl5">
+		Doku Yükselti Aralıkları
+	</text>
+	<text name="height_text_lbl6">
+		Kuzeybatı
+	</text>
+	<text name="height_text_lbl7">
+		KuzeydoÄŸu
+	</text>
+	<spinner label="Düşük" name="height_start_spin_1"/>
+	<spinner label="Düşük" name="height_start_spin_3"/>
+	<spinner label="Yüksek" name="height_range_spin_1"/>
+	<spinner label="Yüksek" name="height_range_spin_3"/>
+	<text name="height_text_lbl8">
+		Güneybatı
+	</text>
+	<text name="height_text_lbl9">
+		Güneydoğu
+	</text>
+	<spinner label="Düşük" name="height_start_spin_0"/>
+	<spinner label="Düşük" name="height_start_spin_2"/>
+	<spinner label="Yüksek" name="height_range_spin_0"/>
+	<spinner label="Yüksek" name="height_range_spin_2"/>
+	<text name="height_text_lbl10">
+		Bu değerler yukarıdaki dokular için karışım aralığını temsil eder.
+	</text>
+	<text name="height_text_lbl11">
+		Metre cinsinden olan bu değerler için, DÜŞÜK değer 1. Dokunun MAKSİMUM yüksekliği, YÜKSEK değer ise 4. Dokunun MİNİMUM yüksekliğidir.
+	</text>
+	<button label="Uygula" name="apply_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_script_ed.xml b/indra/newview/skins/default/xui/tr/panel_script_ed.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bc30320fa519c6d8a6fe5eed775ab6adb71cb878
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_script_ed.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="script panel">
+	<panel.string name="loading">
+		Yükleniyor...
+	</panel.string>
+	<panel.string name="can_not_view">
+		Bu komut dosyasını görüntüleyemez veya düzenleyemezsiniz, çünkü &quot;kopyalanamaz&quot; olarak ayarlanmıştır. Bir nesnenin içerisindeki bir komut dosyasını görüntülemek veya düzenlemek için tam izinlere ihtiyacınız var.
+	</panel.string>
+	<panel.string name="public_objects_can_not_run">
+		Kamuya Açık Nesneler komut dosyalarını çalıştıramaz
+	</panel.string>
+	<panel.string name="script_running">
+		Çalışıyor
+	</panel.string>
+	<panel.string name="Title">
+		Komut Dosyası: [NAME]
+	</panel.string>
+	<panel.string name="external_editor_not_set">
+		Ortam değişkeni LL_SCRIPT_EDITOR&apos;ü ayarlayarak veya ExternalEditor ayarını yaparak bir düzenleyici seçin.
+	</panel.string>
+	<menu_bar name="script_menu">
+		<menu label="Dosya" name="File">
+			<menu_item_call label="Kaydet" name="Save"/>
+			<menu_item_call label="Tüm Değişiklikleri Geri Çevir" name="Revert All Changes"/>
+		</menu>
+		<menu label="Düzenle" name="Edit">
+			<menu_item_call label="Geri Al" name="Undo"/>
+			<menu_item_call label="Yinele" name="Redo"/>
+			<menu_item_call label="Kes" name="Cut"/>
+			<menu_item_call label="Kopyala" name="Copy"/>
+			<menu_item_call label="Yapıştır" name="Paste"/>
+			<menu_item_call label="Tümünü Seç" name="Select All"/>
+			<menu_item_call label="Seçimi Kaldır" name="Deselect"/>
+			<menu_item_call label="Ara / DeÄŸiÅŸtir..." name="Search / Replace..."/>
+		</menu>
+		<menu label="Yardım" name="Help">
+			<menu_item_call label="Yardım..." name="Help..."/>
+			<menu_item_call label="Anahtar Sözcük Yardımı..." name="Keyword Help..."/>
+		</menu>
+	</menu_bar>
+	<text_editor name="Script Editor">
+		Yükleniyor...
+	</text_editor>
+	<combo_box label="Ekle..." name="Insert..."/>
+	<button label="Kaydet" label_selected="Kaydet" name="Save_btn"/>
+	<button label="Düzenle..." name="Edit_btn"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..c821dc45c1bde6b9f89b34ffeca856aedd49d694
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_script_limits_my_avatar.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="AVATARIM" name="script_limits_my_avatar_panel">
+	<text name="script_memory">
+		Avatar Komut Dosyası Kullanımı
+	</text>
+	<text name="loading_text">
+		Yükleniyor...
+	</text>
+	<scroll_list name="scripts_list">
+		<scroll_list.columns label="Büyüklük (kb)" name="size"/>
+		<scroll_list.columns label="URL&apos;ler" name="urls"/>
+		<scroll_list.columns label="Nesne Adı" name="name"/>
+		<scroll_list.columns label="Konum" name="location"/>
+	</scroll_list>
+	<button label="Listeyi Yenile" name="refresh_list_btn"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..2994aba39b75a667e49275be41ea6876f1ec4133
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_script_limits_region_memory.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="BÖLGE BELLEĞİ" name="script_limits_region_memory_panel">
+	<text name="script_memory">
+		Parsel Komut Dosyası Belleği
+	</text>
+	<text name="loading_text">
+		Yükleniyor...
+	</text>
+	<scroll_list name="scripts_list">
+		<scroll_list.columns label="Büyüklük (kb)" name="size"/>
+		<scroll_list.columns label="URL&apos;ler" name="urls"/>
+		<scroll_list.columns label="Nesne Adı" name="name"/>
+		<scroll_list.columns label="Nesne Sahibi" name="owner"/>
+		<scroll_list.columns label="Parsel" name="parcel"/>
+		<scroll_list.columns label="Konum" name="location"/>
+	</scroll_list>
+	<button label="Listeyi Yenile" name="refresh_list_btn"/>
+	<button label="Vurgula" name="highlight_btn"/>
+	<button label="Ä°ade Et" name="return_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_scrolling_param.xml b/indra/newview/skins/default/xui/tr/panel_scrolling_param.xml
new file mode 100644
index 0000000000000000000000000000000000000000..aabdc7358b126a6294173aaf76fe5aa1827fcfe8
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_scrolling_param.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="LLScrollingPanelParam">
+	<text name="Loading...">
+		Yükleniyor...
+	</text>
+	<text name="Loading...2">
+		Yükleniyor...
+	</text>
+	<slider label="[DESC]" name="param slider"/>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..fa659040eaa57c1c5e325093dcc427058ea160b3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_scrolling_param_base.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="LLScrollingPanelParamBase">
+	<slider label="[DESC]" name="param slider"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_side_tray.xml b/indra/newview/skins/default/xui/tr/panel_side_tray.xml
new file mode 100644
index 0000000000000000000000000000000000000000..97bca38a50a29ab0aa84cd79678f0e5eb3a5f24a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_side_tray.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Side tray cannot show background because it is always
+	partially on screen to hold tab buttons. -->
+<side_tray name="sidebar">
+	<sidetray_tab description="Yan Çubuğu Aç/Kapa." name="sidebar_openclose" tab_title="Yan Çubuğu Aç/Kapa"/>
+	<sidetray_tab description="Ana konum." name="sidebar_home" tab_title="Ana konum">
+		<panel label="ana konum" name="panel_home"/>
+	</sidetray_tab>
+	<sidetray_tab description="Kamuya açık profilinizi ve Favorilerinizi düzenleyin." name="sidebar_me" tab_title="Profilim">
+		<panel_container name="panel_container">
+			<panel label="Ben" name="panel_me"/>
+		</panel_container>
+	</sidetray_tab>
+	<sidetray_tab description="Yakındaki arkadaşlarınızı, irtibatları ve kişileri bulun." name="sidebar_people" tab_title="Kişiler">
+		<panel_container name="panel_container">
+			<panel label="Grup Profili" name="panel_group_info_sidetray"/>
+			<panel label="EngellenmiÅŸ Sakinler ve Nesneler" name="panel_block_list_sidetray"/>
+		</panel_container>
+	</sidetray_tab>
+	<sidetray_tab description="Gitmek istediğiniz yerleri ve daha önce uğradığınız yerleri bulun." label="Yerler" name="sidebar_places" tab_title="Yerler">
+		<panel label="Yerler" name="panel_places"/>
+	</sidetray_tab>
+	<sidetray_tab description="Envanterinize göz atın." name="sidebar_inventory" tab_title="Envanterim">
+		<panel label="Envanteri Düzenle" name="sidepanel_inventory"/>
+	</sidetray_tab>
+	<sidetray_tab description="Görünümünüzü değiştirin." name="sidebar_appearance" tab_title="Görünümüm">
+		<panel label="Görünümü Düzenle" name="sidepanel_appearance"/>
+	</sidetray_tab>
+</side_tray>
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
new file mode 100644
index 0000000000000000000000000000000000000000..b9c39ef8cb09e1336f5c3959f9070fed88139629
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_side_tray_tab_caption.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="sidetray_tab_panel">
+	<text name="sidetray_tab_title" value="Yan Panel"/>
+	<button name="undock" tool_tip="Ayır"/>
+	<button name="dock" tool_tip="YerleÅŸtir"/>
+	<button name="show_help" tool_tip="Yardımı Göster"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e3b22c639a6c80998d7e99be93e17bb41fc9e2b5
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_snapshot_inventory.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_inventory">
+	<text name="title">
+		Envanterime Kaydet
+	</text>
+	<text name="hint_lbl">
+		Bir görüntüyü envanterinize kaydetmenin maliyeti L$[UPLOAD_COST] olur. Görüntünüzü bir doku olarak kaydetmek için kare formatlardan birini seçin.
+	</text>
+	<combo_box label="Çözünürlük" name="texture_size_combo">
+		<combo_box.item label="Mevcut Pencere" name="CurrentWindow"/>
+		<combo_box.item label="Küçük (128x128)" name="Small(128x128)"/>
+		<combo_box.item label="Orta (256x256)" name="Medium(256x256)"/>
+		<combo_box.item label="Büyük (512x512)" name="Large(512x512)"/>
+		<combo_box.item label="Özel" name="Custom"/>
+	</combo_box>
+	<spinner label="GeniÅŸlik" name="inventory_snapshot_width"/>
+	<spinner label="Yükseklik" name="inventory_snapshot_height"/>
+	<check_box label="Oranları koru" name="inventory_keep_aspect_check"/>
+	<button label="Ä°ptal" name="cancel_btn"/>
+	<button label="Kaydet" name="save_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_local.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_local.xml
new file mode 100644
index 0000000000000000000000000000000000000000..87d7677d73840a23a86aa5b461e6c2f41312fe14
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_snapshot_local.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_local">
+	<text name="title">
+		Bilgisayarıma Kaydet
+	</text>
+	<combo_box label="Çözünürlük" name="local_size_combo">
+		<combo_box.item label="Mevcut Pencere" name="CurrentWindow"/>
+		<combo_box.item label="320x240" name="320x240"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="1280x1024" name="1280x1024"/>
+		<combo_box.item label="1600x1200" name="1600x1200"/>
+		<combo_box.item label="Özel" name="Custom"/>
+	</combo_box>
+	<layout_stack name="local_image_params_ls">
+		<layout_panel name="local_image_size_lp">
+			<spinner label="GeniÅŸlik" name="local_snapshot_width"/>
+			<spinner label="Yükseklik" name="local_snapshot_height"/>
+			<check_box label="Oranları koru" name="local_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="local_image_format_quality_lp">
+			<combo_box label="Format" name="local_format_combo">
+				<combo_box.item label="PNG (Kayıpsız)" name="PNG"/>
+				<combo_box.item label="JPEG" name="JPEG"/>
+				<combo_box.item label="BMP (Kayıpsız)" name="BMP"/>
+			</combo_box>
+			<slider label="Görüntü kalitesi" name="image_quality_slider"/>
+			<text name="image_quality_level">
+				([QLVL])
+			</text>
+		</layout_panel>
+	</layout_stack>
+	<button label="Ä°ptal" name="cancel_btn"/>
+	<flyout_button label="Kaydet" name="save_btn" tool_tip="Görüntüyü bir dosyaya kaydet">
+		<flyout_button.item label="Kaydet" name="save_item"/>
+		<flyout_button.item label="Farklı Kaydet..." name="saveas_item"/>
+	</flyout_button>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fd2e85fce51c79c9b206f5fcf3ce28fc8ba742bb
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_snapshot_options.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_options">
+	<button label="Profil Akışımda Yayınla" name="save_to_profile_btn"/>
+	<button label="E-posta" name="save_to_email_btn"/>
+	<button label="Envanterime Kaydet (L$[AMOUNT])" name="save_to_inventory_btn"/>
+	<button label="Bilgisayarıma Kaydet" name="save_to_computer_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_postcard.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e999678a0d5cc71c115251f24fe78d0174d56f5d
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_snapshot_postcard.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_postcard">
+	<string name="default_subject">
+		SECOND_LIFE]&apos;dan posta kartı.
+	</string>
+	<string name="default_message">
+		Buna bakın!
+	</string>
+	<string name="upload_message">
+		Gönderiyor...
+	</string>
+	<text name="title">
+		E-posta
+	</text>
+	<button label="Ä°leti" name="message_btn"/>
+	<button label="Ayarlar" name="settings_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_profile.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_profile.xml
new file mode 100644
index 0000000000000000000000000000000000000000..334fd52a48112567da0f8a7f15b84772fd9e7154
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_snapshot_profile.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_snapshot_profile">
+	<text name="title">
+		Profil Akışımda Yayınla
+	</text>
+	<combo_box label="Çözünürlük" name="profile_size_combo">
+		<combo_box.item label="Mevcut Pencere" name="CurrentWindow"/>
+		<combo_box.item label="640x480" name="640x480"/>
+		<combo_box.item label="800x600" name="800x600"/>
+		<combo_box.item label="1024x768" name="1024x768"/>
+		<combo_box.item label="Özel" name="Custom"/>
+	</combo_box>
+	<layout_stack name="profile_image_params_ls">
+		<layout_panel name="profile_image_size_lp">
+			<spinner label="GeniÅŸlik" name="profile_snapshot_width"/>
+			<spinner label="Yükseklik" name="profile_snapshot_height"/>
+			<check_box label="Oranları koru" name="profile_keep_aspect_check"/>
+		</layout_panel>
+		<layout_panel name="profile_image_metadata_lp">
+			<text name="caption_label">
+				Resim yazısı:
+			</text>
+			<check_box initial_value="true" label="Konumu dahil et" name="add_location_cb"/>
+		</layout_panel>
+	</layout_stack>
+	<button label="Ä°ptal" name="cancel_btn"/>
+	<button label="Yayınla" name="post_btn"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_sound_devices.xml b/indra/newview/skins/default/xui/tr/panel_sound_devices.xml
new file mode 100644
index 0000000000000000000000000000000000000000..982ef2ea3bf28e08b1d14c948e0ce10bfb027f77
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_sound_devices.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<panel label="Cihaz Ayarları" name="device_settings_panel">
+	<panel.string name="default_text">
+		Varsayılan
+	</panel.string>
+	<string name="name_no_device">
+		Cihaz Yok
+	</string>
+	<string name="name_default_system_device">
+		Varsayılan Sistem Cihazı
+	</string>
+	<text name="Input">
+		Girdi
+	</text>
+	<text name="Output">
+		Çıktı
+	</text>
+	<text name="My volume label">
+		Ses düzeyim:
+	</text>
+	<slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Bu kaydırıcıyı kullanarak ses düzeyini değiştirin"/>
+	<text name="wait_text">
+		Lütfen bekleyin
+	</text>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..91d07a3b0cccc15d031f9fcc8bfdbf055719f73e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_stand_stop_flying.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- Width and height of this panel should be synchronized with "panel_modes" in the floater_moveview.xml-->
+<panel name="panel_stand_stop_flying">
+	<button label="Ayağa Kalk" name="stand_btn" tool_tip="Kalkmak için buraya tıklayın."/>
+	<button label="Uçmayı Durdur" name="stop_fly_btn" tool_tip="Uçmayı durdur"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_status_bar.xml b/indra/newview/skins/default/xui/tr/panel_status_bar.xml
new file mode 100644
index 0000000000000000000000000000000000000000..81c304a5d80203d90663c9de7cbcc5573ae6d18c
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_status_bar.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="status">
+	<panel.string name="packet_loss_tooltip">
+		Paket Kaybı
+	</panel.string>
+	<panel.string name="bandwidth_tooltip">
+		Bant geniÅŸliÄŸi
+	</panel.string>
+	<panel.string name="time">
+		[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
+	</panel.string>
+	<panel.string name="timeTooltip">
+		[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
+	</panel.string>
+	<panel.string name="buycurrencylabel">
+		L$ [AMT]
+	</panel.string>
+	<panel name="balance_bg">
+		<text name="balance" tool_tip="L$ bakiyenizi yenilemek için buraya tıklayın" value="L$20"/>
+		<button label="L$ Satın Al" name="buyL" tool_tip="Daha fazla L$ satın almak için tıklayın"/>
+		<button label="Alışveriş yap" name="goShop" tool_tip="Second Life Pazaryeri Aç" width="95"/>
+	</panel>
+	<text name="TimeText" tool_tip="Geçerli zaman (Pasifik)">
+		24:00 AM PST
+	</text>
+	<button name="media_toggle_btn" tool_tip="Tüm Ortam Öğelerini Başlat/Durdur (Müzik, Video, Web sayfaları)"/>
+	<button name="volume_btn" tool_tip="Küresel Ses Kontrolü"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_teleport_history.xml b/indra/newview/skins/default/xui/tr/panel_teleport_history.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f5b117502991d2caa2e4aded5e753e2b6667c8da
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_teleport_history.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="Teleport History">
+	<accordion name="history_accordion">
+		<no_matched_tabs_text name="no_matched_teleports_msg" value="Aradığınızı bulamadınız mı? [secondlife:///app/search/places/[SEARCH_TERM] Arama] ile bulmayı deneyin."/>
+		<no_visible_tabs_text name="no_teleports_msg" value="Işınlanma geçmişi boş. [secondlife:///app/search/places/ Arama] yapmayı deneyin."/>
+		<accordion_tab name="today" title="Bugün"/>
+		<accordion_tab name="yesterday" title="Dün"/>
+		<accordion_tab name="2_days_ago" title="2 gün önce"/>
+		<accordion_tab name="3_days_ago" title="3 gün önce"/>
+		<accordion_tab name="4_days_ago" title="4 gün önce"/>
+		<accordion_tab name="5_days_ago" title="5 gün önce"/>
+		<accordion_tab name="6_days_and_older" title="6 gün önce ve daha eski"/>
+		<accordion_tab name="1_month_and_older" title="1 ay önce ve daha eski"/>
+		<accordion_tab name="6_months_and_older" title="6 ay önce ve daha eski"/>
+	</accordion>
+	<panel name="bottom_panel">
+		<menu_button name="gear_btn" tool_tip="İlave seçenekleri göster"/>
+	</panel>
+</panel>
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
new file mode 100644
index 0000000000000000000000000000000000000000..a3a5c70c7e380148a122c307847896a6d8001167
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_teleport_history_item.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="teleport_history_item">
+	<text name="region" value="..."/>
+	<button name="profile_btn" tool_tip="Envanter bilgilerini göster"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_voice_effect.xml b/indra/newview/skins/default/xui/tr/panel_voice_effect.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b46833d7e6a39e0336f0bd7deea577df6318e41e
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_voice_effect.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="panel_voice_effect">
+	<string name="no_voice_effect">
+		Ses Şekillendirme Kapalı
+	</string>
+	<string name="preview_voice_effects">
+		Ses Şekillendirme Önizleme  ▶
+	</string>
+	<string name="get_voice_effects">
+		Ses Åžekillendirmeyi EtkinleÅŸtir â–¶
+	</string>
+	<combo_box name="voice_effect" tool_tip="Sesinizi değiştirmek için bir Ses Şekli seçin">
+		<combo_box.item label="Ses Şekillendirme Kapalı" name="no_voice_effect"/>
+	</combo_box>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_world_map.xml b/indra/newview/skins/default/xui/tr/panel_world_map.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5595c13a7c670730d83fdb12c3d53683561ca67f
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/panel_world_map.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="world_map">
+	<panel.string name="Loading">
+		Yükleniyor...
+	</panel.string>
+	<panel.string name="InvalidLocation">
+		Geçersiz Konum
+	</panel.string>
+	<panel.string name="world_map_north">
+		K
+	</panel.string>
+	<panel.string name="world_map_east">
+		D
+	</panel.string>
+	<panel.string name="world_map_west">
+		B
+	</panel.string>
+	<panel.string name="world_map_south">
+		G
+	</panel.string>
+	<panel.string name="world_map_southeast">
+		GD
+	</panel.string>
+	<panel.string name="world_map_northeast">
+		KD
+	</panel.string>
+	<panel.string name="world_map_southwest">
+		GB
+	</panel.string>
+	<panel.string name="world_map_northwest">
+		KB
+	</panel.string>
+	<panel.string name="world_map_person">
+		1 kiÅŸi
+	</panel.string>
+	<panel.string name="world_map_people">
+		[NUMBER] kiÅŸi
+	</panel.string>
+	<text label="K" name="floater_map_north">
+		K
+	</text>
+	<text label="D" name="floater_map_east">
+		D
+	</text>
+	<text label="B" name="floater_map_west">
+		B
+	</text>
+	<text label="G" name="floater_map_south">
+		G
+	</text>
+	<text label="GD" name="floater_map_southeast">
+		GD
+	</text>
+	<text label="KD" name="floater_map_northeast">
+		KD
+	</text>
+	<text label="GB" name="floater_map_southwest">
+		GB
+	</text>
+	<text label="KB" name="floater_map_northwest">
+		KB
+	</text>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/role_actions.xml b/indra/newview/skins/default/xui/tr/role_actions.xml
new file mode 100644
index 0000000000000000000000000000000000000000..655ac641720e66e4529d4383316cc91399b714a3
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/role_actions.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<role_actions>
+	<action_set description="Bu Yetenekler arasında gruba Üye ekleme ve çıkarma ile davetiye olmadan yeni Üyelerin katılmasına imkan tanıma yer alır." name="Membership">
+		<action description="Kişileri Bu Gruba Davet Et" longdescription="Roller bölümü &gt; Üyeler sekmesindeki &quot;Davet Et&quot; düğmesini kullanarak Kişileri Bu Gruba davet et" name="member invite" value="1"/>
+		<action description="Üyeleri Bu Gruptan Çıkar" longdescription="Roller bölümü &gt; Üyeler sekmesindeki &quot;Çıkar&quot; düğmesini kullanarak Üyeleri Bu Gruptan çıkar. Bir Sahip, başka bir Sahip dışında herkesi çıkartabilir. Eğer bir Sahip değilseniz, bir Üyenin bir gruptan çıkarılmasının tek yolu, Herkes Rolünde olmaları ve başka hiçbir Rolde OLMAMALARIDIR. Üyeleri Rollerden çıkarmak için, &quot;Üyeleri Rollerden Çıkar&quot; Yeteneğine sahip olmalısınız." name="member eject" value="2"/>
+		<action description="&quot;Katılıma Açık&quot; için Aç/Kapa yapın ve &quot;Kayıt Ücretini&quot; değiştirin" longdescription="Yeni üyelerin davetiye olmadan katılmasına imkan tanımak amacıyla &quot;Katılıma Açık&quot; için Aç/Kapa yapın ve Genel bölümünde &quot;Kayıt Ücretini&quot; değiştirin" name="member options" value="3"/>
+	</action_set>
+	<action_set description="Bu Yetenekler arasında grup Rolleri ekleme, kaldırma ve değiştirme; Rollere Üye ekleme ve kaldırma ile Rollere Yetenek atama imkanları yer alır." name="Roles">
+		<action description="Yeni Roller Oluştur" longdescription="Roller bölümü &gt; Roller sekmesinde yeni Roller oluşturun." name="role create" value="4"/>
+		<action description="Rolleri Silin" longdescription="Roller bölümü &gt; Roller sekmesinde Rolleri silin." name="role delete" value="5"/>
+		<action description="Rol adlarını, başlıklarını, açıklamalarını ve Rol üyelerinin kamuyla paylaşılıp paylaşılmadığını değiştirin" longdescription="Rol adlarını, başlıklarını, açıklamalarını ve Rol üyelerinin kamuyla paylaşılıp paylaşılmadığını değiştirin. Bu işlem, bir Rol seçtikten sonra Roller bölümü &gt; Roller sekmesinin altında yapılır." name="role properties" value="6"/>
+		<action description="Üyeleri Atayan Rollerine Atama" longdescription="Üyeleri Atanmış Roller listesindeki Rollere atayın (Roller bölümü &gt; Üyeler sekmesi). Bu Yeteneğe sahip bir Üye, sadece atayanın zaten olduğu bir Role Üye ekleyebilir." name="role assign member limited" value="7"/>
+		<action description="Üyelere Herhangi bir Role Atama" longdescription="Üyeleri Atanmış Roller listesindeki Herhangi Bir Role atayın (Roller bölümü &gt; Üyeler sekmesi). *UYARI* Bu Yeteneğe sahip olan bir Roldeki herhangi bir Üye kendisini -- ve başka herhangi bir Sahip olmayan Üyeyi -- şu anda sahip olduklarından daha fazla güce sahip olan Rollere atayabilir, kendi güçlerini Grup Sahibininkine yakın bir güce yükseltebilir. Bu Yeteneği atamadan önce ne yaptığınızı bildiğinizden emin olun." name="role assign member" value="8"/>
+		<action description="Üyeleri Rollerden Çıkarma" longdescription="Üyeleri Atanmış Roller listesindeki Rollerden çıkartın (Roller bölümü &gt; Üyeler sekmesi). Sahipler çıkartılamaz." name="role remove member" value="9"/>
+		<action description="Rollere Yetenek Atama ve Kaldırma" longdescription="İzin Verilen Yetenekler listesindeki her bir Rol için Rollere Yetenek Atayın ve Kaldırın ((Roller bölümü &gt; Üyeler sekmesi). *UYARI* Bu Yeteneğe sahip olan bir Roldeki herhangi bir Üye kendisine -- ve diğer tüm Sahip olmayan Üyelere -- tüm Yetenekleri atayabilir, kendi güçlerini Grup Sahibininkine yakın bir güce yükseltebilir. Bu Yeteneği atamadan önce ne yaptığınızı bildiğinizden emin olun." name="role change actions" value="10"/>
+	</action_set>
+	<action_set description="Bu Yetenekler arasında grubun kimliğini değiştirme imkanları bulunmaktadır: Örneğin bilgilerin kamuya açıklığı, grup bildirgesi ve işaretleri." name="Group Identity">
+		<action description="Grup Bildirgesini, İşaretlerini ve &quot;Aramada gösterilsin&quot; ayarını değiştirme" longdescription="Grup Bildirgesini, İşaretlerini ve &quot;Aramada gösterilsin&quot; ayarını değiştirin. Bu işlem Genel bölümde yapılır." name="group change identity" value="11"/>
+	</action_set>
+	<action_set description="Bu Yetenekler arasında grubun sahip olduğu arazileri devretme, değiştirme ve satma imkanları vardır. Arazi Hakkında penceresine gitmek için, zemine sağ tıklayın ve &quot;Arazi Hakkında&quot; seçimini yapın ya da Gezinme Çubuğunda &quot;i&quot; simgesine tıklayın." name="Parcel Management">
+		<action description="Arazi devretme ve grup için arazi satın alma" longdescription="Arazi devredin ve grup için arazi satın alın. Bu işlem Arazi Hakkında &gt; Genel sekmesinde yapılır." name="land deed" value="12"/>
+		<action description="Vali Linden&apos;e arazi terketme" longdescription="Vali Linden&apos;e arazi terkedin. *UYARI* Bu Yeteneğe sahip bir Roldeki herhangi bir Üye, Arazi Hakkında &gt; Genel sekmesinde grubun sahip olduğu araziyi terkedebilir ve bir satış olmaksızın bunu Linden mülkiyetine geçirebilir. Bu Yeteneği atamadan önce ne yaptığınızı bildiğinizden emin olun." name="land release" value="13"/>
+		<action description="Araziyi satışa çıkarma" longdescription="Araziyi satışa çıkarın. *UYARI* Bu Yeteneğe sahip bir Roldeki herhangi bir Üye, Arazi Hakkında &gt; Genel sekmesinde grubun sahip olduğu arazileri istedikleri gibi satabilir! Bu Yeteneği atamadan önce ne yaptığınızı bildiğinizden emin olun." name="land set sale info" value="14"/>
+		<action description="Parselleri bölme ve birleştirme" longdescription="Parselleri bölün ve birleştirin. Bunu yapmak için zemine sağ tıklayın, &quot;Yüzeyi Düzenle&quot; seçimini yapın ve farenizi arazi üzerinde sürükleyerek bir seçim yapın. Araziyi bölmek için, bölmek istediğiniz araziyi seçin ve &quot;Böl&quot; üzerine tıklayın. Birleştirmek için, birbirine komşu iki veya daha fazla sayıda parsel seçin ve &quot;Birleştir&quot; üzerine tıklayın." name="land divide join" value="15"/>
+	</action_set>
+	<action_set description="Bu yetenekler arasında parsel adını ve yayınlama ayarlarını, Bul dizinindeki görünürlük ile iniş noktası ve TP yönlendirme seçeneklerini değiştirme imkanları yer alır." name="Parcel Identity">
+		<action description="&apos;Konumu Arama Sonuçlarında Göster&apos; seçeneğini Aç/Kapa ve kategoriyi ayarla" longdescription="Arazi Hakkında &gt; Seçenekler sekmesinden &apos;Konumu Arama Sonuçlarında Göster&apos; seçeneğini Açın/Kapayın ve parsel kategorisini ayarlayın." name="land find places" value="17"/>
+		<action description="Parsel adını, açıklamasını ve &quot;Konumu Arama Sonuçlarında Göster&quot; ayarlarını değiştir" longdescription="Parsel adını, açıklamasını ve &quot;Konumu Arama Sonuçlarında Göster&quot; ayarlarını değiştirin. Bu işlem Arazi Hakkında &gt; Seçenekler sekmesinde yapılır." name="land change identity" value="18"/>
+		<action description="İniş noktasını ve ışınlama yönlendirmesini ayarlayın" longdescription="Bir grubun sahip olduğu parsel üzerinde, bu Yeteneğe sahip olan bir Roldeki Üyeler gelen ışınlanmaların varacağı iniş noktasını ve daha fazla kontrol için ışınlama yönlendirmesini ayarlayabilirler. Bu işlem Arazi Hakkında &gt; Seçenekler sekmesinde yapılır." name="land set landing point" value="19"/>
+	</action_set>
+	<action_set description="Bu Yeteneklere &apos;Nesneleri Oluştur&apos;, &apos;Yüzeyi Düzenle&apos;, müzik ve ortam ayarları gibi parsel seçeneklerini etkileyen güçler de dahildir." name="Parcel Settings">
+		<action description="Müziği &amp; ortam ayarlarını değiştir" longdescription="Akış müziğini ve film ayarlarını Arazi Hakkında &gt; Ortam sekmesinden değiştirin." name="land change media" value="20"/>
+		<action description="&apos;Yüzeyi Düzenle&apos; seçeneğini Aç/Kapa" longdescription="&apos;Yüzeyi Düzenle&apos; seçeneğini açın/kapatın. *UYARI* Arazi Hakkında &gt; Seçenekler sekmesi &gt; Yüzeyi Düzenle seçeneği, herhangi bir kişinin arazinizin şeklini değiştirmesine, Linden bitkileri yerleştirmesine ve bu bitkilerin yerlerini değiştirmesine izin verir. Bu Yeteneği atamadan önce ne yaptığınızı bildiğinizden emin olun. Yüzey düzenleme seçeneği Arazi Hakkında &gt; Seçenekler sekmesinden açılıp kapanır." name="land edit" value="21"/>
+		<action description="Arazi Hakkında &gt; Seçenekler sekmesindeki çeşitli ayarları Aç/Kapa" longdescription="&apos;Güvenli (hasar yok)&apos;, &apos;Uç&apos; ve diğer Second Life Sakinlerinin &apos;Yüzeyi Düzenle&apos;, &apos;İnşa Et&apos;, &apos;Yer İmleri Oluştur&apos; ve &apos;Komut Dosyalarını Çalıştır&apos; yeteneklerini grubun sahip olduğu arazi üzerinde kullanmalarına izin verme tercihini Arazi Hakkında &gt; Seçenekler sekmesinden açın/kapayın." name="land options" value="22"/>
+	</action_set>
+	<action_set description="Bu Yeteneklere Üyelerin grubun sahip olduğu parseller üzerindeki kısıtlamaları geçmesine izin veren güçler de dahildir." name="Parcel Powers">
+		<action description="&apos;Yüzeyi Düzenle&apos; yeteneğine her zaman izin ver" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, Arazi Hakkında &gt; Seçenekler sekmesinde kapalı olsa da grubun sahip olduğu parsel üzerinde yüzey düzenleme yapabilir." name="land allow edit land" value="23"/>
+		<action description="&apos;Uç&apos; yeteneğine her zaman izin ver" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, Arazi Hakkında &gt; Seçenekler sekmesinde kapalı olsa da grubun sahip olduğu parsel üzerinde uçabilir." name="land allow fly" value="24"/>
+		<action description="&apos;Nesneleri Oluştur&apos; yeteneğine her zaman izin ver" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, Arazi Hakkında &gt; Seçenekler sekmesinde kapalı olsa da grubun sahip olduğu parsel üzerinde nesne oluşturabilirler." name="land allow create" value="25"/>
+		<action description="&apos;Yer İmi Oluştur&apos; yeteneğine her zaman izin ver" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, Arazi Hakkında &gt; Seçenekler sekmesinde kapalı olsa da grubun sahip olduğu parsel üzerinde yer imi oluşturabilirler." name="land allow landmark" value="26"/>
+		<action description="Grup arazisi üzerinde &apos;Ana Konumu Burası Olarak Seç&apos; yeteneğine izin ver" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, bu gruba devrediilmiş bir parsel üzerinde Dünya menüsü &gt; Yer imleri &gt; Ana Konumu Burası Olarak Seç seçeneğini kullanabilirler." name="land allow set home" value="28"/>
+		<action description="Grup arazisi üzerinde &apos;Etkinliğe Ev Sahipliği Yap&apos; yeteneğine izin ver" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler bir etkinliğe ev sahipliği yapmak için grubun sahip olduğu parselleri mekan olarak seçebilirler." name="land allow host event" value="41"/>
+	</action_set>
+	<action_set description="Bu Yeteneklere, grubun sahip olduğu parsellere erişime izin verme veya buralara erişimi yasaklama ve Second Life Sakinlerini dondurma veya parselden dışarı çıkarma da dahildir." name="Parcel Access">
+		<action description="Parselin Erişim listelerini yönet" longdescription="Parselin Erişim listelerini Arazi Hakkında &gt; Erişim sekmesinden yönetin." name="land manage allowed" value="29"/>
+		<action description="Parselin Yasaklama listelerini yönet" longdescription="Parselin Yasaklama listelerini Arazi Hakkında &gt; Erişim sekmesinden yönetin." name="land manage banned" value="30"/>
+		<action description="Parselin &apos;Geçiş haklr. şuna sat&apos; ayarlarını değiştir" longdescription="Parselin &apos;Geçiş haklr. şuna sat&apos; ayarlarını Arazi Hakkında &gt; Erişim sekmesinden değiştirin." name="land manage passes" value="31"/>
+		<action description="Parsel üzerindeki Second Life Sakinlerini dışarı çıkar veya dondur" longdescription="Bu Yeteneğe sahip olan bir Roldeki Üyeler, grubun sahip olduğu bir parsel üzerinde olmasını istemedikleri bir Second Life sakininin üzerini sağ tıklatıp &apos;Dışarı Çıkar&apos; veya &apos;Dondur&apos;u seçebilirler." name="land admin" value="32"/>
+	</action_set>
+	<action_set description="Bu Yeteneklere üyelerin nesneleri iade etmelerine, Linden bitkilerini yerleştirmelerine ve bu bitkilerin yerlerini değiştirmelerine izin veren güçler de dahildir. Bu özellik, Üyelerin çöpleri temizlemeleri ve bahçe düzenlemesi yapmaları için kullanışlıdır; fakat dikkatle kullanılmalıdır, çünkü nesneleri iade etmenin geri alınma imkanı yoktur." name="Parcel Content">
+		<action description="Grubun sahip olduğu nesneleri iade et" longdescription="Grubun sahip olduğu parseller üzerinde grubun sahip olduğu nesneleri Arazi Hakkında &gt; Nesneler sekmesinden iade edin." name="land return group owned" value="48"/>
+		<action description="Gruba ayrılan nesneleri iade et" longdescription="Grubun sahip olduğu parseller üzerinde gruba ayrılan nesneleri Arazi Hakkında &gt; Nesneler sekmesinden iade edin." name="land return group set" value="33"/>
+		<action description="Gruba ait olmayan nesneleri iade et" longdescription="Grubun sahip olduğu parseller üzerinde gruba ait olmayan nesneleri Arazi Hakkında &gt; Nesneler sekmesinden iade edin." name="land return non group" value="34"/>
+		<action description="Linden bitkilerini kullanarak bahçe düzenleme" longdescription="Linden ağaçlarını, bitkilerini ve çimleri yerleştirerek veya yerlerini değiştirerek bahçe düzenleme yeteneği. Bu öğeler envanterinizin Kütüphane &gt; Nesneler klasörü içinde bulunabilir veya İnşa Et menüsünden oluşturulabilir." name="land gardening" value="35"/>
+	</action_set>
+	<action_set description="Bu Yeteneklere grubun sahip olduğu nesneleri devretme, değiştirme ve satma güçleri de dahildir. Bu değişiklikler İnşa Et Araçları &gt; Genel sekmesinden yapılabilir. Bir nesneyi sağ tıklatıp Düzenle&apos;yi seçerek ayarlarını görebilirsiniz." name="Object Management">
+		<action description="Nesneleri gruba devret" longdescription="Nesneleri İnşa Et Araçları &gt; Genel sekmesinden gruba devredin." name="object deed" value="36"/>
+		<action description="Grubun sahip olduğu nesneleri kullan (taşı, kopyala, değiştir)" longdescription="Grubun sahip olduğu nesneleri, İnşa Et Araçları &gt; Genel sekmesi üzerinden kullanın (taşıyın, kopyalayın, değiştirin)." name="object manipulate" value="38"/>
+		<action description="Grubun sahip olduğu nesneleri satışa çıkar" longdescription="Grubun sahip olduğu nesneleri İnşa Et Araçları &gt; Genel sekmesinden satışa çıkarın." name="object set sale" value="39"/>
+	</action_set>
+	<action_set description="Bu Yeteneklere Üyelerin grup borçlarını ödemesini ve grup kâr paylarını almasını sağlayan ve grup hesabının geçmiş bilgilerine erişimi sınırlandıran güçler de dahildir." name="Accounting">
+		<action description="Grup borçlarını öde ve grup kâr paylarını al" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler otomatik olarak grup borçlarını ödeyecek ve grup kâr paylarını alacaktır. Bu da grubun sahip olduğu arazi satışlarından kendilerine düşen ve günlük olarak dağıtılan ksımı alacakları gibi parsel için ilan verme ücreti gibi masraflara da katkıda bulunacakları anlamına gelir." name="accounting accountable" value="40"/>
+	</action_set>
+	<action_set description="Bu Yeteneklere Üyelerin grup Bildirimlerini gönderme, alma ve görüntüleme imkanı tanıyan güçler de dahildir." name="Notices">
+		<action description="Bildirimleri Gönder" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler Grup &gt; Bildirimler bölümünden Bildirimleri gönderebilir." name="notices send" value="42"/>
+		<action description="Bildirimleri Al ve eski Bildirimleri görüntüle" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler Bildirim alabilir ve Grup &gt; Bildirimler bölümündeki eski Bildirimleri görüntüleyebilir." name="notices receive" value="43"/>
+	</action_set>
+	<action_set description="Bu Yetenekler arasında grup sohbet oturumlarına ve grup sesli sohbetlerine izin verme veya bunları kısıtlama yetkileri de dahildir." name="Chat">
+		<action description="Grup Sohbetine Katıl" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler yazılı ve sesli grup sohbet oturumlarına katılabilir." name="join group chat" value="16"/>
+		<action description="Grup Sesli Sohbetine Katıl" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler grup sesli sohbet oturumlarına katılabilir.  NOT: Sesli sohbet oturumuna erişim için Grup Sohbetine Katıl yeteneği gereklidir." name="join voice chat" value="27"/>
+		<action description="Grup Sohbetini Yönet" longdescription="Bu Yeteneğe sahip bir Roldeki Üyeler grup sesli ve yazılı sohbet oturumlarına errişimi ve katılımı kontrol edebilir." name="moderate group chat" value="37"/>
+	</action_set>
+</role_actions>
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml b/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b632f21cf583641cc045b6af5782a7970dc64be4
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/sidepanel_appearance.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="Dış Görünümler" name="appearance panel">
+	<string name="No Outfit" value="Dış Görünüm Yok"/>
+	<string name="Unsaved Changes" value="KaydedilmemiÅŸ deÄŸiÅŸiklikler"/>
+	<string name="Now Wearing" value="Åžimdi giyiyor..."/>
+	<string name="Changing outfits" value="Dış görünümler değiştiriliyor"/>
+	<panel name="panel_currentlook">
+		<button label="E" name="editappearance_btn"/>
+		<button label="O" name="openoutfit_btn"/>
+		<text name="currentlook_status">
+			(Durum)
+		</text>
+		<text name="currentlook_name">
+			MOOSE gibi gerçekten Uzun bir Adla Dış Görünümüm
+		</text>
+		<button label="" name="edit_outfit_btn" tool_tip="Bu dış görünümü düzenle"/>
+	</panel>
+	<filter_editor label="Dış Görünümleri Filtrele" name="Filter"/>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml b/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml
new file mode 100644
index 0000000000000000000000000000000000000000..70c449b4024133eb2bb42d05947493bbc475635a
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/sidepanel_inventory.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel label="EÅŸyalar" name="objects panel">
+	<panel label="" name="sidepanel__inventory_panel">
+		<layout_stack name="inventory_layout_stack">
+			<layout_panel name="inbox_outbox_layout_panel">
+				<layout_stack name="inbox_outbox_layout_stack">
+					<layout_panel name="inbox_layout_panel">
+						<panel label="" name="marketplace_inbox">
+							<string name="InboxLabelWithArg">
+								Alınan öğeler ([NUM])
+							</string>
+							<string name="InboxLabelNoArg">
+								Alınan öğeler
+							</string>
+							<button label="Alınan öğeler" name="inbox_btn"/>
+							<text name="inbox_fresh_new_count">
+								[NUM] yeni
+							</text>
+							<panel tool_tip="Drag and drop items to your inventory to manage and use them">
+								<text name="inbox_inventory_placeholder">
+									Pazaryerinden satın alınan öğeler buraya teslim edilir.
+								</text>
+							</panel>
+						</panel>
+					</layout_panel>
+					<layout_panel name="outbox_layout_panel">
+						<panel label="" name="marketplace_outbox">
+							<string name="OutboxLabelWithArg">
+								Satıcı giden kutusu ([NUM])
+							</string>
+							<string name="OutboxLabelNoArg">
+								Satıcı giden kutusu
+							</string>
+							<button label="Satıcı giden kutusu" name="outbox_btn"/>
+							<button label="" name="outbox_sync_btn" tool_tip="Pazaryeri Vitrinime Gönder"/>
+							<panel>
+								<panel name="outbox_inventory_placeholder_panel">
+									<text name="outbox_inventory_placeholder_title">
+										Yükleniyor...
+									</text>
+								</panel>
+							</panel>
+						</panel>
+					</layout_panel>
+				</layout_stack>
+			</layout_panel>
+		</layout_stack>
+		<panel name="button_panel">
+			<layout_stack name="button_panel_ls">
+				<layout_panel name="info_btn_lp">
+					<button label="Profil" name="info_btn" tool_tip="Nesne profilini göster"/>
+				</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="shop_btn_lp">
+					<button label="Alışveriş yap" name="shop_btn" tool_tip="Pazaryeri web sayfasını aç"/>
+					<button label="Giy" name="wear_btn" tool_tip="Seçilen dış görünümü giy"/>
+					<button label="Oyna" name="play_btn"/>
+					<button label="Işınla" name="teleport_btn" tool_tip="Seçilen alana ışınla"/>
+				</layout_panel>
+			</layout_stack>
+		</panel>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml b/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..81291a431c5bef36b5a88717e1667c4d3953b258
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/sidepanel_item_info.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="item properties" title="Öğe Profili">
+	<panel.string name="unknown">
+		(bilinmiyor)
+	</panel.string>
+	<panel.string name="public">
+		(kamuya açık)
+	</panel.string>
+	<panel.string name="you_can">
+		Åžunu yapabilirsiniz:
+	</panel.string>
+	<panel.string name="owner_can">
+		Sahip ÅŸunu yapabilir:
+	</panel.string>
+	<panel.string name="acquiredDate">
+		[wkday,datetime,local] [mth,datetime,local] [day,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] [year,datetime,local]
+	</panel.string>
+	<panel.string name="origin_inventory">
+		(Envanter)
+	</panel.string>
+	<panel.string name="origin_inworld">
+		(SL Dünyası)
+	</panel.string>
+	<text name="title" value="Öğe Profili"/>
+	<text name="origin" value="(Envanter)"/>
+	<scroll_container name="item_profile_scroll">
+		<panel label="" name="item_profile">
+			<text name="LabelItemNameTitle">
+				Ad:
+			</text>
+			<text name="LabelItemDescTitle">
+				Açıklama:
+			</text>
+			<text name="LabelCreatorTitle">
+				OluÅŸturan:
+			</text>
+			<text name="LabelOwnerTitle">
+				Sahip:
+			</text>
+			<text name="LabelAcquiredTitle">
+				Alınan:
+			</text>
+			<panel name="perms_inv">
+				<text name="perm_modify">
+					Åžunu yapabilirsiniz:
+				</text>
+				<check_box label="DeÄŸiÅŸtir" name="CheckOwnerModify"/>
+				<check_box label="Kopyala" name="CheckOwnerCopy"/>
+				<check_box label="Aktar" name="CheckOwnerTransfer"/>
+				<text name="AnyoneLabel">
+					Herkes:
+				</text>
+				<check_box label="Kopyala" name="CheckEveryoneCopy"/>
+				<text name="GroupLabel">
+					Grup:
+				</text>
+				<check_box label="Paylaş" name="CheckShareWithGroup" tool_tip="Ayarlanan grubun tüm üyelerinin, bu nesne için değiştirme izinlerinizi paylaşmasına izin verir. Rol kısıtlamalarını etkinleştirmek için Devretme yapmalısınız."/>
+				<text name="NextOwnerLabel">
+					Sonraki sahip:
+				</text>
+				<check_box label="DeÄŸiÅŸtir" name="CheckNextOwnerModify"/>
+				<check_box label="Kopyala" name="CheckNextOwnerCopy"/>
+				<check_box label="Aktar" name="CheckNextOwnerTransfer" tool_tip="Sonraki sahibi bu nesneyi verebilir veya tekrar satabilir"/>
+			</panel>
+			<check_box label="Satılık" name="CheckPurchase"/>
+			<combo_box name="combobox sale copy">
+				<combo_box.item label="Kopyala" name="Copy"/>
+				<combo_box.item label="Orijinal" name="Original"/>
+			</combo_box>
+			<spinner label="Fiyat: L$" name="Edit Cost"/>
+		</panel>
+	</scroll_container>
+	<panel name="button_panel">
+		<button label="Ä°ptal" name="cancel_btn"/>
+	</panel>
+</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
new file mode 100644
index 0000000000000000000000000000000000000000..2fa6281f052ed07c1296b8420633b945f6b3f0af
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/sidepanel_task_info.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<panel name="object properties" title="Nesne Profili">
+	<panel.string name="text deed continued">
+		Devret
+	</panel.string>
+	<panel.string name="text deed">
+		Devret
+	</panel.string>
+	<panel.string name="text modify info 1">
+		Bu nesneyi deÄŸiÅŸtirebilirsiniz
+	</panel.string>
+	<panel.string name="text modify info 2">
+		Bu nesneleri deÄŸiÅŸtirebilirsiniz
+	</panel.string>
+	<panel.string name="text modify info 3">
+		Bu nesneyi deÄŸiÅŸtiremezsiniz
+	</panel.string>
+	<panel.string name="text modify info 4">
+		Bu nesneleri deÄŸiÅŸtiremezsiniz
+	</panel.string>
+	<panel.string name="text modify warning">
+		Bu nesne bağlantılı parçalara sahip
+	</panel.string>
+	<panel.string name="Cost Default">
+		Fiyat: L$
+	</panel.string>
+	<panel.string name="Cost Total">
+		Toplam Fiyat: L$
+	</panel.string>
+	<panel.string name="Cost Per Unit">
+		Birim Fiyatı: L$
+	</panel.string>
+	<panel.string name="Cost Mixed">
+		Karma Fiyat
+	</panel.string>
+	<panel.string name="Sale Mixed">
+		Karma Satış
+	</panel.string>
+	<text name="title" value="Nesne Profili"/>
+	<text name="where" value="(SL Dünyası)"/>
+	<panel label="" name="properties_panel">
+		<text name="Name:">
+			Ad:
+		</text>
+		<text name="Description:">
+			Açıklama:
+		</text>
+		<text name="CreatorNameLabel">
+			OluÅŸturan:
+		</text>
+		<text name="Owner:">
+			Sahip:
+		</text>
+		<text name="Group_label">
+			Grup:
+		</text>
+		<button name="button set group" tool_tip="Bu nesnenin izinlerini paylaşmak için bir grup seçin"/>
+		<name_box initial_value="Yükleniyor..." name="Group Name Proxy"/>
+		<button label="Devret" label_selected="Devret" name="button deed" tool_tip="Bu nesne devredilerek verildiğinde, nesnenin sonraki sahibi için izinler geçerli olur. Grup içerisinde paylaşılan nesneler bir grup yetkilisi tarafından devredilebilir."/>
+		<text name="label click action">
+			Şu eylem için tıklayın:
+		</text>
+		<combo_box name="clickaction">
+			<combo_box.item label="Dokun (varsayılan)" name="Touch/grab(default)"/>
+			<combo_box.item label="Nesnenin üzerine otur" name="Sitonobject"/>
+			<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>
+		<panel name="perms_inv">
+			<text name="perm_modify">
+				Bu nesneyi deÄŸiÅŸtirebilirsiniz
+			</text>
+			<text name="Anyone can:">
+				Herkes:
+			</text>
+			<check_box label="Kopyala" name="checkbox allow everyone copy"/>
+			<check_box label="Hareket Et" name="checkbox allow everyone move"/>
+			<text name="GroupLabel">
+				Grup:
+			</text>
+			<check_box label="Paylaş" name="checkbox share with group" tool_tip="Ayarlanan grubun tüm üyelerinin, bu nesne için değiştirme izinlerinizi paylaşmasına izin verir. Rol kısıtlamalarını etkinleştirmek için Devretme yapmalısınız."/>
+			<text name="NextOwnerLabel">
+				Sonraki sahip:
+			</text>
+			<check_box label="DeÄŸiÅŸtir" name="checkbox next owner can modify"/>
+			<check_box label="Kopyala" name="checkbox next owner can copy"/>
+			<check_box label="Aktar" name="checkbox next owner can transfer" tool_tip="Sonraki sahibi bu nesneyi verebilir veya tekrar satabilir"/>
+		</panel>
+		<check_box label="Satılık" name="checkbox for sale"/>
+		<combo_box name="sale type">
+			<combo_box.item label="Kopyala" name="Copy"/>
+			<combo_box.item label="İçerik" name="Contents"/>
+			<combo_box.item label="Orijinal" name="Original"/>
+		</combo_box>
+		<spinner label="Fiyat: L$" name="Edit Cost"/>
+		<check_box label="Aramada göster" name="search_check" tool_tip="Kişiler arama sonuçlarında bu nesneyi görebilsin"/>
+		<text name="B:">
+			B:
+		</text>
+		<text name="O:">
+			O:
+		</text>
+		<text name="G:">
+			G:
+		</text>
+		<text name="E:">
+			E:
+		</text>
+		<text name="N:">
+			N:
+		</text>
+		<text name="F:">
+			F:
+		</text>
+	</panel>
+	<panel name="button_panel">
+		<button label="Aç" name="open_btn"/>
+		<button label="Öde" name="pay_btn"/>
+		<button label="Satın Al" name="buy_btn"/>
+		<button label="Ayrıntl" name="details_btn"/>
+	</panel>
+</panel>
diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0dbc9b0a0ee84ce8276cbd7960a7d37c59d24f06
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/strings.xml
@@ -0,0 +1,5001 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<!-- This file contains strings that used to be hardcoded in the source.
+     It is only for those strings which do not belong in a floater.
+     For example, the strings used in avatar chat bubbles, and strings
+     that are returned from one component and may appear in many places-->
+<strings>
+	<string name="SECOND_LIFE">
+		Second Life
+	</string>
+	<string name="APP_NAME">
+		Second Life
+	</string>
+	<string name="CAPITALIZED_APP_NAME">
+		SECOND LIFE
+	</string>
+	<string name="SECOND_LIFE_GRID">
+		Second Life Ağı
+	</string>
+	<string name="SUPPORT_SITE">
+		Second Life Destek Portalı
+	</string>
+	<string name="StartupDetectingHardware">
+		Donanım saptanıyor...
+	</string>
+	<string name="StartupLoading">
+		[APP_NAME] yükleniyor...
+	</string>
+	<string name="StartupClearingCache">
+		Önbellek temizleniyor...
+	</string>
+	<string name="StartupInitializingTextureCache">
+		Doku önbelleği başlatılıyor...
+	</string>
+	<string name="StartupInitializingVFS">
+		VFS Başlatılıyor...
+	</string>
+	<string name="StartupRequireDriverUpdate">
+		Grafik başlatma başarılamadı. Lütfen grafik sürücünüzü güncelleştirin!
+	</string>
+	<string name="ProgressRestoring">
+		Geri yükleniyor...
+	</string>
+	<string name="ProgressChangingResolution">
+		Çözünürlük değiştiriliyor...
+	</string>
+	<string name="Fullbright">
+		Tam parlak (eski)
+	</string>
+	<string name="LoginInProgress">
+		Oturum açılıyor. [APP_NAME] kilitlenmiş görünebilir.  Lütfen bekleyin.
+	</string>
+	<string name="LoginInProgressNoFrozen">
+		Oturum açılıyor...
+	</string>
+	<string name="LoginAuthenticating">
+		Kimlik doğrulaması yapılıyor
+	</string>
+	<string name="LoginMaintenance">
+		Hesap bakımı yapılıyor...
+	</string>
+	<string name="LoginAttempt">
+		Önceki oturum açma girişimi başarılamadı. Oturum açılıyor, [NUMBER]. girişim.
+	</string>
+	<string name="LoginPrecaching">
+		Dünya yükleniyor...
+	</string>
+	<string name="LoginInitializingBrowser">
+		Katıştırılmış web tarayıcısı başlatılıyor...
+	</string>
+	<string name="LoginInitializingMultimedia">
+		Multimedya başlatılıyor...
+	</string>
+	<string name="LoginInitializingFonts">
+		Fontlar yükleniyor...
+	</string>
+	<string name="LoginVerifyingCache">
+		Önbellek dosyaları doğrulanıyor (60-90 saniye zaman alabilir)...
+	</string>
+	<string name="LoginProcessingResponse">
+		Yanıt işleniyor...
+	</string>
+	<string name="LoginInitializingWorld">
+		Dünya başlatılıyor...
+	</string>
+	<string name="LoginDecodingImages">
+		Görüntülerin kodu çözülüyor...
+	</string>
+	<string name="LoginInitializingQuicktime">
+		QuickTime Başlatılıyor...
+	</string>
+	<string name="LoginQuicktimeNotFound">
+		QuickTime bulunamadı - başlatılamadı.
+	</string>
+	<string name="LoginQuicktimeOK">
+		QuickTime başarıyla başlatıldı.
+	</string>
+	<string name="LoginRequestSeedCapGrant">
+		Bölge özellikleri talep ediliyor...
+	</string>
+	<string name="LoginRetrySeedCapGrant">
+		Bölge özellikleri talep ediliyor: [NUMBER]. girişim...
+	</string>
+	<string name="LoginWaitingForRegionHandshake">
+		Bölge el sıkışması bekleniyor...
+	</string>
+	<string name="LoginConnectingToRegion">
+		Bölgeye bağlanılıyor...
+	</string>
+	<string name="LoginDownloadingClothing">
+		Giysiler karşıdan yükleniyor...
+	</string>
+	<string name="InvalidCertificate">
+		Sunucu geçersiz veya bozuk bir sertifika döndürdü. Lütfen Ağ yöneticisine başvurun.
+	</string>
+	<string name="CertInvalidHostname">
+		Sunucuya erişmek için geçersiz bir ana bilgisayar adı kullanıldı, lütfen SLURL veya Ağ ana bilgisayar adınızı kontrol edin.
+	</string>
+	<string name="CertExpired">
+		Ağ tarafından döndürülen sertifikanın süresi sona ermiş görünüyor.  Lütfen sistem saatinizi kontrol edin veya Ağ yöneticinize başvurun.
+	</string>
+	<string name="CertKeyUsage">
+		Sunucu tarafından döndürülen sertifika SSL için kullanılamadı.  Lütfen Ağ yöneticinize başvurun.
+	</string>
+	<string name="CertBasicConstraints">
+		Sunucunun Sertifika zincirinde çok fazla sertifika vardı.  Lütfen Ağ yöneticinize başvurun.
+	</string>
+	<string name="CertInvalidSignature">
+		Ağ sunucusu tarafından döndürülen sertifika imzası doğrulanamadı.  Lütfen Ağ yöneticinize başvurun.
+	</string>
+	<string name="LoginFailedNoNetwork">
+		Ağ hatası: Bağlantı kurulamadı, lütfen ağ bağlantınızı kontrol edin.
+	</string>
+	<string name="LoginFailed">
+		Oturum açılamadı.
+	</string>
+	<string name="Quit">
+		Çık
+	</string>
+	<string name="create_account_url">
+		http://join.secondlife.com/
+	</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:
+http://secondlife.com/download
+
+Daha fazla bilgi edinmek için asağıdaki SSS sayfamızı ziyaret edin:
+http://secondlife.com/viewer-access-faq
+	</string>
+	<string name="LoginIntermediateOptionalUpdateAvailable">
+		Opsiyonel görüntüleyici güncelleştirmesi mevcut: [VERSION]
+	</string>
+	<string name="LoginFailedRequiredUpdate">
+		Gerekli görüntüleyici güncelleştirmesi: [VERSION]
+	</string>
+	<string name="LoginFailedAlreadyLoggedIn">
+		Bu aracı zaten oturum açmış durumda.
+	</string>
+	<string name="LoginFailedAuthenticationFailed">
+		Üzgünüz! Oturumunuzu açamadık.
+Lütfen şunları doğru girdiğinizi kontrol edin:
+    * Kullanıcı adı (mustafayalcin12 veya faruk.gungoren gibi)
+    * Parola:
+Ayrıca lütfen Caps Lock tuşuna basmadığınıza emin olun.
+	</string>
+	<string name="LoginFailedPasswordChanged">
+		Güvenlik önlemi olarak parolanız değiştirildi.
+Lütfen hesap sayfanıza gidin: http://secondlife.com/password
+ve parolanızı sıfırlamak için güvenlik sorusunu yanıtlayın.
+Bu sorun için özür dileriz.
+	</string>
+	<string name="LoginFailedPasswordReset">
+		Sistemimizde bazı değişiklikler yaptık, parolanızı sıfırlamanız gerekecek.
+Lütfen hesap sayfanıza gidin: http://secondlife.com/password
+ve parolanızı sıfırlamak için güvenlik sorusunu yanıtlayın.
+Bu sorun için özür dileriz.
+	</string>
+	<string name="LoginFailedEmployeesOnly">
+		Second Life bakım amacıyla geçici olarak kapatıldı.
+Şu anda sadece çalışanlar oturum açabilir.
+Güncelleştirmeler için www.secondlife.com/status adresini kontrol edin.
+	</string>
+	<string name="LoginFailedPremiumOnly">
+		Second Life üzerindeki aktif kullanıcıların olası en iyi deneyimi yaşamasını sağlamak için, oturum açılması geçici olarak kısıtlanmıştır.
+	 	
+Second Life için ödeme yapmış olan kişilere öncelik tanımak amacıyla, ücretsiz hesaplara sahip kişiler bu süre içerisinde Second Life&apos;a erişemeyecekler.
+	</string>
+	<string name="LoginFailedComputerProhibited">
+		Second Life&apos;a bu bilgisayardan eriÅŸemezsiniz.
+Bunun bir hata olduğunu düşünüyorsanız, lütfen şu adrese başvurun:
+support@secondlife.com.
+	</string>
+	<string name="LoginFailedAcountSuspended">
+		Hesabınıza şu zamana kadar erişemeyeceksiniz:
+Pasifik Saati ile [TIME].
+	</string>
+	<string name="LoginFailedAccountDisabled">
+		Talebinizi şu anda tamamlayamıyoruz.
+Lütfen yardım almak için Second Life destek bölümüne başvurun: http://secondlife.com/support
+Eğer parolanızı değiştiremiyorsanız, lütfen şu numarayı arayın: (866) 476-9763.
+	</string>
+	<string name="LoginFailedTransformError">
+		Oturum açılması sırasında veri tutarsızlığı saptandı.
+Lütfen şu adrese başvurun: support@secondlife.com
+	</string>
+	<string name="LoginFailedAccountMaintenance">
+		Hesabınızda küçük çaplı bir bakım işlemi sürüyor.
+Hesabınıza şu zamana kadar erişemeyeceksiniz:
+Pasifik Saati ile [TIME].
+Bunun bir hata olduğunu düşünüyorsanız, lütfen şu adrese başvurun: support@secondlife.com
+	</string>
+	<string name="LoginFailedPendingLogoutFault">
+		Oturum kapatma talebi simülatörden bir hata yanıtı gelmesine neden oldu.
+	</string>
+	<string name="LoginFailedPendingLogout">
+		Sistem şu anda oturumunuzu sonlandırıyor.
+Hesabınıza şu zamana kadar erişemeyeceksiniz:
+Pasifik Saati ile [TIME].
+	</string>
+	<string name="LoginFailedUnableToCreateSession">
+		Geçerli bir oturum oluşturulamadı.
+	</string>
+	<string name="LoginFailedUnableToConnectToSimulator">
+		Bir simülatöre bağlanılamadı.
+	</string>
+	<string name="LoginFailedRestrictedHours">
+		Hesabınız Second Life&apos;a sadece
+Pasifik Saati ile [START] ve [END] arasında erişebilir.
+Lütfen bu saatler arasında tekrar uğrayın.
+Bunun bir hata olduğunu düşünüyorsanız, lütfen şu adrese başvurun: support@secondlife.com
+	</string>
+	<string name="LoginFailedIncorrectParameters">
+		Yanlış parametreler.
+Bunun bir hata olduğunu düşünüyorsanız, lütfen şu adrese başvurun: support@secondlife.com
+	</string>
+	<string name="LoginFailedFirstNameNotAlphanumeric">
+		Ad parametresi alfasayısal olmalıdır.
+Bunun bir hata olduğunu düşünüyorsanız, lütfen şu adrese başvurun: support@secondlife.com
+	</string>
+	<string name="LoginFailedLastNameNotAlphanumeric">
+		Soyadı parametresi alfasayısal olmalıdır.
+Bunun bir hata olduğunu düşünüyorsanız, lütfen şu adrese başvurun: support@secondlife.com
+	</string>
+	<string name="LogoutFailedRegionGoingOffline">
+		Bölge şu anda çevrimdışı oluyor.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+	</string>
+	<string name="LogoutFailedAgentNotInRegion">
+		Aracı bölgede değil.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+	</string>
+	<string name="LogoutFailedPendingLogin">
+		Bu bölge başka bir oturum açmaktaydı.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+	</string>
+	<string name="LogoutFailedLoggingOut">
+		Bu bölge önceki oturumu sonlandırmaktaydı.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+	</string>
+	<string name="LogoutFailedStillLoggingOut">
+		Bu bölge hala bir önceki oturumu sonlandırma işlemini sürdürüyor.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+	</string>
+	<string name="LogoutSucceeded">
+		Bu bölge son oturumu sonlandırdı.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+	</string>
+	<string name="LogoutFailedLogoutBegun">
+		Bölge oturumu sonlandırma işlemini başlattı.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+	</string>
+	<string name="LoginFailedLoggingOutSession">
+		Sistem son oturumunuzu sonlandırma işlemini başlattı.
+Lütfen bir dakika içerisinde tekrar oturum açmayı deneyin.
+	</string>
+	<string name="AgentLostConnection">
+		Bu bölgede sorun yaşanıyor olabilir.  Lütfen İnternet bağlantınızı kontrol edin.
+	</string>
+	<string name="SavingSettings">
+		Ayarlarınız kaydediliyor...
+	</string>
+	<string name="LoggingOut">
+		Oturum kapatılıyor...
+	</string>
+	<string name="ShuttingDown">
+		Kapatılıyor...
+	</string>
+	<string name="YouHaveBeenDisconnected">
+		Bulunduğunuz bölgeyle bağlantınız kesildi.
+	</string>
+	<string name="SentToInvalidRegion">
+		Geçersiz bir bölgeye gönderildiniz.
+	</string>
+	<string name="TestingDisconnect">
+		Görüntüleyici bağlantısının kesilmesi test ediliyor
+	</string>
+	<string name="TooltipPerson">
+		KiÅŸi
+	</string>
+	<string name="TooltipNoName">
+		(adsız)
+	</string>
+	<string name="TooltipOwner">
+		Sahip:
+	</string>
+	<string name="TooltipPublic">
+		Kamuya Açık
+	</string>
+	<string name="TooltipIsGroup">
+		(Grup)
+	</string>
+	<string name="TooltipForSaleL$">
+		Satılık: L$[AMOUNT]
+	</string>
+	<string name="TooltipFlagGroupBuild">
+		Grup İnşası
+	</string>
+	<string name="TooltipFlagNoBuild">
+		Ä°nÅŸa Edilemez
+	</string>
+	<string name="TooltipFlagNoEdit">
+		Grup İnşası
+	</string>
+	<string name="TooltipFlagNotSafe">
+		Güvenli Değil
+	</string>
+	<string name="TooltipFlagNoFly">
+		Uçamaz
+	</string>
+	<string name="TooltipFlagGroupScripts">
+		Grup Komut Dosyaları
+	</string>
+	<string name="TooltipFlagNoScripts">
+		Komut Dosyası Yok
+	</string>
+	<string name="TooltipLand">
+		Arazi:
+	</string>
+	<string name="TooltipMustSingleDrop">
+		Buraya sadece bir öğe sürüklenebilir.
+	</string>
+	<string name="TooltipPrice" value="L$[AMOUNT]:"/>
+	<string name="TooltipOutboxNoTransfer">
+		Bu nesnelerden bir veya daha fazlası başka bir kullanıcıya satılamaz veya aktarılamaz.
+	</string>
+	<string name="TooltipOutboxWorn">
+		Bu nesnelerden bir veya daha fazlasını giyiyorsunuz. Bunları avatarınızdan kaldırın ve tekrar taşımayı deneyin.
+	</string>
+	<string name="TooltipOutboxFolderLevels">
+		Bu klasörde çok fazla alt klasör seviyesi var. Dahili klasörleri tekrar düzenleyerek maksimum 4 seviye derinliğe azaltın (Kök Klasör içinde A içinde B içinde C şeklinde).
+	</string>
+	<string name="TooltipOutboxTooManyObjects">
+		Bu klasörde 200&apos;den fazla nesne var. Nesne sayısını azaltmak için öğelerden bazılarını kutuya koyun.
+	</string>
+	<string name="TooltipHttpUrl">
+		Bu web sayfasını görmek için tıklayın
+	</string>
+	<string name="TooltipSLURL">
+		Bu konumun bilgisini görmek için tıklayın
+	</string>
+	<string name="TooltipAgentUrl">
+		Bu Sakinin profilini görmek için tıklayın
+	</string>
+	<string name="TooltipAgentInspect">
+		Bu Sakin hakkında daha fazla bilgi öğrenin
+	</string>
+	<string name="TooltipAgentMute">
+		Bu Sakini engellemek için tıklayın
+	</string>
+	<string name="TooltipAgentUnmute">
+		Bu Sakinin engellemesini kaldırmak için tıklayın
+	</string>
+	<string name="TooltipAgentIM">
+		Bu Sakine Aİ göndermek için tıklayın
+	</string>
+	<string name="TooltipAgentPay">
+		Bu Sakine ödeme yapmak için tıklayın
+	</string>
+	<string name="TooltipAgentOfferTeleport">
+		Bu Sakine bir ışınlama talebi teklif etmek için tıklayın
+	</string>
+	<string name="TooltipAgentRequestFriend">
+		Bu Sakine bir arkadaşlık talebi teklif etmek için tıklayın
+	</string>
+	<string name="TooltipGroupUrl">
+		Bu grubun açıklamasını görmek için tıklayın
+	</string>
+	<string name="TooltipEventUrl">
+		Bu etkinliğin açıklamasını görmek için tıklayın
+	</string>
+	<string name="TooltipClassifiedUrl">
+		Bu ilanı görmek için tıklayın
+	</string>
+	<string name="TooltipParcelUrl">
+		Bu parselin açıklamasını görmek için tıklayın
+	</string>
+	<string name="TooltipTeleportUrl">
+		Bu konuma ışınlama yapmak için tıklayın
+	</string>
+	<string name="TooltipObjectIMUrl">
+		Bu nesnenin açıklamasını görmek için tıklayın
+	</string>
+	<string name="TooltipMapUrl">
+		Bu konumu bir haritada görmek için tıklayın
+	</string>
+	<string name="TooltipSLAPP">
+		secondlife:// komutunu çalıştırmak için tıklayın
+	</string>
+	<string name="CurrentURL" value="Geçerli URL: [CurrentURL]"/>
+	<string name="SLurlLabelTeleport">
+		Şuraya ışınla:
+	</string>
+	<string name="SLurlLabelShowOnMap">
+		Şunun için Harita göster:
+	</string>
+	<string name="SLappAgentMute">
+		Engelle
+	</string>
+	<string name="SLappAgentUnmute">
+		Engellemeyi kaldır
+	</string>
+	<string name="SLappAgentIM">
+		AÄ°
+	</string>
+	<string name="SLappAgentPay">
+		Öde
+	</string>
+	<string name="SLappAgentOfferTeleport">
+		Şuraya Işınlama Teklif Et:
+	</string>
+	<string name="SLappAgentRequestFriend">
+		Arkadaşlık Talebi
+	</string>
+	<string name="BUTTON_CLOSE_DARWIN">
+		Kapat (⌘W)
+	</string>
+	<string name="BUTTON_CLOSE_WIN">
+		Kapat (Ctrl+W)
+	</string>
+	<string name="BUTTON_CLOSE_CHROME">
+		Kapat
+	</string>
+	<string name="BUTTON_RESTORE">
+		Geri Yükle
+	</string>
+	<string name="BUTTON_MINIMIZE">
+		Simge Durumuna Küçült
+	</string>
+	<string name="BUTTON_TEAR_OFF">
+		Böl
+	</string>
+	<string name="BUTTON_DOCK">
+		YerleÅŸtir
+	</string>
+	<string name="BUTTON_HELP">
+		Yardımı Göster
+	</string>
+	<string name="Searching">
+		Arıyor...
+	</string>
+	<string name="NoneFound">
+		Hiçbiri bulunamadı.
+	</string>
+	<string name="RetrievingData">
+		Alınıyor...
+	</string>
+	<string name="ReleaseNotes">
+		Sürüm Notları
+	</string>
+	<string name="LoadingData">
+		Yükleniyor...
+	</string>
+	<string name="AvatarNameNobody">
+		(hiçbiri)
+	</string>
+	<string name="AvatarNameWaiting">
+		(bekliyor)
+	</string>
+	<string name="AvatarNameMultiple">
+		(birden çok)
+	</string>
+	<string name="GroupNameNone">
+		(hiçbiri)
+	</string>
+	<string name="AvalineCaller">
+		Avaline Arayanı [ORDER]
+	</string>
+	<string name="AssetErrorNone">
+		Hata yok
+	</string>
+	<string name="AssetErrorRequestFailed">
+		Varlık talebi: başarısız oldu
+	</string>
+	<string name="AssetErrorNonexistentFile">
+		Varlık talebi: var olmayan dosya
+	</string>
+	<string name="AssetErrorNotInDatabase">
+		Varlık talebi: veri tabanında varlık bulunamadı
+	</string>
+	<string name="AssetErrorEOF">
+		Dosya sonu
+	</string>
+	<string name="AssetErrorCannotOpenFile">
+		Dosya açılamadı
+	</string>
+	<string name="AssetErrorFileNotFound">
+		Dosya bulunamadı
+	</string>
+	<string name="AssetErrorTCPTimeout">
+		Dosya aktarımı zaman aşımı
+	</string>
+	<string name="AssetErrorCircuitGone">
+		Devre yok
+	</string>
+	<string name="AssetErrorPriceMismatch">
+		Görüntüleyici ile sunucu fiyatta anlaşmadı
+	</string>
+	<string name="AssetErrorUnknownStatus">
+		Bilinmeyen durum
+	</string>
+	<string name="texture">
+		doku
+	</string>
+	<string name="sound">
+		ses
+	</string>
+	<string name="calling card">
+		arama kartı
+	</string>
+	<string name="landmark">
+		yer imi
+	</string>
+	<string name="legacy script">
+		eski komut dosyası
+	</string>
+	<string name="clothing">
+		giysi
+	</string>
+	<string name="object">
+		nesne
+	</string>
+	<string name="note card">
+		not kartı
+	</string>
+	<string name="folder">
+		klasör
+	</string>
+	<string name="root">
+		kök
+	</string>
+	<string name="lsl2 script">
+		LSL2 komut dosyası
+	</string>
+	<string name="lsl bytecode">
+		LSL bayt kodu
+	</string>
+	<string name="tga texture">
+		tga dokusu
+	</string>
+	<string name="body part">
+		vücut bölümü
+	</string>
+	<string name="snapshot">
+		anlık görüntü
+	</string>
+	<string name="lost and found">
+		Kaybedip Bulduklarım
+	</string>
+	<string name="targa image">
+		targa görüntüsü
+	</string>
+	<string name="trash">
+		Çöp
+	</string>
+	<string name="jpeg image">
+		jpeg görüntüsü
+	</string>
+	<string name="animation">
+		animasyon
+	</string>
+	<string name="gesture">
+		mimik
+	</string>
+	<string name="simstate">
+		sim durumu
+	</string>
+	<string name="favorite">
+		favori
+	</string>
+	<string name="symbolic link">
+		bağlantı
+	</string>
+	<string name="symbolic folder link">
+		klasör bağlantısı
+	</string>
+	<string name="mesh">
+		örgü
+	</string>
+	<string name="AvatarEditingAppearance">
+		(Görünümü Düzenliyor)
+	</string>
+	<string name="AvatarAway">
+		Uzakta
+	</string>
+	<string name="AvatarBusy">
+		MeÅŸgul
+	</string>
+	<string name="AvatarMuted">
+		EngellenmiÅŸ
+	</string>
+	<string name="anim_express_afraid">
+		KorkmuÅŸ
+	</string>
+	<string name="anim_express_anger">
+		Kızgın
+	</string>
+	<string name="anim_away">
+		Uzakta
+	</string>
+	<string name="anim_backflip">
+		Geriye salto
+	</string>
+	<string name="anim_express_laugh">
+		İçten Kahkaha
+	</string>
+	<string name="anim_express_toothsmile">
+		Büyük Gülümseme
+	</string>
+	<string name="anim_blowkiss">
+		Öpücük Atma
+	</string>
+	<string name="anim_express_bored">
+		Canı Sıkılmış
+	</string>
+	<string name="anim_bow">
+		Selamlama
+	</string>
+	<string name="anim_clap">
+		Alkış
+	</string>
+	<string name="anim_courtbow">
+		Reverans
+	</string>
+	<string name="anim_express_cry">
+		AÄŸlama
+	</string>
+	<string name="anim_dance1">
+		Dans 1
+	</string>
+	<string name="anim_dance2">
+		Dans 2
+	</string>
+	<string name="anim_dance3">
+		Dans 3
+	</string>
+	<string name="anim_dance4">
+		Dans 4
+	</string>
+	<string name="anim_dance5">
+		Dans 5
+	</string>
+	<string name="anim_dance6">
+		Dans 6
+	</string>
+	<string name="anim_dance7">
+		Dans 7
+	</string>
+	<string name="anim_dance8">
+		Dans 8
+	</string>
+	<string name="anim_express_disdain">
+		Dudak Bükme
+	</string>
+	<string name="anim_drink">
+		İçme
+	</string>
+	<string name="anim_express_embarrased">
+		Utanmış
+	</string>
+	<string name="anim_angry_fingerwag">
+		Ä°ÅŸaret Etme
+	</string>
+	<string name="anim_fist_pump">
+		Yumruk Sallama
+	</string>
+	<string name="anim_yoga_float">
+		Uçan Yoga
+	</string>
+	<string name="anim_express_frown">
+		Kaş Çatma
+	</string>
+	<string name="anim_impatient">
+		Sabırsız
+	</string>
+	<string name="anim_jumpforjoy">
+		Sevinçten Zıplama
+	</string>
+	<string name="anim_kissmybutt">
+		Kıçımı Öp
+	</string>
+	<string name="anim_express_kiss">
+		Öpücük
+	</string>
+	<string name="anim_laugh_short">
+		Gülme
+	</string>
+	<string name="anim_musclebeach">
+		Muscle Beach
+	</string>
+	<string name="anim_no_unhappy">
+		Hayır (Mutsuz)
+	</string>
+	<string name="anim_no_head">
+		Hayır
+	</string>
+	<string name="anim_nyanya">
+		Ha-ha-ha
+	</string>
+	<string name="anim_punch_onetwo">
+		PeÅŸpeÅŸe Ä°ki Yumruk
+	</string>
+	<string name="anim_express_open_mouth">
+		Ağız Açık
+	</string>
+	<string name="anim_peace">
+		Barış
+	</string>
+	<string name="anim_point_you">
+		Diğerini Göster
+	</string>
+	<string name="anim_point_me">
+		Kendini Göster
+	</string>
+	<string name="anim_punch_l">
+		Sola Yumruk At
+	</string>
+	<string name="anim_punch_r">
+		SaÄŸa Yumruk At
+	</string>
+	<string name="anim_rps_countdown">
+		RPS sayımı
+	</string>
+	<string name="anim_rps_paper">
+		RPS kağıdı
+	</string>
+	<string name="anim_rps_rock">
+		RPS kayası
+	</string>
+	<string name="anim_rps_scissors">
+		RPS makası
+	</string>
+	<string name="anim_express_repulsed">
+		TiksinmiÅŸ
+	</string>
+	<string name="anim_kick_roundhouse_r">
+		Döner Tekme
+	</string>
+	<string name="anim_express_sad">
+		Üzgün
+	</string>
+	<string name="anim_salute">
+		Selam
+	</string>
+	<string name="anim_shout">
+		Bağırma
+	</string>
+	<string name="anim_express_shrug">
+		Omuz Silkme
+	</string>
+	<string name="anim_express_smile">
+		Gülümseme
+	</string>
+	<string name="anim_smoke_idle">
+		Duman Tüttürme
+	</string>
+	<string name="anim_smoke_inhale">
+		Duman Çekme
+	</string>
+	<string name="anim_smoke_throw_down">
+		Yere Ä°zmarit Atma
+	</string>
+	<string name="anim_express_surprise">
+		Sürpriz
+	</string>
+	<string name="anim_sword_strike_r">
+		Kılıç Darbesi
+	</string>
+	<string name="anim_angry_tantrum">
+		Öfke Nöbeti
+	</string>
+	<string name="anim_express_tongue_out">
+		Dil Çıkarma
+	</string>
+	<string name="anim_hello">
+		El Sallama
+	</string>
+	<string name="anim_whisper">
+		Fısıldama
+	</string>
+	<string name="anim_whistle">
+		Islık Çalma
+	</string>
+	<string name="anim_express_wink">
+		Göz Kırpma
+	</string>
+	<string name="anim_wink_hollywood">
+		Göz Kırpma (Hollywood)
+	</string>
+	<string name="anim_express_worry">
+		EndiÅŸelenme
+	</string>
+	<string name="anim_yes_happy">
+		Evet (Mutlu)
+	</string>
+	<string name="anim_yes_head">
+		Evet
+	</string>
+	<string name="texture_loading">
+		Yükleniyor...
+	</string>
+	<string name="worldmap_offline">
+		Çevrimdışı
+	</string>
+	<string name="worldmap_item_tooltip_format">
+		[AREA] m² L$[PRICE]
+	</string>
+	<string name="worldmap_results_none_found">
+		Hiçbiri bulunamadı.
+	</string>
+	<string name="Ok">
+		Tamam
+	</string>
+	<string name="Premature end of file">
+		Dosyanın zamanından önce sonu
+	</string>
+	<string name="ST_NO_JOINT">
+		KÖK veya EKLEM bulunamıyor.
+	</string>
+	<string name="whisper">
+		fısıldar:
+	</string>
+	<string name="shout">
+		bağırır:
+	</string>
+	<string name="ringing">
+		SL dünyası içindeki Sesli Sohbete bağlanılıyor...
+	</string>
+	<string name="connected">
+		Bağlı
+	</string>
+	<string name="unavailable">
+		Geçerli konumunuzda ses mevcut değil
+	</string>
+	<string name="hang_up">
+		SL dünyası içindeki Sesli Sohbet ile bağlantı kesildi
+	</string>
+	<string name="reconnect_nearby">
+		Şimdi Yakındaki bir Sesli Sohbete yeniden bağlanılacaksınız.
+	</string>
+	<string name="ScriptQuestionCautionChatGranted">
+		&apos;[OWNERNAME]&apos; adlı kişiye ait, [REGIONPOS] üzerinde [REGIONNAME] içerisinde bulunan &apos;[OBJECTNAME]&apos; nesnesine şunu yapma izni verildi: [PERMISSIONS].
+	</string>
+	<string name="ScriptQuestionCautionChatDenied">
+		&apos;[OWNERNAME]&apos; adlı kişiye ait, [REGIONPOS] üzerinde [REGIONNAME] içerisinde bulunan &apos;[OBJECTNAME]&apos; nesnesine şunu yapma izni verilmedi: [PERMISSIONS].
+	</string>
+	<string name="ScriptTakeMoney">
+		Sizden Linden dolar (L$) almak
+	</string>
+	<string name="ActOnControlInputs">
+		Denetim girişlerinizle ilgili eylem gerçekleştirmek
+	</string>
+	<string name="RemapControlInputs">
+		Denetim girişleriniz için yeniden eşleme yapmak
+	</string>
+	<string name="AnimateYourAvatar">
+		Avatarınızı canlandırmak
+	</string>
+	<string name="AttachToYourAvatar">
+		Avatarınıza eklemek
+	</string>
+	<string name="ReleaseOwnership">
+		Mülkiyeti bırakmak ve kamuya açık hale gelmek
+	</string>
+	<string name="LinkAndDelink">
+		Başka nesnelerle bağlantı kurmak veya koparmak
+	</string>
+	<string name="AddAndRemoveJoints">
+		Başka nesnelerle eklem eklemek ve kaldırmak
+	</string>
+	<string name="ChangePermissions">
+		Ä°zinlerini deÄŸiÅŸtirmek
+	</string>
+	<string name="TrackYourCamera">
+		Kameranızı takip etmek
+	</string>
+	<string name="ControlYourCamera">
+		Kameranızı kontrol etmek
+	</string>
+	<string name="NotConnected">
+		Bağlı Değil
+	</string>
+	<string name="SIM_ACCESS_PG">
+		Genel
+	</string>
+	<string name="SIM_ACCESS_MATURE">
+		Orta
+	</string>
+	<string name="SIM_ACCESS_ADULT">
+		YetiÅŸkin
+	</string>
+	<string name="SIM_ACCESS_DOWN">
+		Çevrimdışı
+	</string>
+	<string name="SIM_ACCESS_MIN">
+		Bilinmiyor
+	</string>
+	<string name="land_type_unknown">
+		(bilinmiyor)
+	</string>
+	<string name="Estate / Full Region">
+		Gayrimenkul / Tam Bölge
+	</string>
+	<string name="Estate / Homestead">
+		Gayrimenkul / Banliyö
+	</string>
+	<string name="Mainland / Homestead">
+		Anakara / Banliyö
+	</string>
+	<string name="Mainland / Full Region">
+		Anakara / Tam Bölge
+	</string>
+	<string name="all_files">
+		Tüm Dosyalar
+	</string>
+	<string name="sound_files">
+		Sesler
+	</string>
+	<string name="animation_files">
+		Animasyonlar
+	</string>
+	<string name="image_files">
+		Görüntüler
+	</string>
+	<string name="save_file_verb">
+		Kaydet
+	</string>
+	<string name="load_file_verb">
+		Yükle
+	</string>
+	<string name="targa_image_files">
+		Targa Görüntüleri
+	</string>
+	<string name="bitmap_image_files">
+		Bitmap Görüntüler
+	</string>
+	<string name="avi_movie_file">
+		AVI Film Dosyası
+	</string>
+	<string name="xaf_animation_file">
+		XAF Animasyon Dosyası
+	</string>
+	<string name="xml_file">
+		XML Dosyası
+	</string>
+	<string name="raw_file">
+		Ham Dosya
+	</string>
+	<string name="compressed_image_files">
+		Sıkıştırılmış Görüntüler
+	</string>
+	<string name="load_files">
+		Dosyalar Yükle
+	</string>
+	<string name="choose_the_directory">
+		Dizin Seç
+	</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>
+	<string name="skin">
+		Dış Katman
+	</string>
+	<string name="hair">
+		Saç
+	</string>
+	<string name="eyes">
+		Gözler
+	</string>
+	<string name="shirt">
+		Gömlek
+	</string>
+	<string name="pants">
+		Pantolon
+	</string>
+	<string name="shoes">
+		Ayakkabılar
+	</string>
+	<string name="socks">
+		Çoraplar
+	</string>
+	<string name="jacket">
+		Ceket
+	</string>
+	<string name="gloves">
+		Eldivenler
+	</string>
+	<string name="undershirt">
+		Fanila
+	</string>
+	<string name="underpants">
+		Külot
+	</string>
+	<string name="skirt">
+		Etek
+	</string>
+	<string name="alpha">
+		Alfa
+	</string>
+	<string name="tattoo">
+		Dövme
+	</string>
+	<string name="physics">
+		Fizik
+	</string>
+	<string name="invalid">
+		geçersiz
+	</string>
+	<string name="none">
+		hiçbiri
+	</string>
+	<string name="shirt_not_worn">
+		Giyilmemiş gömlek
+	</string>
+	<string name="pants_not_worn">
+		GiyilmemiÅŸ pantolon
+	</string>
+	<string name="shoes_not_worn">
+		Giyilmemiş ayakkabılar
+	</string>
+	<string name="socks_not_worn">
+		Giyilmemiş çoraplar
+	</string>
+	<string name="jacket_not_worn">
+		GiyilmemiÅŸ ceket
+	</string>
+	<string name="gloves_not_worn">
+		GiyilmemiÅŸ eldivenler
+	</string>
+	<string name="undershirt_not_worn">
+		GiyilmemiÅŸ fanila
+	</string>
+	<string name="underpants_not_worn">
+		Giyilmemiş külot
+	</string>
+	<string name="skirt_not_worn">
+		GiyilmemiÅŸ etek
+	</string>
+	<string name="alpha_not_worn">
+		GiyilmemiÅŸ alfa
+	</string>
+	<string name="tattoo_not_worn">
+		Giyilmemiş dövme
+	</string>
+	<string name="physics_not_worn">
+		GiyilmemiÅŸ fizik
+	</string>
+	<string name="invalid_not_worn">
+		geçersiz
+	</string>
+	<string name="create_new_shape">
+		Yeni ÅŸekil oluÅŸtur
+	</string>
+	<string name="create_new_skin">
+		Yeni dış katman oluştur
+	</string>
+	<string name="create_new_hair">
+		Yeni saç oluştur
+	</string>
+	<string name="create_new_eyes">
+		Yeni gözler oluştur
+	</string>
+	<string name="create_new_shirt">
+		Yeni gömlek oluştur
+	</string>
+	<string name="create_new_pants">
+		Yeni pantolon oluÅŸtur
+	</string>
+	<string name="create_new_shoes">
+		Yeni ayakkabılar oluştur
+	</string>
+	<string name="create_new_socks">
+		Yeni çoraplar oluştur
+	</string>
+	<string name="create_new_jacket">
+		Yeni ceket oluÅŸtur
+	</string>
+	<string name="create_new_gloves">
+		Yeni eldivenler oluÅŸtur
+	</string>
+	<string name="create_new_undershirt">
+		Yeni fanila oluÅŸtur
+	</string>
+	<string name="create_new_underpants">
+		Yeni külot oluştur
+	</string>
+	<string name="create_new_skirt">
+		Yeni etek oluÅŸtur
+	</string>
+	<string name="create_new_alpha">
+		Yeni alfa oluÅŸtur
+	</string>
+	<string name="create_new_tattoo">
+		Yeni dövme oluştur
+	</string>
+	<string name="create_new_physics">
+		Yeni fizik oluÅŸtur
+	</string>
+	<string name="create_new_invalid">
+		geçersiz
+	</string>
+	<string name="NewWearable">
+		Yeni [WEARABLE_ITEM]
+	</string>
+	<string name="next">
+		Sonraki
+	</string>
+	<string name="ok">
+		Tamam
+	</string>
+	<string name="GroupNotifyGroupNotice">
+		Grup Bildirimi
+	</string>
+	<string name="GroupNotifyGroupNotices">
+		Grup Bildirimleri
+	</string>
+	<string name="GroupNotifySentBy">
+		Gönderen:
+	</string>
+	<string name="GroupNotifyAttached">
+		EklenmiÅŸ:
+	</string>
+	<string name="GroupNotifyViewPastNotices">
+		Burada eski bildirimleri görüntüleyin veya bu iletilerin alınmasını iptal edin.
+	</string>
+	<string name="GroupNotifyOpenAttachment">
+		Aksesuarı Aç
+	</string>
+	<string name="GroupNotifySaveAttachment">
+		Aksesuarı Kaydet
+	</string>
+	<string name="TeleportOffer">
+		Işınlama teklifi
+	</string>
+	<string name="StartUpNotifications">
+		Siz yokken yeni bildirimler geldi.
+	</string>
+	<string name="OverflowInfoChannelString">
+		%d ilave bildiriminiz var
+	</string>
+	<string name="BodyPartsRightArm">
+		SaÄŸ Kol
+	</string>
+	<string name="BodyPartsHead">
+		BaÅŸ
+	</string>
+	<string name="BodyPartsLeftArm">
+		Sol Kol
+	</string>
+	<string name="BodyPartsLeftLeg">
+		Sol Bacak
+	</string>
+	<string name="BodyPartsTorso">
+		Gövde
+	</string>
+	<string name="BodyPartsRightLeg">
+		SaÄŸ Bacak
+	</string>
+	<string name="GraphicsQualityLow">
+		Düşük
+	</string>
+	<string name="GraphicsQualityMid">
+		Orta
+	</string>
+	<string name="GraphicsQualityHigh">
+		Yüksek
+	</string>
+	<string name="LeaveMouselook">
+		Dünya Görünümüne dönmek için ESC&apos;e basın
+	</string>
+	<string name="InventoryNoMatchingItems">
+		Aradığınızı bulamadınız mı? [secondlife:///app/search/all/[SEARCH_TERM] Arama] ile bulmayı deneyin.
+	</string>
+	<string name="PlacesNoMatchingItems">
+		Aradığınızı bulamadınız mı? [secondlife:///app/search/places/[SEARCH_TERM] Arama] ile bulmayı deneyin.
+	</string>
+	<string name="FavoritesNoMatchingItems">
+		Bir yer imini favorilerinize eklemek için buraya sürükleyin.
+	</string>
+	<string name="InventoryNoTexture">
+		Envanterinizde bu dokunun kopyası yok
+	</string>
+	<string name="InventoryInboxNoItems">
+		Bir öğeyi satın aldığınızda veya başka bir şekilde edindiğinizde burada görünür; bunu envanterinizdeki bir klasöre sürükleyebilir veya tutmak istemiyorsanız silebilirsiniz.
+	</string>
+	<string name="MarketplaceURL">
+		http://marketplace.[DOMAIN_NAME]
+	</string>
+	<string name="MarketplaceURL_CreateStore">
+		http://marketplace.[DOMAIN_NAME]/create_store
+	</string>
+	<string name="MarketplaceURL_LearnMore">
+		http://marketplace.[DOMAIN_NAME]/learn_more
+	</string>
+	<string name="InventoryOutboxCreationErrorTitle">
+		Satıcı Giden Kutunuz düzgün yapılandırılmamıştır
+	</string>
+	<string name="InventoryOutboxCreationErrorTooltip">
+		Satıcı Giden Kutusu yapılandırma hatası
+	</string>
+	<string name="InventoryOutboxCreationError">
+		Sorunu düzeltmek için lütfen Müşteri Hizmetlerine başvurun.
+	</string>
+	<string name="InventoryOutboxNotMerchantTitle">
+		Pazaryerinde herkes öğe satabilir
+	</string>
+	<string name="InventoryOutboxNotMerchantTooltip">
+		Bir satıcı olun!
+	</string>
+	<string name="InventoryOutboxNotMerchant">
+		[[MARKETPLACE_URL] Second Life Pazaryeri] içerisinde bir milyondan fazla sanal ürün satışa sunulmuştur, bunların tümü Sakinler tarafından oluşturulmuştur. Siz de oluşturduğunuz öğeleri ve satın aldığınız öğelerin bazılarını satabilirsiniz. Bunu yapmak kolaydır, kurulum da ücretsizdir.  [[LEARN_MORE_URL] Daha fazla bilgi edinin] veya başlamak için Pazaryerinde [[CREATE_STORE_URL] bir mağaza açın].
+	</string>
+	<string name="InventoryOutboxNoItemsTitle">
+		Pazaryerine öğe göndermek için yeni bir yol
+	</string>
+	<string name="InventoryOutboxNoItemsTooltip">
+		Öğeleri Pazaryerinde satışa hazırlamak için sürükleyip buraya bırakın
+	</string>
+	<string name="InventoryOutboxNoItems">
+		Satmak istediğiniz öğeleri veya klasörleri bu alana sürükleyin.  Öğenin bir kopyası burada görünür ve kopyalanamaz bir öğeyi sürüklemediyseniz, envanteriniz aynı kalır.  Öğeleri Pazaryerine göndermeye hazır olduğunuzda Karşıya Yükle düğmesine tıklayın. Öğeleriniz Pazaryeri Envanterinize taşındığında bu klasörden kaybolurlar.
+	</string>
+	<string name="Marketplace Error None">
+		Hata yok
+	</string>
+	<string name="Marketplace Error Not Merchant">
+		Hata: Öğeleri Pazaryerine göndermeden önce kendinizi bir satıcı olarak belirlemelisiniz (ücretsizdir).
+	</string>
+	<string name="Marketplace Error Empty Folder">
+		Hata: Bu klasörün içeriği boş.
+	</string>
+	<string name="Marketplace Error Unassociated Products">
+		Hata: Bu öğe karşıya yüklenemedi çünkü satıcı hesabınızda ürünlerle ilişkisiz çok fazla öğe mevcut.  Bu hatayı düzeltmek için Pazaryeri web sitesine oturum açın ve ilişkisiz öğe sayınızı azaltın.
+	</string>
+	<string name="Marketplace Error Object Limit">
+		Hata: Bu öğe çok fazla nesne içeriyor.  Bu hatayı düzeltmek için nesneleri birlikte kutulara yerleştirerek, toplam nesne sayısını 200&apos;ün altına düşürün.
+	</string>
+	<string name="Marketplace Error Folder Depth">
+		Hata: Bu öğede çok fazla iç içe geçmiş klasör seviyesi var.  Bunu tekrar düzenleyerek maksimum 3 iç içe geçmiş klasör seviyesine indirin.
+	</string>
+	<string name="Marketplace Error Unsellable Item">
+		Hata: Bu öğe Pazaryerinde satılamaz.
+	</string>
+	<string name="Marketplace Error Internal Import">
+		Hata: Bu öğede bir sorun var.  Daha sonra tekrar deneyin.
+	</string>
+	<string name="Open landmarks">
+		Açık yer imleri
+	</string>
+	<string name="no_transfer" value="(aktarım yok)"/>
+	<string name="no_modify" value="(deÄŸiÅŸtirme yok)"/>
+	<string name="no_copy" value="(kopya yok)"/>
+	<string name="worn" value="(giyilmiÅŸ)"/>
+	<string name="link" value="(bağlantı)"/>
+	<string name="broken_link" value="(broken_link)"/>
+	<string name="LoadingContents">
+		İçerik yükleniyor...
+	</string>
+	<string name="NoContents">
+		İçerik yok
+	</string>
+	<string name="WornOnAttachmentPoint" value="([ATTACHMENT_POINT] üzerinde giyilmiş)"/>
+	<string name="ActiveGesture" value="[GESLABEL] (etkin)"/>
+	<string name="PermYes">
+		Evet
+	</string>
+	<string name="PermNo">
+		Hayır
+	</string>
+	<string name="Chat Message" value="Sohbet:"/>
+	<string name="Sound" value="Ses:"/>
+	<string name="Wait" value="--- Bekleyin:"/>
+	<string name="AnimFlagStop" value="Animasyonu Durdur:"/>
+	<string name="AnimFlagStart" value="Animasyonu BaÅŸlat:"/>
+	<string name="Wave" value="El Sallama"/>
+	<string name="GestureActionNone" value="Hiçbiri"/>
+	<string name="HelloAvatar" value="Merhaba avatar!"/>
+	<string name="ViewAllGestures" value="Tümünü Göster &gt;&gt;"/>
+	<string name="GetMoreGestures" value="Ä°lave Al &gt;&gt;"/>
+	<string name="Animations" value="Animasyonlar,"/>
+	<string name="Calling Cards" value="Arama Kartları,"/>
+	<string name="Clothing" value="Giysiler,"/>
+	<string name="Gestures" value="Mimikler,"/>
+	<string name="Landmarks" value="Yer Ä°mleri,"/>
+	<string name="Notecards" value="Not Kartları,"/>
+	<string name="Objects" value="Nesneler,"/>
+	<string name="Scripts" value="Komut Dosyaları,"/>
+	<string name="Sounds" value="Sesler,"/>
+	<string name="Textures" value="Dokular,"/>
+	<string name="Snapshots" value="Anlık Görüntüler,"/>
+	<string name="No Filters" value="Hayır"/>
+	<string name="Since Logoff" value="- Oturum Kapandıktan Beri"/>
+	<string name="InvFolder My Inventory">
+		Envanterim
+	</string>
+	<string name="InvFolder Library">
+		Kütüphane
+	</string>
+	<string name="InvFolder Textures">
+		Dokular
+	</string>
+	<string name="InvFolder Sounds">
+		Sesler
+	</string>
+	<string name="InvFolder Calling Cards">
+		Arama Kartları
+	</string>
+	<string name="InvFolder Landmarks">
+		Yer Ä°mleri
+	</string>
+	<string name="InvFolder Scripts">
+		Komut Dosyaları
+	</string>
+	<string name="InvFolder Clothing">
+		Giysiler
+	</string>
+	<string name="InvFolder Objects">
+		Nesneler
+	</string>
+	<string name="InvFolder Notecards">
+		Not Kartları
+	</string>
+	<string name="InvFolder New Folder">
+		Yeni Klasör
+	</string>
+	<string name="InvFolder Inventory">
+		Envanter
+	</string>
+	<string name="InvFolder Uncompressed Images">
+		Sıkıştırılmamış Görüntüler
+	</string>
+	<string name="InvFolder Body Parts">
+		Vücut Bölümleri
+	</string>
+	<string name="InvFolder Trash">
+		Çöp
+	</string>
+	<string name="InvFolder Photo Album">
+		Fotoğraf Albümü
+	</string>
+	<string name="InvFolder Lost And Found">
+		Kaybedip Bulduklarım
+	</string>
+	<string name="InvFolder Uncompressed Sounds">
+		Sıkıştırılmamış Sesler
+	</string>
+	<string name="InvFolder Animations">
+		Animasyonlar
+	</string>
+	<string name="InvFolder Gestures">
+		Mimikler
+	</string>
+	<string name="InvFolder Favorite">
+		Favorilerim
+	</string>
+	<string name="InvFolder favorite">
+		Favorilerim
+	</string>
+	<string name="InvFolder Current Outfit">
+		Mevcut Dış Görünüm
+	</string>
+	<string name="InvFolder Initial Outfits">
+		Başlangıçtakı Dış Görünümler
+	</string>
+	<string name="InvFolder My Outfits">
+		Benim Dış Görünümlerim
+	</string>
+	<string name="InvFolder Accessories">
+		Aksesuarlar
+	</string>
+	<string name="InvFolder Meshes">
+		Örgüler
+	</string>
+	<string name="InvFolder Friends">
+		ArkadaÅŸlar
+	</string>
+	<string name="InvFolder All">
+		Tümü
+	</string>
+	<string name="no_attachments">
+		Giyilen aksesuar yok
+	</string>
+	<string name="Attachments remain">
+		Aksesuarlar ([COUNT] yuva mevcut)
+	</string>
+	<string name="Buy">
+		Satın Al
+	</string>
+	<string name="BuyforL$">
+		L$&apos;a Satın Al
+	</string>
+	<string name="Stone">
+		TaÅŸ
+	</string>
+	<string name="Metal">
+		Metal
+	</string>
+	<string name="Glass">
+		Cam
+	</string>
+	<string name="Wood">
+		AhÅŸap
+	</string>
+	<string name="Flesh">
+		Et
+	</string>
+	<string name="Plastic">
+		Plastik
+	</string>
+	<string name="Rubber">
+		Lastik
+	</string>
+	<string name="Light">
+		Işık
+	</string>
+	<string name="KBShift">
+		Shift
+	</string>
+	<string name="KBCtrl">
+		Ctrl
+	</string>
+	<string name="Chest">
+		Göğüs
+	</string>
+	<string name="Skull">
+		Kafatası
+	</string>
+	<string name="Left Shoulder">
+		Sol Omuz
+	</string>
+	<string name="Right Shoulder">
+		SaÄŸ Omuz
+	</string>
+	<string name="Left Hand">
+		Sol El
+	</string>
+	<string name="Right Hand">
+		SaÄŸ El
+	</string>
+	<string name="Left Foot">
+		Sol Ayak
+	</string>
+	<string name="Right Foot">
+		SaÄŸ Ayak
+	</string>
+	<string name="Spine">
+		Omurga
+	</string>
+	<string name="Pelvis">
+		LeÄŸen KemiÄŸi
+	</string>
+	<string name="Mouth">
+		Ağız
+	</string>
+	<string name="Chin">
+		Çene
+	</string>
+	<string name="Left Ear">
+		Sol Kulak
+	</string>
+	<string name="Right Ear">
+		SaÄŸ Kulak
+	</string>
+	<string name="Left Eyeball">
+		Sol Göz Küresi
+	</string>
+	<string name="Right Eyeball">
+		Sağ Göz Küresi
+	</string>
+	<string name="Nose">
+		Burun
+	</string>
+	<string name="R Upper Arm">
+		SaÄŸ Ãœst Kol
+	</string>
+	<string name="R Forearm">
+		Sağ Ön Kol
+	</string>
+	<string name="L Upper Arm">
+		Sol Ãœst Kol
+	</string>
+	<string name="L Forearm">
+		Sol Ön Kol
+	</string>
+	<string name="Right Hip">
+		Sağ Kalça
+	</string>
+	<string name="R Upper Leg">
+		SaÄŸ Ãœst Bacak
+	</string>
+	<string name="R Lower Leg">
+		SaÄŸ Alt Bacak
+	</string>
+	<string name="Left Hip">
+		Sol Kalça
+	</string>
+	<string name="L Upper Leg">
+		Sol Ãœst Bacak
+	</string>
+	<string name="L Lower Leg">
+		Sol Alt Bacak
+	</string>
+	<string name="Stomach">
+		Karın
+	</string>
+	<string name="Left Pec">
+		Sol Göğüs
+	</string>
+	<string name="Right Pec">
+		Sağ Göğüs
+	</string>
+	<string name="Neck">
+		Boyun
+	</string>
+	<string name="Avatar Center">
+		Avatar Merkezi
+	</string>
+	<string name="Invalid Attachment">
+		Geçersiz Aksesuar Noktası
+	</string>
+	<string name="YearsMonthsOld">
+		[AGEYEARS] [AGEMONTHS]&apos;lık
+	</string>
+	<string name="YearsOld">
+		[AGEYEARS] yaşında
+	</string>
+	<string name="MonthsOld">
+		[AGEMONTHS]&apos;lık
+	</string>
+	<string name="WeeksOld">
+		[AGEWEEKS]&apos;lık
+	</string>
+	<string name="DaysOld">
+		[AGEDAYS]&apos;lük
+	</string>
+	<string name="TodayOld">
+		Bugün katıldı
+	</string>
+	<string name="AgeYearsA">
+		[COUNT] yıl
+	</string>
+	<string name="AgeYearsB">
+		[COUNT] yıl
+	</string>
+	<string name="AgeYearsC">
+		[COUNT] yıl
+	</string>
+	<string name="AgeMonthsA">
+		[COUNT] ay
+	</string>
+	<string name="AgeMonthsB">
+		[COUNT] ay
+	</string>
+	<string name="AgeMonthsC">
+		[COUNT] ay
+	</string>
+	<string name="AgeWeeksA">
+		[COUNT] hafta
+	</string>
+	<string name="AgeWeeksB">
+		[COUNT] hafta
+	</string>
+	<string name="AgeWeeksC">
+		[COUNT] hafta
+	</string>
+	<string name="AgeDaysA">
+		[COUNT] gün
+	</string>
+	<string name="AgeDaysB">
+		[COUNT] gün
+	</string>
+	<string name="AgeDaysC">
+		[COUNT] gün
+	</string>
+	<string name="GroupMembersA">
+		[COUNT] üye
+	</string>
+	<string name="GroupMembersB">
+		[COUNT] üye
+	</string>
+	<string name="GroupMembersC">
+		[COUNT] üye
+	</string>
+	<string name="AcctTypeResident">
+		Sakin
+	</string>
+	<string name="AcctTypeTrial">
+		Deneme
+	</string>
+	<string name="AcctTypeCharterMember">
+		Ayrıcalıklı Üye
+	</string>
+	<string name="AcctTypeEmployee">
+		Linden Lab Çalışanı
+	</string>
+	<string name="PaymentInfoUsed">
+		Kullanılan Ödeme Bilgisi
+	</string>
+	<string name="PaymentInfoOnFile">
+		Dosyadaki Ödeme Bilgisi
+	</string>
+	<string name="NoPaymentInfoOnFile">
+		Dosyada Ödeme Bilgisi Yok
+	</string>
+	<string name="AgeVerified">
+		Yaşı Doğrulanmış
+	</string>
+	<string name="NotAgeVerified">
+		Yaşı Doğrulanmamış
+	</string>
+	<string name="Center 2">
+		2. Merkez
+	</string>
+	<string name="Top Right">
+		SaÄŸ Ãœst
+	</string>
+	<string name="Top">
+		Ãœst
+	</string>
+	<string name="Top Left">
+		Sol Ãœst
+	</string>
+	<string name="Center">
+		Merkez
+	</string>
+	<string name="Bottom Left">
+		Sol Alt
+	</string>
+	<string name="Bottom">
+		Alt
+	</string>
+	<string name="Bottom Right">
+		SaÄŸ Alt
+	</string>
+	<string name="CompileQueueDownloadedCompiling">
+		Karşıdan yüklendi, şimdi derleniyor
+	</string>
+	<string name="CompileQueueScriptNotFound">
+		Komut dosyası sunucuda bulunamadı.
+	</string>
+	<string name="CompileQueueProblemDownloading">
+		Karşıdan yüklenirken sorun oluştu
+	</string>
+	<string name="CompileQueueInsufficientPermDownload">
+		Komut dosyasını karşıdan yüklemek için yeterli izin yok.
+	</string>
+	<string name="CompileQueueInsufficientPermFor">
+		Şunun için yeterli izin yok:
+	</string>
+	<string name="CompileQueueUnknownFailure">
+		Karşıdan yüklerken bilinmeyen hata
+	</string>
+	<string name="CompileQueueTitle">
+		Tekrar Derleme Ä°lerlemesi
+	</string>
+	<string name="CompileQueueStart">
+		tekrar derle
+	</string>
+	<string name="ResetQueueTitle">
+		Sıfırlama İlerlemesi
+	</string>
+	<string name="ResetQueueStart">
+		sıfırla
+	</string>
+	<string name="RunQueueTitle">
+		Çalışan Süreçlerin İlerlemesini Ayarla
+	</string>
+	<string name="RunQueueStart">
+		çalıştırmayı ayarla
+	</string>
+	<string name="NotRunQueueTitle">
+		Çalışmayan Süreçlerin İlerlemesini Ayarla
+	</string>
+	<string name="NotRunQueueStart">
+		çalıştırmamayı ayarla
+	</string>
+	<string name="CompileSuccessful">
+		Derleme başarılı oldu!
+	</string>
+	<string name="CompileSuccessfulSaving">
+		Derleme başarılı, kaydediliyor...
+	</string>
+	<string name="SaveComplete">
+		Kaydetme tamamlandı.
+	</string>
+	<string name="ObjectOutOfRange">
+		Komut dosyası (nesne kapsam dışı)
+	</string>
+	<string name="GodToolsObjectOwnedBy">
+		[OWNER] mülkiyetindeki [OBJECT] nesnesi
+	</string>
+	<string name="GroupsNone">
+		hiçbiri
+	</string>
+	<string name="Group" value="(grup)"/>
+	<string name="Unknown">
+		(Bilinmiyor)
+	</string>
+	<string name="SummaryForTheWeek" value="Bu haftanın özeti, şu tarihten itibaren:"/>
+	<string name="NextStipendDay" value="Sonraki ödeme günü şudur:"/>
+	<string name="GroupPlanningDate">
+		[mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]
+	</string>
+	<string name="GroupIndividualShare" value="Grup       Bireysel Pay"/>
+	<string name="GroupColumn" value="Grup"/>
+	<string name="Balance">
+		Bakiye
+	</string>
+	<string name="Credits">
+		Katkıda Bulunanlar
+	</string>
+	<string name="Debits">
+		Borçlar
+	</string>
+	<string name="Total">
+		Toplam
+	</string>
+	<string name="NoGroupDataFound">
+		Bu grup için grup verisi bulunamadı
+	</string>
+	<string name="IMParentEstate">
+		ana gayrimenkul
+	</string>
+	<string name="IMMainland">
+		anakara
+	</string>
+	<string name="IMTeen">
+		on sekiz yaş altı
+	</string>
+	<string name="Anyone">
+		herkes
+	</string>
+	<string name="RegionInfoError">
+		hata
+	</string>
+	<string name="RegionInfoAllEstatesOwnedBy">
+		[OWNER] mülkiyetindeki tüm gayrimenkuller
+	</string>
+	<string name="RegionInfoAllEstatesYouOwn">
+		sahip olduğunuz tüm gayrimenkuller
+	</string>
+	<string name="RegionInfoAllEstatesYouManage">
+		[OWNER] adına yönettiğiniz tüm gayrimenkuller
+	</string>
+	<string name="RegionInfoAllowedResidents">
+		Ä°zin verilen Sakinler: ([ALLOWEDAGENTS], maks [MAXACCESS])
+	</string>
+	<string name="RegionInfoAllowedGroups">
+		Ä°zin verilen gruplar: ([ALLOWEDGROUPS], maks [MAXACCESS])
+	</string>
+	<string name="ScriptLimitsParcelScriptMemory">
+		Parsel Komut Dosyası Belleği
+	</string>
+	<string name="ScriptLimitsParcelsOwned">
+		Listelenen Parseller: [PARCELS]
+	</string>
+	<string name="ScriptLimitsMemoryUsed">
+		Kullanılan bellek: [COUNT] kb / [MAX] kb içerisinden; [AVAILABLE] kb serbest
+	</string>
+	<string name="ScriptLimitsMemoryUsedSimple">
+		Kullanılan bellek: [COUNT] kb
+	</string>
+	<string name="ScriptLimitsParcelScriptURLs">
+		Parsel Komut Dosyası URL&apos;leri
+	</string>
+	<string name="ScriptLimitsURLsUsed">
+		Kullanılan URL&apos;ler: [COUNT] / [MAX] içerisinden; [AVAILABLE] serbest
+	</string>
+	<string name="ScriptLimitsURLsUsedSimple">
+		Kullanılan URL&apos;ler: [COUNT]
+	</string>
+	<string name="ScriptLimitsRequestError">
+		Bilgi talep edilirken hata oluÅŸtu
+	</string>
+	<string name="ScriptLimitsRequestNoParcelSelected">
+		Seçili Parsel Yok
+	</string>
+	<string name="ScriptLimitsRequestWrongRegion">
+		Hata: Komut dosyası bilgisi sadece mevcut bölgenizde geçerli
+	</string>
+	<string name="ScriptLimitsRequestWaiting">
+		Bilgiler alınıyor...
+	</string>
+	<string name="ScriptLimitsRequestDontOwnParcel">
+		Bu parseli inceleme izniniz yok
+	</string>
+	<string name="SITTING_ON">
+		Ãœzerinde Oturuyor
+	</string>
+	<string name="ATTACH_CHEST">
+		Göğüs
+	</string>
+	<string name="ATTACH_HEAD">
+		BaÅŸ
+	</string>
+	<string name="ATTACH_LSHOULDER">
+		Sol Omuz
+	</string>
+	<string name="ATTACH_RSHOULDER">
+		SaÄŸ Omuz
+	</string>
+	<string name="ATTACH_LHAND">
+		Sol El
+	</string>
+	<string name="ATTACH_RHAND">
+		SaÄŸ El
+	</string>
+	<string name="ATTACH_LFOOT">
+		Sol Ayak
+	</string>
+	<string name="ATTACH_RFOOT">
+		SaÄŸ Ayak
+	</string>
+	<string name="ATTACH_BACK">
+		Geri
+	</string>
+	<string name="ATTACH_PELVIS">
+		LeÄŸen KemiÄŸi
+	</string>
+	<string name="ATTACH_MOUTH">
+		Ağız
+	</string>
+	<string name="ATTACH_CHIN">
+		Çene
+	</string>
+	<string name="ATTACH_LEAR">
+		Sol Kulak
+	</string>
+	<string name="ATTACH_REAR">
+		SaÄŸ Kulak
+	</string>
+	<string name="ATTACH_LEYE">
+		Sol Göz
+	</string>
+	<string name="ATTACH_REYE">
+		Sağ Göz
+	</string>
+	<string name="ATTACH_NOSE">
+		Burun
+	</string>
+	<string name="ATTACH_RUARM">
+		Sol Ãœst Kol
+	</string>
+	<string name="ATTACH_RLARM">
+		SaÄŸ Alt Kol
+	</string>
+	<string name="ATTACH_LUARM">
+		Sol Ãœst Kol
+	</string>
+	<string name="ATTACH_LLARM">
+		Sol Alt Kol
+	</string>
+	<string name="ATTACH_RHIP">
+		Sağ Kalça
+	</string>
+	<string name="ATTACH_RULEG">
+		SaÄŸ Ãœst Bacak
+	</string>
+	<string name="ATTACH_RLLEG">
+		SaÄŸ Alt Bacak
+	</string>
+	<string name="ATTACH_LHIP">
+		Sol Kalça
+	</string>
+	<string name="ATTACH_LULEG">
+		Sol Ãœst Bacak
+	</string>
+	<string name="ATTACH_LLLEG">
+		Sol Alt Bacak
+	</string>
+	<string name="ATTACH_BELLY">
+		Göbek
+	</string>
+	<string name="ATTACH_RPEC">
+		Sağ Göğüs
+	</string>
+	<string name="ATTACH_LPEC">
+		Sol Göğüs
+	</string>
+	<string name="ATTACH_HUD_CENTER_2">
+		BÃœG 2. Merkez
+	</string>
+	<string name="ATTACH_HUD_TOP_RIGHT">
+		BÃœG SaÄŸ Ãœst
+	</string>
+	<string name="ATTACH_HUD_TOP_CENTER">
+		BÃœG Merkez Ãœst
+	</string>
+	<string name="ATTACH_HUD_TOP_LEFT">
+		BÃœG Sol Ãœst
+	</string>
+	<string name="ATTACH_HUD_CENTER_1">
+		BÃœG 1. Merkez
+	</string>
+	<string name="ATTACH_HUD_BOTTOM_LEFT">
+		BÃœG Sol Alt
+	</string>
+	<string name="ATTACH_HUD_BOTTOM">
+		BÃœG Alt
+	</string>
+	<string name="ATTACH_HUD_BOTTOM_RIGHT">
+		BÃœG SaÄŸ Alt
+	</string>
+	<string name="CursorPos">
+		Satır [LINE], Sütun [COLUMN]
+	</string>
+	<string name="PanelDirCountFound">
+		[COUNT] bulundu
+	</string>
+	<string name="PanelDirTimeStr">
+		[hour,datetime,slt]:[min,datetime,slt]
+	</string>
+	<string name="PanelDirEventsDateText">
+		[mthnum,datetime,slt]/[day,datetime,slt]
+	</string>
+	<string name="PanelContentsTooltip">
+		Nesnenin içeriği
+	</string>
+	<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>
+	<string name="MuteByName">
+		(Adına göre)
+	</string>
+	<string name="MuteAgent">
+		(Sakin)
+	</string>
+	<string name="MuteObject">
+		(Nesne)
+	</string>
+	<string name="MuteGroup">
+		(Grup)
+	</string>
+	<string name="MuteExternal">
+		(Harici)
+	</string>
+	<string name="RegionNoCovenant">
+		Bu Gayrimenkul için Sözleşmesi yok.
+	</string>
+	<string name="RegionNoCovenantOtherOwner">
+		Bu Gayrimenkul için Sözleşmesi yok. Bu gayrimenkul üzerindeki arazi Linden Lab. değil, Gayrimenkul sahibi tarafından satılmaktadır.  Satış ayrıntılarını öğrenmek için lütfen Gayrimenkul Sahibiyle bağlantıya geçin.
+	</string>
+	<string name="covenant_last_modified" value="Son DeÄŸiÅŸtirildiÄŸi Tarih:"/>
+	<string name="none_text" value="(hiçbiri)"/>
+	<string name="never_text" value="(asla)"/>
+	<string name="GroupOwned">
+		Sahibi Olunan Grup
+	</string>
+	<string name="Public">
+		Kamuya Açık
+	</string>
+	<string name="LocalSettings">
+		Yerel Ayarlar
+	</string>
+	<string name="RegionSettings">
+		Bölge Ayarları
+	</string>
+	<string name="ClassifiedClicksTxt">
+		Tıklamalar: [TELEPORT] ışınlama, [MAP] harita, [PROFILE] profil
+	</string>
+	<string name="ClassifiedUpdateAfterPublish">
+		(yayınlandıktan sonra güncelleştirilir)
+	</string>
+	<string name="NoPicksClassifiedsText">
+		Herhangi bir Seçme veya İlan oluşturmadınız. Bir Seçme veya İlan oluşturmak için aşağıdaki Artı düğmesine tıklayın.
+	</string>
+	<string name="NoAvatarPicksClassifiedsText">
+		Kullanıcının herhangi bir seçmesi veya ilanı yok
+	</string>
+	<string name="PicksClassifiedsLoadingText">
+		Yükleniyor...
+	</string>
+	<string name="MultiPreviewTitle">
+		Önizleme
+	</string>
+	<string name="MultiPropertiesTitle">
+		Özellikler
+	</string>
+	<string name="InvOfferAnObjectNamed">
+		Åžu ada sahip bir nesne:
+	</string>
+	<string name="InvOfferOwnedByGroup">
+		grubun sahip olduÄŸu:
+	</string>
+	<string name="InvOfferOwnedByUnknownGroup">
+		bilinmeyen grubun sahip olduÄŸu:
+	</string>
+	<string name="InvOfferOwnedBy">
+		sahibi:
+	</string>
+	<string name="InvOfferOwnedByUnknownUser">
+		bilinmeyen bir kullanıcının sahip olduğu:
+	</string>
+	<string name="InvOfferGaveYou">
+		size verdi:
+	</string>
+	<string name="InvOfferDecline">
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; tarafından gönderilen [DESC]&apos;i reddettiniz.
+	</string>
+	<string name="GroupMoneyTotal">
+		Toplam
+	</string>
+	<string name="GroupMoneyBought">
+		alınan:
+	</string>
+	<string name="GroupMoneyPaidYou">
+		size ödenen:
+	</string>
+	<string name="GroupMoneyPaidInto">
+		şuraya ödenen:
+	</string>
+	<string name="GroupMoneyBoughtPassTo">
+		şuraya geçiş hakkı alınan:
+	</string>
+	<string name="GroupMoneyPaidFeeForEvent">
+		etkinlik için ödenen ücret:
+	</string>
+	<string name="GroupMoneyPaidPrizeForEvent">
+		etkinlik için verilen ödül:
+	</string>
+	<string name="GroupMoneyBalance">
+		Bakiye
+	</string>
+	<string name="GroupMoneyCredits">
+		Katkıda Bulunanlar
+	</string>
+	<string name="GroupMoneyDebits">
+		Borçlar
+	</string>
+	<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>
+	<string name="Cancel">
+		Ä°ptal
+	</string>
+	<string name="UploadingCosts">
+		[NAME] için karşıya yükleme maliyeti: L$ [AMOUNT]
+	</string>
+	<string name="BuyingCosts">
+		Bunu satın almanın maliyeti: L$ [AMOUNT]
+	</string>
+	<string name="UnknownFileExtension">
+		Bilinmeyen dosya uzantısı .%s
+.wav, .tga, .bmp, .jpg, .jpeg veya .bvh bekleniyordu
+	</string>
+	<string name="MuteObject2">
+		Engelle
+	</string>
+	<string name="MuteAvatar">
+		Engelle
+	</string>
+	<string name="UnmuteObject">
+		Engellemeyi Kaldır
+	</string>
+	<string name="UnmuteAvatar">
+		Engellemeyi Kaldır
+	</string>
+	<string name="AddLandmarkNavBarMenu">
+		Yer Ä°mlerime Ekle...
+	</string>
+	<string name="EditLandmarkNavBarMenu">
+		Yer İmimi Düzenle...
+	</string>
+	<string name="accel-mac-control">
+		⌃
+	</string>
+	<string name="accel-mac-command">
+		⌘
+	</string>
+	<string name="accel-mac-option">
+		⌥
+	</string>
+	<string name="accel-mac-shift">
+		⇧
+	</string>
+	<string name="accel-win-control">
+		Ctrl+
+	</string>
+	<string name="accel-win-alt">
+		Alt+
+	</string>
+	<string name="accel-win-shift">
+		Shift+
+	</string>
+	<string name="FileSaved">
+		Dosya Kaydedildi
+	</string>
+	<string name="Receiving">
+		Alınıyor
+	</string>
+	<string name="AM">
+		ÖÖ
+	</string>
+	<string name="PM">
+		ÖS
+	</string>
+	<string name="PST">
+		PST
+	</string>
+	<string name="PDT">
+		PDT
+	</string>
+	<string name="Direction_Forward">
+		Ä°leri
+	</string>
+	<string name="Direction_Left">
+		Sol
+	</string>
+	<string name="Direction_Right">
+		SaÄŸ
+	</string>
+	<string name="Direction_Back">
+		Geri
+	</string>
+	<string name="Direction_North">
+		Kuzey
+	</string>
+	<string name="Direction_South">
+		Güney
+	</string>
+	<string name="Direction_West">
+		Batı
+	</string>
+	<string name="Direction_East">
+		DoÄŸu
+	</string>
+	<string name="Direction_Up">
+		Yukarı
+	</string>
+	<string name="Direction_Down">
+		Aşağı
+	</string>
+	<string name="Any Category">
+		Herh. Bir Kategori
+	</string>
+	<string name="Shopping">
+		Alışveriş
+	</string>
+	<string name="Land Rental">
+		Arazi Kiralama
+	</string>
+	<string name="Property Rental">
+		Mülk Kiralama
+	</string>
+	<string name="Special Attraction">
+		Özel Atraksiyon
+	</string>
+	<string name="New Products">
+		Yeni Ürünler
+	</string>
+	<string name="Employment">
+		Ä°stihdam
+	</string>
+	<string name="Wanted">
+		Arananlar
+	</string>
+	<string name="Service">
+		Hizmet
+	</string>
+	<string name="Personal">
+		KiÅŸisel
+	</string>
+	<string name="None">
+		Renksiz
+	</string>
+	<string name="Linden Location">
+		Linden Konumu
+	</string>
+	<string name="Adult">
+		YetiÅŸkin
+	</string>
+	<string name="Arts&amp;Culture">
+		Sanat ve Kültür
+	</string>
+	<string name="Business">
+		Ä°ÅŸ
+	</string>
+	<string name="Educational">
+		EÄŸitim
+	</string>
+	<string name="Gaming">
+		Oyun
+	</string>
+	<string name="Hangout">
+		UÄŸrak Mekan
+	</string>
+	<string name="Newcomer Friendly">
+		Yeni Gelenlere Yardım Sunan
+	</string>
+	<string name="Parks&amp;Nature">
+		Park ve DoÄŸa
+	</string>
+	<string name="Residential">
+		YerleÅŸim
+	</string>
+	<string name="Stage">
+		Sahne
+	</string>
+	<string name="Other">
+		DiÄŸer
+	</string>
+	<string name="Rental">
+		Kiralık
+	</string>
+	<string name="Any">
+		Herhangi
+	</string>
+	<string name="You">
+		Siz
+	</string>
+	<string name=":">
+		:
+	</string>
+	<string name=",">
+		,
+	</string>
+	<string name="...">
+		...
+	</string>
+	<string name="***">
+		***
+	</string>
+	<string name="(">
+		(
+	</string>
+	<string name=")">
+		)
+	</string>
+	<string name=".">
+		.
+	</string>
+	<string name="&apos;">
+		&apos;
+	</string>
+	<string name="---">
+		---
+	</string>
+	<string name="Multiple Media">
+		Birden Çok Ortam
+	</string>
+	<string name="Play Media">
+		Ortamı Oynat/Durdur
+	</string>
+	<string name="MBCmdLineError">
+		Komut satırı ayrıştırılırken bir hata oluştu.
+Lütfen bakınız: http://wiki.secondlife.com/wiki/Client_parameters
+Hata:
+	</string>
+	<string name="MBCmdLineUsg">
+		[APP_NAME] Komut satırı kullanımı:
+	</string>
+	<string name="MBUnableToAccessFile">
+		[APP_NAME] ihtiyaç duyduğu bir dosyaya erişemiyor.
+
+Bunun nedeni bir şekilde birden fazla kopyanın çalışıyor olması veya sisteminizin, bir dosyanın açık olduğunu sanması olabilir.
+Bu iletiyi görmeye devam ederseniz, bilgisayarınızı yeniden başlatın ve tekrar deneyin.
+Sorun devam ederse [APP_NAME] uygulamasını tümüyle kaldırmanız ve tekrar yüklemeniz gerekebilir.
+	</string>
+	<string name="MBFatalError">
+		Önemli Hata
+	</string>
+	<string name="MBRequiresAltiVec">
+		[APP_NAME], AltiVec (G4 veya üzeri) bir işlemciye ihtiyaç duyuyor.
+	</string>
+	<string name="MBAlreadyRunning">
+		[APP_NAME] zaten çalışıyor.
+Programın simge durumuna küçültülmüş bir kopyası için görev çubuğunuza bakın.
+Bu iletiyi görmeye devam ederseniz, bilgisayarınızı tekrar başlatın.
+	</string>
+	<string name="MBFrozenCrashed">
+		[APP_NAME] uygulaması bir önceki çalıştırmada kilitlenmiş görünüyor.
+Bir kilitlenme raporu göndermek ister misiniz?
+	</string>
+	<string name="MBAlert">
+		Bildirim
+	</string>
+	<string name="MBNoDirectX">
+		[APP_NAME], DirectX 9.0b veya üzerini saptayamıyor.
+[APP_NAME], kararlılık problemleri, kötü performans ve çökmelere neden olabilecek donanım ve/veya süresi geçmiş sürücüleri saptamak için DirectX kullanır.  [APP_NAME] uygulamasını bu olmadan da çalıştırmanız mümkündür, ancak DirectX 9.0b ile çalıştırmanızı kuvvetle tavsiye ederiz.
+
+Devam etmek istiyor musunuz?
+	</string>
+	<string name="MBWarning">
+		Uyarı
+	</string>
+	<string name="MBNoAutoUpdate">
+		Linux için henüz otomatik güncelleştirme uygulanmamıştır.
+Lütfen www.secondlife.com adresinden son sürümü karşıdan yükleyin.
+	</string>
+	<string name="MBRegClassFailed">
+		RegisterClass başarısız oldu
+	</string>
+	<string name="MBError">
+		Hata
+	</string>
+	<string name="MBFullScreenErr">
+		[WIDTH] x [HEIGHT] çözünürlüğünde tam ekran çalıştırma yapılamıyor.
+Pencerede çalışıyor.
+	</string>
+	<string name="MBDestroyWinFailed">
+		Pencere yok edilirken Kapatma Hatası oluştu (DestroyWindow() başarısız oldu)
+	</string>
+	<string name="MBShutdownErr">
+		Kapatma Hatası
+	</string>
+	<string name="MBDevContextErr">
+		GL cihazı içeriği oluşturulamıyor
+	</string>
+	<string name="MBPixelFmtErr">
+		Uygun piksel formatı bulunamadı
+	</string>
+	<string name="MBPixelFmtDescErr">
+		Piksel formatı açıklaması alınamıyor
+	</string>
+	<string name="MBTrueColorWindow">
+		[APP_NAME] uygulamasının çalışması için Gerçek Renk (32 bit) gerekiyor.
+Lütfen bilgisayarınızın ekran ayarlarına gidin ve renk modunu 32 bit olarak ayarlayın.
+	</string>
+	<string name="MBAlpha">
+		[APP_NAME] çalışamıyor çünkü 8 bit bir alfa kanalı alamıyor.  Bunun nedeni genellikle video kartı sürücü sorunlarıdır.
+Lütfen en yeni video sürücülerinin yüklü olduğuna emin olun.
+Ayrıca Denetim Masaları &gt; Ekran &gt; Ayarlar içerisinde ekranınız için Gerçek Renk (32 bit) ayarı yapıldığına emin olun.
+Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
+	</string>
+	<string name="MBPixelFmtSetErr">
+		Piksel formatı ayarlanamıyor
+	</string>
+	<string name="MBGLContextErr">
+		GL işlemi bağlamı oluşturulamıyor
+	</string>
+	<string name="MBGLContextActErr">
+		GL işlemi bağlamı etkinleştirilemiyor
+	</string>
+	<string name="MBVideoDrvErr">
+		[APP_NAME] çalışamıyor çünkü video kartı sürücüleriniz düzgün yüklenemedi, süresi geçmiş durumda veya desteklenmeyen donanımlar için geliştirilmiş. Lütfen en yeni video kartı sürücülerine sahip olduğunuza emin olun; en yeni sürücüler mevcutsa da bunları tekrar yüklemeyi deneyin.
+
+Bu iletiyi almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
+	</string>
+	<string name="5 O&apos;Clock Shadow">
+		Bir Günlük Sakal
+	</string>
+	<string name="All White">
+		Tümü Beyaz
+	</string>
+	<string name="Anime Eyes">
+		Anime Gözler
+	</string>
+	<string name="Arced">
+		Yay Åžeklinde
+	</string>
+	<string name="Arm Length">
+		Kol UzunluÄŸu
+	</string>
+	<string name="Attached">
+		BitiÅŸik
+	</string>
+	<string name="Attached Earlobes">
+		Kafaya BitiÅŸik Kulak Memeleri
+	</string>
+	<string name="Back Fringe">
+		Arka Perçem
+	</string>
+	<string name="Baggy">
+		Torbalı
+	</string>
+	<string name="Bangs">
+		Kahküller
+	</string>
+	<string name="Beady Eyes">
+		Boncuk Gözler
+	</string>
+	<string name="Belly Size">
+		Göbek Büyüklüğü
+	</string>
+	<string name="Big">
+		Büyük
+	</string>
+	<string name="Big Butt">
+		Büyük Kıç
+	</string>
+	<string name="Big Hair Back">
+		Kabarık Saç: Arkada
+	</string>
+	<string name="Big Hair Front">
+		Kabarık Saç: Önde
+	</string>
+	<string name="Big Hair Top">
+		Kabarık Saç: Tepede
+	</string>
+	<string name="Big Head">
+		Büyük Kafa
+	</string>
+	<string name="Big Pectorals">
+		Büyük Göğüs Kasları
+	</string>
+	<string name="Big Spikes">
+		Büyük Dik Kısımlar
+	</string>
+	<string name="Black">
+		Siyah
+	</string>
+	<string name="Blonde">
+		Sarışın
+	</string>
+	<string name="Blonde Hair">
+		Sarı Saç
+	</string>
+	<string name="Blush">
+		Allık
+	</string>
+	<string name="Blush Color">
+		Allık Rengi
+	</string>
+	<string name="Blush Opacity">
+		Allık Geçirgenliği
+	</string>
+	<string name="Body Definition">
+		Vücut Tanımı
+	</string>
+	<string name="Body Fat">
+		Vücut Yağı
+	</string>
+	<string name="Body Freckles">
+		Vücut Çilleri
+	</string>
+	<string name="Body Thick">
+		Kalın Vücut
+	</string>
+	<string name="Body Thickness">
+		Vücut Kalınlığı
+	</string>
+	<string name="Body Thin">
+		İnce Vücut
+	</string>
+	<string name="Bow Legged">
+		Çarpık Bacaklı
+	</string>
+	<string name="Breast Buoyancy">
+		Göğüs Kalkıklığı
+	</string>
+	<string name="Breast Cleavage">
+		Göğüs Çatalı
+	</string>
+	<string name="Breast Size">
+		Göğüs Büyüklüğü
+	</string>
+	<string name="Bridge Width">
+		Burun KemiÄŸi GeniÅŸliÄŸi
+	</string>
+	<string name="Broad">
+		GeniÅŸ
+	</string>
+	<string name="Brow Size">
+		Alın Genişliği
+	</string>
+	<string name="Bug Eyes">
+		Patlak Gözlü
+	</string>
+	<string name="Bugged Eyes">
+		Patlak Gözlü
+	</string>
+	<string name="Bulbous">
+		Patates Burunlu
+	</string>
+	<string name="Bulbous Nose">
+		Patates Burunlu
+	</string>
+	<string name="Breast Physics Mass">
+		Göğüs Kütlesi
+	</string>
+	<string name="Breast Physics Smoothing">
+		Göğüs Düzleştirme
+	</string>
+	<string name="Breast Physics Gravity">
+		Göğüs Yerçekimi
+	</string>
+	<string name="Breast Physics Drag">
+		Göğüs Direnci
+	</string>
+	<string name="Breast Physics InOut Max Effect">
+		Maks Etki
+	</string>
+	<string name="Breast Physics InOut Spring">
+		Yaylanma
+	</string>
+	<string name="Breast Physics InOut Gain">
+		Kazanç
+	</string>
+	<string name="Breast Physics InOut Damping">
+		Sönüm
+	</string>
+	<string name="Breast Physics UpDown Max Effect">
+		Maks Etki
+	</string>
+	<string name="Breast Physics UpDown Spring">
+		Yaylanma
+	</string>
+	<string name="Breast Physics UpDown Gain">
+		Kazanç
+	</string>
+	<string name="Breast Physics UpDown Damping">
+		Sönüm
+	</string>
+	<string name="Breast Physics LeftRight Max Effect">
+		Maks Etki
+	</string>
+	<string name="Breast Physics LeftRight Spring">
+		Yaylanma
+	</string>
+	<string name="Breast Physics LeftRight Gain">
+		Kazanç
+	</string>
+	<string name="Breast Physics LeftRight Damping">
+		Sönüm
+	</string>
+	<string name="Belly Physics Mass">
+		Göbek Kütlesi
+	</string>
+	<string name="Belly Physics Smoothing">
+		Göbek Düzleştirme
+	</string>
+	<string name="Belly Physics Gravity">
+		Göbek Yerçekimi
+	</string>
+	<string name="Belly Physics Drag">
+		Göbek Direnci
+	</string>
+	<string name="Belly Physics UpDown Max Effect">
+		Maks Etki
+	</string>
+	<string name="Belly Physics UpDown Spring">
+		Yaylanma
+	</string>
+	<string name="Belly Physics UpDown Gain">
+		Kazanç
+	</string>
+	<string name="Belly Physics UpDown Damping">
+		Sönüm
+	</string>
+	<string name="Butt Physics Mass">
+		Kıç Kütlesi
+	</string>
+	<string name="Butt Physics Smoothing">
+		Kıç Düzleştirme
+	</string>
+	<string name="Butt Physics Gravity">
+		Kıç Yerçekimi
+	</string>
+	<string name="Butt Physics Drag">
+		Kıç Direnci
+	</string>
+	<string name="Butt Physics UpDown Max Effect">
+		Maks Etki
+	</string>
+	<string name="Butt Physics UpDown Spring">
+		Yaylanma
+	</string>
+	<string name="Butt Physics UpDown Gain">
+		Kazanç
+	</string>
+	<string name="Butt Physics UpDown Damping">
+		Sönüm
+	</string>
+	<string name="Butt Physics LeftRight Max Effect">
+		Maks Etki
+	</string>
+	<string name="Butt Physics LeftRight Spring">
+		Yaylanma
+	</string>
+	<string name="Butt Physics LeftRight Gain">
+		Kazanç
+	</string>
+	<string name="Butt Physics LeftRight Damping">
+		Sönüm
+	</string>
+	<string name="Bushy Eyebrows">
+		Gür Kaşlar
+	</string>
+	<string name="Bushy Hair">
+		Gür Saç
+	</string>
+	<string name="Butt Size">
+		Kıç Büyüklüğü
+	</string>
+	<string name="Butt Gravity">
+		Kıç Yerçekimi
+	</string>
+	<string name="bustle skirt">
+		Tarlatanlı Etek
+	</string>
+	<string name="no bustle">
+		Tarlatansız
+	</string>
+	<string name="more bustle">
+		Çok Tarlatanlı
+	</string>
+	<string name="Chaplin">
+		Chaplin pantalon
+	</string>
+	<string name="Cheek Bones">
+		Elmacık Kemikleri
+	</string>
+	<string name="Chest Size">
+		Göğüs Büyüklüğü
+	</string>
+	<string name="Chin Angle">
+		Çene Açısı
+	</string>
+	<string name="Chin Cleft">
+		Çene Çukuru
+	</string>
+	<string name="Chin Curtains">
+		Lincoln Sakal
+	</string>
+	<string name="Chin Depth">
+		Çene Derinliği
+	</string>
+	<string name="Chin Heavy">
+		Geniş Çene
+	</string>
+	<string name="Chin In">
+		Çene İçeri
+	</string>
+	<string name="Chin Out">
+		Çene Dışarı
+	</string>
+	<string name="Chin-Neck">
+		Çene-Boyun
+	</string>
+	<string name="Clear">
+		Temizle
+	</string>
+	<string name="Cleft">
+		Çukur
+	</string>
+	<string name="Close Set Eyes">
+		Yakın Gözler
+	</string>
+	<string name="Closed">
+		Kapalı
+	</string>
+	<string name="Closed Back">
+		Arkası Kapalı
+	</string>
+	<string name="Closed Front">
+		Önü Kapalı
+	</string>
+	<string name="Closed Left">
+		Solu Kapalı
+	</string>
+	<string name="Closed Right">
+		Sağı Kapalı
+	</string>
+	<string name="Coin Purse">
+		Para Cüzdanı
+	</string>
+	<string name="Collar Back">
+		Yaka Arkası
+	</string>
+	<string name="Collar Front">
+		Yaka Önü
+	</string>
+	<string name="Corner Down">
+		Köşesi Aşağıda
+	</string>
+	<string name="Corner Up">
+		Köşesi Yukarıda
+	</string>
+	<string name="Creased">
+		Kırışık
+	</string>
+	<string name="Crooked Nose">
+		Yamuk Burun
+	</string>
+	<string name="Cuff Flare">
+		Geniş Paça
+	</string>
+	<string name="Dark">
+		Karanlık
+	</string>
+	<string name="Dark Green">
+		Koyu YeÅŸil
+	</string>
+	<string name="Darker">
+		Daha Koyu
+	</string>
+	<string name="Deep">
+		Derin
+	</string>
+	<string name="Default Heels">
+		Varsayılan Topuklar
+	</string>
+	<string name="Dense">
+		YoÄŸun
+	</string>
+	<string name="Double Chin">
+		Çift Çene
+	</string>
+	<string name="Downturned">
+		Aşağı Dönük
+	</string>
+	<string name="Duffle Bag">
+		Spor Çanta
+	</string>
+	<string name="Ear Angle">
+		Kulak Açısı
+	</string>
+	<string name="Ear Size">
+		Kulak Büyüklüğü
+	</string>
+	<string name="Ear Tips">
+		Kulak Uçları
+	</string>
+	<string name="Egg Head">
+		Yumurta Kafa
+	</string>
+	<string name="Eye Bags">
+		Göz Altı Torbaları
+	</string>
+	<string name="Eye Color">
+		Göz Rengi
+	</string>
+	<string name="Eye Depth">
+		Gözün İçeri Çöküklüğü
+	</string>
+	<string name="Eye Lightness">
+		Göz Parlaklığı
+	</string>
+	<string name="Eye Opening">
+		Göz Açıklığı
+	</string>
+	<string name="Eye Pop">
+		Gözlerin Dışarı Çıkıklığı
+	</string>
+	<string name="Eye Size">
+		Göz Büyüklüğü
+	</string>
+	<string name="Eye Spacing">
+		Gözlerin Aralığı
+	</string>
+	<string name="Eyebrow Arc">
+		KaÅŸ Kavisi
+	</string>
+	<string name="Eyebrow Density">
+		Kaş Kalınlığı
+	</string>
+	<string name="Eyebrow Height">
+		Kaş Yüksekliği
+	</string>
+	<string name="Eyebrow Points">
+		Kaş Yapısı
+	</string>
+	<string name="Eyebrow Size">
+		Kaş Büyüklüğü
+	</string>
+	<string name="Eyelash Length">
+		Kirpik UzunluÄŸu
+	</string>
+	<string name="Eyeliner">
+		Göz Kalemi
+	</string>
+	<string name="Eyeliner Color">
+		Göz Kalemi Rengi
+	</string>
+	<string name="Eyes Bugged">
+		Patlak Gözler
+	</string>
+	<string name="Face Shear">
+		Dikey Yüz Kaydırma
+	</string>
+	<string name="Facial Definition">
+		Yüz İfadesi
+	</string>
+	<string name="Far Set Eyes">
+		Ayrık Gözler
+	</string>
+	<string name="Fat Lips">
+		Kalın Dudaklar
+	</string>
+	<string name="Female">
+		Kadın
+	</string>
+	<string name="Fingerless">
+		Parmaksız
+	</string>
+	<string name="Fingers">
+		Parmaklar
+	</string>
+	<string name="Flared Cuffs">
+		Geniş Paçalar
+	</string>
+	<string name="Flat">
+		Düz
+	</string>
+	<string name="Flat Butt">
+		Düz Kıç
+	</string>
+	<string name="Flat Head">
+		Düz Kafa
+	</string>
+	<string name="Flat Toe">
+		Düz Ayak Ucu
+	</string>
+	<string name="Foot Size">
+		Ayak Büyüklüğü
+	</string>
+	<string name="Forehead Angle">
+		Alın Açısı
+	</string>
+	<string name="Forehead Heavy">
+		Belirgin Alın
+	</string>
+	<string name="Freckles">
+		Çiller
+	</string>
+	<string name="Front Fringe">
+		Ön Perçem
+	</string>
+	<string name="Full Back">
+		Arkası Düz
+	</string>
+	<string name="Full Eyeliner">
+		Çift Taraflı Göz Kalemi
+	</string>
+	<string name="Full Front">
+		Önü Düz
+	</string>
+	<string name="Full Hair Sides">
+		Saçlar Yanda
+	</string>
+	<string name="Full Sides">
+		Saçlar Yanda
+	</string>
+	<string name="Glossy">
+		Parlak
+	</string>
+	<string name="Glove Fingers">
+		Eldiven Parmakları
+	</string>
+	<string name="Glove Length">
+		Eldiven UzunluÄŸu
+	</string>
+	<string name="Hair">
+		Saç
+	</string>
+	<string name="Hair Back">
+		Saç: Arka
+	</string>
+	<string name="Hair Front">
+		Saç: Ön
+	</string>
+	<string name="Hair Sides">
+		Saç: Yanlar
+	</string>
+	<string name="Hair Sweep">
+		Saçı Yana Tarama
+	</string>
+	<string name="Hair Thickess">
+		Saç Kalınlığı
+	</string>
+	<string name="Hair Thickness">
+		Saç Kalınlığı
+	</string>
+	<string name="Hair Tilt">
+		Saç Eğimi
+	</string>
+	<string name="Hair Tilted Left">
+		Sola Eğimli Saç
+	</string>
+	<string name="Hair Tilted Right">
+		Sağa Eğimli Saç
+	</string>
+	<string name="Hair Volume">
+		Saç: Hacim
+	</string>
+	<string name="Hand Size">
+		El Büyüklüğü
+	</string>
+	<string name="Handlebars">
+		Gidon tipi
+	</string>
+	<string name="Head Length">
+		Kafa UzunluÄŸu
+	</string>
+	<string name="Head Shape">
+		Kafa Åžekli
+	</string>
+	<string name="Head Size">
+		Kafa Büyüklüğü
+	</string>
+	<string name="Head Stretch">
+		Kafayı Uzatma
+	</string>
+	<string name="Heel Height">
+		Topuk Yüksekliği
+	</string>
+	<string name="Heel Shape">
+		Topuk Åžekli
+	</string>
+	<string name="Height">
+		Yükseklik
+	</string>
+	<string name="High">
+		Yüksek
+	</string>
+	<string name="High Heels">
+		Yüksek Topuklar
+	</string>
+	<string name="High Jaw">
+		Ayrık
+	</string>
+	<string name="High Platforms">
+		Yüksek Topuklu
+	</string>
+	<string name="High and Tight">
+		Düşük
+	</string>
+	<string name="Higher">
+		Daha Yüksek
+	</string>
+	<string name="Hip Length">
+		Kalça Uzunluğu
+	</string>
+	<string name="Hip Width">
+		Kalça Genişliği
+	</string>
+	<string name="In">
+		İçeri
+	</string>
+	<string name="In Shdw Color">
+		İç Gölge Rengi
+	</string>
+	<string name="In Shdw Opacity">
+		İç Gölge Opaklığı
+	</string>
+	<string name="Inner Eye Corner">
+		Gözün İç Köşesi
+	</string>
+	<string name="Inner Eye Shadow">
+		İç Göz Gölgesi
+	</string>
+	<string name="Inner Shadow">
+		İç Gölge
+	</string>
+	<string name="Jacket Length">
+		Ceket UzunluÄŸu
+	</string>
+	<string name="Jacket Wrinkles">
+		Ceket Kırışıklıkları
+	</string>
+	<string name="Jaw Angle">
+		Çenenin Boyuna Uzaklığı
+	</string>
+	<string name="Jaw Jut">
+		Alt Çene Uzunluğu
+	</string>
+	<string name="Jaw Shape">
+		Çene Kemiği Genişliği
+	</string>
+	<string name="Join">
+		BirleÅŸik
+	</string>
+	<string name="Jowls">
+		Avurtlar
+	</string>
+	<string name="Knee Angle">
+		Diz Açısı
+	</string>
+	<string name="Knock Kneed">
+		Çarpık Bacaklı
+	</string>
+	<string name="Large">
+		Büyük
+	</string>
+	<string name="Large Hands">
+		Büyük Eller
+	</string>
+	<string name="Left Part">
+		Sola Ayırma
+	</string>
+	<string name="Leg Length">
+		Bacak UzunluÄŸu
+	</string>
+	<string name="Leg Muscles">
+		Bacak Kasları
+	</string>
+	<string name="Less">
+		Daha Az
+	</string>
+	<string name="Less Body Fat">
+		Daha Az Vücut Yağı
+	</string>
+	<string name="Less Curtains">
+		Daha Az Lincoln Sakal
+	</string>
+	<string name="Less Freckles">
+		Daha Az Çil
+	</string>
+	<string name="Less Full">
+		Daha Az Dolgun
+	</string>
+	<string name="Less Gravity">
+		Dik Göğüs
+	</string>
+	<string name="Less Love">
+		Daha Ä°nce Bel
+	</string>
+	<string name="Less Muscles">
+		Daha Az Kas
+	</string>
+	<string name="Less Muscular">
+		Daha Az Kaslı
+	</string>
+	<string name="Less Rosy">
+		Daha Az Pembe
+	</string>
+	<string name="Less Round">
+		Daha Az Yuvarlak
+	</string>
+	<string name="Less Saddle">
+		Basensiz
+	</string>
+	<string name="Less Square">
+		Daha Az Küt
+	</string>
+	<string name="Less Volume">
+		Daha Az Hacim
+	</string>
+	<string name="Less soul">
+		Daha az ruh
+	</string>
+	<string name="Lighter">
+		Daha Hafif
+	</string>
+	<string name="Lip Cleft">
+		Dudak Çukuru
+	</string>
+	<string name="Lip Cleft Depth">
+		Dudak Çukuru Derinliği
+	</string>
+	<string name="Lip Fullness">
+		Dudak DolgunluÄŸu
+	</string>
+	<string name="Lip Pinkness">
+		Dudak PembeliÄŸi
+	</string>
+	<string name="Lip Ratio">
+		Dudak Oranı
+	</string>
+	<string name="Lip Thickness">
+		Dudak Kalınlığı
+	</string>
+	<string name="Lip Width">
+		Dudak GeniÅŸliÄŸi
+	</string>
+	<string name="Lipgloss">
+		Dudak Parlatıcısı
+	</string>
+	<string name="Lipstick">
+		Ruj
+	</string>
+	<string name="Lipstick Color">
+		Ruj Rengi
+	</string>
+	<string name="Long">
+		Uzun
+	</string>
+	<string name="Long Head">
+		Uzun Kafa
+	</string>
+	<string name="Long Hips">
+		Yüksek kalça
+	</string>
+	<string name="Long Legs">
+		Uzun Bacaklar
+	</string>
+	<string name="Long Neck">
+		Uzun Boyun
+	</string>
+	<string name="Long Pigtails">
+		Yandan Uzun Kuyruk
+	</string>
+	<string name="Long Ponytail">
+		Uzun AtkuyruÄŸu
+	</string>
+	<string name="Long Torso">
+		Uzun Gövde
+	</string>
+	<string name="Long arms">
+		Uzun kollar
+	</string>
+	<string name="Loose Pants">
+		Bol Pantolon
+	</string>
+	<string name="Loose Shirt">
+		Bol Gömlek
+	</string>
+	<string name="Loose Sleeves">
+		Bol Kollu
+	</string>
+	<string name="Love Handles">
+		Bel Kalınlığı
+	</string>
+	<string name="Low">
+		Düşük
+	</string>
+	<string name="Low Heels">
+		Alçak Topuklar
+	</string>
+	<string name="Low Jaw">
+		BitiÅŸik
+	</string>
+	<string name="Low Platforms">
+		Alçak Topuklu
+	</string>
+	<string name="Low and Loose">
+		Yüksek
+	</string>
+	<string name="Lower">
+		Daha Alçak
+	</string>
+	<string name="Lower Bridge">
+		Alt Burun KemiÄŸi
+	</string>
+	<string name="Lower Cheeks">
+		Daha Alçak Yanaklar
+	</string>
+	<string name="Male">
+		Erkek
+	</string>
+	<string name="Middle Part">
+		Ortadan Ayırma
+	</string>
+	<string name="More">
+		Daha Fazla
+	</string>
+	<string name="More Blush">
+		Daha Fazla Allık
+	</string>
+	<string name="More Body Fat">
+		Daha Fazla Vücut Yağı
+	</string>
+	<string name="More Curtains">
+		Daha Çok Lincoln Sakal
+	</string>
+	<string name="More Eyeshadow">
+		Daha Fazla Göz Farı
+	</string>
+	<string name="More Freckles">
+		Daha Çok Çil
+	</string>
+	<string name="More Full">
+		Daha Dolgun
+	</string>
+	<string name="More Gravity">
+		Sarkık Göğüs
+	</string>
+	<string name="More Lipstick">
+		Daha Çok Ruj
+	</string>
+	<string name="More Love">
+		Daha Kalın Bel
+	</string>
+	<string name="More Lower Lip">
+		Daha Dolgun Alt Dudak
+	</string>
+	<string name="More Muscles">
+		Daha Çok Kas
+	</string>
+	<string name="More Muscular">
+		Daha Kaslı
+	</string>
+	<string name="More Rosy">
+		Daha Pembe
+	</string>
+	<string name="More Round">
+		Daha Yuvarlak
+	</string>
+	<string name="More Saddle">
+		Basenli
+	</string>
+	<string name="More Sloped">
+		Daha EÄŸimli
+	</string>
+	<string name="More Square">
+		Daha Küt
+	</string>
+	<string name="More Upper Lip">
+		Daha Dolgun Ãœst Dudak
+	</string>
+	<string name="More Vertical">
+		Daha Dikey
+	</string>
+	<string name="More Volume">
+		Daha Hacimli
+	</string>
+	<string name="More soul">
+		Daha çok ruh
+	</string>
+	<string name="Moustache">
+		Bıyık
+	</string>
+	<string name="Mouth Corner">
+		Ağız Köşesi
+	</string>
+	<string name="Mouth Position">
+		Ağzın Konumu
+	</string>
+	<string name="Mowhawk">
+		Mowhawk Saçı
+	</string>
+	<string name="Muscular">
+		Kaslı
+	</string>
+	<string name="Mutton Chops">
+		GeniÅŸ Favori
+	</string>
+	<string name="Nail Polish">
+		Tırnak Cilası
+	</string>
+	<string name="Nail Polish Color">
+		Tırnak Cilası Rengi
+	</string>
+	<string name="Narrow">
+		Dar
+	</string>
+	<string name="Narrow Back">
+		Arkası Dar
+	</string>
+	<string name="Narrow Front">
+		Önü Dar
+	</string>
+	<string name="Narrow Lips">
+		Küçük Dudaklar
+	</string>
+	<string name="Natural">
+		DoÄŸal
+	</string>
+	<string name="Neck Length">
+		Boyun UzunluÄŸu
+	</string>
+	<string name="Neck Thickness">
+		Boyun Kalınlığı
+	</string>
+	<string name="No Blush">
+		Allık Yok
+	</string>
+	<string name="No Eyeliner">
+		Göz Kalemi Yok
+	</string>
+	<string name="No Eyeshadow">
+		Göz Farı Yok
+	</string>
+	<string name="No Lipgloss">
+		Dudak Parlatıcısı Yok
+	</string>
+	<string name="No Lipstick">
+		Ruj Yok
+	</string>
+	<string name="No Part">
+		Ayırma Yok
+	</string>
+	<string name="No Polish">
+		Cila Yok
+	</string>
+	<string name="No Red">
+		Kırmızı Yok
+	</string>
+	<string name="No Spikes">
+		DikleÅŸtirme Yok
+	</string>
+	<string name="No White">
+		Beyaz Yok
+	</string>
+	<string name="No Wrinkles">
+		Kırışıklık Yok
+	</string>
+	<string name="Normal Lower">
+		Normal Alt
+	</string>
+	<string name="Normal Upper">
+		Normal Ãœst
+	</string>
+	<string name="Nose Left">
+		Sola EÄŸimli Burun
+	</string>
+	<string name="Nose Right">
+		SaÄŸa EÄŸimli Burun
+	</string>
+	<string name="Nose Size">
+		Burun Büyüklüğü
+	</string>
+	<string name="Nose Thickness">
+		Burun Kalınlığı
+	</string>
+	<string name="Nose Tip Angle">
+		Burun Ucu Açısı
+	</string>
+	<string name="Nose Tip Shape">
+		Burun Ucu Åžekli
+	</string>
+	<string name="Nose Width">
+		Burun GeniÅŸliÄŸi
+	</string>
+	<string name="Nostril Division">
+		Burun Deliği Ayrımı
+	</string>
+	<string name="Nostril Width">
+		Burun DeliÄŸi GeniÅŸliÄŸi
+	</string>
+	<string name="Opaque">
+		Opak
+	</string>
+	<string name="Open">
+		Aç
+	</string>
+	<string name="Open Back">
+		Arkayı Aç
+	</string>
+	<string name="Open Front">
+		Önü Aç
+	</string>
+	<string name="Open Left">
+		Solu Aç
+	</string>
+	<string name="Open Right">
+		Sağı Aç
+	</string>
+	<string name="Orange">
+		Turuncu
+	</string>
+	<string name="Out">
+		Dışarı
+	</string>
+	<string name="Out Shdw Color">
+		Dış Gölge Rengi
+	</string>
+	<string name="Out Shdw Opacity">
+		Dış Gölge Opaklığı
+	</string>
+	<string name="Outer Eye Corner">
+		Gözün Dış Köşesi
+	</string>
+	<string name="Outer Eye Shadow">
+		Dış Göz Gölgesi
+	</string>
+	<string name="Outer Shadow">
+		Dış Gölge
+	</string>
+	<string name="Overbite">
+		Öne Doğru
+	</string>
+	<string name="Package">
+		Apış Arası Şişkinliği
+	</string>
+	<string name="Painted Nails">
+		Ojeli Tırnaklar
+	</string>
+	<string name="Pale">
+		Soluk
+	</string>
+	<string name="Pants Crotch">
+		Pantolon Ağı
+	</string>
+	<string name="Pants Fit">
+		Pantolon Oturması
+	</string>
+	<string name="Pants Length">
+		Pantolon UzunluÄŸu
+	</string>
+	<string name="Pants Waist">
+		Pantolon Bel Ölçüsü
+	</string>
+	<string name="Pants Wrinkles">
+		Pantolon Kırışıklıkları
+	</string>
+	<string name="Part">
+		Ayırma
+	</string>
+	<string name="Part Bangs">
+		Ayrılmış Kahküller
+	</string>
+	<string name="Pectorals">
+		Göğüs Kasları
+	</string>
+	<string name="Pigment">
+		Pigment
+	</string>
+	<string name="Pigtails">
+		Yan Kuyruklar
+	</string>
+	<string name="Pink">
+		Pembe
+	</string>
+	<string name="Pinker">
+		Daha Pembe
+	</string>
+	<string name="Platform Height">
+		Topuk Yüksekliği
+	</string>
+	<string name="Platform Width">
+		Topuk GeniÅŸliÄŸi
+	</string>
+	<string name="Pointy">
+		Dar
+	</string>
+	<string name="Pointy Heels">
+		Sivri Topuklar
+	</string>
+	<string name="Ponytail">
+		AtkuyruÄŸu
+	</string>
+	<string name="Poofy Skirt">
+		Kabarık Etek
+	</string>
+	<string name="Pop Left Eye">
+		Sol Gözü Dışarı Çıkar
+	</string>
+	<string name="Pop Right Eye">
+		Sağ Gözü Dışarı Çıkar
+	</string>
+	<string name="Puffy">
+		ÅžiÅŸkin
+	</string>
+	<string name="Puffy Eyelids">
+		Şişkin Göz Kapakları
+	</string>
+	<string name="Rainbow Color">
+		Gökkuşağı Rengi
+	</string>
+	<string name="Red Hair">
+		Kırmızı Saç
+	</string>
+	<string name="Regular">
+		Normal
+	</string>
+	<string name="Right Part">
+		Sağa Ayırma
+	</string>
+	<string name="Rosy Complexion">
+		Kırmızı Yanaklı
+	</string>
+	<string name="Round">
+		Yuvarlak
+	</string>
+	<string name="Ruddiness">
+		Kırmızılık
+	</string>
+	<string name="Ruddy">
+		Kırmızı
+	</string>
+	<string name="Rumpled Hair">
+		Dağınık Saç
+	</string>
+	<string name="Saddle Bags">
+		Basen GeniÅŸliÄŸi
+	</string>
+	<string name="Scrawny Leg">
+		Sıska Bacak
+	</string>
+	<string name="Separate">
+		Ayrık
+	</string>
+	<string name="Shallow">
+		Sığ
+	</string>
+	<string name="Shear Back">
+		Arka DolgunluÄŸu
+	</string>
+	<string name="Shear Face">
+		Yüzü Dikey Kaydır
+	</string>
+	<string name="Shear Front">
+		Ön Dolgunluğu
+	</string>
+	<string name="Shear Left Up">
+		Solu Yukarı Kaydır
+	</string>
+	<string name="Shear Right Up">
+		Sağı Yukarı Kaydır
+	</string>
+	<string name="Sheared Back">
+		Arkası Dolgun
+	</string>
+	<string name="Sheared Front">
+		Önü Dolgun
+	</string>
+	<string name="Shift Left">
+		Sola Kaydır
+	</string>
+	<string name="Shift Mouth">
+		Ağzı Kaydırma
+	</string>
+	<string name="Shift Right">
+		Sağa Kaydır
+	</string>
+	<string name="Shirt Bottom">
+		Gömlek Eteği
+	</string>
+	<string name="Shirt Fit">
+		Gömlek Boyu
+	</string>
+	<string name="Shirt Wrinkles">
+		Gömlek Kırışıklıkları
+	</string>
+	<string name="Shoe Height">
+		Ayakkabı Yüksekliği
+	</string>
+	<string name="Short">
+		Kısa
+	</string>
+	<string name="Short Arms">
+		Kısa Kollar
+	</string>
+	<string name="Short Legs">
+		Kısa Bacaklar
+	</string>
+	<string name="Short Neck">
+		Kısa Boyun
+	</string>
+	<string name="Short Pigtails">
+		Yandan Kısa Kuyruk
+	</string>
+	<string name="Short Ponytail">
+		Kısa Atkuyruğu
+	</string>
+	<string name="Short Sideburns">
+		Kısa Favoriler
+	</string>
+	<string name="Short Torso">
+		Kısa Gövde
+	</string>
+	<string name="Short hips">
+		Düşük kalça
+	</string>
+	<string name="Shoulders">
+		Omuzlar
+	</string>
+	<string name="Side Fringe">
+		Yan Perçem
+	</string>
+	<string name="Sideburns">
+		Favoriler
+	</string>
+	<string name="Sides Hair">
+		Yan Saçlar
+	</string>
+	<string name="Sides Hair Down">
+		Aşağı Doğru Yan Saç
+	</string>
+	<string name="Sides Hair Up">
+		Yukarı Doğru Yan Saç
+	</string>
+	<string name="Skinny Neck">
+		Ä°nce Boyun
+	</string>
+	<string name="Skirt Fit">
+		Etek Boyu
+	</string>
+	<string name="Skirt Length">
+		Etek UzunluÄŸu
+	</string>
+	<string name="Slanted Forehead">
+		Eğimli Alın
+	</string>
+	<string name="Sleeve Length">
+		Kol UzunluÄŸu
+	</string>
+	<string name="Sleeve Looseness">
+		Kol BolluÄŸu
+	</string>
+	<string name="Slit Back">
+		Yırtmaç: Geri
+	</string>
+	<string name="Slit Front">
+		Yırtmaç: Ön
+	</string>
+	<string name="Slit Left">
+		Yırtmaç: Sol
+	</string>
+	<string name="Slit Right">
+		Yırtmaç: Sağ
+	</string>
+	<string name="Small">
+		Küçük
+	</string>
+	<string name="Small Hands">
+		Küçük Eller
+	</string>
+	<string name="Small Head">
+		Küçük Kafa
+	</string>
+	<string name="Smooth">
+		Düz
+	</string>
+	<string name="Smooth Hair">
+		Düz Saç
+	</string>
+	<string name="Socks Length">
+		Çorap Uzunluğu
+	</string>
+	<string name="Soulpatch">
+		Dudak Altı Sakal
+	</string>
+	<string name="Sparse">
+		Seyrek
+	</string>
+	<string name="Spiked Hair">
+		Dikleştirilmiş Saç
+	</string>
+	<string name="Square">
+		GeniÅŸ
+	</string>
+	<string name="Square Toe">
+		Küt Burunlu
+	</string>
+	<string name="Squash Head">
+		Kafayı Bastır
+	</string>
+	<string name="Stretch Head">
+		Kafayı Uzat
+	</string>
+	<string name="Sunken">
+		Çökük
+	</string>
+	<string name="Sunken Chest">
+		Çökük Göğüs
+	</string>
+	<string name="Sunken Eyes">
+		Çökük Gözler
+	</string>
+	<string name="Sweep Back">
+		Arkaya Tarama
+	</string>
+	<string name="Sweep Forward">
+		Öne Tarama
+	</string>
+	<string name="Tall">
+		Uzun
+	</string>
+	<string name="Taper Back">
+		Arkası Kısa
+	</string>
+	<string name="Taper Front">
+		Önü Kısa
+	</string>
+	<string name="Thick Heels">
+		Kalın Topuklar
+	</string>
+	<string name="Thick Neck">
+		Kalın Boyun
+	</string>
+	<string name="Thick Toe">
+		Kalın Ayak Ucu
+	</string>
+	<string name="Thin">
+		Ä°nce
+	</string>
+	<string name="Thin Eyebrows">
+		Ä°nce KaÅŸlar
+	</string>
+	<string name="Thin Lips">
+		Ä°nce Dudaklar
+	</string>
+	<string name="Thin Nose">
+		Ä°nce Burun
+	</string>
+	<string name="Tight Chin">
+		Çift Çene
+	</string>
+	<string name="Tight Cuffs">
+		Dar Paçalar
+	</string>
+	<string name="Tight Pants">
+		Dar Pantolon
+	</string>
+	<string name="Tight Shirt">
+		Dar Gömlek
+	</string>
+	<string name="Tight Skirt">
+		Dar Etek
+	</string>
+	<string name="Tight Sleeves">
+		Dar Kollu
+	</string>
+	<string name="Toe Shape">
+		Ayakkabu Burnu Åžekli
+	</string>
+	<string name="Toe Thickness">
+		Ayakkabu Burnu Kalınlığı
+	</string>
+	<string name="Torso Length">
+		Gövde Uzunluğu
+	</string>
+	<string name="Torso Muscles">
+		Gövde Kasları
+	</string>
+	<string name="Torso Scrawny">
+		Sıska Gövde
+	</string>
+	<string name="Unattached">
+		Ayrık
+	</string>
+	<string name="Uncreased">
+		BuruÅŸuk olmayan
+	</string>
+	<string name="Underbite">
+		Geriye DoÄŸru
+	</string>
+	<string name="Unnatural">
+		DoÄŸal Olmayan
+	</string>
+	<string name="Upper Bridge">
+		Ãœst Burun KemiÄŸi
+	</string>
+	<string name="Upper Cheeks">
+		Ãœst Yanaklar
+	</string>
+	<string name="Upper Chin Cleft">
+		Üst Çene Çukuru
+	</string>
+	<string name="Upper Eyelid Fold">
+		Üst Göz Kapağı Kıvrımı
+	</string>
+	<string name="Upturned">
+		Yukarı dönük
+	</string>
+	<string name="Very Red">
+		Çok Kırmızı
+	</string>
+	<string name="Waist Height">
+		Bel Yüksekliği
+	</string>
+	<string name="Well-Fed">
+		Dolgun
+	</string>
+	<string name="White Hair">
+		Beyaz Saç
+	</string>
+	<string name="Wide">
+		GeniÅŸ
+	</string>
+	<string name="Wide Back">
+		GeniÅŸ Arka
+	</string>
+	<string name="Wide Front">
+		Geniş Ön
+	</string>
+	<string name="Wide Lips">
+		GeniÅŸ Dudaklar
+	</string>
+	<string name="Wild">
+		Çılgın
+	</string>
+	<string name="Wrinkles">
+		Kırışıklıklar
+	</string>
+	<string name="LocationCtrlAddLandmarkTooltip">
+		Yer Ä°mlerime Ekle
+	</string>
+	<string name="LocationCtrlEditLandmarkTooltip">
+		Yer İmimi Düzenle
+	</string>
+	<string name="LocationCtrlInfoBtnTooltip">
+		Geçerli konum hakkında daha fazla bilgi gör
+	</string>
+	<string name="LocationCtrlComboBtnTooltip">
+		Konum geçmişim
+	</string>
+	<string name="LocationCtrlForSaleTooltip">
+		Bu araziyi satın al
+	</string>
+	<string name="LocationCtrlVoiceTooltip">
+		Ses burada kullanılamaz
+	</string>
+	<string name="LocationCtrlFlyTooltip">
+		Uçmaya izin verilmiyor
+	</string>
+	<string name="LocationCtrlPushTooltip">
+		Ä°tme yok
+	</string>
+	<string name="LocationCtrlBuildTooltip">
+		Nesne inşa etmeye/düşürmeye izin verilmiyor
+	</string>
+	<string name="LocationCtrlScriptsTooltip">
+		Komut dosyalarına izin verilmiyor
+	</string>
+	<string name="LocationCtrlDamageTooltip">
+		Sağlık
+	</string>
+	<string name="LocationCtrlAdultIconTooltip">
+		Yetişkin Bölgesi
+	</string>
+	<string name="LocationCtrlModerateIconTooltip">
+		Orta Bölge
+	</string>
+	<string name="LocationCtrlGeneralIconTooltip">
+		Genel Bölge
+	</string>
+	<string name="LocationCtrlSeeAVsTooltip">
+		Bu parselin dışında avatarlar görünür durumda ve sohbete izin veriliyor
+	</string>
+	<string name="UpdaterWindowTitle">
+		[APP_NAME] Güncelleştirme
+	</string>
+	<string name="UpdaterNowUpdating">
+		[APP_NAME] güncelleştiriliyor...
+	</string>
+	<string name="UpdaterNowInstalling">
+		[APP_NAME] yükleniyor...
+	</string>
+	<string name="UpdaterUpdatingDescriptive">
+		[APP_NAME] Görüntüleyiciniz en son sürüme güncelleştiriliyor.  Bu biraz zaman alabilir, bu nedenle sabırlı olun.
+	</string>
+	<string name="UpdaterProgressBarTextWithEllipses">
+		Güncelleştirme karşıdan yükleniyor...
+	</string>
+	<string name="UpdaterProgressBarText">
+		Güncelleştirme karşıdan yükleniyor
+	</string>
+	<string name="UpdaterFailDownloadTitle">
+		Güncelleştirmenin karşıdan yüklenmesi başarılamadı
+	</string>
+	<string name="UpdaterFailUpdateDescriptive">
+		[APP_NAME] güncellenirken bir hata oluştu. Lütfen www.secondlife.com adresinden son sürümü karşıdan yükleyin.
+	</string>
+	<string name="UpdaterFailInstallTitle">
+		Güncelleştirmenin yüklenmesi başarılamadı
+	</string>
+	<string name="UpdaterFailStartTitle">
+		Görüntüleyici başlatılamadı
+	</string>
+	<string name="ItemsComingInTooFastFrom">
+		[APP_NAME]: [FROM_NAME]&apos;den öğeler çok hızlı geliyor, [TIME] saniye boyunca otomatik ön izleme devre dışı bırakıldı
+	</string>
+	<string name="ItemsComingInTooFast">
+		[APP_NAME]: Öğeler çok hızlı geliyor, [TIME] saniye boyunca otomatik ön izleme devre dışı bırakıldı
+	</string>
+	<string name="IM_logging_string">
+		-- Anlık ileti günlük tutulması etkin --
+	</string>
+	<string name="IM_typing_start_string">
+		[NAME] yazıyor...
+	</string>
+	<string name="Unnamed">
+		(Ä°simsiz)
+	</string>
+	<string name="IM_moderated_chat_label">
+		(Yönetilen: Varsayılan durumda sesler kapalı)
+	</string>
+	<string name="IM_unavailable_text_label">
+		Bu aramada metin sohbeti kullanılamaz.
+	</string>
+	<string name="IM_muted_text_label">
+		Bir Grup Moderatörü tarafından metin sohbetiniz devre dışı bırakıldı.
+	</string>
+	<string name="IM_default_text_label">
+		Anlık ileti göndermek için buraya tıklayın.
+	</string>
+	<string name="IM_to_label">
+		Kime
+	</string>
+	<string name="IM_moderator_label">
+		(Moderatör)
+	</string>
+	<string name="Saved_message">
+		(Kaydedildi [LONG_TIMESTAMP])
+	</string>
+	<string name="answered_call">
+		Aramanız yanıtlandı
+	</string>
+	<string name="you_started_call">
+		Bir sesli arama başlattınız
+	</string>
+	<string name="you_joined_call">
+		Sesli aramaya katıldınız
+	</string>
+	<string name="name_started_call">
+		[NAME] bir sesli arama başlattı
+	</string>
+	<string name="ringing-im">
+		Sesli aramaya katılınılıyor...
+	</string>
+	<string name="connected-im">
+		Bağlandı, kapatmak için Aramadan Çık üzerine tıklayın
+	</string>
+	<string name="hang_up-im">
+		Sesli aramadan çıkıldı
+	</string>
+	<string name="answering-im">
+		Bağlanıyor...
+	</string>
+	<string name="conference-title">
+		Özel Konferans
+	</string>
+	<string name="conference-title-incoming">
+		[AGENT_NAME] ile konferans
+	</string>
+	<string name="inventory_item_offered-im">
+		Teklif edilen envanter öğesi:
+	</string>
+	<string name="share_alert">
+		Envanterinizden buraya öğeler sürükleyin
+	</string>
+	<string name="no_session_message">
+		(AÄ° Oturumu Mevcut DeÄŸil)
+	</string>
+	<string name="only_user_message">
+		Bu oturumdaki tek kullanıcısınız.
+	</string>
+	<string name="offline_message">
+		[NAME] çevrim dışı.
+	</string>
+	<string name="invite_message">
+		Bu sesli sohbeti kabul etmek/bağlanmak için [BUTTON NAME] düğmesine tıklayın.
+	</string>
+	<string name="muted_message">
+		Bu Sakini engellediniz. Bir ileti gönderdiğinizde engelleme otomatik olarak kaldırılır.
+	</string>
+	<string name="generic">
+		Talep gönderilirken hata oluştu, lütfen daha sonra tekrar deneyin.
+	</string>
+	<string name="generic_request_error">
+		Talep gönderilirken hata oluştu, lütfen daha sonra tekrar deneyin.
+	</string>
+	<string name="insufficient_perms_error">
+		Yeterli izne sahip deÄŸilsiniz.
+	</string>
+	<string name="session_does_not_exist_error">
+		Bu oturum artık mevcut değil.
+	</string>
+	<string name="no_ability_error">
+		Bu yeteneÄŸe sahip deÄŸilsiniz.
+	</string>
+	<string name="no_ability">
+		Bu yeteneÄŸe sahip deÄŸilsiniz.
+	</string>
+	<string name="not_a_mod_error">
+		Bir oturum moderatörü değilsiniz.
+	</string>
+	<string name="muted">
+		Bir grup moderatörü metin sohbetinizi devre dışı bıraktı.
+	</string>
+	<string name="muted_error">
+		Bir grup moderatörü metin sohbetinizi devre dışı bıraktı.
+	</string>
+	<string name="add_session_event">
+		[RECIPIENT] ile sohbet oturumuna kullanıcı eklenemiyor.
+	</string>
+	<string name="message">
+		İletiniz [RECIPIENT] ile sohbet oturumuna gönderilemedi.
+	</string>
+	<string name="message_session_event">
+		İletiniz [RECIPIENT] ile sohbet oturumuna gönderilemedi.
+	</string>
+	<string name="mute">
+		Yönetme sırasında hata oluştu.
+	</string>
+	<string name="removed">
+		Gruptan çıkarıldınız.
+	</string>
+	<string name="removed_from_group">
+		Gruptan çıkarıldınız.
+	</string>
+	<string name="close_on_no_ability">
+		Sohbet oturumunda bulunma yeteneğine artık sahip değilsiniz.
+	</string>
+	<string name="unread_chat_single">
+		[SOURCES] yeni bir şey söyledi
+	</string>
+	<string name="unread_chat_multiple">
+		[SOURCES] yeni bir şey söyledi
+	</string>
+	<string name="session_initialization_timed_out_error">
+		Oturum başlatılması zaman aşımına uğradı.
+	</string>
+	<string name="Home position set.">
+		Ana konum ayarlandı.
+	</string>
+	<string name="voice_morphing_url">
+		http://secondlife.com/landing/voicemorphing
+	</string>
+	<string name="paid_you_ldollars">
+		[NAME] size [REASON] L$[AMOUNT] ödedi.
+	</string>
+	<string name="paid_you_ldollars_no_reason">
+		[NAME] size L$[AMOUNT] ödedi.
+	</string>
+	<string name="you_paid_ldollars">
+		[NAME]&apos;e [REASON] L$[AMOUNT]  ödediniz.
+	</string>
+	<string name="you_paid_ldollars_no_info">
+		L$[AMOUNT] ödediniz.
+	</string>
+	<string name="you_paid_ldollars_no_reason">
+		[NAME]&apos;e L$[AMOUNT] ödediniz.
+	</string>
+	<string name="you_paid_ldollars_no_name">
+		[REASON] L$[AMOUNT] ödediniz.
+	</string>
+	<string name="you_paid_failure_ldollars">
+		[REASON] [NAME]&apos;e L$[AMOUNT] ödeyemediniz.
+	</string>
+	<string name="you_paid_failure_ldollars_no_info">
+		L$[AMOUNT] ödeyemediniz.
+	</string>
+	<string name="you_paid_failure_ldollars_no_reason">
+		[NAME]&apos;e L$[AMOUNT] ödeyemediniz.
+	</string>
+	<string name="you_paid_failure_ldollars_no_name">
+		[REASON] L$[AMOUNT] ödeyemediniz.
+	</string>
+	<string name="for item">
+		[ITEM] için.
+	</string>
+	<string name="for a parcel of land">
+		bir arazi parseli için.
+	</string>
+	<string name="for a land access pass">
+		bir arazi erişim hakkı için
+	</string>
+	<string name="for deeding land">
+		arazi devretmek için
+	</string>
+	<string name="to create a group">
+		bir grup oluşturmak için
+	</string>
+	<string name="to join a group">
+		bir grupa katılmak için
+	</string>
+	<string name="to upload">
+		karşıya yüklemek için
+	</string>
+	<string name="to publish a classified ad">
+		bir ilan yayınlamak için
+	</string>
+	<string name="giving">
+		L$ [AMOUNT] veriliyor
+	</string>
+	<string name="uploading_costs">
+		Karşıya yüklemenin maliyeti: L$ [AMOUNT]
+	</string>
+	<string name="this_costs">
+		Bunun maliyeti: L$ [AMOUNT]
+	</string>
+	<string name="buying_selected_land">
+		L$ [AMOUNT] karşılığında seçilen arazi satın alınıyor
+	</string>
+	<string name="this_object_costs">
+		Bu nesnenin maliyeti: L$ [AMOUNT]
+	</string>
+	<string name="group_role_everyone">
+		Herkes
+	</string>
+	<string name="group_role_officers">
+		Yetkililer
+	</string>
+	<string name="group_role_owners">
+		Sahipler
+	</string>
+	<string name="group_member_status_online">
+		Çevrimiçi
+	</string>
+	<string name="uploading_abuse_report">
+		Karşıya Yükleniyor...
+  
+Kötüye Kullanımı Bildirme
+	</string>
+	<string name="New Shape">
+		Yeni Åžekil
+	</string>
+	<string name="New Skin">
+		Yeni Dış Katman
+	</string>
+	<string name="New Hair">
+		Yeni Saç
+	</string>
+	<string name="New Eyes">
+		Yeni Gözler
+	</string>
+	<string name="New Shirt">
+		Yeni Gömlek
+	</string>
+	<string name="New Pants">
+		Yeni Pantolon
+	</string>
+	<string name="New Shoes">
+		Yeni Ayakkabılar
+	</string>
+	<string name="New Socks">
+		Yeni Çoraplar
+	</string>
+	<string name="New Jacket">
+		Yeni Ceket
+	</string>
+	<string name="New Gloves">
+		Yeni Eldivenler
+	</string>
+	<string name="New Undershirt">
+		Yeni Fanila
+	</string>
+	<string name="New Underpants">
+		Yeni Külot
+	</string>
+	<string name="New Skirt">
+		Yeni Etek
+	</string>
+	<string name="New Alpha">
+		Yeni Alfa
+	</string>
+	<string name="New Tattoo">
+		Yeni Dövme
+	</string>
+	<string name="New Physics">
+		Yeni Fizik
+	</string>
+	<string name="Invalid Wearable">
+		Geçersiz Giyilebilir
+	</string>
+	<string name="New Gesture">
+		Yeni Mimik
+	</string>
+	<string name="New Script">
+		Yeni Komut Dosyası
+	</string>
+	<string name="New Note">
+		Yeni Not
+	</string>
+	<string name="New Folder">
+		Yeni Klasör
+	</string>
+	<string name="Contents">
+		İçerik
+	</string>
+	<string name="Gesture">
+		Mimik
+	</string>
+	<string name="Male Gestures">
+		Erkek Mimikleri
+	</string>
+	<string name="Female Gestures">
+		Kadın Mimikleri
+	</string>
+	<string name="Other Gestures">
+		DiÄŸer Mimikler
+	</string>
+	<string name="Speech Gestures">
+		KonuÅŸma Mimikleri
+	</string>
+	<string name="Common Gestures">
+		Favori Mimikler
+	</string>
+	<string name="Male - Excuse me">
+		Erkek - Afedersiniz
+	</string>
+	<string name="Male - Get lost">
+		Erkek - Ä°ÅŸine bak
+	</string>
+	<string name="Male - Blow kiss">
+		Erkek - Öpücük gönderme
+	</string>
+	<string name="Male - Boo">
+		Erkek - Yuh çekme
+	</string>
+	<string name="Male - Bored">
+		Erkek - Canı sıkılmış
+	</string>
+	<string name="Male - Hey">
+		Erkek - Hey
+	</string>
+	<string name="Male - Laugh">
+		Erkek - Gülme
+	</string>
+	<string name="Male - Repulsed">
+		Erkek - TiksinmiÅŸ
+	</string>
+	<string name="Male - Shrug">
+		Erkek - Omuz Silkme
+	</string>
+	<string name="Male - Stick tougue out">
+		Erkek - Dil çıkarma
+	</string>
+	<string name="Male - Wow">
+		Erkek - Vay be
+	</string>
+	<string name="Female - Chuckle">
+		Kadın - Kıkırdama
+	</string>
+	<string name="Female - Cry">
+		Kadın - Ağlama
+	</string>
+	<string name="Female - Embarrassed">
+		Kadın - Utanmış
+	</string>
+	<string name="Female - Excuse me">
+		Kadın - Afedersiniz
+	</string>
+	<string name="Female - Get lost">
+		Kadın - İşine bak
+	</string>
+	<string name="Female - Blow kiss">
+		Kadın - Öpücük gönderme
+	</string>
+	<string name="Female - Boo">
+		Kadın - Yuh çekme
+	</string>
+	<string name="Female - Bored">
+		Kadın - Canı sıkılmış
+	</string>
+	<string name="Female - Hey">
+		Kadın - Hey
+	</string>
+	<string name="Female - Hey baby">
+		Kadın - Hey bebek
+	</string>
+	<string name="Female - Laugh">
+		Kadın - Gülme
+	</string>
+	<string name="Female - Looking good">
+		Kadın - Yakışıklı
+	</string>
+	<string name="Female - Over here">
+		Kadın - Buraya baksana
+	</string>
+	<string name="Female - Please">
+		Kadın - Lütfen
+	</string>
+	<string name="Female - Repulsed">
+		Kadın - Tiksinmiş
+	</string>
+	<string name="Female - Shrug">
+		Kadın - Omuz Silkme
+	</string>
+	<string name="Female - Stick tougue out">
+		Kadın - Dil çıkarma
+	</string>
+	<string name="Female - Wow">
+		Kadın - Vay be
+	</string>
+	<string name="/bow">
+		/selamlama
+	</string>
+	<string name="/clap">
+		/alkış
+	</string>
+	<string name="/count">
+		/sayım
+	</string>
+	<string name="/extinguish">
+		/söndürme
+	</string>
+	<string name="/kmb">
+		/hib
+	</string>
+	<string name="/muscle">
+		/kas
+	</string>
+	<string name="/no">
+		/hayır
+	</string>
+	<string name="/no!">
+		/hayır!
+	</string>
+	<string name="/paper">
+		/kağıt
+	</string>
+	<string name="/pointme">
+		/beni göster
+	</string>
+	<string name="/pointyou">
+		/seni göster
+	</string>
+	<string name="/rock">
+		/kaya
+	</string>
+	<string name="/scissor">
+		/makas
+	</string>
+	<string name="/smoke">
+		/duman
+	</string>
+	<string name="/stretch">
+		/uzatma
+	</string>
+	<string name="/whistle">
+		/ıslık
+	</string>
+	<string name="/yes">
+		/evet
+	</string>
+	<string name="/yes!">
+		/evet!
+	</string>
+	<string name="afk">
+		kbd
+	</string>
+	<string name="dance1">
+		dans1
+	</string>
+	<string name="dance2">
+		dans2
+	</string>
+	<string name="dance3">
+		dans3
+	</string>
+	<string name="dance4">
+		dans4
+	</string>
+	<string name="dance5">
+		dans5
+	</string>
+	<string name="dance6">
+		dans6
+	</string>
+	<string name="dance7">
+		dans7
+	</string>
+	<string name="dance8">
+		dans8
+	</string>
+	<string name="AvatarBirthDateFormat">
+		[mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt]
+	</string>
+	<string name="DefaultMimeType">
+		hiçbiri/hiçbiri
+	</string>
+	<string name="texture_load_dimensions_error">
+		[WIDTH]*[HEIGHT] çözünürlüğünden büyük görüntüler yüklenemez
+	</string>
+	<string name="words_separator" value=","/>
+	<string name="server_is_down">
+		Tüm çabalarımıza rağmen beklenmeyen bir hata meydana geldi.
+
+	Hizmetle ilişkili bilinen bir sorun olup olmadığını görmek için lütfen status.secondlifegrid.net adresine bakın.  
+        Sorun yaşamaya devam ederseniz lütfen ağınızın ve güvenlik duvarınızın ayarlarına bakın.
+	</string>
+	<string name="dateTimeWeekdaysNames">
+		Pazar:Pazartesi:Salı:Çarşamba:Perşembe:Cuma:Cumartesi
+	</string>
+	<string name="dateTimeWeekdaysShortNames">
+		Paz:Pzt:Sal:Çar:Per:Cum:Cmt
+	</string>
+	<string name="dateTimeMonthNames">
+		Ocak:Şubat:Mart:Nisan:Mayıs:Haziran:Temmuz:Ağustos:Eylül:Ekim:Kasım:Aralık
+	</string>
+	<string name="dateTimeMonthShortNames">
+		Oca:Åžub:Mar:Nis:May:Haz:Tem:AÄŸu:Eyl:Eki:Kas:Ara
+	</string>
+	<string name="dateTimeDayFormat">
+		[MDAY]
+	</string>
+	<string name="dateTimeAM">
+		ÖÖ
+	</string>
+	<string name="dateTimePM">
+		ÖS
+	</string>
+	<string name="LocalEstimateUSD">
+		US$ [AMOUNT]
+	</string>
+	<string name="Membership">
+		Ãœyelik
+	</string>
+	<string name="Roles">
+		Roller
+	</string>
+	<string name="Group Identity">
+		Grup KimliÄŸi
+	</string>
+	<string name="Parcel Management">
+		Parsel Yönetimi
+	</string>
+	<string name="Parcel Identity">
+		Parsel KimliÄŸi
+	</string>
+	<string name="Parcel Settings">
+		Parsel Ayarları
+	</string>
+	<string name="Parcel Powers">
+		Parsel Güçleri
+	</string>
+	<string name="Parcel Access">
+		Parsel EriÅŸimi
+	</string>
+	<string name="Parcel Content">
+		Parsel İçeriği
+	</string>
+	<string name="Object Management">
+		Nesne Yönetimi
+	</string>
+	<string name="Accounting">
+		Muhasebe
+	</string>
+	<string name="Notices">
+		Bildirimler
+	</string>
+	<string name="Chat">
+		Sohbet
+	</string>
+	<string name="DeleteItems">
+		Seçili öğeler silinsin mi?
+	</string>
+	<string name="DeleteItem">
+		Seçili öğe silinsin mi?
+	</string>
+	<string name="EmptyOutfitText">
+		Bu dış görünümde herhangi bir öğe yok
+	</string>
+	<string name="ExternalEditorNotSet">
+		ExternalEditor ayarını kullanarak bir düzenleyici seçin.
+	</string>
+	<string name="ExternalEditorNotFound">
+		Belirttiğiniz harici düzenleyici bulunamadı.
+Düzenleyici yolunu çift tırnakla çevrelemeyi deneyin.
+(örn. &quot;/yolum/duzenleyici&quot; &quot;%s&quot;)
+	</string>
+	<string name="ExternalEditorCommandParseError">
+		Harici düzenleyici komutu ayrıştırılırken hata oluştu.
+	</string>
+	<string name="ExternalEditorFailedToRun">
+		Harici düzenleyici çalışmadı.
+	</string>
+	<string name="TranslationFailed">
+		Çeviri başarılamadı: [REASON]
+	</string>
+	<string name="TranslationResponseParseError">
+		Çeviri yanıtı ayrıştırılırken hata meydana geldi.
+	</string>
+	<string name="Esc">
+		Esc
+	</string>
+	<string name="Space">
+		BoÅŸluk
+	</string>
+	<string name="Enter">
+		Enter
+	</string>
+	<string name="Tab">
+		Sekme
+	</string>
+	<string name="Ins">
+		Ins
+	</string>
+	<string name="Del">
+		Del
+	</string>
+	<string name="Backsp">
+		Geri tuÅŸu
+	</string>
+	<string name="Shift">
+		Shift
+	</string>
+	<string name="Ctrl">
+		Ctrl
+	</string>
+	<string name="Alt">
+		Alt
+	</string>
+	<string name="CapsLock">
+		CapsLock
+	</string>
+	<string name="Left">
+		Sol
+	</string>
+	<string name="Right">
+		SaÄŸ
+	</string>
+	<string name="Up">
+		Yukarı
+	</string>
+	<string name="Down">
+		Aşağı
+	</string>
+	<string name="Home">
+		Home
+	</string>
+	<string name="End">
+		End
+	</string>
+	<string name="PgUp">
+		PgUp
+	</string>
+	<string name="PgDn">
+		PgDn
+	</string>
+	<string name="F1">
+		F1
+	</string>
+	<string name="F2">
+		F2
+	</string>
+	<string name="F3">
+		F3
+	</string>
+	<string name="F4">
+		F4
+	</string>
+	<string name="F5">
+		F5
+	</string>
+	<string name="F6">
+		F6
+	</string>
+	<string name="F7">
+		F7
+	</string>
+	<string name="F8">
+		F8
+	</string>
+	<string name="F9">
+		F9
+	</string>
+	<string name="F10">
+		F10
+	</string>
+	<string name="F11">
+		F11
+	</string>
+	<string name="F12">
+		F12
+	</string>
+	<string name="Add">
+		Ekle
+	</string>
+	<string name="Subtract">
+		Çıkar
+	</string>
+	<string name="Multiply">
+		Çarp
+	</string>
+	<string name="Divide">
+		Böl
+	</string>
+	<string name="PAD_DIVIDE">
+		PAD_DIVIDE
+	</string>
+	<string name="PAD_LEFT">
+		PAD_LEFT
+	</string>
+	<string name="PAD_RIGHT">
+		PAD_RIGHT
+	</string>
+	<string name="PAD_DOWN">
+		PAD_DOWN
+	</string>
+	<string name="PAD_UP">
+		PAD_UP
+	</string>
+	<string name="PAD_HOME">
+		PAD_HOME
+	</string>
+	<string name="PAD_END">
+		PAD_END
+	</string>
+	<string name="PAD_PGUP">
+		PAD_PGUP
+	</string>
+	<string name="PAD_PGDN">
+		PAD_PGDN
+	</string>
+	<string name="PAD_CENTER">
+		PAD_CENTER
+	</string>
+	<string name="PAD_INS">
+		PAD_INS
+	</string>
+	<string name="PAD_DEL">
+		PAD_DEL
+	</string>
+	<string name="PAD_Enter">
+		PAD_Enter
+	</string>
+	<string name="PAD_BUTTON0">
+		PAD_BUTTON0
+	</string>
+	<string name="PAD_BUTTON1">
+		PAD_BUTTON1
+	</string>
+	<string name="PAD_BUTTON2">
+		PAD_BUTTON2
+	</string>
+	<string name="PAD_BUTTON3">
+		PAD_BUTTON3
+	</string>
+	<string name="PAD_BUTTON4">
+		PAD_BUTTON4
+	</string>
+	<string name="PAD_BUTTON5">
+		PAD_BUTTON5
+	</string>
+	<string name="PAD_BUTTON6">
+		PAD_BUTTON6
+	</string>
+	<string name="PAD_BUTTON7">
+		PAD_BUTTON7
+	</string>
+	<string name="PAD_BUTTON8">
+		PAD_BUTTON8
+	</string>
+	<string name="PAD_BUTTON9">
+		PAD_BUTTON9
+	</string>
+	<string name="PAD_BUTTON10">
+		PAD_BUTTON10
+	</string>
+	<string name="PAD_BUTTON11">
+		PAD_BUTTON11
+	</string>
+	<string name="PAD_BUTTON12">
+		PAD_BUTTON12
+	</string>
+	<string name="PAD_BUTTON13">
+		PAD_BUTTON13
+	</string>
+	<string name="PAD_BUTTON14">
+		PAD_BUTTON14
+	</string>
+	<string name="PAD_BUTTON15">
+		PAD_BUTTON15
+	</string>
+	<string name="-">
+		-
+	</string>
+	<string name="=">
+		=
+	</string>
+	<string name="`">
+		`
+	</string>
+	<string name=";">
+		;
+	</string>
+	<string name="[">
+		[
+	</string>
+	<string name="]">
+		]
+	</string>
+	<string name="\">
+		\
+	</string>
+	<string name="0">
+		0
+	</string>
+	<string name="1">
+		1
+	</string>
+	<string name="2">
+		2
+	</string>
+	<string name="3">
+		3
+	</string>
+	<string name="4">
+		4
+	</string>
+	<string name="5">
+		5
+	</string>
+	<string name="6">
+		6
+	</string>
+	<string name="7">
+		7
+	</string>
+	<string name="8">
+		8
+	</string>
+	<string name="9">
+		9
+	</string>
+	<string name="A">
+		A
+	</string>
+	<string name="B">
+		B
+	</string>
+	<string name="C">
+		C
+	</string>
+	<string name="D">
+		D
+	</string>
+	<string name="E">
+		E
+	</string>
+	<string name="F">
+		F
+	</string>
+	<string name="G">
+		G
+	</string>
+	<string name="H">
+		H
+	</string>
+	<string name="I">
+		I
+	</string>
+	<string name="J">
+		J
+	</string>
+	<string name="K">
+		K
+	</string>
+	<string name="L">
+		L
+	</string>
+	<string name="M">
+		M
+	</string>
+	<string name="N">
+		N
+	</string>
+	<string name="O">
+		O
+	</string>
+	<string name="P">
+		P
+	</string>
+	<string name="Q">
+		Q
+	</string>
+	<string name="R">
+		R
+	</string>
+	<string name="S">
+		S
+	</string>
+	<string name="T">
+		T
+	</string>
+	<string name="U">
+		U
+	</string>
+	<string name="V">
+		V
+	</string>
+	<string name="W">
+		W
+	</string>
+	<string name="X">
+		X
+	</string>
+	<string name="Y">
+		Y
+	</string>
+	<string name="Z">
+		Z
+	</string>
+	<string name="BeaconParticle">
+		Parçacık işaretleri gösteriliyor (mavi)
+	</string>
+	<string name="BeaconPhysical">
+		Fiziksel nesne işaretleri gösteriliyor (yeşil)
+	</string>
+	<string name="BeaconScripted">
+		Komut dosyalı nesne işaretleri gösteriliyor (kırmızı)
+	</string>
+	<string name="BeaconScriptedTouch">
+		Dokunma işlevli komut dosyalı nesne işaretleri gösteriliyor (kırmızı)
+	</string>
+	<string name="BeaconSound">
+		Ses işaretleri gösteriliyor (sarı)
+	</string>
+	<string name="BeaconMedia">
+		Ortam işaretleri gösteriliyor (beyaz)
+	</string>
+	<string name="ParticleHiding">
+		Parçacıklar Gizleniyor
+	</string>
+	<string name="Command_AboutLand_Label">
+		Arazi hakkında
+	</string>
+	<string name="Command_Appearance_Label">
+		Görünüm
+	</string>
+	<string name="Command_Avatar_Label">
+		Avatar
+	</string>
+	<string name="Command_Build_Label">
+		Ä°nÅŸa Et
+	</string>
+	<string name="Command_Chat_Label">
+		Sohbet
+	</string>
+	<string name="Command_Compass_Label">
+		Pusula
+	</string>
+	<string name="Command_Destinations_Label">
+		Hedef Konum
+	</string>
+	<string name="Command_Gestures_Label">
+		Mimikler
+	</string>
+	<string name="Command_HowTo_Label">
+		Nasıl yapılır
+	</string>
+	<string name="Command_Inventory_Label">
+		Envanter
+	</string>
+	<string name="Command_Map_Label">
+		Harita
+	</string>
+	<string name="Command_Marketplace_Label">
+		Pazaryeri
+	</string>
+	<string name="Command_MiniMap_Label">
+		Mini-harita
+	</string>
+	<string name="Command_Move_Label">
+		Yürü / koş / uç
+	</string>
+	<string name="Command_People_Label">
+		KiÅŸiler
+	</string>
+	<string name="Command_Picks_Label">
+		Seçmeler
+	</string>
+	<string name="Command_Places_Label">
+		Yerler
+	</string>
+	<string name="Command_Preferences_Label">
+		Tercihler
+	</string>
+	<string name="Command_Profile_Label">
+		Profil
+	</string>
+	<string name="Command_Search_Label">
+		Ara
+	</string>
+	<string name="Command_Snapshot_Label">
+		Anlık görüntü
+	</string>
+	<string name="Command_Speak_Label">
+		KonuÅŸ
+	</string>
+	<string name="Command_View_Label">
+		Kamera denetimleri
+	</string>
+	<string name="Command_Voice_Label">
+		Ses ayarları
+	</string>
+	<string name="Command_AboutLand_Tooltip">
+		Ziyaret ettiÄŸiniz araziyle ilgili bilgi
+	</string>
+	<string name="Command_Appearance_Tooltip">
+		Avatarınızı değiştirin
+	</string>
+	<string name="Command_Avatar_Tooltip">
+		Eksiksiz bir avatar seçin
+	</string>
+	<string name="Command_Build_Tooltip">
+		Nesneler oluşturma ve yüzeyi şekillendirme
+	</string>
+	<string name="Command_Chat_Tooltip">
+		Metin kullanarak yakındaki kişilerle sohbet etmek
+	</string>
+	<string name="Command_Compass_Tooltip">
+		Pusula
+	</string>
+	<string name="Command_Destinations_Tooltip">
+		Ä°lgilendiÄŸiniz hedef konumlar
+	</string>
+	<string name="Command_Gestures_Tooltip">
+		Avatarınız için mimikler
+	</string>
+	<string name="Command_HowTo_Tooltip">
+		Genel görevleri nasıl yapacağınız
+	</string>
+	<string name="Command_Inventory_Tooltip">
+		Eşyalarınızı görüntüleyin ve kullanın
+	</string>
+	<string name="Command_Map_Tooltip">
+		Dünya haritası
+	</string>
+	<string name="Command_Marketplace_Tooltip">
+		Alışveriş yap
+	</string>
+	<string name="Command_MiniMap_Tooltip">
+		Yakındaki kişileri göster
+	</string>
+	<string name="Command_Move_Tooltip">
+		Avatarınızı hareket ettirmek
+	</string>
+	<string name="Command_People_Tooltip">
+		Arkadaşlar, gruplar ve yakındaki kişiler
+	</string>
+	<string name="Command_Picks_Tooltip">
+		Profilinizde favori olarak gösterilecek yerler
+	</string>
+	<string name="Command_Places_Tooltip">
+		KaydettiÄŸiniz yerler
+	</string>
+	<string name="Command_Preferences_Tooltip">
+		Tercihler
+	</string>
+	<string name="Command_Profile_Tooltip">
+		Profilinizi düzenleyin veya görüntüleyin
+	</string>
+	<string name="Command_Search_Tooltip">
+		Yerler, etkinlikler ve kiÅŸiler bulmak
+	</string>
+	<string name="Command_Snapshot_Tooltip">
+		Resim çekin
+	</string>
+	<string name="Command_Speak_Tooltip">
+		Mikrofonunuzu kullanarak yakındaki kişilerle konuşun
+	</string>
+	<string name="Command_View_Tooltip">
+		Kamera açısını değiştirmek
+	</string>
+	<string name="Command_Voice_Tooltip">
+		Aramalar ve 	SL dünyası içinde size yakın kişiler için ses denetimleri
+	</string>
+	<string name="Toolbar_Bottom_Tooltip">
+		şu anda alt araç çubuğunuzda
+	</string>
+	<string name="Toolbar_Left_Tooltip">
+		şu anda sol araç çubuğunuzda
+	</string>
+	<string name="Toolbar_Right_Tooltip">
+		şu anda sağ araç çubuğunuzda
+	</string>
+	<string name="Retain%">
+		Koru %
+	</string>
+	<string name="Detail">
+		Ayrıntı
+	</string>
+	<string name="Better Detail">
+		Daha İyi Ayrıntı
+	</string>
+	<string name="Surface">
+		Yüzey
+	</string>
+	<string name="Solid">
+		Katı
+	</string>
+	<string name="Wrap">
+		Sar
+	</string>
+	<string name="Preview">
+		Önizleme
+	</string>
+	<string name="Normal">
+		Normal
+	</string>
+	<string name="snapshot_quality_very_low">
+		Çok Düşük
+	</string>
+	<string name="snapshot_quality_low">
+		Düşük
+	</string>
+	<string name="snapshot_quality_medium">
+		Orta
+	</string>
+	<string name="snapshot_quality_high">
+		Yüksek
+	</string>
+	<string name="snapshot_quality_very_high">
+		Çok Yüksek
+	</string>
+</strings>
diff --git a/indra/newview/skins/default/xui/tr/teleport_strings.xml b/indra/newview/skins/default/xui/tr/teleport_strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..62aaaf671fb1460b205fbb758d82a77e03bc83d2
--- /dev/null
+++ b/indra/newview/skins/default/xui/tr/teleport_strings.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<teleport_messages>
+	<message_set name="errors">
+		<message name="invalid_tport">
+			Işınlama talebiniz işlenirken bir sorunla karşılaşıldı. Işınlanabilmek için yeniden oturum açmanız gerekebilir.
+Bu mesajı almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
+		</message>
+		<message name="invalid_region_handoff">
+			Bölge değiştirme talebiniz işlenirken sorunla karşılaşıldı. Bölge geçebilmek için yeniden oturum açmanız gerekebilir.
+Bu mesajı almaya devam ederseniz, lütfen [SUPPORT_SITE] bölümüne başvurun.
+		</message>
+		<message name="blocked_tport">
+			Üzgünüz, ışınlama şu anda engellenmiş durumda. Bir dakika sonra tekrar deneyin.
+Hala ışınlanamıyorsanız, sorunu çözmek için lütfen çıkış yapıp oturumu tekrar açın.
+		</message>
+		<message name="nolandmark_tport">
+			Üzgünüz fakat sistem yer imi hedef konumunu bulamadı.
+		</message>
+		<message name="timeout_tport">
+			Üzgünüz fakat sistem ışınlama bağlantısını tamamlayamadı.
+Bir dakika sonra tekrar deneyin.
+		</message>
+		<message name="NoHelpIslandTP">
+			Karşılama Ada&apos;sına geri ışınlanamazsınız.
+Öğreticiyi tekrarlamak için &apos;Karşılama Ada&apos;sı Kamusal Alanı&apos;na gidin.
+		</message>
+		<message name="noaccess_tport">
+			Üzgünüz, bu ışınlanma hedef konumuna erişim hakkına sahip değilsiniz.
+		</message>
+		<message name="missing_attach_tport">
+			Aksesuarlarınız henüz ulaşmadı. Işınlanmayı tekrar denemeden önce bir kaç saniye bekleyin veya çıkış yapıp oturumu tekrar açın.
+		</message>
+		<message name="too_many_uploads_tport">
+			Bu bölgedeki varlık sırası şu anda yoğunluktan dolayı tıkalı olduğu için ışınlanma talebiniz zamanında gerçekleştirilemeyecek. Lütfen bir kaç dakika sonra tekrar deneyin veya yoğunluğu daha az olan bir bölge seçin.
+		</message>
+		<message name="expired_tport">
+			Üzgünüz fakat sistem ışınlanma talebinizi zamanında tamamlayamadı. Lütfen bir kaç dakika sonra tekrar deneyin.
+		</message>
+		<message name="expired_region_handoff">
+			Üzgünüz fakat sistem bölge değiştirme talebinizi zamanında tamamlayamadı. Lütfen bir kaç dakika sonra tekrar deneyin.
+		</message>
+		<message name="no_host">
+			Işınlanma hedef konumu bulunamıyor. Hedef konumu geçici bir süre için kullanılamıyor ya da artık mevcut değil. Lütfen bir kaç dakika sonra tekrar deneyin.
+		</message>
+		<message name="no_inventory_host">
+			Envanter sistemi şu anda kullanılamıyor.
+		</message>
+	</message_set>
+	<message_set name="progress">
+		<message name="sending_dest">
+			Hedef konuma gönderiliyor.
+		</message>
+		<message name="redirecting">
+			Farklı konuma tekrar yönlendiriliyor.
+		</message>
+		<message name="relaying">
+			Hedefe aktarılıyor.
+		</message>
+		<message name="sending_home">
+			Ana konum talebi gönderiliyor.
+		</message>
+		<message name="sending_landmark">
+			Yer imi konumu talebi gönderiliyor.
+		</message>
+		<message name="completing">
+			Işınlanma tamamlanıyor.
+		</message>
+		<message name="completed_from">
+			[T_SLURL] konumundan ışınlanma tamamlandı.
+		</message>
+		<message name="resolving">
+			Hedef konum çözümleniyor.
+		</message>
+		<message name="contacting">
+			Yeni bölgeye bağlanılıyor.
+		</message>
+		<message name="arriving">
+			Konuma varılıyor...
+		</message>
+		<message name="requesting">
+			Işınlanma talep ediliyor...
+		</message>
+	</message_set>
+</teleport_messages>
diff --git a/indra/newview/skins/default/xui/zh/floater_about.xml b/indra/newview/skins/default/xui/zh/floater_about.xml
index 0ac85d399e431eadb3df73d6c41bfeefcc21056d..7e19c124a18561dda3312da4cbfc4ffc31547cc2 100644
--- a/indra/newview/skins/default/xui/zh/floater_about.xml
+++ b/indra/newview/skins/default/xui/zh/floater_about.xml
@@ -10,7 +10,7 @@
 	<floater.string name="AboutPosition">
 		You are at [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] located at &lt;nolink&gt;[HOSTNAME]&lt;/nolink&gt; ([HOSTIP])
 [SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
+[SERVER_RELEASE_NOTES_URL]
 	</floater.string>
 	<floater.string name="AboutSystem">
 		CPU:[CPU]
diff --git a/indra/newview/skins/default/xui/zh/floater_about_land.xml b/indra/newview/skins/default/xui/zh/floater_about_land.xml
index e59a23fda0fec2d6ea73bd85721ee6bbc65e502f..2568d492f080540715d293a02cd22555bdb00561 100644
--- a/indra/newview/skins/default/xui/zh/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/zh/floater_about_land.xml
@@ -90,19 +90,19 @@
 				群組:
 			</text>
 			<button label="設定" name="Set..."/>
-			<check_box label="Allow Deed to Group" name="check deed" tool_tip="A group officer can deed this land to the group, so it will be supported by the group&apos;s land allocation."/>
-			<button label="Deed" name="Deed..." tool_tip="You may only deed land if you are an officer in the selected group."/>
+			<check_box label="允許讓渡給群組" name="check deed" tool_tip="A group officer can deed this land to the group, so it will be supported by the group&apos;s land allocation."/>
+			<button label="讓渡" name="Deed..." tool_tip="You may only deed land if you are an officer in the selected group."/>
 			<check_box label="Owner Makes Contribution With Deed" name="check contrib" tool_tip="When the land is deeded to the group, the former owner contributes enough land allocation to support it."/>
 			<text name="For Sale:">
 				出售:
 			</text>
 			<text name="Not for sale.">
-				Not for sale
+				不出售
 			</text>
 			<text name="For Sale: Price L$[PRICE].">
 				Price: L$[PRICE] (L$[PRICE_PER_SQM]/m²)
 			</text>
-			<button label="Sell Land" name="Sell Land..."/>
+			<button label="出售土地" name="Sell Land..."/>
 			<text name="For sale to">
 				出售給:[BUYER]
 			</text>
@@ -134,7 +134,7 @@
 			<button label="購買土地" name="Buy Land..."/>
 			<button label="腳本資訊" name="Scripts..."/>
 			<button label="為群組購買" name="Buy For Group..."/>
-			<button label="購買通行權" name="Buy Pass..." tool_tip="A pass gives you temporary access to this land."/>
+			<button label="購買通行權" name="Buy Pass..." tool_tip="通行權允許你暫時可出入這塊土地。"/>
 			<button label="放棄土地" name="Abandon Land..."/>
 			<button label="Reclaim Land" name="Reclaim Land..."/>
 			<button label="Linden Sale" name="Linden Sale..." tool_tip="Land must be owned, set content, and not already for auction."/>
@@ -212,31 +212,31 @@
 				Region Object Bonus Factor: [BONUS]
 			</text>
 			<text name="Simulator primitive usage:">
-				Primitive usage:
+				幾何元件使用:
 			</text>
 			<text name="objects_available">
-				[COUNT] out of [MAX] ([AVAILABLE] available)
+				使用 [MAX] 中的 [COUNT] (剩餘 [AVAILABLE] 可用)
 			</text>
 			<text name="Primitives parcel supports:">
-				Prims parcel supports:
+				地段所提供的幾何元件數:
 			</text>
 			<text name="object_contrib_text">
 				[COUNT]
 			</text>
 			<text name="Primitives on parcel:">
-				Prims on parcel:
+				地段上的幾何元件數:
 			</text>
 			<text name="total_objects_text">
 				[COUNT]
 			</text>
 			<text name="Owned by parcel owner:">
-				Owned by parcel owner:
+				地段擁有者所擁有:
 			</text>
 			<text name="owner_objects_text">
 				[COUNT]
 			</text>
 			<button label="顯示" label_selected="顯示" name="ShowOwner"/>
-			<button label="退回" name="ReturnOwner..." tool_tip="Return objects to their owners."/>
+			<button label="退回" name="ReturnOwner..." tool_tip="退回物件給它們的擁有者。"/>
 			<text name="Set to group:">
 				設定群組:
 			</text>
@@ -244,15 +244,15 @@
 				[COUNT]
 			</text>
 			<button label="顯示" label_selected="顯示" name="ShowGroup"/>
-			<button label="退回" name="ReturnGroup..." tool_tip="Return objects to their owners."/>
+			<button label="退回" name="ReturnGroup..." tool_tip="退回物件給它們的擁有者。"/>
 			<text name="Owned by others:">
-				Owned by others:
+				其他人所擁有:
 			</text>
 			<text name="other_objects_text">
 				[COUNT]
 			</text>
 			<button label="顯示" label_selected="顯示" name="ShowOther"/>
-			<button label="退回" name="ReturnOther..." tool_tip="Return objects to their owners."/>
+			<button label="退回" name="ReturnOther..." tool_tip="退回物件給它們的擁有者。"/>
 			<text name="Selected / sat upon:">
 				Selected / sat upon:
 			</text>
@@ -263,9 +263,9 @@
 				Auto return other Residents&apos; objects (minutes, 0 for off):
 			</text>
 			<text name="Object Owners:">
-				Object Owners:
+				物件擁有者:
 			</text>
-			<button name="Refresh List" tool_tip="Refresh Object List"/>
+			<button name="Refresh List" tool_tip="刷新物件清單"/>
 			<button label="退回物件" name="Return objects..."/>
 			<name_list name="owner list">
 				<name_list.columns label="Type" name="type"/>
@@ -276,14 +276,14 @@
 		</panel>
 		<panel label="選項" name="land_options_panel">
 			<panel.string name="search_enabled_tooltip">
-				Let people see this parcel in search results
+				讓其他人可以在搜尋結果中看到這塊地段
 			</panel.string>
 			<panel.string name="search_disabled_small_tooltip">
 				This option is disabled because this parcel&apos;s area is 128 m² or smaller.
 Only large parcels can be listed in search.
 			</panel.string>
 			<panel.string name="search_disabled_permissions_tooltip">
-				This option is disabled because you cannot modify this parcel&apos;s options.
+				這個選項已關閉因為你不能修改這個地段的選項。
 			</panel.string>
 			<panel.string name="mature_check_mature">
 				適度成人內容
@@ -331,35 +331,35 @@ Only large parcels can be listed in search.
 			</text>
 			<check_box label="安全(無傷害)" name="check safe" tool_tip="若勾選則設應土地為安全的,傷害性的戰鬥將被關閉。清除勾選後才能進行傷害性的戰鬥。"/>
 			<check_box label="禁止推撞" name="PushRestrictCheck" tool_tip="防止使用腳本推撞。勾選這個選項將可以有效防止你土地上的破壞行為。"/>
-			<check_box label="將地點刊登顯示在搜尋中(L$30 / 每週)" name="ShowDirectoryCheck" tool_tip="Let people see this parcel in search results"/>
+			<check_box label="將地點刊登顯示在搜尋中(L$30 / 每週)" name="ShowDirectoryCheck" tool_tip="讓其他人可以在搜尋結果中看到這塊地段"/>
 			<combo_box name="land category with adult">
 				<combo_box.item label="任何類別" name="item0"/>
 				<combo_box.item label="Linden Location" name="item1"/>
 				<combo_box.item label="完全成人" name="item2"/>
-				<combo_box.item label="Arts &amp; Culture" name="item3"/>
-				<combo_box.item label="Business" name="item4"/>
-				<combo_box.item label="Educational" name="item5"/>
-				<combo_box.item label="Gaming" name="item6"/>
+				<combo_box.item label="藝術與文化" name="item3"/>
+				<combo_box.item label="商業" name="item4"/>
+				<combo_box.item label="教育" name="item5"/>
+				<combo_box.item label="遊戲" name="item6"/>
 				<combo_box.item label="聚會所" name="item7"/>
-				<combo_box.item label="Newcomer Friendly" name="item8"/>
-				<combo_box.item label="Parks &amp; Nature" name="item9"/>
-				<combo_box.item label="Residential" name="item10"/>
-				<combo_box.item label="Shopping" name="item11"/>
+				<combo_box.item label="新手友善" name="item8"/>
+				<combo_box.item label="公園與自然" name="item9"/>
+				<combo_box.item label="住宅" name="item10"/>
+				<combo_box.item label="採購" name="item11"/>
 				<combo_box.item label="Rental" name="item13"/>
 				<combo_box.item label="Other" name="item12"/>
 			</combo_box>
 			<combo_box name="land category">
 				<combo_box.item label="任何類別" name="item0"/>
 				<combo_box.item label="Linden Location" name="item1"/>
-				<combo_box.item label="Arts &amp; Culture" name="item3"/>
-				<combo_box.item label="Business" name="item4"/>
-				<combo_box.item label="Educational" name="item5"/>
-				<combo_box.item label="Gaming" name="item6"/>
+				<combo_box.item label="藝術與文化" name="item3"/>
+				<combo_box.item label="商業" name="item4"/>
+				<combo_box.item label="教育" name="item5"/>
+				<combo_box.item label="遊戲" name="item6"/>
 				<combo_box.item label="聚會所" name="item7"/>
-				<combo_box.item label="Newcomer Friendly" name="item8"/>
-				<combo_box.item label="Parks &amp; Nature" name="item9"/>
-				<combo_box.item label="Residential" name="item10"/>
-				<combo_box.item label="Shopping" name="item11"/>
+				<combo_box.item label="新手友善" name="item8"/>
+				<combo_box.item label="公園與自然" name="item9"/>
+				<combo_box.item label="住宅" name="item10"/>
+				<combo_box.item label="採購" name="item11"/>
 				<combo_box.item label="Rental" name="item13"/>
 				<combo_box.item label="Other" name="item12"/>
 			</combo_box>
@@ -367,7 +367,7 @@ Only large parcels can be listed in search.
 			<text name="Snapshot:">
 				快照:
 			</text>
-			<texture_picker name="snapshot_ctrl" tool_tip="點擊以挑選圖片"/>
+			<texture_picker name="snapshot_ctrl" tool_tip="點擊以挑選圖像"/>
 			<text name="landing_point">
 				登陸點:[LANDING]
 			</text>
@@ -398,7 +398,7 @@ Only large parcels can be listed in search.
 			<text name="Media texture:">
 				取代材質:
 			</text>
-			<texture_picker name="media texture" tool_tip="點擊以挑選圖片"/>
+			<texture_picker name="media texture" tool_tip="點擊以挑選圖像"/>
 			<text name="replace_texture_help">
 				Objects using this texture will show the movie or web page after you click the play arrow.  Select the thumbnail to choose a different texture.
 			</text>
@@ -412,7 +412,7 @@ Only large parcels can be listed in search.
 				像素
 			</text>
 			<text name="Options:">
-				Options:
+				選項:
 			</text>
 			<check_box label="Loop" name="media_loop" tool_tip="Play media in a loop.  When the media has finished playing, it will restart from the beginning."/>
 		</panel>
@@ -442,14 +442,14 @@ Only large parcels can be listed in search.
 				One or more of these options is set at the estate level
 			</panel.string>
 			<text name="Limit access to this parcel to:">
-				Access To This Parcel
+				出入此地段
 			</text>
 			<text name="Only Allow">
 				Restrict Access to Residents verified by:
 			</text>
 			<check_box label="Payment Information on File [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Ban unidentified Residents."/>
 			<check_box label="年齡驗證 [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Ban Residents who have not verified their age. See the [SUPPORT_SITE] for more information."/>
-			<check_box label="允許出入的群組:[GROUP]" name="GroupCheck" tool_tip="Set group in the General tab."/>
+			<check_box label="允許出入的群組:[GROUP]" name="GroupCheck" tool_tip="設定群組於一般頁籤。"/>
 			<check_box label="出售通行權給:" name="PassCheck" tool_tip="允許暫時出入這個地段"/>
 			<combo_box name="pass_combo">
 				<combo_box.item label="Anyone" name="Anyone"/>
diff --git a/indra/newview/skins/default/xui/zh/floater_animation_preview.xml b/indra/newview/skins/default/xui/zh/floater_animation_preview.xml
index baf68ffce62288bc78694963a809b432ad4a515b..c5e2eac446e82dc8aa1593d831329e812c5e2788 100644
--- a/indra/newview/skins/default/xui/zh/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/zh/floater_animation_preview.xml
@@ -173,8 +173,8 @@ Maximum animation length is [MAX_LENGTH] seconds.
 	</combo_box>
 	<spinner label="淡入(秒)" name="ease_in_time" tool_tip="Amount of time (in seconds) over which animations blends in"/>
 	<spinner label="淡出(秒)" name="ease_out_time" tool_tip="Amount of time (in seconds) over which animations blends out"/>
-	<button name="play_btn" tool_tip="Play your animation"/>
-	<button name="pause_btn" tool_tip="Pause your animation"/>
+	<button name="play_btn" tool_tip="播放你的動作"/>
+	<button name="pause_btn" tool_tip="暫停你的動做"/>
 	<button name="stop_btn" tool_tip="Stop animation playback"/>
 	<text name="bad_animation_text">
 		Unable to read animation file.
diff --git a/indra/newview/skins/default/xui/zh/floater_build_options.xml b/indra/newview/skins/default/xui/zh/floater_build_options.xml
index 95211b746c35e4af9c33f95b6f1f3d5aabed9ee1..b9d3b6b8490ae7f3b656d6f749c26e7f0f638793 100644
--- a/indra/newview/skins/default/xui/zh/floater_build_options.xml
+++ b/indra/newview/skins/default/xui/zh/floater_build_options.xml
@@ -4,7 +4,7 @@
 	<spinner label="Grid Extents (meters)" name="GridDrawSize"/>
 	<check_box label="貼齊至子單位" name="GridSubUnit"/>
 	<check_box label="View cross-sections" name="GridCrossSection"/>
-	<text name="grid_opacity_label" tool_tip="Grid opacity">
-		Opacity:
+	<text name="grid_opacity_label" tool_tip="格線不透明度">
+		不透明度:
 	</text>
 </floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_bumps.xml b/indra/newview/skins/default/xui/zh/floater_bumps.xml
index 64c11af953d3cafc558dc2ea8300026a9c71b4ce..2d76a9f8313619f871cd925c60bbcdf4ec4b6569 100644
--- a/indra/newview/skins/default/xui/zh/floater_bumps.xml
+++ b/indra/newview/skins/default/xui/zh/floater_bumps.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_bumps" title="BUMPS, PUSHES &amp; HITS">
+<floater name="floater_bumps" title="碰撞、推擠與打擊">
 	<floater.string name="none_detected">
 		未偵測到
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/zh/floater_buy_currency.xml b/indra/newview/skins/default/xui/zh/floater_buy_currency.xml
index f187a1ab40fd7eafd89e299fde4c5ed240fd3515..9f6591faf9f3293eec4858242913c0687a62b601 100644
--- a/indra/newview/skins/default/xui/zh/floater_buy_currency.xml
+++ b/indra/newview/skins/default/xui/zh/floater_buy_currency.xml
@@ -46,7 +46,7 @@
 		L$ [AMT]
 	</text>
 	<text name="currency_links">
-		[http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency] | [http://www.secondlife.com/my/account/exchange_rates.php exchange rate]
+		[http://www.secondlife.com/my/account/payment_method_management.php payment method] | [http://www.secondlife.com/my/account/currency.php currency]
 	</text>
 	<text name="exchange_rate_note">
 		Re-enter amount to see the latest exchange rate.
@@ -55,7 +55,7 @@
 		Confirming this purchase only buys L$, not the object.
 	</text>
 	<text name="purchase_warning_notenough">
-		You aren&apos;t buying enough L$. Please increase the amount.
+		你並未購買足夠的林登幣,請先添加一些數量。
 	</text>
 	<button label="立即購買" name="buy_btn"/>
 	<button label="取消" name="cancel_btn"/>
diff --git a/indra/newview/skins/default/xui/zh/floater_buy_land.xml b/indra/newview/skins/default/xui/zh/floater_buy_land.xml
index c4a5d174ef1784214f7c4c9b4f866e4a03a59ebd..336d14747d6f9fa8172a481b3d675cf87275724f 100644
--- a/indra/newview/skins/default/xui/zh/floater_buy_land.xml
+++ b/indra/newview/skins/default/xui/zh/floater_buy_land.xml
@@ -26,10 +26,10 @@ Try selecting a smaller area.
 		You do not have permission to buy land for your active group.
 	</floater.string>
 	<floater.string name="parcel_not_for_sale">
-		The selected parcel is not for sale.
+		所選擇的地段不出售。.
 	</floater.string>
 	<floater.string name="group_already_owns">
-		The group already owns the parcel.
+		這個群組已擁有這個地段。
 	</floater.string>
 	<floater.string name="you_already_own">
 		你已經擁有這個地段。
@@ -62,7 +62,7 @@ Try selecting a smaller area.
 		Cannot buy now:
 	</floater.string>
 	<floater.string name="not_for_sale">
-		Not for sale:
+		不出售:
 	</floater.string>
 	<floater.string name="none_needed">
 		none needed
diff --git a/indra/newview/skins/default/xui/zh/floater_camera.xml b/indra/newview/skins/default/xui/zh/floater_camera.xml
index f4db20684c5d1c153813d199e97dbdc4674a9760..b75474340c7ac7c47d0fea9a6b980e2af762f5ed 100644
--- a/indra/newview/skins/default/xui/zh/floater_camera.xml
+++ b/indra/newview/skins/default/xui/zh/floater_camera.xml
@@ -9,15 +9,6 @@
 	<floater.string name="move_tooltip">
 		Move Camera Up and Down, Left and Right
 	</floater.string>
-	<floater.string name="camera_modes_title">
-		攝影機模式
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		環繞縮放平移
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		預設視角
-	</floater.string>
 	<floater.string name="free_mode_title">
 		視角物件
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/zh/floater_critical.xml b/indra/newview/skins/default/xui/zh/floater_critical.xml
index da357bde56af8c8a71cfa1d55d5d3173a850d143..7d08fe8af2df15ca4d51cc574b569cb085d1a295 100644
--- a/indra/newview/skins/default/xui/zh/floater_critical.xml
+++ b/indra/newview/skins/default/xui/zh/floater_critical.xml
@@ -2,7 +2,7 @@
 <floater name="modal container">
 	<button label="繼續" label_selected="繼續" name="Continue"/>
 	<text name="tos_heading">
-		Please read the following message carefully.
+		請仔細閱讀下列的訊息。
 	</text>
 	<text_editor name="tos_text">
 		TOS_TEXT
diff --git a/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml
deleted file mode 100644
index 28d2ba6ed484358fb9964167eaa8b906ec831388..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Day Cycle Floater" title="日循環編輯器">
-	<tab_container name="Day Cycle Tabs">
-		<panel label="日循環" name="Day Cycle">
-			<multi_slider initial_value="0" name="WLTimeSlider"/>
-			<multi_slider initial_value="0" name="WLDayCycleKeys"/>
-			<text name="WL12am">
-				12am
-			</text>
-			<text name="WL3am">
-				3am
-			</text>
-			<text name="WL6am">
-				6am
-			</text>
-			<text name="WL9amHash">
-				9am
-			</text>
-			<text name="WL12pmHash">
-				12pm
-			</text>
-			<text name="WL3pm">
-				3pm
-			</text>
-			<text name="WL6pm">
-				6pm
-			</text>
-			<text name="WL9pm">
-				9pm
-			</text>
-			<text name="WL12am2">
-				12am
-			</text>
-			<text name="WL12amHash">
-				|
-			</text>
-			<text name="WL3amHash">
-				I
-			</text>
-			<text name="WL6amHash">
-				|
-			</text>
-			<text name="WL9amHash2">
-				I
-			</text>
-			<text name="WL12pmHash2">
-				|
-			</text>
-			<text name="WL3pmHash">
-				I
-			</text>
-			<text name="WL6pmHash">
-				|
-			</text>
-			<text name="WL9pmHash">
-				I
-			</text>
-			<text name="WL12amHash2">
-				|
-			</text>
-			<button label="Add Key" label_selected="Add Key" name="WLAddKey"/>
-			<button label="Delete Key" label_selected="Delete Key" name="WLDeleteKey"/>
-			<text name="WLCurKeyFrameText">
-				Key Frame Settings:
-			</text>
-			<text name="WLCurKeyTimeText">
-				Key Time:
-			</text>
-			<spinner label="Hour" name="WLCurKeyHour"/>
-			<spinner label="Min" name="WLCurKeyMin"/>
-			<text name="WLCurKeyTimeText2">
-				Key Preset:
-			</text>
-			<combo_box label="Preset" name="WLKeyPresets"/>
-			<text name="DayCycleText">
-				Snap:
-			</text>
-			<combo_box label="五分鐘" name="WLSnapOptions"/>
-			<text name="DayCycleText2">
-				Length of Cycle:
-			</text>
-			<spinner label="小時" name="WLLengthOfDayHour"/>
-			<spinner label="分" name="WLLengthOfDayMin"/>
-			<spinner label="秒" name="WLLengthOfDaySec"/>
-			<text name="DayCycleText3">
-				預覽:
-			</text>
-			<button label="Play" label_selected="Play" name="WLAnimSky"/>
-			<button label="停止!" label_selected="停止" name="WLStopAnimSky"/>
-			<button label="Use Estate Time" label_selected="Go to Estate Time" name="WLUseLindenTime"/>
-			<button label="Save Test Day" label_selected="Save Test Day" name="WLSaveDayCycle"/>
-			<button label="Load Test Day" label_selected="Load Test Day" name="WLLoadDayCycle"/>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_display_name.xml b/indra/newview/skins/default/xui/zh/floater_display_name.xml
index 39abfe0b8b36093bd1df8b8064003db31d1e18d3..01b5088794fb519d26c5ea0692d4e39089e60c45 100644
--- a/indra/newview/skins/default/xui/zh/floater_display_name.xml
+++ b/indra/newview/skins/default/xui/zh/floater_display_name.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Display Name" title="CHANGE DISPLAY NAME">
+<floater name="Display Name" title="變更顯示名稱">
 	<text name="info_text">
 		The name you give your avatar is called your Display Name. You can change it once a week.
 	</text>
@@ -7,12 +7,12 @@
 		You cannot change your Display Name until: [TIME].
 	</text>
 	<text name="set_name_label">
-		New Display Name:
+		新顯示名稱:
 	</text>
 	<text name="name_confirm_label">
 		Type your new name again to confirm:
 	</text>
-	<button label="儲存" name="save_btn" tool_tip="Save your new Display Name"/>
+	<button label="儲存" name="save_btn" tool_tip="儲存你的新顯示名稱"/>
 	<button label="重設" name="reset_btn" tool_tip="Make Display Name the same as Username"/>
 	<button label="取消" name="cancel_btn"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_image_preview.xml b/indra/newview/skins/default/xui/zh/floater_image_preview.xml
index d7e9a7704c081c957d01a870b86175b971fcb666..1260601f90318e5c11ed020107839e2f074ffffe 100644
--- a/indra/newview/skins/default/xui/zh/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/zh/floater_image_preview.xml
@@ -12,14 +12,14 @@
 	<combo_box label="服裝類型" name="clothing_type_combo">
 		<item label="圖像" name="Image" value="圖像"/>
 		<item label="é ­é«®" name="Hair" value="é ­é«®"/>
-		<item label="Female Head" name="FemaleHead" value="Female Head"/>
-		<item label="Female Upper Body" name="FemaleUpperBody" value="Female Upper Body"/>
-		<item label="Female Lower Body" name="FemaleLowerBody" value="Female Lower Body"/>
-		<item label="Male Head" name="MaleHead" value="Male Head"/>
-		<item label="Male Upper Body" name="MaleUpperBody" value="Male Upper Body"/>
-		<item label="Male Lower Body" name="MaleLowerBody" value="Male Lower Body"/>
+		<item label="女性頭部" name="FemaleHead" value="女性頭部"/>
+		<item label="女性上半身" name="FemaleUpperBody" value="女性上半身"/>
+		<item label="女性下半身" name="FemaleLowerBody" value="女性下半身"/>
+		<item label="男性頭部" name="MaleHead" value="男性頭部"/>
+		<item label="男性上半身" name="MaleUpperBody" value="男性上半身"/>
+		<item label="男性下半身" name="MaleLowerBody" value="男性下半身"/>
 		<item label="裙子" name="Skirt" value="裙子"/>
-		<item label="Sculpted Prim" name="SculptedPrim" value="Sculpted Prim"/>
+		<item label="雕刻的幾何元件" name="SculptedPrim" value="雕刻的幾何元件"/>
 	</combo_box>
 	<text name="bad_image_text">
 		無法讀取圖像。
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 123cdd9f2c4cc7dfccc981d1cf729b92813ff5a7..a0f31fa11fa240f9c8267cdb28a7bc56c30bee75 100644
--- a/indra/newview/skins/default/xui/zh/floater_incoming_call.xml
+++ b/indra/newview/skins/default/xui/zh/floater_incoming_call.xml
@@ -13,10 +13,10 @@
 		通話中。
 	</floater.string>
 	<floater.string name="VoiceInviteAdHoc">
-		has joined a Voice Chat call with a conference chat.
+		已加訴入會議交談中的語音聊天。
 	</floater.string>
 	<floater.string name="VoiceInviteGroup">
-		just joined &apos;[GROUP]&apos; voice channel.
+		剛加入 &apos;[GROUP]&apos; 語音頻道。
 	</floater.string>
 	<floater.string name="VoiceInviteQuestionGroup">
 		Would you like to leave [CURRENT_CHAT] and join the call with &apos;[GROUP]&apos;?
diff --git a/indra/newview/skins/default/xui/zh/floater_inspect.xml b/indra/newview/skins/default/xui/zh/floater_inspect.xml
index 295538f797a6f22b842d2bae033aee21c29aa25b..ea3d9d0c3e7fad0e7ec7e7cfe92aeefe28b3e240 100644
--- a/indra/newview/skins/default/xui/zh/floater_inspect.xml
+++ b/indra/newview/skins/default/xui/zh/floater_inspect.xml
@@ -5,9 +5,9 @@
 	</floater.string>
 	<scroll_list name="object_list" tool_tip="Select an object from this list to highlight it in-world">
 		<scroll_list.columns label="物件名稱" name="object_name"/>
-		<scroll_list.columns label="Owner Name" name="owner_name"/>
-		<scroll_list.columns label="Creator Name" name="creator_name"/>
-		<scroll_list.columns label="Creation Date" name="creation_date"/>
+		<scroll_list.columns label="擁有者名稱" name="owner_name"/>
+		<scroll_list.columns label="創造者名稱" name="creator_name"/>
+		<scroll_list.columns label="創造日期" name="creation_date"/>
 	</scroll_list>
 	<button label="察看擁有者檔案..." name="button owner" tool_tip="See profile of the highlighted object&apos;s owner"/>
 	<button label="察看創造者檔案..." name="button creator" tool_tip="See profile of the highlighted object&apos;s original creator"/>
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
index 370ab32b9f834fd1da62da26296ad85349ccd3c9..d698edf5e5c96c533e493e13e2ddae79c15eb8ec 100644
--- a/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml
+++ b/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml
@@ -5,7 +5,7 @@
 	<check_box label="服裝" name="check_clothing"/>
 	<check_box label="姿勢" name="check_gesture"/>
 	<check_box label="地標" name="check_landmark"/>
-	<check_box label="Notecards" name="check_notecard"/>
+	<check_box label="記事卡" name="check_notecard"/>
 	<check_box label="Objects" name="check_object"/>
 	<check_box label="腳本" name="check_script"/>
 	<check_box label="Sounds" name="check_sound"/>
diff --git a/indra/newview/skins/default/xui/zh/floater_nearby_chat.xml b/indra/newview/skins/default/xui/zh/floater_nearby_chat.xml
index f0c34acb0622d0d213d54517edf5a80a73e57c2a..38a5dab523a24de49cd98dfb3f32c6c5025c59de 100644
--- a/indra/newview/skins/default/xui/zh/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/zh/floater_nearby_chat.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="nearby_chat" title="附近的聊天">
-	<check_box label="Translate chat (powered by Google)" name="translate_chat_checkbox"/>
+	<check_box label="Translate chat" name="translate_chat_checkbox"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml b/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml
index 8b15668e3b4d296702b5f486f58c54ac3d5b1394..63da47f4def103c6fd78df7469c2a2e3bb8beaba 100644
--- a/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml
+++ b/indra/newview/skins/default/xui/zh/floater_outgoing_call.xml
@@ -4,10 +4,10 @@
 		5
 	</floater.string>
 	<floater.string name="localchat">
-		Nearby Voice Chat
+		附近的語音聊天
 	</floater.string>
 	<floater.string name="anonymous">
-		anonymous
+		匿名
 	</floater.string>
 	<floater.string name="VoiceInviteP2P">
 		通話中。
@@ -22,7 +22,7 @@
 		Calling [CALLEE_NAME]
 	</text>
 	<text name="noanswer">
-		No Answer.  Please try again later.
+		無應答,請稍候再試。
 	</text>
 	<text name="nearby">
 		You have been disconnected from [VOICE_CHANNEL_NAME].  [RECONNECT_NEARBY]
diff --git a/indra/newview/skins/default/xui/zh/floater_preview_animation.xml b/indra/newview/skins/default/xui/zh/floater_preview_animation.xml
index ead8dc49a6da09604214d185398c2eaf840ecbbb..c435ddc0bdc1a178c9476ef2be4f88361cf90cdf 100644
--- a/indra/newview/skins/default/xui/zh/floater_preview_animation.xml
+++ b/indra/newview/skins/default/xui/zh/floater_preview_animation.xml
@@ -6,6 +6,6 @@
 	<text name="desc txt">
 		描述:
 	</text>
-	<button label="Play Inworld" label_selected="停止" name="Anim play btn" tool_tip="Play this animation so that others can see it"/>
-	<button label="Play Locally" label_selected="停止" name="Anim audition btn" tool_tip="Play this animation so that only you can see it"/>
+	<button label="播放於虛擬世界" label_selected="停止" name="Anim play btn" tool_tip="Play this animation so that others can see it"/>
+	<button label="播放於本地" label_selected="停止" name="Anim audition btn" tool_tip="Play this animation so that only you can see it"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_preview_sound.xml b/indra/newview/skins/default/xui/zh/floater_preview_sound.xml
index d99d13669f5be5cac31cb3ca0a30e801e381d21d..46844349de2181ae6b49be84c5b2e2885d2f55ce 100644
--- a/indra/newview/skins/default/xui/zh/floater_preview_sound.xml
+++ b/indra/newview/skins/default/xui/zh/floater_preview_sound.xml
@@ -6,6 +6,6 @@
 	<text name="desc txt">
 		描述:
 	</text>
-	<button label="Play Inworld" label_selected="Play Inworld" name="Sound play btn" tool_tip="Play this sound so that others can hear it"/>
-	<button label="Play Locally" label_selected="Play Locally" name="Sound audition btn" tool_tip="Play this sound so that only you can hear it"/>
+	<button label="播放於虛擬世界" label_selected="播放於虛擬世界" name="Sound play btn" tool_tip="Play this sound so that others can hear it"/>
+	<button label="播放於本地" label_selected="播放於本地" name="Sound audition btn" tool_tip="Play this sound so that only you can hear it"/>
 </floater>
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 fc00b0b4a2deb77f170bc723c1f89655b24491b0..01586ac153b43e0fba0714ca3e596d2e6911a89c 100644
--- a/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
+++ b/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="texture picker" title="PICK: TEXTURE">
 	<floater.string name="choose_picture">
-		點擊以挑選圖片
+		點擊以挑選圖像
 	</floater.string>
 	<floater.string name="pick title">
 		Pick:
diff --git a/indra/newview/skins/default/xui/zh/floater_tools.xml b/indra/newview/skins/default/xui/zh/floater_tools.xml
index c70e70451eb064c8415dc5d40b2d21150a758be2..2db98eb3d77799531ac1de4fc049faa697259fc8 100644
--- a/indra/newview/skins/default/xui/zh/floater_tools.xml
+++ b/indra/newview/skins/default/xui/zh/floater_tools.xml
@@ -48,7 +48,7 @@
 		Drag to move, shift-drag to copy
 	</text>
 	<radio_group name="focus_radio_group">
-		<radio_item label="Zoom" name="radio zoom"/>
+		<radio_item label="縮放" name="radio zoom"/>
 		<radio_item label="環繞(Ctrl)" name="radio orbit"/>
 		<radio_item label="平移(Ctrl+Shift)" name="radio pan"/>
 	</radio_group>
@@ -75,10 +75,10 @@
 	</text>
 	<check_box initial_value="true" label="伸展材質" name="checkbox stretch textures"/>
 	<check_box initial_value="true" label="貼齊格線" name="checkbox snap to grid"/>
-	<combo_box name="combobox grid mode" tool_tip="Choose the type of grid ruler for positioning the object">
-		<combo_box.item label="World grid" name="World"/>
-		<combo_box.item label="Local grid" name="Local"/>
-		<combo_box.item label="Reference grid" name="Reference"/>
+	<combo_box name="combobox grid mode" tool_tip="選擇物件定位參考的格線尺度類型">
+		<combo_box.item label="世界格線" name="World"/>
+		<combo_box.item label="地方格線" name="Local"/>
+		<combo_box.item label="參考格線" name="Reference"/>
 	</combo_box>
 	<button name="Options..." tool_tip="察看更多格線選項"/>
 	<button name="ToolCube" tool_tip="Cube"/>
@@ -125,15 +125,15 @@
 		物件: [COUNT]
 	</text>
 	<text name="prim_count">
-		Prims: [COUNT]
+		幾何元件: [COUNT]
 	</text>
 	<tab_container name="Object Info Tabs">
 		<panel label="一般" name="General">
 			<panel.string name="text deed continued">
-				Deed
+				讓渡
 			</panel.string>
 			<panel.string name="text deed">
-				Deed
+				讓渡
 			</panel.string>
 			<panel.string name="text modify info 1">
 				你能修改這個物件
@@ -183,7 +183,7 @@
 			<name_box initial_value="載入中..." name="Group Name Proxy"/>
 			<button name="button set group" tool_tip="選擇一個群組以分享這物件權限"/>
 			<check_box label="分享" name="checkbox share with group" tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions."/>
-			<button label="Deed" label_selected="Deed" name="button deed" tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer."/>
+			<button label="讓渡" label_selected="讓渡" name="button deed" tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer."/>
 			<text name="label click action">
 				點擊以:
 			</text>
@@ -272,7 +272,7 @@
 				<combo_box.item label="Sculpted" name="Sculpted"/>
 			</combo_box>
 			<combo_box name="material">
-				<combo_box.item label="Stone" name="Stone"/>
+				<combo_box.item label="石頭" name="Stone"/>
 				<combo_box.item label="金屬" name="Metal"/>
 				<combo_box.item label="玻璃" name="Glass"/>
 				<combo_box.item label="木頭" name="Wood"/>
@@ -340,7 +340,7 @@
 			<text name="text revolutions">
 				Revolutions
 			</text>
-			<texture_picker label="Sculpt Texture" name="sculpt texture control" tool_tip="點擊以挑選圖片"/>
+			<texture_picker label="Sculpt Texture" name="sculpt texture control" tool_tip="點擊以挑選圖像"/>
 			<check_box label="Mirror" name="sculpt mirror control" tool_tip="Flips sculpted prim along the X axis"/>
 			<check_box label="Inside-out" name="sculpt invert control" tool_tip="Inverts the sculpted prims normals, making it appear inside-out"/>
 			<text name="label sculpt type">
@@ -356,28 +356,28 @@
 		</panel>
 		<panel label="特性" name="Features">
 			<text name="select_single">
-				Select only one primitive to edit features.
+				只能選擇一個幾何元件去編輯細節。
 			</text>
 			<text name="edit_object">
 				編輯物件特性:
 			</text>
-			<check_box label="Flexible Path" name="Flexible1D Checkbox Ctrl" tool_tip="Allows object to flex about the Z axis (Client-side only)"/>
-			<spinner label="Softness" name="FlexNumSections"/>
-			<spinner label="Gravity" name="FlexGravity"/>
-			<spinner label="Drag" name="FlexFriction"/>
-			<spinner label="Wind" name="FlexWind"/>
-			<spinner label="Tension" name="FlexTension"/>
-			<spinner label="Force X" name="FlexForceX"/>
-			<spinner label="Force Y" name="FlexForceY"/>
-			<spinner label="Force Z" name="FlexForceZ"/>
-			<check_box label="Light" name="Light Checkbox Ctrl" tool_tip="Causes object to emit light"/>
+			<check_box label="彈性路徑" name="Flexible1D Checkbox Ctrl" tool_tip="Allows object to flex about the Z axis (Client-side only)"/>
+			<spinner label="柔軟" name="FlexNumSections"/>
+			<spinner label="重力" name="FlexGravity"/>
+			<spinner label="拖曳" name="FlexFriction"/>
+			<spinner label="風力" name="FlexWind"/>
+			<spinner label="張力" name="FlexTension"/>
+			<spinner label="強制 X 軸" name="FlexForceX"/>
+			<spinner label="強制 Y 軸" name="FlexForceY"/>
+			<spinner label="強制 Z 軸" name="FlexForceZ"/>
+			<check_box label="光源" name="Light Checkbox Ctrl" tool_tip="導致物件發光"/>
 			<color_swatch name="colorswatch" tool_tip="點擊以開啟顏色挑選器"/>
 			<texture_picker label="" name="light texture control" tool_tip="Click to choose a projection image (only has effect with deferred rendering enabled)"/>
-			<spinner label="Intensity" name="Light Intensity"/>
+			<spinner label="強度" name="Light Intensity"/>
 			<spinner label="FOV" name="Light FOV"/>
-			<spinner label="Radius" name="Light Radius"/>
+			<spinner label="半徑" name="Light Radius"/>
 			<spinner label="Focus" name="Light Focus"/>
-			<spinner label="Falloff" name="Light Falloff"/>
+			<spinner label="衰減" name="Light Falloff"/>
 			<spinner label="Ambiance" name="Light Ambiance"/>
 		</panel>
 		<panel label="材質" name="Texture">
@@ -387,7 +387,7 @@
 			<panel.string name="string repeats per face">
 				每一面重覆次數
 			</panel.string>
-			<texture_picker label="材質" name="texture control" tool_tip="點擊以挑選圖片"/>
+			<texture_picker label="材質" name="texture control" tool_tip="點擊以挑選圖像"/>
 			<color_swatch label="顏色" name="colorswatch" tool_tip="點擊以開啟顏色挑選器"/>
 			<text name="color trans">
 				透明度 %
diff --git a/indra/newview/skins/default/xui/zh/floater_url_entry.xml b/indra/newview/skins/default/xui/zh/floater_url_entry.xml
index 65f6a9cb957b4c59be2d14a037c8fe6a74d707c4..9e3f3cd47d0418c4a17d9221e7a20244886173ec 100644
--- a/indra/newview/skins/default/xui/zh/floater_url_entry.xml
+++ b/indra/newview/skins/default/xui/zh/floater_url_entry.xml
@@ -3,7 +3,7 @@
 	<text name="media_label">
 		媒體 URL:
 	</text>
-	<button label="" name="ok_btn"/>
+	<button label="確定" name="ok_btn"/>
 	<button label="取消" name="cancel_btn"/>
 	<button label="清除" name="clear_btn"/>
 	<text name="loading_label">
diff --git a/indra/newview/skins/default/xui/zh/floater_voice_controls.xml b/indra/newview/skins/default/xui/zh/floater_voice_controls.xml
index c27b80e9c5beb6a9378749c2d6d297395f7eaf32..24b7efea4f9d166a503fd0c2c35b0eaeaee72656 100644
--- a/indra/newview/skins/default/xui/zh/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/zh/floater_voice_controls.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_voice_controls" title="Voice Controls">
+<floater name="floater_voice_controls" title="語音控制">
 	<string name="title_nearby">
-		NEARBY VOICE
+		附近的語音
 	</string>
 	<string name="title_group">
 		與 [GROUP] 進行群組通話
@@ -13,7 +13,7 @@
 		與 [NAME] 進行通話
 	</string>
 	<string name="no_one_near">
-		No one near has voice enabled
+		附近沒有一人開啟語音
 	</string>
 	<layout_stack name="my_call_stack">
 		<layout_panel name="my_panel">
diff --git a/indra/newview/skins/default/xui/zh/menu_inventory.xml b/indra/newview/skins/default/xui/zh/menu_inventory.xml
index 49a50c97c663b486651e1dfced2d57c9ab903158..87d769af0d11ee2f73d201f9d3e9498b9cf7be13 100644
--- a/indra/newview/skins/default/xui/zh/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/zh/menu_inventory.xml
@@ -2,17 +2,17 @@
 <menu name="Popup">
 	<menu_item_call label="分享" name="Share"/>
 	<menu_item_call label="購買" name="Task Buy"/>
-	<menu_item_call label="Open" name="Task Open"/>
-	<menu_item_call label="Play" name="Task Play"/>
-	<menu_item_call label="Properties" name="Task Properties"/>
+	<menu_item_call label="é–‹å•Ÿ" name="Task Open"/>
+	<menu_item_call label="播放" name="Task Play"/>
+	<menu_item_call label="屬性" name="Task Properties"/>
 	<menu_item_call label="更名" name="Task Rename"/>
 	<menu_item_call label="刪除" name="Task Remove"/>
 	<menu_item_call label="清空垃圾筒" name="Empty Trash"/>
-	<menu_item_call label="Empty Lost And Found" name="Empty Lost And Found"/>
+	<menu_item_call label="清空 Lost And Found" name="Empty Lost And Found"/>
 	<menu_item_call label="新資料夾" name="New Folder"/>
-	<menu_item_call label="New Script" name="New Script"/>
-	<menu_item_call label="New Notecard" name="New Note"/>
-	<menu_item_call label="New Gesture" name="New Gesture"/>
+	<menu_item_call label="新腳本" name="New Script"/>
+	<menu_item_call label="新記事卡" name="New Note"/>
+	<menu_item_call label="新姿勢" name="New Gesture"/>
 	<menu label="新衣服" name="New Clothes">
 		<menu_item_call label="新襯衫" name="New Shirt"/>
 		<menu_item_call label="新褲子" name="New Pants"/>
@@ -52,11 +52,11 @@
 	<menu_item_call label="添加到目前裝扮" name="Add To Outfit"/>
 	<menu_item_call label="由目前的裝扮移除" name="Remove From Outfit"/>
 	<menu_item_call label="尋找原件" name="Find Original"/>
-	<menu_item_call label="Purge Item" name="Purge Item"/>
-	<menu_item_call label="Restore Item" name="Restore Item"/>
+	<menu_item_call label="清空物品" name="Purge Item"/>
+	<menu_item_call label="恢復物品" name="Restore Item"/>
 	<menu_item_call label="é–‹å•Ÿ" name="Open"/>
-	<menu_item_call label="Open Original" name="Open Original"/>
-	<menu_item_call label="Properties" name="Properties"/>
+	<menu_item_call label="開啟原件" name="Open Original"/>
+	<menu_item_call label="屬性" name="Properties"/>
 	<menu_item_call label="更名" name="Rename"/>
 	<menu_item_call label="覆製資產 UUID" name="Copy Asset UUID"/>
 	<menu_item_call label="覆製" name="Copy"/>
@@ -68,11 +68,11 @@
 	<menu_item_call label="Start Conference Chat" name="Conference Chat Folder"/>
 	<menu_item_call label="播放" name="Sound Play"/>
 	<menu_item_call label="添加地標" name="About Landmark"/>
-	<menu_item_call label="Play Inworld" name="Animation Play"/>
-	<menu_item_call label="Play Locally" name="Animation Audition"/>
+	<menu_item_call label="播放於虛擬世界" name="Animation Play"/>
+	<menu_item_call label="播放於本地" name="Animation Audition"/>
 	<menu_item_call label="送出即時訊息" name="Send Instant Message"/>
 	<menu_item_call label="發給瞬間傳送請求..." name="Offer Teleport..."/>
-	<menu_item_call label="Start Conference Chat" name="Conference Chat"/>
+	<menu_item_call label="開始會議交談" name="Conference Chat"/>
 	<menu_item_call label="Activate" name="Activate"/>
 	<menu_item_call label="Deactivate" name="Deactivate"/>
 	<menu_item_call label="另存" name="Save As"/>
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
index 74b90ada5e77c99c74cd51d6232e6244c8ee4376..8ad0e7324f94b521b9a99ea83ebda05f435b2b69 100644
--- a/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/zh/menu_inventory_gear_default.xml
@@ -6,7 +6,7 @@
 	<menu_item_check label="總是由名稱排序資料夾" name="sort_folders_by_name"/>
 	<menu_item_check label="系統資料夾排序到最上方" name="sort_system_folders_to_top"/>
 	<menu_item_call label="顯示過濾器" name="show_filters"/>
-	<menu_item_call label="Reset Filters" name="reset_filters"/>
+	<menu_item_call label="重設過濾器" name="reset_filters"/>
 	<menu_item_call label="關閉全部資料夾" name="close_folders"/>
 	<menu_item_call label="清空 Lost and Found" name="empty_lostnfound"/>
 	<menu_item_call label="儲存材質為" name="Save Texture As"/>
diff --git a/indra/newview/skins/default/xui/zh/menu_viewer.xml b/indra/newview/skins/default/xui/zh/menu_viewer.xml
index a51e26c3f42135294dc500ce7f9972317e292a3e..b6bb79bcbcc817aba6f36cf90fef5d4380650078 100644
--- a/indra/newview/skins/default/xui/zh/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/zh/menu_viewer.xml
@@ -20,8 +20,6 @@
 			<menu_item_call label="離開" name="Set Away"/>
 			<menu_item_call label="忙碌" name="Set Busy"/>
 		</menu>
-		<menu_item_call label="要求 Admin 狀態" name="Request Admin Options"/>
-		<menu_item_call label="離開 Admin 狀態" name="Leave Admin Options"/>
 		<menu_item_call label="結束退出 [APP_NAME]" name="Quit"/>
 	</menu>
 	<menu label="溝通" name="Communicate">
@@ -36,11 +34,10 @@
 		<menu_item_check label="搜尋" name="Search"/>
 		<menu_item_call label="拍攝快照" name="Take Snapshot"/>
 		<menu_item_call label="將此處記下地標" name="Create Landmark Here"/>
-		<menu label="地點檔案" name="Land">
-			<menu_item_call label="地點檔案" name="Place Profile"/>
-			<menu_item_call label="關於土地" name="About Land"/>
-			<menu_item_call label="地區 / 領地" name="Region/Estate"/>
-		</menu>
+		<menu_item_separator/>
+		<menu_item_call label="地點檔案" name="Place Profile"/>
+		<menu_item_call label="關於土地" name="About Land"/>
+		<menu_item_call label="地區 / 領地" name="Region/Estate"/>
 		<menu_item_call label="購買這塊土地" name="Buy Land"/>
 		<menu_item_call label="我的土地" name="My Land"/>
 		<menu label="顯示" name="LandShow">
@@ -56,7 +53,7 @@
 		</menu>
 		<menu_item_call label="瞬間瞬間傳送回家" name="Teleport Home"/>
 		<menu_item_call label="設定家在此處" name="Set Home to Here"/>
-		<menu label="太陽" name="Environment Settings">
+		<menu label="太陽" name="Sun">
 			<menu_item_call label="日出" name="Sunrise"/>
 			<menu_item_call label="中午" name="Noon"/>
 			<menu_item_call label="日落" name="Sunset"/>
@@ -139,52 +136,50 @@
 		<menu_item_check label="Disable Camera Constraints" name="Disable Camera Distance"/>
 		<menu_item_check label="高解析度快照" name="HighResSnapshot"/>
 		<menu_item_check label="靜音拍攝快照到硬碟" name="QuietSnapshotsToDisk"/>
+		<menu_item_check label="壓縮快照存到硬碟" name="CompressSnapshotsToDisk"/>
 		<menu label="效能工具" name="Performance Tools">
 			<menu_item_call label="Lag Meter" name="Lag Meter"/>
 			<menu_item_check label="統計列" name="Statistics Bar"/>
 			<menu_item_check label="Show Avatar Rendering Cost" name="Avatar Rendering Cost"/>
 		</menu>
-		<menu label="Highlighting and Visibility" name="Highlighting and Visibility">
+		<menu label="高亮顯示與可見度" name="Highlighting and Visibility">
 			<menu_item_check label="Cheesy Beacon" name="Cheesy Beacon"/>
-			<menu_item_check label="Hide Particles" name="Hide Particles"/>
-			<menu_item_check label="Hide Selected" name="Hide Selected"/>
+			<menu_item_check label="隱藏粒子效果" name="Hide Particles"/>
+			<menu_item_check label="隱藏所選擇的" name="Hide Selected"/>
 			<menu_item_check label="高亮顯示透明物件" name="Highlight Transparent"/>
 			<menu_item_check label="顯示 HUD 附件" name="Show HUD Attachments"/>
-			<menu_item_check label="Show Mouselook Crosshairs" name="ShowCrosshairs"/>
+			<menu_item_check label="顯示第一人稱視角準星" name="ShowCrosshairs"/>
 		</menu>
 		<menu label="Rendering Types" name="Rendering Types">
-			<menu_item_check label="Simple" name="Simple"/>
-			<menu_item_check label="半透明" name="Alpha"/>
-			<menu_item_check label="Tree" name="Tree"/>
-			<menu_item_check label="Avatars" name="Character"/>
-			<menu_item_check label="SurfacePath" name="SurfacePath"/>
-			<menu_item_check label="Sky" name="Sky"/>
-			<menu_item_check label="Water" name="Water"/>
-			<menu_item_check label="Ground" name="Ground"/>
-			<menu_item_check label="Volume" name="Volume"/>
-			<menu_item_check label="Grass" name="Grass"/>
-			<menu_item_check label="Clouds" name="Clouds"/>
-			<menu_item_check label="Particles" name="Particles"/>
-			<menu_item_check label="Bump" name="Bump"/>
+			<menu_item_check label="ç°¡å–®" name="Rendering Type Simple"/>
+			<menu_item_check label="半透明" name="Rendering Type Alpha"/>
+			<menu_item_check label="樹木" name="Rendering Type Tree"/>
+			<menu_item_check label="化身" name="Rendering Type Character"/>
+			<menu_item_check label="地表" name="Rendering Type Surface Patch"/>
+			<menu_item_check label="天空" name="Rendering Type Sky"/>
+			<menu_item_check label="æ°´æ–‡" name="Rendering Type Water"/>
+			<menu_item_check label="地面" name="Rendering Type Ground"/>
+			<menu_item_check label="體積" name="Rendering Type Volume"/>
+			<menu_item_check label="草地" name="Rendering Type Grass"/>
+			<menu_item_check label="雲彩" name="Rendering Type Clouds"/>
+			<menu_item_check label="粒子效果" name="Rendering Type Particles"/>
+			<menu_item_check label="碰撞" name="Rendering Type Bump"/>
 		</menu>
 		<menu label="Rendering Features" name="Rendering Features">
-			<menu_item_check label="UI" name="UI"/>
+			<menu_item_check label="UI" name="ToggleUI"/>
 			<menu_item_check label="Selected" name="Selected"/>
 			<menu_item_check label="Highlighted" name="Highlighted"/>
 			<menu_item_check label="Dynamic Textures" name="Dynamic Textures"/>
-			<menu_item_check label="Foot Shadows" name="Foot Shadows"/>
-			<menu_item_check label="Fog" name="Fog"/>
+			<menu_item_check label="腳步陰影" name="Foot Shadows"/>
+			<menu_item_check label="霧氣" name="Fog"/>
 			<menu_item_check label="Test FRInfo" name="Test FRInfo"/>
-			<menu_item_check label="Flexible Objects" name="Flexible Objects"/>
+			<menu_item_check label="彈性物件" name="Flexible Objects"/>
 		</menu>
-		<menu_item_check label="Use Plugin Read Thread" name="Use Plugin Read Thread"/>
+		<menu_item_check label="使用外卦讀取緒" name="Use Plugin Read Thread"/>
 		<menu_item_call label="清除群組快取資料" name="ClearGroupCache"/>
 		<menu_item_check label="滑鼠平滑移動" name="Mouse Smoothing"/>
 		<menu label="快速鍵" name="Shortcuts">
-			<menu_item_call label="圖像(L$[COST])..." name="Upload Image"/>
-			<menu_item_check label="搜尋" name="Search"/>
 			<menu_item_call label="釋出按鍵" name="Release Keys"/>
-			<menu_item_call label="設定使用者界面大小至預設值" name="Set UI Size to Default"/>
 			<menu_item_check label="顯示進階選單 - 舊版捷徑" name="Show Advanced Menu - legacy shortcut"/>
 			<menu_item_call label="關閉視窗" name="Close Window"/>
 			<menu_item_call label="關閉全部視窗" name="Close All Windows"/>
@@ -193,13 +188,6 @@
 			<menu_item_check label="Joystick Flycam" name="Joystick Flycam"/>
 			<menu_item_call label="重設視角" name="Reset View"/>
 			<menu_item_call label="注視上一位聊天者" name="Look at Last Chatter"/>
-			<menu label="選擇建造工具" name="Select Tool">
-				<menu_item_call label="聚焦工具" name="Focus"/>
-				<menu_item_call label="移動工具" name="Move"/>
-				<menu_item_call label="編輯工具" name="Edit"/>
-				<menu_item_call label="創造工具" name="Create"/>
-				<menu_item_call label="土地工具" name="Land"/>
-			</menu>
 			<menu_item_call label="Zoom In" name="Zoom In"/>
 			<menu_item_call label="Zoom Default" name="Zoom Default"/>
 			<menu_item_call label="Zoom Out" name="Zoom Out"/>
@@ -213,13 +201,13 @@
 			<menu_item_check label="除錯控制台" name="Debug Console"/>
 			<menu_item_call label="通知控制台" name="Notifications"/>
 			<menu_item_check label="材質尺寸控制台" name="Texture Size"/>
-			<menu_item_check label="Texture Category Console" name="Texture Category"/>
-			<menu_item_check label="Fast Timers" name="Fast Timers"/>
+			<menu_item_check label="材質分類控制台" name="Texture Category"/>
+			<menu_item_check label="快速碼錶" name="Fast Timers"/>
 			<menu_item_check label="記憶體" name="Memory"/>
-			<menu_item_call label="Region Info to Debug Console" name="Region Info to Debug Console"/>
+			<menu_item_call label="地區資訊傳至除錯控制台" name="Region Info to Debug Console"/>
 			<menu_item_call label="群組資訊至除錯控制台" name="Group Info to Debug Console"/>
 			<menu_item_call label="Capabilities Info to Debug Console" name="Capabilities Info to Debug Console"/>
-			<menu_item_check label="Camera" name="Camera"/>
+			<menu_item_check label="攝影機" name="Camera"/>
 			<menu_item_check label="風力" name="Wind"/>
 			<menu_item_check label="FOV" name="FOV"/>
 			<menu_item_check label="Badge" name="Badge"/>
@@ -244,7 +232,7 @@
 			<menu_item_call label="模擬記憶體不足" name="Memory Leaking Simulation"/>
 		</menu>
 		<menu label="Render Tests" name="Render Tests">
-			<menu_item_check label="Camera Offset" name="Camera Offset"/>
+			<menu_item_check label="攝影機位移" name="Camera Offset"/>
 			<menu_item_check label="Randomize Framerate" name="Randomize Framerate"/>
 			<menu_item_check label="Periodic Slow Frame" name="Periodic Slow Frame"/>
 			<menu_item_check label="Frame Test" name="Frame Test"/>
@@ -275,12 +263,12 @@
 			<menu_item_check label="Shadows from Sun/Moon/Projectors" name="Shadows from Sun/Moon/Projectors"/>
 			<menu_item_check label="SSAO and Shadow Smoothing" name="SSAO and Shadow Smoothing"/>
 			<menu_item_check label="Global Illumination (experimental)" name="Global Illumination"/>
-			<menu_item_check label="Debug GL" name="Debug GL"/>
-			<menu_item_check label="Debug Pipeline" name="Debug Pipeline"/>
+			<menu_item_check label="GL 除錯" name="Debug GL"/>
+			<menu_item_check label="管線除錯" name="Debug Pipeline"/>
 			<menu_item_check label="自動半透明遮罩(遞延)" name="Automatic Alpha Masks (deferred)"/>
 			<menu_item_check label="自動半透明遮罩(非遞延)" name="Automatic Alpha Masks (non-deferred)"/>
 			<menu_item_check label="Animation Textures" name="Animation Textures"/>
-			<menu_item_check label="Disable Textures" name="Disable Textures"/>
+			<menu_item_check label="關閉材質" name="Disable Textures"/>
 			<menu_item_check label="Full Res Textures" name="Rull Res Textures"/>
 			<menu_item_check label="Audit Textures" name="Audit Textures"/>
 			<menu_item_check label="Texture Atlas (experimental)" name="Texture Atlas"/>
@@ -297,30 +285,29 @@
 			<menu_item_call label="Drop a Packet" name="Drop a Packet"/>
 		</menu>
 		<menu_item_call label="Dump Scripted Camera" name="Dump Scripted Camera"/>
-		<menu_item_call label="Bumps, Pushes &amp; Hits" name="Bumps, Pushes &amp;amp; Hits"/>
-		<menu label="Recorder" name="Recorder">
-			<menu_item_call label="Start Playback" name="Start Playback"/>
-			<menu_item_call label="Stop Playback" name="Stop Playback"/>
-			<menu_item_check label="Loop Playback" name="Loop Playback"/>
-			<menu_item_call label="Start Record" name="Start Record"/>
-			<menu_item_call label="Stop Record" name="Stop Record"/>
-		</menu>
-		<menu label="World" name="World">
-			<menu_item_check label="Sim Sun Override" name="Sim Sun Override"/>
-			<menu_item_check label="Cheesy Beacon" name="Cheesy Beacon"/>
-			<menu_item_check label="Fixed Weather" name="Fixed Weather"/>
+		<menu_item_call label="碰撞、推擠與打擊" name="Bumps, Pushes &amp;amp; Hits"/>
+		<menu label="錄製器" name="Recorder">
+			<menu_item_call label="開始播放" name="Start Playback"/>
+			<menu_item_call label="停止播放" name="Stop Playback"/>
+			<menu_item_check label="循環播放" name="Loop Playback"/>
+			<menu_item_call label="開始錄製" name="Start Record"/>
+			<menu_item_call label="停止錄製" name="Stop Record"/>
+		</menu>
+		<menu label="世界" name="DevelopWorld">
+			<menu_item_check label="模擬器太陽設定覆蓋" name="Sim Sun Override"/>
+			<menu_item_check label="固定天氣" name="Fixed Weather"/>
 			<menu_item_call label="傾印地區物件快取" name="Dump Region Object Cache"/>
 		</menu>
 		<menu label="UI" name="UI">
-			<menu_item_call label="Media Browser Test" name="Web Browser Test"/>
-			<menu_item_call label="Web Content Browser" name="Web Content Browser"/>
+			<menu_item_call label="測試媒體瀏覽器" name="Web Browser Test"/>
+			<menu_item_call label="網頁內容瀏覽器" name="Web Content Browser"/>
 			<menu_item_call label="Dump SelectMgr" name="Dump SelectMgr"/>
 			<menu_item_call label="傾印收納區" name="Dump Inventory"/>
-			<menu_item_call label="Dump Timers" name="Dump Timers"/>
+			<menu_item_call label="傾印碼錶" name="Dump Timers"/>
 			<menu_item_call label="Dump Focus Holder" name="Dump Focus Holder"/>
 			<menu_item_call label="Print Selected Object Info" name="Print Selected Object Info"/>
 			<menu_item_call label="Print Agent Info" name="Print Agent Info"/>
-			<menu_item_call label="Memory Stats" name="Memory Stats"/>
+			<menu_item_call label="計憶體狀態" name="Memory Stats"/>
 			<menu_item_check label="Region Debug Console" name="Region Debug Console"/>
 			<menu_item_check label="Debug SelectMgr" name="Debug SelectMgr"/>
 			<menu_item_check label="Debug Clicks" name="Debug Clicks"/>
@@ -331,29 +318,29 @@
 			<menu_item_check label="Debug WindowProc" name="Debug WindowProc"/>
 		</menu>
 		<menu label="XUI" name="XUI">
-			<menu_item_call label="Reload Color Settings" name="Reload Color Settings"/>
-			<menu_item_call label="Show Font Test" name="Show Font Test"/>
-			<menu_item_check label="Show XUI Names" name="Show XUI Names"/>
+			<menu_item_call label="重新載入顏色設定" name="Reload Color Settings"/>
+			<menu_item_call label="顯示字型測試" name="Show Font Test"/>
+			<menu_item_check label="顯示 XUI 名稱" name="Show XUI Names"/>
 			<menu_item_call label="送出測試 IMs" name="Send Test IMs"/>
 			<menu_item_call label="沖洗名稱快取資料" name="Flush Names Caches"/>
 		</menu>
 		<menu label="化身" name="Character">
 			<menu label="Grab Baked Texture" name="Grab Baked Texture">
-				<menu_item_call label="Iris" name="Iris"/>
-				<menu_item_call label="頭部" name="Head"/>
-				<menu_item_call label="Upper Body" name="Upper Body"/>
-				<menu_item_call label="Lower Body" name="Lower Body"/>
-				<menu_item_call label="裙子" name="Skirt"/>
+				<menu_item_call label="Iris" name="Grab Iris"/>
+				<menu_item_call label="頭部" name="Grab Head"/>
+				<menu_item_call label="Upper Body" name="Grab Upper Body"/>
+				<menu_item_call label="Lower Body" name="Grab Lower Body"/>
+				<menu_item_call label="裙子" name="Grab Skirt"/>
 			</menu>
 			<menu label="Character Tests" name="Character Tests">
 				<menu_item_call label="Appearance To XML" name="Appearance To XML"/>
 				<menu_item_call label="Toggle Character Geometry" name="Toggle Character Geometry"/>
-				<menu_item_call label="Test Male" name="Test Male"/>
-				<menu_item_call label="Test Female" name="Test Female"/>
-				<menu_item_call label="Toggle PG" name="Toggle PG"/>
-				<menu_item_check label="Allow Select Avatar" name="Allow Select Avatar"/>
+				<menu_item_call label="男性測試" name="Test Male"/>
+				<menu_item_call label="女性測試" name="Test Female"/>
+				<menu_item_call label="PG 切換" name="Toggle PG"/>
+				<menu_item_check label="允許選擇化身" name="Allow Select Avatar"/>
 			</menu>
-			<menu_item_call label="Force Params to Default" name="Force Params to Default"/>
+			<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"/>
@@ -377,8 +364,8 @@
 		<menu_item_check label="Show Admin Menu" name="View Admin Options"/>
 	</menu>
 	<menu label="Admin" name="Admin">
-		<menu label="Object">
-			<menu_item_call label="取得副本" name="Take Copy"/>
+		<menu label="Object" name="AdminObject">
+			<menu_item_call label="取得副本" name="Admin Take Copy"/>
 			<menu_item_call label="強制擁有者為我" name="Force Owner To Me"/>
 			<menu_item_call label="Force Owner Permissive" name="Force Owner Permissive"/>
 			<menu_item_call label="刪除" name="Delete"/>
@@ -414,7 +401,7 @@
 			<menu_item_call label="身體物理" name="Physics"/>
 			<menu_item_call label="全部衣服" name="All Clothes"/>
 		</menu>
-		<menu label="幫助" name="Help">
+		<menu label="幫助" name="DeprecatedHelp">
 			<menu_item_call label="林登官方部落格" name="Official Linden Blog"/>
 			<menu_item_call label="Scripting Portal" name="Scripting Portal"/>
 			<menu label="臭蟲回報" name="Bug Reporting">
diff --git a/indra/newview/skins/default/xui/zh/mime_types.xml b/indra/newview/skins/default/xui/zh/mime_types.xml
index 89fe92fabc03e49703d0000ee06d93a5303f4775..8ac1bf6920e14e165149ad9a00db7a584420c169 100644
--- a/indra/newview/skins/default/xui/zh/mime_types.xml
+++ b/indra/newview/skins/default/xui/zh/mime_types.xml
@@ -27,10 +27,10 @@
 			圖像
 		</label>
 		<tooltip name="image_tooltip">
-			There is an image at this location
+			有一個圖像在此位置
 		</tooltip>
 		<playtip name="image_playtip">
-			View this location&apos;s image
+			察看這個位置的圖像
 		</playtip>
 	</widgetset>
 	<widgetset name="audio">
@@ -38,10 +38,10 @@
 			音頻
 		</label>
 		<tooltip name="audio_tooltip">
-			There is audio at this location
+			有一個音頻在此位置
 		</tooltip>
 		<playtip name="audio_playtip">
-			Play this location&apos;s audio
+			播放這個硾的音頻
 		</playtip>
 	</widgetset>
 	<scheme name="rtsp">
diff --git a/indra/newview/skins/default/xui/zh/mime_types_linux.xml b/indra/newview/skins/default/xui/zh/mime_types_linux.xml
index 08839abe6ac811f96cef925a32afe18a5f48ce3d..90f17b841cbfa5b8f25b8655c164233d88678a39 100644
--- a/indra/newview/skins/default/xui/zh/mime_types_linux.xml
+++ b/indra/newview/skins/default/xui/zh/mime_types_linux.xml
@@ -30,7 +30,7 @@
 			There is an image at this location
 		</tooltip>
 		<playtip name="image_playtip">
-			View this location&apos;s image
+			察看這個位置的圖像
 		</playtip>
 	</widgetset>
 	<widgetset name="audio">
@@ -38,10 +38,10 @@
 			音頻
 		</label>
 		<tooltip name="audio_tooltip">
-			There is audio at this location
+			有一個音頻在此位置
 		</tooltip>
 		<playtip name="audio_playtip">
-			Play this location&apos;s audio
+			播放這個位置的音頻
 		</playtip>
 	</widgetset>
 	<scheme name="rtsp">
@@ -66,7 +66,7 @@
 	</mimetype>
 	<mimetype name="video/*">
 		<label name="video2_label">
-			Video
+			影片
 		</label>
 	</mimetype>
 	<mimetype name="image/*">
diff --git a/indra/newview/skins/default/xui/zh/mime_types_mac.xml b/indra/newview/skins/default/xui/zh/mime_types_mac.xml
index 7958f64219b2d5c392f202060e21f45788ae8a98..b8105c145cdc473b81f5683bf7b7eb209e567919 100644
--- a/indra/newview/skins/default/xui/zh/mime_types_mac.xml
+++ b/indra/newview/skins/default/xui/zh/mime_types_mac.xml
@@ -27,10 +27,10 @@
 			圖像
 		</label>
 		<tooltip name="image_tooltip">
-			有一個影像在此位置
+			有一個圖像在此位置
 		</tooltip>
 		<playtip name="image_playtip">
-			察看在此位置的影像
+			察看在此位置的圖像
 		</playtip>
 	</widgetset>
 	<widgetset name="audio">
diff --git a/indra/newview/skins/default/xui/zh/notifications.xml b/indra/newview/skins/default/xui/zh/notifications.xml
index 1c89e9b52283406d8d6e4fcb8cb5fc175ca1f970..3fa8ff3f781cf21b0e177e49e3c878811d8b1017 100644
--- a/indra/newview/skins/default/xui/zh/notifications.xml
+++ b/indra/newview/skins/default/xui/zh/notifications.xml
@@ -758,16 +758,16 @@ No parcel selected.
 No region selected.
 	</notification>
 	<notification name="CannotReleaseLandNothingSelected">
-		Unable to abandon land:
-No parcel selected.
+		無法放棄土地:
+無地段被選擇。
 	</notification>
 	<notification name="CannotReleaseLandNoRegion">
 		無法放棄土地:
 無法尋找地區。
 	</notification>
 	<notification name="CannotBuyLandNothingSelected">
-		Unable to buy land:
-No parcel selected.
+		無法購買土地:
+無地段被選擇。
 	</notification>
 	<notification name="CannotBuyLandNoRegion">
 		Unable to buy land:
@@ -777,121 +777,121 @@ Cannot find the region this land is in.
 		You cannot close the Buy Land window until [APP_NAME] estimates the price of this transaction.
 	</notification>
 	<notification name="CannotDeedLandNothingSelected">
-		Unable to deed land:
+		無法讓渡土地:
 無地段被選取。
 	</notification>
 	<notification name="CannotDeedLandNoGroup">
-		Unable to deed land:
+		無法讓渡土地:
 無群組被選取。
 	</notification>
 	<notification name="CannotDeedLandNoRegion">
-		Unable to deed land:
-Cannot find the region this land is in.
+		無法讓渡土地:
+無法發現這塊土地所在的地區。
 	</notification>
 	<notification name="CannotDeedLandMultipleSelected">
-		Unable to deed land:
-Multiple parcels selected.
+		無法讓渡土地:
+複數地段被選取。
 
-Try selecting a single parcel.
+請試著選取單一地段。
 	</notification>
 	<notification name="CannotDeedLandWaitingForServer">
-		Unable to deed land:
-Waiting for server to report ownership.
+		無法讓渡土地:
+等候伺服器報告擁有權。
 
-Please try again.
+請再試一次。
 	</notification>
 	<notification name="CannotDeedLandNoTransfer">
-		Unable to deed land:
-The region [REGION] does not allow transfer of land.
+		無法讓渡土地:
+此 [REGION] 地區並不允許土地轉移。
 	</notification>
 	<notification name="CannotReleaseLandWatingForServer">
-		Unable to abandon land:
-Waiting for server to update parcel information.
+		無法放棄土地:
+等候伺服器更新地段資訊。
 
-Try again in a few seconds.
+請稍後幾秒再試一次。
 	</notification>
 	<notification name="CannotReleaseLandSelected">
-		Unable to abandon land:
-You do not own all the parcels selected.
+		無法放棄土地:
+你並位擁有所選擇的全部土地。
 
-Please select a single parcel.
+請選擇一個單一地段。
 	</notification>
 	<notification name="CannotReleaseLandDontOwn">
-		Unable to abandon land:
-You don&apos;t have permission to release this parcel.
-Parcels you own appear in green.
+		無法放棄土地:
+你並沒有權限去釋出這個地段。
+你所擁有的地段將呈現綠色。
 	</notification>
 	<notification name="CannotReleaseLandRegionNotFound">
-		Unable to abandon land:
-Cannot find the region this land is in.
+		無法放棄土地:
+無法發現這快土地所在的地區。
 	</notification>
 	<notification name="CannotReleaseLandNoTransfer">
-		Unable to abandon land:
-The region [REGION] does not allow transfer of land.
+		無法放棄土地:
+此 [REGION] 地區並不許土地轉移。
 	</notification>
 	<notification name="CannotReleaseLandPartialSelection">
-		Unable to abandon land:
-You must select an entire parcel to release it.
+		無法放棄土地:
+你必須選取一整個地段以釋出它。
 
-Select an entire parcel, or divide your parcel first.
+選取一整個地段,或先進行分割。
 	</notification>
 	<notification name="ReleaseLandWarning">
-		You are about to release [AREA] m² of land.
-Releasing this parcel will remove it from your land holdings, but will not grant any L$.
+		你釋出約 [AREA] m² 面積土地。
+釋出個地段將會由你所持有的土地中移除,但不會給予任何 L$。
 
-Release this land?
+你確定要釋出這塊土地?
 		<usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/>
 	</notification>
 	<notification name="CannotDivideLandNothingSelected">
-		Unable to divide land:
+		無法分割土地:
 
-No parcels selected.
+無地段被選取。
 	</notification>
 	<notification name="CannotDivideLandPartialSelection">
-		Unable to divide land:
+		無法分割土地:
 
-You have an entire parcel selected.
-Try selecting a part of the parcel.
+你現在選取整個地段。
+請試著選取其中部分地段。
 	</notification>
 	<notification name="LandDivideWarning">
-		Dividing this land will split this parcel into two and each parcel can have its own settings. Some settings will be reset to defaults after the operation.
+		分割土地會將佌地段一分為二,每一個地段將都各自有其設定。 在這個操作之後,一些設定值將會回復到預設值。
 
-Divide land?
+進行分割土地?
 		<usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/>
 	</notification>
 	<notification name="CannotDivideLandNoRegion">
-		Unable to divide land:
-Cannot find the region this land is in.
+		無法分割土地:
+無法發現這塊土地所在的地區。
 	</notification>
 	<notification name="CannotJoinLandNoRegion">
-		Unable to join land:
-Cannot find the region this land is in.
+		無法合併土地:
+無法發現這塊土地所在的地區。
 	</notification>
 	<notification name="CannotJoinLandNothingSelected">
-		Unable to join land:
-No parcels selected.
+		無法合併土地:
+無地段被選取。
 	</notification>
 	<notification name="CannotJoinLandEntireParcelSelected">
-		Unable to join land:
-You only have one parcel selected.
+		無法合併土地:
+你只有選取一個地段。
 
-Select land across both parcels.
+請跨越兩個地段選取土地。
 	</notification>
 	<notification name="CannotJoinLandSelection">
-		Unable to join land:
-You must select more than one parcel.
+		無法合併土地:
+你必須選取超過一個地段。
 
-Select land across both parcels.
+請跨越兩個地段選取土地。
 	</notification>
 	<notification name="JoinLandWarning">
-		Joining this land will create one large parcel out of all parcels intersecting the selected rectangle.
-You will need to reset the name and options of the new parcel.
+		合併土地將會在選取的全部地段範圍裡產生一個巨大的地段。
+你將會需要重設這個新地段的名稱與設定選項。
 
-Join land?
+進行土地合併?
 		<usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/>
 	</notification>
 	<notification name="ConfirmNotecardSave">
-		This notecard needs to be saved before the item can be copied or viewed. Save notecard?
+		在物品能被覆製或察看前,這記事卡必須先進行儲存。儲存記事卡?
 		<usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/>
 	</notification>
 	<notification name="ConfirmItemCopy">
@@ -966,7 +966,7 @@ Offer friendship to [NAME]?
 		</form>
 	</notification>
 	<notification name="RemoveFromFriends">
-		Do you want to remove [NAME] from your Friends List?
+		Do you want to remove &lt;nolink&gt;[NAME]&lt;/nolink&gt; from your Friends List?
 		<usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/>
 	</notification>
 	<notification name="RemoveMultipleFromFriends">
@@ -1377,7 +1377,7 @@ We must restart [APP_NAME] to install the update.
 	<notification name="DeedObjectToGroup">
 		Deeding this object will cause the group to:
 * Receive L$ paid into the object
-		<usetemplate ignoretext="在我讓渡一個物件給群組前確認" name="okcancelignore" notext="取消" yestext="Deed"/>
+		<usetemplate ignoretext="在我讓渡一個物件給群組前確認" name="okcancelignore" notext="取消" yestext="讓渡"/>
 	</notification>
 	<notification name="WebLaunchExternalTarget">
 		你確定要開啟網頁瀏覽器去察看這個內容?
@@ -1418,7 +1418,7 @@ We must restart [APP_NAME] to install the update.
 		<usetemplate ignoretext="在我退回物件給它們的擁有者前確認" name="okcancelignore" notext="取消" yestext="確定"/>
 	</notification>
 	<notification name="GroupLeaveConfirmMember">
-		你目前是 [GROUP] 群組的成員。
+		你目前是 &lt;nolink&gt;[GROUP]&lt;/nolink&gt; 群組的成員。
 是否要離開群組?
 		<usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/>
 	</notification>
@@ -1457,7 +1457,7 @@ Chat and instant messages will be hidden. Instant messages will get your Busy mo
 	<notification name="JoinedTooManyGroupsMember">
 		You have reached your maximum number of groups. Please leave another group before joining this one, or decline the offer.
 [NAME] has invited you to join a group as a member.
-		<usetemplate name="okcancelbuttons" notext="Decline" yestext="加入"/>
+		<usetemplate name="okcancelbuttons" notext="謝絕" yestext="加入"/>
 	</notification>
 	<notification name="JoinedTooManyGroups">
 		You have reached your maximum number of groups. Please leave some group before joining or creating a new one.
@@ -1509,12 +1509,12 @@ Chat and instant messages will be hidden. Instant messages will get your Busy mo
 Just like in real life, it takes a while for everyone to learn about a new name.  Please allow several days for [http://wiki.secondlife.com/wiki/Setting_your_display_name your name to update] in objects, scripts, search, etc.
 	</notification>
 	<notification name="SetDisplayNameBlocked">
-		Sorry, you cannot change your display name. If you feel this is in error, please contact support.
+		抱歉,你不可以變更你的顯示名稱。如果你覺得這是錯誤,請連繫支援廠商。
 	</notification>
 	<notification name="SetDisplayNameFailedLength">
-		Sorry, that name is too long.  Display names can have a maximum of [LENGTH] characters.
+		抱歉,這名稱太長。顯示名稱最大長度為 [LENGTH] 字元。
 
-Please try a shorter name.
+請嘗試短一些的名稱。
 	</notification>
 	<notification name="SetDisplayNameFailedGeneric">
 		Sorry, we could not set your display name.  Please try again later.
@@ -1890,7 +1890,7 @@ Move the inventory item(s)?
 	</notification>
 	<notification name="ConfirmQuit">
 		你確定你要結束退出?
-		<usetemplate ignoretext="當我結束退出時進行確認" name="okcancelignore" notext="不結束退出" yestext="結束退出"/>
+		<usetemplate ignoretext="當我結束退出時進行確認" name="okcancelignore" notext="不要結束退出" yestext="結束退出"/>
 	</notification>
 	<notification name="DeleteItems">
 		[QUESTION]
@@ -1941,11 +1941,11 @@ Linden Lab
 		The following required components are missing from [FLOATER]:
 [COMPONENTS]
 	</notification>
-	<notification label="Replace Existing Attachment" name="ReplaceAttachment">
+	<notification label="取代現有的附件" name="ReplaceAttachment">
 		There is already an object attached to this point on your body.
 Do you want to replace it with the selected object?
 		<form name="form">
-			<ignore name="ignore" text="Replace an existing attachment with the selected item"/>
+			<ignore name="ignore" text="以所選擇的物品取代現有的附加物"/>
 			<button ignore="自動取代" name="Yes" text="確定"/>
 			<button ignore="絕不取代" name="No" text="取消"/>
 		</form>
@@ -2109,10 +2109,10 @@ Link to this from a web page to give others easy access to this location, or try
 		Topic: [SUBJECT], Message: [MESSAGE]
 	</notification>
 	<notification name="FriendOnline">
-		[NAME] is Online
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; 上線
 	</notification>
 	<notification name="FriendOffline">
-		[NAME] is Offline
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; 離線
 	</notification>
 	<notification name="AddSelfFriend">
 		Although you&apos;re very nice, you can&apos;t add yourself as a friend.
@@ -2208,7 +2208,7 @@ Please select a single object.
 		[NAME] 接收到你提供的收納區物品。
 	</notification>
 	<notification name="InventoryDeclined">
-		[NAME] 拒絕你提供的收納區物品。
+		[NAME] 謝絕你提供的收納區物品。
 	</notification>
 	<notification name="ObjectMessage">
 		[NAME]: [MESSAGE]
@@ -2418,7 +2418,7 @@ Please try again in a few moments.
 	</notification>
 	<notification name="ObjectGiveItem">
 		An object named &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; owned by [NAME_SLURL] has given you this [OBJECTTYPE]:
-&lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;
+[ITEM_SLURL]
 		<form name="form">
 			<button name="Keep" text="Keep"/>
 			<button name="Discard" text="Discard"/>
@@ -2443,7 +2443,7 @@ Please try again in a few moments.
 		[MESSAGE]
 		<form name="form">
 			<button name="Join" text="加入"/>
-			<button name="Decline" text="Decline"/>
+			<button name="Decline" text="謝絕"/>
 			<button name="Info" text="資訊"/>
 		</form>
 	</notification>
@@ -2475,7 +2475,7 @@ Please try again in a few moments.
 (By default, you will be able to see each other&apos;s online status.)
 		<form name="form">
 			<button name="Accept" text="接受"/>
-			<button name="Decline" text="Decline"/>
+			<button name="Decline" text="謝絕"/>
 		</form>
 	</notification>
 	<notification name="FriendshipOffered">
@@ -2487,27 +2487,27 @@ Please try again in a few moments.
 (By default, you will be able to see each other&apos;s online status.)
 		<form name="form">
 			<button name="Accept" text="接受"/>
-			<button name="Decline" text="Decline"/>
+			<button name="Decline" text="謝絕"/>
 		</form>
 	</notification>
 	<notification name="FriendshipAccepted">
-		[NAME] accepted your friendship offer.
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; accepted your friendship offer.
 	</notification>
 	<notification name="FriendshipDeclined">
-		[NAME] declined your friendship offer.
+		&lt;nolink&gt;[NAME]&lt;/nolink&gt; 謝絕你的交友邀請。
 	</notification>
 	<notification name="FriendshipAcceptedByMe">
-		Friendship offer accepted.
+		交友邀請被接受。
 	</notification>
 	<notification name="FriendshipDeclinedByMe">
-		Friendship offer declined.
+		交友邀請被謝絕。
 	</notification>
 	<notification name="OfferCallingCard">
 		[NAME] is offering their calling card.
 This will add a bookmark in your inventory so you can quickly IM this Resident.
 		<form name="form">
 			<button name="Accept" text="接受"/>
-			<button name="Decline" text="Decline"/>
+			<button name="Decline" text="謝絕"/>
 		</form>
 	</notification>
 	<notification name="RegionRestartMinutes">
@@ -2559,7 +2559,7 @@ Grant this request?
 		<form name="form">
 			<button name="Grant" text="Grant"/>
 			<button name="Deny" text="Deny"/>
-			<button name="Details" text="Details..."/>
+			<button name="Details" text="細節..."/>
 		</form>
 	</notification>
 	<notification name="ScriptDialog">
@@ -2602,7 +2602,7 @@ Things you build here will be deleted after you leave, so don&apos;t forget to r
 Click Accept to join the call or Decline to decline the invitation. Click Block to block this caller.
 		<form name="form">
 			<button name="Accept" text="接受"/>
-			<button name="Decline" text="Decline"/>
+			<button name="Decline" text="謝絕"/>
 			<button name="Mute" text="Block"/>
 		</form>
 	</notification>
@@ -2620,7 +2620,7 @@ Click Accept to join the call or Decline to decline the invitation. Click Block
 Click Accept to join the call or Decline to decline the invitation. Click Block to block this caller.
 		<form name="form">
 			<button name="Accept" text="接受"/>
-			<button name="Decline" text="Decline"/>
+			<button name="Decline" text="謝絕"/>
 			<button name="Mute" text="Block"/>
 		</form>
 	</notification>
@@ -2629,7 +2629,7 @@ Click Accept to join the call or Decline to decline the invitation. Click Block
 Click Accept to join the call or Decline to decline the invitation. Click Block to block this caller.
 		<form name="form">
 			<button name="Accept" text="接受"/>
-			<button name="Decline" text="Decline"/>
+			<button name="Decline" text="謝絕"/>
 			<button name="Mute" text="Block"/>
 		</form>
 	</notification>
@@ -2638,7 +2638,7 @@ Click Accept to join the call or Decline to decline the invitation. Click Block
 Click Accept to join the chat or Decline to decline the invitation. Click Block to block this caller.
 		<form name="form">
 			<button name="Accept" text="接受"/>
-			<button name="Decline" text="Decline"/>
+			<button name="Decline" text="謝絕"/>
 			<button name="Mute" text="Block"/>
 		</form>
 	</notification>
@@ -2757,10 +2757,10 @@ With the following Residents:
 		<usetemplate name="okcancelbuttons" notext="取消" yestext="確定"/>
 	</notification>
 	<notification name="ItemsShared">
-		Items successfully shared.
+		物品已成功分享。
 	</notification>
 	<notification name="DeedToGroupFail">
-		Deed to group failed.
+		讓渡給群組失敗。
 	</notification>
 	<notification name="AvatarRezNotification">
 		( [EXISTENCE] seconds alive )
@@ -2822,7 +2822,7 @@ You uploaded a [RESOLUTION] baked texture for &apos;[BODYREGION]&apos; after [TI
 You locally updated a [RESOLUTION] baked texture for &apos;[BODYREGION]&apos; after [TIME] seconds.
 	</notification>
 	<notification name="ConfirmLeaveCall">
-		Are you sure you want to leave this call?
+		你確定要離開這段通話?
 		<usetemplate ignoretext="我結束通話前進行確認" name="okcancelignore" notext="否" yestext="是"/>
 	</notification>
 	<notification name="ConfirmMuteAll">
@@ -2846,7 +2846,7 @@ Click on the up arrow to see the voice control panel.
 
 Hiding the Speak button will disable the voice feature.
 	</notification>
-	<notification label="Explore the World" name="HintDestinationGuide">
+	<notification label="探索世界" name="HintDestinationGuide">
 		The Destination Guide contains thousands of new places to discover. Select a location and choose Teleport to start exploring.
 	</notification>
 	<notification label="側邊欄" name="HintSidePanel">
@@ -2862,7 +2862,7 @@ Click anywhere on the ground to walk to that spot.
 2. Click and Drag to Rotate View
 Click and drag anywhere on the world to rotate your view
 	</notification>
-	<notification label="Display Name" name="HintDisplayName">
+	<notification label="顯示名稱" name="HintDisplayName">
 		Set your customizable display name here. This is in addition to your unique username, which can&apos;t be changed. You can change how you see other people&apos;s names in your preferences.
 	</notification>
 	<notification label="View" name="HintView">
@@ -2871,7 +2871,7 @@ Click and drag anywhere on the world to rotate your view
 	<notification label="收納區" name="HintInventory">
 		Check your inventory to find items. Newest items can be easily found in the Recent tab.
 	</notification>
-	<notification label="You&apos;ve got Linden Dollars!" name="HintLindenDollar">
+	<notification label="你得到林登幣!" name="HintLindenDollar">
 		Here&apos;s your current balance of L$. Click Buy L$ to purchase more Linden Dollars.
 	</notification>
 	<notification name="PopupAttempt">
@@ -2892,38 +2892,38 @@ Click and drag anywhere on the world to rotate your view
 	</notification>
 	<notification label="" name="ModeChange">
 		改變劉覽器模式要求你必須結束退出並重新啟動。
-		<usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/>
+		<usetemplate name="okcancelbuttons" notext="不要結束退出" yestext="結束退出"/>
 	</notification>
 	<notification label="" name="NoClassifieds">
 		Creation and editing of Classifieds is only available in Advanced mode. Would you like to quit and change modes? The mode selector can be found on the login screen.
-		<usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/>
+		<usetemplate name="okcancelbuttons" notext="不要結束退出" yestext="結束退出"/>
 	</notification>
 	<notification label="" name="NoGroupInfo">
 		Creation and editing of Groups is only available in Advanced mode. Would you like to quit and change modes? The mode selector can be found on the login screen.
-		<usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/>
+		<usetemplate name="okcancelbuttons" notext="不要結束退出" yestext="結束退出"/>
 	</notification>
 	<notification label="" name="NoPicks">
 		Creation and editing of Picks is only available in Advanced mode. Would you like to quit and change modes? The mode selector can be found on the login screen.
-		<usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/>
+		<usetemplate name="okcancelbuttons" notext="不要結束退出" yestext="結束退出"/>
 	</notification>
 	<notification label="" name="NoWorldMap">
 		Viewing of the world map is only available in Advanced mode. Would you like to quit and change modes? The mode selector can be found on the login screen.
-		<usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/>
+		<usetemplate name="okcancelbuttons" notext="不要結束退出" yestext="結束退出"/>
 	</notification>
 	<notification label="" name="NoVoiceCall">
 		Voice calls are only available in Advanced mode. Would you like to logout and change modes?
-		<usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/>
+		<usetemplate name="okcancelbuttons" notext="不要結束退出" yestext="結束退出"/>
 	</notification>
 	<notification label="" name="NoAvatarShare">
 		Sharing is only available in Advanced mode. Would you like to logout and change modes?
-		<usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/>
+		<usetemplate name="okcancelbuttons" notext="不要結束退出" yestext="結束退出"/>
 	</notification>
 	<notification label="" name="NoAvatarPay">
 		Paying other residents is only available in Advanced mode. Would you like to logout and change modes?
-		<usetemplate name="okcancelbuttons" notext="不結束退出" yestext="結束退出"/>
+		<usetemplate name="okcancelbuttons" notext="不要結束退出" yestext="結束退出"/>
 	</notification>
 	<global name="UnsupportedCPU">
-		- Your CPU speed does not meet the minimum requirements.
+		- 你的 CPU 運算速度未達到系統最低配備要求。
 	</global>
 	<global name="UnsupportedGLRequirements">
 		You do not appear to have the proper hardware requirements for [APP_NAME]. [APP_NAME] requires an OpenGL graphics card that has multitexture support. If this is the case, you may want to make sure that you have the latest drivers for your graphics card, and service packs and patches for your operating system.
@@ -2940,7 +2940,7 @@ If you continue to have problems, please visit the [SUPPORT_SITE].
 		- 你的顯示卡未達系統最低配備要求。
 	</global>
 	<global name="UnsupportedRAM">
-		- Your system memory does not meet the minimum requirements.
+		- 你的系統記憶體卡未達系統最低配備要求。
 	</global>
 	<global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
 		若你擁有一塊土地,你可以標記它成為你的家的位置。
diff --git a/indra/newview/skins/default/xui/zh/panel_bottomtray.xml b/indra/newview/skins/default/xui/zh/panel_bottomtray.xml
index 2b0cd7c0a65568b6c7645982d87d8563ad34b2f6..734b83e6cced99fde7a5fc998765bc1de59d80c2 100644
--- a/indra/newview/skins/default/xui/zh/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/zh/panel_bottomtray.xml
@@ -16,7 +16,7 @@
 			<bottomtray_button label="移動" name="movement_btn" tool_tip="顯示 / 隱藏 移動控制"/>
 		</layout_panel>
 		<layout_panel name="cam_panel">
-			<bottomtray_button label="View" name="camera_btn" tool_tip="顯示 / 隱藏 攝影機控制"/>
+			<bottomtray_button label="視角" name="camera_btn" tool_tip="顯示 / 隱藏 攝影機控制"/>
 		</layout_panel>
 		<layout_panel name="snapshot_panel">
 			<bottomtray_button name="snapshots" tool_tip="拍攝快照"/>
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_alpha.xml b/indra/newview/skins/default/xui/zh/panel_edit_alpha.xml
index 6b17302bf18aeca9918a80a7f877cf38c4163068..eda4e99a13c923eaab509b28ce4b93c45fda32e2 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_alpha.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_alpha.xml
@@ -2,11 +2,11 @@
 <panel name="edit_alpha_panel">
 	<scroll_container name="avatar_alpha_color_panel_scroll">
 		<panel name="avatar_alpha_color_panel">
-			<texture_picker label="下半身半透明" name="Lower Alpha" tool_tip="點擊以挑選圖片"/>
-			<texture_picker label="上半身半透明" name="Upper Alpha" tool_tip="點擊以挑選圖片"/>
-			<texture_picker label="頭部半透明" name="Head Alpha" tool_tip="點擊以挑選圖片"/>
-			<texture_picker label="眼睛半透明" name="Eye Alpha" tool_tip="點擊以挑選圖片"/>
-			<texture_picker label="頭髮半透明" name="Hair Alpha" tool_tip="點擊以挑選圖片"/>
+			<texture_picker label="下半身半透明" name="Lower Alpha" tool_tip="點擊以挑選圖像"/>
+			<texture_picker label="上半身半透明" name="Upper Alpha" tool_tip="點擊以挑選圖像"/>
+			<texture_picker label="頭部半透明" name="Head Alpha" tool_tip="點擊以挑選圖像"/>
+			<texture_picker label="眼睛半透明" name="Eye Alpha" tool_tip="點擊以挑選圖像"/>
+			<texture_picker label="頭髮半透明" name="Hair Alpha" tool_tip="點擊以挑選圖像"/>
 		</panel>
 	</scroll_container>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_eyes.xml b/indra/newview/skins/default/xui/zh/panel_edit_eyes.xml
index 99e2874319ab862bc11f9cac27db49cf5412b45c..40dd61971af229df8d599b8de2b65ce5b4bcbd86 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_eyes.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_eyes.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_eyes_panel">
 	<panel name="avatar_eye_color_panel">
-		<texture_picker label="Iris" name="Iris" tool_tip="點擊以挑選圖片"/>
+		<texture_picker label="Iris" name="Iris" tool_tip="點擊以挑選圖像"/>
 	</panel>
 	<panel name="accordion_panel">
 		<accordion name="wearable_accordion">
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_gloves.xml b/indra/newview/skins/default/xui/zh/panel_edit_gloves.xml
index 9c542366bcb6c320168c9a953e5b133c3a0a9e8f..7b39e33a9b9b88525db461d530025da745d2bf76 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_gloves.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_gloves.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_gloves_panel">
 	<panel name="avatar_gloves_color_panel">
-		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/>
+		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖像"/>
 		<color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/>
 	</panel>
 	<panel name="accordion_panel">
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_hair.xml b/indra/newview/skins/default/xui/zh/panel_edit_hair.xml
index d9ddafac3b2c57b8871ba8d280c78e8f0a502a30..a7440093bce3755f4066583dca05a4be646366c1 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_hair.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_hair.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_hair_panel">
 	<panel name="avatar_hair_color_panel">
-		<texture_picker label="材質" name="Texture" tool_tip="點擊以挑選圖片"/>
+		<texture_picker label="材質" name="Texture" tool_tip="點擊以挑選圖像"/>
 	</panel>
 	<panel name="accordion_panel">
 		<accordion name="wearable_accordion">
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_jacket.xml b/indra/newview/skins/default/xui/zh/panel_edit_jacket.xml
index df85f7deb2a06e96e039318085cf1a5d4d9a389d..dcef070e2ef7969284ff9a64bc96f5c4cddc1fe9 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_jacket.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_jacket.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_jacket_panel">
 	<panel name="avatar_jacket_color_panel">
-		<texture_picker label="上半身材質" name="Upper Fabric" tool_tip="點擊以挑選圖片"/>
-		<texture_picker label="下半身材質" name="Lower Fabric" tool_tip="點擊以挑選圖片"/>
+		<texture_picker label="上半身材質" name="Upper Fabric" tool_tip="點擊以挑選圖像"/>
+		<texture_picker label="下半身材質" name="Lower Fabric" tool_tip="點擊以挑選圖像"/>
 		<color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/>
 	</panel>
 	<panel name="accordion_panel">
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_pants.xml b/indra/newview/skins/default/xui/zh/panel_edit_pants.xml
index 76560256f7a73e4669146592fe0d51e2b052beb9..01b875f1bdba890f4c11e205a9b9f0ee8a975dc4 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_pants.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_pants.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_pants_panel">
 	<panel name="avatar_pants_color_panel">
-		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/>
+		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖像"/>
 		<color_swatch label="Color/Tint" name="Color/Tint" tool_tip="點擊以開啟顏色挑選器"/>
 	</panel>
 	<panel name="accordion_panel">
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_profile.xml b/indra/newview/skins/default/xui/zh/panel_edit_profile.xml
index 2258e51b856a1eea56857d47c1995d4e2b5dfb55..7734c3a41779163b979504ab55e85dd36ac9f5e7 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_profile.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_profile.xml
@@ -26,9 +26,9 @@
 	<scroll_container name="profile_scroll">
 		<panel name="scroll_content_panel">
 			<panel name="data_panel">
-				<text name="display_name_label" value="Display Name:"/>
+				<text name="display_name_label" value="顯示名稱:"/>
 				<text name="solo_username_label" value="使用者名稱:"/>
-				<button name="set_name" tool_tip="Set Display Name"/>
+				<button name="set_name" tool_tip="設定顯示名稱"/>
 				<text name="user_label" value="使用者名稱:"/>
 				<panel name="lifes_images_panel">
 					<panel name="second_life_image_panel">
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml b/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml
index ecfc1e2fad29523f453588d0f980ae5203b265fe..f8ff76aa9b8d73d644507dc83571d6a849a9b6ad 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_shirt.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_shirt_panel">
 	<panel name="avatar_shirt_color_panel">
-		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/>
+		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖像"/>
 		<color_swatch label="Color/Tint" name="Color/Tint" tool_tip="點擊以開啟顏色挑選器"/>
 	</panel>
 	<panel name="accordion_panel">
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_shoes.xml b/indra/newview/skins/default/xui/zh/panel_edit_shoes.xml
index 675caf9e2e4a9ed2ce9bd36fd14d9882063301d3..97e43f57532163e80a445dcfa70e468975aac875 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_shoes.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_shoes.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_shoes_panel">
 	<panel name="avatar_shoes_color_panel">
-		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/>
+		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖像"/>
 		<color_swatch label="顏色/色調" name="Color/Tint" tool_tip="點擊以開啟顏色挑選器"/>
 	</panel>
 	<panel name="accordion_panel">
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_skin.xml b/indra/newview/skins/default/xui/zh/panel_edit_skin.xml
index 22f02790601dc68742304b716a0b1b3946a00a4b..fdd6d05ca592148666882343a393e6e8ad00f787 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_skin.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_skin.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_skin_panel">
 	<panel name="avatar_skin_color_panel">
-		<texture_picker label="Head Tattoos" name="Head Tattoos" tool_tip="點擊以挑選圖片"/>
-		<texture_picker label="Upper Tattoos" name="Upper Tattoos" tool_tip="點擊以挑選圖片"/>
-		<texture_picker label="Lower Tattoos" name="Lower Tattoos" tool_tip="點擊以挑選圖片"/>
+		<texture_picker label="Head Tattoos" name="Head Tattoos" tool_tip="點擊以挑選圖像"/>
+		<texture_picker label="Upper Tattoos" name="Upper Tattoos" tool_tip="點擊以挑選圖像"/>
+		<texture_picker label="Lower Tattoos" name="Lower Tattoos" tool_tip="點擊以挑選圖像"/>
 	</panel>
 	<panel name="accordion_panel">
 		<accordion name="wearable_accordion">
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml b/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml
index 5c46f94fe948956751ccbe955410372a2b6a270e..10432c16b102aa7df584d17016d46e7d182cb1e5 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_skirt.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_skirt_panel">
 	<panel name="avatar_skirt_color_panel">
-		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/>
+		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖像"/>
 		<color_swatch label="Color/Tint" name="Color/Tint" tool_tip="點擊以開啟顏色挑選器"/>
 	</panel>
 	<panel name="accordion_panel">
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_socks.xml b/indra/newview/skins/default/xui/zh/panel_edit_socks.xml
index 09c888f226e98aefcda9799a3546aaa6ffe6425b..6727781740a64049eae845a445993548fc16b770 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_socks.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_socks.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_socks_panel">
 	<panel name="avatar_socks_color_panel">
-		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/>
+		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖像"/>
 		<color_swatch label="Color/Tint" name="Color/Tint" tool_tip="點擊以開啟顏色挑選器"/>
 	</panel>
 	<panel name="accordion_panel">
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/zh/panel_edit_tattoo.xml
index 946f8b22dce8f731375f33a39309c7ef27acf13b..1b34a0e0eee6a6e3deca3936e78e9333e977b1e3 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_tattoo.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_tattoo_panel">
 	<panel name="avatar_tattoo_color_panel">
-		<texture_picker label="頭部刺青" name="Head Tattoo" tool_tip="點擊以挑選圖片"/>
+		<texture_picker label="頭部刺青" name="Head Tattoo" tool_tip="點擊以挑選圖像"/>
 		<texture_picker label="上半身刺青" name="Upper Tattoo" tool_tip="點擊以挑選照片"/>
-		<texture_picker label="下半身刺青" name="Lower Tattoo" tool_tip="點擊以挑選圖片"/>
+		<texture_picker label="下半身刺青" name="Lower Tattoo" tool_tip="點擊以挑選圖像"/>
 		<color_swatch label="Color/Tint" name="Color/Tint" tool_tip="點擊以開啟顏色挑選器"/>
 	</panel>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_underpants.xml b/indra/newview/skins/default/xui/zh/panel_edit_underpants.xml
index 82ab70bafc4a3911ae8b1de13af2859b870dacd9..15cae8d23360faf211ea68dded025bf6362da451 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_underpants.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_underpants.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_underpants_panel">
 	<panel name="avatar_underpants_color_panel">
-		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/>
+		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖像"/>
 		<color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open color picker"/>
 	</panel>
 	<panel name="accordion_panel">
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/zh/panel_edit_undershirt.xml
index b28466877711cb81bb89f017cf840d8fd43d4a70..486175eb64839f87f30be80221b01661606541ea 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_undershirt.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_undershirt.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="edit_undershirt_panel">
 	<panel name="avatar_undershirt_color_panel">
-		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖片"/>
+		<texture_picker label="材質" name="Fabric" tool_tip="點擊以挑選圖像"/>
 		<color_swatch label="Color/Tint" name="Color/Tint" tool_tip="Click to open Color Picker"/>
 	</panel>
 	<panel name="accordion_panel">
diff --git a/indra/newview/skins/default/xui/zh/panel_group_general.xml b/indra/newview/skins/default/xui/zh/panel_group_general.xml
index f70fbf22a8694dddeed0d00efd4cf369f98f403c..55cbf5a6177d2815eabe14e7acbaf9611a9c577e 100644
--- a/indra/newview/skins/default/xui/zh/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/zh/panel_group_general.xml
@@ -12,7 +12,7 @@ Hover your mouse over the options for more help.
 		Retrieving member data
 	</panel.string>
 	<panel name="group_info_top">
-		<texture_picker label="" name="insignia" tool_tip="點擊以挑選圖片"/>
+		<texture_picker label="" name="insignia" tool_tip="點擊以挑選圖像"/>
 		<text name="prepend_founded_by">
 			創辦人:
 		</text>
@@ -52,6 +52,6 @@ Hover your mouse over the options for more help.
 			<combo_box.item label="適度成人內容" name="mature"/>
 			<combo_box.item label="一般普級內容" name="pg"/>
 		</combo_box>
-		<check_box initial_value="true" label="顯示在搜尋中" name="show_in_group_list" tool_tip="Let people see this group in search results"/>
+		<check_box initial_value="true" label="顯示在搜尋中" name="show_in_group_list" tool_tip="讓其他人可以在搜尋結果中看到這個群組"/>
 	</panel>
 </panel>
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
index 1bf39296839a6aeedc0f8beb5bc510f5d0731f9b..5ac7410c8b0529d0b99f26af1e0d85ce5210cb1a 100644
--- a/indra/newview/skins/default/xui/zh/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/zh/panel_group_land_money.xml
@@ -52,7 +52,7 @@
 			m²
 		</text>
 		<text name="your_contribution_max_value">
-			([AMOUNT] max)
+			([AMOUNT] 最大)
 		</text>
 		<text name="group_over_limit_text">
 			More land credits are needed to support land in use
@@ -67,14 +67,14 @@
 				載入中...
 			</text_editor>
 		</panel>
-		<panel label="DETAILS" name="group_money_details_tab">
+		<panel label="細節" name="group_money_details_tab">
 			<text_editor name="group_money_details_text">
 				載入中...
 			</text_editor>
 			<button name="earlier_details_button" tool_tip="Back"/>
 			<button name="later_details_button" tool_tip="Next"/>
 		</panel>
-		<panel label="SALES" name="group_money_sales_tab">
+		<panel label="銷售" name="group_money_sales_tab">
 			<text_editor name="group_money_sales_text">
 				載入中...
 			</text_editor>
diff --git a/indra/newview/skins/default/xui/zh/panel_main_inventory.xml b/indra/newview/skins/default/xui/zh/panel_main_inventory.xml
index f7dada226f04da54ef6b51ec51933ce8bcd16a09..53ecf3eb1956f73755ff4a946c9147b8431e91d5 100644
--- a/indra/newview/skins/default/xui/zh/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/zh/panel_main_inventory.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Things" name="main inventory panel">
+<panel label="事物" name="main inventory panel">
 	<panel.string name="ItemcountFetching">
 		Fetching [ITEM_COUNT] Items... [FILTER]
 	</panel.string>
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
index 3e44f2a584598e61fdedf767955eca92fc8dad45..321c003acd33159d4f1da89a909e5cae17c9b4cb 100644
--- a/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml
+++ b/indra/newview/skins/default/xui/zh/panel_media_settings_general.xml
@@ -17,8 +17,8 @@
 	<button label="重設" name="current_url_reset_btn"/>
 	<check_box initial_value="false" label="Auto Loop" name="auto_loop"/>
 	<check_box initial_value="false" label="First Click Interacts" name="first_click_interact"/>
-	<check_box initial_value="false" label="Auto Zoom" name="auto_zoom"/>
-	<check_box initial_value="false" label="Auto Play Media" name="auto_play"/>
+	<check_box initial_value="false" label="自動縮放" name="auto_zoom"/>
+	<check_box initial_value="false" label="自動播放媒體" name="auto_play"/>
 	<text name="media_setting_note">
 		Note: Residents can override this setting
 	</text>
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
index ec62b61c54502f9aa8008c15dc9be1f944ec4386..173edc76f6a0ace74df0748083ea622f7d610efc 100644
--- a/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml
+++ b/indra/newview/skins/default/xui/zh/panel_media_settings_permissions.xml
@@ -14,16 +14,16 @@
 	<text name="owner_label">
 		擁有者
 	</text>
-	<check_box initial_value="false" label="Allow Navigation &amp; Interactivity" name="perms_owner_interact"/>
+	<check_box initial_value="false" label="允許導航與互動" name="perms_owner_interact"/>
 	<check_box initial_value="false" label="顯示控制列" name="perms_owner_control"/>
 	<text name="group_label">
 		群組:
 	</text>
-	<check_box initial_value="false" label="Allow Navigation &amp; Interactivity" name="perms_group_interact"/>
+	<check_box initial_value="false" label="允許導航與互動" name="perms_group_interact"/>
 	<check_box initial_value="false" label="顯示控制列" name="perms_group_control"/>
 	<text name="anyone_label">
 		任何人
 	</text>
-	<check_box initial_value="false" label="Allow Navigation &amp; Interactivity" name="perms_anyone_interact"/>
+	<check_box initial_value="false" label="允許導航與互動" name="perms_anyone_interact"/>
 	<check_box initial_value="false" label="顯示控制列" name="perms_anyone_control"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_my_profile.xml b/indra/newview/skins/default/xui/zh/panel_my_profile.xml
deleted file mode 100644
index e26ccdef73f82b4fbc453205c3994ba47fece2f3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/zh/panel_my_profile.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="檔案" name="panel_profile">
-	<string name="CaptionTextAcctInfo">
-		[ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
-	</string>
-	<string name="payment_update_link_url">
-		http://www.secondlife.com/account/billing.php?lang=en
-	</string>
-	<string name="partner_edit_link_url">
-		http://www.secondlife.com/account/partners.php?lang=en
-	</string>
-	<string name="my_account_link_url" value="http://secondlife.com/account"/>
-	<string name="no_partner_text" value="ç„¡"/>
-	<string name="no_group_text" value="ç„¡"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="scroll_content_panel">
-					<panel name="second_life_image_panel">
-						<text name="display_name_descr_text">
-							User name
-						</text>
-						<text name="name_descr_text">
-							Display Name
-						</text>
-						<button label="檔案" name="see_profile_btn" tool_tip="察看這位化身的檔案"/>
-					</panel>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_notes.xml b/indra/newview/skins/default/xui/zh/panel_notes.xml
deleted file mode 100644
index 5d0e6760ff834ed000ac63f7474686899b341777..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/zh/panel_notes.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Notes &amp; Privacy" name="panel_notes">
-	<layout_stack name="layout">
-		<layout_panel name="notes_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<text name="status_message" value="My private notes:"/>
-					<text name="status_message2" value="允許這個人可以:"/>
-					<check_box label="看到我上線狀態" name="status_check"/>
-					<check_box label="在地圖上看見我" name="map_check"/>
-					<check_box label="邊輯,刪除或取下我的物件" name="objects_check"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-		<layout_panel name="notes_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="加為朋友" name="add_friend" tool_tip="Offer friendship to the Resident"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="IM" name="im" tool_tip="開啟即時訊息會話"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="通話" name="call" tool_tip="與這位居民通話"/>
-				</layout_panel>
-				<layout_panel name="show_on_map_btn_lp">
-					<button label="地圖" name="show_on_map_btn" tool_tip="Show the Resident on the map"/>
-				</layout_panel>
-				<layout_panel name="teleport_btn_lp">
-					<button label="瞬間傳送" name="teleport" tool_tip="發給瞬間傳送請求"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml
index dfd81a85cc1ce2717aafe87fcbb5510208ee188b..d9718d82948864001dad9b0be90a98ccb77d0a00 100644
--- a/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/zh/panel_outfits_inventory.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Things" name="Outfits">
+<panel label="事物" name="Outfits">
 	<panel.string name="wear_outfit_tooltip">
 		穿上所選擇的裝扮
 	</panel.string>
diff --git a/indra/newview/skins/default/xui/zh/panel_people.xml b/indra/newview/skins/default/xui/zh/panel_people.xml
index c97ff2ae967662d430195f58c79c328fc61d1d4b..9c265622fa5c031b15191b519a64693692e9d4e3 100644
--- a/indra/newview/skins/default/xui/zh/panel_people.xml
+++ b/indra/newview/skins/default/xui/zh/panel_people.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <!-- Side tray panel -->
-<panel label="People" name="people_panel">
+<panel label="人群" name="people_panel">
 	<string name="no_recent_people" value="No recent people. Looking for people to hang out with? Try [secondlife:///app/search/people Search] or the [secondlife:///app/worldmap World Map]."/>
 	<string name="no_filtered_recent_people" value="Didn&apos;t find what you&apos;re looking for? Try [secondlife:///app/search/people/[SEARCH_TERM] Search]."/>
 	<string name="no_one_near" value="No one nearby. Looking for people to hang out with? Try [secondlife:///app/search/people Search] or the [secondlife:///app/worldmap World Map]."/>
diff --git a/indra/newview/skins/default/xui/zh/panel_place_profile.xml b/indra/newview/skins/default/xui/zh/panel_place_profile.xml
index d7bcb0d0279b0cee79cb7e850eed29fe407a6ab9..1772b654346daf8813a87da3ead23fde52257ceb 100644
--- a/indra/newview/skins/default/xui/zh/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/zh/panel_place_profile.xml
@@ -66,7 +66,7 @@
 						<text name="build_value" value="On"/>
 						<text name="scripts_label" value="腳本:"/>
 						<text name="scripts_value" value="On"/>
-						<text name="damage_label" value="商害:"/>
+						<text name="damage_label" value="傷害:"/>
 						<text name="damage_value" value="Off"/>
 						<button label="關於土地" name="about_land_btn"/>
 					</panel>
@@ -102,11 +102,11 @@
 						<text name="sales_price_label" value="價格:"/>
 						<text name="area_label" value="面積:"/>
 						<text name="traffic_label" value="流量:"/>
-						<text name="primitives_label" value="Primitives:"/>
+						<text name="primitives_label" value="幾何元件:"/>
 						<text name="parcel_scripts_label" value="腳本:"/>
 						<text name="terraform_limits_label" value="土地變形限制:"/>
 						<text name="subdivide_label" value="分割土地/合併土地能力:"/>
-						<text name="resale_label" value="ReSale ability:"/>
+						<text name="resale_label" value="轉售能力:"/>
 						<text name="sale_to_label" value="出售給:"/>
 					</panel>
 				</accordion_tab>
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 c083d40a829fc09fb9048284d0572e31f6f08858..738c77fd089828824980fbfe251073f078351bc3 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
@@ -30,7 +30,7 @@
 	<spinner label="Nearby chat toasts life time:" name="nearby_toasts_lifetime"/>
 	<spinner label="Nearby chat toasts fading time:" name="nearby_toasts_fadingtime"/>
 	<text name="translate_chb_label">
-		聊天時使用機器自動進行翻譯(由 Google 所提供)
+		聊天時使用機器自動進行翻譯
 	</text>
 	<text name="translate_language_text">
 		聊天翻譯為:
@@ -50,7 +50,7 @@
 		<combo_box.item label="Русский (Russian)" name="Russian"/>
 		<combo_box.item label="Türkçe (Turkish)" name="Turkish"/>
 		<combo_box.item label="Українська (Ukrainian)" name="Ukrainian"/>
-		<combo_box.item label="中文 (简体) (Chinese)" name="Chinese"/>
+		<combo_box.item label="中文 (正體) (Chinese)" name="Chinese"/>
 		<combo_box.item label="日本語 (Japanese)" name="Japanese"/>
 		<combo_box.item label="한국어 (Korean)" name="Korean"/>
 	</combo_box>
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 cabe13adb80402555f4941e4bf5827de58dd5538..6827fab6e68db9213c3fae8cce5e0851b4a811ed 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
@@ -5,16 +5,15 @@
 	</text>
 	<combo_box name="language_combobox">
 		<combo_box.item label="系統預設" name="System Default Language"/>
-		<combo_box.item label="英語" name="English"/>
-		<combo_box.item label="Dansk (Danish) - Beta" name="Danish"/>
-		<combo_box.item label="Deutsch (German) - Beta" name="Deutsch(German)"/>
-		<combo_box.item label="Español (Spanish) - Beta" name="Spanish"/>
-		<combo_box.item label="Français (French) - Beta" name="French"/>
-		<combo_box.item label="Italiano (Italian) - Beta" name="Italian"/>
-		<combo_box.item label="Nederlands (Dutch) - Beta" name="Dutch"/>
-		<combo_box.item label="Polski (Polish) - Beta" name="Polish"/>
-		<combo_box.item label="Português (Portuguese) - Beta" name="Portugese"/>
-		<combo_box.item label="日本語 (Japanese) - Beta" name="(Japanese)"/>
+		<combo_box.item label="English (英語)" name="English"/>
+		<combo_box.item label="Dansk (丹麥語) - Beta" name="Danish"/>
+		<combo_box.item label="Deutsch (德語) - Beta" name="Deutsch(German)"/>
+		<combo_box.item label="Español (西班牙語) - Beta" name="Spanish"/>
+		<combo_box.item label="Français (法語) - Beta" name="French"/>
+		<combo_box.item label="Italiano (義大利語) - Beta" name="Italian"/>
+		<combo_box.item label="Polski (波蘭語) - Beta" name="Polish"/>
+		<combo_box.item label="Português (葡萄牙語) - Beta" name="Portugese"/>
+		<combo_box.item label="日本語 (日語) - Beta" name="(Japanese)"/>
 	</combo_box>
 	<text name="language_textbox2">
 		(須重新啟動)
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
index ee8cd9794a849872f57c045f3e9a7bb4bc898ea5..874fb6b218a5109a11473baae821ad249564303d 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
@@ -47,14 +47,14 @@
 		<text name="DrawDistanceMeterText2">
 			m
 		</text>
-		<slider label="Max. particle count:" name="MaxParticleCount"/>
+		<slider label="最大粒子效果數量:" name="MaxParticleCount"/>
 		<slider label="Max. # of non-impostor avatars:" name="MaxNumberAvatarDrawn"/>
 		<slider label="後製品質:" name="RenderPostProcess"/>
 		<text name="MeshDetailText">
 			網面細節:
 		</text>
 		<slider label="物件:" name="ObjectMeshDetail"/>
-		<slider label="Flexiprims:" name="FlexibleMeshDetail"/>
+		<slider label="彈性幾何元件:" name="FlexibleMeshDetail"/>
 		<slider label="樹木:" name="TreeMeshDetail"/>
 		<slider label="化身:" name="AvatarMeshDetail"/>
 		<slider label="地形:" name="TerrainMeshDetail"/>
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_move.xml b/indra/newview/skins/default/xui/zh/panel_preferences_move.xml
index 57e3540b3d61e7abf892f23b0ce11d18bb31c72f..ce176b1e3c5870d80ac4ed3e2a8c2494da699bfa 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_move.xml
@@ -15,7 +15,7 @@
 	<check_box label="反轉" name="invert_mouse"/>
 	<check_box label="總是使用方向鍵移動" name="arrow_keys_move_avatar_check"/>
 	<check_box label="連點按住後跑步" name="tap_tap_hold_to_run"/>
-	<check_box label="雙擊以D:" name="double_click_chkbox"/>
+	<check_box label="雙擊以:" name="double_click_chkbox"/>
 	<radio_group name="double_click_action">
 		<radio_item label="瞬間傳送" name="radio_teleport"/>
 		<radio_item label="自動導航駕駛" name="radio_autopilot"/>
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml
index bd6d465572f5257cda23c7aaf62be479daf6d95a..07fdfd87e3e7c29e9a614df7133fbd84347b9a2f 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_privacy.xml
@@ -8,7 +8,7 @@
 		(位置、圖像、網頁、搜尋的歷史紀錄)
 	</text>
 	<check_box label="將我顯示在搜尋的結果中" name="online_searchresults"/>
-	<check_box label="只有我的朋友和群組知道我在線上" name="online_visibility"/>
+	<check_box label="只有我的朋友和群組知道我上線" name="online_visibility"/>
 	<check_box label="只有我的朋友和群組可以 IM 或與我通話。" name="voice_call_friends_only_check"/>
 	<check_box label="當通話結束時關閉麥克風" name="auto_disengage_mic_check"/>
 	<check_box label="登入時顯示我最愛的地標位置(經由 &apos;開始於&apos; 的下拉式選單)" name="favorites_on_login_check"/>
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
index 8d0e2a635593178881364ab44e779c182683ea15..df1a1b73a195db45a46b31ac20ccfd849c25e5ee 100644
--- a/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml
+++ b/indra/newview/skins/default/xui/zh/panel_prim_media_controls.xml
@@ -37,28 +37,28 @@
 			<button name="fwd_btn" tool_tip="Navigate forward"/>
 		</layout_panel>
 		<layout_panel name="home">
-			<button name="home_btn" tool_tip="Home page"/>
+			<button name="home_btn" tool_tip="首頁"/>
 		</layout_panel>
 		<layout_panel name="media_stop">
 			<button name="media_stop_btn" tool_tip="停止媒體"/>
 		</layout_panel>
 		<layout_panel name="reload">
-			<button name="reload_btn" tool_tip="Reload"/>
+			<button name="reload_btn" tool_tip="重新載入"/>
 		</layout_panel>
 		<layout_panel name="stop">
-			<button name="stop_btn" tool_tip="Stop loading"/>
+			<button name="stop_btn" tool_tip="停止載入"/>
 		</layout_panel>
 		<layout_panel name="play">
-			<button name="play_btn" tool_tip="Play media"/>
+			<button name="play_btn" tool_tip="播放媒體"/>
 		</layout_panel>
 		<layout_panel name="pause">
-			<button name="pause_btn" tool_tip="Pause media"/>
+			<button name="pause_btn" tool_tip="暫停媒體"/>
 		</layout_panel>
 		<layout_panel name="media_address">
-			<line_editor name="media_address_url" tool_tip="Media URL"/>
+			<line_editor name="media_address_url" tool_tip="媒體網址"/>
 			<layout_stack name="media_address_url_icons">
 				<layout_panel>
-					<icon name="media_whitelist_flag" tool_tip="White List enabled"/>
+					<icon name="media_whitelist_flag" tool_tip="白名單已啟用"/>
 				</layout_panel>
 				<layout_panel>
 					<icon name="media_secure_lock_flag" tool_tip="Secured Browsing"/>
diff --git a/indra/newview/skins/default/xui/zh/panel_profile.xml b/indra/newview/skins/default/xui/zh/panel_profile.xml
deleted file mode 100644
index 502449ac3abbb34adefd39e8d4f4ab3ec43545f5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/zh/panel_profile.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="檔案" name="panel_profile">
-	<string name="CaptionTextAcctInfo">
-		[ACCTTYPE]
-[PAYMENTINFO] [AGEVERIFICATION]
-	</string>
-	<string name="payment_update_link_url">
-		http://www.secondlife.com/account/billing.php?lang=en
-	</string>
-	<string name="partner_edit_link_url">
-		http://www.secondlife.com/account/partners.php?lang=en
-	</string>
-	<string name="my_account_link_url" value="http://secondlife.com/account"/>
-	<string name="no_partner_text" value="ç„¡"/>
-	<string name="no_group_text" value="ç„¡"/>
-	<string name="RegisterDateFormat">
-		[REG_DATE] ([AGE])
-	</string>
-	<string name="name_text_args">
-		[NAME]
-	</string>
-	<string name="display_name_text_args">
-		[DISPLAY_NAME]
-	</string>
-	<layout_stack name="layout">
-		<layout_panel name="profile_stack">
-			<scroll_container name="profile_scroll">
-				<panel name="profile_scroll_panel">
-					<panel name="second_life_image_panel">
-						<text name="title_sl_descr_text" value="[SECOND_LIFE]:"/>
-					</panel>
-					<panel name="first_life_image_panel">
-						<text name="title_rw_descr_text" value="真實世界:"/>
-					</panel>
-					<text name="title_member_text" value="成為居民自:"/>
-					<text name="title_acc_status_text" value="帳戶狀態:"/>
-					<text name="title_partner_text" value="配偶:"/>
-					<panel name="partner_data_panel">
-						<text initial_value="(檢索中)" name="partner_text"/>
-					</panel>
-					<text name="title_groups_text" value="群組:"/>
-				</panel>
-			</scroll_container>
-		</layout_panel>
-	</layout_stack>
-	<layout_stack name="layout_verb_buttons">
-		<layout_panel name="profile_buttons_panel">
-			<layout_stack name="bottom_bar_ls">
-				<layout_panel name="add_friend_btn_lp">
-					<button label="加為朋友" name="add_friend" tool_tip="發出交友邀請給這居民"/>
-				</layout_panel>
-				<layout_panel name="im_btn_lp">
-					<button label="IM" name="im" tool_tip="開啟即時訊息會話"/>
-				</layout_panel>
-				<layout_panel name="call_btn_lp">
-					<button label="通話" name="call" tool_tip="與這位居民通話"/>
-				</layout_panel>
-				<layout_panel name="chat_btn_lp">
-					<button label="瞬間傳送" name="teleport" tool_tip="發給瞬間傳送請求"/>
-				</layout_panel>
-				<layout_panel name="overflow_btn_lp">
-					<menu_button label="▼" name="overflow_btn" tool_tip="支付金錢,或分享收納區給居民"/>
-				</layout_panel>
-			</layout_stack>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_profile_view.xml b/indra/newview/skins/default/xui/zh/panel_profile_view.xml
deleted file mode 100644
index 12fe776e450943513505f7615344c1c2b94d2fb3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/default/xui/zh/panel_profile_view.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_target_profile">
-	<string name="status_online">
-		Online
-	</string>
-	<string name="status_offline">
-		Offline
-	</string>
-	<text name="display_name_label" value="Display Name:"/>
-	<text name="solo_username_label" value="使用者名稱:"/>
-	<text name="status" value="Online"/>
-	<text name="user_name_small" value="Jack oh look at me this is a super duper long name"/>
-	<button name="copy_to_clipboard" tool_tip="覆製到剪貼簿"/>
-	<text name="user_label" value="使用者名稱:"/>
-	<tab_container name="tabs">
-		<panel label="檔案" name="panel_profile"/>
-		<panel label="精選地點" name="panel_picks"/>
-		<panel label="NOTES &amp; PRIVACY" name="panel_notes"/>
-	</tab_container>
-</panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_region_general.xml b/indra/newview/skins/default/xui/zh/panel_region_general.xml
index 38fde494aad4cfec47df9e95e89c74c35078efc7..a441b8898d2cae85c601efab99fc34340ff04580 100644
--- a/indra/newview/skins/default/xui/zh/panel_region_general.xml
+++ b/indra/newview/skins/default/xui/zh/panel_region_general.xml
@@ -24,7 +24,7 @@
 	<check_box label="限制推撞" name="restrict_pushobject"/>
 	<check_box label="允許土地轉售" name="allow_land_resell_check"/>
 	<check_box label="允許土地 合併/分割" name="allow_parcel_changes_check"/>
-	<check_box label="阻擋土地顯示於搜尋中" name="block_parcel_search_check" tool_tip="Let people see this region and its parcels in search results"/>
+	<check_box label="阻擋土地顯示於搜尋中" name="block_parcel_search_check" tool_tip="讓其他人可以在搜尋結果中看到這個地區與其中的地段"/>
 	<spinner label="人數上限" name="agent_limit_spin"/>
 	<spinner label="Object Bonus" name="object_bonus_spin"/>
 	<text label="Maturity" name="access_text">
diff --git a/indra/newview/skins/default/xui/zh/panel_region_terrain.xml b/indra/newview/skins/default/xui/zh/panel_region_terrain.xml
index 0622cb4e739f4adbe1e6aa2227c35e97ae483d87..7cae8fe8cf1df52e828d1a7d5e8ab6371822658c 100644
--- a/indra/newview/skins/default/xui/zh/panel_region_terrain.xml
+++ b/indra/newview/skins/default/xui/zh/panel_region_terrain.xml
@@ -6,14 +6,14 @@
 	<text name="region_text">
 		未知
 	</text>
-	<spinner label="Water Height" name="water_height_spin"/>
-	<spinner label="Terrain Raise Limit" name="terrain_raise_spin"/>
-	<spinner label="Terrain Lower Limit" name="terrain_lower_spin"/>
-	<check_box label="Use Estate Sun" name="use_estate_sun_check"/>
-	<check_box label="Fixed Sun" name="fixed_sun_check"/>
+	<spinner label="水文高度" name="water_height_spin"/>
+	<spinner label="地形提升限制" name="terrain_raise_spin"/>
+	<spinner label="地形降低限制" name="terrain_lower_spin"/>
+	<check_box label="使用領地的太陽設定" name="use_estate_sun_check"/>
+	<check_box label="固定太陽" name="fixed_sun_check"/>
 	<slider label="Phase" name="sun_hour_slider"/>
 	<button label="套用" name="apply_btn"/>
-	<button label="Download RAW terrain..." name="download_raw_btn" tool_tip="Available only to estate owners, not managers"/>
-	<button label="上傳 RAW 地形檔..." name="upload_raw_btn" tool_tip="Available only to estate owners, not managers"/>
+	<button label="下載 RAW 地形..." name="download_raw_btn" tool_tip="只允許領地擁有者而非管理者進行操作"/>
+	<button label="上傳 RAW 地形檔..." name="upload_raw_btn" tool_tip="只允許領地擁有者而非管理者進行操作"/>
 	<button label="Bake Terrain" name="bake_terrain_btn" tool_tip="Set current terrain as mid-point for raise/lower limits"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_script_ed.xml b/indra/newview/skins/default/xui/zh/panel_script_ed.xml
index 1dc7c1e0895af2917b7d59621d477d876c1e52d9..cc2b0fc673cff978d5ee3dd0d4b80b4a57de6f74 100644
--- a/indra/newview/skins/default/xui/zh/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/zh/panel_script_ed.xml
@@ -4,7 +4,7 @@
 		載入中...
 	</panel.string>
 	<panel.string name="can_not_view">
-		你不察看或編輯此腳本,自從它被設定為 &quot;no copy&quot; 後。你需要完整權限去察看或編輯有包含腳本在內的物件。
+		你不能察看或編輯此腳本,自從它被設定為 &quot;no copy&quot; 後。你需要完整權限去察看或編輯有包含腳本在內的物件。
 	</panel.string>
 	<panel.string name="public_objects_can_not_run">
 		公開物件不能執行腳本
diff --git a/indra/newview/skins/default/xui/zh/panel_side_tray.xml b/indra/newview/skins/default/xui/zh/panel_side_tray.xml
index b706f1839a4bcdfec182543d4902c2a7cb6de533..e5c7deb7d61fbcb728b9abfd5e37b48e3b3113a0 100644
--- a/indra/newview/skins/default/xui/zh/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/zh/panel_side_tray.xml
@@ -11,7 +11,7 @@
 			<panel label="自己" name="panel_me"/>
 		</panel_container>
 	</sidetray_tab>
-	<sidetray_tab description="Find your friends, contacts and people nearby." name="sidebar_people" tab_title="People">
+	<sidetray_tab description="Find your friends, contacts and people nearby." name="sidebar_people" tab_title="人群">
 		<panel_container name="panel_container">
 			<panel label="群組檔案" name="panel_group_info_sidetray"/>
 			<panel label="Blocked Residents &amp; Objects" name="panel_block_list_sidetray"/>
diff --git a/indra/newview/skins/default/xui/zh/role_actions.xml b/indra/newview/skins/default/xui/zh/role_actions.xml
index d5c3096b22abfc9821385c02be06b0ea6bc479c1..32bf0d22d884ab2f293cbf81594d93ff04c330a8 100644
--- a/indra/newview/skins/default/xui/zh/role_actions.xml
+++ b/indra/newview/skins/default/xui/zh/role_actions.xml
@@ -18,7 +18,7 @@
 		<action description="Change Charter, Insignia, and &apos;Show in search&apos;" longdescription="Change Charter, Insignia, and &apos;Show in search&apos;. This is done in the General section." name="group change identity" value="11"/>
 	</action_set>
 	<action_set description="These Abilities include powers to deed, modify, and sell land in this group&apos;s land holdings. To get to the About Land window, right-click the ground and select &apos;About Land&apos;, or click the &apos;i&apos; icon in the Navigation Bar." name="Parcel Management">
-		<action description="Deed land and buy land for group" longdescription="Deed land and buy land for group. This is done in About Land &gt; General tab." name="land deed" value="12"/>
+		<action description="讓渡土地或購買土地給群組" longdescription="Deed land and buy land for group. This is done in About Land &gt; General tab." name="land deed" value="12"/>
 		<action description="Abandon land to Governor Linden" longdescription="Abandon land to Governor Linden. *WARNING* Any Member in a Role with this Ability can abandon group-owned land in About Land &gt; General tab, reverting it to Linden ownership without a sale! Be sure you know what you&apos;re doing before assigning this Ability." name="land release" value="13"/>
 		<action description="Set land for sale info" longdescription="Set land for sale info. *WARNING* Any Member in a Role with this Ability can sell group-owned land in About Land &gt; General tab as they wish! Be sure you know what you&apos;re doing before assigning this Ability." name="land set sale info" value="14"/>
 		<action description="Subdivide and join parcels" longdescription="Subdivide and join parcels. This is done by right-clicking the ground, &apos;Edit Terrain&apos;, and dragging your mouse on the land to make a selection. To subdivide, select what you want to split and click &apos;Subdivide&apos;. To join, select two or more contiguous parcels and click &apos;Join&apos;." name="land divide join" value="15"/>
@@ -54,7 +54,7 @@
 		<action description="Landscaping using Linden plants" longdescription="Landscaping ability to place and move Linden trees, plants, and grasses. These items can be found in your inventory&apos;s Library &gt; Objects folder, or they can be created via the Build menu." name="land gardening" value="35"/>
 	</action_set>
 	<action_set description="These Abilities include powers to deed, modify, and sell group-owned objects. These changes are done in the Build Tools &gt; General tab. Right-click an object and Edit to see its settings." name="Object Management">
-		<action description="Deed objects to group" longdescription="Deed objects to group in the Build Tools &gt; General tab." name="object deed" value="36"/>
+		<action description="讓渡物件給群組" longdescription="Deed objects to group in the Build Tools &gt; General tab." name="object deed" value="36"/>
 		<action description="Manipulate (move, copy, modify) group-owned objects" longdescription="Manipulate (move, copy, modify) group-owned objects in the Build Tools &gt; General tab." name="object manipulate" value="38"/>
 		<action description="Set group-owned objects for sale" longdescription="Set group-owned objects for sale in the Build Tools &gt; General tab." name="object set sale" value="39"/>
 	</action_set>
diff --git a/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml b/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml
index 4cc16ed250205303d00fa9aaf7d4062bbf39220d..7abe95a4026d21ef739dd4080313c51624093e55 100644
--- a/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/zh/sidepanel_inventory.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Things" name="objects panel">
+<panel label="事物" name="objects panel">
 	<panel label="" name="sidepanel__inventory_panel">
 		<panel name="button_panel">
 			<layout_stack name="button_panel_ls">
@@ -11,8 +11,8 @@
 				</layout_panel>
 				<layout_panel name="shop_btn_lp">
 					<button label="Shop" name="shop_btn" tool_tip="Open Marketplace webpage"/>
-					<button label="Wear" name="wear_btn" tool_tip="穿上所選擇的裝扮"/>
-					<button label="Play" name="play_btn"/>
+					<button label="穿上" name="wear_btn" tool_tip="穿上所選擇的裝扮"/>
+					<button label="播放" name="play_btn"/>
 					<button label="瞬間傳送" name="teleport_btn" tool_tip="瞬間傳送到所選的區域"/>
 				</layout_panel>
 			</layout_stack>
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 5aad4568bdff0d016e874b0951e51ded1746b3df..3d46e52726de68ac71e2738896935c204a6e4d07 100644
--- a/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/zh/sidepanel_task_info.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <panel name="object properties" title="物件檔案">
 	<panel.string name="text deed continued">
-		Deed
+		讓渡
 	</panel.string>
 	<panel.string name="text deed">
-		Deed
+		讓渡
 	</panel.string>
 	<panel.string name="text modify info 1">
 		你可以修改這個物件
@@ -56,7 +56,7 @@
 		</text>
 		<button name="button set group" tool_tip="選擇一個群組以分享這個物件的權限"/>
 		<name_box initial_value="載入中..." name="Group Name Proxy"/>
-		<button label="Deed" label_selected="Deed" name="button deed" tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer."/>
+		<button label="讓渡" label_selected="讓渡" name="button deed" tool_tip="Deeding gives this item away with next owner permissions. Group shared objects can be deeded by a group officer."/>
 		<text name="label click action">
 			點擊以:
 		</text>
@@ -85,16 +85,16 @@
 			</text>
 			<check_box label="修改" name="checkbox next owner can modify"/>
 			<check_box label="覆製" name="checkbox next owner can copy"/>
-			<check_box label="轉移" name="checkbox next owner can transfer" tool_tip="Next owner can give away or resell this object"/>
+			<check_box label="轉移" name="checkbox next owner can transfer" tool_tip="下一個擁有者可以送出或轉售這個物件"/>
 		</panel>
 		<check_box label="出售" name="checkbox for sale"/>
 		<combo_box name="sale type">
-			<combo_box.item label="Copy" name="Copy"/>
-			<combo_box.item label="Contents" name="Contents"/>
-			<combo_box.item label="Original" name="Original"/>
+			<combo_box.item label="副本" name="Copy"/>
+			<combo_box.item label="內容" name="Contents"/>
+			<combo_box.item label="原件" name="Original"/>
 		</combo_box>
 		<spinner label="價格: L$" name="Edit Cost"/>
-		<check_box label="顯示在搜尋中" name="search_check" tool_tip="Let people see this object in search results"/>
+		<check_box label="顯示在搜尋中" name="search_check" tool_tip="讓其他人可以在搜尋結果中察看到此物件"/>
 		<text name="B:">
 			B:
 		</text>
diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml
index 0949e61fa1b76e665f38bd3584848ba5bab3d7f4..6dbe44d32e224827d80af67ce72496356b9df93a 100644
--- a/indra/newview/skins/default/xui/zh/strings.xml
+++ b/indra/newview/skins/default/xui/zh/strings.xml
@@ -1042,10 +1042,10 @@
 		按下 ESC 鍵回復到世界的視角
 	</string>
 	<string name="InventoryNoMatchingItems">
-		Didn&apos;t find what you&apos;re looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search].
+		沒有發現你想要找的嗎?試試 [secondlife:///app/search/all/[SEARCH_TERM] 搜尋]。
 	</string>
 	<string name="PlacesNoMatchingItems">
-		Didn&apos;t find what you&apos;re looking for? Try [secondlife:///app/search/places/[SEARCH_TERM] Search].
+		沒有發現你想要找的嗎?試試 [secondlife:///app/search/places/[SEARCH_TERM] 搜尋]。
 	</string>
 	<string name="FavoritesNoMatchingItems">
 		Drag a landmark here to add it to your favorites.
@@ -1190,25 +1190,25 @@
 		Buy for L$
 	</string>
 	<string name="Stone">
-		Stone
+		石頭
 	</string>
 	<string name="Metal">
-		Metal
+		金屬
 	</string>
 	<string name="Glass">
-		Glass
+		玻璃
 	</string>
 	<string name="Wood">
-		Wood
+		木頭
 	</string>
 	<string name="Flesh">
-		Flesh
+		肌肉
 	</string>
 	<string name="Plastic">
-		Plastic
+		塑膠
 	</string>
 	<string name="Rubber">
-		Rubber
+		橡膠
 	</string>
 	<string name="Light">
 		Light
@@ -1385,7 +1385,7 @@
 		Charter Member
 	</string>
 	<string name="AcctTypeEmployee">
-		Linden Lab Employee
+		林登實驗室員工
 	</string>
 	<string name="PaymentInfoUsed">
 		Payment Info Used
@@ -1433,7 +1433,7 @@
 		伺服器上未發現腳本。
 	</string>
 	<string name="CompileQueueProblemDownloading">
-		Problem downloading
+		問題下載中
 	</string>
 	<string name="CompileQueueInsufficientPermDownload">
 		Insufficient permissions to download a script.
@@ -1491,7 +1491,7 @@
 		(未知)
 	</string>
 	<string name="SummaryForTheWeek" value="Summary for this week, beginning on"/>
-	<string name="NextStipendDay" value="The next stipend day is"/>
+	<string name="NextStipendDay" value="下一個發薪日為"/>
 	<string name="GroupIndividualShare" value="Group       Individual Share"/>
 	<string name="GroupColumn" value="群組"/>
 	<string name="Balance">
@@ -1507,7 +1507,7 @@
 		Total
 	</string>
 	<string name="NoGroupDataFound">
-		No group data found for group
+		無群組資料發現
 	</string>
 	<string name="IMParentEstate">
 		parent estate
@@ -1540,13 +1540,13 @@
 		地段腳本記憶體
 	</string>
 	<string name="ScriptLimitsParcelsOwned">
-		Parcels Listed: [PARCELS]
+		地段清單:[PARCELS]
 	</string>
 	<string name="ScriptLimitsMemoryUsed">
-		Memory used: [COUNT] kb out of [MAX] kb; [AVAILABLE] kb available
+		計憶體用量:使用 [MAX] kb 中的 [COUNT] kb ;剩餘 [AVAILABLE] kb 可用
 	</string>
 	<string name="ScriptLimitsMemoryUsedSimple">
-		Memory used: [COUNT] kb
+		記憶體用量:[COUNT] kb
 	</string>
 	<string name="ScriptLimitsParcelScriptURLs">
 		地段腳本 URLs
@@ -1573,7 +1573,7 @@
 		You do not have permission to examine this parcel
 	</string>
 	<string name="SITTING_ON">
-		Sitting On
+		坐在
 	</string>
 	<string name="ATTACH_CHEST">
 		胸部
@@ -1759,7 +1759,7 @@
 		預覽
 	</string>
 	<string name="MultiPropertiesTitle">
-		Properties
+		屬性
 	</string>
 	<string name="InvOfferAnObjectNamed">
 		An object named
@@ -1889,40 +1889,40 @@
 		PDT
 	</string>
 	<string name="Direction_Forward">
-		Forward
+		向前
 	</string>
 	<string name="Direction_Left">
-		Left
+		向左
 	</string>
 	<string name="Direction_Right">
-		Right
+		向右
 	</string>
 	<string name="Direction_Back">
-		Back
+		向後
 	</string>
 	<string name="Direction_North">
-		North
+		北
 	</string>
 	<string name="Direction_South">
-		South
+		南
 	</string>
 	<string name="Direction_West">
-		West
+		西
 	</string>
 	<string name="Direction_East">
-		East
+		東
 	</string>
 	<string name="Direction_Up">
-		Up
+		向上
 	</string>
 	<string name="Direction_Down">
-		Down
+		向下
 	</string>
 	<string name="Any Category">
 		任何類別
 	</string>
 	<string name="Shopping">
-		Shopping
+		採購
 	</string>
 	<string name="Land Rental">
 		Land Rental
@@ -1958,28 +1958,28 @@
 		完全成人
 	</string>
 	<string name="Arts&amp;Culture">
-		Arts &amp; Culture
+		藝術與文化
 	</string>
 	<string name="Business">
-		Business
+		商業
 	</string>
 	<string name="Educational">
-		Educational
+		教育
 	</string>
 	<string name="Gaming">
-		Gaming
+		遊戲
 	</string>
 	<string name="Hangout">
 		聚會所
 	</string>
 	<string name="Newcomer Friendly">
-		Newcomer Friendly
+		新手友善
 	</string>
 	<string name="Parks&amp;Nature">
-		Parks &amp; Nature
+		公園與自然
 	</string>
 	<string name="Residential">
-		Residential
+		住宅
 	</string>
 	<string name="Stage">
 		Stage
@@ -2024,36 +2024,36 @@
 		---
 	</string>
 	<string name="Multiple Media">
-		Multiple Media
+		多媒體
 	</string>
 	<string name="Play Media">
-		Play/Pause Media
+		播放/暫停 媒體
 	</string>
 	<string name="MBCmdLineError">
-		An error was found parsing the command line.
-Please see: http://wiki.secondlife.com/wiki/Client_parameters
-Error:
+		解析命令列時發現錯誤。
+請參閱: http://wiki.secondlife.com/wiki/Client_parameters
+錯誤:
 	</string>
 	<string name="MBCmdLineUsg">
-		[APP_NAME] Command line usage:
+		[APP_NAME] 命令列用法:
 	</string>
 	<string name="MBUnableToAccessFile">
-		[APP_NAME] is unable to access a file that it needs.
+		[APP_NAME] 無法存取它所需要的檔案。
 
 This can be because you somehow have multiple copies running, or your system incorrectly thinks a file is open.
 If this message persists, restart your computer and try again.
 If it continues to persist, you may need to completely uninstall [APP_NAME] and reinstall it.
 	</string>
 	<string name="MBFatalError">
-		Fatal Error
+		致命錯誤
 	</string>
 	<string name="MBRequiresAltiVec">
 		[APP_NAME] requires a processor with AltiVec (G4 or later).
 	</string>
 	<string name="MBAlreadyRunning">
-		[APP_NAME] is already running.
-Check your task bar for a minimized copy of the program.
-If this message persists, restart your computer.
+		[APP_NAME] 已經在執行中。
+請檢查你的工作列裡是否有其他最小化的相同程式。
+如果這個訊息持續出現,請重新啟動你的電腦。
 	</string>
 	<string name="MBFrozenCrashed">
 		[APP_NAME] appears to have frozen or crashed on the previous run.
@@ -2082,8 +2082,8 @@ Please download the latest version from www.secondlife.com.
 		錯誤
 	</string>
 	<string name="MBFullScreenErr">
-		Unable to run fullscreen at [WIDTH] x [HEIGHT].
-Running in window.
+		無法執行全螢幕於 [WIDTH] x [HEIGHT].
+執行於視窗中。
 	</string>
 	<string name="MBDestroyWinFailed">
 		Shutdown Error while destroying window (DestroyWindow() failed)
@@ -2111,7 +2111,7 @@ Also be sure your monitor is set to True Color (32-bit) in Control Panels &gt; D
 If you continue to receive this message, contact the [SUPPORT_SITE].
 	</string>
 	<string name="MBPixelFmtSetErr">
-		Can&apos;t set pixel format
+		無法設定像素格式
 	</string>
 	<string name="MBGLContextErr">
 		Can&apos;t create GL rendering context
@@ -2920,7 +2920,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Middle Part
 	</string>
 	<string name="More">
-		More
+		更多
 	</string>
 	<string name="More Blush">
 		More Blush
@@ -3559,7 +3559,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		購買這塊土地
 	</string>
 	<string name="LocationCtrlVoiceTooltip">
-		Voice not available here
+		此地並不允許語音
 	</string>
 	<string name="LocationCtrlFlyTooltip">
 		不允許飛行
@@ -3568,13 +3568,13 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		禁止推撞
 	</string>
 	<string name="LocationCtrlBuildTooltip">
-		Building/dropping objects not allowed
+		建造/丟棄 物件不被允許
 	</string>
 	<string name="LocationCtrlScriptsTooltip">
-		Scripts not allowed
+		腳本不被允許
 	</string>
 	<string name="LocationCtrlDamageTooltip">
-		Health
+		健康
 	</string>
 	<string name="LocationCtrlAdultIconTooltip">
 		完全成人地區
@@ -3628,7 +3628,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		[NAME] 正在輸入...
 	</string>
 	<string name="Unnamed">
-		(Unnamed)
+		(未命名)
 	</string>
 	<string name="IM_moderated_chat_label">
 		(Moderated: Voices off by default)
@@ -3670,10 +3670,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Connected, click Leave Call to hang up
 	</string>
 	<string name="hang_up-im">
-		Left voice call
+		離開語音通話
 	</string>
 	<string name="answering-im">
-		Connecting...
+		聯接中...
 	</string>
 	<string name="conference-title">
 		Ad-hoc Conference
@@ -3715,10 +3715,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		此會話不再存在
 	</string>
 	<string name="no_ability_error">
-		You do not have that ability.
+		你並不具有這個能力。
 	</string>
 	<string name="no_ability">
-		You do not have that ability.
+		你並不具有這個能力。
 	</string>
 	<string name="not_a_mod_error">
 		You are not a session moderator.
@@ -3903,7 +3903,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		內容
 	</string>
 	<string name="Gesture">
-		Gesture
+		姿勢
 	</string>
 	<string name="Male Gestures">
 		男性姿勢
@@ -4048,7 +4048,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		US$ [AMOUNT]
 	</string>
 	<string name="Membership">
-		Membership
+		成員資格
 	</string>
 	<string name="Roles">
 		角色
@@ -4057,13 +4057,13 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Group Identity
 	</string>
 	<string name="Parcel Management">
-		Parcel Management
+		地段管理
 	</string>
 	<string name="Parcel Identity">
 		Parcel Identity
 	</string>
 	<string name="Parcel Settings">
-		Parcel Settings
+		地段設定
 	</string>
 	<string name="Parcel Powers">
 		Parcel Powers
@@ -4075,10 +4075,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		Parcel Content
 	</string>
 	<string name="Object Management">
-		Object Management
+		物件管理
 	</string>
 	<string name="Accounting">
-		Accounting
+		會計
 	</string>
 	<string name="Notices">
 		通知
@@ -4087,16 +4087,16 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
 		聊天
 	</string>
 	<string name="DeleteItems">
-		Delete selected items?
+		刪除所選取的物品?
 	</string>
 	<string name="DeleteItem">
-		Delete selected item?
+		刪除所選取的物品?
 	</string>
 	<string name="EmptyOutfitText">
 		沒有任何物品在這個裝扮內
 	</string>
 	<string name="ExternalEditorNotSet">
-		Select an editor using the ExternalEditor setting.
+		選擇一個編輯器使用 ExternalEditor 設定。
 	</string>
 	<string name="ExternalEditorNotFound">
 		Cannot find the external editor you specified.
@@ -4107,7 +4107,7 @@ Try enclosing path to the editor with double quotes.
 		Error parsing the external editor command.
 	</string>
 	<string name="ExternalEditorFailedToRun">
-		External editor failed to run.
+		執行外部編輯器失敗。
 	</string>
 	<string name="Esc">
 		Esc
diff --git a/indra/newview/skins/default/xui/zh/teleport_strings.xml b/indra/newview/skins/default/xui/zh/teleport_strings.xml
index ffb4c903bb0486be9e09035973756b74d092cdc8..bfdb10781056f80d2abee12f1e210941f3e6054e 100644
--- a/indra/newview/skins/default/xui/zh/teleport_strings.xml
+++ b/indra/newview/skins/default/xui/zh/teleport_strings.xml
@@ -19,6 +19,10 @@
 		<message name="timeout_tport">
 			抱歉,不過系統無法完成瞬間傳送的聯接。
 請稍後再試。
+		</message>
+		<message name="NoHelpIslandTP">
+		您不能瞬间转移回“援助岛”。
+去“公共援助岛”重复您的教程。
 		</message>
 		<message name="noaccess_tport">
 			抱歉,你並沒有權限進入要瞬間傳送的目的地。
diff --git a/indra/newview/skins/minimal/colors.xml b/indra/newview/skins/minimal/colors.xml
deleted file mode 100644
index 097a298ce5c2efd2316cca2b738691df213e489e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/colors.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<colors>
-    <color
-     name="MenuBarBgColor"
-     value="0 0 0 0" />
-</colors>
diff --git a/indra/newview/skins/minimal/textures/arrow_keys.png b/indra/newview/skins/minimal/textures/arrow_keys.png
deleted file mode 100644
index f19af59251c46159a0aa6f5ec983a66df961c703..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/minimal/textures/arrow_keys.png and /dev/null differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png
deleted file mode 100644
index b6e9eef891bd5ef3b79e50685c7b0d2922ea6119..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Off.png and /dev/null differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png b/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png
deleted file mode 100644
index 687cb7fb53569a577d619a09ab211290dc909807..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/minimal/textures/bottomtray/Speak_Btn_Selected_Press.png and /dev/null differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/button_separator.png b/indra/newview/skins/minimal/textures/bottomtray/button_separator.png
deleted file mode 100644
index 71ed25f931b519d9d4f2a074b4ce150c5889e9ed..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/minimal/textures/bottomtray/button_separator.png and /dev/null differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/close_off.png b/indra/newview/skins/minimal/textures/bottomtray/close_off.png
deleted file mode 100644
index 241a24bde904c3a84f9f341858a382abef23330f..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/minimal/textures/bottomtray/close_off.png and /dev/null differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/close_over.png b/indra/newview/skins/minimal/textures/bottomtray/close_over.png
deleted file mode 100644
index 4630cb6dd69960bbf6de23c60014bbd91608d7ae..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/minimal/textures/bottomtray/close_over.png and /dev/null differ
diff --git a/indra/newview/skins/minimal/textures/bottomtray/close_press.png b/indra/newview/skins/minimal/textures/bottomtray/close_press.png
deleted file mode 100644
index 3ed9c99a26f13d93756eba2ba4dba9c1b3cba9d8..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/minimal/textures/bottomtray/close_press.png and /dev/null differ
diff --git a/indra/newview/skins/minimal/textures/click_to_move.png b/indra/newview/skins/minimal/textures/click_to_move.png
deleted file mode 100644
index 74e3faa8ffb62e2ce71f1898ef199f692c9b4da4..0000000000000000000000000000000000000000
Binary files a/indra/newview/skins/minimal/textures/click_to_move.png and /dev/null differ
diff --git a/indra/newview/skins/minimal/textures/textures.xml b/indra/newview/skins/minimal/textures/textures.xml
deleted file mode 100644
index e3ed01721a5f5cd76673507874e15256a9ed3ee9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/textures/textures.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-<textures version="101">
-  <texture name="Button_Separator" file_name="bottomtray/button_separator.png" preload="true" />
-  <texture name="arrow_keys.png"/>
-  <texture name="click_to_move" file_name="click_to_move.png"/>
-  <texture name="bottomtray_close_off" file_name="bottomtray/close_off.png" preload="true" />
-  <texture name="bottomtray_close_over" file_name="bottomtray/close_over.png" preload="true" />
-  <texture name="bottomtray_close_press" file_name="bottomtray/close_press.png" preload="true" />
-  <texture name="Speak_Btn_Off" file_name="bottomtray/Speak_Btn_Off.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" />
-  <texture name="Speak_Btn_Selected_Press" file_name="bottomtray/Speak_Btn_Selected_Press.png" preload="true" scale.left="4" scale.top="16" scale.right="8" scale.bottom="4" />
- </textures>
diff --git a/indra/newview/skins/minimal/xui/da/floater_camera.xml b/indra/newview/skins/minimal/xui/da/floater_camera.xml
deleted file mode 100644
index 5b7ef6db5460f829908dfb6938e3a2172437f79c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
-	<floater.string name="rotate_tooltip">
-		Roter kamera omkring fokus
-	</floater.string>
-	<floater.string name="zoom_tooltip">
-		Zoom kamera mod fokus
-	</floater.string>
-	<floater.string name="move_tooltip">
-		Flyt kamera op og ned, til venstre og højre
-	</floater.string>
-	<floater.string name="camera_modes_title">
-		Kamera valg
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		Kredsløb zoom panorering
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		Forvalg
-	</floater.string>
-	<floater.string name="free_mode_title">
-		Se objekt
-	</floater.string>
-	<panel name="controls">
-		<panel name="preset_views_list">
-			<panel_camera_item name="front_view">
-				<panel_camera_item.text name="front_view_text">
-					Se forfra
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="group_view">
-				<panel_camera_item.text name="side_view_text">
-					Se fra siden
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="rear_view">
-				<panel_camera_item.text name="rear_view_text">
-					Se bagfra
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="camera_modes_list">
-			<panel_camera_item name="object_view">
-				<panel_camera_item.text name="object_view_text">
-					Se fra objekt
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="mouselook_view">
-				<panel_camera_item.text name="mouselook_view_text">
-					Førsteperson
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="zoom" tool_tip="Zoom kamera mod fokus">
-			<joystick_rotate name="cam_rotate_stick" tool_tip="Kamera kredser rundt om fokus"/>
-			<slider_bar name="zoom_slider" tool_tip="Zoom kamera mod fokus"/>
-			<joystick_track name="cam_track_stick" tool_tip="Flyt kamera op og ned, venstre og højre"/>
-		</panel>
-	</panel>
-	<panel name="buttons">
-		<button label="" name="presets_btn" tool_tip="Forvalg"/>
-		<button label="" name="pan_btn" tool_tip="Kredsløb zoom panorering"/>
-		<button label="" name="avatarview_btn" tool_tip="Kamera valg"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/floater_help_browser.xml b/indra/newview/skins/minimal/xui/da/floater_help_browser.xml
deleted file mode 100644
index 0e2918e4e2d10b4ccbb63546a1cbdbd64f6f5866..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="HVORDAN">
-	<floater.string name="loading_text">
-		Henter...
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="external_controls"/>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/floater_media_browser.xml b/indra/newview/skins/minimal/xui/da/floater_media_browser.xml
deleted file mode 100644
index 42fbdeaa9ea44e8f6db8fb03d1724fb1cea9f2be..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="MEDIA BROWSER">
-	<floater.string name="home_page_url">
-		http://www.secondlife.com
-	</floater.string>
-	<floater.string name="support_page_url">
-		http://support.secondlife.com
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button label="Tilbage" name="back"/>
-			<button label="Frem" name="forward"/>
-			<button label="Genlæs" name="reload"/>
-			<button label="Go" name="go"/>
-		</layout_panel>
-		<layout_panel name="time_controls">
-			<button label="tilbage" name="rewind"/>
-			<button label="stop" name="stop"/>
-			<button label="fremad" name="seek"/>
-		</layout_panel>
-		<layout_panel name="parcel_owner_controls">
-			<button label="Send denne side til parcel" name="assign"/>
-		</layout_panel>
-		<layout_panel name="external_controls">
-			<button label="Ã…ben i min internetbrowser" name="open_browser"/>
-			<check_box label="Ã…ben altid i min internetbrowser" name="open_always"/>
-			<button label="Luk" name="close"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/da/floater_nearby_chat.xml
deleted file mode 100644
index bd17224259a7ea66a7e0cb07dbf36b369c2f7575..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT NÆRVED">
-	<check_box label="Oversæt chat (håndteret af Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/floater_web_content.xml b/indra/newview/skins/minimal/xui/da/floater_web_content.xml
deleted file mode 100644
index 0410f743246a1094bf99e1c5d0702dbaf4bb711c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button name="back" tool_tip="GÃ¥ bagud"/>
-			<button name="forward" tool_tip="GÃ¥ frem"/>
-			<button name="stop" tool_tip="Stop"/>
-			<button name="reload" tool_tip="Genindlæs side"/>
-			<combo_box name="address" tool_tip="Indtast URL her"/>
-			<icon name="media_secure_lock_flag" tool_tip="Sikker browsing"/>
-			<button name="popexternal" tool_tip="Ã…ben denne URL i din normale internet browser"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/inspect_avatar.xml b/indra/newview/skins/minimal/xui/da/inspect_avatar.xml
deleted file mode 100644
index dc1ed562eb2fb9abe58ac166d9e286c7b35da626..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/inspect_avatar.xml
+++ /dev/null
@@ -1,24 +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="inspect_avatar">
-	<string name="Subtitle">
-		[AGE]
-	</string>
-	<string name="Details">
-		[SL_PROFILE]
-	</string>
-	<text name="user_details">
-		Dette er min second life beskrivelse og jeg synes den er rigtig god. Men af en eller ande grund er min beskrivelse meget lang fordi jeg taler en hel masse
-	</text>
-	<slider name="volume_slider" tool_tip="Stemme lydstyrke" value="0.5"/>
-	<button label="Tilføj ven" name="add_friend_btn"/>
-	<button label="IM" name="im_btn"/>
-	<button label="Profil" name="view_profile_btn"/>
-	<panel name="moderator_panel">
-		<button label="Slå stemme-chat fra" name="disable_voice"/>
-		<button label="Slå stemme-chat til" name="enable_voice"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/inspect_object.xml b/indra/newview/skins/minimal/xui/da/inspect_object.xml
deleted file mode 100644
index 78ccc5b8699c3a7aa8b96354f0c81c251958e0f8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/inspect_object.xml
+++ /dev/null
@@ -1,41 +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="inspect_object">
-	<string name="Creator">
-		Af [CREATOR]
-	</string>
-	<string name="CreatorAndOwner">
-		Af [CREATOR]
-Owner [OWNER]
-	</string>
-	<string name="Price">
-		L$[AMOUNT]
-	</string>
-	<string name="PriceFree">
-		Gratis!
-	</string>
-	<string name="Touch">
-		Berør
-	</string>
-	<string name="Sit">
-		Sid
-	</string>
-	<text name="object_name" value="Test objekt navn der reelt er to linier og meget lang"/>
-	<text name="price_text">
-		L$30,000
-	</text>
-	<text name="object_description">
-		Dette er en meget lang beskrivelse af et objekt udformet så den fylder mindst 80 karakterer i længden eller endda nærmere 120 på dette sted. Man kan aldrig vide....
-	</text>
-	<button label="Køb" name="buy_btn"/>
-	<button label="Betal" name="pay_btn"/>
-	<button label="Tag kopi" name="take_free_copy_btn"/>
-	<button label="Berør" name="touch_btn"/>
-	<button label="Sid" name="sit_btn"/>
-	<button label="Ã…ben" name="open_btn"/>
-	<icon name="secure_browsing" tool_tip="Sikker Browsing"/>
-	<button label="Mere" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml
deleted file mode 100644
index 1e8301dc4cb412448cb04f7b780abc65ca09a2dc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
-	<menu_item_check label="Sortér efter nyeste" name="sort_by_most_recent"/>
-	<menu_item_check label="Sortér efter navn" name="sort_by_name"/>
-	<menu_item_check label="Sortér efter type" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/da/menu_attachment_other.xml
deleted file mode 100644
index ca7b18494248bf85eb568999aa60af14fd378106..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="Profil" name="Profile..."/>
-	<menu_item_call label="Tilføj ven" name="Add Friend"/>
-	<menu_item_call label="Send besked" name="Send IM..."/>
-	<menu_item_call label="Opkald" name="Call"/>
-	<menu_item_call label="Invitér til gruppe" name="Invite..."/>
-	<menu_item_call label="Blokér" name="Avatar Mute"/>
-	<menu_item_call label="Rapportér" name="abuse"/>
-	<menu_item_call label="Frys" name="Freeze..."/>
-	<menu_item_call label="Smid ud" name="Eject..."/>
-	<menu_item_call label="Debug teksturer" name="Debug..."/>
-	<menu_item_call label="Zoom ind" name="Zoom In"/>
-	<menu_item_call label="Betal" name="Pay..."/>
-	<menu_item_call label="Objekt profil" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/da/menu_attachment_self.xml
deleted file mode 100644
index 35ba27f9e23c06730764a83a679c426ab6e9498b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
-	<menu_item_call label="Berør" name="Attachment Object Touch"/>
-	<menu_item_call label="Redigér" name="Edit..."/>
-	<menu_item_call label="Tag af" name="Detach"/>
-	<menu_item_call label="Sid ned" name="Sit Down Here"/>
-	<menu_item_call label="Stå op" name="Stand Up"/>
-	<menu_item_call label="Udseende" name="Change Outfit"/>
-	<menu_item_call label="Redigér mit sæt" name="Edit Outfit"/>
-	<menu_item_call label="Redigér min figur" name="Edit My Shape"/>
-	<menu_item_call label="Venner" name="Friends..."/>
-	<menu_item_call label="Grupper" name="Groups..."/>
-	<menu_item_call label="Profil" name="Profile..."/>
-	<menu_item_call label="Debug teksturer" name="Debug..."/>
-	<menu_item_call label="Smid" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml
deleted file mode 100644
index 26b58ce1ab41bc477562b3fa24039da6e9528550..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
-	<menu_item_call label="Profil" name="Show Profile"/>
-	<menu_item_call label="Send besked..." name="Send IM"/>
-	<menu_item_call label="Tilføj ven..." name="Add Friend"/>
-	<menu_item_call label="Fjern ven..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/da/menu_avatar_other.xml
deleted file mode 100644
index a778dedf0bcbe9fe2ef14f6281db19679178f041..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="Profil" name="Profile..."/>
-	<menu_item_call label="Tilføj ven" name="Add Friend"/>
-	<menu_item_call label="Besked" name="Send IM..."/>
-	<menu_item_call label="Opkald" name="Call"/>
-	<menu_item_call label="Invitér til gruppe" name="Invite..."/>
-	<menu_item_call label="Blokér" name="Avatar Mute"/>
-	<menu_item_call label="Rapportér" name="abuse"/>
-	<menu_item_call label="Frys" name="Freeze..."/>
-	<menu_item_call label="Smid ud" name="Eject..."/>
-	<menu_item_call label="Debug Teksturer" name="Debug..."/>
-	<menu_item_call label="Zoom ind" name="Zoom In"/>
-	<menu_item_call label="Betal" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/da/menu_avatar_self.xml
deleted file mode 100644
index 0080f7a59ea368aded975102d0b2c9a668af1e2b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
-	<menu_item_call label="Sid ned" name="Sit Down Here"/>
-	<menu_item_call label="Stå op" name="Stand Up"/>
-	<context_menu label="Tag af" name="Take Off &gt;">
-		<context_menu label="Tøj" name="Clothes &gt;">
-			<menu_item_call label="Trøje" name="Shirt"/>
-			<menu_item_call label="Bukser" name="Pants"/>
-			<menu_item_call label="Nederdel" name="Skirt"/>
-			<menu_item_call label="Sko" name="Shoes"/>
-			<menu_item_call label="Strømper" name="Socks"/>
-			<menu_item_call label="Jakke" name="Jacket"/>
-			<menu_item_call label="Handsker" name="Gloves"/>
-			<menu_item_call label="Undertrøje" name="Self Undershirt"/>
-			<menu_item_call label="Underbukser" name="Self Underpants"/>
-			<menu_item_call label="Tatovering" name="Self Tattoo"/>
-			<menu_item_call label="Alpha" name="Self Alpha"/>
-			<menu_item_call label="Alt tøj" name="All Clothes"/>
-		</context_menu>
-		<context_menu label="HUD" name="Object Detach HUD"/>
-		<context_menu label="Tag af" name="Object Detach"/>
-		<menu_item_call label="Tag alt af" name="Detach All"/>
-	</context_menu>
-	<menu_item_call label="Mit udseende" name="Chenge Outfit"/>
-	<menu_item_call label="Redigér mit sæt" name="Edit Outfit"/>
-	<menu_item_call label="Redigér min form" name="Edit My Shape"/>
-	<menu_item_call label="Venner" name="Friends..."/>
-	<menu_item_call label="Grupper" name="Groups..."/>
-	<menu_item_call label="Profil" name="Profile..."/>
-	<menu_item_call label="Debug teksturer" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/da/menu_bottomtray.xml
deleted file mode 100644
index 9ac296904a839aedc858915563ca7d58a7c3462c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
-	<menu_item_check label="Stemme aktiveret" name="EnableVoiceChat"/>
-	<menu_item_check label="Faste bevægelser" name="ShowGestureButton"/>
-	<menu_item_check label="Bevægelse knap" name="ShowMoveButton"/>
-	<menu_item_check label="Vis knap" name="ShowCameraButton"/>
-	<menu_item_check label="Foto knap" name="ShowSnapshotButton"/>
-	<menu_item_check label="Bygge knap" name="ShowBuildButton"/>
-	<menu_item_check label="Søge knap" name="ShowSearchButton"/>
-	<menu_item_check label="Kort knap" name="ShowWorldMapButton"/>
-	<menu_item_check label="Mini-Map button" name="ShowMiniMapButton"/>
-	<menu_item_call label="Klip" name="NearbyChatBar_Cut"/>
-	<menu_item_call label="Kopiér" name="NearbyChatBar_Copy"/>
-	<menu_item_call label="Sæt ind" name="NearbyChatBar_Paste"/>
-	<menu_item_call label="Slet" name="NearbyChatBar_Delete"/>
-	<menu_item_call label="Vælg alt" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml
deleted file mode 100644
index 9d7fc0f2239d0c679c0d58a467b57fb1ec212a04..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
-	<menu_item_call label="Tag af" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml
deleted file mode 100644
index 0e90d5a3aebdbe0cf1d34a520f4f5b3e9fc14d19..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
-	<menu_item_call label="Erstat" name="replace"/>
-	<menu_item_call label="Redigér" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml
deleted file mode 100644
index 16c225b7d9953ae1bfbc2b3c8a8d7b72de452941..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
-	<menu_item_call label="Tag af" name="take_off"/>
-	<menu_item_call label="Redigér" name="edit"/>
-	<menu_item_call label="Erstat" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/da/menu_cof_gear.xml
deleted file mode 100644
index f44369fd843e6d68eb582d5aa712b22e31cc3c29..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
-	<menu label="Nyt tøj" name="COF.Gear.New_Clothes"/>
-	<menu label="Nye kropsdele" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_edit.xml b/indra/newview/skins/minimal/xui/da/menu_edit.xml
deleted file mode 100644
index 3752f42b1c4055ebc7f8feb416c7f4e5fc619fc2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Redigér" name="Edit">
-	<menu_item_call label="Fortryd" name="Undo"/>
-	<menu_item_call label="Gendan" name="Redo"/>
-	<menu_item_call label="Klip" name="Cut"/>
-	<menu_item_call label="Kopiér" name="Copy"/>
-	<menu_item_call label="Sæt ind" name="Paste"/>
-	<menu_item_call label="Slet" name="Delete"/>
-	<menu_item_call label="Duplikér" name="Duplicate"/>
-	<menu_item_call label="Marker alt" name="Select All"/>
-	<menu_item_call label="Fjern markering" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_favorites.xml b/indra/newview/skins/minimal/xui/da/menu_favorites.xml
deleted file mode 100644
index a4793e294cbfeb553c34408686d841c75eefa81d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Teleportér" name="Teleport To Landmark"/>
-	<menu_item_call label="Vis/ret landemærke" name="Landmark Open"/>
-	<menu_item_call label="Kopiér SLurl" name="Copy slurl"/>
-	<menu_item_call label="Vis på kort" name="Show On Map"/>
-	<menu_item_call label="Kopiér" name="Landmark Copy"/>
-	<menu_item_call label="Sæt ind" name="Landmark Paste"/>
-	<menu_item_call label="Slet" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml
deleted file mode 100644
index a9010e99b65c085ceaff6f97c2fdc5734277068e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
-	<menu_item_call label="Tilføj/fjern fra favoritter" name="activate"/>
-	<menu_item_call label="Kopiér" name="copy_gesture"/>
-	<menu_item_call label="Sæt ind" name="paste"/>
-	<menu_item_call label="Kopiér UUID" name="copy_uuid"/>
-	<menu_item_call label="Gem til nuværende sæt" name="save_to_outfit"/>
-	<menu_item_call label="Editér" name="edit_gesture"/>
-	<menu_item_call label="Undersøg" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_group_plus.xml b/indra/newview/skins/minimal/xui/da/menu_group_plus.xml
deleted file mode 100644
index 97fbec1ed1d9b84ef2fcd44a7f7de8aa1bbc8538..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_call label="Meld ind i gruppe..." name="item_join"/>
-	<menu_item_call label="Ny gruppe..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml
deleted file mode 100644
index d96a8a8a17e2f95a13d5bed11c12c86482c3a990..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
-	<menu_item_check label="Vis navigationsbjælke" name="ShowNavbarNavigationPanel"/>
-	<menu_item_check label="Vis favoritbjælke" name="ShowNavbarFavoritesPanel"/>
-	<menu_item_check label="Vis min lokation bjælke" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/da/menu_im_well_button.xml
deleted file mode 100644
index 4889230919b28cec0dbb62efdcd33201725015d6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/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/minimal/xui/da/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml
deleted file mode 100644
index f64a6ad455ea277e47ab2ca567cc3775c240bcfb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
-	<menu_item_call label="Afslut" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml
deleted file mode 100644
index b89d9a57895d47b5bb036a50380747d5341fbac0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
-	<menu_item_call label="Gruppe info" name="Show Profile"/>
-	<menu_item_call label="Vis session" name="Chat"/>
-	<menu_item_call label="Afslut session" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml
deleted file mode 100644
index 6ebc40a8dd05a142c03b19d97aaa877411690813..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
-	<menu_item_call label="Profil" name="Show Profile"/>
-	<menu_item_call label="Tilføj ven" name="Add Friend"/>
-	<menu_item_call label="Vis session" name="Send IM"/>
-	<menu_item_call label="Afslut session" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 8da35adb1b3a33cf60f901a9917491db7c6daaab..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
-	<menu_item_call label="Profil" name="view_profile"/>
-	<menu_item_call label="Tilføj ven" name="add_friend"/>
-	<menu_item_call label="Besked" name="im"/>
-	<menu_item_call label="Opkald" name="call"/>
-	<menu_item_call label="Teleportér" name="teleport"/>
-	<menu_item_call label="Invitér til gruppe" name="invite_to_group"/>
-	<menu_item_call label="Blokér" name="block"/>
-	<menu_item_call label="Fjern blokering" name="unblock"/>
-	<menu_item_call label="Rapportér" name="report"/>
-	<menu_item_call label="Frys" name="freeze"/>
-	<menu_item_call label="Smid ud" name="eject"/>
-	<menu_item_call label="Spark" name="kick"/>
-	<menu_item_call label="CSR" name="csr"/>
-	<menu_item_call label="Debug teksturer" name="debug"/>
-	<menu_item_call label="Find på kort" name="find_on_map"/>
-	<menu_item_call label="Zoom ind" name="zoom_in"/>
-	<menu_item_call label="Betal" name="pay"/>
-	<menu_item_call label="Del" name="share"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml
deleted file mode 100644
index e28842836ddb35fdab1ba4ef11f6de20d943af6e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
-	<menu_item_call label="Berør" name="touch"/>
-	<menu_item_call label="Sid her" name="sit"/>
-	<menu_item_call label="betal" name="pay"/>
-	<menu_item_call label="Køb" name="buy"/>
-	<menu_item_call label="Tag" name="take"/>
-	<menu_item_call label="tag kopi" name="take_copy"/>
-	<menu_item_call label="Ã…ben" name="open"/>
-	<menu_item_call label="Redigér" name="edit"/>
-	<menu_item_call label="Tag på" name="wear"/>
-	<menu_item_call label="Tilføj" name="add"/>
-	<menu_item_call label="Rapportér" name="report"/>
-	<menu_item_call label="Blokér" name="block"/>
-	<menu_item_call label="Zoom ind" name="zoom_in"/>
-	<menu_item_call label="Fjern" name="remove"/>
-	<menu_item_call label="Mere info" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml
deleted file mode 100644
index 887c6484bc3b4d2292f5b8ca5c3d4c8167ee7650..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
-	<menu_item_call label="Sid ned" name="Sit Down Here"/>
-	<menu_item_call label="Stå op" name="Stand Up"/>
-	<context_menu label="Tag af" name="Take Off &gt;">
-		<context_menu label="Tøj" name="Clothes &gt;">
-			<menu_item_call label="Trøje" name="Shirt"/>
-			<menu_item_call label="Bukser" name="Pants"/>
-			<menu_item_call label="Nederdel" name="Skirt"/>
-			<menu_item_call label="Sko" name="Shoes"/>
-			<menu_item_call label="Strømper" name="Socks"/>
-			<menu_item_call label="Jakke" name="Jacket"/>
-			<menu_item_call label="Handsker" name="Gloves"/>
-			<menu_item_call label="Undertrøje" name="Self Undershirt"/>
-			<menu_item_call label="Underbukser" name="Self Underpants"/>
-			<menu_item_call label="Tatovering" name="Self Tattoo"/>
-			<menu_item_call label="Alpha" name="Self Alpha"/>
-			<menu_item_call label="Alt tøj" name="All Clothes"/>
-		</context_menu>
-		<context_menu label="HUD" name="Object Detach HUD"/>
-		<context_menu label="Tag af" name="Object Detach"/>
-		<menu_item_call label="Tag alt af" name="Detach All"/>
-	</context_menu>
-	<menu_item_call label="Skift sæt" name="Chenge Outfit"/>
-	<menu_item_call label="Redigér sæt" name="Edit Outfit"/>
-	<menu_item_call label="Redigér min figur" name="Edit My Shape"/>
-	<menu_item_call label="Mine venner" name="Friends..."/>
-	<menu_item_call label="Mine grupper" name="Groups..."/>
-	<menu_item_call label="Min profil" name="Profile..."/>
-	<menu_item_call label="Debug teksturer" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml
deleted file mode 100644
index c3b03232bf1dd81ff23ac51fcc05716a3e825fe1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
-	<menu_item_call label="Luk" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inventory.xml b/indra/newview/skins/minimal/xui/da/menu_inventory.xml
deleted file mode 100644
index 35551318d170125a5f1dbe39d7f8ebbf2516c3fe..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inventory.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Del" name="Share"/>
-	<menu_item_call label="Køb" name="Task Buy"/>
-	<menu_item_call label="Ã¥ben" name="Task Open"/>
-	<menu_item_call label="Afspil" name="Task Play"/>
-	<menu_item_call label="Egenskaber" name="Task Properties"/>
-	<menu_item_call label="Omdøb" name="Task Rename"/>
-	<menu_item_call label="Slet" name="Task Remove"/>
-	<menu_item_call label="Tøm papirkurv" name="Empty Trash"/>
-	<menu_item_call label="Tøm &apos;Lost and found&apos;" name="Empty Lost And Found"/>
-	<menu_item_call label="Ny mappe" name="New Folder"/>
-	<menu_item_call label="Nyt script" name="New Script"/>
-	<menu_item_call label="Ny note" name="New Note"/>
-	<menu_item_call label="Ny bevægelse" name="New Gesture"/>
-	<menu label="Nyt tøj" name="New Clothes">
-		<menu_item_call label="Ny trøje" name="New Shirt"/>
-		<menu_item_call label="Nye bukser" name="New Pants"/>
-		<menu_item_call label="Nye sko" name="New Shoes"/>
-		<menu_item_call label="Nye strømper" name="New Socks"/>
-		<menu_item_call label="Ny jakke" name="New Jacket"/>
-		<menu_item_call label="Ny nederdel" name="New Skirt"/>
-		<menu_item_call label="Nye handsker" name="New Gloves"/>
-		<menu_item_call label="Ny undertrøje" name="New Undershirt"/>
-		<menu_item_call label="Nye underbukser" name="New Underpants"/>
-		<menu_item_call label="Nyt alpha lag" name="New Alpha Mask"/>
-		<menu_item_call label="Ny tatovering" name="New Tattoo"/>
-	</menu>
-	<menu label="Nye kropsdele" name="New Body Parts">
-		<menu_item_call label="Ny figur" name="New Shape"/>
-		<menu_item_call label="Nyt hud" name="New Skin"/>
-		<menu_item_call label="Nyt hår" name="New Hair"/>
-		<menu_item_call label="Nye øjne" name="New Eyes"/>
-	</menu>
-	<menu label="Ændre type" name="Change Type">
-		<menu_item_call label="Standard" name="Default"/>
-		<menu_item_call label="Handsker" name="Gloves"/>
-		<menu_item_call label="Jakke" name="Jacket"/>
-		<menu_item_call label="Bukser" name="Pants"/>
-		<menu_item_call label="Kropsbygning" name="Shape"/>
-		<menu_item_call label="Sko" name="Shoes"/>
-		<menu_item_call label="Trøje" name="Shirt"/>
-		<menu_item_call label="Nederdel" name="Skirt"/>
-		<menu_item_call label="Underbukser" name="Underpants"/>
-		<menu_item_call label="Undertrøje" name="Undershirt"/>
-	</menu>
-	<menu_item_call label="Teleport" name="Landmark Open"/>
-	<menu_item_call label="Ã¥ben" name="Animation Open"/>
-	<menu_item_call label="Ã¥ben" name="Sound Open"/>
-	<menu_item_call label="Erstat påklædning" name="Replace Outfit"/>
-	<menu_item_call label="Tilføj til påklædning" name="Add To Outfit"/>
-	<menu_item_call label="Slet ting" name="Purge Item"/>
-	<menu_item_call label="Genskab ting" name="Restore Item"/>
-	<menu_item_call label="Ã¥ben" name="Open"/>
-	<menu_item_call label="Ã…ben original" name="Open Original"/>
-	<menu_item_call label="Egenskaber" name="Properties"/>
-	<menu_item_call label="Omdøb" name="Rename"/>
-	<menu_item_call label="Kopiér asset UUID" name="Copy Asset UUID"/>
-	<menu_item_call label="Kopiér" name="Copy"/>
-	<menu_item_call label="Indsæt" name="Paste"/>
-	<menu_item_call label="Sæt ind som link" name="Paste As Link"/>
-	<menu_item_call label="Slet" name="Remove Link"/>
-	<menu_item_call label="Slet" name="Delete"/>
-	<menu_item_call label="Slet systemfolder" name="Delete System Folder"/>
-	<menu_item_call label="start konference chat" name="Conference Chat Folder"/>
-	<menu_item_call label="Afspil" name="Sound Play"/>
-	<menu_item_call label="Om landemærke" name="About Landmark"/>
-	<menu_item_call label="Afspil i verden" name="Animation Play"/>
-	<menu_item_call label="Afspil lokalt" name="Animation Audition"/>
-	<menu_item_call label="Send privat besked (IM)" name="Send Instant Message"/>
-	<menu_item_call label="Tilbyd teleport..." name="Offer Teleport..."/>
-	<menu_item_call label="start konference Chat" name="Conference Chat"/>
-	<menu_item_call label="Aktivér" name="Activate"/>
-	<menu_item_call label="Deaktivér" name="Deactivate"/>
-	<menu_item_call label="Gem som" name="Save As"/>
-	<menu_item_call label="Tag af dig selv" name="Detach From Yourself"/>
-	<menu_item_call label="Tag på" name="Wearable And Object Wear"/>
-	<menu label="Vedhæft" name="Attach To"/>
-	<menu label="Vedhæft til HUD" name="Attach To HUD"/>
-	<menu_item_call label="Redigér" name="Wearable Edit"/>
-	<menu_item_call label="Tilføj" name="Wearable Add"/>
-	<menu_item_call label="Tag af" name="Take Off"/>
-	<menu_item_call label="--ingen valg--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/da/menu_inventory_add.xml
deleted file mode 100644
index 07f70d7190dcf2a6b5f85d711596cf85be3bc28b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
-	<menu label="Hent" name="upload">
-		<menu_item_call label="Billede (L$[COST])..." name="Upload Image"/>
-		<menu_item_call label="Lyd (L$[COST])..." name="Upload Sound"/>
-		<menu_item_call label="Animation (L$[COST])..." name="Upload Animation"/>
-		<menu_item_call label="Hent mange (L$[COST] pr. fil)..." name="Bulk Upload"/>
-		<menu_item_call label="Sæt standardværdier for upload rettigheder" name="perm prefs"/>
-	</menu>
-	<menu_item_call label="Ny mappe" name="New Folder"/>
-	<menu_item_call label="Nyt script" name="New Script"/>
-	<menu_item_call label="Ny note" name="New Note"/>
-	<menu_item_call label="Ny bevægelse" name="New Gesture"/>
-	<menu label="Nyt tøj" name="New Clothes">
-		<menu_item_call label="Ny trøje" name="New Shirt"/>
-		<menu_item_call label="Nye bukser" name="New Pants"/>
-		<menu_item_call label="Nye sko" name="New Shoes"/>
-		<menu_item_call label="Nye strømper" name="New Socks"/>
-		<menu_item_call label="Ny jakke" name="New Jacket"/>
-		<menu_item_call label="Ny nederdel" name="New Skirt"/>
-		<menu_item_call label="Nye handsker" name="New Gloves"/>
-		<menu_item_call label="Ny undertrøje" name="New Undershirt"/>
-		<menu_item_call label="Nye underbukser" name="New Underpants"/>
-		<menu_item_call label="Nyt alpha lag" name="New Alpha"/>
-		<menu_item_call label="Ny tatovering" name="New Tattoo"/>
-	</menu>
-	<menu label="Nye kropsdele" name="New Body Parts">
-		<menu_item_call label="Ny kropsbygning" name="New Shape"/>
-		<menu_item_call label="Ny hud" name="New Skin"/>
-		<menu_item_call label="Nyt hår" name="New Hair"/>
-		<menu_item_call label="Nye øjne" name="New Eyes"/>
-	</menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml
deleted file mode 100644
index 4809b2446356463d22dfe64f284a35ee19fe16c8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
-	<menu_item_call label="Nyt vindue" name="new_window"/>
-	<menu_item_check label="Sortér efter navn" name="sort_by_name"/>
-	<menu_item_check label="Sortér efter nyeste" name="sort_by_recent"/>
-	<menu_item_check label="Sortér altid mapper efter navn" name="sort_folders_by_name"/>
-	<menu_item_check label="Vis System mapper øverst" name="sort_system_folders_to_top"/>
-	<menu_item_call label="Vis filtre" name="show_filters"/>
-	<menu_item_call label="Nulstil filtre" name="reset_filters"/>
-	<menu_item_call label="Luk alle mapper" name="close_folders"/>
-	<menu_item_call label="Tøm &quot;fundne genstande&quot;" name="empty_lostnfound"/>
-	<menu_item_call label="Gem tekstur som" name="Save Texture As"/>
-	<menu_item_call label="Del" name="Share"/>
-	<menu_item_call label="Find original" name="Find Original"/>
-	<menu_item_call label="Find alle links" name="Find All Links"/>
-	<menu_item_call label="Tøm papirkurv" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_land.xml b/indra/newview/skins/minimal/xui/da/menu_land.xml
deleted file mode 100644
index 1548f18f8979e0a1db50f130537eabf826aae44f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
-	<menu_item_call label="Om land" name="Place Information..."/>
-	<menu_item_call label="Sid her" name="Sit Here"/>
-	<menu_item_call label="Køb" name="Land Buy"/>
-	<menu_item_call label="Køb adgang" name="Land Buy Pass"/>
-	<menu_item_call label="Byg" name="Create"/>
-	<menu_item_call label="Tilpas terræn" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_landmark.xml b/indra/newview/skins/minimal/xui/da/menu_landmark.xml
deleted file mode 100644
index 3cf2ffe375c95d0561b6a2dca5fc40694251844d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
-	<menu_item_call label="Kopiér SLurl" name="copy"/>
-	<menu_item_call label="Slet" name="delete"/>
-	<menu_item_call label="Opret favorit" name="pick"/>
-	<menu_item_call label="Tilføj til favorit bjælke" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_login.xml b/indra/newview/skins/minimal/xui/da/menu_login.xml
deleted file mode 100644
index 0b7a5040ae4ff911f8fa2b31638e3042d6c86df9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
-	<menu label="Mig" name="File">
-		<menu_item_call label="Indstillinger" name="Preferences..."/>
-		<menu_item_call label="Afslut [APP_NAME]" name="Quit"/>
-	</menu>
-	<menu label="Hjælp" name="Help">
-		<menu_item_call label="[SECOND_LIFE] hjælp" name="Second Life Help"/>
-		<menu_item_call label="Om [APP_NAME]" name="About Second Life"/>
-	</menu>
-	<menu_item_check label="Vis debug menu" name="Show Debug Menu"/>
-	<menu label="Debug" name="Debug">
-		<menu_item_call label="Vis debug opsætning" name="Debug Settings"/>
-		<menu_item_call label="UI/farve opsætning" name="UI/Color Settings"/>
-		<menu label="UI tests" name="UI Tests"/>
-		<menu_item_call label="Sæt vinduesstørrelse" name="Set Window Size..."/>
-		<menu_item_call label="Vis betingelser" name="TOS"/>
-		<menu_item_call label="Vis vigtig besked" name="Critical"/>
-		<menu_item_call label="Media Browser Test" name="Web Browser Test"/>
-		<menu_item_call label="Web Content Floater Test" name="Web Content Floater Test"/>
-		<menu_item_check label="Vis gitter vælger" name="Show Grid Picker"/>
-		<menu_item_call label="Vis notifikationskonsol" name="Show Notifications Console"/>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/da/menu_mini_map.xml b/indra/newview/skins/minimal/xui/da/menu_mini_map.xml
deleted file mode 100644
index 186dbd476ae10e3ef8ea4f23f409fed0a30e07e5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Zoom tæt" name="Zoom Close"/>
-	<menu_item_call label="Zoom mellem" name="Zoom Medium"/>
-	<menu_item_call label="Zoom langt" name="Zoom Far"/>
-	<menu_item_call label="Zoom standard" name="Zoom Default"/>
-	<menu_item_check label="Rotér kort" name="Rotate Map"/>
-	<menu_item_check label="Auto centrér" name="Auto Center"/>
-	<menu_item_call label="Fjern ref." name="Stop Tracking"/>
-	<menu_item_call label="Verdenskort" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_navbar.xml b/indra/newview/skins/minimal/xui/da/menu_navbar.xml
deleted file mode 100644
index c04206824ac20f21d297423f12ba58b364815b96..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
-	<menu_item_check label="Vis koordinater" name="Show Coordinates"/>
-	<menu_item_check label="Vis oplysninger om parcel" name="Show Parcel Properties"/>
-	<menu_item_call label="Landemærke" name="Landmark"/>
-	<menu_item_call label="Klip" name="Cut"/>
-	<menu_item_call label="Kopiér" name="Copy"/>
-	<menu_item_call label="Sæt ind" name="Paste"/>
-	<menu_item_call label="Slet" name="Delete"/>
-	<menu_item_call label="Vælg alt" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml
deleted file mode 100644
index be532ad406d5d80a23efd7fb504dc1c255a60221..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
-	<menu_item_call label="Vis personer tæt på..." name="nearby_people"/>
-	<menu_item_check label="Vis blokeret tekst" name="muted_text"/>
-	<menu_item_check label="Vis venne-ikoner" name="show_buddy_icons"/>
-	<menu_item_check label="Vis navne" name="show_names"/>
-	<menu_item_check label="Vis ikoner og navne" name="show_icons_and_names"/>
-	<menu_item_call label="Font størrelse" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml
deleted file mode 100644
index 40b35b5fdd201adc51bb732f335c3a88987812f9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
-	<menu_item_call label="Luk alle" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_object.xml b/indra/newview/skins/minimal/xui/da/menu_object.xml
deleted file mode 100644
index ba62ccf90ce47591ef93d97c37f93f8413a2b37f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
-	<menu_item_call label="Berør" name="Object Touch">
-		<menu_item_call.on_enable name="EnableTouch" parameter="Berør"/>
-	</menu_item_call>
-	<menu_item_call label="Redigér" name="Edit..."/>
-	<menu_item_call label="Byg" name="Build"/>
-	<menu_item_call label="Ã…ben" name="Open"/>
-	<menu_item_call label="Sid her" name="Object Sit"/>
-	<menu_item_call label="Stå op" name="Object Stand Up"/>
-	<menu_item_call label="Objekt profil" name="Object Inspect"/>
-	<menu_item_call label="Zoom In" name="Zoom In"/>
-	<context_menu label="Tag på" name="Put On">
-		<menu_item_call label="Tag på" name="Wear"/>
-		<menu_item_call label="Tilføj" name="Add"/>
-		<context_menu label="Vedhæft" name="Object Attach"/>
-		<context_menu label="Vedhæft HUD" name="Object Attach HUD"/>
-	</context_menu>
-	<context_menu label="Administrér" name="Remove">
-		<menu_item_call label="Rapportér misbrug" name="Report Abuse..."/>
-		<menu_item_call label="Blokér" name="Object Mute"/>
-		<menu_item_call label="Returnér" name="Return..."/>
-	</context_menu>
-	<menu_item_call label="Tag" name="Pie Object Take"/>
-	<menu_item_call label="Tag kopi" name="Take Copy"/>
-	<menu_item_call label="Betal" name="Pay..."/>
-	<menu_item_call label="Køb" name="Buy..."/>
-	<menu_item_call label="Slet" name="Delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_object_icon.xml b/indra/newview/skins/minimal/xui/da/menu_object_icon.xml
deleted file mode 100644
index 08aeb633b64031abb71a809b1a07c4e656f4d8cb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
-	<menu_item_call label="Objekt Profil..." name="Object Profile"/>
-	<menu_item_call label="Blokér..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml
deleted file mode 100644
index 8b4c776496f7a549b22bb65c0f1c73804b92cb7d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
-	<menu_item_call label="Tag på - Erstat nuværende sæt" name="wear"/>
-	<menu_item_call label="Tag på - Tilføj til nuværende sæt" name="wear_add"/>
-	<menu_item_call label="Tag af - Fjern fra nuværende sæt" name="take_off"/>
-	<menu label="Nyt tøj" name="New Clothes">
-		<menu_item_call label="Ny trøje" name="New Shirt"/>
-		<menu_item_call label="Nye bukser" name="New Pants"/>
-		<menu_item_call label="Nye sko" name="New Shoes"/>
-		<menu_item_call label="Nye strømper" name="New Socks"/>
-		<menu_item_call label="Ny jakke" name="New Jacket"/>
-		<menu_item_call label="Ny nederdel" name="New Skirt"/>
-		<menu_item_call label="Nye handsker" name="New Gloves"/>
-		<menu_item_call label="Ny undertrøje" name="New Undershirt"/>
-		<menu_item_call label="Nye underbukser" name="New Underpants"/>
-		<menu_item_call label="Ny alpha" name="New Alpha"/>
-		<menu_item_call label="Ny tatovering" name="New Tattoo"/>
-	</menu>
-	<menu label="Nye kropsdele" name="New Body Parts">
-		<menu_item_call label="Ny figur" name="New Shape"/>
-		<menu_item_call label="Nyt hud" name="New Skin"/>
-		<menu_item_call label="Nyt hår" name="New Hair"/>
-		<menu_item_call label="Nye øjne" name="New Eyes"/>
-	</menu>
-	<menu_item_call label="Omdøb sæt" name="rename"/>
-	<menu_item_call label="Slet sæt" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml
deleted file mode 100644
index d6a6f2724fe730bfce24b38f1319fcb09ed54c2f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
-	<menu_item_call label="Tag på - Erstat nuværende sæt" name="wear_replace"/>
-	<menu_item_call label="Tag på - Tilføj til nuværende sæt" name="wear_add"/>
-	<menu_item_call label="Tag af - Fjern fra nuværende sæt" name="take_off"/>
-	<menu_item_call label="Redigér sæt" name="edit"/>
-	<menu_item_call label="Omdøb sæt" name="rename"/>
-	<menu_item_call label="Slet sæt" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_participant_list.xml b/indra/newview/skins/minimal/xui/da/menu_participant_list.xml
deleted file mode 100644
index 5951d3ffb9858aca1c8ac65c3a87d78717db597f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
-	<menu_item_check label="Sortér efter navn" name="SortByName"/>
-	<menu_item_check label="Sortér efter nylige talere" name="SortByRecentSpeakers"/>
-	<menu_item_call label="Profil" name="View Profile"/>
-	<menu_item_call label="Tilføj ven" name="Add Friend"/>
-	<menu_item_call label="Send besked" name="IM"/>
-	<menu_item_call label="Opkald" name="Call"/>
-	<menu_item_call label="Del" name="Share"/>
-	<menu_item_call label="Betal" name="Pay"/>
-	<menu_item_check label="Se person ikoner" name="View Icons"/>
-	<menu_item_check label="Blokér stemme" name="Block/Unblock"/>
-	<menu_item_check label="Blokér tekst" name="MuteText"/>
-	<context_menu label="Moderator valg" name="Moderator Options">
-		<menu_item_check label="Tillad tekst chat" name="AllowTextChat"/>
-		<menu_item_call label="Sluk for denne deltager" name="ModerateVoiceMuteSelected"/>
-		<menu_item_call label="Fjern slukning for denne deltager" name="ModerateVoiceUnMuteSelected"/>
-		<menu_item_call label="Sluk lyd for alle" name="ModerateVoiceMute"/>
-		<menu_item_call label="Tænd lyd for alle" name="ModerateVoiceUnmute"/>
-	</context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml
deleted file mode 100644
index 32c5e6a6c7fa7336afe46b94f51e05d8c200494a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Sortér efter navn" name="sort_name"/>
-	<menu_item_check label="Sortér efter status" name="sort_status"/>
-	<menu_item_check label="Vis person ikoner" name="view_icons"/>
-	<menu_item_check label="Vis tildelte rettigheder" name="view_permissions"/>
-	<menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_groups.xml b/indra/newview/skins/minimal/xui/da/menu_people_groups.xml
deleted file mode 100644
index 841f58b61914a678177b59075c289d88d292c261..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_call label="Se info" name="View Info"/>
-	<menu_item_call label="Chat" name="Chat"/>
-	<menu_item_call label="Opkald" name="Call"/>
-	<menu_item_call label="Aktivér" name="Activate"/>
-	<menu_item_call label="Forlad" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml
deleted file mode 100644
index 0b9a791530da06da6220ed17c0adfca81c6d0dc0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Vis gruppe ikoner" name="Display Group Icons"/>
-	<menu_item_call label="Forlad valgte gruppe" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml
deleted file mode 100644
index 220ab8724f59155b228f35febd0aee4a91a4812b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
-	<menu_item_call label="Vis profil" name="View Profile"/>
-	<menu_item_call label="Tilføj som ven" name="Add Friend"/>
-	<menu_item_call label="Fjern venskab" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Opkald" name="Call"/>
-	<menu_item_call label="Kort" name="Map"/>
-	<menu_item_call label="Del" name="Share"/>
-	<menu_item_call label="Betal" name="Pay"/>
-	<menu_item_check label="Blokér/Fjern blokering" name="Block/Unblock"/>
-	<menu_item_call label="Tilbyd teleport" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 9318a0e3409c6fbd534d1b93e5dc9c7bdad2a9ac..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Tilføj venner" name="Add Friends"/>
-	<menu_item_call label="Fjern venner" name="Remove Friend"/>
-	<menu_item_call label="Besked" name="IM"/>
-	<menu_item_call label="Opkald" name="Call"/>
-	<menu_item_call label="Del" name="Share"/>
-	<menu_item_call label="Betal" name="Pay"/>
-	<menu_item_call label="tilbyd teleport" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 2f35ff3c92cd7b958abd58709fd21e4759f7d2a6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Sortér efter tidligere talere" name="sort_by_recent_speakers"/>
-	<menu_item_check label="Sortér efter navn" name="sort_name"/>
-	<menu_item_check label="Sortér efter afstand" name="sort_distance"/>
-	<menu_item_check label="Se ikoner for personer" name="view_icons"/>
-	<menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml
deleted file mode 100644
index d081f637f22602d85e54bb0f03c6dc7c18b808ea..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Sortér efter nyeste" name="sort_most"/>
-	<menu_item_check label="Sortér efter navn" name="sort_name"/>
-	<menu_item_check label="Vis person ikoner" name="view_icons"/>
-	<menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_picks.xml b/indra/newview/skins/minimal/xui/da/menu_picks.xml
deleted file mode 100644
index 81ee900773cfaceebf1a26d0b8fab52c92fa7632..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
-	<menu_item_call label="Info" name="pick_info"/>
-	<menu_item_call label="Redigér" name="pick_edit"/>
-	<menu_item_call label="Teleportér" name="pick_teleport"/>
-	<menu_item_call label="Vis på kort" name="pick_map"/>
-	<menu_item_call label="Slet" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/da/menu_picks_plus.xml
deleted file mode 100644
index d95071fbbb01cb69fe6ad852adc18158b26d7f39..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
-	<menu_item_call label="Ny favorit" name="create_pick"/>
-	<menu_item_call label="Ny annonce" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_place.xml b/indra/newview/skins/minimal/xui/da/menu_place.xml
deleted file mode 100644
index b87964ac1427e6fcf668e63f711d9945efc99d30..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
-	<menu_item_call label="Opret et landemærke" name="landmark"/>
-	<menu_item_call label="Opret favorit" name="pick"/>
-	<menu_item_call label="Køb adgang" name="pass"/>
-	<menu_item_call label="Redigér" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/da/menu_place_add_button.xml
deleted file mode 100644
index 7ad22535503e4c0e11ae0655521ca2ad5fdea13a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
-	<menu_item_call label="Opret mappe" name="add_folder"/>
-	<menu_item_call label="Tilføj landemærke" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml
deleted file mode 100644
index 5f573c2363e97e123c149b063b59491165089bb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_folder_gear">
-	<menu_item_call label="Tilføj landemærke" name="add_landmark"/>
-	<menu_item_call label="Tilføj mappe" name="add_folder"/>
-	<menu_item_call label="Gendan genstand" name="restore_item"/>
-	<menu_item_call label="Klip" name="cut"/>
-	<menu_item_call label="Kopiér" name="copy_folder"/>
-	<menu_item_call label="Sæt ind" name="paste"/>
-	<menu_item_call label="Omdøb" name="rename"/>
-	<menu_item_call label="Slet" name="delete"/>
-	<menu_item_call label="Udvid" name="expand"/>
-	<menu_item_call label="Luk" name="collapse"/>
-	<menu_item_call label="Udvid alle mapper" name="expand_all"/>
-	<menu_item_call label="Luk alle mapper" name="collapse_all"/>
-	<menu_item_check label="Sortér efter dato" name="sort_by_date"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml
deleted file mode 100644
index 13dbcdd42e2645f8139b129d06c03db340c9b299..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_ladmark_gear">
-	<menu_item_call label="Teleportér" name="teleport"/>
-	<menu_item_call label="Mere information" name="more_info"/>
-	<menu_item_call label="Vis på kort" name="show_on_map"/>
-	<menu_item_call label="Tilføj landemærke" name="add_landmark"/>
-	<menu_item_call label="Tilføj mappe" name="add_folder"/>
-	<menu_item_call label="Gendan genstand" name="restore_item"/>
-	<menu_item_call label="Klip" name="cut"/>
-	<menu_item_call label="Kopiér landemærke" name="copy_landmark"/>
-	<menu_item_call label="Kopiér SLurl" name="copy_slurl"/>
-	<menu_item_call label="Sæt ind" name="paste"/>
-	<menu_item_call label="Omdøb" name="rename"/>
-	<menu_item_call label="Slet" name="delete"/>
-	<menu_item_call label="Ã…ben alle mapper" name="expand_all"/>
-	<menu_item_call label="Luk alle mapper" name="collapse_all"/>
-	<menu_item_check label="Sortér efter dato" name="sort_by_date"/>
-	<menu_item_call label="Opret favorit" name="create_pick"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml
deleted file mode 100644
index 6745007c996451c9210851f99518d2883caa3f40..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
-	<menu_item_call label="Kort" name="show_on_map"/>
-	<menu_item_call label="Betal" name="pay"/>
-	<menu_item_call label="Del" name="share"/>
-	<menu_item_call label="Blokér" name="block"/>
-	<menu_item_call label="Fjern blokering" name="unblock"/>
-	<menu_item_call label="Spark" name="kick"/>
-	<menu_item_call label="Frys" name="freeze"/>
-	<menu_item_call label="Fjern frys" name="unfreeze"/>
-	<menu_item_call label="Kundeservicemedarbejder (CSR)" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/da/menu_save_outfit.xml
deleted file mode 100644
index 188229b58684921babd8529880ac1fe7fad0da74..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
-	<menu_item_call label="Gem" name="save_outfit"/>
-	<menu_item_call label="Gem som" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml
deleted file mode 100644
index cdd3212373d3792671634cd7dae968b31497a47b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
-	<menu_item_call label="Luk" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_slurl.xml b/indra/newview/skins/minimal/xui/da/menu_slurl.xml
deleted file mode 100644
index a9302e111eadc4e04ae3bed35a79505fe95d0f85..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Om URL" name="about_url"/>
-	<menu_item_call label="Teleportér til URL" name="teleport_to_url"/>
-	<menu_item_call label="Kort" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml
deleted file mode 100644
index a1c25fea690d407d9702e17342351101573a8302..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
-	<menu_item_call label="Udvid alle mapper" name="Expand all folders"/>
-	<menu_item_call label="Luk alle mapper" name="Collapse all folders"/>
-	<menu_item_call label="Nulstil teleport historik" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml
deleted file mode 100644
index dbaec62087e21e9fecc04e7b94f84134476b9ad2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Teleportér" name="Teleport"/>
-	<menu_item_call label="Mere information" name="More Information"/>
-	<menu_item_call label="Kopiér til udklipsholder" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml
deleted file mode 100644
index c4d4bb4b5b4be49458aba45a2771d7e071b29338..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Ã…ben" name="TabOpen"/>
-	<menu_item_call label="Luk" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_text_editor.xml b/indra/newview/skins/minimal/xui/da/menu_text_editor.xml
deleted file mode 100644
index 3ff31ea232f99383bbc37a5d993aee120074802e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
-	<menu_item_call label="Klip" name="Cut"/>
-	<menu_item_call label="Kopiér" name="Copy"/>
-	<menu_item_call label="Sæt ind" name="Paste"/>
-	<menu_item_call label="Slet" name="Delete"/>
-	<menu_item_call label="Vælg alt" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/da/menu_topinfobar.xml
deleted file mode 100644
index 08d1c25d6f21c475ba1b4dec2e85e5095051beae..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
-	<menu_item_check label="Vis koordinater" name="Show Coordinates"/>
-	<menu_item_check label="Vis egenskaber for parcel" name="Show Parcel Properties"/>
-	<menu_item_call label="Landemærke" name="Landmark"/>
-	<menu_item_call label="Kopi" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_agent.xml b/indra/newview/skins/minimal/xui/da/menu_url_agent.xml
deleted file mode 100644
index 491586f3b469b6d2d718f590cab7583ad13b7dd1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Vis beboer profil" name="show_agent"/>
-	<menu_item_call label="Kopiér navn til udklipsholder" name="url_copy_label"/>
-	<menu_item_call label="Kopiér  SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_group.xml b/indra/newview/skins/minimal/xui/da/menu_url_group.xml
deleted file mode 100644
index c776159b0a239c87592596cf8d14f1a9720b0ef6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Vis gruppeinformation" name="show_group"/>
-	<menu_item_call label="Kopiér gruppe til udklipsholder" name="url_copy_label"/>
-	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_http.xml b/indra/newview/skins/minimal/xui/da/menu_url_http.xml
deleted file mode 100644
index 4398777a3913098778a1dda0e0cc0c2ee60e0bcf..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Indlæs" name="url_open"/>
-	<menu_item_call label="Ã…ben i intern browser" name="url_open_internal"/>
-	<menu_item_call label="Ã…ben i ekstern browser" name="url_open_external"/>
-	<menu_item_call label="Kopiér URL til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/da/menu_url_inventory.xml
deleted file mode 100644
index 9a7de23e0654a50e77bab540159c60445480bb1d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Vis beholdningsgenstand" name="show_item"/>
-	<menu_item_call label="Kopiér navn til udklipsholder" name="url_copy_label"/>
-	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_map.xml b/indra/newview/skins/minimal/xui/da/menu_url_map.xml
deleted file mode 100644
index ff4a4d5174fcfc4dff2e6e7591911c1f4badfbdc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Vis på kort" name="show_on_map"/>
-	<menu_item_call label="Teleport til lokation" name="teleport_to_location"/>
-	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/da/menu_url_objectim.xml
deleted file mode 100644
index e27cf8495934a405581f4ce03deb7ab2032fcf3b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Vis objekt information" name="show_object"/>
-	<menu_item_call label="Vis på kort" name="show_on_map"/>
-	<menu_item_call label="Teleportér til objekt lokation" name="teleport_to_object"/>
-	<menu_item_call label="Kopiér objekt navn til udklipsholder" name="url_copy_label"/>
-	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/da/menu_url_parcel.xml
deleted file mode 100644
index 0f21e14f6614230db6ece887ddcaef3e6ad03964..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Vis information om parcel" name="show_parcel"/>
-	<menu_item_call label="Vis på kort" name="show_on_map"/>
-	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/da/menu_url_slapp.xml
deleted file mode 100644
index dd25db2aa7159968f7dd858ee91880ad81005a19..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Kør denne kommando" name="run_slapp"/>
-	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/da/menu_url_slurl.xml
deleted file mode 100644
index 8d84a138bb7e9570b588456de0729f34ce3c6ad1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Vis information" name="show_place"/>
-	<menu_item_call label="Vis på kort" name="show_on_map"/>
-	<menu_item_call label="Teleportér til lokation" name="teleport_to_location"/>
-	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/da/menu_url_teleport.xml
deleted file mode 100644
index e0ca7b920dbd6b0f0582c9c938c34f5a7d0290ec..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Teleport" name="teleport"/>
-	<menu_item_call label="Vis på kort" name="show_on_map"/>
-	<menu_item_call label="Kopiér SLurl til udklipsholder" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_viewer.xml b/indra/newview/skins/minimal/xui/da/menu_viewer.xml
deleted file mode 100644
index 93b247f8414f4022dc26f4abf1cfcbe31ba0932e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
-	<menu label="Hjælp" name="Help">
-		<menu_item_call label="[SECOND_LIFE] Help" name="Second Life Help"/>
-	</menu>
-	<menu label="Avanceret" name="Advanced">
-		<menu label="Shortcuts" name="Shortcuts">
-			<menu_item_check label="Flyv" name="Fly"/>
-			<menu_item_call label="Luk vindue" name="Close Window"/>
-			<menu_item_call label="Luk alle vinduer" name="Close All Windows"/>
-			<menu_item_call label="Nulstil udsyn" name="Reset View"/>
-		</menu>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml
deleted file mode 100644
index 63f4b0b38849cdb60770137ef4f52f64a5879c12..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
-	<menu_item_call label="Erstat" name="wear_replace"/>
-	<menu_item_call label="Tag på" name="wear_wear"/>
-	<menu_item_call label="Tilføj" name="wear_add"/>
-	<menu_item_call label="Tag af" name="take_off_or_detach"/>
-	<menu_item_call label="Tag af" name="detach"/>
-	<context_menu label="Vedhæft til" name="wearable_attach_to"/>
-	<context_menu label="Vedhæft til HUD" name="wearable_attach_to_hud"/>
-	<menu_item_call label="Tag af" name="take_off"/>
-	<menu_item_call label="Redigér" name="edit"/>
-	<menu_item_call label="Genstandsprofil" name="object_profile"/>
-	<menu_item_call label="Vis original" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml
deleted file mode 100644
index 515a15b287ea9a122af3176b1bc8cab204cbbbcc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
-	<menu_item_call label="Redigér sæt" name="edit"/>
-	<menu_item_call label="Tag af" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml
deleted file mode 100644
index c0db7b68426012c915339b32dfd5093ae60ea9d9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
-	<menu_item_call label="Tag af" name="take_off"/>
-	<menu_item_call label="Tag af" name="detach"/>
-	<menu_item_call label="Redigér sæt" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/da/notifications.xml b/indra/newview/skins/minimal/xui/da/notifications.xml
deleted file mode 100644
index 3d003ea3b3b8bbfb9df922cd2a5f185d4bd1d722..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/notifications.xml
+++ /dev/null
@@ -1,1831 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
-	<global name="skipnexttime">
-		Vis ikke dette igen
-	</global>
-	<global name="alwayschoose">
-		Vælg altid dette
-	</global>
-	<global name="implicitclosebutton">
-		Luk
-	</global>
-	<template name="okbutton">
-		<form>
-			<button name="OK_okbutton" text="$yestext"/>
-		</form>
-	</template>
-	<template name="okignore">
-		<form>
-			<button name="OK_okignore" text="$yestext"/>
-		</form>
-	</template>
-	<template name="okcancelbuttons">
-		<form>
-			<button name="OK_okcancelbuttons" text="$yestext"/>
-			<button name="Cancel_okcancelbuttons" text="$notext"/>
-		</form>
-	</template>
-	<template name="okcancelignore">
-		<form>
-			<button name="OK_okcancelignore" text="$yestext"/>
-			<button name="Cancel_okcancelignore" text="$notext"/>
-		</form>
-	</template>
-	<template name="okhelpbuttons">
-		<form>
-			<button name="OK_okhelpbuttons" text="$yestext"/>
-			<button name="Help" text="$helptext"/>
-		</form>
-	</template>
-	<template name="yesnocancelbuttons">
-		<form>
-			<button name="Yes" text="$yestext"/>
-			<button name="No" text="$notext"/>
-			<button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
-		</form>
-	</template>
-	<notification functor="GenericAcknowledge" label="Ukendt notificeringsbesked" name="MissingAlert">
-		Din version af [APP_NAME] kan ikke vise den besked den lige modtog.  Undersøg venligst at du har den nyester version af klienten installeret.
-
-Fejl detaljer: Beskeden kaldet &apos;[_NAME]&apos; blev ikke fundet i notifications.xml.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="FloaterNotFound">
-		Floater error: Kunne ikke finde følgende kontrol:
-
-[CONTROLS]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="TutorialNotFound">
-		Der er i øjeblikket ingen tilgængelig guide.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="GenericAlert">
-		[MESSAGE]
-	</notification>
-	<notification name="GenericAlertYesCancel">
-		[MESSAGE]
-		<usetemplate name="okcancelbuttons" notext="Annullér" yestext="Ja"/>
-	</notification>
-	<notification name="BadInstallation">
-		Der opstod en fejl ved opdatering af [APP_NAME].  Please [http://get.secondlife.com download the latest version] of the Viewer.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="LoginFailedNoNetwork">
-		Kunne ikke tilslutte til  [SECOND_LIFE_GRID].
-    &apos;[DIAGNOSTIC]&apos;
-Check at Internet forbindelsen fungerer korrekt.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="MessageTemplateNotFound">
-		Besked template [PATH] kunne ikke findes.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="WearableSave">
-		Gem ændringer til nuværende tøj/krops del?
-		<usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Gem ikke" yestext="Gem"/>
-	</notification>
-	<notification name="CompileQueueSaveText">
-		Der var problemer med upload af teksten til et script af følgende årsager: [REASON]. Prøv igen senere.
-	</notification>
-	<notification name="CompileQueueSaveBytecode">
-		Der var problemer med at uploade den kompileret script af følgende årsager: [REASON]. Prøv igen senere.
-	</notification>
-	<notification name="WriteAnimationFail">
-		Der var et problem med skrivning af animations data. Prøv igen senere.
-	</notification>
-	<notification name="UploadAuctionSnapshotFail">
-		Der var problemer med at uploade billedet til auktionen af følgende årsager: [REASON]
-	</notification>
-	<notification name="UnableToViewContentsMoreThanOne">
-		Ude af stand til at se indholdet af mere end ét element ad gangen.
-Vælg kun en genstand, og prøv igen.
-	</notification>
-	<notification name="SaveClothingBodyChanges">
-		Gem alle ændringer til tøj/krops dele?
-		<usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Gem Ikke" yestext="Gem Alt"/>
-	</notification>
-	<notification name="FriendsAndGroupsOnly">
-		&apos;Ikke-venner&apos; vil ikke vide, at du har valgt at ignorere deres opkald og personlige beskeder (IM)
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="FavoritesOnLogin">
-		Bemærk: Når du aktiverer dette valg, kan enhver der bruger denne computer se dine favorit lokationer.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="GrantModifyRights">
-		Tildeling af ændre-rettigheder til andre beboere, tillader dem at ændre, slette eller tage ETHVERT objekt du måtte have. Vær MEGET forsigtig ved tildeling af denne rettighed.
-Ønsker du at give ændre-rettgheder til [NAME]?
-		<usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
-	</notification>
-	<notification name="GrantModifyRightsMultiple">
-		At give redigerings rettigheder til en anden beboer, giver dem mulighed for at ændre, slette eller tage ALLE genstande, du måtte have i verden. Vær MEGET forsigtig når uddeler denne tilladelse.
-Ønsker du at ændre rettigheder for de valgte beboere?
-		<usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
-	</notification>
-	<notification name="RevokeModifyRights">
-		Ønsker du at tilbagekalder ændre-rettigheder for [NAME]?
-		<usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
-	</notification>
-	<notification name="RevokeModifyRightsMultiple">
-		Vil du tilbagekalde rettighederne for de valgte beboere?
-		<usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
-	</notification>
-	<notification name="UnableToCreateGroup">
-		Kunne ikke oprette gruppe.
-[MESSAGE]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="PanelGroupApply">
-		[NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
-		<usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Ignorer Ændringer" yestext="Godkend Ændringer"/>
-	</notification>
-	<notification name="MustSpecifyGroupNoticeSubject">
-		Du skal angive et emne for at sende en gruppe besked.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AddGroupOwnerWarning">
-		Du er ved at tilføje medlemmer til rollen som [ROLE_NAME].
-Medlemmer ikke kan fjernes fra denne rolle.
-Medlemmerne skal fratræde sin rolle selv.
-Er du sikker på du vil fortsætte?
-		<usetemplate ignoretext="Bekræft, før jeg tilføjer en ny gruppe ejer" name="okcancelignore" notext="Nej" yestext="Ja"/>
-	</notification>
-	<notification name="AssignDangerousActionWarning">
-		Du er ved at tilføje muligheden for &apos;[ACTION_NAME]&apos; til
-rollen &apos;[ROLE_NAME]&apos;.
-
-*ADVARSEL*
-Ethvert medlem i en rolle med denne evne kan tildele sig selv -- og et andet medlem - roller med flere beføjelser, end de har i øjeblikket, potentielt kan de ophøje sig selv til nær-Ejer magt. Være sikker på, at du ved, hvad du laver, før tildeling af denne evne.
-
-Add this Ability to &apos;[ROLE_NAME]&apos;?
-		<usetemplate name="okcancelbuttons" notext="Nej" yestext="Ja"/>
-	</notification>
-	<notification name="AttachmentDrop">
-		Du er ved at smide et vedhæng.
-    Er du sikker på at du vil fortsætte?
-		<usetemplate ignoretext="Bekræft før vedhæng smides" name="okcancelignore" notext="Nej" yestext="Ja"/>
-	</notification>
-	<notification name="JoinGroupNoCost">
-		Du melder dig ind i gruppen [NAME].
-Ønsker du at fortsætte?
-		<usetemplate name="okcancelbuttons" notext="Annullér" yestext="Bliv medlem"/>
-	</notification>
-	<notification name="JoinGroupCannotAfford">
-		Tilmelding til denne gruppe koster L$[COST].
-Du har ikke nok L$ til denne tilmelding.
-	</notification>
-	<notification name="CreateGroupCost">
-		Oprettelse af denne gruppe vil koste L$100.
-Grupper skal have mindst 2 medlemmer, ellers slettes de for altid.
-Invitér venligst medlemmer indenfor 48 timer.
-		<usetemplate canceltext="Annullér" name="okcancelbuttons" notext="Annullér" yestext="Oprete en gruppe for L$100"/>
-	</notification>
-	<notification name="ConfirmLandSaleToAnyoneChange">
-		ADVARSEL: Ved at vælge &apos;sælg til enhver&apos; bliver til land tilgængeligt for alle i hele [SECOND_LIFE], også de som ikke er i denne region.
-
-Det valgte antal [LAND_SIZE] m² land bliver sat til salg.
-Salgprisen vil være [SALE_PRICE]L$ og vil være til salg til [NAME].
-	</notification>
-	<notification name="MultipleFacesSelected">
-		Flere overflader er valgt for øjeblikket.
-Hvis du fortsætter med denne aktion, vil flere instanser af media blive vist på overfladerne på objektet.
-Hvis media kun skal vises på en overflade, vælg &apos;Vælg overflade&apos; og klik på den relevante overflade  og klik på tilføj.
-		<usetemplate ignoretext="Media vil blive sat på flere valgte overflader" name="okcancelignore" notext="Annullér" yestext="OK"/>
-	</notification>
-	<notification name="PromptMissingSubjMsg">
-		E-mail dette billede med standard emne eller besked?
-		<usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
-	</notification>
-	<notification name="ErrorUploadingPostcard">
-		Der var et problem med at sende billedet på grund af følgende: [REASON]
-	</notification>
-	<notification name="MaxAttachmentsOnOutfit">
-		Kunne ikke vedhæfte objekt.
-Overskrider vedhæftnings begrænsning på [MAX_ATTACHMENTS] objekter. Tag venligst en anden vedhæftning af først.
-	</notification>
-	<notification name="MustHaveAccountToLogIn">
-		Ups. Noget mangler at blive udfyldt.
-Du skal indtaste brugernavnet for din avatar.
-
-Du skal bruge en konto for at benytte [SECOND_LIFE]. Ønsker du at oprette en konto nu?
-		<usetemplate name="okcancelbuttons" notext="Prøv igen" yestext="Lav ny konto"/>
-	</notification>
-	<notification name="InvalidCredentialFormat">
-		Du skal indtaste enten dit brugernavn eller både dit fornavn og efternavn for din avatar i brugernavn feltet, derefter log på igen.
-	</notification>
-	<notification name="DeleteMedia">
-		Du har valgt at slette media tilknyttet denne overflade.
-Er du sikker på at du vil fortsætte?
-		<usetemplate ignoretext="Bekræft før jeg slette media i et objekt" name="okcancelignore" notext="Nej" yestext="Ja"/>
-	</notification>
-	<notification name="ClassifiedInsufficientFunds">
-		Ikke nok penge til at oprette annonce.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="DeleteAvatarPick">
-		Slet favorit &lt;nolink&gt;[PICK]&lt;/nolink&gt;?
-	</notification>
-	<notification name="DeleteOutfits">
-		Slet valgte sæt?
-		<usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
-	</notification>
-	<notification name="CacheWillClear">
-		Cache vil blive tømt ved næste genstart af [APP_NAME].
-	</notification>
-	<notification name="CacheWillBeMoved">
-		Cache vil blive fjernet ved næste genstart af [APP_NAME].
-Note: This will clear the cache.
-	</notification>
-	<notification name="ChangeConnectionPort">
-		Port ændringer vil blive effektueret ved næste genstart af [APP_NAME].
-	</notification>
-	<notification name="ChangeSkin">
-		Den nye hud vil blive vist ved næste genstart af [APP_NAME].
-	</notification>
-	<notification name="ChangeLanguage">
-		Ændring af sprog vil først have effekt efter genstart af [APP_NAME].
-	</notification>
-	<notification name="StartRegionEmpty">
-		Ups, din start region er ikke angivet.
-Indtast venligst navn på region i Start lokation feltet eller vælg &quot;Min sidste lokation&quot; eller &quot;Hjem&quot;.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="UnsupportedHardware">
-		Din computer opfylder ikke minimumskravene til [APP_NAME]. Du kan risikere nedsat hastighed. Desværre kan [SUPPORT_SITE] ikke tilbyde teknisk support til konfigurationer der ikke er understøttet.
-
-Besøg [_URL] for yderligere information?
-		<usetemplate ignoretext="Din computer hardware understøttes ikke" name="okcancelignore" notext="No" yestext="Yes"/>
-	</notification>
-	<notification name="UnknownGPU">
-		Dit system indeholder et grafikkort som [APP_NAME] ikke kan genkende.
-Dette skyldes ofte nyt hardware som endnu ikke er blevet testet med [APP_NAME].  Kortet vil sandsynligvis virke fint, med det kan være nødvendigt at justere grafik opsætningen.
-(Mig &gt; Indstillinger &gt; Grafik).
-		<form name="form">
-			<ignore name="ignore" text="Dit grafikkort kunne ikke identificeres"/>
-		</form>
-	</notification>
-	<notification name="DisplaySettingsNoShaders">
-		[APP_NAME] gik ned ved inititalisering af grafik drivere.
-Grafik kvaliteten sættes til &apos;lav&apos; for at undgå typiske problemer med drivere. Dette vil slå visse grafik funktioner fra.
-Vi anbefaler at opdatere driverne til dit grafikkort.
-Grafik kvaliteten kan forbedres i indstillinger &gt; Grafik.
-	</notification>
-	<notification name="CannotCopyWarning">
-		Du har ikke rettigheder til at kopiere følgende genstande:
-[ITEMS]
-og du vil miste dem fra din beholdning hvis du forærer dem væk. Er du sikker på at du vil tilbyde disse genstande?
-	</notification>
-	<notification name="CannotGiveCategory">
-		Du har ikke tilladelse til at videreføre den valgte mappe.
-	</notification>
-	<notification name="EjectAvatarFromGroup">
-		Du har smidt [AVATAR_NAME] ud af gruppen [GROUP_NAME]
-	</notification>
-	<notification name="PromptGoToCurrencyPage">
-		[EXTRA]
-
-Gå til [_URL] for information om køb af L$?
-	</notification>
-	<notification name="SoundFileInvalidChunkSize">
-		Fejl i WAV fil (chunk size):
-[FILE]
-	</notification>
-	<notification name="CannotEncodeFile">
-		Kunne ikke &apos;forstå&apos; filen: [FILE]
-	</notification>
-	<notification name="CorruptedProtectedDataStore">
-		Vi kan ikke udfylde dit brugernavn og password.  Dette kan ske hvis du ændrer netværksopsætning
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="DoNotSupportBulkAnimationUpload">
-		[APP_NAME] understøtter p.t. ikke at send flere animationsfiler ad gangen.
-	</notification>
-	<notification name="LandmarkCreated">
-		Du har tilføjet &quot;[LANDMARK_NAME]&quot; til din [FOLDER_NAME] mappe.
-	</notification>
-	<notification name="LandmarkAlreadyExists">
-		Du har allerede et landemærke for denne lokation.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CannotOpenScriptObjectNoMod">
-		Ikke muligt at åbne script i objekt uden &apos;Redigére&apos; rettigheder.
-	</notification>
-	<notification name="CouldNotTeleportReason">
-		Teleport fejlede.
-[REASON]
-	</notification>
-	<notification name="invalid_tport">
-		Der opstod et problem ved din teleport. Det kan være nødvendigt at logge ind igen, før du kan teleporte.
-Hvis du bliver ved med at få denne fejl, check venligst [SUPPORT_SITE].
-	</notification>
-	<notification name="invalid_region_handoff">
-		Der opstod et problem ved skift til ny region. Det kan være nødvendigt at logge ind igen, før du kan skifte til andre regioner.
-Hvis du bliver ved med at få denne fejl, check venligst [SUPPORT_SITE].
-	</notification>
-	<notification name="blocked_tport">
-		Beklager, teleport er blokeret lige nu. Prøv igen senere.
-Hvis du stadig ikke kan teleporte, prøv venligst at logge ud og ligge ind for at løse dette problem.
-	</notification>
-	<notification name="nolandmark_tport">
-		Beklager, systemet kunne ikke finde landmærke destinationen.
-	</notification>
-	<notification name="timeout_tport">
-		Beklager, systemet kunne ikke fuldføre teleport forbindelse.
-Prøv igen om lidt.
-	</notification>
-	<notification name="noaccess_tport">
-		Beklager, du har ikke adgang til denne teleport destination.
-	</notification>
-	<notification name="missing_attach_tport">
-		Dine vedhæng er ikke ankommet endnu. Prøv at vente lidt endnu eller log ud og ind igen før du prøver at teleporte igen.
-	</notification>
-	<notification name="too_many_uploads_tport">
-		Tekniske problemer hindrer at din teleport kan gennemføres.
-Prøv venligst igen om lidt eller vælg et mindre travlt område.
-	</notification>
-	<notification name="expired_tport">
-		Beklager, men systemet kunne ikke fuldføre din teleport i rimelig tid. Prøv venligst igen om lidt.
-	</notification>
-	<notification name="expired_region_handoff">
-		Beklager, men systemet kunne ikke fuldføre skift til anden region i rimelig tid. Prøv venligst igen om lidt.
-	</notification>
-	<notification name="no_host">
-		Ikke muligt at fine teleport destination. Destinationen kan være midlertidig utilgængelig eller findes ikke mere. 
-Prøv evt. igen om lidt.
-	</notification>
-	<notification name="no_inventory_host">
-		Beholdningssystemet er ikke tilgængelig lige nu.
-	</notification>
-	<notification name="ForceOwnerAuctionWarning">
-		Denne parcel er sat på auktion. Gennemtving ejerskab vil annullere denne auktion og måske irritere nogen beboere hvis bud allerede er afgivet.
-Gennemtving ejerskab?
-	</notification>
-	<notification name="CannotBuyLandNoRegion">
-		Ikke i stand til at købe land:
-Kan ikke finde region som dette land er i.
-	</notification>
-	<notification name="CannotCloseFloaterBuyLand">
-		Du kan ikke lukke &apos;Køb land&apos; vinduet før [APP_NAME] har vurderet en pris på denne transaktion.
-	</notification>
-	<notification name="CannotDeedLandNoRegion">
-		Land kunne ikke dedikeres:
-Kunne ikke finde den region land ligger i.
-	</notification>
-	<notification name="CannotReleaseLandRegionNotFound">
-		Kunne ikke efterlade land:
-Kan ikke finde den region landet ligger i.
-	</notification>
-	<notification name="CannotDivideLandNoRegion">
-		Kunne ikke opdele land:
-Kan ikke finde den region landet ligger i.
-	</notification>
-	<notification name="CannotJoinLandNoRegion">
-		Kunne ikke opdele land:
-Kan ikke finde den region landet ligger i.
-	</notification>
-	<notification name="CannotSaveToAssetStore">
-		Kunne ikke gemme [NAME] i den centrale database.
-Dette er typisk en midlertidig fejl. Venligst rediger og gem igen om et par minutter.
-	</notification>
-	<notification name="YouHaveBeenLoggedOut">
-		Du er blevet logget af [SECOND_LIFE]
-            [MESSAGE]
-		<usetemplate name="okcancelbuttons" notext="Afslut" yestext="Se PB &amp; Chat"/>
-	</notification>
-	<notification label="Tilføj ven" name="AddFriendWithMessage">
-		Venner kan give tilladelse til at følge hinanden
-på Verdenskortet eller modtage status opdateringer.
-
-Tilbyd venskab til [NAME]?
-		<form name="form">
-			<input name="message">
-				Vil du være min ven?
-			</input>
-			<button name="Offer" text="OK"/>
-			<button name="Cancel" text="Annullér"/>
-		</form>
-	</notification>
-	<notification label="Gem sæt" name="SaveOutfitAs">
-		Gem det som jeg har på som nyt sæt:
-		<form name="form">
-			<input name="message">
-				[DESC] (ny)
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annullér"/>
-		</form>
-	</notification>
-	<notification label="Gem" name="SaveWearableAs">
-		Gem genstand til beholdning som:
-		<form name="form">
-			<input name="message">
-				[DESC] (ny)
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annullér"/>
-		</form>
-	</notification>
-	<notification label="Omdøb sæt" name="RenameOutfit">
-		Nyt navn til sæt:
-		<form name="form">
-			<input name="new_name">
-				[NAME]
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annullér"/>
-		</form>
-	</notification>
-	<notification name="RemoveFromFriends">
-		Ønsker du at fjerne [NAME] fra din venneliste?
-	</notification>
-	<notification name="ConfirmItemDeleteHasLinks">
-		Mindst en af genstandene har lænkede genstande der peger på den. Hvis du sletter denne genstand, vil lænkninger ikke virke mere.  Det anbefales kraftigt at fjerne lænkninger først.
-
-Er du sikker på at du vil slette disse genstande?
-		<usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
-	</notification>
-	<notification name="DeedLandToGroupWithContribution">
-		Ved at dedikere denne parcel, vil gruppen skulle have og vedblive med at have nok kreditter til brug af land.
-Dedikeringen vil inkludere samtidige bidrag til gruppen fra &apos;[NAME]&apos;.
-Købsprisen for dette land er ikke refunderet til ejeren. Hvis en dedikeret parvel sælges, vil salgsprisen blive delt ligeligt mellem gruppe medlemmerne.
-
-Dediker disse [AREA] m² land til gruppen &apos;[GROUP_NAME]&apos;?
-	</notification>
-	<notification name="ErrorMessage">
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AvatarMovedDesired">
-		Den ønskede lokation er ikke tilgængelig lige nu.
-Du er blevet flyttet til en region in nærheden.
-	</notification>
-	<notification name="AvatarMovedLast">
-		Din sidste lokation er ikke tilgængelig for øjeblikket.
-Du er blevet flyttet til en region in nærheden.
-	</notification>
-	<notification name="AvatarMovedHome">
-		Din hjemme lokation er ikke tilgængelig for øjeblikket.
-Du er blevet flyttet til en region in nærheden.
-Du kan måske ønske at sætte en ny hjemme lokation.
-	</notification>
-	<notification name="ClothingLoading">
-		Dit tøj hentes stadig ned.
-Du kan bruge [SECOND_LIFE] normalt og andre personer vil se dig korrekt.
-		<form name="form">
-			<ignore name="ignore" text="Det tager lang tid at hente tøj"/>
-		</form>
-	</notification>
-	<notification name="FirstRun">
-		[APP_NAME] installationen er færdig.
-
-Hvis det er første gang du bruger [SECOND_LIFE], skal du først oprette en konto for at logge på.
-Vend tilbage til [http://join.secondlife.com secondlife.com] for at oprette en ny konto?
-	</notification>
-	<notification name="LoginPacketNeverReceived">
-		Der er problemer med at koble på.  Der kan være et problem med din Internet forbindelse eller [SECOND_LIFE_GRID].
-
-Du kan enten checke din Internet forbindelse og prøve igen om lidt, klikke på Hjælp for at se [SUPPORT_SITE] siden, eller klikke på Teleport for at forsøge at teleportere hjem.
-	</notification>
-	<notification name="CantTeleportToGrid">
-		Kunne ikke teleportere til [SLURL] da den er på et andet net ([GRID]) end det nuværende net ([CURRENT_GRID]).  Luk venligst din klient og prøv igen.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="GeneralCertificateError">
-		Kunne ikke opnå forbindelse til server.
-[REASON]
-
-Vedrørende: [SUBJECT_NAME_STRING]
-Fra: [ISSUER_NAME_STRING]
-Valid fra: [VALID_FROM]
-Valid til: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="TrustCertificateError">
-		Certifikationsmyndighed for denne server er ikke kendt.
-
-Certifikat information:
-Vedrørende: [SUBJECT_NAME_STRING]
-Fra: [ISSUER_NAME_STRING]
-Valid fra: [VALID_FROM]
-Valid til: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
-
-Ønsker du at stole på denne myndighed?
-		<usetemplate name="okcancelbuttons" notext="Annullér" yestext="Stol på"/>
-	</notification>
-	<notification name="NotEnoughCurrency">
-		[NAME] L$ [PRICE] Du har ikke nok L$ til dette.
-	</notification>
-	<notification name="GrantedModifyRights">
-		[NAME] har givet dig rettighed til at redigere sine objekter.
-	</notification>
-	<notification name="RevokedModifyRights">
-		Dinne rettigheder til at redigere objekter ejet af [NAME] er fjernet
-	</notification>
-	<notification name="BuyOneObjectOnly">
-		Ikke muligt at købe mere end et objekt ad gangen. Vælg kun ét objekt og prøv igen.
-	</notification>
-	<notification name="DownloadWindowsMandatory">
-		En ny version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Du skal hente denne version for at bruge [APP_NAME].
-	</notification>
-	<notification name="DownloadWindows">
-		En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-	</notification>
-	<notification name="DownloadWindowsReleaseForDownload">
-		En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-	</notification>
-	<notification name="DownloadLinuxMandatory">
-		En ny version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Du skal hente denne version for at kunne benytte [APP_NAME].
-		<usetemplate name="okcancelbuttons" notext="Afslut" yestext="Hent"/>
-	</notification>
-	<notification name="DownloadLinux">
-		En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-		<usetemplate name="okcancelbuttons" notext="Fortsæt" yestext="Hent"/>
-	</notification>
-	<notification name="DownloadLinuxReleaseForDownload">
-		En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-		<usetemplate name="okcancelbuttons" notext="Fortsæt" yestext="Hent"/>
-	</notification>
-	<notification name="DownloadMacMandatory">
-		En ny version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Du skal hente denne opdatering for at bruge [APP_NAME].
-
-Download til dit Program bibliotek?
-	</notification>
-	<notification name="DownloadMac">
-		En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-
-Download til dit Program bibliotek?
-	</notification>
-	<notification name="DownloadMacReleaseForDownload">
-		En opdateret version af [APP_NAME] er tilgængelig.
-[MESSAGE]
-Denne opdatering er ikke påkrævet, men det anbefales at installere den for at opnå øget hastighed og forbedret stabilitet.
-
-Download til dit Program bibliotek?
-	</notification>
-	<notification name="FailedUpdateInstall">
-		Der opstod en fejl ved installation af opdatering.
-Hent og installér venligst den nyeste version fra
-http://secondlife.com/download.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="FailedRequiredUpdateInstall">
-		Vi kunne ikke installere en påkrævet opdatering.
-Du kan ikke logge på før [APP_NAME] er blevet opdateret.
-
-Hent og installer venligst den nyeste klien fra
-http://secondlife.com/download.
-		<usetemplate name="okbutton" yestext="Afslut"/>
-	</notification>
-	<notification name="UpdaterServiceNotRunning">
-		Dette er en påkrævet opdatering af din Second Life installation.
-
-Du kan downloade opdateringen fra http://www.secondlife.com/downloads
-eller du kan installere den nu.
-		<usetemplate name="okcancelbuttons" notext="Afslut Second Life" yestext="Hent og installér nu"/>
-	</notification>
-	<notification name="DownloadBackgroundTip">
-		Vi har hentet en opdatering til din [APP_NAME] installation.
-Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update]
-		<usetemplate name="okcancelbuttons" notext="Senere..." yestext="Installér nu og genstart [APP_NAME]"/>
-	</notification>
-	<notification name="DownloadBackgroundDialog">
-		Vi har hentet en opdatering til din [APP_NAME] installation.
-Version [VERSION] [[RELEASE_NOTES_FULL_URL] Information about this update]
-		<usetemplate name="okcancelbuttons" notext="Senere..." yestext="Installér nu og genstart [APP_NAME]"/>
-	</notification>
-	<notification name="RequiredUpdateDownloadedVerboseDialog">
-		Vi har hentet en påkrævet opdatering.
-Version [VERSION]
-
-Du skal genstarte [APP_NAME] for at installere denne opdatering.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="RequiredUpdateDownloadedDialog">
-		Du skal genstarte [APP_NAME] for at installere opdateringen.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="DeedObjectToGroup">
-		<usetemplate ignoretext="Bekræft før jeg dedikerer et objekt til en gruppe" name="okcancelignore" notext="Cancel" yestext="Deed"/>
-	</notification>
-	<notification name="WebLaunchExternalTarget">
-		Ønsker du at åbne din web browser for at se dette indhold?
-		<usetemplate ignoretext="Start min browser for at se hjemmesider" name="okcancelignore" notext="Cancel" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchJoinNow">
-		GÃ¥ til [http://secondlife.com/account/ Dashboard] for at administrere din konto?
-		<usetemplate ignoretext="Start min browser for at administrere min konto" name="okcancelignore" notext="Cancel" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchSecurityIssues">
-		<usetemplate ignoretext="Start min browser for at lære hvordan man rapporterer sikkerhedsproblemer" name="okcancelignore" notext="Cancel" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchQAWiki">
-		<usetemplate ignoretext="Start min browser for at se QA Wiki" name="okcancelignore" notext="Cancel" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchPublicIssue">
-		<usetemplate ignoretext="Start min browser for at bruge det Linden Labs sagsstyring" name="okcancelignore" notext="Cancel" yestext="Go to page"/>
-	</notification>
-	<notification name="WebLaunchSupportWiki">
-		<usetemplate ignoretext="Start min browser for at se bloggen" name="okcancelignore" notext="Cancel" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchLSLGuide">
-		Ønsker du at åbne &apos;Scripting Guide&apos; for hjælp til scripting?
-		<usetemplate ignoretext="Start min browser for at se Scripting Guide" name="okcancelignore" notext="Cancel" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchLSLWiki">
-		Ønsker du at besøge LSL portalen for hjælp til scripting?
-		<usetemplate ignoretext="Start min browser for at besøge LSL Portalen" name="okcancelignore" notext="Cancel" yestext="Go to page"/>
-	</notification>
-	<notification name="ReturnToOwner">
-		<usetemplate ignoretext="Bekræft før objekter returneres til deres ejere" name="okcancelignore" notext="Cancel" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmKick">
-		Er du SIKKER på at du vil sparke alle beboere ud?
-		<usetemplate name="okcancelbuttons" notext="Cancel" yestext="Spark alle beboere ud"/>
-	</notification>
-	<notification name="MuteLinden">
-		Beklager, men du kan ikke blokere en Linden.
-	</notification>
-	<notification name="CannotStartAuctionAlreadyForSale">
-		Du kan ikke starte en auktion på en parcel som allerede er sat til salg. Fjern &apos;til salg&apos; muligheden hvis du ønsker at starte en auktion.
-	</notification>
-	<notification label="Blokering af objekt via navn mislykkedes" name="MuteByNameFailed">
-		Du har allerede blokeret dette navn.
-	</notification>
-	<notification name="BusyModeSet">
-		Sat til &apos;optaget&apos;.
-Chat og personlige beskeder vil blive skjult. Personlige beskeder vil få din &apos;optaget&apos; besked. Alle teleport invitationer vil blive afvist. Alle objekter sendt til dig vil ende i papirkurven.
-		<usetemplate ignoretext="Jeg skrifter min status til &apos;optaget" name="okignore" yestext="OK"/>
-	</notification>
-	<notification name="JoinedTooManyGroupsMember">
-		Du er oppe på det maksimale antal grupper. Forlad venligst en anden gruppe inden du melder dig ind i denne, eller afvis tilbuddet.
-[NAME] har inviteret dig til en gruppe.
-	</notification>
-	<notification name="JoinedTooManyGroups">
-		Du er oppe på det maksimale antal grupper. Forlad venligst en gruppe inden du melder dig ind i enndnu en gruppe eller opretter en ny.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="KickUser">
-		Spark beboere ud med hvilken besked?
-	</notification>
-	<notification name="FreezeUser">
-		Frys beboeren med hvilken besked?
-	</notification>
-	<notification name="UnFreezeUser">
-		Fjern frysning af beboeren med hvilken besked?
-	</notification>
-	<notification name="SetDisplayNameSuccess">
-		Hej [DISPLAY_NAME]!
-
-Præcist som i virkeligheden tager det et stykke tid at vænne sig til et nyt navn. Det kan tage flere dage for [http://wiki.secondlife.com/wiki/Setting_your_display_name your name to update] i objekter, scripts, søgninger m.v.
-	</notification>
-	<notification name="SetDisplayNameBlocked">
-		Beklager, du kan ikke ændre dit visningsnavn. Hvis du mener dette skyldes en fejl, kontakt venligst support.
-	</notification>
-	<notification name="SetDisplayNameFailedLength">
-		Beklager, mavnet er for langt. Visningsnavne kan ikke indholde mere end [LENGTH] karakterer.
-
-Prøv venligst med et kortere navn.
-	</notification>
-	<notification name="SetDisplayNameFailedGeneric">
-		Beklager, vi kunne ikke sætte dit visningsnavn.  Prøv venligst igen senere.
-	</notification>
-	<notification name="SetDisplayNameMismatch">
-		Visningsnavnene du angav matcher ikke. Prøv at taste ind igen.
-	</notification>
-	<notification name="AgentDisplayNameUpdateThresholdExceeded">
-		Beklager, du er nødt til at vente længere, inden du kan ændre visningsnavn.
-
-Se mere under http://wiki.secondlife.com/wiki/Setting_your_display_name
-
-Prøv venligst igen senere.
-	</notification>
-	<notification name="AgentDisplayNameSetBlocked">
-		Beklager, vi kunne ikke sætte dit valgte navn da det indholder et ikke tilladt ord.
-
- Prøv med et andet navn.
-	</notification>
-	<notification name="AgentDisplayNameSetInvalidUnicode">
-		Visningsnavnet du prøver at angive indeholder ugyldige karakterer.
-	</notification>
-	<notification name="AgentDisplayNameSetOnlyPunctuation">
-		Dit vinsningsnavn skal indeholde andre bogstaver end tegnsætningstegn.
-	</notification>
-	<notification name="DisplayNameUpdate">
-		[OLD_NAME] ([SLID]) er nu kendt som [NEW_NAME].
-	</notification>
-	<notification name="OfferTeleport">
-		Tilbyd en teleport til din position med følgende besked?
-		<form name="form">
-			<input name="message">
-				Mød mig i [REGION]
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annullér"/>
-		</form>
-	</notification>
-	<notification name="OfferTeleportFromGod">
-		Tilkald beboer til din lokation?
-	</notification>
-	<notification name="TeleportFromLandmark">
-		Er du sikker på at du vil teleportere til &lt;nolink&gt;[LOCATION]&lt;/nolink&gt;?
-		<usetemplate ignoretext="Bekræft at jeg vil teleportere til et landemærke" name="okcancelignore" notext="Cancel" yestext="Teleport"/>
-	</notification>
-	<notification name="TeleportToPick">
-		Teleport til [PICK]?
-		<usetemplate ignoretext="Bekræft at jeg ønsker at teleportere til et sted i favoritter" name="okcancelignore" notext="Annullér" yestext="Teleport"/>
-	</notification>
-	<notification name="TeleportToClassified">
-		Teleport til [CLASSIFIED]?
-		<usetemplate ignoretext="Bekræft at du ønsker at teleportere til lokation in annoncer" name="okcancelignore" notext="Annullér" yestext="Teleport"/>
-	</notification>
-	<notification name="TeleportToHistoryEntry">
-		Teleport til [HISTORY_ENTRY]?
-		<usetemplate ignoretext="Bekræft at du ønsker at teleportere til en lokation i din historik" name="okcancelignore" notext="Annullér" yestext="Teleport"/>
-	</notification>
-	<notification label="Change Linden Estate" name="ChangeLindenEstate">
-		Du er i færd med at ændre et Linden ejet estate (mainland, teeen grid, orientation etc.).
-
-Dette er EKSTREMT FARLIGT da det kan ændre beboernes oplevelse fundamentalt. På mainland vil dette betyde ændring af tusinder af regioner og få spaceserveren til at kløjs i det.
-
-Fortsæt?
-	</notification>
-	<notification name="RegionEntryAccessBlocked">
-		Du har ikke adgang til denne region på grund af din valgte indholdsrating. Dette kan skyldes manglende validering af din alder.
-
-Undersøg venligst om du har installeret den nyeste [APP_NAME] klient, og gå til &apos;Knowledge Base&apos; for yderligere detaljer om adgang til områder med denne indholdsrating.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="RegionEntryAccessBlocked_KB">
-		Du har ikke adgang til denne region på grund af din valgte indholdsrating.
-
-GÃ¥ til &apos;Knowledge Base&apos; for mere information om indholdsratings.
-		<url name="url">
-			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
-		</url>
-		<usetemplate ignoretext="Ikke adgang til denne region på grund af begrænsninger i min indholdsrating" name="okcancelignore" notext="Luk" yestext="Gå til &apos;Knowledge Base&apos;"/>
-	</notification>
-	<notification name="RegionEntryAccessBlocked_Notify">
-		Du har ikke adgang til denne region på grund af din valgte indholdsrating.
-	</notification>
-	<notification name="RegionEntryAccessBlocked_Change">
-		Du har ikke adgang til denne region på grund af din opsætning af indholdsrating.
-
-For at få adgang til den ønskede region skal du ændre din indholdsrating. Dette vil give dig ret til at søge og får tilgang til indhold af typen [REGIONMATURITY]. For at omgøre ændringer gå til Mig &gt; Indstillinger &gt; Generelt.
-		<form name="form">
-			<button name="OK" text="Ændre indstillinger"/>
-			<button name="Cancel" text="Luk"/>
-			<ignore name="ignore" text="Din valgte indholdsrating forhindrer dig i at kommer til en region"/>
-		</form>
-	</notification>
-	<notification name="PreferredMaturityChanged">
-		Din indholdsrating er nu [RATING].
-	</notification>
-	<notification name="LandClaimAccessBlocked">
-		Du kan ikke kræve dette land på grund af din nuværende indholdsrating indstillinge . Dette kan skyldes manglende validering af din alder.
-
-Undersøg om du har den nyeste [APP_NAME] klient og gå venligst til &apos;Knowledge Base&apos; for yderligere detaljer om adgang til områder med denne indholdsrating.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="LandClaimAccessBlocked_KB">
-		Du kan ikke kræve dette land på grund af din nuværende indholdsrating indstilling..
-
-GÃ¥ venligst til &apos;Knowledge Base&apos; for yderligere information om indholdsrating.
-		<url name="url">
-			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
-		</url>
-		<usetemplate ignoretext="Du kan ikke kræve dette land, på grund af begrænsninger i indholdsrating" name="okcancelignore" notext="Luk" yestext="Gå til &apos;Knowledge Base&apos;"/>
-	</notification>
-	<notification name="LandClaimAccessBlocked_Notify">
-		Du kan ikke kræve dette land på grund af din indholdsrating.
-	</notification>
-	<notification name="LandClaimAccessBlocked_Change">
-		Du kan ikke kræve dette land, på grund af begrænsninger i din opsætning af indholdsrating.
-
-Du kan klikke på &apos;Ændre præference&apos; for at ændre din indholdsrating nu og dermed opnå adgang. Du vil så få mulighed for at søge og tilgå [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gå til Mig &gt; Indstillinger &gt; Generelt.
-		<usetemplate ignoretext="Din valgte indholdsrating forhindrer dig i at kræve land" name="okcancelignore" notext="Luk" yestext="Ændre præferencer"/>
-	</notification>
-	<notification name="LandBuyAccessBlocked">
-		Du kan ikke købe dette land på grund af din nuværende indholdsrating indstillinge . Dette kan skyldes manglende validering af din alder.
-
-Undersøg om du har den nyeste [APP_NAME] klient og gå venligst til &apos;Knowledge Base&apos; for yderligere detaljer om adgang til områder med denne indholdsrating.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="LandBuyAccessBlocked_KB">
-		Du kan ikke købe dette land på grund af din nuværende indholdsrating. 
-
-GÃ¥ til &apos;Knowledge Base&apos; for yderligere detaljer om indholdsrating.
-		<url name="url">
-			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
-		</url>
-		<usetemplate ignoretext="Du kan ikke købe dette land, på grund af begrænsninger i indholdsrating" name="okcancelignore" notext="Luk" yestext="Gå til &apos;Knowledge Base&apos;"/>
-	</notification>
-	<notification name="LandBuyAccessBlocked_Notify">
-		Du kan ikke købe dette land på grund af din nuværende indholdsrating indstilling.
-	</notification>
-	<notification name="LandBuyAccessBlocked_Change">
-		Du kan ikke købe dette land, på grund af begrænsninger i din opsætning af indholdsrating.
-
-Du kan klikke på &apos;Ændre præference&apos; for at ændre din indholdsrating nu og dermed opnå adgang. Du vil så få mulighed for at søge og tilgå [REGIONMATURITY] fra da af. Hvis du senere ønsker at ændre denne opsætning tilbage, gå til Mig &gt; Indstillinger &gt; Generelt.
-		<usetemplate ignoretext="Din valgte rating forhindrer dig i at købe land" name="okcancelignore" notext="Luk" yestext="Ændre præferencer"/>
-	</notification>
-	<notification name="TooManyPrimsSelected">
-		Der er valgt for mange prims. Vælg venligst [MAX_PRIM_COUNT] eller færre og prøv igen
-	</notification>
-	<notification name="UnableToLoadNotecardAsset">
-		Kunne ikke hente notecard indhold.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="SetClassifiedMature">
-		Indeholder denne annonce &apos;Mature&apos; indhold?
-		<usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Nej" yestext="Ja"/>
-	</notification>
-	<notification name="SetGroupMature">
-		Indeholder denne gruppe &apos;Mature&apos; indhold?
-		<usetemplate canceltext="Annullér" name="yesnocancelbuttons" notext="Nej" yestext="Ja"/>
-	</notification>
-	<notification label="Changed Region Maturity" name="RegionMaturityChange">
-		Ratingen for denne region er ændret.
-Det kan tage noget tid inden ændringen slår igennem på kortet.
-
-For at få adgang til voksen regioner, skal beboere være alders-checket, enten via aldersverifikation eller  betalingsverifikation.
-	</notification>
-	<notification label="Voice Version Mismatch" name="VoiceVersionMismatch">
-		Denne version af [APP_NAME] er ikke kompatibel med stemme chat funktionen i denne region. For at kunne få stemme chat til at fungere skal du opdatere [APP_NAME].
-	</notification>
-	<notification name="MoveInventoryFromObject">
-		<usetemplate ignoretext="Advar mig før jeg flytter &apos;ikke-kopiérbare&apos; genstande fra et objekt" name="okcancelignore" notext="Cancel" yestext="OK"/>
-	</notification>
-	<notification name="MoveInventoryFromScriptedObject">
-		<usetemplate ignoretext="Advar mig før jeg flytter &apos;ikke-kopiérbare&apos; genstande, hvor det kan medføre at ødelægge et scriptet objekt" name="okcancelignore" notext="Cancel" yestext="OK"/>
-	</notification>
-	<notification name="ClickActionNotPayable">
-		Advarsel: &apos;Betal objekt&apos; klik-aktionen er blevet aktiveret, men det vil kun virke, hvis et script med et &apos;money()&apos; event er tilføjet.
-		<form name="form">
-			<ignore name="ignore" text="I set the action &apos;Pay object&apos; when building an object without a money() script"/>
-		</form>
-	</notification>
-	<notification name="WebLaunchAccountHistory">
-		GÃ¥ til [http://secondlife.com/account/ Dashboard] for at se konto-historik?
-		<usetemplate ignoretext="Start min browser for at se min konto historik" name="okcancelignore" notext="Cancel" yestext="Go to page"/>
-	</notification>
-	<notification name="ConfirmQuit">
-		Er du sikker på at du vil afslutte?
-		<usetemplate ignoretext="Bekræft før jeg afslutter" name="okcancelignore" notext="Afslut ikke" yestext="Quit"/>
-	</notification>
-	<notification name="DeleteItems">
-		[QUESTION]
-		<usetemplate ignoretext="Bekræft før sletning af genstande" name="okcancelignore" notext="Annullér" yestext="OK"/>
-	</notification>
-	<notification name="HelpReportAbuseEmailLL">
-		Benyt dette værktøj til at rapportere krænkninger af [http://secondlife.com/corporate/tos.php Terms of Service] og [http://secondlife.com/corporate/cs.php Community Standards].
-
-Alle rapporter om krænkninger vil blive undersøgt og behandlet.
-	</notification>
-	<notification name="HelpReportAbuseContainsCopyright">
-		Kære beboer,
-
-Det ser ud til at du indrapporterer krænkelse af ophavsret. Check venligst at du rapporterer korrekt:
-
-(1) Krænkelsesproces. Du må sende en rapport, hvis du mener at en beboer udnytter [SECOND_LIFE] rettighedssystemet, for eksempel via CopyBot eller lignende værktøjer, til at overtræde ophavsretten til objekter.
-
-(2) DCMA (”Digital Millennium Copyright Act”) eller fjernelsesproces. For at kræve at indhold fjernes fra [SECOND_LIFE], SKAL du sende en gyldig besked om overtrædelse som beskrevet i [http://secondlife.com/corporate/dmca.php DMCA Policy].
-
-Hvis du stadig ønsker at fortsætte med rapportering om overtrædelse, luk venligst dette vindue og afslut afsendelse af rapporten. Du skal muligvis vælge en specifik kategori &apos;CopyBot or Permissions Exploit&apos;.
-
-Mange tak
-
-Linden Lab
-	</notification>
-	<notification label="Replace Existing Attachment" name="ReplaceAttachment">
-		<form name="form">
-			<ignore name="ignore" text="Erstat et eksisterende vedhæng med den valgte genstand"/>
-		</form>
-	</notification>
-	<notification label="Busy Mode Warning" name="BusyModePay">
-		<form name="form">
-			<ignore name="ignore" text="Jeg er ved at betale en person eller et objekt mens jeg er &apos;optaget&apos;"/>
-		</form>
-	</notification>
-	<notification name="ConfirmDeleteProtectedCategory">
-		Mappen &apos;[FOLDERNAME]&apos; er en system mappe. At slette denne mappe kan medføre ustabilitet. Er du sikker på at du vil slette den?
-		<usetemplate ignoretext="Bekræft, inden en system mappe slettes" name="okcancelignore" notext="Annullér" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmEmptyTrash">
-		Er du sikker på at du ønsker at tømme papirkurven?
-		<usetemplate ignoretext="Bekræft før papirkurv i beholdning tømmes" name="okcancelignore" notext="Cancel" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmClearBrowserCache">
-		Er du sikker på at du ønsker at slette din historik om besøg, web og søgninger?
-		<usetemplate name="okcancelbuttons" notext="Cancel" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmClearCookies">
-		Er du sikker på du vil slette alle cookies?
-	</notification>
-	<notification name="ConfirmEmptyLostAndFound">
-		Er du sikker på at du vil slette indholdet i din &apos;Fundne genstande&apos;?
-		<usetemplate ignoretext="Bekræft før sletning af &apos;Fundne genstande&apos; mappe i beholdning" name="okcancelignore" notext="No" yestext="Yes"/>
-	</notification>
-	<notification name="CopySLURL">
-		Følgende SLurl er blevet kopieret til din udklipsholder:
- [SLURL]
-
-Henvis til dette fra en hjemmeside for at give andre nem adgang til denne lokation, eller prøv det selv ved at indsætte det i adresselinien i en web-browser.
-		<form name="form">
-			<ignore name="ignore" text="SLurl er kopieret til min udklipsholder"/>
-		</form>
-	</notification>
-	<notification name="NewSkyPreset">
-		<form name="form">
-			<input name="message">
-				Ny forudindstilling
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annullér"/>
-		</form>
-	</notification>
-	<notification name="NewWaterPreset">
-		<form name="form">
-			<input name="message">
-				Ny forudindstilling
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annullér"/>
-		</form>
-	</notification>
-	<notification name="ChatterBoxSessionStartError">
-		Ikke i stand til at start chat med [RECIPIENT].
-[REASON]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="Cannot_Purchase_an_Attachment">
-		Du kan ikke købe en genstand mens den er vedhæftet.
-	</notification>
-	<notification name="AutoWearNewClothing">
-		Vil du automatisk tage det tøj på du er ved at lave?
-		<usetemplate ignoretext="Tag det tøj på jeg laver, mens jeg ændrer udseende" name="okcancelignore" notext="No" yestext="Yes"/>
-	</notification>
-	<notification name="NotAgeVerified">
-		Du skal være alders-checket for at besøge dette område.  Ønsker du at gå til [SECOND_LIFE] hjemmesiden og bekræfte din alder?
-
-[_URL]
-		<usetemplate ignoretext="Jeg har ikke bekræftet min alder" name="okcancelignore" notext="No" yestext="Yes"/>
-	</notification>
-	<notification name="Cannot enter parcel: no payment info on file">
-		Du skal være betalende medlem for at besøge dette område.  Ønsker du at gå til [SECOND_LIFE] hjemmesiden for at blive dette?
-
-[_URL]
-		<usetemplate ignoretext="Du mangler at være betalende medlem" name="okcancelignore" notext="No" yestext="Yes"/>
-	</notification>
-	<notification name="SystemMessageTip">
-		[MESSAGE]
-	</notification>
-	<notification name="IMSystemMessageTip">
-		[MESSAGE]
-	</notification>
-	<notification name="Cancelled">
-		Annulléret
-	</notification>
-	<notification name="CancelledSit">
-		Annulléret sid
-	</notification>
-	<notification name="CancelledAttach">
-		Annulléreret vedhæft
-	</notification>
-	<notification name="ReplacedMissingWearable">
-		Erstattet manglende tøj/kropsdele med standard.
-	</notification>
-	<notification name="FriendOnline">
-		[NAME] er logget på
-	</notification>
-	<notification name="FriendOffline">
-		[NAME] er logget af
-	</notification>
-	<notification name="AddSelfFriend">
-		Selvom du nok er meget sød, kan du ikke tilføje dig selv som ven.
-	</notification>
-	<notification name="UploadingAuctionSnapshot">
-		Uploader billeder fra verdenen og www...
-(Tager omkring 5 minutter.)
-	</notification>
-	<notification name="UploadPayment">
-		Du betalte L$[AMOUNT] for at uploade.
-	</notification>
-	<notification name="UploadWebSnapshotDone">
-		Billeder fra www er uploadet.
-	</notification>
-	<notification name="UploadSnapshotDone">
-		Billeder fra verdenen er uploadet
-	</notification>
-	<notification name="TerrainDownloaded">
-		Terrain.raw downloadet
-	</notification>
-	<notification name="GestureMissing">
-		Bevægelsen [NAME] mangler i databasen.
-	</notification>
-	<notification name="UnableToLoadGesture">
-		Kunne ikke indlæse læse bevægelse [NAME].
-	</notification>
-	<notification name="LandmarkMissing">
-		Landmærke mangler i databasen.
-	</notification>
-	<notification name="UnableToLoadLandmark">
-		Ikke muligt at indlæse landmærke.  Prøv venligst igen.
-	</notification>
-	<notification name="CapsKeyOn">
-		Din Caps Lock er aktiveret.
-Det kan påvirke din indtastning af password.
-	</notification>
-	<notification name="NotecardMissing">
-		Note mangler i databasen.
-	</notification>
-	<notification name="NotecardNoPermissions">
-		Du har ikke rettigheder til at se denne note.
-	</notification>
-	<notification name="RezItemNoPermissions">
-		Utilstrækkelige tilladelser til at danne genstanden.
-	</notification>
-	<notification name="UnableToLoadNotecard">
-		Ikke muligt at indlæse note.
-Prøv venligst igen.
-	</notification>
-	<notification name="ScriptMissing">
-		Script mangler i databasen.
-	</notification>
-	<notification name="ScriptNoPermissions">
-		Utilstrækkelige tilladelser til at se script.
-	</notification>
-	<notification name="UnableToLoadScript">
-		Ikke muligt at indlæse script.  Prøv venligst igen.
-	</notification>
-	<notification name="IncompleteInventory">
-		Det komplette indhold, du tilbyder, er ikke endnu tilgængelig lokalt. Prøv venligst at tilbyde tingene igen om lidt.
-	</notification>
-	<notification name="CannotModifyProtectedCategories">
-		Du kan ikke ændre beskyttede kategorier.
-	</notification>
-	<notification name="CannotRemoveProtectedCategories">
-		Du kan ikke fjerne beskyttede kategorier.
-	</notification>
-	<notification name="UnableToBuyWhileDownloading">
-		Ikke muligt at købe, imens genstandens data hentes.
-Prøv venligst igen.
-	</notification>
-	<notification name="UnableToLinkWhileDownloading">
-		Ikke muligt at lænke imens genstandens data hentes.
-Prøv venligst igen.
-	</notification>
-	<notification name="CannotBuyObjectsFromDifferentOwners">
-		Du kan kun købe objekter fra én ejer ad gangen.
-Vælg venligst et enkelt objekt.
-	</notification>
-	<notification name="ObjectNotForSale">
-		Dette objekt er ikke til salg.
-	</notification>
-	<notification name="EnteringGodMode">
-		Starter gud-tilstand, niveau [LEVEL]
-	</notification>
-	<notification name="LeavingGodMode">
-		Stopper gud-tilstand, niveau [LEVEL]
-	</notification>
-	<notification name="CopyFailed">
-		Du har ikke rettigheder til at kopiere dette.
-	</notification>
-	<notification name="InventoryAccepted">
-		[NAME] modtog dit tilbud til hans/hendes beholdning.
-	</notification>
-	<notification name="InventoryDeclined">
-		[NAME] afviste det du tilbød fra din beholdning.
-	</notification>
-	<notification name="ObjectMessage">
-		[NAME]: [MESSAGE]
-	</notification>
-	<notification name="CallingCardAccepted">
-		Dit visitkort blev accepteret.
-	</notification>
-	<notification name="CallingCardDeclined">
-		Dit visitkort blev afvist.
-	</notification>
-	<notification name="TeleportToLandmark">
-		Du kan teleportere til lokationer som &apos;[NAME]&apos; ved at åbne Steder panelet til højre på skærmen, og her vælge landemærker fanen.
-Klik på et landemærke og vælg den, derefter 
-Click on any landmark to select it, then click &apos;Teleport&apos; at the bottom of the panel.
-(You can also double-click on the landmark, or right-click it and choose &apos;Teleport&apos;.)
-	</notification>
-	<notification name="TeleportToPerson">
-		Du kan kontakte beboere som &apos;[NAME]&apos; ved at åbne Personer panelet til højre på skærmen.
-Vælg beboeren fra listen og klik så &apos;IM&apos; i bundet af panelet.
-(Du kan også dobbelt-klikke på navnet i listen, eller højre-klikke og vælge &apos;IM&apos;).
-	</notification>
-	<notification name="CantSelectLandFromMultipleRegions">
-		Kan ikke vælge land på tværs af grænser.
-Prøv at vælge mindre stykker land.
-	</notification>
-	<notification name="SearchWordBanned">
-		Visse ord er fjernet fra din søge-sætning på grund af at disse strider mod de generelle &apos;Community Standards&apos;.
-	</notification>
-	<notification name="NoContentToSearch">
-		Vælg venligst mindst en indholdstype for at søge (PG, Mature, or Adult).
-	</notification>
-	<notification name="SystemMessage">
-		[MESSAGE]
-	</notification>
-	<notification name="PaymentReceived">
-		[MESSAGE]
-	</notification>
-	<notification name="PaymentSent">
-		[MESSAGE]
-	</notification>
-	<notification name="EventNotification">
-		Besked om begivenhed:
-
-[NAME]
-[DATE]
-		<form name="form">
-			<button name="Details" text="Detaljer"/>
-			<button name="Cancel" text="Annullér"/>
-		</form>
-	</notification>
-	<notification name="TransferObjectsHighlighted">
-		Alle genstande på denne grund, som vil blive overført til køberen af denne grund, er nu oplyst.
-
-* Træer og græs, der vil blive overført, er ikke fremhævet.
-		<form name="form">
-			<button name="Done" text="Færdig"/>
-		</form>
-	</notification>
-	<notification name="DeactivatedGesturesTrigger">
-		Deaktiverede bevægelser med samme udløser: [NAMES]
-	</notification>
-	<notification name="NoQuickTime">
-		Det ser ikke ud til at Apples QuickTime software er installeret på dit system.
-Hvis du ønsker at se streaming media på parceller der understøtter dette skal du besøge siden [http://www.apple.com/quicktime QuickTime site] og installere QuickTime Player.
-	</notification>
-	<notification name="NoPlugin">
-		Ingen Media Plugin blev fundet til at håndtere mime af typen &quot;[MIME_TYPE]&quot;.  Media af denne type vil ikke være tilgængelig.
-	</notification>
-	<notification name="MediaPluginFailed">
-		Følgende Media Plugin has fejlede:
-    [PLUGIN]
-
-Prøv venligst at geninstallere plugin eller kontakt leverandøren hvis problemerne bliver ved.
-		<form name="form">
-			<ignore name="ignore" text="En Media Plugin kunne ikke afvikles"/>
-		</form>
-	</notification>
-	<notification name="OwnedObjectsReturned">
-		De genstande du ejer på det valgte stykke land er blevet returneret til din beholdning.
-	</notification>
-	<notification name="OtherObjectsReturned">
-		Objekterne på den valgte parcel, ejet af [NAME], er blevet returneret til vedkommendes beholdning.
-	</notification>
-	<notification name="OtherObjectsReturned2">
-		Objekterne i den valgte parcel, ejet af beboeren &apos;[NAME]&apos;, er blevet returneret til deres ejer.
-	</notification>
-	<notification name="GroupObjectsReturned">
-		Genstandene på det valgte stykke land, delt med gruppen [GROUPNAME], er blevet returneret til deres ejeres beholdninger.
-Genstande, som er dedikerede og som kan overføres, er blevet returneret til deres forrige ejere.
-Genstande, der ikke kan overføres og som er dedikeret til gruppen, er blevet slettet.
-	</notification>
-	<notification name="UnOwnedObjectsReturned">
-		Genstandene på det valgte stykke land, der IKKE er ejet af dig, er blevet returneret til deres ejere.
-	</notification>
-	<notification name="ServerObjectMessage">
-		Besked fra [NAME]:
-&lt;nolink&gt;[MSG]&lt;/nolink&gt;
-	</notification>
-	<notification name="NotSafe">
-		Dette land er åbnet for &apos;skade&apos;.
-Du kan blive skadet her. Hvis du dør, vil du blive teleporteret til din hjemme lokation.
-	</notification>
-	<notification name="NoFly">
-		Dette sted har ikke aktiveret ret til flyvning.
-Du kan ikke flyve her.
-	</notification>
-	<notification name="PushRestricted">
-		Dette sted tillader ikke skubning. Du kan ikke skubbe andre, med mindre du ejer dette land.
-	</notification>
-	<notification name="NoVoice">
-		Dette sted har ikke aktiveret stemme-chat. Du vil ikke kunne høre nogen tale.
-	</notification>
-	<notification name="NoBuild">
-		Dette sted har ikke aktiveret bygge-ret. Du kan ikke bygge eller &apos;rezze&apos; objekter her.
-	</notification>
-	<notification name="ScriptsStopped">
-		En administrator har midlertidig stoppet scripts i denne region.
-	</notification>
-	<notification name="ScriptsNotRunning">
-		Denne region kører ikke nogen scripts.
-	</notification>
-	<notification name="NoOutsideScripts">
-		Dette sted tillader ikke udefra kommende scripts.
-
-Ingen scripts vil virke her, udover de som tilhører ejeren af landet.
-	</notification>
-	<notification name="ClaimPublicLand">
-		Du kan kun kræve land i den region du befinder dig i.
-	</notification>
-	<notification name="RegionTPAccessBlocked">
-		Du har ikke adgang til denne region på grund af din valgte indholdsrating. Dette kan skyldes manglende validering af din alder eller at du ikke benytter den nyeste [APP_NAME] klient.
-
-Gå venligst til &apos;Knowledge Base&apos; for yderligere detaljer om adgang til områder med denne indholdsrating.
-	</notification>
-	<notification name="URBannedFromRegion">
-		Du er blokeret i denne region.
-	</notification>
-	<notification name="NoTeenGridAccess">
-		Du kan ikke tilslutte dig denne &apos;Teen&apos; region.
-	</notification>
-	<notification name="ImproperPaymentStatus">
-		Du har ikke de rette betalingsoplysninger til at komme ind i denne region.
-	</notification>
-	<notification name="MustGetAgeParcel">
-		Du skal være aldersgodkendt for at komme ind på denne parcel.
-	</notification>
-	<notification name="NoDestRegion">
-		Destinations region ikke fundet.
-	</notification>
-	<notification name="NotAllowedInDest">
-		Du har ikke adgang til denne destination.
-	</notification>
-	<notification name="RegionParcelBan">
-		Kan ikke skifte til ny region via en blokeret parcel. Prøv en anden vej ind.
-	</notification>
-	<notification name="TelehubRedirect">
-		Du er blevet omdirigeret til en telehub.
-	</notification>
-	<notification name="CouldntTPCloser">
-		Kunne ikke teleportere nærmere til destination.
-	</notification>
-	<notification name="TPCancelled">
-		Teleport afbrudt.
-	</notification>
-	<notification name="FullRegionTryAgain">
-		Den region du prøver at komme ind i er fuld for øjeblikket.
-Prøv igen om lidt.
-	</notification>
-	<notification name="GeneralFailure">
-		Generel fejl.
-	</notification>
-	<notification name="RoutedWrongRegion">
-		Du blev sendt til en forkert region. Prøv igen.
-	</notification>
-	<notification name="NoValidAgentID">
-		Ikke en gyldig agent ID.
-	</notification>
-	<notification name="NoValidSession">
-		Ikke noget gyldig sessions-ID
-	</notification>
-	<notification name="NoValidCircuit">
-		Ingen gyldig kode for kredsløb.
-	</notification>
-	<notification name="NoValidTimestamp">
-		Ikke et gyldigt klokkeslæt.
-	</notification>
-	<notification name="NoPendingConnection">
-		Kunne ikke skabe fast forbindelse.
-	</notification>
-	<notification name="InternalUsherError">
-		Der opstod en intern fejl ved teleportering til din teleport destination.. Der kan være generelle problemer med [SECOND_LIFE] lige nu.
-	</notification>
-	<notification name="NoGoodTPDestination">
-		Kunne ikke finde et egnet teleport sted i denne region.
-	</notification>
-	<notification name="InternalErrorRegionResolver">
-		Der opstod en intern fejl ved beregning af globale koordinater for din teleport forespørgsel. Der kan være generelle problemer med [SECOND_LIFE] lige nu.
-	</notification>
-	<notification name="NoValidLanding">
-		Kunne ikke finde et gyldigt landingspunkt.
-	</notification>
-	<notification name="NoValidParcel">
-		No valid parcel could be found.
-	</notification>
-	<notification name="ObjectGiveItem">
-		Et objekt ved navn &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; ejet af [NAME_SLURL] tilbyder dig &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;.  For at bruge denne genstand skal du skifte til avanceret tilstand, hvor du kan finde genstanden i din beholdning. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
-		<form name="form">
-			<button name="Keep" text="Behold genstand"/>
-			<button name="Discard" text="Afvis genstand"/>
-			<button name="Mute" text="Blokér objekt"/>
-		</form>
-	</notification>
-	<notification name="UserGiveItem">
-		[NAME_SLURL] tilbyder dig [ITEM_SLURL].  For at bruge denne genstand skal du skifte til avanceret tilstand, hvor du kan finde genstanden i din beholdning. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
-		<form name="form">
-			<button name="Show" text="Behold genstand"/>
-			<button name="Discard" text="Afvis genstand"/>
-			<button name="Mute" text="Blokér bruger"/>
-		</form>
-	</notification>
-	<notification name="GodMessage">
-		[NAME]
-
-[MESSAGE]
-	</notification>
-	<notification name="JoinGroup">
-		[MESSAGE]
-		<form name="form">
-			<button name="Join" text="Indmeld"/>
-			<button name="Decline" text="Afvis"/>
-			<button name="Info" text="Information"/>
-		</form>
-	</notification>
-	<notification name="TeleportOffered">
-		[NAME_SLURL] har tilbudt en teleport til deres lokation:
-
-[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
-		<form name="form">
-			<button name="Teleport" text="Teleportér"/>
-			<button name="Cancel" text="Annullér"/>
-		</form>
-	</notification>
-	<notification name="TeleportOfferSent">
-		Tilbud om teleport sendt til [TO_NAME]
-	</notification>
-	<notification name="GotoURL">
-		[MESSAGE]
-[URL]
-		<form name="form">
-			<button name="Later" text="Senere"/>
-			<button name="GoNow..." text="GÃ¥ nu..."/>
-		</form>
-	</notification>
-	<notification name="OfferFriendship">
-		[NAME_SLURL] tilbyder venskab.
-
-[MESSAGE]
-
-(Som udgangspunkt vil I være i stand til at se hinandens online status.)
-		<form name="form">
-			<button name="Accept" text="Acceptér"/>
-			<button name="Decline" text="Afvis"/>
-		</form>
-	</notification>
-	<notification name="FriendshipOffered">
-		Du har tilbudt venskab til [TO_NAME]
-	</notification>
-	<notification name="OfferFriendshipNoMessage">
-		[NAME_SLURL] tilbyder venskab.
-
-(Som udgangspunkt, vil du være i stand til at se den andens online status)
-	</notification>
-	<notification name="FriendshipAccepted">
-		[NAME] accepterede dit tilbud om venskab.
-	</notification>
-	<notification name="FriendshipDeclined">
-		[NAME] afviste dit tilbud om venskab.
-	</notification>
-	<notification name="FriendshipAcceptedByMe">
-		Tilbud om venskab accepteret.
-	</notification>
-	<notification name="FriendshipDeclinedByMe">
-		Tilbud om venskab afvist.
-	</notification>
-	<notification name="OfferCallingCard">
-		[NAME] tilbyder sit visitkort.
-Dette vil tilføje et bogmærke i din beholdning, så du hurtigt kan sende en personlig besked til denne beboer.
-		<form name="form">
-			<button name="Accept" text="Acceptér"/>
-			<button name="Decline" text="Afvis"/>
-		</form>
-	</notification>
-	<notification name="RegionRestartMinutes">
-		Denne region vil genstarte om [MINUTES] minutter.
-Hvis du ikke forlader regionen, vil du blive logget af.
-	</notification>
-	<notification name="RegionRestartSeconds">
-		Denne region genstartes om [SECONDS] sekunder.
-Hvis du ikke forlader regionen, vil du blive logget af.
-	</notification>
-	<notification name="LoadWebPage">
-		Indlæas websiden [URL]?
-
-[MESSAGE]
-
-Fra objekt: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, ejer: [NAME]?
-		<form name="form">
-			<button name="Gotopage" text="GÃ¥ til side"/>
-			<button name="Cancel" text="Afbryd"/>
-		</form>
-	</notification>
-	<notification name="FailedToFindWearableUnnamed">
-		Det lykkedes ikke at finde [TYPE] i databasen.
-	</notification>
-	<notification name="FailedToFindWearable">
-		Det lykkedes ikke at finde [TYPE] med navnet [DESC] i databasen.
-	</notification>
-	<notification name="InvalidWearable">
-		Den genstand du prøver at tage på benytter en funktion din klient ikke kan forstå. Upgradér venligst din version af [APP_NAME] for at kunne tage denne genstand på.
-	</notification>
-	<notification name="ScriptQuestion">
-		&apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, et objekt ved ejet af &apos;[NAME]&apos;, ønsker at:
-
-[QUESTIONS]
-Er dette OK?
-		<form name="form">
-			<button name="Yes" text="Ja"/>
-			<button name="No" text="Nej"/>
-			<button name="Mute" text="Blokér"/>
-		</form>
-	</notification>
-	<notification name="ScriptQuestionCaution">
-		Et objeckt med navn &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, ejet af  &apos;[NAME]&apos; ønsker at:
-
-[QUESTIONS]
-Hvis du ikke stoler på dette objekt og dets skaber, bør du afvise dette ønske.
-
-Opfyld dette ønske?
-		<form name="form">
-			<button name="Grant" text="Imødekom"/>
-			<button name="Deny" text="Afvis"/>
-			<button name="Details" text="Detaljer..."/>
-		</form>
-	</notification>
-	<notification name="ScriptDialog">
-		[NAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
-[MESSAGE]
-		<form name="form">
-			<button name="Ignore" text="Ignorér"/>
-		</form>
-	</notification>
-	<notification name="ScriptDialogGroup">
-		[GROUPNAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
-[MESSAGE]
-		<form name="form">
-			<button name="Ignore" text="Ignorér"/>
-		</form>
-	</notification>
-	<notification name="BuyLindenDollarSuccess">
-		Tak for din betaling!
-
-Din L$ balance vil blive opdateret når transaktionen er gennemført. Ved transaktionen tager mere end 20 min., vil den blive annulleret. I så fald vil beløbet blive krediteret din US$ balance.
-
-Status for din betaling kan ses i din &apos;Transaction History&apos; side på din [http://secondlife.com/account/ Dashboard]
-	</notification>
-	<notification name="FirstOverrideKeys">
-		Dine bevælgelsestaster bliver nu håndteret af et objekt.
-Brug piletasterne eller AWSD for at se, hvad de gør.
-Nogle genstande (som skydevåben) kræver at du går ind i musevisning for at bruge dem.
-Tryk på &apos;M&apos; for at gåre det.
-	</notification>
-	<notification name="FirstSandbox">
-		Dette er et sandkasse område. Her kan beboere lære ast bygge.
-
-De ting du bygger vil blive slettet senere, så glem ikke at højre-klikke og vælge &quot;Tag&quot; for at tage en kopi af din kreation til din beholdning.
-	</notification>
-	<notification name="MaxListSelectMessage">
-		Du må kun vælge op til [MAX_SELECT] genstande på denne liste.
-	</notification>
-	<notification name="VoiceInviteP2P">
-		[NAME] inviterer dig til en stemme-chat samtale.
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
-		<form name="form">
-			<button name="Accept" text="Acceptér"/>
-			<button name="Decline" text="Afvis"/>
-			<button name="Mute" text="Blokér"/>
-		</form>
-	</notification>
-	<notification name="AutoUnmuteByIM">
-		[NAME] har fået sendt en besked og blokering er derfor automatisk blevet fjernet.
-	</notification>
-	<notification name="AutoUnmuteByMoney">
-		[NAME] har fået givet penge og blokering er derfor automatisk blevet fjernet.
-	</notification>
-	<notification name="AutoUnmuteByInventory">
-		[NAME] er blevet tilbud noget fra beholdning og blokering er derfor automatisk blevet fjernet.
-	</notification>
-	<notification name="VoiceInviteGroup">
-		[NAME] har has sluttet sig til stemme-chaten i gruppen [GROUP].
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
-		<form name="form">
-			<button name="Accept" text="Acceptér"/>
-			<button name="Decline" text="Afvis"/>
-			<button name="Mute" text="Blokér"/>
-		</form>
-	</notification>
-	<notification name="VoiceInviteAdHoc">
-		[NAME] har sluttet sig til en stemme-chat med en konference chat.
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
-		<form name="form">
-			<button name="Accept" text="Acceptér"/>
-			<button name="Decline" text="Afvis"/>
-			<button name="Mute" text="Blokér"/>
-		</form>
-	</notification>
-	<notification name="InviteAdHoc">
-		[NAME] inviterer dig til en konference chat.
-Klik på Acceptér for at deltage eller Afvis for at afvise invitationen. Klik på Blokér for at blokere personen.
-		<form name="form">
-			<button name="Accept" text="Acceptér"/>
-			<button name="Decline" text="Afvis"/>
-			<button name="Mute" text="Blokér"/>
-		</form>
-	</notification>
-	<notification name="VoiceChannelFull">
-		Den stemme-chat, du prøver at tilslutte dig, [VOICE_CHANNEL_NAME], har nået maksiumum kapacitet. Prøv venligst igen senere.
-	</notification>
-	<notification name="ProximalVoiceChannelFull">
-		Vi beklager.  Dette område har nået sin maksimale kapacitet for stemme-chat.  Prøv venligst at benytte stemme i et andet område.
-	</notification>
-	<notification name="VoiceChannelDisconnected">
-		Du er blevet koblet fra [VOICE_CHANNEL_NAME].  Du vil nu blive koblet til almindelig voice-chat.
-	</notification>
-	<notification name="VoiceChannelDisconnectedP2P">
-		[VOICE_CHANNEL_NAME] har afsluttet samtalen.  Du vil nu blive koblet til almindelig voice-chat.
-	</notification>
-	<notification name="P2PCallDeclined">
-		[VOICE_CHANNEL_NAME] har avist dit opkald.  Du vil nu blive koblet til almindelig voice-chat.
-	</notification>
-	<notification name="P2PCallNoAnswer">
-		[VOICE_CHANNEL_NAME] er ikke tilgængelig til at modtage dit opkald.  Du vil nu blive koblet til almindelig voice-chat.
-	</notification>
-	<notification name="VoiceChannelJoinFailed">
-		Det lykkedes ikke at forbinde til [VOICE_CHANNEL_NAME], prøv venligst igen senere.  Du vil nu blive koblet til almindelig voice-chat.
-	</notification>
-	<notification name="VoiceLoginRetry">
-		Vi laver en stemmekanal til dig. Det kan tage op til et minut.
-	</notification>
-	<notification name="VoiceEffectsExpired">
-		En eller flere af dine stemme &quot;morphs&quot; er udløbet.
-[[URL] Click here] for at forny dit abbonnement.
-	</notification>
-	<notification name="VoiceEffectsExpiredInUse">
-		Den aktive stemme &quot;morph&quot; er udløbet og din normale stemme opsætning er genaktiveret.
-[[URL] Click here] for at forny dit abbonnement.
-	</notification>
-	<notification name="VoiceEffectsWillExpire">
-		En eller flere af dine stemme &quot;morphs&quot; vil udløbe om mindre end [INTERVAL] dage.
-[[URL] Click here] for at forny dit abbonnement.
-	</notification>
-	<notification name="VoiceEffectsNew">
-		Nye stemme &quot;morphs&quot; er tilgængelige!
-	</notification>
-	<notification name="Cannot enter parcel: not a group member">
-		Kun medlemmer af en bestemt gruppe kan besøge dette område.
-	</notification>
-	<notification name="Cannot enter parcel: banned">
-		Du kan ikke komme ind på området. Du er blevet udelukket.
-	</notification>
-	<notification name="Cannot enter parcel: not on access list">
-		Du kan ikke komme ind på området. Du er ikke på adgangslisten.
-	</notification>
-	<notification name="VoiceNotAllowed">
-		Du har ikke tilladelse til at tilslutte dig stemme-chat på [VOICE_CHANNEL_NAME].
-	</notification>
-	<notification name="VoiceCallGenericError">
-		En fejl er opstået under forsøget på at koble sig på stemme chatten [VOICE_CHANNEL_NAME].  Pråv venligst senere.
-	</notification>
-	<notification name="UnsupportedCommandSLURL">
-		Den SLurl du klikkede på understøttes ikke.
-	</notification>
-	<notification name="BlockedSLURL">
-		En SLurl blev modtaget en ikke sikret browser og den er blevet blokeret af sikkerhedsmæssige årsager.
-	</notification>
-	<notification name="ThrottledSLURL">
-		Flere SLurls blev modtaget fra en browser i et kort tidsrum.
-De vil blive blokeret nogle få sekunder af sikkerhedsmæssige årsager.
-	</notification>
-	<notification name="IMToast">
-		[MESSAGE]
-		<form name="form">
-			<button name="respondbutton" text="Svar"/>
-		</form>
-	</notification>
-	<notification name="ConfirmCloseAll">
-		Er du sikker på at du vil lukke alle personlige samtaler (IM)?
-		<usetemplate ignoretext="Bekræft før du lukker alle IMer" name="okcancelignore" notext="Annullér" yestext="OK"/>
-	</notification>
-	<notification name="AttachmentSaved">
-		Vedhæng er blevet gemt.
-	</notification>
-	<notification name="UnableToFindHelpTopic">
-		Ikke muligt at finde hjælp om dette element.
-	</notification>
-	<notification name="ObjectMediaFailure">
-		Server fejl: Media opdatering eller &quot;get&quot; fejlede.
-&apos;[ERROR]&apos;
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="TextChatIsMutedByModerator">
-		Din tekst chat er blevet slukket af moderator.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="VoiceIsMutedByModerator">
-		Din stemme er blevet slukket af moderatoren.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmClearTeleportHistory">
-		Er du sikker på at du vil slette teleport historikken?
-		<usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
-	</notification>
-	<notification name="BottomTrayButtonCanNotBeShown">
-		Den valgte knap kan ikke vises lige nu.
-Knappen vil blive vist når der er nok plads til den.
-	</notification>
-	<notification name="ShareNotification">
-		Vælg beboere at dele med.
-	</notification>
-	<notification name="ShareItemsConfirmation">
-		Er du sikker på at du vil dele følgende genstande:
-
-&lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
-
-Me følgende beboere:
-
-[RESIDENTS]
-		<usetemplate name="okcancelbuttons" notext="Annullér" yestext="Ok"/>
-	</notification>
-	<notification name="ItemsShared">
-		Genstande er nu delt.
-	</notification>
-	<notification name="DeedToGroupFail">
-		Dedikering til gruppe fejlede.
-	</notification>
-	<notification name="AvatarRezNotification">
-		( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; var ikke sky mere, efter [TIME] sekunder.
-	</notification>
-	<notification name="AvatarRezSelfBakedDoneNotification">
-		( [EXISTENCE] seconds alive )
-Du blev færdig med at fremvise dit sæt efter [TIME] sekunder.
-	</notification>
-	<notification name="AvatarRezSelfBakedUpdateNotification">
-		( [EXISTENCE] seconds alive )
-Du sendte en opdatering af dit udseende efter [TIME] sekunder.
-[STATUS]
-	</notification>
-	<notification name="AvatarRezCloudNotification">
-		( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; blev til &quot;sky&quot;.
-	</notification>
-	<notification name="AvatarRezArrivedNotification">
-		( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; appeared.
-	</notification>
-	<notification name="AvatarRezLeftCloudNotification">
-		( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; forsvandt efter [TIME] sekunder som &quot;sky&quot;.
-	</notification>
-	<notification name="AvatarRezEnteredAppearanceNotification">
-		( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; skiftede til udseende modus.
-	</notification>
-	<notification name="AvatarRezLeftAppearanceNotification">
-		( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; har forladt udseende modus.
-	</notification>
-	<notification name="NoConnect">
-		Vi har problemer med at oprette forbindelse via [PROTOCOL] [HOSTID].
-Check venligst din netværks- og firewallsetup.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="NoVoiceConnect">
-		Vi har problemer med at oprette forbindelse til din stemme server:
-
-[HOSTID]
-
-Stemme kommunikation vil ikke være tilgængelig.
-Check venligst din netværks- og firewall setup.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AvatarRezLeftNotification">
-		( [EXISTENCE] sekunder i live )
-Avatar &apos;[NAME]&apos; forsvandt helt &quot;uploaded&quot;.
-	</notification>
-	<notification name="AvatarRezSelfBakedTextureUploadNotification">
-		( [EXISTENCE] sekunder i live )
-Du uploadede en [RESOLUTION] &quot;bagt&quot; tekstur til &apos;[BODYREGION]&apos; efter [TIME] sekunder.
-	</notification>
-	<notification name="AvatarRezSelfBakedTextureUpdateNotification">
-		( [EXISTENCE] sekunder i live )
-Du opdaterede en [RESOLUTION] &quot;bagt&quot; tekstur for &apos;[BODYREGION]&apos; efter [TIME] sekunder.
-	</notification>
-	<notification name="ConfirmLeaveCall">
-		Er du sikker på at du vil forlade dette opkald?
-		<usetemplate ignoretext="Bekræft før jeg forlader opkald" name="okcancelignore" notext="Nej" yestext="Ja"/>
-	</notification>
-	<notification name="ConfirmMuteAll">
-		Du har valgt at slukke for lyden for alle deltagere i gruppeopkaldet.
-Dette vil også betyde, at alle beboere der slutter sig til opkaldet
-vil have lyden slukket - selv efter de har forladt kaldet.
-
-
-Sluk for alles lyd?
-		<usetemplate ignoretext="Bekræft før jeg slukker for alle deltageres lyd i gruppe-kald" name="okcancelignore" notext="Annullér" yestext="Ok"/>
-	</notification>
-	<notification label="Chat" name="HintChat">
-		For at deltage i samtalen tast tekst ind i chat feltet nedenfor.
-	</notification>
-	<notification label="Stå op" name="HintSit">
-		For at rejse dig op og forlad siddeposition, tryk på &quot;Stå op&quot; knappen.
-	</notification>
-	<notification label="Undersøg verden" name="HintDestinationGuide">
-		Destinationsguiden indeholder tusinder af nye steder der kan opleves. Vælg venligst et sted og vælg Teleport for at komme derhen.
-	</notification>
-	<notification label="Side panel" name="HintSidePanel">
-		Få hurtig tilgang til din beholdning, sæt, profiler og andet i dette side panel.
-	</notification>
-	<notification label="Flyt" name="HintMove">
-		For at gå eller løbe, åben Flyt panelet for neden og brug pilene til at navigere. Du kan også bruge pile-tasterne på dit tastatur.
-	</notification>
-	<notification label="Visningsnavn" name="HintDisplayName">
-		Angiv dit konfigurérbare visningsnavn her. Dette er i tillæg til dit unikke brugernavn, som ikke kan ændres. Du kan ændre hvordan du ser andre beboeres navne i dine indstillinger.
-	</notification>
-	<notification label="Flyt" name="HintMoveArrows">
-		For at gå, brug piletasterne på tastaturet. Du kan løbe ved at trykke to gange på Pil-Op
-	</notification>
-	<notification label="Se" name="HintView">
-		For at ændre dit kamera-view, benyt kredsløbs og panoreringskontrollerne. Nulstil view ved at trykke Esc eller ved at gå.
-	</notification>
-	<notification label="Beholdning" name="HintInventory">
-		Undersøg din beholdning for at finde ting. Nyeste genstand findes lettes under fanen &quot;Nye ting&quot;
-	</notification>
-	<notification label="Der er kommet Linden Dollars" name="HintLindenDollar">
-		Her er din nuværende balance af L$. Klik på Køb L$ for at købe flere Linden dollars.
-	</notification>
-	<notification name="PopupAttempt">
-		En pop-up blev hindret i at blive vist.
-		<form name="form">
-			<ignore name="ignore" text="Tillad alle pop-ups"/>
-			<button name="open" text="Ã…ben pop-up vindue"/>
-		</form>
-	</notification>
-	<notification name="AuthRequest">
-		Hjemmesiden på  &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; in realm &apos;[REALM]&apos; kræver et brugernavn og password.
-		<form name="form">
-			<input name="username" text="Brugernavn"/>
-			<input name="password" text="Password"/>
-			<button name="ok" text="Send"/>
-			<button name="cancel" text="Annullér"/>
-		</form>
-	</notification>
-	<notification label="" name="ModeChange">
-		For at skifte tilstand skal du genstarte programmet.
-		<usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
-	</notification>
-	<notification label="" name="NoClassifieds">
-		Oprettelse og redigering af annoncer er kun muligt i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
-		<usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
-	</notification>
-	<notification label="" name="NoGroupInfo">
-		Oprettelse og redigering af grupper er kun muligt i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
-		<usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
-	</notification>
-	<notification label="" name="NoPicks">
-		Oprettelse og redigering af favoritter er kun mulig i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
-		<usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
-	</notification>
-	<notification label="" name="NoWorldMap">
-		Det er kun muligt at se verdenskortet i avanceret tilstand.Ønsker du at logge ud for at skifte tilstand? Valg af tilstand findes på login skærmbilledet.
-		<usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
-	</notification>
-	<notification label="" name="NoVoiceCall">
-		Stemme kald kan kun benttes i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand?
-		<usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
-	</notification>
-	<notification label="" name="NoAvatarShare">
-		Det er kun mulig at dele i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand?
-		<usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
-	</notification>
-	<notification label="" name="NoAvatarPay">
-		Det er kun muligt at betale andre beboere i avanceret tilstand. Ønsker du at logge ud for at skifte tilstand?
-		<usetemplate name="okcancelbuttons" notext="Afslut ikke" yestext="Afslut"/>
-	</notification>
-	<global name="UnsupportedGLRequirements">
-		Det ser ikke ud til at din hardware opfylder minimumskravene til [APP_NAME]. [APP_NAME] kræver et OpenGL grafikkort som understøter &apos;multitexture&apos;. Check eventuelt om du har de nyeste drivere for grafikkortet, og de nyeste service-packs og patches til dit operativsystem.
-
-Hvis du bliver ved med at have problemer, besøg venligst [SUPPORT_SITE].
-	</global>
-	<global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
-		Hvis du selv ejer land, kan du benytte det til hjemme lokation.
-Ellers kan du se på verdenskortet og finde steder markeret med &quot;Infohub&quot;.
-	</global>
-	<global name="You died and have been teleported to your home location">
-		Du døde og er blevet teleporteret til din hjemmelokation.
-	</global>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml
deleted file mode 100644
index 14250453eb78dea2dccfc33e9216710fb4183e9c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="call_btn_panel">
-			<button label="Opkald" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Forlad samtale" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Stemmekontroller" name="voice_ctrls_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml
deleted file mode 100644
index bd20ece7642cf39b54b15b96e4eda5d283b5cc24..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
-	<string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
-	<string name="SpeakBtnToolTip" value="Slå mikrofon til/fra"/>
-	<string name="VoiceControlBtnToolTip" value="Vis/skjul stemme kontrolpanel"/>
-	<layout_stack name="toolbar_stack">
-		<layout_panel name="speak_panel">
-			<button label="Tal" name="speak_btn" tool_tip="Tænd og sluk for mikrofon"/>
-		</layout_panel>
-		<layout_panel name="speak_flyout_panel">
-			<button label="" name="flyout_btn" tool_tip="Ændring af opsætning for lyd"/>
-		</layout_panel>
-		<layout_panel name="gesture_panel">
-			<gesture_combo_list label="Bevægelse" name="Gesture" tool_tip="Lad din avatar gøre ting"/>
-		</layout_panel>
-		<layout_panel name="cam_panel">
-			<bottomtray_button label="Vis" name="camera_btn" tool_tip="Kontrollér kameravinkel"/>
-		</layout_panel>
-		<layout_panel name="destinations_panel">
-			<bottomtray_button label="Destinationer" name="destination_btn" tool_tip="Rejs i Second Life"/>
-		</layout_panel>
-		<layout_panel name="avatar_panel">
-			<bottomtray_button label="Min avatar" name="avatar_btn" tool_tip="Ændre dit udseende"/>
-		</layout_panel>
-		<layout_panel name="people_panel">
-			<bottomtray_button label="Personer" name="show_people_button" tool_tip="Find personer i Second Life"/>
-		</layout_panel>
-		<layout_panel name="profile_panel">
-			<bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Se og rediger din profil"/>
-		</layout_panel>
-		<layout_panel name="howto_panel">
-			<bottomtray_button label="Hvordan" name="show_help_btn" tool_tip="Vis hjælpeinformation for Second Life"/>
-		</layout_panel>
-		<layout_panel name="im_well_panel">
-			<chiclet_im_well name="im_well">
-				<button name="Unread IM messages" tool_tip="Konversationer"/>
-			</chiclet_im_well>
-		</layout_panel>
-		<layout_panel name="notification_well_panel">
-			<chiclet_notification name="notification_well">
-				<button name="Unread" tool_tip="Notifikationer"/>
-			</chiclet_notification>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml
deleted file mode 100644
index 23a5e79e228474fd3e28ff9c678df2cf9ec38f43..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="group_info_btn_panel">
-			<button label="Gruppe profil" name="group_info_btn"/>
-		</layout_panel>
-		<layout_panel name="call_btn_panel">
-			<button label="Opkald gruppe" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Forlad samtale" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Ã…ben stemme indstillinger" name="voice_ctrls_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml
deleted file mode 100644
index b8a7ec0b34a07fe3add48a0b330cc44167c9c248..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="button_stack">
-		<layout_panel name="view_profile_btn_panel">
-			<button label="Profil" name="view_profile_btn"/>
-		</layout_panel>
-		<layout_panel name="add_friend_btn_panel">
-			<button label="Tilføj ven" name="add_friend_btn"/>
-		</layout_panel>
-		<layout_panel name="teleport_btn_panel">
-			<button label="Teleport" name="teleport_btn" tool_tip="Tilbyd teleport til denne person"/>
-		</layout_panel>
-		<layout_panel name="share_btn_panel">
-			<button label="Del" name="share_btn"/>
-		</layout_panel>
-		<layout_panel name="pay_btn_panel">
-			<button label="Betal" name="pay_btn"/>
-		</layout_panel>
-		<layout_panel name="call_btn_panel">
-			<button label="Opkald" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Afslut samtale" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Stemme kontroller" name="voice_ctrls_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_login.xml b/indra/newview/skins/minimal/xui/da/panel_login.xml
deleted file mode 100644
index 2e0f726e1abb826ef9a657713da88a19a35afcac..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/panel_login.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
-	<panel.string name="create_account_url">
-		http://join.secondlife.com/
-	</panel.string>
-	<panel.string name="forgot_password_url">
-		http://secondlife.com/account/request.php
-	</panel.string>
-	<layout_stack name="login_widgets">
-		<layout_panel name="login">
-			<text name="username_text">
-				Brugernavn:
-			</text>
-			<combo_box name="username_combo" tool_tip="Brugernavnet du valgte da du registrerde dig, som f.eks. bobsmith12 or Steller Sunshine"/>
-			<text name="password_text">
-				Password:
-			</text>
-			<check_box label="Husk password" name="remember_check"/>
-			<button label="Log på" name="connect_btn"/>
-			<text name="mode_selection_text">
-				Tilstand:
-			</text>
-			<combo_box name="mode_combo" tool_tip="Vælg ønsket tilstand. Vælg basis for hurtig og nem udforskning og chat. Vælg avanceret for at få adgang til flere muligheder.">
-				<combo_box.item label="Basis" name="Basic"/>
-				<combo_box.item label="Avanceret" name="Advanced"/>
-			</combo_box>
-			<text name="start_location_text">
-				Start ved:
-			</text>
-			<combo_box name="start_location_combo">
-				<combo_box.item label="Min sidste lokation" name="MyLastLocation"/>
-				<combo_box.item label="Hjem" name="MyHome"/>
-				<combo_box.item label="&lt;Indtast regionnavn&gt;" name="Typeregionname"/>
-			</combo_box>
-		</layout_panel>
-		<layout_panel name="links">
-			<text name="create_new_account_text">
-				Opret bruger
-			</text>
-			<text name="forgot_password_text">
-				Har du glemt brugernavn eller password?
-			</text>
-			<text name="login_help">
-				Hjælp til login
-			</text>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml
deleted file mode 100644
index 2ee87433a462b06caaaa25ed1bba9858ea358457..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="GÃ¥ tilbage til min forrige lokation"/>
-		<pull_button name="forward_btn" tool_tip="GÃ¥ en lokation fremad"/>
-		<button name="home_btn" tool_tip="Teleport til min hjemme lokation"/>
-		<location_input label="Lokation" name="location_combo"/>
-		<search_combo_box label="Søg" name="search_combo_box" tool_tip="Søg">
-			<combo_editor label="Søg [SECOND_LIFE]" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="Træk landemærker hertil for at få hurtig adgang til dine favoritsteder i Second Life!">
-		<label name="favorites_bar_label" tool_tip="Træk landemærker hertil for at få hurtig adgang til dine favoritsteder i Second Life!">
-			Favoritter
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="Søg mere af mine favoritter"/>
-	</favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_people.xml b/indra/newview/skins/minimal/xui/da/panel_people.xml
deleted file mode 100644
index 8be4d695bdeda9b7e88bb991eee7225a642c6f1c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Personer" name="people_panel">
-	<string name="no_recent_people" value="Ingen nylige personer. Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor."/>
-	<string name="no_filtered_recent_people" value="Ingen nylige personer med det navn."/>
-	<string name="no_one_near" value="Ingen i nærheden. Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor."/>
-	<string name="no_one_filtered_near" value="Ingen i nærheden med det navn."/>
-	<string name="no_friends_online" value="Ingen venner online"/>
-	<string name="no_friends" value="Ingen venner"/>
-	<string name="no_friends_msg">
-		Højre-klik på en person for at tilføje som ven.
-Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor.
-	</string>
-	<string name="no_filtered_friends_msg">
-		Fandt du ikke hvad du søgte? Prøv destinationsknappen nedenfor.
-	</string>
-	<string name="people_filter_label" value="Filtrér personer"/>
-	<string name="groups_filter_label" value="Filtrér grupper"/>
-	<string name="no_filtered_groups_msg" value="Fandt du ikke det du søgte? Prøv [secondlife:///app/search/groups/[SEARCH_TERM] Søg]."/>
-	<string name="no_groups_msg" value="Leder du efter grupper at være med i? Prøv [secondlife:///app/search/groups Søg]."/>
-	<string name="MiniMapToolTipMsg" value="[REGION](Dobbelt-klik for at åbne kort, træk for at panorere)"/>
-	<string name="AltMiniMapToolTipMsg" value="[REGION](Dobbelt-klik for at teleportere, træk for at panorere)"/>
-	<filter_editor label="Filtrér" name="filter_input"/>
-	<tab_container name="tabs">
-		<panel label="TÆT PÅ" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Valg"/>
-				<button name="add_friend_btn" tool_tip="Tilføj valgte beboer til din venneliste"/>
-			</panel>
-		</panel>
-		<panel label="MINE VENNER" 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="Vis flere valg"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Tilbyd venskab til en beboer"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Fjern valgte person fra din venneliste"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
-		</panel>
-		<panel label="MINE GRUPPER" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Valg"/>
-				<button name="plus_btn" tool_tip="Bliv medlem af gruppe/Opret ny gruppe"/>
-				<button name="activate_btn" tool_tip="Activér valgte gruppe"/>
-			</panel>
-		</panel>
-		<panel label="NYLIGE" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Valg"/>
-				<button name="add_friend_btn" tool_tip="Tilføj valgte beboer til din venneliste"/>
-			</panel>
-		</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="Vis billeder, grupper og anden beboer information"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="Ã…ben session med privat besked (IM)"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Opkald" name="call_btn" tool_tip="Kald til denne beboer"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Del" name="share_btn" tool_tip="Del en genstand fra beholdning"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Teleportér" name="teleport_btn" tool_tip="Tilbyd teleport"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Gruppe profil" name="group_info_btn" tool_tip="Vis gruppe information"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Gruppe chat" name="chat_btn" tool_tip="Ã…ben chat session"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Gruppe kald" name="group_call_btn" tool_tip="Opkald til denne gruppe"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml
deleted file mode 100644
index ce3a1d8b4ef480904558778b6113eec9b149f3fc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
-	<text name="sidetray_tab_title" value="Side bjælke"/>
-	<button name="undock" tool_tip="Løsriv"/>
-	<button name="dock" tool_tip="Fastgør"/>
-	<button name="show_help" tool_tip="Vis hjælp"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/da/panel_status_bar.xml b/indra/newview/skins/minimal/xui/da/panel_status_bar.xml
deleted file mode 100644
index 6e7bdfc1884b382822f25719c1a31df907112c5d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/da/panel_status_bar.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
-	<panel.string name="StatBarDaysOfWeek">
-		Søndag:Mandag:Tirsdag:Onsdag:Torsdag:Fredag:Lørdag
-	</panel.string>
-	<panel.string name="StatBarMonthsOfYear">
-		Januar:Februar:Marts:April:Maj:Juni:Juli:August:September:Oktober:November:December
-	</panel.string>
-	<panel.string name="packet_loss_tooltip">
-		Packet Loss
-	</panel.string>
-	<panel.string name="bandwidth_tooltip">
-		BÃ¥ndbredde
-	</panel.string>
-	<panel.string name="time">
-		[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-	</panel.string>
-	<panel.string name="timeTooltip">
-		[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-	</panel.string>
-	<panel.string name="buycurrencylabel">
-		L$ [AMT]
-	</panel.string>
-	<panel name="balance_bg">
-		<text name="balance" tool_tip="Klik for at opdaterer din L$ balance" value="L$20"/>
-		<button label="KØB L$" name="buyL" tool_tip="Klik for at købe flere L$"/>
-	</panel>
-	<text name="TimeText" tool_tip="Nuværende tid (Pacific)">
-		24:00 PST
-	</text>
-	<button name="media_toggle_btn" tool_tip="Start/Stop Alle medier (musik, video, hjemmesider)"/>
-	<button name="volume_btn" tool_tip="Kontrol for generel lydstyrke"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/floater_camera.xml b/indra/newview/skins/minimal/xui/de/floater_camera.xml
deleted file mode 100644
index d49c207f98c0996d1715a618e54a55c6b2479682..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
-	<floater.string name="rotate_tooltip">
-		Kamera um Fokus drehen
-	</floater.string>
-	<floater.string name="zoom_tooltip">
-		Kamera auf Fokus zoomen
-	</floater.string>
-	<floater.string name="move_tooltip">
-		Kamera nach oben, unten, links und rechts bewegen
-	</floater.string>
-	<floater.string name="camera_modes_title">
-		Kameramodi
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		Kreisen - Zoomen - Schwenken
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		Ansichten
-	</floater.string>
-	<floater.string name="free_mode_title">
-		Objekt ansehen
-	</floater.string>
-	<panel name="controls">
-		<panel name="preset_views_list">
-			<panel_camera_item name="front_view">
-				<panel_camera_item.text name="front_view_text">
-					Vorderansicht
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="group_view">
-				<panel_camera_item.text name="side_view_text">
-					Seitenansicht
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="rear_view">
-				<panel_camera_item.text name="rear_view_text">
-					Hinteransicht
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="camera_modes_list">
-			<panel_camera_item name="object_view">
-				<panel_camera_item.text name="object_view_text">
-					Objektansicht
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="mouselook_view">
-				<panel_camera_item.text name="mouselook_view_text">
-					Mouselook
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="zoom" tool_tip="Kamera auf Fokus zoomen">
-			<joystick_rotate name="cam_rotate_stick" tool_tip="Kamera um Fokus kreisen"/>
-			<slider_bar name="zoom_slider" tool_tip="Kamera auf Fokus zoomen"/>
-			<joystick_track name="cam_track_stick" tool_tip="Kamera nach oben, unten, links und rechts bewegen"/>
-		</panel>
-	</panel>
-	<panel name="buttons">
-		<button label="" name="presets_btn" tool_tip="Ansichten"/>
-		<button label="" name="pan_btn" tool_tip="Kreisen - Zoomen - Schwenken"/>
-		<button label="" name="avatarview_btn" tool_tip="Kameramodi"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/floater_help_browser.xml b/indra/newview/skins/minimal/xui/de/floater_help_browser.xml
deleted file mode 100644
index 459dfb66c0d0ff6f153e62800752ec544c34ad77..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="ANWEISUNGEN">
-	<floater.string name="loading_text">
-		Wird geladen...
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="external_controls"/>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/floater_media_browser.xml b/indra/newview/skins/minimal/xui/de/floater_media_browser.xml
deleted file mode 100644
index 63cf4a6cba3ea65b1e9d3dbca26ed33ff7034c7f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="MEDIEN-BROWSER">
-	<floater.string name="home_page_url">
-		http://www.secondlife.com
-	</floater.string>
-	<floater.string name="support_page_url">
-		http://support.secondlife.com
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button label="Zurück" name="back"/>
-			<button label="Vorwärts" name="forward"/>
-			<button label="Neu laden" name="reload"/>
-			<button label="Los" name="go"/>
-		</layout_panel>
-		<layout_panel name="time_controls">
-			<button label="zurück" name="rewind"/>
-			<button label="anhalten" name="stop"/>
-			<button label="vorwärts" name="seek"/>
-		</layout_panel>
-		<layout_panel name="parcel_owner_controls">
-			<button label="Aktuelle Seite an Parzelle senden" name="assign"/>
-		</layout_panel>
-		<layout_panel name="external_controls">
-			<button label="In meinem Browser öffnen" name="open_browser"/>
-			<check_box label="Immer in meinem Browser öffnen" name="open_always"/>
-			<button label="Schließen" name="close"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/de/floater_nearby_chat.xml
deleted file mode 100644
index bbb4114200d9c3707f5c5d81554cbfde3dd99364..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT IN DER NÄHE">
-	<check_box label="Chat übersetzen (Service von Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/floater_web_content.xml b/indra/newview/skins/minimal/xui/de/floater_web_content.xml
deleted file mode 100644
index 6ab119eeab2b9a54049181e2b9af2a198e87019d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button name="back" tool_tip="Rückwärts"/>
-			<button name="forward" tool_tip="Vorwärts"/>
-			<button name="stop" tool_tip="Navigation stoppen"/>
-			<button name="reload" tool_tip="Seite neu laden"/>
-			<combo_box name="address" tool_tip="URL hier eingeben"/>
-			<icon name="media_secure_lock_flag" tool_tip="Sicheres Browsen"/>
-			<button name="popexternal" tool_tip="Aktuelle URL im Desktop-Browser öffnen"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/inspect_avatar.xml b/indra/newview/skins/minimal/xui/de/inspect_avatar.xml
deleted file mode 100644
index 4b8fd8a0ad1d125f28de057a1a06bc7119168385..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/inspect_avatar.xml
+++ /dev/null
@@ -1,25 +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="inspect_avatar">
-	<string name="Subtitle">
-		[AGE]
-	</string>
-	<string name="Details">
-		[SL_PROFILE]
-	</string>
-	<text name="user_subtitle" value="11 Monate und 3 Tage alt"/>
-	<text name="user_details">
-		Dies ist meine Second Life-Beschreibung und ich finde sie wirklich gut! Meine Beschreibung ist deshalb so lang, weil ich gerne rede.
-	</text>
-	<slider name="volume_slider" tool_tip="Lautstärke" value="0.5"/>
-	<button label="Freund hinzufügen" name="add_friend_btn" width="110"/>
-	<button label="IM" name="im_btn"/>
-	<button label="Profil" left_delta="120" name="view_profile_btn" width="44"/>
-	<panel name="moderator_panel">
-		<button label="Voice deaktivieren" name="disable_voice"/>
-		<button label="Voice aktivieren" name="enable_voice"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/inspect_object.xml b/indra/newview/skins/minimal/xui/de/inspect_object.xml
deleted file mode 100644
index 72b8235828e58e3280170ad4fbee0833a456780b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/inspect_object.xml
+++ /dev/null
@@ -1,48 +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="inspect_object">
-	<string name="Creator">
-		Von [CREATOR]
-	</string>
-	<string name="CreatorAndOwner">
-		Von [CREATOR]
-Besitzer [OWNER]
-	</string>
-	<string name="Price">
-		[AMOUNT] L$
-	</string>
-	<string name="PriceFree">
-		Kostenlos!
-	</string>
-	<string name="Touch">
-		Berühren
-	</string>
-	<string name="Sit">
-		Sitzen
-	</string>
-	<text name="object_name" value="Test für ein Objektname der sehr lange ist und über zwei Zeilen geht."/>
-	<text name="object_creator">
-		von secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-Besitzer secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-	</text>
-	<text name="price_text">
-		30.000 L$
-	</text>
-	<text name="object_description">
-		Dies ist eine wirklich lange Beschreibung für ein Objekt, mindestens 80 Zeichen lang oder jetzt schon mindestens 120 Zeichen lang und länger als der englische Originaltext. Niemand weiß es genau.
-	</text>
-	<text name="object_media_url">
-		http://www.superdupertest.com
-	</text>
-	<button label="Kaufen" name="buy_btn"/>
-	<button label="Bezahlen" name="pay_btn"/>
-	<button label="Kopie nehmen" name="take_free_copy_btn" width="100"/>
-	<button label="Berühren" name="touch_btn"/>
-	<button label="Sitzen" name="sit_btn"/>
-	<button label="Öffnen" name="open_btn"/>
-	<icon name="secure_browsing" tool_tip="Sicheres Browsen"/>
-	<button label="Mehr" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/de/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/de/menu_add_wearable_gear.xml
deleted file mode 100644
index f3775a05ec351aafa26a32b26741265ff78e6276..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
-	<menu_item_check label="Nach aktuellesten Objekten sortieren" name="sort_by_most_recent"/>
-	<menu_item_check label="Nach Name sortieren" name="sort_by_name"/>
-	<menu_item_check label="Nach Typ sortieren" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/de/menu_attachment_other.xml
deleted file mode 100644
index 237c92f7d260355ae8fdc337074b358fe91bf132..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="Profil anzeigen" name="Profile..."/>
-	<menu_item_call label="Freund hinzufügen" name="Add Friend"/>
-	<menu_item_call label="IM" name="Send IM..."/>
-	<menu_item_call label="Anrufen" name="Call"/>
-	<menu_item_call label="In Gruppe einladen" name="Invite..."/>
-	<menu_item_call label="Ignorieren" name="Avatar Mute"/>
-	<menu_item_call label="Melden" name="abuse"/>
-	<menu_item_call label="Einfrieren" name="Freeze..."/>
-	<menu_item_call label="Hinauswerfen" name="Eject..."/>
-	<menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
-	<menu_item_call label="Hineinzoomen" name="Zoom In"/>
-	<menu_item_call label="Bezahlen" name="Pay..."/>
-	<menu_item_call label="Objektprofil" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/de/menu_attachment_self.xml
deleted file mode 100644
index 644fc68ba4e8c389b6e38723692ba005552c605c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
-	<menu_item_call label="Berühren" name="Attachment Object Touch"/>
-	<menu_item_call label="Bearbeiten" name="Edit..."/>
-	<menu_item_call label="Abnehmen" name="Detach"/>
-	<menu_item_call label="Hinsetzen" name="Sit Down Here"/>
-	<menu_item_call label="Aufstehen" name="Stand Up"/>
-	<menu_item_call label="Outfit ändern" name="Change Outfit"/>
-	<menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/>
-	<menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/>
-	<menu_item_call label="Meine Freunde" name="Friends..."/>
-	<menu_item_call label="Meine Gruppen" name="Groups..."/>
-	<menu_item_call label="Mein Profil" name="Profile..."/>
-	<menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
-	<menu_item_call label="Fallen lassen" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/de/menu_avatar_icon.xml
deleted file mode 100644
index c036cf5515e3c8ca08dca584b509cbd8d0f235cc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
-	<menu_item_call label="Profil anzeigen" name="Show Profile"/>
-	<menu_item_call label="IM senden..." name="Send IM"/>
-	<menu_item_call label="Freund hinzufügen..." name="Add Friend"/>
-	<menu_item_call label="Freund entfernen..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/de/menu_avatar_other.xml
deleted file mode 100644
index 8aee0be3d2e1d8b6786cad226911dba60ff965c7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="Profil anzeigen" name="Profile..."/>
-	<menu_item_call label="Freund hinzufügen" name="Add Friend"/>
-	<menu_item_call label="IM" name="Send IM..."/>
-	<menu_item_call label="Anrufen" name="Call"/>
-	<menu_item_call label="In Gruppe einladen" name="Invite..."/>
-	<menu_item_call label="Ignorieren" name="Avatar Mute"/>
-	<menu_item_call label="Melden" name="abuse"/>
-	<menu_item_call label="Einfrieren" name="Freeze..."/>
-	<menu_item_call label="Hinauswerfen" name="Eject..."/>
-	<menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
-	<menu_item_call label="Hineinzoomen" name="Zoom In"/>
-	<menu_item_call label="Bezahlen" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/de/menu_avatar_self.xml
deleted file mode 100644
index 582c76ac94556ad4c55655cb7dd2f18694aaaa84..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
-	<menu_item_call label="Hinsetzen" name="Sit Down Here"/>
-	<menu_item_call label="Aufstehen" name="Stand Up"/>
-	<context_menu label="Ausziehen" name="Take Off &gt;">
-		<context_menu label="Kleidung" name="Clothes &gt;">
-			<menu_item_call label="Hemd" name="Shirt"/>
-			<menu_item_call label="Hose" name="Pants"/>
-			<menu_item_call label="Rock" name="Skirt"/>
-			<menu_item_call label="Schuhe" name="Shoes"/>
-			<menu_item_call label="Strümpfe" name="Socks"/>
-			<menu_item_call label="Jacke" name="Jacket"/>
-			<menu_item_call label="Handschuhe" name="Gloves"/>
-			<menu_item_call label="Unterhemd" name="Self Undershirt"/>
-			<menu_item_call label="Unterhose" name="Self Underpants"/>
-			<menu_item_call label="Tätowierung" name="Self Tattoo"/>
-			<menu_item_call label="Alpha" name="Self Alpha"/>
-			<menu_item_call label="Alle Kleider" name="All Clothes"/>
-		</context_menu>
-		<context_menu label="HUD" name="Object Detach HUD"/>
-		<context_menu label="Abnehmen" name="Object Detach"/>
-		<menu_item_call label="Alles abnehmen" name="Detach All"/>
-	</context_menu>
-	<menu_item_call label="Outfit ändern" name="Chenge Outfit"/>
-	<menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/>
-	<menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/>
-	<menu_item_call label="Meine Freunde" name="Friends..."/>
-	<menu_item_call label="Meine Gruppen" name="Groups..."/>
-	<menu_item_call label="Mein Profil" name="Profile..."/>
-	<menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/de/menu_bottomtray.xml
deleted file mode 100644
index 6c4308286a6127315f61ef644ec6bba56a4d2564..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
-	<menu_item_check label="Schaltfläche Gesten" name="ShowGestureButton"/>
-	<menu_item_check label="Schaltfläche Bewegungssteuerung" name="ShowMoveButton"/>
-	<menu_item_check label="Schaltfläche Ansicht" name="ShowCameraButton"/>
-	<menu_item_check label="Schaltfläche Foto" name="ShowSnapshotButton"/>
-	<menu_item_check label="Schaltfläche „Seitenleiste“" name="ShowSidebarButton"/>
-	<menu_item_check label="Schaltfläche „Bauen“" name="ShowBuildButton"/>
-	<menu_item_check label="Schaltfläche „Suchen“" name="ShowSearchButton"/>
-	<menu_item_check label="Schaltfläche „Karte“" name="ShowWorldMapButton"/>
-	<menu_item_check label="Schaltfläche „Minikarte“" name="ShowMiniMapButton"/>
-	<menu_item_call label="Ausschneiden" name="NearbyChatBar_Cut"/>
-	<menu_item_call label="Kopieren" name="NearbyChatBar_Copy"/>
-	<menu_item_call label="Einfügen" name="NearbyChatBar_Paste"/>
-	<menu_item_call label="Löschen" name="NearbyChatBar_Delete"/>
-	<menu_item_call label="Alle auswählen" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/de/menu_cof_attachment.xml
deleted file mode 100644
index 05d3dfca9dde987eaa946f2ceb6b7bc15e254246..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
-	<menu_item_call label="Abnehmen" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/de/menu_cof_body_part.xml
deleted file mode 100644
index 07960a525c7154adaa3a936b2b77ef5fafcaf397..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
-	<menu_item_call label="Ersetzen" name="replace"/>
-	<menu_item_call label="Bearbeiten" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/de/menu_cof_clothing.xml
deleted file mode 100644
index 7fced273a7892774d6fbd5a94935c67eda5e02cf..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_clothing.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
-	<menu_item_call label="Ausziehen" name="take_off"/>
-	<menu_item_call label="Ersetzen" name="replace"/>
-	<menu_item_call label="Eine Kategorie nach oben" name="move_up"/>
-	<menu_item_call label="Eine Kategorie nach unten" name="move_down"/>
-	<menu_item_call label="Bearbeiten" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/de/menu_cof_gear.xml
deleted file mode 100644
index 54b218d22f73509627db704a0d965f5f2175a2ad..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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>
diff --git a/indra/newview/skins/minimal/xui/de/menu_edit.xml b/indra/newview/skins/minimal/xui/de/menu_edit.xml
deleted file mode 100644
index 37f68d68d500f4d27b2b48a851121b2ff45dfbe4..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Bearbeiten" name="Edit">
-	<menu_item_call label="Rückgängig" name="Undo"/>
-	<menu_item_call label="Wiederherstellen" name="Redo"/>
-	<menu_item_call label="Ausschneiden" name="Cut"/>
-	<menu_item_call label="Kopieren" name="Copy"/>
-	<menu_item_call label="Einfügen" name="Paste"/>
-	<menu_item_call label="Löschen" name="Delete"/>
-	<menu_item_call label="Duplizieren" name="Duplicate"/>
-	<menu_item_call label="Alle auswählen" name="Select All"/>
-	<menu_item_call label="Auswahl aufheben" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_favorites.xml b/indra/newview/skins/minimal/xui/de/menu_favorites.xml
deleted file mode 100644
index 0d0491d2ebce0eed87ae41cf424989c571cf3ee8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Teleportieren" name="Teleport To Landmark"/>
-	<menu_item_call label="Landmarken anzeigen/bearbeiten" name="Landmark Open"/>
-	<menu_item_call label="SLurl kopieren" name="Copy slurl"/>
-	<menu_item_call label="Auf Karte zeigen" name="Show On Map"/>
-	<menu_item_call label="Kopieren" name="Landmark Copy"/>
-	<menu_item_call label="Einfügen" name="Landmark Paste"/>
-	<menu_item_call label="Löschen" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/de/menu_gesture_gear.xml
deleted file mode 100644
index 953c0eeed579161f40c165931fcb8f762bd50218..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
-	<menu_item_call label="Zu Favoriten hinzufügen/daraus entfernen" name="activate"/>
-	<menu_item_call label="Kopieren" name="copy_gesture"/>
-	<menu_item_call label="Einfügen" name="paste"/>
-	<menu_item_call label="UUID kopieren" name="copy_uuid"/>
-	<menu_item_call label="Aktuelles Outfit speichern" name="save_to_outfit"/>
-	<menu_item_call label="Bearbeiten" name="edit_gesture"/>
-	<menu_item_call label="Untersuchen" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_group_plus.xml b/indra/newview/skins/minimal/xui/de/menu_group_plus.xml
deleted file mode 100644
index 583ee793be67acaf65be10bf2f0b2da83d2ed43e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_call label="Werden Sie Mitglied..." name="item_join"/>
-	<menu_item_call label="Neue Gruppe..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/de/menu_hide_navbar.xml
deleted file mode 100644
index 9acf96dc6d2145dc75c6817459553277c8090408..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
-	<menu_item_check label="Navigationsleiste anzeigen" name="ShowNavbarNavigationPanel"/>
-	<menu_item_check label="Favoritenleiste anzeigen" name="ShowNavbarFavoritesPanel"/>
-	<menu_item_check label="Mini-Standortleiste anzeigen" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/de/menu_im_well_button.xml
deleted file mode 100644
index f464b71f4a7062e50df3b217e40323ef2dff7912..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/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/minimal/xui/de/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/de/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 11f93f47b4717d0b7075205c63b414c5000151e5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
-	<menu_item_call label="Sitzung beenden" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/de/menu_imchiclet_group.xml
deleted file mode 100644
index 81ef3b65692771d090c1db1f208959a6ef1ba815..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
-	<menu_item_call label="Gruppeninfo" name="Show Profile"/>
-	<menu_item_call label="Sitzung anzeigen" name="Chat"/>
-	<menu_item_call label="Sitzung beenden" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/de/menu_imchiclet_p2p.xml
deleted file mode 100644
index d1232382462e17060391a35156da65121c32bb2a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
-	<menu_item_call label="Profil anzeigen" name="Show Profile"/>
-	<menu_item_call label="Freund hinzufügen" name="Add Friend"/>
-	<menu_item_call label="Sitzung anzeigen" name="Send IM"/>
-	<menu_item_call label="Sitzung beenden" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 72ba7fe41dc269a8ef82f3f1c3c8378f470b74d1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="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="IM" name="im"/>
-	<menu_item_call label="Anrufen" name="call"/>
-	<menu_item_call label="Teleportieren" name="teleport"/>
-	<menu_item_call label="Ignorieren" name="block"/>
-	<menu_item_call label="Freischalten" name="unblock"/>
-	<menu_item_call label="Melden" name="report"/>
-	<menu_item_call label="Einfrieren" name="freeze"/>
-	<menu_item_call label="Hinauswerfen" name="eject"/>
-	<menu_item_call label="Hinauswerfen" name="kick"/>
-	<menu_item_call label="CSR" name="csr"/>
-	<menu_item_call label="Fehler in Texturen beseitigen" name="debug"/>
-	<menu_item_call label="Auf Karte anzeigen" name="find_on_map"/>
-	<menu_item_call label="Hineinzoomen" name="zoom_in"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/de/menu_inspect_object_gear.xml
deleted file mode 100644
index 7c47913e30feaeec58d6c3fb55398c2f5c69ba5f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
-	<menu_item_call label="Berühren" name="touch"/>
-	<menu_item_call label="Sitzen" name="sit"/>
-	<menu_item_call label="Bezahlen" name="pay"/>
-	<menu_item_call label="Kaufen" name="buy"/>
-	<menu_item_call label="Nehmen" name="take"/>
-	<menu_item_call label="Kopie nehmen" name="take_copy"/>
-	<menu_item_call label="Öffnen" name="open"/>
-	<menu_item_call label="Bearbeiten" name="edit"/>
-	<menu_item_call label="Anziehen" name="wear"/>
-	<menu_item_call label="Hinzufügen" name="add"/>
-	<menu_item_call label="Melden" name="report"/>
-	<menu_item_call label="Ignorieren" name="block"/>
-	<menu_item_call label="Hineinzoomen" name="zoom_in"/>
-	<menu_item_call label="Entfernen" name="remove"/>
-	<menu_item_call label="Weitere Infos" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml
deleted file mode 100644
index 443092319b5049a5ea9d7a905d202c58c4d95d31..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Self Pie">
-	<menu_item_call label="Hinsetzen" name="Sit Down Here"/>
-	<menu_item_call label="Aufstehen" name="Stand Up"/>
-	<menu_item_call label="Meine Freunde" name="Friends..."/>
-	<menu_item_call label="Mein Profil" name="Profile..."/>
-	<menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/de/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 71cff7136bb571f98378c59375b10ecb56e0cb5f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
-	<menu_item_call label="Schließen" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inventory.xml b/indra/newview/skins/minimal/xui/de/menu_inventory.xml
deleted file mode 100644
index 43722e0dcf692bfb667dbc391a11aa2636077829..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Teilen" name="Share"/>
-	<menu_item_call label="Kaufen" name="Task Buy"/>
-	<menu_item_call label="Öffnen" name="Task Open"/>
-	<menu_item_call label="Abspielen" name="Task Play"/>
-	<menu_item_call label="Eigenschaften" name="Task Properties"/>
-	<menu_item_call label="Umbenennen" name="Task Rename"/>
-	<menu_item_call label="Löschen" name="Task Remove"/>
-	<menu_item_call label="Papierkorb ausleeren" name="Empty Trash"/>
-	<menu_item_call label="Fundstücke ausleeren" name="Empty Lost And Found"/>
-	<menu_item_call label="Neuer Ordner" name="New Folder"/>
-	<menu_item_call label="Neues Skript" name="New Script"/>
-	<menu_item_call label="Neue Notizkarte" name="New Note"/>
-	<menu_item_call label="Neue Geste" name="New Gesture"/>
-	<menu label="Neue Kleider" name="New Clothes">
-		<menu_item_call label="Neues Hemd" name="New Shirt"/>
-		<menu_item_call label="Neue Hose" name="New Pants"/>
-		<menu_item_call label="Neue Schuhe" name="New Shoes"/>
-		<menu_item_call label="Neue Socken" name="New Socks"/>
-		<menu_item_call label="Neue Jacke" name="New Jacket"/>
-		<menu_item_call label="Neuer Rock" name="New Skirt"/>
-		<menu_item_call label="Neue Handschuhe" name="New Gloves"/>
-		<menu_item_call label="Neues Unterhemd" name="New Undershirt"/>
-		<menu_item_call label="Neue Unterhose" name="New Underpants"/>
-		<menu_item_call label="Neue Alpha-Maske" name="New Alpha Mask"/>
-		<menu_item_call label="Neue Tätowierung" name="New Tattoo"/>
-	</menu>
-	<menu label="Neue Körperteile" name="New Body Parts">
-		<menu_item_call label="Neue Form/Gestalt" name="New Shape"/>
-		<menu_item_call label="Neue Haut" name="New Skin"/>
-		<menu_item_call label="Neues Haar" name="New Hair"/>
-		<menu_item_call label="Neue Augen" name="New Eyes"/>
-	</menu>
-	<menu label="Typ ändern" name="Change Type">
-		<menu_item_call label="Standard" name="Default"/>
-		<menu_item_call label="Handschuhe" name="Gloves"/>
-		<menu_item_call label="Jacke" name="Jacket"/>
-		<menu_item_call label="Hose" name="Pants"/>
-		<menu_item_call label="Form" name="Shape"/>
-		<menu_item_call label="Schuhe" name="Shoes"/>
-		<menu_item_call label="Hemd" name="Shirt"/>
-		<menu_item_call label="Rock" name="Skirt"/>
-		<menu_item_call label="Unterhose" name="Underpants"/>
-		<menu_item_call label="Unterhemd" name="Undershirt"/>
-	</menu>
-	<menu_item_call label="Teleportieren" name="Landmark Open"/>
-	<menu_item_call label="Öffnen" name="Animation Open"/>
-	<menu_item_call label="Öffnen" name="Sound Open"/>
-	<menu_item_call label="Aktuelles Outfit ersetzen" name="Replace Outfit"/>
-	<menu_item_call label="Zum aktuellen Outfit hinzufügen" name="Add To Outfit"/>
-	<menu_item_call label="Vom aktuellen Outfit entfernen" name="Remove From Outfit"/>
-	<menu_item_call label="Original suchen" name="Find Original"/>
-	<menu_item_call label="Objekt löschen" name="Purge Item"/>
-	<menu_item_call label="Objekt wiederherstellen" name="Restore Item"/>
-	<menu_item_call label="Öffnen" name="Open"/>
-	<menu_item_call label="Original öffnen" name="Open Original"/>
-	<menu_item_call label="Eigenschaften" name="Properties"/>
-	<menu_item_call label="Umbenennen" name="Rename"/>
-	<menu_item_call label="Asset-UUID kopieren" name="Copy Asset UUID"/>
-	<menu_item_call label="Kopieren" name="Copy"/>
-	<menu_item_call label="Einfügen" name="Paste"/>
-	<menu_item_call label="Als Link einfügen" name="Paste As Link"/>
-	<menu_item_call label="Löschen" name="Remove Link"/>
-	<menu_item_call label="Löschen" name="Delete"/>
-	<menu_item_call label="Systemordner löschen" name="Delete System Folder"/>
-	<menu_item_call label="Konferenz-Chat starten" name="Conference Chat Folder"/>
-	<menu_item_call label="Wiedergeben/Abspielen" name="Sound Play"/>
-	<menu_item_call label="Landmarken-Info" name="About Landmark"/>
-	<menu_item_call label="Inworld abspielen" name="Animation Play"/>
-	<menu_item_call label="Lokal abspielen" name="Animation Audition"/>
-	<menu_item_call label="Instant Message senden" name="Send Instant Message"/>
-	<menu_item_call label="Teleport anbieten..." name="Offer Teleport..."/>
-	<menu_item_call label="Konferenz-Chat starten" name="Conference Chat"/>
-	<menu_item_call label="Aktivieren" name="Activate"/>
-	<menu_item_call label="Deaktivieren" name="Deactivate"/>
-	<menu_item_call label="Speichern unter" name="Save As"/>
-	<menu_item_call label="Von Körper abnehmen" name="Detach From Yourself"/>
-	<menu_item_call label="Anziehen" name="Wearable And Object Wear"/>
-	<menu label="Anhängen an" name="Attach To"/>
-	<menu label="An HUD hängen" name="Attach To HUD"/>
-	<menu_item_call label="Bearbeiten" name="Wearable Edit"/>
-	<menu_item_call label="Hinzufügen" name="Wearable Add"/>
-	<menu_item_call label="Ausziehen" name="Take Off"/>
-	<menu_item_call label="--keine Optionen--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/de/menu_inventory_add.xml
deleted file mode 100644
index dccee6712da5c2743e22f68615d2ebee3e3c348d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
-	<menu label="Hochladen" name="upload">
-		<menu_item_call label="Bild ([COST] L$)..." name="Upload Image"/>
-		<menu_item_call label="Sound ([COST] L$)..." name="Upload Sound"/>
-		<menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/>
-		<menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/>
-		<menu_item_call label="Hochlade-Berechtigungen (Standard) festlegen" name="perm prefs"/>
-	</menu>
-	<menu_item_call label="Neuer Ordner" name="New Folder"/>
-	<menu_item_call label="Neues Skript" name="New Script"/>
-	<menu_item_call label="Neue Notizkarte" name="New Note"/>
-	<menu_item_call label="Neue Geste" name="New Gesture"/>
-	<menu label="Neue Kleider" name="New Clothes">
-		<menu_item_call label="Neues Hemd" name="New Shirt"/>
-		<menu_item_call label="Neue Hose" name="New Pants"/>
-		<menu_item_call label="Neue Schuhe" name="New Shoes"/>
-		<menu_item_call label="Neue Socken" name="New Socks"/>
-		<menu_item_call label="Neue Jacke" name="New Jacket"/>
-		<menu_item_call label="Neuer Rock" name="New Skirt"/>
-		<menu_item_call label="Neue Handschuhe" name="New Gloves"/>
-		<menu_item_call label="Neues Unterhemd" name="New Undershirt"/>
-		<menu_item_call label="Neue Unterhose" name="New Underpants"/>
-		<menu_item_call label="Neues Alpha" name="New Alpha"/>
-		<menu_item_call label="Neue Tätowierung" name="New Tattoo"/>
-	</menu>
-	<menu label="Neue Körperteile" name="New Body Parts">
-		<menu_item_call label="Neue Form/Gestalt" name="New Shape"/>
-		<menu_item_call label="Neue Haut" name="New Skin"/>
-		<menu_item_call label="Neues Haar" name="New Hair"/>
-		<menu_item_call label="Neue Augen" name="New Eyes"/>
-	</menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/de/menu_inventory_gear_default.xml
deleted file mode 100644
index df86a5cf71c13ec4c1461fd839996793ce168c1c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
-	<menu_item_call label="Neues Inventar-Fenster" name="new_window"/>
-	<menu_item_check label="Nach Name sortieren" name="sort_by_name"/>
-	<menu_item_check label="Nach aktuellesten Objekten sortieren" name="sort_by_recent"/>
-	<menu_item_check label="Systemordner nach oben" name="sort_system_folders_to_top"/>
-	<menu_item_call label="Filter anzeigen" name="show_filters"/>
-	<menu_item_call label="Filter zurücksetzen" name="reset_filters"/>
-	<menu_item_call label="Alle Ordner schließen" name="close_folders"/>
-	<menu_item_call label="Fundbüro ausleeren" name="empty_lostnfound"/>
-	<menu_item_call label="Textur speichern als" name="Save Texture As"/>
-	<menu_item_call label="Teilen" name="Share"/>
-	<menu_item_call label="Original suchen" name="Find Original"/>
-	<menu_item_call label="Alle Links suchen" name="Find All Links"/>
-	<menu_item_call label="Papierkorb ausleeren" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_land.xml b/indra/newview/skins/minimal/xui/de/menu_land.xml
deleted file mode 100644
index de679da3d8e8f0b4b67060128dedee3fe3dd5777..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
-	<menu_item_call label="Land-Info" name="Place Information..."/>
-	<menu_item_call label="Hier sitzen" name="Sit Here"/>
-	<menu_item_call label="Dieses Land kaufen" name="Land Buy"/>
-	<menu_item_call label="Pass kaufen" name="Land Buy Pass"/>
-	<menu_item_call label="Bauen" name="Create"/>
-	<menu_item_call label="Land bearbeiten" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_landmark.xml b/indra/newview/skins/minimal/xui/de/menu_landmark.xml
deleted file mode 100644
index 2aff0eec95807845d7d9d7e27c30bdfee684d6f2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
-	<menu_item_call label="SLurl kopieren" name="copy"/>
-	<menu_item_call label="Löschen" name="delete"/>
-	<menu_item_call label="Auswahl erstellen" name="pick"/>
-	<menu_item_call label="Zu Favoritenleiste hinzufügen" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_login.xml b/indra/newview/skins/minimal/xui/de/menu_login.xml
deleted file mode 100644
index a373e15338cfbf48542d28af416d46d167ffc902..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_login.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
-	<menu label="Ich" name="File">
-		<menu_item_call label="Einstellungen" name="Preferences..."/>
-		<menu_item_call label="[APP_NAME] schließen" name="Quit"/>
-	</menu>
-	<menu label="Hilfe" name="Help">
-		<menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/>
-		<menu_item_call label="INFO ÃœBER [APP_NAME]" name="About Second Life"/>
-	</menu>
-	<menu_item_check label="Debug-Menü anzeigen" name="Show Debug Menu"/>
-	<menu label="Debug" name="Debug">
-		<menu_item_call label="Debug-Einstellungen anzeigen" name="Debug Settings"/>
-		<menu_item_call label="UI/Farb-Einstellungen" name="UI/Color Settings"/>
-		<menu_item_call label="XUI-Editor" name="UI Preview Tool"/>
-		<menu label="UI-Tests" name="UI Tests"/>
-		<menu_item_call label="Fenstergröße einstellen..." name="Set Window Size..."/>
-		<menu_item_call label="Servicebedingungen anzeigen" name="TOS"/>
-		<menu_item_call label="Wichtige Meldung anzeigen" name="Critical"/>
-		<menu_item_call label="Test Medienbrowser" name="Web Browser Test"/>
-		<menu_item_call label="Test Webinhalt-Floater" name="Web Content Floater Test"/>
-		<menu_item_check label="Grid-Auswahl anzeigen" name="Show Grid Picker"/>
-		<menu_item_call label="Benachrichtigungs-Konsole anzeigen" name="Show Notifications Console"/>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/de/menu_mini_map.xml b/indra/newview/skins/minimal/xui/de/menu_mini_map.xml
deleted file mode 100644
index 2e0d72c40c0d0420e0ba43cd9f81c02408b8c862..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Zoom Nah" name="Zoom Close"/>
-	<menu_item_call label="Zoom Mittel" name="Zoom Medium"/>
-	<menu_item_call label="Zoom Weit" name="Zoom Far"/>
-	<menu_item_call label="Zoom-Standard" name="Zoom Default"/>
-	<menu_item_check label="Karte drehen" name="Rotate Map"/>
-	<menu_item_check label="Automatisch zentrieren" name="Auto Center"/>
-	<menu_item_call label="Verfolgung abschalten" name="Stop Tracking"/>
-	<menu_item_call label="Weltkarte" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_navbar.xml b/indra/newview/skins/minimal/xui/de/menu_navbar.xml
deleted file mode 100644
index 5175f34b418b5bf7a4356705888ab27246e334e5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
-	<menu_item_check label="Koordinaten anzeigen" name="Show Coordinates"/>
-	<menu_item_check label="Parzelleneigenschaften anzeigen" name="Show Parcel Properties"/>
-	<menu_item_call label="Landmarke" name="Landmark"/>
-	<menu_item_call label="Ausschneiden" name="Cut"/>
-	<menu_item_call label="Kopieren" name="Copy"/>
-	<menu_item_call label="Einfügen" name="Paste"/>
-	<menu_item_call label="Löschen" name="Delete"/>
-	<menu_item_call label="Alle auswählen" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/de/menu_nearby_chat.xml
deleted file mode 100644
index 99d6428c3f8d85da2f51d66eae2de9252503b3d2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
-	<menu_item_call label="Leute in der Nähe anzeigen..." name="nearby_people"/>
-	<menu_item_check label="Ignorierten Text anzeigen" name="muted_text"/>
-	<menu_item_check label="Bilder von Freunden anzeigen" name="show_buddy_icons"/>
-	<menu_item_check label="Namen anzeigen" name="show_names"/>
-	<menu_item_check label="Namen und Symbole anzeigen" name="show_icons_and_names"/>
-	<menu_item_call label="Schriftgröße" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/de/menu_notification_well_button.xml
deleted file mode 100644
index 0f2784f16075b7c5755531a17f562c0b79b334a7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
-	<menu_item_call label="Alle schließen" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_object.xml b/indra/newview/skins/minimal/xui/de/menu_object.xml
deleted file mode 100644
index 19057d4228df5b65f1acc49d69ed108a53a55d5f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
-	<menu_item_call label="Berühren" name="Object Touch">
-		<menu_item_call.on_enable name="EnableTouch" parameter="Berühren"/>
-	</menu_item_call>
-	<menu_item_call label="Bearbeiten" name="Edit..."/>
-	<menu_item_call label="Bauen" name="Build"/>
-	<menu_item_call label="Öffnen" name="Open"/>
-	<menu_item_call label="Hier sitzen" name="Object Sit"/>
-	<menu_item_call label="Aufstehen" name="Object Stand Up"/>
-	<menu_item_call label="Objektprofil" name="Object Inspect"/>
-	<menu_item_call label="Hineinzoomen" name="Zoom In"/>
-	<context_menu label="Anziehen" name="Put On">
-		<menu_item_call label="Anziehen" name="Wear"/>
-		<menu_item_call label="Hinzufügen" name="Add"/>
-		<context_menu label="Anhängen" name="Object Attach"/>
-		<context_menu label="HUD anhängen" name="Object Attach HUD"/>
-	</context_menu>
-	<context_menu label="Entfernen" name="Remove">
-		<menu_item_call label="Missbrauch melden" name="Report Abuse..."/>
-		<menu_item_call label="Ignorieren" name="Object Mute"/>
-		<menu_item_call label="Zurückgeben" name="Return..."/>
-		<menu_item_call label="Löschen" name="Delete"/>
-	</context_menu>
-	<menu_item_call label="Nehmen" name="Pie Object Take"/>
-	<menu_item_call label="Kopie nehmen" name="Take Copy"/>
-	<menu_item_call label="Bezahlen" name="Pay..."/>
-	<menu_item_call label="Kaufen" name="Buy..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_object_icon.xml b/indra/newview/skins/minimal/xui/de/menu_object_icon.xml
deleted file mode 100644
index 8b6c558416ba3ea6016c277f240b7cacfdcb595c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
-	<menu_item_call label="Objektprofil..." name="Object Profile"/>
-	<menu_item_call label="Ignorieren..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/de/menu_outfit_gear.xml
deleted file mode 100644
index 897154ec5626adfabcc1876e52633533cf29087b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
-	<menu_item_call label="Anziehen - Aktuelles Outfit ersetzen" name="wear"/>
-	<menu_item_call label="Anziehen - Aktuelles Outfit hinzufügen" name="wear_add"/>
-	<menu_item_call label="Ausziehen - Aus aktuellem Outfit entfernen" name="take_off"/>
-	<menu label="Neue Kleider" name="New Clothes">
-		<menu_item_call label="Neues Hemd" name="New Shirt"/>
-		<menu_item_call label="Neue Hose" name="New Pants"/>
-		<menu_item_call label="Neue Schuhe" name="New Shoes"/>
-		<menu_item_call label="Neue Socken" name="New Socks"/>
-		<menu_item_call label="Neue Jacke" name="New Jacket"/>
-		<menu_item_call label="Neuer Rock" name="New Skirt"/>
-		<menu_item_call label="Neue Handschuhe" name="New Gloves"/>
-		<menu_item_call label="Neues Unterhemd" name="New Undershirt"/>
-		<menu_item_call label="Neue Unterhose" name="New Underpants"/>
-		<menu_item_call label="Neues Alpha" name="New Alpha"/>
-		<menu_item_call label="Neue Tätowierung" name="New Tattoo"/>
-	</menu>
-	<menu label="Neue Körperteile" name="New Body Parts">
-		<menu_item_call label="Neue Form" name="New Shape"/>
-		<menu_item_call label="Neue Haut" name="New Skin"/>
-		<menu_item_call label="Neues Haar" name="New Hair"/>
-		<menu_item_call label="Neue Augen" name="New Eyes"/>
-	</menu>
-	<menu_item_call label="Outfit neu benennen" name="rename"/>
-	<menu_item_call label="Outfit löschen" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/de/menu_outfit_tab.xml
deleted file mode 100644
index 32a65c96fc835f4b1b693fe689be14cf65d063be..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
-	<menu_item_call label="Anziehen - Aktuelles Outfit ersetzen" name="wear_replace"/>
-	<menu_item_call label="Anziehen - Aktuelles Outfit hinzufügen" name="wear_add"/>
-	<menu_item_call label="Ausziehen - Aus aktuellem Outfit entfernen" name="take_off"/>
-	<menu_item_call label="Outfit bearbeiten" name="edit"/>
-	<menu_item_call label="Outfit neu benennen" name="rename"/>
-	<menu_item_call label="Outfit löschen" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_participant_list.xml b/indra/newview/skins/minimal/xui/de/menu_participant_list.xml
deleted file mode 100644
index 160f2f97bed39b97e968c367ffaf79704d0f2474..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
-	<menu_item_check label="Nach Name sortieren" name="SortByName"/>
-	<menu_item_check label="Nach letzten Sprechern sortieren" name="SortByRecentSpeakers"/>
-	<menu_item_call label="Profil anzeigen" name="View Profile"/>
-	<menu_item_call label="Freund hinzufügen" name="Add 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_check label="Symbole für Personen anzeigen" name="View Icons"/>
-	<menu_item_check label="Voice ignorieren" name="Block/Unblock"/>
-	<menu_item_check label="Text ignorieren" name="MuteText"/>
-	<context_menu label="Moderator-Optionen" 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="Alle freischalten" name="ModerateVoiceUnmute"/>
-	</context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_friends_view_sort.xml
deleted file mode 100644
index 84d9d8938ce1317bf922b449a1ac8a65377b4705..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Nach Name 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_call label="Ignorierte Einwohner &amp; Objekte anzeigen" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_groups.xml b/indra/newview/skins/minimal/xui/de/menu_people_groups.xml
deleted file mode 100644
index 76225ba2414e10156718d78c14b0888bb7b09f49..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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="Aktivieren" name="Activate"/>
-	<menu_item_call label="Verlassen" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_groups_view_sort.xml
deleted file mode 100644
index b68597d8aa1c6c06d835da39e1db7857c0332a68..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Gruppensymbole anzeigen" name="Display Group Icons"/>
-	<menu_item_call label="Ausgewählte Gruppe verlassen" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/de/menu_people_nearby.xml
deleted file mode 100644
index 1db964357fe9bbcf2b561dc5586fa3b531a1d9dd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?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"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/de/menu_people_nearby_multiselect.xml
deleted file mode 100644
index b6e99edfe1fdfa716d31cf5484bdd7a8eab3af26..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?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"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 0f252ab46d977ce46c7796b7e48b4dd47c97c9cd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Nach letzten Sprechern sortieren" name="sort_by_recent_speakers"/>
-	<menu_item_check label="Nach Name sortieren" name="sort_name"/>
-	<menu_item_check label="Nach Entfernung sortieren" name="sort_distance"/>
-	<menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
-	<menu_item_call label="Ignorierte Einwohner &amp; Objekte anzeigen" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/de/menu_people_recent_view_sort.xml
deleted file mode 100644
index 1ef020f5e1cc9a1bdf251fed2b195a772b3e271f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Nach aktuellesten Sprechern sortieren" name="sort_most"/>
-	<menu_item_check label="Nach Name sortieren" name="sort_name"/>
-	<menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/>
-	<menu_item_call label="Ignorierte Einwohner &amp; Objekte anzeigen" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_picks.xml b/indra/newview/skins/minimal/xui/de/menu_picks.xml
deleted file mode 100644
index 9aec4c83b0ce2a28bed4079343bf3452c4f1533b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
-	<menu_item_call label="Info" name="pick_info"/>
-	<menu_item_call label="Bearbeiten" name="pick_edit"/>
-	<menu_item_call label="Teleportieren" name="pick_teleport"/>
-	<menu_item_call label="Karte" name="pick_map"/>
-	<menu_item_call label="Löschen" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/de/menu_picks_plus.xml
deleted file mode 100644
index 385ff25b954bb9561ca07591a7e6d0425607aa11..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
-	<menu_item_call label="Neue Auswahl" name="create_pick"/>
-	<menu_item_call label="Neue Anzeige" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_place.xml b/indra/newview/skins/minimal/xui/de/menu_place.xml
deleted file mode 100644
index d9c85f5b929687c4f59fb4785f9d367290783e8d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
-	<menu_item_call label="Eine Landmarke setzen" name="landmark"/>
-	<menu_item_call label="Auswahl erstellen" name="pick"/>
-	<menu_item_call label="Pass kaufen" name="pass"/>
-	<menu_item_call label="Bearbeiten" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/de/menu_place_add_button.xml
deleted file mode 100644
index 7c0ff4a46a096a73b037cfcb9f627041f49b0215..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
-	<menu_item_call label="Ordner hinzufügen" name="add_folder"/>
-	<menu_item_call label="Landmarke hinzufügen" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/de/menu_places_gear_folder.xml
deleted file mode 100644
index 132d3f6466d15e1d3ad35f1fa1b227131cf865bf..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
-	<menu_item_call label="Landmarke hinzufügen" name="add_landmark"/>
-	<menu_item_call label="Ordner hinzufügen" name="add_folder"/>
-	<menu_item_call label="Ausschneiden" name="cut"/>
-	<menu_item_call label="Kopieren" name="copy_folder"/>
-	<menu_item_call label="Einfügen" name="paste"/>
-	<menu_item_call label="Umbenennen" name="rename"/>
-	<menu_item_call label="Löschen" name="delete"/>
-	<menu_item_call label="Erweitern Sie sich" name="expand"/>
-	<menu_item_call label="Zuklappen" name="collapse"/>
-	<menu_item_call label="Alle Ordner aufklappen" name="expand_all"/>
-	<menu_item_call label="Alle Ordner schließen" name="collapse_all"/>
-	<menu_item_check label="Nach Datum sortieren" name="sort_by_date"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/de/menu_places_gear_landmark.xml
deleted file mode 100644
index 6af4d644af0846da036362727929c9950572786a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
-	<menu_item_call label="Teleportieren" name="teleport"/>
-	<menu_item_call label="Weitere Informationen" name="more_info"/>
-	<menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
-	<menu_item_call label="Landmarke hinzufügen" name="add_landmark"/>
-	<menu_item_call label="Ordner hinzufügen" name="add_folder"/>
-	<menu_item_call label="Ausschneiden" name="cut"/>
-	<menu_item_call label="Landmarke kopieren" name="copy_landmark"/>
-	<menu_item_call label="SLurl kopieren" name="copy_slurl"/>
-	<menu_item_call label="Einfügen" name="paste"/>
-	<menu_item_call label="Umbenennen" name="rename"/>
-	<menu_item_call label="Löschen" name="delete"/>
-	<menu_item_call label="Alle Ordner aufklappen" name="expand_all"/>
-	<menu_item_call label="Alle Ordner schließen" name="collapse_all"/>
-	<menu_item_check label="Nach Datum sortieren" name="sort_by_date"/>
-	<menu_item_call label="Auswahl erstellen" name="create_pick"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/de/menu_profile_overflow.xml
deleted file mode 100644
index 9f3fcbca1d21856d26d0dae3c82135fb9219898d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
-	<menu_item_call label="Karte" name="show_on_map"/>
-	<menu_item_call label="Bezahlen" name="pay"/>
-	<menu_item_call label="Teilen" name="share"/>
-	<menu_item_call label="Ignorieren" name="block"/>
-	<menu_item_call label="Freischalten" name="unblock"/>
-	<menu_item_call label="Hinauswerfen" name="kick"/>
-	<menu_item_call label="Einfrieren" name="freeze"/>
-	<menu_item_call label="Auftauen" name="unfreeze"/>
-	<menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/de/menu_save_outfit.xml
deleted file mode 100644
index 986c78b318ad409022b721e4b747ae2b1bbf54e0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
-	<menu_item_call label="Speichern" name="save_outfit"/>
-	<menu_item_call label="Speichern unter" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/de/menu_script_chiclet.xml
deleted file mode 100644
index 3256aa1a8778b47092cb0223de649226d32df24b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
-	<menu_item_call label="Schließen" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_slurl.xml b/indra/newview/skins/minimal/xui/de/menu_slurl.xml
deleted file mode 100644
index b2ec017f9f3e929fb7f1008de3964dab42a07b5d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="URL-Info" name="about_url"/>
-	<menu_item_call label="Zu URL teleportieren" name="teleport_to_url"/>
-	<menu_item_call label="Karte" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/de/menu_teleport_history_gear.xml
deleted file mode 100644
index 68b8e21802a5fb47faf5315279174e01d322d14e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
-	<menu_item_call label="Alle Ordner aufklappen" name="Expand all folders"/>
-	<menu_item_call label="Alle Ordner schließen" name="Collapse all folders"/>
-	<menu_item_call label="Teleport-Liste löschen" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/de/menu_teleport_history_item.xml
deleted file mode 100644
index ff8fb0b1819ab755583804363d0522dddcf650a7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Teleportieren" name="Teleport"/>
-	<menu_item_call label="Weitere Informationen" name="More Information"/>
-	<menu_item_call label="In Zwischenablage kopieren" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/de/menu_teleport_history_tab.xml
deleted file mode 100644
index 194dd16fd14cc4040a39b6e547bbba0a7862eb6b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Öffnen" name="TabOpen"/>
-	<menu_item_call label="Schließen" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_text_editor.xml b/indra/newview/skins/minimal/xui/de/menu_text_editor.xml
deleted file mode 100644
index c00186c13e9d045e09400ab4e613e2aea40566d7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
-	<menu_item_call label="Ausschneiden" name="Cut"/>
-	<menu_item_call label="Kopieren" name="Copy"/>
-	<menu_item_call label="Einfügen" name="Paste"/>
-	<menu_item_call label="Löschen" name="Delete"/>
-	<menu_item_call label="Alle auswählen" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/de/menu_topinfobar.xml
deleted file mode 100644
index 5b0a724244e583653280572d2b56a18c5e2a5fce..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
-	<menu_item_check label="Koordinaten anzeigen" name="Show Coordinates"/>
-	<menu_item_check label="Parzellen-Eigenschaften anzeigen" name="Show Parcel Properties"/>
-	<menu_item_call label="Landmarke" name="Landmark"/>
-	<menu_item_call label="Kopieren" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_agent.xml b/indra/newview/skins/minimal/xui/de/menu_url_agent.xml
deleted file mode 100644
index 9a808088fbeebd8681eab0915973f1139b77b7b5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?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="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/minimal/xui/de/menu_url_group.xml b/indra/newview/skins/minimal/xui/de/menu_url_group.xml
deleted file mode 100644
index 6bd86414bc10dd0a3da4bd886f23081b40cc3ac8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Gruppeninformation anzeigen" name="show_group"/>
-	<menu_item_call label="Gruppe 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/minimal/xui/de/menu_url_http.xml b/indra/newview/skins/minimal/xui/de/menu_url_http.xml
deleted file mode 100644
index 30eb1668a54b0edb40f556f32dff0a4c75b799fb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Webseite öffnen" name="url_open"/>
-	<menu_item_call label="Im internen Browser öffnen" name="url_open_internal"/>
-	<menu_item_call label="Im externen Browser öffnen" name="url_open_external"/>
-	<menu_item_call label="URL in Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/de/menu_url_inventory.xml
deleted file mode 100644
index dc069df02b621a17d7fe14fb4a1aa29d8477dbbb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Inventarobjekte anzeigen" name="show_item"/>
-	<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/minimal/xui/de/menu_url_map.xml b/indra/newview/skins/minimal/xui/de/menu_url_map.xml
deleted file mode 100644
index 2f6ffcd450088f8d197bf37a601999b9e480a121..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
-	<menu_item_call label="Zu Position teleportieren" name="teleport_to_location"/>
-	<menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/de/menu_url_objectim.xml
deleted file mode 100644
index 90d3763d9c0871d794cd9619c55b275057f11778..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?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="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"/>
-	<menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/de/menu_url_parcel.xml
deleted file mode 100644
index 9169bca24f33933e3b5a943c240665fe582777ba..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Parzelleninformationen anzeigen" name="show_parcel"/>
-	<menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
-	<menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/de/menu_url_slapp.xml
deleted file mode 100644
index 72e916b902dd8a2180a5816d07bb23a97c90186f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Diesen Befehl ausführen" name="run_slapp"/>
-	<menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/de/menu_url_slurl.xml
deleted file mode 100644
index 5d48230ebf84d4a8d8301846e7fac4058975624c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Ortsinformationen anzeigen" name="show_place"/>
-	<menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
-	<menu_item_call label="Zu Position teleportieren" name="teleport_to_location"/>
-	<menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/de/menu_url_teleport.xml
deleted file mode 100644
index 4cc1ecc70ea63f5558ea0d146c00a50422aa043e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="An diesen Standort teleportieren" name="teleport"/>
-	<menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
-	<menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_viewer.xml b/indra/newview/skins/minimal/xui/de/menu_viewer.xml
deleted file mode 100644
index 67dc618eb011f088cbd933cce8ebf09f49a9f35a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
-	<menu label="Hilfe" name="Help">
-		<menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/>
-	</menu>
-	<menu label="Erweitert" name="Advanced">
-		<menu label="Tastaturkürzel" name="Shortcuts">
-			<menu_item_check label="Fliegen" name="Fly"/>
-			<menu_item_call label="Fenster schließen" name="Close Window"/>
-			<menu_item_call label="Alle Fenster schließen" name="Close All Windows"/>
-			<menu_item_call label="Ansicht zurücksetzen" name="Reset View"/>
-		</menu>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/de/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/de/menu_wearable_list_item.xml
deleted file mode 100644
index 283e454a0647b72b3c9527ba00edc61d4ab5599c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
-	<menu_item_call label="Ersetzen" name="wear_replace"/>
-	<menu_item_call label="Anziehen" name="wear_wear"/>
-	<menu_item_call label="Hinzufügen" name="wear_add"/>
-	<menu_item_call label="Ausziehen / Abnehmen" name="take_off_or_detach"/>
-	<menu_item_call label="Abnehmen" name="detach"/>
-	<context_menu label="Anhängen an" name="wearable_attach_to"/>
-	<context_menu label="An HUD hängen" name="wearable_attach_to_hud"/>
-	<menu_item_call label="Ausziehen" name="take_off"/>
-	<menu_item_call label="Bearbeiten" name="edit"/>
-	<menu_item_call label="Objektprofil" name="object_profile"/>
-	<menu_item_call label="Original anzeigen" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/de/menu_wearing_gear.xml
deleted file mode 100644
index 80d4ff4d9fa0ff1a33604ccb928f53afb5ed8701..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
-	<menu_item_call label="Outfit bearbeiten" name="edit"/>
-	<menu_item_call label="Ausziehen" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/de/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/de/menu_wearing_tab.xml
deleted file mode 100644
index 695451a105602b82daac79f9b5b6643096cae321..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
-	<menu_item_call label="Ausziehen" name="take_off"/>
-	<menu_item_call label="Abnehmen" name="detach"/>
-	<menu_item_call label="Outfit bearbeiten" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/de/notifications.xml b/indra/newview/skins/minimal/xui/de/notifications.xml
deleted file mode 100644
index 195d5105c5699320ec8e417d40079e7b54a1dc6c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
-	<notification name="UserGiveItem">
-		[NAME_SLURL] bietet Ihnen [ITEM_SLURL] an. Zur Verwendung dieses Artikels müssen Sie in den erweiterten Modus umschalten, wo Sie den Artikel in Ihrem Inventar finden werden. Um in den erweiterten Modus umzuschalten, beenden Sie die Anwendung, starten Sie sie neu und ändern Sie die Moduseinstellung auf dem Anmeldebildschirm.
-		<form name="form">
-			<button name="Show" text="Artikel behalten"/>
-			<button name="Discard" text="Artikel ablehnen"/>
-			<button name="Mute" text="Benutzer blockieren"/>
-		</form>
-	</notification>
-	<notification name="ObjectGiveItem">
-		Ein Objekt namens &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, das [NAME_SLURL] gehört, bietet Ihnen &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt; an. Zur Verwendung dieses Artikels müssen Sie in den erweiterten Modus umschalten, wo Sie den Artikel in Ihrem Inventar finden werden. Um in den erweiterten Modus zu wechseln, beenden Sie die Anwendung, starten Sie sie neu und ändern Sie die Moduseinstellung auf dem Anmeldebildschirm.
-		<form name="form">
-			<button name="Keep" text="Artikel behalten"/>
-			<button name="Discard" text="Artikel ablehnen"/>
-			<button name="Mute" text="Objekt blockieren"/>
-		</form>
-	</notification>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml
deleted file mode 100644
index cc45f42169391982f4893e6fdea4329469d7a1b6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="call_btn_panel">
-			<button label="Anrufen" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Anruf beenden" name="end_call_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml
deleted file mode 100644
index 2278bfb699897857f8d82b1c1fffcabf7c0ff400..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
-	<string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
-	<string name="SpeakBtnToolTip" value="Schaltet Mikrofon ein/aus"/>
-	<string name="VoiceControlBtnToolTip" value="Voice-Chat-Steuerung anzeigen/ausblenden"/>
-	<layout_stack name="toolbar_stack">
-		<layout_panel name="speak_panel">
-			<button label="Sprechen" name="speak_btn" tool_tip="Mikrofon ein- und ausschalten"/>
-		</layout_panel>
-		<layout_panel name="speak_flyout_panel">
-			<button label="" name="flyout_btn" tool_tip="Soundeinstellungen ändern"/>
-		</layout_panel>
-		<layout_panel name="gesture_panel">
-			<gesture_combo_list label="Gesten" name="Gesture" tool_tip="Ihren Avatar bestimmte Aktionen durchführen lassen"/>
-		</layout_panel>
-		<layout_panel name="cam_panel">
-			<bottomtray_button label="Ansicht" name="camera_btn" tool_tip="Kamerawinkel steuern"/>
-		</layout_panel>
-		<layout_panel name="destinations_panel">
-			<bottomtray_button label="Ziele" name="destination_btn" tool_tip="Durch Second Life reisen"/>
-		</layout_panel>
-		<layout_panel name="avatar_panel">
-			<bottomtray_button label="Mein Avatar" name="avatar_btn" tool_tip="Eigenes Aussehen verändern"/>
-		</layout_panel>
-		<layout_panel name="people_panel">
-			<bottomtray_button label="Leute" name="show_people_button" tool_tip="Personen in Second Life suchen"/>
-		</layout_panel>
-		<layout_panel name="profile_panel">
-			<bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Eigenes Profil anzeigen und bearbeiten"/>
-		</layout_panel>
-		<layout_panel name="howto_panel">
-			<bottomtray_button label="Anweisungen" name="show_help_btn" tool_tip="Hilfeinfos zu Second Life anzeigen"/>
-		</layout_panel>
-		<layout_panel name="im_well_panel">
-			<chiclet_im_well name="im_well">
-				<button name="Unread IM messages" tool_tip="IMs"/>
-			</chiclet_im_well>
-		</layout_panel>
-		<layout_panel name="notification_well_panel">
-			<chiclet_notification name="notification_well">
-				<button name="Unread" tool_tip="Benachrichtigungen"/>
-			</chiclet_notification>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_group_control_panel.xml
deleted file mode 100644
index 81e6040f84174461f81c8aae0850f990e816e851..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="end_call_btn_panel">
-			<button label="Anruf beenden" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Voice-Steuerung öffnen" name="voice_ctrls_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml
deleted file mode 100644
index 56c2310f2f9c7fadff889550fde8f0b74ffb512b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="button_stack">
-		<layout_panel name="view_profile_btn_panel">
-			<button label="Profil" name="view_profile_btn"/>
-		</layout_panel>
-		<layout_panel name="add_friend_btn_panel">
-			<button label="Freund hinzufügen" name="add_friend_btn"/>
-		</layout_panel>
-		<layout_panel name="teleport_btn_panel">
-			<button label="Teleportieren" name="teleport_btn" tool_tip="Dieser Person einen Teleport anbieten"/>
-		</layout_panel>
-		<layout_panel name="call_btn_panel">
-			<button label="Anrufen" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Anruf beenden" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="block_btn_panel">
-			<button label="Ignorieren" name="block_btn"/>
-		</layout_panel>
-		<layout_panel name="unblock_btn_panel">
-			<button label="Freischalten" name="unblock_btn"/>
-		</layout_panel>
-		<layout_panel name="volume_ctrl_panel">
-			<slider name="volume_slider" tool_tip="Anrufvolumen" value="0,5"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_login.xml b/indra/newview/skins/minimal/xui/de/panel_login.xml
deleted file mode 100644
index 2e82453aab1efee11edeaddecf0b18fa23e09c66..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
-	<panel.string name="create_account_url">
-		http://de.secondlife.com/registration/
-	</panel.string>
-	<panel.string name="forgot_password_url">
-		http://secondlife.com/account/request.php?lang=de
-	</panel.string>
-	<layout_stack name="login_widgets">
-		<layout_panel name="login">
-			<text name="username_text">
-				Benutzername:
-			</text>
-			<combo_box name="username_combo" tool_tip="Bei der Registrierung gewählter Benutzername wie „berndschmidt12“ oder „Liebe Sonne“"/>
-			<text name="password_text">
-				Kennwort:
-			</text>
-			<check_box label="Kennwort merken" name="remember_check"/>
-			<button label="Anmelden" name="connect_btn"/>
-			<text name="mode_selection_text">
-				Modus:
-			</text>
-			<combo_box name="mode_combo" tool_tip="Wählen Sie den gewünschten Modus aus. Basis: schnelles, einfaches Erkunden und Chatten. Erweitert: Zugriff auf zusätzliche Funktionen.">
-				<combo_box.item label="Basis" name="Basic"/>
-				<combo_box.item label="Erweitert" name="Advanced"/>
-			</combo_box>
-		</layout_panel>
-		<layout_panel name="links">
-			<text name="create_new_account_text">
-				Registrieren
-			</text>
-			<text name="forgot_password_text">
-				Benutzernamen oder Kennwort vergessen?
-			</text>
-			<text name="login_help">
-				Sie brauchen Hilfe?
-			</text>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/de/panel_navigation_bar.xml
deleted file mode 100644
index ee1a543aacb377371d97a80286c97341a17fed25..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="Zurück zum vorherigen Standort teleportieren"/>
-		<pull_button name="forward_btn" tool_tip="Um einen Standort weiter teleportieren"/>
-		<button name="home_btn" tool_tip="Zu meinem Zuhause teleportieren"/>
-		<location_input label="Standort" name="location_combo"/>
-		<search_combo_box label="Suche" name="search_combo_box" tool_tip="Suche">
-			<combo_editor label="[SECOND_LIFE] durchsuchen" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="Ziehen Sie Landmarken hier hin, damit Sie schnell zu Ihren Lieblingsplätzen in Second Life gelangen können!">
-		<label name="favorites_bar_label" tool_tip="Ziehen Sie Landmarken hier hin, damit Sie schnell zu Ihren Lieblingsplätzen in Second Life gelangen können!">
-			Favoritenleiste
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="Mehr meiner Favoriten anzeigen"/>
-	</favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_people.xml b/indra/newview/skins/minimal/xui/de/panel_people.xml
deleted file mode 100644
index 1b6565eb739839f1d25fff8a4e217aca76b4b494..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/panel_people.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Leute" name="people_panel">
-	<string name="no_recent_people" value="Sie haben in letzter Zeit mit niemandem interagiert. Suchen Sie nach Leuten, mit denen Sie sich unterhalten können? Klicken Sie unten auf die Schaltfläche „Ziele“."/>
-	<string name="no_filtered_recent_people" value="Es gibt keine Leute mit diesem Namen, mit denen Sie in letzter Zeit interagiert haben."/>
-	<string name="no_one_near" value="Es ist niemand in der Nähe. Suchen Sie nach Leuten, mit denen Sie sich unterhalten können? Klicken Sie unten auf die Schaltfläche „Ziele“."/>
-	<string name="no_one_filtered_near" value="Es ist niemand mit diesem Namen in der Nähe."/>
-	<string name="no_friends_online" value="Keine Freunde online"/>
-	<string name="no_friends" value="Keine Freunde"/>
-	<string name="no_friends_msg">
-		Klicken Sie mit der rechten Maustaste auf einen Einwohner, um ihn als Freund hinzuzufügen. Suchen Sie nach Leuten, mit denen Sie sich unterhalten können? Klicken Sie unten auf die Schaltfläche „Ziele“.
-	</string>
-	<string name="no_filtered_friends_msg">
-		Sie haben nicht das Richtige gefunden? Klicken Sie unten auf die Schaltfläche „Ziele“.
-	</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"/>
-		</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="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="AKTUELL" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<button name="add_friend_btn" tool_tip="Ausgewählten Einwohner zur Freundeliste hinzufügen"/>
-			</panel>
-		</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="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/minimal/xui/de/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/de/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 652fb7c836053ba5c635af115206c5ac26067339..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
-	<text name="sidetray_tab_title" value="Klappmenü??"/>
-	<button name="undock" tool_tip="Abkoppeln"/>
-	<button name="dock" tool_tip="Andocken"/>
-	<button name="show_help" tool_tip="Hilfe anzeigen"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/de/panel_status_bar.xml b/indra/newview/skins/minimal/xui/de/panel_status_bar.xml
deleted file mode 100644
index 2f8dc938c5f213a6d537d805e5fd7ba10f80d919..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/de/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
-	<panel.string name="packet_loss_tooltip">
-		Paketverlust
-	</panel.string>
-	<panel.string name="bandwidth_tooltip">
-		Bandbreite
-	</panel.string>
-	<panel.string name="time">
-		[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-	</panel.string>
-	<panel.string name="timeTooltip">
-		[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-	</panel.string>
-	<panel.string name="buycurrencylabel">
-		[AMT] L$
-	</panel.string>
-	<combo_box name="mode_combo" tool_tip="Wählen Sie den gewünschten Modus aus. Basismodus: Second Life schnell und einfach erkunden und chatten. Erweiterter Modus: Zugriff auf zusätzliche Funktionen.">
-		<combo_box.item label="Basismodus" name="Basic"/>
-		<combo_box.item label="Erweiterter Modus" name="Advanced"/>
-	</combo_box>
-	<button name="media_toggle_btn" tool_tip="Alle Medien starten/stoppen (Musik, Video, Webseiten)"/>
-	<button name="volume_btn" tool_tip="Steuerung der Gesamtlautstärke"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/floater_camera.xml b/indra/newview/skins/minimal/xui/en/floater_camera.xml
deleted file mode 100644
index 4cf792444f61d1ab07de297f3f4a369312b78211..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/floater_camera.xml
+++ /dev/null
@@ -1,284 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_dock="true"
- can_minimize="true"
- can_close="false"
- follows="bottom"
- height="164"
- layout="topleft"
- name="camera_floater"
- save_rect="true"
- save_visibility="true"
- save_dock_state="true"
- single_instance="true"
- width="228">
-    <floater.string
-     name="rotate_tooltip">
-        Rotate Camera Around Focus
-    </floater.string>
-    <floater.string
-     name="zoom_tooltip">
-        Zoom Camera Towards Focus
-    </floater.string>
-    <floater.string
-     name="move_tooltip">
-        Move Camera Up and Down, Left and Right
-    </floater.string>
-    <floater.string
-     name="camera_modes_title">
-        Camera modes
-    </floater.string>
-    <floater.string
-     name="pan_mode_title">
-       Orbit Zoom Pan
-    </floater.string>
-    <floater.string
-     name="presets_mode_title">
-        Preset Views
-    </floater.string>
-    <floater.string
-     name="free_mode_title">
-        View Object
-    </floater.string>
-    <panel
-     border="false"
-     height="123"
-     layout="topleft"
-     left="2"
-     top="0"
-     mouse_opaque="false"
-     name="controls"
-     width="226">
-       <panel
-         color="Transparent"
-         follows="all"
-         height="102"
-         layout="topleft"
-         left="8"
-         name="preset_views_list"
-         opaque="true"
-         top="24"
-         width="212"
-         visible="false">
-        <panel_camera_item
-          name="front_view">
-          <panel_camera_item.mousedown_callback
-            function="CameraPresets.ChangeView"
-            parameter="front_view" />
-          <panel_camera_item.picture
-            image_name="Cam_Preset_Front_Off" />
-          <panel_camera_item.selected_picture
-            image_name="Cam_Preset_Front_On" />
-          <panel_camera_item.text
-            name="front_view_text">
-            Front View
-          </panel_camera_item.text>
-        </panel_camera_item>
-        <panel_camera_item
-          name="group_view"
-          top_pad="4">
-          <panel_camera_item.mousedown_callback
-            function="CameraPresets.ChangeView"
-            parameter="group_view" />
-          <panel_camera_item.picture
-            image_name="Cam_Preset_Side_Off" />
-          <panel_camera_item.selected_picture
-            image_name="Cam_Preset_Side_On" />
-          <panel_camera_item.text
-            name="side_view_text">
-            Side View
-          </panel_camera_item.text>
-        </panel_camera_item>
-        <panel_camera_item
-          name="rear_view"
-          layout="topleft"
-          top_pad="4">
-          <panel_camera_item.mousedown_callback
-            function="CameraPresets.ChangeView"
-            parameter="rear_view" />
-          <panel_camera_item.picture
-            image_name="Cam_Preset_Back_Off" />
-          <panel_camera_item.selected_picture
-            image_name="Cam_Preset_Back_On" />
-          <panel_camera_item.text
-            name="rear_view_text">
-            Rear View
-          </panel_camera_item.text>
-        </panel_camera_item>
-      </panel>
-      <panel
-          color="Transparent"
-          follows="all"
-          height="68"
-          item_pad="4"
-          layout="topleft"
-          left="8"
-          name="camera_modes_list"
-          opaque="true"
-          top="24"
-          width="212"
-          visible="false">
-        <panel_camera_item
-          name="object_view">
-          <panel_camera_item.mousedown_callback
-            function="CameraPresets.ChangeView"
-            parameter="object_view" />
-          <panel_camera_item.text
-            name="object_view_text">
-            Object View
-          </panel_camera_item.text>
-          <panel_camera_item.picture
-            image_name="Object_View_Off" />
-          <panel_camera_item.selected_picture
-            image_name="Object_View_On" />
-        </panel_camera_item>
-        <panel_camera_item
-          name="mouselook_view"
-          layout="topleft">
-          <panel_camera_item.mousedown_callback
-            function="CameraPresets.ChangeView"
-            parameter="mouselook_view" />
-          <panel_camera_item.text
-            name="mouselook_view_text">
-            Mouselook View
-          </panel_camera_item.text>
-          <panel_camera_item.picture
-            image_name="MouseLook_View_Off" />
-          <panel_camera_item.selected_picture
-            image_name="MouseLook_View_On" />
-        </panel_camera_item>
-      </panel>
-         <!--TODO: replace + - images -->
-         <panel
-            border="false"
-            class="camera_zoom_panel"
-            height="114"
-            layout="topleft"
-            left="0"
-            mouse_opaque="false"
-            name="zoom"
-            top="20"
-            width="226">
-           <joystick_rotate
-              follows="top|left"
-              height="78"
-              image_selected="Cam_Rotate_In"
-              image_unselected="Cam_Rotate_Out"
-              layout="topleft"
-              left="7"
-              mouse_opaque="false"
-              name="cam_rotate_stick"
-              quadrant="left"
-              scale_image="false"
-              sound_flags="3"
-              visible="true"
-              tool_tip="Orbit camera around focus"
-              top="20"
-              width="78">
-              <commit_callback
-	        function="Camera.rotate" />
-	      <mouse_held_callback
-	        function="Camera.rotate" />         
-            </joystick_rotate>
-           <button
-              follows="top|left"
-              height="18"
-              image_disabled="AddItem_Disabled"
-              image_selected="AddItem_Press"
-              image_unselected="AddItem_Off"
-              layout="topleft"
-              left_pad="14" 
-              name="zoom_plus_btn"
-              width="18"
-              top="18">
-             <commit_callback
-                function="Zoom.plus" />
-             <mouse_held_callback
-                function="Zoom.plus" />
-           </button>
-           <slider_bar
-              height="50"
-              layout="topleft"
-              name="zoom_slider"
-              orientation="vertical"
-              tool_tip="Zoom camera toward focus"
-              top_pad="0"
-              min_val="0"
-              max_val="1" 
-              width="18">
-             <commit_callback function="Slider.value_changed"/>
-           </slider_bar>
-           <button
-              follows="top|left"
-              height="18"
-              image_disabled="MinusItem_Disabled"
-              image_selected="MinusItem_Press"
-              image_unselected="MinusItem_Off"
-              layout="topleft"
-              name="zoom_minus_btn"
-              top_pad="0"
-              width="18">
-             <commit_callback
-                function="Zoom.minus" />
-             <mouse_held_callback
-                function="Zoom.minus" />
-           </button>
-         <joystick_track
-         follows="top|left"
-         height="78"
-         image_selected="Cam_Tracking_In"
-         image_unselected="Cam_Tracking_Out"
-         layout="topleft"
-         left="133"
-         name="cam_track_stick"
-         quadrant="left"
-         scale_image="false"
-         sound_flags="3"
-         tool_tip="Move camera up and down, left and right"
-         top="20"
-         width="78">
-         <commit_callback
-           function="Camera.track" />
-         <mouse_held_callback
-            function="Camera.track" />         
-         </joystick_track>
-        </panel>
-    </panel>
-    <panel
-     border="false"
-     height="42"
-     layout="topleft"
-     left="2"
-     top_pad="0"
-     name="buttons"
-     width="226">
-		<button
-         height="23"
-         label=""
-         layout="topleft"
-         left="83"
-         is_toggle="true"
-         image_overlay="Cam_Avatar_Off"
-         image_selected="PushButton_Selected_Press"
-         name="presets_btn"
-         tab_stop="false"
-         tool_tip="Preset Views"
-         top="13"
-         width="25">
-		</button>
-		<button
-         height="23"
-         label=""
-         layout="topleft"
-         left_pad="1"
-         is_toggle="true"
-         image_overlay="PanOrbit_Off"
-         image_selected="PushButton_Selected_Press"
-         name="pan_btn"
-         tab_stop="false"
-         tool_tip="Orbit Zoom Pan"
-         width="25">
-		</button>
-    </panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/floater_help_browser.xml b/indra/newview/skins/minimal/xui/en/floater_help_browser.xml
deleted file mode 100644
index 477f2103526953382e7207df5bb520e9a77a482f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/floater_help_browser.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- can_minimize="false" 
- height="460"
- layout="topleft"
- min_height="360"
- left="10000"
- top="10" 
- min_width="335"
- name="floater_help_browser"
- single_instance="true"
- title="HOW TO"
- width="335">
-    <floater.string
-     name="loading_text">
-        Loading...
-    </floater.string>
-    <floater.string
-     name="done_text">
-    </floater.string>
-    <layout_stack
-     bottom="460"
-     follows="left|right|top|bottom"
-     layout="topleft"
-     left="5"
-     orientation="vertical" 
-     name="stack1"
-     top="20"
-     width="325">
-        <layout_panel
-         layout="topleft"
-         left_delta="0"
-         top_delta="0"
-         name="external_controls"
-         user_resize="false"
-         width="325">
-            <web_browser
-              trusted_content="true"  
-             bottom="-5"
-             follows="left|right|top|bottom"
-             layout="topleft"
-             left="0"
-             name="browser"
-             top="0"
-             height="300"
-             width="325" />
-        </layout_panel>
-    </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/floater_media_browser.xml b/indra/newview/skins/minimal/xui/en/floater_media_browser.xml
deleted file mode 100644
index 4862146c94e53f232aa658ff615a4c6efa2984be..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/floater_media_browser.xml
+++ /dev/null
@@ -1,242 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- can_resize="true"
- height="440"
- layout="topleft"
- min_height="140"
- min_width="467"
- name="floater_about"
- save_rect="true"
- auto_tile="true"
- title="MEDIA BROWSER"
- width="820">
-    <floater.string
-     name="home_page_url">
-        http://www.secondlife.com
-    </floater.string>
-    <floater.string
-     name="support_page_url">
-        http://support.secondlife.com
-    </floater.string>
-    <layout_stack
-     bottom="440"
-     follows="left|right|top|bottom"
-     layout="topleft"
-     left="10"
-     name="stack1"
-     orientation="vertical" 
-     top="20"
-     width="800">
-        <layout_panel
-         auto_resize="false"
-         default_tab_group="1" 
-         height="20"
-         layout="topleft"
-         left="0"
-         min_height="20"
-         name="nav_controls"
-         top="400"
-         user_resize="false"
-         width="800">
-            <button
-             follows="left|top"
-             height="20"
-             label="Back"
-             layout="topleft"
-             left="0"
-             name="back"
-             top="0"
-             width="55">
-				<button.commit_callback
-				function="MediaBrowser.Back" />
-			</button>
-            <button
-             follows="left|top"
-             height="20"
-             label="Forward"
-             layout="topleft"
-             left_pad="3"
-             name="forward"
-             top_delta="0"
-             width="68">
-				<button.commit_callback
-				function="MediaBrowser.Forward" />
-			</button>
-            <button
-             enabled="false"
-             follows="left|top"
-             height="20"
-             label="Reload"
-             layout="topleft"
-             left_pad="2"
-             name="reload"
-             top_delta="0"
-             width="70">
-				<button.commit_callback
-				function="MediaBrowser.Refresh" />
-			</button>
-            <combo_box
-             allow_text_entry="true"
-             follows="left|top|right"
-             tab_group="1"
-             height="20"
-             layout="topleft"
-             left_pad="5"
-             max_chars="1024"
-             name="address"
-             combo_editor.select_on_focus="true"
-             top_delta="0"
-             width="540">
-				<combo_box.commit_callback
-				function="MediaBrowser.EnterAddress" />
-			</combo_box>
-            <button
-             enabled="false"
-             follows="right|top"
-             height="20"
-             label="Go"
-             layout="topleft"
-             left_pad="5"
-             name="go"
-             top_delta="0"
-             width="50">
-				<button.commit_callback
-				function="MediaBrowser.Go" />
-			</button>
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         height="20"
-         layout="topleft"
-         left_delta="0"
-         min_height="20"         
-         name="time_controls"
-         top_delta="0"
-         user_resize="false"
-         width="800">
-            <button
-             follows="left|top"
-             height="20"
-             label="rewind"
-             layout="topleft"
-             left="0"
-             name="rewind"
-             top="0"
-             width="55" />
-            <button
-             follows="left|top"
-             height="20"
-             image_selected="button_anim_play_selected.tga"
-             image_unselected="button_anim_play.tga"
-             layout="topleft"
-             left_delta="55"
-             name="play"
-             top_delta="0"
-             width="55" />
-            <button
-             follows="left|top"
-             height="20"
-             image_selected="button_anim_pause_selected.tga"
-             image_unselected="button_anim_pause.tga"
-             layout="topleft"
-             left_delta="0"
-             name="pause"
-             top_delta="0"
-             width="55" />
-            <button
-             follows="left|top"
-             height="20"
-             label="stop"
-             layout="topleft"
-             left_pad="10"
-             name="stop"
-             top_delta="0"
-             width="55" />
-            <button
-             follows="left|top"
-             height="20"
-             label="forward"
-             layout="topleft"
-             left_pad="20"
-             name="seek"
-             top_delta="0"
-             width="55" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         height="20"
-         layout="topleft"
-         left_delta="0"
-         min_height="20"         
-         name="parcel_owner_controls"
-         top_delta="0"
-         user_resize="false"
-         width="540">
-            <button
-             enabled="false"
-             follows="left|top"
-             height="20"
-             label="Send Current Page to Parcel"
-             layout="topleft"
-             left="0"
-             name="assign"
-             top="0"
-             width="200">
-				<button.commit_callback
-				function="MediaBrowser.Assign" />
-			</button>
-        </layout_panel>
-        <layout_panel
-         height="40"
-         layout="topleft"
-         left_delta="0"
-         name="external_controls"
-         top_delta="0"
-         user_resize="false"
-         width="540">
-          <web_browser
-             bottom="-30"
-             follows="all"
-             layout="topleft"
-             left="0"
-             name="browser"
-             top="0"
-             width="540" />
-            <button
-             follows="bottom|left"
-             height="20"
-             label="Open in My Web Browser"
-             layout="topleft"
-             left_delta="0"
-             name="open_browser"
-             top_pad="5"
-             width="185">
-              <button.commit_callback
-                function="MediaBrowser.OpenWebBrowser" />
-            </button>
-            <check_box
-             control_name="UseExternalBrowser"
-             follows="bottom|left"
-             height="20"
-             label="Always open in my web browser"
-             layout="topleft"
-             left_pad="5"
-             name="open_always"
-             top_delta="0"
-             width="200" />
-            <button
-             follows="bottom|right"
-             height="20"
-             label="Close"
-             layout="topleft"
-             left_pad="80"
-             name="close"
-             top_delta="0"
-             width="70">
-				<button.commit_callback
-				function="MediaBrowser.Close" />
-			</button>
-        </layout_panel>
-    </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/en/floater_nearby_chat.xml
deleted file mode 100644
index 74ac885202358fed788103d02335febd1bfc74bf..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/floater_nearby_chat.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater
- border_visible="false"
- border="false"
- bg_opaque_image="Window_Foreground" 
- bg_alpha_image="Window_Background" 
- bg_alpha_image_overlay="DkGray_66" 
- legacy_header_height="18"
- can_minimize="true"
- can_tear_off="false"
- can_resize="true"
- can_drag_on_left="false"
- can_close="false"
- can_dock="true"
- bevel_style="in"
- height="300"
- min_width="235"
- layout="topleft"
- name="nearby_chat"
- save_rect="true"
- title="NEARBY CHAT"
- save_dock_state="true"
- save_visibility="true"
- single_instance="true"
- width="320">
-            <check_box
-             bottom_delta="36"
-             control_name="TranslateChat"
-             enabled="true"
-             height="16"
-             label="Translate chat (powered by Google)"
-             layout="topleft"
-             left="5"
-             name="translate_chat_checkbox"
-             width="230" />
-  <chat_history
-    parse_urls="true"
-    bg_readonly_color="ChatHistoryBgColor"
-    bg_writeable_color="ChatHistoryBgColor"
-    follows="all"
-    left="5"
-    top_delta="17"
-    layout="topleft"
-    height="260"
-    name="chat_history"
-    parse_highlights="true"
-    text_color="ChatHistoryTextColor"
-    text_readonly_color="ChatHistoryTextColor"
-    right_widget_pad="5"
-    left_widget_pad="0"
-    width="315" />
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/floater_side_bar_tab.xml b/indra/newview/skins/minimal/xui/en/floater_side_bar_tab.xml
deleted file mode 100644
index 83b1260620150305b850d5d185efc2eca416bf36..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/floater_side_bar_tab.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<floater
- can_close="true"
- can_resize="true"
- min_width="333"
- min_height="440"
- save_rect="true"
- save_visibility="true"
- >
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/floater_web_content.xml b/indra/newview/skins/minimal/xui/en/floater_web_content.xml
deleted file mode 100644
index 1d9a967d5a9db16050d90178713e9d96238fc1a7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/floater_web_content.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
-  legacy_header_height="18"
-  can_resize="true"
-  height="775"
-  layout="topleft"
-  min_height="400"
-  min_width="500"
-  name="floater_web_content"
-  save_rect="true"
-  auto_tile="true"
-  title=""
-  initial_mime_type="text/html"
-  width="780">
-  <layout_stack
-    bottom="775"
-    follows="left|right|top|bottom"
-    layout="topleft"
-    left="5"
-    animate="false"
-    name="stack1"
-    orientation="vertical"
-    top="20"
-    width="770">
-    <layout_panel
-      auto_resize="false"
-      default_tab_group="1"
-      height="22"
-      layout="topleft"
-      left="0"
-      min_height="20"
-      name="nav_controls"
-      top="400"
-      user_resize="false"
-      width="770">
-      <button
-        image_overlay="Arrow_Left_Off"
-		    image_disabled="PushButton_Disabled"
-		    image_disabled_selected="PushButton_Disabled"
-		    image_selected="PushButton_Selected"
-		    image_unselected="PushButton_Off"
-		    hover_glow_amount="0.15"
-        tool_tip="Navigate back"
-        follows="left|top"
-        height="22"
-        layout="topleft"
-        left="1"
-        name="back"
-        top="0"
-        width="22">
-        <button.commit_callback
-          function="WebContent.Back" />
-      </button>
-      <button
-        image_overlay="Arrow_Right_Off"
-		    image_disabled="PushButton_Disabled"
-		    image_disabled_selected="PushButton_Disabled"
-		    image_selected="PushButton_Selected"
-		    image_unselected="PushButton_Off"
-        tool_tip="Navigate forward"
-        follows="left|top"
-        height="22"
-        layout="topleft"
-        left="27"
-        name="forward"
-        top_delta="0"
-        width="22">
-        <button.commit_callback
-          function="WebContent.Forward" />
-      </button>
-      <button
-        image_overlay="Stop_Off"
-		    image_disabled="PushButton_Disabled"
-		    image_disabled_selected="PushButton_Disabled"
-		    image_selected="PushButton_Selected"
-		    image_unselected="PushButton_Off"
-        tool_tip="Stop navigation"
-        enabled="true"
-        follows="left|top"
-        height="22"
-        layout="topleft"
-        left="51"
-        name="stop"
-        top_delta="0"
-        width="22">
-        <button.commit_callback
-          function="WebContent.Stop" />
-      </button>
-      <button
-        image_overlay="Refresh_Off"
-		    image_disabled="PushButton_Disabled"
-		    image_disabled_selected="PushButton_Disabled"
-		    image_selected="PushButton_Selected"
-		    image_unselected="PushButton_Off"
-        tool_tip="Reload page"
-        follows="left|top"
-        height="22"
-        layout="topleft"
-        left="51"
-        name="reload"
-        top_delta="0"
-        width="22">
-        <button.commit_callback
-          function="WebContent.Reload" />
-      </button>
-      <combo_box
-        allow_text_entry="true"
-        follows="left|top|right"
-        tab_group="1"
-        height="22"
-        layout="topleft"
-        left_pad="4"
-        max_chars="1024"
-        name="address"
-        combo_editor.select_on_focus="true"
-        tool_tip="Enter URL here"
-        top_delta="0"
-        width="672">
-        <combo_box.commit_callback
-          function="WebContent.EnterAddress" />
-      </combo_box>
-      <icon
-        name="media_secure_lock_flag"
-        height="16"
-        follows="top|right"
-        image_name="Lock2"
-        layout="topleft"
-        left_delta="620"
-        top_delta="2"
-        visible="false" 
-        tool_tip="Secured Browsing"
-        width="16" />
-      <button
-        image_overlay="ExternalBrowser_Off"
-		    image_disabled="PushButton_Disabled"
-		    image_disabled_selected="PushButton_Disabled"
-		    image_selected="PushButton_Selected"
-		    image_unselected="PushButton_Off"
-        tool_tip="Open current URL in your desktop browser"
-        follows="right|top"
-        enabled="true" 
-        height="22"
-        layout="topleft"
-        name="popexternal"
-        right="770"
-        top_delta="-2"
-        width="22">
-        <button.commit_callback
-          function="WebContent.PopExternal" />
-      </button>
-    </layout_panel>
-    <layout_panel
-      height="40"
-      layout="topleft"
-      left_delta="0"
-      name="external_controls"
-      top_delta="0"
-      user_resize="false"
-      auto_resize="true"
-      width="585">
-      <web_browser
-        bottom="-2"
-        follows="all"
-        layout="topleft"
-        left="0"
-        name="webbrowser"
-        top="0"/>
-      </layout_panel>
-    <layout_panel name="status_bar" 
-                  height="23"
-                  auto_resize="false"
-                  user_resize="false">
-      <text
-        type="string"
-        length="200"
-        follows="bottom|left"
-        height="20"
-        layout="topleft"
-        left_delta="0"
-        name="statusbartext"
-        parse_urls="false"
-        text_color="0.4 0.4 0.4 1"
-        top_pad="3"
-        width="495"/>
-      <progress_bar
-        color_bar="0.3 1.0 0.3 1"
-        follows="bottom|right"
-        height="16"
-        top_delta="-1"
-        left_pad="24"
-        layout="topleft"
-        name="statusbarprogress"
-        width="64"/>
-    </layout_panel>
-  </layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/inspect_avatar.xml b/indra/newview/skins/minimal/xui/en/inspect_avatar.xml
deleted file mode 100644
index 853d5f8735fca90dbfbe67ecd89d2490d6a657ae..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/inspect_avatar.xml
+++ /dev/null
@@ -1,206 +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
- legacy_header_height="25"
- bevel_style="in"
- bg_opaque_image="Inspector_Background"
- can_close="false"
- can_minimize="false"
- height="164"
- layout="topleft"
- name="inspect_avatar"
- single_instance="true"
- sound_flags="0"
- visible="true"
- width="245">
-  <!-- Allowed fields include:
-	[BORN_ON] ("12/3/2008")
-	[SL_PROFILE] (Second Life profile),
-    [RW_PROFILE] (real world profile),
-	[ACCTTYPE] ("Resident"),
-	[PAYMENTINFO] ("Payment Info on File"),
-	[AGE] ("1 year 2 months")
-   -->
-  <string
-   name="Subtitle">
-[AGE]
-  </string>
-  <string
-     name="Details">
-[SL_PROFILE]
-    </string>
-  <text
-     follows="top|left"
-     font="SansSerif"
-     height="20"
-     left="8"
-     name="user_name_small"
-     top="7"
-     text_color="White"
-     use_ellipses="true"
-     word_wrap="true"
-    visible="false" 
-     value="Grumpity ProductEngine with a long name"
-     width="185" />
-   <text
-    follows="top|left"
-    font="SansSerifBigLarge"
-    height="21"
-    left="8"
-    name="user_name"
-    top="10"
-    text_color="White"
-    use_ellipses="true"
-    value="Grumpity ProductEngine"
-    width="190" />
-   <text
-     follows="top|left"
-     height="16"
-     left="8"
-     name="user_slid"
-     font="SansSerifSmallBold"
-     text_color="EmphasisColor"
-     value="james.linden"
-     width="185"
-     use_ellipses="true" />
-    <text
-     follows="top|left"
-     height="16"
-     left="8"
-     name="user_subtitle"
-     font="SansSerifSmall"
-     text_color="White"
-     top_pad="0" 
-     value="11 Months, 3 days old"
-     width="175"
-     use_ellipses="true" />
-     <text
-     follows="left|top|right"
-     height="35"
-     left="8"
-     name="user_details"
-     right="-10"
-     word_wrap="true"
-     top_pad="4"
-     use_ellipses="true"
-     width="220">This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
-    </text>
-    <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" />
-    <avatar_icon
-     follows="top|left"
-     height="38"
-     right="-10"
-     bevel_style="in"
-     border_style="line"
-     mouse_opaque="true"
-     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/minimal/xui/en/inspect_object.xml b/indra/newview/skins/minimal/xui/en/inspect_object.xml
deleted file mode 100644
index f424069ec6760e612b9d02a75714d77583a35392..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/inspect_object.xml
+++ /dev/null
@@ -1,144 +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
- legacy_header_height="25"
- bevel_style="in"
- bg_opaque_image="Inspector_Background"
- can_close="false"
- can_minimize="false"
- height="150"
- layout="topleft"
- name="inspect_object"
- single_instance="true"
- sound_flags="0"
- visible="true"
- width="228">
-  <string name="Creator">By [CREATOR]</string>
-  <string name="CreatorAndOwner">
-By [CREATOR]
-Owner [OWNER]
-  </string>
-  <string name="Price">L$[AMOUNT]</string>
-  <string name="PriceFree">Free!</string>
-  <string name="Touch">Touch</string>
-  <string name="Sit">Sit</string>
-  <text
-     parse_urls="false"
-     follows="all"
-     font="SansSerifLarge"
-     height="30"
-     left="8"
-     name="object_name"
-     text_color="White"
-     top="6"
-     use_ellipses="true"
-     word_wrap="true"
-     width="220" />
-  <text
-   follows="all"
-   height="50"
-   left="8"
-   name="object_creator"
-   top_pad="6"
-   use_ellipses="true"
-   width="220">
-    by secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-  </text>
-  <text
-   follows="all"
-   font="SansSerifSmall"
-   font.style="BOLD"
-   height="14"
-   halign="right"
-   right="-5"
-   name="price_text"
-   text_color="white"
-   top="60"
-   font_shadow="none"
-   width="60">
-L$30,000
-  </text>
-  <text
-   clip_partial="true"
-   follows="all"
-   font="SansSerifSmall"
-   height="25"
-   left="8"
-   name="object_description"
-   top="76"
-   use_ellipses="true"
-   width="220"
-   word_wrap="true">
-  </text>
-  <!-- Overlapping buttons for all default actions.  Show "Buy" if
-  for sale, "Sit" if can sit, etc. -->
-  <icon
-   name="secure_browsing"
-   image_name="Lock"
-   left="0"
-   visible="false"
-   width="18"
-   height="18"
-   top="103"
-   tool_tip="Secure Browsing"
-   follows="left|top" />
-   <text
-   follows="all"
-   font="SansSerifSmall"
-   height="13"
-   name="object_media_url"
-   width="207"
-   left_pad="2"
-   top_delta="0"
-   max_length = "50"
-   use_ellipses="true">
-   http://www.superdupertest.com
-</text>
-  <button
-   follows="top|left"
-   height="20"
-   label="Take Copy"
-   left_delta="0"
-   name="take_free_copy_btn"
-   top_delta="0"
-   width="80" />
-  <button
-   follows="top|left"
-   height="20"
-   label="Touch"
-   left_delta="0"
-   name="touch_btn"
-   top_delta="0"
-   width="80" />
-  <button
-   follows="top|left"
-   height="20"
-   label="Sit"
-   left_delta="0"
-   name="sit_btn"
-   top_delta="0"
-   width="80" />
-  <button
-   follows="top|left"
-   height="20"
-   label="Open"
-   left_delta="0"
-   name="open_btn"
-   top_delta="0"
-   width="80" />
-
- <!--  non-overlapping buttons here -->
-  <menu_button
-     follows="top|left"
-     height="20"
-     image_overlay="OptionsMenu_Off"
-     menu_filename="menu_inspect_object_gear.xml"
-     name="gear_btn"
-     right="-5"
-     top_delta="0"
-     width="35" />
-</floater>
diff --git a/indra/newview/skins/minimal/xui/en/main_view.xml b/indra/newview/skins/minimal/xui/en/main_view.xml
deleted file mode 100644
index 0ce6cbc98456ff6b1d93d83d6c88a2a6b524abe2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/main_view.xml
+++ /dev/null
@@ -1,269 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- follows="left|right|top|bottom"
- height="768"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- tab_stop="false" 
- name="main_view"
- width="1024">
-              <panel top="0"
-               follows="all"
-               height="768"
-               mouse_opaque="false"
-               name="login_panel_holder"
-               width="1024"/>
-
-  <layout_stack border_size="0"
-                follows="all"
-                mouse_opaque="false"
-                height="768"
-                name="menu_stack"
-                orientation="vertical"
-                top="0">
-    <layout_panel auto_resize="false"
-                  height="30"
-                  mouse_opaque="false"
-                  name="nav_bar_container"
-                  tab_stop="false"
-                  min_height="0" 
-                  width="1024"
-                  user_resize="false" 
-                  visible="true">
-    </layout_panel>
-    <layout_panel auto_resize="true"
-                  follows="all"
-                  height="500"
-                  layout="topleft"
-                  mouse_opaque="false"
-                  tab_stop="false" 
-                  name="hud"
-                  width="1024">
-        <panel auto_resize="false"
-               follows="all"
-               height="500"
-               top="0" 
-               layout="topleft"
-               mouse_opaque="false"
-               tab_stop="false"
-               name="non_side_tray_view"
-               user_resize="false"
-               width="1024">
-
-          <layout_stack border_size="0"
-                        bottom="500"
-                        follows="all"
-                        height="500"
-                        left="0"
-                        top="0" 
-                        mouse_opaque="false"
-                        name="world_stack"
-                        open_time_constant="0.03"
-                        close_time_constant="0.03" 
-                        orientation="vertical">
-            <layout_panel auto_resize="true"
-                          follows="all"
-                          height="500"
-                          layout="topleft"
-                          tab_stop="false"
-                          mouse_opaque="false"
-                          user_resize="false" 
-                          name="hud container"
-                          width="500">
-              <view top="0"
-                    follows="all"
-                    height="500"
-                    left="0"
-                    mouse_opaque="false"
-                    name="floater_snap_region"
-                    width="500"/>
-              <panel follows="left|top"
-                     height="0"
-                     left="0"
-                     mouse_opaque="false"
-                     name="topinfo_bar_container"
-                     tab_stop="false"
-                     top="0"
-                     visible="false"
-                     width="1024"/>
-              <panel bottom="500"
-                     follows="left|right|bottom"
-                     height="25"
-                     left="0"
-                     mouse_opaque="false"
-                     tab_stop="false"
-                     name="stand_stop_flying_container"
-                     visible="false"
-                     width="500"/>
-              
-              <panel follows="all"
-										 height="500"
-										 left="0"
-										 mouse_opaque="false"
-										 name="floater_view_holder"
-										 tab_group="-1"
-										 tab_stop="false"
-										 top="0"
-										 width="500">
-                <floater_view follows="all"
-															height="500"
-															left="0"
-															mouse_opaque="false"
-															name="Floater View"
-															tab_group="-1"
-															tab_stop="false"
-															top="0"
-															width="500"/>
-              </panel>
-              <panel bottom="500"
-                    follows="all"
-                    height="500"
-                    left="0"
-                    mouse_opaque="false"
-                    name="world_view_rect"
-                     top="0" 
-                    width="500"/>
-            </layout_panel>
-            <layout_panel auto_resize="false"
-                   min_height="33"
-                   height="33" 
-                   mouse_opaque="false"
-                   name="bottom_tray_container"
-                   visible="false"/>
-            <layout_panel auto_resize="false"
-                          height="215"
-                          mouse_opaque="false"
-                          user_resize="false"
-                          name="avatar_picker_and_destination_guide_container"
-                          visible="false">
-              <panel top="0"
-                     height="215"
-                     left="0"
-                     background_visible="true" 
-                     width="500"
-                     follows="all">
-                <web_browser
-                  top="0"
-                  height="200"
-                  follows="all"
-                  name="destination_guide_contents"
-                  trusted_content="true"
-                  visible="false"/>
-                <web_browser
-                  top="0"
-                  height="200"
-                  follows="all"
-                  name="avatar_picker_contents"
-                  visible="false"
-                  trusted_content="true"/>
-                <button
-                  name="close"
-                  width="22"
-                  height="23"
-                  right="-10" 
-                  top="2" 
-                  follows="top|right" 
-                  chrome="true" 
-                  tab_stop="false" 
-                  image_unselected="bottomtray_close_off"
-                  image_selected="bottomtray_close_press"
-                  />
-              </panel>
-            </layout_panel>
-          </layout_stack>
-        </panel>
-      <debug_view follows="all"
-                  left="0"
-                  top="0"
-                  mouse_opaque="false"
-                  height="500"
-                  name="DebugView"
-                  width="1024"/>
-    </layout_panel>
-  </layout_stack>
-  <panel mouse_opaque="false"
-       follows="right|top"
-       name="status_bar_container"
-       tab_stop="false"
-       height="30"
-       left="-160"
-       top="0"
-       width="160"
-       visible="false"/>
-  <panel follows="top|bottom"
-         height="500"
-         mouse_opaque="false"
-         tab_stop="false"
-         name="hidden_side_tray"
-         visible="false"
-         width="333">
-    <panel
-      name="side_tray_container"
-      width="333"
-      height="500"/>
-  </panel>
-
-  <panel top="0"
-        follows="all"
-        mouse_opaque="false"
-        left="0"
-        name="snapshot_floater_view_holder" 
-        width="1024"
-        height="798">
-    <snapshot_floater_view enabled="false"
-                           follows="all"
-                           height="768"
-                           left="0"
-                           mouse_opaque="false"
-                           name="Snapshot Floater View"
-                           tab_stop="false"
-                           top="0"
-                           visible="false"
-                           width="1024"/>
-  </panel>
-  <panel top="0"
-         follows="all"
-         height="768"
-         mouse_opaque="false"
-         name="popup_holder"
-         class="popup_holder"
-         width="1024">
-    <icon follows="right|bottom"
-      image_name="Resize_Corner"
-      right="-1"
-      name="resize_corner"
-      width="11"
-      bottom="-1"
-      height="11" />
-  </panel>
-  <view top="0"
-        left="0"
-        width="1024"
-        height="768"
-        name="hint_holder"
-        mouse_opaque="false"
-        follows="all"/>
-  <panel top="0"
-         follows="all"
-         height="768"
-         mouse_opaque="true"
-         name="progress_view"
-         filename="panel_progress.xml"
-         class="progress_view"
-         width="1024"
-         visible="false"/>
-  <menu_holder top="0"
-               follows="all"
-               height="768"
-               mouse_opaque="false"
-               name="Menu Holder"
-               width="1024"/>
-  <tooltip_view top="0"
-                follows="all"
-                height="768"
-                mouse_opaque="false"
-                name="tooltip view"
-                tab_group="-2"
-                width="1024"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/en/menu_add_wearable_gear.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml
deleted file mode 100644
index 80cf365c4625e7dc2d7dd27b5789e68b2ffe6e64..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_attachment_other.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu
- layout="topleft"
- name="Avatar Pie">
-    <menu_item_call
-     label="View Profile"
-     name="Profile...">
-        <menu_item_call.on_click
-         function="ShowAgentProfile"
-         parameter="hit object" />
-    </menu_item_call>
-   <menu_item_call
-     enabled="false"
-     label="Add Friend"
-     name="Add Friend">
-        <menu_item_call.on_click
-         function="Avatar.AddFriend" />
-        <menu_item_call.on_enable
-         function="Avatar.EnableAddFriend" />
-    </menu_item_call>
-    <menu_item_call
-     label="IM"
-     name="Send IM...">
-        <menu_item_call.on_click
-         function="Avatar.SendIM" />
-    </menu_item_call>
-  <menu_item_call
-     label="Call"
-     name="Call">
-    <menu_item_call.on_click
-     function="Avatar.Call" />
-    <menu_item_call.on_enable
-     function="Avatar.EnableCall" />
-  </menu_item_call>
-   <menu_item_separator />
-    <menu_item_call
-     enabled="false"
-     label="Block"
-     name="Avatar Mute">
-        <menu_item_call.on_click
-         function="Avatar.Mute" />
-        <menu_item_call.on_enable
-         function="Avatar.EnableMute" />
-    </menu_item_call>
-    <menu_item_call
-     label="Report"
-     name="abuse">
-        <menu_item_call.on_click
-         function="Avatar.ReportAbuse" />
-    </menu_item_call>
-        <menu_item_call
-         label="Freeze"
-         name="Freeze...">
-            <menu_item_call.on_click
-             function="Avatar.Freeze" />
-            <menu_item_call.on_visible
-             function="Avatar.EnableFreezeEject"/>
-        </menu_item_call>
-        <menu_item_call
-         label="Eject"
-         name="Eject...">
-            <menu_item_call.on_click
-             function="Avatar.Eject" />
-            <menu_item_call.on_visible
-             function="Avatar.EnableFreezeEject"/>
-        </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="Zoom In"
-          name="Zoom In">
-        <menu_item_call.on_click
-           function="Tools.LookAtSelection"
-           parameter="zoom" />
-    </menu_item_call>
-   <menu_item_separator />
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/en/menu_attachment_self.xml
deleted file mode 100644
index 542a7dc7dc0f9df8b2c48a5acc6baa8ac2066da1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_attachment_self.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu
- layout="topleft"
- name="Attachment Pie">
-  <menu_item_call
-   enabled="false"
-   label="Touch"
-   layout="topleft"
-   name="Attachment Object Touch">
-    <menu_item_call.on_click
-     function="Object.Touch" />
-    <menu_item_call.on_enable
-     function="Object.EnableTouch"
-     name="EnableTouch"/>
-  </menu_item_call>
-  <menu_item_call
-   enabled="false"
-   label="Detach"
-   layout="topleft"
-   name="Detach">
-    <menu_item_call.on_click
-     function="Attachment.Detach" />
-    <menu_item_call.on_enable
-     function="Attachment.EnableDetach" />
-  </menu_item_call>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/en/menu_avatar_icon.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_avatar_icon.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml
deleted file mode 100644
index 2c81b5a7782cf95f5ab879203b85a3895203dd35..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_avatar_other.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu
- layout="topleft"
- name="Avatar Pie">
-    <menu_item_call
-     label="View Profile"
-     name="Profile...">
-        <menu_item_call.on_click
-         function="ShowAgentProfile"
-         parameter="hit object" />
-    </menu_item_call>
-   <menu_item_call
-     enabled="false"
-     label="Add Friend"
-     name="Add Friend">
-        <menu_item_call.on_click
-         function="Avatar.AddFriend" />
-        <menu_item_call.on_enable
-         function="Avatar.EnableAddFriend" />
-    </menu_item_call>
-    <menu_item_call
-     label="IM"
-     name="Send IM...">
-        <menu_item_call.on_click
-         function="Avatar.SendIM" />
-    </menu_item_call>
-  <menu_item_call
-     label="Call"
-     name="Call">
-    <menu_item_call.on_click
-     function="Avatar.Call" />
-    <menu_item_call.on_enable
-     function="Avatar.EnableCall" />
-  </menu_item_call>
-   <menu_item_separator />
-    <menu_item_call
-     enabled="false"
-     label="Block"
-     name="Avatar Mute">
-        <menu_item_call.on_click
-         function="Avatar.Mute" />
-        <menu_item_call.on_enable
-         function="Avatar.EnableMute" />
-    </menu_item_call>
-    <menu_item_call
-     label="Report"
-     name="abuse">
-        <menu_item_call.on_click
-         function="Avatar.ReportAbuse" />
-    </menu_item_call>
-        <menu_item_call
-         label="Freeze"
-         name="Freeze...">
-            <menu_item_call.on_click
-             function="Avatar.Freeze" />
-            <menu_item_call.on_visible
-             function="Avatar.EnableFreezeEject"/>
-        </menu_item_call>
-        <menu_item_call
-         label="Eject"
-         name="Eject...">
-            <menu_item_call.on_click
-             function="Avatar.Eject" />
-            <menu_item_call.on_visible
-             function="Avatar.EnableFreezeEject"/>
-        </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="Zoom In"
-          name="Zoom In">
-        <menu_item_call.on_click
-           function="Tools.LookAtSelection"
-           parameter="zoom" />
-    </menu_item_call>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/en/menu_avatar_self.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_avatar_self.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/en/menu_bottomtray.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_bottomtray.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/en/menu_cof_attachment.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_attachment.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/en/menu_cof_body_part.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_body_part.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/en/menu_cof_clothing.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_clothing.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/en/menu_cof_gear.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_cof_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_edit.xml b/indra/newview/skins/minimal/xui/en/menu_edit.xml
deleted file mode 100644
index 747eb3fc6a6b17003beaa15d9d1377e2745caf5f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_edit.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu create_jump_keys="true"
-      label="Edit"
-      name="Edit"
-      visible="false">
-  <menu_item_call
-   label="Undo"
-   name="Undo"
-   shortcut="control|Z">
-    <menu_item_call.on_click
-     function="Edit.Undo" />
-    <menu_item_call.on_enable
-     function="Edit.EnableUndo" />
-  </menu_item_call>
-  <menu_item_call
-   label="Redo"
-   name="Redo"
-   shortcut="control|Y">
-    <menu_item_call.on_click
-     function="Edit.Redo" />
-    <menu_item_call.on_enable
-     function="Edit.EnableRedo" />
-  </menu_item_call>
-  <menu_item_separator/>
-  <menu_item_call
-   label="Cut"
-   name="Cut"
-   shortcut="control|X">
-    <menu_item_call.on_click
-     function="Edit.Cut" />
-    <menu_item_call.on_enable
-     function="Edit.EnableCut" />
-  </menu_item_call>
-  <menu_item_call
-   label="Copy"
-   name="Copy"
-   shortcut="control|C">
-    <menu_item_call.on_click
-     function="Edit.Copy" />
-    <menu_item_call.on_enable
-     function="Edit.EnableCopy" />
-  </menu_item_call>
-  <menu_item_call
-   label="Paste"
-   name="Paste"
-   shortcut="control|V">
-    <menu_item_call.on_click
-     function="Edit.Paste" />
-    <menu_item_call.on_enable
-     function="Edit.EnablePaste" />
-  </menu_item_call>
-  <menu_item_call
-   label="Delete"
-   name="Delete"
-   allow_key_repeat="true" 
-   shortcut="Del">
-    <menu_item_call.on_click
-     function="Edit.Delete" />
-    <menu_item_call.on_enable
-     function="Edit.EnableDelete" />
-  </menu_item_call>
-  <menu_item_call
-   label="Duplicate"
-   name="Duplicate"
-   shortcut="control|D">
-    <menu_item_call.on_click
-     function="Edit.Duplicate" />
-    <menu_item_call.on_enable
-     function="Edit.EnableDuplicate" />
-  </menu_item_call>
-  <menu_item_separator/>
-  <menu_item_call
-   label="Select All"
-   name="Select All"
-   shortcut="control|A">
-    <menu_item_call.on_click
-     function="Edit.SelectAll" />
-    <menu_item_call.on_enable
-     function="Edit.EnableSelectAll" />
-  </menu_item_call>
-  <menu_item_call
-   label="Deselect"
-   name="Deselect"
-   shortcut="control|E">
-    <menu_item_call.on_click
-     function="Edit.Deselect" />
-    <menu_item_call.on_enable
-     function="Edit.EnableDeselect" />
-  </menu_item_call>
-</menu>
\ No newline at end of file
diff --git a/indra/newview/skins/minimal/xui/en/menu_favorites.xml b/indra/newview/skins/minimal/xui/en/menu_favorites.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_favorites.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/en/menu_gesture_gear.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_gesture_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_group_plus.xml b/indra/newview/skins/minimal/xui/en/menu_group_plus.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_group_plus.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/en/menu_hide_navbar.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_hide_navbar.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/en/menu_im_well_button.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_im_well_button.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/en/menu_imchiclet_adhoc.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/en/menu_imchiclet_group.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/en/menu_imchiclet_p2p.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml
deleted file mode 100644
index a11e367d6626b6ba4332c1362e6af181e247cb4d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,125 +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_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>  
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_object_gear.xml
deleted file mode 100644
index 8ec360a604c6891126b1394050dea6a6bc5038e5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,50 +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="Touch"
-   layout="topleft"
-   enabled="true"
-   name="touch">    
-    <menu_item_call.on_click
-     function="InspectObject.Touch"/>
-    <menu_item_call.on_visible
-     function="Object.EnableTouch" />
-  </menu_item_call>
-  <menu_item_call
-  label="Sit"
-  layout="topleft"
-  name="sit">
-    <menu_item_call.on_click
-     function="InspectObject.Sit"/>
-    <menu_item_call.on_visible
-     function="Object.EnableSit"/>
-  </menu_item_call>
-  <menu_item_call
-   label="Report"
-   layout="topleft"
-   name="report">
-    <menu_item_call.on_click
-     function="Object.ReportAbuse" />
-  </menu_item_call>
-  <menu_item_call
-   label="Block"
-   layout="topleft"
-   name="block">
-    <menu_item_call.on_click
-     function="Object.Mute" />
-    <menu_item_call.on_visible
-     function="Object.EnableMute" />
-  </menu_item_call>
-  <menu_item_call
-    label="Zoom In"
-    layout="topleft"
-   name="zoom_in">
-    <menu_item_call.on_click
-     function="InspectObject.ZoomIn" />
-  </menu_item_call>    
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml
deleted file mode 100644
index ae8b640d2694e47c539616436b495d27956a5fe1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,49 +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>
-  <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 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/minimal/xui/en/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/en/menu_inv_offer_chiclet.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inventory.xml b/indra/newview/skins/minimal/xui/en/menu_inventory.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inventory.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/en/menu_inventory_add.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inventory_add.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/en/menu_inventory_gear_default.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_land.xml b/indra/newview/skins/minimal/xui/en/menu_land.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_land.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_landmark.xml b/indra/newview/skins/minimal/xui/en/menu_landmark.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_landmark.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_login.xml b/indra/newview/skins/minimal/xui/en/menu_login.xml
deleted file mode 100644
index 62dbce3f56557d38034d2f34dbdb618f2b9464ac..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_login.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu_bar/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_mini_map.xml b/indra/newview/skins/minimal/xui/en/menu_mini_map.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_mini_map.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_navbar.xml b/indra/newview/skins/minimal/xui/en/menu_navbar.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_navbar.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/en/menu_nearby_chat.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_nearby_chat.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/en/menu_notification_well_button.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_notification_well_button.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_object.xml b/indra/newview/skins/minimal/xui/en/menu_object.xml
deleted file mode 100644
index 888ce42cf1690132e1ac7a0d831dc2ef6a99939f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_object.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu
- layout="topleft"
- name="Object Pie">
-   <menu_item_call
-     enabled="false"
-     label="Sit Here"
-     name="Object Sit">
-        <menu_item_call.on_click
-         function="Object.SitOrStand" />
-        <menu_item_call.on_enable
-         function="Object.EnableSit" />
-   </menu_item_call>
-   <menu_item_call
-     enabled="false"
-     label="Stand Up"
-     name="Object Stand Up">
-        <menu_item_call.on_click
-         function="Object.SitOrStand" />
-        <menu_item_call.on_enable
-         function="Object.EnableStandUp" />
-   </menu_item_call>
-  <menu_item_call
-       label="Zoom In"
-       name="Zoom In">
-    <menu_item_call.on_click
-     function="Object.ZoomIn" />
-  </menu_item_call>
-  <menu_item_call
-    enabled="false"
-    label="Touch"
-    name="Object Touch">
-    <menu_item_call.on_click
-     function="Object.Touch" />
-    <menu_item_call.on_enable
-     function="Object.EnableTouch"
-     name="EnableTouch"
-     parameter="Touch" />
-  </menu_item_call>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_object_icon.xml b/indra/newview/skins/minimal/xui/en/menu_object_icon.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_object_icon.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/en/menu_outfit_gear.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_outfit_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/en/menu_outfit_tab.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_outfit_tab.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_participant_list.xml b/indra/newview/skins/minimal/xui/en/menu_participant_list.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_participant_list.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_friends_view_sort.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_groups.xml b/indra/newview/skins/minimal/xui/en/menu_people_groups.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_groups.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_groups_view_sort.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml
deleted file mode 100644
index 1840ebd491f57dfd403700d6977f4add16ba6db2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_nearby.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu
- layout="topleft"
- name="Avatar Context Menu">
-	<menu_item_call
-     label="View Profile"
-     layout="topleft"
-     name="View Profile">
-		<menu_item_call.on_click
-         function="Avatar.Profile" />
-	</menu_item_call>
-	<menu_item_call
-     label="Add Friend"
-     layout="topleft"
-     name="Add Friend">
-		<menu_item_call.on_click
-         function="Avatar.AddFriend" />
-		<menu_item_call.on_enable
-         function="Avatar.EnableItem"
-         parameter="can_add" />
-	</menu_item_call>
-	<menu_item_call
-     label="Remove Friend"
-     layout="topleft"
-     name="Remove Friend">
-		<menu_item_call.on_click
-         function="Avatar.RemoveFriend" />
-		<menu_item_call.on_enable
-         function="Avatar.EnableItem"
-         parameter="can_delete" />
-	</menu_item_call>
-	<menu_item_call
-     label="IM"
-     layout="topleft"
-     name="IM">
-		<menu_item_call.on_click
-         function="Avatar.IM" />
-	</menu_item_call>
-  <menu_item_call
-     label="Call"
-     layout="topleft"
-     name="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_check
-     label="Block/Unblock"
-     layout="topleft"
-     name="Block/Unblock">
-		<menu_item_check.on_click
-         function="Avatar.BlockUnblock" />
-		<menu_item_check.on_check
-         function="Avatar.CheckItem"
-         parameter="is_blocked" />
-		<menu_item_check.on_enable
-         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>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/en/menu_people_nearby_multiselect.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/en/menu_people_recent_view_sort.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_picks.xml b/indra/newview/skins/minimal/xui/en/menu_picks.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_picks.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/en/menu_picks_plus.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_picks_plus.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_place.xml b/indra/newview/skins/minimal/xui/en/menu_place.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_place.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/en/menu_place_add_button.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_place_add_button.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/en/menu_places_gear_folder.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/en/menu_places_gear_landmark.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/en/menu_profile_overflow.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_profile_overflow.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/en/menu_save_outfit.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_save_outfit.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/en/menu_script_chiclet.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_script_chiclet.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_slurl.xml b/indra/newview/skins/minimal/xui/en/menu_slurl.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_slurl.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/en/menu_teleport_history_gear.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/en/menu_teleport_history_item.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/en/menu_teleport_history_tab.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_text_editor.xml b/indra/newview/skins/minimal/xui/en/menu_text_editor.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_text_editor.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/en/menu_topinfobar.xml
deleted file mode 100644
index d3d9e2ef8af7f00c8ada970a219847aedeee27ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_topinfobar.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu visible="false"/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_agent.xml b/indra/newview/skins/minimal/xui/en/menu_url_agent.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_agent.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_group.xml b/indra/newview/skins/minimal/xui/en/menu_url_group.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_group.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_http.xml b/indra/newview/skins/minimal/xui/en/menu_url_http.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_http.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/en/menu_url_inventory.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_inventory.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_map.xml b/indra/newview/skins/minimal/xui/en/menu_url_map.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_map.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/en/menu_url_objectim.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_objectim.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/en/menu_url_parcel.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_parcel.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/en/menu_url_slapp.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_slapp.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/en/menu_url_slurl.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_slurl.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/en/menu_url_teleport.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_url_teleport.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_viewer.xml b/indra/newview/skins/minimal/xui/en/menu_viewer.xml
deleted file mode 100644
index cd83ea4e992f429d2535e0977a82bc7aab0ea952..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_viewer.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<menu_bar
- bg_visible="false"
- follows="left|top|right"
- name="Main Menu">
-    <menu
-     create_jump_keys="true"
-     label="Help"
-     name="Help"
-     tear_off="true">
-        <menu_item_call
-         label="[SECOND_LIFE] Help"
-         name="Second Life Help"
-         shortcut="F1">
-            <menu_item_call.on_click
-             function="ShowHelp"
-             parameter="f1_help" />
-        </menu_item_call>
-    </menu>
-    <menu
-     create_jump_keys="true"
-     label="Advanced"
-     name="Advanced"
-     tear_off="true"
-     visible="false">
-        <menu
-         create_jump_keys="true"
-         label="Shortcuts"
-         name="Shortcuts"
-         tear_off="true"
-         visible="false">
-            <menu_item_check
-             label="Fly"
-             name="Fly"
-             shortcut="Home">
-                <menu_item_check.on_check
-                 function="Agent.getFlying" />
-                <menu_item_check.on_click
-                 function="Agent.toggleFlying" />
-                <menu_item_check.on_enable
-                 function="Agent.enableFlying" />
-            </menu_item_check>
-            <menu_item_call
-             label="Close Window"
-             name="Close Window"
-             shortcut="control|W">
-                <menu_item_call.on_click
-                 function="File.CloseWindow" />
-                <menu_item_call.on_enable
-                 function="File.EnableCloseWindow" />
-            </menu_item_call>
-            <menu_item_call
-             label="Close All Windows"
-             name="Close All Windows"
-             shortcut="control|shift|W">
-                <menu_item_call.on_click
-                 function="File.CloseAllWindows" />
-                <menu_item_call.on_enable
-                 function="File.EnableCloseAllWindows" />
-            </menu_item_call>
-
-            <menu_item_call
-             label="Reset View"
-             name="Reset View"
-             shortcut="Esc">
-                <menu_item_call.on_click
-                 function="View.ResetView" />
-            </menu_item_call>
-        </menu> <!--Shortcuts-->
-    </menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/en/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/en/menu_wearable_list_item.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/en/menu_wearing_gear.xml
deleted file mode 100644
index 28c4762eaa349321958cbb1894c89c999cf1efb1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_wearing_gear.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<toggleable_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/en/menu_wearing_tab.xml
deleted file mode 100644
index fb19c5eb2cf851786cb00887e96c7ab1c130b167..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/menu_wearing_tab.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<context_menu/>
diff --git a/indra/newview/skins/minimal/xui/en/notification_visibility.xml b/indra/newview/skins/minimal/xui/en/notification_visibility.xml
deleted file mode 100644
index bdd3c3d4a473626caabcbedea83e3ae060f61af9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/notification_visibility.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" ?>
-<notification_visibility>
-  <respond name="VoiceInviteGroup" response="Decline"/>
-
-  <!-- group and voice are disabled features -->
-  <hide tag="group"/>
-
-  <!-- no spammy scripts -->
-  <!-- <hide name="ScriptDialog"/> -->
-
-  <!-- hints pertaining to UI we don't show -->
-  <hide name="FirstBalanceIncrease"/>
-  <hide name="FirstInventory"/>
-  <hide name="HintSidePanel"/>
-  <hide name="HintMove"/>
-  <hide name="HintSpeak"/>
-  <hide name="HintDisplayName"/>
-  <hide name="HintInventory"/>
-  <hide name="HintLindenDollar"/>
-
-  <!-- spam from servers, such as "Autopilot cancelled" -->
-  <hide name="SystemMessageTip"/>
-  
-  <!-- show everything else -->
-  <show/>
-</notification_visibility>
-
diff --git a/indra/newview/skins/minimal/xui/en/notifications.xml b/indra/newview/skins/minimal/xui/en/notifications.xml
deleted file mode 100644
index 7b7cdb5fc6e4be81faa5307fbc00bddbab8ed689..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/notifications.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" ?>
-<notifications>
-  <notification
- icon="notify.tga"
- name="UserGiveItem"
- type="offer">
-    [NAME_SLURL] is offering you [ITEM_SLURL].  Using this item requires you to switch to Advanced mode where you will find the item in your Inventory. To switch to Advanced mode, quit and restart this application and change the mode setting on the login screen.
-    <form name="form">
-      <button
-       index="4"
-       name="Show"
-       text="Keep Item"/>
-      <button
-       index="1"
-       name="Discard"
-       text="Reject Item"/>
-      <button
-       index="2"
-       name="Mute"
-       text="Block User"/>
-    </form>
-  </notification>
-  <notification
-   icon="notify.tga"
-   name="ObjectGiveItem"
-   type="offer">
-    An object named &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; owned by [NAME_SLURL] is offering you &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;.  Using this item requires you to switch to Advanced mode where you will find the item in your Inventory. To switch to Advanced mode, quit and restart this application and change the mode setting on the login screen.
-    <form name="form">
-      <button
-       index="0"
-       name="Keep"
-       text="Keep Item"/>
-      <button
-       index="1"
-       name="Discard"
-       text="Reject Item"/>
-      <button
-       index="2"
-       name="Mute"
-       text="Block Object"/>
-    </form>
-  </notification>
-
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml
deleted file mode 100644
index 39d1a90850fdca6c3e74164eaa3b9b21660480b3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,81 +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"
-         user_resize="false">
-            <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"
-         user_resize="false"
-         visible="false">
-        <button
-         follows="all"
-         height="20"
-         label="Call"
-         name="call_btn"
-         width="130"
-         top="5" />
-      </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"
-       user_resize="false"
-       visible="false">
-        <button
-         follows="all"
-         height="20"
-         label="Leave Call"
-         name="end_call_btn"
-         top="5"/>
-      </layout_panel>
-    </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
deleted file mode 100644
index d722c54081a96d8762e0ca39826805ccde73d4a9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/panel_bottomtray.xml
+++ /dev/null
@@ -1,557 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- bg_alpha_color="DkGray"
- bg_opaque_color="DkGray"
- chrome="true"
- follows="left|bottom|right"
- height="33"
- layout="topleft"
- left="0"
- name="bottom_tray"
- focus_root="true"
- top="28"
- width="1310">
-	<string
-     name="DragIndicationImageName"
-     value="Accordion_ArrowOpened_Off" />
-	<string
-     name="SpeakBtnToolTip"
-     value="Turns microphone on/off" />
-	<string
-     name="VoiceControlBtnToolTip"
-     value="Shows/hides voice control panel" />
-	<layout_stack
-     border_size="0"
-     clip="false"
-     follows="all"
-     height="28"
-     layout="topleft"
-     left="0"
-     mouse_opaque="false"
-     name="toolbar_stack"
-     orientation="horizontal"
-     top="0"
-     width="1310">
-		<layout_panel
-         auto_resize="false"
-         user_resize="false"
-         min_width="2"
-         width="2" />
-		<layout_panel
-         auto_resize="false"
-         layout="topleft"
-         max_width="320"
-         min_width="214"
-         height="28"
-         mouse_opaque="false"
-		 name="chat_bar_layout_panel"
-         user_resize="true"
-         width="312" >
-			<panel
-		   name="chat_bar"
-			  filename="panel_nearby_chat_bar.xml"
-			  left="0"
-			  height="28"
-			  width="306"
-			  top="0"
-			  mouse_opaque="false"
-			  follows="left|right"
-          />
-		</layout_panel>
-    <layout_panel
-        auto_resize="false"
-        follows="left|right"
-        height="28"
-        layout="topleft"
-        min_height="28"
-        min_width="35"
-        mouse_opaque="false"
-        name="speak_panel"
-        top_delta="0"
-        user_resize="false"
-        width="85">
-      <button
-       follows="left|right"
-       height="23"
-       layout="topleft"
-       label="Speak"
-       left="0"
-       name="speak_btn"
-       tool_tip="Turn your microphone on and off"
-       pad_right="30"
-       halign="center"
-       use_ellipses="true"
-       tab_stop="true"
-    is_toggle="true"
-    image_selected="Speak_Btn_Selected_Press"
-    image_unselected="Speak_Btn_Off"
-		 image_pressed="Speak_Btn_Selected_Press"
-		 image_pressed_selected="Speak_Btn_Selected_Press"
-       top="5"
-       width="85">
-
-        <commit_callback
-				  function="ToggleSpeak"
-				  parameter="f1_help" />
-      </button>
-    </layout_panel>
-
-    <layout_panel
-          auto_resize="false"
-          follows="left|right"
-          height="28"
-          layout="topleft"
-          min_height="28"
-          min_width="20"
-          mouse_opaque="false"
-          name="speak_flyout_panel"
-          top_delta="0"
-          user_resize="false"
-          width="26">
-      <button
-     follows="left|right"
-     width="20"
-        top="5"
-     left="0"
-     height="23"
-     name="flyout_btn"
-     label=""
-     tab_stop="false"
-     tool_tip="Change your sound preferences"
-     is_toggle="true"
-     image_disabled="ComboButton_UpOff"
-     image_unselected="ComboButton_UpOff"
-     image_selected="ComboButton_On"
-     image_pressed="ComboButton_UpSelected"
-     image_pressed_selected="ComboButton_Selected">
-        <init_callback
-         function="Button.SetDockableFloaterToggle"
-         parameter="sound_devices" />
-      </button>
-
-    </layout_panel>
-
-    <layout_panel
-         auto_resize="false"
-         follows="right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         min_width="65"
-         mouse_opaque="false"
-         name="gesture_panel"
-         top_delta="0"
-         user_resize="false"
-         width="88">
-			<gesture_combo_list
-             follows="left|right"
-             height="23"
-             label="Gesture"
-             layout="topleft"
-             get_more="false"
-             view_all="false"
-             left="0"
-             name="Gesture"
-             tool_tip="Make your avatar do things"
-             top="5"
-             width="82">
-				<combo_button
-                 pad_right="10"
-                 can_drag="false"
-                 use_ellipses="true" />
-				<combo_list
-                 page_lines="17" />
-			</gesture_combo_list>
-		</layout_panel>
-		<layout_panel
-         auto_resize="false"
-         follows="left|right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         min_width="52"
-         mouse_opaque="false"
-         name="cam_panel"
-         user_resize="false"
-         width="86">
-			<bottomtray_button
-              can_drag="false"
-             follows="left|right"
-             height="23"
-             image_pressed="PushButton_Press"
-             image_pressed_selected="PushButton_Selected_Press"
-             image_selected="PushButton_Selected_Press"
-             is_toggle="true"
-             label="View"
-             layout="topleft"
-             left="0"
-             name="camera_btn"
-             tool_tip="Control your camera angle"
-             top="5"
-             use_ellipses="true"
-             width="80">
-				<init_callback
-                 function="Button.SetDockableFloaterToggle"
-                 parameter="camera" />
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
-         auto_resize="false"
-         follows="left|right"
-         height="28"
-         layout="topleft"
-         min_width="8"
-         name="splitter_panel_1"
-         user_resize="false"
-         width="8">
-			<icon
-             follows="left|bottom"
-             height="18"
-             width="2"
-             left="0"
-             image_name="Button_Separator"
-             name="separator"
-             top="7"/>
-		</layout_panel>
-		<layout_panel
-		  auto_resize="false"
-		  follows="left|right"
-		  height="28"
-		  layout="topleft"
-		  min_height="28"
-		  min_width="83"
-		  mouse_opaque="false"
-		  name="destinations_panel"
-		  user_resize="false"
-		  width="106">
-			<bottomtray_button
-			 can_drag="false"
-			follows="left|right"
-			height="23"
-			image_pressed="PushButton_Press"
-			image_pressed_selected="PushButton_Selected_Press"
-			image_selected="PushButton_Selected_Press"
-			label="Destinations"
-			layout="topleft"
-			left="0"
-			name="destination_btn"
-			tool_tip="Travel through Second Life"
-			top="5"
-			is_toggle="true"
-			use_ellipses="true"
-			width="100">
-				<bottomtray_button.commit_callback
-				  function="Destination.show" />
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
-		  auto_resize="false"
-		  follows="left|right"
-		  height="28"
-		  layout="topleft"
-		  min_height="28"
-		  min_width="73"
-		  mouse_opaque="false"
-		  name="avatar_panel"
-		  user_resize="false"
-		  width="106">
-			<bottomtray_button
-			 can_drag="false"
-			follows="left|right"
-			height="23"
-			image_pressed="PushButton_Press"
-			image_pressed_selected="PushButton_Selected_Press"
-			image_selected="PushButton_Selected_Press"
-			label="My Avatar"
-			layout="topleft"
-			left="0"
-			name="avatar_btn"
-			top="5"
-			is_toggle="true"
-			tool_tip="Change your appearance"
-			use_ellipses="true"
-			width="100">
-				<bottomtray_button.commit_callback
-				  function="Avatar.show" />
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
-		  auto_resize="false"
-		  follows="left|right"
-		  height="28"
-		  layout="topleft"
-		  min_width="8"
-		  name="splitter_panel_2"
-		  user_resize="false"
-		  width="8">
-			<icon
-             follows="left|bottom"
-             height="18"
-             width="2"
-             left="0"
-             image_name="Button_Separator"
-             name="separator"
-             top="7"/>
-		</layout_panel>
-		<layout_panel
-         auto_resize="false"
-         follows="right"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         min_width="65"
-         mouse_opaque="false"
-         name="people_panel"
-         top_delta="0"
-         user_resize="false"
-         width="106">
-			<bottomtray_button
-			   can_drag="false"
-			  follows="left|right"
-			  height="23"
-			  image_pressed="PushButton_Press"
-			  image_pressed_selected="PushButton_Selected_Press"
-			  image_selected="PushButton_Selected_Press"
-			  label="People"
-			  layout="topleft"
-			  left="0"
-			  name="show_people_button"
-			  tool_tip="Find people in Second Life"
-			  top="5"
-			  is_toggle="true"
-			  use_ellipses="true"
-			  width="100">
-				<bottomtray_button.commit_callback
-				  function="ShowSidetrayPanel"
-				 parameter="panel_people" />
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
-		   auto_resize="false"
-		   follows="right"
-		   height="28"
-		   layout="topleft"
-		   min_height="28"
-		   min_width="65"
-		   mouse_opaque="false"
-		   name="profile_panel"
-		   top_delta="0"
-		   user_resize="false"
-		   width="106">
-			<bottomtray_button
-			   can_drag="false"
-			  follows="left|right"
-			  height="23"
-			  image_pressed="PushButton_Press"
-			  image_pressed_selected="PushButton_Selected_Press"
-			  image_selected="PushButton_Selected_Press"
-			  label="Profile"
-			  layout="topleft"
-			  left="0"
-			  name="show_profile_btn"
-			  tool_tip="View and edit your Profile"
-			  is_toggle="true"
-			  top="5"
-			  use_ellipses="true"
-			  width="100">
-				<bottomtray_button.commit_callback
-				  function="ToggleAgentProfile"
-				  parameter="agent"/>
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
-		   auto_resize="false"
-		   follows="right"
-		   height="28"
-		   layout="topleft"
-		   min_height="28"
-		   min_width="65"
-		   mouse_opaque="false"
-		   name="howto_panel"
-		   top_delta="0"
-		   user_resize="false"
-		   width="106">
-			<bottomtray_button
-			   can_drag="false"
-			  follows="left|right"
-			  height="23"
-			  image_pressed="PushButton_Press"
-			  image_pressed_selected="PushButton_Selected_Press"
-			  image_selected="PushButton_Selected_Press"
-			  label="How To"
-			  layout="topleft"
-			  left="0"
-			  name="show_help_btn"
-			  tool_tip="View Second Life help info"
-			  is_toggle="true"
-			  top="5"
-			  use_ellipses="true"
-			  width="100">
-				<bottomtray_button.commit_callback
-				  function="ToggleHelp"
-				  parameter="f1_help" />
-			</bottomtray_button>
-		</layout_panel>
-		<layout_panel
-		   follows="left|right"
-		   height="30"
-		   layout="topleft"
-		   min_width="95"
-		   mouse_opaque="false"
-		   name="chiclet_list_panel"
-		   top="0"
-		   user_resize="false"
-		   width="189">
-			<!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same
-as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. EXT-991-->
-			<chiclet_panel
-             chiclet_padding="4"
-             follows="left|right"
-             height="24"
-             layout="topleft"
-             left="1"
-             min_width="95"
-             mouse_opaque="false"
-             name="chiclet_list"
-             top="7"
-             width="189">
-				<button
-                 auto_resize="true"
-                 follows="right"
-                 height="29"
-                 image_hover_selected="SegmentedBtn_Left_Over"
-                 image_hover_unselected="SegmentedBtn_Left_Over"
-                 image_overlay="Arrow_Small_Left"
-                 image_pressed="SegmentedBtn_Left_Press"
-                 image_pressed_selected="SegmentedBtn_Left_Press"
-                 image_selected="SegmentedBtn_Left_Off"
-                 image_unselected="SegmentedBtn_Left_Off"
-                 layout="topleft"
-                 name="chicklet_left_scroll_button"
-                 tab_stop="false"
-                 top="-28"
-                 visible="false"
-                 width="7" />
-				<button
-                 auto_resize="true"
-                 follows="right"
-                 height="29"
-                 image_hover_selected="SegmentedBtn_Right_Over"
-                 image_hover_unselected="SegmentedBtn_Right_Over"
-                 image_overlay="Arrow_Small_Right"
-                 image_pressed="SegmentedBtn_Right_Press"
-                 image_pressed_selected="SegmentedBtn_Right_Press"
-                 image_selected="SegmentedBtn_Right_Off"
-                 image_unselected="SegmentedBtn_Right_Off"
-                 layout="topleft"
-                 name="chicklet_right_scroll_button"
-                 tab_stop="false"
-                 top="-28"
-                 visible="false"
-                 width="7" />
-			</chiclet_panel>
-		</layout_panel>
-		<layout_panel auto_resize="false"
-                      user_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"
-         user_resize="false"
-         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="true"
-                 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"
-         height="28"
-         layout="topleft"
-         min_height="28"
-         min_width="37"
-         name="notification_well_panel"
-         top="0"
-         user_resize="false"
-         width="37">
-			<chiclet_notification
-             follows="right"
-             height="23"
-             layout="topleft"
-             left="0"
-             max_displayed_count="99"
-             name="notification_well"
-             top="5"
-             width="35">
-				<button
-                 auto_resize="true"
-                 bottom_pad="3"
-                 follows="right"
-                 halign="center"
-                 height="23"
-                 image_overlay="Notices_Unread"
-                 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"
-                 tool_tip="Notifications"
-                 width="34">
-					<init_callback
-                     function="Button.SetDockableFloaterToggle"
-                     parameter="notification_well_window" />
-				</button>
-			</chiclet_notification>
-		</layout_panel>
-		<layout_panel
-		   auto_resize="false"
-		   user_resize="false"
-		   min_width="4"
-		   name="DUMMY2"
-		   width="8" />
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_group_control_panel.xml
deleted file mode 100644
index abddc59296658916041ebaa2944dbe9368785f20..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/panel_group_control_panel.xml
+++ /dev/null
@@ -1,79 +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"
-         user_resize="false">
-            <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="end_call_btn_panel"
-         user_resize="false"
-         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"
-         user_resize="false"
-         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/minimal/xui/en/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
deleted file mode 100644
index 2cb77bcdf3e9c1f4c027f66098fec47943b19efa..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
+++ /dev/null
@@ -1,194 +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"
-         user_resize="false">
-            <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"
-         user_resize="false">
-            <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"
-         user_resize="false">
-            <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="call_btn_panel"
-           user_resize="false">
-            <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"
-         user_resize="false"
-         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="block_btn_panel"
-         user_resize="false">
-            <button
-             follows="left|top|right"
-             height="23"
-             label="Block"
-             name="block_btn"
-             width="140" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="25"
-         layout="topleft"
-         min_height="25"
-         width="140"
-         name="unblock_btn_panel"
-         user_resize="false"
-         visible="false">
-            <button
-             follows="left|top|right"
-             height="23"
-             label="Unblock"
-             name="unblock_btn"
-             width="140" />
-        </layout_panel>
-        <layout_panel
-         auto_resize="false"
-         follows="top|left|right"
-         height="25"
-         layout="topleft"
-         min_height="54"
-         width="140"
-         name="volume_ctrl_panel"
-         visible="false" 
-         user_resize="false">
-            <slider
-             follows="top|left"
-             height="23"
-             increment="0.01"
-             left="0"
-             max_val="0.95"
-             min_val="0.05"
-             name="volume_slider"
-             show_text="false"
-             tool_tip="Call Volume"
-             top_pad="32"
-             value="0.5"
-             width="125" />
-            <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" />
-        </layout_panel>
-        <layout_panel
-         mouse_opaque="false"
-         auto_resize="true"
-         follows="top|left"
-         height="0"
-         layout="topleft"
-         min_height="0"
-         width="140"
-         name="spacer"
-         user_resize="false" />
-    </layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_login.xml b/indra/newview/skins/minimal/xui/en/panel_login.xml
deleted file mode 100644
index 40d2df78e13a91ff2ee27515fe2038ec32b87b89..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/panel_login.xml
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
-follows="all"
-height="600"
-layout="topleft"
-left="0"
-name="panel_login"
-focus_root="true" 
-top="600"
- width="996">
-<panel.string
-     name="create_account_url">
-       http://join.secondlife.com/
-</panel.string>
-<string name="reg_in_client_url" translate="false">
-     http://secondlife.eniac15.lindenlab.com/reg-in-client/
-</string>
-<panel.string
-     name="forgot_password_url">
-       http://secondlife.com/account/request.php
-</panel.string>
-<!-- *NOTE: Custom resize logic for login_html in llpanellogin.cpp -->
-<web_browser
-  tab_stop="false" 
-trusted_content="true" 
-bg_opaque_color="Black"
-border_visible="false"
-bottom="600"
-follows="all"
-hide_loading="true"
-left="0"
-name="login_html"
-start_url=""
-top="0"
-height="600"
-     width="980" />
-<layout_stack
-follows="left|bottom|right"
-name="login_widgets"
-layout="topleft"
-orientation="horizontal"
-top="519"
-width="996"
-height="80">
-<layout_panel
-auto_resize="false"
-follows="left|bottom"
-name="login"
-layout="topleft"
-width="570"
-min_width="570"
-user_resize="false"
-height="80">
-<text
-follows="left|bottom"
-font="SansSerifSmall"
-height="16"
-name="username_text"
-top="20"
-left="20"
-width="150">
-Username:
-</text>
-  <combo_box
-  allow_text_entry="true"
-  follows="left|bottom"
-  height="22"
-  left_delta="0"
-  max_chars="128"
-  combo_editor.prevalidate_callback="ascii"
-  tool_tip="The username you chose when you registered, like bobsmith12 or Steller Sunshine"
-  top_pad="0"
-  name="username_combo"
-  width="178">
-    <combo_box.combo_button
-     visible ="false"/>
-    <combo_box.drop_down_button
-     visible ="false"/>
-  </combo_box>
-<text
-follows="left|bottom"
-font="SansSerifSmall"
-height="15"
-left_pad="-19"
-name="password_text"
-top="20"
-    width="150">
-       Password:
-</text>
-<line_editor
-follows="left|bottom"
-  height="22"
-left_delta="0" 
-  max_length_bytes="16"
-name="password_edit"
-is_password="true"
-select_on_focus="true"
-  top_pad="0"
-  width="135" />
- <check_box
-control_name="RememberPassword"
-follows="left|bottom"
-font="SansSerifSmall"
-height="16"
-label="Remember password"
-  top_pad="3"
-  name="remember_check"
- width="135" />
-<button
-  follows="left|bottom"
-  height="23"
-  image_unselected="PushButton_On"
-  image_selected="PushButton_On_Selected"
-  label="Log In"
-  label_color="White"
-  layout="topleft"
-  left_pad="10"
-  name="connect_btn"
-  top="35"
-  width="90" />
-  <text
-  follows="left|bottom"
-  font="SansSerifSmall"
-  height="15"
-  left_pad="10"
-  name="mode_selection_text"
-  top="20"
-  width="130">
-    Mode:
-  </text>
-  <combo_box
-  follows="left|bottom"
-  height="23"
-  max_chars="128"
-  tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
-  top_pad="0"
-  name="mode_combo"
-  width="110">
-    <combo_box.item
-      label="Basic"
-      name="Basic"
-      value="settings_minimal.xml" />
-    <combo_box.item
-      label="Advanced"
-      name="Advanced"
-      value="" />
-  </combo_box>
-</layout_panel>
-<layout_panel
-tab_stop="false"
-follows="right|bottom"
-name="links"
-width="205"
-min_width="205"
-user_resize="false"
-height="80">
-   <text
-follows="right|bottom"
-font="SansSerifSmall"
-text_color="EmphasisColor"
-halign="right"
-height="16"
-top="12"
-right="-10"
-name="create_new_account_text"
-  width="200">
-       Sign up
- </text>
-<text
-follows="right|bottom"
-font="SansSerifSmall"
-text_color="EmphasisColor"
-halign="right"
-height="16"
-name="forgot_password_text"
-top_pad="12"
-right="-10"
-  width="200">
-       Forgot your username or password?
-</text>
-<text
-follows="right|bottom"
-font="SansSerifSmall"
-text_color="EmphasisColor"
-halign="right"
-height="16"
-name="login_help"
-top_pad="2"
-right="-10"
-    width="200">
-       Need help logging in?   </text>
-<!--  <text
-    follows="right|bottom"
-    font="SansSerifSmall"
-    halign="right"
-    height="28"
-    top_pad="2"
-    name="channel_text"
-    width="180"
-    word_wrap="true">
-       [VERSION]
-   </text>-->
-   </layout_panel>
-</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/en/panel_navigation_bar.xml
deleted file mode 100644
index 73a85642741f4fb28e580c3bb867bb0cb9161753..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/panel_navigation_bar.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_opaque="true"
- background_visible="true"
- bg_opaque_color="MouseGray"
- follows="left|top|right"
- height="26"
- layout="topleft"
- name="navigation_bar"
- chrome="true"
- width="600">
-  <icon
-	 follows="all"
-	 image_name="NavBar_BG_NoFav_Bevel"
-	 mouse_opaque="false"
-	 name="bg_icon_no_fav_bevel"
-	 scale_image="true"
-	 visible="true"
-	 left="0"
-	 top="0"
-	 height="26"
-	 width="600"/>
-  <panel
-	 background_visible="false"
-	 follows="left|top|right"
-	 top="3"
-	 height="26"
-	 layout="topleft"
-	 name="navigation_panel"
-	 width="600">
-    <pull_button
-follows="left|top"
-direction="down"
-height="23"
-image_overlay="Arrow_Left_Off"
-image_bottom_pad="1"
-layout="topleft"
-left="10"
-name="back_btn"
-tool_tip="Go back to previous location"
-top="2"
-width="31" />
-    <pull_button
-     follows="left|top"
-     direction="down"
-     height="23"
-     image_overlay="Arrow_Right_Off"
-     image_bottom_pad="1"
-     layout="topleft"
-     left_pad="0"
-     name="forward_btn"
-     tool_tip="Go forward one location"
-     top_delta="0"
-     width="31" />
-    <location_input
-     follows="left|right|top"
-     halign="right"
-     height="23"
-     label="Location"
-     layout="topleft"
-     left_pad="7"
-     max_chars="254"
-     mouse_opaque="false"
-     name="location_combo"
-     top_delta="0"
-     width="325">
-    </location_input>
-    <icon follows="right"
-          height="20"
-          width="2"
-          left_pad="2"
-          image_name="Button_Separator"
-          name="separator"
-          top="2"/>
-  </panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_people.xml b/indra/newview/skins/minimal/xui/en/panel_people.xml
deleted file mode 100644
index 4739f86e95efd728173335ecf400169275e9f187..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/panel_people.xml
+++ /dev/null
@@ -1,571 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!-- Side tray panel -->
-<panel
- default_tab_group="1"
- follows="all"
- height="449"
- label="People"
- layout="topleft"
- left="0"
- min_height="350"
- name="people_panel"
- top="0"
- width="333">
-    <string
-     name="no_recent_people"
-     value="No recent people. Looking for people to hang out with? Try the Destinations button below." />
-    <string
-     name="no_filtered_recent_people"
-     value="No recent people with that name." />
-    <string
-     name="no_one_near"
-     value="No one nearby. Looking for people to hang out with? Try the Destinations button below." />
-    <string
-     name="no_one_filtered_near"
-     value="No one nearby with that name." />
-    <string
-     name="no_friends_online"
-     value="No friends online" />
-    <string
-     name="no_friends"
-     value="No friends" />
-    <string
-     name="no_friends_msg">
-         Right-click on a Resident to add them as a friend.
-Looking for people to hang out with? Try the Destinations button below.
-    </string>
-    <string
-     name="no_filtered_friends_msg">
-      Didn't find what you're looking for? Try the Destinations button below..
-    </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
-     -->
-    <string
-     name="no_filtered_groups_msg"
-     value="Didn't find what you're looking for? Try [secondlife:///app/search/groups/[SEARCH_TERM] Search]." />
-    <string
-     name="no_groups_msg"
-     value="Looking for Groups to join? Try [secondlife:///app/search/groups Search]." />
-	<string
-	 name="MiniMapToolTipMsg"
-	 value="[REGION](Double-click to open Map, shift-drag to pan)"/>
-	<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="300"
-     name="filter_input"
-     text_color="Black"
-     text_pad_left="10"
-     top="3"
-     width="303" />
-    <tab_container
-     follows="all"
-     height="383"
-     layout="topleft"
-     left="5"
-     name="tabs"
-     tab_group="1"
-     tab_min_width="70"
-     tab_height="30"
-     tab_position="top"
-     top_pad="10"
-     halign="center"
-     width="317">
-     	<panel
-         background_opaque="true"
-       background_visible="true"
-         bg_alpha_color="DkGray"
-         bg_opaque_color="DkGray"
-         follows="all"
-         height="383"
-         label="NEARBY"
-         layout="topleft"
-         left="0"
-         help_topic="people_nearby_tab"
-         name="nearby_panel"
-         top="0"
-         width="313">
-			<net_map
-			 bg_color="NetMapBackgroundColor"
-			 follows="top|left|right"
-			 layout="topleft"
-			 left="3"
-			 mouse_opaque="false"
-			 name="Net Map"
-			 width="307"
-			 height="140"
-			 top="0"/>
-			<avatar_list
-             allow_select="true"
-             follows="top|left|bottom|right"
-             height="216"
-             ignore_online_status="true"
-             layout="topleft"
-             left="3"
-             multi_select="true"
-             name="avatar_list"
-             top="145"
-             width="307" />
-            <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">
-             <icon
-             follows="bottom|left|right"
-             height="25"
-             image_name="Toolbar_Right_Off"
-             layout="topleft"
-             left_pad="1"
-             name="dummy_icon"
-             width="241"
-             />
-            </panel>
-        </panel>
-        <panel
-         background_opaque="true"
-       background_visible="true"
-         bg_alpha_color="DkGray"
-         bg_opaque_color="DkGray"
-         follows="all"
-         height="383"
-         label="MY FRIENDS"
-         layout="topleft"
-         left="0"
-         help_topic="people_friends_tab"
-         name="friends_panel"
-         top="0"
-         width="313">
-            <accordion
-       		 background_visible="true"
-       		 bg_alpha_color="DkGray2"
-       		 bg_opaque_color="DkGray2"
-             follows="all"
-             height="356"
-             layout="topleft"
-             left="3"
-             name="friends_accordion"
-             top="0"
-             width="307">
-                <accordion_tab
-                 layout="topleft"
-                 height="172"
-                 min_height="150"
-                 name="tab_online"
-                 title="Online">
-                        <avatar_list
-                         allow_select="true"
-                         follows="all"
-                         height="172"
-                         layout="topleft"
-                         left="0"
-                         multi_select="true"
-                         name="avatars_online"
-                         show_permissions_granted="true"
-                         top="0"
-                         width="307" />
-                </accordion_tab>
-                <accordion_tab
-                 layout="topleft"
-                 height="173"
-                 name="tab_all"
-                 title="All">
-                        <avatar_list
-                         allow_select="true"
-                         follows="all"
-                         height="173"
-                         layout="topleft"
-                         left="0"
-                         multi_select="true"
-                         name="avatars_all"
-                         show_permissions_granted="true"
-                         top="0"
-                         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="305">
-				      <layout_panel
-				       auto_resize="true"
-				       height="25"
-				       layout="topleft"
-				       name="dummy_panel"
-				       user_resize="false"
-				       width="212">
-				          <icon
-				           follows="bottom|left|right"
-				           height="25"
-				           image_name="Toolbar_Middle_Off"
-				           layout="topleft"
-				           left="0"
-				           top="0"
-				           name="dummy_icon"
-				           width="211" />
-				      </layout_panel>
-				      <layout_panel
-				       auto_resize="false"
-				       height="25"
-				       layout="topleft"
-				       name="trash_btn_panel"
-				       user_resize="false"
-				       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"
-             wrap="true" />
-        </panel>
-        <panel
-         background_opaque="true"
-       background_visible="true"
-         bg_alpha_color="DkGray"
-         bg_opaque_color="DkGray"
-         follows="all"
-         height="383"
-         label="RECENT"
-         layout="topleft"
-         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" />
-            <panel
-             background_visible="true"
-             follows="left|right|bottom"
-             height="27"
-             label="bottom_panel"
-             layout="topleft"
-             left="0"
-             name="bottom_panel"
-             top_pad="0"
-             width="313">
-              <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="241"
-             />
-            </panel>
-        </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">
-
-			<layout_panel
-			follows="bottom|left|right"
-			height="23"
-			layout="bottomleft"
-			left="0"
-			name="view_profile_btn_lp"
-		    user_resize="false" 
-		    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"
-		    user_resize="false" 
-		    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"
-		    user_resize="false" 
-		    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="teleport_btn_lp"
-		    user_resize="false" 
-		    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"
-		    user_resize="false" 
-		    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"
-		    user_resize="false" 
-		    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"
-		    user_resize="false" 
-		    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>
diff --git a/indra/newview/skins/minimal/xui/en/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/en/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 9f2f41ba318e1039942790fad747f7f20d9ca3f3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_visible="true"
- bottom="0"
- follows="left|top|right"
- height="5"
- width="333"
- layout="topleft"
- left="0"
- name="sidetray_tab_panel">
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_status_bar.xml b/indra/newview/skins/minimal/xui/en/panel_status_bar.xml
deleted file mode 100644
index fdd6b5d6ec5cdd25c957ae2f9e7195b6efe03c2d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/panel_status_bar.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_opaque="true"
- background_visible="true"
- bg_opaque_color="MouseGray"
- chrome="true"
- follows="top|right"
- height="30"
- layout="topleft"
- left="0"
- mouse_opaque="false"
- name="status"
- top="19"
- tab_stop="false"
- width="185">
-    <panel.string
-     name="packet_loss_tooltip">
-        Packet Loss
-    </panel.string>
-    <panel.string
-     name="bandwidth_tooltip">
-        Bandwidth
-    </panel.string>
-    <panel.string
-     name="time">
-        [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-    </panel.string>
-    <panel.string
-     name="timeTooltip">
-        [weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-    </panel.string>
-	<panel.string
-     name="buycurrencylabel">
-        L$ [AMT]
-    </panel.string>
-  <combo_box
-   follows="right|top"
-   left_pad="5"
-   drop_down_button.pad_left="10"
-   left="0"
-   top="5"
-   pad_left="5"
-   width="120"
-   height="23"
-   name="mode_combo"
-   tool_tip="Select your mode. Choose Basic for fast, easy exploration and chat. Choose Advanced to access more features."
-    >
-    <combo_box.item
-      label="Basic Mode"
-      name="Basic"
-      value="settings_minimal.xml" />
-    <combo_box.item
-      label="Advanced Mode"
-      name="Advanced"
-      value="" />
-  </combo_box>
-     <button
-     follows="right|top"
-     height="16"
-     image_selected="Play_Off"
-     image_unselected="Pause_Off"
-     image_pressed="Pause_Press"
-     image_pressed_selected="Play_Press"
-     is_toggle="true"
-     left_pad="5"
-     top="7"
-     name="media_toggle_btn"
-     tool_tip="Start/Stop All Media (Music, Video, Web pages)"
-     width="16" >
-    </button>
-    <button
-     follows="right|top"
-     height="16"
-     image_selected="AudioMute_Off"
-     image_pressed="Audio_Press"
-     image_unselected="Audio_Off"
-     is_toggle="true"
-     left_pad="5"
-     top="8"
-     name="volume_btn"
-     tool_tip="Global Volume Control"
-     width="16" />
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/panel_volume_pulldown.xml b/indra/newview/skins/minimal/xui/en/panel_volume_pulldown.xml
deleted file mode 100644
index 36ad39abe8a694f6cd331f13da66e330578b9455..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/panel_volume_pulldown.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- background_opaque="true"
- background_visible="true"
- bg_opaque_image="Volume_Background" 
- bg_alpha_image="Volume_Background" 
- border_visible="false"
- border="false"
- chrome="true"
- follows="bottom"
- height="150"
- layout="topleft"
- name="volumepulldown_floater"
- width="32">
- <slider
-  control_name="AudioLevelMaster"
-  follows="left|top"
-  left="0"
-  top="1"
-  orientation="vertical"
-  height="140"
-  increment="0.05"
-  initial_value="0.5"
-  layout="topleft"
-  name="mastervolume"
-  show_text="false"
-  slider_label.halign="right"
-  top_pad="2"
-  volume="true">
-  <slider.commit_callback
-   function="Vol.setControlFalse"
-   parameter="MuteAudio" />
-  </slider>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml b/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
deleted file mode 100644
index ba148cf4211785b30767c621e1842209c79a156f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
+++ /dev/null
@@ -1,139 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<!--
-*TODO: Replace hardcoded buttons width/height with getting this info from the button images.
-       Currently that doesn't work because LLUIImage::getWidth/getHeight() return 1 for the images.
--->
-<location_input font="SansSerifSmall"
-                maturity_help_topic="maturity_rating"
-                add_landmark_hpad="0"
-                icon_hpad="2"
-                allow_text_entry="true"
-                list_position="below"
-      	        show_text_as_tentative="false"
-                max_chars="20"
-                follows="left|top"
-                allow_new_values="true"
-                >
-  <!-- *NOTE: Tooltips are in strings.xml so they can be localized.
-  See LocationCtrlAddLandmarkTooltip etc. -->
-  <info_button
-    name="Place Information"
-    width="0"
-    height="0"
-    visible="false" 
-    left="6"
-    top="20"
-    follows="left|top"
-    hover_glow_amount="0.15" />
-  <add_landmark_button name="Add Landmark"
-                       hover_glow_amount="0.15"
-                       width="0"
-                       height="0"
-                       visible="false" 
-                       follows="right|top"
-                       scale_image="false"
-                       top="19"
-                       left="-3" />
-  <maturity_button
-    name="maturity_icon"
-    width="0"
-    height="0"
-    visible="false" 
-    top="20"
-    follows="left|top"
-    />
-  <for_sale_button
-    name="for_sale_btn"
-    width="0"
-    height="0"
-    visible="false" 
-    follows="right|top"
-    scale_image="false"
-    top="21"
-    />
-  <voice_icon
-    enabled="true"
-    name="voice_icon"
-    width="0"
-    height="0"
-    visible="false" 
-    top="21"
-    follows="right|top"
-    />
-  <fly_icon
-    name="fly_icon"
-    width="0"
-    height="0"
-    visible="false" 
-    top="21"
-    follows="right|top"
-    />
-  <push_icon
-    name="push_icon"
-    width="0"
-    height="0"
-    visible="false" 
-    top="21"
-    follows="right|top"
-    />
-  <build_icon
-    name="build_icon"
-    width="0"
-    height="0"
-    visible="false" 
-    top="21"
-    follows="right|top"
-    />
-  <scripts_icon
-    name="scripts_icon"
-    width="0"
-    height="0"
-    visible="false" 
-    top="21"
-    follows="right|top"
-    />
-  <damage_icon
-    name="damage_icon"
-    width="0"
-    height="0"
-    visible="false" 
-    top="19"
-    left="2"
-    follows="right|top"
-    />
-  <!-- Default text color is invisible on top of nav bar background -->
-  <damage_text
-    name="damage_text"
-    width="0"
-    height="0"
-    max_length="0" 
-    top="17"
-    follows="right|top"
-    halign="right"
-	  font="SansSerifSmall"
-	  text_color="TextFgColor"
-	/>
-  <see_avatars_icon
-    name="see_avatars_icon"
-    width="0"
-    height="0"
-    visible="false" 
-    top="21"
-    follows="right|top"
-    />
-  <combo_button
-		name="Location History"
-                label=""
-                pad_right="0"/>
-  <combo_list
-	      bg_writeable_color="MenuDefaultBgColor"
-	      page_lines="10"
-              scroll_bar_bg_visible="true" />
-  <combo_editor name="Combo Text Entry"
-                text_pad_left="4"
-                select_on_focus="false"
-                font="SansSerifSmall"
-                bevel_style="none"
-                border_style="line"
-                border.border_thickness="0" />
-</location_input>
diff --git a/indra/newview/skins/minimal/xui/es/floater_camera.xml b/indra/newview/skins/minimal/xui/es/floater_camera.xml
deleted file mode 100644
index 87177e285c96db6054971f4204e6074c24e5b887..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
-	<floater.string name="rotate_tooltip">
-		Girar la cámara alrededor de lo enfocado
-	</floater.string>
-	<floater.string name="zoom_tooltip">
-		Hacer zoom con la cámara en lo enfocado
-	</floater.string>
-	<floater.string name="move_tooltip">
-		Mover la cámara arriba y abajo, izquierda y derecha
-	</floater.string>
-	<floater.string name="camera_modes_title">
-		Modos de cámara
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		Orbital - Zoom - Panorámica
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		Vistas predefinidas
-	</floater.string>
-	<floater.string name="free_mode_title">
-		Centrar el objeto
-	</floater.string>
-	<panel name="controls">
-		<panel name="preset_views_list">
-			<panel_camera_item name="front_view">
-				<panel_camera_item.text name="front_view_text">
-					De frente
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="group_view">
-				<panel_camera_item.text name="side_view_text">
-					Vista lateral
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="rear_view">
-				<panel_camera_item.text name="rear_view_text">
-					Desde detrás
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="camera_modes_list">
-			<panel_camera_item name="object_view">
-				<panel_camera_item.text name="object_view_text">
-					Vista de objeto
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="mouselook_view">
-				<panel_camera_item.text name="mouselook_view_text">
-					Vista subjetiva
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="zoom" tool_tip="Hacer zoom con la cámara en lo enfocado">
-			<joystick_rotate name="cam_rotate_stick" tool_tip="La cámara gira alrededor del punto de vista"/>
-			<slider_bar name="zoom_slider" tool_tip="Hacer zoom en lo enfocado"/>
-			<joystick_track name="cam_track_stick" tool_tip="Mueve la cámara arriba y abajo, a izquierda y derecha"/>
-		</panel>
-	</panel>
-	<panel name="buttons">
-		<button label="" name="presets_btn" tool_tip="Vistas predefinidas"/>
-		<button label="" name="pan_btn" tool_tip="Orbital - Zoom - Panorámica"/>
-		<button label="" name="avatarview_btn" tool_tip="Modos de cámara"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/floater_help_browser.xml b/indra/newview/skins/minimal/xui/es/floater_help_browser.xml
deleted file mode 100644
index 67590ebfbb6fd5ff682f9fd34a279ae2b2946ec8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="INDICACIONES">
-	<floater.string name="loading_text">
-		Cargando...
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="external_controls"/>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/floater_media_browser.xml b/indra/newview/skins/minimal/xui/es/floater_media_browser.xml
deleted file mode 100644
index a7086c2d6d25108179bf931a724b7fc79749cb01..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="EXPLORADOR DE MEDIA">
-	<floater.string name="home_page_url">
-		http://www.secondlife.com
-	</floater.string>
-	<floater.string name="support_page_url">
-		http://support.secondlife.com
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button label="Atrás" name="back"/>
-			<button label="Adelante" name="forward"/>
-			<button label="Recargar" name="reload"/>
-			<button label="Ir" name="go"/>
-		</layout_panel>
-		<layout_panel name="time_controls">
-			<button label="rebobinar" name="rewind"/>
-			<button label="parar" name="stop"/>
-			<button label="avanzar" name="seek"/>
-		</layout_panel>
-		<layout_panel name="parcel_owner_controls">
-			<button label="Enviar a la parcela la página actual" name="assign"/>
-		</layout_panel>
-		<layout_panel name="external_controls">
-			<button label="Abrir en mi propio navegador" name="open_browser"/>
-			<check_box label="Abrir siempre en mi propio navegador" name="open_always"/>
-			<button label="Cerrar" name="close"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/es/floater_nearby_chat.xml
deleted file mode 100644
index 1fee9ab056668d2770445fd8f3a45dbf000cec78..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT">
-	<check_box label="Traducir chat (mediante Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/floater_web_content.xml b/indra/newview/skins/minimal/xui/es/floater_web_content.xml
deleted file mode 100644
index b0128096794af5d9ac9b8621066770b746bfee09..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button name="back" tool_tip="Navegar hacia atrás"/>
-			<button name="forward" tool_tip="Navegar hacia adelante"/>
-			<button name="stop" tool_tip="Parar navegación"/>
-			<button name="reload" tool_tip="Recargar página"/>
-			<combo_box name="address" tool_tip="Escribe la URL aquí"/>
-			<icon name="media_secure_lock_flag" tool_tip="Navegación segura"/>
-			<button name="popexternal" tool_tip="Abrir la URL actual en tu explorador de escritorio"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/inspect_avatar.xml b/indra/newview/skins/minimal/xui/es/inspect_avatar.xml
deleted file mode 100644
index 1d70fa6a90cb8d9f86a0287c1b53be7efaa8b6fe..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/inspect_avatar.xml
+++ /dev/null
@@ -1,24 +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="inspect_avatar">
-	<string name="Subtitle">
-		[AGE]
-	</string>
-	<string name="Details">
-		[SL_PROFILE]
-	</string>
-	<text name="user_details">
-		Ésta es mi descripción de Second Life que, por cierto, me encanta. Pero, por lo que sea, me he enrollado más de la cuenta y la descripción es larguísima.
-	</text>
-	<slider name="volume_slider" tool_tip="Volumen de la voz" value="0.5"/>
-	<button label="Añadir como amigo" name="add_friend_btn"/>
-	<button label="MI" name="im_btn"/>
-	<button label="Perfil" name="view_profile_btn"/>
-	<panel name="moderator_panel">
-		<button label="Desactivar la voz" name="disable_voice"/>
-		<button label="Activar la voz" name="enable_voice"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/inspect_object.xml b/indra/newview/skins/minimal/xui/es/inspect_object.xml
deleted file mode 100644
index d608b4a0f747c687c86c1fabdd304bb7fa47663b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/inspect_object.xml
+++ /dev/null
@@ -1,41 +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="inspect_object">
-	<string name="Creator">
-		Por [CREATOR]
-	</string>
-	<string name="CreatorAndOwner">
-		Por [CREATOR]
-Propietario [OWNER]
-	</string>
-	<string name="Price">
-		[AMOUNT] L$
-	</string>
-	<string name="PriceFree">
-		¡Gratis!
-	</string>
-	<string name="Touch">
-		Tocar
-	</string>
-	<string name="Sit">
-		Sentarme
-	</string>
-	<text name="object_name" value="Test Object Name That Is actually two lines and Really Long"/>
-	<text name="price_text">
-		30.000 L$
-	</text>
-	<text name="object_description">
-		This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
-	</text>
-	<button label="Comprar" name="buy_btn"/>
-	<button label="Pagar" name="pay_btn"/>
-	<button label="Coger una copia" name="take_free_copy_btn"/>
-	<button label="Tocar" name="touch_btn"/>
-	<button label="Sentarme" name="sit_btn"/>
-	<button label="Abrir" name="open_btn"/>
-	<icon name="secure_browsing" tool_tip="Navegación segura"/>
-	<button label="Más" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/es/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/es/menu_add_wearable_gear.xml
deleted file mode 100644
index f2367c72a3c6961969b0ed4c335d2414ab83a6bf..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
-	<menu_item_check label="Ordenar por los más recientes" name="sort_by_most_recent"/>
-	<menu_item_check label="Ordenar alfabéticamente" name="sort_by_name"/>
-	<menu_item_check label="Ordenar por tipo" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml
deleted file mode 100644
index b8ae93afd23e580fcece540ab8e9ba6cec714a78..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="Ver el perfil" name="Profile..."/>
-	<menu_item_call label="Añadir como amigo" name="Add Friend"/>
-	<menu_item_call label="MI" name="Send IM..."/>
-	<menu_item_call label="Llamar" name="Call"/>
-	<menu_item_call label="Invitar al grupo" name="Invite..."/>
-	<menu_item_call label="Ignorar" name="Avatar Mute"/>
-	<menu_item_call label="Denunciar" name="abuse"/>
-	<menu_item_call label="Congelar" name="Freeze..."/>
-	<menu_item_call label="Expulsar" name="Eject..."/>
-	<menu_item_call label="Depurar las texturas" name="Debug..."/>
-	<menu_item_call label="Acercar el zoom" name="Zoom In"/>
-	<menu_item_call label="Pagar" name="Pay..."/>
-	<menu_item_call label="Perfil del objeto" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/es/menu_attachment_self.xml
deleted file mode 100644
index ab76c92d656eec08e0666a414a2fd497d0f8744a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
-	<menu_item_call label="Tocar" name="Attachment Object Touch"/>
-	<menu_item_call label="Editar" name="Edit..."/>
-	<menu_item_call label="Quitar" name="Detach"/>
-	<menu_item_call label="Sentarte" name="Sit Down Here"/>
-	<menu_item_call label="Levantarme" name="Stand Up"/>
-	<menu_item_call label="Cambiar vestuario" name="Change Outfit"/>
-	<menu_item_call label="Editar mi vestuario" name="Edit Outfit"/>
-	<menu_item_call label="Editar mi anatomía" name="Edit My Shape"/>
-	<menu_item_call label="Mis amigos" name="Friends..."/>
-	<menu_item_call label="Mis grupos" name="Groups..."/>
-	<menu_item_call label="Mi perfil" name="Profile..."/>
-	<menu_item_call label="Depurar las texturas" name="Debug..."/>
-	<menu_item_call label="Soltar" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/es/menu_avatar_icon.xml
deleted file mode 100644
index fe7331a1083d3b4028588df47bb152187444cc4c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
-	<menu_item_call label="Ver el perfil" name="Show Profile"/>
-	<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="Quitar de los amigos..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml
deleted file mode 100644
index 5fb3e51575e6de31033413a2abe1f8a7a520d4ba..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="Ver el perfil" name="Profile..."/>
-	<menu_item_call label="Añadir como amigo" name="Add Friend"/>
-	<menu_item_call label="MI" name="Send IM..."/>
-	<menu_item_call label="Llamar" name="Call"/>
-	<menu_item_call label="Invitar al grupo" name="Invite..."/>
-	<menu_item_call label="Ignorar" name="Avatar Mute"/>
-	<menu_item_call label="Denunciar" name="abuse"/>
-	<menu_item_call label="Congelar" name="Freeze..."/>
-	<menu_item_call label="Expulsar" name="Eject..."/>
-	<menu_item_call label="Depurar las texturas" name="Debug..."/>
-	<menu_item_call label="Acercar el zoom" name="Zoom In"/>
-	<menu_item_call label="Pagar" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/es/menu_avatar_self.xml
deleted file mode 100644
index 50f8384b0f265fb8da1d141000b72cb375e14380..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
-	<menu_item_call label="Sentarte" name="Sit Down Here"/>
-	<menu_item_call label="Levantarme" name="Stand Up"/>
-	<context_menu label="Quitarme" name="Take Off &gt;">
-		<context_menu label="Ropas" name="Clothes &gt;">
-			<menu_item_call label="Camisa" name="Shirt"/>
-			<menu_item_call label="Pantalón" name="Pants"/>
-			<menu_item_call label="Falda" name="Skirt"/>
-			<menu_item_call label="Zapatos" name="Shoes"/>
-			<menu_item_call label="Calcetines" name="Socks"/>
-			<menu_item_call label="Chaqueta" name="Jacket"/>
-			<menu_item_call label="Guantes" name="Gloves"/>
-			<menu_item_call label="Camiseta" name="Self Undershirt"/>
-			<menu_item_call label="Ropa interior" name="Self Underpants"/>
-			<menu_item_call label="Tatuaje" name="Self Tattoo"/>
-			<menu_item_call label="Alfa" name="Self Alpha"/>
-			<menu_item_call label="Toda la ropa" name="All Clothes"/>
-		</context_menu>
-		<context_menu label="HUD" name="Object Detach HUD"/>
-		<context_menu label="Quitar" name="Object Detach"/>
-		<menu_item_call label="Quitarse todo" name="Detach All"/>
-	</context_menu>
-	<menu_item_call label="Cambiar vestuario" name="Chenge Outfit"/>
-	<menu_item_call label="Editar mi vestuario" name="Edit Outfit"/>
-	<menu_item_call label="Editar mi anatomía" name="Edit My Shape"/>
-	<menu_item_call label="Mis amigos" name="Friends..."/>
-	<menu_item_call label="Mis grupos" name="Groups..."/>
-	<menu_item_call label="Mi perfil" name="Profile..."/>
-	<menu_item_call label="Depurar las texturas" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/es/menu_bottomtray.xml
deleted file mode 100644
index 62683f3076b2b596e4dfc48842119618d4b26955..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
-	<menu_item_check label="Botón Gestos" name="ShowGestureButton"/>
-	<menu_item_check label="Botón Moverse" name="ShowMoveButton"/>
-	<menu_item_check label="Botón Vista" name="ShowCameraButton"/>
-	<menu_item_check label="Botón Foto" name="ShowSnapshotButton"/>
-	<menu_item_check label="Botón Barra lateral" name="ShowSidebarButton"/>
-	<menu_item_check label="Botón Construir" name="ShowBuildButton"/>
-	<menu_item_check label="Botón Buscar" name="ShowSearchButton"/>
-	<menu_item_check label="Botón Mapa" name="ShowWorldMapButton"/>
-	<menu_item_check label="Botón Minimapa" name="ShowMiniMapButton"/>
-	<menu_item_call label="Cortar" name="NearbyChatBar_Cut"/>
-	<menu_item_call label="Copiar" name="NearbyChatBar_Copy"/>
-	<menu_item_call label="Pegar" name="NearbyChatBar_Paste"/>
-	<menu_item_call label="Borrar" name="NearbyChatBar_Delete"/>
-	<menu_item_call label="Seleccionar todo" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/es/menu_cof_attachment.xml
deleted file mode 100644
index 7541530601dbd45ac04f9a2ba383c98a1f412535..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
-	<menu_item_call label="Quitar" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/es/menu_cof_body_part.xml
deleted file mode 100644
index 56b95bdc3b6e395fc0d615cc56fbd9224f237e00..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
-	<menu_item_call label="Reemplazar" name="replace"/>
-	<menu_item_call label="Editar" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/es/menu_cof_clothing.xml
deleted file mode 100644
index 3c0c5882843177fd813671dde43a2034701bb71d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
-	<menu_item_call label="Quitarme" name="take_off"/>
-	<menu_item_call label="Editar" name="edit"/>
-	<menu_item_call label="Reemplazar" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/es/menu_cof_gear.xml
deleted file mode 100644
index ff8ad0977acd795d97daf4c52af4deb5c6a2aa6c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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>
diff --git a/indra/newview/skins/minimal/xui/es/menu_edit.xml b/indra/newview/skins/minimal/xui/es/menu_edit.xml
deleted file mode 100644
index 96fc9d88813ec850f13b17ca15808164fb74fd25..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Editar" name="Edit">
-	<menu_item_call label="Deshacer" name="Undo"/>
-	<menu_item_call label="Rehacer" name="Redo"/>
-	<menu_item_call label="Cortar" name="Cut"/>
-	<menu_item_call label="Copiar" name="Copy"/>
-	<menu_item_call label="Pegar" name="Paste"/>
-	<menu_item_call label="Borrar" name="Delete"/>
-	<menu_item_call label="Duplicar" name="Duplicate"/>
-	<menu_item_call label="Seleccionar todo" name="Select All"/>
-	<menu_item_call label="Deseleccionar" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_favorites.xml b/indra/newview/skins/minimal/xui/es/menu_favorites.xml
deleted file mode 100644
index 85210d5c49f39090506213b419f8ec96d4f254d8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Teleportar" name="Teleport To Landmark"/>
-	<menu_item_call label="Ver/Editar el hito" name="Landmark Open"/>
-	<menu_item_call label="Copiar la SLurl" name="Copy slurl"/>
-	<menu_item_call label="Mostrar en el mapa" name="Show On Map"/>
-	<menu_item_call label="Copiar" name="Landmark Copy"/>
-	<menu_item_call label="Pegar" name="Landmark Paste"/>
-	<menu_item_call label="Borrar" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/es/menu_gesture_gear.xml
deleted file mode 100644
index 24706eb2c8c1831e79007104d211250955f928b9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
-	<menu_item_call label="Añadir a / Quitar de los favoritos" name="activate"/>
-	<menu_item_call label="Copiar" name="copy_gesture"/>
-	<menu_item_call label="Pegar" name="paste"/>
-	<menu_item_call label="Copiar la UUID" name="copy_uuid"/>
-	<menu_item_call label="Añadir al vestuario actual" name="save_to_outfit"/>
-	<menu_item_call label="Editar" name="edit_gesture"/>
-	<menu_item_call label="Inspeccionar" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_group_plus.xml b/indra/newview/skins/minimal/xui/es/menu_group_plus.xml
deleted file mode 100644
index 6b26ba42c42de7f86794c37d920aabbc043c8e8e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_call label="Entrar al grupo..." name="item_join"/>
-	<menu_item_call label="Grupo nuevo..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/es/menu_hide_navbar.xml
deleted file mode 100644
index 22a1873234ad48c587bd32c40930a7774743d4a0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
-	<menu_item_check label="Mostrar la barra de navegación" name="ShowNavbarNavigationPanel"/>
-	<menu_item_check label="Mostrar la barra de favoritos" name="ShowNavbarFavoritesPanel"/>
-	<menu_item_check label="Mostrar mini-barra de ubicación" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/es/menu_im_well_button.xml
deleted file mode 100644
index c8f6c217cc30da60175be58e89f4857273a2252a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/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/minimal/xui/es/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/es/menu_imchiclet_adhoc.xml
deleted file mode 100644
index e11e9bdc583a4c25d10b7a9e1a831f6f0e68e0e4..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
-	<menu_item_call label="Acabar la sesión" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/es/menu_imchiclet_group.xml
deleted file mode 100644
index a5e60ea40b7d9d3c9f3edf446c05b080fbb43f63..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
-	<menu_item_call label="Información del grupo" name="Show Profile"/>
-	<menu_item_call label="Mostrar la sesión" name="Chat"/>
-	<menu_item_call label="Acabar la sesión" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/es/menu_imchiclet_p2p.xml
deleted file mode 100644
index 492801026c962e1e6b5fba4a1e988368a6206164..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
-	<menu_item_call label="Ver el perfil" name="Show Profile"/>
-	<menu_item_call label="Añadir como amigo" name="Add Friend"/>
-	<menu_item_call label="Mostrar la sesión" name="Send IM"/>
-	<menu_item_call label="Acabar la sesión" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 728637de78ee2b4aae83f0d111b8bc0aca781b80..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="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="MI" name="im"/>
-	<menu_item_call label="Llamar" name="call"/>
-	<menu_item_call label="Teleportar" name="teleport"/>
-	<menu_item_call label="Ignorar" name="block"/>
-	<menu_item_call label="Designorar" name="unblock"/>
-	<menu_item_call label="Denunciar" name="report"/>
-	<menu_item_call label="Congelar" name="freeze"/>
-	<menu_item_call label="Expulsar" name="eject"/>
-	<menu_item_call label="Expulsar" name="kick"/>
-	<menu_item_call label="CSR" name="csr"/>
-	<menu_item_call label="Depurar las texturas" name="debug"/>
-	<menu_item_call label="Encontrar en el mapa" name="find_on_map"/>
-	<menu_item_call label="Acercar el zoom" name="zoom_in"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/es/menu_inspect_object_gear.xml
deleted file mode 100644
index bcdc25894f4f609ae983a65424c272270e0abc54..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
-	<menu_item_call label="Tocar" name="touch"/>
-	<menu_item_call label="Sentarse" name="sit"/>
-	<menu_item_call label="Pagar" name="pay"/>
-	<menu_item_call label="Comprar" name="buy"/>
-	<menu_item_call label="Tomar" name="take"/>
-	<menu_item_call label="Coger una copia" name="take_copy"/>
-	<menu_item_call label="Abrir" name="open"/>
-	<menu_item_call label="Editar" name="edit"/>
-	<menu_item_call label="Ponerse" name="wear"/>
-	<menu_item_call label="Añadir" name="add"/>
-	<menu_item_call label="Denunciar" name="report"/>
-	<menu_item_call label="Ignorar" name="block"/>
-	<menu_item_call label="Acercar el zoom" name="zoom_in"/>
-	<menu_item_call label="Quitar" name="remove"/>
-	<menu_item_call label="Más información" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml
deleted file mode 100644
index 1a49efb9d027903c07257b43dbd75b89f5a3838a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Self Pie">
-	<menu_item_call label="Sentarme" name="Sit Down Here"/>
-	<menu_item_call label="Levantarme" name="Stand Up"/>
-	<menu_item_call label="Mis amigos" name="Friends..."/>
-	<menu_item_call label="Mi perfil" name="Profile..."/>
-	<menu_item_call label="Depurar texturas" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/es/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 20d99afde11e8a606ef2252375567b9c457b6f7c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
-	<menu_item_call label="Cerrar" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inventory.xml b/indra/newview/skins/minimal/xui/es/menu_inventory.xml
deleted file mode 100644
index 94ee162bbce5d671111c5360368bea4cde4d5280..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Compartir" name="Share"/>
-	<menu_item_call label="Comprar" name="Task Buy"/>
-	<menu_item_call label="Abrir" name="Task Open"/>
-	<menu_item_call label="Ejecutar" name="Task Play"/>
-	<menu_item_call label="Propiedades" name="Task Properties"/>
-	<menu_item_call label="Renombrar" name="Task Rename"/>
-	<menu_item_call label="Borrar" name="Task Remove"/>
-	<menu_item_call label="Vaciar la papelera" name="Empty Trash"/>
-	<menu_item_call label="Vaciar Objetos Perdidos" name="Empty Lost And Found"/>
-	<menu_item_call label="Carpeta nueva" name="New Folder"/>
-	<menu_item_call label="Script nuevo" name="New Script"/>
-	<menu_item_call label="Nota nueva" name="New Note"/>
-	<menu_item_call label="Gesto nuevo" name="New Gesture"/>
-	<menu label="Ropas nuevas" name="New Clothes">
-		<menu_item_call label="Camisa nueva" name="New Shirt"/>
-		<menu_item_call label="Pantalones nuevos" name="New Pants"/>
-		<menu_item_call label="Zapatos nuevos" name="New Shoes"/>
-		<menu_item_call label="Calcetines nuevos" name="New Socks"/>
-		<menu_item_call label="Chaqueta nueva" name="New Jacket"/>
-		<menu_item_call label="Falda nueva" name="New Skirt"/>
-		<menu_item_call label="Guantes nuevos" name="New Gloves"/>
-		<menu_item_call label="Camiseta nueva" name="New Undershirt"/>
-		<menu_item_call label="Ropa interior nueva" name="New Underpants"/>
-		<menu_item_call label="Nueva capa Alpha" name="New Alpha Mask"/>
-		<menu_item_call label="Tatuaje nuevo" name="New Tattoo"/>
-	</menu>
-	<menu label="Nuevas partes del cuerpo" name="New Body Parts">
-		<menu_item_call label="Forma nueva" name="New Shape"/>
-		<menu_item_call label="Piel nueva" name="New Skin"/>
-		<menu_item_call label="Pelo nuevo" name="New Hair"/>
-		<menu_item_call label="Ojos nuevos" name="New Eyes"/>
-	</menu>
-	<menu label="Change Type" name="Change Type">
-		<menu_item_call label="Por defecto" name="Default"/>
-		<menu_item_call label="Guantes" name="Gloves"/>
-		<menu_item_call label="Chaqueta" name="Jacket"/>
-		<menu_item_call label="Pantalón" name="Pants"/>
-		<menu_item_call label="Forma" name="Shape"/>
-		<menu_item_call label="Zapatos" name="Shoes"/>
-		<menu_item_call label="Camisa" name="Shirt"/>
-		<menu_item_call label="Falda" name="Skirt"/>
-		<menu_item_call label="Ropa interior" name="Underpants"/>
-		<menu_item_call label="Camiseta" name="Undershirt"/>
-	</menu>
-	<menu_item_call label="Teleportar" name="Landmark Open"/>
-	<menu_item_call label="Abrir" name="Animation Open"/>
-	<menu_item_call label="Abrir" name="Sound Open"/>
-	<menu_item_call label="Reemplazar el vestuario" name="Replace Outfit"/>
-	<menu_item_call label="Añadir al vestuario" name="Add To Outfit"/>
-	<menu_item_call label="Quitar del vestuario actual" name="Remove From Outfit"/>
-	<menu_item_call label="Encontrar el original" name="Find Original"/>
-	<menu_item_call label="Eliminar el ítem" name="Purge Item"/>
-	<menu_item_call label="Restaurar el ítem" name="Restore Item"/>
-	<menu_item_call label="Abrir" name="Open"/>
-	<menu_item_call label="Abrir original" name="Open Original"/>
-	<menu_item_call label="Propiedades" name="Properties"/>
-	<menu_item_call label="Renombrar" name="Rename"/>
-	<menu_item_call label="Copiar la UUID" name="Copy Asset UUID"/>
-	<menu_item_call label="Copiar" name="Copy"/>
-	<menu_item_call label="Pegar" name="Paste"/>
-	<menu_item_call label="Pegar como enlace" name="Paste As Link"/>
-	<menu_item_call label="Borrar" name="Remove Link"/>
-	<menu_item_call label="Borrar" name="Delete"/>
-	<menu_item_call label="Borrar carpeta del sistema" name="Delete System Folder"/>
-	<menu_item_call label="Empezar multiconferencia" name="Conference Chat Folder"/>
-	<menu_item_call label="Escuchar" name="Sound Play"/>
-	<menu_item_call label="Acerca del hito" name="About Landmark"/>
-	<menu_item_call label="Escuchar en el mundo" name="Animation Play"/>
-	<menu_item_call label="Ejecutarla para usted" name="Animation Audition"/>
-	<menu_item_call label="Enviar un mensaje instantáneo" name="Send Instant Message"/>
-	<menu_item_call label="Ofrecer teleporte..." name="Offer Teleport..."/>
-	<menu_item_call label="Empezar multiconferencia" name="Conference Chat"/>
-	<menu_item_call label="Activar" name="Activate"/>
-	<menu_item_call label="Desactivar" name="Deactivate"/>
-	<menu_item_call label="Guardar como" name="Save As"/>
-	<menu_item_call label="Quitarse" name="Detach From Yourself"/>
-	<menu_item_call label="Ponerme" name="Wearable And Object Wear"/>
-	<menu label="Anexar a" name="Attach To"/>
-	<menu label="Anexar como HUD" name="Attach To HUD"/>
-	<menu_item_call label="Editar" name="Wearable Edit"/>
-	<menu_item_call label="Añadir" name="Wearable Add"/>
-	<menu_item_call label="Quitarse" name="Take Off"/>
-	<menu_item_call label="--sin opciones--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/es/menu_inventory_add.xml
deleted file mode 100644
index ba106e8335d9133911b3d6e15c0a3c408fdf0338..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
-	<menu label="Subir" name="upload">
-		<menu_item_call label="Imagen ([COST] L$)..." name="Upload Image"/>
-		<menu_item_call label="Sonido ([COST] L$)..." name="Upload Sound"/>
-		<menu_item_call label="Animación ([COST] L$)..." name="Upload Animation"/>
-		<menu_item_call label="Masivo ([COST] L$ por archivo)..." name="Bulk Upload"/>
-		<menu_item_call label="Configurar los permisos por defecto de subida" name="perm prefs"/>
-	</menu>
-	<menu_item_call label="Carpeta nueva" name="New Folder"/>
-	<menu_item_call label="Script nuevo" name="New Script"/>
-	<menu_item_call label="Nota nueva" name="New Note"/>
-	<menu_item_call label="Gesto nuevo" name="New Gesture"/>
-	<menu label="Ropas nuevas" name="New Clothes">
-		<menu_item_call label="Camisa nueva" name="New Shirt"/>
-		<menu_item_call label="Pantalón nuevo" name="New Pants"/>
-		<menu_item_call label="Zapatos nuevos" name="New Shoes"/>
-		<menu_item_call label="Calcetines nuevos" name="New Socks"/>
-		<menu_item_call label="Chaqueta nueva" name="New Jacket"/>
-		<menu_item_call label="Falda nueva" name="New Skirt"/>
-		<menu_item_call label="Guantes nuevos" name="New Gloves"/>
-		<menu_item_call label="Camiseta nueva" name="New Undershirt"/>
-		<menu_item_call label="Ropa interior nueva" name="New Underpants"/>
-		<menu_item_call label="Nueva Alfa" name="New Alpha"/>
-		<menu_item_call label="Tatuaje nuevo" name="New Tattoo"/>
-	</menu>
-	<menu label="Nuevas partes del cuerpo" name="New Body Parts">
-		<menu_item_call label="Forma nueva" name="New Shape"/>
-		<menu_item_call label="Piel nueva" name="New Skin"/>
-		<menu_item_call label="Pelo nuevo" name="New Hair"/>
-		<menu_item_call label="Ojos nuevos" name="New Eyes"/>
-	</menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/es/menu_inventory_gear_default.xml
deleted file mode 100644
index 8e498fefba1434807b3cf337a30e2b8326994d4c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
-	<menu_item_call label="Nueva ventana del inventario" name="new_window"/>
-	<menu_item_check label="Ordenar alfabéticamente" name="sort_by_name"/>
-	<menu_item_check label="Ordenar por los más recientes" name="sort_by_recent"/>
-	<menu_item_check label="Las carpetas del sistema, arriba" name="sort_system_folders_to_top"/>
-	<menu_item_call label="Ver los filtros" name="show_filters"/>
-	<menu_item_call label="Restablecer los filtros" name="reset_filters"/>
-	<menu_item_call label="Cerrar todas las carpetas" name="close_folders"/>
-	<menu_item_call label="Vaciar Objetos Perdidos" name="empty_lostnfound"/>
-	<menu_item_call label="Guardar la textura como" name="Save Texture As"/>
-	<menu_item_call label="Compartir" name="Share"/>
-	<menu_item_call label="Encontrar el original" name="Find Original"/>
-	<menu_item_call label="Encontrar todos los enlazados" name="Find All Links"/>
-	<menu_item_call label="Vaciar la Papelera" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_land.xml b/indra/newview/skins/minimal/xui/es/menu_land.xml
deleted file mode 100644
index b0f15be1b637316dee2000c098dbb13739ff0da0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
-	<menu_item_call label="Acerca del terreno" name="Place Information..."/>
-	<menu_item_call label="Sentarme aquí" name="Sit Here"/>
-	<menu_item_call label="Comprar este terreno" name="Land Buy"/>
-	<menu_item_call label="Comprar un pase" name="Land Buy Pass"/>
-	<menu_item_call label="Construir" name="Create"/>
-	<menu_item_call label="Modificar el terreno" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_landmark.xml b/indra/newview/skins/minimal/xui/es/menu_landmark.xml
deleted file mode 100644
index f69b1539b82d1471b28168d31d05544fc6f4ad84..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
-	<menu_item_call label="Copiar la SLurl" name="copy"/>
-	<menu_item_call label="Borrar" name="delete"/>
-	<menu_item_call label="Crear un Destacado" name="pick"/>
-	<menu_item_call label="Añadir a la barra de favoritos" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_login.xml b/indra/newview/skins/minimal/xui/es/menu_login.xml
deleted file mode 100644
index c27d6247324206eca98b8f563d0203df1213653f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
-	<menu label="Yo" name="File">
-		<menu_item_call label="Preferencias" name="Preferences..."/>
-		<menu_item_call label="Salir de [APP_NAME]" name="Quit"/>
-	</menu>
-	<menu label="Ayuda" name="Help">
-		<menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/>
-		<menu_item_call label="Acerca de [APP_NAME]" name="About Second Life"/>
-	</menu>
-	<menu_item_check label="Mostrar el menú &apos;Debug&apos;" name="Show Debug Menu"/>
-	<menu label="Depurar" name="Debug">
-		<menu_item_call label="Mostrar las configuraciones del depurador" name="Debug Settings"/>
-		<menu_item_call label="Configuraciones del Visor/Color" name="UI/Color Settings"/>
-		<menu label="Pruebas de la interfaz" name="UI Tests"/>
-		<menu_item_call label="Definir el tamaño de la ventana..." name="Set Window Size..."/>
-		<menu_item_call label="Mostrar los &apos;TOS&apos;" name="TOS"/>
-		<menu_item_call label="Mostrar mensaje crítico" name="Critical"/>
-		<menu_item_call label="Prueba de navegadores de medios" name="Web Browser Test"/>
-		<menu_item_call label="Prueba de ventanas de contenidos web" name="Web Content Floater Test"/>
-		<menu_item_check label="Mostrar el selector de Grid" name="Show Grid Picker"/>
-		<menu_item_call label="Mostrar la consola de notificaciones" name="Show Notifications Console"/>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/es/menu_mini_map.xml b/indra/newview/skins/minimal/xui/es/menu_mini_map.xml
deleted file mode 100644
index 07d1b08572936f0409098abbf2c2c9646c8648b6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Zoom cerca" name="Zoom Close"/>
-	<menu_item_call label="Zoom medio" name="Zoom Medium"/>
-	<menu_item_call label="Zoom lejos" name="Zoom Far"/>
-	<menu_item_call label="Zoom por defecto" name="Zoom Default"/>
-	<menu_item_check label="Girar el mapa" name="Rotate Map"/>
-	<menu_item_check label="Centrar automáticamente" name="Auto Center"/>
-	<menu_item_call label="Parar la búsqueda" name="Stop Tracking"/>
-	<menu_item_call label="Mapa del mundo" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_navbar.xml b/indra/newview/skins/minimal/xui/es/menu_navbar.xml
deleted file mode 100644
index 63e546802066090066b6bd18da31bcaf5a1a7e49..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
-	<menu_item_check label="Mostrar las coordenadas" name="Show Coordinates"/>
-	<menu_item_check label="Mostrar las propiedades de la parcela" name="Show Parcel Properties"/>
-	<menu_item_call label="Hito" name="Landmark"/>
-	<menu_item_call label="Cortar" name="Cut"/>
-	<menu_item_call label="Copiar" name="Copy"/>
-	<menu_item_call label="Pegar" name="Paste"/>
-	<menu_item_call label="Borrar" name="Delete"/>
-	<menu_item_call label="Seleccionar todo" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/es/menu_nearby_chat.xml
deleted file mode 100644
index 94b281b6c760edb4d4c22bb007dfaffbdf6f60d1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
-	<menu_item_call label="Mostrar la gente que está cerca..." name="nearby_people"/>
-	<menu_item_check label="Ver el texto ignorado" name="muted_text"/>
-	<menu_item_check label="Mostrar los iconos del amigo" name="show_buddy_icons"/>
-	<menu_item_check label="Mostrar los nombres" name="show_names"/>
-	<menu_item_check label="Mostrar los iconos y los nombres" name="show_icons_and_names"/>
-	<menu_item_call label="Tamaño de la fuente" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/es/menu_notification_well_button.xml
deleted file mode 100644
index 0562d35be72dc2054f0bd6f4c5a386c162ae1739..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
-	<menu_item_call label="Cerrar todo" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_object.xml b/indra/newview/skins/minimal/xui/es/menu_object.xml
deleted file mode 100644
index 06121e0c09a143e0d05e4a8b6c783bbae9caf7d3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
-	<menu_item_call label="Tocar" name="Object Touch">
-		<menu_item_call.on_enable name="EnableTouch" parameter="Tocar"/>
-	</menu_item_call>
-	<menu_item_call label="Editar" name="Edit..."/>
-	<menu_item_call label="Construir" name="Build"/>
-	<menu_item_call label="Abrir" name="Open"/>
-	<menu_item_call label="Sentarme aquí" name="Object Sit"/>
-	<menu_item_call label="Levantarme" name="Object Stand Up"/>
-	<menu_item_call label="Perfil del objeto" name="Object Inspect"/>
-	<menu_item_call label="Acercar el zoom" name="Zoom In"/>
-	<context_menu label="Ponerme" name="Put On">
-		<menu_item_call label="Ponerme" name="Wear"/>
-		<menu_item_call label="Añadir" name="Add"/>
-		<context_menu label="Anexar" name="Object Attach"/>
-		<context_menu label="Anexar el HUD" name="Object Attach HUD"/>
-	</context_menu>
-	<context_menu label="Quitar" name="Remove">
-		<menu_item_call label="Denunciar una infracción" name="Report Abuse..."/>
-		<menu_item_call label="Ignorar" name="Object Mute"/>
-		<menu_item_call label="Devolver" name="Return..."/>
-		<menu_item_call label="Eliminar" name="Delete"/>
-	</context_menu>
-	<menu_item_call label="Tomar" name="Pie Object Take"/>
-	<menu_item_call label="Coger una copia" name="Take Copy"/>
-	<menu_item_call label="Pagar" name="Pay..."/>
-	<menu_item_call label="Comprar" name="Buy..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_object_icon.xml b/indra/newview/skins/minimal/xui/es/menu_object_icon.xml
deleted file mode 100644
index 7e4578b95040a45c287c053b4361dbf95ec8b1bb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
-	<menu_item_call label="Perfil del objeto..." name="Object Profile"/>
-	<menu_item_call label="Ignorar..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/es/menu_outfit_gear.xml
deleted file mode 100644
index 3b11bceecf6b7be459843d09a04ba63a3205df93..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
-	<menu_item_call label="Ponerme - Reemplazar el vestuario actual" name="wear"/>
-	<menu_item_call label="Ponerme - Añadir al vestuario actual" name="wear_add"/>
-	<menu_item_call label="Quitarme - Quitar del vestuario actual" name="take_off"/>
-	<menu label="Ropas nuevas" name="New Clothes">
-		<menu_item_call label="Camisa nueva" name="New Shirt"/>
-		<menu_item_call label="Pantalón nuevo" name="New Pants"/>
-		<menu_item_call label="Zapatos nuevos" name="New Shoes"/>
-		<menu_item_call label="Calcetines nuevos" name="New Socks"/>
-		<menu_item_call label="Chaqueta nueva" name="New Jacket"/>
-		<menu_item_call label="Falda nueva" name="New Skirt"/>
-		<menu_item_call label="Guantes nuevos" name="New Gloves"/>
-		<menu_item_call label="Camiseta nueva" name="New Undershirt"/>
-		<menu_item_call label="Ropa interior nueva" name="New Underpants"/>
-		<menu_item_call label="Nueva Alfa" name="New Alpha"/>
-		<menu_item_call label="Tatuaje nuevo" name="New Tattoo"/>
-	</menu>
-	<menu label="Nuevas partes del cuerpo" name="New Body Parts">
-		<menu_item_call label="Anatomía nueva" name="New Shape"/>
-		<menu_item_call label="Piel nueva" name="New Skin"/>
-		<menu_item_call label="Pelo nuevo" name="New Hair"/>
-		<menu_item_call label="Ojos nuevos" name="New Eyes"/>
-	</menu>
-	<menu_item_call label="Renombrar el vestuario" name="rename"/>
-	<menu_item_call label="Borrar el vestuario" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/es/menu_outfit_tab.xml
deleted file mode 100644
index 4136082a62fa9a08d5f08834468e38afc09eb1c5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
-	<menu_item_call label="Ponerme - Reemplazar el vestuario actual" name="wear_replace"/>
-	<menu_item_call label="Ponerme - Añadir al vestuario actual" name="wear_add"/>
-	<menu_item_call label="Quitarme - Quitar del vestuario actual" name="take_off"/>
-	<menu_item_call label="Editar el vestuario" name="edit"/>
-	<menu_item_call label="Renombrar el vestuario" name="rename"/>
-	<menu_item_call label="Borrar el vestuario" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_participant_list.xml b/indra/newview/skins/minimal/xui/es/menu_participant_list.xml
deleted file mode 100644
index f6eedd11705485a8a867c7b20cbc6bd3ea5c2b10..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
-	<menu_item_check label="Ordenar alfabéticamente" name="SortByName"/>
-	<menu_item_check label="Ordenar según las intervenciones recientes" name="SortByRecentSpeakers"/>
-	<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="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_check label="Ver los iconos de la gente" name="View Icons"/>
-	<menu_item_check label="Ignorar la voz" name="Block/Unblock"/>
-	<menu_item_check label="Ignorar el texto" name="MuteText"/>
-	<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>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_friends_view_sort.xml
deleted file mode 100644
index 3899ad9e961cf13d9ca82a7f2a6740b27fb477c8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_groups.xml b/indra/newview/skins/minimal/xui/es/menu_people_groups.xml
deleted file mode 100644
index 51bd2c720856c67d41dd2ef8a4953b50944482dc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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="Activar" name="Activate"/>
-	<menu_item_call label="Dejar" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_groups_view_sort.xml
deleted file mode 100644
index 1bd3efb61184ca61cee76af393f0a9b983f01635..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Mostrar los iconos de grupo" name="Display Group Icons"/>
-	<menu_item_call label="Dejar el grupo seleccionado" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/es/menu_people_nearby.xml
deleted file mode 100644
index dc1486d87960a2bf990ef1e60ac2ef6f64abf0ee..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?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"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/es/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 227c5ebe58f06f321dfc9e70739fcf622d71a2d8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?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"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_nearby_view_sort.xml
deleted file mode 100644
index f0fe383c0c39c5e11a96d8b6038d719e6c215b31..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/es/menu_people_recent_view_sort.xml
deleted file mode 100644
index e4aaa891109392fe1c060b8b48f9a41b1c323b0b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Ordenar por los más recientes" 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"/>
-	<menu_item_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_picks.xml b/indra/newview/skins/minimal/xui/es/menu_picks.xml
deleted file mode 100644
index 9da68d7c9bf308fc89c146af3d14c57cd24d27ae..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
-	<menu_item_call label="Información" name="pick_info"/>
-	<menu_item_call label="Editar" name="pick_edit"/>
-	<menu_item_call label="Teleportar" name="pick_teleport"/>
-	<menu_item_call label="Mapa" name="pick_map"/>
-	<menu_item_call label="Eliminar" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/es/menu_picks_plus.xml
deleted file mode 100644
index cc59bf1d292a5302e97219f8c2ae0d01e2e89a6a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
-	<menu_item_call label="Destacado nuevo" name="create_pick"/>
-	<menu_item_call label="Clasificado nuevo" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_place.xml b/indra/newview/skins/minimal/xui/es/menu_place.xml
deleted file mode 100644
index 675f0699e9999dd4665ff290ee32ba74f7709d40..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
-	<menu_item_call label="Crear un hito" name="landmark"/>
-	<menu_item_call label="Crear un destacado" name="pick"/>
-	<menu_item_call label="Comprar un pase" name="pass"/>
-	<menu_item_call label="Editar" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/es/menu_place_add_button.xml
deleted file mode 100644
index 4b2f908a06302fe1531c64185d7728780b1b1680..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
-	<menu_item_call label="Añadir una carpeta" name="add_folder"/>
-	<menu_item_call label="Añadir este hito" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/es/menu_places_gear_folder.xml
deleted file mode 100644
index bf46eb58e3cc4edaf90186f3c28a961ccceaca88..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
-	<menu_item_call label="Añadir este hito" name="add_landmark"/>
-	<menu_item_call label="Añadir una carpeta" name="add_folder"/>
-	<menu_item_call label="Cortar" name="cut"/>
-	<menu_item_call label="Copiar" name="copy_folder"/>
-	<menu_item_call label="Pegar" name="paste"/>
-	<menu_item_call label="Renombrar" name="rename"/>
-	<menu_item_call label="Borrar" name="delete"/>
-	<menu_item_call label="Abrir" name="expand"/>
-	<menu_item_call label="Cerrar" name="collapse"/>
-	<menu_item_call label="Abrir todas las carpetas" name="expand_all"/>
-	<menu_item_call label="Cerrar todas las carpetas" name="collapse_all"/>
-	<menu_item_check label="Ordenar por fecha" name="sort_by_date"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/es/menu_places_gear_landmark.xml
deleted file mode 100644
index eac85de846c5f965472b792033e2fa4cd6cccc66..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
-	<menu_item_call label="Teleportar" name="teleport"/>
-	<menu_item_call label="Más información" name="more_info"/>
-	<menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
-	<menu_item_call label="Añadir un hito" name="add_landmark"/>
-	<menu_item_call label="Añadir una carpeta" name="add_folder"/>
-	<menu_item_call label="Cortar" name="cut"/>
-	<menu_item_call label="Copiar el hito" name="copy_landmark"/>
-	<menu_item_call label="Copiar la SLurl" name="copy_slurl"/>
-	<menu_item_call label="Pegar" name="paste"/>
-	<menu_item_call label="Renombrar" name="rename"/>
-	<menu_item_call label="Eliminar" name="delete"/>
-	<menu_item_call label="Abrir todas las carpetas" name="expand_all"/>
-	<menu_item_call label="Cerrar todas las carpetas" name="collapse_all"/>
-	<menu_item_check label="Ordenar por fecha" name="sort_by_date"/>
-	<menu_item_call label="Crear un Destacado" name="create_pick"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/es/menu_profile_overflow.xml
deleted file mode 100644
index 5ee8c50949e1aec33c0cc0901210bf7e19fb092e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
-	<menu_item_call label="Mapa" name="show_on_map"/>
-	<menu_item_call label="Pagar" name="pay"/>
-	<menu_item_call label="Compartir" name="share"/>
-	<menu_item_call label="Ignorar" name="block"/>
-	<menu_item_call label="Designorar" name="unblock"/>
-	<menu_item_call label="Expulsar" name="kick"/>
-	<menu_item_call label="Congelar" name="freeze"/>
-	<menu_item_call label="Descongelar" name="unfreeze"/>
-	<menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/es/menu_save_outfit.xml
deleted file mode 100644
index a04ec75b60a620bb630cf4e676410fa8c19bcb2d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
-	<menu_item_call label="Guardar" name="save_outfit"/>
-	<menu_item_call label="Guardar como" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/es/menu_script_chiclet.xml
deleted file mode 100644
index f517baf56626397bb956ed38c0287cd6ae0fe65c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
-	<menu_item_call label="Cerrar" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_slurl.xml b/indra/newview/skins/minimal/xui/es/menu_slurl.xml
deleted file mode 100644
index ca19acec6e4e174861705aaa8e1e4fea64d621be..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Acerca de la URL" name="about_url"/>
-	<menu_item_call label="Teleportar a la URL" name="teleport_to_url"/>
-	<menu_item_call label="Mapa" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/es/menu_teleport_history_gear.xml
deleted file mode 100644
index b708f3bc201a65ca088701b8a654bcc08d319e1c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
-	<menu_item_call label="Abrir todas las carpetas" name="Expand all folders"/>
-	<menu_item_call label="Cerrar todas las carpetas" name="Collapse all folders"/>
-	<menu_item_call label="Limpiar el historial de teleportes" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml
deleted file mode 100644
index c482907812ce516e182253e3e0c443624e7f5f81..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Teleportar" name="Teleport"/>
-	<menu_item_call label="Más información" name="More Information"/>
-	<menu_item_call label="Copiar al portapapeles" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/es/menu_teleport_history_tab.xml
deleted file mode 100644
index 17e90422a5567fcefa0ebaafaba4f34a1eb47374..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Abrir" name="TabOpen"/>
-	<menu_item_call label="Cerrar" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_text_editor.xml b/indra/newview/skins/minimal/xui/es/menu_text_editor.xml
deleted file mode 100644
index 095e461734ea0b8f2b0532d08fe50c26856e51e0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
-	<menu_item_call label="Cortar" name="Cut"/>
-	<menu_item_call label="Copiar" name="Copy"/>
-	<menu_item_call label="Pegar" name="Paste"/>
-	<menu_item_call label="Borrar" name="Delete"/>
-	<menu_item_call label="Seleccionar todo" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/es/menu_topinfobar.xml
deleted file mode 100644
index 2125fd51b223340758e8eafba9b759a4c51f653b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
-	<menu_item_check label="Mostrar las coordenadas" name="Show Coordinates"/>
-	<menu_item_check label="Mostrar las propiedades de la parcela" name="Show Parcel Properties"/>
-	<menu_item_call label="Hito" name="Landmark"/>
-	<menu_item_call label="Copiar" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_agent.xml b/indra/newview/skins/minimal/xui/es/menu_url_agent.xml
deleted file mode 100644
index a089c8f68e3b9a3496a3cbf89fb20f48bf23723a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?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="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/minimal/xui/es/menu_url_group.xml b/indra/newview/skins/minimal/xui/es/menu_url_group.xml
deleted file mode 100644
index 79374b973955da84ff6da07fc231115bed126b55..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Mostrar la información del grupo" name="show_group"/>
-	<menu_item_call label="Copiar el grupo 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/minimal/xui/es/menu_url_http.xml b/indra/newview/skins/minimal/xui/es/menu_url_http.xml
deleted file mode 100644
index 585c059ff31d8bad602bf584cc5dcff1b2ce3ac5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Abrir la página web" name="url_open"/>
-	<menu_item_call label="Abrir en el navegador incorporado" name="url_open_internal"/>
-	<menu_item_call label="Abrir en mi navegador" name="url_open_external"/>
-	<menu_item_call label="Copiar la URL al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/es/menu_url_inventory.xml
deleted file mode 100644
index 13a8711c761c71860a10083b53f76431be6b7d50..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Mostrar ítem del inventario" name="show_item"/>
-	<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/minimal/xui/es/menu_url_map.xml b/indra/newview/skins/minimal/xui/es/menu_url_map.xml
deleted file mode 100644
index f96a0c717060707ac6762ce3e370603510214dda..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
-	<menu_item_call label="Teleportarse a la localización" name="teleport_to_location"/>
-	<menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/es/menu_url_objectim.xml
deleted file mode 100644
index 8791a290af63de783c7e5fb419836e61c62514c9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?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="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"/>
-	<menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/es/menu_url_parcel.xml
deleted file mode 100644
index 9e789ef8ee8a6912a749959dccce0564c71ee617..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Mostrar la información de la parcela" name="show_parcel"/>
-	<menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
-	<menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/es/menu_url_slapp.xml
deleted file mode 100644
index 7147dcd3cff9b1c740354a1c309c730043273ce0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Ejecutar este comando" name="run_slapp"/>
-	<menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/es/menu_url_slurl.xml
deleted file mode 100644
index 4ab47c2f61e404e608c953ccfb2627914141707b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Mostrar la información del lugar" name="show_place"/>
-	<menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
-	<menu_item_call label="Teleportarse a este lugar" name="teleport_to_location"/>
-	<menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/es/menu_url_teleport.xml
deleted file mode 100644
index 8f86a91be3025a0264130460a9edf9d1f3b5895b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Teleportarse a este lugar" name="teleport"/>
-	<menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
-	<menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_viewer.xml b/indra/newview/skins/minimal/xui/es/menu_viewer.xml
deleted file mode 100644
index 776ccfe21bc4185bb49f2ef7985aca90941f6669..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
-	<menu label="Ayuda" name="Help">
-		<menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/>
-	</menu>
-	<menu label="Avanzado" name="Advanced">
-		<menu label="Atajos de teclado" name="Shortcuts">
-			<menu_item_check label="Volar" name="Fly"/>
-			<menu_item_call label="Cerrar la ventana" name="Close Window"/>
-			<menu_item_call label="Cerrar todas las ventanas" name="Close All Windows"/>
-			<menu_item_call label="Volver a la vista por defecto" name="Reset View"/>
-		</menu>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/es/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/es/menu_wearable_list_item.xml
deleted file mode 100644
index 4bffa689e740237a76869534c4876f56dbf235d9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
-	<menu_item_call label="Reemplazar" name="wear_replace"/>
-	<menu_item_call label="Ponerme" name="wear_wear"/>
-	<menu_item_call label="Añadir" name="wear_add"/>
-	<menu_item_call label="Quitarme / Quitar" name="take_off_or_detach"/>
-	<menu_item_call label="Quitar" name="detach"/>
-	<context_menu label="Anexar a" name="wearable_attach_to"/>
-	<context_menu label="Anexar al HUD" name="wearable_attach_to_hud"/>
-	<menu_item_call label="Quitarme" name="take_off"/>
-	<menu_item_call label="Editar" name="edit"/>
-	<menu_item_call label="Perfil del elemento" name="object_profile"/>
-	<menu_item_call label="Mostrar original" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/es/menu_wearing_gear.xml
deleted file mode 100644
index 9d9ce75e5390b3958046209acabaf95f819c9e12..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
-	<menu_item_call label="Editar el vestuario" name="edit"/>
-	<menu_item_call label="Quitarme" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/es/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/es/menu_wearing_tab.xml
deleted file mode 100644
index 64fd7ce4cf743c014b47403879af9092939dce0b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
-	<menu_item_call label="Quitarme" name="take_off"/>
-	<menu_item_call label="Quitar" name="detach"/>
-	<menu_item_call label="Editar el vestuario" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/es/notifications.xml b/indra/newview/skins/minimal/xui/es/notifications.xml
deleted file mode 100644
index 78b617c42996ead4d1ecd8dcf707f23ab11a0692..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
-	<notification name="UserGiveItem">
-		[NAME_SLURL] te ofrece un/a [ITEM_SLURL]. Para utilizar este ítem, cambia al modo Avanzado y búscalo en el inventario. Para cambiar al modo Avanzado, sal de la aplicación, reiníciala y cambia el ajuste de modo en la pantalla de inicio de sesión.
-		<form name="form">
-			<button name="Show" text="Conservar ítem"/>
-			<button name="Discard" text="Rechazar ítem"/>
-			<button name="Mute" text="Bloquear usuario"/>
-		</form>
-	</notification>
-	<notification name="ObjectGiveItem">
-		Un objeto de nombre &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, propiedad de [NAME_SLURL], te ofrece un/a &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;. Para utilizar este ítem, cambia al modo Avanzado y búscalo en el inventario. Para cambiar al modo Avanzado, sal de la aplicación, reiníciala y cambia el ajuste de modo en la pantalla de inicio de sesión.
-		<form name="form">
-			<button name="Keep" text="Conservar ítem"/>
-			<button name="Discard" text="Rechazar ítem"/>
-			<button name="Mute" text="Bloquear objeto"/>
-		</form>
-	</notification>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml
deleted file mode 100644
index 254cf58437a20bbd0f396b41d2c4e7f8382d8c55..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="call_btn_panel">
-			<button label="Llamar" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Colgar" name="end_call_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml
deleted file mode 100644
index 0989a3d0a1d695766ba86866d5c0df9b4e526187..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
-	<string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
-	<string name="SpeakBtnToolTip" value="Activa/Desactiva el micrófono"/>
-	<string name="VoiceControlBtnToolTip" value="Muestra/Oculta el panel del control de voz"/>
-	<layout_stack name="toolbar_stack">
-		<layout_panel name="speak_panel">
-			<button label="Hablar" name="speak_btn" tool_tip="Activar y desactivar tu micrófono"/>
-		</layout_panel>
-		<layout_panel name="speak_flyout_panel">
-			<button label="" name="flyout_btn" tool_tip="Cambiar tus preferencias de sonido"/>
-		</layout_panel>
-		<layout_panel name="gesture_panel">
-			<gesture_combo_list label="Gestos" name="Gesture" tool_tip="Hacer que tu avatar realice distintas acciones"/>
-		</layout_panel>
-		<layout_panel name="cam_panel">
-			<bottomtray_button label="Visión" name="camera_btn" tool_tip="Controlar el ángulo de tu cámara"/>
-		</layout_panel>
-		<layout_panel name="destinations_panel">
-			<bottomtray_button label="Destinos" name="destination_btn" tool_tip="Viajar por Second Life"/>
-		</layout_panel>
-		<layout_panel name="avatar_panel">
-			<bottomtray_button label="Mi avatar" name="avatar_btn" tool_tip="Cambiar tu aspecto"/>
-		</layout_panel>
-		<layout_panel name="people_panel">
-			<bottomtray_button label="Gente" name="show_people_button" tool_tip="Encontrar a gente en Second Life"/>
-		</layout_panel>
-		<layout_panel name="profile_panel">
-			<bottomtray_button label="Perfil" name="show_profile_btn" tool_tip="Consultar y editar tu perfil"/>
-		</layout_panel>
-		<layout_panel name="howto_panel">
-			<bottomtray_button label="Indicaciones" name="show_help_btn" tool_tip="Ver la información de ayuda de Second Life"/>
-		</layout_panel>
-		<layout_panel name="im_well_panel">
-			<chiclet_im_well name="im_well">
-				<button name="Unread IM messages" tool_tip="Conversaciones"/>
-			</chiclet_im_well>
-		</layout_panel>
-		<layout_panel name="notification_well_panel">
-			<chiclet_notification name="notification_well">
-				<button name="Unread" tool_tip="Notificaciones"/>
-			</chiclet_notification>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_group_control_panel.xml
deleted file mode 100644
index e77156b0d415248d7c2dfe3a99ca668cb0945814..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="end_call_btn_panel">
-			<button label="Colgar" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Abrir los controles de la voz" name="voice_ctrls_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml
deleted file mode 100644
index 93b6526f77a7be913da5f255b6bbce48812bf9e7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="button_stack">
-		<layout_panel name="view_profile_btn_panel">
-			<button label="Perfil" name="view_profile_btn"/>
-		</layout_panel>
-		<layout_panel name="add_friend_btn_panel">
-			<button label="Añadir como amigo" name="add_friend_btn"/>
-		</layout_panel>
-		<layout_panel name="teleport_btn_panel">
-			<button label="Teleportarte" name="teleport_btn" tool_tip="Ofrecer teleporte a esta persona"/>
-		</layout_panel>
-		<layout_panel name="call_btn_panel">
-			<button label="Llamar" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Colgar" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="block_btn_panel">
-			<button label="Ignorar" name="block_btn"/>
-		</layout_panel>
-		<layout_panel name="unblock_btn_panel">
-			<button label="No ignorar" name="unblock_btn"/>
-		</layout_panel>
-		<layout_panel name="volume_ctrl_panel">
-			<slider name="volume_slider" tool_tip="Volumen de la llamada" value="0.5"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_login.xml b/indra/newview/skins/minimal/xui/es/panel_login.xml
deleted file mode 100644
index 689a71e277899738bba12b0adb353b9e1f420da1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
-	<panel.string name="create_account_url">
-		http://join.secondlife.com/index.php?lang=es-ES
-	</panel.string>
-	<panel.string name="forgot_password_url">
-		http://secondlife.com/account/request.php?lang=es
-	</panel.string>
-	<layout_stack name="login_widgets">
-		<layout_panel name="login">
-			<text name="username_text">
-				Nombre de usuario:
-			</text>
-			<combo_box name="username_combo" tool_tip="El nombre de usuario que elegiste al registrarte, como bobsmith12 o Steller Sunshine"/>
-			<text name="password_text">
-				Contraseña:
-			</text>
-			<check_box label="Recordar la contraseña" name="remember_check"/>
-			<button label="Iniciar sesión" name="connect_btn"/>
-			<text name="mode_selection_text">
-				Modo:
-			</text>
-			<combo_box name="mode_combo" tool_tip="Selecciona el modo. Elige Básico para una exploración rápida y fácil y para chatear. Elige Avanzado para tener acceso a más funciones.">
-				<combo_box.item label="Básico" name="Basic"/>
-				<combo_box.item label="Avanzado" name="Advanced"/>
-			</combo_box>
-		</layout_panel>
-		<layout_panel name="links">
-			<text name="create_new_account_text">
-				Registrarme
-			</text>
-			<text name="forgot_password_text">
-				¿Olvidaste el nombre de usuario o la contraseña?
-			</text>
-			<text name="login_help">
-				¿Necesitas ayuda para conectarte?
-			</text>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/es/panel_navigation_bar.xml
deleted file mode 100644
index e8e95c3bac3f98a18bbafc80ae913772759d1d24..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="Volver a lo localización anterior"/>
-		<pull_button name="forward_btn" tool_tip="Ir una localización adelante"/>
-		<button name="home_btn" tool_tip="Teleportar a mi Base"/>
-		<location_input label="Localización" name="location_combo"/>
-		<search_combo_box label="Buscar" name="search_combo_box" tool_tip="Buscar">
-			<combo_editor label="Buscar en [SECOND_LIFE]" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
-		<label name="favorites_bar_label" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!">
-			Barra de Favoritos
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="Ver más de Mis favoritos"/>
-	</favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_people.xml b/indra/newview/skins/minimal/xui/es/panel_people.xml
deleted file mode 100644
index a06f3010d798dc3f77c0f6a78cded15b606f3e16..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/panel_people.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Gente" name="people_panel">
-	<string name="no_recent_people" value="No hay gente reciente. ¿Estás buscando gente con la que juntarte? Prueba con el botón Destinos que aparece a continuación."/>
-	<string name="no_filtered_recent_people" value="No hay gente reciente con ese nombre."/>
-	<string name="no_one_near" value="No hay nadie cerca. ¿Estás buscando gente con la que juntarte? Prueba con el botón Destinos que aparece a continuación."/>
-	<string name="no_one_filtered_near" value="No hay nadie cerca con ese nombre."/>
-	<string name="no_friends_online" value="No hay amigos conectados"/>
-	<string name="no_friends" value="No hay amigos"/>
-	<string name="no_friends_msg">
-		Haz clic con el botón derecho del ratón en un residente para agregarlo como amigo.
-¿Estás buscando gente con la que juntarte? Prueba con el botón Destinos que aparece a continuación.
-	</string>
-	<string name="no_filtered_friends_msg">
-		¿No encuentras lo que buscas? Prueba con el botón Destinos que aparece a continuación.
-	</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="[REGIÓN](Haz doble clic para abrir el mapa y pulsa la tecla Mayús y arrastra para obtener una vista panorámica)"/>
-	<string name="AltMiniMapToolTipMsg" value="[REGIÓN](Haz doble clic para teleportarte y pulsa la tecla Mayús y arrastra para obtener una vista 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"/>
-		</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="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="RECIENTE" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<button name="add_friend_btn" tool_tip="Añadir al Residente seleccionado a la lista de tus amigos"/>
-			</panel>
-		</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="teleport_btn_lp">
-				<button label="Teleportarte" 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/minimal/xui/es/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/es/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 775e343dc9903443a6b387f9ef68ba806966655a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
-	<text name="sidetray_tab_title" value="Panel lateral"/>
-	<button name="undock" tool_tip="Soltar"/>
-	<button name="dock" tool_tip="Fijar"/>
-	<button name="show_help" tool_tip="Ver ayuda"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/es/panel_status_bar.xml b/indra/newview/skins/minimal/xui/es/panel_status_bar.xml
deleted file mode 100644
index f3db35e8ece0e4a04d748e681ad3711bbcb948ba..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/es/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
-	<panel.string name="packet_loss_tooltip">
-		Pérdida de paquetes
-	</panel.string>
-	<panel.string name="bandwidth_tooltip">
-		Ancho de banda
-	</panel.string>
-	<panel.string name="time">
-		[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-	</panel.string>
-	<panel.string name="timeTooltip">
-		[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-	</panel.string>
-	<panel.string name="buycurrencylabel">
-		[AMT] L$
-	</panel.string>
-	<combo_box name="mode_combo" tool_tip="Selecciona el modo. Elige Básico para una exploración rápida y fácil y para chatear. Elige Avanzado para tener acceso a más funciones.">
-		<combo_box.item label="Modo Básico" name="Basic"/>
-		<combo_box.item label="Modo Avanzado" name="Advanced"/>
-	</combo_box>
-	<button name="media_toggle_btn" tool_tip="Iniciar/Parar todos los media (música, vídeo, páginas web)"/>
-	<button name="volume_btn" tool_tip="Control general del volumen"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/floater_camera.xml b/indra/newview/skins/minimal/xui/fr/floater_camera.xml
deleted file mode 100644
index 1d62a89ff2dbc026df6279a00a9a5c5f3743e912..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
-	<floater.string name="rotate_tooltip">
-		Faire tourner la caméra autour du point central
-	</floater.string>
-	<floater.string name="zoom_tooltip">
-		Zoomer en direction du point central
-	</floater.string>
-	<floater.string name="move_tooltip">
-		Déplacer la caméra vers le haut et le bas, la gauche et la droite
-	</floater.string>
-	<floater.string name="camera_modes_title">
-		Modes
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		Rotation - Zoom - Panoramique
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		Préréglages
-	</floater.string>
-	<floater.string name="free_mode_title">
-		Voir l&apos;objet
-	</floater.string>
-	<panel name="controls">
-		<panel name="preset_views_list">
-			<panel_camera_item name="front_view">
-				<panel_camera_item.text name="front_view_text">
-					Vue frontale
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="group_view">
-				<panel_camera_item.text name="side_view_text">
-					Vue latérale
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="rear_view">
-				<panel_camera_item.text name="rear_view_text">
-					Vue arrière
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="camera_modes_list">
-			<panel_camera_item name="object_view">
-				<panel_camera_item.text name="object_view_text">
-					Vue de l&apos;objet
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="mouselook_view">
-				<panel_camera_item.text name="mouselook_view_text">
-					Vue subjective
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="zoom" tool_tip="Zoomer en direction du point central">
-			<joystick_rotate name="cam_rotate_stick" tool_tip="Faire tourner la caméra autour du point central"/>
-			<slider_bar name="zoom_slider" tool_tip="Zoomer en direction du point central"/>
-			<joystick_track name="cam_track_stick" tool_tip="Déplacer la caméra vers le haut et le bas, la gauche et la droite"/>
-		</panel>
-	</panel>
-	<panel name="buttons">
-		<button label="" name="presets_btn" tool_tip="Préréglages"/>
-		<button label="" name="pan_btn" tool_tip="Rotation - Zoom - Panoramique"/>
-		<button label="" name="avatarview_btn" tool_tip="Modes"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/floater_help_browser.xml b/indra/newview/skins/minimal/xui/fr/floater_help_browser.xml
deleted file mode 100644
index 09d763b809d2107697f1e2db32ede60ccd0f73ce..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="AIDE RAPIDE">
-	<floater.string name="loading_text">
-		Chargement…
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="external_controls"/>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/floater_media_browser.xml b/indra/newview/skins/minimal/xui/fr/floater_media_browser.xml
deleted file mode 100644
index ba171c6363feb3d2c569fea2a9ef96268223c28b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="NAVIGATEUR DE MÉDIAS">
-	<floater.string name="home_page_url">
-		http://www.secondlife.com
-	</floater.string>
-	<floater.string name="support_page_url">
-		http://support.secondlife.com
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button label="Préc." name="back"/>
-			<button label="Suiv." name="forward"/>
-			<button label="Recharger" name="reload"/>
-			<button label="OK" name="go"/>
-		</layout_panel>
-		<layout_panel name="time_controls">
-			<button label="retour" name="rewind"/>
-			<button label="stop" name="stop"/>
-			<button label="avance" name="seek"/>
-		</layout_panel>
-		<layout_panel name="parcel_owner_controls">
-			<button label="Envoyer la page actuelle à la parcelle" name="assign"/>
-		</layout_panel>
-		<layout_panel name="external_controls">
-			<button label="Ouvrir dans mon navigateur Web" name="open_browser"/>
-			<check_box label="Toujours ouvrir dans mon navigateur Web" name="open_always"/>
-			<button label="Fermer" name="close"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/fr/floater_nearby_chat.xml
deleted file mode 100644
index 9b1b21c434b859c0e1de43a0c210605a4dd81fb5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT PRÈS DE MOI">
-	<check_box label="Traduction du chat (fournie par Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/floater_web_content.xml b/indra/newview/skins/minimal/xui/fr/floater_web_content.xml
deleted file mode 100644
index 71f44b6ec3686cbcfb440b45887179c092b081ef..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button name="back" tool_tip="Précédente"/>
-			<button name="forward" tool_tip="Suivante"/>
-			<button name="stop" tool_tip="Arrêter"/>
-			<button name="reload" tool_tip="Recharger la page"/>
-			<combo_box name="address" tool_tip="Saisir une URL ici"/>
-			<icon name="media_secure_lock_flag" tool_tip="Navigation sécurisée"/>
-			<button name="popexternal" tool_tip="Ouvrir l&apos;URL actuelle dans votre navigateur de bureau"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/inspect_avatar.xml b/indra/newview/skins/minimal/xui/fr/inspect_avatar.xml
deleted file mode 100644
index 553646f8e97afe51139fab7756b005236b88ee61..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/inspect_avatar.xml
+++ /dev/null
@@ -1,25 +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="inspect_avatar">
-	<string name="Subtitle">
-		[AGE]
-	</string>
-	<string name="Details">
-		[SL_PROFILE]
-	</string>
-	<text name="user_subtitle" value="11 mois, 3 jours"/>
-	<text name="user_details">
-		This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
-	</text>
-	<slider name="volume_slider" tool_tip="Volume de la voix" value="0.5"/>
-	<button label="Devenir amis" name="add_friend_btn"/>
-	<button label="IM" name="im_btn"/>
-	<button label="Profil" name="view_profile_btn"/>
-	<panel name="moderator_panel">
-		<button label="Désactiver le chat vocal" name="disable_voice"/>
-		<button label="Activer le chat vocal" name="enable_voice"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/inspect_object.xml b/indra/newview/skins/minimal/xui/fr/inspect_object.xml
deleted file mode 100644
index b66af7a2bf2083e60a5ae65bee5ab0396280ba22..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/inspect_object.xml
+++ /dev/null
@@ -1,48 +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="inspect_object">
-	<string name="Creator">
-		Par [CREATOR]
-	</string>
-	<string name="CreatorAndOwner">
-		De [CREATOR]
-Propriétaire [OWNER]
-	</string>
-	<string name="Price">
-		[AMOUNT] L$
-	</string>
-	<string name="PriceFree">
-		Gratuit !
-	</string>
-	<string name="Touch">
-		Toucher
-	</string>
-	<string name="Sit">
-		M&apos;asseoir
-	</string>
-	<text name="object_name" value="Test Object Name That Is actually two lines and Really Long"/>
-	<text name="object_creator">
-		par secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-	</text>
-	<text name="price_text">
-		30 000 L$
-	</text>
-	<text name="object_description">
-		This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
-	</text>
-	<text name="object_media_url">
-		http://www.superdupertest.com
-	</text>
-	<button label="Acheter" name="buy_btn"/>
-	<button label="Payer" name="pay_btn"/>
-	<button label="Prendre une copie" name="take_free_copy_btn"/>
-	<button label="Toucher" name="touch_btn"/>
-	<button label="M&apos;asseoir" name="sit_btn"/>
-	<button label="Ouvert" name="open_btn"/>
-	<icon name="secure_browsing" tool_tip="Navigation sécurisée"/>
-	<button label="Plus" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_add_wearable_gear.xml
deleted file mode 100644
index 7e7993175e7d827541f17f989e417b0c10f6f253..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
-	<menu_item_check label="Trier en commençant par le plus récent" name="sort_by_most_recent"/>
-	<menu_item_check label="Trier par nom" name="sort_by_name"/>
-	<menu_item_check label="Trier par type" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/fr/menu_attachment_other.xml
deleted file mode 100644
index f48513eb2b4005ae90d5d165c8f9a3f96d1267dd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="Voir le profil" name="Profile..."/>
-	<menu_item_call label="Devenir amis" name="Add Friend"/>
-	<menu_item_call label="IM" name="Send IM..."/>
-	<menu_item_call label="Appeler" name="Call"/>
-	<menu_item_call label="Inviter dans le groupe" name="Invite..."/>
-	<menu_item_call label="Ignorer" name="Avatar Mute"/>
-	<menu_item_call label="Signaler" name="abuse"/>
-	<menu_item_call label="Figer" name="Freeze..."/>
-	<menu_item_call label="Expulser" name="Eject..."/>
-	<menu_item_call label="Déboguer les textures" name="Debug..."/>
-	<menu_item_call label="Zoomer en avant" name="Zoom In"/>
-	<menu_item_call label="Payer" name="Pay..."/>
-	<menu_item_call label="Profil de l&apos;objet" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/fr/menu_attachment_self.xml
deleted file mode 100644
index 78198fb5a8f6e2a8c2cec399b0aba8abcc50aebc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
-	<menu_item_call label="Toucher" name="Attachment Object Touch"/>
-	<menu_item_call label="Modifier" name="Edit..."/>
-	<menu_item_call label="Détacher" name="Detach"/>
-	<menu_item_call label="M&apos;asseoir" name="Sit Down Here"/>
-	<menu_item_call label="Me lever" name="Stand Up"/>
-	<menu_item_call label="Changer de tenue" name="Change Outfit"/>
-	<menu_item_call label="Modifier ma tenue" name="Edit Outfit"/>
-	<menu_item_call label="Modifier ma silhouette" name="Edit My Shape"/>
-	<menu_item_call label="Mes amis" name="Friends..."/>
-	<menu_item_call label="Mes groupes" name="Groups..."/>
-	<menu_item_call label="Mon profil" name="Profile..."/>
-	<menu_item_call label="Déboguer les textures" name="Debug..."/>
-	<menu_item_call label="Lâcher" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/fr/menu_avatar_icon.xml
deleted file mode 100644
index 3bac25c79b82ef8770a29c044369f800f457beee..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
-	<menu_item_call label="Voir le profil" name="Show Profile"/>
-	<menu_item_call label="Envoyer IM..." name="Send IM"/>
-	<menu_item_call label="Devenir amis..." name="Add Friend"/>
-	<menu_item_call label="Supprimer cet ami..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/fr/menu_avatar_other.xml
deleted file mode 100644
index 08d1a2036157606eaf25c9516188c6656ff51d2b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="Voir le profil" name="Profile..."/>
-	<menu_item_call label="Devenir amis" name="Add Friend"/>
-	<menu_item_call label="IM" name="Send IM..."/>
-	<menu_item_call label="Appeler" name="Call"/>
-	<menu_item_call label="Inviter dans le groupe" name="Invite..."/>
-	<menu_item_call label="Ignorer" name="Avatar Mute"/>
-	<menu_item_call label="Signaler" name="abuse"/>
-	<menu_item_call label="Figer" name="Freeze..."/>
-	<menu_item_call label="Expulser" name="Eject..."/>
-	<menu_item_call label="Déboguer les textures" name="Debug..."/>
-	<menu_item_call label="Zoomer en avant" name="Zoom In"/>
-	<menu_item_call label="Payer" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/fr/menu_avatar_self.xml
deleted file mode 100644
index c7ee2e9f883428c773c5553e1b7bcb53e165297d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
-	<menu_item_call label="M&apos;asseoir" name="Sit Down Here"/>
-	<menu_item_call label="Me lever" name="Stand Up"/>
-	<context_menu label="Enlever" name="Take Off &gt;">
-		<context_menu label="Habits" name="Clothes &gt;">
-			<menu_item_call label="Chemise" name="Shirt"/>
-			<menu_item_call label="Pantalon" name="Pants"/>
-			<menu_item_call label="Jupe" name="Skirt"/>
-			<menu_item_call label="Chaussures" name="Shoes"/>
-			<menu_item_call label="Chaussettes" name="Socks"/>
-			<menu_item_call label="Veste" name="Jacket"/>
-			<menu_item_call label="Gants" name="Gloves"/>
-			<menu_item_call label="Débardeur" name="Self Undershirt"/>
-			<menu_item_call label="Caleçon" name="Self Underpants"/>
-			<menu_item_call label="Tatouage" name="Self Tattoo"/>
-			<menu_item_call label="Alpha" name="Self Alpha"/>
-			<menu_item_call label="Tous les habits" name="All Clothes"/>
-		</context_menu>
-		<context_menu label="HUD" name="Object Detach HUD"/>
-		<context_menu label="Détacher" name="Object Detach"/>
-		<menu_item_call label="Tout détacher" name="Detach All"/>
-	</context_menu>
-	<menu_item_call label="Changer de tenue" name="Chenge Outfit"/>
-	<menu_item_call label="Modifier ma tenue" name="Edit Outfit"/>
-	<menu_item_call label="Modifier ma silhouette" name="Edit My Shape"/>
-	<menu_item_call label="Mes amis" name="Friends..."/>
-	<menu_item_call label="Mes groupes" name="Groups..."/>
-	<menu_item_call label="Mon profil" name="Profile..."/>
-	<menu_item_call label="Déboguer les textures" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/fr/menu_bottomtray.xml
deleted file mode 100644
index bfdc89c5bbcf85b5ab9d0dffefd2fec7dcacfbca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
-	<menu_item_check label="Bouton Geste" name="ShowGestureButton"/>
-	<menu_item_check label="Bouton Bouger" name="ShowMoveButton"/>
-	<menu_item_check label="Bouton Affichage" name="ShowCameraButton"/>
-	<menu_item_check label="Bouton Photo" name="ShowSnapshotButton"/>
-	<menu_item_check label="Bouton Panneau latéral" name="ShowSidebarButton"/>
-	<menu_item_check label="Bouton Construire" name="ShowBuildButton"/>
-	<menu_item_check label="Bouton Rechercher" name="ShowSearchButton"/>
-	<menu_item_check label="Bouton Carte" name="ShowWorldMapButton"/>
-	<menu_item_check label="Bouton Mini-carte" name="ShowMiniMapButton"/>
-	<menu_item_call label="Couper" name="NearbyChatBar_Cut"/>
-	<menu_item_call label="Copier" name="NearbyChatBar_Copy"/>
-	<menu_item_call label="Coller" name="NearbyChatBar_Paste"/>
-	<menu_item_call label="Supprimer" name="NearbyChatBar_Delete"/>
-	<menu_item_call label="Tout sélectionner" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_attachment.xml
deleted file mode 100644
index a4ead48b6b3b37c6ccb7188a13a20ab284efc284..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
-	<menu_item_call label="Détacher" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_body_part.xml
deleted file mode 100644
index 4b6907fcc61391ca41ab4751c9107e4b705c0d8f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
-	<menu_item_call label="Remplacer" name="replace"/>
-	<menu_item_call label="Modifier" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_clothing.xml
deleted file mode 100644
index 03cc569704b335f61dbe8acc207c1e486b593f77..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
-	<menu_item_call label="Enlever" name="take_off"/>
-	<menu_item_call label="Modifier" name="edit"/>
-	<menu_item_call label="Remplacer" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_cof_gear.xml
deleted file mode 100644
index 8276d570259774f7b543165aedf107842c5cd2a1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_edit.xml b/indra/newview/skins/minimal/xui/fr/menu_edit.xml
deleted file mode 100644
index 56669f31e187a18fb90c95c98fa8e9182d73e3c7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Modifier" name="Edit">
-	<menu_item_call label="Annuler" name="Undo"/>
-	<menu_item_call label="Refaire" name="Redo"/>
-	<menu_item_call label="Couper" name="Cut"/>
-	<menu_item_call label="Copier" name="Copy"/>
-	<menu_item_call label="Coller" name="Paste"/>
-	<menu_item_call label="Supprimer" name="Delete"/>
-	<menu_item_call label="Dupliquer" name="Duplicate"/>
-	<menu_item_call label="Tout sélectionner" name="Select All"/>
-	<menu_item_call label="Désélectionner" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_favorites.xml b/indra/newview/skins/minimal/xui/fr/menu_favorites.xml
deleted file mode 100644
index 5f1545fde7ff350dd5ed696c25b6dbb0d0bfee2f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Téléporter" name="Teleport To Landmark"/>
-	<menu_item_call label="Voir/Modifier le repère" name="Landmark Open"/>
-	<menu_item_call label="Copier la SLurl" name="Copy slurl"/>
-	<menu_item_call label="Voir sur la carte" name="Show On Map"/>
-	<menu_item_call label="Copier" name="Landmark Copy"/>
-	<menu_item_call label="Coller" name="Landmark Paste"/>
-	<menu_item_call label="Supprimer" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_gesture_gear.xml
deleted file mode 100644
index 062dd0f00536dd5717ac5b506ad87c999f07af42..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
-	<menu_item_call label="Ajouter/Supprimer des favoris" name="activate"/>
-	<menu_item_call label="Copier" name="copy_gesture"/>
-	<menu_item_call label="Coller" name="paste"/>
-	<menu_item_call label="Copier l&apos;UUID" name="copy_uuid"/>
-	<menu_item_call label="Enregistrer dans la tenue actuelle" name="save_to_outfit"/>
-	<menu_item_call label="Modifier" name="edit_gesture"/>
-	<menu_item_call label="Inspecter" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_group_plus.xml b/indra/newview/skins/minimal/xui/fr/menu_group_plus.xml
deleted file mode 100644
index 0db5afedc795c54c793826fbd8752defc25c5785..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_call label="Rejoindre des groupes..." name="item_join"/>
-	<menu_item_call label="Nouveau groupe..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/fr/menu_hide_navbar.xml
deleted file mode 100644
index 20af901ddc6554814c4953979650a6873e109b48..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
-	<menu_item_check label="Afficher la barre de navigation" name="ShowNavbarNavigationPanel"/>
-	<menu_item_check label="Afficher la barre des favoris" name="ShowNavbarFavoritesPanel"/>
-	<menu_item_check label="Afficher la mini-barre d&apos;emplacement" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/fr/menu_im_well_button.xml
deleted file mode 100644
index 8ef1529e6b44106431b4d5f4251c3410180993fe..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/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/minimal/xui/fr/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/fr/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 4d9a10305811dc578cc839c89f7bd87836bbac9e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
-	<menu_item_call label="Mettre fin à la session" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/fr/menu_imchiclet_group.xml
deleted file mode 100644
index 59f97d8b484f8d5d378cdeb19d5cb8b2f1302d59..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
-	<menu_item_call label="Profil du groupe" name="Show Profile"/>
-	<menu_item_call label="Afficher la session" name="Chat"/>
-	<menu_item_call label="Mettre fin à la session" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/fr/menu_imchiclet_p2p.xml
deleted file mode 100644
index ecc8cee4139a35bf47d5f4a7759b7fed9592e9c6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
-	<menu_item_call label="Voir le profil" name="Show Profile"/>
-	<menu_item_call label="Devenir amis" name="Add Friend"/>
-	<menu_item_call label="Afficher la session" name="Send IM"/>
-	<menu_item_call label="Mettre fin à la session" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml
deleted file mode 100644
index c3240fa541d866f6e3ab25f878b8bacb4bfdea43..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="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="IM" name="im"/>
-	<menu_item_call label="Appeler" name="call"/>
-	<menu_item_call label="Téléporter" name="teleport"/>
-	<menu_item_call label="Ignorer" name="block"/>
-	<menu_item_call label="Ne plus ignorer" name="unblock"/>
-	<menu_item_call label="Signaler" name="report"/>
-	<menu_item_call label="Figer" name="freeze"/>
-	<menu_item_call label="Expulser" name="eject"/>
-	<menu_item_call label="Éjecter" name="kick"/>
-	<menu_item_call label="Représentant de l&apos;Assistance client" name="csr"/>
-	<menu_item_call label="Déboguer les textures" name="debug"/>
-	<menu_item_call label="Situer sur la carte" name="find_on_map"/>
-	<menu_item_call label="Zoomer en avant" name="zoom_in"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_inspect_object_gear.xml
deleted file mode 100644
index 074bb54cdc512824bf538283af811694d7e2f007..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
-	<menu_item_call label="Toucher" name="touch"/>
-	<menu_item_call label="M&apos;asseoir" name="sit"/>
-	<menu_item_call label="Payer" name="pay"/>
-	<menu_item_call label="Acheter" name="buy"/>
-	<menu_item_call label="Prendre" name="take"/>
-	<menu_item_call label="Prendre une copie" name="take_copy"/>
-	<menu_item_call label="Ouvrir" name="open"/>
-	<menu_item_call label="Modifier" name="edit"/>
-	<menu_item_call label="Porter" name="wear"/>
-	<menu_item_call label="Ajouter" name="add"/>
-	<menu_item_call label="Signaler" name="report"/>
-	<menu_item_call label="Ignorer" name="block"/>
-	<menu_item_call label="Zoomer en avant" name="zoom_in"/>
-	<menu_item_call label="Supprimer" name="remove"/>
-	<menu_item_call label="En savoir plus" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml
deleted file mode 100644
index fd48aa4f7d7bb76329cd11c989bff4ceab786e62..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Self Pie">
-	<menu_item_call label="M&apos;asseoir" name="Sit Down Here"/>
-	<menu_item_call label="Me lever" name="Stand Up"/>
-	<menu_item_call label="Mes amis" name="Friends..."/>
-	<menu_item_call label="Mon profil" name="Profile..."/>
-	<menu_item_call label="Déboguer les textures" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/fr/menu_inv_offer_chiclet.xml
deleted file mode 100644
index a9b2883cca87235c2b8221dca043b545bd0b241d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
-	<menu_item_call label="Fermer" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inventory.xml b/indra/newview/skins/minimal/xui/fr/menu_inventory.xml
deleted file mode 100644
index a2279cf0ac4d91bed37ec79746a998c2042a46ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Partager" name="Share"/>
-	<menu_item_call label="Acheter" name="Task Buy"/>
-	<menu_item_call label="Ouvrir" name="Task Open"/>
-	<menu_item_call label="Jouer" name="Task Play"/>
-	<menu_item_call label="Propriétés" name="Task Properties"/>
-	<menu_item_call label="Renommer" name="Task Rename"/>
-	<menu_item_call label="Supprimer" name="Task Remove"/>
-	<menu_item_call label="Vider la corbeille" name="Empty Trash"/>
-	<menu_item_call label="Vider les objets trouvés" name="Empty Lost And Found"/>
-	<menu_item_call label="Nouveau dossier" name="New Folder"/>
-	<menu_item_call label="Nouveau script" name="New Script"/>
-	<menu_item_call label="Nouvelle note" name="New Note"/>
-	<menu_item_call label="Nouveau geste" name="New Gesture"/>
-	<menu label="Nouveaux habits" name="New Clothes">
-		<menu_item_call label="Nouvelle chemise" name="New Shirt"/>
-		<menu_item_call label="Nouveau pantalon" name="New Pants"/>
-		<menu_item_call label="Nouvelles chaussures" name="New Shoes"/>
-		<menu_item_call label="Nouvelles chaussettes" name="New Socks"/>
-		<menu_item_call label="Nouvelle veste" name="New Jacket"/>
-		<menu_item_call label="Nouvelle jupe" name="New Skirt"/>
-		<menu_item_call label="Nouveaux gants" name="New Gloves"/>
-		<menu_item_call label="Nouveau débardeur" name="New Undershirt"/>
-		<menu_item_call label="Nouveau caleçon" name="New Underpants"/>
-		<menu_item_call label="Nouveau masque alpha" name="New Alpha Mask"/>
-		<menu_item_call label="Nouveau tatouage" name="New Tattoo"/>
-	</menu>
-	<menu label="Nouvelles parties du corps" name="New Body Parts">
-		<menu_item_call label="Nouvelle silhouette" name="New Shape"/>
-		<menu_item_call label="Nouvelle peau" name="New Skin"/>
-		<menu_item_call label="Nouveaux cheveux" name="New Hair"/>
-		<menu_item_call label="Nouveaux yeux" name="New Eyes"/>
-	</menu>
-	<menu label="Changer de type" name="Change Type">
-		<menu_item_call label="Défaut" name="Default"/>
-		<menu_item_call label="Gants" name="Gloves"/>
-		<menu_item_call label="Veste" name="Jacket"/>
-		<menu_item_call label="Pantalon" name="Pants"/>
-		<menu_item_call label="Silhouette" name="Shape"/>
-		<menu_item_call label="Chaussures" name="Shoes"/>
-		<menu_item_call label="Chemise" name="Shirt"/>
-		<menu_item_call label="Jupe" name="Skirt"/>
-		<menu_item_call label="Caleçon" name="Underpants"/>
-		<menu_item_call label="Débardeur" name="Undershirt"/>
-	</menu>
-	<menu_item_call label="Téléporter" name="Landmark Open"/>
-	<menu_item_call label="Ouvrir" name="Animation Open"/>
-	<menu_item_call label="Ouvrir" name="Sound Open"/>
-	<menu_item_call label="Remplacer la tenue actuelle" name="Replace Outfit"/>
-	<menu_item_call label="Ajouter à la tenue actuelle" name="Add To Outfit"/>
-	<menu_item_call label="Enlever de la tenue actuelle" name="Remove From Outfit"/>
-	<menu_item_call label="Trouver l&apos;original" name="Find Original"/>
-	<menu_item_call label="Purger l&apos;objet" name="Purge Item"/>
-	<menu_item_call label="Restaurer l&apos;objet" name="Restore Item"/>
-	<menu_item_call label="Ouvrir" name="Open"/>
-	<menu_item_call label="Ouvrir l&apos;original" name="Open Original"/>
-	<menu_item_call label="Propriétés" name="Properties"/>
-	<menu_item_call label="Renommer" name="Rename"/>
-	<menu_item_call label="Copier l&apos;UUID (identifiant universel unique)" name="Copy Asset UUID"/>
-	<menu_item_call label="Copier" name="Copy"/>
-	<menu_item_call label="Coller" name="Paste"/>
-	<menu_item_call label="Coller comme lien" name="Paste As Link"/>
-	<menu_item_call label="Supprimer" name="Remove Link"/>
-	<menu_item_call label="Supprimer" name="Delete"/>
-	<menu_item_call label="Supprimer le dossier système" name="Delete System Folder"/>
-	<menu_item_call label="Démarrer le chat conférence" name="Conference Chat Folder"/>
-	<menu_item_call label="Jouer" name="Sound Play"/>
-	<menu_item_call label="À propos du repère" name="About Landmark"/>
-	<menu_item_call label="Jouer dans Second Life" name="Animation Play"/>
-	<menu_item_call label="Jouer localement" name="Animation Audition"/>
-	<menu_item_call label="Envoyer un message instantané" name="Send Instant Message"/>
-	<menu_item_call label="Offrir de téléporter..." name="Offer Teleport..."/>
-	<menu_item_call label="Démarrer le chat conférence" name="Conference Chat"/>
-	<menu_item_call label="Activer" name="Activate"/>
-	<menu_item_call label="Désactiver" name="Deactivate"/>
-	<menu_item_call label="Enregistrer sous" name="Save As"/>
-	<menu_item_call label="Détacher de vous" name="Detach From Yourself"/>
-	<menu_item_call label="Porter" name="Wearable And Object Wear"/>
-	<menu label="Attacher à" name="Attach To"/>
-	<menu label="Attacher au HUD " name="Attach To HUD"/>
-	<menu_item_call label="Modifier" name="Wearable Edit"/>
-	<menu_item_call label="Ajouter" name="Wearable Add"/>
-	<menu_item_call label="Enlever" name="Take Off"/>
-	<menu_item_call label="--aucune option--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/fr/menu_inventory_add.xml
deleted file mode 100644
index fe096b4a7e1d3ab0287787a7e70a60be241e443b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
-	<menu label="Importer" name="upload">
-		<menu_item_call label="Image ([COST] L$)..." name="Upload Image"/>
-		<menu_item_call label="Son ([COST] L$)..." name="Upload Sound"/>
-		<menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/>
-		<menu_item_call label="Lot ([COST] L$ par fichier)..." name="Bulk Upload"/>
-		<menu_item_call label="Définir les droits de chargement par défaut" name="perm prefs"/>
-	</menu>
-	<menu_item_call label="Nouveau dossier" name="New Folder"/>
-	<menu_item_call label="Nouveau script" name="New Script"/>
-	<menu_item_call label="Nouvelle note" name="New Note"/>
-	<menu_item_call label="Nouveau geste" name="New Gesture"/>
-	<menu label="Nouveaux habits" name="New Clothes">
-		<menu_item_call label="Nouvelle chemise" name="New Shirt"/>
-		<menu_item_call label="Nouveau pantalon" name="New Pants"/>
-		<menu_item_call label="Nouvelles chaussures" name="New Shoes"/>
-		<menu_item_call label="Nouvelles chaussettes" name="New Socks"/>
-		<menu_item_call label="Nouvelle veste" name="New Jacket"/>
-		<menu_item_call label="Nouvelle jupe" name="New Skirt"/>
-		<menu_item_call label="Nouveaux gants" name="New Gloves"/>
-		<menu_item_call label="Nouveau débardeur" name="New Undershirt"/>
-		<menu_item_call label="Nouveau caleçon" name="New Underpants"/>
-		<menu_item_call label="Nouvel alpha" name="New Alpha"/>
-		<menu_item_call label="Nouveau tatouage" name="New Tattoo"/>
-	</menu>
-	<menu label="Nouvelles parties du corps" name="New Body Parts">
-		<menu_item_call label="Nouvelle silhouette" name="New Shape"/>
-		<menu_item_call label="Nouvelle peau" name="New Skin"/>
-		<menu_item_call label="Nouveaux cheveux" name="New Hair"/>
-		<menu_item_call label="Nouveaux yeux" name="New Eyes"/>
-	</menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/fr/menu_inventory_gear_default.xml
deleted file mode 100644
index f28918ae1421eebbac64771c05266973a8ed74f3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
-	<menu_item_call label="Nouvelle fenêtre d&apos;inventaire" name="new_window"/>
-	<menu_item_check label="Trier par nom" name="sort_by_name"/>
-	<menu_item_check label="Trier en commençant par le plus récent" name="sort_by_recent"/>
-	<menu_item_check label="Dossiers système en premier" name="sort_system_folders_to_top"/>
-	<menu_item_call label="Afficher les filtres" name="show_filters"/>
-	<menu_item_call label="Réinitialiser les filtres" name="reset_filters"/>
-	<menu_item_call label="Fermer tous les dossiers" name="close_folders"/>
-	<menu_item_call label="Vider les objets trouvés" name="empty_lostnfound"/>
-	<menu_item_call label="Enregistrer la texture sous" name="Save Texture As"/>
-	<menu_item_call label="Partager" name="Share"/>
-	<menu_item_call label="Trouver l&apos;original" name="Find Original"/>
-	<menu_item_call label="Trouver tous les liens" name="Find All Links"/>
-	<menu_item_call label="Vider la corbeille" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_land.xml b/indra/newview/skins/minimal/xui/fr/menu_land.xml
deleted file mode 100644
index b84daee3ae90862a9994a5b34b6420fc6b680a4f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
-	<menu_item_call label="À propos du terrain" name="Place Information..."/>
-	<menu_item_call label="M&apos;asseoir ici" name="Sit Here"/>
-	<menu_item_call label="Acheter ce terrain" name="Land Buy"/>
-	<menu_item_call label="Acheter un pass" name="Land Buy Pass"/>
-	<menu_item_call label="Construire" name="Create"/>
-	<menu_item_call label="Modifier le terrain" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_landmark.xml b/indra/newview/skins/minimal/xui/fr/menu_landmark.xml
deleted file mode 100644
index 73eaa4af7e367f7d8624ed40dc278ee2eb4584ab..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
-	<menu_item_call label="Copier la SLurl" name="copy"/>
-	<menu_item_call label="Supprimer" name="delete"/>
-	<menu_item_call label="Créer un favori" name="pick"/>
-	<menu_item_call label="Ajouter à la barre des favoris" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_login.xml b/indra/newview/skins/minimal/xui/fr/menu_login.xml
deleted file mode 100644
index 400c77e51a5746e102d3cd07295a9bfae67e1be4..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_login.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
-	<menu label="Moi" name="File">
-		<menu_item_call label="Préférences" name="Preferences..."/>
-		<menu_item_call label="Quitter [APP_NAME]" name="Quit"/>
-	</menu>
-	<menu label="Aide" name="Help">
-		<menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/>
-		<menu_item_call label="À propos de [APP_NAME]" name="About Second Life"/>
-	</menu>
-	<menu_item_check label="Afficher le menu de débogage" name="Show Debug Menu"/>
-	<menu label="Débogage" name="Debug">
-		<menu_item_call label="Afficher les paramètres de débogage" name="Debug Settings"/>
-		<menu_item_call label="Paramètres de couleurs/interface" name="UI/Color Settings"/>
-		<menu_item_call label="Outil d&apos;aperçu XUI" name="UI Preview Tool"/>
-		<menu label="Tests de l&apos;interface" name="UI Tests"/>
-		<menu_item_call label="Définir la taille de la fenêtre..." name="Set Window Size..."/>
-		<menu_item_call label="Afficher les conditions d&apos;utilisation" name="TOS"/>
-		<menu_item_call label="Afficher le message critique" name="Critical"/>
-		<menu_item_call label="Test du navigateur de médias" name="Web Browser Test"/>
-		<menu_item_call label="Test de la fenêtre flottante du contenu Web" name="Web Content Floater Test"/>
-		<menu_item_check label="Afficher le sélecteur de grille" name="Show Grid Picker"/>
-		<menu_item_call label="Afficher la console des notifications" name="Show Notifications Console"/>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_mini_map.xml b/indra/newview/skins/minimal/xui/fr/menu_mini_map.xml
deleted file mode 100644
index b9d0a70383efa6577d6ff7a53b62561d804f9a59..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Zoom rapproché" name="Zoom Close"/>
-	<menu_item_call label="Zoom moyen" name="Zoom Medium"/>
-	<menu_item_call label="Zoom éloigné" name="Zoom Far"/>
-	<menu_item_call label="Zoom par défaut" name="Zoom Default"/>
-	<menu_item_check label="Faire pivoter la carte" name="Rotate Map"/>
-	<menu_item_check label="Centrage auto" name="Auto Center"/>
-	<menu_item_call label="Arrêter de suivre" name="Stop Tracking"/>
-	<menu_item_call label="Carte du monde" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_navbar.xml b/indra/newview/skins/minimal/xui/fr/menu_navbar.xml
deleted file mode 100644
index 08d810b653cf7f8b0f93cc148f9409b44f3fdfd9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
-	<menu_item_check label="Voir les coordonnées" name="Show Coordinates"/>
-	<menu_item_check label="Afficher les propriétés de la parcelle" name="Show Parcel Properties"/>
-	<menu_item_call label="Repère" name="Landmark"/>
-	<menu_item_call label="Couper" name="Cut"/>
-	<menu_item_call label="Copier" name="Copy"/>
-	<menu_item_call label="Coller" name="Paste"/>
-	<menu_item_call label="Supprimer" name="Delete"/>
-	<menu_item_call label="Tout sélectionner" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/fr/menu_nearby_chat.xml
deleted file mode 100644
index 99e22aeff744d2d199e00b831fbc0d49d2b85650..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
-	<menu_item_call label="Afficher les personnes près de vous..." name="nearby_people"/>
-	<menu_item_check label="Afficher le texte ignoré" name="muted_text"/>
-	<menu_item_check label="Afficher les icônes des Buddy" name="show_buddy_icons"/>
-	<menu_item_check label="Afficher les noms" name="show_names"/>
-	<menu_item_check label="Afficher les icônes et les noms" name="show_icons_and_names"/>
-	<menu_item_call label="Taille de la police" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/fr/menu_notification_well_button.xml
deleted file mode 100644
index 323bfdbf165831da9cb17f451ec5c61eac895634..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
-	<menu_item_call label="Tout fermer" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_object.xml b/indra/newview/skins/minimal/xui/fr/menu_object.xml
deleted file mode 100644
index a50a9df4b10dd5b88847aaa2fbac7204b603e53c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
-	<menu_item_call label="Toucher" name="Object Touch">
-		<menu_item_call.on_enable name="EnableTouch" parameter="Toucher"/>
-	</menu_item_call>
-	<menu_item_call label="Modifier" name="Edit..."/>
-	<menu_item_call label="Construire" name="Build"/>
-	<menu_item_call label="Ouvrir" name="Open"/>
-	<menu_item_call label="M&apos;asseoir ici" name="Object Sit"/>
-	<menu_item_call label="Me lever" name="Object Stand Up"/>
-	<menu_item_call label="Profil de l&apos;objet" name="Object Inspect"/>
-	<menu_item_call label="Zoomer en avant" name="Zoom In"/>
-	<context_menu label="Porter" name="Put On">
-		<menu_item_call label="Porter" name="Wear"/>
-		<menu_item_call label="Ajouter" name="Add"/>
-		<context_menu label="Attacher" name="Object Attach"/>
-		<context_menu label="Attacher HUD" name="Object Attach HUD"/>
-	</context_menu>
-	<context_menu label="Supprimer" name="Remove">
-		<menu_item_call label="Signaler une infraction" name="Report Abuse..."/>
-		<menu_item_call label="Ignorer" name="Object Mute"/>
-		<menu_item_call label="Retour" name="Return..."/>
-		<menu_item_call label="Supprimer" name="Delete"/>
-	</context_menu>
-	<menu_item_call label="Prendre" name="Pie Object Take"/>
-	<menu_item_call label="Prendre une copie" name="Take Copy"/>
-	<menu_item_call label="Payer" name="Pay..."/>
-	<menu_item_call label="Acheter" name="Buy..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_object_icon.xml b/indra/newview/skins/minimal/xui/fr/menu_object_icon.xml
deleted file mode 100644
index 69f8e88a0deb4f58475dab5c7850beaf115d00de..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_outfit_gear.xml
deleted file mode 100644
index 5db7f176b544ea9c137fb2d9ef559b394f389def..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
-	<menu_item_call label="Porter - Remplacer la tenue actuelle" name="wear"/>
-	<menu_item_call label="Porter - Ajouter à la tenue actuelle" name="wear_add"/>
-	<menu_item_call label="Enlever - Supprimer de la tenue actuelle" name="take_off"/>
-	<menu label="Nouveaux habits" name="New Clothes">
-		<menu_item_call label="Nouvelle chemise" name="New Shirt"/>
-		<menu_item_call label="Nouveau pantalon" name="New Pants"/>
-		<menu_item_call label="Nouvelles chaussures" name="New Shoes"/>
-		<menu_item_call label="Nouvelles chaussettes" name="New Socks"/>
-		<menu_item_call label="Nouvelle veste" name="New Jacket"/>
-		<menu_item_call label="Nouvelle jupe" name="New Skirt"/>
-		<menu_item_call label="Nouveaux gants" name="New Gloves"/>
-		<menu_item_call label="Nouveau débardeur" name="New Undershirt"/>
-		<menu_item_call label="Nouveau caleçon" name="New Underpants"/>
-		<menu_item_call label="Nouvel alpha" name="New Alpha"/>
-		<menu_item_call label="Nouveau tatouage" name="New Tattoo"/>
-	</menu>
-	<menu label="Nouvelles parties du corps" name="New Body Parts">
-		<menu_item_call label="Nouvelle silhouette" name="New Shape"/>
-		<menu_item_call label="Nouvelle peau" name="New Skin"/>
-		<menu_item_call label="Nouveaux cheveux" name="New Hair"/>
-		<menu_item_call label="Nouveaux yeux" name="New Eyes"/>
-	</menu>
-	<menu_item_call label="Renommer la tenue" name="rename"/>
-	<menu_item_call label="Supprimer la tenue" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/fr/menu_outfit_tab.xml
deleted file mode 100644
index 2a7f618e0771562c896569050c466f663e9ad6c3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
-	<menu_item_call label="Porter - Remplacer la tenue actuelle" name="wear_replace"/>
-	<menu_item_call label="Porter - Ajouter à la tenue actuelle" name="wear_add"/>
-	<menu_item_call label="Enlever - Supprimer de la tenue actuelle" name="take_off"/>
-	<menu_item_call label="Modifier la tenue" name="edit"/>
-	<menu_item_call label="Renommer la tenue" name="rename"/>
-	<menu_item_call label="Supprimer la tenue" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_participant_list.xml b/indra/newview/skins/minimal/xui/fr/menu_participant_list.xml
deleted file mode 100644
index f91a30f6bb196bcc7acc8ac816af29c35dd8d302..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
-	<menu_item_check label="Trier par nom" name="SortByName"/>
-	<menu_item_check label="Trier par intervenants récents" name="SortByRecentSpeakers"/>
-	<menu_item_call label="Voir le profil" name="View Profile"/>
-	<menu_item_call label="Devenir amis" name="Add 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_check label="Afficher les icônes des résidents" name="View Icons"/>
-	<menu_item_check label="Bloquer le chat vocal" name="Block/Unblock"/>
-	<menu_item_check label="Ignorer le texte" name="MuteText"/>
-	<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>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_friends_view_sort.xml
deleted file mode 100644
index a6170a6c162ae199165b1d7375df4d81d58f04af..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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_call label="Afficher les résidents et les objets ignorés" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_groups.xml b/indra/newview/skins/minimal/xui/fr/menu_people_groups.xml
deleted file mode 100644
index eb51b4cf7e8b485062e98ebf229f1ef3e624c589..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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="Activer" name="Activate"/>
-	<menu_item_call label="Quitter" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_groups_view_sort.xml
deleted file mode 100644
index 34f949cf2ce9351a7a73f843adb036222e83ee65..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Afficher les icônes des groupes" name="Display Group Icons"/>
-	<menu_item_call label="Quitter le groupe sélectionné" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/fr/menu_people_nearby.xml
deleted file mode 100644
index f153ed15ae7610a6535ec3ddb0cc54ae7861923e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?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="Téléporter" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/fr/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 8400ec0a14dcfe89812b4ecf7c0d4c6b92b39b8d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?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"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 45f97e062e48271c99c3f22eba1fdd32a0dcd7b4..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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_call label="Afficher les résidents et les objets interdits" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/fr/menu_people_recent_view_sort.xml
deleted file mode 100644
index 93b90ae61cf503172c8e97f12a02566a5e65b055..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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"/>
-	<menu_item_call label="Afficher les résidents et les objets ignorés" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_picks.xml b/indra/newview/skins/minimal/xui/fr/menu_picks.xml
deleted file mode 100644
index 7d7174d43ccad934af05bb513a5ae3dcb23ccd83..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
-	<menu_item_call label="Infos" name="pick_info"/>
-	<menu_item_call label="Modifier" name="pick_edit"/>
-	<menu_item_call label="Téléporter" name="pick_teleport"/>
-	<menu_item_call label="Carte" name="pick_map"/>
-	<menu_item_call label="Supprimer" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/fr/menu_picks_plus.xml
deleted file mode 100644
index b6cde6d6e2260b7f3ffe7ec8377d196066487abd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
-	<menu_item_call label="Nouveau favori" name="create_pick"/>
-	<menu_item_call label="Nouvelle petite annonce" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_place.xml b/indra/newview/skins/minimal/xui/fr/menu_place.xml
deleted file mode 100644
index 6b0f4db75267d22ee684d9cba8c0dafa5d3bf09a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
-	<menu_item_call label="Enregistrer comme repère" name="landmark"/>
-	<menu_item_call label="Créer un favori" name="pick"/>
-	<menu_item_call label="Acheter un pass" name="pass"/>
-	<menu_item_call label="Modifier" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/fr/menu_place_add_button.xml
deleted file mode 100644
index 92f9e7719d1aff1c526d713206354b730fa19098..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
-	<menu_item_call label="Ajouter un dossier" name="add_folder"/>
-	<menu_item_call label="Ajouter un repère" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/fr/menu_places_gear_folder.xml
deleted file mode 100644
index 3570bdec7f4b355fb4baceccfc4ed4a3f7921eeb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
-	<menu_item_call label="Ajouter un repère" name="add_landmark"/>
-	<menu_item_call label="Ajouter un dossier" name="add_folder"/>
-	<menu_item_call label="Couper" name="cut"/>
-	<menu_item_call label="Copier" name="copy_folder"/>
-	<menu_item_call label="Coller" name="paste"/>
-	<menu_item_call label="Renommer" name="rename"/>
-	<menu_item_call label="Supprimer" name="delete"/>
-	<menu_item_call label="Agrandir" name="expand"/>
-	<menu_item_call label="Réduire" name="collapse"/>
-	<menu_item_call label="Développer tous les dossiers" name="expand_all"/>
-	<menu_item_call label="Réduire tous les dossiers" name="collapse_all"/>
-	<menu_item_check label="Trier par date" name="sort_by_date"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/fr/menu_places_gear_landmark.xml
deleted file mode 100644
index 5491c1b3fcf7803e1073d1dd90eb68b5d039a7c9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
-	<menu_item_call label="Téléporter" name="teleport"/>
-	<menu_item_call label="Plus d&apos;informations" name="more_info"/>
-	<menu_item_call label="Voir sur la carte" name="show_on_map"/>
-	<menu_item_call label="Ajouter un repère" name="add_landmark"/>
-	<menu_item_call label="Ajouter un dossier" name="add_folder"/>
-	<menu_item_call label="Couper" name="cut"/>
-	<menu_item_call label="Copier le repère" name="copy_landmark"/>
-	<menu_item_call label="Copier la SLurl" name="copy_slurl"/>
-	<menu_item_call label="Coller" name="paste"/>
-	<menu_item_call label="Renommer" name="rename"/>
-	<menu_item_call label="Supprimer" name="delete"/>
-	<menu_item_call label="Développer tous les dossiers" name="expand_all"/>
-	<menu_item_call label="Réduire tous les dossiers" name="collapse_all"/>
-	<menu_item_check label="Trier par date" name="sort_by_date"/>
-	<menu_item_call label="Créer un favori" name="create_pick"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/fr/menu_profile_overflow.xml
deleted file mode 100644
index ddf898b79164bd68d3234516fe68f0f86fa6a047..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
-	<menu_item_call label="Carte" name="show_on_map"/>
-	<menu_item_call label="Payer" name="pay"/>
-	<menu_item_call label="Partager" name="share"/>
-	<menu_item_call label="Ignorer" name="block"/>
-	<menu_item_call label="Ne plus ignorer" name="unblock"/>
-	<menu_item_call label="Éjecter" name="kick"/>
-	<menu_item_call label="Figer" name="freeze"/>
-	<menu_item_call label="Libérer" name="unfreeze"/>
-	<menu_item_call label="Représentant du service consommateur" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/fr/menu_save_outfit.xml
deleted file mode 100644
index f78db411b39e706be8abdcc8c87b8e280d93a6df..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
-	<menu_item_call label="Enregistrer" name="save_outfit"/>
-	<menu_item_call label="Enregistrer sous" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/fr/menu_script_chiclet.xml
deleted file mode 100644
index 46efa30bd662b14fb35ff6e94173d6f83a0e03a8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
-	<menu_item_call label="Fermer" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_slurl.xml b/indra/newview/skins/minimal/xui/fr/menu_slurl.xml
deleted file mode 100644
index ddfa5c0849c435c77139be7852942d804388de2d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="À propos de l&apos;URL" name="about_url"/>
-	<menu_item_call label="Téléporter vers l&apos;URL" name="teleport_to_url"/>
-	<menu_item_call label="Carte" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_teleport_history_gear.xml
deleted file mode 100644
index 3dea662cc24436a1e7c512a7eb42426aa92c5d7a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
-	<menu_item_call label="Développer tous les dossiers" name="Expand all folders"/>
-	<menu_item_call label="Réduire tous les dossiers" name="Collapse all folders"/>
-	<menu_item_call label="Effacer l&apos;historique des téléportations" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/fr/menu_teleport_history_item.xml
deleted file mode 100644
index fb4582dbce327c2d7bce04ff325cbcaf3deabe84..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Téléporter" name="Teleport"/>
-	<menu_item_call label="Plus d&apos;informations" name="More Information"/>
-	<menu_item_call label="Copier dans le presse-papiers" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/fr/menu_teleport_history_tab.xml
deleted file mode 100644
index 369680985de1169a384d9418f46d3127589401de..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Ouvrir" name="TabOpen"/>
-	<menu_item_call label="Fermer" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_text_editor.xml b/indra/newview/skins/minimal/xui/fr/menu_text_editor.xml
deleted file mode 100644
index b6f429aec999c21257dec04622fd92e065e2b938..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
-	<menu_item_call label="Couper" name="Cut"/>
-	<menu_item_call label="Copier" name="Copy"/>
-	<menu_item_call label="Coller" name="Paste"/>
-	<menu_item_call label="Supprimer" name="Delete"/>
-	<menu_item_call label="Tout sélectionner" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/fr/menu_topinfobar.xml
deleted file mode 100644
index dc68f40fe73db644230fd0b4e49440f72a651d0a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
-	<menu_item_check label="Afficher les coordonnées" name="Show Coordinates"/>
-	<menu_item_check label="Afficher les propriétés de la parcelle" name="Show Parcel Properties"/>
-	<menu_item_call label="Repère" name="Landmark"/>
-	<menu_item_call label="Copier" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_agent.xml b/indra/newview/skins/minimal/xui/fr/menu_url_agent.xml
deleted file mode 100644
index 5ed627fbc336da58bbcd1bf9bcf89f55eeb66f4e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?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="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/minimal/xui/fr/menu_url_group.xml b/indra/newview/skins/minimal/xui/fr/menu_url_group.xml
deleted file mode 100644
index de90c3ff7e5b4551cdbf7831792353d0e817f5c6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Voir le profil du groupe" name="show_group"/>
-	<menu_item_call label="Copier le groupe 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/minimal/xui/fr/menu_url_http.xml b/indra/newview/skins/minimal/xui/fr/menu_url_http.xml
deleted file mode 100644
index 5e963529998db8238df8c7c4edf9d2348c6a3fe6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Ouvrir la page Web" name="url_open"/>
-	<menu_item_call label="Ouvrir dans un navigateur interne" name="url_open_internal"/>
-	<menu_item_call label="Ouvrir dans un navigateur externe" name="url_open_external"/>
-	<menu_item_call label="Copier l&apos;URL dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/fr/menu_url_inventory.xml
deleted file mode 100644
index 8ab88b4be7b6858d3efe4f0f2b22e5161efed49d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Afficher l&apos;article d&apos;inventaire" name="show_item"/>
-	<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/minimal/xui/fr/menu_url_map.xml b/indra/newview/skins/minimal/xui/fr/menu_url_map.xml
deleted file mode 100644
index 67e6986f5d920a14201d49f9bbfc24c7186af4b0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Voir sur la carte" name="show_on_map"/>
-	<menu_item_call label="Me téléporter à cet endroit" name="teleport_to_location"/>
-	<menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/fr/menu_url_objectim.xml
deleted file mode 100644
index f581c3ef9d8f24d51215f3f1fe9de5cd6736af2f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?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="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"/>
-	<menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/fr/menu_url_parcel.xml
deleted file mode 100644
index 07b0eeca499ac122802ee00d3512948a9b398d1a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Afficher les informations sur la parcelle" name="show_parcel"/>
-	<menu_item_call label="Voir sur la carte" name="show_on_map"/>
-	<menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/fr/menu_url_slapp.xml
deleted file mode 100644
index f4b7e212caf7a8c539d8303cf40fe5f424fbc8d8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Exécuter cette commande" name="run_slapp"/>
-	<menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/fr/menu_url_slurl.xml
deleted file mode 100644
index e44943cf1568f90e7fba23b153ec731163b192fe..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Afficher les informations sur ce lieu" name="show_place"/>
-	<menu_item_call label="Voir sur la carte" name="show_on_map"/>
-	<menu_item_call label="Me téléporter à cet endroit" name="teleport_to_location"/>
-	<menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/fr/menu_url_teleport.xml
deleted file mode 100644
index a5075a2740d2003df8d7bb4e05ccc7da4f257a79..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Me téléporter à cet endroit." name="teleport"/>
-	<menu_item_call label="Voir sur la carte" name="show_on_map"/>
-	<menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_viewer.xml b/indra/newview/skins/minimal/xui/fr/menu_viewer.xml
deleted file mode 100644
index bd1c077f529ab35c920b3220f8eb06ae94aa545f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
-	<menu label="Aide" name="Help">
-		<menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/>
-	</menu>
-	<menu label="Avancé" name="Advanced">
-		<menu label="Raccourcis" name="Shortcuts">
-			<menu_item_check label="Voler" name="Fly"/>
-			<menu_item_call label="Fermer la fenêtre" name="Close Window"/>
-			<menu_item_call label="Fermer toutes les fenêtres" name="Close All Windows"/>
-			<menu_item_call label="Réinitialiser la vue" name="Reset View"/>
-		</menu>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/fr/menu_wearable_list_item.xml
deleted file mode 100644
index 187cb4bcd2c996e45242d700cae939f068be0cec..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
-	<menu_item_call label="Remplacer" name="wear_replace"/>
-	<menu_item_call label="Porter" name="wear_wear"/>
-	<menu_item_call label="Ajouter" name="wear_add"/>
-	<menu_item_call label="Enlever / Détacher" name="take_off_or_detach"/>
-	<menu_item_call label="Détacher" name="detach"/>
-	<context_menu label="Attacher à" name="wearable_attach_to"/>
-	<context_menu label="Attacher au HUD" name="wearable_attach_to_hud"/>
-	<menu_item_call label="Enlever" name="take_off"/>
-	<menu_item_call label="Modifier" name="edit"/>
-	<menu_item_call label="Profil de l&apos;article" name="object_profile"/>
-	<menu_item_call label="Afficher l&apos;original" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_wearing_gear.xml
deleted file mode 100644
index 0ca9fe18791d1bfe68ad9cc02f073fa7ba626fb0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
-	<menu_item_call label="Modifier la tenue" name="edit"/>
-	<menu_item_call label="Enlever" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/fr/menu_wearing_tab.xml
deleted file mode 100644
index 4d884455069e959664bba9e49e8c489b60069115..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
-	<menu_item_call label="Enlever" name="take_off"/>
-	<menu_item_call label="Détacher" name="detach"/>
-	<menu_item_call label="Modifier la tenue" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/fr/notifications.xml b/indra/newview/skins/minimal/xui/fr/notifications.xml
deleted file mode 100644
index 05fa03cdc193e897417ce82203d861c853fb9516..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
-	<notification name="UserGiveItem">
-		[NAME_SLURL] vous offre [ITEM_SLURL]. Pour utiliser cet article, vous devez passer en mode Avancé. L&apos;article se trouve dans votre inventaire. Pour changer de mode, quittez l&apos;application, redémarrez-la, puis sélectionnez un autre mode sur l&apos;écran de connexion.
-		<form name="form">
-			<button name="Show" text="Garder l&apos;article"/>
-			<button name="Discard" text="Refuser l&apos;article"/>
-			<button name="Mute" text="Ignorer l&apos;utilisateur"/>
-		</form>
-	</notification>
-	<notification name="ObjectGiveItem">
-		Un objet nommé &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; appartenant à [NAME_SLURL] vous offre &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;. Pour utiliser cet article, vous devez passer en mode Avancé. L&apos;article se trouve dans votre inventaire. Pour changer de mode, quittez l&apos;application, redémarrez-la, puis sélectionnez un autre mode sur l&apos;écran de connexion.
-		<form name="form">
-			<button name="Keep" text="Garder l&apos;article"/>
-			<button name="Discard" text="Refuser l&apos;article"/>
-			<button name="Mute" text="Ignorer l&apos;objet"/>
-		</form>
-	</notification>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml
deleted file mode 100644
index 376a7d2b7251a69e32c9ece4950e2d8918131a92..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="call_btn_panel">
-			<button label="Appeler" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Quitter l&apos;appel" name="end_call_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml
deleted file mode 100644
index 094d3e66de7806f466dfba6e2b1d1586ebb09041..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
-	<string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
-	<string name="SpeakBtnToolTip" value="Active/Désactive le micro"/>
-	<string name="VoiceControlBtnToolTip" value="Affiche/Masque le panneau de contrôle de la voix"/>
-	<layout_stack name="toolbar_stack">
-		<layout_panel name="speak_panel">
-			<button label="Parler" name="speak_btn" tool_tip="Activer/désactiver le micro."/>
-		</layout_panel>
-		<layout_panel name="speak_flyout_panel">
-			<button label="" name="flyout_btn" tool_tip="Modifier les préférences audio."/>
-		</layout_panel>
-		<layout_panel name="gesture_panel">
-			<gesture_combo_list label="Geste" name="Gesture" tool_tip="Faire faire des gestes à votre avatar."/>
-		</layout_panel>
-		<layout_panel name="cam_panel">
-			<bottomtray_button label="Affichage" name="camera_btn" tool_tip="Contrôler l&apos;angle de la caméra."/>
-		</layout_panel>
-		<layout_panel name="destinations_panel">
-			<bottomtray_button label="Destinations" name="destination_btn" tool_tip="Voyager à travers Second Life."/>
-		</layout_panel>
-		<layout_panel name="avatar_panel">
-			<bottomtray_button label="Mon avatar" name="avatar_btn" tool_tip="Modifier votre apparence."/>
-		</layout_panel>
-		<layout_panel name="people_panel">
-			<bottomtray_button label="Personnes" name="show_people_button" tool_tip="Trouver des personnes dans Second Life."/>
-		</layout_panel>
-		<layout_panel name="profile_panel">
-			<bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Afficher et modifier votre profil."/>
-		</layout_panel>
-		<layout_panel name="howto_panel">
-			<bottomtray_button label="Aide rapide" name="show_help_btn" tool_tip="Afficher des infos d&apos;aide sur Second Life."/>
-		</layout_panel>
-		<layout_panel name="im_well_panel">
-			<chiclet_im_well name="im_well">
-				<button name="Unread IM messages" tool_tip="Conversations"/>
-			</chiclet_im_well>
-		</layout_panel>
-		<layout_panel name="notification_well_panel">
-			<chiclet_notification name="notification_well">
-				<button name="Unread" tool_tip="Notifications"/>
-			</chiclet_notification>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_group_control_panel.xml
deleted file mode 100644
index 676fa1d2229c358bf76f0804e064ef90e4d277c0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="end_call_btn_panel">
-			<button label="Quitter l&apos;appel" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Ouvrir contrôles vocaux" name="voice_ctrls_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml
deleted file mode 100644
index 1643cf3229f7691c0eda72575a7b83f855472672..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="button_stack">
-		<layout_panel name="view_profile_btn_panel">
-			<button label="Profil" name="view_profile_btn"/>
-		</layout_panel>
-		<layout_panel name="add_friend_btn_panel">
-			<button label="Devenir amis" name="add_friend_btn"/>
-		</layout_panel>
-		<layout_panel name="teleport_btn_panel">
-			<button label="Téléporter" name="teleport_btn" tool_tip="Proposer de téléporter cette personne."/>
-		</layout_panel>
-		<layout_panel name="call_btn_panel">
-			<button label="Appeler" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Quitter l&apos;appel" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="block_btn_panel">
-			<button label="Ignorer" name="block_btn"/>
-		</layout_panel>
-		<layout_panel name="unblock_btn_panel">
-			<button label="Ne plus ignorer" name="unblock_btn"/>
-		</layout_panel>
-		<layout_panel name="volume_ctrl_panel">
-			<slider name="volume_slider" tool_tip="Volume de l&apos;appel." value="0,5"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_login.xml b/indra/newview/skins/minimal/xui/fr/panel_login.xml
deleted file mode 100644
index 0869778a547b7dfcb8929663678adf19159071a4..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
-	<panel.string name="create_account_url">
-		http://fr.secondlife.com/registration/
-	</panel.string>
-	<panel.string name="forgot_password_url">
-		http://secondlife.com/account/request.php?lang=fr
-	</panel.string>
-	<layout_stack name="login_widgets">
-		<layout_panel name="login">
-			<text name="username_text">
-				Nom d&apos;utilisateur :
-			</text>
-			<combo_box name="username_combo" tool_tip="Nom d&apos;utilisateur que vous avez choisi lors de votre inscription (par exemple, bobsmith12 ou Steller Sunshine)."/>
-			<text name="password_text">
-				Mot de passe :
-			</text>
-			<check_box label="Enregistrer" name="remember_check"/>
-			<button label="Connexion" name="connect_btn"/>
-			<text name="mode_selection_text">
-				Mode :
-			</text>
-			<combo_box name="mode_combo" tool_tip="Sélectionnez un mode. Pour une exploration facile et rapide avec chat, choisissez Basique. Pour accéder à plus de fonctionnalités, choisissez Avancé.">
-				<combo_box.item label="Basique" name="Basic"/>
-				<combo_box.item label="Avancé" name="Advanced"/>
-			</combo_box>
-		</layout_panel>
-		<layout_panel name="links">
-			<text name="create_new_account_text">
-				S&apos;inscrire
-			</text>
-			<text name="forgot_password_text">
-				Nom d&apos;utilisateur ou mot de passe oublié ?
-			</text>
-			<text name="login_help">
-				Besoin d&apos;aide ?
-			</text>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/fr/panel_navigation_bar.xml
deleted file mode 100644
index 45caf2323d26adc0a5f80704c9d513685e989042..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="Revenir à l&apos;emplacement précédent"/>
-		<pull_button name="forward_btn" tool_tip="Avancer d&apos;un emplacement"/>
-		<button name="home_btn" tool_tip="Me téléporter jusqu&apos;à mon domicile"/>
-		<location_input label="Emplacement" name="location_combo"/>
-		<search_combo_box label="Rechercher" name="search_combo_box" tool_tip="Rechercher">
-			<combo_editor label="Rechercher dans [SECOND_LIFE]" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life.">
-		<label name="favorites_bar_label" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life.">
-			Favoris
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="Afficher d&apos;avantage de Favoris"/>
-	</favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_people.xml b/indra/newview/skins/minimal/xui/fr/panel_people.xml
deleted file mode 100644
index 427a420b91662ceaddc2b5d6b93d4502ef8507e0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_people.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Résidents" name="people_panel">
-	<string name="no_recent_people" value="Personne de récent. Vous recherchez des résidents avec qui passer du temps ? Essayez avec le bouton Destinations ci-dessous."/>
-	<string name="no_filtered_recent_people" value="Personne de récent portant ce nom."/>
-	<string name="no_one_near" value="Personne près de vous. Vous recherchez des résidents avec qui passer du temps ? Essayez avec le bouton Destinations ci-dessous."/>
-	<string name="no_one_filtered_near" value="Personne près de vous portant ce nom."/>
-	<string name="no_friends_online" value="Pas d&apos;amis connectés"/>
-	<string name="no_friends" value="Pas d&apos;amis"/>
-	<string name="no_friends_msg">
-		Pour ajouter un résident à votre liste d&apos;amis, cliquez-droit dessus.
-Vous recherchez des résidents avec qui passer du temps ? Essayez avec le bouton Destinations ci-dessous.
-	</string>
-	<string name="no_filtered_friends_msg">
-		Vous n&apos;avez pas trouvé ce que vous cherchiez ? Essayez avec le bouton Destinations ci-dessous.
-	</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"/>
-		</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="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="RÉCENT" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<button name="add_friend_btn" tool_tip="Ajouter le résident sélectionné à votre liste d&apos;amis"/>
-			</panel>
-		</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="Appeler" name="call_btn" tool_tip="Appeler ce résident."/>
-			</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/minimal/xui/fr/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/fr/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 45efbdc980c5d94d40dedfa1b80630f1afb41618..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
-	<text name="sidetray_tab_title" value="Panneau latéral"/>
-	<button name="undock" tool_tip="Détacher"/>
-	<button name="dock" tool_tip="Attacher"/>
-	<button name="show_help" tool_tip="Afficher l&apos;aide"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/fr/panel_status_bar.xml b/indra/newview/skins/minimal/xui/fr/panel_status_bar.xml
deleted file mode 100644
index 9e814ee7ab7581d76015bdda9bb375a205c854d3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/fr/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
-	<panel.string name="packet_loss_tooltip">
-		Perte de paquets
-	</panel.string>
-	<panel.string name="bandwidth_tooltip">
-		Bande passante
-	</panel.string>
-	<panel.string name="time">
-		[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-	</panel.string>
-	<panel.string name="timeTooltip">
-		[weekday, datetime, slt] [sday, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-	</panel.string>
-	<panel.string name="buycurrencylabel">
-		[AMT] L$
-	</panel.string>
-	<combo_box name="mode_combo" tool_tip="Sélectionnez un mode. Pour une exploration facile et rapide avec chat, choisissez Basique. Pour accéder à plus de fonctionnalités, choisissez Avancé.">
-		<combo_box.item label="Mode basique" name="Basic"/>
-		<combo_box.item label="Mode avancé" name="Advanced"/>
-	</combo_box>
-	<button name="media_toggle_btn" tool_tip="Arrêter tous les médias (musique, vidéo, pages web)"/>
-	<button name="volume_btn" tool_tip="Contrôle du volume global"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/floater_camera.xml b/indra/newview/skins/minimal/xui/it/floater_camera.xml
deleted file mode 100644
index 3fdf4f48a22ae314c1a8182032fb74e0c512e1f0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
-	<floater.string name="rotate_tooltip">
-		Ruota la telecamera Intorno all&apos;Inquadratura
-	</floater.string>
-	<floater.string name="zoom_tooltip">
-		Avvicina la telecamera nell&apos;inquadratura
-	</floater.string>
-	<floater.string name="move_tooltip">
-		Muovi la telecamera su e giù e a sinistra e destra
-	</floater.string>
-	<floater.string name="camera_modes_title">
-		Modalità della fotocamera
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		Ruota visuale - Ingrandisci - Panoramica
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		Visuali predefinite
-	</floater.string>
-	<floater.string name="free_mode_title">
-		Vedi oggetto
-	</floater.string>
-	<panel name="controls">
-		<panel name="preset_views_list">
-			<panel_camera_item name="front_view">
-				<panel_camera_item.text name="front_view_text">
-					Visuale frontale
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="group_view">
-				<panel_camera_item.text name="side_view_text">
-					Visuale laterale
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="rear_view">
-				<panel_camera_item.text name="rear_view_text">
-					Visuale posteriore
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="camera_modes_list">
-			<panel_camera_item name="object_view">
-				<panel_camera_item.text name="object_view_text">
-					Visuale oggetto
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="mouselook_view">
-				<panel_camera_item.text name="mouselook_view_text">
-					Visuale soggettiva
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="zoom" tool_tip="Avvicina la telecamera nell&apos;inquadratura">
-			<joystick_rotate name="cam_rotate_stick" tool_tip="Ruota la visuale intorno al punto focale"/>
-			<slider_bar name="zoom_slider" tool_tip="Zoom verso il centro focale"/>
-			<joystick_track name="cam_track_stick" tool_tip="Sposta la visuale in su e in giù, a sinistra e a destra"/>
-		</panel>
-	</panel>
-	<panel name="buttons">
-		<button label="" name="presets_btn" tool_tip="Visuali predefinite"/>
-		<button label="" name="pan_btn" tool_tip="Ruota visuale - Ingrandisci - Panoramica"/>
-		<button label="" name="avatarview_btn" tool_tip="Modalità della fotocamera"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/floater_help_browser.xml b/indra/newview/skins/minimal/xui/it/floater_help_browser.xml
deleted file mode 100644
index 18264cdd17cb5dd35f8b3f9fd75095f703de9311..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="ISTRUZIONI">
-	<floater.string name="loading_text">
-		Caricamento in corso...
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="external_controls"/>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/floater_media_browser.xml b/indra/newview/skins/minimal/xui/it/floater_media_browser.xml
deleted file mode 100644
index b1e87290d2f92c196e34471e06b65e8ffca3f89d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/floater_media_browser.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="BROWSER MULTIMEDIA">
-	<floater.string name="home_page_url">
-		http://www.secondlife.com
-	</floater.string>
-	<floater.string name="support_page_url">
-		http://support.secondlife.com
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button label="Indietro" name="back" width="75"/>
-			<button label="Avanti" left_delta="75" name="forward" width="70"/>
-			<button label="Ricarica" left_delta="75" name="reload"/>
-			<combo_box left_delta="75" name="address" width="510"/>
-			<button label="Vai" left_delta="515" name="go"/>
-		</layout_panel>
-		<layout_panel name="time_controls">
-			<button label="indietro rapido" name="rewind"/>
-			<button label="stop" name="stop"/>
-			<button label="avanti" name="seek"/>
-		</layout_panel>
-		<layout_panel name="parcel_owner_controls">
-			<button label="Invia la pagina attuale al lotto" name="assign"/>
-		</layout_panel>
-		<layout_panel name="external_controls">
-			<button label="Apri nel mio browser Web" name="open_browser"/>
-			<check_box label="Apri sempre nel mio browser Web" name="open_always"/>
-			<button label="Chiudi" name="close"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/it/floater_nearby_chat.xml
deleted file mode 100644
index 4c41df8a62cc598005647f46c540408441aa9504..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CHAT NEI DINTORNI">
-	<check_box label="Traduci chat (tecnologia Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/floater_web_content.xml b/indra/newview/skins/minimal/xui/it/floater_web_content.xml
deleted file mode 100644
index 5603e85417a3c57a0f5d12505424db82f98ebc9d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button name="back" tool_tip="Naviga indietro"/>
-			<button name="forward" tool_tip="Naviga avanti"/>
-			<button name="stop" tool_tip="Interrompi navigazione"/>
-			<button name="reload" tool_tip="Ricarica pagina"/>
-			<combo_box name="address" tool_tip="Inserisci URL qui"/>
-			<icon name="media_secure_lock_flag" tool_tip="Navigazione sicura"/>
-			<button name="popexternal" tool_tip="Apri URL corrente nel browser del computer"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/inspect_avatar.xml b/indra/newview/skins/minimal/xui/it/inspect_avatar.xml
deleted file mode 100644
index 6f52aaef741ff10edca4452817c20e5b923d07dd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/inspect_avatar.xml
+++ /dev/null
@@ -1,26 +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="inspect_avatar">
-	<string name="Subtitle">
-		[AGE]
-	</string>
-	<string name="Details">
-		[SL_PROFILE]
-	</string>
-	<text name="user_name_small" value="Grumpity ProductEngine con un nome lungo"/>
-	<text name="user_slid" value="james.linden"/>
-	<text name="user_details">
-		Questa è la mia descrizione in second life e penso che sia perfetta. Ma per qualche motivo la mia descrizione è davvero molto lunga, perché mi piace parlare a lungo
-	</text>
-	<slider name="volume_slider" tool_tip="Volume voce" value="0.5"/>
-	<button label="Aggiungi amico" name="add_friend_btn"/>
-	<button label="IM" name="im_btn"/>
-	<button label="Profilo" name="view_profile_btn"/>
-	<panel name="moderator_panel">
-		<button label="Disattiva voce" name="disable_voice"/>
-		<button label="Attiva voce" name="enable_voice"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/inspect_object.xml b/indra/newview/skins/minimal/xui/it/inspect_object.xml
deleted file mode 100644
index d8ab10cfda6a1bb1b7b1744f45f6cb092f98e34d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/inspect_object.xml
+++ /dev/null
@@ -1,41 +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="inspect_object">
-	<string name="Creator">
-		Di [CREATOR]
-	</string>
-	<string name="CreatorAndOwner">
-		Di [CREATOR]
-Proprietario [OWNER]
-	</string>
-	<string name="Price">
-		L$ [AMOUNT]
-	</string>
-	<string name="PriceFree">
-		Gratis!
-	</string>
-	<string name="Touch">
-		Tocca
-	</string>
-	<string name="Sit">
-		Siediti
-	</string>
-	<text name="object_name" value="Nome oggetto di prova che si trova su due righe ed è molto lungo"/>
-	<text name="price_text">
-		L$ 30.000
-	</text>
-	<text name="object_description">
-		Questa è una descrizione di un oggetto che è molto lunga ed è di almeno 80 caratteri, ma potrebbe essere di 120 caratteri a questo punto. Chi lo sa veramente?
-	</text>
-	<button label="Acquista" name="buy_btn"/>
-	<button label="Paga" name="pay_btn"/>
-	<button label="Prendi copia" name="take_free_copy_btn"/>
-	<button label="Tocca" name="touch_btn"/>
-	<button label="Siediti" name="sit_btn"/>
-	<button label="Apri" name="open_btn"/>
-	<icon name="secure_browsing" tool_tip="Browsing sicuro"/>
-	<button label="Altro" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/it/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/it/menu_add_wearable_gear.xml
deleted file mode 100644
index 46abd7deedddb7737ea5ac137a5566c8e5c3243a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
-	<menu_item_check label="Mostra prima i più recenti" name="sort_by_most_recent"/>
-	<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"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/it/menu_attachment_other.xml
deleted file mode 100644
index d4d6fd68d0ba254c108e292d2bb586bab1897f1d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="Vedi profilo" name="Profile..."/>
-	<menu_item_call label="Aggiungi amico" name="Add Friend"/>
-	<menu_item_call label="IM" name="Send IM..."/>
-	<menu_item_call label="Chiama" name="Call"/>
-	<menu_item_call label="Invita al gruppo" name="Invite..."/>
-	<menu_item_call label="Blocca" name="Avatar Mute"/>
-	<menu_item_call label="Segnala" name="abuse"/>
-	<menu_item_call label="Congela" name="Freeze..."/>
-	<menu_item_call label="Espelli" name="Eject..."/>
-	<menu_item_call label="Debug delle texture" name="Debug..."/>
-	<menu_item_call label="Zoom avanti" name="Zoom In"/>
-	<menu_item_call label="Paga" name="Pay..."/>
-	<menu_item_call label="Profilo dell&apos;oggetto" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/it/menu_attachment_self.xml
deleted file mode 100644
index 0b841d591f20502da8e2aa0f83cb5442450976a7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
-	<menu_item_call label="Tocca" name="Attachment Object Touch"/>
-	<menu_item_call label="Modifica" name="Edit..."/>
-	<menu_item_call label="Stacca" name="Detach"/>
-	<menu_item_call label="Siedi" name="Sit Down Here"/>
-	<menu_item_call label="Alzati" name="Stand Up"/>
-	<menu_item_call label="Il mio aspetto" name="Change Outfit"/>
-	<menu_item_call label="Modifica il mio vestiario" name="Edit Outfit"/>
-	<menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/>
-	<menu_item_call label="I miei amici..." name="Friends..."/>
-	<menu_item_call label="I miei gruppi" name="Groups..."/>
-	<menu_item_call label="Il mio profilo" name="Profile..."/>
-	<menu_item_call label="Debug delle texture" name="Debug..."/>
-	<menu_item_call label="Lascia" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/it/menu_avatar_icon.xml
deleted file mode 100644
index b93b695300829f0c3c2957f743e445c0a499169a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
-	<menu_item_call label="Vedi profilo" name="Show Profile"/>
-	<menu_item_call label="Manda IM..." name="Send IM"/>
-	<menu_item_call label="Aggiungi come amico..." name="Add Friend"/>
-	<menu_item_call label="Togli amicizia..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/it/menu_avatar_other.xml
deleted file mode 100644
index c2edc32a49a3ace2bba80639b44a721eea81b142..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="Vedi profilo" name="Profile..."/>
-	<menu_item_call label="Aggiungi amico" name="Add Friend"/>
-	<menu_item_call label="IM" name="Send IM..."/>
-	<menu_item_call label="Chiama" name="Call"/>
-	<menu_item_call label="Invita al gruppo" name="Invite..."/>
-	<menu_item_call label="Blocca" name="Avatar Mute"/>
-	<menu_item_call label="Segnala" name="abuse"/>
-	<menu_item_call label="Congela" name="Freeze..."/>
-	<menu_item_call label="Espelli" name="Eject..."/>
-	<menu_item_call label="Debug delle texture" name="Debug..."/>
-	<menu_item_call label="Zoom avanti" name="Zoom In"/>
-	<menu_item_call label="Paga" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/it/menu_avatar_self.xml
deleted file mode 100644
index a4dafd7b5f442b1ff9f69ae073a76dacc4fa8636..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_avatar_self.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
-	<menu_item_call label="Siedi" name="Sit Down Here"/>
-	<menu_item_call label="Alzati" name="Stand Up"/>
-	<context_menu label="Togli" name="Take Off &gt;">
-		<context_menu label="Abiti" name="Clothes &gt;">
-			<menu_item_call label="Camicia" name="Shirt"/>
-			<menu_item_call label="Pantaloni" name="Pants"/>
-			<menu_item_call label="Gonna" name="Skirt"/>
-			<menu_item_call label="Scarpe" name="Shoes"/>
-			<menu_item_call label="Calzini" name="Socks"/>
-			<menu_item_call label="Giacca" name="Jacket"/>
-			<menu_item_call label="Guanti" name="Gloves"/>
-			<menu_item_call label="Maglietta intima" name="Self Undershirt"/>
-			<menu_item_call label="Slip" name="Self Underpants"/>
-			<menu_item_call label="Tatuaggio" name="Self Tattoo"/>
-			<menu_item_call label="Fisica" name="Self Physics"/>
-			<menu_item_call label="Alpha (Trasparenza)" name="Self Alpha"/>
-			<menu_item_call label="Tutti gli abiti" name="All Clothes"/>
-		</context_menu>
-		<context_menu label="HUD" name="Object Detach HUD"/>
-		<context_menu label="Stacca" name="Object Detach"/>
-		<menu_item_call label="Stacca tutto" name="Detach All"/>
-	</context_menu>
-	<menu_item_call label="Il mio aspetto" name="Chenge Outfit"/>
-	<menu_item_call label="Modifica il mio vestiario" name="Edit Outfit"/>
-	<menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/>
-	<menu_item_call label="I miei amici..." name="Friends..."/>
-	<menu_item_call label="I miei gruppi" name="Groups..."/>
-	<menu_item_call label="Il mio profilo" name="Profile..."/>
-	<menu_item_call label="Debug delle texture" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/it/menu_bottomtray.xml
deleted file mode 100644
index ddd6909136e57cd61bb85f27a8ca4f078ccaa882..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
-	<menu_item_check label="Pulsante Parla" name="EnableVoiceChat"/>
-	<menu_item_check label="Tasto Gesture" name="ShowGestureButton"/>
-	<menu_item_check label="Tasto Movimento" name="ShowMoveButton"/>
-	<menu_item_check label="Tasto Visuale" name="ShowCameraButton"/>
-	<menu_item_check label="Tasto Foto" name="ShowSnapshotButton"/>
-	<menu_item_check label="Pulsante Costruisci" name="ShowBuildButton"/>
-	<menu_item_check label="Pulsante Cerca" name="ShowSearchButton"/>
-	<menu_item_check label="Pulsante Mappa" name="ShowWorldMapButton"/>
-	<menu_item_check label="Pulsante Mini mappa" name="ShowMiniMapButton"/>
-	<menu_item_call label="Taglia" name="NearbyChatBar_Cut"/>
-	<menu_item_call label="Copia" name="NearbyChatBar_Copy"/>
-	<menu_item_call label="Incolla" name="NearbyChatBar_Paste"/>
-	<menu_item_call label="Elimina" name="NearbyChatBar_Delete"/>
-	<menu_item_call label="Seleziona tutto" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/it/menu_cof_attachment.xml
deleted file mode 100644
index 699490c8f1d6f03e9b4db230ee6b258c590b5eaa..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
-	<menu_item_call label="Stacca" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/it/menu_cof_body_part.xml
deleted file mode 100644
index 1e3658ef45d7c14fb14ca211230235f90bff66b9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
-	<menu_item_call label="Sostituisci" name="replace"/>
-	<menu_item_call label="Modifica" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/it/menu_cof_clothing.xml
deleted file mode 100644
index 1e16ce8ed14331341ba9af4a7d0189b54f161a3d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
-	<menu_item_call label="Togli" name="take_off"/>
-	<menu_item_call label="Modifica" name="edit"/>
-	<menu_item_call label="Sostituisci" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/it/menu_cof_gear.xml
deleted file mode 100644
index 10524ba92d09d7823161239269452d87b79ce628..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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>
diff --git a/indra/newview/skins/minimal/xui/it/menu_edit.xml b/indra/newview/skins/minimal/xui/it/menu_edit.xml
deleted file mode 100644
index ffb20a02e9a01eaf736be7e9d5f17fb657e8b181..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Modifica" name="Edit">
-	<menu_item_call label="Annulla" name="Undo"/>
-	<menu_item_call label="Ripeti" name="Redo"/>
-	<menu_item_call label="Taglia" name="Cut"/>
-	<menu_item_call label="Copia" name="Copy"/>
-	<menu_item_call label="Incolla" name="Paste"/>
-	<menu_item_call label="Elimina" name="Delete"/>
-	<menu_item_call label="Duplica" name="Duplicate"/>
-	<menu_item_call label="Seleziona tutto" name="Select All"/>
-	<menu_item_call label="Deseleziona" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_favorites.xml b/indra/newview/skins/minimal/xui/it/menu_favorites.xml
deleted file mode 100644
index 7813ef44b52c345a47a94fe9455d57fbc45a8502..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Teleport" name="Teleport To Landmark"/>
-	<menu_item_call label="Vedi/Modifica punto di riferimento" name="Landmark Open"/>
-	<menu_item_call label="Copia SLurl" name="Copy slurl"/>
-	<menu_item_call label="Mostra sulla mappa" name="Show On Map"/>
-	<menu_item_call label="Copia" name="Landmark Copy"/>
-	<menu_item_call label="Incolla" name="Landmark Paste"/>
-	<menu_item_call label="Elimina" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/it/menu_gesture_gear.xml
deleted file mode 100644
index 7cfcc6287e0b10237f764177e663aab338d6b39e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
-	<menu_item_call label="Aggiungi/Rimuovi dai preferiti" name="activate"/>
-	<menu_item_call label="Copia" name="copy_gesture"/>
-	<menu_item_call label="Incolla" name="paste"/>
-	<menu_item_call label="Copia UUID" name="copy_uuid"/>
-	<menu_item_call label="Salva vestiario" name="save_to_outfit"/>
-	<menu_item_call label="Modifica" name="edit_gesture"/>
-	<menu_item_call label="Ispeziona" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_group_plus.xml b/indra/newview/skins/minimal/xui/it/menu_group_plus.xml
deleted file mode 100644
index 3b76fb94a921590966517c376bc797985e7e64f7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_call label="Aderisci al gruppo..." name="item_join"/>
-	<menu_item_call label="Nuovo gruppo..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/it/menu_hide_navbar.xml
deleted file mode 100644
index 2c2c6c4bc575a510f7452ecffb1dac65904a9163..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
-	<menu_item_check label="Mostra la barra di navigazione" name="ShowNavbarNavigationPanel"/>
-	<menu_item_check label="Mostra la barra dei Preferiti" name="ShowNavbarFavoritesPanel"/>
-	<menu_item_check label="Mostra mini barra del luogo" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/it/menu_im_well_button.xml
deleted file mode 100644
index 9e471b771c78053239a5a2a367a145964d3690ed..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/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/minimal/xui/it/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/it/menu_imchiclet_adhoc.xml
deleted file mode 100644
index f78ed8489fe7b0f70b95de3ccd795d81fb0f736a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
-	<menu_item_call label="Fine sessione" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/it/menu_imchiclet_group.xml
deleted file mode 100644
index baa4e671b07f4e595df3795425ec84fa0157b840..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
-	<menu_item_call label="Informazioni sul gruppo" name="Show Profile"/>
-	<menu_item_call label="Mostra sessione" name="Chat"/>
-	<menu_item_call label="Fine sessione" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/it/menu_imchiclet_p2p.xml
deleted file mode 100644
index 2eacbb09ad7787e10e1f930c6adfc0d5d1d30ae8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
-	<menu_item_call label="Vedi profilo" name="Show Profile"/>
-	<menu_item_call label="Aggiungi amico" name="Add Friend"/>
-	<menu_item_call label="Mostra sessione" name="Send IM"/>
-	<menu_item_call label="Fine sessione" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/it/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 1f10734c4ac9ef32a8283eeda14dfd1ef1f15931..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
-	<menu_item_call label="Vedi profilo" name="view_profile"/>
-	<menu_item_call label="Aggiungi amico" name="add_friend"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="Chiama" name="call"/>
-	<menu_item_call label="Teleport" name="teleport"/>
-	<menu_item_call label="Invita al gruppo" name="invite_to_group"/>
-	<menu_item_call label="Blocca" name="block"/>
-	<menu_item_call label="Sblocca" name="unblock"/>
-	<menu_item_call label="Segnala" name="report"/>
-	<menu_item_call label="Congela" name="freeze"/>
-	<menu_item_call label="Espelli" name="eject"/>
-	<menu_item_call label="Espelli" name="kick"/>
-	<menu_item_call label="CSR" name="csr"/>
-	<menu_item_call label="Debug delle texture" name="debug"/>
-	<menu_item_call label="Trova sulla mappa" name="find_on_map"/>
-	<menu_item_call label="Zoom avanti" name="zoom_in"/>
-	<menu_item_call label="Paga" name="pay"/>
-	<menu_item_call label="Condividi" name="share"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/it/menu_inspect_object_gear.xml
deleted file mode 100644
index ede4a507c02e25307a77685989fbe9b00e344188..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
-	<menu_item_call label="Tocca" name="touch"/>
-	<menu_item_call label="Siediti" name="sit"/>
-	<menu_item_call label="Paga" name="pay"/>
-	<menu_item_call label="Acquista" name="buy"/>
-	<menu_item_call label="Prendi" name="take"/>
-	<menu_item_call label="Prendi copia" name="take_copy"/>
-	<menu_item_call label="Apri" name="open"/>
-	<menu_item_call label="Modifica" name="edit"/>
-	<menu_item_call label="Indossa" name="wear"/>
-	<menu_item_call label="Aggiungi" name="add"/>
-	<menu_item_call label="Segnala" name="report"/>
-	<menu_item_call label="Blocca" name="block"/>
-	<menu_item_call label="Zoom avanti" name="zoom_in"/>
-	<menu_item_call label="Rimuovi" name="remove"/>
-	<menu_item_call label="Maggiori informazioni" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/it/menu_inspect_self_gear.xml
deleted file mode 100644
index 4f62ccaa9c5619dd72b82dde3f1e52f0eda42dcd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
-	<menu_item_call label="Siedi" name="Sit Down Here"/>
-	<menu_item_call label="Alzati" name="Stand Up"/>
-	<context_menu label="Togli" name="Take Off &gt;">
-		<context_menu label="Abiti" name="Clothes &gt;">
-			<menu_item_call label="Camicia" name="Shirt"/>
-			<menu_item_call label="Pantaloni" name="Pants"/>
-			<menu_item_call label="Gonna" name="Skirt"/>
-			<menu_item_call label="Scarpe" name="Shoes"/>
-			<menu_item_call label="Calzini" name="Socks"/>
-			<menu_item_call label="Giacca" name="Jacket"/>
-			<menu_item_call label="Guanti" name="Gloves"/>
-			<menu_item_call label="Maglietta intima" name="Self Undershirt"/>
-			<menu_item_call label="Slip" name="Self Underpants"/>
-			<menu_item_call label="Tatuaggio" name="Self Tattoo"/>
-			<menu_item_call label="Alpha (Trasparenza)" name="Self Alpha"/>
-			<menu_item_call label="Tutti gli abiti" name="All Clothes"/>
-		</context_menu>
-		<context_menu label="HUD" name="Object Detach HUD"/>
-		<context_menu label="Stacca" name="Object Detach"/>
-		<menu_item_call label="Stacca tutto" name="Detach All"/>
-	</context_menu>
-	<menu_item_call label="Cambia vestiario" name="Chenge Outfit"/>
-	<menu_item_call label="Modifica il mio vestiario" name="Edit Outfit"/>
-	<menu_item_call label="Modifica la figura corporea" name="Edit My Shape"/>
-	<menu_item_call label="I miei amici" name="Friends..."/>
-	<menu_item_call label="I miei gruppi" name="Groups..."/>
-	<menu_item_call label="Il mio profilo" name="Profile..."/>
-	<menu_item_call label="Debug delle texture" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/it/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 471640eff50d5702539adb6b968c5d671c8b2fef..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
-	<menu_item_call label="Chiudi" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inventory.xml b/indra/newview/skins/minimal/xui/it/menu_inventory.xml
deleted file mode 100644
index f18ddb595ca7202e1900b460c0183d1dd9b0f259..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inventory.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Condividi" name="Share"/>
-	<menu_item_call label="Compra" name="Task Buy"/>
-	<menu_item_call label="Apri" name="Task Open"/>
-	<menu_item_call label="Esegui" name="Task Play"/>
-	<menu_item_call label="Proprietà" name="Task Properties"/>
-	<menu_item_call label="Rinomina" name="Task Rename"/>
-	<menu_item_call label="Elimina" name="Task Remove"/>
-	<menu_item_call label="Svuota il Cestino" name="Empty Trash"/>
-	<menu_item_call label="Svuota gli oggetti persi e ritrovati" name="Empty Lost And Found"/>
-	<menu_item_call label="Nuova cartella" name="New Folder"/>
-	<menu_item_call label="Nuovo script" name="New Script"/>
-	<menu_item_call label="Nuovo biglietto" name="New Note"/>
-	<menu_item_call label="Nuova gesture" name="New Gesture"/>
-	<menu label="Maglietta intima" name="New Clothes">
-		<menu_item_call label="Nuova maglietta" name="New Shirt"/>
-		<menu_item_call label="Nuovi pantaloni" name="New Pants"/>
-		<menu_item_call label="Nuove scarpe" name="New Shoes"/>
-		<menu_item_call label="Nuove calze" name="New Socks"/>
-		<menu_item_call label="Nuova giacca" name="New Jacket"/>
-		<menu_item_call label="Nuova gonna" name="New Skirt"/>
-		<menu_item_call label="Nuovi guanti" name="New Gloves"/>
-		<menu_item_call label="Nuova canottiera" name="New Undershirt"/>
-		<menu_item_call label="Nuove mutande" name="New Underpants"/>
-		<menu_item_call label="Nuovo Alfa Mask" name="New Alpha Mask"/>
-		<menu_item_call label="Nuovo tatuaggio" name="New Tattoo"/>
-		<menu_item_call label="Nuova fisica" name="New Physics"/>
-	</menu>
-	<menu label="Nuove parti del corpo" name="New Body Parts">
-		<menu_item_call label="Nuova forma del corpo" name="New Shape"/>
-		<menu_item_call label="Nuova pelle" name="New Skin"/>
-		<menu_item_call label="Nuovi capelli" name="New Hair"/>
-		<menu_item_call label="Nuovi occhi" name="New Eyes"/>
-	</menu>
-	<menu label="Cambia tipo" name="Change Type">
-		<menu_item_call label="Predefinito" name="Default"/>
-		<menu_item_call label="Guanti" name="Gloves"/>
-		<menu_item_call label="Giacca" name="Jacket"/>
-		<menu_item_call label="Pantaloni" name="Pants"/>
-		<menu_item_call label="Figura corporea" name="Shape"/>
-		<menu_item_call label="Scarpe" name="Shoes"/>
-		<menu_item_call label="Camicia" name="Shirt"/>
-		<menu_item_call label="Gonna" name="Skirt"/>
-		<menu_item_call label="Slip" name="Underpants"/>
-		<menu_item_call label="Maglietta intima" name="Undershirt"/>
-	</menu>
-	<menu_item_call label="Teletrasportati" name="Landmark Open"/>
-	<menu_item_call label="Apri" name="Animation Open"/>
-	<menu_item_call label="Apri" name="Sound Open"/>
-	<menu_item_call label="Sostituisci vestiti" name="Replace Outfit"/>
-	<menu_item_call label="Aggiungi al vestiario" name="Add To Outfit"/>
-	<menu_item_call label="Rimuovi dal vestiario attuale" name="Remove From Outfit"/>
-	<menu_item_call label="Trova originale" name="Find Original"/>
-	<menu_item_call label="Elimina oggetto" name="Purge Item"/>
-	<menu_item_call label="Ripristina oggetto" name="Restore Item"/>
-	<menu_item_call label="Apri" name="Open"/>
-	<menu_item_call label="Apri originale" name="Open Original"/>
-	<menu_item_call label="Proprietà" name="Properties"/>
-	<menu_item_call label="Rinomina" name="Rename"/>
-	<menu_item_call label="Copia UUID dell&apos;oggetto" name="Copy Asset UUID"/>
-	<menu_item_call label="Copia" name="Copy"/>
-	<menu_item_call label="Incolla" name="Paste"/>
-	<menu_item_call label="Incolla come link" name="Paste As Link"/>
-	<menu_item_call label="Elimina" name="Remove Link"/>
-	<menu_item_call label="Cancella" name="Delete"/>
-	<menu_item_call label="Elimina la cartella di sistema" name="Delete System Folder"/>
-	<menu_item_call label="Inizia la conferenza chat" name="Conference Chat Folder"/>
-	<menu_item_call label="Esegui" name="Sound Play"/>
-	<menu_item_call label="Informazioni sul punto di riferimento" name="About Landmark"/>
-	<menu_item_call label="Riproduci in Second Life" name="Animation Play"/>
-	<menu_item_call label="Esegui localmente" name="Animation Audition"/>
-	<menu_item_call label="Invia un Instant Message" name="Send Instant Message"/>
-	<menu_item_call label="Offri teletrasporto..." name="Offer Teleport..."/>
-	<menu_item_call label="Inizia una conferenza chat" name="Conference Chat"/>
-	<menu_item_call label="Attiva" name="Activate"/>
-	<menu_item_call label="Disattiva" name="Deactivate"/>
-	<menu_item_call label="Salva con nome" name="Save As"/>
-	<menu_item_call label="Stacca da te" name="Detach From Yourself"/>
-	<menu_item_call label="Indossa" name="Wearable And Object Wear"/>
-	<menu label="Attacca a" name="Attach To"/>
-	<menu label="Attacca all&apos;HUD" name="Attach To HUD"/>
-	<menu_item_call label="Modifica" name="Wearable Edit"/>
-	<menu_item_call label="Aggiungi" name="Wearable Add"/>
-	<menu_item_call label="Togli" name="Take Off"/>
-	<menu_item_call label="--nessuna opzione--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/it/menu_inventory_add.xml
deleted file mode 100644
index a2535ce48de789195f9144ec14fd77bd4b0632a8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inventory_add.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
-	<menu label="Carica nel server" name="upload">
-		<menu_item_call label="Immagine ([COST]L$)..." name="Upload Image"/>
-		<menu_item_call label="Suono ([COST]L$)..." name="Upload Sound"/>
-		<menu_item_call label="Animazione ([COST]L$)..." name="Upload Animation"/>
-		<menu_item_call label="In blocco ([COST]L$ per file)..." name="Bulk Upload"/>
-		<menu_item_call label="Definisci diritti di caricamento predefiniti" name="perm prefs"/>
-	</menu>
-	<menu_item_call label="Nuova cartella" name="New Folder"/>
-	<menu_item_call label="Nuovo script" name="New Script"/>
-	<menu_item_call label="Nuovo biglietto" name="New Note"/>
-	<menu_item_call label="Nuova gesture" name="New Gesture"/>
-	<menu label="Maglietta intima" name="New Clothes">
-		<menu_item_call label="Nuova camicia" name="New Shirt"/>
-		<menu_item_call label="Nuovi pantaloni" name="New Pants"/>
-		<menu_item_call label="Nuove scarpe" name="New Shoes"/>
-		<menu_item_call label="Nuove calze" name="New Socks"/>
-		<menu_item_call label="Nuova giacca" name="New Jacket"/>
-		<menu_item_call label="Nuova gonna" name="New Skirt"/>
-		<menu_item_call label="Nuovi guanti" name="New Gloves"/>
-		<menu_item_call label="Nuova maglietta intima" name="New Undershirt"/>
-		<menu_item_call label="Nuovi slip" name="New Underpants"/>
-		<menu_item_call label="Nuovo Alfa (trasparenza)" name="New Alpha"/>
-		<menu_item_call label="Nuovo tatuaggio" name="New Tattoo"/>
-		<menu_item_call label="Nuova fisica" name="New Physics"/>
-	</menu>
-	<menu label="Nuove parti del corpo" name="New Body Parts">
-		<menu_item_call label="Nuova figura corporea" name="New Shape"/>
-		<menu_item_call label="Nuova pelle" name="New Skin"/>
-		<menu_item_call label="Nuovi capelli" name="New Hair"/>
-		<menu_item_call label="Nuovi occhi" name="New Eyes"/>
-	</menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/it/menu_inventory_gear_default.xml
deleted file mode 100644
index 3d64e4da4ec82cc23c20c057c739a860163837f5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
-	<menu_item_call label="Nuova finestra inventario" name="new_window"/>
-	<menu_item_check label="Ordina in base al nome" name="sort_by_name"/>
-	<menu_item_check label="Mostra prima i più recenti" name="sort_by_recent"/>
-	<menu_item_check label="Ordina le cartelle sempre in base al nome" name="sort_folders_by_name"/>
-	<menu_item_check label="Ordina cartelle di sistema all&apos;inizio" name="sort_system_folders_to_top"/>
-	<menu_item_call label="Mostra filtri" name="show_filters"/>
-	<menu_item_call label="Ripristina filtri" name="reset_filters"/>
-	<menu_item_call label="Chiudi tutte le cartelle" name="close_folders"/>
-	<menu_item_call label="Svuota oggetti smarriti" name="empty_lostnfound"/>
-	<menu_item_call label="Salva texture come" name="Save Texture As"/>
-	<menu_item_call label="Condividi" name="Share"/>
-	<menu_item_call label="Trova originale" name="Find Original"/>
-	<menu_item_call label="Trova tutti i link" name="Find All Links"/>
-	<menu_item_call label="Svuota cestino" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_land.xml b/indra/newview/skins/minimal/xui/it/menu_land.xml
deleted file mode 100644
index f510078e147c1deff080c483c8adc18d6acf9fe4..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
-	<menu_item_call label="Informazioni sui terreni" name="Place Information..."/>
-	<menu_item_call label="Siediti qui" name="Sit Here"/>
-	<menu_item_call label="Acquista questo terreno" name="Land Buy"/>
-	<menu_item_call label="Acquista Permesso" name="Land Buy Pass"/>
-	<menu_item_call label="Costruisci" name="Create"/>
-	<menu_item_call label="Modifica terreno" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_landmark.xml b/indra/newview/skins/minimal/xui/it/menu_landmark.xml
deleted file mode 100644
index b3cddab783e43072ee481fc5636e7ba5683287f4..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
-	<menu_item_call label="Copia SLurl" name="copy"/>
-	<menu_item_call label="Elimina" name="delete"/>
-	<menu_item_call label="Crea Luogo consigliato" name="pick"/>
-	<menu_item_call label="Aggiungi alla barra dei Preferiti" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_login.xml b/indra/newview/skins/minimal/xui/it/menu_login.xml
deleted file mode 100644
index bdf7d2094ff8e3bdef6d5714a8d1bad75bbbbdce..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
-	<menu label="Io" name="File">
-		<menu_item_call label="Preferenze" name="Preferences..."/>
-		<menu_item_call label="Esci da [APP_NAME]" name="Quit"/>
-	</menu>
-	<menu label="Aiuto" name="Help">
-		<menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/>
-		<menu_item_call label="Informazioni su [APP_NAME]" name="About Second Life"/>
-	</menu>
-	<menu_item_check label="Mostra menu Debug" name="Show Debug Menu"/>
-	<menu label="Debug" name="Debug">
-		<menu_item_call label="Mostra impostazioni di debug" name="Debug Settings"/>
-		<menu_item_call label="Impostazioni colori interfaccia" name="UI/Color Settings"/>
-		<menu label="Test interfaccia utente" name="UI Tests"/>
-		<menu_item_call label="Imposta dimensioni della finestra..." name="Set Window Size..."/>
-		<menu_item_call label="Mostra i Termini del servizio (TOS)" name="TOS"/>
-		<menu_item_call label="Mostra messaggio critico" name="Critical"/>
-		<menu_item_call label="Test browser multimedia" name="Web Browser Test"/>
-		<menu_item_call label="Test finestra contenuti Web" name="Web Content Floater Test"/>
-		<menu_item_check label="Mostra selettore griglia" name="Show Grid Picker"/>
-		<menu_item_call label="Mostra Console notifiche" name="Show Notifications Console"/>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/it/menu_mini_map.xml b/indra/newview/skins/minimal/xui/it/menu_mini_map.xml
deleted file mode 100644
index 561b80e046b6fcd268e1d9287d7bd0fb8436a866..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Zoom ravvicinato" name="Zoom Close"/>
-	<menu_item_call label="Zoom Medio" name="Zoom Medium"/>
-	<menu_item_call label="Zoom Distante" name="Zoom Far"/>
-	<menu_item_call label="Zoom predefinito" name="Zoom Default"/>
-	<menu_item_check label="Ruota la mappa" name="Rotate Map"/>
-	<menu_item_check label="Centra automaticamente" name="Auto Center"/>
-	<menu_item_call label="Ferma il puntamento" name="Stop Tracking"/>
-	<menu_item_call label="Mappa del mondo" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_navbar.xml b/indra/newview/skins/minimal/xui/it/menu_navbar.xml
deleted file mode 100644
index e42d913a6f18d76c18973ab2717f46f8a9eb8e06..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
-	<menu_item_check label="Mostra le coordinate" name="Show Coordinates"/>
-	<menu_item_check label="Mostra proprietà lotto" name="Show Parcel Properties"/>
-	<menu_item_call label="Punto di riferimento" name="Landmark"/>
-	<menu_item_call label="Taglia" name="Cut"/>
-	<menu_item_call label="Copia" name="Copy"/>
-	<menu_item_call label="Incolla" name="Paste"/>
-	<menu_item_call label="Elimina" name="Delete"/>
-	<menu_item_call label="Seleziona tutto" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/it/menu_nearby_chat.xml
deleted file mode 100644
index 719a6d326187bb99d1c815fb763c10d4feded11d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
-	<menu_item_call label="Mostra le persone vicine..." name="nearby_people"/>
-	<menu_item_check label="Mostra il testo bloccato" name="muted_text"/>
-	<menu_item_check label="Mostra icone amici" name="show_buddy_icons"/>
-	<menu_item_check label="Mostra nomi" name="show_names"/>
-	<menu_item_check label="Mostra icone e nomi" name="show_icons_and_names"/>
-	<menu_item_call label="Dimensioni caratteri" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/it/menu_notification_well_button.xml
deleted file mode 100644
index 8c82e30f0ed78c3240b284926d26556baa11b74d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
-	<menu_item_call label="Chiudi tutto" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_object.xml b/indra/newview/skins/minimal/xui/it/menu_object.xml
deleted file mode 100644
index a172cf3b26556e943e4e4516065d1ad37ee391dd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
-	<menu_item_call label="Tocca" name="Object Touch">
-		<menu_item_call.on_enable name="EnableTouch" parameter="Tocca"/>
-	</menu_item_call>
-	<menu_item_call label="Modifica" name="Edit..."/>
-	<menu_item_call label="Costruisci" name="Build"/>
-	<menu_item_call label="Apri" name="Open"/>
-	<menu_item_call label="Siediti qui" name="Object Sit"/>
-	<menu_item_call label="Alzati" name="Object Stand Up"/>
-	<menu_item_call label="Profilo dell&apos;oggetto" name="Object Inspect"/>
-	<menu_item_call label="Zoom avanti" name="Zoom In"/>
-	<context_menu label="Metti" name="Put On">
-		<menu_item_call label="Indossa" name="Wear"/>
-		<menu_item_call label="Aggiungi" name="Add"/>
-		<context_menu label="Attacca" name="Object Attach"/>
-		<context_menu label="Attacca HUD" name="Object Attach HUD"/>
-	</context_menu>
-	<context_menu label="Gestisci" name="Remove">
-		<menu_item_call label="Segnala abuso" name="Report Abuse..."/>
-		<menu_item_call label="Blocca" name="Object Mute"/>
-		<menu_item_call label="Restituisci" name="Return..."/>
-	</context_menu>
-	<menu_item_call label="Prendi" name="Pie Object Take"/>
-	<menu_item_call label="Prendi copia" name="Take Copy"/>
-	<menu_item_call label="Paga" name="Pay..."/>
-	<menu_item_call label="Acquista" name="Buy..."/>
-	<menu_item_call label="Elimina" name="Delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_object_icon.xml b/indra/newview/skins/minimal/xui/it/menu_object_icon.xml
deleted file mode 100644
index 0f347b1a909d806e0194e9f6be727561aaa3896f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
-	<menu_item_call label="Profilo oggetto..." name="Object Profile"/>
-	<menu_item_call label="Blocca..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/it/menu_outfit_gear.xml
deleted file mode 100644
index 09fc867d7c40a29614b89775482b74114dffc4dc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_outfit_gear.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Outfit">
-	<menu_item_call label="Indossa - Sostituisci vestiario attuale" name="wear"/>
-	<menu_item_call label="Indossa - Aggiungi al vestiario attuale" name="wear_add"/>
-	<menu_item_call label="Togli - Rimuovi dal vestiario attuale" name="take_off"/>
-	<menu label="Nuovi abiti" name="New Clothes">
-		<menu_item_call label="Nuova camicia" name="New Shirt"/>
-		<menu_item_call label="Nuovi pantaloni" name="New Pants"/>
-		<menu_item_call label="Nuove scarpe" name="New Shoes"/>
-		<menu_item_call label="Nuove calze" name="New Socks"/>
-		<menu_item_call label="Nuova giacca" name="New Jacket"/>
-		<menu_item_call label="Nuova gonna" name="New Skirt"/>
-		<menu_item_call label="Nuovi guanti" name="New Gloves"/>
-		<menu_item_call label="Nuova maglietta intima" name="New Undershirt"/>
-		<menu_item_call label="Nuovi slip" name="New Underpants"/>
-		<menu_item_call label="Nuovo Alpha (trasparenza)" name="New Alpha"/>
-		<menu_item_call label="Nuova fisica" name="New Physics"/>
-		<menu_item_call label="Nuovo tatuaggio" name="New Tattoo"/>
-	</menu>
-	<menu label="Nuove parti del corpo" name="New Body Parts">
-		<menu_item_call label="Nuova figura corporea" name="New Shape"/>
-		<menu_item_call label="Nuova pelle" name="New Skin"/>
-		<menu_item_call label="Nuovi capelli" name="New Hair"/>
-		<menu_item_call label="Nuovi occhi" name="New Eyes"/>
-	</menu>
-	<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/minimal/xui/it/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/it/menu_outfit_tab.xml
deleted file mode 100644
index 8166cf20edcbba43a987ba442dbae47df30fa639..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
-	<menu_item_call label="Indossa - Sostituisci vestiario attuale" name="wear_replace"/>
-	<menu_item_call label="Indossa - Aggiungi al vestiario attuale" name="wear_add"/>
-	<menu_item_call label="Togli - Rimuovi dal vestiario attuale" name="take_off"/>
-	<menu_item_call label="Modifica vestiario" name="edit"/>
-	<menu_item_call label="Cambia nome del vestiario" name="rename"/>
-	<menu_item_call label="Elimina vestito" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_participant_list.xml b/indra/newview/skins/minimal/xui/it/menu_participant_list.xml
deleted file mode 100644
index 1b057c4077a66c80437b6fa12f635a7a70a5081c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
-	<menu_item_check label="Ordina in base al nome" name="SortByName"/>
-	<menu_item_check label="Ordina in base a intervenuti recenti" name="SortByRecentSpeakers"/>
-	<menu_item_call label="Vedi profilo" name="View Profile"/>
-	<menu_item_call label="Aggiungi amico" name="Add 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_check label="Icone persone" name="View Icons"/>
-	<menu_item_check label="Blocca voce" name="Block/Unblock"/>
-	<menu_item_check label="Blocca testo" name="MuteText"/>
-	<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 participante" name="ModerateVoiceMuteSelected"/>
-		<menu_item_call label="Riattiva audio di questo participante" name="ModerateVoiceUnMuteSelected"/>
-		<menu_item_call label="Disattiva audio di tutti" name="ModerateVoiceMute"/>
-		<menu_item_call label="Riattiva audio di tutti" name="ModerateVoiceUnmute"/>
-	</context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_friends_view_sort.xml
deleted file mode 100644
index 3a799f44ebb57687816027e4fd6fb736e7294c3b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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="Icone persone" name="view_icons"/>
-	<menu_item_check label="Visualizza autorizzazioni concesse" name="view_permissions"/>
-	<menu_item_call label="Mostra oggetti e residenti bloccati" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_groups.xml b/indra/newview/skins/minimal/xui/it/menu_people_groups.xml
deleted file mode 100644
index 30a97a1c7246d21a9c79adbe73685245c5ed2827..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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="Attiva" name="Activate"/>
-	<menu_item_call label="Chiudi" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_groups_view_sort.xml
deleted file mode 100644
index d31ddaf1aa6de403ad828afa4daf71def06b1db8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Visualizza le icone di gruppo" name="Display Group Icons"/>
-	<menu_item_call label="Lascia i gruppi selezionati" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/it/menu_people_nearby.xml
deleted file mode 100644
index ab06d28c36f2797e8bea2173fb3fe82cf5164cf9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?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 come 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/minimal/xui/it/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/it/menu_people_nearby_multiselect.xml
deleted file mode 100644
index e0b9ceb63d8561b1d3ff7710c3525ebae454e7a3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?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"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_nearby_view_sort.xml
deleted file mode 100644
index aae23137028ad6b447454338da82b11d83d84070..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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="Icone persone" name="view_icons"/>
-	<menu_item_call label="Mostra oggetti e residenti bloccati" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/it/menu_people_recent_view_sort.xml
deleted file mode 100644
index 7fccd1621ad84f56e36d510924c9dcad96c63eb7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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="Icone persone" name="view_icons"/>
-	<menu_item_call label="Mostra oggetti e residenti bloccati" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_picks.xml b/indra/newview/skins/minimal/xui/it/menu_picks.xml
deleted file mode 100644
index 000d219ed0c3dc3a990698f0e3ca484d1621bbee..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
-	<menu_item_call label="Informazioni" name="pick_info"/>
-	<menu_item_call label="Modifica" name="pick_edit"/>
-	<menu_item_call label="Teleport" name="pick_teleport"/>
-	<menu_item_call label="Mappa" name="pick_map"/>
-	<menu_item_call label="Elimina" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/it/menu_picks_plus.xml
deleted file mode 100644
index 7fbd5abd57dffce82f9bd026bfdab31ac0389647..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
-	<menu_item_call label="Nuovo luogo preferito" name="create_pick"/>
-	<menu_item_call label="Nuovo annuncio" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_place.xml b/indra/newview/skins/minimal/xui/it/menu_place.xml
deleted file mode 100644
index 5381a4effa145f30e2cd077c0984de93815fbb7e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
-	<menu_item_call label="Salva come punto di riferimento" name="landmark"/>
-	<menu_item_call label="Crea Luogo consigliato" name="pick"/>
-	<menu_item_call label="Acquista Permesso" name="pass"/>
-	<menu_item_call label="Modifica" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/it/menu_place_add_button.xml
deleted file mode 100644
index 0e783c0000d4c12b77b0bed8aa97d6ad2cb25155..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
-	<menu_item_call label="Aggiungi cartella" name="add_folder"/>
-	<menu_item_call label="Aggiungi punto di riferimento" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/it/menu_places_gear_folder.xml
deleted file mode 100644
index 23757d47e06ea8e3e3fd43cf485b68b6e2dc448f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_folder_gear">
-	<menu_item_call label="Aggiungi punto di riferimento" name="add_landmark"/>
-	<menu_item_call label="Aggiungi cartella" name="add_folder"/>
-	<menu_item_call label="Ripristina oggetto" name="restore_item"/>
-	<menu_item_call label="Taglia" name="cut"/>
-	<menu_item_call label="Copia" name="copy_folder"/>
-	<menu_item_call label="Incolla" name="paste"/>
-	<menu_item_call label="Modifica nome" name="rename"/>
-	<menu_item_call label="Elimina" name="delete"/>
-	<menu_item_call label="Espandi" name="expand"/>
-	<menu_item_call label="Comprimi" name="collapse"/>
-	<menu_item_call label="Apri tutte le cartelle" name="expand_all"/>
-	<menu_item_call label="Chiudi tutte le cartelle" name="collapse_all"/>
-	<menu_item_check label="Ordina in base alla data" name="sort_by_date"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/it/menu_places_gear_landmark.xml
deleted file mode 100644
index a458b1a7681a62ea068609d83685935dbd6199ef..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_ladmark_gear">
-	<menu_item_call label="Teleport" name="teleport"/>
-	<menu_item_call label="Maggiori informazioni" name="more_info"/>
-	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
-	<menu_item_call label="Aggiungi Punto di riferimento" name="add_landmark"/>
-	<menu_item_call label="Aggiungi cartella" name="add_folder"/>
-	<menu_item_call label="Ripristina oggetto" name="restore_item"/>
-	<menu_item_call label="Taglia" name="cut"/>
-	<menu_item_call label="Copia punto di riferimento" name="copy_landmark"/>
-	<menu_item_call label="Copia SLurl" name="copy_slurl"/>
-	<menu_item_call label="Incolla" name="paste"/>
-	<menu_item_call label="Modifica nome" name="rename"/>
-	<menu_item_call label="Elimina" name="delete"/>
-	<menu_item_call label="Apri tutte le cartelle" name="expand_all"/>
-	<menu_item_call label="Chiudi tutte le cartelle" name="collapse_all"/>
-	<menu_item_check label="Ordina in base alla data" name="sort_by_date"/>
-	<menu_item_call label="Crea Luogo consigliato" name="create_pick"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/it/menu_profile_overflow.xml
deleted file mode 100644
index 56b695c597e2259178ca0d6b4f5b85717743d107..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
-	<menu_item_call label="Mappa" name="show_on_map"/>
-	<menu_item_call label="Paga" name="pay"/>
-	<menu_item_call label="Condividi" name="share"/>
-	<menu_item_call label="Blocca" name="block"/>
-	<menu_item_call label="Sblocca" name="unblock"/>
-	<menu_item_call label="Espelli" name="kick"/>
-	<menu_item_call label="Congela" name="freeze"/>
-	<menu_item_call label="Scongela" name="unfreeze"/>
-	<menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/it/menu_save_outfit.xml
deleted file mode 100644
index 4882a8ac6464bb144d858bd6adbad9810b6c362c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
-	<menu_item_call label="Salva" name="save_outfit"/>
-	<menu_item_call label="Salva con nome" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/it/menu_script_chiclet.xml
deleted file mode 100644
index 604f754ba8e16020f698b0353c6e1610cfddc924..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
-	<menu_item_call label="Chiudi" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_slurl.xml b/indra/newview/skins/minimal/xui/it/menu_slurl.xml
deleted file mode 100644
index be83133efc10d9e289c9e25bef19713f1c0b4ec3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Informazioni sull&apos;indirizzo URL" name="about_url"/>
-	<menu_item_call label="Teleportati all&apos;indirizzo URL" name="teleport_to_url"/>
-	<menu_item_call label="Mappa" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/it/menu_teleport_history_gear.xml
deleted file mode 100644
index 409a62c31b2a637191f499b371b0c4188603b216..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
-	<menu_item_call label="Apri tutte le cartelle" name="Expand all folders"/>
-	<menu_item_call label="Chiudi tutte le cartelle" name="Collapse all folders"/>
-	<menu_item_call label="Cancella la cronologia Teleport" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/it/menu_teleport_history_item.xml
deleted file mode 100644
index 81053fbd65902140dd2148ef266a0d9e7db9f44d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Teleport" name="Teleport"/>
-	<menu_item_call label="Maggiori informazioni" name="More Information"/>
-	<menu_item_call label="Copia negli appunti" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/it/menu_teleport_history_tab.xml
deleted file mode 100644
index c221f141a68d06999cc152981a458deb4a3d1097..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Apri" name="TabOpen"/>
-	<menu_item_call label="Chiudi" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_text_editor.xml b/indra/newview/skins/minimal/xui/it/menu_text_editor.xml
deleted file mode 100644
index 4636ce992932bec840a6e46c54b5ad4e6ac08a9f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
-	<menu_item_call label="Taglia" name="Cut"/>
-	<menu_item_call label="Copia" name="Copy"/>
-	<menu_item_call label="Incolla" name="Paste"/>
-	<menu_item_call label="Elimina" name="Delete"/>
-	<menu_item_call label="Seleziona tutto" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/it/menu_topinfobar.xml
deleted file mode 100644
index 0beb9314de6d316acb887a03aa0642b15449ac98..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
-	<menu_item_check label="Mostra le coordinate" name="Show Coordinates"/>
-	<menu_item_check label="Mostra proprietà del lotto" name="Show Parcel Properties"/>
-	<menu_item_call label="Punto di riferimento" name="Landmark"/>
-	<menu_item_call label="Copia" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_agent.xml b/indra/newview/skins/minimal/xui/it/menu_url_agent.xml
deleted file mode 100644
index 37755d5749c8a98290c90ca928a43e0062ef4d63..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?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="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/minimal/xui/it/menu_url_group.xml b/indra/newview/skins/minimal/xui/it/menu_url_group.xml
deleted file mode 100644
index d9a792ebdfd1adb06ef63e03d447760a0564d0a3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Mostra informazioni gruppo" name="show_group"/>
-	<menu_item_call label="Copia gruppo 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/minimal/xui/it/menu_url_http.xml b/indra/newview/skins/minimal/xui/it/menu_url_http.xml
deleted file mode 100644
index e0153d9169a946afb59eadd03565d3733094b4b7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Apri pagina Web" name="url_open"/>
-	<menu_item_call label="Apri nel browser interno" name="url_open_internal"/>
-	<menu_item_call label="Apri nel browser esterno" name="url_open_external"/>
-	<menu_item_call label="Copia URL negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/it/menu_url_inventory.xml
deleted file mode 100644
index a45a6bbc107249b10619de98ecaba1969f1b5595..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Mostra oggetto dell&apos;inventario" name="show_item"/>
-	<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/minimal/xui/it/menu_url_map.xml b/indra/newview/skins/minimal/xui/it/menu_url_map.xml
deleted file mode 100644
index cb7935b3ed3b833dfde366f4f7b5a247a80e055a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
-	<menu_item_call label="Teleport al luogo" name="teleport_to_location"/>
-	<menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/it/menu_url_objectim.xml
deleted file mode 100644
index 763e65f17c0bb9e0bae5c84f7b4cae7c0db08aac..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?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="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"/>
-	<menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/it/menu_url_parcel.xml
deleted file mode 100644
index a032c33585b3d9d9360c4f10eba039d745db74b8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Mostra informazioni lotto" name="show_parcel"/>
-	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
-	<menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/it/menu_url_slapp.xml
deleted file mode 100644
index b368aa9141019125afbd9e6a941948b4b85ccbbb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Esegui questo comando" name="run_slapp"/>
-	<menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/it/menu_url_slurl.xml
deleted file mode 100644
index 355c7dbed9dc244be52046a7c7d8297d3b264105..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Mostra informazioni del luogo" name="show_place"/>
-	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
-	<menu_item_call label="Teleport al luogo" name="teleport_to_location"/>
-	<menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/it/menu_url_teleport.xml
deleted file mode 100644
index c129e61f25b8d3f1493fc13da25666519ebea2f5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Teleport a questa destinazione" name="teleport"/>
-	<menu_item_call label="Mostra sulla mappa" name="show_on_map"/>
-	<menu_item_call label="Copia SLurl negli Appunti" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_viewer.xml b/indra/newview/skins/minimal/xui/it/menu_viewer.xml
deleted file mode 100644
index 8353044f37b95618475633453664c9c1ae99ad12..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
-	<menu label="Aiuto" name="Help">
-		<menu_item_call label="Aiuto di [SECOND_LIFE]" name="Second Life Help"/>
-	</menu>
-	<menu label="Avanzate" name="Advanced">
-		<menu label="Scorciatoie" name="Shortcuts">
-			<menu_item_check label="Vola" name="Fly"/>
-			<menu_item_call label="Chiudi finestra" name="Close Window"/>
-			<menu_item_call label="Chiudi tutte le finestre" name="Close All Windows"/>
-			<menu_item_call label="Reimposta vista" name="Reset View"/>
-		</menu>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/it/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/it/menu_wearable_list_item.xml
deleted file mode 100644
index c9a02d8a86fbad0e7ddf11afe3704c9c0a49863e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
-	<menu_item_call label="Sostituisci" name="wear_replace"/>
-	<menu_item_call label="Indossa" name="wear_wear"/>
-	<menu_item_call label="Aggiungi" name="wear_add"/>
-	<menu_item_call label="Togli / Stacca" name="take_off_or_detach"/>
-	<menu_item_call label="Stacca" name="detach"/>
-	<context_menu label="Attacca a" name="wearable_attach_to"/>
-	<context_menu label="Attacca a HUD" name="wearable_attach_to_hud"/>
-	<menu_item_call label="Togli" name="take_off"/>
-	<menu_item_call label="Modifica" name="edit"/>
-	<menu_item_call label="Profilo articolo" name="object_profile"/>
-	<menu_item_call label="Mostra originale" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/it/menu_wearing_gear.xml
deleted file mode 100644
index 7c8eef64e5df1e71093777864ce0f2eed5687711..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
-	<menu_item_call label="Modifica vestiario" name="edit"/>
-	<menu_item_call label="Togli" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/it/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/it/menu_wearing_tab.xml
deleted file mode 100644
index 4a5366091f19ef5cd21fc194ef6ec91e4ffac8ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
-	<menu_item_call label="Togli" name="take_off"/>
-	<menu_item_call label="Stacca" name="detach"/>
-	<menu_item_call label="Modifica vestiario" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/it/notifications.xml b/indra/newview/skins/minimal/xui/it/notifications.xml
deleted file mode 100644
index cf24d6cbf502ba571fbe613c870e5d5239ef7ecd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/notifications.xml
+++ /dev/null
@@ -1,2951 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
-	<global name="skipnexttime">
-		Non mostrare più la prossima volta
-	</global>
-	<global name="alwayschoose">
-		Scegli sempre questa opzione
-	</global>
-	<global name="implicitclosebutton">
-		Chiudi
-	</global>
-	<template name="okbutton">
-		<form>
-			<button name="OK_okbutton" text="$yestext"/>
-		</form>
-	</template>
-	<template name="okignore">
-		<form>
-			<button name="OK_okignore" text="$yestext"/>
-		</form>
-	</template>
-	<template name="okcancelbuttons">
-		<form>
-			<button name="OK_okcancelbuttons" text="$yestext"/>
-			<button name="Cancel_okcancelbuttons" text="$notext"/>
-		</form>
-	</template>
-	<template name="okcancelignore">
-		<form>
-			<button name="OK_okcancelignore" text="$yestext"/>
-			<button name="Cancel_okcancelignore" text="$notext"/>
-		</form>
-	</template>
-	<template name="okhelpbuttons">
-		<form>
-			<button name="OK_okhelpbuttons" text="$yestext"/>
-			<button name="Help" text="$helptext"/>
-		</form>
-	</template>
-	<template name="yesnocancelbuttons">
-		<form>
-			<button name="Yes" text="$yestext"/>
-			<button name="No" text="$notext"/>
-			<button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
-		</form>
-	</template>
-	<notification functor="GenericAcknowledge" label="Messaggio di notifica sconosciuto" name="MissingAlert">
-		La versione di [APP_NAME] non riesce a visualizzare la notifica appena ricevuta.  Verifica di avere l&apos;ultima versione del Viewer installata.
-
-Dettagli errore: La notifica denominata &apos;[_NAME]&apos; non è stata trovata in notifications.xml.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="FloaterNotFound">
-		Errore visualizzazione finestra: Non trovati i seguenti controlli:
-
-[CONTROLS]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="TutorialNotFound">
-		Nessun tutorial disponibile al momento.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="GenericAlert">
-		[MESSAGE]
-	</notification>
-	<notification name="GenericAlertYesCancel">
-		[MESSAGE]
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/>
-	</notification>
-	<notification name="BadInstallation">
-		Il programma [APP_NAME] ha riscontrato un&apos;errore durante il tentativo di aggiornamento.  [http://get.secondlife.com Scarica l&apos;ultima versione] del Viewer.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="LoginFailedNoNetwork">
-		Non è possibile collegarsi alla [SECOND_LIFE_GRID].
-    &apos;[DIAGNOSTIC]&apos;
-Accertati che la tua connessione Internet stia funzionando correttamente.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="MessageTemplateNotFound">
-		Il modello di messaggio [PATH] non è stato trovato.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="WearableSave">
-		Salva i cambiamenti all&apos;attuale parte del corpo/abito?
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/>
-	</notification>
-	<notification name="CompileQueueSaveText">
-		C&apos;è stato un problema importando il testo di uno script per la seguente ragione: [REASON]. Riprova più tardi.
-	</notification>
-	<notification name="CompileQueueSaveBytecode">
-		C&apos;è stato un problema importando lo script compilato per la seguente ragione: [REASON]. Riprova più tardi.
-	</notification>
-	<notification name="WriteAnimationFail">
-		C&apos;è stato un problema di scrittura dati dell&apos;animazione.  Riprova più tardi.
-	</notification>
-	<notification name="UploadAuctionSnapshotFail">
-		C&apos;è stato un problema importando la fotografia dell&apos;asta per la seguente ragione: [REASON]
-	</notification>
-	<notification name="UnableToViewContentsMoreThanOne">
-		Non è possibile vedere il contenuto di più di un elemento per volta.
-Scegli solo un oggetto e riprova.
-	</notification>
-	<notification name="SaveClothingBodyChanges">
-		Salva tutte le modifiche alle parti del corpo/abiti?
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non Salvare" yestext="Salva Tutto"/>
-	</notification>
-	<notification name="FriendsAndGroupsOnly">
-		Chi non è tuo amico non saprà che hai scelto di ignorare le loro chiamate e IM.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="FavoritesOnLogin">
-		Nota: Se attivi questa opzione, chiunque usa questo computer può vedere l&apos;elenco di luoghi preferiti.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="GrantModifyRights">
-		Quando concedi i diritti di modifica ad un altro residente, gli permetti di modificare, eliminare o prendere QUALSIASI oggetto che possiedi in Second Life. Pertanto ti consigliamo di essere ben sicuro quando concedi questo diritto.
-Vuoi concedere i diritti di modifica a [NAME]?
-		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="GrantModifyRightsMultiple">
-		Quando concedi i diritti di modifica ad un altro residente, gli permetti di modificare QUALSIASI oggetto che possiedi in Second Life. Pertanto ti consigliamo di essere ben sicuro quando concedi questo diritto.
-Vuoi concedere i diritti di modifica ai residenti selezionati?
-		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="RevokeModifyRights">
-		Vuoi revocare i diritti di modifica di [NAME]?
-		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="RevokeModifyRightsMultiple">
-		Vuoi revocare i permessi di modifica dati ai residenti selezionati?
-		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="UnableToCreateGroup">
-		Non è possibile creare il gruppo.
-[MESSAGE]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="PanelGroupApply">
-		[NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Ignora le modifiche" yestext="Applica le modifiche"/>
-	</notification>
-	<notification name="MustSpecifyGroupNoticeSubject">
-		Devi specificare un oggetto per mandare una notice al gruppo.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AddGroupOwnerWarning">
-		Stai per aggiungere dei membri al ruolo [ROLE_NAME].
-Non si possono rimuovere membri da quel ruolo.
-I membri devono dimettersi volontariamente dal ruolo.
-Confermi l&apos;operazione?
-		<usetemplate ignoretext="Conferma prima di aggiungere un nuovo proprietario del gruppo" name="okcancelignore" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="AssignDangerousActionWarning">
-		Stai per aggiungere il potere &apos;[ACTION_NAME]&apos; al ruolo &apos;[ROLE_NAME]&apos;.
-
-  *ATTENZIONE*
- Ogni membro di un ruolo con questo potere può assegnare a sè stesso -- e a qualunque altro membro -- ruoli che hanno più poteri di quelli che hanno correntemente, potenzialmente consentendogli di avere quasi i poteri del proprietario.  Accertati di sapere quello che stai facendo prima di assegnare questo potere.
-
-Aggiungi questo potere a &apos;[ROLE_NAME]&apos;?
-		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="AssignDangerousAbilityWarning">
-		Stai per aggiungere il potere &apos;[ACTION_NAME]&apos; al ruolo &apos;[ROLE_NAME]&apos;.
-
- *ATTENZIONE*
- Ogni membro di un ruolo con questo potere può assegnare a sè stesso -- e a qualunque altro membro -- tutti i poteri, elevandosi al livello di quasi proprietario.
-
-Aggiungi questo potere a &apos;[ROLE_NAME]&apos;?
-		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="AttachmentDrop">
-		Stai per abbandonare il tuo accessorio.
-    Vuoi continuare?
-		<usetemplate ignoretext="Conferma prima di distaccare gli accessori" name="okcancelignore" notext="No" yestext="Sì"/>
-	</notification>
-	<notification name="JoinGroupCanAfford">
-		Iscriversi a questo gruppo costa [COST]L$.
-Vuoi proseguire?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Iscriviti"/>
-	</notification>
-	<notification name="JoinGroupNoCost">
-		Aderisci al gruppo [NAME].
-Continuare?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Iscriviti"/>
-	</notification>
-	<notification name="JoinGroupCannotAfford">
-		Iscriversi a questo gruppo costa [COST]L$.
-Non hai abbastanza L$ per iscriverti a questo gruppo.
-	</notification>
-	<notification name="CreateGroupCost">
-		La creazione di questo gruppo costerà L$ 100.
-I gruppi devono avere più di un partecipante, o saranno eliminati definitivamente.
-Invita altri partecipanti entro le prossime 48 ore.
-		<usetemplate canceltext="Annulla" name="okcancelbuttons" notext="Annulla" yestext="Crea un gruppo per L$ 100"/>
-	</notification>
-	<notification name="LandBuyPass">
-		Pagando [COST]L$ puoi entrare in questa terra (&apos;[PARCEL_NAME]&apos;) per [TIME] ore.  Compri un pass?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="SalePriceRestriction">
-		Il prezzo di vendita deve essere superiore a 0L$ se vendi a tutti.
-Seleziona una vendita individuale per vendere a 0L$.
-	</notification>
-	<notification name="ConfirmLandSaleChange">
-		Il terreno selezionato di [LAND_SIZE] m² sta per essere messo in vendita.
-Il tuo prezzo di vendità è [SALE_PRICE]L$ ed è autorizzato alla vendita a [NAME].
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmLandSaleToAnyoneChange">
-		ATTENZIONE: Quando selezioni &apos;vendi a tutti&apos;, rendi questo terreno disponibile all&apos;intera comunità di [SECOND_LIFE], anche alle persone che non si trovano in questa regione.
-
-Il terrendo selezionato di [LAND_SIZE] m² sta per essere messo in vendita.
-Il prezzo di vendità sarà [SALE_PRICE]L$ e [NAME] viene autorizzato alla vendita.
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsDeededToGroup">
-		Confermi di volere restituire tutti gli oggetti condivisi con il gruppo &apos;[NAME]&apos; di questo terreno agli inventari dei proprietari precedenti?
-
-*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo!
-
-Oggetti: [N]
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsOwnedByUser">
-		Confermi di volere restituire tutti gli oggetti posseduti dal residente &apos;[NAME]&apos; in questo terreno al suo inventario?
-
-Oggetti: [N]
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsOwnedBySelf">
-		Confermi di volere restituire tutti gli oggetti posseduti da te in questo terreno, di nuovo nel tuo inventario?
-
-Oggetti: [N]
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsNotOwnedBySelf">
-		Confermi di volere restituire tutti gli oggetti di cui NON sei proprietario in questo terreno all&apos;inventario dei rispettivi proprietari?
-Gli oggetti trasferibili ceduti al gruppo verranno restituiti ai loro proprietari precedenti.
-
-*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo!
-
-Oggetti: [N]
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsNotOwnedByUser">
-		Confermi di volere restituire tutti gli oggetti NON posseduti da [NAME] in questo terreno nell&apos;inventario dei loro proprietari?
-Gli oggetti trasferibili ceduti al gruppo verranno restituiti ai loro proprietari precedenti.
-
-*ATTENZIONE* Questo cancellerà gli oggetti non trasferibili ceduti al gruppo!
-
-Oggetti: [N]
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ReturnAllTopObjects">
-		Confermi di volere restituire tutti gli oggetti elencati nell&apos;inventario dei loro proprietari?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="DisableAllTopObjects">
-		Confermi di volere disabilitare tutti gli oggetti in questa regione?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsNotOwnedByGroup">
-		Restituisci gli oggetti in questo terreno che NON sono condivisi con il gruppo [NAME] ai loro proprietari?
-
-Oggetti: [N]
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="UnableToDisableOutsideScripts">
-		Non è possibile disabilitare gli script.
-L&apos;intera regione ha l&apos;abilitazione danni.
-Gli script devono essere autorizzati all&apos;esecuzione affinchè le armi funzionino.
-	</notification>
-	<notification name="MultipleFacesSelected">
-		Sono state selezionate più facce.
-Se prosegui con questa azione, sulle diverse facce dell&apos;oggetto verranno definite sessioni multimediali distinte.
-Per collocare il media su una sola faccia, scegli Seleziona faccia, clicca su una faccia e clicca su Aggiungi.
-		<usetemplate ignoretext="Il canale multimediale sarà impostato su più facce selezionate" name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="MustBeInParcel">
-		Devi essere dentro il terreno per impostare il suo Punto di Atterraggio.
-	</notification>
-	<notification name="PromptRecipientEmail">
-		Introduci un indirizzo email per il destinatario/i.
-	</notification>
-	<notification name="PromptSelfEmail">
-		Introduci il tuo indirizzo email.
-	</notification>
-	<notification name="PromptMissingSubjMsg">
-		Invia la foto via email con soggetto o messaggio predefinito?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ErrorProcessingSnapshot">
-		Errore nell&apos;elaborazione della fotografia.
-	</notification>
-	<notification name="ErrorEncodingSnapshot">
-		Errore nella codifica della fotografia.
-	</notification>
-	<notification name="ErrorUploadingPostcard">
-		C&apos;è stato un problema inviando la fotografia per il seguente motivo: [REASON]
-	</notification>
-	<notification name="ErrorUploadingReportScreenshot">
-		C&apos;è stato un problema importando la foto del rapporto per il seguente motivo: [REASON]
-	</notification>
-	<notification name="MustAgreeToLogIn">
-		Devi accettare i Termini di Servizio prima di proseguire il collegamento con [SECOND_LIFE].
-	</notification>
-	<notification name="CouldNotPutOnOutfit">
-		Non è stato possibile indossare un equipaggiamento.
-La cartella equipaggiamento non contiene abbigliamento, parti del corpo o attachment.
-	</notification>
-	<notification name="CannotWearTrash">
-		Non puoi indossare abiti e parti del corpo che sono nel cestino
-	</notification>
-	<notification name="MaxAttachmentsOnOutfit">
-		L&apos;oggetto non può essere collegato.
-Superato il limite di oggetti collegati [MAX_ATTACHMENTS]. Per favore prima stacca un altro oggetto.
-	</notification>
-	<notification name="CannotWearInfoNotComplete">
-		Non puoi indossare quell&apos;elemento perchè non è ancora stato caricato. Riprova fra un minuto.
-	</notification>
-	<notification name="MustHaveAccountToLogIn">
-		Spiacenti. Un campo è vuoto.
-Inserisci il Nome utente del tuo avatar.
-
-Devi avere un account per entrare in [SECOND_LIFE]. Vuoi crearne uno adesso?
-		<url name="url">
-			https://join.secondlife.com/index.php?lang=it-IT
-		</url>
-		<usetemplate name="okcancelbuttons" notext="Riprova" yestext="Crea un nuovo account"/>
-	</notification>
-	<notification name="InvalidCredentialFormat">
-		Immetti il nome utente oppure sia il nome che il cognome del tuo avatar nel campo del nome utente, quindi effettua nuovamente l&apos;accesso.
-	</notification>
-	<notification name="DeleteClassified">
-		Cancella annuncio &apos;[NAME]&apos;?
-Non ci sono rimborsi per la tariffa pagata.
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="DeleteMedia">
-		Hai selezionato la cancellazione del media associato a questa faccia.
-Vuoi continuare?
-		<usetemplate ignoretext="Conferma prima di eliminare elementi multimediali dall&apos;oggetto" name="okcancelignore" notext="No" yestext="Sì"/>
-	</notification>
-	<notification name="ClassifiedSave">
-		Salva le modifiche all&apos;annuncio [NAME]?
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/>
-	</notification>
-	<notification name="ClassifiedInsufficientFunds">
-		Denaro insufficiente per creare un&apos;inserzione.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="DeleteAvatarPick">
-		Elimina preferito &lt;nolink&gt;[PICK]&lt;/nolink&gt;?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="DeleteOutfits">
-		Elimina il vestiario selezionato?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="PromptGoToEventsPage">
-		Vai alla pagina degli eventi di [SECOND_LIFE]?
-		<url name="url">
-			http://secondlife.com/events/?lang=it-IT
-		</url>
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="SelectProposalToView">
-		Scegli una proposta da vedere.
-	</notification>
-	<notification name="SelectHistoryItemToView">
-		Scegli un item storico da vedere.
-	</notification>
-	<notification name="CacheWillClear">
-		La cache verrà cancellata dopo il riavvio di [APP_NAME].
-	</notification>
-	<notification name="CacheWillBeMoved">
-		La cache verrà spostata dopo il riavvio di [APP_NAME].
-Nota: questa operazione cancellerà la cache.
-	</notification>
-	<notification name="ChangeConnectionPort">
-		Le impostazioni della porta avranno effetto dopo il riavvio di [APP_NAME].
-	</notification>
-	<notification name="ChangeSkin">
-		La nuova pelle comparirà dopo il riavvio di [APP_NAME].
-	</notification>
-	<notification name="ChangeLanguage">
-		La modifica della lingua avrà effetto dopo il riavvio di [APP_NAME].
-	</notification>
-	<notification name="GoToAuctionPage">
-		Vai alla pagina web [SECOND_LIFE] per vedere i dettagli dell&apos;asta oppure fai un&apos;offerta?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="SaveChanges">
-		Salva le modifiche?
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Non salvare" yestext="Salva"/>
-	</notification>
-	<notification name="GestureSaveFailedTooManySteps">
-		Il salvataggio della Gesture è fallito.
-La gesture ha troppi passi.
-Prova a togliere qualche passo e quindi risalva.
-	</notification>
-	<notification name="GestureSaveFailedTryAgain">
-		Il salvataggio della gesture è fallito.  Riprova fra un minuto.
-	</notification>
-	<notification name="GestureSaveFailedObjectNotFound">
-		Non è possibile salvare la gesture perchè non è stato trovato l&apos;oggetto o l&apos;inventario associato.
-L&apos;oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
-	</notification>
-	<notification name="GestureSaveFailedReason">
-		C&apos;è stato un problema salvando la gesture a causa del seguente motivo: [REASON].  Riprova a salvare la gesture più tardi.
-	</notification>
-	<notification name="SaveNotecardFailObjectNotFound">
-		Non è possibile salvare la notecard perchè non è stato trovato l&apos;oggetto o l&apos;inventario associato.
-L&apos;oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
-	</notification>
-	<notification name="SaveNotecardFailReason">
-		C&apos;è stato un problema salvando la notecard a causa del seguente motivo: [REASON].  Riprova a salvare la notecard più tardi.
-	</notification>
-	<notification name="ScriptCannotUndo">
-		Non è stato possibile annullare tutti i cambiamenti nella tua versione dello script.
-Vuoi ripristinare l&apos;ultima versione salvata sul server?
-(**Attenzione** Questa operazione non è reversibile)
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="SaveScriptFailReason">
-		C&apos;è stato un problema salvando lo script a causa del seguente motivo : [REASON].  Riprova a salvare lo script più tardi.
-	</notification>
-	<notification name="SaveScriptFailObjectNotFound">
-		Non è stato possibile salvare lo script perchè l&apos;oggetto che lo contiene non è stato trovato.
-L&apos;oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
-	</notification>
-	<notification name="SaveBytecodeFailReason">
-		C&apos;è stato un problema salvando lo script compilato a causa del seguente motivo: [REASON].  Riprova a salvare lo script più tardi.
-	</notification>
-	<notification name="StartRegionEmpty">
-		La tua Regione di inizio non è stata definita.
-Per scegliere il luogo dove vuoi trovarti all&apos;accesso, digita il nome della regione nel campo del luogo di partenza oppure scegli La mia ultima Ubicazione o Casa mia.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CouldNotStartStopScript">
-		Non è stato possibile lanciare o fermare lo script perchè l&apos;oggetto che lo contiene non è stato trovato.
-L&apos;oggetto potrebbe essere troppo lontano oppure essere stato cancellato.
-	</notification>
-	<notification name="CannotDownloadFile">
-		Non è stato possibile scaricare il file
-	</notification>
-	<notification name="CannotWriteFile">
-		Non è stato possibile scrivere il file [[FILE]]
-	</notification>
-	<notification name="UnsupportedHardware">
-		Ti informiamo che il tuo computer non dispone dei requisiti minimi di sistema per [APP_NAME]. Il funzionamento può pertanto risultare ridotto. Purtroppo la pagina [SUPPORT_SITE] non può fornire assistenza tecnica in caso di problemi dovuti a configurazioni di sistema non compatibili.
-
-Visitare [_URL] per ulteriori informazioni?
-		<url name="url" option="0">
-			http://secondlife.com/support/sysreqs.php?lang=it
-		</url>
-		<usetemplate ignoretext="L&apos;hardware di questo computer non è compatibile" name="okcancelignore" notext="No" yestext="Si"/>
-	</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.
-(Io &gt; Preferenze &gt; Grafica).
-		<form name="form">
-			<ignore name="ignore" text="La tua scheda grafica non è stata riconosciuta"/>
-		</form>
-	</notification>
-	<notification name="DisplaySettingsNoShaders">
-		L&apos;esecuzione di [APP_NAME] si è interrotta durante l&apos;inizializzazione dei driver grafici.
-La qualità grafica verrà impostata a livello basso per evitare alcuni errori comuni di driver. Alcune funzionalità grafiche saranno disattivate.
-Si consiglia di aggiornare i driver della scheda grafica.
-La qualità grafica può essere aumentata in Preferenze &gt; Grafica.
-	</notification>
-	<notification name="RegionNoTerraforming">
-		La regione [REGION] non consente di terraformare.
-	</notification>
-	<notification name="CannotCopyWarning">
-		Non hai l&apos;autorizzazione a copiare i seguenti oggetti:
-[ITEMS]
-e se li dai via, verranno eliminati dal tuo inventario. Sicuro di volere offrire questi oggetti?
-		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="CannotGiveItem">
-		Impossibile consegnare l&apos;elemento dell&apos;inventario.
-	</notification>
-	<notification name="TransactionCancelled">
-		La transazione è stata annullata.
-	</notification>
-	<notification name="TooManyItems">
-		Non è possibile dare più di 42 elementi in un singolo trasferimento di inventario.
-	</notification>
-	<notification name="NoItems">
-		Non hai i permessi di trasferimento per gli elementi selezionati.
-	</notification>
-	<notification name="CannotCopyCountItems">
-		Non hai i permessi di copia per copiare [COUNT]
-degli elementi selezionati. Perderai questi elementi dal tuo inventario.
-Vuoi veramente perdere questi elementi?
-		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="CannotGiveCategory">
-		Non hai i permessi per trasferire la cartella selezionata.
-	</notification>
-	<notification name="FreezeAvatar">
-		Immobilizza questo avatar?
-Non potrà temporaneamente muoversi, chiacchierare in chat, o interagire con il mondo.
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Smobilizza" yestext="Immobilizza"/>
-	</notification>
-	<notification name="FreezeAvatarFullname">
-		Immobilizza [AVATAR_NAME]?
-Non potrà temporaneamente muoversi, chiacchierare in chat, o interagire con il mondo.
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Smobilizza" yestext="Immobilizza"/>
-	</notification>
-	<notification name="EjectAvatarFullname">
-		Espelli [AVATAR_NAME] dal tuo terreno?
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Espelli e blocca" yestext="Espelli"/>
-	</notification>
-	<notification name="EjectAvatarNoBan">
-		Espelli questo avatar dal tuo terreno?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli"/>
-	</notification>
-	<notification name="EjectAvatarFullnameNoBan">
-		Espelli [AVATAR_NAME] dal tuo terreno?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli"/>
-	</notification>
-	<notification name="EjectAvatarFromGroup">
-		Hai espulso [AVATAR_NAME] dal gruppo [GROUP_NAME]
-	</notification>
-	<notification name="AcquireErrorTooManyObjects">
-		ERRORE DI ACQUISIZIONE: hai selezionato troppi oggetti.
-	</notification>
-	<notification name="AcquireErrorObjectSpan">
-		ERRORE DI ACQUISIZIONE: Gli oggetti sono a cavallo di più di una regione.
-Sposta tutti gli oggetti che vuoi acquisire su una sola regione.
-	</notification>
-	<notification name="PromptGoToCurrencyPage">
-		[EXTRA]
-
-Vai su [_URL] per informazioni sull&apos;acquisto di L$?
-		<url name="url">
-			http://secondlife.com/app/currency/?lang=it-IT
-		</url>
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="UnableToLinkObjects">
-		Impossibile unire questi [COUNT] oggetti.
-Puoi unire al massimo [MAX] oggetti.
-	</notification>
-	<notification name="CannotLinkIncompleteSet">
-		Puoi unire soltanto un insieme completo di oggetti, e devi selezionare più di un oggetto.
-	</notification>
-	<notification name="CannotLinkModify">
-		Impossibile unire perchè non hai il diritto di modifica su tutti gli oggetti.
-
-Accertati che nessuno sia bloccato e che li possiedi tutti.
-	</notification>
-	<notification name="CannotLinkDifferentOwners">
-		Impossibile unire perche non tutti gli oggetti hanno lo stesso proprietario.
-
-Accertati di possedere tutti gli oggetti selezionati.
-	</notification>
-	<notification name="NoFileExtension">
-		Manca l&apos;estensione per il file: &apos;[FILE]&apos;
-
-Accertati che il file abbia una estensione corretta.
-	</notification>
-	<notification name="InvalidFileExtension">
-		L&apos;estensione [EXTENSION] del file non è valida
-Attese [VALIDS]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CannotUploadSoundFile">
-		Impossibile aprire in lettura il file di suono importato:
-[FILE]
-	</notification>
-	<notification name="SoundFileNotRIFF">
-		Il file audio non sembra essere di tipo RIFF WAVE:
-[FILE]
-	</notification>
-	<notification name="SoundFileNotPCM">
-		Il file audio non sembra essere di tipo PCM WAVE:
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidChannelCount">
-		Il file ha un numero sbagliato di canali (deve essere mono oppure stereo):
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidSampleRate">
-		Il file non sembra essere della frequenza di campionamento supportata (deve essere 44.1k):
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidWordSize">
-		Il file non sembra avere una dimensione della parola supportata (deve essere a 8 o a 16 bit):
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidHeader">
-		Impossibile trovare il frammento &apos;data&apos; nell&apos;intestazione WAV:
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidChunkSize">
-		Dimensione chunk nel file WAV:
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidTooLong">
-		Il file audio è troppo lungo (deve essere al massimo 10 secondi):
-[FILE]
-	</notification>
-	<notification name="ProblemWithFile">
-		Problemi con il file [FILE]:
-
-[ERROR]
-	</notification>
-	<notification name="CannotOpenTemporarySoundFile">
-		Impossibile aprire in scrittura il file temporaneamente compresso: [FILE]
-	</notification>
-	<notification name="UnknownVorbisEncodeFailure">
-		Errore di codifica Vorbis sconosciuta per: [FILE]
-	</notification>
-	<notification name="CannotEncodeFile">
-		Impossibile codificare il file: [FILE]
-	</notification>
-	<notification name="CorruptedProtectedDataStore">
-		Impossibile inserire nome utente e password.  Ciò può succedere alla modifica delle impostazioni di rete.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CorruptResourceFile">
-		File risorsa corrotto: [FILE]
-	</notification>
-	<notification name="UnknownResourceFileVersion">
-		Versione di risorsa Linden sconosciuta nel file: [FILE]
-	</notification>
-	<notification name="UnableToCreateOutputFile">
-		Impossibile creare il file in uscita: [FILE]
-	</notification>
-	<notification name="DoNotSupportBulkAnimationUpload">
-		[APP_NAME] non supporta ancora il caricamento in blocco di file di animazione.
-	</notification>
-	<notification name="CannotUploadReason">
-		Impossibile importare il file [FILE] a causa del seguente motivo: [REASON]
-Riprova più tardi.
-	</notification>
-	<notification name="LandmarkCreated">
-		Hai aggiunto &quot;[LANDMARK_NAME]&quot; alla tua cartella [FOLDER_NAME].
-	</notification>
-	<notification name="LandmarkAlreadyExists">
-		Hai già il punto di riferimento di questo luogo.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CannotCreateLandmarkNotOwner">
-		Non puoi creare qui un landmark perchè il proprietario di questo terreno non lo consente.
-	</notification>
-	<notification name="CannotRecompileSelectObjectsNoScripts">
-		Impossibile fare la &apos;ricompilazione&apos;.
-Seleziona un oggetto con uno script.
-	</notification>
-	<notification name="CannotRecompileSelectObjectsNoPermission">
-		Impossibile fare la &apos;ricompilazione&apos;.
-
-Seleziona oggetti con script su cui hai i permessi di modifica.
-	</notification>
-	<notification name="CannotResetSelectObjectsNoScripts">
-		Impossibile fare &apos;ripristino&apos;.
-
-Seleziona oggetti con degli script.
-	</notification>
-	<notification name="CannotResetSelectObjectsNoPermission">
-		Impossibile fare &apos;ripristino&apos;.
-
-Seleziona oggetti con script su cui hai i permessi di modifica.
-	</notification>
-	<notification name="CannotOpenScriptObjectNoMod">
-		Impossibile aprire la script dell&apos;oggetto senza i diritti di modifica.
-	</notification>
-	<notification name="CannotSetRunningSelectObjectsNoScripts">
-		Impossibile mettere &apos;in esecuzione&apos; gli script.
-
-Seleziona oggetti con script.
-	</notification>
-	<notification name="CannotSetRunningNotSelectObjectsNoScripts">
-		Impossibile impostare script a &apos;non in esecuzione&apos;.
-
-Seleziona oggetti con script.
-	</notification>
-	<notification name="NoFrontmostFloater">
-		Non c&apos;è nessuna finestra in evidenza (in primo piano) da salvare.
-	</notification>
-	<notification name="SeachFilteredOnShortWords">
-		La tua ricerca è stata modificata.
-Le parole troppo corte sono state rimosse.
-
-Ho cercato: [FINALQUERY]
-	</notification>
-	<notification name="SeachFilteredOnShortWordsEmpty">
-		Le parole che hai usato per la ricerca sono troppo corte e non è stato possibile iniziare la ricerca.
-	</notification>
-	<notification name="CouldNotTeleportReason">
-		Teleport non riuscito.
-[REASON]
-	</notification>
-	<notification name="invalid_tport">
-		C&apos;è stato un problema nell&apos;elaborare la tua richiesta di teleport. Potresti dover effettuare nuovamente l&apos;accesso prima di poter usare il teleport.
-Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE].
-	</notification>
-	<notification name="invalid_region_handoff">
-		Si è verificato un problema nel tentativo di attraversare regioni. È possibile che per potere attraversare le regioni, tu debba effettuare nuovamente l&apos;accesso.
-Se si continua a visualizzare questo messaggio, consulta la pagina [SUPPORT_SITE].
-	</notification>
-	<notification name="blocked_tport">
-		Spiacenti, il teletrasporto è bloccato al momento. Prova di nuovo tra pochi istanti. Se ancora non potrai teletrasportarti, per favore scollegati e ricollegati per risolvere il problema.
-	</notification>
-	<notification name="nolandmark_tport">
-		Spiacenti, ma il sistema non riesce a localizzare la destinazione del landmark
-	</notification>
-	<notification name="timeout_tport">
-		Spiacenti, il sistema non riesce a completare il teletrasporto. Riprova tra un attimo.
-	</notification>
-	<notification name="noaccess_tport">
-		Spiacenti, ma non hai accesso nel luogo di destinazione richiesto.
-	</notification>
-	<notification name="missing_attach_tport">
-		Gli oggetti da te indossati non sono ancoa arrivati. Attendi ancora qualche secondo o scollegati e ricollegati prima di provare a teleportarti.
-	</notification>
-	<notification name="too_many_uploads_tport">
-		Il server della regione è al momento occupato e la tua richiesta di teletrasporto non può essere soddisfatta entro breve tempo. Per favore prova di nuovo tra qualche minuto o spostati in un&apos;area meno affollata.
-	</notification>
-	<notification name="expired_tport">
-		Spiacenti, il sistema non riesce a soddisfare la tua richiesta di teletrasporto entro un tempo ragionevole. Riprova tra qualche minuto.
-	</notification>
-	<notification name="expired_region_handoff">
-		Spiacenti, il sistema non riesce a completare il cambio di regione entro un tempo ragionevole. Riprova tra qualche minuto.
-	</notification>
-	<notification name="no_host">
-		Impossibile trovare la destinazione del teletrasporto; potrebbe essere temporaneamente non accessibile o non esistere più. Riprovaci tra qualche minuto.
-	</notification>
-	<notification name="no_inventory_host">
-		L&apos;inventario è temporaneamente inaccessibile.
-	</notification>
-	<notification name="CannotSetLandOwnerNothingSelected">
-		Impossibile impostare il proprietario del terreno:
-Nessun terreno selezionato.
-	</notification>
-	<notification name="CannotSetLandOwnerMultipleRegions">
-		Impossibile forzare la proprietà del terreno perchè la selezione si estende su diverse regioni. Seleziona una area più piccola e riprova.
-	</notification>
-	<notification name="ForceOwnerAuctionWarning">
-		Questo lotto è all&apos;asta. La designazione di un proprietario determinerà l&apos;annullamento automatico dell&apos;asta e probabilmente può scontentare qualche residente se l&apos;asta è già iniziata.
-Vuoi designare un proprietario?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="CannotContentifyNothingSelected">
-		Impossibile fare la contentificazione:
-Nessun terreno selezionato.
-	</notification>
-	<notification name="CannotContentifyNoRegion">
-		Impossibile fare la contentificazione:
-Nessuna regione selezionata.
-	</notification>
-	<notification name="CannotReleaseLandNothingSelected">
-		Impossibile abbandonare il terreno:
-Nessun terreno selezionato.
-	</notification>
-	<notification name="CannotReleaseLandNoRegion">
-		Impossibile abbandonare il terreno:
-Non riesco a trovare la regione.
-	</notification>
-	<notification name="CannotBuyLandNothingSelected">
-		Impossibile comprare il terreno:
-Nessun terreno selezionato.
-	</notification>
-	<notification name="CannotBuyLandNoRegion">
-		Impossibile comprare il terreno:
-Non riesco a trovare la regione dove è situato il terreno.
-	</notification>
-	<notification name="CannotCloseFloaterBuyLand">
-		Non puoi chiudere la finestra Acquista terreno finché [APP_NAME] non finisce di stimare il prezzo di questa transazione.
-	</notification>
-	<notification name="CannotDeedLandNothingSelected">
-		Impossibile cedere il terreno:
-Nessun terreno selezionato.
-	</notification>
-	<notification name="CannotDeedLandNoGroup">
-		Impossibile cedere il terreno:
-Nessun gruppo selezionato.
-	</notification>
-	<notification name="CannotDeedLandNoRegion">
-		Non è possibile effettuare la cessione del terreno:
-Impossibile trovare la regione in cui si trova il terreno.
-	</notification>
-	<notification name="CannotDeedLandMultipleSelected">
-		Impossibile cedere il terreno:
-Hai selezionato più di un terreno.
-
-Prova a selezionare un solo terreno.
-	</notification>
-	<notification name="CannotDeedLandWaitingForServer">
-		Impossibile cedere il terreno:
-Sto aspettando il server per segnalare la proprietà.
-
-Riprova di nuovo.
-	</notification>
-	<notification name="CannotDeedLandNoTransfer">
-		Impossibile cedere il terreno:
-La regione [REGION] non consente il trasferimento di terreni.
-	</notification>
-	<notification name="CannotReleaseLandWatingForServer">
-		Impossibile abbandonare il terreno:
-Sto aspettando il server per aggiornare le informazioni del terreno.
-
-Riprova fra poco.
-	</notification>
-	<notification name="CannotReleaseLandSelected">
-		Impossibile abbandonare il terreno:
-Non possiedi tutti i terreni selezionati.
-
-Seleziona un solo terreno.
-	</notification>
-	<notification name="CannotReleaseLandDontOwn">
-		Impossibile abbandonare il terreno:
-Non hai i permessi per rilasciare questo terreno.
-I terreni di tua proprietà vengono visualizzati in verde.
-	</notification>
-	<notification name="CannotReleaseLandRegionNotFound">
-		Non è possibile abbandonare il terreno:
-Impossibile trovare la regione in cui si trova il terreno.
-	</notification>
-	<notification name="CannotReleaseLandNoTransfer">
-		Impossibile abbandonare il terreno:
-La regione [REGION] non consente il trasferimento di terreni.
-	</notification>
-	<notification name="CannotReleaseLandPartialSelection">
-		Impossibile abbandonare il terreno:
-Devi selezionare un terreno intero per rilasciarla.
-
-Seleziona un terreno intero, oppure dividi prima il tuo terreno.
-	</notification>
-	<notification name="ReleaseLandWarning">
-		Stai per rilasciare [AREA] m² di terreno.
-Rilasciare questo appezzamento di terreno lo toglierà dalle tue proprietà, ma non ti verranno dati L$.
-
-Rilasciare questo terreno?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="CannotDivideLandNothingSelected">
-		Impossibile dividere il terreno:
-
-Non sono stati selezionati terreni.
-	</notification>
-	<notification name="CannotDivideLandPartialSelection">
-		Impossibile dividere il terreno:
-
-Hai selezionato unintero terreno.
-Prova a selezionare unappezzamento di terreno.
-	</notification>
-	<notification name="LandDivideWarning">
-		La suddivisione di questo terreno lo dividerà in due parti ed ognuna potrà avere le sue impostazioni. Alcune impostazioni verranno reimpostate ai valori iniziali dopo l&apos;operazione.
-
-Dividi il terreno?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="CannotDivideLandNoRegion">
-		Non è possibile suddividere il terreno:
-Impossibile trovare la regione in cui si trova il terreno.
-	</notification>
-	<notification name="CannotJoinLandNoRegion">
-		Non è possibile unire il terreno:
-Impossibile trovare la regione in cui si trova il terreno.
-	</notification>
-	<notification name="CannotJoinLandNothingSelected">
-		Impossibile unire il terreno:
-Non hai selezionato terreno.
-	</notification>
-	<notification name="CannotJoinLandEntireParcelSelected">
-		Impossibile unire il terreno:
-Hai selezionato un solo terreno.
-
-Devi selezionare il terreno  comprendendo entrambi gli appezzamenti.
-	</notification>
-	<notification name="CannotJoinLandSelection">
-		Impossibile unire il terreno:
-Devi selezionare più di un terreno.
-
-Devi selezionare il terreno  comprendendo entrambi gli appezzamenti.
-	</notification>
-	<notification name="JoinLandWarning">
-		Unire questi appezzamenti creerà un terreno più grande a partire da tutti gli appezzamenti che si intersecano nel rettangolo selezionato.
-Dovrai reimpostare il nome e le opzioni del nuovo terreno.
-
-Unisci il terreno?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmNotecardSave">
-		Questa notecard deve essere salvata prima che l&apos;elemento possa essere copiato o visualizzato. Salva la notecard?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmItemCopy">
-		Copia questo elemento nel tuo inventario?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Copia"/>
-	</notification>
-	<notification name="ResolutionSwitchFail">
-		Non sono riuscito a cambiare la risoluzione al valore [RESX] x [RESY]
-	</notification>
-	<notification name="ErrorUndefinedGrasses">
-		Errore: Erba sconosciuta: [SPECIES]
-	</notification>
-	<notification name="ErrorUndefinedTrees">
-		Errore: Alberi sconosciuti: [SPECIES]
-	</notification>
-	<notification name="CannotSaveWearableOutOfSpace">
-		Impossibile salvare &apos;[NAME]&apos; nel file di oggetti indossabili.  Dovrai liberare dello spazio sul tuo computer e salvare di nuovo.
-	</notification>
-	<notification name="CannotSaveToAssetStore">
-		Non è possibile salvare [NAME] nel database centrale degli asset.
-In genere si tratta di un problema temporaneo. Attendi alcuni minuti per modificare e salvare nuovamente gli elementi indossabili.
-	</notification>
-	<notification name="YouHaveBeenLoggedOut">
-		Sei stato scollegato da [SECOND_LIFE].
-            [MESSAGE]
-		<usetemplate name="okcancelbuttons" notext="Esci" yestext="Vedi IM &amp; Chat"/>
-	</notification>
-	<notification name="OnlyOfficerCanBuyLand">
-		Impossibile comprare terreno per il gruppo:
-Non hai i permessi per comprare il terreno per il tuo gruppo attivo.
-	</notification>
-	<notification label="Aggiungi Amico" name="AddFriendWithMessage">
-		Gli amici possono autorizzarsi a vedersi l&apos;un l&apos;altro sulla mappa e sapere quando sono collegati.
-
-Offri l&apos;amicizia a [NAME]?
-		<form name="form">
-			<input name="message">
-				Vorresti essere mio amico?
-			</input>
-			<button name="Offer" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification label="Salva vestiario" name="SaveOutfitAs">
-		Salva gli abiti che indosso come nuovo vestiario:
-		<form name="form">
-			<input name="message">
-				[DESC] (nuovo)
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification label="Salva capo da indossare" name="SaveWearableAs">
-		Salva oggetto nel mio inventario come:
-		<form name="form">
-			<input name="message">
-				[DESC] (nuovo)
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification label="Cambia nome del vestiario" name="RenameOutfit">
-		Nuovo nome per il vestiario:
-		<form name="form">
-			<input name="new_name">
-				[NAME]
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification name="RemoveFromFriends">
-		Vuoi rimuovere [NAME] dalla lista dei tuoi amici?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="RemoveMultipleFromFriends">
-		Vuoi rimuovere gli amici selezionati dalla lista dei tuoi amici?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="GodDeleteAllScriptedPublicObjectsByUser">
-		Confermi di volere cancellare tutti gli oggetti scriptati della proprietà di
-** [AVATAR_NAME] **
-su tutti gli altri terreni di questa sim?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="GodDeleteAllScriptedObjectsByUser">
-		Confermi la CANCELLAZIONE di TUTTI gli oggetti scriptati posseduti da
-** [AVATAR_NAME] **
-su TUTTI I TERRENI di questa sim?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="GodDeleteAllObjectsByUser">
-		Confermi la CANCELLAZIONE di TUTTI gli oggetti (scriptati o no) posseduti da
-** [AVATAR_NAME] **
-su TUTTI I TERRENI di questa sim?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="BlankClassifiedName">
-		Devi specificare un nome per il tuo annuncio.
-	</notification>
-	<notification name="MinClassifiedPrice">
-		Il prezzo da pagare per essere messo in lista deve essere almeno [MIN_PRICE]L$.
-
-Introduci un prezzo più alto.
-	</notification>
-	<notification name="ConfirmItemDeleteHasLinks">
-		Almeno uno degli oggetti selezionati è collegato tramite link ad altri oggetti.  Se elimini l&apos;oggetto, i relativi link non funzioneranno più.  Pertanto si consiglia vivamente di eliminare prima i link.
-
-Sei sicuro di volere eliminare gli oggetti?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteLock">
-		Almeno uno degli elementi selezionati è bloccato.
-
-Confermi di voler cancellare questi elementi?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteNoCopy">
-		Almeno uno degli elementi selezionati non è copiabile.
-
-Confermi di voler cancellare questi elementi?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteNoOwn">
-		Non possiedi neanche uno degli oggetti selezionati.
-
-Confermi di voler cancellare questi elementi?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteLockNoCopy">
-		Almeno un oggetto è bloccato.
-Almeno un oggetto è non copiabile.
-
-Confermi di voler cancellare questi elementi?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteLockNoOwn">
-		Almeno un oggetto è bloccato.
-Non possiedi neanche un oggetto.
-
-Confermi di voler cancellare questi elementi?
-		<usetemplate name="okcancelbuttons" notext="Cancella" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteNoCopyNoOwn">
-		Almeno un oggetto non è copiabile.
-Non possiedi neanche un oggetto.
-
-Confermi di voler cancellare questi elementi?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
-		Almeno un oggetto è bloccato.
-Almeno un oggetto è non copiabile.
-Non possiedi neanche un oggetto.
-
-Confermi di voler cancellare questi elementi?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectTakeLock">
-		Almeno un oggetto è bloccato.
-
-Confermi di voler prendere questi elementi?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectTakeNoOwn">
-		Non possiedi tutti gli oggetti che stai prendendo.
-Se continui, verranno applicate i permessi per il prossimo proprietario e di conseguenza potrebbero venire ristrette le tue possibilità di modificarli o di copiarli.
-
-Confermi di voler prendere questi elementi?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectTakeLockNoOwn">
-		Almeno un oggetto è bloccato.
-Non possiedi tutti gli oggetti che stai prendendo.
-Se continui, verranno applicate i permessi per il prossimo proprietario e di conseguenza potrebbero venire ristrette le tue possibilità di modificarli o di copiarli.
-Puoi comunque prendere gli oggetti selezionati.
-
-Confermi di voler prendere questi elementi?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="CantBuyLandAcrossMultipleRegions">
-		Impossibile comprare il terreno perchè la selezione comprende più regioni.
-
-Seleziona un&apos;area più piccola e riprova.
-	</notification>
-	<notification name="DeedLandToGroup">
-		Cedendo questo terreno al gruppo sara richiesto ai componenti di avere e di mantenere il terreno con un credito sufficiente.
-Il prezzo di acquisto del terreno non è rifondibile al proprietario.
-Se una terreno ceduto al gruppo viene venduto, il prezzo di vendita verrà diviso in parti uguali fra i membri del gruppo.
-
-Cedi questo terreno di [AREA] m² al gruppo &apos;[GROUP_NAME]&apos;?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="DeedLandToGroupWithContribution">
-		Completando la cessione del lotto, il gruppo dovrà avere e mantenere crediti sufficienti per l&apos;uso del terreno.
-La cessione includerà un contributo contemporaneo di terreno al gruppo da &apos;[NAME]&apos;.
-Il prezzo di acquisto del terreno non viene rimborsato al proprietario. Se un lotto ceduto viene venduto, il prezzo di vendita viene distribuito in maniera paritetica tra i membri del gruppo.
-
-Cedere questi [AREA] m² di terreno al gruppo &apos;[GROUP_NAME]&apos;?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="DisplaySetToSafe">
-		Le impostazioni dello schermo sono state impostate a valori di sicurezza perchè hai specificato l&apos;opzione -safe.
-	</notification>
-	<notification name="DisplaySetToRecommended">
-		Le impostazioni dello schermo sono state impostate a valori ottimali basati sulla tua configurazione di sistema.
-	</notification>
-	<notification name="ErrorMessage">
-		[ERROR_MESSAGE]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AvatarMovedDesired">
-		L&apos;ubicazione prescelta non è attualmente disponibile.
-Sei stato trasferito in una regione vicina.
-	</notification>
-	<notification name="AvatarMovedLast">
-		La tua ultima posizione non è al momento disponibile.
-Sei stato trasferito in una regione vicina.
-	</notification>
-	<notification name="AvatarMovedHome">
-		L&apos;ubicazione di casa tua non è al momento disponibile.
-Sei stato trasferito in una regione vicina.
-Ti consigliamo di impostare una nuova posizione iniziale.
-	</notification>
-	<notification name="ClothingLoading">
-		Gli abiti sono in corso di scaricamento.
-Puoi comunque usare [SECOND_LIFE] normalmente e gli altri residenti ti vedranno correttamente.
-		<form name="form">
-			<ignore name="ignore" text="Lo scaricamento sta richiedendo parecchio tempo"/>
-		</form>
-	</notification>
-	<notification name="FirstRun">
-		L&apos;installazione di [APP_NAME] è terminata.
-
-Se questa è la prima volta che usi [SECOND_LIFE], devi creare un account prima che tu possa effettuare l&apos;accesso.
-Vuoi tornare a [http://join.secondlife.com secondlife.com] per creare un nuovo account?
-		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Nuovo Account..."/>
-	</notification>
-	<notification name="LoginPacketNeverReceived">
-		Ci sono problemi di connessione. È possibile che ci siano problemi con la tua connessione Internet oppure sulla [SECOND_LIFE_GRID].
-
-Controlla la tua connessione Internet e riprova fra qualche minuto, oppure clicca su Aiuto per visualizzare la pagina [SUPPORT_SITE], oppure clicca su Teleport per tentare il teleport a casa tua.
-		<url name="url">
-			http://it.secondlife.com/support/
-		</url>
-		<form name="form">
-			<button name="OK" text="OK"/>
-			<button name="Help" text="Aiuto"/>
-			<button name="Teleport" text="Teleportati"/>
-		</form>
-	</notification>
-	<notification name="WelcomeChooseSex">
-		Il tuo avatar apparirà fra un attimo.
-
-Usa le frecce per muoverti.
-Premi F1 in qualunque momento per la guida o per apprendere altre cose di [SECOND_LIFE].
-Scegli un avatar maschile o femminile. Puoi sempre cambiare idea più tardi.
-		<usetemplate name="okcancelbuttons" notext="Femminile" yestext="Maschile"/>
-	</notification>
-	<notification name="CantTeleportToGrid">
-		Impossibile effettuare il teleport su [SLURL], in quanto si trova su una griglia ([GRID]) diversa da quella attuale ([CURRENT_GRID]).  Chiudi il viewer e prova nuovamente.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="GeneralCertificateError">
-		Impossibile collegarsi al server.
-[REASON]
-
-Nome oggetto: [SUBJECT_NAME_STRING]
-Nome emittente: [ISSUER_NAME_STRING]
-Valido da: [VALID_FROM]
-Valido fino a: [VALID_TO]
-Impronta MD5: [SHA1_DIGEST]
-Impronta SHA1: [MD5_DIGEST]
-Uso chiave: [KEYUSAGE]
-Uso chiave estesa: [EXTENDEDKEYUSAGE]
-Identificatore chiave oggetto: [SUBJECTKEYIDENTIFIER]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="TrustCertificateError">
-		Autorità di certificazione di questo server sconosciuta.
-
-Informazioni sul certificato:
-Nome oggetto: [SUBJECT_NAME_STRING]
-Nome emittente: [ISSUER_NAME_STRING]
-Valido da: [VALID_FROM]
-Valido fino a: [VALID_TO]
-Impronta MD5: [SHA1_DIGEST]
-Impronta SHA1: [MD5_DIGEST]
-Uso chiave: [KEYUSAGE]
-Uso chiave estesa: [EXTENDEDKEYUSAGE]
-Identificatore chiave oggetto: [SUBJECTKEYIDENTIFIER]
-
-Accettare questa autorità?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Accetta"/>
-	</notification>
-	<notification name="NotEnoughCurrency">
-		[NAME] [PRICE]L$ Non hai abbastanza L$ per farlo.
-	</notification>
-	<notification name="GrantedModifyRights">
-		[NAME] ti ha dato il permesso di modificare i suoi oggetti.
-	</notification>
-	<notification name="RevokedModifyRights">
-		Non sei più autorizzato a modificare gli oggetti di [NAME]
-	</notification>
-	<notification name="FlushMapVisibilityCaches">
-		Questo reinizializzerà la cache della mappa di questa regione.
-Funzione usata solo per il debug.
-(Per la produzione, attendere 5 minuti, dopo di che tutte le mappe di ognuno si aggiorneranno dopo la loro riconnessione)
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="BuyOneObjectOnly">
-		Non è possibile acquistare più di un oggetto alla volta. Riprova selezionando un solo oggetto.
-	</notification>
-	<notification name="OnlyCopyContentsOfSingleItem">
-		Impossibile copiare il contenuto di più di un elemento alla volta.
-Scegli solo un oggetto e riprova.
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="KickUsersFromRegion">
-		Teleporta a casa tutti i residenti in questa regione?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="EstateObjectReturn">
-		Confermi di voler restituire gli oggetti di proprietà di [USER_NAME] ?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="InvalidTerrainBitDepth">
-		Impossibile impostare le texture della regione:
-La texture del terreno [TEXTURE_NUM] ha una profondità di bit pari a [TEXTURE_BIT_DEPTH] non corretta.
-
-Sostituisci la texture [TEXTURE_NUM] con una a 24-bit 512x512 o una immagine più piccola e quindi clicca nuovamente su &apos;Applica&apos;.
-	</notification>
-	<notification name="InvalidTerrainSize">
-		Impossibile impostare le texture di regione:
-La texture del terreno [TEXTURE_NUM] è troppo grande se a [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y].
-
-Sostituisci la texture [TEXTURE_NUM] con una a 24-bit 512x512 oppure con una immagine più piccola e quindi clicca di nuovo &apos;Applica&apos;.
-	</notification>
-	<notification name="RawUploadStarted">
-		Importazione iniziata. Può impiegare fino a due minuti, a seconda della velocità della tua connessione.
-	</notification>
-	<notification name="ConfirmBakeTerrain">
-		Vuoi veramente impostare come base il terreno corrente, impostarlo come riferimento per i limiti dei rialzi/abbassamenti di tutto il territorio ed il suo valore impostato come base per lo strumento &apos;Ripristina&apos;?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="MaxAllowedAgentOnRegion">
-		Puoi avere al massimo [MAX_AGENTS] residenti consentiti.
-	</notification>
-	<notification name="MaxBannedAgentsOnRegion">
-		Puoi avere al massimo [MAX_BANNED] residenti bloccati.
-	</notification>
-	<notification name="MaxAgentOnRegionBatch">
-		E&apos; fallito il tentativo di aggiungere [NUM_ADDED] avatar:
-Eccede il [MAX_AGENTS] [LIST_TYPE] limite di [NUM_EXCESS].
-	</notification>
-	<notification name="MaxAllowedGroupsOnRegion">
-		Puoi avere al massimo [MAX_GROUPS] gruppi.
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Imposta come predefinito"/>
-	</notification>
-	<notification name="MaxManagersOnRegion">
-		Puoi avere al massimo [MAX_MANAGER] manager della proprietà immobiliare.
-	</notification>
-	<notification name="OwnerCanNotBeDenied">
-		Impossibile aggiungere i proprietari della proprietà immobiliare alla lista dei residenti bloccati.
-	</notification>
-	<notification name="CanNotChangeAppearanceUntilLoaded">
-		Impossibile cambiare l&apos;aspetto fisico finchè gli abiti e i vestiti non sono caricati.
-	</notification>
-	<notification name="ClassifiedMustBeAlphanumeric">
-		Il nome del tuo annuncio deve iniziare con una lettera da A a Z oppure con un numero.
-Non sono consentiti caratteri di punteggiatura.
-	</notification>
-	<notification name="CantSetBuyObject">
-		Impossibile impostare &apos;Compra l&apos;oggetto&apos;, perchè l&apos;oggetto non è in vendita.
-Imposta l&apos;oggetto per la vendita e riprova.
-	</notification>
-	<notification name="FinishedRawDownload">
-		Hai terminato di scaricare il file del terreno nella cartella:
-[DOWNLOAD_PATH].
-	</notification>
-	<notification name="DownloadWindowsMandatory">
-		È disponibile una nuova versione di [APP_NAME].
-[MESSAGE]
-Devi scaricare questo aggiornamento per utilizzare [APP_NAME].
-		<usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica l&apos;aggiornamento"/>
-	</notification>
-	<notification name="DownloadWindows">
-		È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
-		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
-	</notification>
-	<notification name="DownloadWindowsReleaseForDownload">
-		È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
-		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
-	</notification>
-	<notification name="DownloadLinuxMandatory">
-		È disponibile una nuova versione di [APP_NAME].
-[MESSAGE]
-Devi scaricare questo aggiornamento per utilizzare [APP_NAME].
-		<usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica"/>
-	</notification>
-	<notification name="DownloadLinux">
-		È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
-		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica"/>
-	</notification>
-	<notification name="DownloadLinuxReleaseForDownload">
-		È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
-		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica"/>
-	</notification>
-	<notification name="DownloadMacMandatory">
-		È disponibile una nuova versione di [APP_NAME].
-[MESSAGE]
-Devi scaricare questo aggiornamento per utilizzare [APP_NAME].
-
-Scaricare nella cartella Applicazioni?
-		<usetemplate name="okcancelbuttons" notext="Esci" yestext="Scarica l&apos;aggiornamento"/>
-	</notification>
-	<notification name="DownloadMac">
-		È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
-
-Scaricare nella cartella Applicazioni?
-		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
-	</notification>
-	<notification name="DownloadMacReleaseForDownload">
-		È disponibile una versione aggiornata di [APP_NAME].
-[MESSAGE]
-Questo aggiornamento non è necessario, ma ti consigliamo di installarlo per migliorare il rendimento e la stabilità.
-
-Scaricare nella cartella Applicazioni?
-		<usetemplate name="okcancelbuttons" notext="Continua" yestext="Scarica l&apos;aggiornamento"/>
-	</notification>
-	<notification name="FailedUpdateInstall">
-		Si è verificato un errore durante l&apos;aggiornamento del viewer.
-Scarica e installa la versione più recente del viewer da
-http://secondlife.com/download.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="FailedRequiredUpdateInstall">
-		Non è stato possibile installare un aggiornamento richiesto. 
-Non potrai accedere fino a quando non verrà aggiornato [APP_NAME].
-
-Scarica e installa la versione più recente del viewer da
-http://secondlife.com/download.
-		<usetemplate name="okbutton" yestext="Esci"/>
-	</notification>
-	<notification name="UpdaterServiceNotRunning">
-		È disponibile un aggiornamento obbligatorio per l&apos;installazione di Second Life.
-
-Puoi scaricare questo aggiornamento da http://www.secondlife.com/downloads
-oppure puoi installarlo adesso.
-		<usetemplate name="okcancelbuttons" notext="Esci da Second Life" yestext="Scarica e aggiorna adesso"/>
-	</notification>
-	<notification name="DownloadBackgroundTip">
-		È stato scaricato un aggiornamento dell&apos;installazione di [APP_NAME].
-Versione [VERSION] [[RELEASE_NOTES_FULL_URL] Informazioni su questo aggiornamento]
-		<usetemplate name="okcancelbuttons" notext="Più tardi..." yestext="Installa ora e riavvia [APP_NAME]"/>
-	</notification>
-	<notification name="DownloadBackgroundDialog">
-		È stato scaricato un aggiornamento dell&apos;installazione di [APP_NAME].
-Versione [VERSION] [[RELEASE_NOTES_FULL_URL] Informazioni su questo aggiornamento]
-		<usetemplate name="okcancelbuttons" notext="Più tardi..." yestext="Installa ora e riavvia [APP_NAME]"/>
-	</notification>
-	<notification name="RequiredUpdateDownloadedVerboseDialog">
-		È stato scaricato un aggiornamento obbligatorio del software.
-Versione [VERSION]
-
-Per installare l&apos;aggiornamento è necessario riavviare [APP_NAME].
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="RequiredUpdateDownloadedDialog">
-		Per installare l&apos;aggiornamento è necessario riavviare [APP_NAME].
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="DeedObjectToGroup">
-		La cessione di questo oggetto farà in modo che il gruppo:
-* Riceva i L$ pagati all&apos;oggetto
-		<usetemplate ignoretext="Conferma la cessione di un oggetto al gruppo" name="okcancelignore" notext="Annulla" yestext="Cedi"/>
-	</notification>
-	<notification name="WebLaunchExternalTarget">
-		Vuoi aprire il browser per vedere questi contenuti?
-		<usetemplate ignoretext="Lancia il browser per consultare una pagina web" name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchJoinNow">
-		Vuoi andare su [http://secondlife.com/account/ Dashboard] per gestire il tuo account?
-		<usetemplate ignoretext="Lancia il browser per gestire il mio account" name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchSecurityIssues">
-		Visita la Wiki di [SECOND_LIFE] per i dettagli su come segnalare un problema di sicurezza.
-		<usetemplate ignoretext="Lancia il browser per imparare a segnalare un problema di sicurezza" name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchQAWiki">
-		Visita il controllo di qualità Wiki [SECOND_LIFE].
-		<usetemplate ignoretext="Lancia il browser per vedere la pagina Wiki sul controllo di qualità" name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchPublicIssue">
-		Visita il registro pubblico dei problemi di [SECOND_LIFE], dove puoi segnalare bug ed altri problemi.
-		<usetemplate ignoretext="Lancia il browser per vedere il registro pubblico di monitoraggio dei problemi" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
-	</notification>
-	<notification name="WebLaunchSupportWiki">
-		Vai al blog ufficiale Linden, per le ultime notizie ed informazioni.
-		<usetemplate ignoretext="Lancia il browser per vedere il blog" name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchLSLGuide">
-		Vuoi aprire la Guida per lo scripting per avere aiuto con lo scripting?
-		<usetemplate ignoretext="Lancia il browser per vedere la Guida per lo scripting" name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchLSLWiki">
-		Vuoi visitare il Portale LSL per avere aiuto con lo scripting?
-		<usetemplate ignoretext="Lancia il browser per vedere il Portale LSL" name="okcancelignore" notext="Annulla" yestext="Vai alla pagina"/>
-	</notification>
-	<notification name="ReturnToOwner">
-		Confermi di voler restituire gli oggetti selezionati ai loro proprietari? Gli oggetti trasferibili ceduti al gruppo, verranno restituiti ai proprietari precedenti.
-
-*ATTENZIONE* Gli oggetti ceduti non trasferibili verranno cancellati!
-		<usetemplate ignoretext="Conferma prima di restituire gli oggetti ai relativi proprietari" name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="GroupLeaveConfirmMember">
-		Sei attualmente un membro del gruppo [GROUP].
-Vuoi lasciare il gruppo?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmKick">
-		Vuoi veramente espellere tutti i residenti dalla griglia?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Espelli tutti i residenti"/>
-	</notification>
-	<notification name="MuteLinden">
-		Spiacenti, non puoi bloccare un Linden.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CannotStartAuctionAlreadyForSale">
-		Non è possibile mettere in vendita all&apos;asta un terreno che è già impostato per la vendita. Disabilita la vendita del terreno, se sei certo di voler avviare una vendita all&apos;asta.
-	</notification>
-	<notification label="Il blocco dell&apos;oggetto in base al nome non è riuscito," name="MuteByNameFailed">
-		hai già bloccato questo nome.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="RemoveItemWarn">
-		Sebbene consentita, la cancellazione di contenuti può danneggiare l&apos;oggetto.
-Vuoi cancellare quell&apos;elemento?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="CantOfferCallingCard">
-		Impossibile offrire un biglietto da visita in questo momento. Riprova fra poco.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CantOfferFriendship">
-		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>
-	<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.
-[NAME] ti invita ad aderire ad un gruppo.
-		<usetemplate name="okcancelbuttons" notext="Declino" yestext="Unisciti"/>
-	</notification>
-	<notification name="JoinedTooManyGroups">
-		Hai raggiunto il numero massimo di gruppi. Per favore abbandona almeno un gruppo prima di aderire o crearne uno nuovo.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="KickUser">
-		Espelli questo residente con quale messaggio?
-		<form name="form">
-			<input name="message">
-				Un amministratore ti ha disconnesso.
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification name="KickAllUsers">
-		Espelli tutti quelli che sono sulla griglia con quale messaggio?
-		<form name="form">
-			<input name="message">
-				Un amministratore ti ha disconnesso.
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification name="FreezeUser">
-		Congela questo residente con quale messaggio?
-		<form name="form">
-			<input name="message">
-				Sei stato immobilizzato. Non puoi muoverti o usare la chat. Un amministratore ti contatterà con un messaggio (IM).
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification name="UnFreezeUser">
-		Scongela questo residente con quale messaggio?
-		<form name="form">
-			<input name="message">
-				Non sei più immobilizzato.
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification name="SetDisplayNameSuccess">
-		Ciao [DISPLAY_NAME]!
-
-Come nel modo reale, prima che tutti conoscano il tuo nuovo nome ci vorrà del tempo.  Saranno necessari alcuni giorni per [http://wiki.secondlife.com/wiki/Setting_your_display_name l&apos;aggiornamento del nome] in oggetti, script, ricerca, ecc.
-	</notification>
-	<notification name="SetDisplayNameBlocked">
-		Non puoi cambiare il tuo nome visualizzato. Se ritieni che si tratta di un errore, contatta l&apos;assistenza.
-	</notification>
-	<notification name="SetDisplayNameFailedLength">
-		Il nome è troppo lungo.  La lunghezza massima dei nomi visualizzati è di [LENGTH] caratteri.
-
-Riprova con un nome più corto.
-	</notification>
-	<notification name="SetDisplayNameFailedGeneric">
-		Non è possibile impostare il tuo nome visualizzato.  Riprova più tardi.
-	</notification>
-	<notification name="SetDisplayNameMismatch">
-		I nomi visualizzati inseriti non corrispondono. Inseriscili nuovamente.
-	</notification>
-	<notification name="AgentDisplayNameUpdateThresholdExceeded">
-		Devi aspettare prima di cambiare il nome visualizzato.
-
-Vedi http://wiki.secondlife.com/wiki/Setting_your_display_name
-
-Riprova più tardi.
-	</notification>
-	<notification name="AgentDisplayNameSetBlocked">
-		Non è possibile impostare il nome richiesto perché contiene una parola vietata.
- 
- Riprova con un altro nome.
-	</notification>
-	<notification name="AgentDisplayNameSetInvalidUnicode">
-		Il nome visualizzato scelto contiene caratteri non validi.
-	</notification>
-	<notification name="AgentDisplayNameSetOnlyPunctuation">
-		Il nome visualizzato deve contenere lettere, non solo segni di punteggiatura.
-	</notification>
-	<notification name="DisplayNameUpdate">
-		[OLD_NAME] ([SLID]) ha il nuovo nome [NEW_NAME].
-	</notification>
-	<notification name="OfferTeleport">
-		Offri un teleport nel posto dove sei con il seguente messaggio?
-		<form name="form">
-			<input name="message">
-				Raggiungimi a [REGION]
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification name="OfferTeleportFromGod">
-		Chiedere, in qualità di Admin, al residente di raggiungerti?
-		<form name="form">
-			<input name="message">
-				Raggiungimi in [REGION]
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification name="TeleportFromLandmark">
-		Sei sicuro di volere il teleport a &lt;nolink&gt;[LOCATION]&lt;/nolink&gt;?
-		<usetemplate ignoretext="Conferma il teleport verso un punto di riferimento" name="okcancelignore" notext="Annulla" yestext="Teleportati"/>
-	</notification>
-	<notification name="TeleportToPick">
-		Teleport a [PICK]?
-		<usetemplate ignoretext="Conferma che voglio il teleport verso l&apos;ubicazione nei Luoghi preferiti" name="okcancelignore" notext="Annulla" yestext="Teleport"/>
-	</notification>
-	<notification name="TeleportToClassified">
-		Teleport a [CLASSIFIED]?
-		<usetemplate ignoretext="Conferma il teleport verso questa posizione negli annunci" name="okcancelignore" notext="Annulla" yestext="Teleport"/>
-	</notification>
-	<notification name="TeleportToHistoryEntry">
-		Teleport a [HISTORY_ENTRY]?
-		<usetemplate ignoretext="Conferma il teleport verso un luogo che compare nella cronologia" name="okcancelignore" notext="Annulla" yestext="Teleport"/>
-	</notification>
-	<notification label="Manda un messaggio a tutti nella tua proprietà" name="MessageEstate">
-		Scrivi un annuncio breve che verrà mandato a tutti quelli che sono in questo momento nella tua proprietà.
-		<form name="form">
-			<input name="message"/>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification label="Cambia la tipologia della proprietà Linden" name="ChangeLindenEstate">
-		Stai per apportare modifiche ad una proprietà che appartiene a Linden (continente, teen grid, orientamento e così via).
-
-Questa è un&apos;operazione da effettuare con molta cautela, in quanto può incidere profondamente sulla vita dei residenti in Second Life.  Sul continente, l&apos;azione modificherà migliaia di regioni e creerà un grosso carico sul server.
-
-Vuoi procedere?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification label="Cambia la tipologia Linden di accesso alla proprietà" name="ChangeLindenAccess">
-		Stai per cambiare la lista di accesso per una proprietà Linden (mainland, griglia minorenni, orientamento, ecc.).
-
-Questo è PERICOLOSO e dovrebbe essere fatto soltanto per poter lanciare il programma che consente agli oggetti/L$ di essere trasferiti fra griglie diverse.
-Cambierà migliaia di regioni e produrrà seri problemi ai vari server.
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification label="Seleziona la proprietà" name="EstateAllowedAgentAdd">
-		Aggiungi alla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
-	</notification>
-	<notification label="Seleziona la proprietà" name="EstateAllowedAgentRemove">
-		Rimuovi dalla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
-	</notification>
-	<notification label="Seleziona la proprietà" name="EstateAllowedGroupAdd">
-		Aggiungi al gruppo di accesso solo per questa proprietà oppure per  [ALL_ESTATES]?
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
-	</notification>
-	<notification label="Seleziona la proprietà" name="EstateAllowedGroupRemove">
-		Rimuovi dal gruppo di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
-	</notification>
-	<notification label="Seleziona la proprietà" name="EstateBannedAgentAdd">
-		Rifiuta l&apos;accesso solo a questa proprietà oppure per [ALL_ESTATES]?
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
-	</notification>
-	<notification label="Seleziona la proprietà" name="EstateBannedAgentRemove">
-		Rimuovi questo residente dalla lista dei residenti bloccati nell&apos;accesso solo a questa proprietà oppure per [ALL_ESTATES]?
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
-	</notification>
-	<notification label="Seleziona la proprietà" name="EstateManagerAdd">
-		Aggiungi come gestore della proprietà solo a questa proprietà oppure per [ALL_ESTATES]?
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
-	</notification>
-	<notification label="Seleziona la proprietà" name="EstateManagerRemove">
-		Rimuovi come gestore della proprietà solo per questa proprietà oppure per  [ALL_ESTATES]?
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
-	</notification>
-	<notification label="Conferma espulsione" name="EstateKickUser">
-		Espelli [EVIL_USER] da questa proprietà?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="EstateChangeCovenant">
-		Confermi di voler cambiare il Regolamento della proprietà?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="RegionEntryAccessBlocked">
-		Non sei ammesso in questa regione a causa della tua categoria di accesso. Questo può risultare da una mancanza di informazioni necessarie per convalidare la tua età.
-
-Verifica di avere installato l&apos;ultima versione del programma e vai alla Knowledge Base per ulteriori informazioni su come accedere nelle zone con tale categoria di accesso.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="RegionEntryAccessBlocked_KB">
-		Non sei ammesso in questa regione a causa della tua categoria d&apos;accesso. 
-
-Vuoi andare alla Knowledge Base per ulteriori informazioni sulle categorie di accesso?
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
-		</url>
-		<usetemplate ignoretext="Non posso entrare in questa regione a causa delle restrizioni della categoria di accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
-	</notification>
-	<notification name="RegionEntryAccessBlocked_Notify">
-		Non sei ammesso in questa regione a causa della tua categoria d&apos;accesso.
-	</notification>
-	<notification name="RegionEntryAccessBlocked_Change">
-		Non ti è consentito entrare in quella regione a causa della categoria di accesso impostata nelle preferenze.
-
-Per entrare nella regione, dovrai modificare la tua categoria di accesso. Ciò ti consentirà inoltre di effettuare ricerche di contenuti di categoria [REGIONMATURITY]. Per annullare le modifiche in un secondo momento, vai a Io &gt; Preferenze &gt; Generali.
-		<form name="form">
-			<button name="OK" text="Cambia preferenza"/>
-			<button default="true" name="Cancel" text="Chiudi"/>
-			<ignore name="ignore" text="La categoria di accesso impostata mi impedisce di entrare in una regione"/>
-		</form>
-	</notification>
-	<notification name="PreferredMaturityChanged">
-		La tua categoria di accesso attuale è [RATING].
-	</notification>
-	<notification name="LandClaimAccessBlocked">
-		Non puoi prendere possesso di questo terreno a causa della tua categoria di accesso. Questo può essere dovuto ad una mancanza di informazioni valide che confermino la tua età.
-
-Verifica di avere installato l&apos;ultima versione del programma e vai alla Knowledge Base per informazioni sull&apos;accesso ad aree con queste categorie di accesso.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="LandClaimAccessBlocked_KB">
-		Non puoi prendere possesso di questa terra a causa delle preferenze sulle categorie di accesso. 
-
-Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di accesso?
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
-		</url>
-		<usetemplate ignoretext="Non posso richiedere questo terreno a causa delle restrizioni della categoria di accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
-	</notification>
-	<notification name="LandClaimAccessBlocked_Notify">
-		Non puoi prendere possesso di questa terra a causa della tua categoria di accesso.
-	</notification>
-	<notification name="LandClaimAccessBlocked_Change">
-		Non puoi richiedere questo terreno a causa della tua categoria di accesso.
-
-Puoi cliccare su Cambia preferenze per modificare la categoria di accesso e quindi riuscire ad entrare. Da adesso potrai accedere ai contenuti [REGIONMATURITY] ed effettuare ricerche in questa categoria. Se in seguito tu volessi cambiare di nuovo le tue impostazioni, apri la finestra di dialogo da Io &gt; Preferenze &gt; Generale.
-		<usetemplate ignoretext="Le mie preferenze di categoria di accesso mi impediscono di richiedere terreno" name="okcancelignore" notext="Chiudi" yestext="Cambia le preferenze"/>
-	</notification>
-	<notification name="LandBuyAccessBlocked">
-		Non puoi acquistare questo terreno a causa della tua categoria di accesso. Questo può essere dovuto ad una mancanza di informazioni valide che confermino la tua età.
-
-Verifica di avere installato l&apos;ultima versione del programma e vai alla Knowledge Base per informazioni sull&apos;accesso ad aree con queste categorie di accesso.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="LandBuyAccessBlocked_KB">
-		Non puoi acquistare questo terreno a causa della tua categoria di accesso. 
-
-Vuoi andare alla Knowledge Base per maggiori informazioni sulle categorie di accesso?
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/it
-		</url>
-		<usetemplate ignoretext="Non posso acquistare questo terreno a causa delle restrizioni della categoria di accesso" name="okcancelignore" notext="Chiudi" yestext="Vai alla Knowledge Base"/>
-	</notification>
-	<notification name="LandBuyAccessBlocked_Notify">
-		Non puoi acquistare questa land a causa della tua categoria di accesso.
-	</notification>
-	<notification name="LandBuyAccessBlocked_Change">
-		Non puoi acquistare questo terreno a causa della tua categoria di accesso.
-
-Puoi cliccare su Cambia preferenze per modificare la categoria di accesso e quindi riuscire ad entrare. Da adesso potrai accedere ai contenuti [REGIONMATURITY] ed effettuare ricerche in questa categoria. Se in seguito tu volessi cambiare di nuovo le tue impostazioni, apri la finestra di dialogo da Io &gt; Preferenze &gt; Generale.
-		<usetemplate ignoretext="Le mie Preferenze di accesso mi impediscono di acquistare terreno" name="okcancelignore" notext="Chiudi" yestext="Cambia le preferenze"/>
-	</notification>
-	<notification name="TooManyPrimsSelected">
-		Hai selezionato troppi prim.  Seleziona non più di [MAX_PRIM_COUNT] prim e riprova
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ProblemImportingEstateCovenant">
-		Problemi nell&apos;importazione del regolamento della proprietà.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ProblemAddingEstateManager">
-		Si sono riscontrati problemi nell&apos;aggiungere un nuovo manager della proprietà. Una o più proprietà potrebbero avere la lista dei manager piena.
-	</notification>
-	<notification name="ProblemAddingEstateGeneric">
-		Si sono riscontrati problemi nell&apos;aggiunta a questo elenco della proprietà.  Una o più proprietà potrebbe avere una lista piena.
-	</notification>
-	<notification name="UnableToLoadNotecardAsset">
-		Impossibile caricare la risorsa della notecard in questo momento.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="NotAllowedToViewNotecard">
-		Permessi insufficienti per vedere la notecard associata con l&apos;asset ID richiesto.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="MissingNotecardAssetID">
-		L&apos;asset ID della notecard è mancante dal database.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="PublishClassified">
-		Ricorda: le tariffe per gli annunci non sono rimborsabili.
-
-Pubblica questo annuncio adesso per [AMOUNT]L$?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="SetClassifiedMature">
-		Queste inserzioni includono contenuti di tipo Moderato?
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="SetGroupMature">
-		Questo gruppo include contenuti di tipo Moderato?
-		<usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="No" yestext="Si"/>
-	</notification>
-	<notification label="Conferma il riavvio" name="ConfirmRestart">
-		Vuoi veramente far ripartire la regione in 2 minuti?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification label="Manda un messaggio a tutti in questa regione" name="MessageRegion">
-		Scrivi un breve annuncio che verrà mandato a tutti in questa regione.
-		<form name="form">
-			<input name="message"/>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification label="Cambiato il contenuto Moderato" name="RegionMaturityChange">
-		La classificazione di questa regione è stata aggiornata.
-Un periodo di tempo è necessario prima che la modifica venga integrata nella mappa.
-
-Per accedere a regioni per adulti, i residenti devono avere un Account verificato, mediante verifica dell&apos;età oppure mediante verifica della modalità di pagamento.
-	</notification>
-	<notification label="Versione voice non compatibile" name="VoiceVersionMismatch">
-		Questa versione di [APP_NAME] non è compatibile con la funzionalità di chat vocale in questa regione. Affinché la chat vocale funzioni correttamente, dovrai aggiornare [APP_NAME].
-	</notification>
-	<notification label="Impossibile comprare oggetti" name="BuyObjectOneOwner">
-		Impossibile comprare oggetti da proprietari diversi nello stesso momento.
-Seleziona solo un oggetto e riprova.
-	</notification>
-	<notification label="Impossibile comprare il contenuto" name="BuyContentsOneOnly">
-		Impossibile comprare il contenuto di più di un oggetto per volta.
-Seleziona solo un oggetto e riprova.
-	</notification>
-	<notification label="Impossibile comprare il contenuto" name="BuyContentsOneOwner">
-		Impossibile comprare oggetti da proprietari differenti nello stesso momento.
-Scegli un solo oggetto e riprova.
-	</notification>
-	<notification name="BuyOriginal">
-		Compra l&apos;oggetto originale da [OWNER] per [PRICE]L$?
-Diventerai proprietario di questo oggetto.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="BuyOriginalNoOwner">
-		Compra l&apos;oggetto originale per [PRICE]L$?
-Diventerai proprietario di questo oggetto.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="BuyCopy">
-		Compra una copia da [OWNER] per [PRICE]L$?
-L&apos;oggetto verrà copiato nel tuo inventario.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="BuyCopyNoOwner">
-		Compra una copia per [PRICE]L$?
-L&apos;oggetto verrà copiato nel tuo inventario.
-Sarai in grado di:
- Modificare: [MODIFYPERM]
- Copiare: [COPYPERM]
- Rivendere o regalare: [RESELLPERM]
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="BuyContents">
-		Compra il contenuto da [OWNER] per [PRICE]L$?
-Il contenuto verrà copiato nel tuo inventario.
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="BuyContentsNoOwner">
-		Compra il contenuto per [PRICE]L$?
-Il contenuto verrà copiato nel tuo inventario.
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmPurchase">
-		Questa transazione ti permetterà di:
-[ACTION]
-
-Confermi di voler procedere all&apos;acquisto?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmPurchasePassword">
-		Questa transazione farà:
-[ACTION]
-
-Confermi di voler procedere all&apos;acquisto?
-Ridigita la tua password e premi OK.
-		<form name="form">
-			<input name="message"/>
-			<button name="ConfirmPurchase" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification name="SetPickLocation">
-		Nota:
-Hai aggiornato l&apos;ubicazione di questo preferito ma gli altri dettagli conserveranno il loro valore originale.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="MoveInventoryFromObject">
-		Hai selezionato elementi dall&apos;inventario &apos;non copiabili&apos;.
-Questi elementi verranno trasferiti nel tuo inventario, ma non copiati.
-
-Trasferisci gli elementi nell&apos;inventario?
-		<usetemplate ignoretext="Avvertimi quando tento di rimuovore elementi per i quali non è consentita la copia da un oggetto" name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="MoveInventoryFromScriptedObject">
-		Hai selezionato elementi dell&apos;inventario non copiabili.  Questi elementi verranno trasferiti nel tuo inventario, non verranno copiati.
-Dato che questo oggetto è scriptato, il trasferimento di questi elementi nel tuo inventario potrebbe causare un malfunzionamento degli script.
-
-Trasferisci gli elementi nell&apos;inventario?
-		<usetemplate ignoretext="Avvertimi se tento di rimuovore di elementi per i quali non è consentita la copia e che potrebbero danneggiare un oggetto scriptato" name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ClickActionNotPayable">
-		Attenzione: l&apos;azione Paga oggetto è stata impostata, ma funzionerà soltanto se inserisci uno script con un evento money().
-		<form name="form">
-			<ignore name="ignore" text="Ho impostato l&apos;azione Paga oggetto costruendo un oggetto senza uno script money()"/>
-		</form>
-	</notification>
-	<notification name="OpenObjectCannotCopy">
-		Non ci sono elementi in questo oggetto che tu possa copiare.
-	</notification>
-	<notification name="WebLaunchAccountHistory">
-		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="ConfirmQuit">
-		Confermi di voler uscire?
-		<usetemplate ignoretext="Conferma prima di uscire" name="okcancelignore" notext="Non uscire" yestext="Esci"/>
-	</notification>
-	<notification name="DeleteItems">
-		[QUESTION]
-		<usetemplate ignoretext="Conferma prima di cancellare gli elementi" name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="HelpReportAbuseEmailLL">
-		Usa questo strumento per segnalare violazioni a [http://secondlife.com/corporate/tos.php Terms of Service] e [http://secondlife.com/corporate/cs.php Community Standards].
-
-Ogni abuso segnalato verrà esaminato e risolto.
-	</notification>
-	<notification name="HelpReportAbuseSelectCategory">
-		Scegli una categoria per questa segnalazione di abuso.
-Scegliere una categoria, ci aiuta a gestire ed elaborare le segnalazioni di abuso.
-	</notification>
-	<notification name="HelpReportAbuseAbuserNameEmpty">
-		Introduci il nome di chi abusa.
-Introducendo un valore accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso.
-	</notification>
-	<notification name="HelpReportAbuseAbuserLocationEmpty">
-		Inserisci il luogo dove l&apos;abuso è avvenuto.
-Introducendo un valore accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso.
-	</notification>
-	<notification name="HelpReportAbuseSummaryEmpty">
-		Inserisci un yiyolo descrittivo dell&apos;abuso che è avvenuto.
-Introducendo un titolo descrittivo accurato, ci aiuti a gestire ed elaborare le segnalazioni di abuso.
-	</notification>
-	<notification name="HelpReportAbuseDetailsEmpty">
-		Inserisci una descrizione dettagliata dell&apos;abuso che è avvenuto.
-Devi essere il più specifico possibile, includendo i nomi e i dettagli dell&apos;incidente che stai segnalando.
-Inserendo una descrizione accurata ci aiuti a gestire ed elaborare le segnalazioni di abuso.
-	</notification>
-	<notification name="HelpReportAbuseContainsCopyright">
-		Gentile residente,
-
-Ci risulta che tu stia segnalando una violazione di proprietà intellettuale. Per segnalare correttamente la violazione:
-
-(1) Definizione di abuso. Puoi inviare una segnalazione di abuso se ritieni che un residente stia sfruttando il sistema di permessi di [SECOND_LIFE], per esempio usando CopyBot o simili strumenti di copia, per rubare i diritti di proprietà intellettuale. L&apos;Ufficio abusi investigherà e deciderà adeguate azioni disciplinari per comportamenti che violano i [http://secondlife.com/corporate/tos.php Termini del servizio] di  [SECOND_LIFE] oppure gli  [http://secondlife.com/corporate/cs.php Standard della comunità]. Tieni comunque presente che l&apos;Ufficio abusi non gestisce e non risponde alle richieste di rimozione di contenuti da [SECOND_LIFE].
-
-(2) DMCA o rimozione di contenuti. Per richiedere la rimozione di contenuti da [SECOND_LIFE], devi compilare una denuncia valida di violazione come definito nelle nostra  [http://secondlife.com/corporate/dmca.php Regole DMCA] (leggi sul copyright).
-
-Per continuare con il procedimento di abuso, chiudi questa finestra e completa la compilazione della segnalazione.  È possibile che dovrai specificare la categoria CopyBot o Sfruttamento dei diritti.
-
-Grazie,
-
-Linden Lab
-	</notification>
-	<notification name="FailedRequirementsCheck">
-		I seguenti componenti obbligatori sono mancanti da [FLOATER]:
-[COMPONENTS]
-	</notification>
-	<notification label="Sostituisci gli oggetti indossati" name="ReplaceAttachment">
-		C&apos;è già un oggetto indossato in questo punto del corpo.
-Vuoi sostituirlo con l&apos;oggetto selezionato?
-		<form name="form">
-			<ignore name="ignore" save_option="true" text="Sostituisci un pezzo collegato con l&apos;elemento selezionato"/>
-			<button ignore="Replace Automatically" name="Yes" text="OK"/>
-			<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.
-
-Desideri abbandonare la modalità &apos;Occupato&apos; 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"/>
-		</form>
-	</notification>
-	<notification name="ConfirmDeleteProtectedCategory">
-		La cartella &apos;[FOLDERNAME]&apos; è una cartella di sistema. L&apos;eliminazione di cartelle di sistema può creare instabilità.  Sei sicuro di volerla eliminare?
-		<usetemplate ignoretext="Chiedi conferma prima di eliminare una cartella di sistema" name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmEmptyTrash">
-		Vuoi veramente eliminare in modo permanente il contenuto del tuo Cestino?
-		<usetemplate ignoretext="Conferma prima di svuotare la cartella del Cestino inventario" name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmClearBrowserCache">
-		Vuoi veramente eliminare la cronologia viaggi, web e ricerche fatte?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmClearCookies">
-		Confermi di volere cancellare i tuoi cookie?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/>
-	</notification>
-	<notification name="ConfirmClearMediaUrlList">
-		Confermi di voler cancellare la lista degli URL salvati?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/>
-	</notification>
-	<notification name="ConfirmEmptyLostAndFound">
-		Vuoi veramente eliminare in modo definitivo il contenuto dei tuoi Oggetti smarriti?
-		<usetemplate ignoretext="Conferma prima di svuotare della cartella Oggetti smarriti" name="okcancelignore" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="CopySLURL">
-		Lo SLurl seguente è stato copiato negli Appunti:
- [SLURL]
-
-Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubicazione, o provala incollandola nella barra degli indirizzi di un browser web.
-		<form name="form">
-			<ignore name="ignore" text="Lo SLurl è stato copiato negli Appunti"/>
-		</form>
-	</notification>
-	<notification name="WLSavePresetAlert">
-		Vuoi sovrascrivere le preimpostazioni salvate?
-		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="WLDeletePresetAlert">
-		Vuoi cancellare [SKY]?
-		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="WLNoEditDefault">
-		Non puoi modificare o cancellare una preimpostazione di fabbrica.
-	</notification>
-	<notification name="WLMissingSky">
-		Questo file di ciclo giornaliero fa riferimento ad un file di cielo mancante: [SKY].
-	</notification>
-	<notification name="PPSaveEffectAlert">
-		Effetto di post elaborazione già presente. Vuoi sovrascrivere?
-		<usetemplate name="okcancelbuttons" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="NewSkyPreset">
-		Fornisci il nome per il nuovo cielo.
-		<form name="form">
-			<input name="message">
-				Nuova preimpostazione
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification name="ExistsSkyPresetAlert">
-		La preimpostazione esiste già!
-	</notification>
-	<notification name="NewWaterPreset">
-		Fornisci il nome per la nuova preregolazione del livello dell&apos;acqua.
-		<form name="form">
-			<input name="message">
-				Nuova preimpostazione
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification name="ExistsWaterPresetAlert">
-		La preimpostazione esiste già!
-	</notification>
-	<notification name="WaterNoEditDefault">
-		Non puoi modificare o cancellare una preimpostazione.
-	</notification>
-	<notification name="ChatterBoxSessionStartError">
-		Impossibile iniziare una nuova sessione di chat con [RECIPIENT].
-[REASON]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ChatterBoxSessionEventError">
-		[EVENT]
-[REASON]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ForceCloseChatterBoxSession">
-		La sessione chat con [NAME] deve chiudere.
-[REASON]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="Cannot_Purchase_an_Attachment">
-		Non puoi comprare un oggetto mentre è unito.
-	</notification>
-	<notification label="Informazioni sulle richieste per il permesso di addebito" name="DebitPermissionDetails">
-		Accettare questa richiesta da allo script il permesso continuativo di prendere Linden dollar (L$) dal tuo account. Per revocare questo permesso, il proprietario dell&apos;oggetto deve cancellare l&apos;oggetto oppure reimpostare gli script nell&apos;oggetto.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AutoWearNewClothing">
-		Vuoi indossare automaticamente gli indumenti che stai per creare?
-		<usetemplate ignoretext="Indossare gli abiti che creo mentre modifico il mio aspetto" name="okcancelignore" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="NotAgeVerified">
-		Per entrare in questa zona, devi avere eseguito la verifica dell&apos;età.  Vuoi andare sul sito di [SECOND_LIFE] per verificare la tua età?
-
-[_URL]
-		<url name="url" option="0">
-			https://secondlife.com/account/verification.php?lang=it
-		</url>
-		<usetemplate ignoretext="Non ho verificato la mia età" name="okcancelignore" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="Cannot enter parcel: no payment info on file">
-		Per poter visitare questa zona devi avere devi aver fornito informazioni di pagamento a Linden Lab.  Vuoi andare sul sito di [SECOND_LIFE] ed impostarle?
-
-[_URL]
-		<url name="url" option="0">
-			https://secondlife.com/account/index.php?lang=it
-		</url>
-		<usetemplate ignoretext="Manca la registrazione delle informazioni di pagamento" name="okcancelignore" notext="No" yestext="Si"/>
-	</notification>
-	<notification name="MissingString">
-		La stringa [STRING_NAME] non è presente in strings.xml
-	</notification>
-	<notification name="SystemMessageTip">
-		[MESSAGE]
-	</notification>
-	<notification name="IMSystemMessageTip">
-		[MESSAGE]
-	</notification>
-	<notification name="Cancelled">
-		Annullato
-	</notification>
-	<notification name="CancelledSit">
-		Seduta annullata
-	</notification>
-	<notification name="CancelledAttach">
-		Attaccamento annullato
-	</notification>
-	<notification name="ReplacedMissingWearable">
-		Gli abiti/parti del corpo mancanti sono stati sostituiti con quelli di default .
-	</notification>
-	<notification name="GroupNotice">
-		Oggetto: [SUBJECT], Messaggio: [MESSAGE]
-	</notification>
-	<notification name="FriendOnline">
-		[NAME] è Online
-	</notification>
-	<notification name="FriendOffline">
-		[NAME] è Offline
-	</notification>
-	<notification name="AddSelfFriend">
-		Anche se sei molto simpatico, non puoi aggiungere te stesso all&apos;elenco degli amici.
-	</notification>
-	<notification name="UploadingAuctionSnapshot">
-		Sto importando le fotografie per l&apos;uso inworld e per il web...
-(Durata circa 5 minuti.)
-	</notification>
-	<notification name="UploadPayment">
-		Hai pagato [AMOUNT]L$ per il caricamento.
-	</notification>
-	<notification name="UploadWebSnapshotDone">
-		Il caricamento della fotografia nel sito web è andato a buon fine.
-	</notification>
-	<notification name="UploadSnapshotDone">
-		Il caricamento della fotografia inworld è andato a buon fine.
-	</notification>
-	<notification name="TerrainDownloaded">
-		Terrain.raw caricato
-	</notification>
-	<notification name="GestureMissing">
-		Manca la gesture [NAME] dal database.
-	</notification>
-	<notification name="UnableToLoadGesture">
-		Impossibile caricare la gesture [NAME].
-	</notification>
-	<notification name="LandmarkMissing">
-		Landmark non trovato nel database.
-	</notification>
-	<notification name="UnableToLoadLandmark">
-		Impossibile caricare il Landmark di riferimento. Riprova.
-	</notification>
-	<notification name="CapsKeyOn">
-		Hai il blocco delle maiuscole attivato.
-Questo potrebbe incidere sulla tua password.
-	</notification>
-	<notification name="NotecardMissing">
-		Notecard non trovata nel database.
-	</notification>
-	<notification name="NotecardNoPermissions">
-		Non hai il permesso di vedere questo biglietto.
-	</notification>
-	<notification name="RezItemNoPermissions">
-		Permessi insufficienti per creare un oggetto.
-	</notification>
-	<notification name="UnableToLoadNotecard">
-		Impossibile caricare la notecard in questo momento.
-	</notification>
-	<notification name="ScriptMissing">
-		Script non trovato nel database.
-	</notification>
-	<notification name="ScriptNoPermissions">
-		Permessi insufficenti per visualizzare lo script.
-	</notification>
-	<notification name="UnableToLoadScript">
-		Impossibile caricare lo script. Riprova.
-	</notification>
-	<notification name="IncompleteInventory">
-		Il contenuto che stai offrendo per il momento non è localmente disponibile. Prova a rioffrire gli oggetti fra un minuto.
-	</notification>
-	<notification name="CannotModifyProtectedCategories">
-		Non è possibile modificare le categorie protette.
-	</notification>
-	<notification name="CannotRemoveProtectedCategories">
-		Non è possibile rimuovere le categorie protette.
-	</notification>
-	<notification name="UnableToBuyWhileDownloading">
-		Impossibile acquistare l&apos;oggetto durante il download dei dati.
-Riprova.
-	</notification>
-	<notification name="UnableToLinkWhileDownloading">
-		Impossibile collegare l&apos;oggetto durante il download dei dati.
-Riprova.
-	</notification>
-	<notification name="CannotBuyObjectsFromDifferentOwners">
-		Puoi acquistare oggetti soltanto da un proprietario per volta.
-Seleziona solo un oggetto.
-	</notification>
-	<notification name="ObjectNotForSale">
-		Questo oggetto non è in vendita.
-	</notification>
-	<notification name="EnteringGodMode">
-		Entra in modalità divina, livello [LEVEL]
-	</notification>
-	<notification name="LeavingGodMode">
-		Esci dalla modalità divina, livello [LEVEL]
-	</notification>
-	<notification name="CopyFailed">
-		Non hai l&apos;autorizzazione a copiare.
-	</notification>
-	<notification name="InventoryAccepted">
-		[NAME] ha ricevuto la tua offerta di inventario.
-	</notification>
-	<notification name="InventoryDeclined">
-		[NAME] non ha accettato la tua offerta dall&apos;inventario.
-	</notification>
-	<notification name="ObjectMessage">
-		[NAME]: [MESSAGE]
-	</notification>
-	<notification name="CallingCardAccepted">
-		Il tuo biglietto da visita è stato accettato.
-	</notification>
-	<notification name="CallingCardDeclined">
-		Il tuo biglietto da visita non è stato accettato.
-	</notification>
-	<notification name="TeleportToLandmark">
-		Puoi teleportarti alle ubicazioni come &apos;[NAME]&apos; aprendo il pannello Luoghi sul lato destro dello schermo, quindi selezionare la scheda Punti di riferimento.
-Clicca su un punto di riferimento per selezionarlo, quindi clicca su Teleport sul lato inferiore del pannello.
-(Puoi anche fare doppio clic sul punto di riferimento oppure cliccare su di esso con il tasto destro del mouse e scegliere Teleport.)
-	</notification>
-	<notification name="TeleportToPerson">
-		Puoi contattare il residente &apos;[NAME]&apos; aprendo il pannello Persone nel lato destro del tuo schermo.
-Seleziona il residente dall&apos;elenco, clicca su &apos;IM&apos; in basso nel pannello.
-(Puoi anche fare doppio clic sul nome nell&apos;elenco oppure fare clic con il pulsante destro del mouse e selezionare &apos;IM&apos;).
-	</notification>
-	<notification name="CantSelectLandFromMultipleRegions">
-		Non è possibile selezionare il terreno attraverso i confini del server.
-Prova a selezionare una parte di terreno più piccola.
-	</notification>
-	<notification name="SearchWordBanned">
-		Alcuni termini della ricerca sono stati esclusi a causa delle restrizioni di contenuto come esposto negli Standard della comunità.
-	</notification>
-	<notification name="NoContentToSearch">
-		Seleziona almeno un tipo di contenuto per la ricerca (Generale, Moderato o Adulti).
-	</notification>
-	<notification name="SystemMessage">
-		[MESSAGE]
-	</notification>
-	<notification name="PaymentReceived">
-		[MESSAGE]
-	</notification>
-	<notification name="PaymentSent">
-		[MESSAGE]
-	</notification>
-	<notification name="EventNotification">
-		Notifica eventi:
-
-[NAME]
-[DATE]
-		<form name="form">
-			<button name="Details" text="Dettagli"/>
-			<button name="Cancel" text="Cancella"/>
-		</form>
-	</notification>
-	<notification name="TransferObjectsHighlighted">
-		Tutti gli oggetti presenti sul terreno, che saranno trasferiti al compratore di questa terra, saranno ora evidenziati.
-
-* Gli alberi e l&apos;erba che cederai non saranno evidenziati.
-		<form name="form">
-			<button name="Done" text="Fatto"/>
-		</form>
-	</notification>
-	<notification name="DeactivatedGesturesTrigger">
-		Usa lo stesso tasto per disattivare la gesture:
-[NAMES]
-	</notification>
-	<notification name="NoQuickTime">
-		Il software QuickTime di Apple sembra non essere installato sul tuo computer.
-Se vuoi vedere contenuto multimediale in streaming sui lotti che lo supportano, vai alla pagina [http://www.apple.com/quicktime QuickTime] e installa il Player QuickTime.
-	</notification>
-	<notification name="NoPlugin">
-		Non è stato trovato alcun plugin multimediale per gestire il tipo mime [MIME_TYPE].  Il media di questo tipo non è disponibile.
-	</notification>
-	<notification name="MediaPluginFailed">
-		Questo plugin multimediale non funziona:
-    [PLUGIN]
-
-Reinstalla il plugin o contatta il venditore se continui ad avere questi problemi.
-		<form name="form">
-			<ignore name="ignore" text="Mancato funzionamento del plugin multimediale"/>
-		</form>
-	</notification>
-	<notification name="OwnedObjectsReturned">
-		Gli oggetti che possiedi sul terreno selezionato ti sono stati restituiti nell&apos;inventario.
-	</notification>
-	<notification name="OtherObjectsReturned">
-		Sono stati restituiti all&apos;inventario di &apos;[NAME]&apos; gli oggetti sul lotto di terreno selezionato di sua proprietà.
-	</notification>
-	<notification name="OtherObjectsReturned2">
-		Sono stati restituiti al proprietario gli oggetti selezionati sul lotto nella terra di proprietà del residente &apos;[NAME]&apos;.
-	</notification>
-	<notification name="GroupObjectsReturned">
-		Gli oggetti selezionati sul terreno e condivisi con il gruppo [GROUPNAME] sono stati restituiti nell&apos;inventario dei propietari.
-Gli oggetti trasferibili ceduti sono stati restituiti ai proprietari precedenti.
-Gli oggetti non trasferibili che erano stati ceduti al gruppo sono stati cancellati.
-	</notification>
-	<notification name="UnOwnedObjectsReturned">
-		Gli oggetti selezionati sul terreno che non sono di tua proprietà sono stati restituiti ai loro proprietari.
-	</notification>
-	<notification name="ServerObjectMessage">
-		Messaggio da [NAME]:
-&lt;nolink&gt;[MSG]&lt;/nolink&gt;
-	</notification>
-	<notification name="NotSafe">
-		Su questo terreno sono abilitati i danni.
-Qui potresti essere ferito. Se dovessi morire verrai teleportato a casa tua.
-	</notification>
-	<notification name="NoFly">
-		In questa zona è proibito il volo.
-Qui non puoi volare.
-	</notification>
-	<notification name="PushRestricted">
-		Questa zona non consente le spinte. Non puoi spingere gli altri a meno che tu non sia il proprietario del terreno.
-	</notification>
-	<notification name="NoVoice">
-		Questa zona ha la chat vocale disattivata. Non puoi sentire nessuno parlare.
-	</notification>
-	<notification name="NoBuild">
-		In questa zona è proibita la costruzione. Qui non puoi costruire né rezzare oggetti.
-	</notification>
-	<notification name="ScriptsStopped">
-		Un amministratore ha temporaneamente disabilitato gli script in questa regione.
-	</notification>
-	<notification name="ScriptsNotRunning">
-		In questa terra nessuno script è attivo.
-	</notification>
-	<notification name="NoOutsideScripts">
-		Questo terreno non consente script esterni.
-
-Qui funzionano soltanto gli script del proprietario del terreno.
-	</notification>
-	<notification name="ClaimPublicLand">
-		Puoi solo richiedere terreni pubblici nella regione in cui sei posizionato.
-	</notification>
-	<notification name="RegionTPAccessBlocked">
-		Non puoi entrare in quella regione a causa della tua categoria di accesso. Può essere necessario validare l&apos;età e/o installare l&apos;ultima versione del programma.
-
-Visita la Knowledge Base per informazioni sull&apos;accesso alle aree con queste categorie di accesso.
-	</notification>
-	<notification name="URBannedFromRegion">
-		Tu hai l&apos;accesso bloccato a questa regione.
-	</notification>
-	<notification name="NoTeenGridAccess">
-		Il tuo account non può connettersi a questa regione della griglia per Teenager.
-	</notification>
-	<notification name="ImproperPaymentStatus">
-		Non hai una impostazioni di pagamento corrette per entrare in questa regione.
-	</notification>
-	<notification name="MustGetAgeParcel">
-		Devi essere di età verificata per entrare in questa terra.
-	</notification>
-	<notification name="NoDestRegion">
-		Non è stata trovata nessuna regione di destinazione.
-	</notification>
-	<notification name="NotAllowedInDest">
-		Non hai il permesso di accedere alla regione di destinazione.
-	</notification>
-	<notification name="RegionParcelBan">
-		Non puoi attraversare la regione passando su un terreno ad accesso interdetto. Prova in un altro modo.
-	</notification>
-	<notification name="TelehubRedirect">
-		Sei stato rediretto ad un punto di snodo di teletrasporto.
-	</notification>
-	<notification name="CouldntTPCloser">
-		Non è stato possibile teleportarti più vicino al luogo di destinazione.
-	</notification>
-	<notification name="TPCancelled">
-		Teletrasporto annullato.
-	</notification>
-	<notification name="FullRegionTryAgain">
-		La regione in cui stai tentando di accedere è attualmente piena.
-Riprova tra qualche istante.
-	</notification>
-	<notification name="GeneralFailure">
-		Fallimento generale.
-	</notification>
-	<notification name="RoutedWrongRegion">
-		Sei stato instradato verso la regione sbagliata. Riprova.
-	</notification>
-	<notification name="NoValidAgentID">
-		Nessun ID valido.
-	</notification>
-	<notification name="NoValidSession">
-		Nessun ID valido.
-	</notification>
-	<notification name="NoValidCircuit">
-		Nessun codice circuito valido.
-	</notification>
-	<notification name="NoValidTimestamp">
-		Nessuna data/timestamp valido.
-	</notification>
-	<notification name="NoPendingConnection">
-		Impossibile creare la connessione in sospeso.
-	</notification>
-	<notification name="InternalUsherError">
-		Si è verificato un errore interno durante il tentativo di trasportarti alla destinazione. Potrebbero esserci problemi in [SECOND_LIFE] al momento.
-	</notification>
-	<notification name="NoGoodTPDestination">
-		Impossibile trovare una buona destinazione per il teletrasporto in questa regione.
-	</notification>
-	<notification name="InternalErrorRegionResolver">
-		Si è verificato un errore interno durante il tentativo di risolvere le coordinate per la richiesta di teletrasporto. Può darsi che ci siano problemi in [SECOND_LIFE] al momento.
-	</notification>
-	<notification name="NoValidLanding">
-		Non è stato trovato un punto di atterraggio valido.
-	</notification>
-	<notification name="NoValidParcel">
-		Non è stato trovato nessun territorio valido.
-	</notification>
-	<notification name="ObjectGiveItem">
-		Un oggetto denominato &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; di proprietà di [NAME_SLURL] ti ha offerto &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;. Per usare questo oggetto è necessario passare alla modalità Avanzata e cercarlo nell&apos;Inventario. Per passare alla modalità Avanzata, esci e riavvia l&apos;applicazione e cambia le impostazioni della modalità nella schermata di accesso.
-		<form name="form">
-			<button name="Keep" text="Mantieni oggetto"/>
-			<button name="Discard" text="Rifiuta oggetto"/>
-			<button name="Mute" text="Blocca oggetto"/>
-		</form>
-	</notification>
-	<notification name="UserGiveItem">
-		[NAME_SLURL] ti ha offerto [ITEM_SLURL].  Per usare questo oggetto è necessario passare alla modalità Avanzata e cercarlo nell&apos;Inventario. Per passare alla modalità Avanzata, esci e riavvia l&apos;applicazione e cambia le impostazioni della modalità nella schermata di accesso.
-		<form name="form">
-			<button name="Show" text="Mantieni oggetto"/>
-			<button name="Discard" text="Rifiuta oggetto"/>
-			<button name="Mute" text="Blocca utente"/>
-		</form>
-	</notification>
-	<notification name="GodMessage">
-		[NAME]
-
-[MESSAGE]
-	</notification>
-	<notification name="JoinGroup">
-		[MESSAGE]
-		<form name="form">
-			<button name="Join" text="Iscriviti"/>
-			<button name="Decline" text="Rifiuta"/>
-			<button name="Info" text="Info"/>
-		</form>
-	</notification>
-	<notification name="TeleportOffered">
-		[NAME_SLURL] ti ha offerto il teleport alla sua ubicazione:
-
-[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
-		<form name="form">
-			<button name="Teleport" text="Teleport"/>
-			<button name="Cancel" text="Cancella"/>
-		</form>
-	</notification>
-	<notification name="TeleportOfferSent">
-		Offerta di Teleport inviata a [TO_NAME]
-	</notification>
-	<notification name="GotoURL">
-		[MESSAGE]
-[URL]
-		<form name="form">
-			<button name="Later" text="Successivo"/>
-			<button name="GoNow..." text="Vai ora..."/>
-		</form>
-	</notification>
-	<notification name="OfferFriendship">
-		[NAME_SLURL] ti ha offerto di diventare amici.
-
-[MESSAGE]
-
-(L&apos;impostazione predefinita consente a ciascuno di vedere se l&apos;altro è online.)
-		<form name="form">
-			<button name="Accept" text="Accetta"/>
-			<button name="Decline" text="Rifiuta"/>
-		</form>
-	</notification>
-	<notification name="FriendshipOffered">
-		Hai offerto l&apos;amicizia a [TO_NAME]
-	</notification>
-	<notification name="OfferFriendshipNoMessage">
-		[NAME_SLURL] ti ha offerto di diventare amici.
-
-(L&apos;impostazione predefinita consente a ciascuno di vedere se l&apos;altro è online.)
-		<form name="form">
-			<button name="Accept" text="Accetta"/>
-			<button name="Decline" text="Rifiuta"/>
-		</form>
-	</notification>
-	<notification name="FriendshipAccepted">
-		[NAME] ha accettato la tua offerta di amicizia.
-	</notification>
-	<notification name="FriendshipDeclined">
-		[NAME] ha rifiutato la tua offerta di amicizia.
-	</notification>
-	<notification name="FriendshipAcceptedByMe">
-		Offerta di amicizia accettata.
-	</notification>
-	<notification name="FriendshipDeclinedByMe">
-		Offerta di amicizia rifiutata.
-	</notification>
-	<notification name="OfferCallingCard">
-		[NOME] ti offre il suo biglietto da visita.
-Questo sarà aggiunto nel tuo inventario come segnalibro per consentirti di inviare rapidamente messaggi IM a questo residente.
-		<form name="form">
-			<button name="Accept" text="Accetta"/>
-			<button name="Decline" text="Rifiuta"/>
-		</form>
-	</notification>
-	<notification name="RegionRestartMinutes">
-		Questa regione verrà riavviata fra [MINUTES] minuti.
-Se rimani qui verrai scollegato da Second Life.
-	</notification>
-	<notification name="RegionRestartSeconds">
-		Questa regione verrà riavviata fra [SECONDS] secondi.
-Se rimani qui verrai scollegato da Second Life.
-	</notification>
-	<notification name="LoadWebPage">
-		Caricare la pagina Web [URL]?
-
-[MESSAGE]
-
-Dall&apos;oggetto: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, proprietario: [NAME]?
-		<form name="form">
-			<button name="Gotopage" text="Caricare"/>
-			<button name="Cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification name="FailedToFindWearableUnnamed">
-		Impossibile trovare [TYPE] nel database.
-	</notification>
-	<notification name="FailedToFindWearable">
-		Impossibile trovare [TYPE] chiamato [DESC] nel database.
-	</notification>
-	<notification name="InvalidWearable">
-		L&apos;elemento che stai tentando di indossare usa delle caratteristiche che il tuo viewer non può leggere. Aggiorna la versione di [APP_NAME] per poterlo indossare.
-	</notification>
-	<notification name="ScriptQuestion">
-		&apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, un oggetto posseduto da  &apos;[NAME]&apos; vorrebbe:
-
-[QUESTIONS]
-OK?
-		<form name="form">
-			<button name="Yes" text="Si"/>
-			<button name="No" text="No"/>
-			<button name="Mute" text="Blocca"/>
-		</form>
-	</notification>
-	<notification name="ScriptQuestionCaution">
-		Un oggetto di nome &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, posseduto da  &apos;[NAME]&apos; vorrebbe:
-
-[QUESTIONS]
-Se non ti fidi di questo oggetto e del suo ideatore, dovresti rifiutare la richiesta.
-
-Concedi questa richiesta?
-		<form name="form">
-			<button name="Grant" text="Accetta"/>
-			<button name="Deny" text="Nega"/>
-			<button name="Details" text="Dettagli..."/>
-		</form>
-	</notification>
-	<notification name="ScriptDialog">
-		&apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos; di [NAME]
-[MESSAGE]
-		<form name="form">
-			<button name="Ignore" text="Ignora"/>
-		</form>
-	</notification>
-	<notification name="ScriptDialogGroup">
-		&apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos; di [GROUPNAME]
-[MESSAGE]
-		<form name="form">
-			<button name="Ignore" text="Ignora"/>
-		</form>
-	</notification>
-	<notification name="BuyLindenDollarSuccess">
-		Grazie per aver inviato il pagamento.
-
-Il tuo saldo in L$ sarà aggiornato al termine dell&apos;elaborazione. Se l&apos;elaborazione dovesse impiegare più di 20 minuti, la transazione verrà annullata. In quel caso l&apos;ammontare dell&apos;acquisto verrà accreditato sul tuo saldo in US$.
-
-Potrai controllare lo stato del pagamento nella pagina della cronologia delle transazioni nel tuo [http://secondlife.com/account/ Dashboard]
-	</notification>
-	<notification name="FirstOverrideKeys">
-		I tuoi movimenti della tastiera vengono ora gestiti da un oggetto.
-Prova i tasti freccia o AWSD per vedere quello che fanno.
-Alcuni oggetti (come pistole) richiedono di andare in mouselook per il loro utilizzo.
-Premi &apos;M&apos; per farlo.
-	</notification>
-	<notification name="FirstSandbox">
-		Questa è una Sandbox, serve ai residenti per imparare a costruire.
-
-Gli oggetti che costruisci qui verranno eliminati dopo che te ne sei andato, perciò non dimenticare di cliccare sulle tue creazioni col tasto destro del mouse e scegliere Prendi per trasferirle nel tuo Inventario.
-	</notification>
-	<notification name="MaxListSelectMessage">
-		È possibile selezionare solo fino a [MAX_SELECT] oggetti da questa lista.
-	</notification>
-	<notification name="VoiceInviteP2P">
-		[NAME] ti sta invitando ad una chiamata in chat vocale.
-Clicca su Accetta per unirti alla chiamata oppure su Declina to declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
-		<form name="form">
-			<button name="Accept" text="Accetta"/>
-			<button name="Decline" text="Rifiuta"/>
-			<button name="Mute" text="Blocca"/>
-		</form>
-	</notification>
-	<notification name="AutoUnmuteByIM">
-		[NAME] ha ricevuto un IM ed è stato automaticamente sbloccato.
-	</notification>
-	<notification name="AutoUnmuteByMoney">
-		[NAME] ha ricevuto del denaro ed è stato automaticamente sbloccato.
-	</notification>
-	<notification name="AutoUnmuteByInventory">
-		[NAME] ha ricevuto un&apos;offerta di inventario ed è stato automaticamente sbloccato.
-	</notification>
-	<notification name="VoiceInviteGroup">
-		[NAME] si è aggiunto alla chiamata in chat vocale con il gruppo [GROUP].
-Clicca su Accetta per unirti alla chiamata oppure su Declina to declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
-		<form name="form">
-			<button name="Accept" text="Accetta"/>
-			<button name="Decline" text="Rifiuta"/>
-			<button name="Mute" text="Blocca"/>
-		</form>
-	</notification>
-	<notification name="VoiceInviteAdHoc">
-		[NAME] si è aggiunto alla chiamata in chat vocale con una conferenza.
-Clicca su Accetta per unirti alla chiamata oppure su Declina to declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
-		<form name="form">
-			<button name="Accept" text="Accetta"/>
-			<button name="Decline" text="Rifiuta"/>
-			<button name="Mute" text="Blocca"/>
-		</form>
-	</notification>
-	<notification name="InviteAdHoc">
-		[NAME] ti sta invitando ad una conferenza in chat.
-Clicca su Accetta per unirti alla chat oppure su Declina per declinare l&apos;invito. Clicca su Blocca per bloccare questo chiamante.
-		<form name="form">
-			<button name="Accept" text="Accetta"/>
-			<button name="Decline" text="Rifiuta"/>
-			<button name="Mute" text="Blocca"/>
-		</form>
-	</notification>
-	<notification name="VoiceChannelFull">
-		La chiamata vocale a cui si sta cercando di unirsi, [VOICE_CHANNEL_NAME], ha raggiunto la capacità massima. Si prega di riprovare più tardi.
-	</notification>
-	<notification name="ProximalVoiceChannelFull">
-		Siamo spiacenti.  Questa area ha raggiunto la capacità massima per le chiamate voice.  Si prega di provare ad usare il voice in un&apos;altra area.
-	</notification>
-	<notification name="VoiceChannelDisconnected">
-		Sei stato scollegato da [VOICE_CHANNEL_NAME].  Verrai ora ricollegato alla chat vocale nei dintorni.
-	</notification>
-	<notification name="VoiceChannelDisconnectedP2P">
-		[VOICE_CHANNEL_NAME] ha chiuso la chiamata.  Verrai ora ricollegato alla chat vocale nei dintorni.
-	</notification>
-	<notification name="P2PCallDeclined">
-		[VOICE_CHANNEL_NAME] ha declinato la tua chiamata.  Verrai ora ricollegato alla chat vocale nei dintorni.
-	</notification>
-	<notification name="P2PCallNoAnswer">
-		[VOICE_CHANNEL_NAME] non è disponibile per la tua chiamata.  Verrai ora ricollegato alla chat vocale nei dintorni.
-	</notification>
-	<notification name="VoiceChannelJoinFailed">
-		Collegamento a [VOICE_CHANNEL_NAME] non riuscito, riprova più tardi.  Verrai ora ricollegato alla chat vocale nei dintorni.
-	</notification>
-	<notification name="VoiceLoginRetry">
-		Stiamo creando una canale voice per te. Questo può richiedere fino a un minuto.
-	</notification>
-	<notification name="VoiceEffectsExpired">
-		Almeno una delle manipolazioni vocali alle quali sei iscritto è scaduta.
-[[URL] Fai clic qui] per rinnovare l&apos;abbonamento.
-	</notification>
-	<notification name="VoiceEffectsExpiredInUse">
-		Poiché la manipolazione vocale attiva è scaduta, sono state applicate le tue impostazioni normali.
-[[URL] Fai clic qui] per rinnovare l&apos;abbonamento.
-	</notification>
-	<notification name="VoiceEffectsWillExpire">
-		Almeno una delle tue manipolazioni vocali scadrà tra meno di [INTERVAL] giorni.
-[[URL] Fai clic qui] per rinnovare l&apos;abbonamento.
-	</notification>
-	<notification name="VoiceEffectsNew">
-		Sono disponibili nuove manipolazioni vocali.
-	</notification>
-	<notification name="Cannot enter parcel: not a group member">
-		Soltanto i membri di un determinato gruppo possono visitare questa zona.
-	</notification>
-	<notification name="Cannot enter parcel: banned">
-		Non puoi entrare nel terreno, sei stato bloccato.
-	</notification>
-	<notification name="Cannot enter parcel: not on access list">
-		Non puoi entrare nel terreno, non fai parte della lista di accesso.
-	</notification>
-	<notification name="VoiceNotAllowed">
-		Non hai il permesso di collegarti ad una voice chat con [VOICE_CHANNEL_NAME].
-	</notification>
-	<notification name="VoiceCallGenericError">
-		Si è verificato un errore durante il tentativo di collegarti a una voice chat con [VOICE_CHANNEL_NAME].  Riprova più tardi.
-	</notification>
-	<notification name="UnsupportedCommandSLURL">
-		Lo SLurl su cui hai cliccato non è valido.
-	</notification>
-	<notification name="BlockedSLURL">
-		Uno SLurl è stato ricevuto da un browser sconosciuto o non sicuro e, per sicurezza, è stato bloccato.
-	</notification>
-	<notification name="ThrottledSLURL">
-		Sono stati ricevuti più SLurl da un browser sconosciuto o non sicuro in un breve periodo di tempo.
-Per sicurezza, verranno bloccati per alcuni secondi.
-	</notification>
-	<notification name="IMToast">
-		[MESSAGE]
-		<form name="form">
-			<button name="respondbutton" text="Rispondi"/>
-		</form>
-	</notification>
-	<notification name="ConfirmCloseAll">
-		Sicuro di voler chiudere tutti gli IM?
-		<usetemplate ignoretext="Conferma prima della chiusura di tutti gli IM" name="okcancelignore" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="AttachmentSaved">
-		L&apos;elemento da collegare è stato salvato.
-	</notification>
-	<notification name="UnableToFindHelpTopic">
-		Impossibile trovare l&apos;argomento nell&apos;aiuto per questo elemento.
-	</notification>
-	<notification name="ObjectMediaFailure">
-		Errore del server: mancato aggiornamento o ottenimento del media.
-&apos;[ERROR]&apos;
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="TextChatIsMutedByModerator">
-		La tua chat di testo è stata interrotta dal moderatore.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="VoiceIsMutedByModerator">
-		La tua voce è stata interrotta dal moderatore.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmClearTeleportHistory">
-		Sei sicuro di volere cancellare la cronologia dei tuoi teleport?
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
-	</notification>
-	<notification name="BottomTrayButtonCanNotBeShown">
-		Il pulsante selezionato non può essere visualizzato in questo momento.
-Il pulsante verrà visualizzato quando lo spazio sarà sufficiente.
-	</notification>
-	<notification name="ShareNotification">
-		Scegli i residenti con i quali condividere.
-	</notification>
-	<notification name="ShareItemsConfirmation">
-		Sei sicuro di volere condividere gli oggetti
-
-&lt;nolink&gt;[MSG]&lt;/nolink&gt;
-
-Con i seguenti residenti?
-
-[RESIDENTS]
-		<usetemplate name="okcancelbuttons" notext="Annulla" yestext="Ok"/>
-	</notification>
-	<notification name="ItemsShared">
-		Gli oggetti sono stati condivisi.
-	</notification>
-	<notification name="DeedToGroupFail">
-		Cessione al gruppo non riuscita.
-	</notification>
-	<notification name="AvatarRezNotification">
-		( in esistenza da [EXISTENCE] secondi )
-Nuvola avatar &apos;[NAME]&apos; dileguata dopo [TIME] secondi.
-	</notification>
-	<notification name="AvatarRezSelfBakedDoneNotification">
-		( in esistenza da [EXISTENCE] secondi )
-Baking dei vestiti terminato dopo [TIME] secondi.
-	</notification>
-	<notification name="AvatarRezSelfBakedUpdateNotification">
-		( in esistenza da [EXISTENCE] secondi )
-Hai inviato un aggiornamento al tuo aspetto dopo [TIME] secondi.
-[STATUS]
-	</notification>
-	<notification name="AvatarRezCloudNotification">
-		( presente da [EXISTENCE] secondi )
-Avatar &apos;[NAME]&apos; trasformato in nuvola.
-	</notification>
-	<notification name="AvatarRezArrivedNotification">
-		( presente da [EXISTENCE] secondi )
-È comparso l&apos;avatar &apos;[NAME]&apos;.
-	</notification>
-	<notification name="AvatarRezLeftCloudNotification">
-		( presente da [EXISTENCE] secondi )
-Avatar &apos;[NAME]&apos; partito dopo [TIME] secondi sotto forma di nuvola.
-	</notification>
-	<notification name="AvatarRezEnteredAppearanceNotification">
-		( presente da [EXISTENCE] secondi )
-Avatar &apos;[NAME]&apos; è entrato nella modalità aspetto.
-	</notification>
-	<notification name="AvatarRezLeftAppearanceNotification">
-		( presente da [EXISTENCE] secondi )
-Avatar &apos;[NAME]&apos; ha lasciato la modalità aspetto.
-	</notification>
-	<notification name="NoConnect">
-		Ci sono problemi di connessione tramite [PROTOCOL] [HOSTID].
-Ti consigliamo di controllare le tue impostazioni di rete e della firewall.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="NoVoiceConnect">
-		A causa di problemi di connessione al server vocale
-
-[HOSTID]
-
-le comunicazioni tramite voce non saranno disponibili.
-Ti consigliamo di controllare le tue impostazioni di rete e della firewall.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AvatarRezLeftNotification">
-		( presente da [EXISTENCE] secondi )
-Avatar &apos;[NAME]&apos; è partito completamente caricato.
-	</notification>
-	<notification name="AvatarRezSelfBakedTextureUploadNotification">
-		( In esistenza da [EXISTENCE] secondi)
-Hai caricato una texture [RESOLUTION] completata per &apos;[BODYREGION]&apos; dopo [TIME] secondi.
-	</notification>
-	<notification name="AvatarRezSelfBakedTextureUpdateNotification">
-		( In esistenza da [EXISTENCE] secondi)
-Hai aggiornato localmente una texture [RESOLUTION] completata per &apos;[BODYREGION]&apos; dopo [TIME] secondi.
-	</notification>
-	<notification name="ConfirmLeaveCall">
-		Sei sicuro di volere uscire dalla chiamata?
-		<usetemplate ignoretext="Conferma prima di uscire dalla chiamata" name="okcancelignore" notext="No" yestext="Sì"/>
-	</notification>
-	<notification name="ConfirmMuteAll">
-		Hai scelto di disattivare l&apos;audio di tutti i partecipanti alla chiamata di gruppo.
-In questo modo verrà disattivato l&apos;audio anche di tutti i residenti che si
-uniscono alla chiamata in un secondo momento, anche dopo che tu ti fossi scollegato.
-
-Disattiva audio di tutti?
-		<usetemplate ignoretext="Conferma prima di disattivare l&apos;audio di tutti i partecipanti alla chiamata di gruppo" name="okcancelignore" notext="Annulla" yestext="Ok"/>
-	</notification>
-	<notification label="Chat" name="HintChat">
-		Per partecipare alla conversazione, digita nel campo chat in basso.
-	</notification>
-	<notification label="Alzati" name="HintSit">
-		Per alzarti ed uscire dalla posizione seduta, clicca sul pulsante Alzati.
-	</notification>
-	<notification label="Parla" name="HintSpeak">
-		Clicca sul pulsante Parla per attivare o disattivare il microfono.
-
-Clicca sul tasto freccia su per visualizzare il pannello di controllo voce.
-
-Se nascondi il tasto Parla viene disattivata la funzione voce.
-	</notification>
-	<notification label="Esplora il mondo" name="HintDestinationGuide">
-		La Guida alle destinazioni contiene migliaia di nuovi luoghi da scoprire. Seleziona una destinazione e scegli Teleport per iniziare a esplorare.
-	</notification>
-	<notification label="Pannello laterale" name="HintSidePanel">
-		Nel pannello laterale puoi acccedere rapidamente all&apos;inventario, ai vestiti, ai profili e ad altro ancora.
-	</notification>
-	<notification label="Movimento" name="HintMove">
-		Per camminare o correre, apri il pannello Sposta e usa le frecce direzionali per spostarti. Puoi anche usare le frecce direzionali sulla tastiera del computer.
-	</notification>
-	<notification label="" name="HintMoveClick">
-		1. Clicca per camminare
-Clicca dovunque sul terreno per camminare verso quella posizione.
-
-2. Clicca e trascina per ruotare la visuale
-Clicca e trascina dovunque nel mondo per ruotare la visuale
-	</notification>
-	<notification label="Nome visualizzato" name="HintDisplayName">
-		Imposta qui il tuo nome visualizzato personalizzabile. È in aggiunta al tuo nome utente, che non può essere cambiato. Nelle preferenze puoi anche cambiare il modo in cui vedi i nomi degli altri.
-	</notification>
-	<notification label="Visuale" name="HintView">
-		Per cambiare la visuale della fotocamera, usa i controlli Ruota visuale e Panoramica. Ripristina la visuale premendo il tasto Esc o camminando.
-	</notification>
-	<notification label="Inventario" name="HintInventory">
-		Trova oggetti nel tuo inventario. I più recenti si trovano nella scheda Elementi recenti.
-	</notification>
-	<notification label="Hai dollari Linden!" name="HintLindenDollar">
-		Ecco il saldo attuale in L$. Clicca su Acquista L$ per acquistare altri dollari Linden.
-	</notification>
-	<notification name="PopupAttempt">
-		Non è stato possibile aprire una finestra pop-up.
-		<form name="form">
-			<ignore name="ignore" text="Attiva tutti i pop-up"/>
-			<button name="open" text="Apri finestra pop-up"/>
-		</form>
-	</notification>
-	<notification name="AuthRequest">
-		Il sito &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; nel reame &apos;[REALM]&apos; richiede un nome utente e una password.
-		<form name="form">
-			<input name="username" text="Nome utente"/>
-			<input name="password" text="Password"/>
-			<button name="ok" text="Invia"/>
-			<button name="cancel" text="Annulla"/>
-		</form>
-	</notification>
-	<notification label="" name="ModeChange">
-		Per cambiare la modalità è necessario uscire e riavviare.
-		<usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
-	</notification>
-	<notification label="" name="NoClassifieds">
-		La creazione e la modifica degli annunci sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità.
-		<usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
-	</notification>
-	<notification label="" name="NoGroupInfo">
-		La creazione e la modifica dei gruppi sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità.
-		<usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
-	</notification>
-	<notification label="" name="NoPicks">
-		La creazione e la modifica dei luoghi preferiti sono disponibili solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità.
-		<usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
-	</notification>
-	<notification label="" name="NoWorldMap">
-		La visualizzazione della mappa del mondo è disponibile solo in modalità Avanzata. Uscire e cambiare la modalità? Sulla schermata di accesso si può selezionare la modalità.
-		<usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
-	</notification>
-	<notification label="" name="NoVoiceCall">
-		Le chiamate Voce sono disponibili solo in modalità Avanzata. Eseguire il logout e cambiare la modalità?
-		<usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
-	</notification>
-	<notification label="" name="NoAvatarShare">
-		La condivisione è disponibile solo in modalità Avanzata. Eseguire il logout e cambiare la modalità?
-		<usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
-	</notification>
-	<notification label="" name="NoAvatarPay">
-		Il pagamento ad altri residenti è disponibile solo in modalità Avanzata. Eseguire il logout e cambiare la modalità?
-		<usetemplate name="okcancelbuttons" notext="Non uscire" yestext="Esci"/>
-	</notification>
-	<global name="UnsupportedCPU">
-		- La velocità della tua CPU non soddisfa i requisiti minimi.
-	</global>
-	<global name="UnsupportedGLRequirements">
-		Non sembra che tu abbia i requisiti hardware adeguati per [APP_NAME]. [APP_NAME] richiede una scheda grafica OpenGL con supporto multitexture. Se ne hai una in dotazione, accertati di avere i driver, i service pack e i patch più recenti per la scheda grafica e per il sistema operativo.
-
-Se continui ad avere problemi, visita la pagina [SUPPORT_SITE].
-	</global>
-	<global name="UnsupportedCPUAmount">
-		796
-	</global>
-	<global name="UnsupportedRAMAmount">
-		510
-	</global>
-	<global name="UnsupportedGPU">
-		- La tua scheda grafica non soddisfa i requisiti minimi.
-	</global>
-	<global name="UnsupportedRAM">
-		- La memoria del tuo sistema non soddisfa i requisiti minimi.
-	</global>
-	<global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
-		Se sei proprietario di un appezzamento di terreno, puoi definirlo come la tua posizione iniziale.
-In alternativa, puoi guardare sulla mappa e trovare luoghi segnalati come &quot;Infohub&quot;.
-	</global>
-	<global name="You died and have been teleported to your home location">
-		Sei deceduto e sei stato teleportato a casa tua.
-	</global>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/it/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/it/panel_adhoc_control_panel.xml
deleted file mode 100644
index be001d09f8ec4a8af00f2138a250d42df889c696..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="call_btn_panel">
-			<button label="Chiama" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Abbandona chiamata" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Regolazione voce" name="voice_ctrls_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml
deleted file mode 100644
index ab9b175f16bbe23215facd4f5479ea751f4f615a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
-	<string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
-	<string name="SpeakBtnToolTip" value="Accende o spegne il microfono"/>
-	<string name="VoiceControlBtnToolTip" value="Mostra o nasconde il pannello di regolazione voce"/>
-	<layout_stack name="toolbar_stack">
-		<layout_panel name="speak_panel">
-			<button label="Parla" name="speak_btn" tool_tip="Accendi e spegni il microfono"/>
-		</layout_panel>
-		<layout_panel name="speak_flyout_panel">
-			<button label="" name="flyout_btn" tool_tip="Cambia le preferenze per i suoni"/>
-		</layout_panel>
-		<layout_panel name="gesture_panel">
-			<gesture_combo_list label="Gesture" name="Gesture" tool_tip="Fai fare qualcosa al tuo avatar"/>
-		</layout_panel>
-		<layout_panel name="cam_panel">
-			<bottomtray_button label="Visuale" name="camera_btn" tool_tip="Controlla l&apos;angolo di visualizzazione"/>
-		</layout_panel>
-		<layout_panel name="destinations_panel">
-			<bottomtray_button label="Destinazioni" name="destination_btn" tool_tip="Viaggia in Second Life"/>
-		</layout_panel>
-		<layout_panel name="avatar_panel">
-			<bottomtray_button label="Il mio avatar" name="avatar_btn" tool_tip="Cambia il tuo aspetto"/>
-		</layout_panel>
-		<layout_panel name="people_panel">
-			<bottomtray_button label="Persone" name="show_people_button" tool_tip="Trova persone in Second Life"/>
-		</layout_panel>
-		<layout_panel name="profile_panel">
-			<bottomtray_button label="Profilo" name="show_profile_btn" tool_tip="Visualizza e modifica il tuo profilo"/>
-		</layout_panel>
-		<layout_panel name="howto_panel">
-			<bottomtray_button label="Istruzioni" name="show_help_btn" tool_tip="Visualizza le informazioni della guida di Second Life"/>
-		</layout_panel>
-		<layout_panel name="im_well_panel">
-			<chiclet_im_well name="im_well">
-				<button name="Unread IM messages" tool_tip="Conversazioni"/>
-			</chiclet_im_well>
-		</layout_panel>
-		<layout_panel name="notification_well_panel">
-			<chiclet_notification name="notification_well">
-				<button name="Unread" tool_tip="Notifiche"/>
-			</chiclet_notification>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/it/panel_group_control_panel.xml
deleted file mode 100644
index 2d17e4a0cdf06370053843dcdf68687a7af8fcac..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="group_info_btn_panel">
-			<button label="Profilo del gruppo" name="group_info_btn"/>
-		</layout_panel>
-		<layout_panel name="call_btn_panel">
-			<button label="Chiama il gruppo" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Abbandona chiamata" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Apri la regolazione voce" name="voice_ctrls_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml
deleted file mode 100644
index 269931a1a4277c5b9e207f5c4c17d2dbd447655b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="button_stack">
-		<layout_panel name="view_profile_btn_panel">
-			<button label="Profilo" name="view_profile_btn"/>
-		</layout_panel>
-		<layout_panel name="add_friend_btn_panel">
-			<button label="Aggiungi come amico" name="add_friend_btn"/>
-		</layout_panel>
-		<layout_panel name="teleport_btn_panel">
-			<button label="Teleport" name="teleport_btn" tool_tip="Offri teleport a questa persona"/>
-		</layout_panel>
-		<layout_panel name="call_btn_panel">
-			<button label="Chiama" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Chiudi chiamata" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="block_btn_panel">
-			<button label="Blocca" name="block_btn"/>
-		</layout_panel>
-		<layout_panel name="unblock_btn_panel">
-			<button label="Sblocca" name="unblock_btn"/>
-		</layout_panel>
-		<layout_panel name="volume_ctrl_panel">
-			<slider name="volume_slider" tool_tip="Volume chiamata" value="0.5"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_login.xml b/indra/newview/skins/minimal/xui/it/panel_login.xml
deleted file mode 100644
index f88230ed11d70ac43dbdf95d6beba3e910622f30..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/panel_login.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
-	<panel.string name="create_account_url">
-		http://join.secondlife.com/
-	</panel.string>
-	<panel.string name="forgot_password_url">
-		http://secondlife.com/account/request.php?lang=it
-	</panel.string>
-	<layout_stack name="login_widgets">
-		<layout_panel name="login">
-			<text name="username_text">
-				Nome utente:
-			</text>
-			<combo_box name="username_combo" tool_tip="Il nome utente che hai scelto durante la registrazione, come robby12 o Stella Soleggiato"/>
-			<text name="password_text">
-				Password:
-			</text>
-			<check_box label="Ricorda password" name="remember_check"/>
-			<button label="Accedi" name="connect_btn"/>
-			<text name="mode_selection_text">
-				Modalità:
-			</text>
-			<combo_box name="mode_combo" tool_tip="Seleziona la modalità. Seleziona Di base per esplorare facilmente e rapidamente e per la chat. Seleziona Avanzata per accedere ad altre funzionalità.">
-				<combo_box.item label="Di base" name="Basic"/>
-				<combo_box.item label="Avanzate" name="Advanced"/>
-			</combo_box>
-			<text name="start_location_text">
-				Inizia da:
-			</text>
-			<combo_box name="start_location_combo">
-				<combo_box.item label="La mia ultima ubicazione" name="MyLastLocation"/>
-				<combo_box.item label="Casa mia" name="MyHome"/>
-				<combo_box.item label="&lt;Scrivi nome regione&gt;" name="Typeregionname"/>
-			</combo_box>
-		</layout_panel>
-		<layout_panel name="links">
-			<text name="create_new_account_text">
-				Iscriviti
-			</text>
-			<text name="forgot_password_text">
-				Hai dimenticato il nome utente o la password?
-			</text>
-			<text name="login_help">
-				Ti serve aiuto con la fase di accesso?
-			</text>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/it/panel_navigation_bar.xml
deleted file mode 100644
index 8e7216775914cf62fd663aceca2ad6bcafcbf884..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="Torna al luogo precedente"/>
-		<pull_button name="forward_btn" tool_tip="Procedi un luogo in avanti"/>
-		<button name="home_btn" tool_tip="Teleport a casa"/>
-		<location_input label="Posizione" name="location_combo"/>
-		<search_combo_box label="Cerca" name="search_combo_box" tool_tip="Cerca">
-			<combo_editor label="Cerca [SECOND_LIFE]" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life.">
-		<label name="favorites_bar_label" tool_tip="Trascina qui i punti di riferimento per un accesso rapido ai tuoi posti preferiti in Second Life.">
-			Barra dei Preferiti
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="Mostra altri Preferiti"/>
-	</favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_people.xml b/indra/newview/skins/minimal/xui/it/panel_people.xml
deleted file mode 100644
index 81e886acf0d9a393466130d5d78d5b67994ec271..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Persone" name="people_panel">
-	<string name="no_recent_people" value="Nessuna persona recente. Stai cercando persone da frequentare? Prova il pulsante Destinazioni in basso."/>
-	<string name="no_filtered_recent_people" value="Nessuna persona recente con quel nome."/>
-	<string name="no_one_near" value="Nessuno vicino. Stai cercando persone da frequentare? Prova il pulsante Destinazioni in basso."/>
-	<string name="no_one_filtered_near" value="Nessuno vicino con quel nome."/>
-	<string name="no_friends_online" value="Nessun amico online"/>
-	<string name="no_friends" value="Nessun amico"/>
-	<string name="no_friends_msg">
-		Clicca con il pulsante destro su un Residente per aggiungerlo come amico.
-Stai cercando persone da frequentare? Prova il pulsante Destinazioni in basso.
-	</string>
-	<string name="no_filtered_friends_msg">
-		Non riesci a trovare quello che cerchi? Prova il pulsante Destinazioni in basso.
-	</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>
-		</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="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="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>
-	</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/minimal/xui/it/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/it/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 3c7874e0939c395168df1a3c6b2b343d069471da..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
-	<text name="sidetray_tab_title" value="Pannello laterale"/>
-	<button name="undock" tool_tip="Disàncora"/>
-	<button name="dock" tool_tip="Àncora"/>
-	<button name="show_help" tool_tip="Mostra Aiuto"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/it/panel_status_bar.xml b/indra/newview/skins/minimal/xui/it/panel_status_bar.xml
deleted file mode 100644
index cde495ba976fc0426132d39bc6f40d5af870e971..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/it/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
-	<panel.string name="packet_loss_tooltip">
-		Perdita di pacchetti
-	</panel.string>
-	<panel.string name="bandwidth_tooltip">
-		Larghezza di banda
-	</panel.string>
-	<panel.string name="time">
-		[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-	</panel.string>
-	<panel.string name="timeTooltip">
-		[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-	</panel.string>
-	<panel.string name="buycurrencylabel">
-		L$ [AMT]
-	</panel.string>
-	<combo_box name="mode_combo" tool_tip="Seleziona la modalità. Seleziona Di base per esplorare facilmente e rapidamente e per la chat. Seleziona Avanzata per accedere ad altre funzionalità.">
-		<combo_box.item label="Modalità di base" name="Basic"/>
-		<combo_box.item label="Modalità Avanzata" name="Advanced"/>
-	</combo_box>
-	<button name="media_toggle_btn" tool_tip="Attiva/ferma tutti i media (musica, video, pagine Web)"/>
-	<button name="volume_btn" tool_tip="Regolazione del volume globale"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/floater_camera.xml b/indra/newview/skins/minimal/xui/ja/floater_camera.xml
deleted file mode 100644
index 71a20c8e187f183eebce5ae1ef4783e67a9ef8b3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater">
-	<floater.string name="rotate_tooltip">
-		フォーカスを中心にカメラを回転
-	</floater.string>
-	<floater.string name="zoom_tooltip">
-		フォーカスに向けてカメラをズーム
-	</floater.string>
-	<floater.string name="move_tooltip">
-		カメラを上下左右に移動
-	</floater.string>
-	<floater.string name="camera_modes_title">
-		カメラモード
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		旋回 - ズーム - 水平・垂直移動
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		事前設定の視野
-	</floater.string>
-	<floater.string name="free_mode_title">
-		オブジェクトを見る
-	</floater.string>
-	<panel name="controls">
-		<panel name="preset_views_list">
-			<panel_camera_item name="front_view">
-				<panel_camera_item.text name="front_view_text">
-					前方視界
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="group_view">
-				<panel_camera_item.text name="side_view_text">
-					グループ視界
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="rear_view">
-				<panel_camera_item.text name="rear_view_text">
-					後方視界
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="camera_modes_list">
-			<panel_camera_item name="object_view">
-				<panel_camera_item.text name="object_view_text">
-					オブジェクト視点
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="mouselook_view">
-				<panel_camera_item.text name="mouselook_view_text">
-					一人称視点
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="zoom" tool_tip="向いている方法にカメラをズーム">
-			<joystick_rotate name="cam_rotate_stick" tool_tip="自分を軸にカメラを回す"/>
-			<slider_bar name="zoom_slider" tool_tip="向いている方向にカメラをズーム"/>
-			<joystick_track name="cam_track_stick" tool_tip="カメラを上下左右に動かします"/>
-		</panel>
-	</panel>
-	<panel name="buttons">
-		<button label="" name="presets_btn" tool_tip="事前設定の視野"/>
-		<button label="" name="pan_btn" tool_tip="旋回 - ズーム - 水平・垂直移動"/>
-		<button label="" name="avatarview_btn" tool_tip="カメラモード"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/floater_help_browser.xml b/indra/newview/skins/minimal/xui/ja/floater_help_browser.xml
deleted file mode 100644
index 1322343903b405019d6e1a6e663664717a54f57a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="ハウツー">
-	<floater.string name="loading_text">
-		ローディング...
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="external_controls"/>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/floater_media_browser.xml b/indra/newview/skins/minimal/xui/ja/floater_media_browser.xml
deleted file mode 100644
index 439c36dbe9bd9f03844154d4f2510b20205d241a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="メディアブラウザ">
-	<floater.string name="home_page_url">
-		http://jp.secondlife.com
-	</floater.string>
-	<floater.string name="support_page_url">
-		http://jp.secondlife.com/support
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button label="戻る" name="back"/>
-			<button label="前" name="forward"/>
-			<button label="æ›´æ–°" name="reload"/>
-			<button label="検索" name="go"/>
-		</layout_panel>
-		<layout_panel name="time_controls">
-			<button label="巻き戻し" name="rewind"/>
-			<button label="停止" name="stop"/>
-			<button label="早送り" name="seek"/>
-		</layout_panel>
-		<layout_panel name="parcel_owner_controls">
-			<button label="現在のページを区画に送る" name="assign"/>
-		</layout_panel>
-		<layout_panel name="external_controls">
-			<button label="Web ブラウザで開く" name="open_browser"/>
-			<check_box label="常に Web ブラウザで開く" name="open_always"/>
-			<button label="閉じる" name="close"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/ja/floater_nearby_chat.xml
deleted file mode 100644
index a29c6a063041966ad733fabfbe430c488ccdbc4c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="近くのチャット">
-	<check_box label="チャットを翻訳(Google翻訳)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/floater_web_content.xml b/indra/newview/skins/minimal/xui/ja/floater_web_content.xml
deleted file mode 100644
index 48fe8aee78db3aa169c6d6b9d078f20c15dedfce..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button name="back" tool_tip="前へ"/>
-			<button name="forward" tool_tip="次へ"/>
-			<button name="stop" tool_tip="ナビゲーションを停止"/>
-			<button name="reload" tool_tip="ページを更新"/>
-			<combo_box name="address" tool_tip="ここに URL を入力"/>
-			<icon name="media_secure_lock_flag" tool_tip="安全な閲覧"/>
-			<button name="popexternal" tool_tip="この URL をブラウザで開く"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/inspect_avatar.xml b/indra/newview/skins/minimal/xui/ja/inspect_avatar.xml
deleted file mode 100644
index 42b67cd3331ac56cf74488352c136433245573da..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/inspect_avatar.xml
+++ /dev/null
@@ -1,27 +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="inspect_avatar">
-	<string name="Subtitle">
-		[AGE]
-	</string>
-	<string name="Details">
-		[SL_PROFILE]
-	</string>
-	<text name="user_name_small" value="Grumpity ProductEngine with a long name"/>
-	<text name="user_slid" value="james.linden"/>
-	<text name="user_subtitle" value="11 Months, 3 days old"/>
-	<text name="user_details">
-		This is my second life description and I really think it is great.But for some reason my description is super extra long because I like to talk a whole lot
-	</text>
-	<slider name="volume_slider" tool_tip="ボイス音量" value="0.5"/>
-	<button label="フレンド登録" name="add_friend_btn"/>
-	<button label="IM" name="im_btn"/>
-	<button label="プロフィール" name="view_profile_btn"/>
-	<panel name="moderator_panel">
-		<button label="ボイスを無効" name="disable_voice"/>
-		<button label="ボイスを有効" name="enable_voice"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/inspect_object.xml b/indra/newview/skins/minimal/xui/ja/inspect_object.xml
deleted file mode 100644
index e6999ac9b15e26289d693dd37ca09e7e5dd19e58..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/inspect_object.xml
+++ /dev/null
@@ -1,48 +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="inspect_object">
-	<string name="Creator">
-		制作者: [CREATOR]
-	</string>
-	<string name="CreatorAndOwner">
-		[CREATOR]によるチェック
-[OWNER]によるチェック
-	</string>
-	<string name="Price">
-		L$[AMOUNT]
-	</string>
-	<string name="PriceFree">
-		無料です!
-	</string>
-	<string name="Touch">
-		触る
-	</string>
-	<string name="Sit">
-		座る
-	</string>
-	<text name="object_name" value="二行にわたる長いオブジェクト名をテスト"/>
-	<text name="object_creator">
-		by secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about
-	</text>
-	<text name="price_text">
-		L$30,000
-	</text>
-	<text name="object_description">
-		This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
-	</text>
-	<text name="object_media_url">
-		http://www.superdupertest.com
-	</text>
-	<button label="買う" name="buy_btn"/>
-	<button label="支払う" name="pay_btn"/>
-	<button label="コピーを取る" name="take_free_copy_btn"/>
-	<button label="触る" name="touch_btn"/>
-	<button label="座る" name="sit_btn"/>
-	<button label="開く" name="open_btn"/>
-	<icon name="secure_browsing" tool_tip="安全な閲覧"/>
-	<button label="詳細" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_add_wearable_gear.xml
deleted file mode 100644
index 982a03c6a8f57b4700bbf8609070023de4e29724..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
-	<menu_item_check label="新しい順に並べ替え" name="sort_by_most_recent"/>
-	<menu_item_check label="名前で並べ替え" name="sort_by_name"/>
-	<menu_item_check label="タイプによる並べ替え" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/ja/menu_attachment_other.xml
deleted file mode 100644
index 5adf0b3745f599a1190df59ede3440e44e76a505..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="プロフィールの表示" name="Profile..."/>
-	<menu_item_call label="フレンド登録" name="Add Friend"/>
-	<menu_item_call label="IM" name="Send IM..."/>
-	<menu_item_call label="コール" name="Call"/>
-	<menu_item_call label="グループに招待" name="Invite..."/>
-	<menu_item_call label="ブロック" name="Avatar Mute"/>
-	<menu_item_call label="報告" name="abuse"/>
-	<menu_item_call label="フリーズ" name="Freeze..."/>
-	<menu_item_call label="追放" name="Eject..."/>
-	<menu_item_call label="テクスチャのデバッグ" name="Debug..."/>
-	<menu_item_call label="ズームイン" name="Zoom In"/>
-	<menu_item_call label="支払う" name="Pay..."/>
-	<menu_item_call label="オブジェクトのプロフィール" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/ja/menu_attachment_self.xml
deleted file mode 100644
index 830ddc9f6363743770e05473bc8d164fadff4e10..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
-	<menu_item_call label="タッチ" name="Attachment Object Touch"/>
-	<menu_item_call label="編集" name="Edit..."/>
-	<menu_item_call label="取り外す" name="Detach"/>
-	<menu_item_call label="座る" name="Sit Down Here"/>
-	<menu_item_call label="立ち上がる" name="Stand Up"/>
-	<menu_item_call label="容姿" name="Change Outfit"/>
-	<menu_item_call label="アウトフィットの編集" name="Edit Outfit"/>
-	<menu_item_call label="シェイプの編集" name="Edit My Shape"/>
-	<menu_item_call label="フレンド" name="Friends..."/>
-	<menu_item_call label="グループ" name="Groups..."/>
-	<menu_item_call label="プロフィール" name="Profile..."/>
-	<menu_item_call label="テクスチャのデバッグ" name="Debug..."/>
-	<menu_item_call label="下に落とす" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/ja/menu_avatar_icon.xml
deleted file mode 100644
index b04f602134df0f2782fc639b067a3a9da4e96f66..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
-	<menu_item_call label="プロフィールの表示" name="Show Profile"/>
-	<menu_item_call label="IMを送信..." name="Send IM"/>
-	<menu_item_call label="フレンドを追加..." name="Add Friend"/>
-	<menu_item_call label="フレンドを削除..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/ja/menu_avatar_other.xml
deleted file mode 100644
index 54dd96f5effd7c8d9e3f9bdf3d86384c30574c06..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="プロフィールの表示" name="Profile..."/>
-	<menu_item_call label="フレンド登録" name="Add Friend"/>
-	<menu_item_call label="IM" name="Send IM..."/>
-	<menu_item_call label="コール" name="Call"/>
-	<menu_item_call label="グループに招待" name="Invite..."/>
-	<menu_item_call label="ブロック" name="Avatar Mute"/>
-	<menu_item_call label="報告" name="abuse"/>
-	<menu_item_call label="フリーズ" name="Freeze..."/>
-	<menu_item_call label="追放" name="Eject..."/>
-	<menu_item_call label="テクスチャのデバッグ" name="Debug..."/>
-	<menu_item_call label="ズームイン" name="Zoom In"/>
-	<menu_item_call label="支払う" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/ja/menu_avatar_self.xml
deleted file mode 100644
index 4709522665b02c0def972e959bcd16c7983423d1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_avatar_self.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
-	<menu_item_call label="座る" name="Sit Down Here"/>
-	<menu_item_call label="立ち上がる" name="Stand Up"/>
-	<context_menu label="取り外す" name="Take Off &gt;">
-		<context_menu label="衣類" name="Clothes &gt;">
-			<menu_item_call label="シャツ" name="Shirt"/>
-			<menu_item_call label="パンツ" name="Pants"/>
-			<menu_item_call label="スカート" name="Skirt"/>
-			<menu_item_call label="靴" name="Shoes"/>
-			<menu_item_call label="靴下" name="Socks"/>
-			<menu_item_call label="ジャケット" name="Jacket"/>
-			<menu_item_call label="手袋" name="Gloves"/>
-			<menu_item_call label="下着シャツ" name="Self Undershirt"/>
-			<menu_item_call label="下着パンツ" name="Self Underpants"/>
-			<menu_item_call label="タトゥ" name="Self Tattoo"/>
-			<menu_item_call label="物理作用" name="Self Physics"/>
-			<menu_item_call label="アルファ" name="Self Alpha"/>
-			<menu_item_call label="すべての衣類" name="All Clothes"/>
-		</context_menu>
-		<context_menu label="HUD" name="Object Detach HUD"/>
-		<context_menu label="取り外す" name="Object Detach"/>
-		<menu_item_call label="すべて取り外す" name="Detach All"/>
-	</context_menu>
-	<menu_item_call label="容姿" name="Chenge Outfit"/>
-	<menu_item_call label="アウトフィットを編集" name="Edit Outfit"/>
-	<menu_item_call label="シェイプを編集" name="Edit My Shape"/>
-	<menu_item_call label="フレンド" name="Friends..."/>
-	<menu_item_call label="グループ" name="Groups..."/>
-	<menu_item_call label="プロフィール" name="Profile..."/>
-	<menu_item_call label="テクスチャのデバッグ" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/ja/menu_bottomtray.xml
deleted file mode 100644
index 7f106c1ab52cf709725904157e9db88bf1b0b7cc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
-	<menu_item_check label="スピーカーボタン" name="EnableVoiceChat"/>
-	<menu_item_check label="ジェスチャーボタン" name="ShowGestureButton"/>
-	<menu_item_check label="移動ボタン" name="ShowMoveButton"/>
-	<menu_item_check label="視界ボタン" name="ShowCameraButton"/>
-	<menu_item_check label="スナップショットボタン" name="ShowSnapshotButton"/>
-	<menu_item_check label="制作ボタン" name="ShowBuildButton"/>
-	<menu_item_check label="検索ボタン" name="ShowSearchButton"/>
-	<menu_item_check label="地図ボタン" name="ShowWorldMapButton"/>
-	<menu_item_check label="ミニマップボタン" name="ShowMiniMapButton"/>
-	<menu_item_call label="切り取り" name="NearbyChatBar_Cut"/>
-	<menu_item_call label="コピー" name="NearbyChatBar_Copy"/>
-	<menu_item_call label="貼り付け" name="NearbyChatBar_Paste"/>
-	<menu_item_call label="削除" name="NearbyChatBar_Delete"/>
-	<menu_item_call label="すべて選択" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_attachment.xml
deleted file mode 100644
index e786d02e40a7a7a4a3ef3fade6763d70c53e9d6c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
-	<menu_item_call label="取り外す" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_body_part.xml
deleted file mode 100644
index eb5faa2545312afd66605acabaa73eee5827e275..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
-	<menu_item_call label="交換" name="replace"/>
-	<menu_item_call label="編集" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_clothing.xml
deleted file mode 100644
index d984342896e42020f5eb0b4d339bdda699fd464a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
-	<menu_item_call label="取り外す" name="take_off"/>
-	<menu_item_call label="編集" name="edit"/>
-	<menu_item_call label="交換" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_cof_gear.xml
deleted file mode 100644
index a071abbd2e8fdbd8cf4a672309d66e25882154b5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
-	<menu label="衣類" name="COF.Gear.New_Clothes"/>
-	<menu label="新しい身体部位" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_edit.xml b/indra/newview/skins/minimal/xui/ja/menu_edit.xml
deleted file mode 100644
index c2ef0179b235161601e6c48baecd6afa19b03bb5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="編集" name="Edit">
-	<menu_item_call label="元に戻す" name="Undo"/>
-	<menu_item_call label="やり直し" name="Redo"/>
-	<menu_item_call label="切り取り" name="Cut"/>
-	<menu_item_call label="コピー" name="Copy"/>
-	<menu_item_call label="貼り付け" name="Paste"/>
-	<menu_item_call label="削除" name="Delete"/>
-	<menu_item_call label="複製" name="Duplicate"/>
-	<menu_item_call label="すべて選択" name="Select All"/>
-	<menu_item_call label="選択解除" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_favorites.xml b/indra/newview/skins/minimal/xui/ja/menu_favorites.xml
deleted file mode 100644
index 4708b1446c7e7a544d2fdcf7255c58b067b76dab..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="テレポート" name="Teleport To Landmark"/>
-	<menu_item_call label="ランドマークを表示・編集" name="Landmark Open"/>
-	<menu_item_call label="SLurl をコピー" name="Copy slurl"/>
-	<menu_item_call label="地図に表示" name="Show On Map"/>
-	<menu_item_call label="コピー" name="Landmark Copy"/>
-	<menu_item_call label="貼り付け" name="Landmark Paste"/>
-	<menu_item_call label="削除" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_gesture_gear.xml
deleted file mode 100644
index abf490a2479b21bbf8a60f6048b955008f620da0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
-	<menu_item_call label="お気に入りからの追加・削除" name="activate"/>
-	<menu_item_call label="コピー" name="copy_gesture"/>
-	<menu_item_call label="貼り付け" name="paste"/>
-	<menu_item_call label="UUID をコピー" name="copy_uuid"/>
-	<menu_item_call label="現在のアウトフィットに保存" name="save_to_outfit"/>
-	<menu_item_call label="編集" name="edit_gesture"/>
-	<menu_item_call label="調べる" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_group_plus.xml b/indra/newview/skins/minimal/xui/ja/menu_group_plus.xml
deleted file mode 100644
index 3787f7d64506c3bc4020c0d0070b22f73a7ebf2d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_call label="グループに参加..." name="item_join"/>
-	<menu_item_call label="新しいグループ..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/ja/menu_hide_navbar.xml
deleted file mode 100644
index 3a1ae49700a752469433387ff02d4864afd691e0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
-	<menu_item_check label="ナビゲーションバーを表示" name="ShowNavbarNavigationPanel"/>
-	<menu_item_check label="お気に入りバーを表示" name="ShowNavbarFavoritesPanel"/>
-	<menu_item_check label="「場所」のミニフィールドを表示" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/ja/menu_im_well_button.xml
deleted file mode 100644
index 3397004bd70479547bd3acfabcbe7b30a55bfabc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/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/minimal/xui/ja/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/ja/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 8cd6fa4a27ddf6ac821b1367c8c0a9e97c77ebe8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
-	<menu_item_call label="セッション終了" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/ja/menu_imchiclet_group.xml
deleted file mode 100644
index 5bcb96f083799f22922799e24b7a122d6f0f7742..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
-	<menu_item_call label="グループ情報" name="Show Profile"/>
-	<menu_item_call label="セッションを表示" name="Chat"/>
-	<menu_item_call label="セッション終了" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/ja/menu_imchiclet_p2p.xml
deleted file mode 100644
index 5453f998fa084fb7fe591bac34989960738cae39..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
-	<menu_item_call label="プロフィールの表示" name="Show Profile"/>
-	<menu_item_call label="フレンド登録" name="Add Friend"/>
-	<menu_item_call label="セッションを表示" name="Send IM"/>
-	<menu_item_call label="セッション終了" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 9d0d0f10a63633cc264dd376696cc408685d1875..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
-	<menu_item_call label="プロフィールの表示" name="view_profile"/>
-	<menu_item_call label="フレンド登録" name="add_friend"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="コール" name="call"/>
-	<menu_item_call label="テレポート" name="teleport"/>
-	<menu_item_call label="グループに招待" name="invite_to_group"/>
-	<menu_item_call label="ブロック" name="block"/>
-	<menu_item_call label="ブロック解除" name="unblock"/>
-	<menu_item_call label="報告" name="report"/>
-	<menu_item_call label="フリーズ" name="freeze"/>
-	<menu_item_call label="追放" name="eject"/>
-	<menu_item_call label="追放" name="kick"/>
-	<menu_item_call label="CSR" name="csr"/>
-	<menu_item_call label="テクスチャのデバッグ" name="debug"/>
-	<menu_item_call label="地図で探す" name="find_on_map"/>
-	<menu_item_call label="ズームイン" name="zoom_in"/>
-	<menu_item_call label="支払う" name="pay"/>
-	<menu_item_call label="共有" name="share"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_inspect_object_gear.xml
deleted file mode 100644
index 2edade70bfc1b17d1b8fd6ec03ff4cc59549abcd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
-	<menu_item_call label="触る" name="touch"/>
-	<menu_item_call label="座る" name="sit"/>
-	<menu_item_call label="支払う" name="pay"/>
-	<menu_item_call label="買う" name="buy"/>
-	<menu_item_call label="取る" name="take"/>
-	<menu_item_call label="コピーを取る" name="take_copy"/>
-	<menu_item_call label="開く" name="open"/>
-	<menu_item_call label="編集" name="edit"/>
-	<menu_item_call label="装着" name="wear"/>
-	<menu_item_call label="追加" name="add"/>
-	<menu_item_call label="報告" name="report"/>
-	<menu_item_call label="ブロック" name="block"/>
-	<menu_item_call label="ズームイン" name="zoom_in"/>
-	<menu_item_call label="削除" name="remove"/>
-	<menu_item_call label="詳細" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_inspect_self_gear.xml
deleted file mode 100644
index e3e206f3aa56a758665f1499c36b1c1e6af51441..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
-	<menu_item_call label="座る" name="Sit Down Here"/>
-	<menu_item_call label="立ち上がる" name="Stand Up"/>
-	<context_menu label="取り外す" name="Take Off &gt;">
-		<context_menu label="衣類" name="Clothes &gt;">
-			<menu_item_call label="シャツ" name="Shirt"/>
-			<menu_item_call label="パンツ" name="Pants"/>
-			<menu_item_call label="スカート" name="Skirt"/>
-			<menu_item_call label="靴" name="Shoes"/>
-			<menu_item_call label="靴下" name="Socks"/>
-			<menu_item_call label="ジャケット" name="Jacket"/>
-			<menu_item_call label="手袋" name="Gloves"/>
-			<menu_item_call label="下着シャツ" name="Self Undershirt"/>
-			<menu_item_call label="下着パンツ" name="Self Underpants"/>
-			<menu_item_call label="タトゥ" name="Self Tattoo"/>
-			<menu_item_call label="アルファ" name="Self Alpha"/>
-			<menu_item_call label="すべての衣類" name="All Clothes"/>
-		</context_menu>
-		<context_menu label="HUD" name="Object Detach HUD"/>
-		<context_menu label="取り外す" name="Object Detach"/>
-		<menu_item_call label="すべて取り外す" name="Detach All"/>
-	</context_menu>
-	<menu_item_call label="アウトフィットの変更" name="Chenge Outfit"/>
-	<menu_item_call label="アウトフィットの編集" name="Edit Outfit"/>
-	<menu_item_call label="シェイプの編集" name="Edit My Shape"/>
-	<menu_item_call label="フレンド" name="Friends..."/>
-	<menu_item_call label="グループ" name="Groups..."/>
-	<menu_item_call label="プロフィール" name="Profile..."/>
-	<menu_item_call label="テクスチャのデバッグ" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/ja/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 9a4a8138f51c815de7f5d36117dec7b5c4e309a5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
-	<menu_item_call label="閉じる" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inventory.xml b/indra/newview/skins/minimal/xui/ja/menu_inventory.xml
deleted file mode 100644
index f78ec09e5e03c373f02de8e3535affe3ea0bceb6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inventory.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="共有" name="Share"/>
-	<menu_item_call label="購入" name="Task Buy"/>
-	<menu_item_call label="開く" name="Task Open"/>
-	<menu_item_call label="再生" name="Task Play"/>
-	<menu_item_call label="プロパティ" name="Task Properties"/>
-	<menu_item_call label="名前の変更" name="Task Rename"/>
-	<menu_item_call label="削除" name="Task Remove"/>
-	<menu_item_call label="ごみ箱を空にする" name="Empty Trash"/>
-	<menu_item_call label="紛失物フォルダを空にする" name="Empty Lost And Found"/>
-	<menu_item_call label="新しいフォルダ" name="New Folder"/>
-	<menu_item_call label="新しいスクリプト" name="New Script"/>
-	<menu_item_call label="新しいノートカード" name="New Note"/>
-	<menu_item_call label="新しいジェスチャー" name="New Gesture"/>
-	<menu label="新しい衣類" name="New Clothes">
-		<menu_item_call label="新しいシャツ" name="New Shirt"/>
-		<menu_item_call label="新しいズボン" name="New Pants"/>
-		<menu_item_call label="新しい靴" name="New Shoes"/>
-		<menu_item_call label="新しい靴下" name="New Socks"/>
-		<menu_item_call label="新しいジャケット" name="New Jacket"/>
-		<menu_item_call label="新しいスカート" name="New Skirt"/>
-		<menu_item_call label="新しい手袋" name="New Gloves"/>
-		<menu_item_call label="新しい下着" name="New Undershirt"/>
-		<menu_item_call label="新しいパンツ" name="New Underpants"/>
-		<menu_item_call label="新しいアルファマスク" name="New Alpha Mask"/>
-		<menu_item_call label="新しいタトゥ" name="New Tattoo"/>
-		<menu_item_call label="新規の物理作用" name="New Physics"/>
-	</menu>
-	<menu label="新しい身体部位" name="New Body Parts">
-		<menu_item_call label="新しいシェイプ(体型)" name="New Shape"/>
-		<menu_item_call label="新しいスキン" name="New Skin"/>
-		<menu_item_call label="新しい髪" name="New Hair"/>
-		<menu_item_call label="新しい眼" name="New Eyes"/>
-	</menu>
-	<menu label="種類を変更" name="Change Type">
-		<menu_item_call label="デフォルト" name="Default"/>
-		<menu_item_call label="手袋" name="Gloves"/>
-		<menu_item_call label="ジャケット" name="Jacket"/>
-		<menu_item_call label="パンツ" name="Pants"/>
-		<menu_item_call label="シェイプ" name="Shape"/>
-		<menu_item_call label="靴" name="Shoes"/>
-		<menu_item_call label="シャツ" name="Shirt"/>
-		<menu_item_call label="スカート" name="Skirt"/>
-		<menu_item_call label="下着パンツ" name="Underpants"/>
-		<menu_item_call label="下着シャツ" name="Undershirt"/>
-	</menu>
-	<menu_item_call label="テレポート" name="Landmark Open"/>
-	<menu_item_call label="開く" name="Animation Open"/>
-	<menu_item_call label="開く" name="Sound Open"/>
-	<menu_item_call label="着用中のアウトフィットを入れ替える" name="Replace Outfit"/>
-	<menu_item_call label="着用中のアウトフィットに追加する" name="Add To Outfit"/>
-	<menu_item_call label="着用中のアウトフィットから取り除く" name="Remove From Outfit"/>
-	<menu_item_call label="オリジナルを探す" name="Find Original"/>
-	<menu_item_call label="アイテムを除外する" name="Purge Item"/>
-	<menu_item_call label="アイテムを復元する" name="Restore Item"/>
-	<menu_item_call label="開く" name="Open"/>
-	<menu_item_call label="オリジナルを開きます" name="Open Original"/>
-	<menu_item_call label="プロパティ" name="Properties"/>
-	<menu_item_call label="名前を変更する" name="Rename"/>
-	<menu_item_call label="UUID をコピーする" name="Copy Asset UUID"/>
-	<menu_item_call label="コピー" name="Copy"/>
-	<menu_item_call label="貼り付け" name="Paste"/>
-	<menu_item_call label="リンクを貼り付ける" name="Paste As Link"/>
-	<menu_item_call label="削除" name="Remove Link"/>
-	<menu_item_call label="削除" name="Delete"/>
-	<menu_item_call label="システムフォルダを削除する" name="Delete System Folder"/>
-	<menu_item_call label="コンファレンスチャットを開始する" name="Conference Chat Folder"/>
-	<menu_item_call label="再生する" name="Sound Play"/>
-	<menu_item_call label="ランドマークの情報" name="About Landmark"/>
-	<menu_item_call label="インワールドで再生する" name="Animation Play"/>
-	<menu_item_call label="ローカルで再生する" name="Animation Audition"/>
-	<menu_item_call label="インスタントメッセージを送信する" name="Send Instant Message"/>
-	<menu_item_call label="テレポートを送る..." name="Offer Teleport..."/>
-	<menu_item_call label="コンファレンスチャットを開始する" name="Conference Chat"/>
-	<menu_item_call label="アクティブ" name="Activate"/>
-	<menu_item_call label="非アクティブ" name="Deactivate"/>
-	<menu_item_call label="別名で保存する" name="Save As"/>
-	<menu_item_call label="自分から取り外す" name="Detach From Yourself"/>
-	<menu_item_call label="装着" name="Wearable And Object Wear"/>
-	<menu label="装着先" name="Attach To"/>
-	<menu label="HUD 装着先" name="Attach To HUD"/>
-	<menu_item_call label="編集" name="Wearable Edit"/>
-	<menu_item_call label="追加" name="Wearable Add"/>
-	<menu_item_call label="取り外す" name="Take Off"/>
-	<menu_item_call label="--オプションなし--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/ja/menu_inventory_add.xml
deleted file mode 100644
index 6c754e5d0874cdf9627379f2df4565fd723fef30..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inventory_add.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
-	<menu label="アップロード" name="upload">
-		<menu_item_call label="画像 (L$ [COST] )..." name="Upload Image"/>
-		<menu_item_call label="サウンド (L$[COST] )..." name="Upload Sound"/>
-		<menu_item_call label="アニメーション (L$ [COST] )..." name="Upload Animation"/>
-		<menu_item_call label="一括 (ファイルにつき L$[COST] )..." name="Bulk Upload"/>
-		<menu_item_call label="デフォルトのアップロード権限を設定" name="perm prefs"/>
-	</menu>
-	<menu_item_call label="新規フォルダ" name="New Folder"/>
-	<menu_item_call label="新規スクリプト" name="New Script"/>
-	<menu_item_call label="新しいノートカード" name="New Note"/>
-	<menu_item_call label="新規ジェスチャー" name="New Gesture"/>
-	<menu label="新しい衣類" name="New Clothes">
-		<menu_item_call label="新しいシャツ" name="New Shirt"/>
-		<menu_item_call label="新しいパンツ" name="New Pants"/>
-		<menu_item_call label="新しい靴" name="New Shoes"/>
-		<menu_item_call label="新しい靴下" name="New Socks"/>
-		<menu_item_call label="新しいジャケット" name="New Jacket"/>
-		<menu_item_call label="新しいスカート" name="New Skirt"/>
-		<menu_item_call label="新しい手袋" name="New Gloves"/>
-		<menu_item_call label="新しい下着(上)" name="New Undershirt"/>
-		<menu_item_call label="新しい下着(下)" name="New Underpants"/>
-		<menu_item_call label="新しいアルファ" name="New Alpha"/>
-		<menu_item_call label="新しいタトゥー" name="New Tattoo"/>
-		<menu_item_call label="新規の物理作用" name="New Physics"/>
-	</menu>
-	<menu label="新しい身体部位" name="New Body Parts">
-		<menu_item_call label="新しいシェイプ(体型)" name="New Shape"/>
-		<menu_item_call label="新しいスキン" name="New Skin"/>
-		<menu_item_call label="新しい髪" name="New Hair"/>
-		<menu_item_call label="新しい目" name="New Eyes"/>
-	</menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/ja/menu_inventory_gear_default.xml
deleted file mode 100644
index 1f425df83c0fa87d7430c7f9b7aa2c15bad19556..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
-	<menu_item_call label="新しい持ち物ウィンドウ" name="new_window"/>
-	<menu_item_check label="名前で並べ替え" name="sort_by_name"/>
-	<menu_item_check label="新しい順に並べ替え" name="sort_by_recent"/>
-	<menu_item_check label="フォルダを常に名前順に並べる" name="sort_folders_by_name"/>
-	<menu_item_check label="システムフォルダを上にソートする" name="sort_system_folders_to_top"/>
-	<menu_item_call label="フィルターを表示" name="show_filters"/>
-	<menu_item_call label="フィルターをリセット" name="reset_filters"/>
-	<menu_item_call label="すべてのフォルダを閉じる" name="close_folders"/>
-	<menu_item_call label="紛失物を空にする" name="empty_lostnfound"/>
-	<menu_item_call label="別名でテクスチャを保存" name="Save Texture As"/>
-	<menu_item_call label="共有" name="Share"/>
-	<menu_item_call label="オリジナルを表示" name="Find Original"/>
-	<menu_item_call label="すべてのリンクを表示" name="Find All Links"/>
-	<menu_item_call label="ごみ箱を空にする" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_land.xml b/indra/newview/skins/minimal/xui/ja/menu_land.xml
deleted file mode 100644
index 89c122f14fd9c013cec9a7e3f64228cd75e67b6e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
-	<menu_item_call label="土地情報" name="Place Information..."/>
-	<menu_item_call label="ここに座る" name="Sit Here"/>
-	<menu_item_call label="この土地を購入" name="Land Buy"/>
-	<menu_item_call label="入場許可を購入" name="Land Buy Pass"/>
-	<menu_item_call label="制作" name="Create"/>
-	<menu_item_call label="地形を編集" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_landmark.xml b/indra/newview/skins/minimal/xui/ja/menu_landmark.xml
deleted file mode 100644
index c134422955dacc48cfddd0cc1e1ace5aaa7ab496..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
-	<menu_item_call label="SLurl をコピー" name="copy"/>
-	<menu_item_call label="削除" name="delete"/>
-	<menu_item_call label="ピックを作成" name="pick"/>
-	<menu_item_call label="お気に入りバーに追加" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_login.xml b/indra/newview/skins/minimal/xui/ja/menu_login.xml
deleted file mode 100644
index 265f3ebcd0dc884d03bf3ba72fe46d168205f61b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_login.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
-	<menu label="ミー" name="File">
-		<menu_item_call label="環境設定" name="Preferences..."/>
-		<menu_item_call label="[APP_NAME] を終了" name="Quit"/>
-	</menu>
-	<menu label="ヘルプ" name="Help">
-		<menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/>
-		<menu_item_call label="[APP_NAME] について" name="About Second Life"/>
-	</menu>
-	<menu_item_check label="デバッグメニューを表示する" name="Show Debug Menu"/>
-	<menu label="デバッグ" name="Debug">
-		<menu_item_call label="デバッグ設定を表示" name="Debug Settings"/>
-		<menu_item_call label="UI/色の設定" name="UI/Color Settings"/>
-		<menu_item_call label="XUI プレビューツール" name="UI Preview Tool"/>
-		<menu label="UI テスト" name="UI Tests"/>
-		<menu_item_call label="ウィンドウのサイズを設定..." name="Set Window Size..."/>
-		<menu_item_call label="利用規約を表示" name="TOS"/>
-		<menu_item_call label="クリティカルメッセージを表示" name="Critical"/>
-		<menu_item_call label="メディアブラウザのテスト" name="Web Browser Test"/>
-		<menu_item_call label="Web コンテンツフローターのテスト" name="Web Content Floater Test"/>
-		<menu_item_check label="グリッドピッカーを表示する" name="Show Grid Picker"/>
-		<menu_item_call label="通知コンソールを表示する" name="Show Notifications Console"/>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_mini_map.xml b/indra/newview/skins/minimal/xui/ja/menu_mini_map.xml
deleted file mode 100644
index 2e733ee24b527cbb7ee0506a1ecb5c85544998a2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="ズーム(近)" name="Zoom Close"/>
-	<menu_item_call label="ズーム(中)" name="Zoom Medium"/>
-	<menu_item_call label="ズーム(遠)" name="Zoom Far"/>
-	<menu_item_call label="ズーム(デフォルト)" name="Zoom Default"/>
-	<menu_item_check label="地図を回転" name="Rotate Map"/>
-	<menu_item_check label="中央へ自動移動" name="Auto Center"/>
-	<menu_item_call label="追跡をやめる" name="Stop Tracking"/>
-	<menu_item_call label="世界地図" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_navbar.xml b/indra/newview/skins/minimal/xui/ja/menu_navbar.xml
deleted file mode 100644
index 9ae2e5819844f1ecdd57cb1b3961cf1490022ef2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
-	<menu_item_check label="座標を表示" name="Show Coordinates"/>
-	<menu_item_check label="区画のプロパティを表示" name="Show Parcel Properties"/>
-	<menu_item_call label="ランドマーク" name="Landmark"/>
-	<menu_item_call label="切り取り" name="Cut"/>
-	<menu_item_call label="コピー" name="Copy"/>
-	<menu_item_call label="貼り付け" name="Paste"/>
-	<menu_item_call label="削除" name="Delete"/>
-	<menu_item_call label="すべて選択" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/ja/menu_nearby_chat.xml
deleted file mode 100644
index c2e4a276861833ea626c0137ada1d6115592178f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
-	<menu_item_call label="近くの人を表示する..." name="nearby_people"/>
-	<menu_item_check label="ブロックされた文字を表示" name="muted_text"/>
-	<menu_item_check label="バディアイコンを表示" name="show_buddy_icons"/>
-	<menu_item_check label="名前を表示" name="show_names"/>
-	<menu_item_check label="アイコンと名前を表示" name="show_icons_and_names"/>
-	<menu_item_call label="文字の大きさ" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/ja/menu_notification_well_button.xml
deleted file mode 100644
index 913bae89586f31ada4a7e5d8f47b99009a17f5dd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
-	<menu_item_call label="すべて閉じる" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_object.xml b/indra/newview/skins/minimal/xui/ja/menu_object.xml
deleted file mode 100644
index 4cee8089ee54591348513bb9cabc5ec9c1fa0845..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
-	<menu_item_call label="触る" name="Object Touch">
-		<menu_item_call.on_enable name="EnableTouch" parameter="触る"/>
-	</menu_item_call>
-	<menu_item_call label="編集" name="Edit..."/>
-	<menu_item_call label="制作" name="Build"/>
-	<menu_item_call label="開く" name="Open"/>
-	<menu_item_call label="ここに座る" name="Object Sit"/>
-	<menu_item_call label="立ち上がる" name="Object Stand Up"/>
-	<menu_item_call label="オブジェクトのプロフィール" name="Object Inspect"/>
-	<menu_item_call label="ズームイン" name="Zoom In"/>
-	<context_menu label="装着" name="Put On">
-		<menu_item_call label="装着" name="Wear"/>
-		<menu_item_call label="追加" name="Add"/>
-		<context_menu label="取り付ける" name="Object Attach"/>
-		<context_menu label="HUD を取り付ける" name="Object Attach HUD"/>
-	</context_menu>
-	<context_menu label="管理" name="Remove">
-		<menu_item_call label="嫌がらせの報告" name="Report Abuse..."/>
-		<menu_item_call label="ブロック" name="Object Mute"/>
-		<menu_item_call label="返却" name="Return..."/>
-	</context_menu>
-	<menu_item_call label="取る" name="Pie Object Take"/>
-	<menu_item_call label="コピーを取る" name="Take Copy"/>
-	<menu_item_call label="支払う" name="Pay..."/>
-	<menu_item_call label="買う" name="Buy..."/>
-	<menu_item_call label="削除" name="Delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_object_icon.xml b/indra/newview/skins/minimal/xui/ja/menu_object_icon.xml
deleted file mode 100644
index 8c4f3286618cf912308c54e78fb1eb95d58aad86..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
-	<menu_item_call label="オブジェクトのプロフィール..." name="Object Profile"/>
-	<menu_item_call label="ブロック..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_outfit_gear.xml
deleted file mode 100644
index 2bcbe1915b407a7a3ed40ba153dfeb79681d2547..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_outfit_gear.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Outfit">
-	<menu_item_call label="着る - 着用中のアウトフィットを入れ替える" name="wear"/>
-	<menu_item_call label="着る - 着用中のアウトフィットに追加する" name="wear_add"/>
-	<menu_item_call label="取り外す - 着用中のアウトフィットから取り除く" name="take_off"/>
-	<menu label="衣類" name="New Clothes">
-		<menu_item_call label="シャツ" name="New Shirt"/>
-		<menu_item_call label="パンツ" name="New Pants"/>
-		<menu_item_call label="靴" name="New Shoes"/>
-		<menu_item_call label="靴下" name="New Socks"/>
-		<menu_item_call label="ジャケット" name="New Jacket"/>
-		<menu_item_call label="スカート" name="New Skirt"/>
-		<menu_item_call label="手袋" name="New Gloves"/>
-		<menu_item_call label="下着(上)" name="New Undershirt"/>
-		<menu_item_call label="下着(下)" name="New Underpants"/>
-		<menu_item_call label="アルファ" name="New Alpha"/>
-		<menu_item_call label="新規の物理作用" name="New Physics"/>
-		<menu_item_call label="新しいタトゥ" name="New Tattoo"/>
-	</menu>
-	<menu label="新しい身体部位" name="New Body Parts">
-		<menu_item_call label="新しいシェイプ" name="New Shape"/>
-		<menu_item_call label="スキン" name="New Skin"/>
-		<menu_item_call label="髪" name="New Hair"/>
-		<menu_item_call label="ç›®" name="New Eyes"/>
-	</menu>
-	<menu_item_call label="アウトフィットの名前を変更する" name="rename"/>
-	<menu_item_call label="アウトフィットを削除する" name="delete_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/ja/menu_outfit_tab.xml
deleted file mode 100644
index 9491c22f31b32e0d215cb9bc095360fc11f01f7b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
-	<menu_item_call label="着る - 着用中のアウトフィットを入れ替える" name="wear_replace"/>
-	<menu_item_call label="着る - 着用中のアウトフィットに追加する" name="wear_add"/>
-	<menu_item_call label="取り外す - 着用中のアウトフィットから取り除く" name="take_off"/>
-	<menu_item_call label="アウトフィットの編集" name="edit"/>
-	<menu_item_call label="アウトフィットの名前を変更する" name="rename"/>
-	<menu_item_call label="アウトフィットを削除する" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_participant_list.xml b/indra/newview/skins/minimal/xui/ja/menu_participant_list.xml
deleted file mode 100644
index 64d8ded722bcfe1e942605dd5d30acc7c9bf0726..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
-	<menu_item_check label="名前で並べ替え" name="SortByName"/>
-	<menu_item_check label="最近の発言者で並べ替え" name="SortByRecentSpeakers"/>
-	<menu_item_call label="プロフィールの表示" name="View Profile"/>
-	<menu_item_call label="フレンド登録" name="Add 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_check label="人のアイコン表示" name="View Icons"/>
-	<menu_item_check label="ボイスをブロック" name="Block/Unblock"/>
-	<menu_item_check label="文字をブロック" name="MuteText"/>
-	<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>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_friends_view_sort.xml
deleted file mode 100644
index 76340e4d768fa73fff6268769559aa26651fcafc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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_call label="ブロックされた住人とオブジェクトを表示" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_groups.xml b/indra/newview/skins/minimal/xui/ja/menu_people_groups.xml
deleted file mode 100644
index 842d79dc4be740ae9d793af4da67d0c3a1ff8217..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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="Activate"/>
-	<menu_item_call label="脱退" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_groups_view_sort.xml
deleted file mode 100644
index bfc7d1501766d502a3b213e0066db00d8acc7794..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="グループアイコンを表示" name="Display Group Icons"/>
-	<menu_item_call label="選択したグループから脱退" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/ja/menu_people_nearby.xml
deleted file mode 100644
index 8d84b0e521cec30169201f568b706128cae0e352..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?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"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/ja/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 3f20e5d3ab12aa5a017affa84bf65cf66040a7a5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?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"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_nearby_view_sort.xml
deleted file mode 100644
index a31480158a86ec7226e65438bff1c7ed6b4ce86e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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_call label="ブロックされた住人とオブジェクトを表示" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/ja/menu_people_recent_view_sort.xml
deleted file mode 100644
index b4f177a0688edb2f08a41b7aeccec68e6c78bab9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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"/>
-	<menu_item_call label="ブロックされた住人とオブジェクトを表示" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_picks.xml b/indra/newview/skins/minimal/xui/ja/menu_picks.xml
deleted file mode 100644
index 011d3d25268161081f484d4af0764b18ff23dc23..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
-	<menu_item_call label="情報" name="pick_info"/>
-	<menu_item_call label="編集" name="pick_edit"/>
-	<menu_item_call label="テレポート" name="pick_teleport"/>
-	<menu_item_call label="地図" name="pick_map"/>
-	<menu_item_call label="削除" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/ja/menu_picks_plus.xml
deleted file mode 100644
index 84bf90fea057d33bce29539961d5f3e06ab5b7d1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
-	<menu_item_call label="新しいピック" name="create_pick"/>
-	<menu_item_call label="新しいクラシファイド広告" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_place.xml b/indra/newview/skins/minimal/xui/ja/menu_place.xml
deleted file mode 100644
index a9f05e126d154d4ab1676a1b0b2e119ec14ae9cc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
-	<menu_item_call label="ランドマークを作成" name="landmark"/>
-	<menu_item_call label="ピックを作成" name="pick"/>
-	<menu_item_call label="入場許可を購入" name="pass"/>
-	<menu_item_call label="編集" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/ja/menu_place_add_button.xml
deleted file mode 100644
index d5ce88b05570a8d950127a3d71df36923772144b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
-	<menu_item_call label="フォルダを追加" name="add_folder"/>
-	<menu_item_call label="ランドマークを追加" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/ja/menu_places_gear_folder.xml
deleted file mode 100644
index e64f97fda54be3bdd3566b9ba942ad026705c52c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_folder_gear">
-	<menu_item_call label="ランドマークを追加" name="add_landmark"/>
-	<menu_item_call label="フォルダを追加" name="add_folder"/>
-	<menu_item_call label="商品を復元" name="restore_item"/>
-	<menu_item_call label="切り取り" name="cut"/>
-	<menu_item_call label="コピー" name="copy_folder"/>
-	<menu_item_call label="貼り付け" name="paste"/>
-	<menu_item_call label="名前の変更" name="rename"/>
-	<menu_item_call label="削除" name="delete"/>
-	<menu_item_call label="拡大" name="expand"/>
-	<menu_item_call label="戻す" name="collapse"/>
-	<menu_item_call label="フォルダをすべて開く" name="expand_all"/>
-	<menu_item_call label="フォルダをすべて閉じる" name="collapse_all"/>
-	<menu_item_check label="日付で並べ替え" name="sort_by_date"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/ja/menu_places_gear_landmark.xml
deleted file mode 100644
index f416b5b1f66a653572a7cddd124eb357c378aff9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_ladmark_gear">
-	<menu_item_call label="テレポート" name="teleport"/>
-	<menu_item_call label="もっと詳しく" name="more_info"/>
-	<menu_item_call label="地図に表示" name="show_on_map"/>
-	<menu_item_call label="ランドマークを追加" name="add_landmark"/>
-	<menu_item_call label="フォルダを追加" name="add_folder"/>
-	<menu_item_call label="商品を復元" name="restore_item"/>
-	<menu_item_call label="切り取り" name="cut"/>
-	<menu_item_call label="ランドマークをコピー" name="copy_landmark"/>
-	<menu_item_call label="SLurl をコピー" name="copy_slurl"/>
-	<menu_item_call label="貼り付け" name="paste"/>
-	<menu_item_call label="名前の変更" name="rename"/>
-	<menu_item_call label="削除" name="delete"/>
-	<menu_item_call label="フォルダをすべて開く" name="expand_all"/>
-	<menu_item_call label="フォルダをすべて閉じる" name="collapse_all"/>
-	<menu_item_check label="日付で並べ替え" name="sort_by_date"/>
-	<menu_item_call label="ピックを作成" name="create_pick"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/ja/menu_profile_overflow.xml
deleted file mode 100644
index 9d3a5dda1c7436b29e67975587b3f969e113c5c5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
-	<menu_item_call label="地図" name="show_on_map"/>
-	<menu_item_call label="支払う" name="pay"/>
-	<menu_item_call label="共有" name="share"/>
-	<menu_item_call label="ブロック" name="block"/>
-	<menu_item_call label="ブロック解除" name="unblock"/>
-	<menu_item_call label="追放" name="kick"/>
-	<menu_item_call label="フリーズ" name="freeze"/>
-	<menu_item_call label="フリーズ解除" name="unfreeze"/>
-	<menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/ja/menu_save_outfit.xml
deleted file mode 100644
index 6513d9264a43401ec9ab6c4c7ba754e634e68027..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
-	<menu_item_call label="保存" name="save_outfit"/>
-	<menu_item_call label="別名で保存" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/ja/menu_script_chiclet.xml
deleted file mode 100644
index a89dd0bcbe5ea59a448aef82571360b65950cd6f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
-	<menu_item_call label="閉じる" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_slurl.xml b/indra/newview/skins/minimal/xui/ja/menu_slurl.xml
deleted file mode 100644
index 61ba3085d9e7c627aff448345a27e7f642887078..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="URL について" name="about_url"/>
-	<menu_item_call label="URL にテレポートする" name="teleport_to_url"/>
-	<menu_item_call label="地図" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_teleport_history_gear.xml
deleted file mode 100644
index 901eab91661a7d81a7ed1e93f536eaf035852376..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
-	<menu_item_call label="フォルダをすべて開く" name="Expand all folders"/>
-	<menu_item_call label="フォルダをすべて閉じる" name="Collapse all folders"/>
-	<menu_item_call label="テレポートの履歴をクリア" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/ja/menu_teleport_history_item.xml
deleted file mode 100644
index 66bc32214fa406a4fb3401ec9c5e4fb0270b5e9c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="テレポート" name="Teleport"/>
-	<menu_item_call label="もっと詳しく" name="More Information"/>
-	<menu_item_call label="クリップボードにコピー" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/ja/menu_teleport_history_tab.xml
deleted file mode 100644
index 4dd44d2ec8494f5f04c234493fff61e9db243b4d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="開く" name="TabOpen"/>
-	<menu_item_call label="閉じる" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_text_editor.xml b/indra/newview/skins/minimal/xui/ja/menu_text_editor.xml
deleted file mode 100644
index fcb1038a6a57c063c46f0f069dc80c407ca5c73b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
-	<menu_item_call label="切り取り" name="Cut"/>
-	<menu_item_call label="コピー" name="Copy"/>
-	<menu_item_call label="貼り付け" name="Paste"/>
-	<menu_item_call label="削除" name="Delete"/>
-	<menu_item_call label="すべて選択" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/ja/menu_topinfobar.xml
deleted file mode 100644
index 1a67a2a8f7ba09d78af8dfab4462af250867ff04..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
-	<menu_item_check label="座標を表示" name="Show Coordinates"/>
-	<menu_item_check label="区画のプロパティを表示" name="Show Parcel Properties"/>
-	<menu_item_call label="ランドマーク" name="Landmark"/>
-	<menu_item_call label="コピー" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_agent.xml b/indra/newview/skins/minimal/xui/ja/menu_url_agent.xml
deleted file mode 100644
index 92d118a5aec734538e720cc647c854b83ea4ad17..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?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="url_copy_label"/>
-	<menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_group.xml b/indra/newview/skins/minimal/xui/ja/menu_url_group.xml
deleted file mode 100644
index 1dd3d794389d49eb6f48b66601ddb7bcb4a15853..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="グループ情報を表示" name="show_group"/>
-	<menu_item_call label="グループをクリップボードにコピー" name="url_copy_label"/>
-	<menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_http.xml b/indra/newview/skins/minimal/xui/ja/menu_url_http.xml
deleted file mode 100644
index c3da8a8686c505ac9bfe0122f8f96b36c0cac406..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Web ページを開く" name="url_open"/>
-	<menu_item_call label="内蔵ブラウザで開く" name="url_open_internal"/>
-	<menu_item_call label="外部ブラウザで開く" name="url_open_external"/>
-	<menu_item_call label="URLをクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/ja/menu_url_inventory.xml
deleted file mode 100644
index 7af2f9e2cd866262c8f7290218f6ffc74e12c08b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="持ち物アイテムを表示" name="show_item"/>
-	<menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/>
-	<menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_map.xml b/indra/newview/skins/minimal/xui/ja/menu_url_map.xml
deleted file mode 100644
index 8d41e1a571247b304d77a550470bacb434617846..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="地図に表示" name="show_on_map"/>
-	<menu_item_call label="現地にテレポート" name="teleport_to_location"/>
-	<menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/ja/menu_url_objectim.xml
deleted file mode 100644
index d6a048dcfcc2c8055f2cec7ae5da68f8e540ca8d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?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_on_map"/>
-	<menu_item_call label="オブジェクトの場所にテレポート" name="teleport_to_object"/>
-	<menu_item_call label="オブジェクト名をクリップボードにコピー" name="url_copy_label"/>
-	<menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/ja/menu_url_parcel.xml
deleted file mode 100644
index 8d264059d3c6bbe74b9f94cf6025ebba41e9c82c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="区画情報を表示" name="show_parcel"/>
-	<menu_item_call label="地図に表示" name="show_on_map"/>
-	<menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/ja/menu_url_slapp.xml
deleted file mode 100644
index a516c5a075f8244f942ba123793c1c10b75fed53..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="このコマンドを実行" name="run_slapp"/>
-	<menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/ja/menu_url_slurl.xml
deleted file mode 100644
index 2c857ec915241a5e48e9582e4e0d05eb47564dfa..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="場所の情報を表示" name="show_place"/>
-	<menu_item_call label="地図に表示" name="show_on_map"/>
-	<menu_item_call label="現地にテレポート" name="teleport_to_location"/>
-	<menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/ja/menu_url_teleport.xml
deleted file mode 100644
index c3507a9a33490f32d0c852cb10391414dc633619..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="この場所にテレポート" name="teleport"/>
-	<menu_item_call label="地図に表示" name="show_on_map"/>
-	<menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_viewer.xml b/indra/newview/skins/minimal/xui/ja/menu_viewer.xml
deleted file mode 100644
index 52dec2b282abae51682ed277cc4dc3a867dd74e6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
-	<menu label="ヘルプ" name="Help">
-		<menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/>
-	</menu>
-	<menu label="アドバンス" name="Advanced">
-		<menu label="ショートカット" name="Shortcuts">
-			<menu_item_check label="飛ぶ" name="Fly"/>
-			<menu_item_call label="ウィンドウを閉じる" name="Close Window"/>
-			<menu_item_call label="全てのウィンドウを閉じる" name="Close All Windows"/>
-			<menu_item_call label="表示をリセットする" name="Reset View"/>
-		</menu>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/ja/menu_wearable_list_item.xml
deleted file mode 100644
index c402fa0b6d2b73277162273e472d8afc7c8aa6c7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
-	<menu_item_call label="交換" name="wear_replace"/>
-	<menu_item_call label="装着" name="wear_wear"/>
-	<menu_item_call label="追加" name="wear_add"/>
-	<menu_item_call label="取り外す" name="take_off_or_detach"/>
-	<menu_item_call label="取り外す" name="detach"/>
-	<context_menu label="装着:" name="wearable_attach_to"/>
-	<context_menu label="HUD に装着" name="wearable_attach_to_hud"/>
-	<menu_item_call label="取り外す" name="take_off"/>
-	<menu_item_call label="編集" name="edit"/>
-	<menu_item_call label="アイテムのプロフィール" name="object_profile"/>
-	<menu_item_call label="オリジナルを表示" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/ja/menu_wearing_gear.xml
deleted file mode 100644
index 7a97538117311823ec6676c3a5ce1127bff656b7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
-	<menu_item_call label="アウトフットの編集" name="edit"/>
-	<menu_item_call label="取り外す" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/ja/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/ja/menu_wearing_tab.xml
deleted file mode 100644
index 9effed1f42b52a8036a806680ef2f59a057d102a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
-	<menu_item_call label="取り外す" name="take_off"/>
-	<menu_item_call label="取り外す" name="detach"/>
-	<menu_item_call label="アウトフットの編集" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/ja/notifications.xml b/indra/newview/skins/minimal/xui/ja/notifications.xml
deleted file mode 100644
index 43934c9317f3c8cfcca5841edae8077744059441..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/notifications.xml
+++ /dev/null
@@ -1,2995 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
-	<global name="skipnexttime">
-		今後は表示しない
-	</global>
-	<global name="alwayschoose">
-		常にこのオプションを選択
-	</global>
-	<global name="implicitclosebutton">
-		閉じる
-	</global>
-	<template name="okbutton">
-		<form>
-			<button name="OK_okbutton" text="$yestext"/>
-		</form>
-	</template>
-	<template name="okignore">
-		<form>
-			<button name="OK_okignore" text="$yestext"/>
-		</form>
-	</template>
-	<template name="okcancelbuttons">
-		<form>
-			<button name="OK_okcancelbuttons" text="$yestext"/>
-			<button name="Cancel_okcancelbuttons" text="$notext"/>
-		</form>
-	</template>
-	<template name="okcancelignore">
-		<form>
-			<button name="OK_okcancelignore" text="$yestext"/>
-			<button name="Cancel_okcancelignore" text="$notext"/>
-		</form>
-	</template>
-	<template name="okhelpbuttons">
-		<form>
-			<button name="OK_okhelpbuttons" text="$yestext"/>
-			<button name="Help" text="$helptext"/>
-		</form>
-	</template>
-	<template name="yesnocancelbuttons">
-		<form>
-			<button name="Yes" text="$yestext"/>
-			<button name="No" text="$notext"/>
-			<button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
-		</form>
-	</template>
-	<notification functor="GenericAcknowledge" label="不明の通知メッセージ" name="MissingAlert">
-		あなたの [APP_NAME] のバージョンでは今受け取った通知メッセージを表示することができません。  最新ビューワがインストールされているかご確認ください。
-
-エラー詳細: 「 [_NAME] 」という通知は notifications.xml にありませんでした。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="FloaterNotFound">
-		フロータエラー:下記のコントロールが見つかりませんでした:
-[CONTROLS]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="TutorialNotFound">
-		現在利用可能なチュートリアルはありません。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="GenericAlert">
-		[MESSAGE]
-	</notification>
-	<notification name="GenericAlertYesCancel">
-		[MESSAGE]
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="はい"/>
-	</notification>
-	<notification name="BadInstallation">
-		[APP_NAME] をアップデート中にエラーが発生しました。  ビューワの [http://get.secondlife.com 最新バージョンをダウンロード] してください。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="LoginFailedNoNetwork">
-		[SECOND_LIFE_GRID] に接続できませんでした。
-「[DIAGNOSTIC]」
-インターネット接続が正常かご確認ください。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="MessageTemplateNotFound">
-		メッセージテンプレート [PATH] がありませんでした。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="WearableSave">
-		現在の衣類、身体部位の変更を保存しますか?
-		<usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
-	</notification>
-	<notification name="CompileQueueSaveText">
-		次の理由で、スクリプト用テキストのアップロード時に問題が起こりました。
-[REASON]
-後でもう一度お試しください。
-	</notification>
-	<notification name="CompileQueueSaveBytecode">
-		次の理由で、コンパイルしたスクリプトのアップロード時に問題が起こりました。
-[REASON]
-後でもう一度お試しください。
-	</notification>
-	<notification name="WriteAnimationFail">
-		アニメーションデータの書き込みに問題があります。後でもう一度お試しください。
-	</notification>
-	<notification name="UploadAuctionSnapshotFail">
-		次の理由で、オークションのスナップショットのアップロード時に問題が起こりました。
-[REASON]
-	</notification>
-	<notification name="UnableToViewContentsMoreThanOne">
-		一度に複数のアイテムの中身を表示できません。
-アイテムを 1 つだけ選択して、もう一度お試しください。
-	</notification>
-	<notification name="SaveClothingBodyChanges">
-		衣服、身体部位に対する変更をすべて保存しますか?
-		<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="すべて保存"/>
-	</notification>
-	<notification name="FriendsAndGroupsOnly">
-		フレンド以外からのコールやインスタントメッセージを無視する設定にしたことを、相手に知られることはありません。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="FavoritesOnLogin">
-		注意:このオプションを有効にすると、このパソコンを使うユーザーは誰でも、あなたのお気に入りの場所を見ることができるようになります。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="GrantModifyRights">
-		他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更、削除、持ち帰ることができます。この権限を与える際には十分に注意してください。
-[NAME] に修正権限を与えますか?
-		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="GrantModifyRightsMultiple">
-		他人に修正権限を与えると、権限を与えられた人はあなたが所有するインワールドのオブジェクトを変更することができます。 この権限を与える際には十分に注意してください。
-選択した住人に修正権限を与えますか?
-		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="RevokeModifyRights">
-		[NAME] の修正権限を解約しますか?
-		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="RevokeModifyRightsMultiple">
-		選択した住人から変更権限を取り下げますか?
-		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="UnableToCreateGroup">
-		グループを作成できません。
-[MESSAGE]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="PanelGroupApply">
-		[NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
-		<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="変更を無視" yestext="変更を適用"/>
-	</notification>
-	<notification name="MustSpecifyGroupNoticeSubject">
-		グループ通知の送信には、件名の記入が必要です。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AddGroupOwnerWarning">
-		あなたは [ROLE_NAME] の役割にメンバーを与えようとしています。
-任命されたメンバーが自ら退任しない限り、
-役柄から削除できません。
-操作を続行しますか?
-		<usetemplate ignoretext="グループオーナーを新しく追加する前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="AssignDangerousActionWarning">
-		あなたは [ROLE_NAME] に [ACTION_NAME] の能力を
-与えようとしています。
-
- *警告*
-この能力を持つ役割のメンバーは、
-自分と他のメンバーに現在より強力な権限を割り当て、
-自分をオーナーとほぼ同様の立場に任命することもできるようになります。
-この行為の意味をよく理解してから実行してください。
-
-この能力を [ROLE_NAME] に割り当てますか?
-		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="AssignDangerousAbilityWarning">
-		あなたは [ROLE_NAME] に [ACTION_NAME] の能力を
-与えようとしています。
-
- *警告*
-この能力をもつ役割のメンバーは、
-自分と他のメンバーにすべての能力を割り当て、
-自分をオーナーとほぼ同様の立場に任命できます。
-
-この能力を [ROLE_NAME] に割り当てますか?
-		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="AttachmentDrop">
-		アタッチメントを下に置こうとしています。
-続けますか?
-		<usetemplate ignoretext="アタッチメントを下に落とす前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="JoinGroupCanAfford">
-		このグループに参加するには、L$ [COST] かかります。
-続行しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="参加"/>
-	</notification>
-	<notification name="JoinGroupNoCost">
-		[NAME] というグループに入ろうとしています。
-続けますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="参加"/>
-	</notification>
-	<notification name="JoinGroupCannotAfford">
-		このグループに加入するには、L$ [COST] 必要です。
-L$ が不足しているのでこのグループに参加することができません。
-	</notification>
-	<notification name="CreateGroupCost">
-		このグループを作るには L$ 100 かかります。
-一人ではグループにならないので、永久に削除されてしまいます。
-48 時間以内にメンバーを勧誘し、入会してもらってください。
-		<usetemplate canceltext="キャンセル" name="okcancelbuttons" notext="キャンセル" yestext="L$100 でグループを作成"/>
-	</notification>
-	<notification name="LandBuyPass">
-		L$ [COST] で [TIME] 時間 [PARCEL_NAME] に入ることができます。
-入場許可を購入しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="SalePriceRestriction">
-		不特定の人に売却する場合には、
-売却価格はL$ 0 以上に設定する必要があります。
-売却価格をL$ 0 に設定する場合は、
-売却する個人を選択してください。
-	</notification>
-	<notification name="ConfirmLandSaleChange">
-		選択した [LAND_SIZE] 平方メートルの土地は、売り出し中に設定されています。
-売却価格 L$ [SALE_PRICE] で、[NAME] に売却を認可します。
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmLandSaleToAnyoneChange">
-		注意: 「誰にでも販売」をクリックすることで、あなたの土地はこのリージョンにいる人に限らず [SECOND_LIFE] コミュニティ全体で利用可能となります。
-
-選択した [LAND_SIZE] 平方メートルの土地は、販売対象に設定されました。
-販売価格 L$ [SALE_PRICE] で、[NAME] が販売対象者となります。
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsDeededToGroup">
-		この区画のグループ [NAME] 共有のすべてのオブジェクトを、以前の所有者の「持ち物」に戻そうとしています。
-操作を続行しますか?
-
-*警告* これにより、
-グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます!
-オブジェクト: [N]
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsOwnedByUser">
-		この区画で、
-住人 [NAME] が所有する全てのオブジェクトを
-本人の「持ち物」に本当に返却してもよいですか?
-
-オブジェクト: [N]
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsOwnedBySelf">
-		この土地区画内にある、あなたが所有するすべてのオブジェクトを、
-あなたの「持ち物」に戻そうとしています。続けますか?
-
-オブジェクト: [N]
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsNotOwnedBySelf">
-		この土地区画内にある、あなた以外が所有するすべてのオブジェクトを、
-それぞれの所有者の「持ち物」に戻そうとしています。
-操作を続行しますか?
-グループに譲渡された「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されます。
-
-*警告* これにより、
-グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます!
-オブジェクト: [N]
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsNotOwnedByUser">
-		この土地区画内にある、
-[NAME]以外による所有のオブジェクトをすべてそれぞれの所有者の「持ち物」に返却しようとしています。
-操作を続行しますか?グループに譲渡された「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されます。
-
-*警告* これにより、
-グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます!
-オブジェクト: [N]
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="ReturnAllTopObjects">
-		全てのリストされたオブジェクトを所有者に本当に返却しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="DisableAllTopObjects">
-		このリージョン(地域)内のすべてのオブジェクトを無効にしようとしています。操作を続行しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsNotOwnedByGroup">
-		この土地の区画上のオブジェクトのうち、グループ [NAME] との間で共有していないオブジェクトを所有者に返却しますか?
-
-オブジェクト: [N]
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="UnableToDisableOutsideScripts">
-		スクリプトを無効にできません。
-このリージョン(地域)全体が「ダメージ有効」に設定されています。
-武器を使用するにはスクリプトの実行を許可する必要があります。
-	</notification>
-	<notification name="MultipleFacesSelected">
-		現在複数の面が選択されています。
-このまま続けた場合、メディアの別々のインスタンスがオブジェクトの複数の面に設定されます。
-メディアを 1 つの面だけに取り付けるには、「面を選択」を選んでオブジェクトの希望する面をクリック、それから「追加」をクリックしてください。
-		<usetemplate ignoretext="メディアが選択した複数の面にセットされるとき" name="okcancelignore" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="MustBeInParcel">
-		着地点を設定するには、この区画の内側に
-立ってください。
-	</notification>
-	<notification name="PromptRecipientEmail">
-		受信者の有効なメールアドレスを入力してください。
-	</notification>
-	<notification name="PromptSelfEmail">
-		あなたのメールアドレスを入力してください。
-	</notification>
-	<notification name="PromptMissingSubjMsg">
-		デフォルトの件名またはメッセージを付けて、スナップショットを送信しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ErrorProcessingSnapshot">
-		スナップショットデータの処理エラー
-	</notification>
-	<notification name="ErrorEncodingSnapshot">
-		スナップショットのエンコード化でエラーが出ました!
-	</notification>
-	<notification name="ErrorUploadingPostcard">
-		次の理由で、スナップショットの送信時に問題が起こりました: [REASON]
-	</notification>
-	<notification name="ErrorUploadingReportScreenshot">
-		次の理由で、レポートのスクリーンショットのアップロード時に問題が起こりました。 [REASON]
-	</notification>
-	<notification name="MustAgreeToLogIn">
-		[SECOND_LIFE] へのログインを続けるには、利用規約に同意してください。
-	</notification>
-	<notification name="CouldNotPutOnOutfit">
-		アウトフィットを装着できません。
-アウトフィットフォルダに衣類、身体部位、アタッチメントがありません。
-	</notification>
-	<notification name="CannotWearTrash">
-		ごみ箱にある衣類や身体部位の着用はできません。
-	</notification>
-	<notification name="MaxAttachmentsOnOutfit">
-		オブジェクトを付けられませんでした。
-最大数の [MAX_ATTACHMENTS] 個を越えています。 どれか取り外してからお試しください。
-	</notification>
-	<notification name="CannotWearInfoNotComplete">
-		まだ読み込まれていないため、そのアイテムを装着できません。後でやり直してください。
-	</notification>
-	<notification name="MustHaveAccountToLogIn">
-		注意:記入漏れの箇所があります。
-アバターのユーザー名を入力してください。
-
-[SECOND_LIFE] に入るにはアカウントが必要です。今すぐアカウントを作成しますか?
-		<url name="url">
-			https://join.secondlife.com/index.php?lang=ja-JP
-		</url>
-		<usetemplate name="okcancelbuttons" notext="もう一度試す" yestext="新しいアカウントを作成"/>
-	</notification>
-	<notification name="InvalidCredentialFormat">
-		ユーザー名のフィールドにアバターのユーザー名もしくは氏名を入力してから、再度ログインする必要があります。
-	</notification>
-	<notification name="DeleteClassified">
-		クラシファイド広告 [NAME] を削除しますか?
-支払い済みの料金は返金されません。
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="DeleteMedia">
-		この面にあるメディアを削除する選択をしました。
-続けますか?
-		<usetemplate ignoretext="オブジェクトからメディアを削除する前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="ClassifiedSave">
-		クラシファイド広告 [NAME] への変更を保存しますか?
-		<usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
-	</notification>
-	<notification name="ClassifiedInsufficientFunds">
-		クラシファイド広告を出すには、資金が足りません。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="DeleteAvatarPick">
-		&lt;nolink&gt;[PICK]&lt;/nolink&gt; を削除しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="DeleteOutfits">
-		選択したアウトフィットを削除しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="PromptGoToEventsPage">
-		[SECOND_LIFE] イベント Web ページに移動しますか?
-		<url name="url">
-			http://secondlife.com/events/?lang=ja-JP
-		</url>
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="SelectProposalToView">
-		表示する提案を選択してください。
-	</notification>
-	<notification name="SelectHistoryItemToView">
-		表示する履歴アイテムを選択してください。
-	</notification>
-	<notification name="CacheWillClear">
-		[APP_NAME] を再起動後にキャッシュがクリアされます。
-	</notification>
-	<notification name="CacheWillBeMoved">
-		[APP_NAME] を再起動後にキャッシュが移動されます。
-ご注意: キャッシュがクリアされます。
-	</notification>
-	<notification name="ChangeConnectionPort">
-		ポートの設定は [APP_NAME] を再起動後に反映されます。
-	</notification>
-	<notification name="ChangeSkin">
-		新しいスキンは [APP_NAME] を再起動後に表示されます。
-	</notification>
-	<notification name="ChangeLanguage">
-		言語の変更は [APP_NAME] を再起動後に反映されます。
-	</notification>
-	<notification name="GoToAuctionPage">
-		[SECOND_LIFE]の Web ページに移動し、入札あるいはオークションの詳細を確認しますか?
-		<url name="url">
-			http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID]
-		</url>
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="SaveChanges">
-		変更を保存しますか?
-		<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/>
-	</notification>
-	<notification name="GestureSaveFailedTooManySteps">
-		ジェスチャーの保存に失敗しました。
-ステップが多すぎます。
-ステップをいくつか削除してから再保存してください
-	</notification>
-	<notification name="GestureSaveFailedTryAgain">
-		ジェスチャーの保存に失敗しました。少し待ってからもう一度試してください。
-	</notification>
-	<notification name="GestureSaveFailedObjectNotFound">
-		ジェスチャーの保存に失敗しました。オブジェクト、または関連するオブジェクト持ち物が見つかりません。
-オブジェクトが範囲内に存在しないか、または削除された可能性があります。
-	</notification>
-	<notification name="GestureSaveFailedReason">
-		次の理由で、ジェスチャーの保存時に問題が起こりました。 [REASON]。  後でもう一度試してください。
-	</notification>
-	<notification name="SaveNotecardFailObjectNotFound">
-		ノートカードの保存に失敗しました。オブジェクト、または関連するオブジェクト持ち物が見つかりません。
-オブジェクトが範囲内に存在しないか、または削除された可能性があります。
-	</notification>
-	<notification name="SaveNotecardFailReason">
-		次の理由で、ノートカードの保存時に問題が起こりました。 [REASON]。  後でもう一度試してください。
-	</notification>
-	<notification name="ScriptCannotUndo">
-		あなたのスクリプトのバージョンでは、変更を元に戻すことはできませんでした。
-サーバーの最新保存バージョンをロードしますか?
-(**警告**:この操作後元に戻すことはできません)
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="SaveScriptFailReason">
-		次の理由で、スクリプトの保存に問題が起こりました。 [REASON]。  後でもう一度試してください。
-	</notification>
-	<notification name="SaveScriptFailObjectNotFound">
-		スクリプトの保存に失敗しました。スクリプトが入ったオブジェクトが見つかりません。
-オブジェクトは範囲外か、または削除されているかもしれません。
-	</notification>
-	<notification name="SaveBytecodeFailReason">
-		次の理由で、コンパイルしたスクリプトの保存時に問題が起こりました。 [REASON]。  後でもう一度試してください。
-	</notification>
-	<notification name="StartRegionEmpty">
-		ログイン位置が指定されていません。
-ログイン位置の欄にリージョン名を入力するか、「最後にログアウトした場所」か「ホーム」を選択してください。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CouldNotStartStopScript">
-		スクリプトの起動または停止に失敗しました。スクリプトが格納されているオブジェクトが見つかりません。
-オブジェクトが範囲内に存在しないか、または削除された可能性があります。
-	</notification>
-	<notification name="CannotDownloadFile">
-		ファイルをダウンロードできません。
-	</notification>
-	<notification name="CannotWriteFile">
-		ファイル [[FILE]] を書き込めません。
-	</notification>
-	<notification name="UnsupportedHardware">
-		お使いのコンピューターは [APP_NAME] の必要最低限の動作環境を満たしていません。 パフォーマンスの低下を感じるかもしれません。 恐れ入りますが [SUPPORT_SITE] ではサポート対象外のシステムに関する技術的サポートは行っておりません。
-
-[_URL] に移動して確認をしますか?
-		<url name="url" option="0">
-			http://secondlife.com/support/sysreqs.php?lang=ja
-		</url>
-		<usetemplate ignoretext="使用中のコンピューターのハードウェアがサポートされていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="UnknownGPU">
-		お使いのシステムには、[APP_NAME] が認識できないグラフィックカードが搭載されています。
-[APP_NAME] でまだテストされていない最新ハードウェアのためだと考えられます。  問題ないとは思いますが、グラフィックの設定を調整する必要があるかもしれません。
-(ミー > 環境設定 > グラフィック)
-		<form name="form">
-			<ignore name="ignore" text="使用中のグラフックカードが認識されないとき"/>
-		</form>
-	</notification>
-	<notification name="DisplaySettingsNoShaders">
-		グラフィックドライバを初期化中に [APP_NAME] がクラッシュしました。
-ドライバの一般的なエラーを防ぐために、画質が低に設定されます。 そのため、一部のグラフィック特性に制限が出ます。
-お使いのグラフィックカードのドライバをアップデートするようおすすめします。
-画質は、環境設定 > グラフィック で設定できます。
-	</notification>
-	<notification name="RegionNoTerraforming">
-		[REGION] では、地形の変更ができません。
-	</notification>
-	<notification name="CannotCopyWarning">
-		あなたには[ITEMS]というアイテムをコピーする許可がありません。他の住人に提供すると、そのアイテムはあなたの「持ち物」から削除されます。本当にこれらのアイテムを譲りますか?
-		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="CannotGiveItem">
-		持ち物のアイテムを渡せません。
-	</notification>
-	<notification name="TransactionCancelled">
-		取引がキャンセルされました。
-	</notification>
-	<notification name="TooManyItems">
-		一度に 42 個以上のアイテムは渡せません。
-	</notification>
-	<notification name="NoItems">
-		選択したアイテムを渡す権限がありません。
-	</notification>
-	<notification name="CannotCopyCountItems">
-		あなたは選択した [COUNT] 個のアイテムののコピーを許されていません。
-これらのアイテムはあなたの「持ち物」から失われます。
-本当にアイテムを渡したいですか?
-		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="CannotGiveCategory">
-		選択したフォルダを渡す権限がありません
-	</notification>
-	<notification name="FreezeAvatar">
-		このアバターをフリーズしますか?
-アバターは一時的に動けなくなり、チャットを含めインワールドで何もできなくなります。
-		<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="解除" yestext="フリーズ"/>
-	</notification>
-	<notification name="FreezeAvatarFullname">
-		[AVATAR_NAME]をフリーズしますか?
-フリーズされた人は一時的に動けなくなり、チャットなど、この世界に対する関わりを持つことができなくなります。
-		<usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="解除" yestext="フリーズ"/>
-	</notification>
-	<notification name="EjectAvatarFullname">
-		あなたの土地から [AVATAR_NAME] を追放しますか?
-		<usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="追放と禁止" yestext="追放"/>
-	</notification>
-	<notification name="EjectAvatarNoBan">
-		このアバターをあなたの土地から追放しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="追放"/>
-	</notification>
-	<notification name="EjectAvatarFullnameNoBan">
-		[AVATAR_NAME] をあなたの土地から追放しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="追放"/>
-	</notification>
-	<notification name="EjectAvatarFromGroup">
-		[GROUP_NAME] から [AVATAR_NAME] を追放しました
-	</notification>
-	<notification name="AcquireErrorTooManyObjects">
-		取得エラー:選択したオブジェクトの数が多すぎます。
-	</notification>
-	<notification name="AcquireErrorObjectSpan">
-		取得エラー:
-オブジェクトが複数のリージョン(地域)にまたがって存在しています。
-すべて同じリージョン内に移動させてから取得してください。
-	</notification>
-	<notification name="PromptGoToCurrencyPage">
-		[EXTRA]
-
-[_URL] に移動してリンデンドル購入に関する情報を確認しますか?
-		<url name="url">
-			http://secondlife.com/app/currency/?lang=ja-JP
-		</url>
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="UnableToLinkObjects">
-		[COUNT] 個のオブジェクトをリンクできません。
-リンクできるのは最大 [MAX] 個です。
-	</notification>
-	<notification name="CannotLinkIncompleteSet">
-		セットで揃っているオブジェクトのみリンクできます。
-複数のオブジェクトを選択してください。
-	</notification>
-	<notification name="CannotLinkModify">
-		すべてのオブジェクトの修正許可がないためリンクできません。
-
-どのオブジェクトもロックされておらず、あなたのものであることを確認してください。
-	</notification>
-	<notification name="CannotLinkDifferentOwners">
-		所有者が異なるため、オブジェクトをリンクできません。
-
-自分が所有しているオブジェクトだけを選択してください。
-	</notification>
-	<notification name="NoFileExtension">
-		「 [FILE] 」の拡張子が無効です。
-
-このファイルの拡張子が正しいかどうかを確認してください。
-	</notification>
-	<notification name="InvalidFileExtension">
-		[EXTENSION] は無効です。
-正しい拡張子:[VALIDS]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CannotUploadSoundFile">
-		読み込みのためにアップロードされたサウンドファイルを開けません:
-[FILE]
-	</notification>
-	<notification name="SoundFileNotRIFF">
-		RIFF WAVE ファイルとして認識されません:
-[FILE]
-	</notification>
-	<notification name="SoundFileNotPCM">
-		PCM WAVE オーディオファイルとして認識されません:
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidChannelCount">
-		ファイルのチャンネル数が無効です(モノラルまたはステレオを使用する必要があります):
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidSampleRate">
-		ファイルのサンプルレートがサポートされていません(44.1k である必要があります):
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidWordSize">
-		ファイルのワードサイズがサポートされていません(8 または 16 ビットである必要があります):
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidHeader">
-		WAV ヘッダーにデータチャンクが見つかりません:
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidChunkSize">
-		WAV ファイルのチャンクサイズが間違っています:
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidTooLong">
-		オーディオファイルが長すぎます。(最大 10 秒):
-[FILE]
-	</notification>
-	<notification name="ProblemWithFile">
-		「 [FILE] 」に問題があります。
-
-[ERROR]
-	</notification>
-	<notification name="CannotOpenTemporarySoundFile">
-		書き込み用の一時圧縮サウンドファイルを開くことができません:[FILE]
-	</notification>
-	<notification name="UnknownVorbisEncodeFailure">
-		不明の Vorbis のエンコードに失敗: [FILE]
-	</notification>
-	<notification name="CannotEncodeFile">
-		次のファイルのエンコードができません: [FILE]
-	</notification>
-	<notification name="CorruptedProtectedDataStore">
-		ユーザー名とパスワードを自動入力できません。これはネットワーク設定が変更された場合に起こります
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CorruptResourceFile">
-		破損したリソースファイル: [FILE]
-	</notification>
-	<notification name="UnknownResourceFileVersion">
-		不明のリンデンリソースファイルのバージョン: [FILE]
-	</notification>
-	<notification name="UnableToCreateOutputFile">
-		出力ファイルを作成できません: [FILE]
-	</notification>
-	<notification name="DoNotSupportBulkAnimationUpload">
-		現在 [APP_NAME] では、アニメーションの一括アップロードはサポートされていません。
-	</notification>
-	<notification name="CannotUploadReason">
-		次の理由で、「 [FILE] 」をアップロードできません: [REASON]
-あとでもう一度試してください。
-	</notification>
-	<notification name="LandmarkCreated">
-		「 [LANDMARK_NAME] 」を「 [FOLDER_NAME] 」フォルダに追加しました。
-	</notification>
-	<notification name="LandmarkAlreadyExists">
-		現在地のランドマークを既に持っています。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CannotCreateLandmarkNotOwner">
-		土地の所有者が許可していないため、ランドマークを作成することはできません。
-	</notification>
-	<notification name="CannotRecompileSelectObjectsNoScripts">
-		「リコンパイル」できません。
-スクリプトのオブジェクトを選択してください。
-	</notification>
-	<notification name="CannotRecompileSelectObjectsNoPermission">
-		「リコンパイル」できません。
-
-修正修正権限のあるスクリプトのオブジェクトを選択してください。
-	</notification>
-	<notification name="CannotResetSelectObjectsNoScripts">
-		「再設定」ができません。
-
-スクリプトのオブジェクトを選択してください。
-	</notification>
-	<notification name="CannotResetSelectObjectsNoPermission">
-		「再設定」ができません。
-
-修正権限のあるスクリプトのオブジェクトを選択してください。
-	</notification>
-	<notification name="CannotOpenScriptObjectNoMod">
-		修正権限のないオブジェクトのスクリプトは開くことはできません。
-	</notification>
-	<notification name="CannotSetRunningSelectObjectsNoScripts">
-		スクリプトの「実行」ができません。
-
-スクリプトのオブジェクトを選択してください。
-	</notification>
-	<notification name="CannotSetRunningNotSelectObjectsNoScripts">
-		スクリプトを「実行しない」設定にできません。
-
-スクリプトのオブジェクトを選択してください。
-	</notification>
-	<notification name="NoFrontmostFloater">
-		保存する frontmost フロータがありません。
-	</notification>
-	<notification name="SeachFilteredOnShortWords">
-		指定した検索クエリは変更され、短すぎる語句は取り除かれています。
-
-検索語句: [FINALQUERY]
-	</notification>
-	<notification name="SeachFilteredOnShortWordsEmpty">
-		指定した検索語句が短すぎたため、検索は行われませんでした。
-	</notification>
-	<notification name="CouldNotTeleportReason">
-		テレポートに失敗しました。
-[REASON]
-	</notification>
-	<notification name="invalid_tport">
-		テレポート処理中に問題が発生しました。 ログインし直す必要があるかもしれません。
-このメッセージが何度も出る場合は、[SUPPORT_SITE] をご確認ください。
-	</notification>
-	<notification name="invalid_region_handoff">
-		リージョン間の移動中に問題が発生しました。 ログインし直す必要があるかもしれません。
-このメッセージが何度も出る場合は、[SUPPORT_SITE] をご確認ください。
-	</notification>
-	<notification name="blocked_tport">
-		申し訳ございません。テレポートは現在、ブロックされています。しばらくしてから再度お試しください。
-それでもテレポートできない場合は、ログアウトし、ログインし直して問題を解決してください。
-	</notification>
-	<notification name="nolandmark_tport">
-		申し訳ございません。ランドマークの目的地が見つかりませんでした。
-	</notification>
-	<notification name="timeout_tport">
-		申し訳ございません。システムによるテレポート接続が完了できませんでした。
-しばらくしてから再度お試しください。
-	</notification>
-	<notification name="noaccess_tport">
-		残念ながら、目的地へアクセスが許可されていないため、テレポートできません。
-	</notification>
-	<notification name="missing_attach_tport">
-		添付物がまだ届いていません。テレポートをする前にあと数秒間お待ちいただくか、いったんログアウトし、再度ログインしてください。
-	</notification>
-	<notification name="too_many_uploads_tport">
-		このリージョンのアセットキューが現在混み合っているため、テレポートのリクエストをすぐに処理することが難しい状況です。
-数分後にやり直すか、混雑していない他のリージョンでお試しください。
-	</notification>
-	<notification name="expired_tport">
-		申し訳ございません。システムはテレポートのリクエストを時間どおりに完了できませんでした。数分後にやり直してください。
-	</notification>
-	<notification name="expired_region_handoff">
-		申し訳ございません。システムはリージョン間の移動を時間どおりに完了できませんでした。
-数分後にやり直してください。
-	</notification>
-	<notification name="no_host">
-		テレポート目的地を見つけられません。目的地が一時的に利用できない状態か、すでに消滅している可能性があります。数分後にやり直してください。
-	</notification>
-	<notification name="no_inventory_host">
-		持ち物システムは現在利用できません。
-	</notification>
-	<notification name="CannotSetLandOwnerNothingSelected">
-		土地所有者設定ができません:
-区画が選定されていません。
-	</notification>
-	<notification name="CannotSetLandOwnerMultipleRegions">
-		複数のリージョンが選択されたため、土地の所有権を取得できません。
-選択する面積を小さくして、もう一度お試しください。
-	</notification>
-	<notification name="ForceOwnerAuctionWarning">
-		この区画はオークションに出されています。 所有権を変更するとオークションはキャンセルとなり、既にオークションに参加している住人がいればその人に迷惑をかけてしまいます。
-所有権を変更しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="CannotContentifyNothingSelected">
-		コンテンツ化は不可能です:
-区画が選定されていません。
-	</notification>
-	<notification name="CannotContentifyNoRegion">
-		コンテンツ化は不可能です:
-土地が選択されていません。
-	</notification>
-	<notification name="CannotReleaseLandNothingSelected">
-		土地を破棄できません:
-区画が選定されていません。
-	</notification>
-	<notification name="CannotReleaseLandNoRegion">
-		土地を破棄できません:
-リージョンが見つかりません。
-	</notification>
-	<notification name="CannotBuyLandNothingSelected">
-		土地を購入できません:
-区画が選定されていません。
-	</notification>
-	<notification name="CannotBuyLandNoRegion">
-		土地を購入できません:
-この土地があるリージョンを見つけることができません
-	</notification>
-	<notification name="CannotCloseFloaterBuyLand">
-		[APP_NAME] がこの取引価格を見積もるまでは、土地の購入ウィンドウを閉じることはできません。
-	</notification>
-	<notification name="CannotDeedLandNothingSelected">
-		土地を譲渡できません:
-区画が選定されていません。
-	</notification>
-	<notification name="CannotDeedLandNoGroup">
-		土地を譲渡できません:
-グループが選択されていません。
-	</notification>
-	<notification name="CannotDeedLandNoRegion">
-		土地を譲渡できません:
-この土地があるリージョンが見つかりません。
-	</notification>
-	<notification name="CannotDeedLandMultipleSelected">
-		土地を譲渡できません:
-複数の区画が選択されています。
-
-区画を 1 つ選択してください。
-	</notification>
-	<notification name="CannotDeedLandWaitingForServer">
-		土地を譲渡できません:
-サーバーからの所有権情報を待っています。
-
-再度、試みてください。
-	</notification>
-	<notification name="CannotDeedLandNoTransfer">
-		土地を譲渡できません:
-[REGION] では土地の譲渡が許されていません。
-	</notification>
-	<notification name="CannotReleaseLandWatingForServer">
-		土地を破棄できません:
-サーバーが区画情報を更新するのを待っています。
-
-もう少し後でやり直してください。
-	</notification>
-	<notification name="CannotReleaseLandSelected">
-		土地を破棄できません:
-あなたは、選択した区画のすべてを所有していません。
-
-区画を 1 つ選択してください。
-	</notification>
-	<notification name="CannotReleaseLandDontOwn">
-		土地を破棄できません:
-あなたはこの土地を手放すことを許可されていません。
-あなたの区画は緑色で表示されています。
-	</notification>
-	<notification name="CannotReleaseLandRegionNotFound">
-		土地を放棄できません:
-この土地があるリージョンが見つかりません。
-	</notification>
-	<notification name="CannotReleaseLandNoTransfer">
-		土地を破棄できません:
-[REGION] では土地の譲渡が許されていません。
-	</notification>
-	<notification name="CannotReleaseLandPartialSelection">
-		土地を破棄できません:
-区画全体を選択して破棄する必要があります。
-
-区画全体を選択するか、または、まず最初に区画を分割してください。
-	</notification>
-	<notification name="ReleaseLandWarning">
-		あなたは、[AREA] 平方メートルの土地を破棄しようとしています。
-この区画を破棄するとあなたの土地ではなくなりますが、
-L$ は返金されません。
-
-土地を破棄しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="CannotDivideLandNothingSelected">
-		土地を分割できません:
-
-区画が選定されていません。
-	</notification>
-	<notification name="CannotDivideLandPartialSelection">
-		土地を分割できません:
-
-区画全体が選択されています。
-区画の一部を選択してください。
-	</notification>
-	<notification name="LandDivideWarning">
-		この土地を分割すると、2 つの区画に別れます。
-区画ごとの設定が可能になります。 この操作を行うと、一部の設定がデフォルトにリセットされます。
-
-土地の分割操作を続行しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="CannotDivideLandNoRegion">
-		土地を分割できません:
-この土地があるリージョンが見つかりません。
-	</notification>
-	<notification name="CannotJoinLandNoRegion">
-		土地を統合できません:
-この土地があるリージョンが見つかりません。
-	</notification>
-	<notification name="CannotJoinLandNothingSelected">
-		土地を統合できませんでした:
-区画が選定されていません。
-	</notification>
-	<notification name="CannotJoinLandEntireParcelSelected">
-		土地を統合できません:
-区画が 1 つしか選択されていません。
-
-両方の区画をまたいで土地を選択してください。
-	</notification>
-	<notification name="CannotJoinLandSelection">
-		土地を統合できません:
-区画を 1 つ以上選択する必要があります。
-
-両方の区画をまたいで土地を選択してください。
-	</notification>
-	<notification name="JoinLandWarning">
-		この土地を統合すると、選択された長方形に交差する全ての区画を基にして、大きな区画が 1 つ作成されます。
-新しい区画の名前とオプションを再設定する必要があります。
-
-土地を統合しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmNotecardSave">
-		このアイテムをコピー、表示する前に、ノートカードの保存が必要です。 保存しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmItemCopy">
-		このアイテムをあなたの持ち物にコピーしますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="コピー"/>
-	</notification>
-	<notification name="ResolutionSwitchFail">
-		解像度を [RESX]x[RESY] に切り替えることができませんでした。
-	</notification>
-	<notification name="ErrorUndefinedGrasses">
-		エラー:未定義の植物:[SPECIES]
-	</notification>
-	<notification name="ErrorUndefinedTrees">
-		エラー:未定義の樹木:[SPECIES]
-	</notification>
-	<notification name="CannotSaveWearableOutOfSpace">
-		「 [NAME] 」を衣類のファイルに保存できません。
-コンピューターのディスクスペースを少し増やしてから、もう一度保存してみてください。
-	</notification>
-	<notification name="CannotSaveToAssetStore">
-		「 [NAME] 」を保存できません。
-通常これは一時的なエラーです。 数分後にもう一度着用物をカスタマイズ・保存してください。
-	</notification>
-	<notification name="YouHaveBeenLoggedOut">
-		しまった、 [SECOND_LIFE] からログアウトされてしまいました。
-            [MESSAGE]
-		<usetemplate name="okcancelbuttons" notext="終了" yestext="IMとチャットを表示"/>
-	</notification>
-	<notification name="OnlyOfficerCanBuyLand">
-		グループ用の土地の購入ができません:
-あなたにはアクティブなグループのために土地を購入する権限がありません。
-	</notification>
-	<notification label="フレンド登録" name="AddFriendWithMessage">
-		フレンド登録すると、お互いの現在地の地図への表示許可、オンライン状態の表示設定ができます。
-
-[NAME] にフレンドシップを申し出ますか?
-		<form name="form">
-			<input name="message">
-				フレンド登録してくれますか?
-			</input>
-			<button name="Offer" text="OK"/>
-			<button name="Cancel" text="キャンセル"/>
-		</form>
-	</notification>
-	<notification label="アウトフィットを保存する" name="SaveOutfitAs">
-		着用中のアウトフィットを新しいアウトフットとして保存:
-		<form name="form">
-			<input name="message">
-				[DESC] (新)
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="キャンセル"/>
-		</form>
-	</notification>
-	<notification label="着用物を保存" name="SaveWearableAs">
-		アイテムを別名で持ち物に保存:
-		<form name="form">
-			<input name="message">
-				[DESC](新規)
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="取り消し"/>
-		</form>
-	</notification>
-	<notification label="アウトフィットの名前を変更する" name="RenameOutfit">
-		新しいアウトフィットの名前:
-		<form name="form">
-			<input name="new_name">
-				[NAME]
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="取り消し"/>
-		</form>
-	</notification>
-	<notification name="RemoveFromFriends">
-		フレンドリストから [NAME] を削除しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="RemoveMultipleFromFriends">
-		フレンドリストから複数のフレンドを削除しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="GodDeleteAllScriptedPublicObjectsByUser">
-		**[AVATAR_NAME]**
-所有のすべてのスクリプトオブジェクトをこのシム内の他のすべての土地から削除しようとしています。操作を続行しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="GodDeleteAllScriptedObjectsByUser">
-		**[AVATAR_NAME]**
-所有のすべてのスクリプトオブジェクトをこのシム内のすべての土地から削除しようとしています。操作を続行しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="GodDeleteAllObjectsByUser">
-		**[AVATAR_NAME]**
-所有のすべてのオブジェクト(スクリプトオブジェクトと非スクリプトオブジェクト)を
-このシム内のすべての土地から削除しようとしています。操作を続行しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="BlankClassifiedName">
-		クラシファイドの名前を指定してください。
-	</notification>
-	<notification name="MinClassifiedPrice">
-		広告料は最低 L$ [MIN_PRICE] 必要です。
-
-金額を増やしてください。
-	</notification>
-	<notification name="ConfirmItemDeleteHasLinks">
-		ここにリンクされたアイテムが少なくとも1つあります。  このアイテムを削除するとここにリンクされたものが機能しなくなります。  リンクを先に削除することを強くお勧めします。
-
-これらのアイテムを削除しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteLock">
-		選択したアイテムのうち、少なくとも 1 つがロックされています。
-
-本当に削除しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteNoCopy">
-		選択したアイテムのうち、少なくとも 1 つがコピーできません。
-
-本当に削除しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteNoOwn">
-		選択したアイテムのうち、少なくとも 1 つがあなたの所有物ではありません。
-
-本当に削除しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteLockNoCopy">
-		少なくとも 1 つのオブジェクトがロックされています。
-少なくとも 1 つのオブジェクトがコピーできません。
-
-本当に削除しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteLockNoOwn">
-		少なくとも 1 つのオブジェクトがロックされています。
-少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。
-
-本当に削除しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteNoCopyNoOwn">
-		少なくとも 1 つのオブジェクトがコピーできません。
-少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。
-
-本当に削除しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
-		少なくとも 1 つのオブジェクトがロックされています。
-少なくとも 1 つのオブジェクトがコピーできません。
-少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。
-
-本当に削除しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectTakeLock">
-		少なくとも 1 つのオブジェクトがロックされています。
-
-本当にこのまま取得を続けますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectTakeNoOwn">
-		取得しようとしているオブジェクトには、あなたの所有物ではないオブジェクトが含まれています。
-あなたの所有物ではないオブジェクトを取得すると、次の所有者の権限がそのオブジェクトに適用されます。
-そのため、将来、修正やコピーの能力が制限される可能性があります。
-
-本当にこのまま取得を続けますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectTakeLockNoOwn">
-		少なくとも 1 つのオブジェクトがロックされています。
-取得しようとしているオブジェクトには、あなたの所有物ではないオブジェクトが含まれています。
-あなたの所有物ではないオブジェクトを取得すると、次の所有者の権限がそのオブジェクトに適用されます。
-そのため、将来、編集やコピーの能力が制限される可能性があります。
-この選択内容のままで続行することは可能ですが、
-
-本当にこのまま取得を続けますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="CantBuyLandAcrossMultipleRegions">
-		複数のリージョンが選択されたため、土地を購入できません。
-
-選択する面積を小さくしてもう一度試してください。
-	</notification>
-	<notification name="DeedLandToGroup">
-		この区画の譲渡に際しては、
-このグループが十分な土地クレジットを保有および維持している必要があります。
-土地の購入価格は、所有者に返金されません。譲渡された区画が売れると、売上金額はグループメンバーに均等に分配されます。
-
-この [AREA] 平方メートルの土地を、グループ
-「 [GROUP_NAME] 」に譲渡しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="DeedLandToGroupWithContribution">
-		この区画が譲渡されると、グループはその土地利用料として十分な残高を維持していく必要があります。
-譲渡には同時に [NAME] からグループへの土地の貢献が含まれます。
-土地の購入価格は所有者に返金されません。譲渡された区画が売却されると、販売価格はグループメンバーの間で均等に分配されます。
-
-この [AREA] m² の土地を [GROUP_NAME] というグループに譲渡しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="DisplaySetToSafe">
-		-safe オプションを指定したので、
-表示設定はセーフレベルに設定されています。
-	</notification>
-	<notification name="DisplaySetToRecommended">
-		表示設定は、あなたのシステム構成に基づいて推奨されたレベルに設定されています。
-	</notification>
-	<notification name="ErrorMessage">
-		[ERROR_MESSAGE]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AvatarMovedDesired">
-		目的地は現在ご利用いただけません。
-近くのリージョンに移動しました。
-	</notification>
-	<notification name="AvatarMovedLast">
-		前回いた場所は現在ご利用いただけません。
-近くのリージョンに移動しました。
-	</notification>
-	<notification name="AvatarMovedHome">
-		ホームロケーションは現在ご利用いただけません。
-近くのリージョンに移動しました。
-新たにホームを設定し直す必要があるかもしれません。
-	</notification>
-	<notification name="ClothingLoading">
-		現在衣類をダウンロード中です。
-このまま [SECOND_LIFE] を通常通りご使用いただけます。他人からはあなたは正しく表示されます。
-		<form name="form">
-			<ignore name="ignore" text="衣類がダウンロードされるまで時間がかかっているとき"/>
-		</form>
-	</notification>
-	<notification name="FirstRun">
-		[APP_NAME] のインストールが完了しました。
-
-[SECOND_LIFE] を使ったことがない場合は、ログインする前にアカウントの作成を行ってください。
-[http://join.secondlife.com/?lang=ja-JP] で新しいアカウントを作成しますか?
-		<usetemplate name="okcancelbuttons" notext="続行" yestext="新規アカウント..."/>
-	</notification>
-	<notification name="LoginPacketNeverReceived">
-		接続がなかなかできません。 お使いのインターネット接続か、[SECOND_LIFE_GRID] の問題と考えられます。
-
-インターネット接続を確認してから数分後に再接続するか、ヘルプをクリックして [SUPPORT_SITE] をご覧になるか、テレポートをクリックしてホームに移動してみてください。
-		<url name="url">
-			http://jp.secondlife.com/support/
-		</url>
-		<form name="form">
-			<button name="OK" text="OK"/>
-			<button name="Help" text="ヘルプ"/>
-			<button name="Teleport" text="テレポート"/>
-		</form>
-	</notification>
-	<notification name="WelcomeChooseSex">
-		まもなくあなたのアバターが表示されます。
-
-矢印キーを使用して歩きます。
-ヘルプが必要なときや [SECOND_LIFE] について知りたいときは、
-F1 キーを押してください。
-男性あるいは女性のアバターを選択してください。
-あなたの決定は後で変更できます。
-		<usetemplate name="okcancelbuttons" notext="女性" yestext="男性"/>
-	</notification>
-	<notification name="CantTeleportToGrid">
-		現在のグリッド([CURRENT_GRID])とはグリッド([GRID])が異なるため、[SLURL] にテレポートできませんでした。   ビューワを閉じてからもう一度お試しください。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="GeneralCertificateError">
-		サーバーに接続できませんでした。
-[REASON]
-
-サブジェクト名: [SUBJECT_NAME_STRING]
-発行元: [ISSUER_NAME_STRING]
-有効日: [VALID_FROM]
-次の更新日: [VALID_TO]
-MD5 フィンガープリント: [SHA1_DIGEST]
-SHA1 フィンガープリント: [MD5_DIGEST]
-キー使用法: [KEYUSAGE]
-拡張キー使用法: [EXTENDEDKEYUSAGE]
-サブジェクトキー認識別子: [SUBJECTKEYIDENTIFIER]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="TrustCertificateError">
-		このサーバーの認証機関は不明です。
-
-認証情報:
-サブジェクト名: [SUBJECT_NAME_STRING]
-発行元: [ISSUER_NAME_STRING]
-有効日: [VALID_FROM]
-次の更新日: [VALID_TO]
-MD5 フィンガープリント: [SHA1_DIGEST]
-SHA1 フィンガープリント: [MD5_DIGEST]
-キー使用法: [KEYUSAGE]
-拡張キー使用法: [EXTENDEDKEYUSAGE]
-サブジェクトキー認識別子: [SUBJECTKEYIDENTIFIER]
-
-この認証局を信頼しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="信用する"/>
-	</notification>
-	<notification name="NotEnoughCurrency">
-		[NAME] L$[PRICE] 残高不足のため実行不可です。
-	</notification>
-	<notification name="GrantedModifyRights">
-		[NAME] は、あなたにオブジェクトの編集権限を与えました。
-	</notification>
-	<notification name="RevokedModifyRights">
-		[NAME] のオブジェクトを編集する権限は取り消されました。
-	</notification>
-	<notification name="FlushMapVisibilityCaches">
-		このリージョンの地図のキャッシュを消去します。
-デバッグ目的のみに便利な操作です。
-(作成中は 5 分間経つと、全員の地図が再度ログイン後に更新されます)
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="BuyOneObjectOnly">
-		一度に 1 つ以上のオブジェクトを買うことはできません。  オブジェクトを 1 つだけ選んでもう一度お試しください。
-	</notification>
-	<notification name="OnlyCopyContentsOfSingleItem">
-		一度に複数のアイテムの中身をコピーできません。
-オブジェクトを 1 つだけ選択して、もう一度お試しください。
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="KickUsersFromRegion">
-		このリージョンにいる全ての住人をホームにテレポートしますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="EstateObjectReturn">
-		[USER_NAME] が所有しているオブジェクトを返却しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="InvalidTerrainBitDepth">
-		地域テクスチャを設定できませんでした:
-地形テクスチャ[TEXTURE_NUM]は、無効のビット深度[TEXTURE_BIT_DEPTH]です。
-
-テクスチャ[TEXTURE_NUM]を24ビット512x512かそれ以下のイメージと交換し、「適用」を再度クリックしてください。
-	</notification>
-	<notification name="InvalidTerrainSize">
-		地域テクスチャを設定できませんでした:
-地形テクスチャ「 [TEXTURE_NUM] 」は、[TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y] では大きすぎます。
-
-「 [TEXTURE_NUM] 」を 24 ビット 512x512 かそれ以下のイメージと交換し、「適用」を再度クリックしてください。
-	</notification>
-	<notification name="RawUploadStarted">
-		アップロードを開始しました。 接続速度によっては、最大 2 分間かかります。
-	</notification>
-	<notification name="ConfirmBakeTerrain">
-		現在の地形を構築しようとしています。
-この操作を行うと、現在の地形が上昇・下降の制限範囲の中心となり、「復元」ツールのデフォルトになります。
-操作を続行しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="MaxAllowedAgentOnRegion">
-		許可住人は [MAX_AGENTS] 人までです。
-	</notification>
-	<notification name="MaxBannedAgentsOnRegion">
-		禁止住人は [MAX_BANNED] 人までです。
-	</notification>
-	<notification name="MaxAgentOnRegionBatch">
-		[NUM_ADDED] 個のエージェントを追加しようとして失敗しました: [MAX_AGENTS] [LIST_TYPE] 制限を [NUM_EXCESS] 個超過しています。
-	</notification>
-	<notification name="MaxAllowedGroupsOnRegion">
-		許可グループは [MAX_GROUPS] グループまでです。
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="構築する"/>
-	</notification>
-	<notification name="MaxManagersOnRegion">
-		不動産マネージャーは [MAX_MANAGER] 人までです。
-	</notification>
-	<notification name="OwnerCanNotBeDenied">
-		不動産オーナーを不動産の「禁止住人」リストに追加できません。
-	</notification>
-	<notification name="CanNotChangeAppearanceUntilLoaded">
-		衣類およびシェイプが読み込まれるまでは、容姿の変更はできません。
-	</notification>
-	<notification name="ClassifiedMustBeAlphanumeric">
-		クラシファイド広告の名前は、アルファベットか数字で始めます。句読点では始められません。
-	</notification>
-	<notification name="CantSetBuyObject">
-		オブジェクトが販売対象ではないため、オブジェクトの購入ができません。
-販売対象のオブジェクトを指定してもう一度試してください。
-	</notification>
-	<notification name="FinishedRawDownload">
-		未加工の地形ファイルをダウンロードしました:
-[DOWNLOAD_PATH]
-	</notification>
-	<notification name="DownloadWindowsMandatory">
-		[APP_NAME] の最新バージョンがご利用可能です。
-[MESSAGE]
-[APP_NAME] をご利用になるにはこのアップデートは必須です。
-		<usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/>
-	</notification>
-	<notification name="DownloadWindows">
-		[APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
-		<usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
-	</notification>
-	<notification name="DownloadWindowsReleaseForDownload">
-		[APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
-		<usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
-	</notification>
-	<notification name="DownloadLinuxMandatory">
-		[APP_NAME] の最新バージョンがご利用可能です。
-[MESSAGE]
-[APP_NAME] をご利用になるにはこのアップデートは必須です。
-		<usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/>
-	</notification>
-	<notification name="DownloadLinux">
-		[APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
-		<usetemplate name="okcancelbuttons" notext="続ける" yestext="ダウンロード"/>
-	</notification>
-	<notification name="DownloadLinuxReleaseForDownload">
-		[APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
-		<usetemplate name="okcancelbuttons" notext="続ける" yestext="ダウンロード"/>
-	</notification>
-	<notification name="DownloadMacMandatory">
-		[APP_NAME] の最新バージョンがご利用可能です。
-[MESSAGE]
-[APP_NAME] をご利用になるにはこのアップデートは必須です。
-
-あなたのアプリケーションフォルダにダウンロードしますか?
-		<usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/>
-	</notification>
-	<notification name="DownloadMac">
-		[APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
-
-あなたのアプリケーションフォルダにダウンロードしますか?
-		<usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
-	</notification>
-	<notification name="DownloadMacReleaseForDownload">
-		[APP_NAME] のアップデートバージョンがご利用可能です。
-[MESSAGE]
-このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。
-
-あなたのアプリケーションフォルダにダウンロードしますか?
-		<usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/>
-	</notification>
-	<notification name="FailedUpdateInstall">
-		ビューワのアップデートをインストール中にエラーが発生しました。
-http://secondlife.com/download から最新バージョンをダウンロードしてインストールしてください。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="FailedRequiredUpdateInstall">
-		必要なアップデートをインストールできませんでした。 
-[APP_NAME] がアップデートされるまでログインできません。
-
-http://secondlife.com/download から最新バージョンをダウンロードしてインストールしてください。
-		<usetemplate name="okbutton" yestext="終了"/>
-	</notification>
-	<notification name="UpdaterServiceNotRunning">
-		お使いの Second Life に必要なアップデートがインストールされていません。
-
-このアップデートは、http://www.secondlife.com/downloads からダウンロードして、今すぐインストールできます。
-		<usetemplate name="okcancelbuttons" notext="終了" yestext="今すぐダウンロードしてインストール"/>
-	</notification>
-	<notification name="DownloadBackgroundTip">
-		お使いの [APP_NAME] に必要なアップデートをダウンロードしました。
-バージョン [VERSION] [[RELEASE_NOTES_FULL_URL] このアップデートに関する情報]
-		<usetemplate name="okcancelbuttons" notext="後で実行" yestext="今すぐインストールして [APP_NAME] を再起動"/>
-	</notification>
-	<notification name="DownloadBackgroundDialog">
-		お使いの [APP_NAME] に必要なアップデートをダウンロードしました。
-バージョン [VERSION] [[RELEASE_NOTES_FULL_URL] このアップデートに関する情報]
-		<usetemplate name="okcancelbuttons" notext="後で実行" yestext="今すぐインストールして [APP_NAME] を再起動"/>
-	</notification>
-	<notification name="RequiredUpdateDownloadedVerboseDialog">
-		必要なソフトウェアのアップデートをダウンロードしました。
-バージョン [VERSION]
-
-アップデートをインストールするには [APP_NAME] を再起動する必要があります。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="RequiredUpdateDownloadedDialog">
-		アップデートをインストールするには [APP_NAME] を再起動する必要があります。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="DeedObjectToGroup">
-		このオブジェクトを譲渡するとグループは以下のことが可能です:
-* オブジェクトに支払われた L$ を受領します。
-		<usetemplate ignoretext="オブジェクトをグループに譲渡する前の確認" name="okcancelignore" notext="取り消し" yestext="譲渡"/>
-	</notification>
-	<notification name="WebLaunchExternalTarget">
-		Web ブラウザを開いてこのコンテンツを表示しますか?
-		<usetemplate ignoretext="ブラウザを起動して Web ページを見るとき" name="okcancelignore" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchJoinNow">
-		[http://jp.secondlife.com/account/ マイアカウント] ページに移動してアカウントを管理しますか?
-		<usetemplate ignoretext="ブラウザを起動してアカウントを管理するとき" name="okcancelignore" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchSecurityIssues">
-		[SECOND_LIFE] Wiki で、セキュリティ問題を報告する方法をご覧ください。
-		<usetemplate ignoretext="ブラウザを起動してセキュリティ問題の報告の仕方を確認するとき" name="okcancelignore" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchQAWiki">
-		[SECOND_LIFE] 品質保証関連 Wiki をご覧ください。
-		<usetemplate ignoretext="ブラウザを起動して QA Wiki を見るとき" name="okcancelignore" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchPublicIssue">
-		[SECOND_LIFE] のパブリック問題トラッカーで、
-バグやその他の問題を報告できます。
-		<usetemplate ignoretext="ブラウザを起動してパブリック問題トラッカーを使用するとき" name="okcancelignore" notext="キャンセル" yestext="ページへ行く"/>
-	</notification>
-	<notification name="WebLaunchSupportWiki">
-		Linden 公式ブログで、最新のニュースや情報を入手してください。
-		<usetemplate ignoretext="ブラウザを起動して公式ブログを見るとき" name="okcancelignore" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchLSLGuide">
-		スクリプトガイドを開きますか?
-		<usetemplate ignoretext="ブラウザを起動してスクリプトガイドを見るとき" name="okcancelignore" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchLSLWiki">
-		LSL ポータルでスクリプトに関する情報を確認しますか?
-		<usetemplate ignoretext="ブラウザを起動して LSL ポータルを見るとき" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
-	</notification>
-	<notification name="ReturnToOwner">
-		選択したオブジェクトを、所有者に返却しますか?
-「再販・プレゼント可」の譲渡されたオブジェクトは、以前の所有者に返却されます。
-
-*警告* 「再販・プレゼント不可」の譲渡されたオブジェクトは、削除されます!
-		<usetemplate ignoretext="オブジェクトを所有者に返却する前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="GroupLeaveConfirmMember">
-		現在あなたは [GROUP] のメンバーです。
-このグループを抜けますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmKick">
-		本当に住人全員をグリッドから追い出しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="住人全員を追い出す"/>
-	</notification>
-	<notification name="MuteLinden">
-		リンデンをブロックすることはできません。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CannotStartAuctionAlreadyForSale">
-		既に売り出し中の区画なのでオークションにかけることはできません。  オークションにかけたい場合は売り出し設定を解除してから行ってください。
-	</notification>
-	<notification label="名前でのオブジェクトのブロックに失敗しました" name="MuteByNameFailed">
-		この名前は既にブロック済みです。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="RemoveItemWarn">
-		コンテンツを削除すると、許可があってもオブジェクトに損傷を与えることがあります。
-削除を続けますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="CantOfferCallingCard">
-		現在コーリングカードを送れません。数分後にもう一度お試しください。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CantOfferFriendship">
-		現在フレンドシップを送れません。数分後にもう一度お試しください。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="BusyModeSet">
-		取り込み中モードになりました。
-チャットとインスタントメッセージは表示されません。 受信するインスタントメッセージには取り込み中返答メッセージが表示されます。 テレポートのオファーは受け取り拒否となります。 アイテムのオファーはすべてごみ箱に入ります。
-		<usetemplate ignoretext="ログイン状態を取り込み中モードに変更するとき" name="okignore" yestext="OK"/>
-	</notification>
-	<notification name="JoinedTooManyGroupsMember">
-		加入できるグループの最大限に達しました。 このグループに加入するために他のグループを脱退するか、この申し入れを断ってください。
-[NAME] があなたをグループのメンバーとして勧誘しています。
-		<usetemplate name="okcancelbuttons" notext="辞退" yestext="参加"/>
-	</notification>
-	<notification name="JoinedTooManyGroups">
-		加入できるグループの最大限に達しました。 新しくグループに参加、または作成する前に、どれかグループから抜けてください。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="KickUser">
-		どのようなメッセージを添えてこの住人を追い出しますか?
-		<form name="form">
-			<input name="message">
-				あなたは管理者によりログオフされました。
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="取り消し"/>
-		</form>
-	</notification>
-	<notification name="KickAllUsers">
-		どのようなメッセージをつけてグリッドにいる全員を追い出しますか?
-		<form name="form">
-			<input name="message">
-				あなたは管理者によりログオフされました。
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="取り消し"/>
-		</form>
-	</notification>
-	<notification name="FreezeUser">
-		どのようなメッセージを添えてこの住人をフリーズしますか?
-		<form name="form">
-			<input name="message">
-				あなたはフリーズされています。 動くこともチャットすることもできません。 管理者が IM であなたに連絡します。
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="取り消し"/>
-		</form>
-	</notification>
-	<notification name="UnFreezeUser">
-		どのようなメッセージを添えてこの住人のフリーズを解除しますか?
-		<form name="form">
-			<input name="message">
-				もうフリーズされていません。
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="取り消し"/>
-		</form>
-	</notification>
-	<notification name="SetDisplayNameSuccess">
-		[DISPLAY_NAME] さん、
-
-現実の世界と同じく、Second Life でも新しい名前が浸透するには時間がかかります。オブジェクト、スクリプト、検索などで名前が更新されるまでに([http://wiki.secondlife.com/wiki/Setting_your_display_name your name to update])数日かかりますのでご了承ください。
-	</notification>
-	<notification name="SetDisplayNameBlocked">
-		申し訳ありませんが、現在表示名は変更できません。システムのエラーだと思われる場合は、サポートにお問い合わせください。
-	</notification>
-	<notification name="SetDisplayNameFailedLength">
-		申し訳ありませんが、その名前は長すぎます。表示名は最長 [LENGTH] 文字までです。
-
-もう少し短い名前をお試しください。
-	</notification>
-	<notification name="SetDisplayNameFailedGeneric">
-		申し訳ありませんが、表示名を設定できませんでした。あとでもう一度お試しください。
-	</notification>
-	<notification name="SetDisplayNameMismatch">
-		入力した表示名が一致しません。もう一度入力してください。
-	</notification>
-	<notification name="AgentDisplayNameUpdateThresholdExceeded">
-		しばらくは表示名を変更できません。
-
-http://wiki.secondlife.com/wiki/Setting_your_display_name を参照してください。
-
-あとでもう一度お試しください。
-	</notification>
-	<notification name="AgentDisplayNameSetBlocked">
-		申し訳ありませんが、リクエストされた名前は禁句を含むために設定できませんでした。
- 
-別の名前をお試しください。
-	</notification>
-	<notification name="AgentDisplayNameSetInvalidUnicode">
-		設定しようとする表示名には使えない文字が含まれます。
-	</notification>
-	<notification name="AgentDisplayNameSetOnlyPunctuation">
-		表示名には句読点以外の文字を含む必要があります。
-	</notification>
-	<notification name="DisplayNameUpdate">
-		[OLD_NAME] ([SLID]) は [NEW_NAME] に変更されました。
-	</notification>
-	<notification name="OfferTeleport">
-		次のメッセージを添えて現在地にテレポートを送りますか?
-		<form name="form">
-			<input name="message">
-				[REGION] に来ませんか?
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="取り消し"/>
-		</form>
-	</notification>
-	<notification name="OfferTeleportFromGod">
-		現在地に住人をゴッドサモンしますか?
-		<form name="form">
-			<input name="message">
-				[REGION] に来ませんか?
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="取り消し"/>
-		</form>
-	</notification>
-	<notification name="TeleportFromLandmark">
-		このまま &lt;nolink&gt;[LOCATION]&lt;/nolink&gt; にテレポートしますか?
-		<usetemplate ignoretext="ランドマークにテレポートしたいかどうかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
-	</notification>
-	<notification name="TeleportToPick">
-		[PICK] にテレポートしますか?
-		<usetemplate ignoretext="ピックの場所にテレポートしたいかどうかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
-	</notification>
-	<notification name="TeleportToClassified">
-		[CLASSIFIED] にテレポートしますか?
-		<usetemplate ignoretext="クラシファイド広告の場所にテレポートしたいかどうかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
-	</notification>
-	<notification name="TeleportToHistoryEntry">
-		[HISTORY_ENTRY] にテレポートしますか?
-		<usetemplate ignoretext="履歴の場所にテレポートしたいかどうかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/>
-	</notification>
-	<notification label="あなたの不動産内の全員にメッセージを送信" name="MessageEstate">
-		今あなたの不動産にいる人全員に送る、短いメッセージを入力してください。
-		<form name="form">
-			<input name="message"/>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="取り消し"/>
-		</form>
-	</notification>
-	<notification label="Lindenの不動産を変更" name="ChangeLindenEstate">
-		リンデンが所有するエステート(メインランド、ティーングリッド、オリエンテーションなど)を変更しようとしています。
-
-住人の体験に根本的に影響を与えるため、非常に危険な行為です。  メインランドでは、何千というリージョンが変更による影響を受け、そのためスペースサーバーに負担をかけることになります。
-
-それでも続けますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification label="Lindenの不動産へのアクセスを変更" name="ChangeLindenAccess">
-		あなたはリンデン所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)へのアクセスリストを変更しようとしています。
-
-この行為は「危険」であり、グリッドからオブジェクトやお金の転送をもたらすハッキングを引き起こす可能性があるため、完全にそれを意図した場合のみ行うべきものです。
-これにより多数のリージョン(地域)が変更され、スペースサーバーに悪影響が生じます。
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification label="不動産を選択" name="EstateAllowedAgentAdd">
-		この不動産限定の許可リストに追加しますか? それとも [ALL_ESTATES] の許可リストに追加しますか?
-		<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
-	</notification>
-	<notification label="不動産を選択" name="EstateAllowedAgentRemove">
-		この不動産限定の許可リストから削除しますか? それとも、[ALL_ESTATES] から削除しますか?
-		<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
-	</notification>
-	<notification label="不動産を選択" name="EstateAllowedGroupAdd">
-		この不動産限定のグループ許可リストに追加しますか? それとも [ALL_ESTATES] のグループ許可リストに追加しますか?
-		<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
-	</notification>
-	<notification label="不動産を選択" name="EstateAllowedGroupRemove">
-		この不動産限定の許可リストから削除しますか? それとも、[ALL_ESTATES] から削除しますか?
-		<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
-	</notification>
-	<notification label="不動産を選択" name="EstateBannedAgentAdd">
-		この不動産限定でアクセスを拒否しますか? それとも [ALL_ESTATE] へのアクセスを拒否しますか?
-		<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
-	</notification>
-	<notification label="不動産を選択" name="EstateBannedAgentRemove">
-		この住人が、この不動産限定、または [ALL_ESTATES] にアクセスできるように、禁止リストから削除しますか?
-		<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
-	</notification>
-	<notification label="不動産を選択" name="EstateManagerAdd">
-		この不動産限定、または [ALL_ESTATES] の不動産マネージャーを追加しますか?
-		<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
-	</notification>
-	<notification label="不動産を選択" name="EstateManagerRemove">
-		不動産マネージャーを、この不動産限定、または [ALL_ESTATES] から、削除しますか?
-		<usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/>
-	</notification>
-	<notification label="キックを確認" name="EstateKickUser">
-		この不動産から [EVIL_USER] を追い出しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="EstateChangeCovenant">
-		不動産約款を変更しようとしています。続けますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="RegionEntryAccessBlocked">
-		あなたのレーティング区分により、そのリージョン(地域)へは入ることができません。 年齢を確認する際の情報に不足があったためと考えられます。
-
-最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="RegionEntryAccessBlocked_KB">
-		あなたのレーティング区分により、そのリージョン(地域)へは入ることができません。
-
-ナレッジベースを開きレーティング区分について学びますか?
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/ja
-		</url>
-		<usetemplate ignoretext="レーティング区分の制限のため、リージョンに入ることができないとき" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
-	</notification>
-	<notification name="RegionEntryAccessBlocked_Notify">
-		あなたのレーティング区分により、そのリージョン(地域)へは入ることができません。
-	</notification>
-	<notification name="RegionEntryAccessBlocked_Change">
-		レーティング区分に関する設定により、その地域(リージョン)には立ち入れません。
-
-その地域に入るには、あなたのレーティング区分の設定を変更してください。変更すると、[REGIONMATURITY]のコンテンツの検索やアクセスが可能になります。変更内容を元に戻すには、ミー &gt; 環境設定 &gt; 一般を選択してください。
-		<form name="form">
-			<button name="OK" text="環境設定の変更"/>
-			<button default="true" name="Cancel" text="閉じる"/>
-			<ignore name="ignore" text="選択したレーティング区分が原因で、リージョンに入れないとき"/>
-		</form>
-	</notification>
-	<notification name="PreferredMaturityChanged">
-		あなたのレーティング区分設定は現在 [RATING] です。
-	</notification>
-	<notification name="LandClaimAccessBlocked">
-		あなたのレーティング区分により、この土地を取得することはできません。 年齢を確認する際の情報に不足があったためと考えられます。
-
-最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="LandClaimAccessBlocked_KB">
-		あなたのレーティング区分により、この土地を取得することはできません。
-
-ナレッジベースを開きレーティング区分について学びますか?
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/ja
-		</url>
-		<usetemplate ignoretext="レーティング区分の制限のため、この土地を取得できません" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
-	</notification>
-	<notification name="LandClaimAccessBlocked_Notify">
-		あなたのレーティング区分により、この土地を取得することはできません。
-	</notification>
-	<notification name="LandClaimAccessBlocked_Change">
-		あなたのレーティング区分設定により、この土地を取得することはできません。
-
-「設定を変更」をクリックしてあなたのレーティング区分を上げると、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。 あとで設定を元に戻したい場合は、「編集」>「環境設定」をご覧ください。
-		<usetemplate ignoretext="選択したレーティング区分が原因で、土地を取得できないとき" name="okcancelignore" notext="閉じる" yestext="設定の変更"/>
-	</notification>
-	<notification name="LandBuyAccessBlocked">
-		あなたのレーティング区分により、この土地を購入することはできません。 年齢を確認する際の情報に不足があったためと考えられます。
-
-最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="LandBuyAccessBlocked_KB">
-		あなたのレーティング区分により、この土地を購入することはできません。
-
-ナレッジベースを開きレーティング区分について学びますか?
-		<url name="url">
-			http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/ja
-		</url>
-		<usetemplate ignoretext="レーティング区分の制限のため、この土地を購入できません" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/>
-	</notification>
-	<notification name="LandBuyAccessBlocked_Notify">
-		あなたのレーティング区分により、この土地を購入することはできません。
-	</notification>
-	<notification name="LandBuyAccessBlocked_Change">
-		あなたのレーティング区分設定により、この土地を購入することができません。
-
-「設定を変更」をクリックしてあなたのレーティング区分を上げると、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。 あとで設定を元に戻したい場合は、「編集」>「環境設定」をご覧ください。
-		<usetemplate ignoretext="選択したレーティング区分が原因で、土地を購入できないとき" name="okcancelignore" notext="閉じる" yestext="設定の変更"/>
-	</notification>
-	<notification name="TooManyPrimsSelected">
-		選択したプリムが多すぎます。  [MAX_PRIM_COUNT] 個選択するか、プリム数を減らしてもう一度お試しください。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ProblemImportingEstateCovenant">
-		不動産約款のインポート時に問題が発生しました。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ProblemAddingEstateManager">
-		新しい不動産マネージャーの追加に関する問題:
-いずれかの不動産のマネージャーリストが満杯になっています。
-	</notification>
-	<notification name="ProblemAddingEstateGeneric">
-		不動産リストの追加に関する問題:
-いずれかの不動産のリストが満杯になっています。
-	</notification>
-	<notification name="UnableToLoadNotecardAsset">
-		現在ノートカードのアセット ID を読み込むことができません。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="NotAllowedToViewNotecard">
-		要求したアセット ID に関するノートカードを閲覧するには、権限が不十分です。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="MissingNotecardAssetID">
-		ノートカード用のアセット ID がデータベースに登録されていません。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="PublishClassified">
-		注意:クラシファイド広告の料金は払い戻しされません。
-
-L$ [AMOUNT] で、このクラシファイド広告を今すぐ公開しますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="SetClassifiedMature">
-		この広告に「Moderate」コンテンツは含まれていますか?
-		<usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="SetGroupMature">
-		このグループに「Moderate」コンテンツが含まれていますか?
-		<usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification label="再起動を確認" name="ConfirmRestart">
-		このリージョンを 2 分後に再起動しようとしています。
-続けますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification label="このリージョンにメッセージを送信" name="MessageRegion">
-		このリージョンにいる人全員に送る短いメッセージを入力してください。
-		<form name="form">
-			<input name="message"/>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="取り消し"/>
-		</form>
-	</notification>
-	<notification label="地域のレーティング区分指定変更済み" name="RegionMaturityChange">
-		このリージョン(地域)のレーティング区分がアップデートされました。
-地図に変更が反映されるまで数分かかることがあります。
-
-Adult 専用リージョンに入るには、住人のアカウントが年齢確認か支払方法のいずれかで「確認済み」でなければなりません。
-	</notification>
-	<notification label="ボイスバージョンの不一致" name="VoiceVersionMismatch">
-		[APP_NAME] のこのバージョンは、このリージョンにおけるボイスチャットの互換性がありません。 ボイスチャットを正常に行うためには、[APP_NAME] のアップデートが必要です。
-	</notification>
-	<notification label="オブジェクトを購入できません" name="BuyObjectOneOwner">
-		複数の所有者から同時にオブジェクトを購入することはできません。
-単一のオブジェクトを選択し、もう一度試してください。
-	</notification>
-	<notification label="コンテンツを購入できません" name="BuyContentsOneOnly">
-		一度に複数のオブジェクトのコンテンツは購入できません。
-選択するオブジェクトを1つだけにして、もう一度試してください。
-	</notification>
-	<notification label="コンテンツを購入できません" name="BuyContentsOneOwner">
-		複数の所有者から同時にオブジェクトを購入することはできません。
-単一のオブジェクトを選択し、もう一度試してください。
-	</notification>
-	<notification name="BuyOriginal">
-		オリジナルのオブジェクトを [OWNER] から L$ [PRICE] で購入しますか?
-購入すると、あなたがオブジェクトの所有者となります。
-可能な操作は、
-修正:[MODIFYPERM]、コピー:[COPYPERM]、
-再販・プレゼント:[RESELLPERM] です。
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="BuyOriginalNoOwner">
-		L$ [PRICE] でオリジナルのオブジェクトを購入しますか?
-購入すると、あなたがオブジェクトの所有者となります。
-可能な操作は、
-修正:[MODIFYPERM]、コピー:[COPYPERM]、
-再販・プレゼント:[RESELLPERM] です。
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="BuyCopy">
-		コピーを [OWNER] から L$ [PRICE] で購入しますか?
-購入したオブジェクトは、あなたの「持ち物」にコピーされます。
-可能な操作は、
-修正:[MODIFYPERM]、コピー:[COPYPERM]、
-再販・プレゼント:[RESELLPERM] です。
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="BuyCopyNoOwner">
-		L$ [PRICE] でコピーを購入しますか?
-購入したオブジェクトは、あなたの「持ち物」にコピーされます。
-可能な操作は、
-修正:[MODIFYPERM]、コピー:[COPYPERM]、
-再販・プレゼント:[RESELLPERM] です。
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="BuyContents">
-		中身を [OWNER] から L$ [PRICE] で購入しますか?
-購入した中身は、あなたの「持ち物」にコピーされます。
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="BuyContentsNoOwner">
-		L$ [PRICE] で中身を購入しますか?
-購入した中身は、あなたの「持ち物」にコピーされます。
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmPurchase">
-		この取引は以下のとおり行われます:
-[ACTION]
-
-購入を続けますか?
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmPurchasePassword">
-		この取引は以下のとおり行われます:
-[ACTION]
-
-購入を続けますか?
-パスワードを再入力し、「 OK 」をクリックしてください。
-		<form name="form">
-			<input name="message"/>
-			<button name="ConfirmPurchase" text="OK"/>
-			<button name="Cancel" text="取り消し"/>
-		</form>
-	</notification>
-	<notification name="SetPickLocation">
-		メモ:
-本ピックの位置を更新しましたが、
-他の詳細は元の値のままになります。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="MoveInventoryFromObject">
-		「コピー不可」の持ち物アイテムを選択しました。
-これらのアイテムはコピーされないまま、あなたの「持ち物」に移動されます。
-
-
-アイテムを動かしますか?
-		<usetemplate ignoretext="「コピー不可」のアイテムをオブジェクトから動かす前の警告" name="okcancelignore" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="MoveInventoryFromScriptedObject">
-		「コピー不可」の持ち物アイテムを選択しました。
-これらのアイテムはコピーされずに、あなたの「持ち物」に移動されます。
-このオブジェクトはスクリプト付きなので、「持ち物」に移動させると
-スクリプトに誤動作が起きる可能性があります。
-
-持ち物アイテムを移動しますか?
-		<usetemplate ignoretext="スクリプト入りのオブジェクトを壊す恐れのある「コピー不可」のアイテムを動かす前の警告" name="okcancelignore" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ClickActionNotPayable">
-		警告: クリックで「オブジェクトに支払う」設定をしました。スクリプトに money()イベントが追加されると動作します。
-		<form name="form">
-			<ignore name="ignore" text="オブジェクトを作成中に、money() スクリプトを入れずに「オブジェクトに支払う」アクションを設定したとき"/>
-		</form>
-	</notification>
-	<notification name="OpenObjectCannotCopy">
-		このオブジェクトには、あなたがコピーできるアイテムはありません。
-	</notification>
-	<notification name="WebLaunchAccountHistory">
-		[http://jp.secondlife.com/account/ マイアカウント] ページに移動してアカウント履歴を確認しますか?
-		<usetemplate ignoretext="ブラウザを起動してアカウント履歴を見るとき" name="okcancelignore" notext="取り消し" yestext="ページに移動"/>
-	</notification>
-	<notification name="ConfirmQuit">
-		終了しようとしています。続けますか?
-		<usetemplate ignoretext="終了時の確認" name="okcancelignore" notext="終了しない" yestext="終了"/>
-	</notification>
-	<notification name="DeleteItems">
-		[QUESTION]
-		<usetemplate ignoretext="アイテムを削除する前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="HelpReportAbuseEmailLL">
-		このツールを利用して [http://secondlife.com/corporate/tos.php 利用規約] や [http://jp.secondlife.com/corporate/cs.php コミュニティスタンダード] の違反を報告してください。
-
-報告された嫌がらせはすべて調査・解決されます。
-	</notification>
-	<notification name="HelpReportAbuseSelectCategory">
-		嫌がらせ報告のカテゴリを選択してください。
-カテゴリを選択することにより、嫌がらせ報告の処理や保管に大変役立ちます。
-	</notification>
-	<notification name="HelpReportAbuseAbuserNameEmpty">
-		嫌がらせ行為をした人の名前を入力してください。
-正確な情報の入力により、嫌がらせ報告の処理や保管に大変役立ちます。
-	</notification>
-	<notification name="HelpReportAbuseAbuserLocationEmpty">
-		嫌がらせがあった場所を入力してください。
-正確な情報の入力により、嫌がらせ報告の処理や保管に大変役立ちます。
-	</notification>
-	<notification name="HelpReportAbuseSummaryEmpty">
-		嫌がらせの概要を入力してください。
-正確な概要の入力により、
-嫌がらせ報告の処理や保管に大変役立ちます。
-	</notification>
-	<notification name="HelpReportAbuseDetailsEmpty">
-		嫌がらせの詳細な説明を入力してください。
-名前や嫌がらせの詳細を、できるだけ具体的に入力してください。
-
-正確な説明の入力により、
-嫌がらせ報告の処理や保管に大変役立ちます。
-	</notification>
-	<notification name="HelpReportAbuseContainsCopyright">
-		こんにちは、
-
-知的財産権の侵害を報告しようとしています。 正確に報告するために、以下をご確認ください:
-
-(1) 嫌がらせの報告の手順 住人が [SECOND_LIFE] の権限システムを悪用しているのを見つけたら、嫌がらせの報告をすることができます。例えば、CopyBot や似たようなコピーツールを使用して知的財産権を侵害している場合です。 担当チームは調査を行い、[SECOND_LIFE] [http://secondlife.com/corporate/tos.php 利用規約] や [http://jp.secondlife.com/corporate/cs.php コミュニティスタンダード] に違反する行為に対する適切な処罰を下します。  ただし、担当チームは [SECOND_LIFE] の世界からコンテンツを削除して欲しいというリクエストには応じません。
-
-(2) DMCA またはコンテンツの撤去の手順 コンテンツを [SECOND_LIFE] から削除して欲しいというリクエストをするには、弊社 [http://secondlife.com/corporate/dmca.php DMCA ポリシー] で提示されているとおり、有効な侵害の通知を提出しなければなりません。.
-
-このまま嫌がらせの報告を続けたい場合は、このウィンドウを閉じて報告を送ってください。  「コピー Bot 及び権限の悪用」のカテゴリを選んだ方が適切の場合があります。
-
-ご協力ありがとうございます。
-
-Linden Lab
-	</notification>
-	<notification name="FailedRequirementsCheck">
-		以下の必要なコンポーネントが、[FLOATER] から抜け落ちています
-[COMPONENTS]
-	</notification>
-	<notification label="既存の付属品を置換" name="ReplaceAttachment">
-		体のこの部位には既にオブジェクトが装着されています。
-選択されたオブジェクトと置き換えますか?
-		<form name="form">
-			<ignore name="ignore" save_option="true" text="装着しているアイテムと選択したアイテムを入れ替えるとき"/>
-			<button ignore="自動的に交換" name="Yes" text="OK"/>
-			<button ignore="交換しない" name="No" text="キャンセル"/>
-		</form>
-	</notification>
-	<notification label="取り込み中の警告" name="BusyModePay">
-		現在、「取り込み中」モードのため、支払いと引き換えにアイテムを受け取ることができません。
-
-この取引を行うために「取り込み中」の設定を解除しますか?
-		<form name="form">
-			<ignore name="ignore" save_option="true" text="取り込み中モード時に支払をするとき"/>
-			<button ignore="常に「取り込み中」の設定を解除" name="Yes" text="OK"/>
-			<button ignore="常に「取り込み中」の設定を継続" name="No" text="キャンセル"/>
-		</form>
-	</notification>
-	<notification name="ConfirmDeleteProtectedCategory">
-		「 [FOLDERNAME] 」 は、システムフォルダです。 システムフォルダを削除すると不安定になることがあります。  続けますか?
-		<usetemplate ignoretext="システムフォルダを削除する前の確認" name="okcancelignore" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmEmptyTrash">
-		ごみ箱の中身をすべて削除しますか?
-		<usetemplate ignoretext="持ち物のごみ箱フォルダを空にする前の確認" name="okcancelignore" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmClearBrowserCache">
-		トラベル、Web、検索の履歴をすべて削除しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmClearCookies">
-		本当にクッキーをクリアしますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/>
-	</notification>
-	<notification name="ConfirmClearMediaUrlList">
-		保存された URL のリストを消去します。よろしいですか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/>
-	</notification>
-	<notification name="ConfirmEmptyLostAndFound">
-		紛失物の中身をすべて削除しますか?
-		<usetemplate ignoretext="紛失物フォルダを空にする前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="CopySLURL">
-		次の SLurl がクリップボードにコピーされました:
- [SLURL]
-
-Web ページにリンクすると、他人がこの場所に簡単にアクセスできます。Web ブラウザのアドレスバーに貼り付けて試してみてください。
-		<form name="form">
-			<ignore name="ignore" text="クリップボードに SLurl をコピーするとき"/>
-		</form>
-	</notification>
-	<notification name="WLSavePresetAlert">
-		保存された事前設定を上書きしますか?
-		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="WLDeletePresetAlert">
-		「 [SKY] 」を削除しますか?
-		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="WLNoEditDefault">
-		デフォルトの設定を編集したり削除したりすることはできません。
-	</notification>
-	<notification name="WLMissingSky">
-		このデイサイクルのファイルは次の存在しない「空」ファイルを参照しています: [SKY]。
-	</notification>
-	<notification name="PPSaveEffectAlert">
-		ポストプロセス効果が存在します。 上書きしますか?
-		<usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="NewSkyPreset">
-		新しい空の名前を指定してください。
-		<form name="form">
-			<input name="message">
-				新しい事前設定
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="キャンセル"/>
-		</form>
-	</notification>
-	<notification name="ExistsSkyPresetAlert">
-		事前設定がすでに存在します!
-	</notification>
-	<notification name="NewWaterPreset">
-		新しい水の事前設定の名前を指定してください。
-		<form name="form">
-			<input name="message">
-				新しい事前設定
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="キャンセル"/>
-		</form>
-	</notification>
-	<notification name="ExistsWaterPresetAlert">
-		事前設定がすでに存在します!
-	</notification>
-	<notification name="WaterNoEditDefault">
-		デフォルトの設定を編集したり削除したりすることはできません。
-	</notification>
-	<notification name="ChatterBoxSessionStartError">
-		[RECIPIENT] と新しいチャットを開始することができません。
-[REASON]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ChatterBoxSessionEventError">
-		[EVENT]
-[REASON]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ForceCloseChatterBoxSession">
-		[NAME] とのチャットセッションを閉じます。
-[REASON]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="Cannot_Purchase_an_Attachment">
-		オブジェクトが取り付けられているままでは購入できません。
-	</notification>
-	<notification label="引き出し許可のリクエストについて" name="DebitPermissionDetails">
-		このリクエストを許可すると、スクリプトであなたのアカウントからリンデンドルを引き出せるようになります。
-この許可を取り消すには、オブジェクトの所有者がオブジェクトを削除するか、オブジェクトのスクリプトをリセットしなければなりません。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AutoWearNewClothing">
-		作成する衣類を自動的に装着しますか?
-		<usetemplate ignoretext="「容姿」を編集中に、作成する衣類を装着するとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="NotAgeVerified">
-		年齢確認を済ませていないとこの区画を訪れることができません。  [SECOND_LIFE] サイトで年齢の確認を行いますか?
-
-[_URL]
-		<url name="url" option="0">
-			https://secondlife.com/account/verification.php?lang=ja
-		</url>
-		<usetemplate ignoretext="年齢の確認を済ませていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="Cannot enter parcel: no payment info on file">
-		支払情報が登録されていないとこのエリアを訪れることができません。  [SECOND_LIFE] サイトで登録を行いますか?
-
-[_URL]
-		<url name="url" option="0">
-			https://secondlife.com/account/index.php?lang=ja
-		</url>
-		<usetemplate ignoretext="支払情報が登録されていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="MissingString">
-		文字列 [STRING_NAME] が strings.xml に含まれていません。
-	</notification>
-	<notification name="SystemMessageTip">
-		[MESSAGE]
-	</notification>
-	<notification name="IMSystemMessageTip">
-		[MESSAGE]
-	</notification>
-	<notification name="Cancelled">
-		取り消されました。
-	</notification>
-	<notification name="CancelledSit">
-		座るのをやめました。
-	</notification>
-	<notification name="CancelledAttach">
-		添付が取り消されました。
-	</notification>
-	<notification name="ReplacedMissingWearable">
-		欠落している衣類や身体部位をデフォルトに置き換えます。
-	</notification>
-	<notification name="GroupNotice">
-		件名: [SUBJECT]、メッセージ: [MESSAGE]
-	</notification>
-	<notification name="FriendOnline">
-		[NAME] はオンライン中です
-	</notification>
-	<notification name="FriendOffline">
-		[NAME] はオフライン中です
-	</notification>
-	<notification name="AddSelfFriend">
-		残念ながら自分自身をフレンド登録することはできません。
-	</notification>
-	<notification name="UploadingAuctionSnapshot">
-		インワールドと Web サイトのスナップショットをアップロード中です...
-(所要時間:約 5 分)
-	</notification>
-	<notification name="UploadPayment">
-		アップロードに L$ [AMOUNT] 支払いました。
-	</notification>
-	<notification name="UploadWebSnapshotDone">
-		Web サイトのスナップショットがアップロードされました。
-	</notification>
-	<notification name="UploadSnapshotDone">
-		インワールドでのスナップショットのアップロードが完了しました。
-	</notification>
-	<notification name="TerrainDownloaded">
-		raw 地形がダウンロードされました
-	</notification>
-	<notification name="GestureMissing">
-		ジェスチャーの [NAME] がデータベースに見つかりません。
-	</notification>
-	<notification name="UnableToLoadGesture">
-		[NAME] というジェスチャーを読み込むことができませんでした。
-	</notification>
-	<notification name="LandmarkMissing">
-		データベースにランドマークがありません。
-	</notification>
-	<notification name="UnableToLoadLandmark">
-		ランドマークを読み込めません。  もう一度お試しください。
-	</notification>
-	<notification name="CapsKeyOn">
-		CapsLock キーが有効になっています。
-パスワードに影響するかもしれません。
-	</notification>
-	<notification name="NotecardMissing">
-		ノートカードがデータベースにありません。
-	</notification>
-	<notification name="NotecardNoPermissions">
-		このノートカードを見る権限がありません。
-	</notification>
-	<notification name="RezItemNoPermissions">
-		オブジェクトを Rez するには権限が不足しています。
-	</notification>
-	<notification name="UnableToLoadNotecard">
-		ノートカードを読み込めません。あとで再度お試しください。
-	</notification>
-	<notification name="ScriptMissing">
-		データベースにスクリプトがありません。
-	</notification>
-	<notification name="ScriptNoPermissions">
-		スクリプトを閲覧するには権限が不十分です。
-	</notification>
-	<notification name="UnableToLoadScript">
-		スクリプトをロードできません。  もう一度試してください。
-	</notification>
-	<notification name="IncompleteInventory">
-		あなたの提供するコンテンツは、ローカルではまだ全部揃っていません。
-しばらくしてからもう一度お試しください。
-	</notification>
-	<notification name="CannotModifyProtectedCategories">
-		保護されたカテゴリは修正できません。
-	</notification>
-	<notification name="CannotRemoveProtectedCategories">
-		保護されたカテゴリは削除できません。
-	</notification>
-	<notification name="UnableToBuyWhileDownloading">
-		オブジェクトデータのダウンロード中は購入できません。
-もう一度お試しください。
-	</notification>
-	<notification name="UnableToLinkWhileDownloading">
-		オブジェクトデータのウンロード中はリンクできません。
-もう一度お試しください。
-	</notification>
-	<notification name="CannotBuyObjectsFromDifferentOwners">
-		オブジェクトは一度に一人の所有者から購入できます。
-オブジェクトを 1 つだけ選んでください。
-	</notification>
-	<notification name="ObjectNotForSale">
-		このオブジェクトは販売対象ではありません。
-	</notification>
-	<notification name="EnteringGodMode">
-		レベル [LEVEL] のゴッドモードに入ります
-	</notification>
-	<notification name="LeavingGodMode">
-		レベル [LEVEL] のゴッドモードを解除します
-	</notification>
-	<notification name="CopyFailed">
-		これをコピーする権限がありません。
-	</notification>
-	<notification name="InventoryAccepted">
-		[NAME] は、あなたが渡したアイテムを受け取りました。
-	</notification>
-	<notification name="InventoryDeclined">
-		[NAME] は、持ち物の提供を断りました。
-	</notification>
-	<notification name="ObjectMessage">
-		[NAME]: [MESSAGE]
-	</notification>
-	<notification name="CallingCardAccepted">
-		コーリングカードが受理されました。
-	</notification>
-	<notification name="CallingCardDeclined">
-		コーリングカードが拒否されました。
-	</notification>
-	<notification name="TeleportToLandmark">
-		画面右の「場所」パネルを開いて、「ランドマーク」タブを選ぶと、[NAME] といった場所にテレポートできます。 
-好きなランドマークをクリックして選び、次にパネル下の「テレポート」をクリックします。
-(ランドマークをダブルクリック、または右クリックして「テレポート」を選んでも同じです。)
-	</notification>
-	<notification name="TeleportToPerson">
-		画面右の「人」パネルを開いて、[NAME] といった住人に連絡を取ることができます。
-リストから住人を選択して、パネル下の「IM」をクリックします。
-(リストの名前をダブルクリック、または右クリックして「IM」を選んでも同じです。)
-	</notification>
-	<notification name="CantSelectLandFromMultipleRegions">
-		サーバーの境界を越えて土地を選択することできません。
-もっと小さな土地を選択してください。
-	</notification>
-	<notification name="SearchWordBanned">
-		コミュニティスタンダードに明記されているコンテンツ制限により、あなたの検索語の一部が除外されました。
-	</notification>
-	<notification name="NoContentToSearch">
-		少なくともどれか一つコンテンツの種類を選択して検索を行ってください。(General、Moderate、Adult)
-	</notification>
-	<notification name="SystemMessage">
-		[MESSAGE]
-	</notification>
-	<notification name="PaymentReceived">
-		[MESSAGE]
-	</notification>
-	<notification name="PaymentSent">
-		[MESSAGE]
-	</notification>
-	<notification name="EventNotification">
-		イベント通知:
-
-[NAME]
-[DATE]
-		<form name="form">
-			<button name="Details" text="詳細"/>
-			<button name="Cancel" text="取り消し"/>
-		</form>
-	</notification>
-	<notification name="TransferObjectsHighlighted">
-		この区画の購入者に受け渡されるオブジェクトは、すべて区画上で強調表示されています。
-
-
-*受け渡される樹木や植物は、強調表示されていません。
-		<form name="form">
-			<button name="Done" text="完了"/>
-		</form>
-	</notification>
-	<notification name="DeactivatedGesturesTrigger">
-		同じトリガーでアクティブにしないジェスチャー:
-[NAMES]
-	</notification>
-	<notification name="NoQuickTime">
-		Apple の QuickTime ソフトウェアがお使いのシステムにインストールされていないようです。
-ストリーミングメディアをサポートする区画で見たい場合は、[http://www.apple.com/jp/quicktime QuickTime サイト] から QuickTime プレイヤーをインストールしてください。
-	</notification>
-	<notification name="NoPlugin">
-		「 [MIME_TYPE] 」の MIME タイプを扱うメディアプラグインが見つかりませんでした。  このタイプのメディアはご利用いただけません。
-	</notification>
-	<notification name="MediaPluginFailed">
-		次のメディアプラグインが実行できませんでした:
-    [PLUGIN]
-
-プラグインをインストールしなおすか、問題が解決しない場合はメーカーにお問い合わせください。
-		<form name="form">
-			<ignore name="ignore" text="メディアプラグインの実行に失敗したとき"/>
-		</form>
-	</notification>
-	<notification name="OwnedObjectsReturned">
-		選択した土地の区画上にあったあなたのオブジェクトは、すべてあなたの「持ち物」に返却されました。
-	</notification>
-	<notification name="OtherObjectsReturned">
-		[NAME] が所有する、選択した区画にあるオブジェクトは、所有者の持ち物に返却されました。
-	</notification>
-	<notification name="OtherObjectsReturned2">
-		「 [NAME] 」という名前の住人が所有する、選択した区画上のオブジェクトは、本人に返却されました。
-	</notification>
-	<notification name="GroupObjectsReturned">
-		選択した区画上の、[GROUPNAME] というグループと共有していたオブジェクトは、それぞれの所有者の「持ち物」に返却されました。
-譲渡されていた「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されました。
-グループに譲渡されていた「再販・プレゼント不可」のオブジェクトは、削除されました。
-	</notification>
-	<notification name="UnOwnedObjectsReturned">
-		選択した土地の区画上の、あなたの所有物では「なかった」オブジェクトは、本来の所有者に返却されました。
-	</notification>
-	<notification name="ServerObjectMessage">
-		[NAME] からのメッセージ:
-&lt;nolink&gt;[MSG]&lt;/nolink&gt;
-	</notification>
-	<notification name="NotSafe">
-		この土地ではダメージが有効です。
-ケガをするかもしれません。 死んでしまった場合は「ホーム」にテレポートされます。
-	</notification>
-	<notification name="NoFly">
-		このエリアでは飛行が禁止されています。
-ここでは飛べません。
-	</notification>
-	<notification name="PushRestricted">
-		このエリアではプッシュが禁止されています。 土地所有者以外は他人をプッシュすることはできません。
-	</notification>
-	<notification name="NoVoice">
-		このエリアではボイスチャットが無効です。 誰かが話しているのを聞くことはできません。
-	</notification>
-	<notification name="NoBuild">
-		このエリアでは制作が禁止されています。 オブジェクトを制作したり Rez することはできません。
-	</notification>
-	<notification name="ScriptsStopped">
-		管理者がこのリージョンのスクリプトを一時停止しました。
-	</notification>
-	<notification name="ScriptsNotRunning">
-		このリージョンではスクリプトの使用が禁止されています。
-	</notification>
-	<notification name="NoOutsideScripts">
-		この土地では、外部のスクリプトが禁止されています。
-
-土地所有者のもの以外はスクリプトが実行されません。
-	</notification>
-	<notification name="ClaimPublicLand">
-		そのリージョンにいないと公共の土地を取得することはできません。
-	</notification>
-	<notification name="RegionTPAccessBlocked">
-		あなたのレーティング区分によりそのリージョンへは入ることができません。 年齢確認を行うか、最新ビューワをインストールしてください。
-
-現在のレーティング区分でアクセス可能なエリアに関する詳細はナレッジベースを参照してください。
-	</notification>
-	<notification name="URBannedFromRegion">
-		あなたはリージョンへの立入が禁止されています。
-	</notification>
-	<notification name="NoTeenGridAccess">
-		あなたのアカウントではティーングリッドに接続できません。
-	</notification>
-	<notification name="ImproperPaymentStatus">
-		このリージョンに入るために適した支払いステータスがありません。
-	</notification>
-	<notification name="MustGetAgeRgion">
-		このリージョンに入るためには、年齢確認を済ませる必要があります。
-	</notification>
-	<notification name="MustGetAgeParcel">
-		この区画に入るためには、年齢確認を済ませる必要があります。
-	</notification>
-	<notification name="NoDestRegion">
-		目的地のリージョンが見つかりませんでした。
-	</notification>
-	<notification name="NotAllowedInDest">
-		目的地に入る許可がありません。
-	</notification>
-	<notification name="RegionParcelBan">
-		立入禁止された区画を横断することはできません。 別の方法をお試しください。
-	</notification>
-	<notification name="TelehubRedirect">
-		テレハブに転送されました。
-	</notification>
-	<notification name="CouldntTPCloser">
-		これ以上目的地に近い場所にテレポートができませんでした。
-	</notification>
-	<notification name="TPCancelled">
-		テレポートがキャンセルされました。
-	</notification>
-	<notification name="FullRegionTryAgain">
-		入ろうとしているリージョンは現在満員です。
-しばらくしてから再度お試しください。
-	</notification>
-	<notification name="GeneralFailure">
-		よくある失敗
-	</notification>
-	<notification name="RoutedWrongRegion">
-		異なるリージョンに迂回されました。 もう一度お試しください。
-	</notification>
-	<notification name="NoValidAgentID">
-		エージェント ID が無効です。
-	</notification>
-	<notification name="NoValidSession">
-		セッション ID が無効です。
-	</notification>
-	<notification name="NoValidCircuit">
-		回路コードが無効です。
-	</notification>
-	<notification name="NoValidTimestamp">
-		タイムスタンプが無効です。
-	</notification>
-	<notification name="NoPendingConnection">
-		接続を生成できません。
-	</notification>
-	<notification name="InternalUsherError">
-		内部エラーが発生しました。
-	</notification>
-	<notification name="NoGoodTPDestination">
-		このリージョンでは、適切なテレポート目的地が見つかりませんでした。
-	</notification>
-	<notification name="InternalErrorRegionResolver">
-		内部エラーが発生しました。
-	</notification>
-	<notification name="NoValidLanding">
-		有効な着地点が見つかりませんでした。
-	</notification>
-	<notification name="NoValidParcel">
-		有効な区画が見つかりませんでした。
-	</notification>
-	<notification name="ObjectGiveItem">
-		[NAME_SLURL] が所有する &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt; という名前のオブジェクトが、あなたに &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt; を渡そうとしています。このアイテムを使うにはアドバンスモードへの切り替えが必要です。アドバンスモードでログインしなおすと、あなたの持ち物にこのアイテムが見つかります。アドバンスモードに切り替えるには、このアプリケーションを終了して再起動し、ログイン画面でモード設定を変更してください。
-		<form name="form">
-			<button name="Keep" text="アイテムを受け取る"/>
-			<button name="Discard" text="アイテムを拒否する"/>
-			<button name="Mute" text="オブジェクトをブロックする"/>
-		</form>
-	</notification>
-	<notification name="UserGiveItem">
-		[NAME_SLURL] は [ITEM_SLURL] を渡そうとしています。このアイテムを使うにはアドバンスモードへの切り替えが必要です。アドバンスモードでログインしなおすと、あなたの持ち物にこのアイテムが見つかります。アドバンスモードに切り替えるには、このアプリケーションを終了して再起動し、ログイン画面でモード設定を変更してください。
-		<form name="form">
-			<button name="Show" text="アイテムを受け取る"/>
-			<button name="Discard" text="アイテムを拒否する"/>
-			<button name="Mute" text="ユーザーをブロックする"/>
-		</form>
-	</notification>
-	<notification name="GodMessage">
-		[NAME]
-
-[MESSAGE]
-	</notification>
-	<notification name="JoinGroup">
-		[MESSAGE]
-		<form name="form">
-			<button name="Join" text="参加"/>
-			<button name="Decline" text="辞退"/>
-			<button name="Info" text="情報"/>
-		</form>
-	</notification>
-	<notification name="TeleportOffered">
-		[NAME_SLURL] はテレポートであなたを呼んでいます。
-
-[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
-		<form name="form">
-			<button name="Teleport" text="テレポート"/>
-			<button name="Cancel" text="取り消し"/>
-		</form>
-	</notification>
-	<notification name="TeleportOfferSent">
-		[TO_NAME] にテレポートを送りました。
-	</notification>
-	<notification name="GotoURL">
-		[MESSAGE]
-[URL]
-		<form name="form">
-			<button name="Later" text="あとで"/>
-			<button name="GoNow..." text="今すぐ行く"/>
-		</form>
-	</notification>
-	<notification name="OfferFriendship">
-		[NAME_SLURL] はフレンド登録を申し込んでいます。
-
-[MESSAGE]
-
-(デフォルト設定だとお互いのオンライン状態を見ることができます)
-		<form name="form">
-			<button name="Accept" text="受け入れる"/>
-			<button name="Decline" text="辞退"/>
-		</form>
-	</notification>
-	<notification name="FriendshipOffered">
-		[TO_NAME] にフレンド登録を申し出ました。
-	</notification>
-	<notification name="OfferFriendshipNoMessage">
-		[NAME_SLURL] はフレンド登録を申し込んでいます。
-
-(デフォルト設定だとお互いのオンライン状態を見ることができます)
-		<form name="form">
-			<button name="Accept" text="受け入れる"/>
-			<button name="Decline" text="拒否"/>
-		</form>
-	</notification>
-	<notification name="FriendshipAccepted">
-		[NAME]は、フレンド登録を受け入れました。
-	</notification>
-	<notification name="FriendshipDeclined">
-		[NAME]は、フレンド登録を断りました。
-	</notification>
-	<notification name="FriendshipAcceptedByMe">
-		フレンドの登録依頼が承認されました。
-	</notification>
-	<notification name="FriendshipDeclinedByMe">
-		フレンドの登録依頼が拒否されました。
-	</notification>
-	<notification name="OfferCallingCard">
-		[NAME] がコーリングカードを渡そうとしています。
-あなたの持ち物にブックマークが追加され、この住人に素早く IM を送ることができます。
-		<form name="form">
-			<button name="Accept" text="受け入れる"/>
-			<button name="Decline" text="辞退"/>
-		</form>
-	</notification>
-	<notification name="RegionRestartMinutes">
-		このリージョンは [SECONDS] 分後に再起動されます。
-このままここにいるとログアウトされます。
-	</notification>
-	<notification name="RegionRestartSeconds">
-		このリージョンは [SECONDS] 秒後に再起動されます。.
-このままここにいるとログアウトされます。
-	</notification>
-	<notification name="LoadWebPage">
-		Web ページ [URL] をロードしますか?
-
-[MESSAGE]
-
-送信元のオブジェクト:&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;、所有者:[NAME]?
-		<form name="form">
-			<button name="Gotopage" text="ページに移動"/>
-			<button name="Cancel" text="取り消し"/>
-		</form>
-	</notification>
-	<notification name="FailedToFindWearableUnnamed">
-		データベースに [TYPE] が見つかりませんでした
-	</notification>
-	<notification name="FailedToFindWearable">
-		データベースに [DESC] という名前の [TYPE] が見つかりませんでした。
-	</notification>
-	<notification name="InvalidWearable">
-		着用しようとしているアイテムはあなたのビューワでは読み込むことができません。 [APP_NAME] のバージョンをアップグレードしてからこのアイテムを着用してください。
-	</notification>
-	<notification name="ScriptQuestion">
-		[NAME] が所有する「&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;」 というオブジェクトが、次のことをしようとしています:
-
-[QUESTIONS]
-よろしいですか?
-		<form name="form">
-			<button name="Yes" text="はい"/>
-			<button name="No" text="いいえ"/>
-			<button name="Mute" text="ブロック"/>
-		</form>
-	</notification>
-	<notification name="ScriptQuestionCaution">
-		[NAME] が所有する「&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;」 というオブジェクトが、次のことをしようとしています:
-
-[QUESTIONS]
-このオブジェクトや制作者を信用できない場合は、このリクエストを拒否してください。
-
-リクエストを受けますか?
-		<form name="form">
-			<button name="Grant" text="許可"/>
-			<button name="Deny" text="拒否"/>
-			<button name="Details" text="詳細..."/>
-		</form>
-	</notification>
-	<notification name="ScriptDialog">
-		[NAME] の「&lt;nolink&gt;[TITLE]&lt;/nolink&gt;」
-[MESSAGE]
-		<form name="form">
-			<button name="Ignore" text="無視する"/>
-		</form>
-	</notification>
-	<notification name="ScriptDialogGroup">
-		[GROUPNAME] の「&lt;nolink&gt;[TITLE]&lt;/nolink&gt;」
-[MESSAGE]
-		<form name="form">
-			<button name="Ignore" text="無視する"/>
-		</form>
-	</notification>
-	<notification name="BuyLindenDollarSuccess">
-		お支払ありがとうございます。
-
-あなたの L$ 残高は、処理が完了するとアップデートされます。 処理に 20 分以上かかった場合、お取り引きがキャンセルされることがあります。 その場合は、購入金額はあなたの US$ 残高に追加されます。
-
-[http://secondlife.com/account/ マイアカウント] の取引履歴ページで、支払状況を確認できます。
-	</notification>
-	<notification name="FirstOverrideKeys">
-		あなたの移動キーをオブジェクトが操作しています。
-矢印か AWSD のキーで動作を確認してください。
-銃などのオブジェクトだと、一人称視点に変更する必要があります。
-M キーを押して変更します。
-	</notification>
-	<notification name="FirstSandbox">
-		ここはサンドボックスエリアです。住人が制作を学ぶことができます。
-
-ここで制作されたものは時間が経つと削除されます。制作したアイテムを右クリックして「取る」を選び、持ち物に入れてお持ち帰りするのをお忘れなく。
-	</notification>
-	<notification name="MaxListSelectMessage">
-		このリストから [MAX_SELECT] 個までのアイテムを選択できます。
-	</notification>
-	<notification name="VoiceInviteP2P">
-		[NAME] があなたをボイスチャットコールに招待しています。
-受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。
-		<form name="form">
-			<button name="Accept" text="受け入れる"/>
-			<button name="Decline" text="拒否"/>
-			<button name="Mute" text="ブロック"/>
-		</form>
-	</notification>
-	<notification name="AutoUnmuteByIM">
-		[NAME] はインスタントメッセージを受け取り、自動的にブロックが解除されました。
-	</notification>
-	<notification name="AutoUnmuteByMoney">
-		[NAME] はお金を受け取り、自動的にブロックが解除されました。
-	</notification>
-	<notification name="AutoUnmuteByInventory">
-		[NAME] は持ち物を受け取り、自動的にブロックが解除されました。
-	</notification>
-	<notification name="VoiceInviteGroup">
-		[NAME] は [GROUP] のボイスチャットコールに参加しました。
-受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。
-		<form name="form">
-			<button name="Accept" text="受け入れる"/>
-			<button name="Decline" text="拒否"/>
-			<button name="Mute" text="ブロック"/>
-		</form>
-	</notification>
-	<notification name="VoiceInviteAdHoc">
-		[NAME] は コンファレンスチャットののボイスチャットコールに参加しました。
-受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。
-		<form name="form">
-			<button name="Accept" text="受け入れる"/>
-			<button name="Decline" text="拒否"/>
-			<button name="Mute" text="ブロック"/>
-		</form>
-	</notification>
-	<notification name="InviteAdHoc">
-		[NAME] があなたをコンファレンスチャットに招待しています。
-受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。
-		<form name="form">
-			<button name="Accept" text="受け入れる"/>
-			<button name="Decline" text="拒否"/>
-			<button name="Mute" text="ブロック"/>
-		</form>
-	</notification>
-	<notification name="VoiceChannelFull">
-		あなたが参加しようとしているボイスコール [VOICE_CHANNEL_NAME] は、参加者が最大限に達しました。後でもう一度お試しください。
-	</notification>
-	<notification name="ProximalVoiceChannelFull">
-		このエリアのボイスチャットは、混雑のため容量を超えてしまっています。申し訳ありませんが、他のエリアでボイスチャットをお試しください。
-	</notification>
-	<notification name="VoiceChannelDisconnected">
-		[VOICE_CHANNEL_NAME] への接続が切れました。  「近くのボイスチャット」に再接続されます。
-	</notification>
-	<notification name="VoiceChannelDisconnectedP2P">
-		[VOICE_CHANNEL_NAME] がコールを終了しました。  「近くのボイスチャット」に再接続されます。
-	</notification>
-	<notification name="P2PCallDeclined">
-		[VOICE_CHANNEL_NAME] があなたのコールを拒否しました。  「近くのボイスチャット」に再接続されます。
-	</notification>
-	<notification name="P2PCallNoAnswer">
-		[VOICE_CHANNEL_NAME] はあなたのコールを受けることができません。  「近くのボイスチャット」に再接続されます。
-	</notification>
-	<notification name="VoiceChannelJoinFailed">
-		[VOICE_CHANNEL_NAME] への接続に失敗しました。あとで再度お試しください。  「近くのボイスチャット」に再接続されます。
-	</notification>
-	<notification name="VoiceLoginRetry">
-		ボイスチャンネルを作成しています。1 分ほどかかります。
-	</notification>
-	<notification name="VoiceEffectsExpired">
-		ボイスモーフィング効果の1つまたは複数の有効期限が終了しました。期限を延長・更新するには[[URL]こちらをクリック]してください。
-	</notification>
-	<notification name="VoiceEffectsExpiredInUse">
-		ボイスモーフィング効果の有効期限が終了したため、あなたの通常のボイス設定が適用されました。期限を延長・更新するには[[URL]こちらをクリック]してください。
-	</notification>
-	<notification name="VoiceEffectsWillExpire">
-		ボイスモーフィング効果の1つまたは複数の有効期限が[INTERVAL]日以内に終了します。期限を延長・更新するには[[URL]こちらをクリック]してください。
-	</notification>
-	<notification name="VoiceEffectsNew">
-		新しいボイスモーフィング効果が登場!
-	</notification>
-	<notification name="Cannot enter parcel: not a group member">
-		特定のグループメンバーのみこのエリアを訪問することができます。
-	</notification>
-	<notification name="Cannot enter parcel: banned">
-		立入禁止されているため、区画に入ることができません。
-	</notification>
-	<notification name="Cannot enter parcel: not on access list">
-		アクセスリストに含まれていないため、区画に入ることができません。
-	</notification>
-	<notification name="VoiceNotAllowed">
-		あなたには [VOICE_CHANNEL_NAME] のボイスチャットに接続する権限がありません。
-	</notification>
-	<notification name="VoiceCallGenericError">
-		[VOICE_CHANNEL_NAME] のボイスチャットに接続中に、エラーが発生しました。後でもう一度お試しください。
-	</notification>
-	<notification name="UnsupportedCommandSLURL">
-		クリックした SLurl はサポートされていません。
-	</notification>
-	<notification name="BlockedSLURL">
-		信用できないブラウザから SLurl が送られてきたので、セキュリティのためブロックされました。
-	</notification>
-	<notification name="ThrottledSLURL">
-		短期間のあいだに、信用できないブラウザから複数の SLurls が送られてきました。
-安全のために数秒間ブロックされます。
-	</notification>
-	<notification name="IMToast">
-		[MESSAGE]
-		<form name="form">
-			<button name="respondbutton" text="返答"/>
-		</form>
-	</notification>
-	<notification name="ConfirmCloseAll">
-		すべての IM を閉じますか?
-		<usetemplate ignoretext="すべての IM を閉じる前の確認" name="okcancelignore" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="AttachmentSaved">
-		アタッチメントが保存されました。
-	</notification>
-	<notification name="UnableToFindHelpTopic">
-		ヘルプトピックが見つかりませんでした。
-	</notification>
-	<notification name="ObjectMediaFailure">
-		サーバーエラー: メディアのアップデートまたは失敗。
-「[ERROR]」
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="TextChatIsMutedByModerator">
-		モデレーターがあなたの文字チャットをミュートしました。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="VoiceIsMutedByModerator">
-		モデレーターがあなたのボイスをミュートしました。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmClearTeleportHistory">
-		テレポート履歴を削除しますか?
-		<usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/>
-	</notification>
-	<notification name="BottomTrayButtonCanNotBeShown">
-		選択したボタンを現在表示することができません。
-じゅうぶんなスペースができればボタンは表示されます。
-	</notification>
-	<notification name="ShareNotification">
-		共有する住人を選択します。
-	</notification>
-	<notification name="ShareItemsConfirmation">
-		次のアイテムを共有しますか?
-
-&lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
-
-次の住人と共有しますか?
-
-[RESIDENTS]
-		<usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification name="ItemsShared">
-		アイテムが共有されました。
-	</notification>
-	<notification name="DeedToGroupFail">
-		グループへの譲渡に失敗しました。
-	</notification>
-	<notification name="AvatarRezNotification">
-		(作成後[EXISTENCE]秒経過)
-&apos;[NAME]&apos;というアバターは[TIME]秒後に姿を現わしました。
-	</notification>
-	<notification name="AvatarRezSelfBakedDoneNotification">
-		(作成後[EXISTENCE]秒経過)
-アウトフィットのベークは[TIME]秒後に完了しました。
-	</notification>
-	<notification name="AvatarRezSelfBakedUpdateNotification">
-		(作成後[EXISTENCE]秒経過)
-容姿の更新は[TIME]秒後に送信されました。
-[STATUS]
-	</notification>
-	<notification name="AvatarRezCloudNotification">
-		( [EXISTENCE] 秒)
-アバター「 NAME 」がクラウドになりました。
-	</notification>
-	<notification name="AvatarRezArrivedNotification">
-		( [EXISTENCE] 秒)
-アバター「 NAME 」が現れました。
-	</notification>
-	<notification name="AvatarRezLeftCloudNotification">
-		( [EXISTENCE] 秒)
-アバター「 [NAME] 」が [TIME] 秒でクラウド状態から出現します。
-	</notification>
-	<notification name="AvatarRezEnteredAppearanceNotification">
-		( [EXISTENCE] 秒)
-アバター「 NAME 」が容姿編集モードに入りました。
-	</notification>
-	<notification name="AvatarRezLeftAppearanceNotification">
-		( [EXISTENCE] 秒)
-アバター「 NAME 」が容姿編集モードを解除しました。
-	</notification>
-	<notification name="NoConnect">
-		[PROTOCOL] [HOSTID]を使って接続できません。
-お使いのネットワークやファイアウォールの設定を確認してください。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="NoVoiceConnect">
-		ボイスサーバーに接続できません:
-
-[HOSTID]
-
-ボイスチャットによるコミュニケーションが利用できません。
-お使いのネットワークやファイアウォールの設定を確認してください。
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AvatarRezLeftNotification">
-		( [EXISTENCE] 秒)
-アバター「 NAME 」が完全に読み込まれました。
-	</notification>
-	<notification name="AvatarRezSelfBakedTextureUploadNotification">
-		( 作成後[EXISTENCE]秒経過)
-&apos;[BODYREGION]&apos;の[RESOLUTION]のベークドテクスチャは[TIME]秒後にアップロードされました。
-	</notification>
-	<notification name="AvatarRezSelfBakedTextureUpdateNotification">
-		( 作成後[EXISTENCE]秒経過)
-&apos;[BODYREGION]&apos;の[RESOLUTION]のベークドテクスチャは[TIME]秒後にローカルに更新されました。
-	</notification>
-	<notification name="ConfirmLeaveCall">
-		このコールから抜けますか?
-		<usetemplate ignoretext="コールから抜ける前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/>
-	</notification>
-	<notification name="ConfirmMuteAll">
-		グループコールの参加者全員をミュートしました。
-あとからこのコールに参加する住人も
-ミュートされます。あなたがコールを終了しても他の参加者のミュート状態が続きます。
-
-全員をミュートしますか?
-		<usetemplate ignoretext="グループコールの参加者全員をミュートする前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/>
-	</notification>
-	<notification label="チャット" name="HintChat">
-		チャットに参加するには、画面下のチャットフィールドにテキストを入力します。
-	</notification>
-	<notification label="立ち上がる" name="HintSit">
-		座る姿勢から立ち上がるには、「立ち上がる」ボタンをクリックします。
-	</notification>
-	<notification label="話す" name="HintSpeak">
-		「スピーカー」ボタンをクリックすると、マイクのオン・オフが切り替わります。
-
-上矢印をクリックすると、ボイスコントロールパネルが表示されます。
-
-「スピーカー」ボタンを非表示にすると、ボイス機能も無効になります。
-	</notification>
-	<notification label="世界を探検" name="HintDestinationGuide">
-		行き先ガイドには数多くの探索場所が含まれます。どこか行き先を決めたら、テレポートして探索に出かけましょう。
-	</notification>
-	<notification label="サイドパネル" name="HintSidePanel">
-		サイドパネルでインベントリ、服、プロフィールなどにすばやくアクセスできます。
-	</notification>
-	<notification label="移動" name="HintMove">
-		歩行や走行は、「移動」パネルを開き、矢印コントロールによって操作します。この操作はキーボードの矢印キーで実行することも可能です。
-	</notification>
-	<notification label="" name="HintMoveClick">
-		1. クリックして歩行
-地面の一箇所をクリックすると、その場所まで歩きます。
-
-2. クリック・ドラッグで視界を回転
-世界の一箇所をクリックしてドラッグすると、視界の向きが変わります。
-	</notification>
-	<notification label="表示名" name="HintDisplayName">
-		表示名(カスタマイズ可能)を設定します。ユーザー名は固有で変更できませんが、ここで追加する表示名は変更可能です。他の住人の名前の表示方法は環境設定で変更してください。
-	</notification>
-	<notification label="表示" name="HintView">
-		カメラの視点を変更するには、水平・垂直コントロールを使います。Escape を押すか、または歩行すると、視点がリセットされます。
-	</notification>
-	<notification label="インベントリ" name="HintInventory">
-		持ち物にはあなたのアイテムがすべて含まれます。新しく追加されたアイテムは「最新」タブに一覧表示されています。
-	</notification>
-	<notification label="あなたのリンデンドル" name="HintLindenDollar">
-		これがあなたの L$ 残高です。リンデンドルを購入するには「L$ の購入」をクリックします。
-	</notification>
-	<notification name="PopupAttempt">
-		ポップアップがブロックされました。
-		<form name="form">
-			<ignore name="ignore" text="全てのポップアップを有効にする"/>
-			<button name="open" text="ポップアップウィンドウを開く"/>
-		</form>
-	</notification>
-	<notification name="AuthRequest">
-		「[REALM]」にある「&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;」のサイトにはユーザー名とパスワードが必要です。
-		<form name="form">
-			<input name="username" text="ユーザー名"/>
-			<input name="password" text="パスワード"/>
-			<button name="ok" text="送信"/>
-			<button name="cancel" text="取り消し"/>
-		</form>
-	</notification>
-	<notification label="" name="ModeChange">
-		モードを変更するには終了して再起動する必要があります。
-		<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
-	</notification>
-	<notification label="" name="NoClassifieds">
-		クラシファイド広告の作成と編集はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。
-		<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
-	</notification>
-	<notification label="" name="NoGroupInfo">
-		グループの作成と編集はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。
-		<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
-	</notification>
-	<notification label="" name="NoPicks">
-		ピックの作成と編集はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。
-		<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
-	</notification>
-	<notification label="" name="NoWorldMap">
-		世界地図の表示はアドバンスモードでのみ利用できます。終了してモードを変更しますか?モードはログイン画面で選択できます。
-		<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
-	</notification>
-	<notification label="" name="NoVoiceCall">
-		ボイスコールはアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか?
-		<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
-	</notification>
-	<notification label="" name="NoAvatarShare">
-		共有はアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか?
-		<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
-	</notification>
-	<notification label="" name="NoAvatarPay">
-		他の住人への支払いはアドバンスモードでのみ利用できます。ログアウトしてモードを変更しますか?
-		<usetemplate name="okcancelbuttons" notext="終了しない" yestext="終了"/>
-	</notification>
-	<global name="UnsupportedCPU">
-		- あなたの CPU の速度は必須動作環境の条件を満たしていません。
-	</global>
-	<global name="UnsupportedGLRequirements">
-		[APP_NAME] に必要なハードウェアがないようです。 [APP_NAME] にはマルチテクスチャをサポートする OpenGL グラフィックカードが必要です。 お使いのグラフィックカードの最新ドライバがインストールされているかどうか、オペレーティングシステムのサービスパックとパッチが入っているかをご確認ください。
-
-この問題が何度も起きる場合は、[SUPPORT_SITE] をご確認ください。
-	</global>
-	<global name="UnsupportedCPUAmount">
-		796
-	</global>
-	<global name="UnsupportedRAMAmount">
-		510
-	</global>
-	<global name="UnsupportedGPU">
-		- あなたのグラフィックカードは必須動作環境の条件を満たしていません。
-	</global>
-	<global name="UnsupportedRAM">
-		- あなたのシステムメモリは必須動作環境の条件を満たしていません。
-	</global>
-	<global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
-		自分の土地をお持ちの場合、「ホーム」に設定できます。
-お持ちでない場合は、地図で「インフォハブ」をお探しください。
-	</global>
-	<global name="You died and have been teleported to your home location">
-		死んでしまったので、ホームにテレポートされました。
-	</global>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/ja/panel_adhoc_control_panel.xml
deleted file mode 100644
index 17e1283d240cc4dd1dc840c9bb6cbcae4e570ecf..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="call_btn_panel">
-			<button label="コール" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="コール終了" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="ボイスコントロール" name="voice_ctrls_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml
deleted file mode 100644
index 13be2cea0af6a8047aeafe843a78f289c800396b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
-	<string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
-	<string name="SpeakBtnToolTip" value="マイクのオン・オフ"/>
-	<string name="VoiceControlBtnToolTip" value="ボイスコントロールパネルの表示・非表示"/>
-	<layout_stack name="toolbar_stack">
-		<layout_panel name="speak_panel">
-			<button label="話す" name="speak_btn" tool_tip="マイクのオン・オフを切り替える"/>
-		</layout_panel>
-		<layout_panel name="speak_flyout_panel">
-			<button label="" name="flyout_btn" tool_tip="サウンド環境設定を変更する"/>
-		</layout_panel>
-		<layout_panel name="gesture_panel">
-			<gesture_combo_list label="ジェスチャー" name="Gesture" tool_tip="アバターの動作を起こす"/>
-		</layout_panel>
-		<layout_panel name="cam_panel">
-			<bottomtray_button label="視界" name="camera_btn" tool_tip="カメラの角度をコントロール"/>
-		</layout_panel>
-		<layout_panel name="destinations_panel">
-			<bottomtray_button label="行き先" name="destination_btn" tool_tip="Second Life 内を旅行する"/>
-		</layout_panel>
-		<layout_panel name="avatar_panel">
-			<bottomtray_button label="マイ アバター" name="avatar_btn" tool_tip="容姿を変更する"/>
-		</layout_panel>
-		<layout_panel name="people_panel">
-			<bottomtray_button label="人" name="show_people_button" tool_tip="Second Life で人を探す"/>
-		</layout_panel>
-		<layout_panel name="profile_panel">
-			<bottomtray_button label="プロフィール" name="show_profile_btn" tool_tip="プロフィールを表示・編集"/>
-		</layout_panel>
-		<layout_panel name="howto_panel">
-			<bottomtray_button label="ハウツー" name="show_help_btn" tool_tip="Second Life のヘルプ情報を見る"/>
-		</layout_panel>
-		<layout_panel name="im_well_panel">
-			<chiclet_im_well name="im_well">
-				<button name="Unread IM messages" tool_tip="会話"/>
-			</chiclet_im_well>
-		</layout_panel>
-		<layout_panel name="notification_well_panel">
-			<chiclet_notification name="notification_well">
-				<button name="Unread" tool_tip="通知"/>
-			</chiclet_notification>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/ja/panel_group_control_panel.xml
deleted file mode 100644
index f7f575206abffaaf18d05558e0c81fb2a2d42e13..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="group_info_btn_panel">
-			<button label="グループ情報" name="group_info_btn"/>
-		</layout_panel>
-		<layout_panel name="call_btn_panel">
-			<button label="グループコール" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="コール終了" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="ボイスコントロールを開く" name="voice_ctrls_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml
deleted file mode 100644
index 14c38c796f85f8f319219c1eca9cbcb263f8251c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="button_stack">
-		<layout_panel name="view_profile_btn_panel">
-			<button label="プロフィール" name="view_profile_btn"/>
-		</layout_panel>
-		<layout_panel name="add_friend_btn_panel">
-			<button label="フレンド登録" name="add_friend_btn"/>
-		</layout_panel>
-		<layout_panel name="teleport_btn_panel">
-			<button label="テレポート" name="teleport_btn" tool_tip="この人にテレポートを送ります"/>
-		</layout_panel>
-		<layout_panel name="call_btn_panel">
-			<button label="コール" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="コール終了" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="block_btn_panel">
-			<button label="ブロック" name="block_btn"/>
-		</layout_panel>
-		<layout_panel name="unblock_btn_panel">
-			<button label="ブロック解除" name="unblock_btn"/>
-		</layout_panel>
-		<layout_panel name="volume_ctrl_panel">
-			<slider name="volume_slider" tool_tip="コールの音量" value="0.5"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_login.xml b/indra/newview/skins/minimal/xui/ja/panel_login.xml
deleted file mode 100644
index ac1fe455c7eb53a6f354f2cd12fe344c82ff2e20..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_login.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
-	<panel.string name="create_account_url">
-		http://jp.secondlife.com/registration/
-	</panel.string>
-	<panel.string name="forgot_password_url">
-		http://secondlife.com/account/request.php?lang=ja
-	</panel.string>
-	<layout_stack name="login_widgets">
-		<layout_panel name="login">
-			<text name="username_text">
-				ユーザーネーム:
-			</text>
-			<combo_box name="username_combo" tool_tip="登録時に自分で選んだユーザー名(例:bobsmith12、Steller Sunshineなど)"/>
-			<text name="password_text">
-				パスワード:
-			</text>
-			<check_box label="パスワードを記憶" name="remember_check"/>
-			<button label="ログイン" left_pad="30" name="connect_btn" width="60"/>
-			<text name="mode_selection_text">
-				モード:
-			</text>
-			<combo_box name="mode_combo" tool_tip="モードを選択します。ベーシックモードでは探索やチャットをすばやく簡単に実行でき、アドバンスモードでは、より多くの機能が利用できます。">
-				<combo_box.item label="ベーシック" name="Basic"/>
-				<combo_box.item label="アドバンス" name="Advanced"/>
-			</combo_box>
-			<text name="start_location_text">
-				開始地点:
-			</text>
-			<combo_box name="start_location_combo">
-				<combo_box.item label="最後にログアウトした場所" name="MyLastLocation"/>
-				<combo_box.item label="ホーム" name="MyHome"/>
-				<combo_box.item label="<地域名を入力>" name="Typeregionname"/>
-			</combo_box>
-		</layout_panel>
-		<layout_panel name="links">
-			<text name="create_new_account_text">
-				お申し込み
-			</text>
-			<text name="forgot_password_text">
-				ユーザー名またはパスワードをお忘れですか?
-			</text>
-			<text name="login_help">
-				ログインの方法
-			</text>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/ja/panel_navigation_bar.xml
deleted file mode 100644
index 0426c4fe9a100e8d61f1802157e2da78c6c0e4ad..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="前の場所へ戻ります"/>
-		<pull_button name="forward_btn" tool_tip="次の場所へ進みます"/>
-		<button name="home_btn" tool_tip="「ホーム」にテレポート"/>
-		<location_input label="場所" name="location_combo"/>
-		<search_combo_box label="検索" name="search_combo_box" tool_tip="検索">
-			<combo_editor label="[SECOND_LIFE] を検索:" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
-		<label name="favorites_bar_label" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!">
-			お気に入りバー
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="お気に入りをもっと表示"/>
-	</favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_people.xml b/indra/newview/skins/minimal/xui/ja/panel_people.xml
deleted file mode 100644
index 5caeebc151d9a5ba59f22e3888406beec3e607c7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="人" name="people_panel">
-	<string name="no_recent_people" value="最近交流した人はいません。一緒に何かする仲間をお探しですか?下の「行き先ガイド」ボタンをクリックしてください。"/>
-	<string name="no_filtered_recent_people" value="その名前で最近交流した人はいません。"/>
-	<string name="no_one_near" value="近くに誰もいません。一緒に何かする仲間をお探しですか?下の「行き先ガイド」ボタンをクリックしてください。"/>
-	<string name="no_one_filtered_near" value="その名前の人は近くにいません。"/>
-	<string name="no_friends_online" value="オンラインのフレンドはいません"/>
-	<string name="no_friends" value="フレンドはいません"/>
-	<string name="no_friends_msg">
-		住人を右クリックすると、フレンド登録できます。
-一緒に何かする仲間をお探しですか?下の「行き先ガイド」ボタンをクリックしてください。
-	</string>
-	<string name="no_filtered_friends_msg">
-		お探しのものは見つかりましたか?下の「行き先ガイド」ボタンをクリックしてください。
-	</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>
-		</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="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="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="オプション"/>
-				<button name="add_friend_btn" tool_tip="選択した住人をフレンドリストに登録"/>
-			</panel>
-		</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/minimal/xui/ja/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/ja/panel_side_tray_tab_caption.xml
deleted file mode 100644
index d06db8ccb105f19c151d0910e692c886734937b1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
-	<text name="sidetray_tab_title" value="サイドパネル"/>
-	<button name="undock" tool_tip="切り離す"/>
-	<button name="dock" tool_tip="ドッキング"/>
-	<button name="show_help" tool_tip="ヘルプを表示"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/ja/panel_status_bar.xml b/indra/newview/skins/minimal/xui/ja/panel_status_bar.xml
deleted file mode 100644
index 7d1298c6c0f5d8815bd8a7fe6d3e41af469f3a3d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/ja/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
-	<panel.string name="packet_loss_tooltip">
-		パケット損失
-	</panel.string>
-	<panel.string name="bandwidth_tooltip">
-		帯域幅
-	</panel.string>
-	<panel.string name="time">
-		[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-	</panel.string>
-	<panel.string name="timeTooltip">
-		[year, datetime, slt] [month, datetime, slt] [day, datetime, slt] ([weekday, datetime, slt])
-	</panel.string>
-	<panel.string name="buycurrencylabel">
-		L$ [AMT]
-	</panel.string>
-	<combo_box name="mode_combo" tool_tip="モードを選択します。ベーシックモードでは探索やチャットをすばやく簡単に実行でき、アドバンスモードでは、より多くの機能が利用できます。">
-		<combo_box.item label="ベーシックモード" name="Basic"/>
-		<combo_box.item label="アドバンスモード" name="Advanced"/>
-	</combo_box>
-	<button name="media_toggle_btn" tool_tip="すべてのメディアを開始・停止(音楽、ビデオ、Web ページ)"/>
-	<button name="volume_btn" tool_tip="グローバル音量設定"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/floater_camera.xml b/indra/newview/skins/minimal/xui/pl/floater_camera.xml
deleted file mode 100644
index 5b9dd476160be1619e0ac4f9a28820d726ba8df5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
-	<floater.string name="rotate_tooltip">
-		Obracaj kamerę wokół obiektu
-	</floater.string>
-	<floater.string name="zoom_tooltip">
-		Najedź kamerą w kierunku obiektu
-	</floater.string>
-	<floater.string name="move_tooltip">
-		Poruszaj kamerą w dół/górę oraz w prawo/lewo
-	</floater.string>
-	<floater.string name="camera_modes_title">
-		Ustawienia
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		W prawo lub w lewo
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		Ustaw widok
-	</floater.string>
-	<floater.string name="free_mode_title">
-		Zobacz obiekt
-	</floater.string>
-	<panel name="controls">
-		<panel name="preset_views_list">
-			<panel_camera_item name="front_view">
-				<panel_camera_item.text name="front_view_text">
-					Widok z przodu
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="group_view">
-				<panel_camera_item.text name="side_view_text">
-					PodglÄ…d grupy
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="rear_view">
-				<panel_camera_item.text name="rear_view_text">
-					Widok z tyłu
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="camera_modes_list">
-			<panel_camera_item name="object_view">
-				<panel_camera_item.text name="object_view_text">
-					Widok obiektu
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="mouselook_view">
-				<panel_camera_item.text name="mouselook_view_text">
-					Widok panoramiczny
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="zoom" tool_tip="Najedź kamerą w kierunku obiektu">
-			<joystick_rotate name="cam_rotate_stick" tool_tip="Obracaj kamerę wokoł osi"/>
-			<slider_bar name="zoom_slider" tool_tip="Przybliż kamerę do ogniskowej"/>
-			<joystick_track name="cam_track_stick" tool_tip="Poruszaj kamerą w górę, w dół, w lewo i w prawo"/>
-		</panel>
-	</panel>
-	<panel name="buttons">
-		<button label="" name="presets_btn" tool_tip="Ustaw widok"/>
-		<button label="" name="pan_btn" tool_tip="Kamera horyzontalna"/>
-		<button label="" name="avatarview_btn" tool_tip="Ustawienia"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/floater_help_browser.xml b/indra/newview/skins/minimal/xui/pl/floater_help_browser.xml
deleted file mode 100644
index 66fde04f887afdbd8e9fa6aa5fd2d5bb8a96f8ba..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="POMOC">
-	<floater.string name="loading_text">
-		Ładowanie...
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="external_controls"/>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/floater_media_browser.xml b/indra/newview/skins/minimal/xui/pl/floater_media_browser.xml
deleted file mode 100644
index 02b7c6bc2bee40ef09a8b9ea549a6b8d026751ce..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="PRZEGLĄDARKA MEDIÓW">
-	<floater.string name="home_page_url">
-		http://www.secondlife.com
-	</floater.string>
-	<floater.string name="support_page_url">
-		http://support.secondlife.com
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button label="Wstecz" name="back"/>
-			<button label="Dalej" name="forward"/>
-			<button label="Odśwież" name="reload"/>
-			<button label="Idź" name="go"/>
-		</layout_panel>
-		<layout_panel name="time_controls">
-			<button label="przewiń" name="rewind"/>
-			<button label="zatrzymaj" name="stop"/>
-			<button label="dalej" name="seek"/>
-		</layout_panel>
-		<layout_panel name="parcel_owner_controls">
-			<button label="Wyślij bieżącą stronę do parceli" name="assign"/>
-		</layout_panel>
-		<layout_panel name="external_controls">
-			<button label="Otwórz w przeglądarce zewnętrznej" name="open_browser"/>
-			<check_box label="Zawsze otwieraj w przeglądarce zewnętrznej" name="open_always"/>
-			<button label="Zamknij" name="close"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/pl/floater_nearby_chat.xml
deleted file mode 100644
index 7dc3e1f22ef6ae6136fa3e980f0d76abcd7f117e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="CZAT LOKALNY">
-	<check_box label="TÅ‚umaczenie czatu (wspierane przez Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/floater_web_content.xml b/indra/newview/skins/minimal/xui/pl/floater_web_content.xml
deleted file mode 100644
index e3096f1e54c9123110995802ac36e3d82a32a1bd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button name="back" tool_tip="Wstecz"/>
-			<button name="forward" tool_tip="Dalej"/>
-			<button name="stop" tool_tip="Zatrzymaj"/>
-			<button name="reload" tool_tip="Odśwież stronę"/>
-			<combo_box name="address" tool_tip="Wpisz URL tutaj"/>
-			<icon name="media_secure_lock_flag" tool_tip="Zabezpieczona przeglÄ…darka"/>
-			<button name="popexternal" tool_tip="Otwórz bieżący URL w zewnętrznej przeglądarce"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/inspect_avatar.xml b/indra/newview/skins/minimal/xui/pl/inspect_avatar.xml
deleted file mode 100644
index 5e982c0185f9d0f1959bc9de4460c4eb48850623..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/inspect_avatar.xml
+++ /dev/null
@@ -1,24 +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="inspect_avatar">
-	<string name="Subtitle">
-		[AGE]
-	</string>
-	<string name="Details">
-		[SL_PROFILE]
-	</string>
-	<text name="user_details">
-		To jest mój opis w Second Life.
-	</text>
-	<slider name="volume_slider" tool_tip="Poziom głośności" value="0.5"/>
-	<button label="Dodaj znajomość" name="add_friend_btn"/>
-	<button label="IM" name="im_btn"/>
-	<button label="Profil" name="view_profile_btn"/>
-	<panel name="moderator_panel">
-		<button label="Wyłącz komunikację głosową" name="disable_voice"/>
-		<button label="Włącz komunikację głosową" name="enable_voice"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/inspect_object.xml b/indra/newview/skins/minimal/xui/pl/inspect_object.xml
deleted file mode 100644
index 23d8ce77004e97fef09fab70c456268948dc71a1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/inspect_object.xml
+++ /dev/null
@@ -1,41 +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="inspect_object">
-	<string name="Creator">
-		Przez [CREATOR]
-	</string>
-	<string name="CreatorAndOwner">
-		Twórca [CREATOR]
-Właściciel [OWNER]
-	</string>
-	<string name="Price">
-		L$[AMOUNT]
-	</string>
-	<string name="PriceFree">
-		Darmowe!
-	</string>
-	<string name="Touch">
-		Dotknij
-	</string>
-	<string name="Sit">
-		Usiądź tutaj
-	</string>
-	<text name="object_name" value="Test Object Name That Is actually two lines and Really Long"/>
-	<text name="price_text">
-		L$30,000
-	</text>
-	<text name="object_description">
-		This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
-	</text>
-	<button label="Kup" name="buy_btn"/>
-	<button label="Zapłać" name="pay_btn"/>
-	<button label="Weź kopię" name="take_free_copy_btn"/>
-	<button label="Dotknij" name="touch_btn"/>
-	<button label="Usiądź tutaj" name="sit_btn"/>
-	<button label="Otwórz" name="open_btn"/>
-	<icon name="secure_browsing" tool_tip="Zabezpiecz przeglÄ…danie"/>
-	<button label="Więcej" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_add_wearable_gear.xml
deleted file mode 100644
index 7c572b4fc93e4081d4ea1d3d4a7fbd4bf4a50421..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
-	<menu_item_check label="Porządkuj według daty" name="sort_by_most_recent"/>
-	<menu_item_check label="Porządkuj według nazwy" name="sort_by_name"/>
-	<menu_item_check label="Porządkuj według typu" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/pl/menu_attachment_other.xml
deleted file mode 100644
index aacdad97e3e932105f1cc6f0e5d18064d2d37fdd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="Zobacz profil" name="Profile..."/>
-	<menu_item_call label="Dodaj znajomość" name="Add Friend"/>
-	<menu_item_call label="IM" name="Send IM..."/>
-	<menu_item_call label="Zadzwoń" name="Call"/>
-	<menu_item_call label="ZaproÅ› do grupy" name="Invite..."/>
-	<menu_item_call label="Zablokuj" name="Avatar Mute"/>
-	<menu_item_call label="Raport" name="abuse"/>
-	<menu_item_call label="Unieruchom" name="Freeze..."/>
-	<menu_item_call label="Wyrzuć" name="Eject..."/>
-	<menu_item_call label="Debugowanie tekstur" name="Debug..."/>
-	<menu_item_call label="Przybliż" name="Zoom In"/>
-	<menu_item_call label="Zapłać" name="Pay..."/>
-	<menu_item_call label="Sprawdź" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/pl/menu_attachment_self.xml
deleted file mode 100644
index 163b3a231e266d7dbc4b77d765932f973d38273c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
-	<menu_item_call label="Dotknij" name="Attachment Object Touch"/>
-	<menu_item_call label="Edytuj" name="Edit..."/>
-	<menu_item_call label="Odłącz" name="Detach"/>
-	<menu_item_call label="Usiądź tutaj" name="Sit Down Here"/>
-	<menu_item_call label="Wstań" name="Stand Up"/>
-	<menu_item_call label="Mój wygląd" name="Change Outfit"/>
-	<menu_item_call label="Edytuj mój strój" name="Edit Outfit"/>
-	<menu_item_call label="Edytuj mój kształt" name="Edit My Shape"/>
-	<menu_item_call label="Moi znajomi" name="Friends..."/>
-	<menu_item_call label="Moje grupy" name="Groups..."/>
-	<menu_item_call label="Mój profil" name="Profile..."/>
-	<menu_item_call label="Debugowanie  tekstur" name="Debug..."/>
-	<menu_item_call label="Opuść" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/pl/menu_avatar_icon.xml
deleted file mode 100644
index e8d2b14231fd1e8ad90f2fc34fe5daabf042cd14..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
-	<menu_item_call label="Profil" name="Show Profile"/>
-	<menu_item_call label="Czat/IM..." name="Send IM"/>
-	<menu_item_call label="Dodaj znajomość..." name="Add Friend"/>
-	<menu_item_call label="Usuń..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/pl/menu_avatar_other.xml
deleted file mode 100644
index dcf7921badc165902f342d4df3944ae8f3419129..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="Zobacz profil" name="Profile..."/>
-	<menu_item_call label="Dodaj znajomość" name="Add Friend"/>
-	<menu_item_call label="IM" name="Send IM..."/>
-	<menu_item_call label="Zadzwoń" name="Call"/>
-	<menu_item_call label="ZaproÅ› do grupy" name="Invite..."/>
-	<menu_item_call label="Zablokuj" name="Avatar Mute"/>
-	<menu_item_call label="Raport" name="abuse"/>
-	<menu_item_call label="Unieruchom" name="Freeze..."/>
-	<menu_item_call label="Wyrzuć" name="Eject..."/>
-	<menu_item_call label="Debugowanie tekstur" name="Debug..."/>
-	<menu_item_call label="Przybliż" name="Zoom In"/>
-	<menu_item_call label="Zapłać" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/pl/menu_avatar_self.xml
deleted file mode 100644
index d481475803bcecfd055b97f6fd438279a8bae171..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
-	<menu_item_call label="Usiądź tu" name="Sit Down Here"/>
-	<menu_item_call label="Wstań" name="Stand Up"/>
-	<context_menu label="Zdejmij" name="Take Off &gt;">
-		<context_menu label="Ubrania" name="Clothes &gt;">
-			<menu_item_call label="KoszulÄ™" name="Shirt"/>
-			<menu_item_call label="Spodnie" name="Pants"/>
-			<menu_item_call label="Spódnicę" name="Skirt"/>
-			<menu_item_call label="Buty" name="Shoes"/>
-			<menu_item_call label="Skarpetki" name="Socks"/>
-			<menu_item_call label="KurtkÄ™" name="Jacket"/>
-			<menu_item_call label="Rękawiczki" name="Gloves"/>
-			<menu_item_call label="Podkoszulek" name="Self Undershirt"/>
-			<menu_item_call label="BieliznÄ™" name="Self Underpants"/>
-			<menu_item_call label="Tatuaż" name="Self Tattoo"/>
-			<menu_item_call label="Ubranie alpha" name="Self Alpha"/>
-			<menu_item_call label="Wszystko" name="All Clothes"/>
-		</context_menu>
-		<context_menu label="HUD" name="Object Detach HUD"/>
-		<context_menu label="Odłącz" name="Object Detach"/>
-		<menu_item_call label="Odłącz wszystko" name="Detach All"/>
-	</context_menu>
-	<menu_item_call label="Mój wygląd" name="Chenge Outfit"/>
-	<menu_item_call label="Edytuj mój strój" name="Edit Outfit"/>
-	<menu_item_call label="Edytuj mój kształt" name="Edit My Shape"/>
-	<menu_item_call label="Moi znajomi" name="Friends..."/>
-	<menu_item_call label="Moje grupy" name="Groups..."/>
-	<menu_item_call label="Mój profil" name="Profile..."/>
-	<menu_item_call label="Debugowanie tekstur" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/pl/menu_bottomtray.xml
deleted file mode 100644
index 8da40dcedfbd5929d2fe53f36dad80dc510ccc41..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
-	<menu_item_check label="Rozmowy głosowe aktywne" name="EnableVoiceChat"/>
-	<menu_item_check label="Przycisk gesturki" name="ShowGestureButton"/>
-	<menu_item_check label="Przycisk ruchu" name="ShowMoveButton"/>
-	<menu_item_check label="Przycisk widoku" name="ShowCameraButton"/>
-	<menu_item_check label="Przycisk zdjęć" name="ShowSnapshotButton"/>
-	<menu_item_check label="Buduj" name="ShowBuildButton"/>
-	<menu_item_check label="Szukaj" name="ShowSearchButton"/>
-	<menu_item_check label="Mapa" name="ShowWorldMapButton"/>
-	<menu_item_check label="Mini-Mapa" name="ShowMiniMapButton"/>
-	<menu_item_call label="Wytnij" name="NearbyChatBar_Cut"/>
-	<menu_item_call label="Kopiuj" name="NearbyChatBar_Copy"/>
-	<menu_item_call label="Wklej" name="NearbyChatBar_Paste"/>
-	<menu_item_call label="Usuń" name="NearbyChatBar_Delete"/>
-	<menu_item_call label="Zaznacz wszystko" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_attachment.xml
deleted file mode 100644
index 4e5407601b455003e7873bc683569d53624ef755..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
-	<menu_item_call label="Odłącz" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_body_part.xml
deleted file mode 100644
index ee60d3feb657db0a28da74b50ae820a130fd83ee..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
-	<menu_item_call label="ZastÄ…p" name="replace"/>
-	<menu_item_call label="Edytuj" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_clothing.xml
deleted file mode 100644
index ad4390013787524fe0ca0a5c638f5022367ad111..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
-	<menu_item_call label="Zdejmij" name="take_off"/>
-	<menu_item_call label="Edytuj" name="edit"/>
-	<menu_item_call label="ZastÄ…p" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_cof_gear.xml
deleted file mode 100644
index 9fba39be1ac3a325ee7246563876f3fe5fa14dde..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear COF">
-	<menu label="Nowe ubranie" name="COF.Gear.New_Clothes"/>
-	<menu label="Nowe części ciała" name="COF.Geear.New_Body_Parts"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_edit.xml b/indra/newview/skins/minimal/xui/pl/menu_edit.xml
deleted file mode 100644
index 578e270fed0f15465e3a5f41ad4830473a74c3b9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Edycja" name="Edit">
-	<menu_item_call label="Cofnij" name="Undo"/>
-	<menu_item_call label="Powtórz" name="Redo"/>
-	<menu_item_call label="Wytnij" name="Cut"/>
-	<menu_item_call label="Kopiuj" name="Copy"/>
-	<menu_item_call label="Wklej" name="Paste"/>
-	<menu_item_call label="Usuń" name="Delete"/>
-	<menu_item_call label="Powiel" name="Duplicate"/>
-	<menu_item_call label="Zaznacz wszystko" name="Select All"/>
-	<menu_item_call label="Odznacz" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_favorites.xml b/indra/newview/skins/minimal/xui/pl/menu_favorites.xml
deleted file mode 100644
index 7310ff5c2765b984bc26c51453dcf41089c6aab5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Teleportuj" name="Teleport To Landmark"/>
-	<menu_item_call label="Zobacz/Edytuj Ulubione miejsce" name="Landmark Open"/>
-	<menu_item_call label="Kopiuj SLurl" name="Copy slurl"/>
-	<menu_item_call label="Pokaż na mapie" name="Show On Map"/>
-	<menu_item_call label="Kopiuj" name="Landmark Copy"/>
-	<menu_item_call label="Wklej" name="Landmark Paste"/>
-	<menu_item_call label="Usuń" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_gesture_gear.xml
deleted file mode 100644
index a72dec22fc1dc2612c097b528a2af56ba3ce7b3d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
-	<menu_item_call label="Dodaj/Usuń z Ulubionych" name="activate"/>
-	<menu_item_call label="Kopiuj" name="copy_gesture"/>
-	<menu_item_call label="Wklej" name="paste"/>
-	<menu_item_call label="Kopiuj UUID" name="copy_uuid"/>
-	<menu_item_call label="Zapisz do obecnego zestawu ubrania" name="save_to_outfit"/>
-	<menu_item_call label="Edytuj" name="edit_gesture"/>
-	<menu_item_call label="Sprawdź" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_group_plus.xml b/indra/newview/skins/minimal/xui/pl/menu_group_plus.xml
deleted file mode 100644
index 83be4d38c515a9713f1b1aec807432df20ae8c46..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_call label="Dołącz do grupy..." name="item_join"/>
-	<menu_item_call label="Nowa grupa..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/pl/menu_hide_navbar.xml
deleted file mode 100644
index 19d9510cd3f05c26ac4174f8308ea7febacf338c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
-	<menu_item_check label="Pokaż pasek Nawigacji" name="ShowNavbarNavigationPanel"/>
-	<menu_item_check label="Pokaż pasek Ulubionych" name="ShowNavbarFavoritesPanel"/>
-	<menu_item_check label="Pokaż pasek mini-lokalizacji" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/pl/menu_im_well_button.xml
deleted file mode 100644
index 207bc2211b30df0242c54f17dfc33ba95794f5f2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/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/minimal/xui/pl/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/pl/menu_imchiclet_adhoc.xml
deleted file mode 100644
index 4ead44878a3f23d27dda5e640c3fe4ae454a19aa..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
-	<menu_item_call label="Zakończ rozmowę" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/pl/menu_imchiclet_group.xml
deleted file mode 100644
index 2b9a362123b23e779dd2701d2e98c53920b18a20..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
-	<menu_item_call label="O grupie" name="Show Profile"/>
-	<menu_item_call label="Pokaż sesję" name="Chat"/>
-	<menu_item_call label="Zakończ rozmowę" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/pl/menu_imchiclet_p2p.xml
deleted file mode 100644
index 8924d6db3e1b1fa6b7156902b1122ccc265cffb4..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
-	<menu_item_call label="Zobacz profil" name="Show Profile"/>
-	<menu_item_call label="Dodaj znajomość" name="Add Friend"/>
-	<menu_item_call label="Pokaż sesję" name="Send IM"/>
-	<menu_item_call label="Zakończ rozmowę" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 59560f236c279fa3c4acfa2bfba197fecb1bb690..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
-	<menu_item_call label="Zobacz profil" name="view_profile"/>
-	<menu_item_call label="Dodaj znajomość" name="add_friend"/>
-	<menu_item_call label="IM" name="im"/>
-	<menu_item_call label="Zadzwoń" name="call"/>
-	<menu_item_call label="Teleportuj" name="teleport"/>
-	<menu_item_call label="ZaproÅ› do grupy" name="invite_to_group"/>
-	<menu_item_call label="Zablokuj" name="block"/>
-	<menu_item_call label="Odblokuj" name="unblock"/>
-	<menu_item_call label="Raport" name="report"/>
-	<menu_item_call label="Unieruchom" name="freeze"/>
-	<menu_item_call label="Wyrzuć" name="eject"/>
-	<menu_item_call label="Kopnij" name="kick"/>
-	<menu_item_call label="CSR" name="csr"/>
-	<menu_item_call label="Debugowanie tekstur" name="debug"/>
-	<menu_item_call label="Znajdź na mapie" name="find_on_map"/>
-	<menu_item_call label="Przybliż" name="zoom_in"/>
-	<menu_item_call label="Zapłać" name="pay"/>
-	<menu_item_call label="Udostępnij" name="share"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_inspect_object_gear.xml
deleted file mode 100644
index c12bd490ff98485bcd41eae09577487f10c63798..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
-	<menu_item_call label="Dotknij" name="touch"/>
-	<menu_item_call label="Usiądź" name="sit"/>
-	<menu_item_call label="Zapłać" name="pay"/>
-	<menu_item_call label="Kup" name="buy"/>
-	<menu_item_call label="Weź" name="take"/>
-	<menu_item_call label="Weź kopię" name="take_copy"/>
-	<menu_item_call label="Otwórz" name="open"/>
-	<menu_item_call label="Edytuj" name="edit"/>
-	<menu_item_call label="Ubierz" name="wear"/>
-	<menu_item_call label="Dodaj" name="add"/>
-	<menu_item_call label="Raport" name="report"/>
-	<menu_item_call label="Zablokuj" name="block"/>
-	<menu_item_call label="Przybliż" name="zoom_in"/>
-	<menu_item_call label="Usuń" name="remove"/>
-	<menu_item_call label="Więcej informacji" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_inspect_self_gear.xml
deleted file mode 100644
index c4ef9761d9d73eaac285a9d9b8dd6053157e1a1d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
-	<menu_item_call label="Usiądź tutaj" name="Sit Down Here"/>
-	<menu_item_call label="Wstań" name="Stand Up"/>
-	<context_menu label="Zdejmij" name="Take Off &gt;">
-		<context_menu label="Ubranie" name="Clothes &gt;">
-			<menu_item_call label="Bluzka" name="Shirt"/>
-			<menu_item_call label="Spodnie" name="Pants"/>
-			<menu_item_call label="Spódnica" name="Skirt"/>
-			<menu_item_call label="Buty" name="Shoes"/>
-			<menu_item_call label="Skarpetki" name="Socks"/>
-			<menu_item_call label="Kurtka" name="Jacket"/>
-			<menu_item_call label="Rękawiczki" name="Gloves"/>
-			<menu_item_call label="Podkoszulek" name="Self Undershirt"/>
-			<menu_item_call label="Bielizna" name="Self Underpants"/>
-			<menu_item_call label="Tatuaż" name="Self Tattoo"/>
-			<menu_item_call label="Alpha" name="Self Alpha"/>
-			<menu_item_call label="Ubranie" name="All Clothes"/>
-		</context_menu>
-		<context_menu label="HUD" name="Object Detach HUD"/>
-		<context_menu label="Odłącz" name="Object Detach"/>
-		<menu_item_call label="Odłącz wszystko" name="Detach All"/>
-	</context_menu>
-	<menu_item_call label="Zmień strój" name="Chenge Outfit"/>
-	<menu_item_call label="Edytuj mój strój" name="Edit Outfit"/>
-	<menu_item_call label="Edytuj mój kształt" name="Edit My Shape"/>
-	<menu_item_call label="Znajomi" name="Friends..."/>
-	<menu_item_call label="Moje grupy" name="Groups..."/>
-	<menu_item_call label="Mój profil" name="Profile..."/>
-	<menu_item_call label="Debugowanie tekstur" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/pl/menu_inv_offer_chiclet.xml
deleted file mode 100644
index 5ef0f2f7a48925dd5026047ff49a51be7aff7cbf..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
-	<menu_item_call label="Zamknij" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inventory.xml b/indra/newview/skins/minimal/xui/pl/menu_inventory.xml
deleted file mode 100644
index e47ffa0e188bfa756de60738fce87230005bdb48..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inventory.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Udostępnij" name="Share"/>
-	<menu_item_call label="Kupuj" name="Task Buy"/>
-	<menu_item_call label="Otwórz" name="Task Open"/>
-	<menu_item_call label="Odtwarzaj" name="Task Play"/>
-	<menu_item_call label="Właściwości" name="Task Properties"/>
-	<menu_item_call label="Zmień nazwę" name="Task Rename"/>
-	<menu_item_call label="Usuń" name="Task Remove"/>
-	<menu_item_call label="Opróżnij Kosz" name="Empty Trash"/>
-	<menu_item_call label="Opróżnij Folder Zgubione i odnalezione" name="Empty Lost And Found"/>
-	<menu_item_call label="Nowy folder" name="New Folder"/>
-	<menu_item_call label="Nowy skrypt" name="New Script"/>
-	<menu_item_call label="Nowa nota" name="New Note"/>
-	<menu_item_call label="Nowa gesturka" name="New Gesture"/>
-	<menu label="Nowe Ubranie" name="New Clothes">
-		<menu_item_call label="Nowa koszula" name="New Shirt"/>
-		<menu_item_call label="Nowe spodnie" name="New Pants"/>
-		<menu_item_call label="Nowe buty" name="New Shoes"/>
-		<menu_item_call label="Nowe skarpety" name="New Socks"/>
-		<menu_item_call label="Nowa kurtka" name="New Jacket"/>
-		<menu_item_call label="Nowa spódnica" name="New Skirt"/>
-		<menu_item_call label="Nowe rękawiczki" name="New Gloves"/>
-		<menu_item_call label="Nowy podkoszulek" name="New Undershirt"/>
-		<menu_item_call label="Nowa bielizna" name="New Underpants"/>
-		<menu_item_call label="Nowa maska alpha" name="New Alpha Mask"/>
-		<menu_item_call label="Nowy tatuaż" name="New Tattoo"/>
-	</menu>
-	<menu label="Nowa Część Ciała" name="New Body Parts">
-		<menu_item_call label="Nowy kształt" name="New Shape"/>
-		<menu_item_call label="Nowa skórka" name="New Skin"/>
-		<menu_item_call label="Nowe włosy" name="New Hair"/>
-		<menu_item_call label="Nowe oczy" name="New Eyes"/>
-	</menu>
-	<menu label="Zmień Czcionkę" name="Change Type">
-		<menu_item_call label="Domyślna" name="Default"/>
-		<menu_item_call label="Rękawiczki" name="Gloves"/>
-		<menu_item_call label="Kurtka" name="Jacket"/>
-		<menu_item_call label="Spodnie" name="Pants"/>
-		<menu_item_call label="Kształt" name="Shape"/>
-		<menu_item_call label="Buty" name="Shoes"/>
-		<menu_item_call label="Koszula" name="Shirt"/>
-		<menu_item_call label="Spódnica" name="Skirt"/>
-		<menu_item_call label="Bielizna" name="Underpants"/>
-		<menu_item_call label="Podkoszulek" name="Undershirt"/>
-	</menu>
-	<menu_item_call label="Teleportuj" name="Landmark Open"/>
-	<menu_item_call label="Otwórz" name="Animation Open"/>
-	<menu_item_call label="Otwórz" name="Sound Open"/>
-	<menu_item_call label="Zmień strój" name="Replace Outfit"/>
-	<menu_item_call label="Dodaj do stroju" name="Add To Outfit"/>
-	<menu_item_call label="Usuń obiekt" name="Purge Item"/>
-	<menu_item_call label="Przywróć obiekt" name="Restore Item"/>
-	<menu_item_call label="Otwórz" name="Open"/>
-	<menu_item_call label="Otwórz oryginalne" name="Open Original"/>
-	<menu_item_call label="Właściwości" name="Properties"/>
-	<menu_item_call label="Zmień nazwę" name="Rename"/>
-	<menu_item_call label="Kopiuj dane UUID" name="Copy Asset UUID"/>
-	<menu_item_call label="Kopiuj" name="Copy"/>
-	<menu_item_call label="Wklej" name="Paste"/>
-	<menu_item_call label="Wklej jako link" name="Paste As Link"/>
-	<menu_item_call label="Usuń" name="Remove Link"/>
-	<menu_item_call label="Usuń" name="Delete"/>
-	<menu_item_call label="Skasuj folder systemu" name="Delete System Folder"/>
-	<menu_item_call label="Rozpocznij konferencjÄ™ czatowÄ…" name="Conference Chat Folder"/>
-	<menu_item_call label="Odtwarzaj" name="Sound Play"/>
-	<menu_item_call label="O Miejscu" name="About Landmark"/>
-	<menu_item_call label="Używaj in-world" name="Animation Play"/>
-	<menu_item_call label="Odtwarzaj lokalnie" name="Animation Audition"/>
-	<menu_item_call label="Wyślij IM" name="Send Instant Message"/>
-	<menu_item_call label="Teleportuj..." name="Offer Teleport..."/>
-	<menu_item_call label="Rozpocznij konferencjÄ™ czatowÄ…" name="Conference Chat"/>
-	<menu_item_call label="Aktywuj" name="Activate"/>
-	<menu_item_call label="Deaktywuj" name="Deactivate"/>
-	<menu_item_call label="Zapisz jako" name="Save As"/>
-	<menu_item_call label="Odłącz od siebie" name="Detach From Yourself"/>
-	<menu_item_call label="Załóż" name="Wearable And Object Wear"/>
-	<menu label="Dołącz do" name="Attach To"/>
-	<menu label="Dołącz do załączników HUD" name="Attach To HUD"/>
-	<menu_item_call label="Edytuj" name="Wearable Edit"/>
-	<menu_item_call label="Dodaj" name="Wearable Add"/>
-	<menu_item_call label="Zdejmij" name="Take Off"/>
-	<menu_item_call label="--brak opcji--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/pl/menu_inventory_add.xml
deleted file mode 100644
index 4a56586aafc734e61412a951bd8de451a123aec6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
-	<menu label="Załaduj" name="upload">
-		<menu_item_call label="obraz (L$[COST])..." name="Upload Image"/>
-		<menu_item_call label="dźwięk (L$[COST])..." name="Upload Sound"/>
-		<menu_item_call label="animacjÄ™ (L$[COST])..." name="Upload Animation"/>
-		<menu_item_call label="zbiór plików (L$[COST] za jeden plik)..." name="Bulk Upload"/>
-		<menu_item_call label="Ustaw domyślne pozwolenia ładowania" name="perm prefs"/>
-	</menu>
-	<menu_item_call label="Nowy folder" name="New Folder"/>
-	<menu_item_call label="Nowy skrypt" name="New Script"/>
-	<menu_item_call label="Nowa nota" name="New Note"/>
-	<menu_item_call label="Nowa gesturka" name="New Gesture"/>
-	<menu label="Nowe Ubranie" name="New Clothes">
-		<menu_item_call label="Nowa koszula" name="New Shirt"/>
-		<menu_item_call label="Nowe spodnie" name="New Pants"/>
-		<menu_item_call label="Nowe buty" name="New Shoes"/>
-		<menu_item_call label="Nowe skarpetki" name="New Socks"/>
-		<menu_item_call label="Nowa kurtka" name="New Jacket"/>
-		<menu_item_call label="Nowa spódnica" name="New Skirt"/>
-		<menu_item_call label="Nowe rękawiczki" name="New Gloves"/>
-		<menu_item_call label="Nowy podkoszulek" name="New Undershirt"/>
-		<menu_item_call label="Nowa bielizna" name="New Underpants"/>
-		<menu_item_call label="Nowa maska alpha" name="New Alpha"/>
-		<menu_item_call label="Nowy tatuaż" name="New Tattoo"/>
-	</menu>
-	<menu label="Nowa Część Ciała" name="New Body Parts">
-		<menu_item_call label="Nowy kształt" name="New Shape"/>
-		<menu_item_call label="Nowa skórka" name="New Skin"/>
-		<menu_item_call label="Nowe włosy" name="New Hair"/>
-		<menu_item_call label="Nowe oczy" name="New Eyes"/>
-	</menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/pl/menu_inventory_gear_default.xml
deleted file mode 100644
index 591c3a81d5f3d563c2c5b05179151130f4632efe..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
-	<menu_item_call label="Nowe okno Szafy" name="new_window"/>
-	<menu_item_check label="Porządkuj według nazwy" name="sort_by_name"/>
-	<menu_item_check label="Porządkuj według daty" name="sort_by_recent"/>
-	<menu_item_check label="Sortuj foldery zawsze według nazwy" name="sort_folders_by_name"/>
-	<menu_item_check label="Posortuj foldery systemowe od góry" name="sort_system_folders_to_top"/>
-	<menu_item_call label="Pokaż filtry" name="show_filters"/>
-	<menu_item_call label="Zresetuj filtry" name="reset_filters"/>
-	<menu_item_call label="Zamknij wszystkie foldery" name="close_folders"/>
-	<menu_item_call label="Opróżnij Zagubione i odnalezione" name="empty_lostnfound"/>
-	<menu_item_call label="Zapisz teksturÄ™ jako" name="Save Texture As"/>
-	<menu_item_call label="Udostępnij" name="Share"/>
-	<menu_item_call label="Znajdź oryginał" name="Find Original"/>
-	<menu_item_call label="Znajdź wszystkie linki" name="Find All Links"/>
-	<menu_item_call label="Opróżnij Kosz" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_land.xml b/indra/newview/skins/minimal/xui/pl/menu_land.xml
deleted file mode 100644
index cbfecaee56855bd8427660cbad9a8869f54a3ea2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
-	<menu_item_call label="O Posiadłości" name="Place Information..."/>
-	<menu_item_call label="Usiądź tutaj" name="Sit Here"/>
-	<menu_item_call label="Kup posiadłość" name="Land Buy"/>
-	<menu_item_call label="Kup przepustkÄ™" name="Land Buy Pass"/>
-	<menu_item_call label="Buduj" name="Create"/>
-	<menu_item_call label="Edytuj teren" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_landmark.xml b/indra/newview/skins/minimal/xui/pl/menu_landmark.xml
deleted file mode 100644
index aa5808390c4d7a3a6c1ba7e475b6b383782da4d0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
-	<menu_item_call label="Kopiuj SLurl" name="copy"/>
-	<menu_item_call label="Usuń" name="delete"/>
-	<menu_item_call label="Utwórz" name="pick"/>
-	<menu_item_call label="Dodaj do paska Ulubionych" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_login.xml b/indra/newview/skins/minimal/xui/pl/menu_login.xml
deleted file mode 100644
index e50b69464119b2f3b2b020f5af4b6422adbdfbdf..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
-	<menu label="Ja" name="File">
-		<menu_item_call label="Ustawienia" name="Preferences..."/>
-		<menu_item_call label="Wyłącz [APP_NAME]" name="Quit"/>
-	</menu>
-	<menu label="Pomoc" name="Help">
-		<menu_item_call label="[SECOND_LIFE]: Pomoc" name="Second Life Help"/>
-		<menu_item_call label="O [APP_NAME]" name="About Second Life"/>
-	</menu>
-	<menu_item_check label="Pokaż ustawienia debugowania" name="Show Debug Menu"/>
-	<menu label="Debug" name="Debug">
-		<menu_item_call label="Ustawienia debugowania" name="Debug Settings"/>
-		<menu_item_call label="Ustawienia UI/kolor" name="UI/Color Settings"/>
-		<menu label="UI Testy" name="UI Tests"/>
-		<menu_item_call label="Ustaw rozmiar interfejsu..." name="Set Window Size..."/>
-		<menu_item_call label="Wyświetl TOS" name="TOS"/>
-		<menu_item_call label="Wyświetl wiadomość krytyczną" name="Critical"/>
-		<menu_item_call label="Test przeglądarki mediów" name="Web Browser Test"/>
-		<menu_item_call label="Test zawartości strony" name="Web Content Floater Test"/>
-		<menu_item_check label="Pokaż siatkę" name="Show Grid Picker"/>
-		<menu_item_call label="Pokaż konsolę Zawiadomień" name="Show Notifications Console"/>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_mini_map.xml b/indra/newview/skins/minimal/xui/pl/menu_mini_map.xml
deleted file mode 100644
index 8f869654165d268d4c23e4ed73383f0473b47979..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Zoom blisko" name="Zoom Close"/>
-	<menu_item_call label="Zoom średnio" name="Zoom Medium"/>
-	<menu_item_call label="Zoom daleko" name="Zoom Far"/>
-	<menu_item_call label="Zoom domyślny" name="Zoom Default"/>
-	<menu_item_check label="Obróć mapę" name="Rotate Map"/>
-	<menu_item_check label="Autocentrowanie" name="Auto Center"/>
-	<menu_item_call label="Zatrzymaj" name="Stop Tracking"/>
-	<menu_item_call label="Mapa Åšwiata" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_navbar.xml b/indra/newview/skins/minimal/xui/pl/menu_navbar.xml
deleted file mode 100644
index 1d434670eeea01435f615e6c5f3c2b819cdca8a4..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
-	<menu_item_check label="Pokaż współrzędne" name="Show Coordinates"/>
-	<menu_item_check label="Pokaż właściwości posiadłości" name="Show Parcel Properties"/>
-	<menu_item_call label="Landmark" name="Landmark"/>
-	<menu_item_call label="Wytnij" name="Cut"/>
-	<menu_item_call label="Kopiuj" name="Copy"/>
-	<menu_item_call label="Wklej" name="Paste"/>
-	<menu_item_call label="Usuń" name="Delete"/>
-	<menu_item_call label="Zaznacz wszystko" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/pl/menu_nearby_chat.xml
deleted file mode 100644
index fe5bc6ba6f39a545357459212609220118016daf..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
-	<menu_item_call label="Pokaż osoby w pobliżu..." name="nearby_people"/>
-	<menu_item_check label="Pokaż zablokowany tekst" name="muted_text"/>
-	<menu_item_check label="Wyświetlaj ikonki znajomych" name="show_buddy_icons"/>
-	<menu_item_check label="Wyświetlaj imiona" name="show_names"/>
-	<menu_item_check label="Wyświetlaj ikonki i imiona" name="show_icons_and_names"/>
-	<menu_item_call label="Rozmiar czcionki" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/pl/menu_notification_well_button.xml
deleted file mode 100644
index bd3d42f9b1facfeef347dcd3aeaaf36cbac0423e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
-	<menu_item_call label="Zamknij" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_object.xml b/indra/newview/skins/minimal/xui/pl/menu_object.xml
deleted file mode 100644
index 3da6c5c8905b6b43975dfe532900bd11b7e4355a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
-	<menu_item_call label="Dotknij" name="Object Touch">
-		<menu_item_call.on_enable name="EnableTouch" parameter="Dotknij"/>
-	</menu_item_call>
-	<menu_item_call label="Edytuj" name="Edit..."/>
-	<menu_item_call label="Buduj" name="Build"/>
-	<menu_item_call label="Otwórz" name="Open"/>
-	<menu_item_call label="Usiądź tutaj" name="Object Sit"/>
-	<menu_item_call label="Wstań" name="Object Stand Up"/>
-	<menu_item_call label="Sprawdź" name="Object Inspect"/>
-	<menu_item_call label="Przybliż" name="Zoom In"/>
-	<context_menu label="Załóż na" name="Put On">
-		<menu_item_call label="Załóż" name="Wear"/>
-		<menu_item_call label="Dodaj" name="Add"/>
-		<context_menu label="Dołącz" name="Object Attach"/>
-		<context_menu label="Dołącz HUD" name="Object Attach HUD"/>
-	</context_menu>
-	<context_menu label="ZarzÄ…dzaj" name="Remove">
-		<menu_item_call label="Raport" name="Report Abuse..."/>
-		<menu_item_call label="Zablokuj" name="Object Mute"/>
-		<menu_item_call label="Zwróć" name="Return..."/>
-	</context_menu>
-	<menu_item_call label="Weź" name="Pie Object Take"/>
-	<menu_item_call label="Weź kopię" name="Take Copy"/>
-	<menu_item_call label="Zapłać" name="Pay..."/>
-	<menu_item_call label="Kup" name="Buy..."/>
-	<menu_item_call label="Skasuj" name="Delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_object_icon.xml b/indra/newview/skins/minimal/xui/pl/menu_object_icon.xml
deleted file mode 100644
index b499bca2dbfbd32c18c98b859dd4315d6348ba1f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
-	<menu_item_call label="Sprawdź..." name="Object Profile"/>
-	<menu_item_call label="Zablokuj..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_outfit_gear.xml
deleted file mode 100644
index 1a70e76ec7cb6a32136c781317a6e0f3dc2b86f2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
-	<menu_item_call label="Załóż - Zastąp obecny strój" name="wear"/>
-	<menu_item_call label="Załóż - Dodaj do bieżącego stroju" name="wear_add"/>
-	<menu_item_call label="Zdejmij - Usuń z obecnego stroju" name="take_off"/>
-	<menu label="Nowe ubranie" name="New Clothes">
-		<menu_item_call label="Nowa koszula" name="New Shirt"/>
-		<menu_item_call label="Nowe spodnie" name="New Pants"/>
-		<menu_item_call label="Nowe buty" name="New Shoes"/>
-		<menu_item_call label="Nowe skarpetki" name="New Socks"/>
-		<menu_item_call label="Nowa kurtka" name="New Jacket"/>
-		<menu_item_call label="Nowa spódnica" name="New Skirt"/>
-		<menu_item_call label="Nowe rękawiczki" name="New Gloves"/>
-		<menu_item_call label="Nowa podkoszulka" name="New Undershirt"/>
-		<menu_item_call label="Nowa bielizna" name="New Underpants"/>
-		<menu_item_call label="Nowa maska alpha" name="New Alpha"/>
-		<menu_item_call label="Nowy tatuaż" name="New Tattoo"/>
-	</menu>
-	<menu label="Nowe części ciała" name="New Body Parts">
-		<menu_item_call label="Nowy kształt" name="New Shape"/>
-		<menu_item_call label="Nowa skórka" name="New Skin"/>
-		<menu_item_call label="Nowe włosy" name="New Hair"/>
-		<menu_item_call label="Nowe oczy" name="New Eyes"/>
-	</menu>
-	<menu_item_call label="Zmień nazwę stroju" name="rename"/>
-	<menu_item_call label="Usuń strój" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/pl/menu_outfit_tab.xml
deleted file mode 100644
index 998e25f38ee12d50260a79628df0732c6a0178d9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
-	<menu_item_call label="Załóż - Zastąp obecny strój" name="wear_replace"/>
-	<menu_item_call label="Załóż - Dodaj do obecnego stroju" name="wear_add"/>
-	<menu_item_call label="Zdejmij - Usuń z obecnego stroju" name="take_off"/>
-	<menu_item_call label="Edytuj strój" name="edit"/>
-	<menu_item_call label="Zmień nazwę stroju" name="rename"/>
-	<menu_item_call label="Usuń strój" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_participant_list.xml b/indra/newview/skins/minimal/xui/pl/menu_participant_list.xml
deleted file mode 100644
index 9e591027887e7654c2e7c3ea37c6aad2c10f3256..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
-	<menu_item_check label="Sortuj według imienia" name="SortByName"/>
-	<menu_item_check label="Sortuj według ostatniego mówcy" name="SortByRecentSpeakers"/>
-	<menu_item_call label="Zobacz profil" name="View Profile"/>
-	<menu_item_call label="Dodaj znajomość" name="Add Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Zadzwoń" name="Call"/>
-	<menu_item_call label="Udostępnij" name="Share"/>
-	<menu_item_call label="Zapłać" name="Pay"/>
-	<menu_item_check label="PrzeglÄ…daj ikonki" name="View Icons"/>
-	<menu_item_check label="Zablokuj głos" name="Block/Unblock"/>
-	<menu_item_check label="Zablokuj tekst" name="MuteText"/>
-	<context_menu label="Opcje Moderatora" name="Moderator Options">
-		<menu_item_check label="Czat/IM dozwolony" name="AllowTextChat"/>
-		<menu_item_call label="Wycisz tego uczestnika" name="ModerateVoiceMuteSelected"/>
-		<menu_item_call label="Odblokuj wyciszenie tego uczestnika" name="ModerateVoiceUnMuteSelected"/>
-		<menu_item_call label="Wycisz wszystkich" name="ModerateVoiceMute"/>
-		<menu_item_call label="Cofnij wyciszenie wszystkim" name="ModerateVoiceUnmute"/>
-	</context_menu>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_friends_view_sort.xml
deleted file mode 100644
index b62b85d30a4f8659e8afa4e6b8d1a5955f36c466..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Porządkuj według nazwy" name="sort_name"/>
-	<menu_item_check label="Porządkuj według statusu" name="sort_status"/>
-	<menu_item_check label="Wyświetlaj ikonki" name="view_icons"/>
-	<menu_item_check label="Zobacz udzielone prawa" name="view_permissions"/>
-	<menu_item_call label="Pokaż zablokowanych Rezydentów &amp; obiekty" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_groups.xml b/indra/newview/skins/minimal/xui/pl/menu_people_groups.xml
deleted file mode 100644
index ace5ebf888464b9c1aab41dd8797c22feaeb7301..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_call label="Zobacz info" name="View Info"/>
-	<menu_item_call label="Czat" name="Chat"/>
-	<menu_item_call label="Rozmowa" name="Call"/>
-	<menu_item_call label="Aktywuj" name="Activate"/>
-	<menu_item_call label="Opuść" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_groups_view_sort.xml
deleted file mode 100644
index c70ea2315f4fd8f108729ef45d76f6a71da7ad10..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Wyświetlaj ikonki grupy" name="Display Group Icons"/>
-	<menu_item_call label="Opuść zaznaczone grupy" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/pl/menu_people_nearby.xml
deleted file mode 100644
index 0111e0fd5125383ffb1a4687d3142257b95807da..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Avatar Context Menu">
-	<menu_item_call label="Zobacz profil" name="View Profile"/>
-	<menu_item_call label="Dodaj do znajomych" name="Add Friend"/>
-	<menu_item_call label="Usuń z listy znajomych" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Zadzwoń" name="Call"/>
-	<menu_item_call label="Mapa" name="Map"/>
-	<menu_item_call label="Udostępnij" name="Share"/>
-	<menu_item_call label="Zapłać" name="Pay"/>
-	<menu_item_check label="Zablokuj/Odblokuj" name="Block/Unblock"/>
-	<menu_item_call label="Teleportuj" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/pl/menu_people_nearby_multiselect.xml
deleted file mode 100644
index dcfc48fb606418674cb003f172e16e5247d5964c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Multi-Selected People Context Menu">
-	<menu_item_call label="Dodaj znajomych" name="Add Friends"/>
-	<menu_item_call label="Usuń znajomych" name="Remove Friend"/>
-	<menu_item_call label="IM" name="IM"/>
-	<menu_item_call label="Zadzwoń" name="Call"/>
-	<menu_item_call label="Udostępnij" name="Share"/>
-	<menu_item_call label="Zapłać" name="Pay"/>
-	<menu_item_call label="Teleportuj" name="teleport"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 8ec3820f84e888c5bc13ee47df866d53d55997b2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Porządkuj według ostatnich rozmówców" name="sort_by_recent_speakers"/>
-	<menu_item_check label="Porządkuj według nazwy" name="sort_name"/>
-	<menu_item_check label="Porządkuj według odległości" name="sort_distance"/>
-	<menu_item_check label="Wyświetlaj ikonki" name="view_icons"/>
-	<menu_item_call label="Pokaż zablokowanych Rezydentów &amp; obiekty" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/pl/menu_people_recent_view_sort.xml
deleted file mode 100644
index b474a556bdad38e6f19fa4c2892a3ef251507b53..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Porządkuj według daty" name="sort_most"/>
-	<menu_item_check label="Porządkuj według nazwy" name="sort_name"/>
-	<menu_item_check label="Wyświetlaj ikonki" name="view_icons"/>
-	<menu_item_call label="Pokaż zablokowanych Rezydentów &amp; obiekty" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_picks.xml b/indra/newview/skins/minimal/xui/pl/menu_picks.xml
deleted file mode 100644
index 6f6e4b7fa80df9a2d9801c5aea2f2d3a9e4b2974..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
-	<menu_item_call label="Info" name="pick_info"/>
-	<menu_item_call label="Edytuj" name="pick_edit"/>
-	<menu_item_call label="Teleportuj" name="pick_teleport"/>
-	<menu_item_call label="Mapa" name="pick_map"/>
-	<menu_item_call label="Usuń" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/pl/menu_picks_plus.xml
deleted file mode 100644
index e9c00f51a978c7ff28b5a47c8e373a9761fc05b3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
-	<menu_item_call label="Stwórz" name="create_pick"/>
-	<menu_item_call label="Nowa reklama" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_place.xml b/indra/newview/skins/minimal/xui/pl/menu_place.xml
deleted file mode 100644
index c3b72d6abbddafed423f8ada857be161387c422c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
-	<menu_item_call label="Zapisz landmark" name="landmark"/>
-	<menu_item_call label="Utwórz" name="pick"/>
-	<menu_item_call label="Kup przepustkÄ™" name="pass"/>
-	<menu_item_call label="Edytuj" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/pl/menu_place_add_button.xml
deleted file mode 100644
index 3d0c1c87fb199763200ed65e5e3e7a00f9ead0bc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
-	<menu_item_call label="Dodaj folder" name="add_folder"/>
-	<menu_item_call label="Dodaj do landmarków" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/pl/menu_places_gear_folder.xml
deleted file mode 100644
index d1f283b7aa3c4672f6405d7aae7969493e624170..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_folder_gear">
-	<menu_item_call label="Dodaj do landmarków" name="add_landmark"/>
-	<menu_item_call label="Dodaj folder" name="add_folder"/>
-	<menu_item_call label="Przywróć obiekt" name="restore_item"/>
-	<menu_item_call label="Wytnij" name="cut"/>
-	<menu_item_call label="Kopiuj" name="copy_folder"/>
-	<menu_item_call label="Wklej" name="paste"/>
-	<menu_item_call label="Zmień nazwę" name="rename"/>
-	<menu_item_call label="Usuń" name="delete"/>
-	<menu_item_call label="Rozwiń" name="expand"/>
-	<menu_item_call label="Schowaj" name="collapse"/>
-	<menu_item_call label="Rozwiń wszystkie foldery" name="expand_all"/>
-	<menu_item_call label="Schowaj wszystkie foldery" name="collapse_all"/>
-	<menu_item_check label="Sortuj według daty" name="sort_by_date"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/pl/menu_places_gear_landmark.xml
deleted file mode 100644
index 0139d3a98799049e5571c87b1c0d6c00f7e19592..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_ladmark_gear">
-	<menu_item_call label="Teleportuj" name="teleport"/>
-	<menu_item_call label="Więcej informacji" name="more_info"/>
-	<menu_item_call label="Pokaż na mapie" name="show_on_map"/>
-	<menu_item_call label="Dodaj do landmarków" name="add_landmark"/>
-	<menu_item_call label="Dodaj folder" name="add_folder"/>
-	<menu_item_call label="Przywróć obiekt" name="restore_item"/>
-	<menu_item_call label="Wytnij" name="cut"/>
-	<menu_item_call label="Kopiuj landmark" name="copy_landmark"/>
-	<menu_item_call label="Kopiuj SLurl" name="copy_slurl"/>
-	<menu_item_call label="Wklej" name="paste"/>
-	<menu_item_call label="Zmień nazwę" name="rename"/>
-	<menu_item_call label="Usuń" name="delete"/>
-	<menu_item_call label="Rozwiń wszystkie foldery" name="expand_all"/>
-	<menu_item_call label="Schowaj wszystkie foldery" name="collapse_all"/>
-	<menu_item_check label="Sortuj według daty" name="sort_by_date"/>
-	<menu_item_call label="Stwórz Ulubione" name="create_pick"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/pl/menu_profile_overflow.xml
deleted file mode 100644
index ef836c8ecfe3f59c0244a46a60f2a1f492fc49ce..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
-	<menu_item_call label="Mapa" name="show_on_map"/>
-	<menu_item_call label="Zapłać" name="pay"/>
-	<menu_item_call label="Udostępnij" name="share"/>
-	<menu_item_call label="Zablokuj" name="block"/>
-	<menu_item_call label="Odblokuj" name="unblock"/>
-	<menu_item_call label="Wyrzuć" name="kick"/>
-	<menu_item_call label="Unieruchom" name="freeze"/>
-	<menu_item_call label="Uruchom" name="unfreeze"/>
-	<menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/pl/menu_save_outfit.xml
deleted file mode 100644
index 4bc65eca38fa4421e0d8749acd634a4a46f266bd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
-	<menu_item_call label="Zapisz" name="save_outfit"/>
-	<menu_item_call label="Zapisz jako" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/pl/menu_script_chiclet.xml
deleted file mode 100644
index 256500a402a883b6d77a85914ff5525cc9b0dd10..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
-	<menu_item_call label="Zamknij" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_slurl.xml b/indra/newview/skins/minimal/xui/pl/menu_slurl.xml
deleted file mode 100644
index 862f538aa7730b3641bff874bd406d46551e01ea..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="O miejscu" name="about_url"/>
-	<menu_item_call label="Teleportuj do miejsca" name="teleport_to_url"/>
-	<menu_item_call label="Mapa" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_teleport_history_gear.xml
deleted file mode 100644
index 0e58592d46a66a044465a2a1229051e5df44feef..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
-	<menu_item_call label="Rozwiń wszystkie foldery" name="Expand all folders"/>
-	<menu_item_call label="Schowaj wszystkie foldery" name="Collapse all folders"/>
-	<menu_item_call label="Wyczyść historię teleportacji" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/pl/menu_teleport_history_item.xml
deleted file mode 100644
index cd36c116b065f7a49c2538de5de7baf257912058..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Teleportuj" name="Teleport"/>
-	<menu_item_call label="Więcej szczegółów" name="More Information"/>
-	<menu_item_call label="Kopiuj do schowka" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/pl/menu_teleport_history_tab.xml
deleted file mode 100644
index b12df08d6ae55b1bab1334bc81eb704e2e2164ee..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Otwórz" name="TabOpen"/>
-	<menu_item_call label="Zamknij" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_text_editor.xml b/indra/newview/skins/minimal/xui/pl/menu_text_editor.xml
deleted file mode 100644
index 812f87bc1a3183957ac62940e842beab7003539d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
-	<menu_item_call label="Wytnij" name="Cut"/>
-	<menu_item_call label="Kopiuj" name="Copy"/>
-	<menu_item_call label="Wklej" name="Paste"/>
-	<menu_item_call label="Usuń" name="Delete"/>
-	<menu_item_call label="Zaznacz wszystko" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/pl/menu_topinfobar.xml
deleted file mode 100644
index 53536c8f1cfe96b08de665eea9dca7a6d9bbab81..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
-	<menu_item_check label="Pokaż współprzędne" name="Show Coordinates"/>
-	<menu_item_check label="Pokaż O Posiadłości" name="Show Parcel Properties"/>
-	<menu_item_call label="Landmark" name="Landmark"/>
-	<menu_item_call label="Kopiuj" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_agent.xml b/indra/newview/skins/minimal/xui/pl/menu_url_agent.xml
deleted file mode 100644
index db729be725febdf25e91584d4788d05a523cb160..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Pokaż profil Rezydenta" name="show_agent"/>
-	<menu_item_call label="Kopiuj nazwÄ™ do schowka" name="url_copy_label"/>
-	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_group.xml b/indra/newview/skins/minimal/xui/pl/menu_url_group.xml
deleted file mode 100644
index f340b3296aac7f193d7046cf0e4139110965292d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Pokaż szczegóły o grupie" name="show_group"/>
-	<menu_item_call label="Kopiuj grupÄ™ do schowka" name="url_copy_label"/>
-	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_http.xml b/indra/newview/skins/minimal/xui/pl/menu_url_http.xml
deleted file mode 100644
index e73f7b674562e71b81864fba4fa3decd812fb360..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Otwórz przeglądarkę internetową" name="url_open"/>
-	<menu_item_call label="Otwórz w wewnętrzenej przeglądarce" name="url_open_internal"/>
-	<menu_item_call label="Otwórz w zewnętrznej przeglądarce" name="url_open_external"/>
-	<menu_item_call label="Kopiuj URL do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/pl/menu_url_inventory.xml
deleted file mode 100644
index e36fa0dd2baddb63cb7a09f121dac47e099be005..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Pokaż obiekt w szafie" name="show_item"/>
-	<menu_item_call label="Kopiuj nazwÄ™ do schowka" name="url_copy_label"/>
-	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_map.xml b/indra/newview/skins/minimal/xui/pl/menu_url_map.xml
deleted file mode 100644
index 179ab1f6768213a1629ae7b3ce85cabc542f30d9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Pokaż na mapie" name="show_on_map"/>
-	<menu_item_call label="Teleportuj do miejsca" name="teleport_to_location"/>
-	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/pl/menu_url_objectim.xml
deleted file mode 100644
index 7576208a9ef1e706579dbcc90ff65d866cd73c2a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Pokaż szczegóły o obiekcie" name="show_object"/>
-	<menu_item_call label="Pokaż na mapie" name="show_on_map"/>
-	<menu_item_call label="Teleportuj to miejsca obiektu" name="teleport_to_object"/>
-	<menu_item_call label="Kopiuj nazwÄ™ obiektu do schowka" name="url_copy_label"/>
-	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/pl/menu_url_parcel.xml
deleted file mode 100644
index 1b8dd6213723ea427d82b95527066d918c3a21c8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Pokaż szczegóły o miejscu" name="show_parcel"/>
-	<menu_item_call label="Pokaż na mapie" name="show_on_map"/>
-	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/pl/menu_url_slapp.xml
deleted file mode 100644
index eb83245c48c5cc44616619b08371486ec3d9812b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Uruchom tÄ™ komendÄ™" name="run_slapp"/>
-	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/pl/menu_url_slurl.xml
deleted file mode 100644
index 4d4a5b4c4d90b11c0895763bf83aafe22f57eefa..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Pokaż szczegóły o miejscu" name="show_place"/>
-	<menu_item_call label="Pokaż na mapie" name="show_on_map"/>
-	<menu_item_call label="Teleportuj do miejsca" name="teleport_to_location"/>
-	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/pl/menu_url_teleport.xml
deleted file mode 100644
index e2255469300600f63e6d03878778526e85c1aa28..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Teleportuj do tego miejsca" name="teleport"/>
-	<menu_item_call label="Pokaż na mapie" name="show_on_map"/>
-	<menu_item_call label="Kopiuj SLurl do schowka" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_viewer.xml b/indra/newview/skins/minimal/xui/pl/menu_viewer.xml
deleted file mode 100644
index 0196dc86130913cd9e7592fd781ffca3e82e01d1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
-	<menu label="Pomoc" name="Help">
-		<menu_item_call label="[SECOND_LIFE] Portal Pomocy" name="Second Life Help"/>
-	</menu>
-	<menu label="Zaawansowane" name="Advanced">
-		<menu label="Skróty" name="Shortcuts">
-			<menu_item_check label="Zacznij latać" name="Fly"/>
-			<menu_item_call label="Zamknij okno" name="Close Window"/>
-			<menu_item_call label="Zamknij wszystkie okna" name="Close All Windows"/>
-			<menu_item_call label="Reset widoku" name="Reset View"/>
-		</menu>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/pl/menu_wearable_list_item.xml
deleted file mode 100644
index bf85246be84d8adcb589b0f4be3c14d597d79357..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
-	<menu_item_call label="ZastÄ…p" name="wear_replace"/>
-	<menu_item_call label="Załóż" name="wear_wear"/>
-	<menu_item_call label="Dodaj" name="wear_add"/>
-	<menu_item_call label="Zdejmij/Odłącz" name="take_off_or_detach"/>
-	<menu_item_call label="Odłącz" name="detach"/>
-	<context_menu label="Dołącz do" name="wearable_attach_to"/>
-	<context_menu label="Dołącz do załączników HUD" name="wearable_attach_to_hud"/>
-	<menu_item_call label="Zdejmij" name="take_off"/>
-	<menu_item_call label="Edytuj" name="edit"/>
-	<menu_item_call label="Profil obiektu" name="object_profile"/>
-	<menu_item_call label="Pokaż oryginalny" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/pl/menu_wearing_gear.xml
deleted file mode 100644
index 47cafdbd999efb8a5b318a54e0a148b04e633a96..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
-	<menu_item_call label="Edytuj strój" name="edit"/>
-	<menu_item_call label="Zdejmij" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pl/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/pl/menu_wearing_tab.xml
deleted file mode 100644
index 753143704320159934e6c540e4739625c20dc5af..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
-	<menu_item_call label="Zdejmij" name="take_off"/>
-	<menu_item_call label="Odłącz" name="detach"/>
-	<menu_item_call label="Edytuj strój" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pl/notifications.xml b/indra/newview/skins/minimal/xui/pl/notifications.xml
deleted file mode 100644
index 6475a37465336ff900c4c37fffbaf577ac6fb885..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/notifications.xml
+++ /dev/null
@@ -1,2907 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
-	<global name="skipnexttime">
-		Nie pokazuj tej opcji następnym razem
-	</global>
-	<global name="alwayschoose">
-		Pozwalaj na wybór tej opcji
-	</global>
-	<global name="implicitclosebutton">
-		Zamknij
-	</global>
-	<template name="okbutton">
-		<form>
-			<button name="OK_okbutton" text="$yestext"/>
-		</form>
-	</template>
-	<template name="okignore">
-		<form>
-			<button name="OK_okignore" text="$yestext"/>
-		</form>
-	</template>
-	<template name="okcancelbuttons">
-		<form>
-			<button name="OK_okcancelbuttons" text="$yestext"/>
-			<button name="Cancel_okcancelbuttons" text="$notext"/>
-		</form>
-	</template>
-	<template name="okcancelignore">
-		<form>
-			<button name="OK_okcancelignore" text="$yestext"/>
-			<button name="Cancel_okcancelignore" text="$canceltext"/>
-		</form>
-	</template>
-	<template name="okhelpbuttons">
-		<form>
-			<button name="OK_okhelpbuttons" text="$yestext"/>
-			<button name="Help" text="$helptext"/>
-		</form>
-	</template>
-	<template name="yesnocancelbuttons">
-		<form>
-			<button name="Yes" text="$yestext"/>
-			<button name="No" text="$notext"/>
-			<button name="Cancel_yesnocancelbuttons" text="$canceltext"/>
-		</form>
-	</template>
-	<notification functor="GenericAcknowledge" label="Nieznany rodzaj komunikatu" name="MissingAlert">
-		Twoja wersja klienta [APP_NAME] nie może wyświetlić odebranej wiadomości. Upewnij się, że posiadasz najnowszą wersję klienta.
-
-Szczegóły błędu: Błąd o nazwie &apos;[_NAME]&apos; nie został odnaleziony w pliku notifications.xml.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="FloaterNotFound">
-		Błąd: nie można znaleźć następujących elementów:
-
-[CONTROLS]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="TutorialNotFound">
-		Brak samouczka na ten temat
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="GenericAlert">
-		[MESSAGE]
-	</notification>
-	<notification name="GenericAlertYesCancel">
-		[MESSAGE]
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/>
-	</notification>
-	<notification name="BadInstallation">
-		Podczas aktualizacji [APP_NAME] wystąpił błąd. Proszę odwiedzić stronę [http://get.secondlife.com pobierz najnowsza wersję] aby ściągnąć ostatnią wersję klienta.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="LoginFailedNoNetwork">
-		Nie można połączyć z [SECOND_LIFE_GRID].
-    &apos;[DIAGNOSTIC]&apos;
-Upewnij się, że Twoje połączenie z internetem działa.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="MessageTemplateNotFound">
-		Wzór komunikatu dla [PATH] nie został odnaleziony.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="WearableSave">
-		Zapisać zmiany dotyczące ubrania/części ciała?
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/>
-	</notification>
-	<notification name="CompileQueueSaveText">
-		W trakcie ładwania tekstu dla skryptu pojawił się problem z następującego powodu: [REASON]. Spróbuj ponownie za kilka minut.
-	</notification>
-	<notification name="CompileQueueSaveBytecode">
-		W trakcie ładowania skompilowanego skryptu pojawił się problem z następującego powodu: [REASON]. Spróbuj ponownie za kilka minut.
-	</notification>
-	<notification name="WriteAnimationFail">
-		Problem w zapisywaniu danych animacji. Spróbuj ponownie za kilka minut.
-	</notification>
-	<notification name="UploadAuctionSnapshotFail">
-		W trakcie ładwania obrazu aukcji pojawił się problem z następującego powodu: [REASON].
-	</notification>
-	<notification name="UnableToViewContentsMoreThanOne">
-		Nie można przeglądać zawartości więcej niż jednego obiektu naraz.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
-	</notification>
-	<notification name="SaveClothingBodyChanges">
-		Zapisać wszystkie zmiany dotyczące ubrania/cześci ciała?
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie zapisuj" yestext="Zapisz"/>
-	</notification>
-	<notification name="FriendsAndGroupsOnly">
-		Osoby spoza listy znajomych, których rozmowy głosowe i IM są ignorowane, nie wiedzą o tym.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="FavoritesOnLogin">
-		Pamiętaj: kiedy wyłączysz tą opcję, każdy kto używa tego komputera, może zobaczyć Twoją listę ulubionych miejsc.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="GrantModifyRights">
-		Udzielenie praw modyfikacji innemu Rezydentowi umożliwia modyfikację, usuwanie lub wzięcie JAKIEGOKOLWIEK z Twoich obiektów. Używaj tej opcji z rozwagą!
-Czy chcesz udzielić prawa do modyfikacji [NAME]?
-		<usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="GrantModifyRightsMultiple">
-		Udzielenie praw modyfikacji innym Rezydentom umożliwia im modyfikację, usuwanie lub wzięcie JAKIEGOKOLWIEK z Twoich obiektów. Używaj tej opcji z rozwagą!
-Czy chcesz dać prawa modyfikacji wybranym osobom?
-		<usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="RevokeModifyRights">
-		Czy chcesz odebrać prawa do modyfikacji [NAME]?
-		<usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="RevokeModifyRightsMultiple">
-		Czy chcesz odebrać prawa modyfikacji wybranym Rezydentom?
-		<usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="UnableToCreateGroup">
-		Założenie grupy nie jest możliwe.
-[MESSAGE]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="PanelGroupApply">
-		[NEEDS_APPLY_MESSAGE]
-[WANT_APPLY_MESSAGE]
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Ignoruj zmiany" yestext="Zastosuj zmiany"/>
-	</notification>
-	<notification name="MustSpecifyGroupNoticeSubject">
-		Aby wysłać ogłoszenie do grupy musisz nadać mu tytuł.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AddGroupOwnerWarning">
-		Dodajesz członków do funkcji [ROLE_NAME].
-Ta funkcja nie może być odebrana.
-Członkowie muszą sami zrezygnować z pełnienia tej funkcji.
-Chcesz kontynuować?
-		<usetemplate ignoretext="Przed dodaniem nowego właściciela do grupy, proszę potwierdzić swoją decyzję." name="okcancelignore" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="AssignDangerousActionWarning">
-		Dodajesz przywilej [ACTION_NAME] do fukcji [ROLE_NAME].
-
-*UWAGA*
-Członek w funkcji z tym przywilejem może przypisać siebie i innych członków nie będących właścicielami do funkcji dających więcej przywilejów niż posiadane obecnie potencjalnie dające możliwości zbliżone do możliwości właściciela.
-Udzielaj tego przywileju z rozwagÄ….&quot;
-
-Dodać ten przywilej do funkcji [ROLE_NAME]?
-		<usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="AssignDangerousAbilityWarning">
-		Dodajesz przywilej [ACTION_NAME] do fukcji [ROLE_NAME]
-
-*UWAGA*
-Członek w funkcji z tym przywilejem może przypisać sobie i innychm członkom nie będącym właścicielami wszystkie przywileje potencjalnie dające możliwości zbliżone do możliwości właściciela.
-Udzielaj tego przywileju z rozwagÄ….
-
-Dodać ten przywilej do funkcji [ROLE_NAME]?
-		<usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="AttachmentDrop">
-		Wybrałeś opcję opuszczenia swojego załącznika.
-    Czy chcesz kontynuować?
-		<usetemplate ignoretext="Potwierdź przed zdjęciem załącznika." name="okcancelignore" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="JoinGroupCanAfford">
-		Dołączenie do tej grupy kosztuje [COST]L$.
-Chcesz kontynuować?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Dołącz"/>
-	</notification>
-	<notification name="JoinGroupNoCost">
-		Dołączasz do grupy [NAME].
-Czy chcesz kontynuować?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Akceptuj"/>
-	</notification>
-	<notification name="JoinGroupCannotAfford">
-		Członkostwo w tej grupie kosztuje [COST]L$
-Masz za mało L$ żeby zostać członkiem.
-	</notification>
-	<notification name="CreateGroupCost">
-		Stworzenie tej grupy kosztuje 100L$.
-W grupie powinien być więcej niż jeden członek, albo zostanie na zawsze skasowana.
-Zaproś proszę członków w ciągu 48 godzin.
-		<usetemplate canceltext="Anuluj" name="okcancelbuttons" notext="Anuluj" yestext="Stwórz grupę za 100L$"/>
-	</notification>
-	<notification name="LandBuyPass">
-		Za [COST]L$ możesz odwiedzić tą posiadłość (&apos;[PARCEL_NAME]&apos;) na [TIME] godzin. Chcesz kupić przepustkę?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="SalePriceRestriction">
-		Cena sprzedaży musi być wyższa niż 0L$ jeżeli sprzedajesz komukolwiek.
-Musisz wybrać kupca jeżeli chcesz sprzedać za 0L$.
-	</notification>
-	<notification name="ConfirmLandSaleChange">
-		Posiadłość o powierzchni [LAND_SIZE] m zostaje wystawiona na sprzedaż.
-Cena wynosi [SALE_PRICE]L$ i sprzedaż będzie autoryzowana dla [NAME].
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmLandSaleToAnyoneChange">
-		UWAGA: Wybierając opcję &quot;Sprzedaj Każdemu&quot; udostępniasz swoją posiadłość do sprzedaży dla jakiegokolwiek Rezydenta [SECOND_LIFE] , nawet osób nieobecnych w tym regionie.
-
-Posiadłość o powierzchni [LAND_SIZE] m² zostaje wystawiona na sprzedaż.
-Cena wynosi [SALE_PRICE]L$ i sprzedaż będzie autoryzowana dla [NAME].
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsDeededToGroup">
-		Czy na pewno chcesz zwrócić wszystkie obiekty udostępnione grupie [NAME] na tej posiadłości do szafy ich poprzednich właścicieli?
-
-*UWAGA* Wybrana opcja spowoduje usunięcie wszystkich obiektów
-udostępnionych grupie, które nie mają praw transferu!
-
-Obiekty: [N]
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsOwnedByUser">
-		Czy na pewno chcesz zwrócić wszystkie obiekty należące do Rezydenta [NAME] znajdujące się na tej posiadłości do szafy właściciela?
-
-Obiekty: [N]
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsOwnedBySelf">
-		Czy na pewno chcesz zwrócić wszystkie Twoje obiekty znajdujące się na tej posiadłości do swojej szafy?
-
-Obiekty: [N]
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsNotOwnedBySelf">
-		Czy na pewno chcesz zwrócić wszystkie obiekty, których nie jesteś właścicielem znajdujące się na tej posiadłości do szaf właścicieli? Wszystkie obiekty udostępnione grupie z prawem transferu, zostaną zwrócone poprzednim właścicielom.
-
-*UWAGA* Wybrana opcja spowoduje usunięcie wszystkich obiektów udostępnionych grupie, które nie mają praw transferu!
-
-Obiekty: [N]
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsNotOwnedByUser">
-		Czy na pewno chcesz zwrócić wszystkie obiekty, które nie należą do [NAME] znajdujące się na tej posiadłości do szaf właścicieli? Wszystkie obiekty udostępnione grupie z prawem transferu, zostaną zwrócone poprzednim właścicielom.
-
-*UWAGA* Wybrana opcja spowoduje usunięcie wszystkich obiektów udostępnionych grupie, które nie mają praw transferu!
-
-Obiekty: [N]
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ReturnAllTopObjects">
-		Czy na pewno chcesz zwrócić wszystkie wymienione obiekty znajdujące się na tej posiadłości do szaf ich właścicieli?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="DisableAllTopObjects">
-		Czy na pewno chcesz deaktywować wszystkie obiekty w tym Regionie?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ReturnObjectsNotOwnedByGroup">
-		Zwrócić obiekty z tej posiadłości, które nie są udosępnione grupie [NAME] do ich właścicieli?
-
-Obiekty: [N]
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="UnableToDisableOutsideScripts">
-		Nie można deaktywować skryptów.
-Ten region pozwala na uszkodzenia.
-Skrypty muszą pozostać aktywne dla prawidłowego działania broni.
-	</notification>
-	<notification name="MultipleFacesSelected">
-		Obecnie zaznaczono wiele powierzchni.
-Jeśli działanie będzie kontynuowane, oddzielne media będą ustawione na wielu powierzchniach obiektu. 
-W celu umieszczenia mediów tylko na jednej powierzchni skorzystaj z Wybierz powierzchnię i kliknij na wybranej powierzchni obiektu oraz kliknij Dodaj.
-		<usetemplate ignoretext="Media zostanÄ… ustawione na wielu zaznaczonych powierzchniach" name="okcancelignore" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="MustBeInParcel">
-		Musisz znajdować się wewnątrz posiadłości żeby wybrać punkt lądowania.
-	</notification>
-	<notification name="PromptRecipientEmail">
-		Proszę wpisać adres emailowy odbiorcy.
-	</notification>
-	<notification name="PromptSelfEmail">
-		Proszę wpisać swój adres emailowy.
-	</notification>
-	<notification name="PromptMissingSubjMsg">
-		Wysłać widokówkę z domyślnym tematem i wiadomością?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ErrorProcessingSnapshot">
-		Błąd w trakcie przetwarzania danych zdjęcia.
-	</notification>
-	<notification name="ErrorEncodingSnapshot">
-		Błąd w kodowaniu zdjęcia.
-	</notification>
-	<notification name="ErrorUploadingPostcard">
-		W trakcie ładowania zdjęcia pojawił się problem z następującego powodu: [REASON]
-	</notification>
-	<notification name="ErrorUploadingReportScreenshot">
-		W trakcie ładowania zdjęcia ekranu do raportu pojawił się problem z następującego powodu: [REASON]
-	</notification>
-	<notification name="MustAgreeToLogIn">
-		Musisz zaakceptować Warunki Umowy (Terms of Service) by kontynuować logowanie się do [SECOND_LIFE].
-	</notification>
-	<notification name="CouldNotPutOnOutfit">
-		Założenie stroju nie powiodło się.
-Folder stroju nie zawiera żadnego ubrania, części ciała ani załączników.
-	</notification>
-	<notification name="CannotWearTrash">
-		Nie możesz założyć ubrania, które znajduje się w koszu.
-	</notification>
-	<notification name="MaxAttachmentsOnOutfit">
-		Nie można dołączyć obiektu.
-Limit [MAX_ATTACHMENTS] załączników został przekroczony. Proszę najpierw odłączyć inny obiekt.
-	</notification>
-	<notification name="CannotWearInfoNotComplete">
-		Nie możesz założyć tego artkułu ponieważ nie załadował się poprawnie. Spróbuj ponownie za kilka minut.
-	</notification>
-	<notification name="MustHaveAccountToLogIn">
-		Oops! Brakuje czegoÅ›.
-Należy wprowadzić nazwę użytkownika.
-
-Potrzebujesz konta aby się zalogować do [SECOND_LIFE]. Czy chcesz utworzyć je teraz?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="InvalidCredentialFormat">
-		Należy wprowadzić nazwę użytkownika lub imię oraz nazwisko Twojego awatara w pole nazwy użytkownika a następnie ponownie się zalogować.
-	</notification>
-	<notification name="DeleteClassified">
-		Usunąć reklamę &apos;[NAME]&apos;?
-Pamiętaj! Nie ma rekompensaty za poniesione koszta.
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="DeleteMedia">
-		Wybrano usunięcie mediów związanych z tą powierzchnią.
-Czy na pewno chcesz kontynuować?
-		<usetemplate ignoretext="Potwierdź przed usunięciem mediów z obiektu" name="okcancelignore" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="ClassifiedSave">
-		Zapisać zmiany w reklamie [NAME]?
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie Zapisuj" yestext="Zapisz"/>
-	</notification>
-	<notification name="ClassifiedInsufficientFunds">
-		Nie posiadasz wystarczających środków aby dodać reklamę.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="DeleteAvatarPick">
-		Usuń zdjęcie &lt;nolink&gt;[PICK]&lt;/nolink&gt;?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="DeleteOutfits">
-		Skasować wybrane stroje?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="PromptGoToEventsPage">
-		Odwiedzić internetową stronę Imprez [SECOND_LIFE]?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="SelectProposalToView">
-		Wybierz propozycję, którą chcesz zobaczyć.
-	</notification>
-	<notification name="SelectHistoryItemToView">
-		Wybierz obiekt z historii, który chcesz zobaczyć.
-	</notification>
-	<notification name="CacheWillClear">
-		Bufor danych zostanie wyczyszczony po restarcie aplikacji [APP_NAME].
-	</notification>
-	<notification name="CacheWillBeMoved">
-		Bufor danych zostanie przeniesiony po restarcie aplikacji [APP_NAME].
-Pamiętaj: Opcja ta wyczyszcza bufor danych.
-	</notification>
-	<notification name="ChangeConnectionPort">
-		Ustawienia portu zostajÄ… zaktualizowane po restarcie aplikacji [APP_NAME].
-	</notification>
-	<notification name="ChangeSkin">
-		Nowa skórka zostanie wczytana po restarcie aplikacji [APP_NAME].
-	</notification>
-	<notification name="ChangeLanguage">
-		Zmiana języka zadziała po restarcie [APP_NAME].
-	</notification>
-	<notification name="GoToAuctionPage">
-		Odwiedzić stronę internetową [SECOND_LIFE] żeby zobaczyć szczgóły aukcji lub zrobić ofertę?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="SaveChanges">
-		Zapisać zmiany?
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie zapisuj" yestext="Zapisz"/>
-	</notification>
-	<notification name="GestureSaveFailedTooManySteps">
-		Nie można zapisać gesturki.
-Ta gesturka ma zbyt wiele etapów.
-Usuń kilka etapów i zapisz jeszcze raz.
-	</notification>
-	<notification name="GestureSaveFailedTryAgain">
-		Zapis gesturki nie powiódł się. Spróbuj jeszcze raz za kilka minut.
-	</notification>
-	<notification name="GestureSaveFailedObjectNotFound">
-		Nie można zapisać gesturki ponieważ obiekt lub szafa powiązanego obiektu nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
-	</notification>
-	<notification name="GestureSaveFailedReason">
-		Nie można zapisać gesturki z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
-	</notification>
-	<notification name="SaveNotecardFailObjectNotFound">
-		Nie można zapisać notki ponieważ obiekt lub szafa powiązanego obiektu nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
-	</notification>
-	<notification name="SaveNotecardFailReason">
-		Nie można zapisać notki z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
-	</notification>
-	<notification name="ScriptCannotUndo">
-		Nie można cofnąć wszystkich zmian w Twojej wersji skryptu.
-Czy chcesz załadować ostatnią wersję zapisaną na serwerze?
-(*UWAGA* Ta operacja jest nieodwracalna.)
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="SaveScriptFailReason">
-		Nie można zapisać skryptu z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz później.
-	</notification>
-	<notification name="SaveScriptFailObjectNotFound">
-		Nie można zapisać skryptu ponieważ obiekt w którym się zawiera nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
-	</notification>
-	<notification name="SaveBytecodeFailReason">
-		Nie można zapisać skompilowanego skryptu z następującego powodu: [REASON]. Spróbuj zapisać jeszcze raz póżniej.
-	</notification>
-	<notification name="StartRegionEmpty">
-		Oops, Twoje miejsce startu nie zostało określone.
-Wpisz proszÄ™ nazwÄ™ regionu w lokalizacjÄ™ startu w polu Lokalizacja Startu lub wybierz Moja ostatnia lokalizacja albo Miejsce Startu.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CouldNotStartStopScript">
-		Nie można uruchomić lub zatrzymać skryptu ponieważ obiekt w którym się zawiera nie został znaleziony.
-Obiekt może znajdować się zbyt daleko albo został usunięty.
-	</notification>
-	<notification name="CannotDownloadFile">
-		Nie można załadować pliku
-	</notification>
-	<notification name="CannotWriteFile">
-		Nie można zapisać pliku [[FILE]]
-	</notification>
-	<notification name="UnsupportedHardware">
-		Niestety Twój komputer nie spełnia minimalnych wymogów sprzętowych dla poprawnego działania [APP_NAME]. Możesz odczuwać bardzo niską wydajność operacyjną. Niestety portal pomocy, [SUPPORT_SITE] nie posiada informacji na temat poprawnej konfiguracji technicznej Twojego systemu.
-
-Po więcej info, odwiedź stronę [_URL] .
-		<url name="url" option="0">
-			http://www.secondlife.com/corporate/sysreqs.php
-		</url>
-		<usetemplate ignoretext="Dysk twardy mojego komputera nie jest wspomagany" name="okcancelignore" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="UnknownGPU">
-		Twój system jest wyposażony w kartę graficzną, która nie jest rozpoznana przez [APP_NAME].
-Zdarza się to często w przypadku nowego sprzętu, który nie był testowany z [APP_NAME].  Prawdopodobnie wystarczy dostosowanie ustawień grafiki aby działanie było poprawne.
-(Ja &gt; Właściwości &gt; Grafika).
-		<form name="form">
-			<ignore name="ignore" text="Karta graficzna nie została zidentyfikowana."/>
-		</form>
-	</notification>
-	<notification name="DisplaySettingsNoShaders">
-		[APP_NAME] zawiesił się podczas inicjalizacji sterowników graficznych.
-Jakość grafiki została zmniejszona - może to pomóc.
-Pewne funkcje graficzne zostały wyłączone. Zalecamy aktualizcje sterowników graficznych.
-Możesz podnieść jakość grafiki pod Ustawienia &gt; Grafika.
-	</notification>
-	<notification name="RegionNoTerraforming">
-		Region [REGION] nie pozwala na formowanie powierzchni ziemi.
-	</notification>
-	<notification name="CannotCopyWarning">
-		Nie masz pozwolenia na kopiowanie następujących obiektów:
-[ITEMS]
-i stracisz je w momencie przekazania. Czy na pewno chcesz oddać te obiekty?
-		<usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="CannotGiveItem">
-		Podarowanie obiektu nie powiodło się.
-	</notification>
-	<notification name="TransactionCancelled">
-		Transakcja anulowana
-	</notification>
-	<notification name="TooManyItems">
-		Jednorazowo możesz podarować maksymalnie 42 obiekty z szafy.
-	</notification>
-	<notification name="NoItems">
-		Nie masz praw do transferu wybranych obiektów.
-	</notification>
-	<notification name="CannotCopyCountItems">
-		Nie masz praw do skopiowania [COUNT] wybranych obiektów. Obiekty znikną z Twojej szafy.
-Na pewno chcesz oddać te obiekty?
-		<usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="CannotGiveCategory">
-		Nie masz praw do transferu wybranego foldera.
-	</notification>
-	<notification name="FreezeAvatar">
-		Unieruchomić tego awatara?
-Awatar tymczasowo nie będzie mógł się poruszać, nie będzie mógł używać czatu (IM) i nie będzie w stanie odziaływać na świat.
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Odblokuj" yestext="Unieruchom"/>
-	</notification>
-	<notification name="FreezeAvatarFullname">
-		Unieruchowmić [AVATAR_NAME]?
-Ta osoba tymczasowo nie będzie mógła się poruszać, nie będzie mógł używać czatu (IM) i nie będzie w stanie odziaływać na świat.
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Odblokuj" yestext="Unieruchom"/>
-	</notification>
-	<notification name="EjectAvatarFullname">
-		Wyrzucić [AVATAR_NAME] z Twojej posiadłości?
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wyrzuć i zabroń wstępu (ban)" yestext="Wyrzuć"/>
-	</notification>
-	<notification name="EjectAvatarFromGroup">
-		Wyrzuć [AVATAR_NAME] z grupy [GROUP_NAME]
-	</notification>
-	<notification name="AcquireErrorTooManyObjects">
-		BŁĄD OTRZYMYWANIA: Zbyt wiele wybranych obiektów.
-	</notification>
-	<notification name="AcquireErrorObjectSpan">
-		BŁĄD OTRZYMYWANIA: Obiekty przekraczają granicę regionów. Przemieść wszystkie otrzymywane obiekty do jednego regionu.
-	</notification>
-	<notification name="PromptGoToCurrencyPage">
-		[EXTRA]
-
-Odwiedź stronę [_URL] po więcej informacji na temat zakupu L$?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="UnableToLinkObjects">
-		Nie można połączyć [COUNT] obiektów.
-Maksymalnie można połączyć [MAX] obiektów.
-	</notification>
-	<notification name="CannotLinkIncompleteSet">
-		Możesz łączyć tylko kompletne zbiory obiektów i musisz wybrać więcej niż jeden obiekt.
-	</notification>
-	<notification name="CannotLinkModify">
-		Nie możesz połączyć obiektów ponieważ nie masz praw modyfikacji dla wszystkich obiektów.
-
-Upewnij się, że żaden z obiktów nie jest zablokowany i że wszystkie obiekty należą do Ciebie.
-	</notification>
-	<notification name="CannotLinkDifferentOwners">
-		Nie możesz połączyć obiektów ponieważ należą one do różnych osób.
-
-Upewnij sie, że wszystkie wybrane obiekty należą do Ciebie.
-	</notification>
-	<notification name="NoFileExtension">
-		Niepoprawna końcówka nazwy pliku: &apos;[FILE]&apos;
-
-Upewnij się, że nazwa pliku ma poprawaną końcówkę.
-	</notification>
-	<notification name="InvalidFileExtension">
-		Niepoprawna końcówka nazwy pliku - [EXTENSION]
-Oczekiwana - [VALIDS]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CannotUploadSoundFile">
-		Nie można otworzyć załadowanego pliku dźwiękowego:
-[FILE]
-	</notification>
-	<notification name="SoundFileNotRIFF">
-		Plik nie jest w formacie RIFF WAVE:
-[FILE]
-	</notification>
-	<notification name="SoundFileNotPCM">
-		Plik nie jest w formacie PCM WAVE:
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidChannelCount">
-		Plik zawiera niewłaściwą liczbę kanałów (musi być mono albo stereo):
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidSampleRate">
-		Plik zawiera niewłaścią częstotliwość (musi być 44.1k):
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidWordSize">
-		Plik zawiera niewłaściwą szerokość danych (musi być 8 albo 16 bitów):
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidHeader">
-		Brak bloku &apos;data&apos; w nagłówku pliku WAV:
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidChunkSize">
-		Niewłaściwy rozmiar &quot;chunk&quot; w pliku WAV:
-[FILE]
-	</notification>
-	<notification name="SoundFileInvalidTooLong">
-		Plik audio jest zbyt długi (10 sekund maksimum):
-[FILE]
-	</notification>
-	<notification name="CannotOpenTemporarySoundFile">
-		Nie można otworzyć tymczasowego skompresowango pliku dźwiękowego w celu zapisu: [FILE]
-	</notification>
-	<notification name="UnknownVorbisEncodeFailure">
-		Nieznany błąd kodowania Vorbis w: [FILE]
-	</notification>
-	<notification name="CannotEncodeFile">
-		Kodowanie pliku: [FILE] nie powidło się.
-	</notification>
-	<notification name="CorruptedProtectedDataStore">
-		Nie można wpisać Twojego imienia użytkownika ani hasła. To może się zdarzyć kiedy zmieniasz ustawienia sieci.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CorruptResourceFile">
-		Skorumpowany plik zasobów: [FILE]
-	</notification>
-	<notification name="UnknownResourceFileVersion">
-		Nieznana wersja pliku zasobów Linden w pliku: [FILE]
-	</notification>
-	<notification name="UnableToCreateOutputFile">
-		Nie można utworzyć pliku wyjściowego: [FILE]
-	</notification>
-	<notification name="DoNotSupportBulkAnimationUpload">
-		[APP_NAME] obecnie nie wspomaga ładowania grupowego plików animacji.
-	</notification>
-	<notification name="CannotUploadReason">
-		Ładowanie pliku [FILE] nie powiodło się z powodu: [REASON]
-Spróbuj jeszcze raz póżniej.
-	</notification>
-	<notification name="LandmarkCreated">
-		Dodano &quot;[LANDMARK_NAME]&quot; do folderu [FOLDER_NAME].
-	</notification>
-	<notification name="LandmarkAlreadyExists">
-		Posiadasz już landmark dla tej lokalizacji.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CannotCreateLandmarkNotOwner">
-		Nie możesz zapamiętać tego miejsca (LM) ponieważ właściciel posiadłości nie pozwala na to.
-	</notification>
-	<notification name="CannotRecompileSelectObjectsNoScripts">
-		&apos;Rekompilacja&apos; nie powiodła się.
-
-Wybierz obiekty zawierajÄ…ce skrypty.
-	</notification>
-	<notification name="CannotRecompileSelectObjectsNoPermission">
-		&apos;Rekompilacja&apos; nie powiodła się.
-
-Wybierz skryptowane obiekty do których masz prawa modyfikacji.
-	</notification>
-	<notification name="CannotResetSelectObjectsNoScripts">
-		&apos;Resetowanie&apos; nie powiodło się.
-
-Wybierz obiekty zawierajÄ…ce skrypty.
-	</notification>
-	<notification name="CannotResetSelectObjectsNoPermission">
-		&apos;Resetowanie&apos; nie powiodło się.
-
-Wybierz skryptowane obiekty do których masz prawa modyfikacji.
-	</notification>
-	<notification name="CannotOpenScriptObjectNoMod">
-		Nie można otworzyć skryptu bez prawa do modyfikacji obiektu.
-	</notification>
-	<notification name="CannotSetRunningSelectObjectsNoScripts">
-		&apos;Uruchomienie&apos; skryptów nie powiodło się.
-
-Wybierz obiekty zawierajÄ…ce skrypty.
-	</notification>
-	<notification name="CannotSetRunningNotSelectObjectsNoScripts">
-		&apos;Zatrzymanie&apos; skryptów nie powiodło się.
-
-Wybierz obiekty zawierajÄ…ce skrypty.
-	</notification>
-	<notification name="NoFrontmostFloater">
-		Brak górnego okna do zapisu.
-	</notification>
-	<notification name="SeachFilteredOnShortWords">
-		Twoje zapytanie wyszukiwania zostło zmienione - zbyt krótkie słowa zostały usunięte.
-
-Nowe zapytanie: [FINALQUERY]
-	</notification>
-	<notification name="SeachFilteredOnShortWordsEmpty">
-		Użyte terminy wyszukiwania były zbyt krótkie - wyszukiwanie zostało anulowane.
-	</notification>
-	<notification name="CouldNotTeleportReason">
-		Teleportacja nie powiodła się.
-[REASON]
-	</notification>
-	<notification name="invalid_tport">
-		Niestety, pojawił się błąd podczas próby teleportacji. Proponujemy wylogowanie się i spróbowanie teleportacji ponownie. 
-Jeżeli nadal otrzymujesz tę wiadomość proponujemy odwiedzić stronę [SUPPORT_SITE].
-	</notification>
-	<notification name="invalid_region_handoff">
-		Niestety, pojawił się błąd podczas próby przedostania się na drugi region. Proponujemy wylogowanie się i spróbowanie przedostania się na drugi region ponownie. 
-Jeżeli nadal otrzymujesz tę wiadomość proponujemy odwiedzić stronę [SUPPORT_SITE].
-	</notification>
-	<notification name="blocked_tport">
-		Przepraszamy, teleportacja jest chwilowo niedostępna. Spróbuj jeszcze raz.
-Jeśli nadal nie możesz się teleportować wyloguj się i ponownie zaloguj.
-	</notification>
-	<notification name="nolandmark_tport">
-		Przepraszamy, ale nie możemy znaleźć miejsca docelowego.
-	</notification>
-	<notification name="timeout_tport">
-		Przepraszamy, ale nie udało się przeprowadzić teleportacji. Spróbuj jeszcze raz.
-	</notification>
-	<notification name="noaccess_tport">
-		Przepraszamy, ale nie masz dostępu do miejsca docelowego.
-	</notification>
-	<notification name="missing_attach_tport">
-		Czekamy na Twoje akcesoria. Możesz poczekać kilka minut lub zrobić relog przed następną próbą teleportacji.
-	</notification>
-	<notification name="too_many_uploads_tport">
-		Obecnie ten region ma problemy z ładowaniem obiektów w związku z czym teleportacja bardzo sie opóźnia.
-Spróbuj jeszcze raz za kilka minut albo teleportuj się do mniej zatłoczonego miejsca.
-	</notification>
-	<notification name="expired_tport">
-		Przepraszamy, ale nie udało się przeprowadzić teleportacji wystarczająco szybko. Spróbuj jeszcze raz za kilka minut.
-	</notification>
-	<notification name="expired_region_handoff">
-		Przepraszamy, ale nie udało się przeprowadzić zmiany regionu wystarczająco szybko. Spróbuj jeszcze raz za kilka minut.
-	</notification>
-	<notification name="no_host">
-		Nie możemy znaleść miejsca docelowego. To miejsce może być chwilowo nieosiągalne albo przestało istnieć.
-Spróbuj jeszcze raz za kilka minut.
-	</notification>
-	<notification name="no_inventory_host">
-		Szafa chwilowo nie działa.
-	</notification>
-	<notification name="CannotSetLandOwnerNothingSelected">
-		Nie można wybrać właściciela posiadłości.
-Posiadłość nie została wybrana.
-	</notification>
-	<notification name="CannotSetLandOwnerMultipleRegions">
-		Nie można wybrać właściciela posiadłości ponieważ wybrany obszar przekracza granicę regionów. Wybierz mniejszy obszar i spróbuj jeszcze raz.
-	</notification>
-	<notification name="ForceOwnerAuctionWarning">
-		Ta posiadłość jest wystawiona na aukcję. Wymuszenie własności anuluje aukcję i potencjalnie może zdenerwować zainteresowanych Rezydentów, jeżeli licytacja już się rozpoczęła.
-Wymusić własność?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="CannotContentifyNothingSelected">
-		Nie można sfinalizować:
-Posiadłość nie została wybrana.
-	</notification>
-	<notification name="CannotContentifyNoRegion">
-		Nie można sfinalizować:
-Region nie znaleziony.
-	</notification>
-	<notification name="CannotReleaseLandNothingSelected">
-		Nie można porzucić posiadłości:
-Posiadłość nie została wybrana.
-	</notification>
-	<notification name="CannotReleaseLandNoRegion">
-		Nie można porzucić posiadłości:
-Region nie znaleziony.
-	</notification>
-	<notification name="CannotBuyLandNothingSelected">
-		Nie można kupić posiadłości:
-Posiadłość nie została wybrana.
-	</notification>
-	<notification name="CannotBuyLandNoRegion">
-		Nie można kupić posiadłości:
-Region nie znaleziony.
-	</notification>
-	<notification name="CannotCloseFloaterBuyLand">
-		Okno zakupu landu nie może zostać zamknięte dopóki aplikacja [APP_NAME] nie określi ceny dla tej transkacji.
-	</notification>
-	<notification name="CannotDeedLandNothingSelected">
-		Nie można przekazać posiadłości:
-Posiadłość nie została wybrana.
-	</notification>
-	<notification name="CannotDeedLandNoGroup">
-		Nie można przekazać posiadłości:
-Grupa nie została wybrana.
-	</notification>
-	<notification name="CannotDeedLandNoRegion">
-		Brak możliwości przepisania posiadłości grupie:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
-	</notification>
-	<notification name="CannotDeedLandMultipleSelected">
-		Nie można przekazać posiadłości:
-Wiele posiadłości jest wybranych.
-
-Spróbuj wybrać pojedynczą posiadłość.
-	</notification>
-	<notification name="CannotDeedLandWaitingForServer">
-		Nie można przekazać posiadłości:
-Serwer aktualizuje dane własności.
-
-Spróbuj jeszcze raz póżniej.
-	</notification>
-	<notification name="CannotDeedLandNoTransfer">
-		Nie możesz przekazać posiadłości:
-Region [REGION] nie pozwala na transfer posiadłości.
-	</notification>
-	<notification name="CannotReleaseLandWatingForServer">
-		Nie można porzucić posiadłości:
-Serwer aktualizuje dane posiadłości.
-
-Spróbuj jeszcze raz póżniej.
-	</notification>
-	<notification name="CannotReleaseLandSelected">
-		Nie możesz porzucić posiadłości:
-Nie jesteś właścicielem wszystkich wybranych posiadłości.
-
-Wybierz pojedynczą posiadłość.
-	</notification>
-	<notification name="CannotReleaseLandDontOwn">
-		Nie możesz porzucić posiadłości:
-Nie masz praw do porzucenia tej posiadłości.
-
-Twoje posiadłości są podkreślone na zielono.
-	</notification>
-	<notification name="CannotReleaseLandRegionNotFound">
-		Brak możliwości porzucenia posiadłości:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
-	</notification>
-	<notification name="CannotReleaseLandNoTransfer">
-		Nie możesz porzucić posiadłości:
-Region [REGION] nie pozwala na transfer posiadłości.
-	</notification>
-	<notification name="CannotReleaseLandPartialSelection">
-		Nie można porzucić posiadłości:
-Musisz wybrać całą posiadłość by ją porzucić.
-Wybierz całą posiadłość albo najpierw ją podziel.
-	</notification>
-	<notification name="ReleaseLandWarning">
-		Porzucasz posiadłość o powierzchni [AREA] m².
-Porzucenie tej posiadłości usunie ją z Twoich własności.
-Nie otrzymasz za to żadnej opłaty.
-
-Porzucić posiadłość?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="CannotDivideLandNothingSelected">
-		Nie można podzielić posiadłości:
-
-Posiadłość nie została wybrana.
-	</notification>
-	<notification name="CannotDivideLandPartialSelection">
-		Nie można podzielić posiadłości:
-
-Posiadłość została wybrana w całości.
-Spróbuj wybrać część posiadłości.
-	</notification>
-	<notification name="LandDivideWarning">
-		Podział tej posiadłości stworzy dwie posiadłości z których każda będzie mogła mieć indywidualne ustawienia.
-Niektóre ustawienia zostaną zmienione na domyślne po tej operacji.
-
-Podzielić posiadłość?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="CannotDivideLandNoRegion">
-		Brak możliwości podziału posiadłości:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
-	</notification>
-	<notification name="CannotJoinLandNoRegion">
-		Brak możliwości złączenia posiadłości:
-Region, gdzie posiadłość się znajduje nie został odnaleziony.
-	</notification>
-	<notification name="CannotJoinLandNothingSelected">
-		Nie można połączyć posiadłości:
-Posiadłości nie zostały wybrane.
-	</notification>
-	<notification name="CannotJoinLandEntireParcelSelected">
-		Nie można połączyć posiadłości:
-Tylko jedna posiadłość została wybrana.
-
-Wybierz obaszar usytuowany na obu posiadłościach.
-	</notification>
-	<notification name="CannotJoinLandSelection">
-		Nie można połączyć posiadłości:
-Musisz wybrać więcej niż jedną posiadłość.
-
-Wybierz obaszar usytuowany na obu posiadłościach.
-	</notification>
-	<notification name="JoinLandWarning">
-		Połączenie tego obszaru utworzy jedną większą posiadłość ze wszystkich posiadłości przecinających wybrany prostokąt. Nazwa i opcje posiadłości bedą musiały zostać skonfigurowane.
-
-Połączyć posiadłości?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmNotecardSave">
-		Ta notka musi być zapisana żeby mogła być skopiowana lub zobaczona. Zapisać notkę?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmItemCopy">
-		Skopiować ten obiekt do Twojej szafy?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Skopiuj"/>
-	</notification>
-	<notification name="ResolutionSwitchFail">
-		Zmiana rozdzielczości do [RESX] x [RESY] nie powidła się
-	</notification>
-	<notification name="ErrorUndefinedGrasses">
-		BÅ‚Ä…d: niezdefiniowane trawy: [SPECIES]
-	</notification>
-	<notification name="ErrorUndefinedTrees">
-		BÅ‚ad: niezdefiniowane drzewa: [SPECIES]
-	</notification>
-	<notification name="CannotSaveWearableOutOfSpace">
-		Nie można zapisać &apos;[NAME]&apos; do pliku stroju. Musisz zwolnić trochę miejsca na Twoim komputerze i zapisać strój jeszcze raz.
-	</notification>
-	<notification name="CannotSaveToAssetStore">
-		Nie można zapisać [NAME] w centralnym zbiorze danych.
-Zazwyczaj jest to tymczasowy problem. Możesz kontynuować modyfikacje i zapisać strój ponownie za kilka minut.
-	</notification>
-	<notification name="YouHaveBeenLoggedOut">
-		Nastąpiło wylogowanie z [SECOND_LIFE]
-            [MESSAGE]
-		<usetemplate name="okcancelbuttons" notext="Wyłącz" yestext="Kontynuuj"/>
-	</notification>
-	<notification name="OnlyOfficerCanBuyLand">
-		Nie możesz kupić posiadłości dla grupy.
-Nie masz praw kupowania posiadłości dla Twojej aktywnej grupy.
-	</notification>
-	<notification label="Add Friend" name="AddFriendWithMessage">
-		Znajomi mogą pozwalać na odnajdywanie się wzajemnie na mapie i na otrzymywanie notyfikacji o logowaniu do [SECOND_LIFE].
-
-Zaproponować znajomość [NAME]?
-		<form name="form">
-			<input name="message">
-				Chcesz zawrzeć znajomość?
-			</input>
-			<button name="Offer" text="OK"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification label="Zapisz strój" name="SaveOutfitAs">
-		Zapisz to co noszę jako nowy strój:
-		<form name="form">
-			<input name="message">
-				[DESC] (nowe)
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification label="Zapisz część stroju" name="SaveWearableAs">
-		Zapisz obiekt w mojej Szafie jako:
-		<form name="form">
-			<input name="message">
-				[DESC] (nowy)
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification label="Zmień nazwę stroju" name="RenameOutfit">
-		Nowa nazwa stroju:
-		<form name="form">
-			<input name="new_name">
-				[NAME]
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification name="RemoveFromFriends">
-		Czy chcesz usunąć [NAME] z listy znajomych?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="RemoveMultipleFromFriends">
-		Chcesz usunąć grupę osób z listy Twoich znajomych?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="GodDeleteAllScriptedPublicObjectsByUser">
-		Na pewno chcesz usunąć wszystkie skryptowane obiekty należące do
-** [AVATAR_NAME] **
-z posiadłości innych w tym symulatorze?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="GodDeleteAllScriptedObjectsByUser">
-		Na pewno chcesz usunąć wszystkie skryptowane obiekty należące do
-** [AVATAR_NAME] **
-ze wszystkich posiadłości w tym symulatorze?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="GodDeleteAllObjectsByUser">
-		Na pewno chcesz usunąć wszystkie obiekty (skryptowane i nie) należące do
-** [AVATAR_NAME] **
-ze wszystkich posiadłości w tym symulatorze?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="BlankClassifiedName">
-		Musisz nadać tytuł Twojej reklamie.
-	</notification>
-	<notification name="MinClassifiedPrice">
-		Minimalna cena za publikacjÄ™ wynosi [MIN_PRICE]L$.
-
-Wybierz wyższą cenę.
-	</notification>
-	<notification name="ConfirmItemDeleteHasLinks">
-		Co najmiej jeden z elementów, które masz posiada połączone z nim obiekty. Jeśli go usuniesz połączenia zostaną usunięte na stałe. Zaleca się usunięcie połączeń w pierwszej kolejności.
-
-Jesteś pewnien/pewna, że chcesz usunąć te elementy?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteLock">
-		Przynajmnie jeden z wybranych obiektów jest zablokowany.
-
-Na pewno chcesz usunąć te obiekty?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteNoCopy">
-		Przynajmniej jeden z wybranych obiektów jest niekopiowalny.
-
-Na pewno chcesz usunąć te obiekty?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteNoOwn">
-		Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteLockNoCopy">
-		Przynajmnie jeden z wybranych obiektów jest zablokowany.
-Przynajmniej jeden z wybranych obiektów jest niekopiwalny.
-
-Na pewno chcesz usunąć te obiekty?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteLockNoOwn">
-		Przynajmnie jeden z wybranych obiektów jest zablokowany.
-Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteNoCopyNoOwn">
-		Przynajmniej jeden z wybranych obiektów jest niekopiowalny.
-Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectDeleteLockNoCopyNoOwn">
-		Przynajmnie jeden z wybranych obiektów jest zablokowany.
-Przynajmniej jeden z wybranych obiektów jest niekopiwalny.
-Przynajmniej jeden z wybranych obiektów nie należy do Ciebie.
-
-Na pewno chcesz usunąć te obiekty?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectTakeLock">
-		Przynajmnie jeden obiekt jest zablokowany.
-
-Na pewno chcesz usunąć te obiekty?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectTakeNoOwn">
-		Przynajmniej jeden obiekt nie należy do Ciebie.
-Jeżeli będziesz kontynuować prawa następnego właściciela zostaną przypisane co, potencjalnie, może ograniczyć Twoje prawa do modyfikacji lub kopiowania obiektów.
-
-Na pewno chcesz wziąść te obiekty?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmObjectTakeLockNoOwn">
-		Przynajmnie jeden obiekt jest zablokowany.
-Przynajmniej jeden obiekt nie należy do Ciebie.
-Jeżeli będziesz kontynuować prawa następnego właściciela zostaną przypisane co, potencjalnie, może ograniczyć Twoje prawa do modyfikacji lub kopiowania obiektów.
-
-Na pewno chcesz wziąść te obiekty?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="CantBuyLandAcrossMultipleRegions">
-		Nie możesz kupić posiadłości ponieważ wybrany obszar przekracza granicę regionów.
-
-Wybierz mniejszy obszar i spróbuj jeszcze raz.
-	</notification>
-	<notification name="DeedLandToGroup">
-		Po przekazaniu tej posiadłości grupa będzia musiała mieć i utrzymywać wystarczający kredyt na używanie posiadłości. Cena zakupu posiadłości nie jest zwracana właścicielowi. Jeżeli przekazana posiadłość zostanie sprzedana, cana sprzedaży zostanie podzielona pomiędzy członków grupy.
-
-Przekazać tą posiadłość o powierzchni [AREA] m² grupie &apos;[GROUP_NAME]&apos;?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="DeedLandToGroupWithContribution">
-		Po przekazaniu tej posiadłości grupa będzia musiała mieć i utrzymywać wystarczający kredyt na używanie posiadłości.
-Przekazanie będzie zawierać równoczesne przypisanie posiadłości do grupy od &apos;[NAME]&apos;.
-Cena zakupu posiadłości nie jest zwracana właścicielowi. Jeżeli przekazana posiadłość zostanie sprzedana, cana sprzedaży zostanie podzielona pomiędzy członków grupy.
-
-Przekazać tą posiadłość o powierzchni [AREA] m² grupie &apos;[GROUP_NAME]&apos;?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="DisplaySetToSafe">
-		Ustawienia grafiki zostały zmienione do bezpiecznego poziomu ponieważ opcja -safe została wybrana.
-	</notification>
-	<notification name="DisplaySetToRecommended">
-		Ustawienia grafiki zostały zmienione do zalecanego poziomu na podstawie konfiguracji Twojego systemu.
-	</notification>
-	<notification name="ErrorMessage">
-		[ERROR_MESSAGE]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AvatarMovedDesired">
-		Miejsce, do którego chcesz się teleportować jest chwilowo nieobecne.
-Zostałeś przeniesiony do regionu sąsiedniego.
-	</notification>
-	<notification name="AvatarMovedLast">
-		Twoje miejsce startu jest obecnie niedostępne.
-Zostałeś przeniesiony do sąsiedniego regionu.
-	</notification>
-	<notification name="AvatarMovedHome">
-		Twoje miejsce startu jest obecnie niedostępne.
-Zostałeś przeniesiony do pobliskiego regionu.
-Możesz ustawić nowe miejsce startu.
-	</notification>
-	<notification name="ClothingLoading">
-		Twoje ubranie wciąż się ładuje.
-Możesz normalnie używać [SECOND_LIFE], inni użytkownicy będą Cię widzieli poprawnie.
-		<form name="form">
-			<ignore name="ignore" text="Ładowanie ubrań nadal trwa"/>
-		</form>
-	</notification>
-	<notification name="FirstRun">
-		Instalacja [APP_NAME] zakończona.
-
-Jeżeli używasz [SECOND_LIFE] po raz pierwszy to musisz stworzyć konto żeby móc się zalogować.
-Czy chcesz przejść na stronę [http://join.secondlife.com secondlife.com] żeby stworzyć nowe konto?
-		<usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Nowe konto..."/>
-	</notification>
-	<notification name="LoginPacketNeverReceived">
-		Problemy z połączeniem. Problem może być spowodowany Twoim połączeniem z Internetem albo może istnieć po stronie [SECOND_LIFE_GRID].
-
-Możesz sprawdzić swoje połączenie z Internetem i spróbować ponownie za kilka minut lub połączyć się ze stroną pomocy technicznej tutaj [SUPPORT_SITE] lub wybrać Teleportuj by teleportować się do swojego miejsca startu.
-		<form name="form">
-			<button name="OK" text="OK"/>
-			<button name="Help" text="Pomoc"/>
-			<button name="Teleport" text="Teleportuj"/>
-		</form>
-	</notification>
-	<notification name="WelcomeChooseSex">
-		Twoja postać pojawi się za moment.
-
-Używaj strzałek żeby sie poruszać.
-Naciśnij F1 w dowolnej chwili po pomoc albo żeby dowiedzieć się więcej o [SECOND_LIFE].
-Wybierz awatara właściwej płci.
-Ten wybór będzie można później zmienić.
-		<usetemplate name="okcancelbuttons" notext="Kobieta" yestext="Mężczyzna"/>
-	</notification>
-	<notification name="CantTeleportToGrid">
-		Nie można teleportować do [SLURL], ponieważ jest na innym gridzie ([GRID]) niż obecny grid ([CURRENT_GRID]). Proszę zamknąć przeglądarkę i spróbować ponownie.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="GeneralCertificateError">
-		Połączenie z serwerem nie mogło zostać nawiązane.
-[REASON]
-
-SubjectName: [SUBJECT_NAME_STRING]
-IssuerName: [ISSUER_NAME_STRING]
-Valid From: [VALID_FROM]
-Valid To: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="TrustCertificateError">
-		Wydawca certyfikatu dla tego serwera nie jest znany.
-
-Informacje o certyfikacie:
-SubjectName: [SUBJECT_NAME_STRING]
-IssuerName: [ISSUER_NAME_STRING]
-Valid From: [VALID_FROM]
-Valid To: [VALID_TO]
-MD5 Fingerprint: [SHA1_DIGEST]
-SHA1 Fingerprint: [MD5_DIGEST]
-Key Usage: [KEYUSAGE]
-Extended Key Usage: [EXTENDEDKEYUSAGE]
-Subject Key Identifier: [SUBJECTKEYIDENTIFIER]
-
-Czy chcesz zaufać temu wydawcy?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Zaufaj"/>
-	</notification>
-	<notification name="NotEnoughCurrency">
-		[NAME] [PRICE]L$ Masz za mało L$.
-	</notification>
-	<notification name="GrantedModifyRights">
-		Masz teraz prawa modyfikacji obiektów należących do [NAME].
-	</notification>
-	<notification name="RevokedModifyRights">
-		Prawa modyfikacji obiektów należących do [NAME] zostały Ci odebrane.
-	</notification>
-	<notification name="FlushMapVisibilityCaches">
-		To spowoduje wyczyszczenie buforów map regionu.
-Jest to użyteczne wyłącznie podczas szukania błędów.
-(Podczas produkcji poczekaj 5 minut i mapy wszystkich zostanÄ… uaktualnione po relogu.)
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="BuyOneObjectOnly">
-		Nie możesz zakupić więcej niż jednego obiektu w tym samym czasie. Proszę wybrać tylko jeden obiekt i spróbować ponowanie.
-	</notification>
-	<notification name="OnlyCopyContentsOfSingleItem">
-		Nie można kopiować zawartości więcej niż jednego obiektu naraz.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="KickUsersFromRegion">
-		Teleportować wszystkich Rezydentów z tego regionu to ich miejsca startu?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="EstateObjectReturn">
-		Na pewno chcesz odesłać wszystkie obiekty należące do
-[USER_NAME] ?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="InvalidTerrainBitDepth">
-		Nie można ustawić tekstur regionu:
-Tekstura terenu [TEXTURE_NUM] ma niewłaściwą głębię koloru - [TEXTURE_BIT_DEPTH].
-Zamień teksturę [TEXTURE_NUM] na 24-o bitową teksturę o wymiarze 512x512 lub mniejszą i ponownie kliknij Zastosuj.
-	</notification>
-	<notification name="InvalidTerrainSize">
-		Nie można ustawić tekstur regionu:
-Tekstura terenu [TEXTURE_NUM] jest za duża - [TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y].
-Zamień teksturę [TEXTURE_NUM] na 24-o bitową teksturę o wymiarze 512x512 lub mniejszą i ponownie kliknij Zastosuj.
-	</notification>
-	<notification name="RawUploadStarted">
-		Ładowanie rozpoczęte. Może potrwać do dwóch minut zależnie od prędkości Twojego połączenia.
-	</notification>
-	<notification name="ConfirmBakeTerrain">
-		Na pewno chcesz zapisać obecne ukształtowanie terenu jako punkt odniesienia dla górnego i dolnego limitu terenu i jako domyślą wartość dla opcji Odtwórz?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="MaxAllowedAgentOnRegion">
-		Maksymalna liczba gości wynosi [MAX_AGENTS].
-	</notification>
-	<notification name="MaxBannedAgentsOnRegion">
-		Maksymalna liczba niepożądanych Rezydentów (banów) wynosi [MAX_BANNED].
-	</notification>
-	<notification name="MaxAgentOnRegionBatch">
-		Próba dodania [NUM_ADDED] osób nie powiodła się:
-[MAX_AGENTS] [LIST_TYPE] limit przekroczony o [NUM_EXCESS].
-	</notification>
-	<notification name="MaxAllowedGroupsOnRegion">
-		Możesz mieć maksymalnie [MAX_GROUPS] dozwolonych grup.
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Ustal"/>
-	</notification>
-	<notification name="MaxManagersOnRegion">
-		Możesz mieć maksymalnie [MAX_MANAGER] zarządców Majątku.
-	</notification>
-	<notification name="OwnerCanNotBeDenied">
-		Nie możesz dodać właściciela majątku do listy &apos;Niepożądanych Rezydentów (banów)&apos; majątku.
-	</notification>
-	<notification name="CanNotChangeAppearanceUntilLoaded">
-		Nie możesz zmienić wyglądu podczas ładowania ubrań i kształtów.
-	</notification>
-	<notification name="ClassifiedMustBeAlphanumeric">
-		Tytuł Twojej reklamy musi zaczynać się od litery (A-Z) albo cyfry. Znaki przestankowe są niedozwolone.
-	</notification>
-	<notification name="CantSetBuyObject">
-		Nie możesz wybrać Kup obiekt ponieważ obiekt nie jest na sprzedaż.
-Wybierz obiekt na sprzedaż i spróbuj jeszcze raz.
-	</notification>
-	<notification name="FinishedRawDownload">
-		Plik surowego terenu załadowany pod:
-[DOWNLOAD_PATH].
-	</notification>
-	<notification name="DownloadWindowsMandatory">
-		Nowa wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Musisz zainstalować nową wersję żeby używać [APP_NAME].
-		<usetemplate name="okcancelbuttons" notext="Wyłącz program" yestext="Załaduj"/>
-	</notification>
-	<notification name="DownloadWindows">
-		Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
-		<usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Załaduj"/>
-	</notification>
-	<notification name="DownloadWindowsReleaseForDownload">
-		Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
-		<usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Załaduj"/>
-	</notification>
-	<notification name="DownloadLinuxMandatory">
-		Nowa wersja [APP_NAME] jest dostępna.
-[MESSAGE]
-Musisz pobrać aktualizację aby korzystać z [APP_NAME].
-		<usetemplate name="okcancelbuttons" notext="Wyjdź" yestext="Pobieranie"/>
-	</notification>
-	<notification name="DownloadLinux">
-		Aktualizacja [APP_NAME] jest dostępna.
-[MESSAGE]
-Ta aktualizacja nie jest wymagana ale zaleca się jej instalację w celu poprawienia szybkości i stabilności.
-		<usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Pobieranie"/>
-	</notification>
-	<notification name="DownloadLinuxReleaseForDownload">
-		Uaktualniona wersja [APP_NAME]została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
-		<usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Pobieranie"/>
-	</notification>
-	<notification name="DownloadMacMandatory">
-		Nowa wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Musisz zainstalować nową wersję żeby używać [APP_NAME].
-
-Pobrać i zapisać w folderze Aplikacji?
-		<usetemplate name="okcancelbuttons" notext="Wyłącz program" yestext="Załaduj"/>
-	</notification>
-	<notification name="DownloadMac">
-		Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
-
-Pobrać i zapisać w folderze Aplikacji?
-		<usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Załaduj"/>
-	</notification>
-	<notification name="DownloadMacReleaseForDownload">
-		Uaktualniona wersja [APP_NAME] została opublikowana.
-[MESSAGE]
-Aktualizacja nie jest wymagana ale jest zalecana w celu poprawy prędkości i stabilności.
-
-Pobrać i zapisać w folderze Aplikacji?
-		<usetemplate name="okcancelbuttons" notext="Kontynuuj" yestext="Załaduj"/>
-	</notification>
-	<notification name="FailedUpdateInstall">
-		Podczas aktualizacji pojawił się błąd. Proszę pobrać i zainstalować najnowszego klienta z http://secondlife.com/download.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="FailedRequiredUpdateInstall">
-		Nie można zainstalować wymaganej aktualizacji. Nie będzie można zalogować się dopóki [APP_NAME] nie zostanie zaktualizowana.
-				Proszę pobrać i zainstalować najnowszą wersję z http://secondlife.com/download.
-		<usetemplate name="okbutton" yestext="Rezygnuj"/>
-	</notification>
-	<notification name="UpdaterServiceNotRunning">
-		Istnieje obowiązkowa aktualizacja dla Second Life. Możesz ją pobrać z http://www.secondlife.com/downloads lub zainstalować teraz.
-		<usetemplate name="okcancelbuttons" notext="Opuść Second Life" yestext="Pobierz i zainstaluj teraz"/>
-	</notification>
-	<notification name="DownloadBackgroundTip">
-		Aktualizacja dla [APP_NAME] została pobrana.
-Wersja [VERSION] [[RELEASE_NOTES_FULL_URL] Informacja o tej aktualizacji]
-		<usetemplate name="okcancelbuttons" notext="Później..." yestext="Zainstaluj teraz i restartuj [APP_NAME]"/>
-	</notification>
-	<notification name="DownloadBackgroundDialog">
-		Aktualizacja [APP_NAME] została pobrana.
-Wersja [VERSION] [[RELEASE_NOTES_FULL_URL] Informacja o aktualizacji]
-		<usetemplate name="okcancelbuttons" notext="Później..." yestext="Zainstaluj teraz i restartuj [APP_NAME]"/>
-	</notification>
-	<notification name="RequiredUpdateDownloadedVerboseDialog">
-		Pobrano wymaganÄ… aktualizacjÄ™.
-Wersja [VERSION]
-
-W celu instalacji aktualizacji musi zostać wykonany restart [APP_NAME].
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="RequiredUpdateDownloadedDialog">
-		W celu instalacji aktualizacji musi zostać wykonany restart [APP_NAME].
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="DeedObjectToGroup">
-		Przekazanie tego obiektu spowoduje, że grupa:
-* Otrzyma L$ zapłacone temu obiektowi
-		<usetemplate ignoretext="Proszę potwierdzić decyzję przed przepisaniem obiektu do grupy" name="okcancelignore" notext="Anuluj" yestext="Przekaż"/>
-	</notification>
-	<notification name="WebLaunchExternalTarget">
-		Czy chcesz otworzyć swoją przeglądarkę internetową by zobaczyć zawartość?
-		<usetemplate ignoretext="Uruchom przeglądarkę internetową by zobaczyć stronę internetową" name="okcancelignore" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchJoinNow">
-		By dokonać zmian i aktualizacji swojego konta, odwiedź [http://secondlife.com/account/ Dashboard].
-		<usetemplate ignoretext="Uruchom przeglądarkę internetową by dokonać zmian w konfiguracji mojego konta" name="okcancelignore" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchSecurityIssues">
-		Odwiedź [SECOND_LIFE] Wiki i zobacz jak zgłaszać problemy z bezpieczeństwem danych.
-		<usetemplate ignoretext="Uruchom przeglądarkę internetową by dowiedzieć się więcej na temat zgłaszania problemów bezpieczeństwa" name="okcancelignore" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchQAWiki">
-		Odwiedź [SECOND_LIFE] Wiki pytań i odpowiedzi.
-		<usetemplate ignoretext="Uruchom przeglądarkę internetową by zobaczyć QA Wiki" name="okcancelignore" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchPublicIssue">
-		Odwiedź [SECOND_LIFE] katalog publicznych problemów, gdzie możesz zgłaszać błędy i inne problemy.
-		<usetemplate ignoretext="Uruchom przeglądarkę internetową by wysłać Błędy klienta" name="okcancelignore" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchSupportWiki">
-		Otwórz oficjalny blog Lindenów żeby zobaczyć nowe wiadomości i informacje.
-		<usetemplate ignoretext="Uruchom przeglądarkę internetową by zobaczyć blog" name="okcancelignore" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchLSLGuide">
-		Czy chcesz otworzyć samouczek Języka skryptowania?
-		<usetemplate ignoretext="Uruchom przeglądarkę internetową by samouczek Języka skryptowania" name="okcancelignore" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="WebLaunchLSLWiki">
-		Czy napewno chcesz odwiedzić portal LSL Portal?
-		<usetemplate ignoretext="Uruchom przeglÄ…darkÄ™ internetowÄ… by LSL Portal" name="okcancelignore" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ReturnToOwner">
-		Czy na pewno chcesz zwrócić wybrane obiekty do ich właścicieli? Wszystkie udostępnione obiekty z prawem transferu zostaną zwrócone poprzednim właścicielom.
-
-*UWAGA* Wszystkie udostępnione obiekty bez prawa transferu zostaną usunięte!
-		<usetemplate ignoretext="Potwierdź zanim zwrócisz obiekty do ich właścicieli" name="okcancelignore" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="GroupLeaveConfirmMember">
-		Jesteś członkiem grupy [GROUP].
-Chcesz opuścić grupę?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmKick">
-		Napewno chcesz wyrzucić wszystkich Rezydentów z gridu?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Wyrzuć wszystkich Rezydentów"/>
-	</notification>
-	<notification name="MuteLinden">
-		Przepraszamy, ale nie możesz zablokować Lindena.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CannotStartAuctionAlreadyForSale">
-		Aukcja nie może zostać rozpoczęta w posiadłości, która została już wcześniej wystawiona na aukcję. Deaktywuj opcję sprzedaży posiadłości jeżeli chcesz rozpocząć aukcję.
-	</notification>
-	<notification label="Zablokuj obiekty według wpisanej nazwy" name="MuteByNameFailed">
-		Rezydent/obiekt jest już zablokowany.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="RemoveItemWarn">
-		Pomimo, że jest to dozwolone, usunięcie zawartości może zniszczyć obiekt. Chcesz usunąć?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="CantOfferCallingCard">
-		Nie możesz dać wizytówki w tym momencie. Spróbuj jeszcze raz za chwilę.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="CantOfferFriendship">
-		Nie możesz zaoferować znajomości w tym momencie. Spróbuj jeszcze raz za chwilę.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="BusyModeSet">
-		Tryb Pracy jest włączony.
-Czat i IM będą ukryte. Wysłane IM będą otrzymywały Twoją odpowiedź Trybu Pracy. Propozycje teleportacji będą odrzucone.
-Dodatkowo, wszystkie podarowane dla Ciebie obiekty będą automatycznie zapisywane w folderze &quot;Kosz&quot; w Twojej szafie.
-		<usetemplate ignoretext="Status zmieniony na Tryb pracy" name="okignore" yestext="OK"/>
-	</notification>
-	<notification name="JoinedTooManyGroupsMember">
-		Należysz już do maksymalnej ilości grup. Opuść proszę przynajmniej jedną grupę żeby przyjąć członkostwo w tej grupie, albo odmów.
-[NAME] oferuje Ci członkostwo w grupie.
-		<usetemplate name="okcancelbuttons" notext="Odmów" yestext="Przyjmij"/>
-	</notification>
-	<notification name="JoinedTooManyGroups">
-		Należysz już do maksymalnej ilości grup. Opuść proszę przynajmiej jedną grupę żeby przyjąć członkostwo w tej grupie, albo odmów.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="KickUser">
-		Wyrzuć tego Rezydenta, wysyłając następujący komunikat.
-		<form name="form">
-			<input name="message">
-				Administrator wylogował Cię.
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification name="KickAllUsers">
-		Z jakim komunikatem wyrzucić wszystkich użytkowników z regionu?
-		<form name="form">
-			<input name="message">
-				Administrator wylogował Cię.
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification name="FreezeUser">
-		Unieruchom tego Rezydenta, wysyłając następujący komunikat.
-		<form name="form">
-			<input name="message">
-				Unieruchomiono Cię. Nie możesz się ruszać ani rozmawiać. Administrator skontaktuje się z Tobą poprzez IM.
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification name="UnFreezeUser">
-		Cofnij unieruchomienie tego Rezydenta, wysyłając następujący komunikat.
-		<form name="form">
-			<input name="message">
-				Odblokowano CiÄ™.
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification name="SetDisplayNameSuccess">
-		Witaj [DISPLAY_NAME]!
-
-Podobnie jak w realnym życiu potrzeba trochę czasu zanim wszyscy dowiedzą się o nowej nazwie. Kolejne kilka dni zajmie [http://wiki.secondlife.com/wiki/Setting_your_display_name aktualizacja nazwy] w obiektach, skryptach, wyszukiwarce, etc.
-	</notification>
-	<notification name="SetDisplayNameBlocked">
-		Przepraszamy, nie można zmienić Twojej wyświetlanej nazwy. Jeśli uważasz ze jest to spowodowane błędem skontaktuj się z obsługą klienta.
-	</notification>
-	<notification name="SetDisplayNameFailedLength">
-		Przepraszamy, ta nazwa jest zbyt długa. Wyświetlana nazwa może mieć maksymalnie [LENGTH] znaków.
-
-Proszę wprowadzić krótszą nazwę.
-	</notification>
-	<notification name="SetDisplayNameFailedGeneric">
-		Przepraszamy, nie można ustawić Twojej wyświetlanej nazwy. Spróbuj ponownie później.
-	</notification>
-	<notification name="SetDisplayNameMismatch">
-		Podana wyświetlana nazwa nie pasuje. Proszę wprowadzić ją ponownie.
-	</notification>
-	<notification name="AgentDisplayNameUpdateThresholdExceeded">
-		Przepraszamy, musisz jeszcze poczekać zanim będzie można zmienić Twoją wyświetlaną nazwę.
-
-Zobacz http://wiki.secondlife.com/wiki/Setting_your_display_name
-
-Proszę spróbować ponownie później.
-	</notification>
-	<notification name="AgentDisplayNameSetBlocked">
-		Przepraszamy, nie można ustawić wskazanej nazwy, ponieważ zawiera zabronione słowa.
- 
- Proszę spróbować wprowadzić inną nazwę.
-	</notification>
-	<notification name="AgentDisplayNameSetInvalidUnicode">
-		Wyświetlana nazwa, którą chcesz ustawić zawiera niepoprawne znaki.
-	</notification>
-	<notification name="AgentDisplayNameSetOnlyPunctuation">
-		Twoje wyświetlane imię musi zawierać litery inne niż znaki interpunkcyjne.
-	</notification>
-	<notification name="DisplayNameUpdate">
-		[OLD_NAME] ([SLID]) jest od tej pory znana/znany jako [NEW_NAME].
-	</notification>
-	<notification name="OfferTeleport">
-		Zaproponować teleportację do miejsca Twojego pobytu z tą wiadomością?
-		<form name="form">
-			<input name="message">
-				Zapraszam do siebie. Region: [REGION]
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification name="OfferTeleportFromGod">
-		Wysłać propozycję teleportacji do Twojego miejsca?
-		<form name="form">
-			<input name="message">
-				Zapraszam do siebie. Region: [REGION]
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification name="TeleportFromLandmark">
-		Na pewno chcesz się teleportować do &lt;nolink&gt;[LOCATION]&lt;/nolink&gt;?
-		<usetemplate ignoretext="Potwierdź próbę teleportacji do zapisanego miejsca" name="okcancelignore" notext="Anuluj" yestext="Teleportuj"/>
-	</notification>
-	<notification name="TeleportToPick">
-		Teleportuj do [PICK]?
-		<usetemplate ignoretext="Potwierdź, że chcesz teleportować się do miejsca w Ulubionych" name="okcancelignore" notext="Anuluj" yestext="Teleportuj"/>
-	</notification>
-	<notification name="TeleportToClassified">
-		Teleportuj do [CLASSIFIED]?
-		<usetemplate ignoretext="Potwierdź, że chcesz teleportować się do lokalizacji z reklamy" name="okcancelignore" notext="Anuluj" yestext="Teleportuj"/>
-	</notification>
-	<notification name="TeleportToHistoryEntry">
-		Teleportuj do [HISTORY_ENTRY]?
-		<usetemplate ignoretext="Potwierdź teleportację do lokalizacji z historii" name="okcancelignore" notext="Anuluj" yestext="Teleportuj"/>
-	</notification>
-	<notification label="Wiadomość do Wszystkich w Twoim Majątku" name="MessageEstate">
-		Wpisz krótką wiadomość która zostanie wysłana do wszystkich osób w Twoim majątku.
-		<form name="form">
-			<input name="message"/>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification label="Zmiana Majątku Lindenów" name="ChangeLindenEstate">
-		Czy napewno chcesz zmienić ustawienia majątku Linden (mainland, teen grid, orientacja, itp).
-
-Jest to wyjątkowo niebezpieczna decyzja, odczuwalna przez wszystkich Rezydentów. Dla mainland, spowoduje to zmianę tysięcy regionów oraz ich przestrzeń serwerową.
-
-Kontynuować?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification label="Zmiana Dostępu do Majątku Lindenów" name="ChangeLindenAccess">
-		Dokonujesz zmiany w liście dostępu Regionu głównego należącego do Lindenów (Regiony Główne, Teen Grid, Orientacja).
-
-Żądana operacja jest wyjątkowo niebezpieczna dla wszystkich Rezydentów przebywających w regionie i powinna być używana wyłącznie w celu zablokowania opcji pozwalającej na przeniesienie obiektów/L$ do/z sieci.
-Dodatkowo, zmiany dokonane w Regionie Głównym mogą spowodować problemy przestrzeni serwerowej innych regionów.
-
-Kontynuować?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification label="Wybierz MajÄ…tek" name="EstateAllowedAgentAdd">
-		Dodać do listy dostępu do tego majątku czy do [ALL_ESTATES]?
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/>
-	</notification>
-	<notification label="Wybierz MajÄ…tek" name="EstateAllowedAgentRemove">
-		Usunąć z listy dostępu do tego majątku czy do [ALL_ESTATES]?
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/>
-	</notification>
-	<notification label="Wybierz MajÄ…tek" name="EstateAllowedGroupAdd">
-		Dodać do listy dostępu grup do tego majątku czy do [ALL_ESTATES]?
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/>
-	</notification>
-	<notification label="Wybierz MajÄ…tek" name="EstateAllowedGroupRemove">
-		Usunąć z listy dostępu grup do tego majątku czy do [ALL_ESTATES]?
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/>
-	</notification>
-	<notification label="Wybierz MajÄ…tek" name="EstateBannedAgentAdd">
-		Zablokować dostęp do tego majątku czy do [ALL_ESTATES]?
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/>
-	</notification>
-	<notification label="Wybierz MajÄ…tek" name="EstateBannedAgentRemove">
-		Zdjąć tego Rezydenta z listy niepożądanych (bany) dla tego majątku czy dla [ALL_ESTATES]?
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/>
-	</notification>
-	<notification label="Wybierz MajÄ…tek" name="EstateManagerAdd">
-		Dodać zarządce majątku do tego majątku czy do [ALL_ESTATES]?
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/>
-	</notification>
-	<notification label="Wybierz MajÄ…tek" name="EstateManagerRemove">
-		Usunąć zarządce majątku z tego majątku czy z [ALL_ESTATES]?
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/>
-	</notification>
-	<notification label="Potwierdź Wyrzucenie" name="EstateKickUser">
-		Wyrzucić [EVIL_USER] z tego majątku?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="EstateChangeCovenant">
-		Na pewno chcesz zminić treść umowy dla tego majątku?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="RegionEntryAccessBlocked">
-		Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku.
-
-Upewnij się, że masz zainstalowaną najnowszą wersję klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="RegionEntryAccessBlocked_KB">
-		Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie. 
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
-		<url name="url">
-			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
-		</url>
-		<usetemplate ignoretext="Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku." name="okcancelignore" notext="Zamknij" yestext="[SECOND_LIFE]:Pomoc"/>
-	</notification>
-	<notification name="RegionEntryAccessBlocked_Notify">
-		Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie.
-	</notification>
-	<notification name="RegionEntryAccessBlocked_Change">
-		Nie masz zezwolenia na przebywanie w tym Regionie z powodu Twojego statusu ustawień wieku.
-
-W celu uzyskania dostępu do tego regiony zmień proszę swój status ustawień wieku. Będziesz mógł/mogła szukać i mieć dostęp do treści [REGIONMATURITY]. W celu cofnięcia zmian wybierz z menu Ja &gt; Ustawienia &gt; Ogólne.
-		<form name="form">
-			<button name="OK" text="Zmień ustawienia"/>
-			<button default="true" name="Cancel" text="Zamknij"/>
-			<ignore name="ignore" text="Moje ustawienia wieku nie dopuszczajÄ… do regionu"/>
-		</form>
-	</notification>
-	<notification name="PreferredMaturityChanged">
-		Twoja obecna klasyfikacja wieku to [RATING].
-	</notification>
-	<notification name="LandClaimAccessBlocked">
-		W związku ze statusem ustawień Twojego wieku, nie możesz odzyskać tej posiadłości. Możesz potrzebować weryfikacji wieku bądź instalacji najnowszej wersji klienta.
-
-Upewnij się, że masz zainstalowaną najnowszą wersję klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="LandClaimAccessBlocked_KB">
-		Ze względu na Twój wiek, nie możesz odzyskać tej posiadłości. 
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
-		<url name="url">
-			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
-		</url>
-		<usetemplate ignoretext="W związku ze statusem ustawień Twojego wieku, nie możesz odzyskać tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="[SECOND_LIFE]:Pomoc"/>
-	</notification>
-	<notification name="LandClaimAccessBlocked_Notify">
-		Ze względu na Twój wiek, nie możesz odzyskać tej posiadłości.
-	</notification>
-	<notification name="LandClaimAccessBlocked_Change">
-		W związku ze statusem ustawień Twojego wieku, nie możesz odzyskać tej posiadłości.
-
-Możesz wybrać &apos;Zmień Ustawienia&apos; by dokonać zmian w ustawieniach Twojego wieku by uzyskać dostęp do regionu. Wówczas będziesz w stanie znaleźć oraz mieć dostęp do [REGIONMATURITY] treści. Jeżeli zdecydujesz się na powrót do poprzednich ustawień, wybierz Ja &gt; Ustawienia &gt; Główne.
-		<usetemplate ignoretext="Ze względu na Twój wiek, nie możesz odzyskać tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="Zmień Ustawienia"/>
-	</notification>
-	<notification name="LandBuyAccessBlocked">
-		Ze względu na Twój wiek, nie możesz kupić tej posiadłości. Może być to wynikiem braku informacji na temat weryfikacji Twojego wieku.
-
-Upewnij się, że masz zainstalowaną najnowszą wersję klienta i skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="LandBuyAccessBlocked_KB">
-		Ze względu na Twój wiek, nie możesz kupić tej posiadłości. 
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
-		<url name="url">
-			https://support.secondlife.com/ics/support/default.asp?deptID=4417&amp;task=knowledge&amp;questionID=6010
-		</url>
-		<usetemplate ignoretext="Ze względu na Twój wiek, nie możesz kupić tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="[SECOND_LIFE]:Pomoc"/>
-	</notification>
-	<notification name="LandBuyAccessBlocked_Notify">
-		Ze względu na Twój wiek, nie możesz kupić tej posiadłości.
-	</notification>
-	<notification name="LandBuyAccessBlocked_Change">
-		W związku ze statusem ustawień Twojego wieku, nie możesz kupić tej posiadłości.
-
-Możesz wybrać &apos;Zmień Ustawienia&apos; by dokonać zmian w ustawieniach Twojego wieku by uzyskać dostęp do regionu. Wówczas będziesz w stanie znaleźć oraz mieć dostęp do [REGIONMATURITY] treści. Jeżeli zdecydujesz się na powrót do poprzednich ustawień, wybierz Ja &gt; Ustawienia &gt; Główne.
-		<usetemplate ignoretext="W związku ze statusem ustawień Twojego wieku, nie możesz kupić tej posiadłości." name="okcancelignore" notext="Zamknij" yestext="Zmień Ustawienia"/>
-	</notification>
-	<notification name="TooManyPrimsSelected">
-		Zbyt wiele wybranych obiektów. Wybierz [MAX_PRIM_COUNT] lub mniej i spróbuj ponownie
-	</notification>
-	<notification name="ProblemImportingEstateCovenant">
-		Problem z importem umowy majÄ…tku.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ProblemAddingEstateManager">
-		Problemy z dodawaniem nowego zarządcy majątku. Jeden lub więcaj majątk może mieć wypełnioną listę zarządców.
-	</notification>
-	<notification name="ProblemAddingEstateGeneric">
-		Problemy z dodawaniem do listy majątku. Jeden lub więcaj majątk może mieć wypełnioną listę.
-	</notification>
-	<notification name="UnableToLoadNotecardAsset">
-		Brak możliwości załadowania noty w tej chwili.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="NotAllowedToViewNotecard">
-		NiewystarczajÄ…ce prawa do zobaczenia notki przypisanej do wybranego ID.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="MissingNotecardAssetID">
-		ID notki nie znalezione w bazie danych.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="PublishClassified">
-		Pamiętaj: Opłaty za reklamę są bezzwrotne.
-
-Zamieścić tą reklamę za [AMOUNT]L$?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="SetClassifiedMature">
-		Czy ta reklama zawiera treść &apos;Mature&apos;?
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="SetGroupMature">
-		Czy ta grupa zawiera treść &apos;Mature&apos;?
-		<usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification label="Potwierdź Restart" name="ConfirmRestart">
-		Na pewno chcesz zrobić restart tego regionu za 2 minuty?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification label="Wiadomość do Wszystkich w tym Regionie" name="MessageRegion">
-		Wpisz krótką wiadomość która zostanie wysłana do wszystkich osób w tym regionie.
-		<form name="form">
-			<input name="message"/>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification label="Zmienione Restrykcje Wieku dla Regionu" name="RegionMaturityChange">
-		Ustawienie restrykcji wieku dla regionu zostało zmienione.
-Zazwyczaj musi upłynąć nieco czasu zanim ta zmiana zostanie odzwierciedlona na mapie.
-
-Aby wejść do regionu Adult, Rezydenci muszą posiadać zweryfikowane konto, albo w wyniku weryfikacji wieku albo płatości.
-	</notification>
-	<notification label="Wersja Niezgodna z Systemem Rozmów" name="VoiceVersionMismatch">
-		Ta wersja [APP_NAME] nie jest kompatybilna z systemem rozmów w tym Regionie. Musisz zainstalować aktualną wersję [APP_NAME] aby komunikacja głosowa działała poprawnie.
-	</notification>
-	<notification label="Nie Można Kupić Obiektów" name="BuyObjectOneOwner">
-		Jednorazowo możesz kupować tylko od jednego właściciela.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
-	</notification>
-	<notification label="Nie Można Kupić Zawartości" name="BuyContentsOneOnly">
-		Jednorazowo możesz kupić zawartość tylko jednego obiektu.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
-	</notification>
-	<notification label="Nie Można Kupić Zawartości" name="BuyContentsOneOwner">
-		Jednorazowo możesz kupować tylko od jednego właściciela.
-Wybierz pojedynczy obiekt i spróbuj jeszcze raz.
-	</notification>
-	<notification name="BuyOriginal">
-		Kupić oryginalny obiekt od [OWNER] za [PRICE]L$?
-Zostaniesz właścicielem tego obiektu z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="BuyOriginalNoOwner">
-		Kupić oryginalny obiekt za [PRICE]L$?
-Zostaniesz właścicielem tego obiektu z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="BuyCopy">
-		Kupić kopię obiektu od [OWNER] za [PRICE]L$?
-Obiekt zostanie skopiowany do Twojej szafy z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="BuyCopyNoOwner">
-		Kupić kopię obiektu za [PRICE]L$?
-Obiekt zostanie skopiowany do Twojej szafy z następującymi prawami:
- Modyfikacje: [MODIFYPERM]
- Kopiowanie: [COPYPERM]
- Odsprzedawanie i oddawanie: [RESELLPERM]
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="BuyContents">
-		Kupić zawartość od [OWNER] za [PRICE]L$?
-Zawartość zostanie skopiowana do Twojej szafy.
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="BuyContentsNoOwner">
-		Kupić zawartość za [PRICE]L$?
-Zawartość zostanie skopiowana do Twojej szafy.
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmPurchase">
-		Ta transakcja spowoduje:
-[ACTION]
-
-Na pewno chcesz dokonać tego zakupu?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmPurchasePassword">
-		Ta transakcja spowoduje:
-[ACTION]
-
-Na pewno chcesz dokonać tego zakupu?
-Wpisz hasło ponownie i kliknij OK.
-		<form name="form">
-			<input name="message"/>
-			<button name="ConfirmPurchase" text="OK"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification name="SetPickLocation">
-		Uwaga:
-Lokalizacja tego wyboru została zaktualizowana ale pozostałe szczegóły zachowają oryginalne wartości.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="MoveInventoryFromObject">
-		Wybrane obiekty Szafy nie majÄ… praw kopiowania.
-Obiekty zostanÄ… przeniesione do Twojej Szafy, nie zostanÄ… skopiowane.
-
-Przenieść obiekty Szafy?
-		<usetemplate ignoretext="Uprzedź przed przeniesieniem zawartości niekopiowalnej z obiektu" name="okcancelignore" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="MoveInventoryFromScriptedObject">
-		Wybrane obiekty Szafy nie majÄ… praw kopiowania.
-Obiekty zostanÄ… przeniesione do Twojej Szafy, nie zostanÄ… skopiowane.
-Ponieważ obiekty zawierają skrypty, przeniesienie obiektów do Twojej Szafy może spowodować niepoprawne działanie skryptów.
-
-Przenieść obiekty szafy?
-		<usetemplate ignoretext="Uprzedź przed przeniesieniem zawartości niekopiowalnej z obiektu, która może uszkodzić skrypty obiektu" name="okcancelignore" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ClickActionNotPayable">
-		Uwaga: Opcja Zapłać obiektowi została wybrana, ale żeby ta opcja działała musi być dodany skrypt z funkcją money().
-		<form name="form">
-			<ignore name="ignore" text="Opcja Zapłać Obiektowi została aktywowana podczas budowania obiektów bez skryptu z funkcją money()."/>
-		</form>
-	</notification>
-	<notification name="OpenObjectCannotCopy">
-		W tym obiekcie nie ma elementów które możesz skopiować.
-	</notification>
-	<notification name="WebLaunchAccountHistory">
-		Przejść na stronę [http://secondlife.com/account/ Dashboard] żeby zobaczyć historię konta?
-		<usetemplate ignoretext="Uruchom przeglądarkę internetową by zobaczyć historię konta" name="okcancelignore" notext="Anuluj" yestext="Idź na stronę"/>
-	</notification>
-	<notification name="ConfirmQuit">
-		Na pewno chcesz skończyć?
-		<usetemplate ignoretext="Na pewno chcesz skończyć?" name="okcancelignore" notext="Nie kończ" yestext="Wyłącz"/>
-	</notification>
-	<notification name="DeleteItems">
-		[QUESTION]
-		<usetemplate ignoretext="Potwierdź, że na pewno chcesz skasować obiekty" name="okcancelignore" notext="Cofnij" yestext="OK"/>
-	</notification>
-	<notification name="HelpReportAbuseEmailLL">
-		Używaj tej opcji do zgłaszania nadużyć [http://secondlife.com/corporate/tos.php Warunków Umowy (Terms of Service)] i [http://secondlife.com/corporate/cs.php Standardów Społeczeństwa (Community Standards)].
-
-Wszystkie zgłoszone nadużycia są badane i rozwiązywane.
-	</notification>
-	<notification name="HelpReportAbuseSelectCategory">
-		Wybierz kategorię dla tego raportu o nadużyciu.
-Określenie kategorii pomoże nam w klasyfikacji i prztwarzaniu raportu.
-	</notification>
-	<notification name="HelpReportAbuseAbuserNameEmpty">
-		Wprowadź imię i nazwisko osoby popełniającej nadużycie.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
-	</notification>
-	<notification name="HelpReportAbuseAbuserLocationEmpty">
-		Wprowadź nazwę miejsca gdzie popełniono nadużycie.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
-	</notification>
-	<notification name="HelpReportAbuseSummaryEmpty">
-		Wprowadź opis popełnionego nadużycia.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
-	</notification>
-	<notification name="HelpReportAbuseDetailsEmpty">
-		Wprowadź szczgółowy opis popełnionego nadużycia.
-Podaj maksymalną ilość szczgółów oraz imiona i nazwiska osób związanych z nadużyciem które zgłaszasz.
-Dokładne dane pomogą nam w klasyfikacji i prztwarzaniu raportu.
-	</notification>
-	<notification name="HelpReportAbuseContainsCopyright">
-		Szanowny Rezydencie,
-
-Jeżeli składasz raport dotyczący naruszenia praw autorskich proszę się upewnić, że robisz to poprawnie:
-
-(1) Przypadek Nadużycia. Możesz złożyć raport jeżeli sądzisz, że Rezydent narusza system przywilejów [SECOND_LIFE], na przykład używając CopyBot lub podobnych narzędzi robiących kopie, naruszając prawa autorskie. Komisja Nadużyć bada wykroczenia i stosuje akcje dyscyplinarne za zachowania sprzeczne z zasadami Warunków Umowy [SECOND_LIFE] [http://secondlife.com/corporate/tos.php Terms of Service] i Standardów Społeczeństwa [http://secondlife.com/corporate/cs.php Community Standards]. Komisja Nadużyć nie zajmuje się i nie odpowiada na żądania usunięcia treści ze środowiska [SECOND_LIFE].
-
-(2) Przypadek DMCA lub Usuwanie Treści. Aby wystąpić z żądaniem o usunięcie treści ze środowiska [SECOND_LIFE] MUSISZ przedłożyć ważne zawiadomienie o nadużyciu zgodne z naszą polityką DMCA [http://secondlife.com/corporate/dmca.php DMCA Policy].
-
-Jeżeli chcesz kontynuować dalej zamknij to okno i dokończ wysyłanie raportu. Może być potrzebny wybór kategorii &apos;CopyBot albo Nadużycie Przywilejów&apos;.
-
-Dziękujemy,
-
-Linden Lab
-	</notification>
-	<notification name="FailedRequirementsCheck">
-		Brak następujących wymaganych komponentów w [FLOATER]:
-[COMPONENTS]
-	</notification>
-	<notification label="Zamień Istniejący Dodatek" name="ReplaceAttachment">
-		Obecnie masz już dołączony obiekt do tej części Twojego ciała.
-Chcesz go zamienić na wybrany obiekt?
-		<form name="form">
-			<ignore name="ignore" save_option="true" text="Obecnie masz już dołączony obiekt do tej części Twojego ciała.Chcesz go zamienić na wybrany obiekt?"/>
-			<button ignore="Zamień automatycznie" name="Yes" text="OK"/>
-			<button ignore="Nie zamieniaj" name="No" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification label="Ostrzeżenie Trybu Pracy" name="BusyModePay">
-		Jesteś w Trybie pracy co oznacza, że nie dostaniesz żadnych obiektów w zamian za tą opłatę.
-
-Chcesz wyłączyć Tryb pracy przed zakończeniem tej tranzakcji?
-		<form name="form">
-			<ignore name="ignore" save_option="true" text="Jesteś w Trybie Pracy co oznacza, że nie dostaniesz żadnych obiektów w zamian za tą opłatę. Chcesz wyłączyć Tryb Pracy przed zakończeniem tej transakcji?"/>
-			<button ignore="Zawsz wyłączaj tryb pracy" name="Yes" text="OK"/>
-			<button ignore="Nie wyłączaj trybu pracy" name="No" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification name="ConfirmDeleteProtectedCategory">
-		Ten folder &apos;[FOLDERNAME]&apos; to folder systemowy. Usunięcie foldera systemowego spowoduje niestabilność. Czy na pewno chcesz go skasować?
-		<usetemplate ignoretext="Potwierdź zanim folder systemu zostanie skasowany" name="okcancelignore" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmEmptyTrash">
-		Na pewno chcesz permanentnie usunąć zawartość Kosza?
-		<usetemplate ignoretext="Potwierdź przed usunięciem zawartości Kosza" name="okcancelignore" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmClearBrowserCache">
-		Na pewno chcesz wyczyścić bufor przeglądarki?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmClearCookies">
-		Na pewno chcesz wyczyścić ciasteczka?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/>
-	</notification>
-	<notification name="ConfirmClearMediaUrlList">
-		Na pewno chcesz wyczyścić listę zapisanych linków?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/>
-	</notification>
-	<notification name="ConfirmEmptyLostAndFound">
-		Na pewno chcesz permanentnie usunąć zawartość Twojego foldera Zgubione i odnalezione?
-		<usetemplate ignoretext="Potwierdź przed usunięciem zawartości foldera Zagubione i odnalezione" name="okcancelignore" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="CopySLURL">
-		Następujący link SLURL został skopiowany do schowka:
- [SLURL]
-
-Zamieść go na stronie internetowej żeby umożliwić innym łatwy dostęp do tego miejsca, albo wklej go do panela adresu Twojej przeglądarki żeby go otworzyć.
-		<form name="form">
-			<ignore name="ignore" text="SLurl skopiowany do schowka"/>
-		</form>
-	</notification>
-	<notification name="WLSavePresetAlert">
-		Chcesz zmienić zapisane ustawienia?
-		<usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="WLDeletePresetAlert">
-		Chcesz usunąć [SKY]?
-		<usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="WLNoEditDefault">
-		Nie możesz edytować lub usunąć domyślnych ustawień.
-	</notification>
-	<notification name="WLMissingSky">
-		Ten plik cyklu dziennego używa brakującego pliku nieba: [SKY].
-	</notification>
-	<notification name="PPSaveEffectAlert">
-		Efekt post-procesu już istnieje. Chcesz zapisać nowy na jego miejsce?
-		<usetemplate name="okcancelbuttons" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="NewSkyPreset">
-		Nazwij nowe niebo.
-		<form name="form">
-			<input name="message">
-				Nowe ustawienie
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification name="ExistsSkyPresetAlert">
-		Ustawienie już istnieje!
-	</notification>
-	<notification name="NewWaterPreset">
-		Nazwij nowe ustawienie wody.
-		<form name="form">
-			<input name="message">
-				Nowe ustawienie
-			</input>
-			<button name="OK" text="OK"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification name="ExistsWaterPresetAlert">
-		Ustawienie już istnieje!
-	</notification>
-	<notification name="WaterNoEditDefault">
-		Domyślne ustawienie nie może być zmienione ani usunięte.
-	</notification>
-	<notification name="ChatterBoxSessionStartError">
-		BÅ‚Ä…d podczas rozpoczynania czatu/IM z [RECIPIENT].
-[REASON]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ChatterBoxSessionEventError">
-		[EVENT]
-[REASON]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ForceCloseChatterBoxSession">
-		Twój czat/IM z [NAME] zostanie zamknięty.
-[REASON]
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="Cannot_Purchase_an_Attachment">
-		Rzeczy nie mogą być kupione jeżeli są częścią załącznika.
-	</notification>
-	<notification label="Prośba o Zgodę na Pobieranie L$" name="DebitPermissionDetails">
-		Akceptując tą prośbę wyrażasz zgodę na ciągłe pobieranie Lindenów (L$) z Twojego konta. Żeby cofnąć to pozwolenie właściciel obiektu będzie musiał usunąć ten obiekt albo zresetowć skrypty obieku.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AutoWearNewClothing">
-		Czy chcesz automatycznie nosić ubranie które tworzysz?
-		<usetemplate ignoretext="Załóż ubranie automatycznie będąc w trybie Edycji Wyglądu" name="okcancelignore" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="NotAgeVerified">
-		Nie masz dostępu do tej posiadłości ze względu na brak weryfikacji Twojego wieku. Czy chcesz odwiedzić stronę [SECOND_LIFE] żeby to zmienić?
-
-[_URL]
-		<url name="url" option="0">
-			https://secondlife.com/account/verification.php
-		</url>
-		<usetemplate ignoretext="Brak weryfikacji wieku" name="okcancelignore" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="Cannot enter parcel: no payment info on file">
-		Nie masz dostępu do tej posiadłości ze względu na brak danych o Twoim koncie. Czy chcesz odwiedzić stronę [SECOND_LIFE] żeby to zmienić?
-
-[_URL]
-		<url name="url" option="0">
-			https://secondlife.com/account/
-		</url>
-		<usetemplate ignoretext="Brak danych o koncie" name="okcancelignore" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="MissingString">
-		Zdanie [STRING_NAME] nie znalezione w strings.xml
-	</notification>
-	<notification name="SystemMessageTip">
-		[MESSAGE]
-	</notification>
-	<notification name="IMSystemMessageTip">
-		[MESSAGE]
-	</notification>
-	<notification name="Cancelled">
-		Anulowane
-	</notification>
-	<notification name="CancelledSit">
-		Siadanie anulowane
-	</notification>
-	<notification name="CancelledAttach">
-		Dołączenie anulowane
-	</notification>
-	<notification name="ReplacedMissingWearable">
-		Barkujące ubranie/części ciała zastąpiono domyślnymi obiektami.
-	</notification>
-	<notification name="GroupNotice">
-		Temat: [SUBJECT], Treść: [MESSAGE]
-	</notification>
-	<notification name="FriendOnline">
-		[NAME] jest w Second Life
-	</notification>
-	<notification name="FriendOffline">
-		[NAME] opuszcza Second Life
-	</notification>
-	<notification name="AddSelfFriend">
-		Nie możesz dodać siebie do listy znajomych.
-	</notification>
-	<notification name="UploadingAuctionSnapshot">
-		Ładowanie obrazu z Internetu...
-(Zajmuje około 5 minut.)
-	</notification>
-	<notification name="UploadPayment">
-		Ładowanie kosztowało [AMOUNT]L$.
-	</notification>
-	<notification name="UploadWebSnapshotDone">
-		Ładowanie obrazu z Internetu zakończne pomyślnie.
-	</notification>
-	<notification name="UploadSnapshotDone">
-		Ładowanie zdjęcia zakończone pomyślnie.
-	</notification>
-	<notification name="TerrainDownloaded">
-		Plik terrain.raw ściągniety.
-	</notification>
-	<notification name="GestureMissing">
-		Gesturka [NAME] nie znaleziony w bazie danych.
-	</notification>
-	<notification name="UnableToLoadGesture">
-		Ładowanie gesturki [NAME] nie powiodło się.
-	</notification>
-	<notification name="LandmarkMissing">
-		Miejsce (LM) nie znalezione w bazie danych.
-	</notification>
-	<notification name="UnableToLoadLandmark">
-		Ładowanie miejsca (LM) nie powiodło się.
-Spróbuj jeszcze raz.
-	</notification>
-	<notification name="CapsKeyOn">
-		Twój Caps Lock jest włączony.
-Ponieważ to ma wpływ na wpisywane hasło, możesz chcieć go wyłączyć.
-	</notification>
-	<notification name="NotecardMissing">
-		Notka nie została znaleziona w bazie danych.
-	</notification>
-	<notification name="NotecardNoPermissions">
-		Nie masz pozwolenia na zobaczenie notki.
-	</notification>
-	<notification name="RezItemNoPermissions">
-		Nie masz pozwolenia na stworzenie obiektu.
-	</notification>
-	<notification name="UnableToLoadNotecard">
-		Nie można załadować danych notki w tym momencie.
-	</notification>
-	<notification name="ScriptMissing">
-		Skrypt nie znaleziony w bazie danych.
-	</notification>
-	<notification name="ScriptNoPermissions">
-		Nie masz pozwolenia na zobaczenie skryptu.
-	</notification>
-	<notification name="UnableToLoadScript">
-		Ładowanie skryptu nie powiodło się.
-Spróbuj jeszcze raz.
-	</notification>
-	<notification name="IncompleteInventory">
-		Zawartość obiektów którą chcesz podarować nie jest dostępna lokalnie. Spróbuj podarować te obiekty jeszcze raz za jakiś czas.
-	</notification>
-	<notification name="CannotModifyProtectedCategories">
-		Nie możesz zmienić chronionych kategorii.
-	</notification>
-	<notification name="CannotRemoveProtectedCategories">
-		Nie możesz usunąć chronionych kategorii.
-	</notification>
-	<notification name="UnableToBuyWhileDownloading">
-		Nie można kupować w trakcie ładowania danych obiektu.
-Spróbuj jeszcze raz.
-	</notification>
-	<notification name="UnableToLinkWhileDownloading">
-		Nie można łączyć w trakcie ładowania danych obiektu.
-Spróbuj jeszcze raz.
-	</notification>
-	<notification name="CannotBuyObjectsFromDifferentOwners">
-		Nie możesz jednocześnie kupować obiektów od różnych osób.
-Wybierz jeden obiekt.
-	</notification>
-	<notification name="ObjectNotForSale">
-		Obiekt nie jest na sprzedaż.
-	</notification>
-	<notification name="EnteringGodMode">
-		WÅ‚Ä…cznie trybu boskiego, poziom [LEVEL]
-	</notification>
-	<notification name="LeavingGodMode">
-		Wyłączanie trybu boskiego, poziom [LEVEL]
-	</notification>
-	<notification name="CopyFailed">
-		Nie masz praw do skopiowania wybranych obiektów.
-	</notification>
-	<notification name="InventoryAccepted">
-		Podarunek od Ciebie został przyjęty przez [NAME].
-	</notification>
-	<notification name="InventoryDeclined">
-		Podarunek od Ciebie został odrzucony przez [NAME].
-	</notification>
-	<notification name="ObjectMessage">
-		[NAME]: [MESSAGE]
-	</notification>
-	<notification name="CallingCardAccepted">
-		Twoja wizytówka została przyjęta.
-	</notification>
-	<notification name="CallingCardDeclined">
-		Twoja wizytówka została odrzucona.
-	</notification>
-	<notification name="TeleportToLandmark">
-		Jesteś w Głównym Regionie i możesz się stąd teleportować do innych miejsc jak &apos;[NAME]&apos; wybierając Moja Szafa w prawym dolnym rogu ekranu
-i wybierajÄ…c folder Zapisane Miejsca (LM).
-(Kliknij dwa razy na miejsce (LM) i wybierz &apos;Teleport&apos; żeby tam się przenieść.)
-	</notification>
-	<notification name="TeleportToPerson">
-		Możesz skontaktować się z Rezydentem &apos;[NAME]&apos; poprzez otworzenie panelu Ludzie po prawej stronie ekranu.
-Wybierz Rezydenta z listy, następnie kliknij &apos;IM&apos; na dole panelu.
-(Możesz także kliknąć podwójnie na ich imię na liście, lub prawym przyciskiem i wybrać &apos;IM&apos;).
-	</notification>
-	<notification name="CantSelectLandFromMultipleRegions">
-		Nie możesz przekraczać granic serwera wybierając obszar.
-Spróbuj wybrać mniejszy obszar.
-	</notification>
-	<notification name="SearchWordBanned">
-		Pewne frazy podczas wyszukiwania zostały usunięte w związku z restrykcjami zawartymi w Standardach Społecznościowych (Community Standards).
-	</notification>
-	<notification name="NoContentToSearch">
-		Proszę wybrać przynajmiej jeden z podanych rodzajów treści jaką zawiera region podczas wyszukiwania (&apos;General&apos;, &apos;Moderate&apos;, lub &apos;Adult&apos;).
-	</notification>
-	<notification name="SystemMessage">
-		[MESSAGE]
-	</notification>
-	<notification name="PaymentReceived">
-		[MESSAGE]
-	</notification>
-	<notification name="PaymentSent">
-		[MESSAGE]
-	</notification>
-	<notification name="EventNotification">
-		Zawiadomienie o imprezie:
-
-[NAME]
-[DATE]
-		<form name="form">
-			<button name="Details" text="Szczegóły"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification name="TransferObjectsHighlighted">
-		Obiekty na tej posiadłości które zostaną przekazane kupcowi tej posiadłości są teraz rozjaśnione.
-
-* Drzewa i trawy które zostaną przekazne nie są rozjaśnione.
-		<form name="form">
-			<button name="Done" text="Zastosuj"/>
-		</form>
-	</notification>
-	<notification name="DeactivatedGesturesTrigger">
-		Zablokowane gesturki z jednakowym aktywowaniem:
-[NAMES]
-	</notification>
-	<notification name="NoQuickTime">
-		Wygląda na to, że QuickTime z Apple nie jest zainstalowany na Twoim komputerze.
-Jeżeli chcesz odtwarzać media na tej posiadłości które używają QuickTime idź do [http://www.apple.com/quicktime strona QuickTime] i zainstaluj odtwarzacz.
-	</notification>
-	<notification name="NoPlugin">
-		Nie znaleziono wtyczki mediów dla &quot;[MIME_TYPE]&quot; typu mime.  Media tego typu będą niedostępne.
-	</notification>
-	<notification name="MediaPluginFailed">
-		Następujące wtyczki mediów nie działają:
-    [PLUGIN]
-
-Zainstaluj proszę wtyczki ponownie lub skontaktuj się z dostawcą jeśli nadal problem będzie występował.
-		<form name="form">
-			<ignore name="ignore" text="Wtyczka mediów nie działa"/>
-		</form>
-	</notification>
-	<notification name="OwnedObjectsReturned">
-		Twoje obiekty z wybranej posiadłości zostały zwrócone do Twojej Szafy.
-	</notification>
-	<notification name="OtherObjectsReturned">
-		Obiekty należące do [NAME] na wybranej posiadłości zostały zwrócone do Szafy tej osoby.
-	</notification>
-	<notification name="OtherObjectsReturned2">
-		Obiekty z posiadłości należącej do Rezydenta&apos;[NAME]&apos; zostały zwrócone do właściciela.
-	</notification>
-	<notification name="GroupObjectsReturned">
-		Obiekty z wybranej posiadłości przypisane do grupy [GROUPNAME] zostały zwrócone do szafy ich właścicieli.
-Przekazywalne obiekty przekazne grupie zostały zwrócone do ich poprzednich właścicieli.
-Nieprzekazywalne obiekty przekazane grupie zostały usunięte.
-	</notification>
-	<notification name="UnOwnedObjectsReturned">
-		Obiekty z wybranej posiadłości które nie należą do Ciebie zostały zwrócone do ich właścicieli.
-	</notification>
-	<notification name="ServerObjectMessage">
-		Wiadomość od [NAME]:
-&lt;nolink&gt;[MSG]&lt;/nolink&gt;
-	</notification>
-	<notification name="NotSafe">
-		Ta posiadłość pozwala na uszkodzenia.
-Możesz doznać tutaj urazu. Jeżeli zginiesz nastąpi teleportacja do Twojego miejsca startu.
-	</notification>
-	<notification name="NoFly">
-		Ta posiadłość nie pozwala na latanie.
-Nie możesz tutaj latać.
-	</notification>
-	<notification name="PushRestricted">
-		Popychanie niedozwolone. Nie możesz tutaj popychać innych, chyba, że jesteś właścicielem tej posiadłości.
-	</notification>
-	<notification name="NoVoice">
-		Ta posiadłość nie pozwala na rozmowy.
-	</notification>
-	<notification name="NoBuild">
-		Ta posiadłość nie pozwala na budowanie. Nie możesz tworzyć tutaj obiektów.
-	</notification>
-	<notification name="ScriptsStopped">
-		Administrator czasowo zatrzymał skrypty w tym regionie.
-	</notification>
-	<notification name="ScriptsNotRunning">
-		Żadne skrypty nie działają w tym regionie.
-	</notification>
-	<notification name="NoOutsideScripts">
-		Ta posiadłość nie pozwala na zewnętrzne skrypty.
-
-Żadne skrypty nie będą tutaj działać za wyjątkiem skryptów należących do właściciela posiadłości.
-	</notification>
-	<notification name="ClaimPublicLand">
-		Tylko publiczne posiadłości w tym regionie mogą być przejęte.
-	</notification>
-	<notification name="RegionTPAccessBlocked">
-		Ze względu na Twój wiek, nie jesteś uprawniony do przebywania w tym regionie. Możesz potrzebować weryfikacji wieku bądź instalacji najnowszej wersji klienta.
-
-Skorzystaj z [SECOND_LIFE]:Pomoc by uzyskać więcej informacji na temat dostępu do regionów z podanym rodzajem treści jaką zawiera.
-	</notification>
-	<notification name="URBannedFromRegion">
-		Zostałeś zbanowany w regionie.
-	</notification>
-	<notification name="NoTeenGridAccess">
-		Twoje konto nie może zostać połączone z podanym regionem Teen Grid.
-	</notification>
-	<notification name="ImproperPaymentStatus">
-		Nie posiadasz odpowiedniego statusu płatniczego by uzyskać dostęp do regionu.
-	</notification>
-	<notification name="MustGetAgeParcel">
-		By móc przebywać na tej posiadłości wymagana jest weryfikacja Twojego wieku.
-	</notification>
-	<notification name="NoDestRegion">
-		Żądana lokalizacja regionu nie została odnaleziona.
-	</notification>
-	<notification name="NotAllowedInDest">
-		Brak dostępu do podanej lokalizacji.
-	</notification>
-	<notification name="RegionParcelBan">
-		Nie możesz przejść przez zamkniętą posiadłość. Spróbuj skorzystać z innej drogi.
-	</notification>
-	<notification name="TelehubRedirect">
-		Zostałeś przeniesiony do teleportera.
-	</notification>
-	<notification name="CouldntTPCloser">
-		Brak możliwości teleportacji do bliższej lokacji.
-	</notification>
-	<notification name="TPCancelled">
-		Teleportacja anulowana.
-	</notification>
-	<notification name="FullRegionTryAgain">
-		Region, który chcesz odwiedzić jest w tej chwili pełny.
-Spróbuj ponowanie za kilka minut.
-	</notification>
-	<notification name="GeneralFailure">
-		Nieudana próba.
-	</notification>
-	<notification name="RoutedWrongRegion">
-		Wysłano niewłaściwe połączenie do regionu. Proszę spróbować ponownie.
-	</notification>
-	<notification name="NoValidAgentID">
-		Nieważny identyfikator agenta.
-	</notification>
-	<notification name="NoValidSession">
-		Nieważny identyfikator sesji.
-	</notification>
-	<notification name="NoValidCircuit">
-		Nieważny obwód kodowania.
-	</notification>
-	<notification name="NoValidTimestamp">
-		Niewłaściwy czas zapisu.
-	</notification>
-	<notification name="NoPendingConnection">
-		Brak możliwości wykonania połączenia.
-	</notification>
-	<notification name="InternalUsherError">
-		Podczas teleportacji nastąpił błąd wewnętrzny, który może być wynikiem problemów serwera.
-	</notification>
-	<notification name="NoGoodTPDestination">
-		Brak lokalizacji punktu do teleportacji w podanym regionie.
-	</notification>
-	<notification name="InternalErrorRegionResolver">
-		Podczas próby odnalezienia globalnych współrzędych dla żądanej teleportacji pojawił się wewnętrzny błąd. Może być to wynikiem problemów serwera.
-	</notification>
-	<notification name="NoValidLanding">
-		Nieważny punkt lądowania.
-	</notification>
-	<notification name="NoValidParcel">
-		Nieważana posiadłość.
-	</notification>
-	<notification name="ObjectGiveItem">
-		Obiekt o nazwie &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, którego właścicielem jest [NAME_SLURL] oferuje Tobie &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt;.  Korzystanie z tego obieku wymaga przelączenia się na tryb zaawansowany, w którym będzie można odszukać obiekt w Twojej Szafie. W celu przełączenia trybu życia na zaawansowany, zamknij i uruchom ponownie aplikację. Przed ponownym zalogowaniem zmień tryb życia na ekranie logowania.
-		<form name="form">
-			<button name="Keep" text="Zaakceptuj obiekt"/>
-			<button name="Discard" text="Odrzuć obiekt"/>
-			<button name="Mute" text="Zablokuj obiekt"/>
-		</form>
-	</notification>
-	<notification name="UserGiveItem">
-		[NAME_SLURL] proponuje Tobie [ITEM_SLURL]. Korzystanie z tego obieku wymaga przelączenia się na tryb zaawansowany, w którym będzie można odszukać obiekt w Twojej Szafie. W celu przełączenia trybu życia na zaawansowany, zamknij i uruchom ponownie aplikację. Przed ponownym zalogowaniem zmień tryb życia na ekranie logowania.
-		<form name="form">
-			<button name="Show" text="Zaakceptuj obiekt"/>
-			<button name="Discard" text="Odrzuć obiekt"/>
-			<button name="Mute" text="Zablokuj użytkownika"/>
-		</form>
-	</notification>
-	<notification name="GodMessage">
-		[NAME]
-
-[MESSAGE]
-	</notification>
-	<notification name="JoinGroup">
-		[MESSAGE]
-		<form name="form">
-			<button name="Join" text="Zaakceptuj"/>
-			<button name="Decline" text="Odmów"/>
-			<button name="Info" text="Info"/>
-		</form>
-	</notification>
-	<notification name="TeleportOffered">
-		[NAME_SLURL] proponuje Ci teleportacjÄ™ do siebie:
-
-[MESSAGE] - [MATURITY_STR] &lt;icon&gt;[MATURITY_ICON]&lt;/icon&gt;
-		<form name="form">
-			<button name="Teleport" text="Teleportuj"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification name="TeleportOfferSent">
-		Oferta teleportacji wysłana do [TO_NAME]
-	</notification>
-	<notification name="GotoURL">
-		[MESSAGE]
-[URL]
-		<form name="form">
-			<button name="Later" text="Póżniej"/>
-			<button name="GoNow..." text="Teraz..."/>
-		</form>
-	</notification>
-	<notification name="OfferFriendship">
-		[NAME_SLURL] proponuje znajomość.
-
-[MESSAGE]
-
-(Będziecie mogli widzieć swój status online)
-		<form name="form">
-			<button name="Accept" text="Zaakceptuj"/>
-			<button name="Decline" text="Odmów"/>
-		</form>
-	</notification>
-	<notification name="FriendshipOffered">
-		Oferta znajomości dla [TO_NAME]
-	</notification>
-	<notification name="OfferFriendshipNoMessage">
-		[NAME_SLURL] proponuje Ci znajomość.
-
-(Z zalożenia będzie widzić swój status online.)
-		<form name="form">
-			<button name="Accept" text="Zaakceptuj"/>
-			<button name="Decline" text="Odmów"/>
-		</form>
-	</notification>
-	<notification name="FriendshipAccepted">
-		Twoja propozycja znajomości została przyjęta przez [NAME].
-	</notification>
-	<notification name="FriendshipDeclined">
-		Twoja propozycja znajomości została odrzucona przez [NAME].
-	</notification>
-	<notification name="FriendshipAcceptedByMe">
-		Propozycja znajomości została zaakceptowana.
-	</notification>
-	<notification name="FriendshipDeclinedByMe">
-		Propozycja znajomości została odrzucona.
-	</notification>
-	<notification name="OfferCallingCard">
-		[NAME] oferuje swoją wizytówkę.
-Wizytówka w Twojej Szafie umożliwi szybki kontakt IM z tym Rezydentem.
-		<form name="form">
-			<button name="Accept" text="Zaakceptuj"/>
-			<button name="Decline" text="Odmów"/>
-		</form>
-	</notification>
-	<notification name="RegionRestartMinutes">
-		Restart regionu za [MINUTES] min.
-Nastąpi wylogowanie jeżeli zostaniesz w tym regionie.
-	</notification>
-	<notification name="RegionRestartSeconds">
-		Restart regionu za [SECONDS] sec.
-Nastąpi wylogowanie jeżeli zostaniesz w tym regionie.
-	</notification>
-	<notification name="LoadWebPage">
-		Załadować stronę [URL]?
-
-[MESSAGE]
-
-Od obiektu: &lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;, właściciel właściciel: [NAME]?
-		<form name="form">
-			<button name="Gotopage" text="Załaduj"/>
-			<button name="Cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification name="FailedToFindWearableUnnamed">
-		[TYPE] - nie znaleziono w bazie danych.
-	</notification>
-	<notification name="FailedToFindWearable">
-		[TYPE] [DESC] - nie znaleziono w bazie danych.
-	</notification>
-	<notification name="InvalidWearable">
-		Obiekt, który chcesz założyć używa narzędzia nieobecnego w wersji klienta, którą używasz. By go założyć ściągnij najnowszą wersję [APP_NAME].
-	</notification>
-	<notification name="ScriptQuestion">
-		Obiekt &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, którego właścicielem jest &apos;[NAME]&apos;, chciałby:
-
-[QUESTIONS]
-Czy siÄ™ zgadzasz?
-		<form name="form">
-			<button name="Yes" text="Tak"/>
-			<button name="No" text="Nie"/>
-			<button name="Mute" text="Zablokuj"/>
-		</form>
-	</notification>
-	<notification name="ScriptQuestionCaution">
-		Obiekt &apos;&lt;nolink&gt;[OBJECTNAME]&lt;/nolink&gt;&apos;, którego właścicielem jest &apos;[NAME]&apos; chciałby:
-
-[QUESTIONS]
-Jeśli nie ufasz temu obiektowi i jego kreatorowi, odmów.
-
-Czy siÄ™ zgadzasz?
-		<form name="form">
-			<button name="Grant" text="Zaakceptuj"/>
-			<button name="Deny" text="Odmów"/>
-			<button name="Details" text="Szczegóły..."/>
-		</form>
-	</notification>
-	<notification name="ScriptDialog">
-		[NAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
-[MESSAGE]
-		<form name="form">
-			<button name="Ignore" text="Zignoruj"/>
-		</form>
-	</notification>
-	<notification name="ScriptDialogGroup">
-		[GROUPNAME]&apos;s &apos;&lt;nolink&gt;[TITLE]&lt;/nolink&gt;&apos;
-[MESSAGE]
-		<form name="form">
-			<button name="Ignore" text="Zignoruj"/>
-		</form>
-	</notification>
-	<notification name="BuyLindenDollarSuccess">
-		Dziękujemy za wpłatę!
-
-Twój stan konta L$ zostanie zaktualizowany w momencie zakończenia transakcji. Jeżeli w ciągu 20 minut, Twój balans konta nie ulegnie zmianie, transakcja została anulowana. W tym przypadku, pobrana kwota zostanie zwrócona na stan konta w US$.
-
-Status transkacji możesz sprawdzić odwiedzając Historię Transakcji swojego konta na [http://secondlife.com/account/ Dashboard]
-	</notification>
-	<notification name="FirstOverrideKeys">
-		Twoje sterujące klawisze zostały przejęte przez obiekt.
-Użyj strzałek lub AWSD żeby sprawdzić ich działanie.
-Niektóre obiekty (np broń) wymagają trybu panoramicznego.
-Nacisnij &apos;M&apos; żeby go wybrać.
-	</notification>
-	<notification name="FirstSandbox">
-		Ten region to piaskownica.
-
-Obiekty które tu zbudujesz mogą zostać usunięte jak opuścisz ten obszar - piaskownice są regularnie czyszczone, sprawdź informacje na górze ekranu obok nazwy regionu.
-	</notification>
-	<notification name="MaxListSelectMessage">
-		Maksymalnie możesz wybrać [MAX_SELECT] rzeczy
-z tej listy.
-	</notification>
-	<notification name="VoiceInviteP2P">
-		[NAME] zaprasza Cię do rozmowy głosem.
-Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia.
-Wybierz Zablokuj żeby wyciszyć dzwoniącą osób
-		<form name="form">
-			<button name="Accept" text="Zaakceptuj"/>
-			<button name="Decline" text="Odmów"/>
-			<button name="Mute" text="Zablokuj"/>
-		</form>
-	</notification>
-	<notification name="AutoUnmuteByIM">
-		Wysłano [NAME] prywatną wiadomość i ta osoba została automatycznie odblokowana.
-	</notification>
-	<notification name="AutoUnmuteByMoney">
-		Przekazano [NAME] pieniądze i ta osoba została automatycznie odblokowana.
-	</notification>
-	<notification name="AutoUnmuteByInventory">
-		Zaoferowno [NAME] obiekty i ta osoba została automatycznie odblokowana.
-	</notification>
-	<notification name="VoiceInviteGroup">
-		[NAME] zaczyna rozmowÄ™ z grupÄ… [GROUP].
-Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia. Wybierz Zablokuj żeby wyciszyć dzwoniącą osobę.
-		<form name="form">
-			<button name="Accept" text="Zaakceptuj"/>
-			<button name="Decline" text="Odmów"/>
-			<button name="Mute" text="Zablokuj"/>
-		</form>
-	</notification>
-	<notification name="VoiceInviteAdHoc">
-		[NAME] zaczyna konferencję głosem.
-Wybierz Zaakceptuj żeby rozmawiać albo Odmów żeby nie przyjąć zaproszenia. Wybierz Zablokuj żeby wyciszyć dzwoniącą osobę.
-		<form name="form">
-			<button name="Accept" text="Zaakceptuj"/>
-			<button name="Decline" text="Odmów"/>
-			<button name="Mute" text="Zablokuj"/>
-		</form>
-	</notification>
-	<notification name="InviteAdHoc">
-		[NAME] zaprasza CiÄ™ do konferencji poprzez Czat/IM.
-Wybierz Zaakceptuj żeby zacząć czat albo Odmów żeby nie przyjąć zaproszenia. Wybierz Zablokuj żeby wyciszyć tą osobę.
-		<form name="form">
-			<button name="Accept" text="Zaakceptuj"/>
-			<button name="Decline" text="Odmów"/>
-			<button name="Mute" text="Block"/>
-		</form>
-	</notification>
-	<notification name="VoiceChannelFull">
-		Rozmowa w której chcesz uczestniczyć, [VOICE_CHANNEL_NAME], nie akceptuje więcej rozmówców. Spróbuj póżniej.
-	</notification>
-	<notification name="ProximalVoiceChannelFull">
-		Przepraszamy. Limit rozmów został przekroczony w tym obszarze. Spróbuj w innym miejscu.
-	</notification>
-	<notification name="VoiceChannelDisconnected">
-		[VOICE_CHANNEL_NAME] odłączył się. Przełączanie do rozmowy przestrzennej.
-	</notification>
-	<notification name="VoiceChannelDisconnectedP2P">
-		[VOICE_CHANNEL_NAME] skończył rozmowę. Przełączanie do rozmowy przestrzennej.
-	</notification>
-	<notification name="P2PCallDeclined">
-		[VOICE_CHANNEL_NAME] odmówił połączenia. Przełączanie do rozmowy przestrzennej.
-	</notification>
-	<notification name="P2PCallNoAnswer">
-		[VOICE_CHANNEL_NAME] nie odpowiada. Przełączanie do rozmowy przestrzennej.
-	</notification>
-	<notification name="VoiceChannelJoinFailed">
-		Brak połączenia z [VOICE_CHANNEL_NAME], spróbuj póżniej. Przełączanie do rozmowy przestrzennej.
-	</notification>
-	<notification name="VoiceLoginRetry">
-		Tworzymy kanał głosu dla Ciebie. Moze potrwać minutę.
-	</notification>
-	<notification name="VoiceEffectsExpired">
-		Subskrypcja jednego lub więcej z Voice Morph wygasła.
-[[URL] Kliknij tutaj] oby odnowić subskrypcję.
-	</notification>
-	<notification name="VoiceEffectsExpiredInUse">
-		Czas aktywności Voice Morph wygasł, normalne ustawienia Twojego głosu zostały zastosowane.
-[[URL] Kliknij tutaj] aby odnowić subskrypcję.
-	</notification>
-	<notification name="VoiceEffectsWillExpire">
-		Jedno lub więcej z Twoich Voice Morph wygaśnie za mniej niż [INTERVAL] dni.
-[[URL] Klinij tutaj] aby odnowić subskrypcję.
-	</notification>
-	<notification name="VoiceEffectsNew">
-		Nowe Voice Morph są dostępne!
-	</notification>
-	<notification name="Cannot enter parcel: not a group member">
-		Nie masz dostępu do posiadłości, nie należysz do właściwej grupy.
-	</notification>
-	<notification name="Cannot enter parcel: banned">
-		Masz wzbroniony wstęp na tą posiadłości (ban).
-	</notification>
-	<notification name="Cannot enter parcel: not on access list">
-		Nie masz dostępu do posiadłości, nie jesteś na liście dostępu.
-	</notification>
-	<notification name="VoiceNotAllowed">
-		Nie masz pozwolenia na połączenie z rozmową [VOICE_CHANNEL_NAME].
-	</notification>
-	<notification name="VoiceCallGenericError">
-		Błąd podczas łączenia z rozmową [VOICE_CHANNEL_NAME]. Spróbuj póżniej.
-	</notification>
-	<notification name="UnsupportedCommandSLURL">
-		Nie można otworzyć wybranego SLurl.
-	</notification>
-	<notification name="BlockedSLURL">
-		SLurl został otrzymany z niesprawdzonej przeglądarki i został zablokowany dla bezpieczeństwa.
-	</notification>
-	<notification name="ThrottledSLURL">
-		Wiele SLurlów zostało otrzymanych w krótkim czasie od niesprawdzonej przeglądarki.
-Zostaną zablokowane na kilka sekund dla bezpieczeństwa.
-	</notification>
-	<notification name="IMToast">
-		[MESSAGE]
-		<form name="form">
-			<button name="respondbutton" text="Odpowiedź"/>
-		</form>
-	</notification>
-	<notification name="ConfirmCloseAll">
-		Czy chcesz zamknąć wszystkie wiadomości IM?
-		<usetemplate ignoretext="Potwierdź, przed zamknięciem wszystkich wiadomości prywatnych (IM)." name="okcancelignore" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="AttachmentSaved">
-		Załącznik został zapisany.
-	</notification>
-	<notification name="UnableToFindHelpTopic">
-		Nie można znależć tematu pomocy dla tego elementu.
-	</notification>
-	<notification name="ObjectMediaFailure">
-		Błąd serwera: aktualizacja mediów nie powiodła się.
-&apos;[ERROR]&apos;
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="TextChatIsMutedByModerator">
-		Twój czat został wyciszony przez moderatora.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="VoiceIsMutedByModerator">
-		Twoja rozmowa głosowa została wyciszona przez moderatora.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="ConfirmClearTeleportHistory">
-		Czy na pewno chcesz usunąć historię teleportacji?
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
-	</notification>
-	<notification name="BottomTrayButtonCanNotBeShown">
-		Wybrany przycisk nie może zostać wyświetlony w tej chwili.
-Przycisk zostanie wyświetlony w przypadku dostatecznej ilości przestrzeni.
-	</notification>
-	<notification name="ShareNotification">
-		Zaznacz Rezydentów, z którymi chcesz się podzielić.
-	</notification>
-	<notification name="ShareItemsConfirmation">
-		Czy na pewno chcesz udostępnić następujące obiekty:
-
-&lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
-
-następującym Rezydentom:
-
-[RESIDENTS]
-		<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Ok"/>
-	</notification>
-	<notification name="ItemsShared">
-		Obiekty zostały udostępnione.
-	</notification>
-	<notification name="DeedToGroupFail">
-		Przekazanie grupie nie powiodło się.
-	</notification>
-	<notification name="AvatarRezNotification">
-		( [EXISTENCE] sekund w Second Life)
-Awatar &apos;[NAME]&apos; rozchmurzył się po [TIME] sekundach.
-	</notification>
-	<notification name="AvatarRezSelfBakedDoneNotification">
-		( [EXISTENCE] sekund w Second Life)
-You finished baking your outfit after [TIME] seconds.
-	</notification>
-	<notification name="AvatarRezSelfBakedUpdateNotification">
-		( [EXISTENCE] sekund w Second Life )
-Wysłano aktualizację wyglądu po [TIME] sekundach.
-[STATUS]
-	</notification>
-	<notification name="AvatarRezCloudNotification">
-		( [EXISTENCE] sekund w Second Life )
-Awatar &apos;[NAME]&apos; stał się chmurą.
-	</notification>
-	<notification name="AvatarRezArrivedNotification">
-		( [EXISTENCE] sekund w Second Life)
-Awatar &apos;[NAME]&apos; pojawił się.
-	</notification>
-	<notification name="AvatarRezLeftCloudNotification">
-		( [EXISTENCE] sekund w Second Life )
-Awatar &apos;[NAME]&apos; pozostał [TIME] sekund chmurą.
-	</notification>
-	<notification name="AvatarRezEnteredAppearanceNotification">
-		( [EXISTENCE] sekund w Second Life )
-Awatar &apos;[NAME]&apos; rozpoczÄ…Å‚ edycjÄ™ wyglÄ…du.
-	</notification>
-	<notification name="AvatarRezLeftAppearanceNotification">
-		( [EXISTENCE] sekund w Second Life )
-Awatar &apos;[NAME]&apos; opuścił edycję wyglądu.
-	</notification>
-	<notification name="NoConnect">
-		Występuje problem z połączeniem [PROTOCOL] [HOSTID].
-Proszę sprawdź swoją sieć i ustawienia firewall.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="NoVoiceConnect">
-		Występuje problem z Twoim połączniem głosowym:
-
-[HOSTID]
-
-Komunikacja głosowa nie będzie dostępna.
-Proszę sprawdź swoją sieć i ustawienia firewall.
-		<usetemplate name="okbutton" yestext="OK"/>
-	</notification>
-	<notification name="AvatarRezLeftNotification">
-		( [EXISTENCE] sekund w Second Life)
-Awatar &apos;[NAME]&apos; pozostał w pełni załadowany.
-	</notification>
-	<notification name="AvatarRezSelfBakedTextureUploadNotification">
-		( [EXISTENCE] sekund w Second Life )
-Zbakowane tekstury [RESOLUTION] dla &apos;[BODYREGION]&apos; zostały załadowane po[TIME] sekundach.
-	</notification>
-	<notification name="AvatarRezSelfBakedTextureUpdateNotification">
-		( [EXISTENCE] sekund w Second Life )
-Zbakowane tekstury zostały lokalnie zaktualizowane [RESOLUTION] dla &apos;[BODYREGION]&apos; po [TIME] sekundach.
-	</notification>
-	<notification name="ConfirmLeaveCall">
-		Czy jestes pewien/pewna, że chcesz zakończyć rozmowę?
-		<usetemplate ignoretext="Potwierdź zanim rozmowa głosowa zostanie zakończona" name="okcancelignore" notext="Nie" yestext="Tak"/>
-	</notification>
-	<notification name="ConfirmMuteAll">
-		Wybrano wyciszenie wszystkich uczestników rozmowy głosowej w grupie.
-To spowoduje również wyciszenie wszystkich Rezydentów, którzy dołączą póżniej do rozmowy, nawet jeśli zakończysz rozmowę.
-
-Wyciszyć wszystkich?
-		<usetemplate ignoretext="Potwierdź zanim zostaną wyciszeni wszyscy uczestnicy rozmowy głosowej w grupie" name="okcancelignore" notext="Anuluj" yestext="Ok"/>
-	</notification>
-	<notification label="Czat" name="HintChat">
-		W celu przylączenia się do rozmowy zacznij pisać w poniższym polu czatu.
-	</notification>
-	<notification label="Wstań" name="HintSit">
-		Aby wstać i opuścić pozycję siedzącą, kliknij przycisk Wstań.
-	</notification>
-	<notification label="Odkrywaj Åšwiat" name="HintDestinationGuide">
-		Destination Guide zawiera tysiące nowych miejsc do odkrycia. Wybierz lokalizację i teleportuj się aby rozpocząć zwiedzanie.
-	</notification>
-	<notification label="Schowek" name="HintSidePanel">
-		Schowek umożliwia szybki dostęp do Twojej Szafy, ubrań, profili i innych w panelu bocznym.
-	</notification>
-	<notification label="Ruch" name="HintMove">
-		Aby chodzić lub biegać, otwórz panel ruchu i użyj strzałek do nawigacji. Możesz także używać strzałek z klawiatury.
-	</notification>
-	<notification label="Wyświetlana nazwa" name="HintDisplayName">
-		Ustaw wyświetlaną nazwę, którą możesz zmieniać tutaj. Jest ona dodatkiem do unikatowej nazwy użytkownika, która nie może być zmieniona. Możesz zmienić sposób w jaki widzisz nazwy innych osób w Twoich Ustawieniach.
-	</notification>
-	<notification label="Ruch" name="HintMoveArrows">
-		Użyj przycisków ze strzałkami z klawiatury aby chodzić. Jeśli wciśniesz strzałkę &apos;do góry&apos; podwójnie, zaczniesz biec.
-	</notification>
-	<notification label="Widok" name="HintView">
-		To change your camera view, use the Orbit and Pan controls. Zresetuj widok poprzez wciśnięcie klawisza Esc lub chodzenie.
-	</notification>
-	<notification label="Szafa" name="HintInventory">
-		Sprawdź swoją Szafę aby znaleźć obiekty. Najnowsze obiekty mogą być łatwo odnalezione w zakładce Nowe obiekty.
-	</notification>
-	<notification label="Otrzymano L$!" name="HintLindenDollar">
-		Tutaj znajduje się Twoj bieżący bilans L$. Kliknij Kup aby kupić więcej L$.
-	</notification>
-	<notification name="PopupAttempt">
-		Wyskakujące okienko zostało zablokowane.
-		<form name="form">
-			<ignore name="ignore" text="Zezwól na wyskakujące okienka"/>
-			<button name="open" text="Otwórz wyskakujące okno."/>
-		</form>
-	</notification>
-	<notification name="AuthRequest">
-		Strpna &apos;&lt;nolink&gt;[HOST_NAME]&lt;/nolink&gt;&apos; w domenie &apos;[REALM]&apos; wymaga nazwy użytkownika i hasła.
-		<form name="form">
-			<input name="username" text="Nazwa użytkownika"/>
-			<input name="password" text="Hasło"/>
-			<button name="ok" text="Wyślij"/>
-			<button name="cancel" text="Anuluj"/>
-		</form>
-	</notification>
-	<notification label="" name="ModeChange">
-		Zmiana trybu wymaga restartu.
-		<usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
-	</notification>
-	<notification label="" name="NoClassifieds">
-		Tworzenie i edycja reklam jest możliwa tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
-		<usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
-	</notification>
-	<notification label="" name="NoGroupInfo">
-		Tworzenie i edycja grup jest możliwa tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
-		<usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
-	</notification>
-	<notification label="" name="NoPicks">
-		Tworzenie i edycja Ulubionych jest możliwa jedynie w trybie zaawansowanym. Czy chcesz się wylogować i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
-		<usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
-	</notification>
-	<notification label="" name="NoWorldMap">
-		Oglądanie mapy świata jest możliwe tylko w trybie zaawansowanym. Czy chcesz się wylogować i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
-		<usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
-	</notification>
-	<notification label="" name="NoVoiceCall">
-		Rozmowy głosowe są możliwe tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb?
-		<usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
-	</notification>
-	<notification label="" name="NoAvatarShare">
-		Udostępnienie jest możliwe tylko w trybie zaawansowanym. Czy chcesz wylogować się i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
-		<usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
-	</notification>
-	<notification label="" name="NoAvatarPay">
-		Płacenie innym Rezydentom jest możliwe tylko w trybie zaawansowanym. Czy chcesz się wylogować i zmienić tryb? Opcja wyboru trybu życia jest widoczna na ekranie logowania.
-		<usetemplate name="okcancelbuttons" notext="Nie zamykaj" yestext="Zamknij"/>
-	</notification>
-	<global name="UnsupportedCPU">
-		- Prędkość Twojego CPU nie spełnia minimalnych wymagań.
-	</global>
-	<global name="UnsupportedGLRequirements">
-		Wygląda na to, że Twój system nie spełnia wymagań sprzętowych [APP_NAME]. [APP_NAME] wymaga karty graficznej kompatybilnej z OpenGL z multiteksturami. Jeżeli masz taką kartę zainstaluj najnowsze sterowniki do niej i uaktualnienia systemu operacyjnego.
-
-Jeżeli wciąż masz problemy sprawdź: [SUPPORT_SITE].
-	</global>
-	<global name="UnsupportedCPUAmount">
-		796
-	</global>
-	<global name="UnsupportedRAMAmount">
-		510
-	</global>
-	<global name="UnsupportedGPU">
-		- Twoja karta graficzna nie spełnia minimalnych wymagań.
-	</global>
-	<global name="UnsupportedRAM">
-		- Pamięć Twojego systemu nie spełnia minimalnych wymagań.
-	</global>
-	<global name="You can only set your &apos;Home Location&apos; on your land or at a mainland Infohub.">
-		Jeśli jesteś właścicielem posiadłości, możesz ustawić na niej miejsce startu.
-W innym przypadku możesz poszukać na mapie miejsca oznaczone jako &quot;Infohub&quot;.
-	</global>
-	<global name="You died and have been teleported to your home location">
-		Nastąpiła śmierć i teleportacja do Miejsca Startu.
-	</global>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/pl/panel_adhoc_control_panel.xml
deleted file mode 100644
index ba0c85e4ef4811297922b339dd327d344648224d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="call_btn_panel">
-			<button label="Dzwoń" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Zakończ rozmowę" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Przełączniki głosu" name="voice_ctrls_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/pl/panel_bottomtray.xml
deleted file mode 100644
index f49d8209382702c24ad4cfb2d1bca5851cc2b494..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_bottomtray.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
-	<string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
-	<string name="SpeakBtnToolTip" value="Włącza/wyłącza mikrofon"/>
-	<string name="VoiceControlBtnToolTip" value="Pokazuje/Ukrywa panel kontroli głosu"/>
-	<layout_stack name="toolbar_stack">
-		<layout_panel name="gesture_panel">
-			<gesture_combo_list label="Gesturki" name="Gesture" tool_tip="Pokazuje/Ukrywa gesturki"/>
-		</layout_panel>
-		<layout_panel name="cam_panel">
-			<bottomtray_button label="Widok" name="camera_btn" tool_tip="Pokaż/Ukryj ustawienia kamery"/>
-		</layout_panel>
-		<layout_panel name="avatar_and_destinations_panel">
-			<bottomtray_button label="Atrakcje turystyczne" name="destination_btn" tool_tip="Pokaż okno dotyczące ludzi"/>
-		</layout_panel>
-		<layout_panel name="avatar_and_destinations_panel">
-			<bottomtray_button label="Mój awatar" name="avatar_btn"/>
-		</layout_panel>
-		<layout_panel name="people_panel">
-			<bottomtray_button label="Ludzie" name="show_people_button" tool_tip="Pokazuje okno dotyczÄ…ce ludzi"/>
-		</layout_panel>
-		<layout_panel name="profile_panel">
-			<bottomtray_button label="Profil" name="show_profile_btn" tool_tip="Pokazuje okno profilu."/>
-		</layout_panel>
-		<layout_panel name="howto_panel">
-			<bottomtray_button label="POMOC" name="show_help_btn" tool_tip="Otwiera temat pomocy Second Life"/>
-		</layout_panel>
-		<layout_panel name="im_well_panel">
-			<chiclet_im_well name="im_well">
-				<button name="Unread IM messages" tool_tip="Rozmowy"/>
-			</chiclet_im_well>
-		</layout_panel>
-		<layout_panel name="notification_well_panel">
-			<chiclet_notification name="notification_well">
-				<button name="Unread" tool_tip="Ogłoszenia"/>
-			</chiclet_notification>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/pl/panel_group_control_panel.xml
deleted file mode 100644
index 074f572a4c9a3a7c593cfe152d681337e00db29c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_group_control_panel.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="group_info_btn_panel">
-			<button label="Grupa" name="group_info_btn"/>
-		</layout_panel>
-		<layout_panel name="call_btn_panel">
-			<button label="Dzwoń" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Zakończ rozmowę" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Otwórz kontroler głosu" name="voice_ctrls_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/pl/panel_im_control_panel.xml
deleted file mode 100644
index 4aadd3b93b24d3c1203d14f246dadeb20a625773..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="button_stack">
-		<layout_panel name="view_profile_btn_panel">
-			<button label="Profil" name="view_profile_btn"/>
-		</layout_panel>
-		<layout_panel name="add_friend_btn_panel">
-			<button label="Poznaj" name="add_friend_btn"/>
-		</layout_panel>
-		<layout_panel name="teleport_btn_panel">
-			<button label="Teleportuj" name="teleport_btn" tool_tip="Teleportuj"/>
-		</layout_panel>
-		<layout_panel name="share_btn_panel">
-			<button label="Udostępnij" name="share_btn"/>
-		</layout_panel>
-		<layout_panel name="pay_btn_panel">
-			<button label="Zapłać" name="pay_btn"/>
-		</layout_panel>
-		<layout_panel name="call_btn_panel">
-			<button label="Dzwoń" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Zakończ rozmowę" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Przełączniki głosu" name="voice_ctrls_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_login.xml b/indra/newview/skins/minimal/xui/pl/panel_login.xml
deleted file mode 100644
index dc8e7399af15b2129f95fc182df736de6cf1f1c1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_login.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
-	<panel.string name="forgot_password_url">
-		http://secondlife.com/account/request.php
-	</panel.string>
-	<layout_stack name="login_widgets">
-		<layout_panel name="login">
-			<text name="username_text">
-				Użytkownik:
-			</text>
-			<combo_box name="username_combo" tool_tip="Nazwę użytkownika wybierasz przy rejestracji, np. bobsmith12 lub Steller Sunshine"/>
-			<text name="password_text">
-				Hasło:
-			</text>
-			<check_box label="Zapamiętaj hasło" name="remember_check"/>
-			<button label="Połącz" name="connect_btn"/>
-			<text name="mode_selection_text">
-				Tryb życia:
-			</text>
-			<combo_box name="mode_combo" tool_tip="Wybierz tryb życia. Wybierz tryb turystyczny dla łatwego zwiedzania i czatowania. Wybierz tryb zaawansowany aby mieć dostęp do większej ilości opcji.">
-				<combo_box.item label="Turystyczny" name="Basic"/>
-				<combo_box.item label="Zaawansowany" name="Advanced"/>
-			</combo_box>
-			<text name="start_location_text">
-				Rozpocznij w:
-			</text>
-			<combo_box name="start_location_combo">
-				<combo_box.item label="Ostatnie Miejsce" name="MyLastLocation"/>
-				<combo_box.item label="Moje Miejsce Startu" name="MyHome"/>
-				<combo_box.item label="&lt;Wpisz Region&gt;" name="Typeregionname"/>
-			</combo_box>
-		</layout_panel>
-		<layout_panel name="links">
-			<text name="create_new_account_text">
-				Utwórz nowe konto
-			</text>
-			<text name="forgot_password_text">
-				Zapomniałeś swojej nazwy użytkownika lub hasła?
-			</text>
-			<text name="login_help">
-				Potrzebujesz pomocy z logowaniem siÄ™?
-			</text>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/pl/panel_navigation_bar.xml
deleted file mode 100644
index b01e686c4193476fddda1f038ecd0c9e369d1112..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="Wróć do poprzedniej lokalizacji"/>
-		<pull_button name="forward_btn" tool_tip="Idź do następnej lokalizacji"/>
-		<button name="home_btn" tool_tip="Teleportuj do miejsca startu"/>
-		<location_input label="Lokalizacja" name="location_combo"/>
-		<search_combo_box label="Szukaj" name="search_combo_box" tool_tip="Szukaj">
-			<combo_editor label="Szukaj [SECOND_LIFE]" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="Przeciągnij swoje landmarki tutaj by szybko dostać się do swoich ulubionych miejsc w Second Life!">
-		<label name="favorites_bar_label" tool_tip="Przeciągnij swoje landmarki tutaj by szybko dostać się do swoich ulubionych miejsc w Second Life!">
-			Pasek Ulubionych
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="Pokaż więcej Moich Ulubionych"/>
-	</favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_people.xml b/indra/newview/skins/minimal/xui/pl/panel_people.xml
deleted file mode 100644
index 3b3aaa0987ce7e912470aac45a06230c53a349c2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_people.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Ludzie" name="people_panel">
-	<string name="no_recent_people" value="Brak ostatnich rozmówców. Chcesz spotkać ludzi? Skorzystaj z przycisku &quot;Atrakcje turystyczne&quot; poniżej."/>
-	<string name="no_filtered_recent_people" value="Brak ostatnich rozmówców posiadających wskazane imię."/>
-	<string name="no_one_near" value="Nie ma nikogo w pobliżu. Chcesz spotkać ludzi? Skorzystaj z przycisku &quot;Atrakcje turystyczne&quot; poniżej."/>
-	<string name="no_one_filtered_near" value="Nie ma nikogo o wskazanym imieniu w pobliżu."/>
-	<string name="no_friends_online" value="Brak dostępnych znajomych"/>
-	<string name="no_friends" value="Brak znajomych"/>
-	<string name="no_friends_msg">
-		Kliknij prawym przyciskiem na Rezydenta aby dodać go do listy znajomych.
-Chcesz spotkać ludzi? Skorzystaj z przycisku &quot;Atrakcje turystyczne&quot; poniżej.
-	</string>
-	<string name="no_filtered_friends_msg">
-		Nie znaleziono tego czego szukasz? Skorzystaj z przycisku &quot;Atrakcje turystyczne&quot; poniżej.
-	</string>
-	<string name="people_filter_label" value="Filtruj ludzi"/>
-	<string name="groups_filter_label" value="Filtruj grupy"/>
-	<string name="no_filtered_groups_msg" value="Nie znaleziono tego czego szukasz? Spróbuj [secondlife:///app/search/groups/[SEARCH_TERM] Szukaj]."/>
-	<string name="no_groups_msg" value="Chcesz dołączyć do grup? Spróbuj [secondlife:///app/search/groups Szukaj]."/>
-	<string name="MiniMapToolTipMsg" value="[REGION](Podwójne kliknięcie otwiera mapę, wciśnij Shift i przeciągnij myszką aby przesunąć)"/>
-	<string name="AltMiniMapToolTipMsg" value="[REGION](Podwójne kliknięcie aktywuje teleportację, wciśnij Shift i przeciągnij myszką aby przesunąć)"/>
-	<filter_editor label="Filtr" name="filter_input"/>
-	<tab_container name="tabs">
-		<panel label="W POBLIŻU" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="nearby_view_sort_btn" tool_tip="Opcje"/>
-				<button name="add_friend_btn" tool_tip="Dodaj wybranego Rezydenta do znajomych"/>
-			</panel>
-		</panel>
-		<panel label="ZNAJOMI" name="friends_panel">
-			<accordion name="friends_accordion">
-				<accordion_tab name="tab_online" title="Dostępni"/>
-				<accordion_tab name="tab_all" title="Wszyscy"/>
-			</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="Pokaż opcje dodatkowe"/>
-					</layout_panel>
-					<layout_panel name="add_btn_panel">
-						<button name="add_btn" tool_tip="Dodaj wybranego Rezydenta do znajomych"/>
-					</layout_panel>
-					<layout_panel name="trash_btn_panel">
-						<dnd_button name="del_btn" tool_tip="Usuń zaznaczoną osobę ze swojej listy znajomych"/>
-					</layout_panel>
-				</layout_stack>
-			</panel>
-		</panel>
-		<panel label="GRUPY" name="groups_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="groups_viewsort_btn" tool_tip="Opcje"/>
-				<button name="plus_btn" tool_tip="Dołącz do grupy/Stwórz nową grupę"/>
-				<button name="activate_btn" tool_tip="Aktywuj wybranÄ… grupÄ™"/>
-			</panel>
-		</panel>
-		<panel label="OSTATNIE" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<menu_button name="recent_viewsort_btn" tool_tip="Opcje"/>
-				<button name="add_friend_btn" tool_tip="Dodaj wybranego Rezydenta do znajomych"/>
-			</panel>
-		</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="Pokaż zdjęcie, grupy i inne informacje o Rezydencie"/>
-			</layout_panel>
-			<layout_panel name="im_btn_lp">
-				<button label="IM" name="im_btn" tool_tip="Otwórz wiadomości IM"/>
-			</layout_panel>
-			<layout_panel name="call_btn_lp">
-				<button label="Dzwoń" name="call_btn" tool_tip="Zadzwoń do tego Rezydenta"/>
-			</layout_panel>
-			<layout_panel name="share_btn_lp">
-				<button label="Udostępnij" name="share_btn" tool_tip="Udostępnij obiekt z Szafy"/>
-			</layout_panel>
-			<layout_panel name="teleport_btn_lp">
-				<button label="Teleportuj" name="teleport_btn" tool_tip="Zaproponuj teleport"/>
-			</layout_panel>
-		</layout_stack>
-		<layout_stack name="bottom_bar_ls1">
-			<layout_panel name="group_info_btn_lp">
-				<button label="Profil grupy" name="group_info_btn" tool_tip="Pokaż informacje o grupie"/>
-			</layout_panel>
-			<layout_panel name="chat_btn_lp">
-				<button label="Czat grupy" name="chat_btn" tool_tip="Otwórz sesję czatu"/>
-			</layout_panel>
-			<layout_panel name="group_call_btn_lp">
-				<button label="Rozmowa głosowa w grupie" name="group_call_btn" tool_tip="Rozmowa głosowa w tej grupie"/>
-			</layout_panel>
-		</layout_stack>
-	</panel>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/pl/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 95cd7c53dc357fb92c74f2134f622536642357a6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
-	<text name="sidetray_tab_title" value="Schowek"/>
-	<button name="undock" tool_tip="Odłącz"/>
-	<button name="dock" tool_tip="Przyłącz"/>
-	<button name="show_help" tool_tip="Pomoc"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pl/panel_status_bar.xml b/indra/newview/skins/minimal/xui/pl/panel_status_bar.xml
deleted file mode 100644
index 6aa0d27bb80881b6f0b102f7b8c8847251da9846..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pl/panel_status_bar.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
-	<panel.string name="StatBarDaysOfWeek">
-		Niedziela:Poniedziałek:Wtorek:Środa:Czwartek:Piątek:Sobota
-	</panel.string>
-	<panel.string name="StatBarMonthsOfYear">
-		Styczeń:Luty:Marzec:Kwiecień:Maj:Czerwiec:Lipiec:Styczeń:Wrzesień:Październik:Listopad:Grudzień
-	</panel.string>
-	<panel.string name="packet_loss_tooltip">
-		Utracone pakiety
-	</panel.string>
-	<panel.string name="bandwidth_tooltip">
-		Przepustowość
-	</panel.string>
-	<panel.string name="time">
-		[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-	</panel.string>
-	<panel.string name="timeTooltip">
-		[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-	</panel.string>
-	<panel.string name="buycurrencylabel">
-		L$ [AMT]
-	</panel.string>
-	<panel name="balance_bg">
-		<text name="balance" tool_tip="Kliknij aby odświeżyć bilans L$" value="L$20"/>
-		<button label="Kup L$" name="buyL" tool_tip="Kliknij aby kupić więcej L$"/>
-	</panel>
-	<text name="TimeText" tool_tip="Obecny czas (Pacyficzny)">
-		24:00 AM PST
-	</text>
-	<button name="media_toggle_btn" tool_tip="Start/Stop wszystkie media (Muzyka, Video, WWW)"/>
-	<button name="volume_btn" tool_tip="Regulacja głośności"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/floater_camera.xml b/indra/newview/skins/minimal/xui/pt/floater_camera.xml
deleted file mode 100644
index 4f3729c6231702ccdcd02f133468838076d31d6b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_camera.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="camera_floater" title="">
-	<floater.string name="rotate_tooltip">
-		Girar a Câmera ao redor do Foco
-	</floater.string>
-	<floater.string name="zoom_tooltip">
-		Aproximar a Câmera in direção ao Foco
-	</floater.string>
-	<floater.string name="move_tooltip">
-		Mover a Câmera para Cima e para Baixo, para a Esquerda e para a Direita
-	</floater.string>
-	<floater.string name="camera_modes_title">
-		Modos de câmera
-	</floater.string>
-	<floater.string name="pan_mode_title">
-		Pan zoom orbital
-	</floater.string>
-	<floater.string name="presets_mode_title">
-		Ângulos predefinidos
-	</floater.string>
-	<floater.string name="free_mode_title">
-		Visualizar objeto
-	</floater.string>
-	<panel name="controls">
-		<panel name="preset_views_list">
-			<panel_camera_item name="front_view">
-				<panel_camera_item.text name="front_view_text">
-					Vista frontal
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="group_view">
-				<panel_camera_item.text name="side_view_text">
-					Vista lateral
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="rear_view">
-				<panel_camera_item.text name="rear_view_text">
-					Vista de trás
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="camera_modes_list">
-			<panel_camera_item name="object_view">
-				<panel_camera_item.text name="object_view_text">
-					Vista de objetos
-				</panel_camera_item.text>
-			</panel_camera_item>
-			<panel_camera_item name="mouselook_view">
-				<panel_camera_item.text name="mouselook_view_text">
-					Vista do mouse
-				</panel_camera_item.text>
-			</panel_camera_item>
-		</panel>
-		<panel name="zoom" tool_tip="Aproximar a Câmera in direção ao Foco">
-			<joystick_rotate name="cam_rotate_stick" tool_tip="Girar câmera ao redor do foco"/>
-			<slider_bar name="zoom_slider" tool_tip="Zoom de câmera para focalizar"/>
-			<joystick_track name="cam_track_stick" tool_tip="Move a câmera para cima e para baixo, direita e esquerda"/>
-		</panel>
-	</panel>
-	<panel name="buttons">
-		<button label="" name="presets_btn" tool_tip="Ângulos predefinidos"/>
-		<button label="" name="pan_btn" tool_tip="Pan zoom orbital"/>
-		<button label="" name="avatarview_btn" tool_tip="Modos de câmera"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/floater_help_browser.xml b/indra/newview/skins/minimal/xui/pt/floater_help_browser.xml
deleted file mode 100644
index 11428ff6516e7661ea35be08558086d5770bc235..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_help_browser.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_help_browser" title="COMO">
-	<floater.string name="loading_text">
-		Carregando...
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="external_controls"/>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/floater_media_browser.xml b/indra/newview/skins/minimal/xui/pt/floater_media_browser.xml
deleted file mode 100644
index da7428007e5b1e27f41e8b040940bb910d796662..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_media_browser.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="NAVEGADOR DE MÍDIA">
-	<floater.string name="home_page_url">
-		http://www.secondlife.com
-	</floater.string>
-	<floater.string name="support_page_url">
-		http://support.secondlife.com
-	</floater.string>
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button label="Atrás" name="back"/>
-			<button label="Frente" name="forward"/>
-			<button label="Recarregar" name="reload"/>
-			<button label="OK" name="go"/>
-		</layout_panel>
-		<layout_panel name="time_controls">
-			<button label="p/ trás" name="rewind"/>
-			<button label="parar" name="stop"/>
-			<button label="p/ frente" name="seek"/>
-		</layout_panel>
-		<layout_panel name="parcel_owner_controls">
-			<button label="Enviar esta página para lote" name="assign"/>
-		</layout_panel>
-		<layout_panel name="external_controls">
-			<button label="Abrir no meu navegador" name="open_browser"/>
-			<check_box label="Abrir sempre no meu navegador" name="open_always"/>
-			<button label="Fechar" name="close"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/floater_nearby_chat.xml b/indra/newview/skins/minimal/xui/pt/floater_nearby_chat.xml
deleted file mode 100644
index 60edfa505fe43df2dc76ab4db7e4daf5e66d526d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_nearby_chat.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="nearby_chat" title="Bate-papo local">
-	<check_box label="Traduzir bate-papo (via Google)" name="translate_chat_checkbox"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/floater_web_content.xml b/indra/newview/skins/minimal/xui/pt/floater_web_content.xml
deleted file mode 100644
index 5101579c6f21e8fde127f7e08487b5f6c50a29b4..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/floater_web_content.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_web_content" title="">
-	<layout_stack name="stack1">
-		<layout_panel name="nav_controls">
-			<button name="back" tool_tip="Navegar para trás"/>
-			<button name="forward" tool_tip="Navegar para frente"/>
-			<button name="stop" tool_tip="Parar a navegação"/>
-			<button name="reload" tool_tip="Recarregar página"/>
-			<combo_box name="address" tool_tip="Digite a URL aqui"/>
-			<icon name="media_secure_lock_flag" tool_tip="Navegação segura"/>
-			<button name="popexternal" tool_tip="Abrir a URL atual no navegador do seu computador"/>
-		</layout_panel>
-	</layout_stack>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/inspect_avatar.xml b/indra/newview/skins/minimal/xui/pt/inspect_avatar.xml
deleted file mode 100644
index a199c58c152ebbe58c9ad5de78a8044ff1d85f6b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/inspect_avatar.xml
+++ /dev/null
@@ -1,24 +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="inspect_avatar">
-	<string name="Subtitle">
-		[IDADE]
-	</string>
-	<string name="Details">
-		[PERFIL_SL]
-	</string>
-	<text name="user_details">
-		This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
-	</text>
-	<slider name="volume_slider" tool_tip="Volume de Voz" value="0.5"/>
-	<button label="Adicionar amigo" name="add_friend_btn"/>
-	<button label="MI" name="im_btn"/>
-	<button label="Perfil" name="view_profile_btn"/>
-	<panel name="moderator_panel">
-		<button label="Disabilitar Voz" name="disable_voice"/>
-		<button label="Habilitar Voz" name="enable_voice"/>
-	</panel>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/inspect_object.xml b/indra/newview/skins/minimal/xui/pt/inspect_object.xml
deleted file mode 100644
index b72de7038d20cff5f1d70e596fe2fcdbd7d5394c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/inspect_object.xml
+++ /dev/null
@@ -1,41 +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="inspect_object">
-	<string name="Creator">
-		Autor: [CREATOR]
-	</string>
-	<string name="CreatorAndOwner">
-		Autor [CREATOR]
-Proprietário [OWNER]
-	</string>
-	<string name="Price">
-		L$[AMOUNT]
-	</string>
-	<string name="PriceFree">
-		Grátis!
-	</string>
-	<string name="Touch">
-		Tocar
-	</string>
-	<string name="Sit">
-		Sentar
-	</string>
-	<text name="object_name" value="Test Object Name That Is actually two lines and Really Long"/>
-	<text name="price_text">
-		L$30.000
-	</text>
-	<text name="object_description">
-		This is a really long description for an object being as how it is at least 80 characters in length and so but maybe more like 120 at this point. Who knows, really?
-	</text>
-	<button label="Comprar" name="buy_btn"/>
-	<button label="Pagar" name="pay_btn"/>
-	<button label="Pegar uma cópia" name="take_free_copy_btn"/>
-	<button label="Tocar" name="touch_btn"/>
-	<button label="Sentar" name="sit_btn"/>
-	<button label="Abrir" name="open_btn"/>
-	<icon name="secure_browsing" tool_tip="Navegação segura"/>
-	<button label="Mais" name="more_info_btn"/>
-</floater>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_add_wearable_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_add_wearable_gear.xml
deleted file mode 100644
index 4b81276ab34c6b7f1ef3d8c8f40aff26992bb8c3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_add_wearable_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Add Wearable Gear Menu">
-	<menu_item_check label="Ordenar por mais recente" name="sort_by_most_recent"/>
-	<menu_item_check label="Ordenar por nome" name="sort_by_name"/>
-	<menu_item_check label="Ordenar por tipo" name="sort_by_type"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_attachment_other.xml b/indra/newview/skins/minimal/xui/pt/menu_attachment_other.xml
deleted file mode 100644
index cfd69158bca1d8df952cac54ef469299e22f4cd5..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_attachment_other.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_avatar_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="Ver perfil" name="Profile..."/>
-	<menu_item_call label="Adicionar amigo..." name="Add Friend"/>
-	<menu_item_call label="MI" name="Send IM..."/>
-	<menu_item_call label="Ligar" name="Call"/>
-	<menu_item_call label="Convidar para entrar no grupo" name="Invite..."/>
-	<menu_item_call label="Bloquear" name="Avatar Mute"/>
-	<menu_item_call label="Denunciar" name="abuse"/>
-	<menu_item_call label="Congelar" name="Freeze..."/>
-	<menu_item_call label="Ejetar" name="Eject..."/>
-	<menu_item_call label="Depurar texturas" name="Debug..."/>
-	<menu_item_call label="Mais zoom" name="Zoom In"/>
-	<menu_item_call label="Pagar" name="Pay..."/>
-	<menu_item_call label="Perfil do objeto" name="Object Inspect"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_attachment_self.xml b/indra/newview/skins/minimal/xui/pt/menu_attachment_self.xml
deleted file mode 100644
index 09060cf3aeebee94d425b98017bd24a6785ec6b0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_attachment_self.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Attachment Pie">
-	<menu_item_call label="Tocar" name="Attachment Object Touch"/>
-	<menu_item_call label="Editar" name="Edit..."/>
-	<menu_item_call label="Tirar" name="Detach"/>
-	<menu_item_call label="Sentar" name="Sit Down Here"/>
-	<menu_item_call label="Ficar de pé" name="Stand Up"/>
-	<menu_item_call label="Trocar de look" name="Change Outfit"/>
-	<menu_item_call label="Editar meu look" name="Edit Outfit"/>
-	<menu_item_call label="Editar meu corpo" name="Edit My Shape"/>
-	<menu_item_call label="Meus amigos" name="Friends..."/>
-	<menu_item_call label="Meus grupos" name="Groups..."/>
-	<menu_item_call label="Meu perfil" name="Profile..."/>
-	<menu_item_call label="Depurar texturas" name="Debug..."/>
-	<menu_item_call label="Largar" name="Drop"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_avatar_icon.xml b/indra/newview/skins/minimal/xui/pt/menu_avatar_icon.xml
deleted file mode 100644
index beba969b7ef529e7641eee5d971226c40cc73655..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_avatar_icon.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Avatar Icon Menu">
-	<menu_item_call label="Ver perfil" name="Show Profile"/>
-	<menu_item_call label="Enviar MI..." name="Send IM"/>
-	<menu_item_call label="Adicionar amigo..." name="Add Friend"/>
-	<menu_item_call label="Remover amigo..." name="Remove Friend"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_avatar_other.xml b/indra/newview/skins/minimal/xui/pt/menu_avatar_other.xml
deleted file mode 100644
index a4a26144c7974061f046863b7da722af65a25d8d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_avatar_other.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- *NOTE: See also menu_attachment_other.xml -->
-<context_menu name="Avatar Pie">
-	<menu_item_call label="Ver perfil" name="Profile..."/>
-	<menu_item_call label="Adicionar amigo..." name="Add Friend"/>
-	<menu_item_call label="MI" name="Send IM..."/>
-	<menu_item_call label="Ligar" name="Call"/>
-	<menu_item_call label="Convidar para entrar no grupo" name="Invite..."/>
-	<menu_item_call label="Bloquear" name="Avatar Mute"/>
-	<menu_item_call label="Denunciar" name="abuse"/>
-	<menu_item_call label="Congelar" name="Freeze..."/>
-	<menu_item_call label="Ejetar" name="Eject..."/>
-	<menu_item_call label="Depurar texturas" name="Debug..."/>
-	<menu_item_call label="Mais zoom" name="Zoom In"/>
-	<menu_item_call label="Pagar" name="Pay..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_avatar_self.xml b/indra/newview/skins/minimal/xui/pt/menu_avatar_self.xml
deleted file mode 100644
index 6e203d5a259329db5a39691d7653089f0b478b09..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_avatar_self.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Self Pie">
-	<menu_item_call label="Sentar" name="Sit Down Here"/>
-	<menu_item_call label="Ficar de pé" name="Stand Up"/>
-	<context_menu label="Tirar" name="Take Off &gt;">
-		<context_menu label="Roupa" name="Clothes &gt;">
-			<menu_item_call label="Camisa" name="Shirt"/>
-			<menu_item_call label="Calças" name="Pants"/>
-			<menu_item_call label="Saia" name="Skirt"/>
-			<menu_item_call label="Sapatos" name="Shoes"/>
-			<menu_item_call label="Meias" name="Socks"/>
-			<menu_item_call label="Jaqueta" name="Jacket"/>
-			<menu_item_call label="Luvas" name="Gloves"/>
-			<menu_item_call label="Camiseta" name="Self Undershirt"/>
-			<menu_item_call label="Roupa de baixo" name="Self Underpants"/>
-			<menu_item_call label="Tatuagem" name="Self Tattoo"/>
-			<menu_item_call label="Alpha" name="Self Alpha"/>
-			<menu_item_call label="Todas as roupas" name="All Clothes"/>
-		</context_menu>
-		<context_menu label="HUD" name="Object Detach HUD"/>
-		<context_menu label="Tirar" name="Object Detach"/>
-		<menu_item_call label="Tirar tudo" name="Detach All"/>
-	</context_menu>
-	<menu_item_call label="Trocar de look" name="Chenge Outfit"/>
-	<menu_item_call label="Editar meu look" name="Edit Outfit"/>
-	<menu_item_call label="Editar meu corpo" name="Edit My Shape"/>
-	<menu_item_call label="Meus amigos" name="Friends..."/>
-	<menu_item_call label="Meus grupos" name="Groups..."/>
-	<menu_item_call label="Meu perfil" name="Profile..."/>
-	<menu_item_call label="Depurar texturas" name="Debug..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_bottomtray.xml b/indra/newview/skins/minimal/xui/pt/menu_bottomtray.xml
deleted file mode 100644
index 479d02512fb5f7a620419657cfe82abce1af14bd..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_bottomtray.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_camera_move_controls_menu">
-	<menu_item_check label="Botão de gestos" name="ShowGestureButton"/>
-	<menu_item_check label="Botão de movimento" name="ShowMoveButton"/>
-	<menu_item_check label="Botão de ver" name="ShowCameraButton"/>
-	<menu_item_check label="Botão de fotos" name="ShowSnapshotButton"/>
-	<menu_item_check label="Botão da Barra lateral" name="ShowSidebarButton"/>
-	<menu_item_check label="Botão Construir" name="ShowBuildButton"/>
-	<menu_item_check label="Botão Buscar" name="ShowSearchButton"/>
-	<menu_item_check label="Botão Mapa" name="ShowWorldMapButton"/>
-	<menu_item_check label="Botão do Mini Mapa" name="ShowMiniMapButton"/>
-	<menu_item_call label="Cortar" name="NearbyChatBar_Cut"/>
-	<menu_item_call label="Copiar" name="NearbyChatBar_Copy"/>
-	<menu_item_call label="Colar" name="NearbyChatBar_Paste"/>
-	<menu_item_call label="Excluir" name="NearbyChatBar_Delete"/>
-	<menu_item_call label="Selecionar tudo" name="NearbyChatBar_Select_All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_attachment.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_attachment.xml
deleted file mode 100644
index 527e3af3c937ac7a4ac365108036b35ecf5ff638..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_attachment.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Attachment">
-	<menu_item_call label="Separar" name="detach"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_body_part.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_body_part.xml
deleted file mode 100644
index 704fd226eb8bb3d75dbbcfb2b7c3687d8cdb1983..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_body_part.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Body">
-	<menu_item_call label="Trocar" name="replace"/>
-	<menu_item_call label="Editar" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_clothing.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_clothing.xml
deleted file mode 100644
index 051323ae6aafab4f9f01fac000eac6cc0fc98473..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_clothing.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="COF Clothing">
-	<menu_item_call label="Tirar" name="take_off"/>
-	<menu_item_call label="Editar" name="edit"/>
-	<menu_item_call label="Trocar" name="replace"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_cof_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_cof_gear.xml
deleted file mode 100644
index 8716992a5e0389c3f1c0cdfba34f3c9e4bde2550..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_cof_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_edit.xml b/indra/newview/skins/minimal/xui/pt/menu_edit.xml
deleted file mode 100644
index ff431c9a21e6e58996bd4aff57b0f7a6f8c3fb62..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_edit.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu label="Editar" name="Edit">
-	<menu_item_call label="Desfazer" name="Undo"/>
-	<menu_item_call label="Repetir" name="Redo"/>
-	<menu_item_call label="Cortar" name="Cut"/>
-	<menu_item_call label="Copiar" name="Copy"/>
-	<menu_item_call label="Colar" name="Paste"/>
-	<menu_item_call label="Excluir" name="Delete"/>
-	<menu_item_call label="Replicar" name="Duplicate"/>
-	<menu_item_call label="Selecionar tudo" name="Select All"/>
-	<menu_item_call label="Desfazer seleção" name="Deselect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_favorites.xml b/indra/newview/skins/minimal/xui/pt/menu_favorites.xml
deleted file mode 100644
index 062820fbca31fcfd9a41904250f5f4c21afcf6f7..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_favorites.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Teletransportar" name="Teleport To Landmark"/>
-	<menu_item_call label="Ver/Editar marco" name="Landmark Open"/>
-	<menu_item_call label="Copiar SLurl" name="Copy slurl"/>
-	<menu_item_call label="Mostrar no mapa" name="Show On Map"/>
-	<menu_item_call label="Copiar" name="Landmark Copy"/>
-	<menu_item_call label="Colar" name="Landmark Paste"/>
-	<menu_item_call label="Excluir" name="Delete"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_gesture_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_gesture_gear.xml
deleted file mode 100644
index 70d8ae7a8e6b0ddfd530ce5c34b59bc5f61f9369..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_gesture_gear.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_gesture_gear">
-	<menu_item_call label="Adicionar/remover de favoritos" name="activate"/>
-	<menu_item_call label="Copiar" name="copy_gesture"/>
-	<menu_item_call label="Colar" name="paste"/>
-	<menu_item_call label="Copiar UUID" name="copy_uuid"/>
-	<menu_item_call label="Salvar para look atual" name="save_to_outfit"/>
-	<menu_item_call label="Editar" name="edit_gesture"/>
-	<menu_item_call label="Verificar" name="inspect"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_group_plus.xml b/indra/newview/skins/minimal/xui/pt/menu_group_plus.xml
deleted file mode 100644
index 1083845d688937e7d32f3d4b3d2c4e1bad00e353..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_group_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_call label="Entrar no grupo..." name="item_join"/>
-	<menu_item_call label="Novo grupo..." name="item_new"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_hide_navbar.xml b/indra/newview/skins/minimal/xui/pt/menu_hide_navbar.xml
deleted file mode 100644
index c2b063193ec5fc637c609bc48eccda1edc63d7f4..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_hide_navbar.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="hide_navbar_menu">
-	<menu_item_check label="Mostrar barra de navegação" name="ShowNavbarNavigationPanel"/>
-	<menu_item_check label="Mostrar barra de favoritos" name="ShowNavbarFavoritesPanel"/>
-	<menu_item_check label="Mostrar minibarra de localização" name="ShowMiniLocationPanel"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_im_well_button.xml b/indra/newview/skins/minimal/xui/pt/menu_im_well_button.xml
deleted file mode 100644
index 2d37cefd6fec5f8e3a4b84713252bec4a68a235e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/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/minimal/xui/pt/menu_imchiclet_adhoc.xml b/indra/newview/skins/minimal/xui/pt/menu_imchiclet_adhoc.xml
deleted file mode 100644
index ead949ba1311e4460629a38e169186b6f640d67b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_adhoc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet AdHoc Menu">
-	<menu_item_call label="Encerrar esta sessão" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_group.xml b/indra/newview/skins/minimal/xui/pt/menu_imchiclet_group.xml
deleted file mode 100644
index dd177d1b8daea4785dfd6502fe8e8d8c29d1a189..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet Group Menu">
-	<menu_item_call label="Sobre o grupo" name="Show Profile"/>
-	<menu_item_call label="Mostrar sessão" name="Chat"/>
-	<menu_item_call label="Encerrar esta sessão" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_p2p.xml b/indra/newview/skins/minimal/xui/pt/menu_imchiclet_p2p.xml
deleted file mode 100644
index d821b3ded0cc644c9e24539e25c43bda59e94b43..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_imchiclet_p2p.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="IMChiclet P2P Menu">
-	<menu_item_call label="Ver perfil" name="Show Profile"/>
-	<menu_item_call label="Adicionar amigo..." name="Add Friend"/>
-	<menu_item_call label="Mostrar sessão" name="Send IM"/>
-	<menu_item_call label="Encerrar esta sessão" name="End Session"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inspect_avatar_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_inspect_avatar_gear.xml
deleted file mode 100644
index 90b321e0a2f90d51d75d0803cba304f3ebabdd60..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inspect_avatar_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<toggleable_menu name="Gear Menu">
-	<menu_item_call label="Ver perfil" name="view_profile"/>
-	<menu_item_call label="Adicionar amigo..." name="add_friend"/>
-	<menu_item_call label="MI" name="im"/>
-	<menu_item_call label="Ligar" name="call"/>
-	<menu_item_call label="Teletransportar" name="teleport"/>
-	<menu_item_call label="Bloquear" name="block"/>
-	<menu_item_call label="Desbloquear" name="unblock"/>
-	<menu_item_call label="Denunciar" name="report"/>
-	<menu_item_call label="Congelar" name="freeze"/>
-	<menu_item_call label="Ejetar" name="eject"/>
-	<menu_item_call label="Chutar" name="kick"/>
-	<menu_item_call label="CSR" name="csr"/>
-	<menu_item_call label="Depurar texturas" name="debug"/>
-	<menu_item_call label="Localizar no mapa" name="find_on_map"/>
-	<menu_item_call label="Mais zoom" name="zoom_in"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inspect_object_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_inspect_object_gear.xml
deleted file mode 100644
index 184db26538def0c429cf94c9c994e7f4f9ada8db..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inspect_object_gear.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
-	<menu_item_call label="Tocar" name="touch"/>
-	<menu_item_call label="Sentar" name="sit"/>
-	<menu_item_call label="Pagar" name="pay"/>
-	<menu_item_call label="Comprar" name="buy"/>
-	<menu_item_call label="Pegar" name="take"/>
-	<menu_item_call label="Pegar uma cópia" name="take_copy"/>
-	<menu_item_call label="Abrir" name="open"/>
-	<menu_item_call label="Editar" name="edit"/>
-	<menu_item_call label="Vestir" name="wear"/>
-	<menu_item_call label="Adicionar" name="add"/>
-	<menu_item_call label="Denunciar" name="report"/>
-	<menu_item_call label="Bloquear" name="block"/>
-	<menu_item_call label="Mais zoom" name="zoom_in"/>
-	<menu_item_call label="Tirar" name="remove"/>
-	<menu_item_call label="Mais informações" name="more_info"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml
deleted file mode 100644
index c1f27e765d797fe223fc1042ae3940570ee0f400..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Self Pie">
-	<menu_item_call label="Sentar" name="Sit Down Here"/>
-	<menu_item_call label="Ficar de pé" name="Stand Up"/>
-	<menu_item_call label="Meus amigos" name="Friends..."/>
-	<menu_item_call label="Meu perfil" name="Profile..."/>
-	<menu_item_call label="Depurar texturas" name="Debug..."/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inv_offer_chiclet.xml b/indra/newview/skins/minimal/xui/pt/menu_inv_offer_chiclet.xml
deleted file mode 100644
index c404719c956a1a206693d9e5fdfc0961d1fe01e1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inv_offer_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="InvOfferChiclet Menu">
-	<menu_item_call label="Fechar" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inventory.xml b/indra/newview/skins/minimal/xui/pt/menu_inventory.xml
deleted file mode 100644
index 1b1efd3270448befc153a9a2b5fc728f541690ca..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inventory.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Compartilhar" name="Share"/>
-	<menu_item_call label="Comprar" name="Task Buy"/>
-	<menu_item_call label="Abrir" name="Task Open"/>
-	<menu_item_call label="Executar" name="Task Play"/>
-	<menu_item_call label="Propriedades" name="Task Properties"/>
-	<menu_item_call label="Renomear" name="Task Rename"/>
-	<menu_item_call label="Apagar" name="Task Remove"/>
-	<menu_item_call label="Limpar lixeira" name="Empty Trash"/>
-	<menu_item_call label="Limpar Achados &amp; perdidos" name="Empty Lost And Found"/>
-	<menu_item_call label="Nova pasta" name="New Folder"/>
-	<menu_item_call label="Novo script" name="New Script"/>
-	<menu_item_call label="Nova anotação" name="New Note"/>
-	<menu_item_call label="Novo gesto" name="New Gesture"/>
-	<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 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"/>
-		<menu_item_call label="Novas luvas" name="New Gloves"/>
-		<menu_item_call label="Nova anágua" name="New Undershirt"/>
-		<menu_item_call label="Nova roupa de baixo" name="New Underpants"/>
-		<menu_item_call label="Nova máscara alfa" name="New Alpha Mask"/>
-		<menu_item_call label="Nova tatuagem" name="New Tattoo"/>
-	</menu>
-	<menu label="Nova parte do corpo" name="New Body Parts">
-		<menu_item_call label="Nova forma" name="New Shape"/>
-		<menu_item_call label="Nova pele" name="New Skin"/>
-		<menu_item_call label="Novo cabelo" name="New Hair"/>
-		<menu_item_call label="Novos olhos" name="New Eyes"/>
-	</menu>
-	<menu label="Alterar fonte" name="Change Type">
-		<menu_item_call label="Padrão" name="Default"/>
-		<menu_item_call label="Luvas" name="Gloves"/>
-		<menu_item_call label="Jaqueta" name="Jacket"/>
-		<menu_item_call label="Calças" name="Pants"/>
-		<menu_item_call label="Silhueta" name="Shape"/>
-		<menu_item_call label="Sapatos" name="Shoes"/>
-		<menu_item_call label="Camisa" name="Shirt"/>
-		<menu_item_call label="Saia" name="Skirt"/>
-		<menu_item_call label="Roupa de baixo" name="Underpants"/>
-		<menu_item_call label="Camiseta" name="Undershirt"/>
-	</menu>
-	<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 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"/>
-	<menu_item_call label="Restaurar item" name="Restore Item"/>
-	<menu_item_call label="Abrir" name="Open"/>
-	<menu_item_call label="Abrir original" name="Open Original"/>
-	<menu_item_call label="Propriedades" name="Properties"/>
-	<menu_item_call label="Renomear" name="Rename"/>
-	<menu_item_call label="Copiar item UUID" name="Copy Asset UUID"/>
-	<menu_item_call label="Copiar" name="Copy"/>
-	<menu_item_call label="Colar" name="Paste"/>
-	<menu_item_call label="Colar como link" name="Paste As Link"/>
-	<menu_item_call label="Excluir" name="Remove Link"/>
-	<menu_item_call label="Apagar" name="Delete"/>
-	<menu_item_call label="Excluir pasta do sistema" name="Delete System Folder"/>
-	<menu_item_call label="Pasta conversa em conferência" name="Conference Chat Folder"/>
-	<menu_item_call label="Executar som" name="Sound Play"/>
-	<menu_item_call label="Sobre o marco" name="About Landmark"/>
-	<menu_item_call label="Executar animação" name="Animation Play"/>
-	<menu_item_call label="Executar áudio" name="Animation Audition"/>
-	<menu_item_call label="Mandar MI" name="Send Instant Message"/>
-	<menu_item_call label="Oferecer teletransporte..." name="Offer Teleport..."/>
-	<menu_item_call label="Bate-papo em conferência" name="Conference Chat"/>
-	<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="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"/>
-	<menu_item_call label="Editar" name="Wearable Edit"/>
-	<menu_item_call label="Adicionar" name="Wearable Add"/>
-	<menu_item_call label="Tirar" name="Take Off"/>
-	<menu_item_call label="--Sem opções--" name="--no options--"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inventory_add.xml b/indra/newview/skins/minimal/xui/pt/menu_inventory_add.xml
deleted file mode 100644
index 2723f39287d43544a58066c4b02ad5208d5088e4..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inventory_add.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
-	<menu label="Upload" name="upload">
-		<menu_item_call label="Imagem (L$[COST])..." name="Upload Image"/>
-		<menu_item_call label="Som (L$[COST])..." name="Upload Sound"/>
-		<menu_item_call label="Animação (L$[COST])..." name="Upload Animation"/>
-		<menu_item_call label="Volume (L$[COST] per file)..." name="Bulk Upload"/>
-		<menu_item_call label="Autorizações de upload padrão" name="perm prefs"/>
-	</menu>
-	<menu_item_call label="Nova pasta" name="New Folder"/>
-	<menu_item_call label="Novo script" name="New Script"/>
-	<menu_item_call label="Nova anotação" name="New Note"/>
-	<menu_item_call label="Novo gesto" name="New Gesture"/>
-	<menu label="Novas roupas" name="New Clothes">
-		<menu_item_call label="Nova camisa" name="New Shirt"/>
-		<menu_item_call label="Novas calças" name="New Pants"/>
-		<menu_item_call label="Novos sapatos" name="New Shoes"/>
-		<menu_item_call label="Novas meias" name="New Socks"/>
-		<menu_item_call label="Nova blusa" name="New Jacket"/>
-		<menu_item_call label="Nova saia" name="New Skirt"/>
-		<menu_item_call label="Novas luvas" name="New Gloves"/>
-		<menu_item_call label="Nova camiseta" name="New Undershirt"/>
-		<menu_item_call label="Novas roupa de baixo" name="New Underpants"/>
-		<menu_item_call label="Novo alpha" name="New Alpha"/>
-		<menu_item_call label="Nova tatuagem" name="New Tattoo"/>
-	</menu>
-	<menu label="Nova parte do corpo" name="New Body Parts">
-		<menu_item_call label="Nova forma" name="New Shape"/>
-		<menu_item_call label="Nova pele" name="New Skin"/>
-		<menu_item_call label="Novo cabelo" name="New Hair"/>
-		<menu_item_call label="Novos olhos" name="New Eyes"/>
-	</menu>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inventory_gear_default.xml b/indra/newview/skins/minimal/xui/pt/menu_inventory_gear_default.xml
deleted file mode 100644
index 3400578d9a939ce359d83ee7d1cbe115c1e5d966..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_inventory_gear_default.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="menu_gear_default">
-	<menu_item_call label="Nova janela de inventário" name="new_window"/>
-	<menu_item_check label="Ordenar por nome" name="sort_by_name"/>
-	<menu_item_check label="Ordenar por mais recente" name="sort_by_recent"/>
-	<menu_item_check label="Pastas do sistema no topo" name="sort_system_folders_to_top"/>
-	<menu_item_call label="Mostrar filtros" name="show_filters"/>
-	<menu_item_call label="Restabelecer filtros" name="reset_filters"/>
-	<menu_item_call label="Fechar todas as pastas" name="close_folders"/>
-	<menu_item_call label="Esvaziar achados e perdidos" name="empty_lostnfound"/>
-	<menu_item_call label="Salvar textura como" name="Save Texture As"/>
-	<menu_item_call label="Compartilhar" name="Share"/>
-	<menu_item_call label="Encontrar original" name="Find Original"/>
-	<menu_item_call label="Encontrar todos os links" name="Find All Links"/>
-	<menu_item_call label="Esvaziar lixeira" name="empty_trash"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_land.xml b/indra/newview/skins/minimal/xui/pt/menu_land.xml
deleted file mode 100644
index 9182ce321afab21db6190f0e29a8afec9dc4a70d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_land.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Land Pie">
-	<menu_item_call label="Sobre terrenos" name="Place Information..."/>
-	<menu_item_call label="Sentar aqui" name="Sit Here"/>
-	<menu_item_call label="Comprar este terreno" name="Land Buy"/>
-	<menu_item_call label="Comprar passe" name="Land Buy Pass"/>
-	<menu_item_call label="Construir" name="Create"/>
-	<menu_item_call label="Editar a topografia" name="Edit Terrain"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_landmark.xml b/indra/newview/skins/minimal/xui/pt/menu_landmark.xml
deleted file mode 100644
index 6accfebee7eab8e20ceadf0d54547337d2a4fa2e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_landmark.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="landmark_overflow_menu">
-	<menu_item_call label="Copiar SLurl" name="copy"/>
-	<menu_item_call label="Excluir" name="delete"/>
-	<menu_item_call label="Criar destaque" name="pick"/>
-	<menu_item_call label="Adicionar à barra de favoritos" name="add_to_favbar"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_login.xml b/indra/newview/skins/minimal/xui/pt/menu_login.xml
deleted file mode 100644
index 3dff3d7c8a96d76881d90f76718e9526c9572710..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_login.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Login Menu">
-	<menu label="Eu" name="File">
-		<menu_item_call label="Preferências" name="Preferences..."/>
-		<menu_item_call label="Sair do [APP_NAME]" name="Quit"/>
-	</menu>
-	<menu label="Ajuda" name="Help">
-		<menu_item_call label="Ajuda do [SECOND_LIFE]" name="Second Life Help"/>
-		<menu_item_call label="Sobre [APP_NAME]" name="About Second Life"/>
-	</menu>
-	<menu_item_check label="Exibir menu de depuração" name="Show Debug Menu"/>
-	<menu label="Depurar" name="Debug">
-		<menu_item_call label="Mostrar configurações" name="Debug Settings"/>
-		<menu_item_call label="Configurações da interface e cor" name="UI/Color Settings"/>
-		<menu label="Testes de UI" name="UI Tests"/>
-		<menu_item_call label="Definir tamanho da janela:" name="Set Window Size..."/>
-		<menu_item_call label="Mostrar TOS" name="TOS"/>
-		<menu_item_call label="Mostrar mensagem crítica" name="Critical"/>
-		<menu_item_call label="Teste de mídia do navegador" name="Web Browser Test"/>
-		<menu_item_call label="Teste de conteúdo web" name="Web Content Floater Test"/>
-		<menu_item_check label="Exibir seletor da grade" name="Show Grid Picker"/>
-		<menu_item_call label="Exibir painel de notificações" name="Show Notifications Console"/>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_mini_map.xml b/indra/newview/skins/minimal/xui/pt/menu_mini_map.xml
deleted file mode 100644
index 6a3fe55de52df5be09679231de600e69391e76ba..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_mini_map.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Zoom Perto" name="Zoom Close"/>
-	<menu_item_call label="Zoom Médio" name="Zoom Medium"/>
-	<menu_item_call label="Zoom Longe" name="Zoom Far"/>
-	<menu_item_call label="Zoom padrão" name="Zoom Default"/>
-	<menu_item_check label="Girar mapa" name="Rotate Map"/>
-	<menu_item_check label="Auto Center" name="Auto Center"/>
-	<menu_item_call label="Parar Acompanhamento" name="Stop Tracking"/>
-	<menu_item_call label="Mapa-múndi" name="World Map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_navbar.xml b/indra/newview/skins/minimal/xui/pt/menu_navbar.xml
deleted file mode 100644
index 57c1471de31699e1856bd9c9d2c1e04e34d36951..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_navbar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Navbar Menu">
-	<menu_item_check label="Mostrar coordenadas" name="Show Coordinates"/>
-	<menu_item_check label="Mostrar as propriedades do terreno" name="Show Parcel Properties"/>
-	<menu_item_call label="Marco" name="Landmark"/>
-	<menu_item_call label="Cortar" name="Cut"/>
-	<menu_item_call label="Copiar" name="Copy"/>
-	<menu_item_call label="Colar" name="Paste"/>
-	<menu_item_call label="Excluir" name="Delete"/>
-	<menu_item_call label="Selecionar tudo" name="Select All"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_nearby_chat.xml b/indra/newview/skins/minimal/xui/pt/menu_nearby_chat.xml
deleted file mode 100644
index f1ea83c837fe17c791490269328c5d8b7d39315e..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_nearby_chat.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="NearBy Chat Menu">
-	<menu_item_call label="Mostrar quem está aqui..." name="nearby_people"/>
-	<menu_item_check label="Mostrar texto bloqueado" name="muted_text"/>
-	<menu_item_check label="Mostrar ícones de amigos" name="show_buddy_icons"/>
-	<menu_item_check label="Mostrar nomes" name="show_names"/>
-	<menu_item_check label="Mostrar ícones e nomes" name="show_icons_and_names"/>
-	<menu_item_call label="Tamanho da fonte" name="font_size"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_notification_well_button.xml b/indra/newview/skins/minimal/xui/pt/menu_notification_well_button.xml
deleted file mode 100644
index 43ad4134ec114139c73a9e0831d9825c64b7f93a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_notification_well_button.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Notification Well Button Context Menu">
-	<menu_item_call label="Fechar tudo" name="Close All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_object.xml b/indra/newview/skins/minimal/xui/pt/menu_object.xml
deleted file mode 100644
index bf9485969987b7485e36fb531fad188c2aead187..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_object.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Object Pie">
-	<menu_item_call label="Tocar" name="Object Touch">
-		<menu_item_call.on_enable name="EnableTouch" parameter="Tocar"/>
-	</menu_item_call>
-	<menu_item_call label="Editar" name="Edit..."/>
-	<menu_item_call label="Construir" name="Build"/>
-	<menu_item_call label="Abrir" name="Open"/>
-	<menu_item_call label="Sentar aqui" name="Object Sit"/>
-	<menu_item_call label="Ficar de pé" name="Object Stand Up"/>
-	<menu_item_call label="Perfil do objeto" name="Object Inspect"/>
-	<menu_item_call label="Mais zoom" name="Zoom In"/>
-	<context_menu label="Colocar no(a)" name="Put On">
-		<menu_item_call label="Vestir" name="Wear"/>
-		<menu_item_call label="Adicionar" name="Add"/>
-		<context_menu label="Anexar" name="Object Attach"/>
-		<context_menu label="Anexar o HUD" name="Object Attach HUD"/>
-	</context_menu>
-	<context_menu label="Tirar" name="Remove">
-		<menu_item_call label="Denunciar abuso" name="Report Abuse..."/>
-		<menu_item_call label="Bloquear" name="Object Mute"/>
-		<menu_item_call label="Devolver" name="Return..."/>
-		<menu_item_call label="Excluir" name="Delete"/>
-	</context_menu>
-	<menu_item_call label="Pegar" name="Pie Object Take"/>
-	<menu_item_call label="Pegar uma cópia" name="Take Copy"/>
-	<menu_item_call label="Pagar" name="Pay..."/>
-	<menu_item_call label="Comprar" name="Buy..."/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_object_icon.xml b/indra/newview/skins/minimal/xui/pt/menu_object_icon.xml
deleted file mode 100644
index 7af760a6ee4c7ed140fd8bdf3eba2254dd1eed70..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_object_icon.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Object Icon Menu">
-	<menu_item_call label="Perfil do objeto..." name="Object Profile"/>
-	<menu_item_call label="Bloquear..." name="Block"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_outfit_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_outfit_gear.xml
deleted file mode 100644
index 11b3e653c66cc3b5734c5b3dfbadf97a81b5accb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_outfit_gear.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Outfit">
-	<menu_item_call label="Vestir - Substituir look atual" name="wear"/>
-	<menu_item_call label="Vestir - Adicionar ao look atual" name="wear_add"/>
-	<menu_item_call label="Tirar - Tirar do look atual" name="take_off"/>
-	<menu label="Roupas novas" name="New Clothes">
-		<menu_item_call label="Nova camisa" name="New Shirt"/>
-		<menu_item_call label="Novas calças" name="New Pants"/>
-		<menu_item_call label="Novos sapatos" name="New Shoes"/>
-		<menu_item_call label="Novas meias" name="New Socks"/>
-		<menu_item_call label="Nova blusa" name="New Jacket"/>
-		<menu_item_call label="Nova saia" name="New Skirt"/>
-		<menu_item_call label="Novas luvas" name="New Gloves"/>
-		<menu_item_call label="Nova camiseta" name="New Undershirt"/>
-		<menu_item_call label="Novas roupa de baixo" name="New Underpants"/>
-		<menu_item_call label="Novo alpha" name="New Alpha"/>
-		<menu_item_call label="Nova tatuagem" name="New Tattoo"/>
-	</menu>
-	<menu label="Nova parte do corpo" name="New Body Parts">
-		<menu_item_call label="Nova silhueta" name="New Shape"/>
-		<menu_item_call label="Nova pele" name="New Skin"/>
-		<menu_item_call label="Novo cabelo" name="New Hair"/>
-		<menu_item_call label="Novos olhos" name="New Eyes"/>
-	</menu>
-	<menu_item_call label="Renomear look" name="rename"/>
-	<menu_item_call label="Excluir visual" name="delete_outfit"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_outfit_tab.xml b/indra/newview/skins/minimal/xui/pt/menu_outfit_tab.xml
deleted file mode 100644
index 8db5e405b3189a6944c574b0534debceb44e2d02..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_outfit_tab.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit">
-	<menu_item_call label="Vestir - Substituir look atual" name="wear_replace"/>
-	<menu_item_call label="Vestir - Sem tirar look atual" name="wear_add"/>
-	<menu_item_call label="Tirar - Tirar do look atual" name="take_off"/>
-	<menu_item_call label="Editar look" name="edit"/>
-	<menu_item_call label="Renomear look" name="rename"/>
-	<menu_item_call label="Excluir visual" name="delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_participant_list.xml b/indra/newview/skins/minimal/xui/pt/menu_participant_list.xml
deleted file mode 100644
index 01f1d4ef8056fed91145dec7cc822d108a373a2d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_participant_list.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Participant List Context Menu">
-	<menu_item_check label="Ordenar por nome" name="SortByName"/>
-	<menu_item_check label="Ordenar por conversas mais recentes" name="SortByRecentSpeakers"/>
-	<menu_item_call label="Ver perfil" name="View Profile"/>
-	<menu_item_call label="Adicionar amigo..." name="Add 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_check label="Ver ícones de pessoas" name="View Icons"/>
-	<menu_item_check label="Bloquear voz" name="Block/Unblock"/>
-	<menu_item_check label="Bloquear texto" name="MuteText"/>
-	<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>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_friends_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_friends_view_sort.xml
deleted file mode 100644
index e7c325010fbe40a4ef29a6c2233179cca11ab181..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_friends_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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="Ver ícones de pessoas" name="view_icons"/>
-	<menu_item_check label="Autorizações de visualização dadas" name="view_permissions"/>
-	<menu_item_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_groups.xml b/indra/newview/skins/minimal/xui/pt/menu_people_groups.xml
deleted file mode 100644
index 9a924ad7b93d23e68b284b160d1345d45b4cafad..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_groups.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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="Ativar" name="Activate"/>
-	<menu_item_call label="Sair" name="Leave"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_groups_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_groups_view_sort.xml
deleted file mode 100644
index 86a9d2263f303840a4bdab8a4b3cf12cc390303c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_groups_view_sort.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_group_plus">
-	<menu_item_check label="Mostrar ícones de grupos" name="Display Group Icons"/>
-	<menu_item_call label="Sair do grupo selecionado" name="Leave Selected Group"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_nearby.xml b/indra/newview/skins/minimal/xui/pt/menu_people_nearby.xml
deleted file mode 100644
index b446a2fe81af14d3715688e821387716cb052f9a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_nearby.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?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="IM" 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/minimal/xui/pt/menu_people_nearby_multiselect.xml b/indra/newview/skins/minimal/xui/pt/menu_people_nearby_multiselect.xml
deleted file mode 100644
index 79edb96b1c67aa651c516ec5b5cb7fce0b99b6f3..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_nearby_multiselect.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?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"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_nearby_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_nearby_view_sort.xml
deleted file mode 100644
index 228ce46a319c9e6909544a3e6c76bdf67ccf2e35..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_nearby_view_sort.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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="Ver ícones de pessoas" name="view_icons"/>
-	<menu_item_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_people_recent_view_sort.xml b/indra/newview/skins/minimal/xui/pt/menu_people_recent_view_sort.xml
deleted file mode 100644
index f3b89e01cd53534936ae4436a356ce989765e089..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_people_recent_view_sort.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<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="Ver ícones de pessoas" name="view_icons"/>
-	<menu_item_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_picks.xml b/indra/newview/skins/minimal/xui/pt/menu_picks.xml
deleted file mode 100644
index 8b9e10fc02a4480bc38287c6c9297b7e82b2c739..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_picks.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Picks">
-	<menu_item_call label="Info" name="pick_info"/>
-	<menu_item_call label="Editar" name="pick_edit"/>
-	<menu_item_call label="Teletransportar" name="pick_teleport"/>
-	<menu_item_call label="Mapa" name="pick_map"/>
-	<menu_item_call label="Excluir" name="pick_delete"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_picks_plus.xml b/indra/newview/skins/minimal/xui/pt/menu_picks_plus.xml
deleted file mode 100644
index 95a7c052623144c31f43f65b7b07e31cb632df24..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_picks_plus.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="picks_plus_menu">
-	<menu_item_call label="Adicionar" name="create_pick"/>
-	<menu_item_call label="Novo anúncio" name="create_classified"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_place.xml b/indra/newview/skins/minimal/xui/pt/menu_place.xml
deleted file mode 100644
index 282ea20a7a198b235c96ed982393c5856dbd17da..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_place.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="place_overflow_menu">
-	<menu_item_call label="Criar marco" name="landmark"/>
-	<menu_item_call label="Criar destaque" name="pick"/>
-	<menu_item_call label="Comprar passe" name="pass"/>
-	<menu_item_call label="Editar" name="edit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_place_add_button.xml b/indra/newview/skins/minimal/xui/pt/menu_place_add_button.xml
deleted file mode 100644
index d099d04f8d683bece5dc024834557a2c3a4f049d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_place_add_button.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
-	<menu_item_call label="Adicionar pasta" name="add_folder"/>
-	<menu_item_call label="Adicionar marco" name="add_landmark"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_places_gear_folder.xml b/indra/newview/skins/minimal/xui/pt/menu_places_gear_folder.xml
deleted file mode 100644
index 2059a9ed2d6347a002fd4537b4af55943becbfd1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_places_gear_folder.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
-	<menu_item_call label="Adicionar marco" name="add_landmark"/>
-	<menu_item_call label="Adicionar pasta" name="add_folder"/>
-	<menu_item_call label="Cortar" name="cut"/>
-	<menu_item_call label="Copiar" name="copy_folder"/>
-	<menu_item_call label="Colar" name="paste"/>
-	<menu_item_call label="Renomear" name="rename"/>
-	<menu_item_call label="Excluir" name="delete"/>
-	<menu_item_call label="Expanda" name="expand"/>
-	<menu_item_call label="Recolher" name="collapse"/>
-	<menu_item_call label="Expandir todas as pastas" name="expand_all"/>
-	<menu_item_call label="Recolher todas as pastas" name="collapse_all"/>
-	<menu_item_check label="Ordenar por data" name="sort_by_date"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_places_gear_landmark.xml b/indra/newview/skins/minimal/xui/pt/menu_places_gear_landmark.xml
deleted file mode 100644
index 52a9d1373599270c009e8253e2beeb7ecffa9d34..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_places_gear_landmark.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
-	<menu_item_call label="Teletransportar" name="teleport"/>
-	<menu_item_call label="Mais informações" name="more_info"/>
-	<menu_item_call label="Mostrar no mapa" name="show_on_map"/>
-	<menu_item_call label="Adicionar marco" name="add_landmark"/>
-	<menu_item_call label="Adicionar pasta" name="add_folder"/>
-	<menu_item_call label="Cortar" name="cut"/>
-	<menu_item_call label="Copiar marco" name="copy_landmark"/>
-	<menu_item_call label="Copiar SLurl" name="copy_slurl"/>
-	<menu_item_call label="Colar" name="paste"/>
-	<menu_item_call label="Renomear" name="rename"/>
-	<menu_item_call label="Excluir" name="delete"/>
-	<menu_item_call label="Expandir todas as pastas" name="expand_all"/>
-	<menu_item_call label="Recolher todas as pastas" name="collapse_all"/>
-	<menu_item_check label="Ordenar por data" name="sort_by_date"/>
-	<menu_item_call label="Criar destaque" name="create_pick"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_profile_overflow.xml b/indra/newview/skins/minimal/xui/pt/menu_profile_overflow.xml
deleted file mode 100644
index d41ecbd75582571bfc0ad7d92e7747ca58a03d9f..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_profile_overflow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="profile_overflow_menu">
-	<menu_item_call label="Mapa" name="show_on_map"/>
-	<menu_item_call label="Pagar" name="pay"/>
-	<menu_item_call label="Compartilhar" name="share"/>
-	<menu_item_call label="Bloquear" name="block"/>
-	<menu_item_call label="Desbloquear" name="unblock"/>
-	<menu_item_call label="Chutar" name="kick"/>
-	<menu_item_call label="Congelar" name="freeze"/>
-	<menu_item_call label="Descongelar" name="unfreeze"/>
-	<menu_item_call label="CSR" name="csr"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_save_outfit.xml b/indra/newview/skins/minimal/xui/pt/menu_save_outfit.xml
deleted file mode 100644
index 61c6b9202f777a5b45ef84aebdeb81e8e8d08763..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_save_outfit.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="save_outfit_menu">
-	<menu_item_call label="Salvar" name="save_outfit"/>
-	<menu_item_call label="Salvar como" name="save_as_new_outfit"/>
-</toggleable_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_script_chiclet.xml b/indra/newview/skins/minimal/xui/pt/menu_script_chiclet.xml
deleted file mode 100644
index ccf3878e1420c7ef1a81c7a1662a95308c27332b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_script_chiclet.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="ScriptChiclet Menu">
-	<menu_item_call label="Fechar" name="Close"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_slurl.xml b/indra/newview/skins/minimal/xui/pt/menu_slurl.xml
deleted file mode 100644
index 6d4c84fc3c378efa94a9ce0e551b7fa38ab43d63..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_slurl.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
-	<menu_item_call label="Sobre a URL" name="about_url"/>
-	<menu_item_call label="Teletransporte para a URL" name="teleport_to_url"/>
-	<menu_item_call label="Mapa" name="show_on_map"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_teleport_history_gear.xml
deleted file mode 100644
index f034509be867218aa9b98c6e0589f0c92e5f036d..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_gear.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Teleport History Gear Context Menu">
-	<menu_item_call label="Expandir todas as pastas" name="Expand all folders"/>
-	<menu_item_call label="Recolher todas as pastas" name="Collapse all folders"/>
-	<menu_item_call label="Limpar histórico de teletransporte" name="Clear Teleport History"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_item.xml b/indra/newview/skins/minimal/xui/pt/menu_teleport_history_item.xml
deleted file mode 100644
index ec1e7a0950288a3ad0252f19826f2f10fb83e2eb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_item.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Teletransportar" name="Teleport"/>
-	<menu_item_call label="Mais informações" name="More Information"/>
-	<menu_item_call label="Copiar" name="CopyToClipboard"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_tab.xml b/indra/newview/skins/minimal/xui/pt/menu_teleport_history_tab.xml
deleted file mode 100644
index 6a633cf74ceaf99367799febca6c87459741045b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_teleport_history_tab.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Teleport History Item Context Menu">
-	<menu_item_call label="Abrir" name="TabOpen"/>
-	<menu_item_call label="Fechar" name="TabClose"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_text_editor.xml b/indra/newview/skins/minimal/xui/pt/menu_text_editor.xml
deleted file mode 100644
index 31c284c6eda0115daf759b1eac6ffc53ef328ce2..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_text_editor.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Text editor context menu">
-	<menu_item_call label="Cortar" name="Cut"/>
-	<menu_item_call label="Copiar" name="Copy"/>
-	<menu_item_call label="Colar" name="Paste"/>
-	<menu_item_call label="Excluir" name="Delete"/>
-	<menu_item_call label="Selecionar tudo" name="Select All"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_topinfobar.xml b/indra/newview/skins/minimal/xui/pt/menu_topinfobar.xml
deleted file mode 100644
index d9347950b12fe97f9617b9380fd6cff4b50935c1..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_topinfobar.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_topinfobar">
-	<menu_item_check label="Mostrar coordenadas" name="Show Coordinates"/>
-	<menu_item_check label="Mostrar as propriedades do terreno" name="Show Parcel Properties"/>
-	<menu_item_call label="Marco" name="Landmark"/>
-	<menu_item_call label="Copiar" name="Copy"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_agent.xml b/indra/newview/skins/minimal/xui/pt/menu_url_agent.xml
deleted file mode 100644
index ba5e0551248ad3a397771cffefcf83795d1a3f77..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_agent.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?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="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/minimal/xui/pt/menu_url_group.xml b/indra/newview/skins/minimal/xui/pt/menu_url_group.xml
deleted file mode 100644
index 5b67a69c9a1d59c62f645bcea31688040e1ba59c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_group.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Mostrar informações do grupo" name="show_group"/>
-	<menu_item_call label="Copiar SLurl 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/minimal/xui/pt/menu_url_http.xml b/indra/newview/skins/minimal/xui/pt/menu_url_http.xml
deleted file mode 100644
index e53a2572b82d976032a0683aff4a406175848cd8..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_http.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Abrir página da web" name="url_open"/>
-	<menu_item_call label="Abrir no navegador do SL" name="url_open_internal"/>
-	<menu_item_call label="Abrir no navegador externo" name="url_open_external"/>
-	<menu_item_call label="Copiar URL para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_inventory.xml b/indra/newview/skins/minimal/xui/pt/menu_url_inventory.xml
deleted file mode 100644
index 45c14355d073cd2d7259fddad10e6bcc8c855d4b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_inventory.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Mostrar item de inventário" name="show_item"/>
-	<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/minimal/xui/pt/menu_url_map.xml b/indra/newview/skins/minimal/xui/pt/menu_url_map.xml
deleted file mode 100644
index ba114cccaab11fbed0e4c776bc9efacc1e09fca6..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_map.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Mostrar no mapa" name="show_on_map"/>
-	<menu_item_call label="Teletransportar para este lugar" name="teleport_to_location"/>
-	<menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_objectim.xml b/indra/newview/skins/minimal/xui/pt/menu_url_objectim.xml
deleted file mode 100644
index c19744418150e45814733f21c0e37a743a42f321..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_objectim.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?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="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"/>
-	<menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_parcel.xml b/indra/newview/skins/minimal/xui/pt/menu_url_parcel.xml
deleted file mode 100644
index 6cc668bfd3d5b1d3b33d2043beda189d5044526b..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_parcel.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Mostrar informações sobre este lote" name="show_parcel"/>
-	<menu_item_call label="Mostrar no mapa" name="show_on_map"/>
-	<menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_slapp.xml b/indra/newview/skins/minimal/xui/pt/menu_url_slapp.xml
deleted file mode 100644
index d0784149acb88c67b0d092f5453644dc4b13a566..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_slapp.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Executar este comando" name="run_slapp"/>
-	<menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_slurl.xml b/indra/newview/skins/minimal/xui/pt/menu_url_slurl.xml
deleted file mode 100644
index 7216ccf0b305119f4842367f948ef69089827bbf..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_slurl.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Mostrar informações sobre este lugar" name="show_place"/>
-	<menu_item_call label="Mostrar no mapa" name="show_on_map"/>
-	<menu_item_call label="Teletransportar para este lugar" name="teleport_to_location"/>
-	<menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_url_teleport.xml b/indra/newview/skins/minimal/xui/pt/menu_url_teleport.xml
deleted file mode 100644
index f007425646a9eeab0ac55e97961e6ab48e596120..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_url_teleport.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Url Popup">
-	<menu_item_call label="Teletransportar para este lugar" name="teleport"/>
-	<menu_item_call label="Mostrar no mapa" name="show_on_map"/>
-	<menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_viewer.xml b/indra/newview/skins/minimal/xui/pt/menu_viewer.xml
deleted file mode 100644
index 2bd1e88279ef80777c97b2bc8cbe9b8059a93a16..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_viewer.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu_bar name="Main Menu">
-	<menu label="Ajuda" name="Help">
-		<menu_item_call label="[SECOND_LIFE] Ajuda" name="Second Life Help"/>
-	</menu>
-	<menu label="Avançado" name="Advanced">
-		<menu label="Atalhos" name="Shortcuts">
-			<menu_item_check label="Voar" name="Fly"/>
-			<menu_item_call label="Fechar janela" name="Close Window"/>
-			<menu_item_call label="Fechar todas as janelas" name="Close All Windows"/>
-			<menu_item_call label="Visão padrão" name="Reset View"/>
-		</menu>
-	</menu>
-</menu_bar>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_wearable_list_item.xml b/indra/newview/skins/minimal/xui/pt/menu_wearable_list_item.xml
deleted file mode 100644
index 2487f6779f6306dd610254cce7bb65b0102cb608..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_wearable_list_item.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Outfit Wearable Context Menu">
-	<menu_item_call label="Trocar" name="wear_replace"/>
-	<menu_item_call label="Vestir" name="wear_wear"/>
-	<menu_item_call label="Adicionar" name="wear_add"/>
-	<menu_item_call label="Tirar / Separar" name="take_off_or_detach"/>
-	<menu_item_call label="Separar" name="detach"/>
-	<context_menu label="Colocar em" name="wearable_attach_to"/>
-	<context_menu label="Anexar ao HUD" name="wearable_attach_to_hud"/>
-	<menu_item_call label="Tirar" name="take_off"/>
-	<menu_item_call label="Editar" name="edit"/>
-	<menu_item_call label="Perfil do item" name="object_profile"/>
-	<menu_item_call label="Mostrar original" name="show_original"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_wearing_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_wearing_gear.xml
deleted file mode 100644
index 7b6ce4d87ec8798c1efd50ad4aebbcddd5f7ce8a..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_wearing_gear.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Gear Wearing">
-	<menu_item_call label="Editar look" name="edit"/>
-	<menu_item_call label="Tirar" name="takeoff"/>
-</menu>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_wearing_tab.xml b/indra/newview/skins/minimal/xui/pt/menu_wearing_tab.xml
deleted file mode 100644
index 4e6e52ebc7010f91d6fe21a9b448eeb45126305c..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/menu_wearing_tab.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<context_menu name="Wearing">
-	<menu_item_call label="Tirar" name="take_off"/>
-	<menu_item_call label="Tirar" name="detach"/>
-	<menu_item_call label="Editar look" name="edit"/>
-</context_menu>
diff --git a/indra/newview/skins/minimal/xui/pt/notifications.xml b/indra/newview/skins/minimal/xui/pt/notifications.xml
deleted file mode 100644
index 69c4cb3b3eb1cd866bf81cf79a14eb607d44a8cc..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/notifications.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<notifications>
-	<notification name="UserGiveItem">
-		[NAME_SLURL] quer lhe dar [ITEM_SLURL].  Esta ação requer o modo Avançado. Passe para o modo avançado e você verá o item em seu inventário. Para passar para o modo avançado, feche e reinicialize esse aplicativo e mude o modo (indicado na tela de login).
-		<form name="form">
-			<button name="Show" text="Guardar item"/>
-			<button name="Discard" text="Recusar item"/>
-			<button name="Mute" text="Bloquear usuário"/>
-		</form>
-	</notification>
-	<notification name="ObjectGiveItem">
-		Um objeto chamado &lt;nolink&gt;[OBJECTFROMNAME]&lt;/nolink&gt;, de [NAME_SLURL], está oferecendo &lt;nolink&gt;[ITEM_SLURL]&lt;/nolink&gt; a você. Esta ação requer o modo Avançado. Passe para o modo Avançado e você verá o item em seu Inventário. Para passar para o modo Avançado, feche e reinicialize esse aplicativo e mude o modo (indicado na tela de login).
-		<form name="form">
-			<button name="Keep" text="Guardar item"/>
-			<button name="Discard" text="Recusar item"/>
-			<button name="Mute" text="Bloquear objeto"/>
-		</form>
-	</notification>
-</notifications>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_adhoc_control_panel.xml b/indra/newview/skins/minimal/xui/pt/panel_adhoc_control_panel.xml
deleted file mode 100644
index bd50d4953d89da041fc8f3e6591e2fa68d1730fb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_adhoc_control_panel.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="call_btn_panel">
-			<button label="Ligar" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Desligar" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Controles de voz" name="voice_ctrls_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_bottomtray.xml b/indra/newview/skins/minimal/xui/pt/panel_bottomtray.xml
deleted file mode 100644
index 9b4eb2c2b8a8b94784da371d25df1079a64be7cb..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_bottomtray.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="bottom_tray">
-	<string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/>
-	<string name="SpeakBtnToolTip" value="Liga e desliga o microfone"/>
-	<string name="VoiceControlBtnToolTip" value="Mostra/oculta os controles de voz"/>
-	<layout_stack name="toolbar_stack">
-		<layout_panel name="speak_panel">
-			<button label="Falar" name="speak_btn" tool_tip="Ligar/desligar seu microfone"/>
-		</layout_panel>
-		<layout_panel name="speak_flyout_panel">
-			<button label="" name="flyout_btn" tool_tip="Mudar as preferências de áudio"/>
-		</layout_panel>
-		<layout_panel name="gesture_panel">
-			<gesture_combo_list label="Gesto" name="Gesture" tool_tip="Fazer seu avatar agir"/>
-		</layout_panel>
-		<layout_panel name="cam_panel">
-			<bottomtray_button label="Exibir" name="camera_btn" tool_tip="Controlar ângulo da câmera"/>
-		</layout_panel>
-		<layout_panel name="destinations_panel">
-			<bottomtray_button label="Destinos" name="destination_btn" tool_tip="Viajar no Second Life"/>
-		</layout_panel>
-		<layout_panel name="avatar_panel">
-			<bottomtray_button label="Meu avatar" name="avatar_btn" tool_tip="Trocar seu visual"/>
-		</layout_panel>
-		<layout_panel name="people_panel">
-			<bottomtray_button label="Pessoas" name="show_people_button" tool_tip="Encontrar pessoas no Second Life"/>
-		</layout_panel>
-		<layout_panel name="profile_panel">
-			<bottomtray_button label="Perfil" name="show_profile_btn" tool_tip="Ver e editar seu perfil"/>
-		</layout_panel>
-		<layout_panel name="howto_panel">
-			<bottomtray_button label="Como..." name="show_help_btn" tool_tip="Opções de ajuda do Second Life"/>
-		</layout_panel>
-		<layout_panel name="im_well_panel">
-			<chiclet_im_well name="im_well">
-				<button name="Unread IM messages" tool_tip="Conversas"/>
-			</chiclet_im_well>
-		</layout_panel>
-		<layout_panel name="notification_well_panel">
-			<chiclet_notification name="notification_well">
-				<button name="Unread" tool_tip="Notificações"/>
-			</chiclet_notification>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_group_control_panel.xml b/indra/newview/skins/minimal/xui/pt/panel_group_control_panel.xml
deleted file mode 100644
index 177cee28a648d10fb6e28890de05b1eceb365923..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_group_control_panel.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="vertical_stack">
-		<layout_panel name="end_call_btn_panel">
-			<button label="Desligar" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="voice_ctrls_btn_panel">
-			<button label="Abrir controles de voz" name="voice_ctrls_btn"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml
deleted file mode 100644
index 190323c3b05e08ddfac36535e3c60d3cf641a164..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_im_control_panel">
-	<layout_stack name="button_stack">
-		<layout_panel name="view_profile_btn_panel">
-			<button label="Perfil" name="view_profile_btn"/>
-		</layout_panel>
-		<layout_panel name="add_friend_btn_panel">
-			<button label="Adicionar amigo..." name="add_friend_btn"/>
-		</layout_panel>
-		<layout_panel name="teleport_btn_panel">
-			<button label="Teletransportar" name="teleport_btn" tool_tip="Oferecer teletransporte"/>
-		</layout_panel>
-		<layout_panel name="call_btn_panel">
-			<button label="Ligar" name="call_btn"/>
-		</layout_panel>
-		<layout_panel name="end_call_btn_panel">
-			<button label="Encerrar ligação" name="end_call_btn"/>
-		</layout_panel>
-		<layout_panel name="block_btn_panel">
-			<button label="Bloquear" name="block_btn"/>
-		</layout_panel>
-		<layout_panel name="unblock_btn_panel">
-			<button label="Desbloquear" name="unblock_btn"/>
-		</layout_panel>
-		<layout_panel name="volume_ctrl_panel">
-			<slider name="volume_slider" tool_tip="Volume da ligação" value="0.5"/>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_login.xml b/indra/newview/skins/minimal/xui/pt/panel_login.xml
deleted file mode 100644
index de9717874f375926e4d46f25a17c74aec5c593f9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_login.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
-	<panel.string name="create_account_url">
-		http://join.secondlife.com/
-	</panel.string>
-	<panel.string name="forgot_password_url">
-		http://secondlife.com/account/request.php?lang=pt
-	</panel.string>
-	<layout_stack name="login_widgets">
-		<layout_panel name="login">
-			<text name="username_text">
-				Nome de usuário:
-			</text>
-			<combo_box name="username_combo" tool_tip="O nome de usuário que você escolheu ao fazer seu cadastro, como zecazc12 or Magia Solar"/>
-			<text name="password_text">
-				Senha:
-			</text>
-			<check_box label="Lembrar senha" name="remember_check"/>
-			<button label="conectar" name="connect_btn"/>
-			<text name="mode_selection_text">
-				Modo:
-			</text>
-			<combo_box name="mode_combo" tool_tip="Selecione o modo. O modo Básico é mais rápido e ideal para explorar e conversar. Use o modo Avançado para acessar mais recursos.">
-				<combo_box.item label="Básico" name="Basic"/>
-				<combo_box.item label="Avançado" name="Advanced"/>
-			</combo_box>
-		</layout_panel>
-		<layout_panel name="links">
-			<text name="create_new_account_text">
-				Cadastre-se
-			</text>
-			<text name="forgot_password_text">
-				Esqueceu seu nome ou senha?
-			</text>
-			<text name="login_help">
-				Precisa de ajuda ao conectar?
-			</text>
-		</layout_panel>
-	</layout_stack>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_navigation_bar.xml b/indra/newview/skins/minimal/xui/pt/panel_navigation_bar.xml
deleted file mode 100644
index 01930bf3b359fab76b6cca756aa29f9968c37dba..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_navigation_bar.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="navigation_bar">
-	<panel name="navigation_panel">
-		<pull_button name="back_btn" tool_tip="Voltar para região anterior"/>
-		<pull_button name="forward_btn" tool_tip="Avançar uma região"/>
-		<button name="home_btn" tool_tip="Teletransportar para meu início"/>
-		<location_input label="Onde" name="location_combo"/>
-		<search_combo_box label="Busca" name="search_combo_box" tool_tip="Busca">
-			<combo_editor label="Buscar no [SECOND_LIFE]" name="search_combo_editor"/>
-		</search_combo_box>
-	</panel>
-	<favorites_bar name="favorite" tool_tip="Arraste marcos para cá para acessar seus lugares preferidos do Second Life!">
-		<label name="favorites_bar_label" tool_tip="Arraste marcos para cá para acessar seus lugares preferidos do Second Life!">
-			Barra Destaques
-		</label>
-		<chevron_button name="&gt;&gt;" tool_tip="Mostrar mais favoritos"/>
-	</favorites_bar>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_people.xml b/indra/newview/skins/minimal/xui/pt/panel_people.xml
deleted file mode 100644
index 0e98c586c65554a896a78b860f42271d845e4686..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_people.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- Side tray panel -->
-<panel label="Pessoas" name="people_panel">
-	<string name="no_recent_people" value="Ninguém, recentemente. Em busca de alguém para conversar? Confira o botão Destinos abaixo."/>
-	<string name="no_filtered_recent_people" value="Não há ninguém com esse nome ultimamente."/>
-	<string name="no_one_near" value="Ninguém por perto Em busca de alguém para conversar? Confira o botão Destinos abaixo."/>
-	<string name="no_one_filtered_near" value="Não há ninguém com esse nome por perto."/>
-	<string name="no_friends_online" value="Nenhum amigo online"/>
-	<string name="no_friends" value="Nenhum amigo"/>
-	<string name="no_friends_msg">
-		Clique em um residente com o botão direito to mouse para adicioná-lo como amigo.
-Em busca de alguém para conversar? Confira o botão Destinos abaixo.
-	</string>
-	<string name="no_filtered_friends_msg">
-		Não encontrou o que procura? Confira o botão Destinos abaixo.
-	</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 duplo para abrir o Mapa, botão Shift e arrastar para ver mais)"/>
-	<string name="AltMiniMapToolTipMsg" value="[REGION](Clique duplo para se teletransportar, botão Shift e arrastar para ver mais)"/>
-	<filter_editor label="Filtro" name="filter_input"/>
-	<tab_container name="tabs">
-		<panel label="PROXIMIDADE" name="nearby_panel">
-			<panel label="bottom_panel" name="bottom_panel"/>
-		</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="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="RECENTE" name="recent_panel">
-			<panel label="bottom_panel" name="bottom_panel">
-				<button name="add_friend_btn" tool_tip="Adicionar o residente selecionado para sua lista de amigos"/>
-			</panel>
-		</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="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/minimal/xui/pt/panel_side_tray_tab_caption.xml b/indra/newview/skins/minimal/xui/pt/panel_side_tray_tab_caption.xml
deleted file mode 100644
index 09444a55356daa0efdf082e911f693d56956edf9..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_side_tray_tab_caption.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="sidetray_tab_panel">
-	<text name="sidetray_tab_title" value="Bandeja lateral"/>
-	<button name="undock" tool_tip="Soltar janela"/>
-	<button name="dock" tool_tip="Ancorar janela"/>
-	<button name="show_help" tool_tip="Mostrar ajuda"/>
-</panel>
diff --git a/indra/newview/skins/minimal/xui/pt/panel_status_bar.xml b/indra/newview/skins/minimal/xui/pt/panel_status_bar.xml
deleted file mode 100644
index db564d2aaa711e34578b0c6daff343c5b674b2c0..0000000000000000000000000000000000000000
--- a/indra/newview/skins/minimal/xui/pt/panel_status_bar.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="status">
-	<panel.string name="packet_loss_tooltip">
-		Perda de pacote
-	</panel.string>
-	<panel.string name="bandwidth_tooltip">
-		Banda
-	</panel.string>
-	<panel.string name="time">
-		[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]
-	</panel.string>
-	<panel.string name="timeTooltip">
-		[weekday, datetime, slt], [day, datetime, slt] [month, datetime, slt] [year, datetime, slt]
-	</panel.string>
-	<panel.string name="buycurrencylabel">
-		L$ [AMT]
-	</panel.string>
-	<combo_box name="mode_combo" tool_tip="Selecione o modo. O modo Básico é mais rápido e ideal para explorar e conversar. Use o modo Avançado para acessar mais recursos.">
-		<combo_box.item label="Modo básico" name="Basic"/>
-		<combo_box.item label="Modo avançado" name="Advanced"/>
-	</combo_box>
-	<button name="media_toggle_btn" tool_tip="Tocar/Pausar todas mídias (música, vídeo, páginas web)"/>
-	<button name="volume_btn" tool_tip="Volume geral"/>
-</panel>
diff --git a/indra/newview/skins/paths.xml b/indra/newview/skins/paths.xml
index e6d68488ea0622426386bb12d705888d556f51c2..3c0da041c770566a813f364829177d42da85e1bb 100644
--- a/indra/newview/skins/paths.xml
+++ b/indra/newview/skins/paths.xml
@@ -1,4 +1,4 @@
-<paths>
+<paths> 
 	<directory>
     <subdir>xui</subdir>
     <subdir>en</subdir>
diff --git a/indra/newview/tests/gpus_results.txt b/indra/newview/tests/gpus_results.txt
index 7e9a06492195f2bab6dc7f5150fef143a52d219c..68e2e688cb9f7aefb22967f097caf775bb6e94be 100644
--- a/indra/newview/tests/gpus_results.txt
+++ b/indra/newview/tests/gpus_results.txt
@@ -1,6 +1,6 @@
 GPU String                                                                                               Supported?  Class  Recognizer
 ------------------------------------------------------------------------------------------------------   ----------- -----  ------------------------------------
-ATI                                                                                                                         UNRECOGNIZED
+ATI                                                                                                                         NO MATCH
 ATI 3D-Analyze                                                                                           unsupported    0   ATI 3D-Analyze
 ATI ASUS A9xxx                                                                                           supported      1   ATI ASUS A9xxx
 ATI ASUS AH24xx                                                                                          supported      1   ATI ASUS AH24xx
@@ -25,8 +25,8 @@ ATI All-in-Wonder X1800
 ATI All-in-Wonder X1900                                                                                  supported      3   ATI All-in-Wonder X1900
 ATI All-in-Wonder X600                                                                                   supported      1   ATI All-in-Wonder X600
 ATI All-in-Wonder X800                                                                                   supported      2   ATI All-in-Wonder X800
-ATI Diamond X1xxx                                                                                        supported      0   ATI Radeon X1xxx
-ATI Display Adapter                                                                                                         UNRECOGNIZED
+ATI Diamond X1xxx                                                                                        supported      1   ATI Radeon X1xxx
+ATI Display Adapter                                                                                      supported      0   ATI Display Adapter
 ATI FireGL                                                                                               supported      0   ATI FireGL
 ATI FireGL 5200                                                                                          supported      0   ATI FireGL
 ATI FireGL 5xxx                                                                                          supported      0   ATI FireGL
@@ -40,7 +40,7 @@ ATI M56
 ATI M71                                                                                                  supported      1   ATI M71
 ATI M72                                                                                                  supported      1   ATI M72
 ATI M76                                                                                                  supported      3   ATI M76
-ATI Mobility Radeon                                                                                      supported      0   ATI Mobility Radeon
+ATI Mobility Radeon                                                                                      supported      0   ATI Radeon
 ATI Mobility Radeon 7xxx                                                                                 supported      0   ATI Mobility Radeon 7xxx
 ATI Mobility Radeon 9600                                                                                 supported      0   ATI Mobility Radeon 9600
 ATI Mobility Radeon 9700                                                                                 supported      1   ATI Mobility Radeon 9700
@@ -57,14 +57,14 @@ ATI Mobility Radeon HD 4300
 ATI Mobility Radeon HD 4500                                                                              supported      3   ATI Mobility Radeon HD 4500
 ATI Mobility Radeon HD 4600                                                                              supported      3   ATI Mobility Radeon HD 4600
 ATI Mobility Radeon HD 4800                                                                              supported      3   ATI Mobility Radeon HD 4800
-ATI Mobility Radeon HD 5400                                                                              supported      2   ATI Mobility Radeon HD 5400
-ATI Mobility Radeon HD 5600                                                                              supported      2   ATI Mobility Radeon HD 5600
-ATI Mobility Radeon X1xxx                                                                                supported      0   ATI Radeon X1xxx
-ATI Mobility Radeon X2xxx                                                                                supported      0   ATI Mobility Radeon X2xxx
-ATI Mobility Radeon X3xx                                                                                 supported      1   ATI Mobility Radeon X3xx
-ATI Mobility Radeon X6xx                                                                                 supported      1   ATI Mobility Radeon X6xx
-ATI Mobility Radeon X7xx                                                                                 supported      1   ATI Mobility Radeon X7xx
-ATI Mobility Radeon Xxxx                                                                                 supported      0   ATI Mobility Radeon Xxxx
+ATI Mobility Radeon HD 5400                                                                              supported      3   ATI Mobility Radeon HD 5400
+ATI Mobility Radeon HD 5600                                                                              supported      3   ATI Mobility Radeon HD 5600
+ATI Mobility Radeon X1xxx                                                                                supported      1   ATI Radeon X1xxx
+ATI Mobility Radeon X2xxx                                                                                supported      1   ATI Radeon X2xxx
+ATI Mobility Radeon X3xx                                                                                 supported      0   ATI Radeon X300
+ATI Mobility Radeon X6xx                                                                                 supported      1   ATI Radeon X600
+ATI Mobility Radeon X7xx                                                                                 supported      1   ATI Radeon X700
+ATI Mobility Radeon Xxxx                                                                                 supported      0   ATI Radeon
 ATI RV380                                                                                                supported      0   ATI RV380
 ATI RV530                                                                                                supported      1   ATI RV530
 ATI Radeon 2100                                                                                          supported      0   ATI Radeon 2100
@@ -86,7 +86,7 @@ ATI Radeon HD 2600
 ATI Radeon HD 2900                                                                                       supported      3   ATI Radeon HD 2900
 ATI Radeon HD 3000                                                                                       supported      0   ATI Radeon HD 3000
 ATI Radeon HD 3100                                                                                       supported      1   ATI Radeon HD 3100
-ATI Radeon HD 3200                                                                                       supported      0   ATI Radeon HD 3200
+ATI Radeon HD 3200                                                                                       supported      1   ATI Radeon HD 3200
 ATI Radeon HD 3300                                                                                       supported      1   ATI Radeon HD 3300
 ATI Radeon HD 3400                                                                                       supported      1   ATI Radeon HD 3400
 ATI Radeon HD 3600                                                                                       supported      3   ATI Radeon HD 3600
@@ -103,29 +103,29 @@ ATI Radeon HD 5600
 ATI Radeon HD 5700                                                                                       supported      3   ATI Radeon HD 5700
 ATI Radeon HD 5800                                                                                       supported      3   ATI Radeon HD 5800
 ATI Radeon HD 5900                                                                                       supported      3   ATI Radeon HD 5900
-ATI Radeon HD 6200                                                                                       supported      2   ATI Radeon HD 6200
-ATI Radeon HD 6300                                                                                       supported      2   ATI Radeon HD 6300
+ATI Radeon HD 6200                                                                                       supported      3   ATI Radeon HD 6200
+ATI Radeon HD 6300                                                                                       supported      3   ATI Radeon HD 6300
 ATI Radeon HD 6500                                                                                       supported      3   ATI Radeon HD 6500
 ATI Radeon HD 6800                                                                                       supported      3   ATI Radeon HD 6800
 ATI Radeon HD 6900                                                                                       supported      3   ATI Radeon HD 6900
-ATI Radeon OpenGL                                                                                        supported      0   ATI Radeon
+ATI Radeon OpenGL                                                                                        unsupported    0   ATI Radeon OpenGL
 ATI Radeon RV250                                                                                         supported      0   ATI Radeon RV250
 ATI Radeon RV600                                                                                         supported      1   ATI Radeon RV600
 ATI Radeon RX9550                                                                                        supported      1   ATI Radeon RX9550
 ATI Radeon VE                                                                                            unsupported    0   ATI Radeon VE
-ATI Radeon X1000                                                                                         supported      0   ATI Radeon X1xxx
-ATI Radeon X1200                                                                                         supported      0   ATI Radeon X1xxx
-ATI Radeon X1300                                                                                         supported      0   ATI Radeon X1xxx
-ATI Radeon X13xx                                                                                         supported      0   ATI Radeon X1xxx
-ATI Radeon X1400                                                                                         supported      0   ATI Radeon X1xxx
-ATI Radeon X1500                                                                                         supported      0   ATI Radeon X1xxx
-ATI Radeon X1600                                                                                         supported      0   ATI Radeon X1xxx
-ATI Radeon X16xx                                                                                         supported      0   ATI Radeon X1xxx
-ATI Radeon X1700                                                                                         supported      0   ATI Radeon X1xxx
-ATI Radeon X1800                                                                                         supported      0   ATI Radeon X1xxx
-ATI Radeon X1900                                                                                         supported      0   ATI Radeon X1xxx
-ATI Radeon X19xx                                                                                         supported      0   ATI Radeon X1xxx
-ATI Radeon X1xxx                                                                                         supported      0   ATI Radeon X1xxx
+ATI Radeon X1000                                                                                         supported      1   ATI Radeon X1xxx
+ATI Radeon X1200                                                                                         supported      1   ATI Radeon X1xxx
+ATI Radeon X1300                                                                                         supported      1   ATI Radeon X13xx
+ATI Radeon X13xx                                                                                         supported      1   ATI Radeon X13xx
+ATI Radeon X1400                                                                                         supported      1   ATI Radeon X1xxx
+ATI Radeon X1500                                                                                         supported      2   ATI Radeon X15xx
+ATI Radeon X1600                                                                                         supported      2   ATI Radeon X16xx
+ATI Radeon X16xx                                                                                         supported      2   ATI Radeon X16xx
+ATI Radeon X1700                                                                                         supported      2   ATI Radeon X17xx
+ATI Radeon X1800                                                                                         supported      3   ATI Radeon X18xx
+ATI Radeon X1900                                                                                         supported      3   ATI Radeon X19xx
+ATI Radeon X19xx                                                                                         supported      3   ATI Radeon X19xx
+ATI Radeon X1xxx                                                                                         supported      1   ATI Radeon X1xxx
 ATI Radeon X300                                                                                          supported      0   ATI Radeon X300
 ATI Radeon X500                                                                                          supported      0   ATI Radeon X500
 ATI Radeon X600                                                                                          supported      1   ATI Radeon X600
@@ -138,56 +138,74 @@ ATI Technologies Inc.
 ATI Technologies Inc.  x86                                                                               supported      0   ATI Technologies
 ATI Technologies Inc.  x86/SSE2                                                                          supported      0   ATI Technologies
 ATI Technologies Inc. (Vista) ATI Mobility Radeon HD 5730                                                supported      3   ATI Mobility Radeon HD 5700
-ATI Technologies Inc. 256MB ATI Radeon X1300PRO x86/SSE2                                                 supported      0   ATI Radeon X1xxx
+ATI Technologies Inc. 128MB ATI Radeon X1300 x86/SSE2                                                    supported      1   ATI Radeon X13xx
+ATI Technologies Inc. 256MB ATI Radeon X1300PRO x86/SSE2                                                 supported      1   ATI Radeon X13xx
 ATI Technologies Inc. AMD 760G                                                                           supported      1   ATI 760G/Radeon 3000
 ATI Technologies Inc. AMD 760G (Microsoft WDDM 1.1)                                                      supported      1   ATI 760G/Radeon 3000
 ATI Technologies Inc. AMD 780L                                                                           supported      1   ATI 780L/Radeon 3000
 ATI Technologies Inc. AMD FirePro 2270                                                                   supported      1   ATI FirePro 2000
-ATI Technologies Inc. AMD M860G with ATI Mobility Radeon 4100                                            supported      0   ATI Mobility Radeon 4100
+ATI Technologies Inc. AMD M860G with ATI Mobility Radeon 4100                                            supported      1   ATI Mobility Radeon 4100
 ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4200                                         supported      2   ATI Mobility Radeon HD 4200
 ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4250                                         supported      2   ATI Mobility Radeon HD 4200
+ATI Technologies Inc. AMD RADEON HD 6350                                                                 supported      3   ATI Radeon HD 6300
 ATI Technologies Inc. AMD RADEON HD 6450                                                                 supported      3   ATI Radeon HD 6400
-ATI Technologies Inc. AMD Radeon HD 6200 series Graphics                                                 supported      2   ATI Radeon HD 6200
-ATI Technologies Inc. AMD Radeon HD 6250 Graphics                                                        supported      2   ATI Radeon HD 6200
-ATI Technologies Inc. AMD Radeon HD 6300 series Graphics                                                 supported      2   ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6300M Series                                                         supported      2   ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6310 Graphics                                                        supported      2   ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6310M                                                                supported      2   ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6330M                                                                supported      2   ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6350                                                                 supported      2   ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6370M                                                                supported      2   ATI Radeon HD 6300
-ATI Technologies Inc. AMD Radeon HD 6400M Series                                                         supported      3   ATI Radeon HD 6400
+ATI Technologies Inc. AMD RADEON HD 6670                                                                 supported      3   ATI Radeon HD 6600
+ATI Technologies Inc. AMD Radeon 6600M and 6700M Series                                                  supported      0   ATI Technologies
+ATI Technologies Inc. AMD Radeon HD 6200 series Graphics                                                 supported      3   ATI Radeon HD 6200
+ATI Technologies Inc. AMD Radeon HD 6250 Graphics                                                        supported      3   ATI Radeon HD 6200
+ATI Technologies Inc. AMD Radeon HD 6290 Graphics                                                        supported      3   ATI Radeon HD 6200
+ATI Technologies Inc. AMD Radeon HD 6300 series Graphics                                                 supported      3   ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6300M Series                                                         supported      3   ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6310 Graphics                                                        supported      3   ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6310M                                                                supported      3   ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6330M                                                                supported      3   ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6350                                                                 supported      3   ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6370M                                                                supported      3   ATI Radeon HD 6300
+ATI Technologies Inc. AMD Radeon HD 6400M Series                                                         supported      3   ATI Radeon HD 64xx
 ATI Technologies Inc. AMD Radeon HD 6450                                                                 supported      3   ATI Radeon HD 6400
-ATI Technologies Inc. AMD Radeon HD 6470M                                                                supported      3   ATI Radeon HD 6400
-ATI Technologies Inc. AMD Radeon HD 6490M                                                                supported      3   ATI Radeon HD 6400
-ATI Technologies Inc. AMD Radeon HD 6500M/5600/5700 Series                                               supported      3   ATI Radeon HD 6500
-ATI Technologies Inc. AMD Radeon HD 6530M                                                                supported      3   ATI Radeon HD 6500
-ATI Technologies Inc. AMD Radeon HD 6550M                                                                supported      3   ATI Radeon HD 6500
+ATI Technologies Inc. AMD Radeon HD 6470M                                                                supported      3   ATI Radeon HD 64xx
+ATI Technologies Inc. AMD Radeon HD 6490M                                                                supported      3   ATI Radeon HD 64xx
+ATI Technologies Inc. AMD Radeon HD 6500 Series                                                          supported      3   ATI Radeon HD 6500
+ATI Technologies Inc. AMD Radeon HD 6500M Series                                                         supported      3   ATI Radeon HD 65xx
+ATI Technologies Inc. AMD Radeon HD 6500M/5600/5700 Series                                               supported      3   ATI Radeon HD 65xx
+ATI Technologies Inc. AMD Radeon HD 6530M                                                                supported      3   ATI Radeon HD 65xx
+ATI Technologies Inc. AMD Radeon HD 6550M                                                                supported      3   ATI Radeon HD 65xx
 ATI Technologies Inc. AMD Radeon HD 6570                                                                 supported      3   ATI Radeon HD 6500
-ATI Technologies Inc. AMD Radeon HD 6570M                                                                supported      3   ATI Radeon HD 6500
-ATI Technologies Inc. AMD Radeon HD 6570M/5700 Series                                                    supported      3   ATI Radeon HD 6500
+ATI Technologies Inc. AMD Radeon HD 6570M                                                                supported      3   ATI Radeon HD 65xx
+ATI Technologies Inc. AMD Radeon HD 6570M/5700 Series                                                    supported      3   ATI Radeon HD 65xx
+ATI Technologies Inc. AMD Radeon HD 6600 Series                                                          supported      3   ATI Radeon HD 6600
 ATI Technologies Inc. AMD Radeon HD 6600M Series                                                         supported      3   ATI Radeon HD 66xx
+ATI Technologies Inc. AMD Radeon HD 6630M                                                                supported      3   ATI Radeon HD 66xx
 ATI Technologies Inc. AMD Radeon HD 6650M                                                                supported      3   ATI Radeon HD 66xx
-ATI Technologies Inc. AMD Radeon HD 6670                                                                 supported      3   ATI Radeon HD 66xx
+ATI Technologies Inc. AMD Radeon HD 6670                                                                 supported      3   ATI Radeon HD 6600
 ATI Technologies Inc. AMD Radeon HD 6700 Series                                                          supported      3   ATI Radeon HD 6700
 ATI Technologies Inc. AMD Radeon HD 6750                                                                 supported      3   ATI Radeon HD 6700
 ATI Technologies Inc. AMD Radeon HD 6750M                                                                supported      3   ATI Radeon HD 6700
 ATI Technologies Inc. AMD Radeon HD 6770                                                                 supported      3   ATI Radeon HD 6700
+ATI Technologies Inc. AMD Radeon HD 6770M                                                                supported      3   ATI Radeon HD 6700
 ATI Technologies Inc. AMD Radeon HD 6800 Series                                                          supported      3   ATI Radeon HD 6800
+ATI Technologies Inc. AMD Radeon HD 6800M Series                                                         supported      3   ATI Radeon HD 6800
+ATI Technologies Inc. AMD Radeon HD 6850                                                                 supported      3   ATI Radeon HD 6800
 ATI Technologies Inc. AMD Radeon HD 6850M                                                                supported      3   ATI Radeon HD 6800
 ATI Technologies Inc. AMD Radeon HD 6870                                                                 supported      3   ATI Radeon HD 6800
 ATI Technologies Inc. AMD Radeon HD 6870M                                                                supported      3   ATI Radeon HD 6800
 ATI Technologies Inc. AMD Radeon HD 6900 Series                                                          supported      3   ATI Radeon HD 6900
+ATI Technologies Inc. AMD Radeon HD 6900M Series                                                         supported      3   ATI Radeon HD 6900
 ATI Technologies Inc. AMD Radeon HD 6970M                                                                supported      3   ATI Radeon HD 6900
 ATI Technologies Inc. AMD Radeon HD 6990                                                                 supported      3   ATI Radeon HD 6900
-ATI Technologies Inc. AMD Radeon(TM) HD 6470M                                                            supported      0   ATI Technologies
+ATI Technologies Inc. AMD Radeon(TM) HD 6470M                                                            supported      3   ATI Radeon HD 64xx
+ATI Technologies Inc. AMD Radeon(TM) HD 6480G                                                            supported      3   ATI Radeon HD 64xx
+ATI Technologies Inc. AMD Radeon(TM) HD 6520G                                                            supported      3   ATI Radeon HD 65xx
+ATI Technologies Inc. AMD Radeon(TM) HD 6620G                                                            supported      3   ATI Radeon HD 66xx
+ATI Technologies Inc. AMD Radeon(TM) HD 6630M                                                            supported      3   ATI Radeon HD 66xx
 ATI Technologies Inc. ASUS 5870 Eyefinity 6                                                              supported      0   ATI Technologies
+ATI Technologies Inc. ASUS A9550 Series                                                                  supported      1   ATI ASUS A9xxx
 ATI Technologies Inc. ASUS AH2600 Series                                                                 supported      3   ATI ASUS AH26xx
 ATI Technologies Inc. ASUS AH3450 Series                                                                 supported      1   ATI ASUS AH34xx
 ATI Technologies Inc. ASUS AH3650 Series                                                                 supported      3   ATI ASUS AH36xx
 ATI Technologies Inc. ASUS AH4650 Series                                                                 supported      3   ATI ASUS AH46xx
-ATI Technologies Inc. ASUS ARES                                                                          supported      0   ATI Technologies
-ATI Technologies Inc. ASUS EAH2900 Series                                                                supported      0   ATI Technologies
+ATI Technologies Inc. ASUS ARES                                                                          supported      3   ATI ASUS ARES
+ATI Technologies Inc. ASUS EAH2900 Series                                                                supported      3   ATI ASUS EAH29xx
 ATI Technologies Inc. ASUS EAH3450 Series                                                                supported      1   ATI ASUS AH34xx
 ATI Technologies Inc. ASUS EAH3650 Series                                                                supported      3   ATI ASUS AH36xx
 ATI Technologies Inc. ASUS EAH4350 series                                                                supported      1   ATI ASUS EAH43xx
@@ -208,10 +226,13 @@ ATI Technologies Inc. ASUS EAH5830 Series
 ATI Technologies Inc. ASUS EAH5850 Series                                                                supported      3   ATI ASUS EAH58xx
 ATI Technologies Inc. ASUS EAH5870 Series                                                                supported      3   ATI ASUS EAH58xx
 ATI Technologies Inc. ASUS EAH5970 Series                                                                supported      0   ATI Technologies
-ATI Technologies Inc. ASUS EAH6850 Series                                                                supported      0   ATI Technologies
-ATI Technologies Inc. ASUS EAH6870 Series                                                                supported      0   ATI Technologies
-ATI Technologies Inc. ASUS EAH6950 Series                                                                supported      0   ATI Technologies
-ATI Technologies Inc. ASUS EAH6970 Series                                                                supported      0   ATI Technologies
+ATI Technologies Inc. ASUS EAH6450 Series                                                                supported      3   ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6570 Series                                                                supported      3   ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6670 Series                                                                supported      3   ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6850 Series                                                                supported      3   ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6870 Series                                                                supported      3   ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6950 Series                                                                supported      3   ATI ASUS EAH6xxx
+ATI Technologies Inc. ASUS EAH6970 Series                                                                supported      3   ATI ASUS EAH6xxx
 ATI Technologies Inc. ASUS EAHG4670 series                                                               supported      0   ATI Technologies
 ATI Technologies Inc. ASUS Extreme AX600 Series                                                          supported      0   ATI Technologies
 ATI Technologies Inc. ASUS Extreme AX600XT-TD                                                            supported      0   ATI Technologies
@@ -232,19 +253,23 @@ ATI Technologies Inc. ATI FirePro V4800
 ATI Technologies Inc. ATI FirePro V4800 (FireGL)                                                         supported      0   ATI FireGL
 ATI Technologies Inc. ATI FirePro V5800                                                                  supported      3   ATI FirePro 5000
 ATI Technologies Inc. ATI FirePro V7800                                                                  supported      3   ATI FirePro 7000
-ATI Technologies Inc. ATI MOBILITY RADEON 9XXX x86/SSE2                                                  supported      0   ATI Mobility Radeon Xxxx
+ATI Technologies Inc. ATI MOBILITY RADEON 9600/9700 Series                                               supported      1   ATI Mobility Radeon 9700
+ATI Technologies Inc. ATI MOBILITY RADEON 9XXX x86/SSE2                                                  supported      0   ATI Technologies
+ATI Technologies Inc. ATI MOBILITY RADEON HD 2300                                                        supported      1   ATI Mobility Radeon HD 2300
 ATI Technologies Inc. ATI MOBILITY RADEON HD 3450                                                        supported      2   ATI Mobility Radeon HD 3400
-ATI Technologies Inc. ATI MOBILITY RADEON X1600                                                          supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI MOBILITY RADEON X2300                                                          supported      0   ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI MOBILITY RADEON X2300 HD x86/SSE2                                              supported      0   ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/MMX/3DNow!/SSE2                                      supported      0   ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/SSE2                                                 supported      0   ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI MOBILITY RADEON X300                                                           supported      1   ATI Mobility Radeon X3xx
-ATI Technologies Inc. ATI MOBILITY RADEON X600                                                           supported      1   ATI Mobility Radeon X6xx
-ATI Technologies Inc. ATI MOBILITY RADEON XPRESS 200                                                     supported      0   ATI Mobility Radeon Xxxx
+ATI Technologies Inc. ATI MOBILITY RADEON HD 3650                                                        supported      3   ATI Mobility Radeon HD 3600
+ATI Technologies Inc. ATI MOBILITY RADEON X1600                                                          supported      2   ATI Radeon X16xx
+ATI Technologies Inc. ATI MOBILITY RADEON X2300                                                          supported      1   ATI Radeon X2xxx
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 HD x86/SSE2                                              supported      1   ATI Radeon X2xxx
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/MMX/3DNow!/SSE2                                      supported      1   ATI Radeon X2xxx
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/SSE2                                                 supported      1   ATI Radeon X2xxx
+ATI Technologies Inc. ATI MOBILITY RADEON X300                                                           supported      0   ATI Radeon X300
+ATI Technologies Inc. ATI MOBILITY RADEON X600                                                           supported      1   ATI Radeon X600
+ATI Technologies Inc. ATI MOBILITY RADEON X700                                                           supported      1   ATI Radeon X700
+ATI Technologies Inc. ATI MOBILITY RADEON XPRESS 200                                                     supported      0   ATI Radeon Xpress
 ATI Technologies Inc. ATI Mobility FireGL V5700                                                          supported      1   ATI FireGL 5xxx
-ATI Technologies Inc. ATI Mobility Radeon 4100                                                           supported      0   ATI Mobility Radeon 4100
-ATI Technologies Inc. ATI Mobility Radeon Graphics                                                       supported      0   ATI Mobility Radeon
+ATI Technologies Inc. ATI Mobility Radeon 4100                                                           supported      1   ATI Mobility Radeon 4100
+ATI Technologies Inc. ATI Mobility Radeon Graphics                                                       supported      0   ATI Technologies
 ATI Technologies Inc. ATI Mobility Radeon HD 2300                                                        supported      1   ATI Mobility Radeon HD 2300
 ATI Technologies Inc. ATI Mobility Radeon HD 2400                                                        supported      1   ATI Mobility Radeon HD 2400
 ATI Technologies Inc. ATI Mobility Radeon HD 2400 XT                                                     supported      1   ATI Mobility Radeon HD 2400
@@ -252,17 +277,20 @@ ATI Technologies Inc. ATI Mobility Radeon HD 2600
 ATI Technologies Inc. ATI Mobility Radeon HD 2600 XT                                                     supported      3   ATI Mobility Radeon HD 2600
 ATI Technologies Inc. ATI Mobility Radeon HD 2700                                                        supported      3   ATI Mobility Radeon HD 2700
 ATI Technologies Inc. ATI Mobility Radeon HD 3400 Series                                                 supported      2   ATI Mobility Radeon HD 3400
+ATI Technologies Inc. ATI Mobility Radeon HD 3410                                                        supported      2   ATI Mobility Radeon HD 3400
 ATI Technologies Inc. ATI Mobility Radeon HD 3430                                                        supported      2   ATI Mobility Radeon HD 3400
 ATI Technologies Inc. ATI Mobility Radeon HD 3450                                                        supported      2   ATI Mobility Radeon HD 3400
 ATI Technologies Inc. ATI Mobility Radeon HD 3470                                                        supported      2   ATI Mobility Radeon HD 3400
 ATI Technologies Inc. ATI Mobility Radeon HD 3470 Hybrid X2                                              supported      2   ATI Mobility Radeon HD 3400
 ATI Technologies Inc. ATI Mobility Radeon HD 3650                                                        supported      3   ATI Mobility Radeon HD 3600
+ATI Technologies Inc. ATI Mobility Radeon HD 3670                                                        supported      3   ATI Mobility Radeon HD 3600
 ATI Technologies Inc. ATI Mobility Radeon HD 4200                                                        supported      2   ATI Mobility Radeon HD 4200
 ATI Technologies Inc. ATI Mobility Radeon HD 4200 Series                                                 supported      2   ATI Mobility Radeon HD 4200
 ATI Technologies Inc. ATI Mobility Radeon HD 4225                                                        supported      2   ATI Mobility Radeon HD 4200
 ATI Technologies Inc. ATI Mobility Radeon HD 4225 Series                                                 supported      2   ATI Mobility Radeon HD 4200
 ATI Technologies Inc. ATI Mobility Radeon HD 4250                                                        supported      2   ATI Mobility Radeon HD 4200
 ATI Technologies Inc. ATI Mobility Radeon HD 4250 Graphics                                               supported      2   ATI Mobility Radeon HD 4200
+ATI Technologies Inc. ATI Mobility Radeon HD 4250 Series                                                 supported      2   ATI Mobility Radeon HD 4200
 ATI Technologies Inc. ATI Mobility Radeon HD 4270                                                        supported      2   ATI Mobility Radeon HD 4200
 ATI Technologies Inc. ATI Mobility Radeon HD 4300 Series                                                 supported      2   ATI Mobility Radeon HD 4300
 ATI Technologies Inc. ATI Mobility Radeon HD 4300/4500 Series                                            supported      2   ATI Mobility Radeon HD 4300
@@ -283,53 +311,55 @@ ATI Technologies Inc. ATI Mobility Radeon HD 4670
 ATI Technologies Inc. ATI Mobility Radeon HD 4830 Series                                                 supported      3   ATI Mobility Radeon HD 4800
 ATI Technologies Inc. ATI Mobility Radeon HD 4850                                                        supported      3   ATI Mobility Radeon HD 4800
 ATI Technologies Inc. ATI Mobility Radeon HD 4870                                                        supported      3   ATI Mobility Radeon HD 4800
-ATI Technologies Inc. ATI Mobility Radeon HD 5000                                                        supported      0   ATI Mobility Radeon
-ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series                                                 supported      0   ATI Mobility Radeon
-ATI Technologies Inc. ATI Mobility Radeon HD 5145                                                        supported      2   ATI Mobility Radeon HD 5100
-ATI Technologies Inc. ATI Mobility Radeon HD 5165                                                        supported      2   ATI Mobility Radeon HD 5100
+ATI Technologies Inc. ATI Mobility Radeon HD 5000                                                        supported      0   ATI Technologies
+ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series                                                 supported      0   ATI Technologies
+ATI Technologies Inc. ATI Mobility Radeon HD 5145                                                        supported      3   ATI Mobility Radeon HD 5100
+ATI Technologies Inc. ATI Mobility Radeon HD 5165                                                        supported      3   ATI Mobility Radeon HD 5100
 ATI Technologies Inc. ATI Mobility Radeon HD 530v                                                        supported      1   ATI Mobility Radeon HD 530v
-ATI Technologies Inc. ATI Mobility Radeon HD 5400 Series                                                 supported      2   ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI Mobility Radeon HD 5400 Series                                                 supported      3   ATI Mobility Radeon HD 5400
 ATI Technologies Inc. ATI Mobility Radeon HD 540v                                                        supported      2   ATI Mobility Radeon HD 540v
-ATI Technologies Inc. ATI Mobility Radeon HD 5430                                                        supported      2   ATI Mobility Radeon HD 5400
-ATI Technologies Inc. ATI Mobility Radeon HD 5450                                                        supported      2   ATI Mobility Radeon HD 5400
-ATI Technologies Inc. ATI Mobility Radeon HD 5450 Series                                                 supported      2   ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI Mobility Radeon HD 5430                                                        supported      3   ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI Mobility Radeon HD 5450                                                        supported      3   ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI Mobility Radeon HD 5450 Series                                                 supported      3   ATI Mobility Radeon HD 5400
 ATI Technologies Inc. ATI Mobility Radeon HD 545v                                                        supported      2   ATI Mobility Radeon HD 545v
-ATI Technologies Inc. ATI Mobility Radeon HD 5470                                                        supported      2   ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI Mobility Radeon HD 5470                                                        supported      3   ATI Mobility Radeon HD 5400
 ATI Technologies Inc. ATI Mobility Radeon HD 550v                                                        supported      2   ATI Mobility Radeon HD 550v
-ATI Technologies Inc. ATI Mobility Radeon HD 5600/5700 Series                                            supported      2   ATI Mobility Radeon HD 5600
+ATI Technologies Inc. ATI Mobility Radeon HD 5600/5700 Series                                            supported      3   ATI Mobility Radeon HD 5600
 ATI Technologies Inc. ATI Mobility Radeon HD 560v                                                        supported      2   ATI Mobility Radeon HD 560v
-ATI Technologies Inc. ATI Mobility Radeon HD 5650                                                        supported      2   ATI Mobility Radeon HD 5600
+ATI Technologies Inc. ATI Mobility Radeon HD 5650                                                        supported      3   ATI Mobility Radeon HD 5600
 ATI Technologies Inc. ATI Mobility Radeon HD 5700 Series                                                 supported      3   ATI Mobility Radeon HD 5700
 ATI Technologies Inc. ATI Mobility Radeon HD 5730                                                        supported      3   ATI Mobility Radeon HD 5700
-ATI Technologies Inc. ATI Mobility Radeon HD 5800 Series                                                 supported      0   ATI Mobility Radeon
-ATI Technologies Inc. ATI Mobility Radeon HD 5850                                                        supported      0   ATI Mobility Radeon
-ATI Technologies Inc. ATI Mobility Radeon HD 5870                                                        supported      0   ATI Mobility Radeon
-ATI Technologies Inc. ATI Mobility Radeon HD 6300 series                                                 supported      2   ATI Mobility Radeon HD 6300
-ATI Technologies Inc. ATI Mobility Radeon HD 6370                                                        supported      2   ATI Mobility Radeon HD 6300
+ATI Technologies Inc. ATI Mobility Radeon HD 5800 Series                                                 supported      3   ATI Radeon HD 5800
+ATI Technologies Inc. ATI Mobility Radeon HD 5830 Series                                                 supported      3   ATI Radeon HD 5800
+ATI Technologies Inc. ATI Mobility Radeon HD 5850                                                        supported      3   ATI Radeon HD 5800
+ATI Technologies Inc. ATI Mobility Radeon HD 5870                                                        supported      3   ATI Radeon HD 5800
+ATI Technologies Inc. ATI Mobility Radeon HD 6300 series                                                 supported      3   ATI Mobility Radeon HD 6300
+ATI Technologies Inc. ATI Mobility Radeon HD 6370                                                        supported      3   ATI Mobility Radeon HD 6300
 ATI Technologies Inc. ATI Mobility Radeon HD 6470M                                                       supported      3   ATI Mobility Radeon HD 6400M
 ATI Technologies Inc. ATI Mobility Radeon HD 6550                                                        supported      3   ATI Mobility Radeon HD 6500M
 ATI Technologies Inc. ATI Mobility Radeon HD 6570                                                        supported      3   ATI Mobility Radeon HD 6500M
-ATI Technologies Inc. ATI Mobility Radeon X1300                                                          supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1300 x86/MMX/3DNow!/SSE2                                      supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1300 x86/SSE2                                                 supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1350                                                          supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1350 x86/SSE2                                                 supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1400                                                          supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1400 x86/SSE2                                                 supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1600                                                          supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1600 x86/SSE2                                                 supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X1700 x86/SSE2                                                 supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Mobility Radeon X2300                                                          supported      0   ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI Mobility Radeon X2300 (Omega 3.8.442)                                          supported      0   ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI Mobility Radeon X2300 x86                                                      supported      0   ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI Mobility Radeon X2300 x86/MMX/3DNow!/SSE2                                      supported      0   ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI Mobility Radeon X2300 x86/SSE2                                                 supported      0   ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI Mobility Radeon X2500                                                          supported      0   ATI Mobility Radeon X2xxx
-ATI Technologies Inc. ATI Mobility Radeon X2500 x86/SSE2                                                 supported      0   ATI Mobility Radeon X2xxx
+ATI Technologies Inc. ATI Mobility Radeon X1300                                                          supported      1   ATI Radeon X13xx
+ATI Technologies Inc. ATI Mobility Radeon X1300 x86/MMX/3DNow!/SSE2                                      supported      1   ATI Radeon X13xx
+ATI Technologies Inc. ATI Mobility Radeon X1300 x86/SSE2                                                 supported      1   ATI Radeon X13xx
+ATI Technologies Inc. ATI Mobility Radeon X1350                                                          supported      1   ATI Radeon X13xx
+ATI Technologies Inc. ATI Mobility Radeon X1350 x86/SSE2                                                 supported      1   ATI Radeon X13xx
+ATI Technologies Inc. ATI Mobility Radeon X1400                                                          supported      1   ATI Radeon X1xxx
+ATI Technologies Inc. ATI Mobility Radeon X1400 x86/SSE2                                                 supported      1   ATI Radeon X1xxx
+ATI Technologies Inc. ATI Mobility Radeon X1600                                                          supported      2   ATI Radeon X16xx
+ATI Technologies Inc. ATI Mobility Radeon X1600 x86/SSE2                                                 supported      2   ATI Radeon X16xx
+ATI Technologies Inc. ATI Mobility Radeon X1700 x86/SSE2                                                 supported      2   ATI Radeon X17xx
+ATI Technologies Inc. ATI Mobility Radeon X2300                                                          supported      1   ATI Radeon X2xxx
+ATI Technologies Inc. ATI Mobility Radeon X2300 (Omega 3.8.442)                                          supported      1   ATI Radeon X2xxx
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86                                                      supported      1   ATI Radeon X2xxx
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86/MMX/3DNow!/SSE2                                      supported      1   ATI Radeon X2xxx
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86/SSE2                                                 supported      1   ATI Radeon X2xxx
+ATI Technologies Inc. ATI Mobility Radeon X2500                                                          supported      1   ATI Radeon X2xxx
+ATI Technologies Inc. ATI Mobility Radeon X2500 x86/SSE2                                                 supported      1   ATI Radeon X2xxx
 ATI Technologies Inc. ATI Mobility Radeon. HD 530v                                                       supported      1   ATI Mobility Radeon HD 530v
-ATI Technologies Inc. ATI Mobility Radeon. HD 5470                                                       supported      2   ATI Mobility Radeon HD 5400
-ATI Technologies Inc. ATI RADEON HD 3200 T25XX by CAMILO                                                 supported      0   ATI Radeon HD 3200
+ATI Technologies Inc. ATI Mobility Radeon. HD 5470                                                       supported      3   ATI Mobility Radeon HD 5400
+ATI Technologies Inc. ATI RADEON HD 3200 T25XX by CAMILO                                                 supported      1   ATI Radeon HD 3200
 ATI Technologies Inc. ATI RADEON XPRESS 1100                                                             supported      0   ATI Radeon Xpress
+ATI Technologies Inc. ATI RADEON XPRESS 1100 x86/SSE2                                                    supported      0   ATI Radeon Xpress
 ATI Technologies Inc. ATI RADEON XPRESS 200 Series                                                       supported      0   ATI Radeon Xpress
 ATI Technologies Inc. ATI RADEON XPRESS 200 Series x86/SSE2                                              supported      0   ATI Radeon Xpress
 ATI Technologies Inc. ATI RADEON XPRESS 200M SERIES                                                      supported      0   ATI Radeon Xpress
@@ -341,14 +371,15 @@ ATI Technologies Inc. ATI Radeon 3000
 ATI Technologies Inc. ATI Radeon 3000 Graphics                                                           supported      0   ATI Radeon 3000
 ATI Technologies Inc. ATI Radeon 3100 Graphics                                                           supported      1   ATI Radeon 3100
 ATI Technologies Inc. ATI Radeon 5xxx series                                                             supported      3   ATI Radeon 5xxx
-ATI Technologies Inc. ATI Radeon 9550 / X1050 Series                                                     supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon 9550 / X1050 Series x86/MMX/3DNow!/SSE                                  supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon 9550 / X1050 Series x86/SSE2                                            supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon 9550 / X1050 Series(Microsoft - WDDM)                                   supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon 9600 / X1050 Series                                                     supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon 9600/9550/X1050 Series                                                  supported      0   ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series                                                     supported      0   ATI Radeon 9500
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series x86/MMX/3DNow!/SSE                                  supported      0   ATI Radeon 9500
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series x86/SSE2                                            supported      0   ATI Radeon 9500
+ATI Technologies Inc. ATI Radeon 9550 / X1050 Series(Microsoft - WDDM)                                   supported      0   ATI Radeon 9500
+ATI Technologies Inc. ATI Radeon 9600 / X1050 Series                                                     supported      0   ATI Radeon 9600
+ATI Technologies Inc. ATI Radeon 9600/9550/X1050 Series                                                  supported      0   ATI Radeon 9600
 ATI Technologies Inc. ATI Radeon BA Prototype OpenGL Engine                                              supported      0   ATI Technologies
 ATI Technologies Inc. ATI Radeon BB Prototype OpenGL Engine                                              supported      0   ATI Technologies
+ATI Technologies Inc. ATI Radeon Broadway XT Prototype OpenGL Engine                                     supported      0   ATI Technologies
 ATI Technologies Inc. ATI Radeon Cedar PRO Prototype OpenGL Engine                                       supported      2   AMD CEDAR (HD 5450)
 ATI Technologies Inc. ATI Radeon Cypress PRO Prototype OpenGL Engine                                     supported      3   AMD CYPRESS (HD 5800)
 ATI Technologies Inc. ATI Radeon Graphics Processor                                                      supported      0   ATI Technologies
@@ -370,7 +401,7 @@ ATI Technologies Inc. ATI Radeon HD 2600 Series
 ATI Technologies Inc. ATI Radeon HD 2600 XT                                                              supported      2   ATI Radeon HD 2600
 ATI Technologies Inc. ATI Radeon HD 2900 GT                                                              supported      3   ATI Radeon HD 2900
 ATI Technologies Inc. ATI Radeon HD 2900 XT                                                              supported      3   ATI Radeon HD 2900
-ATI Technologies Inc. ATI Radeon HD 3200 Graphics                                                        supported      0   ATI Radeon HD 3200
+ATI Technologies Inc. ATI Radeon HD 3200 Graphics                                                        supported      1   ATI Radeon HD 3200
 ATI Technologies Inc. ATI Radeon HD 3300 Graphics                                                        supported      1   ATI Radeon HD 3300
 ATI Technologies Inc. ATI Radeon HD 3400 Series                                                          supported      1   ATI Radeon HD 3400
 ATI Technologies Inc. ATI Radeon HD 3450                                                                 supported      1   ATI Radeon HD 3400
@@ -392,6 +423,7 @@ ATI Technologies Inc. ATI Radeon HD 4250
 ATI Technologies Inc. ATI Radeon HD 4250 Graphics                                                        supported      1   ATI Radeon HD 4200
 ATI Technologies Inc. ATI Radeon HD 4270                                                                 supported      1   ATI Radeon HD 4200
 ATI Technologies Inc. ATI Radeon HD 4290                                                                 supported      1   ATI Radeon HD 4200
+ATI Technologies Inc. ATI Radeon HD 4290 (Engineering Sample)                                            supported      1   ATI Radeon HD 4200
 ATI Technologies Inc. ATI Radeon HD 4300 Series                                                          supported      1   ATI Radeon HD 4300
 ATI Technologies Inc. ATI Radeon HD 4300/4500 Series                                                     supported      1   ATI Radeon HD 4300
 ATI Technologies Inc. ATI Radeon HD 4350                                                                 supported      1   ATI Radeon HD 4300
@@ -418,9 +450,11 @@ ATI Technologies Inc. ATI Radeon HD 4870 OpenGL Engine
 ATI Technologies Inc. ATI Radeon HD 4870 X2                                                              supported      3   ATI Radeon HD 4800
 ATI Technologies Inc. ATI Radeon HD 5400 Series                                                          supported      3   ATI Radeon HD 5400
 ATI Technologies Inc. ATI Radeon HD 5450                                                                 supported      3   ATI Radeon HD 5400
+ATI Technologies Inc. ATI Radeon HD 5470                                                                 supported      3   ATI Radeon HD 5400
 ATI Technologies Inc. ATI Radeon HD 5500 Series                                                          supported      3   ATI Radeon HD 5500
 ATI Technologies Inc. ATI Radeon HD 5570                                                                 supported      3   ATI Radeon HD 5500
 ATI Technologies Inc. ATI Radeon HD 5600 Series                                                          supported      3   ATI Radeon HD 5600
+ATI Technologies Inc. ATI Radeon HD 5600/5700                                                            supported      3   ATI Radeon HD 5600
 ATI Technologies Inc. ATI Radeon HD 5630                                                                 supported      3   ATI Radeon HD 5600
 ATI Technologies Inc. ATI Radeon HD 5670                                                                 supported      3   ATI Radeon HD 5600
 ATI Technologies Inc. ATI Radeon HD 5670 OpenGL Engine                                                   supported      3   ATI Radeon HD 5600
@@ -435,13 +469,14 @@ ATI Technologies Inc. ATI Radeon HD 5870
 ATI Technologies Inc. ATI Radeon HD 5870 OpenGL Engine                                                   supported      3   ATI Radeon HD 5800
 ATI Technologies Inc. ATI Radeon HD 5900 Series                                                          supported      3   ATI Radeon HD 5900
 ATI Technologies Inc. ATI Radeon HD 5970                                                                 supported      3   ATI Radeon HD 5900
-ATI Technologies Inc. ATI Radeon HD 6230                                                                 supported      2   ATI Radeon HD 6200
-ATI Technologies Inc. ATI Radeon HD 6250                                                                 supported      2   ATI Radeon HD 6200
-ATI Technologies Inc. ATI Radeon HD 6350                                                                 supported      2   ATI Radeon HD 6300
-ATI Technologies Inc. ATI Radeon HD 6390                                                                 supported      2   ATI Radeon HD 6300
+ATI Technologies Inc. ATI Radeon HD 6230                                                                 supported      3   ATI Radeon HD 6200
+ATI Technologies Inc. ATI Radeon HD 6250                                                                 supported      3   ATI Radeon HD 6200
+ATI Technologies Inc. ATI Radeon HD 6350                                                                 supported      3   ATI Radeon HD 6300
+ATI Technologies Inc. ATI Radeon HD 6390                                                                 supported      3   ATI Radeon HD 6300
 ATI Technologies Inc. ATI Radeon HD 6490M OpenGL Engine                                                  supported      3   ATI Radeon HD 6400
 ATI Technologies Inc. ATI Radeon HD 6510                                                                 supported      3   ATI Radeon HD 6500
 ATI Technologies Inc. ATI Radeon HD 6570M                                                                supported      3   ATI Radeon HD 6500
+ATI Technologies Inc. ATI Radeon HD 6630M OpenGL Engine                                                  supported      3   ATI Radeon HD 6600
 ATI Technologies Inc. ATI Radeon HD 6750                                                                 supported      3   ATI Radeon HD 6700
 ATI Technologies Inc. ATI Radeon HD 6750M OpenGL Engine                                                  supported      3   ATI Radeon HD 6700
 ATI Technologies Inc. ATI Radeon HD 6770                                                                 supported      3   ATI Radeon HD 6700
@@ -459,21 +494,21 @@ ATI Technologies Inc. ATI Radeon RV790 Prototype OpenGL Engine
 ATI Technologies Inc. ATI Radeon Redwood PRO Prototype OpenGL Engine                                     supported      3   AMD REDWOOD (HD 5500/5600)
 ATI Technologies Inc. ATI Radeon Redwood XT Prototype OpenGL Engine                                      supported      3   AMD REDWOOD (HD 5500/5600)
 ATI Technologies Inc. ATI Radeon Whistler PRO/LP Prototype OpenGL Engine                                 supported      0   ATI Technologies
-ATI Technologies Inc. ATI Radeon X1050                                                                   supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1050 Series                                                            supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1200                                                                   supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1200 Series                                                            supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1200 Series x86/MMX/3DNow!/SSE2                                        supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1250                                                                   supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1250 x86/MMX/3DNow!/SSE2                                               supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1270                                                                   supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1270 x86/MMX/3DNow!/SSE2                                               supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1300/X1550 Series                                                      supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1550 Series                                                            supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1600 OpenGL Engine                                                     supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1900 OpenGL Engine                                                     supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X1950 GT                                                                supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. ATI Radeon X300/X550/X1050 Series                                                  supported      0   ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1050                                                                   supported      1   ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1050 Series                                                            supported      1   ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1200                                                                   supported      1   ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1200 Series                                                            supported      1   ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1200 Series x86/MMX/3DNow!/SSE2                                        supported      1   ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1250                                                                   supported      1   ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1250 x86/MMX/3DNow!/SSE2                                               supported      1   ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1270                                                                   supported      1   ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1270 x86/MMX/3DNow!/SSE2                                               supported      1   ATI Radeon X1xxx
+ATI Technologies Inc. ATI Radeon X1300/X1550 Series                                                      supported      1   ATI Radeon X13xx
+ATI Technologies Inc. ATI Radeon X1550 Series                                                            supported      2   ATI Radeon X15xx
+ATI Technologies Inc. ATI Radeon X1600 OpenGL Engine                                                     supported      2   ATI Radeon X16xx
+ATI Technologies Inc. ATI Radeon X1900 OpenGL Engine                                                     supported      3   ATI Radeon X19xx
+ATI Technologies Inc. ATI Radeon X1950 GT                                                                supported      3   ATI Radeon X19xx
+ATI Technologies Inc. ATI Radeon X300/X550/X1050 Series                                                  supported      0   ATI Radeon X300
 ATI Technologies Inc. ATI Radeon Xpress 1100                                                             supported      0   ATI Radeon Xpress
 ATI Technologies Inc. ATI Radeon Xpress 1150                                                             supported      0   ATI Radeon Xpress
 ATI Technologies Inc. ATI Radeon Xpress 1150 x86/MMX/3DNow!/SSE2                                         supported      0   ATI Radeon Xpress
@@ -482,18 +517,21 @@ ATI Technologies Inc. ATI Radeon Xpress 1200 Series
 ATI Technologies Inc. ATI Radeon Xpress 1200 Series x86/MMX/3DNow!/SSE2                                  supported      0   ATI Radeon Xpress
 ATI Technologies Inc. ATI Radeon Xpress 1200 x86/MMX/3DNow!/SSE2                                         supported      0   ATI Radeon Xpress
 ATI Technologies Inc. ATI Radeon Xpress 1250                                                             supported      0   ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon Xpress 1250 x86/MMX/3DNow!/SSE2                                         supported      0   ATI Radeon Xpress
 ATI Technologies Inc. ATI Radeon Xpress 1250 x86/SSE2                                                    supported      0   ATI Radeon Xpress
 ATI Technologies Inc. ATI Radeon Xpress Series                                                           supported      0   ATI Radeon Xpress
+ATI Technologies Inc. ATI Radeon Xpress Series x86/MMX/3DNow!/SSE2                                       supported      0   ATI Radeon Xpress
 ATI Technologies Inc. ATI Yamaha HD 9000                                                                 supported      0   ATI Technologies
 ATI Technologies Inc. ATi RS880M                                                                         supported      1   ATI RS880M
 ATI Technologies Inc. Carte graphique VGA standard                                                       supported      0   ATI Technologies
-ATI Technologies Inc. Diamond Radeon X1550 Series                                                        supported      0   ATI Radeon X1xxx
+ATI Technologies Inc. Diamond Radeon X1550 Series                                                        supported      2   ATI Radeon X15xx
 ATI Technologies Inc. EG JUNIPER                                                                         supported      3   AMD JUNIPER (HD 5700)
 ATI Technologies Inc. EG PARK                                                                            supported      3   AMD PARK
 ATI Technologies Inc. FireGL V3100 Pentium 4 (SSE2)                                                      supported      0   ATI FireGL
 ATI Technologies Inc. FireMV 2400 PCI DDR x86                                                            supported      0   ATI FireMV
 ATI Technologies Inc. FireMV 2400 PCI DDR x86/SSE2                                                       supported      0   ATI FireMV
-ATI Technologies Inc. GeCube Radeon X1550                                                                supported      0   ATI Radeon X1xxx
+ATI Technologies Inc. GeCube Radeon X1550                                                                supported      2   ATI Radeon X15xx
+ATI Technologies Inc. GeForce 9600 GT      x86/SSE2                                                      supported      2   ATI Geforce 9600 GT
 ATI Technologies Inc. Geforce 9500 GT                                                                    supported      2   ATI Geforce 9500 GT
 ATI Technologies Inc. Geforce 9500GT                                                                     supported      2   ATI Geforce 9500 GT
 ATI Technologies Inc. Geforce 9800 GT                                                                    supported      2   ATI Geforce 9800 GT
@@ -502,18 +540,22 @@ ATI Technologies Inc. HIGHTECH EXCALIBUR RADEON 9550SE Series
 ATI Technologies Inc. HIGHTECH EXCALIBUR X700 PRO                                                        supported      0   ATI Technologies
 ATI Technologies Inc. M21 x86/MMX/3DNow!/SSE2                                                            supported      0   ATI Technologies
 ATI Technologies Inc. M76M                                                                               supported      3   ATI M76
-ATI Technologies Inc. MOBILITY RADEON 7500 DDR x86/SSE2                                                  supported      0   ATI Mobility Radeon
-ATI Technologies Inc. MOBILITY RADEON 9000 DDR x86/SSE2                                                  supported      0   ATI Mobility Radeon
-ATI Technologies Inc. MOBILITY RADEON 9000 IGPRADEON 9100 IGP DDR x86/SSE2                               supported      0   ATI Mobility Radeon
+ATI Technologies Inc. MOBILITY RADEON 7500 DDR x86/SSE2                                                  supported      0   ATI Mobility Radeon 7xxx
+ATI Technologies Inc. MOBILITY RADEON 9000 DDR x86/SSE2                                                  supported      0   ATI Radeon 9000
+ATI Technologies Inc. MOBILITY RADEON 9000 IGPRADEON 9100 IGP DDR x86/SSE2                               supported      0   ATI Radeon 9000
+ATI Technologies Inc. MOBILITY RADEON 9100 IGP DDR x86/SSE2                                              supported      0   ATI Radeon 9100
 ATI Technologies Inc. MOBILITY RADEON 9600 x86/SSE2                                                      supported      0   ATI Mobility Radeon 9600
 ATI Technologies Inc. MOBILITY RADEON 9700 x86/SSE2                                                      supported      1   ATI Mobility Radeon 9700
-ATI Technologies Inc. MOBILITY RADEON X300 x86/SSE2                                                      supported      1   ATI Mobility Radeon X3xx
-ATI Technologies Inc. MOBILITY RADEON X600 x86/SSE2                                                      supported      1   ATI Mobility Radeon X6xx
-ATI Technologies Inc. MOBILITY RADEON X700 SE x86                                                        supported      1   ATI Mobility Radeon X7xx
-ATI Technologies Inc. MOBILITY RADEON X700 x86/SSE2                                                      supported      1   ATI Mobility Radeon X7xx
+ATI Technologies Inc. MOBILITY RADEON X300 x86/SSE2                                                      supported      0   ATI Radeon X300
+ATI Technologies Inc. MOBILITY RADEON X600 x86/SSE2                                                      supported      1   ATI Radeon X600
+ATI Technologies Inc. MOBILITY RADEON X700 SE x86                                                        supported      1   ATI Radeon X700
+ATI Technologies Inc. MOBILITY RADEON X700 x86/SSE2                                                      supported      1   ATI Radeon X700
+ATI Technologies Inc. MOBILITY RADEON Xpress 200 Series SW TCL x86/MMX/3DNow!/SSE2                       supported      0   ATI Radeon Xpress
 ATI Technologies Inc. MSI RX9550SE                                                                       supported      1   ATI Radeon RX9550
-ATI Technologies Inc. Mobility Radeon X2300 HD                                                           supported      0   ATI Mobility Radeon X2xxx
-ATI Technologies Inc. Mobility Radeon X2300 HD x86/SSE2                                                  supported      0   ATI Mobility Radeon X2xxx
+ATI Technologies Inc. MSI Radeon X1550 Series                                                            supported      2   ATI Radeon X15xx
+ATI Technologies Inc. Mobility Radeon HD 6000 series                                                     supported      0   ATI Technologies
+ATI Technologies Inc. Mobility Radeon X2300 HD                                                           supported      1   ATI Radeon X2xxx
+ATI Technologies Inc. Mobility Radeon X2300 HD x86/SSE2                                                  supported      1   ATI Radeon X2xxx
 ATI Technologies Inc. RADEON 7000 DDR x86/MMX/3DNow!/SSE                                                 supported      0   ATI Radeon 7xxx
 ATI Technologies Inc. RADEON 7000 DDR x86/SSE2                                                           supported      0   ATI Radeon 7xxx
 ATI Technologies Inc. RADEON 7500 DDR x86/MMX/3DNow!/SSE2                                                supported      0   ATI Radeon 7xxx
@@ -535,6 +577,7 @@ ATI Technologies Inc. RADEON 9500
 ATI Technologies Inc. RADEON 9550 x86/SSE2                                                               supported      0   ATI Radeon 9500
 ATI Technologies Inc. RADEON 9600 SERIES                                                                 supported      0   ATI Radeon 9600
 ATI Technologies Inc. RADEON 9600 SERIES x86/MMX/3DNow!/SSE2                                             supported      0   ATI Radeon 9600
+ATI Technologies Inc. RADEON 9600 SERIES x86/SSE2                                                        supported      0   ATI Radeon 9600
 ATI Technologies Inc. RADEON 9600 TX x86/SSE2                                                            supported      0   ATI Radeon 9600
 ATI Technologies Inc. RADEON 9600 x86/MMX/3DNow!/SSE2                                                    supported      0   ATI Radeon 9600
 ATI Technologies Inc. RADEON 9600 x86/SSE2                                                               supported      0   ATI Radeon 9600
@@ -549,8 +592,10 @@ ATI Technologies Inc. RADEON X550 x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. RADEON X550 x86/SSE2                                                               supported      0   ATI Radeon X500
 ATI Technologies Inc. RADEON X600 Series                                                                 supported      1   ATI Radeon X600
 ATI Technologies Inc. RADEON X600 x86/SSE2                                                               supported      1   ATI Radeon X600
+ATI Technologies Inc. RADEON X600/X550 Series                                                            supported      1   ATI Radeon X600
 ATI Technologies Inc. RADEON X700 PRO x86/SSE2                                                           supported      1   ATI Radeon X700
 ATI Technologies Inc. RADEON X800 SE x86/MMX/3DNow!/SSE2                                                 supported      2   ATI Radeon X800
+ATI Technologies Inc. RADEON X800 XT                                                                     supported      2   ATI Radeon X800
 ATI Technologies Inc. RADEON X800GT                                                                      supported      2   ATI Radeon X800
 ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/MMX/3DNow!/SSE2                                supported      0   ATI Radeon Xpress
 ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/SSE2                                           supported      0   ATI Radeon Xpress
@@ -569,7 +614,10 @@ ATI Technologies Inc. RV410 Pro x86/SSE2
 ATI Technologies Inc. RV790                                                                              supported      3   AMD RV790 (HD 4800)
 ATI Technologies Inc. Radeon (TM) HD 6470M                                                               supported      0   ATI Technologies
 ATI Technologies Inc. Radeon (TM) HD 6490M                                                               supported      0   ATI Technologies
+ATI Technologies Inc. Radeon (TM) HD 6750M                                                               supported      0   ATI Technologies
 ATI Technologies Inc. Radeon (TM) HD 6770M                                                               supported      0   ATI Technologies
+ATI Technologies Inc. Radeon (TM) HD 6850M                                                               supported      0   ATI Technologies
+ATI Technologies Inc. Radeon 7000 DDR x86/SSE                                                            supported      0   ATI Radeon 7xxx
 ATI Technologies Inc. Radeon 7000 DDR x86/SSE2                                                           supported      0   ATI Radeon 7xxx
 ATI Technologies Inc. Radeon 7000 SDR x86/SSE2                                                           supported      0   ATI Radeon 7xxx
 ATI Technologies Inc. Radeon 7500 DDR x86/SSE2                                                           supported      0   ATI Radeon 7xxx
@@ -577,37 +625,43 @@ ATI Technologies Inc. Radeon 9000 DDR x86/SSE2
 ATI Technologies Inc. Radeon DDR x86/MMX/3DNow!/SSE2                                                     supported      0   ATI Radeon DDR
 ATI Technologies Inc. Radeon DDR x86/SSE                                                                 supported      0   ATI Radeon DDR
 ATI Technologies Inc. Radeon DDR x86/SSE2                                                                supported      0   ATI Radeon DDR
-ATI Technologies Inc. Radeon HD 6310                                                                     supported      2   ATI Radeon HD 6300
+ATI Technologies Inc. Radeon HD 6310                                                                     supported      3   ATI Radeon HD 6300
+ATI Technologies Inc. Radeon HD 6470M                                                                    supported      3   ATI Radeon HD 6400
+ATI Technologies Inc. Radeon HD 6490M                                                                    supported      3   ATI Radeon HD 6400
 ATI Technologies Inc. Radeon HD 6800 Series                                                              supported      3   ATI Radeon HD 6800
 ATI Technologies Inc. Radeon SDR x86/SSE2                                                                supported      0   ATI Technologies
-ATI Technologies Inc. Radeon X1300 Series                                                                supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1300 Series x86/MMX/3DNow!/SSE2                                            supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1300 Series x86/SSE2                                                       supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1300/X1550 Series                                                          supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1300/X1550 Series x86/SSE2                                                 supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1550 64-bit (Microsoft - WDDM)                                             supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1550 Series                                                                supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1550 Series x86/SSE2                                                       supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1600                                                                       supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1600 Pro / X1300XT x86/MMX/3DNow!/SSE2                                     supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1600 Series x86/SSE2                                                       supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1600/X1650 Series                                                          supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1650 Series                                                                supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1650 Series x86/MMX/3DNow!/SSE2                                            supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1650 Series x86/SSE2                                                       supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1900 Series x86/MMX/3DNow!/SSE2                                            supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1950 Pro                                                                   supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1950 Pro x86/MMX/3DNow!/SSE2                                               supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1950 Series                                                                supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X1950 Series  (Microsoft - WDDM)                                            supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. Radeon X300/X550/X1050 Series                                                      supported      0   ATI Radeon X1xxx
+ATI Technologies Inc. Radeon X1300 Series                                                                supported      1   ATI Radeon X13xx
+ATI Technologies Inc. Radeon X1300 Series x86/MMX/3DNow!/SSE2                                            supported      1   ATI Radeon X13xx
+ATI Technologies Inc. Radeon X1300 Series x86/SSE2                                                       supported      1   ATI Radeon X13xx
+ATI Technologies Inc. Radeon X1300/X1550 Series                                                          supported      1   ATI Radeon X13xx
+ATI Technologies Inc. Radeon X1300/X1550 Series x86/SSE2                                                 supported      1   ATI Radeon X13xx
+ATI Technologies Inc. Radeon X1550 64-bit (Microsoft - WDDM)                                             supported      2   ATI Radeon X15xx
+ATI Technologies Inc. Radeon X1550 Series                                                                supported      2   ATI Radeon X15xx
+ATI Technologies Inc. Radeon X1550 Series x86/SSE2                                                       supported      2   ATI Radeon X15xx
+ATI Technologies Inc. Radeon X1600                                                                       supported      2   ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1600 Pro / X1300XT x86/MMX/3DNow!/SSE2                                     supported      2   ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1600 Series                                                                supported      2   ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1600 Series x86/SSE2                                                       supported      2   ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1600/1650 Series                                                           supported      2   ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1600/X1650 Series                                                          supported      2   ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1650 Series                                                                supported      2   ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1650 Series x86/MMX/3DNow!/SSE2                                            supported      2   ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1650 Series x86/SSE2                                                       supported      2   ATI Radeon X16xx
+ATI Technologies Inc. Radeon X1900 Series x86/MMX/3DNow!/SSE2                                            supported      3   ATI Radeon X19xx
+ATI Technologies Inc. Radeon X1950 Pro                                                                   supported      3   ATI Radeon X19xx
+ATI Technologies Inc. Radeon X1950 Pro x86/MMX/3DNow!/SSE2                                               supported      3   ATI Radeon X19xx
+ATI Technologies Inc. Radeon X1950 Series                                                                supported      3   ATI Radeon X19xx
+ATI Technologies Inc. Radeon X1950 Series  (Microsoft - WDDM)                                            supported      3   ATI Radeon X19xx
+ATI Technologies Inc. Radeon X300/X550/X1050 Series                                                      supported      0   ATI Radeon X300
 ATI Technologies Inc. Radeon X550/X700 Series                                                            supported      0   ATI Radeon X500
 ATI Technologies Inc. Radeon X550XTX x86/MMX/3DNow!/SSE2                                                 supported      0   ATI Radeon X500
 ATI Technologies Inc. SAPPHIRE RADEON X300SE                                                             supported      0   ATI Radeon X300
 ATI Technologies Inc. SAPPHIRE RADEON X300SE x86/MMX/3DNow!/SSE2                                         supported      0   ATI Radeon X300
 ATI Technologies Inc. SAPPHIRE RADEON X300SE x86/SSE2                                                    supported      0   ATI Radeon X300
-ATI Technologies Inc. SAPPHIRE Radeon X1550 Series                                                       supported      0   ATI Radeon X1xxx
-ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/MMX/3DNow!/SSE2                                   supported      0   ATI Radeon X1xxx
+ATI Technologies Inc. SAPPHIRE Radeon X1550 Series                                                       supported      2   ATI Radeon X15xx
+ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/MMX/3DNow!/SSE2                                   supported      2   ATI Radeon X15xx
+ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/SSE2                                              supported      2   ATI Radeon X15xx
+ATI Technologies Inc. SAPPHIRE Radeon X1550 x86/SSE2                                                     supported      2   ATI Radeon X15xx
 ATI Technologies Inc. Sapphire Radeon HD 3730                                                            supported      3   ATI Radeon HD 3700
 ATI Technologies Inc. Sapphire Radeon HD 3750                                                            supported      3   ATI Radeon HD 3700
 ATI Technologies Inc. Standard VGA Graphics Adapter                                                      supported      0   ATI Technologies
@@ -616,7 +670,7 @@ ATI Technologies Inc. Tul, RADEON  X600 PRO x86/SSE2
 ATI Technologies Inc. Tul, RADEON  X700 PRO                                                              supported      0   ATI Technologies
 ATI Technologies Inc. Tul, RADEON  X700 PRO x86/MMX/3DNow!/SSE2                                          supported      0   ATI Technologies
 ATI Technologies Inc. VisionTek Radeon 4350                                                              supported      0   ATI Technologies
-ATI Technologies Inc. VisionTek Radeon X1550 Series                                                      supported      0   ATI Radeon X1xxx
+ATI Technologies Inc. VisionTek Radeon X1550 Series                                                      supported      2   ATI Radeon X15xx
 ATI Technologies Inc. WRESTLER 9802                                                                      supported      0   ATI Technologies
 ATI Technologies Inc. WRESTLER 9803                                                                      supported      0   ATI Technologies
 ATI Technologies Inc. XFX Radeon HD 4570                                                                 supported      3   ATI Radeon HD 4500
@@ -632,13 +686,14 @@ Advanced Micro Devices, Inc. Mesa DRI R600 (RV620 95C5) 20090101 x86/MMX+/3DNow!
 Advanced Micro Devices, Inc. Mesa DRI R600 (RV620 95C5) 20090101 x86/MMX/SSE2 TCL DRI2                   supported      1   AMD RV620 (HD 3400)
 Advanced Micro Devices, Inc. Mesa DRI R600 (RV635 9596) 20090101 x86/MMX+/3DNow!+/SSE TCL DRI2           supported      3   AMD RV635 (HD 3600)
 Advanced Micro Devices, Inc. Mesa DRI R600 (RV670 9505) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2          supported      3   AMD RV670 (HD 3800)
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV670 9505) 20090101 x86/MMX/SSE2 TCL DRI2                   supported      3   AMD RV670 (HD 3800)
 Advanced Micro Devices, Inc. Mesa DRI R600 (RV710 9552) 20090101 x86/MMX/SSE2 TCL DRI2                   supported      1   AMD RV710 (HD 4300)
 Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9490) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2          supported      3   AMD RV730 (HD 4600)
 Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9490) 20090101 x86/MMX/SSE2 TCL DRI2                   supported      3   AMD RV730 (HD 4600)
 Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9498) 20090101  TCL DRI2                               supported      3   AMD RV730 (HD 4600)
 Advanced Micro Devices, Inc. Mesa DRI R600 (RV770 9440) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2          supported      3   AMD RV770 (HD 4800)
 Advanced Micro Devices, Inc. Mesa DRI R600 (RV770 9442) 20090101 x86/MMX/SSE2 TCL DRI2                   supported      3   AMD RV770 (HD 4800)
-Alex Mohr GL Hijacker!                                                                                                      UNRECOGNIZED
+Alex Mohr GL Hijacker!                                                                                                      NO MATCH
 Apple Software Renderer                                                                                  unsupported    0   Apple Software Renderer
 DRI R300 Project Mesa DRI R300 (RS400 5954) 20090101 x86/MMX+/3DNow!+/SSE2 NO-TCL DRI2                   supported      1   ATI R300 (9700)
 DRI R300 Project Mesa DRI R300 (RS400 5975) 20090101 x86/MMX+/3DNow!+/SSE2 NO-TCL DRI2                   supported      1   ATI R300 (9700)
@@ -658,13 +713,15 @@ DRI R300 Project Mesa DRI R300 (RV515 7149) 20090101 x86/MMX/SSE2 TCL DRI2
 DRI R300 Project Mesa DRI R300 (RV515 714A) 20090101 x86/MMX/SSE2 TCL                                    supported      1   ATI RV515
 DRI R300 Project Mesa DRI R300 (RV515 714A) 20090101 x86/MMX/SSE2 TCL DRI2                               supported      1   ATI RV515
 DRI R300 Project Mesa DRI R300 (RV530 71C4) 20090101 x86/MMX/SSE2 TCL DRI2                               supported      1   ATI RV530
-GPU_CLASS_UNKNOWN                                                                                                           UNRECOGNIZED
-Humper Chromium                                                                                                             UNRECOGNIZED
-Intel                                                                                                                       UNRECOGNIZED
+GPU_CLASS_UNKNOWN                                                                                                           NO MATCH
+Humper 3D-Analyze v2.3 - http://www.tommti-systems.com                                                   supported      0   Humper
+Humper Chromium                                                                                          supported      0   Humper
+Imagination Technologies PowerVR SGX545                                                                                     NO MATCH
+Intel                                                                                                                       NO MATCH
 Intel  HD Graphics Family                                                                                supported      2   Intel HD Graphics
-Intel 3D-Analyze v2.2 - http://www.tommti-systems.com                                                                       UNRECOGNIZED
-Intel 3D-Analyze v2.3 - http://www.tommti-systems.com                                                                       UNRECOGNIZED
-Intel 4 Series Internal Chipset                                                                                             UNRECOGNIZED
+Intel 3D-Analyze v2.2 - http://www.tommti-systems.com                                                                       NO MATCH
+Intel 3D-Analyze v2.3 - http://www.tommti-systems.com                                                                       NO MATCH
+Intel 4 Series Internal Chipset                                                                                             NO MATCH
 Intel 830M                                                                                               unsupported    0   Intel 830M
 Intel 845G                                                                                               unsupported    0   Intel 845G
 Intel 855GM                                                                                              unsupported    0   Intel 855GM
@@ -675,13 +732,14 @@ Intel 945G
 Intel 945GM                                                                                              supported      0   Intel 945GM
 Intel 950                                                                                                supported      0   Intel 950
 Intel 965                                                                                                supported      0   Intel 965
-Intel B43 Express Chipset                                                                                                   UNRECOGNIZED
+Intel B43 Express Chipset                                                                                                   NO MATCH
 Intel Bear Lake                                                                                          unsupported    0   Intel Bear Lake
 Intel Broadwater                                                                                         unsupported    0   Intel Broadwater
 Intel Brookdale                                                                                          unsupported    0   Intel Brookdale
 Intel Cantiga                                                                                            unsupported    0   Intel Cantiga
+Intel EMGD on PowerVR SGX535                                                                                                NO MATCH
 Intel Eaglelake                                                                                          supported      0   Intel Eaglelake
-Intel Familia Mobile 45 Express Chipset (Microsoft Corporation - WDDM 1.1)                                                  UNRECOGNIZED
+Intel Familia Mobile 45 Express Chipset (Microsoft Corporation - WDDM 1.1)                                                  NO MATCH
 Intel G33                                                                                                unsupported    0   Intel G33
 Intel G41                                                                                                supported      0   Intel G41
 Intel G41 Express Chipset                                                                                supported      0   Intel G41
@@ -710,12 +768,12 @@ Intel HD Graphics Family BR-1012-00Y8
 Intel HD Graphics Family BR-1012-00YF                                                                    supported      2   Intel HD Graphics
 Intel HD Graphics Family BR-1012-00ZD                                                                    supported      2   Intel HD Graphics
 Intel HD Graphics Family BR-1102-00ML                                                                    supported      2   Intel HD Graphics
-Intel Inc. Intel GMA 900 OpenGL Engine                                                                                      UNRECOGNIZED
+Intel Inc. Intel GMA 900 OpenGL Engine                                                                                      NO MATCH
 Intel Inc. Intel GMA 950 OpenGL Engine                                                                   supported      0   Intel 950
 Intel Inc. Intel GMA X3100 OpenGL Engine                                                                 supported      0   Intel X3100
 Intel Inc. Intel HD Graphics 3000 OpenGL Engine                                                          supported      2   Intel HD Graphics
 Intel Inc. Intel HD Graphics OpenGL Engine                                                               supported      2   Intel HD Graphics
-Intel Inc. Intel HD xxxx OpenGL Engine                                                                                      UNRECOGNIZED
+Intel Inc. Intel HD xxxx OpenGL Engine                                                                                      NO MATCH
 Intel Intel 845G                                                                                         unsupported    0   Intel 845G
 Intel Intel 855GM                                                                                        unsupported    0   Intel 855GM
 Intel Intel 865G                                                                                         unsupported    0   Intel 865G
@@ -727,39 +785,42 @@ Intel Intel 965/963 Graphics Media Accelerator
 Intel Intel Bear Lake B                                                                                  unsupported    0   Intel Bear Lake
 Intel Intel Broadwater G                                                                                 unsupported    0   Intel Broadwater
 Intel Intel Brookdale-G                                                                                  unsupported    0   Intel Brookdale
-Intel Intel Calistoga                                                                                                       UNRECOGNIZED
+Intel Intel Calistoga                                                                                                       NO MATCH
 Intel Intel Cantiga                                                                                      unsupported    0   Intel Cantiga
 Intel Intel Eaglelake                                                                                    supported      0   Intel Eaglelake
-Intel Intel Grantsdale-G                                                                                                    UNRECOGNIZED
+Intel Intel Generic Renderer                                                                                                NO MATCH
+Intel Intel Grantsdale-G                                                                                                    NO MATCH
 Intel Intel HD Graphics 3000                                                                             supported      2   Intel HD Graphics
-Intel Intel Lakeport                                                                                                        UNRECOGNIZED
+Intel Intel Lakeport                                                                                                        NO MATCH
 Intel Intel Montara-GM                                                                                   unsupported    0   Intel Montara
 Intel Intel Pineview Platform                                                                            supported      0   Intel Pineview
 Intel Intel Springdale-G                                                                                 unsupported    0   Intel Springdale
-Intel Mobile - famiglia Express Chipset 45 (Microsoft Corporation - WDDM 1.1)                                               UNRECOGNIZED
+Intel Mobile - famiglia Express Chipset 45 (Microsoft Corporation - WDDM 1.1)                                               NO MATCH
 Intel Mobile 4 Series                                                                                    supported      0   Intel Mobile 4 Series
 Intel Mobile 4 Series Express Chipset Family                                                             supported      0   Intel Mobile 4 Series
-Intel Mobile 45 Express Chipset Family (Microsoft Corporation - WDDM 1.1)                                                   UNRECOGNIZED
+Intel Mobile 45 Express Chipset Family                                                                                      NO MATCH
+Intel Mobile 45 Express Chipset Family (Microsoft Corporation - WDDM 1.1)                                                   NO MATCH
 Intel Mobile HD Graphics                                                                                 supported      2   Intel HD Graphics
+Intel Mobile Intel(R) 4 Series Express Chipset Family                                                    supported      0   Intel Mobile 4 Series
 Intel Mobile SandyBridge HD Graphics                                                                     supported      2   Intel HD Graphics
 Intel Montara                                                                                            unsupported    0   Intel Montara
 Intel Pineview                                                                                           supported      0   Intel Pineview
-Intel Q45/Q43 Express Chipset                                                                                               UNRECOGNIZED
-Intel Royal BNA Driver                                                                                                      UNRECOGNIZED
+Intel Q45/Q43 Express Chipset                                                                                               NO MATCH
+Intel Royal BNA Driver                                                                                                      NO MATCH
 Intel SandyBridge HD Graphics                                                                            supported      2   Intel HD Graphics
 Intel SandyBridge HD Graphics BR-1006-00V8                                                               supported      2   Intel HD Graphics
 Intel Springdale                                                                                         unsupported    0   Intel Springdale
 Intel X3100                                                                                              supported      0   Intel X3100
-Intergraph wcgdrv 06.05.06.18                                                                                               UNRECOGNIZED
-Intergraph wcgdrv 06.06.00.35                                                                                               UNRECOGNIZED
-LegendgrafiX Mobile 945 Express C/TitaniumGL/GAC/D3D ACCELERATION/6x86/1 THREADs | http://Legendgra...                      UNRECOGNIZED
+Intergraph wcgdrv 06.05.06.18                                                                                               NO MATCH
+Intergraph wcgdrv 06.06.00.35                                                                                               NO MATCH
+LegendgrafiX Mobile 945 Express C/TitaniumGL/GAC/D3D ACCELERATION/6x86/1 THREADs | http://Legendgra...                      NO MATCH
 LegendgrafiX NVIDIA GeForce GT 430/TitaniumGL/GAC/D3D ACCELERATION/6x86/1 THREADs | http://Legendgr...   supported      3   NVIDIA GT 430M
-Linden Lab Headless                                                                                                         UNRECOGNIZED
+Linden Lab Headless                                                                                                         NO MATCH
 Matrox                                                                                                   unsupported    0   Matrox
 Mesa                                                                                                     unsupported    0   Mesa
 Mesa Project Software Rasterizer                                                                         unsupported    0   Mesa
-NVIDIA /PCI/SSE2                                                                                                            UNRECOGNIZED
-NVIDIA /PCI/SSE2/3DNOW!                                                                                                     UNRECOGNIZED
+NVIDIA /PCI/SSE2                                                                                                            NO MATCH
+NVIDIA /PCI/SSE2/3DNOW!                                                                                                     NO MATCH
 NVIDIA 205                                                                                               supported      0   NVIDIA G 205M
 NVIDIA 210                                                                                               supported      1   NVIDIA G 210
 NVIDIA 310                                                                                               supported      2   NVIDIA G 310M
@@ -768,21 +829,25 @@ NVIDIA 315
 NVIDIA 315M                                                                                              supported      2   NVIDIA G 315
 NVIDIA 320M                                                                                              supported      2   NVIDIA G 320M
 NVIDIA C51                                                                                               supported      0   NVIDIA C51
-NVIDIA D10M2-20/PCI/SSE2                                                                                                    UNRECOGNIZED
-NVIDIA D10P1-25/PCI/SSE2                                                                                                    UNRECOGNIZED
-NVIDIA D10P1-30/PCI/SSE2                                                                                                    UNRECOGNIZED
-NVIDIA D10P2-50/PCI/SSE2                                                                                                    UNRECOGNIZED
-NVIDIA D11M2-30/PCI/SSE2                                                                                                    UNRECOGNIZED
-NVIDIA D12-P1-35/PCI/SSE2                                                                                                   UNRECOGNIZED
-NVIDIA D12U-15/PCI/SSE2                                                                                                     UNRECOGNIZED
-NVIDIA D13M1-40/PCI/SSE2                                                                                                    UNRECOGNIZED
-NVIDIA D13P1-40/PCI/SSE2                                                                                                    UNRECOGNIZED
-NVIDIA D13U-10/PCI/SSE2                                                                                                     UNRECOGNIZED
-NVIDIA D13U/PCI/SSE2                                                                                                        UNRECOGNIZED
+NVIDIA Corporation GeForce GT 230/PCI/SSE2                                                               supported      2   NVIDIA GT 230M
+NVIDIA Corporation GeForce GTX 285/PCI/SSE2                                                              supported      3   NVIDIA GTX 285
+NVIDIA D10M2-20/PCI/SSE2                                                                                                    NO MATCH
+NVIDIA D10P1-25/PCI/SSE2                                                                                                    NO MATCH
+NVIDIA D10P1-25/PCI/SSE2/3DNOW!                                                                                             NO MATCH
+NVIDIA D10P1-30/PCI/SSE2                                                                                                    NO MATCH
+NVIDIA D10P2-50/PCI/SSE2                                                                                                    NO MATCH
+NVIDIA D11M2-30/PCI/SSE2                                                                                                    NO MATCH
+NVIDIA D12-P1-35/PCI/SSE2                                                                                                   NO MATCH
+NVIDIA D12U-15/PCI/SSE2                                                                                                     NO MATCH
+NVIDIA D13M1-40/PCI/SSE2                                                                                                    NO MATCH
+NVIDIA D13P1-40/PCI/SSE2                                                                                                    NO MATCH
+NVIDIA D13P1-40/PCI/SSE2/3DNOW!                                                                                             NO MATCH
+NVIDIA D13U-10/PCI/SSE2                                                                                                     NO MATCH
+NVIDIA D13U/PCI/SSE2                                                                                                        NO MATCH
 NVIDIA D9M                                                                                               supported      1   NVIDIA D9M
 NVIDIA D9M-20/PCI/SSE2                                                                                   supported      1   NVIDIA D9M
-NVIDIA Entry Graphics/PCI/SSE2                                                                                              UNRECOGNIZED
-NVIDIA Entry Graphics/PCI/SSE2/3DNOW!                                                                                       UNRECOGNIZED
+NVIDIA Entry Graphics/PCI/SSE2                                                                                              NO MATCH
+NVIDIA Entry Graphics/PCI/SSE2/3DNOW!                                                                                       NO MATCH
 NVIDIA G 102M                                                                                            supported      0   NVIDIA G102M
 NVIDIA G 103M                                                                                            supported      0   NVIDIA G103M
 NVIDIA G 105M                                                                                            supported      0   NVIDIA G105M
@@ -793,16 +858,17 @@ NVIDIA G103M
 NVIDIA G105M                                                                                             supported      0   NVIDIA G105M
 NVIDIA G210                                                                                              supported      1   NVIDIA G 210
 NVIDIA G210M                                                                                             supported      1   NVIDIA G 210
-NVIDIA G70/PCI/SSE2                                                                                                         UNRECOGNIZED
+NVIDIA G70/PCI/SSE2                                                                                                         NO MATCH
 NVIDIA G72                                                                                               supported      1   NVIDIA G72
 NVIDIA G73                                                                                               supported      1   NVIDIA G73
 NVIDIA G84                                                                                               supported      2   NVIDIA G84
 NVIDIA G86                                                                                               supported      3   NVIDIA G86
 NVIDIA G92                                                                                               supported      3   NVIDIA G92
-NVIDIA G92-200/PCI/SSE2                                                                                  supported      3   NVIDIA G92
+NVIDIA G92-200/PCI/SSE2                                                                                  supported      0   NVIDIA G 200
 NVIDIA G94                                                                                               supported      3   NVIDIA G94
-NVIDIA G96/PCI/SSE2                                                                                                         UNRECOGNIZED
-NVIDIA G98/PCI/SSE2                                                                                                         UNRECOGNIZED
+NVIDIA G96/PCI/SSE2                                                                                                         NO MATCH
+NVIDIA G98/PCI/SSE2                                                                                                         NO MATCH
+NVIDIA G98/PCI/SSE2/3DNOW!                                                                                                  NO MATCH
 NVIDIA GT 120                                                                                            supported      2   NVIDIA GT 120M
 NVIDIA GT 130                                                                                            supported      2   NVIDIA GT 130M
 NVIDIA GT 130M                                                                                           supported      2   NVIDIA GT 130M
@@ -818,8 +884,8 @@ NVIDIA GT 240
 NVIDIA GT 240M                                                                                           supported      2   NVIDIA GT 240M
 NVIDIA GT 250M                                                                                           supported      2   NVIDIA GT 250M
 NVIDIA GT 260M                                                                                           supported      2   NVIDIA GT 260M
-NVIDIA GT 320                                                                                            supported      2   NVIDIA GT 320M
-NVIDIA GT 320M                                                                                           supported      2   NVIDIA GT 320M
+NVIDIA GT 320                                                                                            supported      2   NVIDIA G 320M
+NVIDIA GT 320M                                                                                           supported      2   NVIDIA G 320M
 NVIDIA GT 330                                                                                            supported      3   NVIDIA GT 330M
 NVIDIA GT 330M                                                                                           supported      3   NVIDIA GT 330M
 NVIDIA GT 340                                                                                            supported      2   NVIDIA GT 340M
@@ -831,7 +897,7 @@ NVIDIA GT 520
 NVIDIA GT 540                                                                                            supported      3   NVIDIA GT 540M
 NVIDIA GT 540M                                                                                           supported      3   NVIDIA GT 540M
 NVIDIA GT-120                                                                                            supported      2   NVIDIA GT 120
-NVIDIA GT200/PCI/SSE2                                                                                                       UNRECOGNIZED
+NVIDIA GT200/PCI/SSE2                                                                                    supported      0   NVIDIA G 200
 NVIDIA GTS 150                                                                                           supported      2   NVIDIA GT 150M
 NVIDIA GTS 240                                                                                           supported      3   NVIDIA GTS 240
 NVIDIA GTS 250                                                                                           supported      3   NVIDIA GTS 250
@@ -858,7 +924,7 @@ NVIDIA GTX 560 Ti
 NVIDIA GTX 570                                                                                           supported      3   NVIDIA GTX 570
 NVIDIA GTX 580                                                                                           supported      3   NVIDIA GTX 580
 NVIDIA GTX 590                                                                                           supported      3   NVIDIA GTX 590
-NVIDIA GeForce                                                                                                              UNRECOGNIZED
+NVIDIA GeForce                                                                                                              NO MATCH
 NVIDIA GeForce 2                                                                                         supported      0   NVIDIA GeForce 2
 NVIDIA GeForce 205/PCI/SSE2                                                                              supported      2   NVIDIA 205
 NVIDIA GeForce 210                                                                                       supported      2   NVIDIA 210
@@ -877,34 +943,35 @@ NVIDIA GeForce 4 Go
 NVIDIA GeForce 4 MX                                                                                      supported      0   NVIDIA GeForce 4
 NVIDIA GeForce 4 Ti                                                                                      supported      0   NVIDIA GeForce 4
 NVIDIA GeForce 405/PCI/SSE2                                                                              supported      1   NVIDIA G 405
-NVIDIA GeForce 6100                                                                                      supported      0   NVIDIA GeForce 6100
-NVIDIA GeForce 6100 nForce 400/PCI/SSE2/3DNOW!                                                           supported      0   NVIDIA GeForce 6100
-NVIDIA GeForce 6100 nForce 405/PCI/SSE2                                                                  supported      0   NVIDIA GeForce 6100
-NVIDIA GeForce 6100 nForce 405/PCI/SSE2/3DNOW!                                                           supported      0   NVIDIA GeForce 6100
-NVIDIA GeForce 6100 nForce 420/PCI/SSE2/3DNOW!                                                           supported      0   NVIDIA GeForce 6100
-NVIDIA GeForce 6100 nForce 430/PCI/SSE2/3DNOW!                                                           supported      0   NVIDIA GeForce 6100
-NVIDIA GeForce 6100/PCI/SSE2/3DNOW!                                                                      supported      0   NVIDIA GeForce 6100
+NVIDIA GeForce 410M/PCI/SSE2                                                                             supported      1   NVIDIA G 410M
+NVIDIA GeForce 6100                                                                                      supported      0   NVIDIA G100
+NVIDIA GeForce 6100 nForce 400/PCI/SSE2/3DNOW!                                                           supported      0   NVIDIA G100
+NVIDIA GeForce 6100 nForce 405/PCI/SSE2                                                                  supported      0   NVIDIA G100
+NVIDIA GeForce 6100 nForce 405/PCI/SSE2/3DNOW!                                                           supported      0   NVIDIA G100
+NVIDIA GeForce 6100 nForce 420/PCI/SSE2/3DNOW!                                                           supported      0   NVIDIA G100
+NVIDIA GeForce 6100 nForce 430/PCI/SSE2/3DNOW!                                                           supported      0   NVIDIA G100
+NVIDIA GeForce 6100/PCI/SSE2/3DNOW!                                                                      supported      0   NVIDIA G100
 NVIDIA GeForce 6150 LE/PCI/SSE2/3DNOW!                                                                   supported      0   NVIDIA GeForce 6100
 NVIDIA GeForce 6150/PCI/SSE2                                                                             supported      0   NVIDIA GeForce 6100
 NVIDIA GeForce 6150/PCI/SSE2/3DNOW!                                                                      supported      0   NVIDIA GeForce 6100
 NVIDIA GeForce 6150SE nForce 430/PCI/SSE2                                                                supported      0   NVIDIA GeForce 6100
 NVIDIA GeForce 6150SE nForce 430/PCI/SSE2/3DNOW!                                                         supported      0   NVIDIA GeForce 6100
 NVIDIA GeForce 6150SE/PCI/SSE2/3DNOW!                                                                    supported      0   NVIDIA GeForce 6100
-NVIDIA GeForce 6200                                                                                      supported      0   NVIDIA GeForce 6200
-NVIDIA GeForce 6200 A-LE/AGP/SSE/3DNOW!                                                                  supported      0   NVIDIA GeForce 6200
-NVIDIA GeForce 6200 A-LE/AGP/SSE2                                                                        supported      0   NVIDIA GeForce 6200
-NVIDIA GeForce 6200 A-LE/AGP/SSE2/3DNOW!                                                                 supported      0   NVIDIA GeForce 6200
-NVIDIA GeForce 6200 LE/PCI/SSE2                                                                          supported      0   NVIDIA GeForce 6200
-NVIDIA GeForce 6200 LE/PCI/SSE2/3DNOW!                                                                   supported      0   NVIDIA GeForce 6200
-NVIDIA GeForce 6200 TurboCache(TM)/PCI/SSE2                                                              supported      0   NVIDIA GeForce 6200
-NVIDIA GeForce 6200 TurboCache(TM)/PCI/SSE2/3DNOW!                                                       supported      0   NVIDIA GeForce 6200
-NVIDIA GeForce 6200/AGP/SSE/3DNOW!                                                                       supported      0   NVIDIA GeForce 6200
-NVIDIA GeForce 6200/AGP/SSE2                                                                             supported      0   NVIDIA GeForce 6200
-NVIDIA GeForce 6200/AGP/SSE2/3DNOW!                                                                      supported      0   NVIDIA GeForce 6200
-NVIDIA GeForce 6200/PCI/SSE/3DNOW!                                                                       supported      0   NVIDIA GeForce 6200
-NVIDIA GeForce 6200/PCI/SSE2                                                                             supported      0   NVIDIA GeForce 6200
-NVIDIA GeForce 6200/PCI/SSE2/3DNOW!                                                                      supported      0   NVIDIA GeForce 6200
-NVIDIA GeForce 6200SE TurboCache(TM)/PCI/SSE2/3DNOW!                                                     supported      0   NVIDIA GeForce 6200
+NVIDIA GeForce 6200                                                                                      supported      0   NVIDIA G 200
+NVIDIA GeForce 6200 A-LE/AGP/SSE/3DNOW!                                                                  supported      0   NVIDIA G 200
+NVIDIA GeForce 6200 A-LE/AGP/SSE2                                                                        supported      0   NVIDIA G 200
+NVIDIA GeForce 6200 A-LE/AGP/SSE2/3DNOW!                                                                 supported      0   NVIDIA G 200
+NVIDIA GeForce 6200 LE/PCI/SSE2                                                                          supported      0   NVIDIA G 200
+NVIDIA GeForce 6200 LE/PCI/SSE2/3DNOW!                                                                   supported      0   NVIDIA G 200
+NVIDIA GeForce 6200 TurboCache(TM)/PCI/SSE2                                                              supported      0   NVIDIA G 200
+NVIDIA GeForce 6200 TurboCache(TM)/PCI/SSE2/3DNOW!                                                       supported      0   NVIDIA G 200
+NVIDIA GeForce 6200/AGP/SSE/3DNOW!                                                                       supported      0   NVIDIA G 200
+NVIDIA GeForce 6200/AGP/SSE2                                                                             supported      0   NVIDIA G 200
+NVIDIA GeForce 6200/AGP/SSE2/3DNOW!                                                                      supported      0   NVIDIA G 200
+NVIDIA GeForce 6200/PCI/SSE/3DNOW!                                                                       supported      0   NVIDIA G 200
+NVIDIA GeForce 6200/PCI/SSE2                                                                             supported      0   NVIDIA G 200
+NVIDIA GeForce 6200/PCI/SSE2/3DNOW!                                                                      supported      0   NVIDIA G 200
+NVIDIA GeForce 6200SE TurboCache(TM)/PCI/SSE2/3DNOW!                                                     supported      0   NVIDIA G 200
 NVIDIA GeForce 6500                                                                                      supported      0   NVIDIA GeForce 6500
 NVIDIA GeForce 6500/PCI/SSE2                                                                             supported      0   NVIDIA GeForce 6500
 NVIDIA GeForce 6600                                                                                      supported      1   NVIDIA GeForce 6600
@@ -921,11 +988,13 @@ NVIDIA GeForce 6600/PCI/SSE2
 NVIDIA GeForce 6600/PCI/SSE2/3DNOW!                                                                      supported      1   NVIDIA GeForce 6600
 NVIDIA GeForce 6700                                                                                      supported      2   NVIDIA GeForce 6700
 NVIDIA GeForce 6800                                                                                      supported      2   NVIDIA GeForce 6800
+NVIDIA GeForce 6800 GS/PCI/SSE2                                                                          supported      2   NVIDIA GeForce 6800
 NVIDIA GeForce 6800 GS/PCI/SSE2/3DNOW!                                                                   supported      2   NVIDIA GeForce 6800
 NVIDIA GeForce 6800 GT/AGP/SSE2                                                                          supported      2   NVIDIA GeForce 6800
 NVIDIA GeForce 6800 GT/PCI/SSE2                                                                          supported      2   NVIDIA GeForce 6800
 NVIDIA GeForce 6800 XT/AGP/SSE2                                                                          supported      2   NVIDIA GeForce 6800
 NVIDIA GeForce 6800 XT/PCI/SSE2                                                                          supported      2   NVIDIA GeForce 6800
+NVIDIA GeForce 6800 XT/PCI/SSE2/3DNOW!                                                                   supported      2   NVIDIA GeForce 6800
 NVIDIA GeForce 6800/PCI/SSE2                                                                             supported      2   NVIDIA GeForce 6800
 NVIDIA GeForce 6800/PCI/SSE2/3DNOW!                                                                      supported      2   NVIDIA GeForce 6800
 NVIDIA GeForce 7000                                                                                      supported      0   NVIDIA GeForce 7000
@@ -943,12 +1012,12 @@ NVIDIA GeForce 7050 PV / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7050 PV / nForce 630a/PCI/SSE2                                                            supported      0   NVIDIA GeForce 7000
 NVIDIA GeForce 7050 PV / nForce 630a/PCI/SSE2/3DNOW!                                                     supported      0   NVIDIA GeForce 7000
 NVIDIA GeForce 7050 SE / NVIDIA nForce 630a/PCI/SSE2/3DNOW!                                              supported      0   NVIDIA GeForce 7000
-NVIDIA GeForce 7100                                                                                      supported      0   NVIDIA GeForce 7100
-NVIDIA GeForce 7100 / NVIDIA nForce 620i/PCI/SSE2                                                        supported      0   NVIDIA GeForce 7100
-NVIDIA GeForce 7100 / NVIDIA nForce 630i/PCI/SSE2                                                        supported      0   NVIDIA GeForce 7100
-NVIDIA GeForce 7100 / nForce 630i/PCI/SSE2                                                               supported      0   NVIDIA GeForce 7100
-NVIDIA GeForce 7100 GS/PCI/SSE2                                                                          supported      0   NVIDIA GeForce 7100
-NVIDIA GeForce 7100 GS/PCI/SSE2/3DNOW!                                                                   supported      0   NVIDIA GeForce 7100
+NVIDIA GeForce 7100                                                                                      supported      0   NVIDIA G100
+NVIDIA GeForce 7100 / NVIDIA nForce 620i/PCI/SSE2                                                        supported      0   NVIDIA G100
+NVIDIA GeForce 7100 / NVIDIA nForce 630i/PCI/SSE2                                                        supported      0   NVIDIA G100
+NVIDIA GeForce 7100 / nForce 630i/PCI/SSE2                                                               supported      0   NVIDIA G100
+NVIDIA GeForce 7100 GS/PCI/SSE2                                                                          supported      0   NVIDIA G100
+NVIDIA GeForce 7100 GS/PCI/SSE2/3DNOW!                                                                   supported      0   NVIDIA G100
 NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2                                                              supported      0   NVIDIA GeForce 7100
 NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2/3DNOW!                                                       supported      0   NVIDIA GeForce 7100
 NVIDIA GeForce 7300                                                                                      supported      1   NVIDIA GeForce 7300
@@ -960,8 +1029,8 @@ NVIDIA GeForce 7300 GT/PCI/SSE2
 NVIDIA GeForce 7300 GT/PCI/SSE2/3DNOW!                                                                   supported      1   NVIDIA GeForce 7300
 NVIDIA GeForce 7300 LE/PCI/SSE2                                                                          supported      1   NVIDIA GeForce 7300
 NVIDIA GeForce 7300 LE/PCI/SSE2/3DNOW!                                                                   supported      1   NVIDIA GeForce 7300
-NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2                                                                  supported      1   NVIDIA GeForce 7300
-NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2/3DNOW!                                                           supported      1   NVIDIA GeForce 7300
+NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2                                                                  supported      0   NVIDIA G 200
+NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2/3DNOW!                                                           supported      0   NVIDIA G 200
 NVIDIA GeForce 7300 SE/PCI/SSE2                                                                          supported      1   NVIDIA GeForce 7300
 NVIDIA GeForce 7300 SE/PCI/SSE2/3DNOW!                                                                   supported      1   NVIDIA GeForce 7300
 NVIDIA GeForce 7350 LE/PCI/SSE2                                                                          supported      1   NVIDIA GeForce 7300
@@ -982,24 +1051,26 @@ NVIDIA GeForce 7800
 NVIDIA GeForce 7800 GS/AGP/SSE2                                                                          supported      2   NVIDIA GeForce 7800
 NVIDIA GeForce 7800 GS/AGP/SSE2/3DNOW!                                                                   supported      2   NVIDIA GeForce 7800
 NVIDIA GeForce 7800 GT/PCI/SSE2                                                                          supported      2   NVIDIA GeForce 7800
+NVIDIA GeForce 7800 GT/PCI/SSE2/3DNOW!                                                                   supported      2   NVIDIA GeForce 7800
 NVIDIA GeForce 7800 GTX/PCI/SSE2                                                                         supported      2   NVIDIA GeForce 7800
 NVIDIA GeForce 7800 GTX/PCI/SSE2/3DNOW!                                                                  supported      2   NVIDIA GeForce 7800
 NVIDIA GeForce 7900                                                                                      supported      2   NVIDIA GeForce 7900
 NVIDIA GeForce 7900 GS/PCI/SSE2                                                                          supported      2   NVIDIA GeForce 7900
 NVIDIA GeForce 7900 GS/PCI/SSE2/3DNOW!                                                                   supported      2   NVIDIA GeForce 7900
 NVIDIA GeForce 7900 GT/GTO/PCI/SSE2                                                                      supported      2   NVIDIA GeForce 7900
+NVIDIA GeForce 7900 GT/GTO/PCI/SSE2/3DNOW!                                                               supported      2   NVIDIA GeForce 7900
 NVIDIA GeForce 7900 GT/PCI/SSE2/3DNOW!                                                                   supported      2   NVIDIA GeForce 7900
 NVIDIA GeForce 7900 GTX/PCI/SSE2                                                                         supported      2   NVIDIA GeForce 7900
 NVIDIA GeForce 7950 GT/PCI/SSE2                                                                          supported      2   NVIDIA GeForce 7900
 NVIDIA GeForce 7950 GT/PCI/SSE2/3DNOW!                                                                   supported      2   NVIDIA GeForce 7900
-NVIDIA GeForce 8100                                                                                      supported      1   NVIDIA GeForce 8100
-NVIDIA GeForce 8100 / nForce 720a/PCI/SSE2/3DNOW!                                                        supported      1   NVIDIA GeForce 8100
-NVIDIA GeForce 8200                                                                                      supported      1   NVIDIA GeForce 8200
-NVIDIA GeForce 8200/PCI/SSE2                                                                             supported      1   NVIDIA GeForce 8200
-NVIDIA GeForce 8200/PCI/SSE2/3DNOW!                                                                      supported      1   NVIDIA GeForce 8200
-NVIDIA GeForce 8200M                                                                                     supported      1   NVIDIA GeForce 8200M
-NVIDIA GeForce 8200M G/PCI/SSE2                                                                          supported      1   NVIDIA GeForce 8200M
-NVIDIA GeForce 8200M G/PCI/SSE2/3DNOW!                                                                   supported      1   NVIDIA GeForce 8200M
+NVIDIA GeForce 8100                                                                                      supported      0   NVIDIA G100
+NVIDIA GeForce 8100 / nForce 720a/PCI/SSE2/3DNOW!                                                        supported      0   NVIDIA G100
+NVIDIA GeForce 8200                                                                                      supported      0   NVIDIA G 200
+NVIDIA GeForce 8200/PCI/SSE2                                                                             supported      0   NVIDIA G 200
+NVIDIA GeForce 8200/PCI/SSE2/3DNOW!                                                                      supported      0   NVIDIA G 200
+NVIDIA GeForce 8200M                                                                                     supported      0   NVIDIA G 200
+NVIDIA GeForce 8200M G/PCI/SSE2                                                                          supported      0   NVIDIA G 200
+NVIDIA GeForce 8200M G/PCI/SSE2/3DNOW!                                                                   supported      0   NVIDIA G 200
 NVIDIA GeForce 8300                                                                                      supported      1   NVIDIA GeForce 8300
 NVIDIA GeForce 8300 GS/PCI/SSE2                                                                          supported      1   NVIDIA GeForce 8300
 NVIDIA GeForce 8400                                                                                      supported      1   NVIDIA GeForce 8400
@@ -1045,17 +1116,17 @@ NVIDIA GeForce 8800 GTX/PCI/SSE2
 NVIDIA GeForce 8800 Ultra/PCI/SSE2                                                                       supported      3   NVIDIA GeForce 8800
 NVIDIA GeForce 8800M GTS/PCI/SSE2                                                                        supported      3   NVIDIA GeForce 8800M
 NVIDIA GeForce 8800M GTX/PCI/SSE2                                                                        supported      3   NVIDIA GeForce 8800M
-NVIDIA GeForce 9100                                                                                      supported      0   NVIDIA GeForce 9100
-NVIDIA GeForce 9100/PCI/SSE2                                                                             supported      0   NVIDIA GeForce 9100
-NVIDIA GeForce 9100/PCI/SSE2/3DNOW!                                                                      supported      0   NVIDIA GeForce 9100
-NVIDIA GeForce 9100M                                                                                     supported      0   NVIDIA GeForce 9100M
-NVIDIA GeForce 9100M G/PCI/SSE2                                                                          supported      0   NVIDIA GeForce 9100M
-NVIDIA GeForce 9100M G/PCI/SSE2/3DNOW!                                                                   supported      0   NVIDIA GeForce 9100M
-NVIDIA GeForce 9200                                                                                      supported      1   NVIDIA GeForce 9200
-NVIDIA GeForce 9200/PCI/SSE2                                                                             supported      1   NVIDIA GeForce 9200
-NVIDIA GeForce 9200/PCI/SSE2/3DNOW!                                                                      supported      1   NVIDIA GeForce 9200
-NVIDIA GeForce 9200M GE/PCI/SSE2                                                                         supported      1   NVIDIA GeForce 9200M
-NVIDIA GeForce 9200M GS/PCI/SSE2                                                                         supported      1   NVIDIA GeForce 9200M
+NVIDIA GeForce 9100                                                                                      supported      0   NVIDIA G100
+NVIDIA GeForce 9100/PCI/SSE2                                                                             supported      0   NVIDIA G100
+NVIDIA GeForce 9100/PCI/SSE2/3DNOW!                                                                      supported      0   NVIDIA G100
+NVIDIA GeForce 9100M                                                                                     supported      0   NVIDIA G100M
+NVIDIA GeForce 9100M G/PCI/SSE2                                                                          supported      0   NVIDIA G100M
+NVIDIA GeForce 9100M G/PCI/SSE2/3DNOW!                                                                   supported      0   NVIDIA G100M
+NVIDIA GeForce 9200                                                                                      supported      0   NVIDIA G 200
+NVIDIA GeForce 9200/PCI/SSE2                                                                             supported      0   NVIDIA G 200
+NVIDIA GeForce 9200/PCI/SSE2/3DNOW!                                                                      supported      0   NVIDIA G 200
+NVIDIA GeForce 9200M GE/PCI/SSE2                                                                         supported      0   NVIDIA G 200
+NVIDIA GeForce 9200M GS/PCI/SSE2                                                                         supported      0   NVIDIA G 200
 NVIDIA GeForce 9300                                                                                      supported      1   NVIDIA GeForce 9300
 NVIDIA GeForce 9300 / nForce 730i/PCI/SSE2                                                               supported      1   NVIDIA GeForce 9300
 NVIDIA GeForce 9300 GE/PCI/SSE2                                                                          supported      1   NVIDIA GeForce 9300
@@ -1108,16 +1179,16 @@ NVIDIA GeForce 9800M
 NVIDIA GeForce 9800M GS/PCI/SSE2                                                                         supported      3   NVIDIA GeForce 9800M
 NVIDIA GeForce 9800M GT/PCI/SSE2                                                                         supported      3   NVIDIA GeForce 9800M
 NVIDIA GeForce 9800M GTS/PCI/SSE2                                                                        supported      3   NVIDIA GeForce 9800M
-NVIDIA GeForce FX 5100                                                                                   supported      0   NVIDIA GeForce FX 5100
-NVIDIA GeForce FX 5100/AGP/SSE/3DNOW!                                                                    supported      0   NVIDIA GeForce FX 5100
-NVIDIA GeForce FX 5200                                                                                   supported      0   NVIDIA GeForce FX 5200
-NVIDIA GeForce FX 5200/AGP/SSE                                                                           supported      0   NVIDIA GeForce FX 5200
-NVIDIA GeForce FX 5200/AGP/SSE/3DNOW!                                                                    supported      0   NVIDIA GeForce FX 5200
-NVIDIA GeForce FX 5200/AGP/SSE2                                                                          supported      0   NVIDIA GeForce FX 5200
-NVIDIA GeForce FX 5200/AGP/SSE2/3DNOW!                                                                   supported      0   NVIDIA GeForce FX 5200
-NVIDIA GeForce FX 5200/PCI/SSE2                                                                          supported      0   NVIDIA GeForce FX 5200
-NVIDIA GeForce FX 5200/PCI/SSE2/3DNOW!                                                                   supported      0   NVIDIA GeForce FX 5200
-NVIDIA GeForce FX 5200LE/AGP/SSE2                                                                        supported      0   NVIDIA GeForce FX 5200
+NVIDIA GeForce FX 5100                                                                                   supported      0   NVIDIA G100
+NVIDIA GeForce FX 5100/AGP/SSE/3DNOW!                                                                    supported      0   NVIDIA G100
+NVIDIA GeForce FX 5200                                                                                   supported      0   NVIDIA G 200
+NVIDIA GeForce FX 5200/AGP/SSE                                                                           supported      0   NVIDIA G 200
+NVIDIA GeForce FX 5200/AGP/SSE/3DNOW!                                                                    supported      0   NVIDIA G 200
+NVIDIA GeForce FX 5200/AGP/SSE2                                                                          supported      0   NVIDIA G 200
+NVIDIA GeForce FX 5200/AGP/SSE2/3DNOW!                                                                   supported      0   NVIDIA G 200
+NVIDIA GeForce FX 5200/PCI/SSE2                                                                          supported      0   NVIDIA G 200
+NVIDIA GeForce FX 5200/PCI/SSE2/3DNOW!                                                                   supported      0   NVIDIA G 200
+NVIDIA GeForce FX 5200LE/AGP/SSE2                                                                        supported      0   NVIDIA G 200
 NVIDIA GeForce FX 5500                                                                                   supported      0   NVIDIA GeForce FX 5500
 NVIDIA GeForce FX 5500/AGP/SSE/3DNOW!                                                                    supported      0   NVIDIA GeForce FX 5500
 NVIDIA GeForce FX 5500/AGP/SSE2                                                                          supported      0   NVIDIA GeForce FX 5500
@@ -1136,17 +1207,19 @@ NVIDIA GeForce FX 5800
 NVIDIA GeForce FX 5900                                                                                   supported      1   NVIDIA GeForce FX 5900
 NVIDIA GeForce FX 5900/AGP/SSE2                                                                          supported      1   NVIDIA GeForce FX 5900
 NVIDIA GeForce FX 5900XT/AGP/SSE2                                                                        supported      1   NVIDIA GeForce FX 5900
-NVIDIA GeForce FX Go5100                                                                                 supported      0   NVIDIA GeForce FX Go5100
-NVIDIA GeForce FX Go5100/AGP/SSE2                                                                        supported      0   NVIDIA GeForce FX Go5100
-NVIDIA GeForce FX Go5200                                                                                 supported      0   NVIDIA GeForce FX Go5200
-NVIDIA GeForce FX Go5200/AGP/SSE2                                                                        supported      0   NVIDIA GeForce FX Go5200
+NVIDIA GeForce FX Go5100                                                                                 supported      0   NVIDIA G100
+NVIDIA GeForce FX Go5100/AGP/SSE2                                                                        supported      0   NVIDIA G100
+NVIDIA GeForce FX Go5200                                                                                 supported      0   NVIDIA G 200
+NVIDIA GeForce FX Go5200/AGP/SSE2                                                                        supported      0   NVIDIA G 200
 NVIDIA GeForce FX Go5300                                                                                 supported      0   NVIDIA GeForce FX Go5300
 NVIDIA GeForce FX Go5600                                                                                 supported      0   NVIDIA GeForce FX Go5600
 NVIDIA GeForce FX Go5600/AGP/SSE2                                                                        supported      0   NVIDIA GeForce FX Go5600
 NVIDIA GeForce FX Go5650/AGP/SSE2                                                                        supported      0   NVIDIA GeForce FX Go5600
 NVIDIA GeForce FX Go5700                                                                                 supported      1   NVIDIA GeForce FX Go5700
+NVIDIA GeForce FX Go5700/AGP/SSE2                                                                        supported      1   NVIDIA GeForce FX Go5700
 NVIDIA GeForce FX Go5xxx/AGP/SSE2                                                                        supported      0   NVIDIA GeForce FX Go5xxx
 NVIDIA GeForce G 103M/PCI/SSE2                                                                           supported      0   NVIDIA G103M
+NVIDIA GeForce G 103M/PCI/SSE2/3DNOW!                                                                    supported      0   NVIDIA G103M
 NVIDIA GeForce G 105M/PCI/SSE2                                                                           supported      0   NVIDIA G105M
 NVIDIA GeForce G 110M/PCI/SSE2                                                                           supported      0   NVIDIA G 110M
 NVIDIA GeForce G100/PCI/SSE2                                                                             supported      0   NVIDIA G100
@@ -1161,7 +1234,7 @@ NVIDIA GeForce G210M/PCI/SSE2
 NVIDIA GeForce G310M/PCI/SSE2                                                                            supported      2   NVIDIA G 310M
 NVIDIA GeForce GT 120/PCI/SSE2                                                                           supported      2   NVIDIA GT 120M
 NVIDIA GeForce GT 120/PCI/SSE2/3DNOW!                                                                    supported      2   NVIDIA GT 120M
-NVIDIA GeForce GT 120M/PCI/SSE2                                                                          supported      2   NVIDIA GT 120M
+NVIDIA GeForce GT 120M/PCI/SSE2                                                                          supported      1   NVIDIA G 120M
 NVIDIA GeForce GT 130M/PCI/SSE2                                                                          supported      2   NVIDIA GT 130M
 NVIDIA GeForce GT 140/PCI/SSE2                                                                           supported      2   NVIDIA GT 140M
 NVIDIA GeForce GT 220/PCI/SSE2                                                                           supported      2   NVIDIA GT 220M
@@ -1173,8 +1246,8 @@ NVIDIA GeForce GT 240
 NVIDIA GeForce GT 240/PCI/SSE2                                                                           supported      2   NVIDIA GT 240M
 NVIDIA GeForce GT 240/PCI/SSE2/3DNOW!                                                                    supported      2   NVIDIA GT 240M
 NVIDIA GeForce GT 240M/PCI/SSE2                                                                          supported      2   NVIDIA GT 240M
-NVIDIA GeForce GT 320/PCI/SSE2                                                                           supported      2   NVIDIA GT 320M
-NVIDIA GeForce GT 320M/PCI/SSE2                                                                          supported      2   NVIDIA GT 320M
+NVIDIA GeForce GT 320/PCI/SSE2                                                                           supported      2   NVIDIA G 320M
+NVIDIA GeForce GT 320M/PCI/SSE2                                                                          supported      2   NVIDIA G 320M
 NVIDIA GeForce GT 325M/PCI/SSE2                                                                          supported      0   NVIDIA GT 325M
 NVIDIA GeForce GT 330/PCI/SSE2                                                                           supported      3   NVIDIA GT 330M
 NVIDIA GeForce GT 330/PCI/SSE2/3DNOW!                                                                    supported      3   NVIDIA GT 330M
@@ -1192,9 +1265,14 @@ NVIDIA GeForce GT 435M/PCI/SSE2
 NVIDIA GeForce GT 440/PCI/SSE2                                                                           supported      3   NVIDIA GT 440M
 NVIDIA GeForce GT 440/PCI/SSE2/3DNOW!                                                                    supported      3   NVIDIA GT 440M
 NVIDIA GeForce GT 445M/PCI/SSE2                                                                          supported      3   NVIDIA GT 445M
+NVIDIA GeForce GT 520/PCI/SSE2                                                                           supported      3   NVIDIA GT 520M
+NVIDIA GeForce GT 520/PCI/SSE2/3DNOW!                                                                    supported      3   NVIDIA GT 520M
 NVIDIA GeForce GT 520M/PCI/SSE2                                                                          supported      3   NVIDIA GT 520M
-NVIDIA GeForce GT 525M/PCI/SSE2                                                                          supported      3   NVIDIA GT 525M
+NVIDIA GeForce GT 525M/PCI/SSE2                                                                          supported      3   NVIDIA GT 520M
+NVIDIA GeForce GT 530/PCI/SSE2                                                                           supported      3   NVIDIA GT 530M
+NVIDIA GeForce GT 530/PCI/SSE2/3DNOW!                                                                    supported      3   NVIDIA GT 530M
 NVIDIA GeForce GT 540M/PCI/SSE2                                                                          supported      3   NVIDIA GT 540M
+NVIDIA GeForce GT 545/PCI/SSE2                                                                           supported      3   NVIDIA GT 540M
 NVIDIA GeForce GT 550M/PCI/SSE2                                                                          supported      3   NVIDIA GT 550M
 NVIDIA GeForce GT 555M/PCI/SSE2                                                                          supported      3   NVIDIA GT 555M
 NVIDIA GeForce GTS 150/PCI/SSE2                                                                          supported      2   NVIDIA GT 150M
@@ -1212,9 +1290,11 @@ NVIDIA GeForce GTX 260/PCI/SSE2
 NVIDIA GeForce GTX 260/PCI/SSE2/3DNOW!                                                                   supported      3   NVIDIA GTX 260
 NVIDIA GeForce GTX 260M/PCI/SSE2                                                                         supported      3   NVIDIA GTX 260
 NVIDIA GeForce GTX 275/PCI/SSE2                                                                          supported      3   NVIDIA GTX 275
+NVIDIA GeForce GTX 275/PCI/SSE2/3DNOW!                                                                   supported      3   NVIDIA GTX 275
 NVIDIA GeForce GTX 280                                                                                   supported      3   NVIDIA GTX 280
 NVIDIA GeForce GTX 280/PCI/SSE2                                                                          supported      3   NVIDIA GTX 280
 NVIDIA GeForce GTX 280M/PCI/SSE2                                                                         supported      3   NVIDIA GTX 280
+NVIDIA GeForce GTX 285                                                                                   supported      3   NVIDIA GTX 285
 NVIDIA GeForce GTX 285/PCI/SSE2                                                                          supported      3   NVIDIA GTX 285
 NVIDIA GeForce GTX 295/PCI/SSE2                                                                          supported      3   NVIDIA GTX 295
 NVIDIA GeForce GTX 460 SE/PCI/SSE2                                                                       supported      3   NVIDIA GTX 460
@@ -1232,6 +1312,8 @@ NVIDIA GeForce GTX 550 Ti/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTX 560 Ti/PCI/SSE2                                                                       supported      3   NVIDIA GTX 560
 NVIDIA GeForce GTX 560 Ti/PCI/SSE2/3DNOW!                                                                supported      3   NVIDIA GTX 560
 NVIDIA GeForce GTX 560/PCI/SSE2                                                                          supported      3   NVIDIA GTX 560
+NVIDIA GeForce GTX 560/PCI/SSE2/3DNOW!                                                                   supported      3   NVIDIA GTX 560
+NVIDIA GeForce GTX 560M/PCI/SSE2                                                                         supported      3   NVIDIA GTX 560
 NVIDIA GeForce GTX 570/PCI/SSE2                                                                          supported      3   NVIDIA GTX 570
 NVIDIA GeForce GTX 570/PCI/SSE2/3DNOW!                                                                   supported      3   NVIDIA GTX 570
 NVIDIA GeForce GTX 580/PCI/SSE2                                                                          supported      3   NVIDIA GTX 580
@@ -1239,13 +1321,13 @@ NVIDIA GeForce GTX 580/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTX 580M/PCI/SSE2                                                                         supported      3   NVIDIA GTX 580M
 NVIDIA GeForce GTX 590/PCI/SSE2                                                                          supported      3   NVIDIA GTX 590
 NVIDIA GeForce Go 6                                                                                      supported      1   NVIDIA GeForce Go 6
-NVIDIA GeForce Go 6100                                                                                   supported      0   NVIDIA GeForce Go 6100
-NVIDIA GeForce Go 6100/PCI/SSE2                                                                          supported      0   NVIDIA GeForce Go 6100
-NVIDIA GeForce Go 6100/PCI/SSE2/3DNOW!                                                                   supported      0   NVIDIA GeForce Go 6100
+NVIDIA GeForce Go 6100                                                                                   supported      0   NVIDIA G100
+NVIDIA GeForce Go 6100/PCI/SSE2                                                                          supported      0   NVIDIA G100
+NVIDIA GeForce Go 6100/PCI/SSE2/3DNOW!                                                                   supported      0   NVIDIA G100
 NVIDIA GeForce Go 6150/PCI/SSE2                                                                          supported      0   NVIDIA GeForce Go 6100
 NVIDIA GeForce Go 6150/PCI/SSE2/3DNOW!                                                                   supported      0   NVIDIA GeForce Go 6100
-NVIDIA GeForce Go 6200                                                                                   supported      0   NVIDIA GeForce Go 6200
-NVIDIA GeForce Go 6200/PCI/SSE2                                                                          supported      0   NVIDIA GeForce Go 6200
+NVIDIA GeForce Go 6200                                                                                   supported      0   NVIDIA G 200
+NVIDIA GeForce Go 6200/PCI/SSE2                                                                          supported      0   NVIDIA G 200
 NVIDIA GeForce Go 6400                                                                                   supported      1   NVIDIA GeForce Go 6400
 NVIDIA GeForce Go 6400/PCI/SSE2                                                                          supported      1   NVIDIA GeForce Go 6400
 NVIDIA GeForce Go 6600                                                                                   supported      1   NVIDIA GeForce Go 6600
@@ -1253,9 +1335,9 @@ NVIDIA GeForce Go 6600/PCI/SSE2
 NVIDIA GeForce Go 6800                                                                                   supported      1   NVIDIA GeForce Go 6800
 NVIDIA GeForce Go 6800 Ultra/PCI/SSE2                                                                    supported      1   NVIDIA GeForce Go 6800
 NVIDIA GeForce Go 6800/PCI/SSE2                                                                          supported      1   NVIDIA GeForce Go 6800
-NVIDIA GeForce Go 7200                                                                                   supported      1   NVIDIA GeForce Go 7200
-NVIDIA GeForce Go 7200/PCI/SSE2                                                                          supported      1   NVIDIA GeForce Go 7200
-NVIDIA GeForce Go 7200/PCI/SSE2/3DNOW!                                                                   supported      1   NVIDIA GeForce Go 7200
+NVIDIA GeForce Go 7200                                                                                   supported      0   NVIDIA G 200
+NVIDIA GeForce Go 7200/PCI/SSE2                                                                          supported      0   NVIDIA G 200
+NVIDIA GeForce Go 7200/PCI/SSE2/3DNOW!                                                                   supported      0   NVIDIA G 200
 NVIDIA GeForce Go 7300                                                                                   supported      1   NVIDIA GeForce Go 7300
 NVIDIA GeForce Go 7300/PCI/SSE2                                                                          supported      1   NVIDIA GeForce Go 7300
 NVIDIA GeForce Go 7300/PCI/SSE2/3DNOW!                                                                   supported      1   NVIDIA GeForce Go 7300
@@ -1266,6 +1348,7 @@ NVIDIA GeForce Go 7600
 NVIDIA GeForce Go 7600/PCI/SSE2                                                                          supported      2   NVIDIA GeForce Go 7600
 NVIDIA GeForce Go 7600/PCI/SSE2/3DNOW!                                                                   supported      2   NVIDIA GeForce Go 7600
 NVIDIA GeForce Go 7700                                                                                   supported      2   NVIDIA GeForce Go 7700
+NVIDIA GeForce Go 7700/PCI/SSE2                                                                          supported      2   NVIDIA GeForce Go 7700
 NVIDIA GeForce Go 7800                                                                                   supported      2   NVIDIA GeForce Go 7800
 NVIDIA GeForce Go 7800 GTX/PCI/SSE2                                                                      supported      2   NVIDIA GeForce Go 7800
 NVIDIA GeForce Go 7900                                                                                   supported      2   NVIDIA GeForce Go 7900
@@ -1283,7 +1366,9 @@ NVIDIA GeForce3/AGP/SSE2
 NVIDIA GeForce4 420 Go 32M/AGP/SSE2                                                                      supported      0   NVIDIA GeForce 4
 NVIDIA GeForce4 420 Go 32M/AGP/SSE2/3DNOW!                                                               supported      0   NVIDIA GeForce 4
 NVIDIA GeForce4 420 Go 32M/PCI/SSE2/3DNOW!                                                               supported      0   NVIDIA GeForce 4
+NVIDIA GeForce4 420 Go/AGP/SSE2                                                                          supported      0   NVIDIA GeForce 4
 NVIDIA GeForce4 440 Go 64M/AGP/SSE2/3DNOW!                                                               supported      0   NVIDIA GeForce 4
+NVIDIA GeForce4 440 Go/AGP/SSE2                                                                          supported      0   NVIDIA GeForce 4
 NVIDIA GeForce4 460 Go/AGP/SSE2                                                                          supported      0   NVIDIA GeForce 4
 NVIDIA GeForce4 MX 4000/AGP/SSE/3DNOW!                                                                   supported      0   NVIDIA GeForce 4
 NVIDIA GeForce4 MX 4000/AGP/SSE2                                                                         supported      0   NVIDIA GeForce 4
@@ -1297,42 +1382,47 @@ NVIDIA GeForce4 MX 440/AGP/SSE2
 NVIDIA GeForce4 MX 440/AGP/SSE2/3DNOW!                                                                   supported      0   NVIDIA GeForce 4
 NVIDIA GeForce4 MX 440SE with AGP8X/AGP/SSE2                                                             supported      0   NVIDIA GeForce 4
 NVIDIA GeForce4 MX Integrated GPU/AGP/SSE/3DNOW!                                                         supported      0   NVIDIA GeForce 4
-NVIDIA GeForce4 Ti 4200 with AGP8X/AGP/SSE                                                               supported      0   NVIDIA GeForce 4
-NVIDIA GeForce4 Ti 4200/AGP/SSE/3DNOW!                                                                   supported      0   NVIDIA GeForce 4
+NVIDIA GeForce4 Ti 4200 with AGP8X/AGP/SSE                                                               supported      0   NVIDIA G 200
+NVIDIA GeForce4 Ti 4200/AGP/SSE/3DNOW!                                                                   supported      0   NVIDIA G 200
 NVIDIA GeForce4 Ti 4400/AGP/SSE2                                                                         supported      0   NVIDIA GeForce 4
-NVIDIA Generic                                                                                                              UNRECOGNIZED
+NVIDIA Generic                                                                                                              NO MATCH
 NVIDIA ION LE/PCI/SSE2                                                                                   supported      2   NVIDIA ION
 NVIDIA ION/PCI/SSE2                                                                                      supported      2   NVIDIA ION
 NVIDIA ION/PCI/SSE2/3DNOW!                                                                               supported      2   NVIDIA ION
-NVIDIA MCP61/PCI/SSE2                                                                                                       UNRECOGNIZED
-NVIDIA MCP61/PCI/SSE2/3DNOW!                                                                                                UNRECOGNIZED
-NVIDIA MCP73/PCI/SSE2                                                                                                       UNRECOGNIZED
-NVIDIA MCP79MH/PCI/SSE2                                                                                                     UNRECOGNIZED
-NVIDIA MCP79MX/PCI/SSE2                                                                                                     UNRECOGNIZED
-NVIDIA MCP7A-O/PCI/SSE2                                                                                                     UNRECOGNIZED
-NVIDIA MCP7A-S/PCI/SSE2                                                                                                     UNRECOGNIZED
-NVIDIA MCP89-EPT/PCI/SSE2                                                                                                   UNRECOGNIZED
-NVIDIA N10M-GE1/PCI/SSE2                                                                                                    UNRECOGNIZED
-NVIDIA N10P-GE1/PCI/SSE2                                                                                                    UNRECOGNIZED
-NVIDIA N10P-GV2/PCI/SSE2                                                                                                    UNRECOGNIZED
-NVIDIA N11M-GE1/PCI/SSE2                                                                                                    UNRECOGNIZED
-NVIDIA N11M-GE2/PCI/SSE2                                                                                                    UNRECOGNIZED
-NVIDIA N12E-GS-A1/PCI/SSE2                                                                                                  UNRECOGNIZED
-NVIDIA NB9M-GE/PCI/SSE2                                                                                                     UNRECOGNIZED
-NVIDIA NB9M-GE1/PCI/SSE2                                                                                                    UNRECOGNIZED
-NVIDIA NB9M-GS/PCI/SSE2                                                                                                     UNRECOGNIZED
-NVIDIA NB9M-NS/PCI/SSE2                                                                                                     UNRECOGNIZED
-NVIDIA NB9P-GE1/PCI/SSE2                                                                                                    UNRECOGNIZED
-NVIDIA NB9P-GS/PCI/SSE2                                                                                                     UNRECOGNIZED
-NVIDIA NV17/AGP/3DNOW!                                                                                                      UNRECOGNIZED
-NVIDIA NV17/AGP/SSE2                                                                                                        UNRECOGNIZED
+NVIDIA MCP61/PCI/SSE2                                                                                    supported      1   NVIDIA MCP61
+NVIDIA MCP61/PCI/SSE2/3DNOW!                                                                             supported      1   NVIDIA MCP61
+NVIDIA MCP73/PCI/SSE2                                                                                    supported      1   NVIDIA MCP73
+NVIDIA MCP79MH/PCI/SSE2                                                                                  supported      1   NVIDIA MCP79
+NVIDIA MCP79MX/PCI/SSE2                                                                                  supported      1   NVIDIA MCP79
+NVIDIA MCP7A-O/PCI/SSE2                                                                                  supported      1   NVIDIA MCP7A
+NVIDIA MCP7A-S/PCI/SSE2                                                                                  supported      1   NVIDIA MCP7A
+NVIDIA MCP89-EPT/PCI/SSE2                                                                                                   NO MATCH
+NVIDIA N10M-GE1/PCI/SSE2                                                                                 supported      1   NVIDIA N10
+NVIDIA N10P-GE1/PCI/SSE2                                                                                 supported      1   NVIDIA N10
+NVIDIA N10P-GV2/PCI/SSE2                                                                                 supported      1   NVIDIA N10
+NVIDIA N11M-GE1/PCI/SSE2                                                                                                    NO MATCH
+NVIDIA N11M-GE2/PCI/SSE2                                                                                                    NO MATCH
+NVIDIA N12E-GS-A1/PCI/SSE2                                                                                                  NO MATCH
+NVIDIA N12P-GVR-B-A1/PCI/SSE2                                                                                               NO MATCH
+NVIDIA N13M-GE1-B-A1/PCI/SSE2                                                                                               NO MATCH
+NVIDIA N13P-GL-A1/PCI/SSE2                                                                                                  NO MATCH
+NVIDIA NB9M-GE/PCI/SSE2                                                                                  supported      1   NVIDIA NB9M
+NVIDIA NB9M-GE1/PCI/SSE2                                                                                 supported      1   NVIDIA NB9M
+NVIDIA NB9M-GS/PCI/SSE2                                                                                  supported      1   NVIDIA NB9M
+NVIDIA NB9M-NS/PCI/SSE2                                                                                  supported      1   NVIDIA NB9M
+NVIDIA NB9P-GE1/PCI/SSE2                                                                                 supported      2   NVIDIA NB9P
+NVIDIA NB9P-GS/PCI/SSE2                                                                                  supported      2   NVIDIA NB9P
+NVIDIA NV17/AGP/3DNOW!                                                                                   supported      0   NVIDIA NV17
+NVIDIA NV17/AGP/SSE2                                                                                     supported      0   NVIDIA NV17
 NVIDIA NV34                                                                                              supported      0   NVIDIA NV34
 NVIDIA NV35                                                                                              supported      0   NVIDIA NV35
-NVIDIA NV36/AGP/SSE/3DNOW!                                                                                                  UNRECOGNIZED
-NVIDIA NV36/AGP/SSE2                                                                                                        UNRECOGNIZED
-NVIDIA NV41/PCI/SSE2                                                                                                        UNRECOGNIZED
+NVIDIA NV36/AGP/SSE/3DNOW!                                                                               supported      1   NVIDIA NV36
+NVIDIA NV36/AGP/SSE2                                                                                     supported      1   NVIDIA NV36
+NVIDIA NV41/PCI/SSE2                                                                                     supported      1   NVIDIA NV41
 NVIDIA NV43                                                                                              supported      1   NVIDIA NV43
+NVIDIA NV43/PCI/SSE2                                                                                     supported      1   NVIDIA NV43
 NVIDIA NV44                                                                                              supported      1   NVIDIA NV44
+NVIDIA NV44/AGP/SSE2                                                                                     supported      1   NVIDIA NV44
 NVIDIA NVIDIA GeForce 210 OpenGL Engine                                                                  supported      2   NVIDIA 210
 NVIDIA NVIDIA GeForce 320M OpenGL Engine                                                                 supported      2   NVIDIA 320M
 NVIDIA NVIDIA GeForce 7300 GT OpenGL Engine                                                              supported      1   NVIDIA GeForce 7300
@@ -1364,22 +1454,28 @@ NVIDIA NVIDIA GeForce GTX 460M OpenGL Engine
 NVIDIA NVIDIA GeForce GTX 465 OpenGL Engine                                                              supported      3   NVIDIA GTX 465
 NVIDIA NVIDIA GeForce GTX 470 OpenGL Engine                                                              supported      3   NVIDIA GTX 470
 NVIDIA NVIDIA GeForce GTX 480 OpenGL Engine                                                              supported      3   NVIDIA GTX 480
-NVIDIA NVIDIA GeForce Pre-Release ION OpenGL Engine                                                                         UNRECOGNIZED
+NVIDIA NVIDIA GeForce Pre-Release GF108 ES OpenGL Engine                                                                    NO MATCH
+NVIDIA NVIDIA GeForce Pre-Release ION OpenGL Engine                                                      supported      2   NVIDIA ION
+NVIDIA NVIDIA GeForce Pre-Release MCP7A-J-DC OpenGL Engine                                               supported      1   NVIDIA MCP7A
 NVIDIA NVIDIA GeForce4 OpenGL Engine                                                                     supported      0   NVIDIA GeForce 4
 NVIDIA NVIDIA NV34MAP OpenGL Engine                                                                      supported      0   NVIDIA NV34
 NVIDIA NVIDIA Quadro 4000 OpenGL Engine                                                                  supported      3   NVIDIA Quadro 4000
 NVIDIA NVIDIA Quadro FX 4800 OpenGL Engine                                                               supported      3   NVIDIA Quadro FX 4800
-NVIDIA NVS 2100M/PCI/SSE2                                                                                supported      2   NVIDIA Quadro NVS 2100M
+NVIDIA NVS 2100M/PCI/SSE2                                                                                supported      0   NVIDIA G100M
 NVIDIA NVS 300/PCI/SSE2                                                                                  supported      0   NVIDIA Quadro NVS
-NVIDIA NVS 3100M/PCI/SSE2                                                                                supported      2   NVIDIA Quadro NVS 3100M
-NVIDIA NVS 4100/PCI/SSE2/3DNOW!                                                                          supported      0   NVIDIA Quadro NVS
-NVIDIA NVS 4200M/PCI/SSE2                                                                                supported      2   NVIDIA Quadro NVS 4200M
-NVIDIA NVS 5100M/PCI/SSE2                                                                                supported      2   NVIDIA Quadro NVS 5100M
-NVIDIA PCI                                                                                                                  UNRECOGNIZED
-NVIDIA Quadro 2000/PCI/SSE2                                                                              supported      3   NVIDIA Quadro 2000 M/D
+NVIDIA NVS 3100M/PCI/SSE2                                                                                supported      0   NVIDIA G100M
+NVIDIA NVS 4100/PCI/SSE2/3DNOW!                                                                          supported      0   NVIDIA G100
+NVIDIA NVS 4200M/PCI/SSE2                                                                                supported      0   NVIDIA G 200
+NVIDIA NVS 5100M/PCI/SSE2                                                                                supported      0   NVIDIA G100M
+NVIDIA PCI                                                                                                                  NO MATCH
+NVIDIA Quadro 1000M/PCI/SSE2                                                                             supported      0   NVIDIA G100
+NVIDIA Quadro 2000/PCI/SSE2                                                                              supported      0   NVIDIA G 200
+NVIDIA Quadro 2000M/PCI/SSE2                                                                             supported      0   NVIDIA G 200
+NVIDIA Quadro 3000M/PCI/SSE2                                                                             supported      3   NVIDIA Quadro 3000M
 NVIDIA Quadro 4000                                                                                       supported      3   NVIDIA Quadro 4000
 NVIDIA Quadro 4000 OpenGL Engine                                                                         supported      3   NVIDIA Quadro 4000
 NVIDIA Quadro 4000/PCI/SSE2                                                                              supported      3   NVIDIA Quadro 4000
+NVIDIA Quadro 4000M/PCI/SSE2                                                                             supported      3   NVIDIA Quadro 4000M
 NVIDIA Quadro 5000/PCI/SSE2                                                                              supported      3   NVIDIA Quadro 50x0 M
 NVIDIA Quadro 5000M/PCI/SSE2                                                                             supported      3   NVIDIA Quadro 50x0 M
 NVIDIA Quadro 600                                                                                        supported      2   NVIDIA Quadro 600
@@ -1387,12 +1483,13 @@ NVIDIA Quadro 600/PCI/SSE2
 NVIDIA Quadro 600/PCI/SSE2/3DNOW!                                                                        supported      2   NVIDIA Quadro 600
 NVIDIA Quadro 6000                                                                                       supported      3   NVIDIA Quadro 6000
 NVIDIA Quadro 6000/PCI/SSE2                                                                              supported      3   NVIDIA Quadro 6000
-NVIDIA Quadro CX/PCI/SSE2                                                                                                   UNRECOGNIZED
+NVIDIA Quadro CX/PCI/SSE2                                                                                supported      3   NVIDIA Quadro CX
 NVIDIA Quadro DCC                                                                                        supported      0   NVIDIA Quadro DCC
 NVIDIA Quadro FX                                                                                         supported      1   NVIDIA Quadro FX
-NVIDIA Quadro FX 1100/AGP/SSE2                                                                           supported      1   NVIDIA Quadro FX
+NVIDIA Quadro FX 1100/AGP/SSE2                                                                           supported      0   NVIDIA G100
 NVIDIA Quadro FX 1400/PCI/SSE2                                                                           supported      2   NVIDIA Quadro 400
 NVIDIA Quadro FX 1500                                                                                    supported      1   NVIDIA Quadro FX
+NVIDIA Quadro FX 1500/PCI/SSE2                                                                           supported      1   NVIDIA Quadro FX
 NVIDIA Quadro FX 1500M/PCI/SSE2                                                                          supported      1   NVIDIA Quadro FX 1500M
 NVIDIA Quadro FX 1600M/PCI/SSE2                                                                          supported      2   NVIDIA Quadro 600
 NVIDIA Quadro FX 1700                                                                                    supported      1   NVIDIA Quadro FX
@@ -1420,7 +1517,9 @@ NVIDIA Quadro FX 4500
 NVIDIA Quadro FX 4600                                                                                    supported      2   NVIDIA Quadro 600
 NVIDIA Quadro FX 4800                                                                                    supported      3   NVIDIA Quadro FX 4800
 NVIDIA Quadro FX 4800/PCI/SSE2                                                                           supported      3   NVIDIA Quadro FX 4800
+NVIDIA Quadro FX 540/PCI/SSE2/3DNOW!                                                                     supported      1   NVIDIA Quadro FX
 NVIDIA Quadro FX 560                                                                                     supported      1   NVIDIA Quadro FX
+NVIDIA Quadro FX 560/PCI/SSE2                                                                            supported      1   NVIDIA Quadro FX
 NVIDIA Quadro FX 5600                                                                                    supported      2   NVIDIA Quadro 600
 NVIDIA Quadro FX 570                                                                                     supported      1   NVIDIA Quadro FX
 NVIDIA Quadro FX 570/PCI/SSE2                                                                            supported      1   NVIDIA Quadro FX
@@ -1431,57 +1530,73 @@ NVIDIA Quadro FX 880M
 NVIDIA Quadro FX 880M/PCI/SSE2                                                                           supported      3   NVIDIA Quadro FX 880M
 NVIDIA Quadro FX Go700/AGP/SSE2                                                                          supported      1   NVIDIA Quadro FX
 NVIDIA Quadro NVS                                                                                        supported      0   NVIDIA Quadro NVS
-NVIDIA Quadro NVS 110M/PCI/SSE2                                                                          supported      0   NVIDIA Quadro NVS 1xxM
+NVIDIA Quadro NVS 110M/PCI/SSE2                                                                          supported      0   NVIDIA G 110M
 NVIDIA Quadro NVS 130M/PCI/SSE2                                                                          supported      0   NVIDIA Quadro NVS 1xxM
 NVIDIA Quadro NVS 135M/PCI/SSE2                                                                          supported      0   NVIDIA Quadro NVS 1xxM
 NVIDIA Quadro NVS 140M/PCI/SSE2                                                                          supported      0   NVIDIA Quadro NVS 1xxM
 NVIDIA Quadro NVS 150M/PCI/SSE2                                                                          supported      0   NVIDIA Quadro NVS 1xxM
 NVIDIA Quadro NVS 160M/PCI/SSE2                                                                          supported      0   NVIDIA Quadro NVS 1xxM
-NVIDIA Quadro NVS 210S/PCI/SSE2/3DNOW!                                                                   supported      0   NVIDIA Quadro NVS
+NVIDIA Quadro NVS 210S/PCI/SSE2/3DNOW!                                                                   supported      1   NVIDIA G 210
 NVIDIA Quadro NVS 285/PCI/SSE2                                                                           supported      0   NVIDIA Quadro NVS
 NVIDIA Quadro NVS 290/PCI/SSE2                                                                           supported      0   NVIDIA Quadro NVS
 NVIDIA Quadro NVS 295/PCI/SSE2                                                                           supported      0   NVIDIA Quadro NVS
-NVIDIA Quadro NVS 320M/PCI/SSE2                                                                          supported      2   NVIDIA Quadro NVS 320M
+NVIDIA Quadro NVS 320M/PCI/SSE2                                                                          supported      2   NVIDIA G 320M
 NVIDIA Quadro NVS 55/280 PCI/PCI/SSE2                                                                    supported      0   NVIDIA Quadro NVS
 NVIDIA Quadro NVS/PCI/SSE2                                                                               supported      0   NVIDIA Quadro NVS
-NVIDIA Quadro PCI-E Series/PCI/SSE2/3DNOW!                                                                                  UNRECOGNIZED
-NVIDIA Quadro VX 200/PCI/SSE2                                                                                               UNRECOGNIZED
-NVIDIA Quadro/AGP/SSE2                                                                                                      UNRECOGNIZED
+NVIDIA Quadro PCI-E Series/PCI/SSE2/3DNOW!                                                                                  NO MATCH
+NVIDIA Quadro VX 200/PCI/SSE2                                                                            supported      0   NVIDIA G 200
+NVIDIA Quadro/AGP/SSE2                                                                                                      NO MATCH
 NVIDIA Quadro2                                                                                           supported      0   NVIDIA Quadro2
 NVIDIA Quadro4                                                                                           supported      0   NVIDIA Quadro4
+NVIDIA Quadro4 750 XGL/AGP/SSE2                                                                          supported      0   NVIDIA Quadro4
 NVIDIA RIVA TNT                                                                                          unsupported    0   NVIDIA RIVA TNT
 NVIDIA RIVA TNT2/AGP/SSE2                                                                                unsupported    0   NVIDIA RIVA TNT
 NVIDIA RIVA TNT2/PCI/3DNOW!                                                                              unsupported    0   NVIDIA RIVA TNT
+NVIDIA Tesla C2050/PCI/SSE2                                                                              supported      0   NVIDIA G 205M
 NVIDIA nForce                                                                                            unsupported    0   NVIDIA nForce
-NVIDIA unknown board/AGP/SSE2                                                                                               UNRECOGNIZED
-NVIDIA unknown board/PCI/SSE2                                                                                               UNRECOGNIZED
-NVIDIA unknown board/PCI/SSE2/3DNOW!                                                                                        UNRECOGNIZED
+NVIDIA nForce 730a/PCI/SSE2                                                                              unsupported    0   NVIDIA nForce
+NVIDIA nForce 730a/PCI/SSE2/3DNOW!                                                                       unsupported    0   NVIDIA nForce
+NVIDIA nForce 750a SLI/PCI/SSE2                                                                          unsupported    0   NVIDIA nForce
+NVIDIA nForce 750a SLI/PCI/SSE2/3DNOW!                                                                   unsupported    0   NVIDIA nForce
+NVIDIA nForce 760i SLI/PCI/SSE2                                                                          unsupported    0   NVIDIA nForce
+NVIDIA nForce 780a SLI/PCI/SSE2/3DNOW!                                                                   unsupported    0   NVIDIA nForce
+NVIDIA nForce 980a/780a SLI/PCI/SSE2                                                                     unsupported    0   NVIDIA nForce
+NVIDIA nForce 980a/780a SLI/PCI/SSE2/3DNOW!                                                              unsupported    0   NVIDIA nForce
+NVIDIA unknown board/AGP/SSE2                                                                            unsupported    0   NVIDIA Generic
+NVIDIA unknown board/PCI/SSE2                                                                            unsupported    0   NVIDIA Generic
+NVIDIA unknown board/PCI/SSE2/3DNOW!                                                                     unsupported    0   NVIDIA Generic
 Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5670 OpenGL Engine                     supported      3   ATI Radeon HD 5600
 Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5750 OpenGL Engine                     supported      3   ATI Radeon HD 5700
 Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5770 OpenGL Engine                     supported      3   ATI Radeon HD 5700
 Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6490M OpenGL Engine                    supported      3   ATI Radeon HD 6400
 Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6750M OpenGL Engine                    supported      3   ATI Radeon HD 6700
-Parallels and Intel Inc. 3D-Analyze v2.3 - http://www.tommti-systems.com                                                    UNRECOGNIZED
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6770M OpenGL Engine                    supported      3   ATI Radeon HD 6700
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6970M OpenGL Engine                    supported      3   ATI Radeon HD 6900
+Parallels and Intel Inc. 3D-Analyze v2.3 - http://www.tommti-systems.com                                                    NO MATCH
 Parallels and Intel Inc. Parallels using Intel HD Graphics 3000 OpenGL Engine                            supported      2   Intel HD Graphics
 Parallels and NVIDIA Parallels using NVIDIA GeForce 320M OpenGL Engine                                   supported      2   NVIDIA 320M
 Parallels and NVIDIA Parallels using NVIDIA GeForce 9400 OpenGL Engine                                   supported      1   NVIDIA GeForce 9400
 Parallels and NVIDIA Parallels using NVIDIA GeForce GT 120 OpenGL Engine                                 supported      2   NVIDIA GT 120M
 Parallels and NVIDIA Parallels using NVIDIA GeForce GT 330M OpenGL Engine                                supported      3   NVIDIA GT 330M
 Radeon RV350 on Gallium                                                                                  supported      0   ATI RV350 (9600)
-S3                                                                                                                          UNRECOGNIZED
+S3                                                                                                                          NO MATCH
+S3 Fire GL2                                                                                                                 NO MATCH
 S3 Graphics VIA/S3G UniChrome IGP/MMX/K3D                                                                unsupported    0   S3
+S3 Graphics VIA/S3G UniChrome IGP/MMX/SSE                                                                unsupported    0   S3
 S3 Graphics VIA/S3G UniChrome Pro IGP/MMX/SSE                                                            unsupported    0   S3
 S3 Graphics, Incorporated ProSavage/Twister                                                              unsupported    0   S3
 S3 Graphics, Incorporated S3 Graphics Chrome9 HC                                                         unsupported    0   S3
 S3 Graphics, Incorporated S3 Graphics DeltaChrome                                                        unsupported    0   S3
 S3 Graphics, Incorporated VIA Chrome9 HC IGP                                                             unsupported    0   S3
 SiS                                                                                                      unsupported    0   SiS
+SiS 650/M650 VGA                                                                                         unsupported    0   SiS
 SiS 661 VGA                                                                                              unsupported    0   SiS
 SiS 662 VGA                                                                                              unsupported    0   SiS
 SiS 741 VGA                                                                                              unsupported    0   SiS
 SiS 760 VGA                                                                                              unsupported    0   SiS
 SiS 761GX VGA                                                                                            unsupported    0   SiS
 SiS Mirage Graphics3                                                                                     unsupported    0   SiS
+SiS Xabre VGA                                                                                            unsupported    0   SiS
 Trident                                                                                                  unsupported    0   Trident
 Tungsten Graphics                                                                                        unsupported    0   Tungsten Graphics
 Tungsten Graphics, Inc Mesa DRI 865G GEM 20091221 2009Q4 x86/MMX/SSE2                                    unsupported    0   Mesa
@@ -1520,22 +1635,27 @@ Tungsten Graphics, Inc Mesa DRI IGD GEM 20100330 DEVELOPMENT x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI IGDNG_D GEM 20091221 2009Q4 x86/MMX/SSE2                                 unsupported    0   Mesa
 Tungsten Graphics, Inc Mesa DRI Ironlake Desktop GEM 20100330 DEVELOPMENT x86/MMX/SSE2                   unsupported    0   Mesa
 Tungsten Graphics, Inc Mesa DRI Ironlake Mobile GEM 20100330 DEVELOPMENT x86/MMX/SSE2                    unsupported    0   Mesa
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset                                      unsupported    0   Mesa
 Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset 20080716 x86/MMX/SSE2                unsupported    0   Mesa
 Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20090712 2009Q2 RC3 x86/MMX...   unsupported    0   Mesa
 Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20091221 2009Q4 x86/MMX/SSE2     unsupported    0   Mesa
 Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100328 2010Q1                  unsupported    0   Mesa
 Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100330 DEVELOPMENT             unsupported    0   Mesa
 Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100330 DEVELOPMENT x86/MM...   unsupported    0   Mesa
+Tungsten Graphics, Inc. Mesa DRI R200 (RV250 4C66) 20090101 x86/MMX/SSE2 TCL DRI2                        unsupported    0   Mesa
 Tungsten Graphics, Inc. Mesa DRI R200 (RV280 5964) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2               unsupported    0   Mesa
 VIA                                                                                                      unsupported    0   VIA
-VMware, Inc. Gallium 0.3 on SVGA3D; build: RELEASE;                                                                         UNRECOGNIZED
-VMware, Inc. Gallium 0.4 on i915 (chipset: 945GM)                                                                           UNRECOGNIZED
-VMware, Inc. Gallium 0.4 on llvmpipe                                                                                        UNRECOGNIZED
-VMware, Inc. Gallium 0.4 on softpipe                                                                                        UNRECOGNIZED
+VMware, Inc. Gallium 0.3 on SVGA3D; build: RELEASE;                                                                         NO MATCH
+VMware, Inc. Gallium 0.4 on SVGA3D; build: DEBUG; mutex: MSVC Intrinsics                                                    NO MATCH
+VMware, Inc. Gallium 0.4 on SVGA3D; build: RELEASE;                                                                         NO MATCH
+VMware, Inc. Gallium 0.4 on i915 (chipset: 945GM)                                                                           NO MATCH
+VMware, Inc. Gallium 0.4 on llvmpipe                                                                                        NO MATCH
+VMware, Inc. Gallium 0.4 on softpipe                                                                                        NO MATCH
 X.Org Gallium 0.4 on AMD BARTS                                                                           supported      3   AMD BARTS (HD 6800)
 X.Org Gallium 0.4 on AMD CEDAR                                                                           supported      2   AMD CEDAR (HD 5450)
 X.Org Gallium 0.4 on AMD HEMLOCK                                                                         supported      3   AMD HEMLOCK (HD 5970)
 X.Org Gallium 0.4 on AMD JUNIPER                                                                         supported      3   AMD JUNIPER (HD 5700)
+X.Org Gallium 0.4 on AMD PALM                                                                                               NO MATCH
 X.Org Gallium 0.4 on AMD REDWOOD                                                                         supported      3   AMD REDWOOD (HD 5500/5600)
 X.Org Gallium 0.4 on AMD RS780                                                                           supported      0   AMD RS780 (HD 3200)
 X.Org Gallium 0.4 on AMD RS880                                                                           supported      1   AMD RS880 (HD 4200)
@@ -1548,16 +1668,21 @@ X.Org Gallium 0.4 on AMD RV730
 X.Org Gallium 0.4 on AMD RV740                                                                           supported      3   AMD RV740 (HD 4700)
 X.Org Gallium 0.4 on AMD RV770                                                                           supported      3   AMD RV770 (HD 4800)
 X.Org R300 Project Gallium 0.4 on ATI R300                                                               supported      1   ATI R300 (9700)
+X.Org R300 Project Gallium 0.4 on ATI R350                                                               supported      1   ATI R350 (9800)
+X.Org R300 Project Gallium 0.4 on ATI R420                                                               supported      1   ATI R300 (9700)
 X.Org R300 Project Gallium 0.4 on ATI R580                                                               supported      3   ATI R580 (X1900)
 X.Org R300 Project Gallium 0.4 on ATI RC410                                                              unsupported    0   ATI RC410 (Xpress 200)
+X.Org R300 Project Gallium 0.4 on ATI RS480                                                              unsupported    0   ATI RS48x (Xpress 200x)
 X.Org R300 Project Gallium 0.4 on ATI RS482                                                              unsupported    0   ATI RS48x (Xpress 200x)
 X.Org R300 Project Gallium 0.4 on ATI RS600                                                              unsupported    0   ATI RS600 (Xpress 3200)
 X.Org R300 Project Gallium 0.4 on ATI RS690                                                              supported      1   ATI R300 (9700)
+X.Org R300 Project Gallium 0.4 on ATI RS740                                                              supported      1   ATI R300 (9700)
 X.Org R300 Project Gallium 0.4 on ATI RV350                                                              supported      0   ATI RV350 (9600)
 X.Org R300 Project Gallium 0.4 on ATI RV370                                                              supported      0   ATI RV370 (X300)
 X.Org R300 Project Gallium 0.4 on ATI RV410                                                              supported      1   ATI RV410 (X700)
 X.Org R300 Project Gallium 0.4 on ATI RV515                                                              supported      1   ATI RV515
 X.Org R300 Project Gallium 0.4 on ATI RV530                                                              supported      1   ATI RV530
+X.Org R300 Project Gallium 0.4 on ATI RV560                                                              supported      1   ATI R300 (9700)
 X.Org R300 Project Gallium 0.4 on ATI RV570                                                              supported      3   ATI RV570 (X1900 GT/PRO)
 X.Org R300 Project Gallium 0.4 on R420                                                                   supported      1   ATI R300 (9700)
 X.Org R300 Project Gallium 0.4 on R580                                                                   supported      3   ATI R580 (X1900)
@@ -1573,23 +1698,29 @@ X.Org R300 Project Gallium 0.4 on RV410
 X.Org R300 Project Gallium 0.4 on RV515                                                                  supported      1   ATI RV515
 X.Org R300 Project Gallium 0.4 on RV530                                                                  supported      1   ATI RV530
 XGI                                                                                                      unsupported    0   XGI
-nouveau Gallium 0.4 on NV34                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NV36                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NV46                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NV49                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NV4A                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NV4B                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NV4E                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NV50                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NV84                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NV86                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NV92                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NV94                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NV96                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NV98                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NVA0                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NVA3                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NVA5                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NVA8                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NVAA                                                                                                 UNRECOGNIZED
-nouveau Gallium 0.4 on NVAC                                                                                                 UNRECOGNIZED
+nouveau Gallium 0.4 on NV31                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV34                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV36                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV43                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV44                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV46                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV49                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV4A                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV4B                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV4C                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV4E                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV50                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV63                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV67                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV84                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV86                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV92                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV94                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV96                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NV98                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NVA0                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NVA3                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NVA5                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NVA8                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NVAA                                                                                                 NO MATCH
+nouveau Gallium 0.4 on NVAC                                                                                                 NO MATCH
diff --git a/indra/newview/tests/gpus_seen.txt b/indra/newview/tests/gpus_seen.txt
index c807f22b58fc7d04425e7c9819632983150ccb3f..570f92a9b064c85a4b623b1c824e9bfd7e5ed641 100644
--- a/indra/newview/tests/gpus_seen.txt
+++ b/indra/newview/tests/gpus_seen.txt
@@ -135,208 +135,386 @@ ATI Rage 128
 ATI Technologies Inc.
 ATI Technologies Inc.  x86
 ATI Technologies Inc.  x86/SSE2
+ATI Technologies Inc.  x86/SSE2
 ATI Technologies Inc. (Vista) ATI Mobility Radeon HD 5730
+ATI Technologies Inc. 128MB ATI Radeon X1300 x86/SSE2
 ATI Technologies Inc. 256MB ATI Radeon X1300PRO x86/SSE2
 ATI Technologies Inc. AMD 760G
+ATI Technologies Inc. AMD 760G
 ATI Technologies Inc. AMD 760G (Microsoft WDDM 1.1)
 ATI Technologies Inc. AMD 780L
 ATI Technologies Inc. AMD FirePro 2270
 ATI Technologies Inc. AMD M860G with ATI Mobility Radeon 4100
+ATI Technologies Inc. AMD M860G with ATI Mobility Radeon 4100
+ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4200
 ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4200
 ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4250
+ATI Technologies Inc. AMD M880G with ATI Mobility Radeon HD 4250
+ATI Technologies Inc. AMD RADEON HD 6350
+ATI Technologies Inc. AMD RADEON HD 6450
 ATI Technologies Inc. AMD RADEON HD 6450
+ATI Technologies Inc. AMD RADEON HD 6670
+ATI Technologies Inc. AMD Radeon 6600M and 6700M Series
+ATI Technologies Inc. AMD Radeon HD 6200 series Graphics
 ATI Technologies Inc. AMD Radeon HD 6200 series Graphics
 ATI Technologies Inc. AMD Radeon HD 6250 Graphics
+ATI Technologies Inc. AMD Radeon HD 6250 Graphics
+ATI Technologies Inc. AMD Radeon HD 6290 Graphics
+ATI Technologies Inc. AMD Radeon HD 6300 series Graphics
 ATI Technologies Inc. AMD Radeon HD 6300 series Graphics
 ATI Technologies Inc. AMD Radeon HD 6300M Series
+ATI Technologies Inc. AMD Radeon HD 6300M Series
+ATI Technologies Inc. AMD Radeon HD 6310 Graphics
 ATI Technologies Inc. AMD Radeon HD 6310 Graphics
 ATI Technologies Inc. AMD Radeon HD 6310M
+ATI Technologies Inc. AMD Radeon HD 6310M
+ATI Technologies Inc. AMD Radeon HD 6330M
 ATI Technologies Inc. AMD Radeon HD 6330M
 ATI Technologies Inc. AMD Radeon HD 6350
 ATI Technologies Inc. AMD Radeon HD 6370M
+ATI Technologies Inc. AMD Radeon HD 6370M
 ATI Technologies Inc. AMD Radeon HD 6400M Series
+ATI Technologies Inc. AMD Radeon HD 6400M Series
+ATI Technologies Inc. AMD Radeon HD 6450
 ATI Technologies Inc. AMD Radeon HD 6450
 ATI Technologies Inc. AMD Radeon HD 6470M
+ATI Technologies Inc. AMD Radeon HD 6470M
+ATI Technologies Inc. AMD Radeon HD 6490M
 ATI Technologies Inc. AMD Radeon HD 6490M
+ATI Technologies Inc. AMD Radeon HD 6500 Series
+ATI Technologies Inc. AMD Radeon HD 6500M Series
 ATI Technologies Inc. AMD Radeon HD 6500M/5600/5700 Series
+ATI Technologies Inc. AMD Radeon HD 6500M/5600/5700 Series
+ATI Technologies Inc. AMD Radeon HD 6530M
 ATI Technologies Inc. AMD Radeon HD 6530M
 ATI Technologies Inc. AMD Radeon HD 6550M
+ATI Technologies Inc. AMD Radeon HD 6550M
 ATI Technologies Inc. AMD Radeon HD 6570
+ATI Technologies Inc. AMD Radeon HD 6570
+ATI Technologies Inc. AMD Radeon HD 6570M
 ATI Technologies Inc. AMD Radeon HD 6570M
 ATI Technologies Inc. AMD Radeon HD 6570M/5700 Series
+ATI Technologies Inc. AMD Radeon HD 6570M/5700 Series
+ATI Technologies Inc. AMD Radeon HD 6600 Series
 ATI Technologies Inc. AMD Radeon HD 6600M Series
+ATI Technologies Inc. AMD Radeon HD 6630M
+ATI Technologies Inc. AMD Radeon HD 6650M
 ATI Technologies Inc. AMD Radeon HD 6650M
 ATI Technologies Inc. AMD Radeon HD 6670
+ATI Technologies Inc. AMD Radeon HD 6670
+ATI Technologies Inc. AMD Radeon HD 6700 Series
 ATI Technologies Inc. AMD Radeon HD 6700 Series
 ATI Technologies Inc. AMD Radeon HD 6750
+ATI Technologies Inc. AMD Radeon HD 6750
 ATI Technologies Inc. AMD Radeon HD 6750M
+ATI Technologies Inc. AMD Radeon HD 6750M
+ATI Technologies Inc. AMD Radeon HD 6770
 ATI Technologies Inc. AMD Radeon HD 6770
+ATI Technologies Inc. AMD Radeon HD 6770M
 ATI Technologies Inc. AMD Radeon HD 6800 Series
+ATI Technologies Inc. AMD Radeon HD 6800 Series
+ATI Technologies Inc. AMD Radeon HD 6800M Series
+ATI Technologies Inc. AMD Radeon HD 6850
+ATI Technologies Inc. AMD Radeon HD 6850M
 ATI Technologies Inc. AMD Radeon HD 6850M
 ATI Technologies Inc. AMD Radeon HD 6870
+ATI Technologies Inc. AMD Radeon HD 6870
+ATI Technologies Inc. AMD Radeon HD 6870M
 ATI Technologies Inc. AMD Radeon HD 6870M
 ATI Technologies Inc. AMD Radeon HD 6900 Series
+ATI Technologies Inc. AMD Radeon HD 6900 Series
+ATI Technologies Inc. AMD Radeon HD 6900M Series
 ATI Technologies Inc. AMD Radeon HD 6970M
+ATI Technologies Inc. AMD Radeon HD 6970M
+ATI Technologies Inc. AMD Radeon HD 6990
 ATI Technologies Inc. AMD Radeon HD 6990
 ATI Technologies Inc. AMD Radeon(TM) HD 6470M
+ATI Technologies Inc. AMD Radeon(TM) HD 6470M
+ATI Technologies Inc. AMD Radeon(TM) HD 6470M
+ATI Technologies Inc. AMD Radeon(TM) HD 6480G
+ATI Technologies Inc. AMD Radeon(TM) HD 6520G
+ATI Technologies Inc. AMD Radeon(TM) HD 6620G
+ATI Technologies Inc. AMD Radeon(TM) HD 6630M
 ATI Technologies Inc. ASUS 5870 Eyefinity 6
+ATI Technologies Inc. ASUS A9550 Series
 ATI Technologies Inc. ASUS AH2600 Series
 ATI Technologies Inc. ASUS AH3450 Series
 ATI Technologies Inc. ASUS AH3650 Series
+ATI Technologies Inc. ASUS AH3650 Series
 ATI Technologies Inc. ASUS AH4650 Series
 ATI Technologies Inc. ASUS ARES
+ATI Technologies Inc. ASUS ARES
 ATI Technologies Inc. ASUS EAH2900 Series
 ATI Technologies Inc. ASUS EAH3450 Series
+ATI Technologies Inc. ASUS EAH3450 Series
 ATI Technologies Inc. ASUS EAH3650 Series
+ATI Technologies Inc. ASUS EAH3650 Series
+ATI Technologies Inc. ASUS EAH4350 series
 ATI Technologies Inc. ASUS EAH4350 series
 ATI Technologies Inc. ASUS EAH4550 series
+ATI Technologies Inc. ASUS EAH4550 series
 ATI Technologies Inc. ASUS EAH4650 series
 ATI Technologies Inc. ASUS EAH4670 series
+ATI Technologies Inc. ASUS EAH4670 series
 ATI Technologies Inc. ASUS EAH4750 Series
 ATI Technologies Inc. ASUS EAH4770 Series
+ATI Technologies Inc. ASUS EAH4770 Series
+ATI Technologies Inc. ASUS EAH4770 series
 ATI Technologies Inc. ASUS EAH4770 series
 ATI Technologies Inc. ASUS EAH4850 series
 ATI Technologies Inc. ASUS EAH5450 Series
+ATI Technologies Inc. ASUS EAH5450 Series
 ATI Technologies Inc. ASUS EAH5550 Series
+ATI Technologies Inc. ASUS EAH5550 Series
+ATI Technologies Inc. ASUS EAH5570 series
 ATI Technologies Inc. ASUS EAH5570 series
 ATI Technologies Inc. ASUS EAH5670 Series
+ATI Technologies Inc. ASUS EAH5670 Series
+ATI Technologies Inc. ASUS EAH5750 Series
 ATI Technologies Inc. ASUS EAH5750 Series
 ATI Technologies Inc. ASUS EAH5770 Series
+ATI Technologies Inc. ASUS EAH5770 Series
 ATI Technologies Inc. ASUS EAH5830 Series
 ATI Technologies Inc. ASUS EAH5850 Series
+ATI Technologies Inc. ASUS EAH5850 Series
+ATI Technologies Inc. ASUS EAH5870 Series
 ATI Technologies Inc. ASUS EAH5870 Series
 ATI Technologies Inc. ASUS EAH5970 Series
+ATI Technologies Inc. ASUS EAH5970 Series
+ATI Technologies Inc. ASUS EAH6450 Series
+ATI Technologies Inc. ASUS EAH6570 Series
+ATI Technologies Inc. ASUS EAH6670 Series
+ATI Technologies Inc. ASUS EAH6850 Series
 ATI Technologies Inc. ASUS EAH6850 Series
 ATI Technologies Inc. ASUS EAH6870 Series
+ATI Technologies Inc. ASUS EAH6870 Series
+ATI Technologies Inc. ASUS EAH6950 Series
 ATI Technologies Inc. ASUS EAH6950 Series
 ATI Technologies Inc. ASUS EAH6970 Series
+ATI Technologies Inc. ASUS EAH6970 Series
 ATI Technologies Inc. ASUS EAHG4670 series
 ATI Technologies Inc. ASUS Extreme AX600 Series
+ATI Technologies Inc. ASUS Extreme AX600 Series
+ATI Technologies Inc. ASUS Extreme AX600XT-TD
 ATI Technologies Inc. ASUS Extreme AX600XT-TD
 ATI Technologies Inc. ASUS X1300 Series x86/SSE2
 ATI Technologies Inc. ASUS X1550 Series
 ATI Technologies Inc. ASUS X1950 Series x86/SSE2
 ATI Technologies Inc. ASUS X800 Series
+ATI Technologies Inc. ASUS X800 Series
 ATI Technologies Inc. ASUS X850 Series
 ATI Technologies Inc. ATI All-in-Wonder HD
 ATI Technologies Inc. ATI FirePro 2260
+ATI Technologies Inc. ATI FirePro 2260
 ATI Technologies Inc. ATI FirePro 2450
 ATI Technologies Inc. ATI FirePro M5800
+ATI Technologies Inc. ATI FirePro M5800
+ATI Technologies Inc. ATI FirePro M7740
 ATI Technologies Inc. ATI FirePro M7740
 ATI Technologies Inc. ATI FirePro M7820
+ATI Technologies Inc. ATI FirePro M7820
 ATI Technologies Inc. ATI FirePro V3700 (FireGL)
 ATI Technologies Inc. ATI FirePro V3800
 ATI Technologies Inc. ATI FirePro V4800
 ATI Technologies Inc. ATI FirePro V4800 (FireGL)
 ATI Technologies Inc. ATI FirePro V5800
 ATI Technologies Inc. ATI FirePro V7800
+ATI Technologies Inc. ATI MOBILITY RADEON 9600/9700 Series
+ATI Technologies Inc. ATI MOBILITY RADEON 9XXX x86/SSE2
 ATI Technologies Inc. ATI MOBILITY RADEON 9XXX x86/SSE2
+ATI Technologies Inc. ATI MOBILITY RADEON HD 2300
 ATI Technologies Inc. ATI MOBILITY RADEON HD 3450
+ATI Technologies Inc. ATI MOBILITY RADEON HD 3650
+ATI Technologies Inc. ATI MOBILITY RADEON X1600
 ATI Technologies Inc. ATI MOBILITY RADEON X1600
 ATI Technologies Inc. ATI MOBILITY RADEON X2300
+ATI Technologies Inc. ATI MOBILITY RADEON X2300
 ATI Technologies Inc. ATI MOBILITY RADEON X2300 HD x86/SSE2
 ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. ATI MOBILITY RADEON X2300 x86/SSE2
 ATI Technologies Inc. ATI MOBILITY RADEON X300
+ATI Technologies Inc. ATI MOBILITY RADEON X300
 ATI Technologies Inc. ATI MOBILITY RADEON X600
+ATI Technologies Inc. ATI MOBILITY RADEON X700
+ATI Technologies Inc. ATI MOBILITY RADEON XPRESS 200
 ATI Technologies Inc. ATI MOBILITY RADEON XPRESS 200
 ATI Technologies Inc. ATI Mobility FireGL V5700
+ATI Technologies Inc. ATI Mobility FireGL V5700
+ATI Technologies Inc. ATI Mobility Radeon 4100
 ATI Technologies Inc. ATI Mobility Radeon 4100
 ATI Technologies Inc. ATI Mobility Radeon Graphics
+ATI Technologies Inc. ATI Mobility Radeon Graphics
 ATI Technologies Inc. ATI Mobility Radeon HD 2300
+ATI Technologies Inc. ATI Mobility Radeon HD 2300
+ATI Technologies Inc. ATI Mobility Radeon HD 2400
 ATI Technologies Inc. ATI Mobility Radeon HD 2400
 ATI Technologies Inc. ATI Mobility Radeon HD 2400 XT
+ATI Technologies Inc. ATI Mobility Radeon HD 2400 XT
+ATI Technologies Inc. ATI Mobility Radeon HD 2600
 ATI Technologies Inc. ATI Mobility Radeon HD 2600
 ATI Technologies Inc. ATI Mobility Radeon HD 2600 XT
 ATI Technologies Inc. ATI Mobility Radeon HD 2700
+ATI Technologies Inc. ATI Mobility Radeon HD 2700
+ATI Technologies Inc. ATI Mobility Radeon HD 3400 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 3400 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 3410
+ATI Technologies Inc. ATI Mobility Radeon HD 3430
 ATI Technologies Inc. ATI Mobility Radeon HD 3430
 ATI Technologies Inc. ATI Mobility Radeon HD 3450
+ATI Technologies Inc. ATI Mobility Radeon HD 3450
+ATI Technologies Inc. ATI Mobility Radeon HD 3470
 ATI Technologies Inc. ATI Mobility Radeon HD 3470
 ATI Technologies Inc. ATI Mobility Radeon HD 3470 Hybrid X2
 ATI Technologies Inc. ATI Mobility Radeon HD 3650
+ATI Technologies Inc. ATI Mobility Radeon HD 3650
+ATI Technologies Inc. ATI Mobility Radeon HD 3670
+ATI Technologies Inc. ATI Mobility Radeon HD 4200
 ATI Technologies Inc. ATI Mobility Radeon HD 4200
 ATI Technologies Inc. ATI Mobility Radeon HD 4200 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4200 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 4225
 ATI Technologies Inc. ATI Mobility Radeon HD 4225 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4225 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4250
 ATI Technologies Inc. ATI Mobility Radeon HD 4250
 ATI Technologies Inc. ATI Mobility Radeon HD 4250 Graphics
+ATI Technologies Inc. ATI Mobility Radeon HD 4250 Graphics
+ATI Technologies Inc. ATI Mobility Radeon HD 4250 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 4270
 ATI Technologies Inc. ATI Mobility Radeon HD 4300 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4300 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 4300/4500 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4300/4500 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4330
 ATI Technologies Inc. ATI Mobility Radeon HD 4330
 ATI Technologies Inc. ATI Mobility Radeon HD 4330 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 4350
 ATI Technologies Inc. ATI Mobility Radeon HD 4350 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4350 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4500 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 4500 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 4500/5100 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4500/5100 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 4530
+ATI Technologies Inc. ATI Mobility Radeon HD 4530
+ATI Technologies Inc. ATI Mobility Radeon HD 4530 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 4530 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 4550
+ATI Technologies Inc. ATI Mobility Radeon HD 4550
+ATI Technologies Inc. ATI Mobility Radeon HD 4570
 ATI Technologies Inc. ATI Mobility Radeon HD 4570
 ATI Technologies Inc. ATI Mobility Radeon HD 4600 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4600 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4650
 ATI Technologies Inc. ATI Mobility Radeon HD 4650
 ATI Technologies Inc. ATI Mobility Radeon HD 4650 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4650 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 4670
 ATI Technologies Inc. ATI Mobility Radeon HD 4670
 ATI Technologies Inc. ATI Mobility Radeon HD 4830 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 4850
 ATI Technologies Inc. ATI Mobility Radeon HD 4870
+ATI Technologies Inc. ATI Mobility Radeon HD 4870
+ATI Technologies Inc. ATI Mobility Radeon HD 5000
 ATI Technologies Inc. ATI Mobility Radeon HD 5000
 ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5000 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5145
 ATI Technologies Inc. ATI Mobility Radeon HD 5145
 ATI Technologies Inc. ATI Mobility Radeon HD 5165
+ATI Technologies Inc. ATI Mobility Radeon HD 5165
 ATI Technologies Inc. ATI Mobility Radeon HD 530v
+ATI Technologies Inc. ATI Mobility Radeon HD 530v
+ATI Technologies Inc. ATI Mobility Radeon HD 5400 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 5400 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 540v
 ATI Technologies Inc. ATI Mobility Radeon HD 5430
+ATI Technologies Inc. ATI Mobility Radeon HD 5430
+ATI Technologies Inc. ATI Mobility Radeon HD 5450
 ATI Technologies Inc. ATI Mobility Radeon HD 5450
 ATI Technologies Inc. ATI Mobility Radeon HD 5450 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5450 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 545v
 ATI Technologies Inc. ATI Mobility Radeon HD 545v
 ATI Technologies Inc. ATI Mobility Radeon HD 5470
+ATI Technologies Inc. ATI Mobility Radeon HD 5470
 ATI Technologies Inc. ATI Mobility Radeon HD 550v
+ATI Technologies Inc. ATI Mobility Radeon HD 550v
+ATI Technologies Inc. ATI Mobility Radeon HD 5600/5700 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 5600/5700 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 560v
 ATI Technologies Inc. ATI Mobility Radeon HD 5650
+ATI Technologies Inc. ATI Mobility Radeon HD 5650
+ATI Technologies Inc. ATI Mobility Radeon HD 5700 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 5700 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 5730
+ATI Technologies Inc. ATI Mobility Radeon HD 5730
+ATI Technologies Inc. ATI Mobility Radeon HD 5800 Series
 ATI Technologies Inc. ATI Mobility Radeon HD 5800 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5830 Series
+ATI Technologies Inc. ATI Mobility Radeon HD 5850
 ATI Technologies Inc. ATI Mobility Radeon HD 5850
 ATI Technologies Inc. ATI Mobility Radeon HD 5870
+ATI Technologies Inc. ATI Mobility Radeon HD 5870
+ATI Technologies Inc. ATI Mobility Radeon HD 6300 series
 ATI Technologies Inc. ATI Mobility Radeon HD 6300 series
 ATI Technologies Inc. ATI Mobility Radeon HD 6370
+ATI Technologies Inc. ATI Mobility Radeon HD 6370
 ATI Technologies Inc. ATI Mobility Radeon HD 6470M
 ATI Technologies Inc. ATI Mobility Radeon HD 6550
+ATI Technologies Inc. ATI Mobility Radeon HD 6550
 ATI Technologies Inc. ATI Mobility Radeon HD 6570
+ATI Technologies Inc. ATI Mobility Radeon HD 6570
+ATI Technologies Inc. ATI Mobility Radeon X1300
 ATI Technologies Inc. ATI Mobility Radeon X1300
 ATI Technologies Inc. ATI Mobility Radeon X1300 x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. ATI Mobility Radeon X1300 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X1300 x86/SSE2
 ATI Technologies Inc. ATI Mobility Radeon X1350
 ATI Technologies Inc. ATI Mobility Radeon X1350 x86/SSE2
 ATI Technologies Inc. ATI Mobility Radeon X1400
+ATI Technologies Inc. ATI Mobility Radeon X1400
+ATI Technologies Inc. ATI Mobility Radeon X1400 x86/SSE2
 ATI Technologies Inc. ATI Mobility Radeon X1400 x86/SSE2
 ATI Technologies Inc. ATI Mobility Radeon X1600
+ATI Technologies Inc. ATI Mobility Radeon X1600
+ATI Technologies Inc. ATI Mobility Radeon X1600 x86/SSE2
 ATI Technologies Inc. ATI Mobility Radeon X1600 x86/SSE2
 ATI Technologies Inc. ATI Mobility Radeon X1700 x86/SSE2
 ATI Technologies Inc. ATI Mobility Radeon X2300
+ATI Technologies Inc. ATI Mobility Radeon X2300
 ATI Technologies Inc. ATI Mobility Radeon X2300 (Omega 3.8.442)
 ATI Technologies Inc. ATI Mobility Radeon X2300 x86
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. ATI Mobility Radeon X2300 x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. ATI Mobility Radeon X2300 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X2300 x86/SSE2
+ATI Technologies Inc. ATI Mobility Radeon X2500
 ATI Technologies Inc. ATI Mobility Radeon X2500
 ATI Technologies Inc. ATI Mobility Radeon X2500 x86/SSE2
 ATI Technologies Inc. ATI Mobility Radeon. HD 530v
+ATI Technologies Inc. ATI Mobility Radeon. HD 530v
+ATI Technologies Inc. ATI Mobility Radeon. HD 5470
 ATI Technologies Inc. ATI Mobility Radeon. HD 5470
 ATI Technologies Inc. ATI RADEON HD 3200 T25XX by CAMILO
 ATI Technologies Inc. ATI RADEON XPRESS 1100
+ATI Technologies Inc. ATI RADEON XPRESS 1100 x86/SSE2
+ATI Technologies Inc. ATI RADEON XPRESS 200 Series
 ATI Technologies Inc. ATI RADEON XPRESS 200 Series
 ATI Technologies Inc. ATI RADEON XPRESS 200 Series x86/SSE2
 ATI Technologies Inc. ATI RADEON XPRESS 200M SERIES
 ATI Technologies Inc. ATI Radeon
 ATI Technologies Inc. ATI Radeon 2100
+ATI Technologies Inc. ATI Radeon 2100
 ATI Technologies Inc. ATI Radeon 2100 (Microsoft - WDDM)
 ATI Technologies Inc. ATI Radeon 2100 Graphics
 ATI Technologies Inc. ATI Radeon 3000
+ATI Technologies Inc. ATI Radeon 3000
 ATI Technologies Inc. ATI Radeon 3000 Graphics
+ATI Technologies Inc. ATI Radeon 3000 Graphics
+ATI Technologies Inc. ATI Radeon 3100 Graphics
 ATI Technologies Inc. ATI Radeon 3100 Graphics
 ATI Technologies Inc. ATI Radeon 5xxx series
 ATI Technologies Inc. ATI Radeon 9550 / X1050 Series
@@ -347,143 +525,239 @@ ATI Technologies Inc. ATI Radeon 9600 / X1050 Series
 ATI Technologies Inc. ATI Radeon 9600/9550/X1050 Series
 ATI Technologies Inc. ATI Radeon BA Prototype OpenGL Engine
 ATI Technologies Inc. ATI Radeon BB Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon Broadway XT Prototype OpenGL Engine
 ATI Technologies Inc. ATI Radeon Cedar PRO Prototype OpenGL Engine
 ATI Technologies Inc. ATI Radeon Cypress PRO Prototype OpenGL Engine
 ATI Technologies Inc. ATI Radeon Graphics Processor
+ATI Technologies Inc. ATI Radeon Graphics Processor
 ATI Technologies Inc. ATI Radeon HD 2200 Graphics
 ATI Technologies Inc. ATI Radeon HD 2350
 ATI Technologies Inc. ATI Radeon HD 2400
+ATI Technologies Inc. ATI Radeon HD 2400
+ATI Technologies Inc. ATI Radeon HD 2400 OpenGL Engine
 ATI Technologies Inc. ATI Radeon HD 2400 OpenGL Engine
 ATI Technologies Inc. ATI Radeon HD 2400 PRO
 ATI Technologies Inc. ATI Radeon HD 2400 PRO AGP
 ATI Technologies Inc. ATI Radeon HD 2400 Pro
+ATI Technologies Inc. ATI Radeon HD 2400 Pro
+ATI Technologies Inc. ATI Radeon HD 2400 Series
 ATI Technologies Inc. ATI Radeon HD 2400 Series
 ATI Technologies Inc. ATI Radeon HD 2400 XT
+ATI Technologies Inc. ATI Radeon HD 2400 XT
+ATI Technologies Inc. ATI Radeon HD 2400 XT OpenGL Engine
 ATI Technologies Inc. ATI Radeon HD 2400 XT OpenGL Engine
 ATI Technologies Inc. ATI Radeon HD 2600 OpenGL Engine
 ATI Technologies Inc. ATI Radeon HD 2600 PRO
 ATI Technologies Inc. ATI Radeon HD 2600 PRO OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 2600 PRO OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 2600 Pro
 ATI Technologies Inc. ATI Radeon HD 2600 Pro
 ATI Technologies Inc. ATI Radeon HD 2600 Series
 ATI Technologies Inc. ATI Radeon HD 2600 XT
+ATI Technologies Inc. ATI Radeon HD 2600 XT
 ATI Technologies Inc. ATI Radeon HD 2900 GT
 ATI Technologies Inc. ATI Radeon HD 2900 XT
 ATI Technologies Inc. ATI Radeon HD 3200 Graphics
+ATI Technologies Inc. ATI Radeon HD 3200 Graphics
 ATI Technologies Inc. ATI Radeon HD 3300 Graphics
 ATI Technologies Inc. ATI Radeon HD 3400 Series
+ATI Technologies Inc. ATI Radeon HD 3400 Series
 ATI Technologies Inc. ATI Radeon HD 3450
+ATI Technologies Inc. ATI Radeon HD 3450
+ATI Technologies Inc. ATI Radeon HD 3450 - Dell Optiplex
 ATI Technologies Inc. ATI Radeon HD 3450 - Dell Optiplex
 ATI Technologies Inc. ATI Radeon HD 3470
 ATI Technologies Inc. ATI Radeon HD 3470 - Dell Optiplex
 ATI Technologies Inc. ATI Radeon HD 3550
+ATI Technologies Inc. ATI Radeon HD 3550
 ATI Technologies Inc. ATI Radeon HD 3600 Series
+ATI Technologies Inc. ATI Radeon HD 3600 Series
+ATI Technologies Inc. ATI Radeon HD 3650
 ATI Technologies Inc. ATI Radeon HD 3650
 ATI Technologies Inc. ATI Radeon HD 3650 AGP
 ATI Technologies Inc. ATI Radeon HD 3730
 ATI Technologies Inc. ATI Radeon HD 3800 Series
+ATI Technologies Inc. ATI Radeon HD 3800 Series
+ATI Technologies Inc. ATI Radeon HD 3850
 ATI Technologies Inc. ATI Radeon HD 3850
 ATI Technologies Inc. ATI Radeon HD 3850 AGP
 ATI Technologies Inc. ATI Radeon HD 3870
+ATI Technologies Inc. ATI Radeon HD 3870
 ATI Technologies Inc. ATI Radeon HD 3870 X2
 ATI Technologies Inc. ATI Radeon HD 4200
+ATI Technologies Inc. ATI Radeon HD 4200
+ATI Technologies Inc. ATI Radeon HD 4250
 ATI Technologies Inc. ATI Radeon HD 4250
 ATI Technologies Inc. ATI Radeon HD 4250 Graphics
+ATI Technologies Inc. ATI Radeon HD 4250 Graphics
+ATI Technologies Inc. ATI Radeon HD 4270
 ATI Technologies Inc. ATI Radeon HD 4270
 ATI Technologies Inc. ATI Radeon HD 4290
+ATI Technologies Inc. ATI Radeon HD 4290
+ATI Technologies Inc. ATI Radeon HD 4290 (Engineering Sample)
 ATI Technologies Inc. ATI Radeon HD 4300 Series
+ATI Technologies Inc. ATI Radeon HD 4300 Series
+ATI Technologies Inc. ATI Radeon HD 4300/4500 Series
 ATI Technologies Inc. ATI Radeon HD 4300/4500 Series
 ATI Technologies Inc. ATI Radeon HD 4350
+ATI Technologies Inc. ATI Radeon HD 4350
 ATI Technologies Inc. ATI Radeon HD 4350 (Microsoft WDDM 1.1)
 ATI Technologies Inc. ATI Radeon HD 4450
+ATI Technologies Inc. ATI Radeon HD 4450
 ATI Technologies Inc. ATI Radeon HD 4500 Series
 ATI Technologies Inc. ATI Radeon HD 4550
+ATI Technologies Inc. ATI Radeon HD 4550
+ATI Technologies Inc. ATI Radeon HD 4600 Series
 ATI Technologies Inc. ATI Radeon HD 4600 Series
 ATI Technologies Inc. ATI Radeon HD 4650
+ATI Technologies Inc. ATI Radeon HD 4650
 ATI Technologies Inc. ATI Radeon HD 4670
+ATI Technologies Inc. ATI Radeon HD 4670
+ATI Technologies Inc. ATI Radeon HD 4670 OpenGL Engine
 ATI Technologies Inc. ATI Radeon HD 4670 OpenGL Engine
 ATI Technologies Inc. ATI Radeon HD 4700 Series
+ATI Technologies Inc. ATI Radeon HD 4700 Series
+ATI Technologies Inc. ATI Radeon HD 4720
 ATI Technologies Inc. ATI Radeon HD 4720
 ATI Technologies Inc. ATI Radeon HD 4730
+ATI Technologies Inc. ATI Radeon HD 4730
+ATI Technologies Inc. ATI Radeon HD 4730 Series
 ATI Technologies Inc. ATI Radeon HD 4730 Series
 ATI Technologies Inc. ATI Radeon HD 4750
 ATI Technologies Inc. ATI Radeon HD 4770
+ATI Technologies Inc. ATI Radeon HD 4770
 ATI Technologies Inc. ATI Radeon HD 4800 Series
+ATI Technologies Inc. ATI Radeon HD 4800 Series
+ATI Technologies Inc. ATI Radeon HD 4850
 ATI Technologies Inc. ATI Radeon HD 4850
 ATI Technologies Inc. ATI Radeon HD 4850 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 4850 OpenGL Engine
 ATI Technologies Inc. ATI Radeon HD 4850 Series
 ATI Technologies Inc. ATI Radeon HD 4870
+ATI Technologies Inc. ATI Radeon HD 4870
 ATI Technologies Inc. ATI Radeon HD 4870 OpenGL Engine
 ATI Technologies Inc. ATI Radeon HD 4870 X2
+ATI Technologies Inc. ATI Radeon HD 4870 X2
+ATI Technologies Inc. ATI Radeon HD 5400 Series
 ATI Technologies Inc. ATI Radeon HD 5400 Series
 ATI Technologies Inc. ATI Radeon HD 5450
+ATI Technologies Inc. ATI Radeon HD 5450
+ATI Technologies Inc. ATI Radeon HD 5470
 ATI Technologies Inc. ATI Radeon HD 5500 Series
+ATI Technologies Inc. ATI Radeon HD 5500 Series
+ATI Technologies Inc. ATI Radeon HD 5570
 ATI Technologies Inc. ATI Radeon HD 5570
 ATI Technologies Inc. ATI Radeon HD 5600 Series
+ATI Technologies Inc. ATI Radeon HD 5600 Series
+ATI Technologies Inc. ATI Radeon HD 5600/5700
 ATI Technologies Inc. ATI Radeon HD 5630
 ATI Technologies Inc. ATI Radeon HD 5670
+ATI Technologies Inc. ATI Radeon HD 5670
 ATI Technologies Inc. ATI Radeon HD 5670 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5670 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5700 Series
 ATI Technologies Inc. ATI Radeon HD 5700 Series
 ATI Technologies Inc. ATI Radeon HD 5750
+ATI Technologies Inc. ATI Radeon HD 5750
 ATI Technologies Inc. ATI Radeon HD 5750 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5750 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5770
 ATI Technologies Inc. ATI Radeon HD 5770
 ATI Technologies Inc. ATI Radeon HD 5770 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5770 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5800 Series
 ATI Technologies Inc. ATI Radeon HD 5800 Series
 ATI Technologies Inc. ATI Radeon HD 5850
+ATI Technologies Inc. ATI Radeon HD 5850
 ATI Technologies Inc. ATI Radeon HD 5870
 ATI Technologies Inc. ATI Radeon HD 5870 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5870 OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 5900 Series
 ATI Technologies Inc. ATI Radeon HD 5900 Series
 ATI Technologies Inc. ATI Radeon HD 5970
 ATI Technologies Inc. ATI Radeon HD 6230
+ATI Technologies Inc. ATI Radeon HD 6230
+ATI Technologies Inc. ATI Radeon HD 6250
 ATI Technologies Inc. ATI Radeon HD 6250
 ATI Technologies Inc. ATI Radeon HD 6350
 ATI Technologies Inc. ATI Radeon HD 6390
 ATI Technologies Inc. ATI Radeon HD 6490M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6490M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6510
 ATI Technologies Inc. ATI Radeon HD 6510
 ATI Technologies Inc. ATI Radeon HD 6570M
+ATI Technologies Inc. ATI Radeon HD 6570M
+ATI Technologies Inc. ATI Radeon HD 6630M OpenGL Engine
 ATI Technologies Inc. ATI Radeon HD 6750
 ATI Technologies Inc. ATI Radeon HD 6750M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6750M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6770
 ATI Technologies Inc. ATI Radeon HD 6770
 ATI Technologies Inc. ATI Radeon HD 6770M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6770M OpenGL Engine
 ATI Technologies Inc. ATI Radeon HD 6800 Series
 ATI Technologies Inc. ATI Radeon HD 6970M OpenGL Engine
+ATI Technologies Inc. ATI Radeon HD 6970M OpenGL Engine
 ATI Technologies Inc. ATI Radeon HD3750
 ATI Technologies Inc. ATI Radeon HD4300/HD4500 series
+ATI Technologies Inc. ATI Radeon HD4300/HD4500 series
+ATI Technologies Inc. ATI Radeon HD4670
 ATI Technologies Inc. ATI Radeon HD4670
 ATI Technologies Inc. ATI Radeon Juniper LE Prototype OpenGL Engine
 ATI Technologies Inc. ATI Radeon RV710 Prototype OpenGL Engine
 ATI Technologies Inc. ATI Radeon RV730 Prototype OpenGL Engine
 ATI Technologies Inc. ATI Radeon RV770 Prototype OpenGL Engine
 ATI Technologies Inc. ATI Radeon RV790 Prototype OpenGL Engine
+ATI Technologies Inc. ATI Radeon RV790 Prototype OpenGL Engine
 ATI Technologies Inc. ATI Radeon Redwood PRO Prototype OpenGL Engine
 ATI Technologies Inc. ATI Radeon Redwood XT Prototype OpenGL Engine
 ATI Technologies Inc. ATI Radeon Whistler PRO/LP Prototype OpenGL Engine
 ATI Technologies Inc. ATI Radeon X1050
 ATI Technologies Inc. ATI Radeon X1050 Series
 ATI Technologies Inc. ATI Radeon X1200
+ATI Technologies Inc. ATI Radeon X1200
 ATI Technologies Inc. ATI Radeon X1200 Series
+ATI Technologies Inc. ATI Radeon X1200 Series
+ATI Technologies Inc. ATI Radeon X1200 Series x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. ATI Radeon X1200 Series x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. ATI Radeon X1250
+ATI Technologies Inc. ATI Radeon X1250
 ATI Technologies Inc. ATI Radeon X1250 x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. ATI Radeon X1270
+ATI Technologies Inc. ATI Radeon X1270
+ATI Technologies Inc. ATI Radeon X1270 x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. ATI Radeon X1270 x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. ATI Radeon X1300/X1550 Series
 ATI Technologies Inc. ATI Radeon X1550 Series
+ATI Technologies Inc. ATI Radeon X1550 Series
+ATI Technologies Inc. ATI Radeon X1600 OpenGL Engine
 ATI Technologies Inc. ATI Radeon X1600 OpenGL Engine
 ATI Technologies Inc. ATI Radeon X1900 OpenGL Engine
+ATI Technologies Inc. ATI Radeon X1900 OpenGL Engine
 ATI Technologies Inc. ATI Radeon X1950 GT
 ATI Technologies Inc. ATI Radeon X300/X550/X1050 Series
+ATI Technologies Inc. ATI Radeon X300/X550/X1050 Series
 ATI Technologies Inc. ATI Radeon Xpress 1100
 ATI Technologies Inc. ATI Radeon Xpress 1150
+ATI Technologies Inc. ATI Radeon Xpress 1150
 ATI Technologies Inc. ATI Radeon Xpress 1150 x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. ATI Radeon Xpress 1200
+ATI Technologies Inc. ATI Radeon Xpress 1200
 ATI Technologies Inc. ATI Radeon Xpress 1200 Series
+ATI Technologies Inc. ATI Radeon Xpress 1200 Series
+ATI Technologies Inc. ATI Radeon Xpress 1200 Series x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. ATI Radeon Xpress 1200 Series x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. ATI Radeon Xpress 1200 x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. ATI Radeon Xpress 1250
+ATI Technologies Inc. ATI Radeon Xpress 1250
+ATI Technologies Inc. ATI Radeon Xpress 1250 x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. ATI Radeon Xpress 1250 x86/SSE2
 ATI Technologies Inc. ATI Radeon Xpress Series
+ATI Technologies Inc. ATI Radeon Xpress Series
+ATI Technologies Inc. ATI Radeon Xpress Series x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. ATI Yamaha HD 9000
 ATI Technologies Inc. ATi RS880M
+ATI Technologies Inc. ATi RS880M
 ATI Technologies Inc. Carte graphique VGA standard
 ATI Technologies Inc. Diamond Radeon X1550 Series
 ATI Technologies Inc. EG JUNIPER
@@ -491,7 +765,9 @@ ATI Technologies Inc. EG PARK
 ATI Technologies Inc. FireGL V3100 Pentium 4 (SSE2)
 ATI Technologies Inc. FireMV 2400 PCI DDR x86
 ATI Technologies Inc. FireMV 2400 PCI DDR x86/SSE2
+ATI Technologies Inc. FireMV 2400 PCI DDR x86/SSE2
 ATI Technologies Inc. GeCube Radeon X1550
+ATI Technologies Inc. GeForce 9600 GT      x86/SSE2
 ATI Technologies Inc. Geforce 9500 GT
 ATI Technologies Inc. Geforce 9500GT
 ATI Technologies Inc. Geforce 9800 GT
@@ -501,98 +777,153 @@ ATI Technologies Inc. HIGHTECH EXCALIBUR X700 PRO
 ATI Technologies Inc. M21 x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. M76M
 ATI Technologies Inc. MOBILITY RADEON 7500 DDR x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 7500 DDR x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 9000 DDR x86/SSE2
 ATI Technologies Inc. MOBILITY RADEON 9000 DDR x86/SSE2
 ATI Technologies Inc. MOBILITY RADEON 9000 IGPRADEON 9100 IGP DDR x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 9100 IGP DDR x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON 9600 x86/SSE2
 ATI Technologies Inc. MOBILITY RADEON 9600 x86/SSE2
 ATI Technologies Inc. MOBILITY RADEON 9700 x86/SSE2
 ATI Technologies Inc. MOBILITY RADEON X300 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON X300 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON X600 x86/SSE2
 ATI Technologies Inc. MOBILITY RADEON X600 x86/SSE2
 ATI Technologies Inc. MOBILITY RADEON X700 SE x86
 ATI Technologies Inc. MOBILITY RADEON X700 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON X700 x86/SSE2
+ATI Technologies Inc. MOBILITY RADEON Xpress 200 Series SW TCL x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. MSI RX9550SE
+ATI Technologies Inc. MSI Radeon X1550 Series
+ATI Technologies Inc. Mobility Radeon HD 6000 series
 ATI Technologies Inc. Mobility Radeon X2300 HD
+ATI Technologies Inc. Mobility Radeon X2300 HD
+ATI Technologies Inc. Mobility Radeon X2300 HD x86/SSE2
 ATI Technologies Inc. Mobility Radeon X2300 HD x86/SSE2
 ATI Technologies Inc. RADEON 7000 DDR x86/MMX/3DNow!/SSE
 ATI Technologies Inc. RADEON 7000 DDR x86/SSE2
 ATI Technologies Inc. RADEON 7500 DDR x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON 7500 DDR x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. RADEON 7500 DDR x86/SSE2
 ATI Technologies Inc. RADEON 9100 IGP DDR x86/SSE2
 ATI Technologies Inc. RADEON 9200 DDR x86/MMX/3DNow!/SSE
 ATI Technologies Inc. RADEON 9200 DDR x86/SSE2
 ATI Technologies Inc. RADEON 9200 PRO DDR x86/MMX/3DNow!/SSE
 ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!/SSE
+ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!/SSE
+ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. RADEON 9200 Series DDR x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. RADEON 9200 Series DDR x86/SSE
+ATI Technologies Inc. RADEON 9200 Series DDR x86/SSE
+ATI Technologies Inc. RADEON 9200 Series DDR x86/SSE2
 ATI Technologies Inc. RADEON 9200 Series DDR x86/SSE2
 ATI Technologies Inc. RADEON 9200SE DDR x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. RADEON 9200SE DDR x86/SSE2
 ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/MMX/3DNow!/SSE
+ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/MMX/3DNow!/SSE
 ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/SSE2
+ATI Technologies Inc. RADEON 9250/9200 Series DDR x86/SSE2
 ATI Technologies Inc. RADEON 9500
 ATI Technologies Inc. RADEON 9550 x86/SSE2
 ATI Technologies Inc. RADEON 9600 SERIES
 ATI Technologies Inc. RADEON 9600 SERIES x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON 9600 SERIES x86/SSE2
+ATI Technologies Inc. RADEON 9600 TX x86/SSE2
 ATI Technologies Inc. RADEON 9600 TX x86/SSE2
 ATI Technologies Inc. RADEON 9600 x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. RADEON 9600 x86/SSE2
+ATI Technologies Inc. RADEON 9600 x86/SSE2
 ATI Technologies Inc. RADEON 9700 PRO x86/MMX/3DNow!/SSE
 ATI Technologies Inc. RADEON 9800 PRO
 ATI Technologies Inc. RADEON 9800 x86/SSE2
 ATI Technologies Inc. RADEON IGP 340M DDR x86/SSE2
+ATI Technologies Inc. RADEON IGP 340M DDR x86/SSE2
 ATI Technologies Inc. RADEON X300 Series x86/SSE2
 ATI Technologies Inc. RADEON X300 x86/SSE2
+ATI Technologies Inc. RADEON X300 x86/SSE2
+ATI Technologies Inc. RADEON X300/X550 Series x86/SSE2
 ATI Technologies Inc. RADEON X300/X550 Series x86/SSE2
 ATI Technologies Inc. RADEON X550 x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. RADEON X550 x86/SSE2
 ATI Technologies Inc. RADEON X600 Series
 ATI Technologies Inc. RADEON X600 x86/SSE2
+ATI Technologies Inc. RADEON X600 x86/SSE2
+ATI Technologies Inc. RADEON X600/X550 Series
 ATI Technologies Inc. RADEON X700 PRO x86/SSE2
 ATI Technologies Inc. RADEON X800 SE x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON X800 XT
 ATI Technologies Inc. RADEON X800GT
 ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/SSE2
 ATI Technologies Inc. RADEON XPRESS 200 Series SW TCL x86/SSE2
 ATI Technologies Inc. RADEON XPRESS 200 Series x86/SSE2
 ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/SSE2
 ATI Technologies Inc. RADEON XPRESS 200M Series SW TCL x86/SSE2
 ATI Technologies Inc. RADEON XPRESS 200M Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS 200M Series x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. RADEON XPRESS 200M Series x86/SSE2
 ATI Technologies Inc. RADEON XPRESS Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. RADEON XPRESS Series x86/SSE2
 ATI Technologies Inc. RADEON XPRESS Series x86/SSE2
 ATI Technologies Inc. RS740
 ATI Technologies Inc. RS780C
 ATI Technologies Inc. RS780M
+ATI Technologies Inc. RS780M
+ATI Technologies Inc. RS880
 ATI Technologies Inc. RS880
 ATI Technologies Inc. RV410 Pro x86/SSE2
 ATI Technologies Inc. RV790
+ATI Technologies Inc. RV790
+ATI Technologies Inc. Radeon (TM) HD 6470M
 ATI Technologies Inc. Radeon (TM) HD 6470M
 ATI Technologies Inc. Radeon (TM) HD 6490M
+ATI Technologies Inc. Radeon (TM) HD 6490M
+ATI Technologies Inc. Radeon (TM) HD 6750M
+ATI Technologies Inc. Radeon (TM) HD 6770M
 ATI Technologies Inc. Radeon (TM) HD 6770M
+ATI Technologies Inc. Radeon (TM) HD 6850M
+ATI Technologies Inc. Radeon 7000 DDR x86/SSE
 ATI Technologies Inc. Radeon 7000 DDR x86/SSE2
 ATI Technologies Inc. Radeon 7000 SDR x86/SSE2
 ATI Technologies Inc. Radeon 7500 DDR x86/SSE2
+ATI Technologies Inc. Radeon 7500 DDR x86/SSE2
 ATI Technologies Inc. Radeon 9000 DDR x86/SSE2
 ATI Technologies Inc. Radeon DDR x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. Radeon DDR x86/SSE
 ATI Technologies Inc. Radeon DDR x86/SSE2
 ATI Technologies Inc. Radeon HD 6310
+ATI Technologies Inc. Radeon HD 6310
+ATI Technologies Inc. Radeon HD 6470M
+ATI Technologies Inc. Radeon HD 6490M
 ATI Technologies Inc. Radeon HD 6800 Series
+ATI Technologies Inc. Radeon HD 6800 Series
+ATI Technologies Inc. Radeon SDR x86/SSE2
 ATI Technologies Inc. Radeon SDR x86/SSE2
 ATI Technologies Inc. Radeon X1300 Series
 ATI Technologies Inc. Radeon X1300 Series x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. Radeon X1300 Series x86/SSE2
 ATI Technologies Inc. Radeon X1300/X1550 Series
+ATI Technologies Inc. Radeon X1300/X1550 Series
 ATI Technologies Inc. Radeon X1300/X1550 Series x86/SSE2
 ATI Technologies Inc. Radeon X1550 64-bit (Microsoft - WDDM)
 ATI Technologies Inc. Radeon X1550 Series
 ATI Technologies Inc. Radeon X1550 Series x86/SSE2
 ATI Technologies Inc. Radeon X1600
 ATI Technologies Inc. Radeon X1600 Pro / X1300XT x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. Radeon X1600 Series
 ATI Technologies Inc. Radeon X1600 Series x86/SSE2
+ATI Technologies Inc. Radeon X1600/1650 Series
 ATI Technologies Inc. Radeon X1600/X1650 Series
 ATI Technologies Inc. Radeon X1650 Series
+ATI Technologies Inc. Radeon X1650 Series
 ATI Technologies Inc. Radeon X1650 Series x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. Radeon X1650 Series x86/SSE2
+ATI Technologies Inc. Radeon X1650 Series x86/SSE2
 ATI Technologies Inc. Radeon X1900 Series x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. Radeon X1950 Pro
 ATI Technologies Inc. Radeon X1950 Pro x86/MMX/3DNow!/SSE2
@@ -602,18 +933,24 @@ ATI Technologies Inc. Radeon X300/X550/X1050 Series
 ATI Technologies Inc. Radeon X550/X700 Series
 ATI Technologies Inc. Radeon X550XTX x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. SAPPHIRE RADEON X300SE
+ATI Technologies Inc. SAPPHIRE RADEON X300SE
 ATI Technologies Inc. SAPPHIRE RADEON X300SE x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. SAPPHIRE RADEON X300SE x86/SSE2
 ATI Technologies Inc. SAPPHIRE Radeon X1550 Series
 ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/MMX/3DNow!/SSE2
+ATI Technologies Inc. SAPPHIRE Radeon X1550 Series x86/SSE2
+ATI Technologies Inc. SAPPHIRE Radeon X1550 x86/SSE2
+ATI Technologies Inc. Sapphire Radeon HD 3730
 ATI Technologies Inc. Sapphire Radeon HD 3730
 ATI Technologies Inc. Sapphire Radeon HD 3750
 ATI Technologies Inc. Standard VGA Graphics Adapter
+ATI Technologies Inc. Standard VGA Graphics Adapter
 ATI Technologies Inc. Tul, RADEON  X600 PRO
 ATI Technologies Inc. Tul, RADEON  X600 PRO x86/SSE2
 ATI Technologies Inc. Tul, RADEON  X700 PRO
 ATI Technologies Inc. Tul, RADEON  X700 PRO x86/MMX/3DNow!/SSE2
 ATI Technologies Inc. VisionTek Radeon 4350
+ATI Technologies Inc. VisionTek Radeon 4350
 ATI Technologies Inc. VisionTek Radeon X1550 Series
 ATI Technologies Inc. WRESTLER 9802
 ATI Technologies Inc. WRESTLER 9803
@@ -630,6 +967,7 @@ Advanced Micro Devices, Inc. Mesa DRI R600 (RV620 95C5) 20090101 x86/MMX+/3DNow!
 Advanced Micro Devices, Inc. Mesa DRI R600 (RV620 95C5) 20090101 x86/MMX/SSE2 TCL DRI2
 Advanced Micro Devices, Inc. Mesa DRI R600 (RV635 9596) 20090101 x86/MMX+/3DNow!+/SSE TCL DRI2
 Advanced Micro Devices, Inc. Mesa DRI R600 (RV670 9505) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
+Advanced Micro Devices, Inc. Mesa DRI R600 (RV670 9505) 20090101 x86/MMX/SSE2 TCL DRI2
 Advanced Micro Devices, Inc. Mesa DRI R600 (RV710 9552) 20090101 x86/MMX/SSE2 TCL DRI2
 Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9490) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
 Advanced Micro Devices, Inc. Mesa DRI R600 (RV730 9490) 20090101 x86/MMX/SSE2 TCL DRI2
@@ -648,6 +986,7 @@ DRI R300 Project Mesa DRI R300 (RV350 4153) 20090101 AGP 8x x86/MMX+/3DNow!+/SSE
 DRI R300 Project Mesa DRI R300 (RV380 3150) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
 DRI R300 Project Mesa DRI R300 (RV380 3150) 20090101 x86/MMX/SSE2 TCL DRI2
 DRI R300 Project Mesa DRI R300 (RV380 5B60) 20090101 x86/MMX/SSE2 TCL DRI2
+DRI R300 Project Mesa DRI R300 (RV380 5B60) 20090101 x86/MMX/SSE2 TCL DRI2
 DRI R300 Project Mesa DRI R300 (RV380 5B62) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
 DRI R300 Project Mesa DRI R300 (RV515 7145) 20090101 x86/MMX/SSE2 TCL DRI2
 DRI R300 Project Mesa DRI R300 (RV515 7146) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
@@ -657,11 +996,17 @@ DRI R300 Project Mesa DRI R300 (RV515 714A) 20090101 x86/MMX/SSE2 TCL
 DRI R300 Project Mesa DRI R300 (RV515 714A) 20090101 x86/MMX/SSE2 TCL DRI2
 DRI R300 Project Mesa DRI R300 (RV530 71C4) 20090101 x86/MMX/SSE2 TCL DRI2
 GPU_CLASS_UNKNOWN
+Humper 3D-Analyze v2.3 - http://www.tommti-systems.com
 Humper Chromium
+Humper Chromium
+Imagination Technologies PowerVR SGX545
 Intel
 Intel  HD Graphics Family
+Intel  HD Graphics Family
 Intel 3D-Analyze v2.2 - http://www.tommti-systems.com
 Intel 3D-Analyze v2.3 - http://www.tommti-systems.com
+Intel 3D-Analyze v2.3 - http://www.tommti-systems.com
+Intel 4 Series Internal Chipset
 Intel 4 Series Internal Chipset
 Intel 830M
 Intel 845G
@@ -674,19 +1019,26 @@ Intel 945GM
 Intel 950
 Intel 965
 Intel B43 Express Chipset
+Intel B43 Express Chipset
 Intel Bear Lake
 Intel Broadwater
 Intel Brookdale
 Intel Cantiga
+Intel EMGD on PowerVR SGX535
 Intel Eaglelake
 Intel Familia Mobile 45 Express Chipset (Microsoft Corporation - WDDM 1.1)
+Intel Familia Mobile 45 Express Chipset (Microsoft Corporation - WDDM 1.1)
 Intel G33
 Intel G41
 Intel G41 Express Chipset
+Intel G41 Express Chipset
 Intel G45
 Intel G45/G43 Express Chipset
+Intel G45/G43 Express Chipset
+Intel Graphics Media Accelerator HD
 Intel Graphics Media Accelerator HD
 Intel HD Graphics
+Intel HD Graphics
 Intel HD Graphics 100
 Intel HD Graphics 200
 Intel HD Graphics 200 BR-1101-00SH
@@ -695,6 +1047,7 @@ Intel HD Graphics 200 BR-1101-00SK
 Intel HD Graphics 200 BR-1101-01M5
 Intel HD Graphics 200 BR-1101-01M6
 Intel HD Graphics BR-1004-01Y1
+Intel HD Graphics BR-1004-01Y1
 Intel HD Graphics BR-1006-0364
 Intel HD Graphics BR-1006-0365
 Intel HD Graphics BR-1006-0366
@@ -704,45 +1057,73 @@ Intel HD Graphics BR-1101-04SZ
 Intel HD Graphics BR-1101-04T0
 Intel HD Graphics BR-1101-04T9
 Intel HD Graphics Family
+Intel HD Graphics Family
 Intel HD Graphics Family BR-1012-00Y8
 Intel HD Graphics Family BR-1012-00YF
 Intel HD Graphics Family BR-1012-00ZD
 Intel HD Graphics Family BR-1102-00ML
 Intel Inc. Intel GMA 900 OpenGL Engine
+Intel Inc. Intel GMA 900 OpenGL Engine
+Intel Inc. Intel GMA 950 OpenGL Engine
 Intel Inc. Intel GMA 950 OpenGL Engine
 Intel Inc. Intel GMA X3100 OpenGL Engine
+Intel Inc. Intel GMA X3100 OpenGL Engine
+Intel Inc. Intel HD Graphics 3000 OpenGL Engine
 Intel Inc. Intel HD Graphics 3000 OpenGL Engine
 Intel Inc. Intel HD Graphics OpenGL Engine
+Intel Inc. Intel HD Graphics OpenGL Engine
 Intel Inc. Intel HD xxxx OpenGL Engine
 Intel Intel 845G
+Intel Intel 845G
 Intel Intel 855GM
+Intel Intel 855GM
+Intel Intel 865G
 Intel Intel 865G
 Intel Intel 915G
+Intel Intel 915G
 Intel Intel 915GM
+Intel Intel 915GM
+Intel Intel 945G
 Intel Intel 945G
 Intel Intel 945GM
+Intel Intel 945GM
+Intel Intel 965/963 Graphics Media Accelerator
 Intel Intel 965/963 Graphics Media Accelerator
 Intel Intel Bear Lake B
+Intel Intel Bear Lake B
 Intel Intel Broadwater G
 Intel Intel Brookdale-G
+Intel Intel Brookdale-G
 Intel Intel Calistoga
 Intel Intel Cantiga
+Intel Intel Cantiga
 Intel Intel Eaglelake
+Intel Intel Eaglelake
+Intel Intel Generic Renderer
+Intel Intel Grantsdale-G
 Intel Intel Grantsdale-G
 Intel Intel HD Graphics 3000
 Intel Intel Lakeport
 Intel Intel Montara-GM
 Intel Intel Pineview Platform
+Intel Intel Pineview Platform
 Intel Intel Springdale-G
 Intel Mobile - famiglia Express Chipset 45 (Microsoft Corporation - WDDM 1.1)
 Intel Mobile 4 Series
 Intel Mobile 4 Series Express Chipset Family
+Intel Mobile 4 Series Express Chipset Family
+Intel Mobile 45 Express Chipset Family
 Intel Mobile 45 Express Chipset Family (Microsoft Corporation - WDDM 1.1)
+Intel Mobile 45 Express Chipset Family (Microsoft Corporation - WDDM 1.1)
+Intel Mobile HD Graphics
 Intel Mobile HD Graphics
+Intel Mobile Intel(R) 4 Series Express Chipset Family
 Intel Mobile SandyBridge HD Graphics
 Intel Montara
 Intel Pineview
 Intel Q45/Q43 Express Chipset
+Intel Q45/Q43 Express Chipset
+Intel Royal BNA Driver
 Intel Royal BNA Driver
 Intel SandyBridge HD Graphics
 Intel SandyBridge HD Graphics BR-1006-00V8
@@ -750,14 +1131,18 @@ Intel Springdale
 Intel X3100
 Intergraph wcgdrv 06.05.06.18
 Intergraph wcgdrv 06.06.00.35
+Intergraph wcgdrv 06.06.00.35
 LegendgrafiX Mobile 945 Express C/TitaniumGL/GAC/D3D ACCELERATION/6x86/1 THREADs | http://LegendgrafiX.tk
 LegendgrafiX NVIDIA GeForce GT 430/TitaniumGL/GAC/D3D ACCELERATION/6x86/1 THREADs | http://LegendgrafiX.tk
 Linden Lab Headless
 Matrox
 Mesa
 Mesa Project Software Rasterizer
+Mesa Project Software Rasterizer
+NVIDIA /PCI/SSE2
 NVIDIA /PCI/SSE2
 NVIDIA /PCI/SSE2/3DNOW!
+NVIDIA /PCI/SSE2/3DNOW!
 NVIDIA 205
 NVIDIA 210
 NVIDIA 310
@@ -766,8 +1151,13 @@ NVIDIA 315
 NVIDIA 315M
 NVIDIA 320M
 NVIDIA C51
+NVIDIA Corporation GeForce GT 230/PCI/SSE2
+NVIDIA Corporation GeForce GTX 285/PCI/SSE2
+NVIDIA D10M2-20/PCI/SSE2
 NVIDIA D10M2-20/PCI/SSE2
 NVIDIA D10P1-25/PCI/SSE2
+NVIDIA D10P1-25/PCI/SSE2
+NVIDIA D10P1-25/PCI/SSE2/3DNOW!
 NVIDIA D10P1-30/PCI/SSE2
 NVIDIA D10P2-50/PCI/SSE2
 NVIDIA D11M2-30/PCI/SSE2
@@ -775,11 +1165,16 @@ NVIDIA D12-P1-35/PCI/SSE2
 NVIDIA D12U-15/PCI/SSE2
 NVIDIA D13M1-40/PCI/SSE2
 NVIDIA D13P1-40/PCI/SSE2
+NVIDIA D13P1-40/PCI/SSE2
+NVIDIA D13P1-40/PCI/SSE2/3DNOW!
 NVIDIA D13U-10/PCI/SSE2
 NVIDIA D13U/PCI/SSE2
+NVIDIA D13U/PCI/SSE2
 NVIDIA D9M
 NVIDIA D9M-20/PCI/SSE2
 NVIDIA Entry Graphics/PCI/SSE2
+NVIDIA Entry Graphics/PCI/SSE2
+NVIDIA Entry Graphics/PCI/SSE2/3DNOW!
 NVIDIA Entry Graphics/PCI/SSE2/3DNOW!
 NVIDIA G 102M
 NVIDIA G 103M
@@ -800,7 +1195,10 @@ NVIDIA G92
 NVIDIA G92-200/PCI/SSE2
 NVIDIA G94
 NVIDIA G96/PCI/SSE2
+NVIDIA G96/PCI/SSE2
+NVIDIA G98/PCI/SSE2
 NVIDIA G98/PCI/SSE2
+NVIDIA G98/PCI/SSE2/3DNOW!
 NVIDIA GT 120
 NVIDIA GT 130
 NVIDIA GT 130M
@@ -809,6 +1207,8 @@ NVIDIA GT 150
 NVIDIA GT 160M
 NVIDIA GT 220
 NVIDIA GT 220/PCI/SSE2
+NVIDIA GT 220/PCI/SSE2
+NVIDIA GT 220/PCI/SSE2/3DNOW!
 NVIDIA GT 220/PCI/SSE2/3DNOW!
 NVIDIA GT 230
 NVIDIA GT 230M
@@ -859,58 +1259,89 @@ NVIDIA GTX 590
 NVIDIA GeForce
 NVIDIA GeForce 2
 NVIDIA GeForce 205/PCI/SSE2
+NVIDIA GeForce 205/PCI/SSE2
 NVIDIA GeForce 210
 NVIDIA GeForce 210/PCI/SSE2
+NVIDIA GeForce 210/PCI/SSE2
+NVIDIA GeForce 210/PCI/SSE2/3DNOW!
 NVIDIA GeForce 210/PCI/SSE2/3DNOW!
 NVIDIA GeForce 3
 NVIDIA GeForce 305M/PCI/SSE2
+NVIDIA GeForce 305M/PCI/SSE2
+NVIDIA GeForce 310/PCI/SSE2
 NVIDIA GeForce 310/PCI/SSE2
 NVIDIA GeForce 310/PCI/SSE2/3DNOW!
+NVIDIA GeForce 310/PCI/SSE2/3DNOW!
+NVIDIA GeForce 310M/PCI/SSE2
 NVIDIA GeForce 310M/PCI/SSE2
 NVIDIA GeForce 315/PCI/SSE2
+NVIDIA GeForce 315/PCI/SSE2
+NVIDIA GeForce 315/PCI/SSE2/3DNOW!
 NVIDIA GeForce 315/PCI/SSE2/3DNOW!
 NVIDIA GeForce 315M/PCI/SSE2
+NVIDIA GeForce 315M/PCI/SSE2
 NVIDIA GeForce 320M/PCI/SSE2
 NVIDIA GeForce 4 Go
 NVIDIA GeForce 4 MX
 NVIDIA GeForce 4 Ti
 NVIDIA GeForce 405/PCI/SSE2
+NVIDIA GeForce 405/PCI/SSE2
+NVIDIA GeForce 410M/PCI/SSE2
 NVIDIA GeForce 6100
 NVIDIA GeForce 6100 nForce 400/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100 nForce 400/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6100 nForce 405/PCI/SSE2
 NVIDIA GeForce 6100 nForce 405/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100 nForce 405/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100 nForce 420/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6100 nForce 420/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6100 nForce 430/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100 nForce 430/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6100/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6100/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6150 LE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150 LE/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6150/PCI/SSE2
 NVIDIA GeForce 6150/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150SE nForce 430/PCI/SSE2
 NVIDIA GeForce 6150SE nForce 430/PCI/SSE2
 NVIDIA GeForce 6150SE nForce 430/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150SE nForce 430/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6150SE/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6150SE/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6200
 NVIDIA GeForce 6200 A-LE/AGP/SSE/3DNOW!
 NVIDIA GeForce 6200 A-LE/AGP/SSE2
 NVIDIA GeForce 6200 A-LE/AGP/SSE2/3DNOW!
 NVIDIA GeForce 6200 LE/PCI/SSE2
+NVIDIA GeForce 6200 LE/PCI/SSE2
 NVIDIA GeForce 6200 LE/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6200 TurboCache(TM)/PCI/SSE2
+NVIDIA GeForce 6200 TurboCache(TM)/PCI/SSE2
 NVIDIA GeForce 6200 TurboCache(TM)/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6200/AGP/SSE/3DNOW!
+NVIDIA GeForce 6200/AGP/SSE/3DNOW!
+NVIDIA GeForce 6200/AGP/SSE2
 NVIDIA GeForce 6200/AGP/SSE2
 NVIDIA GeForce 6200/AGP/SSE2/3DNOW!
 NVIDIA GeForce 6200/PCI/SSE/3DNOW!
 NVIDIA GeForce 6200/PCI/SSE2
+NVIDIA GeForce 6200/PCI/SSE2
+NVIDIA GeForce 6200/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6200/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6200SE TurboCache(TM)/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6500
 NVIDIA GeForce 6500/PCI/SSE2
+NVIDIA GeForce 6500/PCI/SSE2
 NVIDIA GeForce 6600
 NVIDIA GeForce 6600 GT/AGP/SSE/3DNOW!
 NVIDIA GeForce 6600 GT/AGP/SSE2
+NVIDIA GeForce 6600 GT/AGP/SSE2
 NVIDIA GeForce 6600 GT/PCI/SSE/3DNOW!
 NVIDIA GeForce 6600 GT/PCI/SSE2
 NVIDIA GeForce 6600 GT/PCI/SSE2/3DNOW!
+NVIDIA GeForce 6600 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6600 LE/PCI/SSE2
 NVIDIA GeForce 6600/AGP/SSE/3DNOW!
 NVIDIA GeForce 6600/AGP/SSE2
@@ -919,50 +1350,78 @@ NVIDIA GeForce 6600/PCI/SSE2
 NVIDIA GeForce 6600/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6700
 NVIDIA GeForce 6800
+NVIDIA GeForce 6800 GS/PCI/SSE2
 NVIDIA GeForce 6800 GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6800 GT/AGP/SSE2
 NVIDIA GeForce 6800 GT/PCI/SSE2
 NVIDIA GeForce 6800 XT/AGP/SSE2
 NVIDIA GeForce 6800 XT/PCI/SSE2
+NVIDIA GeForce 6800 XT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 6800/PCI/SSE2
 NVIDIA GeForce 6800/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7000
 NVIDIA GeForce 7000M
 NVIDIA GeForce 7000M / nForce 610M/PCI/SSE2
 NVIDIA GeForce 7000M / nForce 610M/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7000M / nForce 610M/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7025 / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7025 / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7025 / nForce 630a/PCI/SSE2
+NVIDIA GeForce 7025 / nForce 630a/PCI/SSE2
 NVIDIA GeForce 7025 / nForce 630a/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7025 / nForce 630a/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7050 / NVIDIA nForce 610i/PCI/SSE2
 NVIDIA GeForce 7050 / NVIDIA nForce 610i/PCI/SSE2
 NVIDIA GeForce 7050 / NVIDIA nForce 620i/PCI/SSE2
 NVIDIA GeForce 7050 / nForce 610i/PCI/SSE2
+NVIDIA GeForce 7050 / nForce 610i/PCI/SSE2
+NVIDIA GeForce 7050 / nForce 620i/PCI/SSE2
 NVIDIA GeForce 7050 / nForce 620i/PCI/SSE2
 NVIDIA GeForce 7050 PV / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7050 PV / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7050 PV / nForce 630a/PCI/SSE2
 NVIDIA GeForce 7050 PV / nForce 630a/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7050 SE / NVIDIA nForce 630a/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7100
 NVIDIA GeForce 7100 / NVIDIA nForce 620i/PCI/SSE2
+NVIDIA GeForce 7100 / NVIDIA nForce 620i/PCI/SSE2
+NVIDIA GeForce 7100 / NVIDIA nForce 630i/PCI/SSE2
 NVIDIA GeForce 7100 / NVIDIA nForce 630i/PCI/SSE2
 NVIDIA GeForce 7100 / nForce 630i/PCI/SSE2
+NVIDIA GeForce 7100 / nForce 630i/PCI/SSE2
+NVIDIA GeForce 7100 GS/PCI/SSE2
 NVIDIA GeForce 7100 GS/PCI/SSE2
 NVIDIA GeForce 7100 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7100 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2
 NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2
 NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7150M / nForce 630M/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7300
 NVIDIA GeForce 7300 GS/PCI/SSE2
+NVIDIA GeForce 7300 GS/PCI/SSE2
+NVIDIA GeForce 7300 GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7300 GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7300 GT/AGP/SSE2
 NVIDIA GeForce 7300 GT/AGP/SSE2/3DNOW!
 NVIDIA GeForce 7300 GT/PCI/SSE2
+NVIDIA GeForce 7300 GT/PCI/SSE2
+NVIDIA GeForce 7300 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7300 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7300 LE/PCI/SSE2
+NVIDIA GeForce 7300 LE/PCI/SSE2
 NVIDIA GeForce 7300 LE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300 LE/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2
 NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2
 NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7300 SE/7200 GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7300 SE/PCI/SSE2
+NVIDIA GeForce 7300 SE/PCI/SSE2
+NVIDIA GeForce 7300 SE/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7300 SE/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7350 LE/PCI/SSE2
+NVIDIA GeForce 7350 LE/PCI/SSE2
 NVIDIA GeForce 7500
 NVIDIA GeForce 7500 LE/PCI/SSE2
 NVIDIA GeForce 7500 LE/PCI/SSE2/3DNOW!
@@ -970,22 +1429,30 @@ NVIDIA GeForce 7600
 NVIDIA GeForce 7600 GS/AGP/SSE2
 NVIDIA GeForce 7600 GS/AGP/SSE2/3DNOW!
 NVIDIA GeForce 7600 GS/PCI/SSE2
+NVIDIA GeForce 7600 GS/PCI/SSE2
+NVIDIA GeForce 7600 GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7600 GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7600 GT/AGP/SSE/3DNOW!
 NVIDIA GeForce 7600 GT/AGP/SSE2
 NVIDIA GeForce 7600 GT/PCI/SSE2
+NVIDIA GeForce 7600 GT/PCI/SSE2
 NVIDIA GeForce 7600 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7650 GS/PCI/SSE2
 NVIDIA GeForce 7800
 NVIDIA GeForce 7800 GS/AGP/SSE2
 NVIDIA GeForce 7800 GS/AGP/SSE2/3DNOW!
 NVIDIA GeForce 7800 GT/PCI/SSE2
+NVIDIA GeForce 7800 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7800 GTX/PCI/SSE2
 NVIDIA GeForce 7800 GTX/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7800 GTX/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7900
 NVIDIA GeForce 7900 GS/PCI/SSE2
+NVIDIA GeForce 7900 GS/PCI/SSE2
 NVIDIA GeForce 7900 GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7900 GT/GTO/PCI/SSE2
+NVIDIA GeForce 7900 GT/GTO/PCI/SSE2/3DNOW!
+NVIDIA GeForce 7900 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7900 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 7900 GTX/PCI/SSE2
 NVIDIA GeForce 7950 GT/PCI/SSE2
@@ -994,123 +1461,186 @@ NVIDIA GeForce 8100
 NVIDIA GeForce 8100 / nForce 720a/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8200
 NVIDIA GeForce 8200/PCI/SSE2
+NVIDIA GeForce 8200/PCI/SSE2
+NVIDIA GeForce 8200/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8200/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8200M
 NVIDIA GeForce 8200M G/PCI/SSE2
+NVIDIA GeForce 8200M G/PCI/SSE2
+NVIDIA GeForce 8200M G/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8200M G/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8300
 NVIDIA GeForce 8300 GS/PCI/SSE2
+NVIDIA GeForce 8300 GS/PCI/SSE2
 NVIDIA GeForce 8400
 NVIDIA GeForce 8400 GS/PCI/SSE/3DNOW!
 NVIDIA GeForce 8400 GS/PCI/SSE2
+NVIDIA GeForce 8400 GS/PCI/SSE2
+NVIDIA GeForce 8400 GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8400 GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8400/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8400GS/PCI/SSE2
+NVIDIA GeForce 8400GS/PCI/SSE2
+NVIDIA GeForce 8400GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8400GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8400M
 NVIDIA GeForce 8400M G/PCI/SSE2
+NVIDIA GeForce 8400M G/PCI/SSE2
+NVIDIA GeForce 8400M G/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8400M G/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8400M GS/PCI/SSE2
+NVIDIA GeForce 8400M GS/PCI/SSE2
 NVIDIA GeForce 8400M GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8400M GS/PCI/SSE2/3DNOW!
+NVIDIA GeForce 8400M GT/PCI/SSE2
 NVIDIA GeForce 8400M GT/PCI/SSE2
 NVIDIA GeForce 8500
 NVIDIA GeForce 8500 GT/PCI/SSE2
+NVIDIA GeForce 8500 GT/PCI/SSE2
+NVIDIA GeForce 8500 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8500 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8600
 NVIDIA GeForce 8600 GS/PCI/SSE2
+NVIDIA GeForce 8600 GS/PCI/SSE2
 NVIDIA GeForce 8600 GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8600 GT/PCI/SSE2
+NVIDIA GeForce 8600 GT/PCI/SSE2
+NVIDIA GeForce 8600 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8600 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8600 GTS/PCI/SSE2
 NVIDIA GeForce 8600 GTS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8600GS/PCI/SSE2
+NVIDIA GeForce 8600GS/PCI/SSE2
 NVIDIA GeForce 8600M
 NVIDIA GeForce 8600M GS/PCI/SSE2
 NVIDIA GeForce 8600M GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8600M GT/PCI/SSE2
+NVIDIA GeForce 8600M GT/PCI/SSE2
 NVIDIA GeForce 8700
 NVIDIA GeForce 8700M
 NVIDIA GeForce 8700M GT/PCI/SSE2
+NVIDIA GeForce 8700M GT/PCI/SSE2
 NVIDIA GeForce 8800
 NVIDIA GeForce 8800 GS/PCI/SSE2
 NVIDIA GeForce 8800 GT/PCI/SSE2
+NVIDIA GeForce 8800 GT/PCI/SSE2
+NVIDIA GeForce 8800 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8800 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8800 GTS 512/PCI/SSE2
 NVIDIA GeForce 8800 GTS 512/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8800 GTS/PCI/SSE2
+NVIDIA GeForce 8800 GTS/PCI/SSE2
 NVIDIA GeForce 8800 GTS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 8800 GTX/PCI/SSE2
 NVIDIA GeForce 8800 Ultra/PCI/SSE2
 NVIDIA GeForce 8800M GTS/PCI/SSE2
+NVIDIA GeForce 8800M GTS/PCI/SSE2
+NVIDIA GeForce 8800M GTX/PCI/SSE2
 NVIDIA GeForce 8800M GTX/PCI/SSE2
 NVIDIA GeForce 9100
 NVIDIA GeForce 9100/PCI/SSE2
+NVIDIA GeForce 9100/PCI/SSE2
 NVIDIA GeForce 9100/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9100M
 NVIDIA GeForce 9100M G/PCI/SSE2
+NVIDIA GeForce 9100M G/PCI/SSE2
 NVIDIA GeForce 9100M G/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9200
 NVIDIA GeForce 9200/PCI/SSE2
+NVIDIA GeForce 9200/PCI/SSE2
 NVIDIA GeForce 9200/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9200/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9200M GE/PCI/SSE2
 NVIDIA GeForce 9200M GE/PCI/SSE2
 NVIDIA GeForce 9200M GS/PCI/SSE2
+NVIDIA GeForce 9200M GS/PCI/SSE2
 NVIDIA GeForce 9300
 NVIDIA GeForce 9300 / nForce 730i/PCI/SSE2
 NVIDIA GeForce 9300 GE/PCI/SSE2
+NVIDIA GeForce 9300 GE/PCI/SSE2
+NVIDIA GeForce 9300 GE/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9300 GE/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9300 GS/PCI/SSE2
+NVIDIA GeForce 9300 GS/PCI/SSE2
+NVIDIA GeForce 9300 GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9300 GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9300 SE/PCI/SSE2
 NVIDIA GeForce 9300M
 NVIDIA GeForce 9300M G/PCI/SSE2
+NVIDIA GeForce 9300M G/PCI/SSE2
 NVIDIA GeForce 9300M G/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9300M GS/PCI/SSE2
+NVIDIA GeForce 9300M GS/PCI/SSE2
 NVIDIA GeForce 9300M GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9400
 NVIDIA GeForce 9400 GT/PCI/SSE2
+NVIDIA GeForce 9400 GT/PCI/SSE2
+NVIDIA GeForce 9400 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9400 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9400/PCI/SSE2
 NVIDIA GeForce 9400M
 NVIDIA GeForce 9400M G/PCI/SSE2
+NVIDIA GeForce 9400M G/PCI/SSE2
+NVIDIA GeForce 9400M/PCI/SSE2
 NVIDIA GeForce 9400M/PCI/SSE2
 NVIDIA GeForce 9500
 NVIDIA GeForce 9500 GS/PCI/SSE2
+NVIDIA GeForce 9500 GS/PCI/SSE2
 NVIDIA GeForce 9500 GS/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9500 GT/PCI/SSE2
+NVIDIA GeForce 9500 GT/PCI/SSE2
+NVIDIA GeForce 9500 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9500 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9500M
 NVIDIA GeForce 9500M GS/PCI/SSE2
+NVIDIA GeForce 9500M GS/PCI/SSE2
 NVIDIA GeForce 9600
 NVIDIA GeForce 9600 GS/PCI/SSE2
 NVIDIA GeForce 9600 GSO 512/PCI/SSE2
 NVIDIA GeForce 9600 GSO/PCI/SSE2
 NVIDIA GeForce 9600 GSO/PCI/SSE2/3DNOW!
+NVIDIA GeForce 9600 GSO/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9600 GT/PCI/SSE2
+NVIDIA GeForce 9600 GT/PCI/SSE2
+NVIDIA GeForce 9600 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9600 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9600M
 NVIDIA GeForce 9600M GS/PCI/SSE2
+NVIDIA GeForce 9600M GS/PCI/SSE2
+NVIDIA GeForce 9600M GT/PCI/SSE2
 NVIDIA GeForce 9600M GT/PCI/SSE2
 NVIDIA GeForce 9650M GT/PCI/SSE2
+NVIDIA GeForce 9650M GT/PCI/SSE2
 NVIDIA GeForce 9700M
 NVIDIA GeForce 9700M GT/PCI/SSE2
 NVIDIA GeForce 9700M GTS/PCI/SSE2
+NVIDIA GeForce 9700M GTS/PCI/SSE2
 NVIDIA GeForce 9800
 NVIDIA GeForce 9800 GT/PCI/SSE2
+NVIDIA GeForce 9800 GT/PCI/SSE2
+NVIDIA GeForce 9800 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9800 GT/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9800 GTX+/PCI/SSE2
+NVIDIA GeForce 9800 GTX+/PCI/SSE2
 NVIDIA GeForce 9800 GTX+/PCI/SSE2/3DNOW!
 NVIDIA GeForce 9800 GTX/9800 GTX+/PCI/SSE2
+NVIDIA GeForce 9800 GTX/9800 GTX+/PCI/SSE2
 NVIDIA GeForce 9800 GTX/PCI/SSE2
 NVIDIA GeForce 9800 GX2/PCI/SSE2
 NVIDIA GeForce 9800M
 NVIDIA GeForce 9800M GS/PCI/SSE2
+NVIDIA GeForce 9800M GS/PCI/SSE2
+NVIDIA GeForce 9800M GT/PCI/SSE2
 NVIDIA GeForce 9800M GT/PCI/SSE2
 NVIDIA GeForce 9800M GTS/PCI/SSE2
+NVIDIA GeForce 9800M GTS/PCI/SSE2
 NVIDIA GeForce FX 5100
 NVIDIA GeForce FX 5100/AGP/SSE/3DNOW!
 NVIDIA GeForce FX 5200
 NVIDIA GeForce FX 5200/AGP/SSE
 NVIDIA GeForce FX 5200/AGP/SSE/3DNOW!
+NVIDIA GeForce FX 5200/AGP/SSE/3DNOW!
+NVIDIA GeForce FX 5200/AGP/SSE2
 NVIDIA GeForce FX 5200/AGP/SSE2
 NVIDIA GeForce FX 5200/AGP/SSE2/3DNOW!
 NVIDIA GeForce FX 5200/PCI/SSE2
@@ -1119,11 +1649,16 @@ NVIDIA GeForce FX 5200LE/AGP/SSE2
 NVIDIA GeForce FX 5500
 NVIDIA GeForce FX 5500/AGP/SSE/3DNOW!
 NVIDIA GeForce FX 5500/AGP/SSE2
+NVIDIA GeForce FX 5500/AGP/SSE2
 NVIDIA GeForce FX 5500/AGP/SSE2/3DNOW!
+NVIDIA GeForce FX 5500/AGP/SSE2/3DNOW!
+NVIDIA GeForce FX 5500/PCI/SSE2
 NVIDIA GeForce FX 5500/PCI/SSE2
 NVIDIA GeForce FX 5500/PCI/SSE2/3DNOW!
+NVIDIA GeForce FX 5500/PCI/SSE2/3DNOW!
 NVIDIA GeForce FX 5600
 NVIDIA GeForce FX 5600/AGP/SSE2
+NVIDIA GeForce FX 5600/AGP/SSE2
 NVIDIA GeForce FX 5600/AGP/SSE2/3DNOW!
 NVIDIA GeForce FX 5600XT/AGP/SSE2/3DNOW!
 NVIDIA GeForce FX 5700
@@ -1138,136 +1673,239 @@ NVIDIA GeForce FX Go5100
 NVIDIA GeForce FX Go5100/AGP/SSE2
 NVIDIA GeForce FX Go5200
 NVIDIA GeForce FX Go5200/AGP/SSE2
+NVIDIA GeForce FX Go5200/AGP/SSE2
 NVIDIA GeForce FX Go5300
 NVIDIA GeForce FX Go5600
 NVIDIA GeForce FX Go5600/AGP/SSE2
+NVIDIA GeForce FX Go5600/AGP/SSE2
 NVIDIA GeForce FX Go5650/AGP/SSE2
 NVIDIA GeForce FX Go5700
+NVIDIA GeForce FX Go5700/AGP/SSE2
 NVIDIA GeForce FX Go5xxx/AGP/SSE2
+NVIDIA GeForce FX Go5xxx/AGP/SSE2
+NVIDIA GeForce G 103M/PCI/SSE2
 NVIDIA GeForce G 103M/PCI/SSE2
+NVIDIA GeForce G 103M/PCI/SSE2/3DNOW!
 NVIDIA GeForce G 105M/PCI/SSE2
+NVIDIA GeForce G 105M/PCI/SSE2
+NVIDIA GeForce G 110M/PCI/SSE2
 NVIDIA GeForce G 110M/PCI/SSE2
 NVIDIA GeForce G100/PCI/SSE2
+NVIDIA GeForce G100/PCI/SSE2
+NVIDIA GeForce G100/PCI/SSE2/3DNOW!
 NVIDIA GeForce G100/PCI/SSE2/3DNOW!
 NVIDIA GeForce G102M/PCI/SSE2
+NVIDIA GeForce G102M/PCI/SSE2
+NVIDIA GeForce G105M/PCI/SSE2
 NVIDIA GeForce G105M/PCI/SSE2
 NVIDIA GeForce G200/PCI/SSE2
+NVIDIA GeForce G200/PCI/SSE2
+NVIDIA GeForce G205M/PCI/SSE2
 NVIDIA GeForce G205M/PCI/SSE2
 NVIDIA GeForce G210/PCI/SSE2
+NVIDIA GeForce G210/PCI/SSE2
+NVIDIA GeForce G210/PCI/SSE2/3DNOW!
 NVIDIA GeForce G210/PCI/SSE2/3DNOW!
 NVIDIA GeForce G210M/PCI/SSE2
+NVIDIA GeForce G210M/PCI/SSE2
 NVIDIA GeForce G310M/PCI/SSE2
 NVIDIA GeForce GT 120/PCI/SSE2
+NVIDIA GeForce GT 120/PCI/SSE2
 NVIDIA GeForce GT 120/PCI/SSE2/3DNOW!
 NVIDIA GeForce GT 120M/PCI/SSE2
 NVIDIA GeForce GT 130M/PCI/SSE2
+NVIDIA GeForce GT 130M/PCI/SSE2
+NVIDIA GeForce GT 140/PCI/SSE2
 NVIDIA GeForce GT 140/PCI/SSE2
 NVIDIA GeForce GT 220/PCI/SSE2
+NVIDIA GeForce GT 220/PCI/SSE2
+NVIDIA GeForce GT 220/PCI/SSE2/3DNOW!
 NVIDIA GeForce GT 220/PCI/SSE2/3DNOW!
 NVIDIA GeForce GT 220M/PCI/SSE2
+NVIDIA GeForce GT 220M/PCI/SSE2
+NVIDIA GeForce GT 230/PCI/SSE2
 NVIDIA GeForce GT 230/PCI/SSE2
 NVIDIA GeForce GT 230M/PCI/SSE2
+NVIDIA GeForce GT 230M/PCI/SSE2
 NVIDIA GeForce GT 240
 NVIDIA GeForce GT 240/PCI/SSE2
+NVIDIA GeForce GT 240/PCI/SSE2
 NVIDIA GeForce GT 240/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 240/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 240M/PCI/SSE2
 NVIDIA GeForce GT 240M/PCI/SSE2
 NVIDIA GeForce GT 320/PCI/SSE2
 NVIDIA GeForce GT 320M/PCI/SSE2
+NVIDIA GeForce GT 320M/PCI/SSE2
 NVIDIA GeForce GT 325M/PCI/SSE2
 NVIDIA GeForce GT 330/PCI/SSE2
+NVIDIA GeForce GT 330/PCI/SSE2
 NVIDIA GeForce GT 330/PCI/SSE2/3DNOW!
 NVIDIA GeForce GT 330M/PCI/SSE2
+NVIDIA GeForce GT 330M/PCI/SSE2
+NVIDIA GeForce GT 335M/PCI/SSE2
 NVIDIA GeForce GT 335M/PCI/SSE2
 NVIDIA GeForce GT 340/PCI/SSE2
+NVIDIA GeForce GT 340/PCI/SSE2
+NVIDIA GeForce GT 340/PCI/SSE2/3DNOW!
 NVIDIA GeForce GT 340/PCI/SSE2/3DNOW!
 NVIDIA GeForce GT 415M/PCI/SSE2
+NVIDIA GeForce GT 415M/PCI/SSE2
+NVIDIA GeForce GT 420/PCI/SSE2
 NVIDIA GeForce GT 420/PCI/SSE2
 NVIDIA GeForce GT 420M/PCI/SSE2
+NVIDIA GeForce GT 420M/PCI/SSE2
+NVIDIA GeForce GT 425M/PCI/SSE2
 NVIDIA GeForce GT 425M/PCI/SSE2
 NVIDIA GeForce GT 430/PCI/SSE2
+NVIDIA GeForce GT 430/PCI/SSE2
+NVIDIA GeForce GT 430/PCI/SSE2/3DNOW!
 NVIDIA GeForce GT 430/PCI/SSE2/3DNOW!
 NVIDIA GeForce GT 435M/PCI/SSE2
+NVIDIA GeForce GT 435M/PCI/SSE2
+NVIDIA GeForce GT 440/PCI/SSE2
 NVIDIA GeForce GT 440/PCI/SSE2
 NVIDIA GeForce GT 440/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 440/PCI/SSE2/3DNOW!
+NVIDIA GeForce GT 445M/PCI/SSE2
 NVIDIA GeForce GT 445M/PCI/SSE2
+NVIDIA GeForce GT 520/PCI/SSE2
+NVIDIA GeForce GT 520/PCI/SSE2/3DNOW!
 NVIDIA GeForce GT 520M/PCI/SSE2
+NVIDIA GeForce GT 520M/PCI/SSE2
+NVIDIA GeForce GT 525M/PCI/SSE2
 NVIDIA GeForce GT 525M/PCI/SSE2
+NVIDIA GeForce GT 530/PCI/SSE2
+NVIDIA GeForce GT 530/PCI/SSE2/3DNOW!
 NVIDIA GeForce GT 540M/PCI/SSE2
+NVIDIA GeForce GT 540M/PCI/SSE2
+NVIDIA GeForce GT 545/PCI/SSE2
+NVIDIA GeForce GT 550M/PCI/SSE2
 NVIDIA GeForce GT 550M/PCI/SSE2
 NVIDIA GeForce GT 555M/PCI/SSE2
+NVIDIA GeForce GT 555M/PCI/SSE2
+NVIDIA GeForce GTS 150/PCI/SSE2
 NVIDIA GeForce GTS 150/PCI/SSE2
 NVIDIA GeForce GTS 160M/PCI/SSE2
+NVIDIA GeForce GTS 160M/PCI/SSE2
+NVIDIA GeForce GTS 240/PCI/SSE2
 NVIDIA GeForce GTS 240/PCI/SSE2
 NVIDIA GeForce GTS 250/PCI/SSE2
+NVIDIA GeForce GTS 250/PCI/SSE2
+NVIDIA GeForce GTS 250/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTS 250/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTS 250M/PCI/SSE2
 NVIDIA GeForce GTS 350M/PCI/SSE2
+NVIDIA GeForce GTS 350M/PCI/SSE2
+NVIDIA GeForce GTS 360M/PCI/SSE2
 NVIDIA GeForce GTS 360M/PCI/SSE2
 NVIDIA GeForce GTS 450/PCI/SSE2
+NVIDIA GeForce GTS 450/PCI/SSE2
+NVIDIA GeForce GTS 450/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTS 450/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTS 455/PCI/SSE2
 NVIDIA GeForce GTX 260/PCI/SSE2
+NVIDIA GeForce GTX 260/PCI/SSE2
+NVIDIA GeForce GTX 260/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTX 260/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTX 260M/PCI/SSE2
+NVIDIA GeForce GTX 260M/PCI/SSE2
+NVIDIA GeForce GTX 275/PCI/SSE2
 NVIDIA GeForce GTX 275/PCI/SSE2
+NVIDIA GeForce GTX 275/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTX 280
 NVIDIA GeForce GTX 280/PCI/SSE2
 NVIDIA GeForce GTX 280M/PCI/SSE2
+NVIDIA GeForce GTX 285
+NVIDIA GeForce GTX 285/PCI/SSE2
+NVIDIA GeForce GTX 285/PCI/SSE2
 NVIDIA GeForce GTX 285/PCI/SSE2
 NVIDIA GeForce GTX 295/PCI/SSE2
+NVIDIA GeForce GTX 295/PCI/SSE2
+NVIDIA GeForce GTX 460 SE/PCI/SSE2
 NVIDIA GeForce GTX 460 SE/PCI/SSE2
 NVIDIA GeForce GTX 460 SE/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 460 SE/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 460/PCI/SSE2
 NVIDIA GeForce GTX 460/PCI/SSE2
 NVIDIA GeForce GTX 460/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 460/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 460M/PCI/SSE2
 NVIDIA GeForce GTX 460M/PCI/SSE2
 NVIDIA GeForce GTX 465/PCI/SSE2
+NVIDIA GeForce GTX 465/PCI/SSE2
+NVIDIA GeForce GTX 465/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTX 465/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTX 470/PCI/SSE2
+NVIDIA GeForce GTX 470/PCI/SSE2
 NVIDIA GeForce GTX 470/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTX 480/PCI/SSE2
 NVIDIA GeForce GTX 550 Ti/PCI/SSE2
+NVIDIA GeForce GTX 550 Ti/PCI/SSE2
 NVIDIA GeForce GTX 550 Ti/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 550 Ti/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 560 Ti/PCI/SSE2
 NVIDIA GeForce GTX 560 Ti/PCI/SSE2
 NVIDIA GeForce GTX 560 Ti/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 560 Ti/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 560/PCI/SSE2
 NVIDIA GeForce GTX 560/PCI/SSE2
+NVIDIA GeForce GTX 560/PCI/SSE2/3DNOW!
+NVIDIA GeForce GTX 560M/PCI/SSE2
 NVIDIA GeForce GTX 570/PCI/SSE2
+NVIDIA GeForce GTX 570/PCI/SSE2
+NVIDIA GeForce GTX 570/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTX 570/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTX 580/PCI/SSE2
+NVIDIA GeForce GTX 580/PCI/SSE2
+NVIDIA GeForce GTX 580/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTX 580/PCI/SSE2/3DNOW!
 NVIDIA GeForce GTX 580M/PCI/SSE2
 NVIDIA GeForce GTX 590/PCI/SSE2
+NVIDIA GeForce GTX 590/PCI/SSE2
 NVIDIA GeForce Go 6
 NVIDIA GeForce Go 6100
 NVIDIA GeForce Go 6100/PCI/SSE2
 NVIDIA GeForce Go 6100/PCI/SSE2/3DNOW!
+NVIDIA GeForce Go 6100/PCI/SSE2/3DNOW!
 NVIDIA GeForce Go 6150/PCI/SSE2
 NVIDIA GeForce Go 6150/PCI/SSE2/3DNOW!
+NVIDIA GeForce Go 6150/PCI/SSE2/3DNOW!
 NVIDIA GeForce Go 6200
 NVIDIA GeForce Go 6200/PCI/SSE2
 NVIDIA GeForce Go 6400
 NVIDIA GeForce Go 6400/PCI/SSE2
+NVIDIA GeForce Go 6400/PCI/SSE2
 NVIDIA GeForce Go 6600
 NVIDIA GeForce Go 6600/PCI/SSE2
+NVIDIA GeForce Go 6600/PCI/SSE2
 NVIDIA GeForce Go 6800
 NVIDIA GeForce Go 6800 Ultra/PCI/SSE2
+NVIDIA GeForce Go 6800 Ultra/PCI/SSE2
 NVIDIA GeForce Go 6800/PCI/SSE2
 NVIDIA GeForce Go 7200
 NVIDIA GeForce Go 7200/PCI/SSE2
 NVIDIA GeForce Go 7200/PCI/SSE2/3DNOW!
 NVIDIA GeForce Go 7300
 NVIDIA GeForce Go 7300/PCI/SSE2
+NVIDIA GeForce Go 7300/PCI/SSE2
 NVIDIA GeForce Go 7300/PCI/SSE2/3DNOW!
 NVIDIA GeForce Go 7400
 NVIDIA GeForce Go 7400/PCI/SSE2
+NVIDIA GeForce Go 7400/PCI/SSE2
 NVIDIA GeForce Go 7400/PCI/SSE2/3DNOW!
 NVIDIA GeForce Go 7600
 NVIDIA GeForce Go 7600/PCI/SSE2
+NVIDIA GeForce Go 7600/PCI/SSE2
+NVIDIA GeForce Go 7600/PCI/SSE2/3DNOW!
 NVIDIA GeForce Go 7600/PCI/SSE2/3DNOW!
 NVIDIA GeForce Go 7700
+NVIDIA GeForce Go 7700/PCI/SSE2
 NVIDIA GeForce Go 7800
 NVIDIA GeForce Go 7800 GTX/PCI/SSE2
 NVIDIA GeForce Go 7900
 NVIDIA GeForce Go 7900 GS/PCI/SSE2
+NVIDIA GeForce Go 7900 GS/PCI/SSE2
 NVIDIA GeForce Go 7900 GTX/PCI/SSE2
 NVIDIA GeForce Go 7950 GTX/PCI/SSE2
 NVIDIA GeForce PCX
@@ -1275,15 +1913,20 @@ NVIDIA GeForce2 GTS/AGP/SSE
 NVIDIA GeForce2 MX/AGP/3DNOW!
 NVIDIA GeForce2 MX/AGP/SSE/3DNOW!
 NVIDIA GeForce2 MX/AGP/SSE2
+NVIDIA GeForce2 MX/AGP/SSE2
 NVIDIA GeForce2 MX/PCI/SSE2
 NVIDIA GeForce3/AGP/SSE/3DNOW!
 NVIDIA GeForce3/AGP/SSE2
 NVIDIA GeForce4 420 Go 32M/AGP/SSE2
 NVIDIA GeForce4 420 Go 32M/AGP/SSE2/3DNOW!
 NVIDIA GeForce4 420 Go 32M/PCI/SSE2/3DNOW!
+NVIDIA GeForce4 420 Go/AGP/SSE2
 NVIDIA GeForce4 440 Go 64M/AGP/SSE2/3DNOW!
+NVIDIA GeForce4 440 Go/AGP/SSE2
 NVIDIA GeForce4 460 Go/AGP/SSE2
 NVIDIA GeForce4 MX 4000/AGP/SSE/3DNOW!
+NVIDIA GeForce4 MX 4000/AGP/SSE/3DNOW!
+NVIDIA GeForce4 MX 4000/AGP/SSE2
 NVIDIA GeForce4 MX 4000/AGP/SSE2
 NVIDIA GeForce4 MX 4000/PCI/3DNOW!
 NVIDIA GeForce4 MX 4000/PCI/SSE/3DNOW!
@@ -1291,97 +1934,161 @@ NVIDIA GeForce4 MX 4000/PCI/SSE2
 NVIDIA GeForce4 MX 420/AGP/SSE/3DNOW!
 NVIDIA GeForce4 MX 420/AGP/SSE2
 NVIDIA GeForce4 MX 440 with AGP8X/AGP/SSE2
+NVIDIA GeForce4 MX 440 with AGP8X/AGP/SSE2
+NVIDIA GeForce4 MX 440/AGP/SSE2
 NVIDIA GeForce4 MX 440/AGP/SSE2
 NVIDIA GeForce4 MX 440/AGP/SSE2/3DNOW!
 NVIDIA GeForce4 MX 440SE with AGP8X/AGP/SSE2
+NVIDIA GeForce4 MX 440SE with AGP8X/AGP/SSE2
+NVIDIA GeForce4 MX Integrated GPU/AGP/SSE/3DNOW!
 NVIDIA GeForce4 MX Integrated GPU/AGP/SSE/3DNOW!
 NVIDIA GeForce4 Ti 4200 with AGP8X/AGP/SSE
 NVIDIA GeForce4 Ti 4200/AGP/SSE/3DNOW!
 NVIDIA GeForce4 Ti 4400/AGP/SSE2
 NVIDIA Generic
 NVIDIA ION LE/PCI/SSE2
+NVIDIA ION LE/PCI/SSE2
+NVIDIA ION/PCI/SSE2
 NVIDIA ION/PCI/SSE2
 NVIDIA ION/PCI/SSE2/3DNOW!
+NVIDIA ION/PCI/SSE2/3DNOW!
+NVIDIA MCP61/PCI/SSE2
 NVIDIA MCP61/PCI/SSE2
 NVIDIA MCP61/PCI/SSE2/3DNOW!
+NVIDIA MCP61/PCI/SSE2/3DNOW!
+NVIDIA MCP73/PCI/SSE2
 NVIDIA MCP73/PCI/SSE2
 NVIDIA MCP79MH/PCI/SSE2
+NVIDIA MCP79MH/PCI/SSE2
+NVIDIA MCP79MX/PCI/SSE2
 NVIDIA MCP79MX/PCI/SSE2
 NVIDIA MCP7A-O/PCI/SSE2
+NVIDIA MCP7A-O/PCI/SSE2
 NVIDIA MCP7A-S/PCI/SSE2
 NVIDIA MCP89-EPT/PCI/SSE2
+NVIDIA MCP89-EPT/PCI/SSE2
 NVIDIA N10M-GE1/PCI/SSE2
+NVIDIA N10M-GE1/PCI/SSE2
+NVIDIA N10P-GE1/PCI/SSE2
 NVIDIA N10P-GE1/PCI/SSE2
 NVIDIA N10P-GV2/PCI/SSE2
+NVIDIA N10P-GV2/PCI/SSE2
+NVIDIA N11M-GE1/PCI/SSE2
 NVIDIA N11M-GE1/PCI/SSE2
 NVIDIA N11M-GE2/PCI/SSE2
+NVIDIA N11M-GE2/PCI/SSE2
 NVIDIA N12E-GS-A1/PCI/SSE2
+NVIDIA N12P-GVR-B-A1/PCI/SSE2
+NVIDIA N13M-GE1-B-A1/PCI/SSE2
+NVIDIA N13P-GL-A1/PCI/SSE2
+NVIDIA NB9M-GE/PCI/SSE2
 NVIDIA NB9M-GE/PCI/SSE2
 NVIDIA NB9M-GE1/PCI/SSE2
+NVIDIA NB9M-GE1/PCI/SSE2
+NVIDIA NB9M-GS/PCI/SSE2
 NVIDIA NB9M-GS/PCI/SSE2
 NVIDIA NB9M-NS/PCI/SSE2
+NVIDIA NB9M-NS/PCI/SSE2
+NVIDIA NB9P-GE1/PCI/SSE2
 NVIDIA NB9P-GE1/PCI/SSE2
 NVIDIA NB9P-GS/PCI/SSE2
 NVIDIA NV17/AGP/3DNOW!
 NVIDIA NV17/AGP/SSE2
+NVIDIA NV17/AGP/SSE2
 NVIDIA NV34
 NVIDIA NV35
 NVIDIA NV36/AGP/SSE/3DNOW!
 NVIDIA NV36/AGP/SSE2
 NVIDIA NV41/PCI/SSE2
 NVIDIA NV43
+NVIDIA NV43/PCI/SSE2
 NVIDIA NV44
+NVIDIA NV44/AGP/SSE2
+NVIDIA NVIDIA GeForce 210 OpenGL Engine
 NVIDIA NVIDIA GeForce 210 OpenGL Engine
 NVIDIA NVIDIA GeForce 320M OpenGL Engine
+NVIDIA NVIDIA GeForce 320M OpenGL Engine
+NVIDIA NVIDIA GeForce 7300 GT OpenGL Engine
 NVIDIA NVIDIA GeForce 7300 GT OpenGL Engine
 NVIDIA NVIDIA GeForce 7600 GT OpenGL Engine
 NVIDIA NVIDIA GeForce 8600M GT OpenGL Engine
+NVIDIA NVIDIA GeForce 8600M GT OpenGL Engine
+NVIDIA NVIDIA GeForce 8800 GS OpenGL Engine
 NVIDIA NVIDIA GeForce 8800 GS OpenGL Engine
 NVIDIA NVIDIA GeForce 8800 GT OpenGL Engine
+NVIDIA NVIDIA GeForce 8800 GT OpenGL Engine
+NVIDIA NVIDIA GeForce 9400 OpenGL Engine
 NVIDIA NVIDIA GeForce 9400 OpenGL Engine
 NVIDIA NVIDIA GeForce 9400M OpenGL Engine
+NVIDIA NVIDIA GeForce 9400M OpenGL Engine
 NVIDIA NVIDIA GeForce 9500 GT OpenGL Engine
 NVIDIA NVIDIA GeForce 9600M GT OpenGL Engine
+NVIDIA NVIDIA GeForce 9600M GT OpenGL Engine
 NVIDIA NVIDIA GeForce GT 120 OpenGL Engine
+NVIDIA NVIDIA GeForce GT 120 OpenGL Engine
+NVIDIA NVIDIA GeForce GT 130 OpenGL Engine
 NVIDIA NVIDIA GeForce GT 130 OpenGL Engine
 NVIDIA NVIDIA GeForce GT 220 OpenGL Engine
 NVIDIA NVIDIA GeForce GT 230M OpenGL Engine
 NVIDIA NVIDIA GeForce GT 240M OpenGL Engine
 NVIDIA NVIDIA GeForce GT 330M OpenGL Engine
+NVIDIA NVIDIA GeForce GT 330M OpenGL Engine
 NVIDIA NVIDIA GeForce GT 420M OpenGL Engine
 NVIDIA NVIDIA GeForce GT 425M OpenGL Engine
 NVIDIA NVIDIA GeForce GT 430 OpenGL Engine
+NVIDIA NVIDIA GeForce GT 430 OpenGL Engine
 NVIDIA NVIDIA GeForce GT 440 OpenGL Engine
 NVIDIA NVIDIA GeForce GT 540M OpenGL Engine
 NVIDIA NVIDIA GeForce GTS 240 OpenGL Engine
 NVIDIA NVIDIA GeForce GTS 250 OpenGL Engine
+NVIDIA NVIDIA GeForce GTS 250 OpenGL Engine
+NVIDIA NVIDIA GeForce GTS 450 OpenGL Engine
 NVIDIA NVIDIA GeForce GTS 450 OpenGL Engine
 NVIDIA NVIDIA GeForce GTX 285 OpenGL Engine
 NVIDIA NVIDIA GeForce GTX 460 OpenGL Engine
+NVIDIA NVIDIA GeForce GTX 460 OpenGL Engine
 NVIDIA NVIDIA GeForce GTX 460M OpenGL Engine
 NVIDIA NVIDIA GeForce GTX 465 OpenGL Engine
 NVIDIA NVIDIA GeForce GTX 470 OpenGL Engine
 NVIDIA NVIDIA GeForce GTX 480 OpenGL Engine
+NVIDIA NVIDIA GeForce GTX 480 OpenGL Engine
+NVIDIA NVIDIA GeForce Pre-Release GF108 ES OpenGL Engine
 NVIDIA NVIDIA GeForce Pre-Release ION OpenGL Engine
+NVIDIA NVIDIA GeForce Pre-Release ION OpenGL Engine
+NVIDIA NVIDIA GeForce Pre-Release MCP7A-J-DC OpenGL Engine
 NVIDIA NVIDIA GeForce4 OpenGL Engine
 NVIDIA NVIDIA NV34MAP OpenGL Engine
 NVIDIA NVIDIA Quadro 4000 OpenGL Engine
+NVIDIA NVIDIA Quadro 4000 OpenGL Engine
 NVIDIA NVIDIA Quadro FX 4800 OpenGL Engine
 NVIDIA NVS 2100M/PCI/SSE2
+NVIDIA NVS 2100M/PCI/SSE2
+NVIDIA NVS 300/PCI/SSE2
 NVIDIA NVS 300/PCI/SSE2
 NVIDIA NVS 3100M/PCI/SSE2
+NVIDIA NVS 3100M/PCI/SSE2
 NVIDIA NVS 4100/PCI/SSE2/3DNOW!
 NVIDIA NVS 4200M/PCI/SSE2
+NVIDIA NVS 4200M/PCI/SSE2
+NVIDIA NVS 5100M/PCI/SSE2
 NVIDIA NVS 5100M/PCI/SSE2
 NVIDIA PCI
+NVIDIA Quadro 1000M/PCI/SSE2
+NVIDIA Quadro 2000/PCI/SSE2
 NVIDIA Quadro 2000/PCI/SSE2
+NVIDIA Quadro 2000M/PCI/SSE2
+NVIDIA Quadro 3000M/PCI/SSE2
 NVIDIA Quadro 4000
 NVIDIA Quadro 4000 OpenGL Engine
 NVIDIA Quadro 4000/PCI/SSE2
+NVIDIA Quadro 4000/PCI/SSE2
+NVIDIA Quadro 4000M/PCI/SSE2
+NVIDIA Quadro 5000/PCI/SSE2
 NVIDIA Quadro 5000/PCI/SSE2
 NVIDIA Quadro 5000M/PCI/SSE2
 NVIDIA Quadro 600
 NVIDIA Quadro 600/PCI/SSE2
+NVIDIA Quadro 600/PCI/SSE2
 NVIDIA Quadro 600/PCI/SSE2/3DNOW!
 NVIDIA Quadro 6000
 NVIDIA Quadro 6000/PCI/SSE2
@@ -1390,16 +2097,22 @@ NVIDIA Quadro DCC
 NVIDIA Quadro FX
 NVIDIA Quadro FX 1100/AGP/SSE2
 NVIDIA Quadro FX 1400/PCI/SSE2
+NVIDIA Quadro FX 1400/PCI/SSE2
 NVIDIA Quadro FX 1500
+NVIDIA Quadro FX 1500/PCI/SSE2
 NVIDIA Quadro FX 1500M/PCI/SSE2
 NVIDIA Quadro FX 1600M/PCI/SSE2
+NVIDIA Quadro FX 1600M/PCI/SSE2
 NVIDIA Quadro FX 1700
 NVIDIA Quadro FX 1700M/PCI/SSE2
 NVIDIA Quadro FX 1800
 NVIDIA Quadro FX 1800/PCI/SSE2
 NVIDIA Quadro FX 1800M/PCI/SSE2
 NVIDIA Quadro FX 2500M/PCI/SSE2
+NVIDIA Quadro FX 2500M/PCI/SSE2
 NVIDIA Quadro FX 2700M/PCI/SSE2
+NVIDIA Quadro FX 2700M/PCI/SSE2
+NVIDIA Quadro FX 2800M/PCI/SSE2
 NVIDIA Quadro FX 2800M/PCI/SSE2
 NVIDIA Quadro FX 3400
 NVIDIA Quadro FX 3450
@@ -1411,75 +2124,125 @@ NVIDIA Quadro FX 370
 NVIDIA Quadro FX 370/PCI/SSE2
 NVIDIA Quadro FX 3700
 NVIDIA Quadro FX 3700M/PCI/SSE2
+NVIDIA Quadro FX 3700M/PCI/SSE2
 NVIDIA Quadro FX 370M/PCI/SSE2
 NVIDIA Quadro FX 3800
 NVIDIA Quadro FX 3800M/PCI/SSE2
+NVIDIA Quadro FX 3800M/PCI/SSE2
 NVIDIA Quadro FX 4500
 NVIDIA Quadro FX 4600
 NVIDIA Quadro FX 4800
 NVIDIA Quadro FX 4800/PCI/SSE2
+NVIDIA Quadro FX 540/PCI/SSE2/3DNOW!
 NVIDIA Quadro FX 560
+NVIDIA Quadro FX 560/PCI/SSE2
 NVIDIA Quadro FX 5600
 NVIDIA Quadro FX 570
 NVIDIA Quadro FX 570/PCI/SSE2
 NVIDIA Quadro FX 570M/PCI/SSE2
 NVIDIA Quadro FX 580/PCI/SSE2
+NVIDIA Quadro FX 580/PCI/SSE2
+NVIDIA Quadro FX 770M/PCI/SSE2
 NVIDIA Quadro FX 770M/PCI/SSE2
 NVIDIA Quadro FX 880M
 NVIDIA Quadro FX 880M/PCI/SSE2
+NVIDIA Quadro FX 880M/PCI/SSE2
 NVIDIA Quadro FX Go700/AGP/SSE2
 NVIDIA Quadro NVS
 NVIDIA Quadro NVS 110M/PCI/SSE2
+NVIDIA Quadro NVS 110M/PCI/SSE2
 NVIDIA Quadro NVS 130M/PCI/SSE2
 NVIDIA Quadro NVS 135M/PCI/SSE2
+NVIDIA Quadro NVS 135M/PCI/SSE2
+NVIDIA Quadro NVS 140M/PCI/SSE2
 NVIDIA Quadro NVS 140M/PCI/SSE2
 NVIDIA Quadro NVS 150M/PCI/SSE2
+NVIDIA Quadro NVS 150M/PCI/SSE2
+NVIDIA Quadro NVS 160M/PCI/SSE2
 NVIDIA Quadro NVS 160M/PCI/SSE2
 NVIDIA Quadro NVS 210S/PCI/SSE2/3DNOW!
 NVIDIA Quadro NVS 285/PCI/SSE2
+NVIDIA Quadro NVS 285/PCI/SSE2
+NVIDIA Quadro NVS 290/PCI/SSE2
 NVIDIA Quadro NVS 290/PCI/SSE2
 NVIDIA Quadro NVS 295/PCI/SSE2
 NVIDIA Quadro NVS 320M/PCI/SSE2
+NVIDIA Quadro NVS 320M/PCI/SSE2
 NVIDIA Quadro NVS 55/280 PCI/PCI/SSE2
 NVIDIA Quadro NVS/PCI/SSE2
 NVIDIA Quadro PCI-E Series/PCI/SSE2/3DNOW!
 NVIDIA Quadro VX 200/PCI/SSE2
+NVIDIA Quadro VX 200/PCI/SSE2
+NVIDIA Quadro/AGP/SSE2
 NVIDIA Quadro/AGP/SSE2
 NVIDIA Quadro2
 NVIDIA Quadro4
+NVIDIA Quadro4 750 XGL/AGP/SSE2
 NVIDIA RIVA TNT
 NVIDIA RIVA TNT2/AGP/SSE2
 NVIDIA RIVA TNT2/PCI/3DNOW!
+NVIDIA Tesla C2050/PCI/SSE2
 NVIDIA nForce
+NVIDIA nForce 730a/PCI/SSE2
+NVIDIA nForce 730a/PCI/SSE2/3DNOW!
+NVIDIA nForce 750a SLI/PCI/SSE2
+NVIDIA nForce 750a SLI/PCI/SSE2/3DNOW!
+NVIDIA nForce 760i SLI/PCI/SSE2
+NVIDIA nForce 780a SLI/PCI/SSE2/3DNOW!
+NVIDIA nForce 980a/780a SLI/PCI/SSE2
+NVIDIA nForce 980a/780a SLI/PCI/SSE2/3DNOW!
 NVIDIA unknown board/AGP/SSE2
 NVIDIA unknown board/PCI/SSE2
 NVIDIA unknown board/PCI/SSE2/3DNOW!
 Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5670 OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5670 OpenGL Engine
 Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5750 OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5750 OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5770 OpenGL Engine
 Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 5770 OpenGL Engine
 Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6490M OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6490M OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6750M OpenGL Engine
 Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6750M OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6770M OpenGL Engine
+Parallels and ATI Technologies Inc. Parallels using ATI Radeon HD 6970M OpenGL Engine
 Parallels and Intel Inc. 3D-Analyze v2.3 - http://www.tommti-systems.com
 Parallels and Intel Inc. Parallels using Intel HD Graphics 3000 OpenGL Engine
+Parallels and Intel Inc. Parallels using Intel HD Graphics 3000 OpenGL Engine
+Parallels and NVIDIA Parallels using NVIDIA GeForce 320M OpenGL Engine
 Parallels and NVIDIA Parallels using NVIDIA GeForce 320M OpenGL Engine
 Parallels and NVIDIA Parallels using NVIDIA GeForce 9400 OpenGL Engine
 Parallels and NVIDIA Parallels using NVIDIA GeForce GT 120 OpenGL Engine
+Parallels and NVIDIA Parallels using NVIDIA GeForce GT 120 OpenGL Engine
+Parallels and NVIDIA Parallels using NVIDIA GeForce GT 330M OpenGL Engine
 Parallels and NVIDIA Parallels using NVIDIA GeForce GT 330M OpenGL Engine
 Radeon RV350 on Gallium
 S3
+S3 Fire GL2
 S3 Graphics VIA/S3G UniChrome IGP/MMX/K3D
+S3 Graphics VIA/S3G UniChrome IGP/MMX/SSE
+S3 Graphics VIA/S3G UniChrome Pro IGP/MMX/SSE
 S3 Graphics VIA/S3G UniChrome Pro IGP/MMX/SSE
 S3 Graphics, Incorporated ProSavage/Twister
 S3 Graphics, Incorporated S3 Graphics Chrome9 HC
+S3 Graphics, Incorporated S3 Graphics Chrome9 HC
 S3 Graphics, Incorporated S3 Graphics DeltaChrome
+S3 Graphics, Incorporated S3 Graphics DeltaChrome
+S3 Graphics, Incorporated VIA Chrome9 HC IGP
 S3 Graphics, Incorporated VIA Chrome9 HC IGP
 SiS
+SiS 650/M650 VGA
+SiS 661 VGA
 SiS 661 VGA
 SiS 662 VGA
 SiS 741 VGA
 SiS 760 VGA
+SiS 760 VGA
 SiS 761GX VGA
+SiS 761GX VGA
+SiS Mirage Graphics3
 SiS Mirage Graphics3
+SiS Xabre VGA
 Trident
 Tungsten Graphics
 Tungsten Graphics, Inc Mesa DRI 865G GEM 20091221 2009Q4 x86/MMX/SSE2
@@ -1489,6 +2252,7 @@ Tungsten Graphics, Inc Mesa DRI 915G GEM 20100330 DEVELOPMENT x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 915GM GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 915GM GEM 20091221 2009Q4 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 915GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 915GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 945G
 Tungsten Graphics, Inc Mesa DRI 945G GEM 20091221 2009Q4 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 945G GEM 20100330 DEVELOPMENT
@@ -1497,18 +2261,23 @@ Tungsten Graphics, Inc Mesa DRI 945GM GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 945GM GEM 20091221 2009Q4 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 945GM GEM 20100328 2010Q1 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 945GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 945GME  x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 945GME 20061017
 Tungsten Graphics, Inc Mesa DRI 945GME GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 945GME GEM 20091221 2009Q4 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 945GME GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 945GME GEM 20100330 DEVELOPMENT x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 965GM GEM 20090326 2009Q1 RC2 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 965GM GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 965GM GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 965GM GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI 965GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI 965GM GEM 20100330 DEVELOPMENT x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI G33 20061017 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI G33 GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI G33 GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI G33 GEM 20091221 2009Q4 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI G41 GEM 20091221 2009Q4 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI G41 GEM 20100330 DEVELOPMENT x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI GMA500 20081116 - 5.0.1.0046 x86/MMX/SSE2
@@ -1518,44 +2287,83 @@ Tungsten Graphics, Inc Mesa DRI IGD GEM 20100330 DEVELOPMENT x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI IGDNG_D GEM 20091221 2009Q4 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI Ironlake Desktop GEM 20100330 DEVELOPMENT x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI Ironlake Mobile GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset
 Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset 20080716 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20090712 2009Q2 RC3 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20091221 2009Q4 x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20091221 2009Q4 x86/MMX/SSE2
 Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100328 2010Q1
 Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100330 DEVELOPMENT
 Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc Mesa DRI Mobile Intelå¨ GM45 Express Chipset GEM 20100330 DEVELOPMENT x86/MMX/SSE2
+Tungsten Graphics, Inc. Mesa DRI R200 (RV250 4C66) 20090101 x86/MMX/SSE2 TCL DRI2
 Tungsten Graphics, Inc. Mesa DRI R200 (RV280 5964) 20090101 x86/MMX+/3DNow!+/SSE2 TCL DRI2
 VIA
 VMware, Inc. Gallium 0.3 on SVGA3D; build: RELEASE;
+VMware, Inc. Gallium 0.3 on SVGA3D; build: RELEASE;
+VMware, Inc. Gallium 0.4 on SVGA3D; build: DEBUG; mutex: MSVC Intrinsics
+VMware, Inc. Gallium 0.4 on SVGA3D; build: RELEASE;
+VMware, Inc. Gallium 0.4 on i915 (chipset: 945GM)
 VMware, Inc. Gallium 0.4 on i915 (chipset: 945GM)
 VMware, Inc. Gallium 0.4 on llvmpipe
+VMware, Inc. Gallium 0.4 on llvmpipe
+VMware, Inc. Gallium 0.4 on softpipe
 VMware, Inc. Gallium 0.4 on softpipe
 X.Org Gallium 0.4 on AMD BARTS
+X.Org Gallium 0.4 on AMD BARTS
+X.Org Gallium 0.4 on AMD CEDAR
 X.Org Gallium 0.4 on AMD CEDAR
 X.Org Gallium 0.4 on AMD HEMLOCK
 X.Org Gallium 0.4 on AMD JUNIPER
+X.Org Gallium 0.4 on AMD JUNIPER
+X.Org Gallium 0.4 on AMD PALM
+X.Org Gallium 0.4 on AMD REDWOOD
 X.Org Gallium 0.4 on AMD REDWOOD
 X.Org Gallium 0.4 on AMD RS780
+X.Org Gallium 0.4 on AMD RS780
+X.Org Gallium 0.4 on AMD RS880
 X.Org Gallium 0.4 on AMD RS880
 X.Org Gallium 0.4 on AMD RV610
+X.Org Gallium 0.4 on AMD RV610
+X.Org Gallium 0.4 on AMD RV620
 X.Org Gallium 0.4 on AMD RV620
 X.Org Gallium 0.4 on AMD RV630
+X.Org Gallium 0.4 on AMD RV630
+X.Org Gallium 0.4 on AMD RV635
 X.Org Gallium 0.4 on AMD RV635
 X.Org Gallium 0.4 on AMD RV710
+X.Org Gallium 0.4 on AMD RV710
+X.Org Gallium 0.4 on AMD RV730
 X.Org Gallium 0.4 on AMD RV730
 X.Org Gallium 0.4 on AMD RV740
+X.Org Gallium 0.4 on AMD RV740
 X.Org Gallium 0.4 on AMD RV770
 X.Org R300 Project Gallium 0.4 on ATI R300
+X.Org R300 Project Gallium 0.4 on ATI R350
+X.Org R300 Project Gallium 0.4 on ATI R420
+X.Org R300 Project Gallium 0.4 on ATI R580
 X.Org R300 Project Gallium 0.4 on ATI R580
 X.Org R300 Project Gallium 0.4 on ATI RC410
+X.Org R300 Project Gallium 0.4 on ATI RC410
+X.Org R300 Project Gallium 0.4 on ATI RS480
+X.Org R300 Project Gallium 0.4 on ATI RS482
 X.Org R300 Project Gallium 0.4 on ATI RS482
 X.Org R300 Project Gallium 0.4 on ATI RS600
 X.Org R300 Project Gallium 0.4 on ATI RS690
+X.Org R300 Project Gallium 0.4 on ATI RS690
+X.Org R300 Project Gallium 0.4 on ATI RS740
+X.Org R300 Project Gallium 0.4 on ATI RV350
 X.Org R300 Project Gallium 0.4 on ATI RV350
 X.Org R300 Project Gallium 0.4 on ATI RV370
+X.Org R300 Project Gallium 0.4 on ATI RV370
+X.Org R300 Project Gallium 0.4 on ATI RV410
 X.Org R300 Project Gallium 0.4 on ATI RV410
 X.Org R300 Project Gallium 0.4 on ATI RV515
+X.Org R300 Project Gallium 0.4 on ATI RV515
+X.Org R300 Project Gallium 0.4 on ATI RV530
 X.Org R300 Project Gallium 0.4 on ATI RV530
+X.Org R300 Project Gallium 0.4 on ATI RV560
+X.Org R300 Project Gallium 0.4 on ATI RV570
 X.Org R300 Project Gallium 0.4 on ATI RV570
 X.Org R300 Project Gallium 0.4 on R420
 X.Org R300 Project Gallium 0.4 on R580
@@ -1571,23 +2379,44 @@ X.Org R300 Project Gallium 0.4 on RV410
 X.Org R300 Project Gallium 0.4 on RV515
 X.Org R300 Project Gallium 0.4 on RV530
 XGI
+nouveau Gallium 0.4 on NV31
+nouveau Gallium 0.4 on NV34
 nouveau Gallium 0.4 on NV34
 nouveau Gallium 0.4 on NV36
+nouveau Gallium 0.4 on NV43
+nouveau Gallium 0.4 on NV44
+nouveau Gallium 0.4 on NV46
 nouveau Gallium 0.4 on NV46
 nouveau Gallium 0.4 on NV49
 nouveau Gallium 0.4 on NV4A
+nouveau Gallium 0.4 on NV4A
 nouveau Gallium 0.4 on NV4B
+nouveau Gallium 0.4 on NV4B
+nouveau Gallium 0.4 on NV4C
 nouveau Gallium 0.4 on NV4E
 nouveau Gallium 0.4 on NV50
+nouveau Gallium 0.4 on NV63
+nouveau Gallium 0.4 on NV67
+nouveau Gallium 0.4 on NV84
 nouveau Gallium 0.4 on NV84
 nouveau Gallium 0.4 on NV86
+nouveau Gallium 0.4 on NV86
+nouveau Gallium 0.4 on NV92
 nouveau Gallium 0.4 on NV92
 nouveau Gallium 0.4 on NV94
+nouveau Gallium 0.4 on NV94
+nouveau Gallium 0.4 on NV96
 nouveau Gallium 0.4 on NV96
 nouveau Gallium 0.4 on NV98
+nouveau Gallium 0.4 on NV98
+nouveau Gallium 0.4 on NVA0
 nouveau Gallium 0.4 on NVA0
 nouveau Gallium 0.4 on NVA3
 nouveau Gallium 0.4 on NVA5
+nouveau Gallium 0.4 on NVA5
+nouveau Gallium 0.4 on NVA8
 nouveau Gallium 0.4 on NVA8
 nouveau Gallium 0.4 on NVAA
+nouveau Gallium 0.4 on NVAA
+nouveau Gallium 0.4 on NVAC
 nouveau Gallium 0.4 on NVAC
diff --git a/indra/newview/tests/lltranslate_test.cpp b/indra/newview/tests/lltranslate_test.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..10e37fae97f8096e59166f5911dc6615bac25fc1
--- /dev/null
+++ b/indra/newview/tests/lltranslate_test.cpp
@@ -0,0 +1,345 @@
+/** 
+ * @file lltranslate_test.cpp
+ *
+ * $LicenseInfo:firstyear=2011&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 "../test/lltut.h"
+#include "../lltranslate.h"
+#include "../llversioninfo.h"
+#include "../llviewercontrol.h"
+
+#include "llbufferstream.h"
+#include "lltrans.h"
+#include "llui.h"
+
+static const std::string GOOGLE_VALID_RESPONSE1 =
+"{\
+ \"data\": {\
+  \"translations\": [\
+   {\
+    \"translatedText\": \"привет\",\
+    \"detectedSourceLanguage\": \"es\"\
+   }\
+  ]\
+ }\
+}";
+
+static const std::string GOOGLE_VALID_RESPONSE2 =
+"{\
+ \"data\": {\
+  \"translations\": [\
+   {\
+    \"translatedText\": \"привет\"\
+   }\
+  ]\
+ }\
+}\
+";
+
+static const std::string GOOGLE_VALID_RESPONSE3 =
+"{\
+ \"error\": {\
+  \"errors\": [\
+   {\
+    \"domain\": \"global\",\
+    \"reason\": \"invalid\",\
+    \"message\": \"Invalid Value\"\
+   }\
+  ],\
+  \"code\": 400,\
+  \"message\": \"Invalid Value\"\
+ }\
+}";
+
+static const std::string BING_VALID_RESPONSE1 =
+"<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">Привет</string>";
+
+static const std::string BING_VALID_RESPONSE2 =
+"<html><body><h1>Argument Exception</h1><p>Method: Translate()</p><p>Parameter: </p>\
+<p>Message: 'from' must be a valid language</p><code></code>\
+<p>message id=3743.V2_Rest.Translate.58E8454F</p></body></html>";
+
+static const std::string BING_VALID_RESPONSE3 =
+"<html><body><h1>Argument Exception</h1><p>Method: Translate()</p>\
+<p>Parameter: appId</p><p>Message: Invalid appId&#xD;\nParameter name: appId</p>\
+<code></code><p>message id=3737.V2_Rest.Translate.56016759</p></body></html>";
+
+namespace tut
+{
+	class translate_test
+	{
+	protected:
+		void test_translation(
+			LLTranslationAPIHandler& handler,
+			int status, const std::string& resp,
+			const std::string& exp_trans, const std::string& exp_lang, const std::string& exp_err)
+		{
+			std::string translation, detected_lang, err_msg;
+			bool rc = handler.parseResponse(status, resp, translation, detected_lang, err_msg);
+			ensure_equals("rc", rc, (status == 200));
+			ensure_equals("err_msg", err_msg, exp_err);
+			ensure_equals("translation", translation, exp_trans);
+			ensure_equals("detected_lang", detected_lang,  exp_lang);
+		}
+
+		LLGoogleTranslationHandler mGoogle;
+		LLBingTranslationHandler mBing;
+	};
+
+	typedef test_group<translate_test> translate_test_group_t;
+	typedef translate_test_group_t::object translate_test_object_t;
+	tut::translate_test_group_t tut_translate("LLTranslate");
+
+	template<> template<>
+	void translate_test_object_t::test<1>()
+	{
+		test_translation(mGoogle, 200, GOOGLE_VALID_RESPONSE1, "привет", "es", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<2>()
+	{
+		test_translation(mGoogle, 200, GOOGLE_VALID_RESPONSE2, "привет", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<3>()
+	{
+		test_translation(mGoogle, 400, GOOGLE_VALID_RESPONSE3, "", "", "Invalid Value");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<4>()
+	{
+		test_translation(mGoogle, 400,
+			"",
+			"", "", "* Line 1, Column 1\n  Syntax error: value, object or array expected.\n");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<5>()
+	{
+		test_translation(mGoogle, 400,
+			"[]",
+			"", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<6>()
+	{
+		test_translation(mGoogle, 400,
+			"{\"oops\": \"invalid\"}",
+			"", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<7>()
+	{
+		test_translation(mGoogle, 400,
+			"{\"data\": {}}",
+			"", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<8>()
+	{
+		test_translation(mGoogle, 400,
+				"{\"data\": { \"translations\": [ {} ] }}",
+			"", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<9>()
+	{
+		test_translation(mGoogle, 400,
+				"{\"data\": { \"translations\": [ { \"translatedTextZZZ\": \"привет\", \"detectedSourceLanguageZZZ\": \"es\" } ] }}",
+			"", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<10>()
+	{
+		test_translation(mBing, 200, BING_VALID_RESPONSE1, "Привет", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<11>()
+	{
+		test_translation(mBing, 400, BING_VALID_RESPONSE2, "", "", "'from' must be a valid language");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<12>()
+	{
+		test_translation(mBing, 400, BING_VALID_RESPONSE3, "", "", "Invalid appId\nParameter name: appId");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<13>()
+	{
+		test_translation(mBing, 200,
+			"Привет</string>",
+			"Привет", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<14>()
+	{
+		test_translation(mBing, 200,
+			"<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">Привет",
+			"Привет", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<15>()
+	{
+		test_translation(mBing, 200,
+			"Привет",
+			"Привет", "", "");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<16>()
+	{
+		test_translation(mBing, 400,
+			"Message: some error</p>",
+			"", "", "some error");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<17>()
+	{
+		test_translation(mBing, 400,
+			"Message: some error",
+			"", "", "some error");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<18>()
+	{
+		test_translation(mBing, 400,
+			"some error</p>",
+			"", "", "some error");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<19>()
+	{
+		test_translation(mBing, 400,
+			"some error",
+			"", "", "some error");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<20>()
+	{
+		std::string url;
+		mBing.getTranslateURL(url, "en", "es", "hi");
+		ensure_equals("bing URL", url,
+			"http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=dummy&text=hi&to=es&from=en");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<21>()
+	{
+		std::string url;
+		mBing.getTranslateURL(url, "", "es", "hi");
+		ensure_equals("bing URL", url,
+			"http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=dummy&text=hi&to=es");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<22>()
+	{
+		std::string url;
+		mGoogle.getTranslateURL(url, "en", "es", "hi");
+		ensure_equals("google URL", url,
+			"https://www.googleapis.com/language/translate/v2?key=dummy&q=hi&target=es&source=en");
+	}
+
+	template<> template<>
+	void translate_test_object_t::test<23>()
+	{
+		std::string url;
+		mGoogle.getTranslateURL(url, "", "es", "hi");
+		ensure_equals("google URL", url,
+			"https://www.googleapis.com/language/translate/v2?key=dummy&q=hi&target=es");
+	}
+}
+
+//== Misc stubs ===============================================================
+LLControlGroup gSavedSettings("test");
+
+std::string LLUI::getLanguage() { return "en"; }
+std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args) { return "dummy"; }
+
+LLControlGroup::LLControlGroup(const std::string& name) : LLInstanceTracker<LLControlGroup, std::string>(name) {}
+std::string LLControlGroup::getString(const std::string& name) { return "dummy"; }
+LLControlGroup::~LLControlGroup() {}
+
+namespace boost {
+	void intrusive_ptr_add_ref(LLCurl::Responder*) {}
+	void intrusive_ptr_release(LLCurl::Responder*) {}
+}
+
+LLCurl::Responder::Responder() {}
+void LLCurl::Responder::completedHeader(U32, std::string const&, LLSD const&) {}
+void LLCurl::Responder::completedRaw(U32, const std::string&, const LLChannelDescriptors&, const LLIOPipe::buffer_ptr_t& buffer) {}
+void LLCurl::Responder::completed(U32, std::string const&, LLSD const&) {}
+void LLCurl::Responder::error(U32, std::string const&) {}
+void LLCurl::Responder::errorWithContent(U32, std::string const&, LLSD const&) {}
+void LLCurl::Responder::result(LLSD const&) {}
+LLCurl::Responder::~Responder() {}
+
+void LLHTTPClient::get(const std::string&, const LLSD&, ResponderPtr, const LLSD&, const F32) {}
+void LLHTTPClient::get(const std::string&, boost::intrusive_ptr<LLCurl::Responder>, const LLSD&, const F32) {}
+
+LLBufferStream::LLBufferStream(const LLChannelDescriptors& channels, LLBufferArray* buffer)
+:	std::iostream(&mStreamBuf), mStreamBuf(channels, buffer) {}
+LLBufferStream::~LLBufferStream() {}
+
+LLBufferStreamBuf::LLBufferStreamBuf(const LLChannelDescriptors&, LLBufferArray*) {}
+#if( LL_WINDOWS || __GNUC__ > 2)
+LLBufferStreamBuf::pos_type LLBufferStreamBuf::seekoff(
+	off_type off,
+	std::ios::seekdir way,
+	std::ios::openmode which)
+#else
+streampos LLBufferStreamBuf::seekoff(
+	streamoff off,
+	std::ios::seekdir way,
+	std::ios::openmode which)
+#endif
+{ return 0; }
+int LLBufferStreamBuf::sync() {return 0;}
+int LLBufferStreamBuf::underflow() {return 0;}
+int LLBufferStreamBuf::overflow(int) {return 0;}
+LLBufferStreamBuf::~LLBufferStreamBuf() {}
+
+S32 LLVersionInfo::getBuild() { return 0; }
+const std::string& LLVersionInfo::getChannel() {static std::string dummy; return dummy;}
+S32 LLVersionInfo::getMajor() { return 0; }
+S32 LLVersionInfo::getMinor() { return 0; }
+S32 LLVersionInfo::getPatch() { return 0; }
diff --git a/indra/newview/tests/llworldmap_test.cpp b/indra/newview/tests/llworldmap_test.cpp
index 102294959a35ee15c9bcc75174144d6cd8b1fa03..acc6e814bc7a196d1f071cc6c79d4a15b9f68123 100644
--- a/indra/newview/tests/llworldmap_test.cpp
+++ b/indra/newview/tests/llworldmap_test.cpp
@@ -27,6 +27,7 @@
 
 // Dependencies
 #include "linden_common.h"
+#include "llapr.h"
 #include "llsingleton.h"
 #include "lltrans.h"
 #include "lluistring.h"
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
old mode 100755
new mode 100644
diff --git a/indra/test/CMakeLists.txt b/indra/test/CMakeLists.txt
index e9eb3c188447b73ed11313459a250a2d05bebada..328ab4ca518f51cfe5f0f42a3b32d957568c36bd 100644
--- a/indra/test/CMakeLists.txt
+++ b/indra/test/CMakeLists.txt
@@ -4,7 +4,6 @@ project (test)
 
 include(00-Common)
 include(LLCommon)
-include(LLDatabase)
 include(LLInventory)
 include(LLMath)
 include(LLMessage)
@@ -32,7 +31,7 @@ include_directories(
 
 set(test_SOURCE_FILES
     io.cpp
-#    llapp_tut.cpp                      # Temporarily removed until thread issues can be solved
+    llapp_tut.cpp
     llblowfish_tut.cpp
     llbuffer_tut.cpp
     lldoubledispatch_tut.cpp
@@ -53,8 +52,6 @@ set(test_SOURCE_FILES
     llservicebuilder_tut.cpp
     llstreamtools_tut.cpp
     lltemplatemessagebuilder_tut.cpp
-    lltimestampcache_tut.cpp
-    lltranscode_tut.cpp
     lltut.cpp
     lluuidhashmap_tut.cpp
     message_tut.cpp
@@ -76,12 +73,6 @@ if (NOT WINDOWS)
        )
 endif (NOT WINDOWS)
 
-if (NOT DARWIN)
-  list(APPEND test_SOURCE_FILES
-    lldatabase_tut.cpp
-    )
-endif (NOT DARWIN)
-
 set_source_files_properties(${test_HEADER_FILES}
                             PROPERTIES HEADER_FILE_ONLY TRUE)
 
@@ -100,7 +91,6 @@ target_link_libraries(test
     ${LLCOMMON_LIBRARIES}
     ${EXPAT_LIBRARIES}
     ${GOOGLEMOCK_LIBRARIES}
-    ${APRICONV_LIBRARIES}
     ${PTHREAD_LIBRARY}
     ${WINDOWS_LIBRARIES}
     ${BOOST_PROGRAM_OPTIONS_LIBRARY}
@@ -119,38 +109,28 @@ endif (WINDOWS)
 
 get_target_property(TEST_EXE test LOCATION)
 
-SET_TEST_PATH(LD_LIBRARY_PATH)
-LL_TEST_COMMAND(command "${LD_LIBRARY_PATH}"
-  "${TEST_EXE}" "--output=${CMAKE_CURRENT_BINARY_DIR}/cpp_test_results.txt" "--touch=${CMAKE_CURRENT_BINARY_DIR}/cpp_tests_ok.txt")
+SET_TEST_PATH(DYLD_LIBRARY_PATH)
+
+LL_TEST_COMMAND(command 
+  "${DYLD_LIBRARY_PATH}"
+  "${TEST_EXE}"
+  "--output=${CMAKE_CURRENT_BINARY_DIR}/cpp_test_results.txt" 
+  "--touch=${CMAKE_CURRENT_BINARY_DIR}/cpp_tests_ok.txt")
+
 ADD_CUSTOM_COMMAND(
   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cpp_tests_ok.txt
   COMMAND ${command}
   DEPENDS test
   WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
   COMMENT "C++ unit tests"
- )
+  )
 
 set(test_results ${CMAKE_CURRENT_BINARY_DIR}/cpp_tests_ok.txt)
 
-if (EXISTS /etc/debian_version_FAIL)
-  # The Python tests have all kinds of wacky non-portable assumptions
-  # built in.
-
-  add_custom_command(
-    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/py_tests_ok.txt
-    COMMAND ${PYTHON_EXECUTABLE}
-    ARGS
-      ${CMAKE_CURRENT_SOURCE_DIR}/test.py
-      --mode=static
-      --output=${CMAKE_CURRENT_BINARY_DIR}/py_test_results.txt
-      --touch=${CMAKE_CURRENT_BINARY_DIR}/py_tests_ok.txt
-      --mode=static
-    DEPENDS test.py
-    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-    COMMENT "Python unit tests"
-    )
-
-  list(APPEND test_results ${CMAKE_CURRENT_BINARY_DIR}/py_tests_ok.txt)
-endif (EXISTS /etc/debian_version_FAIL)
-    
-add_custom_target(tests_ok ALL DEPENDS ${test_results})
+# This should cause the test executable to be built, but not 
+# run if LL_TESTS is disabled. This will hopefully keep the
+# tests up to date with any code changes changes even if 
+# developers choose to disable LL_TESTS.
+if (LL_TESTS)  
+    add_custom_target(tests_ok ALL DEPENDS ${test_results})
+endif (LL_TESTS)
diff --git a/indra/test/io.cpp b/indra/test/io.cpp
index c06c1b153b205094f47997a0a5a9e1f1593b1d4a..ce747f667d2d53e0ed78b4d1640b5432877309cd 100644
--- a/indra/test/io.cpp
+++ b/indra/test/io.cpp
@@ -909,7 +909,7 @@ namespace tut
 		
 		pipe_and_pump_fitness()
 		{
-			LLFrameTimer::updateFrameTime();			
+			LLFrameTimer::updateFrameTime();
 			apr_pool_create(&mPool, NULL);
 			mPump = new LLPumpIO(mPool);
 			mSocket = LLSocket::create(
diff --git a/indra/test/llapp_tut.cpp b/indra/test/llapp_tut.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..aa5c0672e691eacfe7c6c096096d43a08ad966ff
--- /dev/null
+++ b/indra/test/llapp_tut.cpp
@@ -0,0 +1,162 @@
+/** 
+ * @file llapp_tut.cpp
+ * @author Phoenix
+ * @date 2006-09-12
+ *
+ * $LicenseInfo:firstyear=2006&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2006-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 <tut/tut.hpp>
+
+#include "linden_common.h"
+#include "llapp.h"
+#include "lltut.h"
+
+
+namespace tut
+{
+	struct application
+	{
+		class LLTestApp : public LLApp
+		{
+		public:
+			virtual bool init() { return true; }
+			virtual bool cleanup() { return true; }
+			virtual bool mainLoop() { return true; }
+		};
+		LLTestApp* mApp;
+		application()
+		{
+			mApp = new LLTestApp;
+		}
+		~application()
+		{
+			delete mApp;
+		}
+	};
+
+	typedef test_group<application> application_t;
+	typedef application_t::object application_object_t;
+	tut::application_t tut_application("application");
+
+	template<> template<>
+	void application_object_t::test<1>()
+	{
+		LLSD defaults;
+		defaults["template"] = "../../../scripts/messages/message_template.msg";
+		defaults["configdir"] = ".";
+		defaults["datadir"] = "data";
+		mApp->setOptionData(LLApp::PRIORITY_DEFAULT, defaults);
+
+		LLSD datadir_sd = mApp->getOption("datadir");
+		ensure_equals("data type", datadir_sd.type(), LLSD::TypeString);
+		ensure_equals(
+			"data value", datadir_sd.asString(), std::string("data"));
+	}
+
+	template<> template<>
+	void application_object_t::test<2>()
+	{
+		const int ARGC = 13;
+		const char* ARGV[ARGC] =
+		{
+			"", // argv[0] is usually the application name
+			"-crashcount",
+			"2",
+			"-space",
+			"spaceserver.grid.lindenlab.com",
+			"-db_host",
+			"localhost",
+			"--allowlslhttprequests",
+			"-asset-uri",
+			"http://test.lindenlab.com/assets",
+			"-data",
+			"127.0.0.1",
+			"--smtp"
+		};
+		bool ok = mApp->parseCommandOptions(ARGC, const_cast<char**>(ARGV));
+		ensure("command line parsed", ok);
+		ensure_equals(
+			"crashcount", mApp->getOption("crashcount").asInteger(), 2);
+		ensure_equals(
+			"space",
+			mApp->getOption("space").asString(),
+			std::string("spaceserver.grid.lindenlab.com"));
+		ensure_equals(
+			"db_host",
+			mApp->getOption("db_host").asString(),
+			std::string("localhost"));
+		ensure("allowlshlttprequests", mApp->getOption("smtp"));
+		ensure_equals(
+			"asset-uri",
+			mApp->getOption("asset-uri").asString(),
+			std::string("http://test.lindenlab.com/assets"));
+		ensure_equals(
+			"data",
+			mApp->getOption("data").asString(),
+			std::string("127.0.0.1"));
+		ensure("smtp", mApp->getOption("smtp"));
+	}
+
+	template<> template<>
+	void application_object_t::test<3>()
+	{
+		const int ARGC = 4;
+		const char* ARGV[ARGC] =
+		{
+			"", // argv[0] is usually the application name
+			"crashcount",
+			"2",
+			"--space"
+		};
+		bool ok = mApp->parseCommandOptions(ARGC, const_cast<char**>(ARGV));
+		ensure("command line parse failure", !ok);
+	}
+
+	template<> template<>
+	void application_object_t::test<4>()
+	{
+		const int ARGC = 4;
+		const char* ARGV[ARGC] =
+		{
+			"", // argv[0] is usually the application name
+			"--crashcount",
+			"2",
+			"space"
+		};
+		bool ok = mApp->parseCommandOptions(ARGC, const_cast<char**>(ARGV));
+		ensure("command line parse failure", !ok);
+	}
+
+
+	template<> template<>
+	void application_object_t::test<5>()
+	{
+		LLSD options;
+		options["boolean-test"] = true;
+		mApp->setOptionData(LLApp::PRIORITY_GENERAL_CONFIGURATION, options);
+		ensure("bool set", mApp->getOption("boolean-test").asBoolean());
+		options["boolean-test"] = false;
+		mApp->setOptionData(LLApp::PRIORITY_RUNTIME_OVERRIDE, options);
+		ensure("bool unset", !mApp->getOption("boolean-test").asBoolean());
+	}
+}
diff --git a/indra/test/llevents_tut.cpp b/indra/test/llevents_tut.cpp
index 57e22bbb564c7a6a442a55c3b4e8f5d799952916..4699bb1827199325dea86e9dfe2d1b1c296ad600 100644
--- a/indra/test/llevents_tut.cpp
+++ b/indra/test/llevents_tut.cpp
@@ -54,686 +54,730 @@
 
 using boost::assign::list_of;
 
+#ifdef LL_LINUX
+#define CATCH_MISSED_LINUX_EXCEPTION(exception, threw)										\
+catch (const std::runtime_error& ex)														\
+{																							\
+	/* This clause is needed on Linux, on the viewer side, because the	*/					\
+	/* exception isn't caught by the clause above. Warn the user...		*/					\
+	std::cerr << "Failed to catch " << typeid(ex).name() << std::endl;						\
+	/* But if the expected exception was thrown, allow the test to		*/					\
+	/* succeed anyway. Not sure how else to handle this odd case.		*/					\
+	/* This approach is also used in llsdmessage_test.cpp. 				*/					\
+	if (std::string(typeid(ex).name()) == typeid(exception).name())							\
+	{																						\
+		threw = ex.what();																	\
+		/*std::cout << ex.what() << std::endl;*/											\
+	}																						\
+	else																					\
+	{																						\
+		/* We don't even recognize this exception. Let it propagate		*/					\
+		/* out to TUT to fail the test.									*/					\
+		throw;																				\
+	}																						\
+}																							\
+catch (...)																					\
+{																							\
+	std::cerr << "Utterly failed to catch expected exception " << #exception << "!" <<		\
+	std::endl;																				\
+	/* This indicates a problem in the test that should be addressed.   */					\
+	throw;																					\
+}
+
+#else // LL_LINUX
+#define CATCH_MISSED_LINUX_EXCEPTION(exception, threw)										\
+	/* Not needed on other platforms */
+#endif // LL_LINUX
+
 template<typename T>
-T make(const T& value) { return value; }
+T make(const T& value)
+{
+	return value;
+}
 
 /*****************************************************************************
-*   tut test group
-*****************************************************************************/
+ *   tut test group
+ *****************************************************************************/
 namespace tut
 {
-    struct events_data
-    {
-        events_data():
-            pumps(LLEventPumps::instance()),
-            listener0("first"),
-            listener1("second")
-        {}
-        LLEventPumps& pumps;
-        Listener listener0;
-        Listener listener1;
-
-        void check_listener(const std::string& desc, const Listener& listener, LLSD::Integer got)
-        {
-            ensure_equals(STRINGIZE(listener << ' ' << desc),
-                          listener.getLastEvent().asInteger(), got);
-        }
-    };
-    typedef test_group<events_data> events_group;
-    typedef events_group::object events_object;
-    tut::events_group evgr("events");
-
-    template<> template<>
-    void events_object::test<1>()
-    {
-        set_test_name("basic operations");
-        // Now there's a static constructor in llevents.cpp that registers on
-        // the "mainloop" pump to call LLEventPumps::flush().
-        // Actually -- having to modify this to track the statically-
-        // constructed pumps in other TUT modules in this giant monolithic test
-        // executable isn't such a hot idea.
-//      ensure_equals("initial pump", pumps.mPumpMap.size(), 1);
-        size_t initial_pumps(pumps.mPumpMap.size());
-        LLEventPump& per_frame(pumps.obtain("per-frame"));
-        ensure_equals("first explicit pump", pumps.mPumpMap.size(), initial_pumps+1);
-        // Verify that per_frame was instantiated as an LLEventStream.
-        ensure("LLEventStream leaf class", dynamic_cast<LLEventStream*>(&per_frame));
-        ensure("enabled", per_frame.enabled());
-        // Trivial test, but posting an event to an EventPump with no
-        // listeners should not blow up. The test is relevant because defining
-        // a boost::signal with a non-void return signature, using the default
-        // combiner, blows up if there are no listeners. This is because the
-        // default combiner is defined to return the value returned by the
-        // last listener, which is meaningless if there were no listeners.
-        per_frame.post(0);
-        LLBoundListener connection = listener0.listenTo(per_frame);
-        ensure("connected", connection.connected());
-        ensure("not blocked", ! connection.blocked());
-        per_frame.post(1);
-        check_listener("received", listener0, 1);
-        { // block the connection
-            LLEventPump::Blocker block(connection);
-            ensure("blocked", connection.blocked());
-            per_frame.post(2);
-            check_listener("not updated", listener0, 1);
-        } // unblock
-        ensure("unblocked", ! connection.blocked());
-        per_frame.post(3);
-        check_listener("unblocked", listener0, 3);
-        LLBoundListener sameConnection = per_frame.getListener(listener0.getName());
-        ensure("still connected", sameConnection.connected());
-        ensure("still not blocked", ! sameConnection.blocked());
-        { // block it again
-            LLEventPump::Blocker block(sameConnection);
-            ensure("re-blocked", sameConnection.blocked());
-            per_frame.post(4);
-            check_listener("re-blocked", listener0, 3);
-        } // unblock
-        bool threw = false;
-        try
-        {
-            // NOTE: boost::bind() saves its arguments by VALUE! If you pass
-            // an object instance rather than a pointer, you'll end up binding
-            // to an internal copy of that instance! Use boost::ref() to
-            // capture a reference instead.
-            per_frame.listen(listener0.getName(), // note bug, dup name
-                             boost::bind(&Listener::call, boost::ref(listener1), _1));
-        }
-        catch (const LLEventPump::DupListenerName& e)
-        {
-            threw = true;
-            ensure_equals(e.what(),
-                          std::string("DupListenerName: "
-                                      "Attempt to register duplicate listener name '") +
-                          listener0.getName() +
-                          "' on " + typeid(per_frame).name() + " '" + per_frame.getName() + "'");
-        }
-        ensure("threw DupListenerName", threw);
-        // do it right this time
-        listener1.listenTo(per_frame);
-        per_frame.post(5);
-        check_listener("got", listener0, 5);
-        check_listener("got", listener1, 5);
-        per_frame.enable(false);
-        per_frame.post(6);
-        check_listener("didn't get", listener0, 5);
-        check_listener("didn't get", listener1, 5);
-        per_frame.enable();
-        per_frame.post(7);
-        check_listener("got", listener0, 7);
-        check_listener("got", listener1, 7);
-        per_frame.stopListening(listener0.getName());
-        ensure("disconnected 0", ! connection.connected());
-        ensure("disconnected 1", ! sameConnection.connected());
-        per_frame.post(8);
-        check_listener("disconnected", listener0, 7);
-        check_listener("still connected", listener1, 8);
-        per_frame.stopListening(listener1.getName());
-        per_frame.post(9);
-        check_listener("disconnected", listener1, 8);
-    }
-
-    template<> template<>
-    void events_object::test<2>()
-    {
-        set_test_name("callstop() returning true");
-        LLEventPump& per_frame(pumps.obtain("per-frame"));
-        listener0.reset(0);
-        listener1.reset(0);
-        LLBoundListener bound0 = listener0.listenTo(per_frame, &Listener::callstop);
-        LLBoundListener bound1 = listener1.listenTo(per_frame, &Listener::call,
-                                                    // after listener0
-                                                    make<LLEventPump::NameList>(list_of(listener0.getName())));
-        ensure("enabled", per_frame.enabled());
-        ensure("connected 0", bound0.connected());
-        ensure("unblocked 0", ! bound0.blocked());
-        ensure("connected 1", bound1.connected());
-        ensure("unblocked 1", ! bound1.blocked());
-        per_frame.post(1);
-        check_listener("got", listener0, 1);
-        // Because listener0.callstop() returns true, control never reaches listener1.call().
-        check_listener("got", listener1, 0);
-    }
-
-    bool chainEvents(Listener& someListener, const LLSD& event)
-    {
-        // Make this call so we can watch for side effects for test purposes.
-        someListener.call(event);
-        // This function represents a recursive event chain -- or some other
-        // scenario in which an event handler raises additional events.
-        int value = event.asInteger();
-        if (value)
-        {
-            LLEventPumps::instance().obtain("login").post(value - 1);
-        }
-        return false;
-    }
-
-    template<> template<>
-    void events_object::test<3>()
-    {
-        set_test_name("LLEventQueue delayed action");
-        // This access is NOT legal usage: we can do it only because we're
-        // hacking private for test purposes. Normally we'd either compile in
-        // a particular name, or (later) edit a config file.
-        pumps.mQueueNames.insert("login");
-        LLEventPump& login(pumps.obtain("login"));
-        // The "mainloop" pump is special: posting on that implicitly calls
-        // LLEventPumps::flush(), which in turn should flush our "login"
-        // LLEventQueue.
-        LLEventPump& mainloop(pumps.obtain("mainloop"));
-        ensure("LLEventQueue leaf class", dynamic_cast<LLEventQueue*>(&login));
-        listener0.listenTo(login);
-        listener0.reset(0);
-        login.post(1);
-        check_listener("waiting for queued event", listener0, 0);
-        mainloop.post(LLSD());
-        check_listener("got queued event", listener0, 1);
-        login.stopListening(listener0.getName());
-        // Verify that when an event handler posts a new event on the same
-        // LLEventQueue, it doesn't get processed in the same flush() call --
-        // it waits until the next flush() call.
-        listener0.reset(17);
-        login.listen("chainEvents", boost::bind(chainEvents, boost::ref(listener0), _1));
-        login.post(1);
-        check_listener("chainEvents(1) not yet called", listener0, 17);
-        mainloop.post(LLSD());
-        check_listener("chainEvents(1) called", listener0, 1);
-        mainloop.post(LLSD());
-        check_listener("chainEvents(0) called", listener0, 0);
-        mainloop.post(LLSD());
-        check_listener("chainEvents(-1) not called", listener0, 0);
-        login.stopListening("chainEvents");
-    }
-
-    template<> template<>
-    void events_object::test<4>()
-    {
-        set_test_name("explicitly-instantiated LLEventStream");
-        // Explicitly instantiate an LLEventStream, and verify that it
-        // self-registers with LLEventPumps
-        size_t registered = pumps.mPumpMap.size();
-        size_t owned = pumps.mOurPumps.size();
-        LLEventPump* localInstance;
-        {
-            LLEventStream myEventStream("stream");
-            localInstance = &myEventStream;
-            LLEventPump& stream(pumps.obtain("stream"));
-            ensure("found named LLEventStream instance", &stream == localInstance);
-            ensure_equals("registered new instance", pumps.mPumpMap.size(), registered + 1);
-            ensure_equals("explicit instance not owned", pumps.mOurPumps.size(), owned);
-        } // destroy myEventStream -- should unregister
-        ensure_equals("destroyed instance unregistered", pumps.mPumpMap.size(), registered);
-        ensure_equals("destroyed instance not owned", pumps.mOurPumps.size(), owned);
-        LLEventPump& stream(pumps.obtain("stream"));
-        ensure("new LLEventStream instance", &stream != localInstance);
-        ensure_equals("obtain()ed instance registered", pumps.mPumpMap.size(), registered + 1);
-        ensure_equals("obtain()ed instance owned", pumps.mOurPumps.size(), owned + 1);
-    }
-
-    template<> template<>
-    void events_object::test<5>()
-    {
-        set_test_name("stopListening()");
-        LLEventPump& login(pumps.obtain("login"));
-        listener0.listenTo(login);
-        login.stopListening(listener0.getName());
-        // should not throw because stopListening() should have removed name
-        listener0.listenTo(login, &Listener::callstop);
-        LLBoundListener wrong = login.getListener("bogus");
-        ensure("bogus connection disconnected", ! wrong.connected());
-        ensure("bogus connection blocked", wrong.blocked());
-    }
-
-    template<> template<>
-    void events_object::test<6>()
-    {
-        set_test_name("chaining LLEventPump instances");
-        LLEventPump& upstream(pumps.obtain("upstream"));
-        // One potentially-useful construct is to chain LLEventPumps together.
-        // Among other things, this allows you to turn subsets of listeners on
-        // and off in groups.
-        LLEventPump& filter0(pumps.obtain("filter0"));
-        LLEventPump& filter1(pumps.obtain("filter1"));
-        upstream.listen(filter0.getName(),
-                        boost::bind(&LLEventPump::post, boost::ref(filter0), _1));
-        upstream.listen(filter1.getName(),
-                        boost::bind(&LLEventPump::post, boost::ref(filter1), _1));
-        listener0.listenTo(filter0);
-        listener1.listenTo(filter1);
-        listener0.reset(0);
-        listener1.reset(0);
-        upstream.post(1);
-        check_listener("got unfiltered", listener0, 1);
-        check_listener("got unfiltered", listener1, 1);
-        filter0.enable(false);
-        upstream.post(2);
-        check_listener("didn't get filtered", listener0, 1);
-        check_listener("got filtered", listener1, 2);
-    }
-
-    template<> template<>
-    void events_object::test<7>()
-    {
-        set_test_name("listener dependency order");
-        typedef LLEventPump::NameList NameList;
-        typedef Collect::StringList StringList;
-        LLEventPump& button(pumps.obtain("button"));
-        Collect collector;
-        button.listen("Mary",
-                      boost::bind(&Collect::add, boost::ref(collector), "Mary", _1),
-                      // state that "Mary" must come after "checked"
-                      make<NameList>(list_of("checked")));
-        button.listen("checked",
-                      boost::bind(&Collect::add, boost::ref(collector), "checked", _1),
-                      // "checked" must come after "spot"
-                      make<NameList>(list_of("spot")));
-        button.listen("spot",
-                      boost::bind(&Collect::add, boost::ref(collector), "spot", _1));
-        button.post(1);
-        ensure_equals(collector.result, make<StringList>(list_of("spot")("checked")("Mary")));
-        collector.clear();
-        button.stopListening("Mary");
-        button.listen("Mary",
-                      boost::bind(&Collect::add, boost::ref(collector), "Mary", _1),
-                      LLEventPump::empty, // no after dependencies
-                      // now "Mary" must come before "spot"
-                      make<NameList>(list_of("spot")));
-        button.post(2);
-        ensure_equals(collector.result, make<StringList>(list_of("Mary")("spot")("checked")));
-        collector.clear();
-        button.stopListening("spot");
-        std::string threw;
-        try
-        {
-            button.listen("spot",
-                          boost::bind(&Collect::add, boost::ref(collector), "spot", _1),
-                          // after "Mary" and "checked" -- whoops!
-                          make<NameList>(list_of("Mary")("checked")));
-        }
-        catch (const LLEventPump::Cycle& e)
-        {
-            threw = e.what();
-//          std::cout << "Caught: " << e.what() << '\n';
-        }
-        // Obviously the specific wording of the exception text can
-        // change; go ahead and change the test to match.
-        // Establish that it contains:
-        // - the name and runtime type of the LLEventPump
-        ensure_contains("LLEventPump type", threw, typeid(button).name());
-        ensure_contains("LLEventPump name", threw, "'button'");
-        // - the name of the new listener that caused the problem
-        ensure_contains("new listener name", threw, "'spot'");
-        // - a synopsis of the problematic dependencies.
-        ensure_contains("cyclic dependencies", threw,
-                        "\"Mary\" -> before (\"spot\")");
-        ensure_contains("cyclic dependencies", threw,
-                        "after (\"spot\") -> \"checked\"");
-        ensure_contains("cyclic dependencies", threw,
-                        "after (\"Mary\", \"checked\") -> \"spot\"");
-        button.listen("yellow",
-                      boost::bind(&Collect::add, boost::ref(collector), "yellow", _1),
-                      make<NameList>(list_of("checked")));
-        button.listen("shoelaces",
-                      boost::bind(&Collect::add, boost::ref(collector), "shoelaces", _1),
-                      make<NameList>(list_of("checked")));
-        button.post(3);
-        ensure_equals(collector.result, make<StringList>(list_of("Mary")("checked")("yellow")("shoelaces")));
-        collector.clear();
-        threw.clear();
-        try
-        {
-            button.listen("of",
-                          boost::bind(&Collect::add, boost::ref(collector), "of", _1),
-                          make<NameList>(list_of("shoelaces")),
-                          make<NameList>(list_of("yellow")));
-        }
-        catch (const LLEventPump::OrderChange& e)
-        {
-            threw = e.what();
-//          std::cout << "Caught: " << e.what() << '\n';
-        }
-        // Same remarks about the specific wording of the exception. Just
-        // ensure that it contains enough information to clarify the
-        // problem and what must be done to resolve it.
-        ensure_contains("LLEventPump type", threw, typeid(button).name());
-        ensure_contains("LLEventPump name", threw, "'button'");
-        ensure_contains("new listener name", threw, "'of'");
-        ensure_contains("prev listener name", threw, "'yellow'");
-        ensure_contains("old order", threw, "was: Mary, checked, yellow, shoelaces");
-        ensure_contains("new order", threw, "now: Mary, checked, shoelaces, of, yellow");
-        button.post(4);
-        ensure_equals(collector.result, make<StringList>(list_of("Mary")("checked")("yellow")("shoelaces")));
-    }
-
-    template<> template<>
-    void events_object::test<8>()
-    {
-        set_test_name("tweaked and untweaked LLEventPump instance names");
-        {   // nested scope
-            // Hand-instantiate an LLEventStream...
-            LLEventStream bob("bob");
-            bool threw = false;
-            try
-            {
-                // then another with a duplicate name.
-                LLEventStream bob2("bob");
-            }
-            catch (const LLEventPump::DupPumpName& /*e*/)
-            {
-                threw = true;
-//              std::cout << "Caught: " << e.what() << '\n';
-            }
-            ensure("Caught DupPumpName", threw);
-        }   // delete first 'bob'
-        LLEventStream bob("bob");   // should work, previous one unregistered
-        LLEventStream bob1("bob", true); // allowed to tweak name
-        ensure_equals("tweaked LLEventStream name", bob1.getName(), "bob1");
-        std::vector< boost::shared_ptr<LLEventStream> > streams;
-        for (int i = 2; i <= 10; ++i)
-        {
-            streams.push_back(boost::shared_ptr<LLEventStream>(new LLEventStream("bob", true)));
-        }
-        ensure_equals("last tweaked LLEventStream name", streams.back()->getName(), "bob10");
-    }
-
-    // Define a function that accepts an LLListenerOrPumpName
-    void eventSource(const LLListenerOrPumpName& listener)
-    {
-        // Pretend that some time has elapsed. Call listener immediately.
-        listener(17);
-    }
-
-    template<> template<>
-    void events_object::test<9>()
-    {
-        set_test_name("LLListenerOrPumpName");
-        // Passing a boost::bind() expression to LLListenerOrPumpName
-        listener0.reset(0);
-        eventSource(boost::bind(&Listener::call, boost::ref(listener0), _1));
-        check_listener("got by listener", listener0, 17);
-        // Passing a string LLEventPump name to LLListenerOrPumpName
-        listener0.reset(0);
-        LLEventStream random("random");
-        listener0.listenTo(random);
-        eventSource("random");
-        check_listener("got by pump name", listener0, 17);
-        bool threw = false;
-        try
-        {
-            LLListenerOrPumpName empty;
-            empty(17);
-        }
-        catch (const LLListenerOrPumpName::Empty&)
-        {
-            threw = true;
-        }
-        ensure("threw Empty", threw);
-    }
-
-    class TempListener: public Listener
-    {
-    public:
-        TempListener(const std::string& name, bool& liveFlag):
-            Listener(name),
-            mLiveFlag(liveFlag)
-        {
-            mLiveFlag = true;
-        }
-
-        virtual ~TempListener()
-        {
-            mLiveFlag = false;
-        }
-
-    private:
-        bool& mLiveFlag;
-    };
-
-    template<> template<>
-    void events_object::test<10>()
-    {
-        set_test_name("listen(boost::bind(...TempListener...))");
-        // listen() can't do anything about a plain TempListener instance:
-        // it's not managed with shared_ptr, nor is it an LLEventTrackable subclass
-        bool live = false;
-        LLEventPump& heaptest(pumps.obtain("heaptest"));
-        LLBoundListener connection;
-        {
-            TempListener tempListener("temp", live);
-            ensure("TempListener constructed", live);
-            connection = heaptest.listen(tempListener.getName(),
-                                         boost::bind(&Listener::call,
-                                                     boost::ref(tempListener),
-                                                     _1));
-            heaptest.post(1);
-            check_listener("received", tempListener, 1);
-        } // presumably this will make newListener go away?
-        // verify that
-        ensure("TempListener destroyed", ! live);
-        // This is the case against which we can't defend. Don't even try to
-        // post to heaptest -- that would engage Undefined Behavior.
-        // Cautiously inspect connection...
-        ensure("misleadingly connected", connection.connected());
-        // then disconnect by hand.
-        heaptest.stopListening("temp");
-    }
-
-    template<> template<>
-    void events_object::test<11>()
-    {
-        set_test_name("listen(boost::bind(...weak_ptr...))");
-        // listen() detecting weak_ptr<TempListener> in boost::bind() object
-        bool live = false;
-        LLEventPump& heaptest(pumps.obtain("heaptest"));
-        LLBoundListener connection;
-        ensure("default state", ! connection.connected());
-        {
-            boost::shared_ptr<TempListener> newListener(new TempListener("heap", live));
-            newListener->reset();
-            ensure("TempListener constructed", live);
-            connection = heaptest.listen(newListener->getName(),
-                                         boost::bind(&Listener::call, weaken(newListener), _1));
-            ensure("new connection", connection.connected());
-            heaptest.post(1);
-            check_listener("received", *newListener, 1);
-        } // presumably this will make newListener go away?
-        // verify that
-        ensure("TempListener destroyed", ! live);
-        ensure("implicit disconnect", ! connection.connected());
-        // now just make sure we don't blow up trying to access a freed object!
-        heaptest.post(2);
-    }
-
-    template<> template<>
-    void events_object::test<12>()
-    {
-        set_test_name("listen(boost::bind(...shared_ptr...))");
-/*==========================================================================*|
-        // DISABLED because I've made this case produce a compile error.
-        // Following the error leads the disappointed dev to a comment
-        // instructing her to use the weaken() function to bind a weak_ptr<T>
-        // instead of binding a shared_ptr<T>, and explaining why. I know of
-        // no way to use TUT to code a repeatable test in which the expected
-        // outcome is a compile error. The interested reader is invited to
-        // uncomment this block and build to see for herself.
-
-        // listen() detecting shared_ptr<TempListener> in boost::bind() object
-        bool live = false;
-        LLEventPump& heaptest(pumps.obtain("heaptest"));
-        LLBoundListener connection;
-        std::string listenerName("heap");
-        ensure("default state", ! connection.connected());
-        {
-            boost::shared_ptr<TempListener> newListener(new TempListener(listenerName, live));
-            ensure_equals("use_count", newListener.use_count(), 1);
-            newListener->reset();
-            ensure("TempListener constructed", live);
-            connection = heaptest.listen(newListener->getName(),
-                                         boost::bind(&Listener::call, newListener, _1));
-            ensure("new connection", connection.connected());
-            ensure_equals("use_count", newListener.use_count(), 2);
-            heaptest.post(1);
-            check_listener("received", *newListener, 1);
-        } // this should make newListener go away...
-        // Unfortunately, the fact that we've bound a shared_ptr by value into
-        // our LLEventPump means that copy will keep the referenced object alive.
-        ensure("TempListener still alive", live);
-        ensure("still connected", connection.connected());
-        // disconnecting explicitly should delete the TempListener...
-        heaptest.stopListening(listenerName);
+struct events_data
+{
+	events_data() :
+		pumps(LLEventPumps::instance()),
+		listener0("first"),
+		listener1("second")
+	{
+	}
+	LLEventPumps& pumps;
+	Listener listener0;
+	Listener listener1;
+
+	void check_listener(const std::string& desc, const Listener& listener, LLSD::Integer got)
+	{
+		ensure_equals(STRINGIZE(listener << ' ' << desc),
+					  listener.getLastEvent().asInteger(), got);
+	}
+};
+typedef test_group<events_data> events_group;
+typedef events_group::object events_object;
+tut::events_group evgr("events");
+
+template<> template<>
+void events_object::test<1>()
+{
+	set_test_name("basic operations");
+	// Now there's a static constructor in llevents.cpp that registers on
+	// the "mainloop" pump to call LLEventPumps::flush().
+	// Actually -- having to modify this to track the statically-
+	// constructed pumps in other TUT modules in this giant monolithic test
+	// executable isn't such a hot idea.
+	// ensure_equals("initial pump", pumps.mPumpMap.size(), 1);
+	size_t initial_pumps(pumps.mPumpMap.size());
+	LLEventPump& per_frame(pumps.obtain("per-frame"));
+	ensure_equals("first explicit pump", pumps.mPumpMap.size(), initial_pumps + 1);
+	// Verify that per_frame was instantiated as an LLEventStream.
+	ensure("LLEventStream leaf class", dynamic_cast<LLEventStream*> (&per_frame));
+	ensure("enabled", per_frame.enabled());
+	// Trivial test, but posting an event to an EventPump with no
+	// listeners should not blow up. The test is relevant because defining
+	// a boost::signal with a non-void return signature, using the default
+	// combiner, blows up if there are no listeners. This is because the
+	// default combiner is defined to return the value returned by the
+	// last listener, which is meaningless if there were no listeners.
+	per_frame.post(0);
+	LLBoundListener connection = listener0.listenTo(per_frame);
+	ensure("connected", connection.connected());
+	ensure("not blocked", !connection.blocked());
+	per_frame.post(1);
+	check_listener("received", listener0, 1);
+	{ // block the connection
+		LLEventPump::Blocker block(connection);
+		ensure("blocked", connection.blocked());
+		per_frame.post(2);
+		check_listener("not updated", listener0, 1);
+	} // unblock
+	ensure("unblocked", !connection.blocked());
+	per_frame.post(3);
+	check_listener("unblocked", listener0, 3);
+	LLBoundListener sameConnection = per_frame.getListener(listener0.getName());
+	ensure("still connected", sameConnection.connected());
+	ensure("still not blocked", !sameConnection.blocked());
+	{ // block it again
+		LLEventPump::Blocker block(sameConnection);
+		ensure("re-blocked", sameConnection.blocked());
+		per_frame.post(4);
+		check_listener("re-blocked", listener0, 3);
+	} // unblock
+	std::string threw;
+	try
+	{
+		// NOTE: boost::bind() saves its arguments by VALUE! If you pass
+		// an object instance rather than a pointer, you'll end up binding
+		// to an internal copy of that instance! Use boost::ref() to
+		// capture a reference instead.
+		per_frame.listen(listener0.getName(), // note bug, dup name
+						 boost::bind(&Listener::call, boost::ref(listener1), _1));
+	}
+	catch (const LLEventPump::DupListenerName& e)
+	{
+		threw = e.what();
+	}
+	CATCH_MISSED_LINUX_EXCEPTION(LLEventPump::DupListenerName, threw)
+	ensure_equals(threw,
+				  std::string("DupListenerName: "
+							  "Attempt to register duplicate listener name '") +
+							  listener0.getName() + "' on " + typeid(per_frame).name() +
+							  " '" + per_frame.getName() + "'");
+	// do it right this time
+	listener1.listenTo(per_frame);
+	per_frame.post(5);
+	check_listener("got", listener0, 5);
+	check_listener("got", listener1, 5);
+	per_frame.enable(false);
+	per_frame.post(6);
+	check_listener("didn't get", listener0, 5);
+	check_listener("didn't get", listener1, 5);
+	per_frame.enable();
+	per_frame.post(7);
+	check_listener("got", listener0, 7);
+	check_listener("got", listener1, 7);
+	per_frame.stopListening(listener0.getName());
+	ensure("disconnected 0", ! connection.connected());
+	ensure("disconnected 1", ! sameConnection.connected());
+	per_frame.post(8);
+	check_listener("disconnected", listener0, 7);
+	check_listener("still connected", listener1, 8);
+	per_frame.stopListening(listener1.getName());
+	per_frame.post(9);
+	check_listener("disconnected", listener1, 8);
+}
+
+template<> template<>
+void events_object::test<2>()
+{
+	set_test_name("callstop() returning true");
+	LLEventPump& per_frame(pumps.obtain("per-frame"));
+	listener0.reset(0);
+	listener1.reset(0);
+	LLBoundListener bound0 = listener0.listenTo(per_frame, &Listener::callstop);
+	LLBoundListener bound1 = listener1.listenTo(per_frame, &Listener::call,
+												// after listener0
+												make<LLEventPump::NameList>(list_of(listener0.getName())));
+	ensure("enabled", per_frame.enabled());
+	ensure("connected 0", bound0.connected());
+	ensure("unblocked 0", !bound0.blocked());
+	ensure("connected 1", bound1.connected());
+	ensure("unblocked 1", !bound1.blocked());
+	per_frame.post(1);
+	check_listener("got", listener0, 1);
+	// Because listener0.callstop() returns true, control never reaches listener1.call().
+	check_listener("got", listener1, 0);
+}
+
+bool chainEvents(Listener& someListener, const LLSD& event)
+{
+	// Make this call so we can watch for side effects for test purposes.
+	someListener.call(event);
+	// This function represents a recursive event chain -- or some other
+	// scenario in which an event handler raises additional events.
+	int value = event.asInteger();
+	if (value)
+	{
+		LLEventPumps::instance().obtain("login").post(value - 1);
+	}
+	return false;
+}
+
+template<> template<>
+void events_object::test<3>()
+{
+	set_test_name("LLEventQueue delayed action");
+	// This access is NOT legal usage: we can do it only because we're
+	// hacking private for test purposes. Normally we'd either compile in
+	// a particular name, or (later) edit a config file.
+	pumps.mQueueNames.insert("login");
+	LLEventPump& login(pumps.obtain("login"));
+	// The "mainloop" pump is special: posting on that implicitly calls
+	// LLEventPumps::flush(), which in turn should flush our "login"
+	// LLEventQueue.
+	LLEventPump& mainloop(pumps.obtain("mainloop"));
+	ensure("LLEventQueue leaf class", dynamic_cast<LLEventQueue*> (&login));
+	listener0.listenTo(login);
+	listener0.reset(0);
+	login.post(1);
+	check_listener("waiting for queued event", listener0, 0);
+	mainloop.post(LLSD());
+	check_listener("got queued event", listener0, 1);
+	login.stopListening(listener0.getName());
+	// Verify that when an event handler posts a new event on the same
+	// LLEventQueue, it doesn't get processed in the same flush() call --
+	// it waits until the next flush() call.
+	listener0.reset(17);
+	login.listen("chainEvents", boost::bind(chainEvents, boost::ref(listener0), _1));
+	login.post(1);
+	check_listener("chainEvents(1) not yet called", listener0, 17);
+	mainloop.post(LLSD());
+	check_listener("chainEvents(1) called", listener0, 1);
+	mainloop.post(LLSD());
+	check_listener("chainEvents(0) called", listener0, 0);
+	mainloop.post(LLSD());
+	check_listener("chainEvents(-1) not called", listener0, 0);
+	login.stopListening("chainEvents");
+}
+
+template<> template<>
+void events_object::test<4>()
+{
+	set_test_name("explicitly-instantiated LLEventStream");
+	// Explicitly instantiate an LLEventStream, and verify that it
+	// self-registers with LLEventPumps
+	size_t registered = pumps.mPumpMap.size();
+	size_t owned = pumps.mOurPumps.size();
+	LLEventPump* localInstance;
+	{
+		LLEventStream myEventStream("stream");
+		localInstance = &myEventStream;
+		LLEventPump& stream(pumps.obtain("stream"));
+		ensure("found named LLEventStream instance", &stream == localInstance);
+		ensure_equals("registered new instance", pumps.mPumpMap.size(), registered + 1);
+		ensure_equals("explicit instance not owned", pumps.mOurPumps.size(), owned);
+	} // destroy myEventStream -- should unregister
+	ensure_equals("destroyed instance unregistered", pumps.mPumpMap.size(), registered);
+	ensure_equals("destroyed instance not owned", pumps.mOurPumps.size(), owned);
+	LLEventPump& stream(pumps.obtain("stream"));
+	ensure("new LLEventStream instance", &stream != localInstance);
+	ensure_equals("obtain()ed instance registered", pumps.mPumpMap.size(), registered + 1);
+	ensure_equals("obtain()ed instance owned", pumps.mOurPumps.size(), owned + 1);
+}
+
+template<> template<>
+void events_object::test<5>()
+{
+	set_test_name("stopListening()");
+	LLEventPump& login(pumps.obtain("login"));
+	listener0.listenTo(login);
+	login.stopListening(listener0.getName());
+	// should not throw because stopListening() should have removed name
+	listener0.listenTo(login, &Listener::callstop);
+	LLBoundListener wrong = login.getListener("bogus");
+	ensure("bogus connection disconnected", !wrong.connected());
+	ensure("bogus connection blocked", wrong.blocked());
+}
+
+template<> template<>
+void events_object::test<6>()
+{
+	set_test_name("chaining LLEventPump instances");
+	LLEventPump& upstream(pumps.obtain("upstream"));
+	// One potentially-useful construct is to chain LLEventPumps together.
+	// Among other things, this allows you to turn subsets of listeners on
+	// and off in groups.
+	LLEventPump& filter0(pumps.obtain("filter0"));
+	LLEventPump& filter1(pumps.obtain("filter1"));
+	upstream.listen(filter0.getName(), boost::bind(&LLEventPump::post, boost::ref(filter0), _1));
+	upstream.listen(filter1.getName(), boost::bind(&LLEventPump::post, boost::ref(filter1), _1));
+	listener0.listenTo(filter0);
+	listener1.listenTo(filter1);
+	listener0.reset(0);
+	listener1.reset(0);
+	upstream.post(1);
+	check_listener("got unfiltered", listener0, 1);
+	check_listener("got unfiltered", listener1, 1);
+	filter0.enable(false);
+	upstream.post(2);
+	check_listener("didn't get filtered", listener0, 1);
+	check_listener("got filtered", listener1, 2);
+}
+
+template<> template<>
+void events_object::test<7>()
+{
+	set_test_name("listener dependency order");
+	typedef LLEventPump::NameList NameList;
+	typedef Collect::StringList StringList;
+	LLEventPump& button(pumps.obtain("button"));
+	Collect collector;
+	button.listen("Mary",
+				  boost::bind(&Collect::add, boost::ref(collector), "Mary", _1),
+				  // state that "Mary" must come after "checked"
+				  make<NameList> (list_of("checked")));
+	button.listen("checked",
+				  boost::bind(&Collect::add, boost::ref(collector), "checked", _1),
+				  // "checked" must come after "spot"
+				  make<NameList> (list_of("spot")));
+	button.listen("spot",
+				  boost::bind(&Collect::add, boost::ref(collector), "spot", _1));
+	button.post(1);
+	ensure_equals(collector.result, make<StringList>(list_of("spot")("checked")("Mary")));
+	collector.clear();
+	button.stopListening("Mary");
+	button.listen("Mary",
+			boost::bind(&Collect::add, boost::ref(collector), "Mary", _1),
+			LLEventPump::empty, // no after dependencies
+			// now "Mary" must come before "spot"
+			make<NameList>(list_of("spot")));
+	button.post(2);
+	ensure_equals(collector.result, make<StringList>(list_of("Mary")("spot")("checked")));
+	collector.clear();
+	button.stopListening("spot");
+	std::string threw;
+	try
+	{
+		button.listen("spot",
+					  boost::bind(&Collect::add, boost::ref(collector), "spot", _1),
+					  // after "Mary" and "checked" -- whoops!
+			 		  make<NameList>(list_of("Mary")("checked")));
+	}
+	catch (const LLEventPump::Cycle& e)
+	{
+		threw = e.what();
+		// std::cout << "Caught: " << e.what() << '\n';
+	}
+	CATCH_MISSED_LINUX_EXCEPTION(LLEventPump::Cycle, threw)
+	// Obviously the specific wording of the exception text can
+	// change; go ahead and change the test to match.
+	// Establish that it contains:
+	// - the name and runtime type of the LLEventPump
+	ensure_contains("LLEventPump type", threw, typeid(button).name());
+	ensure_contains("LLEventPump name", threw, "'button'");
+	// - the name of the new listener that caused the problem
+	ensure_contains("new listener name", threw, "'spot'");
+	// - a synopsis of the problematic dependencies.
+	ensure_contains("cyclic dependencies", threw,
+					"\"Mary\" -> before (\"spot\")");
+	ensure_contains("cyclic dependencies", threw,
+					"after (\"spot\") -> \"checked\"");
+	ensure_contains("cyclic dependencies", threw,
+					"after (\"Mary\", \"checked\") -> \"spot\"");
+	button.listen("yellow",
+				  boost::bind(&Collect::add, boost::ref(collector), "yellow", _1),
+				  make<NameList>(list_of("checked")));
+	button.listen("shoelaces",
+				  boost::bind(&Collect::add, boost::ref(collector), "shoelaces", _1),
+				  make<NameList>(list_of("checked")));
+	button.post(3);
+	ensure_equals(collector.result, make<StringList>(list_of("Mary")("checked")("yellow")("shoelaces")));
+	collector.clear();
+	threw.clear();
+	try
+	{
+		button.listen("of",
+					  boost::bind(&Collect::add, boost::ref(collector), "of", _1),
+					  make<NameList>(list_of("shoelaces")),
+					  make<NameList>(list_of("yellow")));
+	}
+	catch (const LLEventPump::OrderChange& e)
+	{
+		threw = e.what();
+		// std::cout << "Caught: " << e.what() << '\n';
+	}
+	CATCH_MISSED_LINUX_EXCEPTION(LLEventPump::OrderChange, threw)
+	// Same remarks about the specific wording of the exception. Just
+	// ensure that it contains enough information to clarify the
+	// problem and what must be done to resolve it.
+	ensure_contains("LLEventPump type", threw, typeid(button).name());
+	ensure_contains("LLEventPump name", threw, "'button'");
+	ensure_contains("new listener name", threw, "'of'");
+	ensure_contains("prev listener name", threw, "'yellow'");
+	// std::cout << "Thrown Exception: " << threw << std::endl;
+	ensure_contains("old order", threw, "was: Mary, checked, yellow, shoelaces");
+	ensure_contains("new order", threw, "now: Mary, checked, shoelaces, of, yellow");
+	button.post(4);
+	ensure_equals(collector.result, make<StringList>(list_of("Mary")("checked")("yellow")("shoelaces")));
+}
+
+template<> template<>
+void events_object::test<8>()
+{
+	set_test_name("tweaked and untweaked LLEventPump instance names");
+	{ 	// nested scope
+		// Hand-instantiate an LLEventStream...
+		LLEventStream bob("bob");
+		std::string threw;
+		try
+		{
+			// then another with a duplicate name.
+			LLEventStream bob2("bob");
+		}
+		catch (const LLEventPump::DupPumpName& e)
+		{
+			threw = e.what();
+			// std::cout << "Caught: " << e.what() << '\n';
+		}
+		CATCH_MISSED_LINUX_EXCEPTION(LLEventPump::DupPumpName, threw)
+		ensure("Caught DupPumpName", !threw.empty());
+	} 	// delete first 'bob'
+	LLEventStream bob("bob"); 		// should work, previous one unregistered
+	LLEventStream bob1("bob", true);// allowed to tweak name
+	ensure_equals("tweaked LLEventStream name", bob1.getName(), "bob1");
+	std::vector<boost::shared_ptr<LLEventStream> > streams;
+	for (int i = 2; i <= 10; ++i)
+	{
+		streams.push_back(boost::shared_ptr<LLEventStream>(new LLEventStream("bob", true)));
+	}
+	ensure_equals("last tweaked LLEventStream name", streams.back()->getName(), "bob10");
+}
+
+// Define a function that accepts an LLListenerOrPumpName
+void eventSource(const LLListenerOrPumpName& listener)
+{
+	// Pretend that some time has elapsed. Call listener immediately.
+	listener(17);
+}
+
+template<> template<>
+void events_object::test<9>()
+{
+	set_test_name("LLListenerOrPumpName");
+	// Passing a boost::bind() expression to LLListenerOrPumpName
+	listener0.reset(0);
+	eventSource(boost::bind(&Listener::call, boost::ref(listener0), _1));
+	check_listener("got by listener", listener0, 17);
+	// Passing a string LLEventPump name to LLListenerOrPumpName
+	listener0.reset(0);
+	LLEventStream random("random");
+	listener0.listenTo(random);
+	eventSource("random");
+	check_listener("got by pump name", listener0, 17);
+	std::string threw;
+	try
+	{
+		LLListenerOrPumpName empty;
+		empty(17);
+	}
+	catch (const LLListenerOrPumpName::Empty& e)
+	{
+		threw = e.what();
+	}
+	CATCH_MISSED_LINUX_EXCEPTION(LLListenerOrPumpName::Empty, threw)
+
+	ensure("threw Empty", !threw.empty());
+}
+
+class TempListener: public Listener
+{
+public:
+	TempListener(const std::string& name, bool& liveFlag) :
+		Listener(name), mLiveFlag(liveFlag)
+	{
+		mLiveFlag = true;
+	}
+
+	virtual ~TempListener()
+	{
+		mLiveFlag = false;
+	}
+
+private:
+	bool& mLiveFlag;
+};
+
+template<> template<>
+void events_object::test<10>()
+{
+	set_test_name("listen(boost::bind(...TempListener...))");
+	// listen() can't do anything about a plain TempListener instance:
+	// it's not managed with shared_ptr, nor is it an LLEventTrackable subclass
+	bool live = false;
+	LLEventPump& heaptest(pumps.obtain("heaptest"));
+	LLBoundListener connection;
+	{
+		TempListener tempListener("temp", live);
+		ensure("TempListener constructed", live);
+		connection = heaptest.listen(tempListener.getName(),
+									 boost::bind(&Listener::call,
+												 boost::ref(tempListener),
+												 _1));
+		heaptest.post(1);
+		check_listener("received", tempListener, 1);
+	} // presumably this will make newListener go away?
+	// verify that
+	ensure("TempListener destroyed", !live);
+	// This is the case against which we can't defend. Don't even try to
+	// post to heaptest -- that would engage Undefined Behavior.
+	// Cautiously inspect connection...
+	ensure("misleadingly connected", connection.connected());
+	// then disconnect by hand.
+	heaptest.stopListening("temp");
+}
+
+template<> template<>
+void events_object::test<11>()
+{
+	set_test_name("listen(boost::bind(...weak_ptr...))");
+	// listen() detecting weak_ptr<TempListener> in boost::bind() object
+	bool live = false;
+	LLEventPump& heaptest(pumps.obtain("heaptest"));
+	LLBoundListener connection;
+	ensure("default state", !connection.connected());
+	{
+		boost::shared_ptr<TempListener> newListener(new TempListener("heap", live));
+		newListener->reset();
+		ensure("TempListener constructed", live);
+		connection = heaptest.listen(newListener->getName(),
+									 boost::bind(&Listener::call, 
+												 weaken(newListener), 
+												 _1));
+		ensure("new connection", connection.connected());
+		heaptest.post(1);
+		check_listener("received", *newListener, 1);
+	} // presumably this will make newListener go away?
+	// verify that
+	ensure("TempListener destroyed", !live);
+	ensure("implicit disconnect", !connection.connected());
+	// now just make sure we don't blow up trying to access a freed object!
+	heaptest.post(2);
+}
+
+template<> template<>
+void events_object::test<12>()
+{
+	set_test_name("listen(boost::bind(...shared_ptr...))");
+	/*==========================================================================*|
+	// DISABLED because I've made this case produce a compile error.
+	// Following the error leads the disappointed dev to a comment
+	// instructing her to use the weaken() function to bind a weak_ptr<T>
+	// instead of binding a shared_ptr<T>, and explaining why. I know of
+	// no way to use TUT to code a repeatable test in which the expected
+	// outcome is a compile error. The interested reader is invited to
+	// uncomment this block and build to see for herself.
+
+	// listen() detecting shared_ptr<TempListener> in boost::bind() object
+	bool live = false;
+	LLEventPump& heaptest(pumps.obtain("heaptest"));
+	LLBoundListener connection;
+	std::string listenerName("heap");
+	ensure("default state", !connection.connected());
+	{
+		boost::shared_ptr<TempListener> newListener(new TempListener(listenerName, live));
+		ensure_equals("use_count", newListener.use_count(), 1);
+		newListener->reset();
+		ensure("TempListener constructed", live);
+		connection = heaptest.listen(newListener->getName(),
+									 boost::bind(&Listener::call, newListener, _1));
+		ensure("new connection", connection.connected());
+		ensure_equals("use_count", newListener.use_count(), 2);
+		heaptest.post(1);
+		check_listener("received", *newListener, 1);
+	} // this should make newListener go away...
+	// Unfortunately, the fact that we've bound a shared_ptr by value into
+	// our LLEventPump means that copy will keep the referenced object alive.
+	ensure("TempListener still alive", live);
+	ensure("still connected", connection.connected());
+	// disconnecting explicitly should delete the TempListener...
+	heaptest.stopListening(listenerName);
 #if 0   // however, in my experience, it does not. I don't know why not.
-        // Ah: on 2009-02-19, Frank Mori Hess, author of the Boost.Signals2
-        // library, stated on the boost-users mailing list:
-        // http://www.nabble.com/Re%3A--signals2--review--The-review-of-the-signals2-library-(formerly-thread_safe_signals)-begins-today%2C-Nov-1st-p22102367.html
-        // "It will get destroyed eventually. The signal cleans up its slot
-        // list little by little during connect/invoke. It doesn't immediately
-        // remove disconnected slots from the slot list since other threads
-        // might be using the same slot list concurrently. It might be
-        // possible to make it immediately reset the shared_ptr owning the
-        // slot though, leaving an empty shared_ptr in the slot list, since
-        // that wouldn't invalidate any iterators."
-        ensure("TempListener destroyed", ! live);
-        ensure("implicit disconnect", ! connection.connected());
+	// Ah: on 2009-02-19, Frank Mori Hess, author of the Boost.Signals2
+	// library, stated on the boost-users mailing list:
+	// http://www.nabble.com/Re%3A--signals2--review--The-review-of-the-signals2-library-(formerly-thread_safe_signals)-begins-today%2C-Nov-1st-p22102367.html
+	// "It will get destroyed eventually. The signal cleans up its slot
+	// list little by little during connect/invoke. It doesn't immediately
+	// remove disconnected slots from the slot list since other threads
+	// might be using the same slot list concurrently. It might be
+	// possible to make it immediately reset the shared_ptr owning the
+	// slot though, leaving an empty shared_ptr in the slot list, since
+	// that wouldn't invalidate any iterators."
+	ensure("TempListener destroyed", ! live);
+	ensure("implicit disconnect", ! connection.connected());
 #endif  // 0
-        // now just make sure we don't blow up trying to access a freed object!
-        heaptest.post(2);
+	// now just make sure we don't blow up trying to access a freed object!
+	heaptest.post(2);
 |*==========================================================================*/
-    }
-
-    class TempTrackableListener: public TempListener, public LLEventTrackable
-    {
-    public:
-        TempTrackableListener(const std::string& name, bool& liveFlag):
-            TempListener(name, liveFlag)
-        {}
-    };
-
-    template<> template<>
-    void events_object::test<13>()
-    {
-        set_test_name("listen(boost::bind(...TempTrackableListener ref...))");
-        bool live = false;
-        LLEventPump& heaptest(pumps.obtain("heaptest"));
-        LLBoundListener connection;
-        {
-            TempTrackableListener tempListener("temp", live);
-            ensure("TempTrackableListener constructed", live);
-            connection = heaptest.listen(tempListener.getName(),
-                                         boost::bind(&TempTrackableListener::call,
-                                                     boost::ref(tempListener), _1));
-            heaptest.post(1);
-            check_listener("received", tempListener, 1);
-        } // presumably this will make tempListener go away?
-        // verify that
-        ensure("TempTrackableListener destroyed", ! live);
-        ensure("implicit disconnect", ! connection.connected());
-        // now just make sure we don't blow up trying to access a freed object!
-        heaptest.post(2);
-    }
-
-    template<> template<>
-    void events_object::test<14>()
-    {
-        set_test_name("listen(boost::bind(...TempTrackableListener pointer...))");
-        bool live = false;
-        LLEventPump& heaptest(pumps.obtain("heaptest"));
-        LLBoundListener connection;
-        {
-            TempTrackableListener* newListener(new TempTrackableListener("temp", live));
-            ensure("TempTrackableListener constructed", live);
-            connection = heaptest.listen(newListener->getName(),
-                                         boost::bind(&TempTrackableListener::call,
-                                                     newListener, _1));
-            heaptest.post(1);
-            check_listener("received", *newListener, 1);
-            // explicitly destroy newListener
-            delete newListener;
-        }
-        // verify that
-        ensure("TempTrackableListener destroyed", ! live);
-        ensure("implicit disconnect", ! connection.connected());
-        // now just make sure we don't blow up trying to access a freed object!
-        heaptest.post(2);
-    }
-
-    template<> template<>
-    void events_object::test<15>()
-    {
-        // This test ensures that using an LLListenerWrapper subclass doesn't
-        // block Boost.Signals2 from recognizing a bound LLEventTrackable
-        // subclass.
-        set_test_name("listen(llwrap<LLLogListener>(boost::bind(...TempTrackableListener ref...)))");
-        bool live = false;
-        LLEventPump& heaptest(pumps.obtain("heaptest"));
-        LLBoundListener connection;
-        {
-            TempTrackableListener tempListener("temp", live);
-            ensure("TempTrackableListener constructed", live);
-            connection = heaptest.listen(tempListener.getName(),
-                                         llwrap<LLLogListener>(
-                                         boost::bind(&TempTrackableListener::call,
-                                                     boost::ref(tempListener), _1)));
-            heaptest.post(1);
-            check_listener("received", tempListener, 1);
-        } // presumably this will make tempListener go away?
-        // verify that
-        ensure("TempTrackableListener destroyed", ! live);
-        ensure("implicit disconnect", ! connection.connected());
-        // now just make sure we don't blow up trying to access a freed object!
-        heaptest.post(2);
-    }
-
-    class TempSharedListener: public TempListener,
-                              public boost::enable_shared_from_this<TempSharedListener>
-    {
-    public:
-        TempSharedListener(const std::string& name, bool& liveFlag):
-            TempListener(name, liveFlag)
-        {}
-    };
-
-    template<> template<>
-    void events_object::test<16>()
-    {
-        set_test_name("listen(boost::bind(...TempSharedListener ref...))");
+}
+
+class TempTrackableListener: public TempListener, public LLEventTrackable
+{
+public:
+TempTrackableListener(const std::string& name, bool& liveFlag):
+	TempListener(name, liveFlag)
+{}
+};
+
+template<> template<>
+void events_object::test<13>()
+{
+set_test_name("listen(boost::bind(...TempTrackableListener ref...))");
+bool live = false;
+LLEventPump& heaptest(pumps.obtain("heaptest"));
+LLBoundListener connection;
+{
+	TempTrackableListener tempListener("temp", live);
+	ensure("TempTrackableListener constructed", live);
+	connection = heaptest.listen(tempListener.getName(),
+								 boost::bind(&TempTrackableListener::call,
+											 boost::ref(tempListener), _1));
+	heaptest.post(1);
+	check_listener("received", tempListener, 1);
+} // presumably this will make tempListener go away?
+// verify that
+ensure("TempTrackableListener destroyed", ! live);
+ensure("implicit disconnect", ! connection.connected());
+// now just make sure we don't blow up trying to access a freed object!
+heaptest.post(2);
+}
+
+template<> template<>
+void events_object::test<14>()
+{
+set_test_name("listen(boost::bind(...TempTrackableListener pointer...))");
+bool live = false;
+LLEventPump& heaptest(pumps.obtain("heaptest"));
+LLBoundListener connection;
+{
+	TempTrackableListener* newListener(new TempTrackableListener("temp", live));
+	ensure("TempTrackableListener constructed", live);
+	connection = heaptest.listen(newListener->getName(),
+								 boost::bind(&TempTrackableListener::call,
+											 newListener, _1));
+	heaptest.post(1);
+	check_listener("received", *newListener, 1);
+	// explicitly destroy newListener
+	delete newListener;
+}
+// verify that
+ensure("TempTrackableListener destroyed", ! live);
+ensure("implicit disconnect", ! connection.connected());
+// now just make sure we don't blow up trying to access a freed object!
+heaptest.post(2);
+}
+
+template<> template<>
+void events_object::test<15>()
+{
+// This test ensures that using an LLListenerWrapper subclass doesn't
+// block Boost.Signals2 from recognizing a bound LLEventTrackable
+// subclass.
+set_test_name("listen(llwrap<LLLogListener>(boost::bind(...TempTrackableListener ref...)))");
+bool live = false;
+LLEventPump& heaptest(pumps.obtain("heaptest"));
+LLBoundListener connection;
+{
+	TempTrackableListener tempListener("temp", live);
+	ensure("TempTrackableListener constructed", live);
+	connection = heaptest.listen(tempListener.getName(),
+								 llwrap<LLLogListener>(
+								 boost::bind(&TempTrackableListener::call,
+											 boost::ref(tempListener), _1)));
+	heaptest.post(1);
+	check_listener("received", tempListener, 1);
+} // presumably this will make tempListener go away?
+// verify that
+ensure("TempTrackableListener destroyed", ! live);
+ensure("implicit disconnect", ! connection.connected());
+// now just make sure we don't blow up trying to access a freed object!
+heaptest.post(2);
+}
+
+class TempSharedListener: public TempListener,
+public boost::enable_shared_from_this<TempSharedListener>
+{
+public:
+TempSharedListener(const std::string& name, bool& liveFlag):
+	TempListener(name, liveFlag)
+{}
+};
+
+template<> template<>
+void events_object::test<16>()
+{
+	set_test_name("listen(boost::bind(...TempSharedListener ref...))");
 #if 0
-        bool live = false;
-        LLEventPump& heaptest(pumps.obtain("heaptest"));
-        LLBoundListener connection;
-        {
-            // We MUST have at least one shared_ptr to an
-            // enable_shared_from_this subclass object before
-            // shared_from_this() can work.
-            boost::shared_ptr<TempSharedListener>
-                tempListener(new TempSharedListener("temp", live));
-            ensure("TempSharedListener constructed", live);
-            // However, we're not passing either the shared_ptr or its
-            // corresponding weak_ptr -- instead, we're passing a reference to
-            // the TempSharedListener.
+bool live = false;
+LLEventPump& heaptest(pumps.obtain("heaptest"));
+LLBoundListener connection;
+{
+	// We MUST have at least one shared_ptr to an
+	// enable_shared_from_this subclass object before
+	// shared_from_this() can work.
+	boost::shared_ptr<TempSharedListener>
+		tempListener(new TempSharedListener("temp", live));
+	ensure("TempSharedListener constructed", live);
+	// However, we're not passing either the shared_ptr or its
+	// corresponding weak_ptr -- instead, we're passing a reference to
+	// the TempSharedListener.
 /*==========================================================================*|
-            std::cout << "Capturing const ref" << std::endl;
-            const boost::enable_shared_from_this<TempSharedListener>& cref(*tempListener);
-            std::cout << "Capturing const ptr" << std::endl;
-            const boost::enable_shared_from_this<TempSharedListener>* cp(&cref);
-            std::cout << "Capturing non-const ptr" << std::endl;
-            boost::enable_shared_from_this<TempSharedListener>* p(const_cast<boost::enable_shared_from_this<TempSharedListener>*>(cp));
-            std::cout << "Capturing shared_from_this()" << std::endl;
-            boost::shared_ptr<TempSharedListener> sp(p->shared_from_this());
-            std::cout << "Capturing weak_ptr" << std::endl;
-            boost::weak_ptr<TempSharedListener> wp(weaken(sp));
-            std::cout << "Binding weak_ptr" << std::endl;
+	 std::cout << "Capturing const ref" << std::endl;
+	 const boost::enable_shared_from_this<TempSharedListener>& cref(*tempListener);
+	 std::cout << "Capturing const ptr" << std::endl;
+	 const boost::enable_shared_from_this<TempSharedListener>* cp(&cref);
+	 std::cout << "Capturing non-const ptr" << std::endl;
+	 boost::enable_shared_from_this<TempSharedListener>* p(const_cast<boost::enable_shared_from_this<TempSharedListener>*>(cp));
+	 std::cout << "Capturing shared_from_this()" << std::endl;
+	 boost::shared_ptr<TempSharedListener> sp(p->shared_from_this());
+	 std::cout << "Capturing weak_ptr" << std::endl;
+	 boost::weak_ptr<TempSharedListener> wp(weaken(sp));
+	 std::cout << "Binding weak_ptr" << std::endl;
 |*==========================================================================*/
-            connection = heaptest.listen(tempListener->getName(),
-                                         boost::bind(&TempSharedListener::call, *tempListener, _1));
-            heaptest.post(1);
-            check_listener("received", *tempListener, 1);
-        } // presumably this will make tempListener go away?
-        // verify that
-        ensure("TempSharedListener destroyed", ! live);
-        ensure("implicit disconnect", ! connection.connected());
-        // now just make sure we don't blow up trying to access a freed object!
-        heaptest.post(2);
+	connection = heaptest.listen(tempListener->getName(),
+								 boost::bind(&TempSharedListener::call, *tempListener, _1));
+	heaptest.post(1);
+	check_listener("received", *tempListener, 1);
+} // presumably this will make tempListener go away?
+// verify that
+ensure("TempSharedListener destroyed", ! live);
+ensure("implicit disconnect", ! connection.connected());
+// now just make sure we don't blow up trying to access a freed object!
+heaptest.post(2);
 #endif // 0
-    }
+}
 } // namespace tut
diff --git a/indra/test/llhttpclient_tut.cpp b/indra/test/llhttpclient_tut.cpp
index 03759001ae3b87ebc999765fabe813ae1e101234..4b4046632c4e3eb80a6b94300efa15d040491b01 100644
--- a/indra/test/llhttpclient_tut.cpp
+++ b/indra/test/llhttpclient_tut.cpp
@@ -40,6 +40,7 @@
 #include "llhttpclient.h"
 #include "llformat.h"
 #include "llpipeutil.h"
+#include "llproxy.h"
 #include "llpumpio.h"
 
 #include "llsdhttpserver.h"
@@ -85,9 +86,10 @@ namespace tut
 		HTTPClientTestData()
 		{
 			apr_pool_create(&mPool, NULL);
+			LLCurl::initClass(false);
 			mServerPump = new LLPumpIO(mPool);
 			mClientPump = new LLPumpIO(mPool);
-			
+
 			LLHTTPClient::setPump(*mClientPump);
 		}
 		
@@ -95,6 +97,7 @@ namespace tut
 		{
 			delete mServerPump;
 			delete mClientPump;
+			LLProxy::cleanupClass();
 			apr_pool_destroy(mPool);
 		}
 
diff --git a/indra/test/llsd_new_tut.cpp b/indra/test/llsd_new_tut.cpp
index dd93b36f041748b52fe2796bdeb6d290711a3a7e..f928a1bad0e6176af82a175428298f3b4f637ad4 100644
--- a/indra/test/llsd_new_tut.cpp
+++ b/indra/test/llsd_new_tut.cpp
@@ -5,7 +5,7 @@
  *
  * $LicenseInfo:firstyear=2006&license=viewerlgpl$
  * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
+ * Copyright (C) 2006-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
@@ -25,6 +25,7 @@
  * $/LicenseInfo$
  */
 
+#define LLSD_DEBUG_INFO
 #include <tut/tut.hpp>
 #include "linden_common.h"
 #include "lltut.h"
@@ -32,6 +33,19 @@
 #include "llsdtraits.h"
 #include "llstring.h"
 
+#if LL_WINDOWS
+#include <float.h>
+namespace
+{
+	int fpclassify(double x)
+	{
+		return _fpclass(x);
+	}
+}
+#else
+using std::fpclassify;
+#endif
+
 namespace tut
 {
 	class SDCleanupCheck
@@ -39,11 +53,11 @@ namespace tut
 	private:
 		U32	mOutstandingAtStart;
 	public:
-		SDCleanupCheck() : mOutstandingAtStart(LLSD::outstandingCount()) { }
+		SDCleanupCheck() : mOutstandingAtStart(llsd::outstandingCount()) { }
 		~SDCleanupCheck()
 		{
 			ensure_equals("SDCleanupCheck",
-				LLSD::outstandingCount(), mOutstandingAtStart);
+				llsd::outstandingCount(), mOutstandingAtStart);
 		}
 	};
 
@@ -57,12 +71,12 @@ namespace tut
 		SDAllocationCheck(const std::string& message, int expectedAllocations)
 			: mMessage(message),
 			mExpectedAllocations(expectedAllocations),
-			mAllocationAtStart(LLSD::allocationCount())
+			mAllocationAtStart(llsd::allocationCount())
 			{ }
 		~SDAllocationCheck()
 		{
 			ensure_equals(mMessage + " SDAllocationCheck",
-				LLSD::allocationCount() - mAllocationAtStart,
+				llsd::allocationCount() - mAllocationAtStart,
 				mExpectedAllocations);
 		}
 	};
@@ -218,19 +232,16 @@ namespace tut
 		}
 		else
 		{
-// TODO: Fix on windows....
-#ifndef LL_WINDOWS
-# if !defined(fpclassify) && __GNUC__ >= 3
-#   define FPCLASSIFY_NAMESPACE std::
-# else
-#   define FPCLASSIFY_NAMESPACE
-# endif
-			int left  = FPCLASSIFY_NAMESPACE fpclassify(v.asReal());
-			int right = FPCLASSIFY_NAMESPACE fpclassify(eReal);
+			int left  = fpclassify(v.asReal());
+			int right = fpclassify(eReal);
 
 			ensure_equals(s+" to real", 	left, 			right);
-			ensure_equals(s+" to string",	v.asString(),	eString);
-#endif
+			// ensure_equals(s+" to string", v.asString(), eString);
+			// I've commented this check out, since there doesn't
+			// seem to be uniform string representation for NaN on
+			// all platforms. For example, on my Ubuntu 8.10 laptop
+			// with libc 2.11.1, sqrt(-1.0) will return '-nan', not
+			// 'nan'.
 		}
 	}
 	
@@ -742,6 +753,78 @@ namespace tut
 			LLSD w = v;
 			w = "nice day";
 		}
+
+		{
+			SDAllocationCheck check("shared values test for threaded work", 9);
+
+			//U32 start_llsd_count = llsd::outstandingCount();
+
+			LLSD m = LLSD::emptyMap();
+
+			m["one"] = 1;
+			m["two"] = 2;
+			m["one_copy"] = m["one"];			// 3 (m, "one" and "two")
+
+			m["undef_one"] = LLSD();
+			m["undef_two"] = LLSD();
+			m["undef_one_copy"] = m["undef_one"];
+
+			{	// Ensure first_array gets freed to avoid counting it
+				LLSD first_array = LLSD::emptyArray();
+				first_array.append(1.0f);
+				first_array.append(2.0f);			
+				first_array.append(3.0f);			// 7
+
+				m["array"] = first_array;
+				m["array_clone"] = first_array;
+				m["array_copy"] = m["array"];		// 7
+			}
+
+			m["string_one"] = "string one value";
+			m["string_two"] = "string two value";
+			m["string_one_copy"] = m["string_one"];		// 9
+
+			//U32 llsd_object_count = llsd::outstandingCount();
+			//std::cout << "Using " << (llsd_object_count - start_llsd_count) << " LLSD objects" << std::endl;
+
+			//m.dumpStats();
+		}
+
+		{
+			SDAllocationCheck check("shared values test for threaded work", 9);
+
+			//U32 start_llsd_count = LLSD::outstandingCount();
+
+			LLSD m = LLSD::emptyMap();
+
+			m["one"] = 1;
+			m["two"] = 2;
+			m["one_copy"] = m["one"];			// 3 (m, "one" and "two")
+
+			m["undef_one"] = LLSD();
+			m["undef_two"] = LLSD();
+			m["undef_one_copy"] = m["undef_one"];
+
+			{	// Ensure first_array gets freed to avoid counting it
+				LLSD first_array = LLSD::emptyArray();
+				first_array.append(1.0f);
+				first_array.append(2.0f);			
+				first_array.append(3.0f);			// 7
+
+				m["array"] = first_array;
+				m["array_clone"] = first_array;
+				m["array_copy"] = m["array"];		// 7
+			}
+
+			m["string_one"] = "string one value";
+			m["string_two"] = "string two value";
+			m["string_one_copy"] = m["string_one"];		// 9
+
+			//U32 llsd_object_count = LLSD::outstandingCount();
+			//std::cout << "Using " << (llsd_object_count - start_llsd_count) << " LLSD objects" << std::endl;
+
+			//m.dumpStats();
+		}
 	}
 
 	template<> template<>
@@ -769,4 +852,3 @@ namespace tut
 		test serializations
 	*/
 }
-
diff --git a/indra/test/llsdmessagebuilder_tut.cpp b/indra/test/llsdmessagebuilder_tut.cpp
index cc6f78decdba98bf756278fb42dd543ef78181ae..be0692557a1d7579899515712662772fe2ade4c4 100644
--- a/indra/test/llsdmessagebuilder_tut.cpp
+++ b/indra/test/llsdmessagebuilder_tut.cpp
@@ -33,6 +33,7 @@
 #include "llsdmessagebuilder.h"
 #include "llsdmessagereader.h"
 #include "llsdtraits.h"
+#include "llmath.h"
 #include "llquaternion.h"
 #include "u64.h"
 #include "v3dmath.h"
@@ -86,17 +87,17 @@ namespace tut
 			return createTemplateBlock(_PREHASH_Test0, type, size, block);
 		}
 
-		static LLMessageBlock* createTemplateBlock(char* name, const EMsgVariableType type = MVT_NULL, const S32 size = 0, EMsgBlockType block = MBT_VARIABLE)
+		static LLMessageBlock* createTemplateBlock(const char* name, const EMsgVariableType type = MVT_NULL, const S32 size = 0, EMsgBlockType block = MBT_VARIABLE)
 		{
 			LLMessageBlock* result = new LLMessageBlock(name, block);
 			if(type != MVT_NULL)
 			{
-				result->addVariable(_PREHASH_Test0, type, size);
+				result->addVariable(const_cast<char*>(_PREHASH_Test0), type, size);
 			}
 			return result;
 		}
 
-		static LLTemplateMessageBuilder* defaultTemplateBuilder(LLMessageTemplate& messageTemplate, char* name = _PREHASH_Test0)
+		static LLTemplateMessageBuilder* defaultTemplateBuilder(LLMessageTemplate& messageTemplate, char* name = const_cast<char*>(_PREHASH_Test0))
 		{
 			templateNameMap[_PREHASH_TestMessage] = &messageTemplate;
 			LLTemplateMessageBuilder* builder = new LLTemplateMessageBuilder(templateNameMap);
diff --git a/indra/test/lltemplatemessagebuilder_tut.cpp b/indra/test/lltemplatemessagebuilder_tut.cpp
index 532f26ee6086a3d56bbed28b2099dcd0f08b5f0c..6e1c82bb2464949a99ef34854bade4aa8df3d25e 100644
--- a/indra/test/lltemplatemessagebuilder_tut.cpp
+++ b/indra/test/lltemplatemessagebuilder_tut.cpp
@@ -29,7 +29,9 @@
 #include "linden_common.h"
 #include "lltut.h"
 
+#include "llapr.h"
 #include "llmessagetemplate.h"
+#include "llmath.h"
 #include "llquaternion.h"
 #include "lltemplatemessagebuilder.h"
 #include "lltemplatemessagereader.h"
@@ -52,6 +54,7 @@ namespace tut
 			static bool init = false;
 			if(! init)
 			{
+				ll_init_apr();
 				const F32 circuit_heartbeat_interval=5;
 				const F32 circuit_timeout=100;
 
@@ -73,7 +76,7 @@ namespace tut
 
 		static LLMessageBlock* defaultBlock(const EMsgVariableType type = MVT_NULL, const S32 size = 0, EMsgBlockType block = MBT_VARIABLE)
 		{
-			return createBlock(_PREHASH_Test0, type, size, block);
+			return createBlock(const_cast<char*>(_PREHASH_Test0), type, size, block);
 		}
 
 		static LLMessageBlock* createBlock(char* name, const EMsgVariableType type = MVT_NULL, const S32 size = 0, EMsgBlockType block = MBT_VARIABLE)
@@ -81,12 +84,12 @@ namespace tut
 			LLMessageBlock* result = new LLMessageBlock(name, block);
 			if(type != MVT_NULL)
 			{
-				result->addVariable(_PREHASH_Test0, type, size);
+				result->addVariable(const_cast<char*>(_PREHASH_Test0), type, size);
 			}
 			return result;
 		}
 
-		static LLTemplateMessageBuilder* defaultBuilder(LLMessageTemplate& messageTemplate, char* name = _PREHASH_Test0)
+		static LLTemplateMessageBuilder* defaultBuilder(LLMessageTemplate& messageTemplate, char* name = const_cast<char*>(_PREHASH_Test0))
 		{
 			nameMap[_PREHASH_TestMessage] = &messageTemplate;
 			LLTemplateMessageBuilder* builder = new LLTemplateMessageBuilder(nameMap);
@@ -401,11 +404,11 @@ namespace tut
 
 		// build template: Test0 before Test1
 		LLMessageTemplate messageTemplate = defaultTemplate();
-		messageTemplate.addBlock(createBlock(_PREHASH_Test0, MVT_U32, 4, MBT_SINGLE));
-		messageTemplate.addBlock(createBlock(_PREHASH_Test1, MVT_U32, 4, MBT_SINGLE));
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test0), MVT_U32, 4, MBT_SINGLE));
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test1), MVT_U32, 4, MBT_SINGLE));
 
 		// build message: 1st declared block var == 0xaaaa, 2nd declared block var == 0xbbbb
-		LLTemplateMessageBuilder* builder = defaultBuilder(messageTemplate, _PREHASH_Test0);
+		LLTemplateMessageBuilder* builder = defaultBuilder(messageTemplate, const_cast<char*>(_PREHASH_Test0));
 		builder->addU32(_PREHASH_Test0, 0xaaaa);
 		builder->nextBlock(_PREHASH_Test1);
 		builder->addU32(_PREHASH_Test0, 0xbbbb);
@@ -414,11 +417,11 @@ namespace tut
 
 		// build template: Test1 before Test0
 		messageTemplate = defaultTemplate();
-		messageTemplate.addBlock(createBlock(_PREHASH_Test1, MVT_U32, 4, MBT_SINGLE));
-		messageTemplate.addBlock(createBlock(_PREHASH_Test0, MVT_U32, 4, MBT_SINGLE));
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test1), MVT_U32, 4, MBT_SINGLE));
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test0), MVT_U32, 4, MBT_SINGLE));
 
 		// build message: 1st declared block var == 0xaaaa, 2nd declared block var == 0xbbbb
-		builder = defaultBuilder(messageTemplate, _PREHASH_Test1);
+		builder = defaultBuilder(messageTemplate, const_cast<char*>(_PREHASH_Test1));
 		builder->addU32(_PREHASH_Test0, 0xaaaa);
 		builder->nextBlock(_PREHASH_Test0);
 		builder->addU32(_PREHASH_Test0, 0xbbbb);
@@ -441,11 +444,11 @@ namespace tut
 
 		// build template: Test0 before Test1
 		LLMessageTemplate messageTemplate = defaultTemplate();
-		messageTemplate.addBlock(createBlock(_PREHASH_Test0, MVT_U32, 4, MBT_SINGLE));
-		messageTemplate.addBlock(createBlock(_PREHASH_Test1, MVT_U32, 4, MBT_SINGLE));
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test0), MVT_U32, 4, MBT_SINGLE));
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test1), MVT_U32, 4, MBT_SINGLE));
 
 		// build message: 1st declared block var == 0xaaaa, 2nd declared block var == 0xbbbb
-		LLTemplateMessageBuilder* builder = defaultBuilder(messageTemplate, _PREHASH_Test0);
+		LLTemplateMessageBuilder* builder = defaultBuilder(messageTemplate, const_cast<char*>(_PREHASH_Test0));
 		builder->addU32(_PREHASH_Test0, 0xaaaa);
 		builder->nextBlock(_PREHASH_Test1);
 		builder->addU32(_PREHASH_Test0, 0xbbbb);
@@ -453,7 +456,7 @@ namespace tut
 		delete builder;
 
 		// build message: 1st declared block var == 0xaaaa, 2nd declared block var == 0xbbbb
-		builder = defaultBuilder(messageTemplate, _PREHASH_Test1);
+		builder = defaultBuilder(messageTemplate, const_cast<char*>(_PREHASH_Test1));
 		builder->addU32(_PREHASH_Test0, 0xbbbb);
 		builder->nextBlock(_PREHASH_Test0);
 		builder->addU32(_PREHASH_Test0, 0xaaaa);
@@ -476,21 +479,21 @@ namespace tut
 
 		// Build template: Test0 only
 		LLMessageTemplate messageTemplate = defaultTemplate();
-		messageTemplate.addBlock(createBlock(_PREHASH_Test0, MVT_U32, 4, MBT_SINGLE));
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test0), MVT_U32, 4, MBT_SINGLE));
 
 		// Build message
-		LLTemplateMessageBuilder* builder = defaultBuilder(messageTemplate, _PREHASH_Test0);
+		LLTemplateMessageBuilder* builder = defaultBuilder(messageTemplate, const_cast<char*>(_PREHASH_Test0));
 		builder->addU32(_PREHASH_Test0, 0xaaaa);
 		bufferSize1 = builder->buildMessage(buffer1, MAX_BUFFER_SIZE, 0);
 		delete builder;
 
 		// Build template: Test0 before Test1
 		messageTemplate = defaultTemplate();
-		messageTemplate.addBlock(createBlock(_PREHASH_Test0, MVT_U32, 4, MBT_SINGLE));
-		messageTemplate.addBlock(createBlock(_PREHASH_Test1, MVT_U32, 4, MBT_SINGLE));
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test0), MVT_U32, 4, MBT_SINGLE));
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test1), MVT_U32, 4, MBT_SINGLE));
 
 		// Build message
-		builder = defaultBuilder(messageTemplate, _PREHASH_Test0);
+		builder = defaultBuilder(messageTemplate, const_cast<char*>(_PREHASH_Test0));
 		builder->addU32(_PREHASH_Test0, 0xaaaa);
 		builder->nextBlock(_PREHASH_Test1);
 		builder->addU32(_PREHASH_Test0, 0xbbbb);
@@ -509,8 +512,8 @@ namespace tut
 		U32 inTest00 = 0, inTest01 = 1, inTest1 = 2;
 		U32 outTest00, outTest01, outTest1;
 		LLMessageTemplate messageTemplate = defaultTemplate();
-		messageTemplate.addBlock(createBlock(_PREHASH_Test0, MVT_U32, 4));
-		messageTemplate.addBlock(createBlock(_PREHASH_Test1, MVT_U32, 4));
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test0), MVT_U32, 4));
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test1), MVT_U32, 4));
 		LLTemplateMessageBuilder* builder = defaultBuilder(messageTemplate);
 		builder->addU32(_PREHASH_Test0, inTest00);
 		builder->nextBlock(_PREHASH_Test0);
@@ -534,15 +537,15 @@ namespace tut
 		U32 inTest = 1, outTest;
 		LLMessageTemplate messageTemplate = defaultTemplate();
 		messageTemplate.addBlock(
-			createBlock(_PREHASH_Test0, MVT_U32, 4, MBT_SINGLE));
-		messageTemplate.addBlock(createBlock(_PREHASH_Test1, MVT_U32, 4));
+			createBlock(const_cast<char*>(_PREHASH_Test0), MVT_U32, 4, MBT_SINGLE));
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test1), MVT_U32, 4));
 
 		LLTemplateMessageBuilder* builder = defaultBuilder(messageTemplate);
 		builder->addU32(_PREHASH_Test0, inTest);
 
 		LLTemplateMessageReader* reader = setReader(messageTemplate, builder);
 		reader->getU32(_PREHASH_Test0, _PREHASH_Test0, outTest);
-		S32 blockCount = reader->getNumberOfBlocks(_PREHASH_Test1);
+		S32 blockCount = reader->getNumberOfBlocks(const_cast<char*>(_PREHASH_Test1));
 		ensure_equals("Ensure block count", blockCount, 0);
 		ensure_equals("Ensure Test0", inTest, outTest);
 		delete reader;
@@ -554,7 +557,7 @@ namespace tut
 	{
 		// build template
 		LLMessageTemplate messageTemplate = defaultTemplate();
-		messageTemplate.addBlock(createBlock(_PREHASH_Test0, MVT_U32, 4));
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test0), MVT_U32, 4));
 
 		// build message
 		LLTemplateMessageBuilder* builder = defaultBuilder(messageTemplate);
@@ -879,7 +882,7 @@ namespace tut
 		delete builder;
 
 		// add block to reader template
-		messageTemplate.addBlock(createBlock(_PREHASH_Test1, MVT_U32, 4, MBT_SINGLE));
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test1), MVT_U32, 4, MBT_SINGLE));
 
 		// read message value and default value
 		numberMap[1] = &messageTemplate;
@@ -912,7 +915,7 @@ namespace tut
 		delete builder;
 
 		// add variable block to reader template
-		messageTemplate.addBlock(createBlock(_PREHASH_Test1, MVT_U32, 4));
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test1), MVT_U32, 4));
 
 		// read message value and check block repeat count
 		numberMap[1] = &messageTemplate;
@@ -945,7 +948,7 @@ namespace tut
 		delete builder;
 
 		// add variable block to reader template
-		messageTemplate.addBlock(createBlock(_PREHASH_Test1, MVT_VARIABLE, 4, 
+		messageTemplate.addBlock(createBlock(const_cast<char*>(_PREHASH_Test1), MVT_VARIABLE, 4,
 											 MBT_SINGLE));
 
 		// read message value and default string
diff --git a/indra/test/lltut.cpp b/indra/test/lltut.cpp
index da7031b52a828e2bd2932ab5e14b4d4a38dae977..c43a8f0c7d7dba03e7ebc58cafc652b82ea6cc5c 100644
--- a/indra/test/lltut.cpp
+++ b/indra/test/lltut.cpp
@@ -34,6 +34,7 @@
 #include "llformat.h"
 #include "llsd.h"
 #include "lluri.h"
+#include "stringize.h"
 
 namespace tut
 {
@@ -144,6 +145,10 @@ namespace tut
 				}
 				return;
 			}
+			default:
+				// should never get here, but compiler produces warning if we
+				// don't cover this case, and at Linden warnings are fatal.
+				throw failure(STRINGIZE("invalid type field " << actual.type()));
 		}
 	}
 
diff --git a/indra/test/message_tut.cpp b/indra/test/message_tut.cpp
index 9a6ccd4d6819cb8935af4e52cc987bb4ac40998d..d971b334752dc1c99e5c7bc80d62f84430a62a10 100644
--- a/indra/test/message_tut.cpp
+++ b/indra/test/message_tut.cpp
@@ -29,6 +29,7 @@
 #include "linden_common.h"
 #include "lltut.h"
 
+#include "llapr.h"
 #include "llmessageconfig.h"
 #include "llsdserialize.h"
 #include "llversionserver.h"
@@ -61,6 +62,7 @@ namespace tut
 			static bool init = false;
 			if(!init)
 			{
+				ll_init_apr();
 				//init_prehash_data();
 				init = true;
 			}
diff --git a/indra/test/test.cpp b/indra/test/test.cpp
index 45e8aef99a972b8be9e726c6f4d66ac521d17fcb..ffdb0cb976a311f79a8233ddc4fa7409f139473e 100644
--- a/indra/test/test.cpp
+++ b/indra/test/test.cpp
@@ -37,8 +37,8 @@
 #include "linden_common.h"
 #include "llerrorcontrol.h"
 #include "lltut.h"
-#include "llaprpool.h"
 
+#include "apr_pools.h"
 #include "apr_getopt.h"
 
 // the CTYPE_WORKAROUND is needed for linux dev stations that don't
@@ -349,12 +349,17 @@ int main(int argc, char **argv)
 	ctype_workaround();
 #endif
 
-	LLAPRPool pool;
-	pool.create();
+	apr_initialize();
+	apr_pool_t* pool = NULL;
+	if(APR_SUCCESS != apr_pool_create(&pool, NULL))
+	{
+		std::cerr << "Unable to initialize pool" << std::endl;
+		return 1;
+	}
 	apr_getopt_t* os = NULL;
-	if(APR_SUCCESS != apr_getopt_init(&os, pool(), argc, argv))
+	if(APR_SUCCESS != apr_getopt_init(&os, pool, argc, argv))
 	{
-		std::cerr << "Unable to initialize the arguments for parsing by apr_getopt()." << std::endl;
+		std::cerr << "Unable to  pool" << std::endl;
 		return 1;
 	}
 
@@ -472,6 +477,8 @@ int main(int argc, char **argv)
 		s.close();
 	}
 
+	apr_terminate();
+
 	int retval = (success ? 0 : 1);
 	return retval;
 
diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp
index d5ee09c5bc3a35f41c7593b01bacdff72b08c181..884b00f0ccba6f96325047e51614638ffa24eb9d 100644
--- a/indra/test_apps/llplugintest/llmediaplugintest.cpp
+++ b/indra/test_apps/llplugintest/llmediaplugintest.cpp
@@ -27,6 +27,7 @@
 #include "linden_common.h"
 #include "indra_constants.h"
 
+#include "llapr.h"
 #include "llerrorcontrol.h"
 
 #include <math.h>
@@ -185,6 +186,9 @@ LLMediaPluginTest::LLMediaPluginTest( int app_window, int window_width, int wind
 		std::cout << "Unable to read bookmarks from file: " << bookmarks_filename << std::endl;
 	};
 
+	// initialize linden lab APR module
+	ll_init_apr();
+
 	// Set up llerror logging
 	{
 		LLError::initForApplication(".");
diff --git a/indra/viewer_components/updater/llupdatedownloader.cpp b/indra/viewer_components/updater/llupdatedownloader.cpp
index e88d1bf811d726056cf63c03ccb5a1910f20b3a4..19ac418e9efb197982fc03adbc61fba8bee3a6f6 100644
--- a/indra/viewer_components/updater/llupdatedownloader.cpp
+++ b/indra/viewer_components/updater/llupdatedownloader.cpp
@@ -39,7 +39,7 @@
 #include "llsdserialize.h"
 #include "llthread.h"
 #include "llupdaterservice.h"
-
+#include "llcurl.h"
 
 class LLUpdateDownloader::Implementation:
 	public LLThread
@@ -198,13 +198,19 @@ LLUpdateDownloader::Implementation::Implementation(LLUpdateDownloader::Client &
 
 LLUpdateDownloader::Implementation::~Implementation()
 {
-	if(isDownloading()) {
+	if(isDownloading()) 
+	{
 		cancel();
 		shutdown();
-	} else {
+	} 
+	else 
+	{
 		; // No op.
 	}
-	if(mCurl) curl_easy_cleanup(mCurl);
+	if(mCurl)
+	{
+		LLCurl::deleteEasyHandle(mCurl);
+	}
 }
 
 
@@ -406,9 +412,12 @@ void LLUpdateDownloader::Implementation::run(void)
 
 void LLUpdateDownloader::Implementation::initializeCurlGet(std::string const & url, bool processHeader)
 {
-	if(mCurl == 0) {
-		mCurl = curl_easy_init();
-	} else {
+	if(mCurl == 0) 
+	{
+		mCurl = LLCurl::newEasyHandle();
+	} 
+	else 
+	{
 		curl_easy_reset(mCurl);
 	}
 	
diff --git a/indra/viewer_components/updater/llupdateinstaller.cpp b/indra/viewer_components/updater/llupdateinstaller.cpp
index 24ba00ad8e6db18c3a29ede865cbff8d68e480a1..c7b70c2de8e91fcd8deec2075c3a66f9df8f8675 100644
--- a/indra/viewer_components/updater/llupdateinstaller.cpp
+++ b/indra/viewer_components/updater/llupdateinstaller.cpp
@@ -26,7 +26,6 @@
 #include "linden_common.h"
 #include <apr_file_io.h>
 #include "llapr.h"
-#include "llscopedvolatileaprpool.h"
 #include "llprocesslauncher.h"
 #include "llupdateinstaller.h"
 #include "lldir.h" 
@@ -46,8 +45,7 @@ namespace {
 	{
 		std::string scriptFile = gDirUtilp->getBaseFileName(path);
 		std::string newPath = gDirUtilp->getExpandedFilename(LL_PATH_TEMP, scriptFile);
-		LLScopedVolatileAPRPool pool;
-		apr_status_t status = apr_file_copy(path.c_str(), newPath.c_str(), APR_FILE_SOURCE_PERMS, pool);
+		apr_status_t status = apr_file_copy(path.c_str(), newPath.c_str(), APR_FILE_SOURCE_PERMS, gAPRPoolp);
 		if(status != APR_SUCCESS) throw RelocateError();
 		
 		return newPath;
diff --git a/indra/viewer_components/updater/scripts/darwin/update_install b/indra/viewer_components/updater/scripts/darwin/update_install
old mode 100755
new mode 100644
diff --git a/indra/viewer_components/updater/scripts/linux/update_install b/indra/viewer_components/updater/scripts/linux/update_install
old mode 100755
new mode 100644
diff --git a/indra/win_crash_logger/StdAfx.h b/indra/win_crash_logger/StdAfx.h
index ce70fe2994c5077cfa10acd4f2e489a309d99c55..35976658acb9b525c45d8a75842ac8bb6d8e92d9 100644
--- a/indra/win_crash_logger/StdAfx.h
+++ b/indra/win_crash_logger/StdAfx.h
@@ -38,7 +38,6 @@
 
 #define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers
 
-
 // Windows Header Files:
 #include <windows.h>
 
diff --git a/indra/win_crash_logger/llcrashloggerwindows.cpp b/indra/win_crash_logger/llcrashloggerwindows.cpp
index 170babbb985695ef22fcb6b78fd1b9e65003f9cf..36d988ead750b3d9689068d5592b9e380af5df39 100644
--- a/indra/win_crash_logger/llcrashloggerwindows.cpp
+++ b/indra/win_crash_logger/llcrashloggerwindows.cpp
@@ -370,5 +370,6 @@ bool LLCrashLoggerWindows::cleanup()
 		sleep_and_pump_messages(3);
 	}
 	PostQuitMessage(0);
+	commonCleanup();
 	return true;
 }
diff --git a/scripts/gpu_table_tester b/scripts/gpu_table_tester
index 52b1c8f31dca293e14a213a5e73cec0d023e8028..9bc958636dc9a899089c700cdef4f0708bf29ff0 100755
--- a/scripts/gpu_table_tester
+++ b/scripts/gpu_table_tester
@@ -26,25 +26,35 @@ use Getopt::Long;
 
 ( $MyName = $0 ) =~ s|.*/||;
 my $mini_HELP = "
-  $MyName --gpu-table <gpu_table.txt> 
-          [ --unrecognized-only ]
-          [ --table-only ]
-          [ <gpu-strings-file> ...]
+  $MyName {--gpu-table|-g} <gpu_table.txt> {--table-only|-t}
   
-  Checks for duplicates and invalid lines in the gpu_table.txt file.
+    Checks for duplicates and invalid lines in the gpu_table.txt file.
 
-  Unless the '--table-only' option is specified, it also tests the recognition of 
-  values in the gpu-strings-files (or standard input if no files are given).  
+  $MyName {--gpu-table|-g} <gpu_table.txt> [ <gpu-strings-file> ... ]
+          [{--unmatched|-u}]
 
-  If the --unrecognized-only option is specified, then no output is produced for
-  values that are matched, otherwise a line is output for each input line that
-  describes the results of attempting to match the value on that line.
+    Tests the recognition of values in the gpu-strings-files (or 
+    standard input if no files are given).   The results of attempting to match 
+    each input line are displayed in report form, showing:
+     - NO MATCH, unsupported, or supported
+     - the class of the GPU
+     - the label for the recognizer line from the gpu_table that it matched
+
+    If the --unmatched option is specified, then no output is produced for
+    values that are matched.
+
+  $MyName {--gpu-table|-g} <gpu_table.txt> {--diff|-d} <old_results> [ <gpu-strings-file> ...]
+
+    With the --diff option, the report compares the current results to <old-results>,
+    which should be the output from a previous run without --diff.  The report shows each
+    input value with the old result and the new result if it is different.
 ";
 
-&GetOptions("help"              => \$Help,
-            "gpu-table=s"       => \$GpuTable,
-            "unrecognized-only" => \$UnrecognizedOnly,
-            "table-only"        => \$TableOnly
+&GetOptions("help"               => \$Help
+            ,"unmatched"         => \$UnMatchedOnly
+            ,"table-only"        => \$TableOnly
+            ,"gpu-table=s"       => \$GpuTable
+            ,"diff=s"            => \$Diff
     )
     || die "$mini_HELP";
 
@@ -55,6 +65,7 @@ if ($Help)
 }
 
 $ErrorsSeen = 0;
+$NoMatch = 'NO MATCH'; # constant
 
 die "Must specify a --gpu-table <gpu_table.txt> value"
     unless $GpuTable;
@@ -62,19 +73,19 @@ die "Must specify a --gpu-table <gpu_table.txt> value"
 open(GPUS, "<$GpuTable")
     || die "Failed to open gpu table '$GpuTable':\n\t$!\n";
 
-# Parse the GPU table into these table, indexed by the name
+# Parse the GPU table into these tables, indexed by the name
 my %NameLine;       # name -> line number on which a given name was found (catches duplicate names)
 my %RecognizerLine; # name -> line number on which a given name was found (catches duplicate names)
 my %Name;           # recognizer -> name
 my %Recognizer;     # name -> recognizer
 my %Class;          # recognizer -> class
 my %Supported;      # recognizer -> supported
-my @InOrder;        # records the order of the recognizers
+my @InOrder;        # lowercased recognizers in file order - these are the ones really used to match
 
-$Name{'UNRECOGNIZED'}      = 'UNRECOGNIZED';
-$NameLine{'UNRECOGNIZED'}  = '(hard-coded)'; # use this for error messages in table parsing
-$Class{'UNRECOGNIZED'}     = '';
-$Supported{'UNRECOGNIZED'} = '';
+$Name{$NoMatch}      = $NoMatch;
+$NameLine{$NoMatch}  = '(hard-coded)'; # use this for error messages in table parsing
+$Class{$NoMatch}     = '';
+$Supported{$NoMatch} = '';
 
 while (<GPUS>)
 {
@@ -142,15 +153,19 @@ print STDERR "\n" if $ErrorsSeen;
 
 exit $ErrorsSeen if $TableOnly;
 
+
+# Loop over input lines, find the results for each 
 my %RecognizedBy;
-while (<>)
+while (<>) 
 {
     chomp;
+    my $lcInput = lc $_;  # the real gpu table parser lowercases the input string
     my $recognizer;
-    $RecognizedBy{$_} = 'UNRECOGNIZED';
+    $RecognizedBy{$_} = $NoMatch;
     foreach $recognizer ( @InOrder ) # note early exit if recognized
     {
-        if ( m/$recognizer/ )
+        my $lcRecognizer = lc $recognizer; # the real gpu table parser lowercases the recognizer
+        if ( $lcInput =~ m/$lcRecognizer/ )
         {
             $RecognizedBy{$_} = $recognizer;
             last; # exit recognizer loop
@@ -158,8 +173,6 @@ while (<>)
     }
 }
 
-## Print results. 
-## For each input, show supported or unsupported, the class, and the recognizer name
 format STDOUT_TOP =
 GPU String                                                                                               Supported?  Class  Recognizer
 ------------------------------------------------------------------------------------------------------   ----------- -----  ------------------------------------
@@ -169,10 +182,81 @@ format STDOUT =
 $_, $Supported{$RecognizedBy{$_}},$Class{$RecognizedBy{$_}},$Name{$RecognizedBy{$_}}
 .
 
-foreach ( sort keys %RecognizedBy )
+my $ReportLineTemplate = "A102xxxA12xxxAA*"; # MUST match the format STDOUT above
+
+format DIFF_TOP =
+                                                                                                         ------ OLD ------   ------ NEW ------
+GPU String                                                                                               Supported?  Class   Supported?  Class
+------------------------------------------------------------------------------------------------------   ----------- -----   ----------- -----
+.                                                                                                                                             
+
+my ( $oldSupported, $oldClass, $newSupported, $newClass );
+
+format DIFF =                                                                                                                                 
+@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...   @<<<<<<<<<<   @>    @<<<<<<<<<<   @> 
+$_,                                                                                                $oldSupported, $oldClass, $newSupported, $newClass
+.
+
+if ( ! $Diff )
 {
-    write if ! $UnrecognizedOnly || $Name{$RecognizedBy{$_}} eq 'UNRECOGNIZED';
-    $-++; # suppresses pagination
+    ## Print results. 
+    ## For each input, show supported or unsupported, the class, and the recognizer name
+
+    foreach ( sort keys %RecognizedBy )
+    {
+        write if ! $UnMatchedOnly || $Name{$RecognizedBy{$_}} eq $NoMatch;
+        $-++; # suppresses pagination
+    }
+}
+else
+{
+    open OLD, "<$Diff"
+        || die "Failed to open --diff file '$Diff'\n\t$!\n";
+    my $discard = 2;
+    while ( <OLD> )
+    {
+        if ( $discard > 0 )
+        {
+            my ( $gpu, $supported, $class ) = unpack $ReportLineTemplate;
+            $gpu =~ s/\s*$//;
+            ( $OldSupported{$gpu} = $supported ) =~ s/\s*$//;
+            ( $OldClass{$gpu} = $class ) =~ s/\s*$//;
+        }
+        else
+        {
+            $discard--;
+        }
+    }
+    close OLD;
+
+    $FORMAT_TOP_NAME = DIFF_TOP;
+    $FORMAT_NAME = DIFF;
+    foreach ( sort keys %RecognizedBy )
+    {
+        $newSupported = $Supported{$RecognizedBy{$_}} || $NoMatch;
+        $newClass     = $Class{$RecognizedBy{$_}};
+
+        if ( ! defined $OldSupported{$_} )
+        {
+            $oldSupported = 'NEW';
+            $oldClass = '-';
+        }
+        else
+        {
+            $oldSupported = $OldSupported{$_} || $NoMatch;
+            $oldClass     = $OldClass{$_};
+
+            if (   ( $oldSupported eq $newSupported )
+                && ( $oldClass     eq $newClass )
+                )
+            {
+                $newSupported = '';
+                $newClass = '';
+            }
+        }
+        write;
+        $-++; # suppresses pagination
+    }
 }
 
 exit $ErrorsSeen;